summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlessio Treglia <quadrispro@ubuntu.com>2010-02-11 17:43:11 +0100
committerAlessio Treglia <quadrispro@ubuntu.com>2010-02-11 17:43:11 +0100
commitd136f8f7d28ea86f3f040e95aef4c7a95ea8b7e2 (patch)
tree286ff861eca93f6a1ccb5248bef34b3f03fbe200
parentf369f1bdb2b9efc5b7ed3b74a0b4b51642086e18 (diff)
Imported Upstream version 11.3
-rw-r--r--ABOUT-NLS996
-rw-r--r--HISTORY.Snd6
-rw-r--r--NEWS61
-rw-r--r--README.Snd3
-rw-r--r--_sndlib.h2
-rw-r--r--aclocal.m42670
-rw-r--r--audio.c137
-rw-r--r--autosave.scm2
-rw-r--r--clm.c28
-rw-r--r--clm.fs303
-rw-r--r--clm.rb64
-rw-r--r--clm2xen.c78
-rwxr-xr-xconfigure2232
-rw-r--r--configure.ac78
-rw-r--r--draw.scm1
-rw-r--r--dsp.fs4
-rw-r--r--effects.rb17
-rw-r--r--enved.scm1
-rw-r--r--eval-c.scm2644
-rw-r--r--examp.fs130
-rw-r--r--examp.scm1
-rw-r--r--extensions.fs221
-rw-r--r--extensions.rb280
-rw-r--r--extensions.scm147
-rw-r--r--extsnd.html239
-rw-r--r--generators.scm136
-rw-r--r--gettext.h69
-rw-r--r--gl.c5
-rw-r--r--grfsnd.html503
-rw-r--r--gtk-popup.scm163
-rw-r--r--gui.scm1892
-rw-r--r--help-snd-fm.pd29
-rw-r--r--help-snd.pd81
-rw-r--r--hooks.fs14
-rw-r--r--index.html596
-rw-r--r--ladspa-help.scm185
-rw-r--r--ladspa.scm936
-rw-r--r--makefile.in21
-rw-r--r--makefile.no-gettext227
-rw-r--r--marks.fs30
-rw-r--r--marks.rb61
-rw-r--r--marks.scm22
-rw-r--r--mix.fs54
-rw-r--r--mix.rb58
-rw-r--r--mix.scm23
-rw-r--r--mus-config.h.in8
-rw-r--r--oo.scm1932
-rw-r--r--osc.scm204
-rw-r--r--pd-add.scm15
-rw-r--r--pd-any.scm5
-rw-r--r--pd-fm.scm47
-rw-r--r--pd-global.scm253
-rw-r--r--pd-inout.scm24
-rw-r--r--pd-local.scm152
-rw-r--r--pd-mozilla.scm8
-rw-r--r--pd-send_receive.scm24
-rw-r--r--pd-stochastic.scm86
-rw-r--r--peak-phases.scm1144
-rw-r--r--pix/snd-ls.pngbin123109 -> 0 bytes
-rw-r--r--pix/stochastic.pngbin226023 -> 0 bytes
-rw-r--r--po/ChangeLog22
-rw-r--r--po/LINGUAS2
-rw-r--r--po/Makefile.in317
-rw-r--r--po/Makefile.in.in375
-rw-r--r--po/Makevars41
-rw-r--r--po/Makevars.template41
-rw-r--r--po/POTFILES.in84
-rw-r--r--po/POTFILES.in~83
-rw-r--r--po/Rules-quot47
-rw-r--r--po/boldquot.sed10
-rw-r--r--po/de.gmobin34124 -> 0 bytes
-rw-r--r--po/de.po2698
-rw-r--r--po/en@boldquot.header25
-rw-r--r--po/en@quot.header22
-rw-r--r--po/insert-header.sin23
-rw-r--r--po/quot.sed6
-rw-r--r--po/remove-potcdate.sin19
-rw-r--r--po/snd.pot2382
-rw-r--r--popup.fs18
-rw-r--r--popup.rb61
-rw-r--r--popup.scm2
-rw-r--r--quick.html4
-rw-r--r--rt-DotEmacs394
-rw-r--r--rt-clm-ins.scm2930
-rw-r--r--rt-compiler.scm9864
-rw-r--r--rt-coroutines.scm793
-rw-r--r--rt-engine.scm1845
-rw-r--r--rt-examples.scm809
-rw-r--r--rt-faust.scm786
-rw-r--r--rt-player.scm635
-rw-r--r--rt-stalin.scm4762
-rw-r--r--rt-various.c207
-rw-r--r--rt-various.h33
-rw-r--r--rt.tex1766
-rw-r--r--run.c30
-rw-r--r--s7.c2163
-rw-r--r--s7.h5
-rw-r--r--s7.html79
-rw-r--r--s7test.scm9619
-rw-r--r--snd-0.h12
-rw-r--r--snd-1.h7
-rw-r--r--snd-axis.c2
-rw-r--r--snd-chn.c71
-rw-r--r--snd-completion.c4
-rw-r--r--snd-dac.c8
-rw-r--r--snd-edits.c28
-rw-r--r--snd-env.c10
-rw-r--r--snd-fft.c6
-rw-r--r--snd-file.c14
-rw-r--r--snd-find.c6
-rw-r--r--snd-forth-init.fs542
-rw-r--r--snd-gfind.c4
-rw-r--r--snd-glistener.c2
-rw-r--r--snd-gmenu.c4
-rw-r--r--snd-gprefs.c89
-rw-r--r--snd-gtk.scm251
-rw-r--r--snd-gxcolormaps.c6
-rw-r--r--snd-help.c32
-rw-r--r--snd-hobbit.scm439
-rw-r--r--snd-kbd.c6
-rw-r--r--snd-ladspa.c2
-rw-r--r--snd-listener.c23
-rw-r--r--snd-main.c25
-rw-r--r--snd-marks.c24
-rw-r--r--snd-menu.c5
-rw-r--r--snd-mix.c32
-rw-r--r--snd-nogui.c14
-rw-r--r--snd-prefs.c56
-rw-r--r--snd-region.c6
-rw-r--r--snd-select.c6
-rw-r--r--snd-sig.c100
-rw-r--r--snd-snd.c48
-rw-r--r--snd-stochastic.pd109
-rw-r--r--snd-strings.h5
-rw-r--r--snd-test.fs269
-rw-r--r--snd-test.rb210
-rw-r--r--snd-test.scm189
-rw-r--r--snd-utils.c19
-rw-r--r--snd-xen.c83
-rw-r--r--snd-xfind.c4
-rw-r--r--snd-xlistener.c2
-rw-r--r--snd-xm.fs7
-rw-r--r--snd-xmain.c1
-rw-r--r--snd-xmenu.c5
-rw-r--r--snd-xprefs.c114
-rw-r--r--snd-xref.c24
-rw-r--r--snd.c47
-rw-r--r--snd.h6
-rw-r--r--snd_conffile.scm2389
-rw-r--r--snd_pd_external.c1151
-rw-r--r--snd_pd_external.h49
-rw-r--r--sndclm.html90
-rw-r--r--sndlib-ws.scm1
-rw-r--r--sndlib.h.in2
-rw-r--r--sndlib2xen.c12
-rw-r--r--sndplay.c1
-rw-r--r--sndrt_lac2008.pdfbin229338 -> 0 bytes
-rw-r--r--sndscm.html507
-rwxr-xr-xtools/compsnd65
-rw-r--r--tools/crossref.c1
-rw-r--r--tools/index.cl24
-rwxr-xr-xtools/makegl.scm2
-rwxr-xr-xtools/makexg.scm32
-rw-r--r--tools/sam.c286
-rwxr-xr-xtools/sarchive5
-rwxr-xr-xtools/va.scm9
-rw-r--r--tools/xgdata.scm157
-rw-r--r--vct.c22
-rw-r--r--ws.rb6
-rw-r--r--ws.scm82
-rw-r--r--wz_data.js21
-rw-r--r--xen.c71
-rw-r--r--xen.h32
-rw-r--r--xg.c574
-rw-r--r--xm-enved.scm26
-rw-r--r--xm.c12
176 files changed, 15325 insertions, 55636 deletions
diff --git a/ABOUT-NLS b/ABOUT-NLS
deleted file mode 100644
index b3049ec..0000000
--- a/ABOUT-NLS
+++ /dev/null
@@ -1,996 +0,0 @@
-1 Notes on the Free Translation Project
-***************************************
-
-Free software is going international! The Free Translation Project is
-a way to get maintainers of free software, translators, and users all
-together, so that free software will gradually become able to speak many
-languages. A few packages already provide translations for their
-messages.
-
- If you found this `ABOUT-NLS' file inside a distribution, you may
-assume that the distributed package does use GNU `gettext' internally,
-itself available at your nearest GNU archive site. But you do _not_
-need to install GNU `gettext' prior to configuring, installing or using
-this package with messages translated.
-
- Installers will find here some useful hints. These notes also
-explain how users should proceed for getting the programs to use the
-available translations. They tell how people wanting to contribute and
-work on translations can contact the appropriate team.
-
- When reporting bugs in the `intl/' directory or bugs which may be
-related to internationalization, you should tell about the version of
-`gettext' which is used. The information can be found in the
-`intl/VERSION' file, in internationalized packages.
-
-1.1 Quick configuration advice
-==============================
-
-If you want to exploit the full power of internationalization, you
-should configure it using
-
- ./configure --with-included-gettext
-
-to force usage of internationalizing routines provided within this
-package, despite the existence of internationalizing capabilities in the
-operating system where this package is being installed. So far, only
-the `gettext' implementation in the GNU C library version 2 provides as
-many features (such as locale alias, message inheritance, automatic
-charset conversion or plural form handling) as the implementation here.
-It is also not possible to offer this additional functionality on top
-of a `catgets' implementation. Future versions of GNU `gettext' will
-very likely convey even more functionality. So it might be a good idea
-to change to GNU `gettext' as soon as possible.
-
- So you need _not_ provide this option if you are using GNU libc 2 or
-you have installed a recent copy of the GNU gettext package with the
-included `libintl'.
-
-1.2 INSTALL Matters
-===================
-
-Some packages are "localizable" when properly installed; the programs
-they contain can be made to speak your own native language. Most such
-packages use GNU `gettext'. Other packages have their own ways to
-internationalization, predating GNU `gettext'.
-
- By default, this package will be installed to allow translation of
-messages. It will automatically detect whether the system already
-provides the GNU `gettext' functions. If not, the included GNU
-`gettext' library will be used. This library is wholly contained
-within this package, usually in the `intl/' subdirectory, so prior
-installation of the GNU `gettext' package is _not_ required.
-Installers may use special options at configuration time for changing
-the default behaviour. The commands:
-
- ./configure --with-included-gettext
- ./configure --disable-nls
-
-will, respectively, bypass any pre-existing `gettext' to use the
-internationalizing routines provided within this package, or else,
-_totally_ disable translation of messages.
-
- When you already have GNU `gettext' installed on your system and run
-configure without an option for your new package, `configure' will
-probably detect the previously built and installed `libintl.a' file and
-will decide to use this. This might not be desirable. You should use
-the more recent version of the GNU `gettext' library. I.e. if the file
-`intl/VERSION' shows that the library which comes with this package is
-more recent, you should use
-
- ./configure --with-included-gettext
-
-to prevent auto-detection.
-
- The configuration process will not test for the `catgets' function
-and therefore it will not be used. The reason is that even an
-emulation of `gettext' on top of `catgets' could not provide all the
-extensions of the GNU `gettext' library.
-
- Internationalized packages usually have many `po/LL.po' files, where
-LL gives an ISO 639 two-letter code identifying the language. Unless
-translations have been forbidden at `configure' time by using the
-`--disable-nls' switch, all available translations are installed
-together with the package. However, the environment variable `LINGUAS'
-may be set, prior to configuration, to limit the installed set.
-`LINGUAS' should then contain a space separated list of two-letter
-codes, stating which languages are allowed.
-
-1.3 Using This Package
-======================
-
-As a user, if your language has been installed for this package, you
-only have to set the `LANG' environment variable to the appropriate
-`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code,
-and `CC' is an ISO 3166 two-letter country code. For example, let's
-suppose that you speak German and live in Germany. At the shell
-prompt, merely execute `setenv LANG de_DE' (in `csh'),
-`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
-This can be done from your `.login' or `.profile' file, once and for
-all.
-
- You might think that the country code specification is redundant.
-But in fact, some languages have dialects in different countries. For
-example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The
-country code serves to distinguish the dialects.
-
- The locale naming convention of `LL_CC', with `LL' denoting the
-language and `CC' denoting the country, is the one use on systems based
-on GNU libc. On other systems, some variations of this scheme are
-used, such as `LL' or `LL_CC.ENCODING'. You can get the list of
-locales supported by your system for your country by running the command
-`locale -a | grep '^LL''.
-
- Not all programs have translations for all languages. By default, an
-English message is shown in place of a nonexistent translation. If you
-understand other languages, you can set up a priority list of languages.
-This is done through a different environment variable, called
-`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG'
-for the purpose of message handling, but you still need to have `LANG'
-set to the primary language; this is required by other parts of the
-system libraries. For example, some Swedish users who would rather
-read translations in German than English for when Swedish is not
-available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
-
- Special advice for Norwegian users: The language code for Norwegian
-bokma*l changed from `no' to `nb' recently (in 2003). During the
-transition period, while some message catalogs for this language are
-installed under `nb' and some older ones under `no', it's recommended
-for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and
-older translations are used.
-
- In the `LANGUAGE' environment variable, but not in the `LANG'
-environment variable, `LL_CC' combinations can be abbreviated as `LL'
-to denote the language's main dialect. For example, `de' is equivalent
-to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
-(Portuguese as spoken in Portugal) in this context.
-
-1.4 Translating Teams
-=====================
-
-For the Free Translation Project to be a success, we need interested
-people who like their own language and write it well, and who are also
-able to synergize with other translators speaking the same language.
-Each translation team has its own mailing list. The up-to-date list of
-teams can be found at the Free Translation Project's homepage,
-`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams"
-area.
-
- If you'd like to volunteer to _work_ at translating messages, you
-should become a member of the translating team for your own language.
-The subscribing address is _not_ the same as the list itself, it has
-`-request' appended. For example, speakers of Swedish can send a
-message to `sv-request@li.org', having this message body:
-
- subscribe
-
- Keep in mind that team members are expected to participate
-_actively_ in translations, or at solving translational difficulties,
-rather than merely lurking around. If your team does not exist yet and
-you want to start one, or if you are unsure about what to do or how to
-get started, please write to `translation@iro.umontreal.ca' to reach the
-coordinator for all translator teams.
-
- The English team is special. It works at improving and uniformizing
-the terminology in use. Proven linguistic skill are praised more than
-programming skill, here.
-
-1.5 Available Packages
-======================
-
-Languages are not equally supported in all packages. The following
-matrix shows the current state of internationalization, as of February
-2005. The matrix shows, in regard of each package, for which languages
-PO files have been submitted to translation coordination, with a
-translation percentage of at least 50%.
-
- Ready PO files af am ar az be bg bs ca cs cy da de el en en_GB
- +-------------------------------------------------+
- GNUnet | |
- a2ps | [] [] [] [] [] |
- aegis | () |
- ant-phone | () |
- anubis | [] |
- ap-utils | |
- aspell | [] [] [] [] |
- bash | [] [] |
- batchelor | [] |
- bfd | [] |
- bibshelf | [] |
- binutils | [] |
- bison | [] [] |
- bluez-pin | [] [] [] [] |
- clisp | [] [] |
- console-tools | [] [] |
- coreutils | [] [] [] [] |
- cpio | |
- cpplib | [] [] [] |
- darkstat | [] () [] |
- dialog | [] [] [] [] [] [] |
- diffutils | [] [] [] [] [] |
- doodle | [] |
- e2fsprogs | [] [] |
- enscript | [] [] [] [] |
- error | [] [] [] [] |
- fetchmail | [] () [] [] [] |
- fileutils | [] [] |
- findutils | [] [] [] |
- flex | [] [] [] |
- fslint | [] |
- gas | |
- gawk | [] [] [] |
- gbiff | [] |
- gcal | [] |
- gcc | [] |
- gettext-examples | [] [] [] [] |
- gettext-runtime | [] [] [] [] |
- gettext-tools | [] [] |
- gimp-print | [] [] [] [] |
- gip | |
- gliv | [] |
- glunarclock | [] |
- gmult | [] [] |
- gnubiff | () |
- gnucash | [] () () [] |
- gnucash-glossary | [] () |
- gnupg | [] () [] [] |
- gpe-aerial | [] [] |
- gpe-beam | [] [] |
- gpe-calendar | [] [] |
- gpe-clock | [] [] |
- gpe-conf | [] [] |
- gpe-contacts | |
- gpe-edit | [] |
- gpe-go | [] |
- gpe-login | [] [] |
- gpe-ownerinfo | [] [] |
- gpe-sketchbook | [] [] |
- gpe-su | [] [] |
- gpe-taskmanager | [] [] |
- gpe-timesheet | [] |
- gpe-today | [] [] |
- gpe-todo | [] [] |
- gphoto2 | [] [] [] [] |
- gprof | [] [] |
- gpsdrive | () () |
- gramadoir | [] [] |
- grep | [] [] [] [] [] [] |
- gretl | |
- gsasl | [] |
- gss | |
- gst-plugins | [] [] [] [] [] [] |
- gstreamer | [] [] [] [] [] |
- gtick | [] () |
- gtkspell | [] [] [] |
- hello | [] [] [] [] |
- id-utils | [] [] |
- impost | |
- indent | [] [] |
- iso_3166 | |
- iso_3166_1 | [] [] [] [] [] |
- iso_3166_2 | |
- iso_3166_3 | [] |
- iso_4217 | |
- iso_639 | |
- jpilot | [] |
- jtag | |
- jwhois | |
- kbd | [] [] [] [] |
- latrine | () |
- ld | [] |
- libc | [] [] [] [] [] |
- libextractor | |
- libgpewidget | [] [] [] |
- libgsasl | |
- libiconv | [] [] [] [] [] |
- libidn | |
- lifelines | [] () |
- lilypond | [] |
- lingoteach | |
- lynx | [] [] [] [] |
- m4 | [] [] [] [] |
- mailutils | [] |
- make | [] [] |
- man-db | [] () [] [] |
- minicom | [] [] |
- mysecretdiary | [] [] |
- nano | [] () [] |
- nano_1_0 | [] () [] [] |
- opcodes | [] |
- parted | [] [] [] [] |
- psmisc | |
- ptx | [] [] [] |
- pwdutils | |
- python | |
- radius | [] |
- recode | [] [] [] [] [] |
- rpm | [] [] |
- screem | |
- scrollkeeper | [] [] [] [] [] [] [] [] |
- sed | [] [] |
- sh-utils | [] [] |
- shared-mime-info | [] [] |
- sharutils | [] [] [] [] [] |
- silky | () |
- skencil | [] () |
- sketch | [] () |
- solfege | [] [] |
- soundtracker | [] [] |
- sp | [] |
- stardict | [] |
- tar | |
- texinfo | [] [] |
- textutils | [] [] [] |
- tin | () () |
- tp-robot | [] |
- tuxpaint | [] [] [] [] [] [] [] |
- unicode-han-tra... | |
- unicode-transla... | |
- util-linux | [] [] [] [] |
- vorbis-tools | [] [] [] [] |
- wastesedge | () |
- wdiff | [] [] [] [] |
- wget | [] [] [] [] [] [] |
- xchat | [] [] [] [] |
- xfree86_xkb_xml | [] [] [] [] |
- xkeyboard-config | |
- xpad | |
- +-------------------------------------------------+
- af am ar az be bg bs ca cs cy da de el en en_GB
- 11 0 0 3 7 4 0 42 44 3 55 92 21 1 15
-
- eo es et eu fa fi fr ga gl he hr hu id is it
- +-----------------------------------------------+
- GNUnet | |
- a2ps | [] [] [] () |
- aegis | |
- ant-phone | [] |
- anubis | [] |
- ap-utils | [] |
- aspell | [] [] |
- bash | [] [] [] [] |
- batchelor | [] [] |
- bfd | [] [] |
- bibshelf | [] [] [] |
- binutils | [] [] |
- bison | [] [] [] [] [] [] |
- bluez-pin | [] [] [] [] [] [] |
- clisp | [] [] |
- console-tools | |
- coreutils | [] [] [] [] [] |
- cpio | [] [] |
- cpplib | [] [] |
- darkstat | [] () [] [] [] |
- dialog | [] [] [] [] [] [] [] |
- diffutils | [] [] [] [] [] [] [] [] [] [] |
- doodle | [] [] |
- e2fsprogs | [] [] [] |
- enscript | [] [] |
- error | [] [] [] [] [] |
- fetchmail | [] |
- fileutils | [] [] [] [] [] [] |
- findutils | [] [] [] [] [] |
- flex | [] [] [] |
- fslint | [] |
- gas | [] [] |
- gawk | [] [] [] |
- gbiff | [] |
- gcal | [] [] |
- gcc | |
- gettext-examples | [] [] [] |
- gettext-runtime | [] [] [] [] [] |
- gettext-tools | [] [] |
- gimp-print | [] [] |
- gip | [] [] [] |
- gliv | () |
- glunarclock | [] [] [] |
- gmult | [] [] [] |
- gnubiff | [] [] () |
- gnucash | [] () [] |
- gnucash-glossary | [] [] |
- gnupg | [] [] [] [] [] [] [] [] |
- gpe-aerial | [] [] |
- gpe-beam | [] [] |
- gpe-calendar | [] [] [] [] |
- gpe-clock | [] [] |
- gpe-conf | [] |
- gpe-contacts | [] |
- gpe-edit | [] [] |
- gpe-go | [] [] |
- gpe-login | [] [] [] |
- gpe-ownerinfo | [] [] [] [] |
- gpe-sketchbook | [] [] |
- gpe-su | [] [] |
- gpe-taskmanager | [] [] |
- gpe-timesheet | [] [] [] [] |
- gpe-today | [] [] [] |
- gpe-todo | [] [] [] |
- gphoto2 | [] [] [] [] [] |
- gprof | [] [] [] |
- gpsdrive | () () [] () |
- gramadoir | [] [] |
- grep | [] [] [] [] [] [] [] [] [] [] [] [] |
- gretl | [] [] [] |
- gsasl | [] [] [] |
- gss | [] |
- gst-plugins | [] [] [] |
- gstreamer | [] |
- gtick | [] [] [] [] [] |
- gtkspell | [] [] [] [] [] [] |
- hello | [] [] [] [] [] [] [] [] [] [] [] [] [] [] |
- id-utils | [] [] [] [] |
- impost | [] [] |
- indent | [] [] [] [] [] [] [] [] [] [] [] |
- iso_3166 | [] [] |
- iso_3166_1 | [] [] [] [] [] [] |
- iso_3166_2 | [] |
- iso_3166_3 | [] |
- iso_4217 | [] [] |
- iso_639 | [] [] [] |
- jpilot | [] [] |
- jtag | [] |
- jwhois | [] [] [] [] [] |
- kbd | [] [] |
- latrine | [] [] [] |
- ld | [] [] |
- libc | [] [] [] [] [] |
- libextractor | |
- libgpewidget | [] [] [] [] [] |
- libgsasl | [] [] |
- libiconv | [] [] [] [] [] [] [] [] [] [] [] |
- libidn | [] [] |
- lifelines | () |
- lilypond | [] |
- lingoteach | [] [] [] |
- lynx | [] [] [] |
- m4 | [] [] [] [] |
- mailutils | [] [] |
- make | [] [] [] [] [] [] [] |
- man-db | () |
- minicom | [] [] [] [] |
- mysecretdiary | [] [] [] |
- nano | [] [] () [] [] |
- nano_1_0 | [] [] [] [] [] |
- opcodes | [] [] |
- parted | [] [] [] [] |
- psmisc | [] |
- ptx | [] [] [] [] [] [] [] [] [] |
- pwdutils | |
- python | |
- radius | [] [] |
- recode | [] [] [] [] [] [] [] [] |
- rpm | [] |
- screem | |
- scrollkeeper | [] [] |
- sed | [] [] [] [] [] |
- sh-utils | [] [] [] [] [] [] [] |
- shared-mime-info | [] [] [] [] [] [] |
- sharutils | [] [] [] [] [] [] [] |
- silky | () [] () () |
- skencil | [] [] |
- sketch | [] [] |
- solfege | [] [] [] |
- soundtracker | [] [] [] |
- sp | [] |
- stardict | [] |
- tar | [] [] [] [] [] |
- texinfo | [] [] [] |
- textutils | [] [] [] [] [] |
- tin | [] () |
- tp-robot | [] [] |
- tuxpaint | [] [] [] [] [] [] [] [] [] |
- unicode-han-tra... | |
- unicode-transla... | [] [] |
- util-linux | [] [] [] [] [] |
- vorbis-tools | [] [] |
- wastesedge | () |
- wdiff | [] [] [] [] [] [] [] [] |
- wget | [] [] [] [] [] [] [] [] [] [] |
- xchat | [] [] [] [] [] |
- xfree86_xkb_xml | [] [] |
- xkeyboard-config | |
- xpad | [] [] [] |
- +-----------------------------------------------+
- eo es et eu fa fi fr ga gl he hr hu id is it
- 14 87 22 15 2 25 119 44 18 8 6 41 28 1 41
-
- ja ko lg lt lv mk mn ms mt nb nl nn no nso or
- +-----------------------------------------------+
- GNUnet | |
- a2ps | () [] [] () |
- aegis | () |
- ant-phone | [] |
- anubis | [] [] [] |
- ap-utils | |
- aspell | [] [] |
- bash | [] |
- batchelor | [] |
- bfd | |
- bibshelf | |
- binutils | [] |
- bison | [] [] [] |
- bluez-pin | [] |
- clisp | [] |
- console-tools | |
- coreutils | [] [] |
- cpio | |
- cpplib | |
- darkstat | [] [] |
- dialog | [] |
- diffutils | [] [] [] |
- doodle | |
- e2fsprogs | |
- enscript | [] |
- error | [] |
- fetchmail | [] [] |
- fileutils | [] [] |
- findutils | |
- flex | [] [] |
- fslint | [] |
- gas | |
- gawk | [] [] |
- gbiff | [] |
- gcal | |
- gcc | |
- gettext-examples | [] [] |
- gettext-runtime | [] [] [] |
- gettext-tools | [] [] |
- gimp-print | [] [] |
- gip | [] |
- gliv | [] |
- glunarclock | [] [] |
- gmult | [] |
- gnubiff | |
- gnucash | () () [] |
- gnucash-glossary | [] |
- gnupg | [] [] |
- gpe-aerial | [] |
- gpe-beam | [] |
- gpe-calendar | [] |
- gpe-clock | [] |
- gpe-conf | [] |
- gpe-contacts | |
- gpe-edit | [] |
- gpe-go | [] |
- gpe-login | [] |
- gpe-ownerinfo | [] |
- gpe-sketchbook | [] |
- gpe-su | [] |
- gpe-taskmanager | [] |
- gpe-timesheet | [] |
- gpe-today | [] |
- gpe-todo | [] |
- gphoto2 | [] [] |
- gprof | |
- gpsdrive | () () () |
- gramadoir | () |
- grep | [] [] [] |
- gretl | |
- gsasl | [] |
- gss | |
- gst-plugins | [] [] |
- gstreamer | [] |
- gtick | [] |
- gtkspell | [] |
- hello | [] [] [] [] [] [] [] [] |
- id-utils | [] |
- impost | |
- indent | [] [] |
- iso_3166 | [] |
- iso_3166_1 | [] [] |
- iso_3166_2 | [] |
- iso_3166_3 | [] |
- iso_4217 | [] [] [] |
- iso_639 | [] [] [] |
- jpilot | () () () |
- jtag | |
- jwhois | [] |
- kbd | [] |
- latrine | [] |
- ld | |
- libc | [] [] [] [] [] |
- libextractor | |
- libgpewidget | [] |
- libgsasl | [] |
- libiconv | [] |
- libidn | |
- lifelines | [] |
- lilypond | [] |
- lingoteach | [] |
- lynx | [] [] |
- m4 | [] [] |
- mailutils | |
- make | [] [] [] |
- man-db | () |
- minicom | [] |
- mysecretdiary | [] |
- nano | [] [] |
- nano_1_0 | [] [] [] |
- opcodes | [] |
- parted | [] [] |
- psmisc | [] |
- ptx | [] [] [] |
- pwdutils | |
- python | |
- radius | |
- recode | [] |
- rpm | [] [] |
- screem | [] |
- scrollkeeper | [] [] [] |
- sed | [] [] |
- sh-utils | [] [] |
- shared-mime-info | [] [] [] [] |
- sharutils | [] [] |
- silky | [] |
- skencil | |
- sketch | |
- solfege | [] [] |
- soundtracker | |
- sp | () |
- stardict | [] [] |
- tar | [] [] |
- texinfo | [] [] [] |
- textutils | [] [] [] |
- tin | |
- tp-robot | [] |
- tuxpaint | [] [] [] [] [] [] |
- unicode-han-tra... | |
- unicode-transla... | |
- util-linux | [] [] |
- vorbis-tools | [] |
- wastesedge | [] |
- wdiff | [] [] |
- wget | [] [] |
- xchat | [] [] [] [] |
- xfree86_xkb_xml | [] |
- xkeyboard-config | [] |
- xpad | [] |
- +-----------------------------------------------+
- ja ko lg lt lv mk mn ms mt nb nl nn no nso or
- 35 11 1 1 2 2 3 11 0 14 96 7 5 0 1
-
- pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta
- +----------------------------------------------+
- GNUnet | |
- a2ps | () [] [] [] [] [] [] |
- aegis | () () |
- ant-phone | [] |
- anubis | [] [] [] |
- ap-utils | () |
- aspell | [] [] |
- bash | [] [] [] |
- batchelor | [] |
- bfd | [] [] |
- bibshelf | |
- binutils | [] [] |
- bison | [] [] [] [] [] |
- bluez-pin | [] [] [] [] [] [] [] [] |
- clisp | [] |
- console-tools | [] |
- coreutils | [] [] [] [] |
- cpio | [] [] |
- cpplib | |
- darkstat | [] [] [] [] [] [] |
- dialog | [] [] [] [] [] [] |
- diffutils | [] [] [] [] [] [] |
- doodle | [] |
- e2fsprogs | [] [] |
- enscript | [] [] [] [] |
- error | [] [] [] |
- fetchmail | [] () [] [] [] |
- fileutils | [] [] [] [] [] |
- findutils | [] [] [] [] [] |
- flex | [] [] [] [] [] |
- fslint | [] [] [] |
- gas | |
- gawk | [] [] [] [] |
- gbiff | [] |
- gcal | [] |
- gcc | |
- gettext-examples | [] [] [] [] [] [] |
- gettext-runtime | [] [] [] [] [] [] [] |
- gettext-tools | [] [] [] [] [] [] [] |
- gimp-print | [] [] |
- gip | [] [] [] |
- gliv | [] [] [] |
- glunarclock | [] [] [] [] [] [] |
- gmult | [] [] [] [] |
- gnubiff | () [] |
- gnucash | () [] [] [] [] |
- gnucash-glossary | [] [] [] |
- gnupg | [] [] [] |
- gpe-aerial | [] [] [] [] [] [] |
- gpe-beam | [] [] [] [] [] [] |
- gpe-calendar | [] [] [] [] [] [] [] |
- gpe-clock | [] [] [] [] [] [] [] |
- gpe-conf | [] [] [] [] [] [] |
- gpe-contacts | [] [] [] |
- gpe-edit | [] [] [] [] [] [] [] |
- gpe-go | [] [] [] [] [] |
- gpe-login | [] [] [] [] [] [] [] |
- gpe-ownerinfo | [] [] [] [] [] [] [] |
- gpe-sketchbook | [] [] [] [] [] [] [] |
- gpe-su | [] [] [] [] [] [] [] |
- gpe-taskmanager | [] [] [] [] [] [] [] |
- gpe-timesheet | [] [] [] [] [] [] [] |
- gpe-today | [] [] [] [] [] [] [] |
- gpe-todo | [] [] [] [] [] [] [] |
- gphoto2 | [] [] [] [] |
- gprof | [] [] [] |
- gpsdrive | [] |
- gramadoir | [] |
- grep | [] [] [] [] [] [] [] |
- gretl | [] |
- gsasl | [] [] [] [] [] |
- gss | [] [] [] |
- gst-plugins | [] [] [] |
- gstreamer | [] [] [] [] |
- gtick | [] [] [] |
- gtkspell | [] [] [] [] [] |
- hello | [] [] [] [] [] [] [] |
- id-utils | [] [] [] [] |
- impost | |
- indent | [] [] [] [] [] [] |
- iso_3166 | [] [] [] [] [] |
- iso_3166_1 | [] [] [] [] |
- iso_3166_2 | |
- iso_3166_3 | [] [] [] |
- iso_4217 | [] [] |
- iso_639 | [] [] [] |
- jpilot | |
- jtag | [] |
- jwhois | [] [] [] () () |
- kbd | [] [] [] |
- latrine | [] [] |
- ld | [] |
- libc | [] [] [] [] [] |
- libextractor | |
- libgpewidget | [] [] [] [] [] [] |
- libgsasl | [] [] [] |
- libiconv | [] [] [] [] [] [] [] [] [] [] |
- libidn | [] () |
- lifelines | [] [] |
- lilypond | [] |
- lingoteach | [] |
- lynx | [] [] [] |
- m4 | [] [] [] [] [] |
- mailutils | [] [] [] |
- make | [] [] [] [] |
- man-db | [] [] |
- minicom | [] [] [] [] |
- mysecretdiary | [] [] [] |
- nano | [] [] [] |
- nano_1_0 | [] [] [] [] |
- opcodes | [] [] |
- parted | [] [] [] [] |
- psmisc | [] [] |
- ptx | [] [] [] [] [] [] |
- pwdutils | [] |
- python | |
- radius | [] [] |
- recode | [] [] [] [] [] [] |
- rpm | [] [] [] [] |
- screem | |
- scrollkeeper | [] [] [] [] [] [] [] |
- sed | [] [] [] [] [] [] [] |
- sh-utils | [] [] [] |
- shared-mime-info | [] [] [] [] [] |
- sharutils | [] [] [] |
- silky | () [] |
- skencil | [] [] [] |
- sketch | [] [] [] |
- solfege | [] |
- soundtracker | [] [] |
- sp | |
- stardict | [] [] |
- tar | [] [] [] [] |
- texinfo | [] [] [] [] |
- textutils | [] [] [] |
- tin | |
- tp-robot | [] |
- tuxpaint | [] [] [] [] [] [] [] [] |
- unicode-han-tra... | |
- unicode-transla... | |
- util-linux | [] [] [] |
- vorbis-tools | [] [] |
- wastesedge | |
- wdiff | [] [] [] [] [] [] |
- wget | [] [] [] [] [] [] [] [] |
- xchat | [] [] [] [] [] [] |
- xfree86_xkb_xml | [] [] [] [] [] |
- xkeyboard-config | |
- xpad | |
- +----------------------------------------------+
- pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta
- 0 48 27 58 6 79 71 4 47 13 13 51 90 0
-
- tg th tk tr uk ven vi wa xh zh_CN zh_TW zu
- +--------------------------------------------+
- GNUnet | | 0
- a2ps | [] [] | 18
- aegis | | 0
- ant-phone | [] | 4
- anubis | [] | 9
- ap-utils | () | 1
- aspell | [] [] | 12
- bash | | 10
- batchelor | [] [] | 7
- bfd | [] | 6
- bibshelf | [] | 5
- binutils | [] [] | 8
- bison | [] | 17
- bluez-pin | [] [] [] [] [] | 24
- clisp | | 7
- console-tools | | 3
- coreutils | [] | 16
- cpio | [] | 5
- cpplib | [] | 6
- darkstat | [] () () | 15
- dialog | [] [] | 22
- diffutils | [] [] [] | 27
- doodle | | 4
- e2fsprogs | [] | 8
- enscript | [] | 12
- error | [] [] | 15
- fetchmail | [] | 12
- fileutils | [] [] [] | 18
- findutils | [] | 14
- flex | [] | 14
- fslint | [] | 7
- gas | [] | 3
- gawk | [] | 13
- gbiff | | 4
- gcal | [] | 5
- gcc | | 1
- gettext-examples | [] [] [] [] | 19
- gettext-runtime | [] [] [] [] [] | 24
- gettext-tools | [] [] [] | 16
- gimp-print | [] | 11
- gip | [] | 8
- gliv | | 5
- glunarclock | [] [] | 14
- gmult | [] [] [] | 13
- gnubiff | | 3
- gnucash | () [] | 10
- gnucash-glossary | [] | 8
- gnupg | [] [] [] | 19
- gpe-aerial | [] | 12
- gpe-beam | [] [] | 13
- gpe-calendar | [] [] [] [] | 18
- gpe-clock | [] [] [] | 15
- gpe-conf | [] [] | 12
- gpe-contacts | [] [] | 6
- gpe-edit | [] [] [] | 14
- gpe-go | [] | 10
- gpe-login | [] [] [] [] | 17
- gpe-ownerinfo | [] [] [] | 17
- gpe-sketchbook | [] | 13
- gpe-su | [] [] | 14
- gpe-taskmanager | [] [] | 14
- gpe-timesheet | [] [] [] | 16
- gpe-today | [] [] [] [] | 17
- gpe-todo | [] [] [] | 16
- gphoto2 | [] [] | 17
- gprof | [] [] | 10
- gpsdrive | | 2
- gramadoir | [] | 6
- grep | [] [] [] [] | 32
- gretl | | 4
- gsasl | [] [] | 12
- gss | [] | 5
- gst-plugins | [] [] | 16
- gstreamer | [] [] [] | 14
- gtick | [] | 11
- gtkspell | [] [] [] | 18
- hello | [] [] [] [] | 37
- id-utils | [] [] | 13
- impost | [] | 3
- indent | [] [] [] | 24
- iso_3166 | [] | 9
- iso_3166_1 | [] [] | 19
- iso_3166_2 | | 2
- iso_3166_3 | [] [] | 8
- iso_4217 | [] | 8
- iso_639 | [] | 10
- jpilot | [] [] [] | 6
- jtag | | 2
- jwhois | [] [] [] | 12
- kbd | [] | 11
- latrine | [] [] | 8
- ld | [] | 5
- libc | [] [] | 22
- libextractor | | 0
- libgpewidget | [] [] | 17
- libgsasl | [] | 7
- libiconv | [] [] [] [] [] | 32
- libidn | [] | 4
- lifelines | | 4
- lilypond | [] | 5
- lingoteach | | 5
- lynx | [] [] | 14
- m4 | [] [] | 17
- mailutils | [] | 7
- make | [] [] | 18
- man-db | | 5
- minicom | | 11
- mysecretdiary | [] [] | 11
- nano | | 11
- nano_1_0 | [] [] | 17
- opcodes | [] | 7
- parted | [] [] [] | 17
- psmisc | [] | 5
- ptx | [] [] | 23
- pwdutils | | 1
- python | | 0
- radius | [] | 6
- recode | [] [] | 22
- rpm | [] [] | 11
- screem | | 1
- scrollkeeper | [] [] | 22
- sed | [] | 17
- sh-utils | [] | 15
- shared-mime-info | [] [] | 19
- sharutils | [] [] [] | 20
- silky | | 3
- skencil | | 6
- sketch | | 6
- solfege | | 8
- soundtracker | [] | 8
- sp | [] | 3
- stardict | [] [] [] [] | 10
- tar | [] [] | 13
- texinfo | [] [] | 14
- textutils | [] [] [] | 17
- tin | | 1
- tp-robot | [] [] | 7
- tuxpaint | [] [] [] [] | 34
- unicode-han-tra... | | 0
- unicode-transla... | | 2
- util-linux | [] [] | 16
- vorbis-tools | [] | 10
- wastesedge | | 1
- wdiff | [] | 21
- wget | [] [] [] [] | 30
- xchat | [] [] | 21
- xfree86_xkb_xml | [] [] [] | 15
- xkeyboard-config | | 1
- xpad | [] | 5
- +--------------------------------------------+
- 71 teams tg th tk tr uk ven vi wa xh zh_CN zh_TW zu
- 149 domains 0 0 1 66 30 0 54 16 0 42 21 0 1695
-
- Some counters in the preceding matrix are higher than the number of
-visible blocks let us expect. This is because a few extra PO files are
-used for implementing regional variants of languages, or language
-dialects.
-
- For a PO file in the matrix above to be effective, the package to
-which it applies should also have been internationalized and
-distributed as such by its maintainer. There might be an observable
-lag between the mere existence a PO file and its wide availability in a
-distribution.
-
- If February 2005 seems to be old, you may fetch a more recent copy
-of this `ABOUT-NLS' file on most GNU archive sites. The most
-up-to-date matrix with full percentage details can be found at
-`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
-
-1.6 Using `gettext' in new packages
-===================================
-
-If you are writing a freely available program and want to
-internationalize it you are welcome to use GNU `gettext' in your
-package. Of course you have to respect the GNU Library General Public
-License which covers the use of the GNU `gettext' library. This means
-in particular that even non-free programs can use `libintl' as a shared
-library, whereas only free software can use `libintl' as a static
-library or use modified versions of `libintl'.
-
- Once the sources are changed appropriately and the setup can handle
-the use of `gettext' the only thing missing are the translations. The
-Free Translation Project is also available for packages which are not
-developed inside the GNU project. Therefore the information given above
-applies also for every other Free Software Project. Contact
-`translation@iro.umontreal.ca' to make the `.pot' files available to
-the translation teams.
-
diff --git a/HISTORY.Snd b/HISTORY.Snd
index 27a68a1..0805c00 100644
--- a/HISTORY.Snd
+++ b/HISTORY.Snd
@@ -1,5 +1,11 @@
Snd change log
+ 11-Feb: Snd 11.3.
+ 9-Feb: removed NLS support (the po directory and so on).
+ 8-Feb: moved sound|channel|mix|mark|edit-property to C.
+ 23-Jan: The rest of the Guile-dependent files have been removed.
+ This includes pd-*, rt-*, and the --with-snd-as-pd-external
+ --with-hobbit, and --with-rt configuration switches.
5-Jan: Snd 11.2.
2010 ----------------------------------------------------------------
diff --git a/NEWS b/NEWS
index 5024d0c..72f1e0b 100644
--- a/NEWS
+++ b/NEWS
@@ -1,55 +1,28 @@
-Snd 11.2
+Snd 11.3:
-added portaudio (version 19) support.
+The old functional form of show-listener no longer works:
+ change (show-listener) to (set! (show-listener) #t).
-s7: hash-table-for-each.
+in CLM, mus-file-probe et al changed to get bools working across the FFI,
+ (that is, mus-file-probe now returns either T or NIL, not 1 or 0),
+ and sound-frames and friends now follow the *clm-seach-list* list.
-added tools/sam.c: a Samson box emulator!
+The rest of the Guile-dependent files have been removed. As soon as
+ they are translated to s7, I'll put them back in. This includes the
+ --with-snd-as-pd-external and --with-rt configuration switches.
-some of the more useful extensions were moved to C:
+About half of the CL functions have been implemented in s7test.scm (including
+ CLOS via tiny-clos); they pass the sacla/ansi/clisp tests (also in s7test.scm).
- make-current-window-display (draw.*) as with-inset-graph.
+flocsig in generators.scm (flanged locsig).
- focus-follows-mouse as with-pointer-focus.
+moved sound|channel|mix|mark|edit-property to C.
- peak-env support, so peak-env.* removed, peak-env-info,
- read-peak-env-info-file and write-peak-env-info-file removed,
- added peak-env-dir which if not null (the default) turns on the
- peak env machinery. smart-line-cursor also moved to C.
+removed NLS support (the po directory and so on).
-lots of long-delayed cleanups:
+checked: gtk 2.19.3|4|5, FC 12, sbcl 1.0.35
- removed Guile support.
- this includes remove-local-hook! in hooks.scm, use-modules and all
- the guile-specific reader/debugger settings ("debug-set!" etc),
- --with-guile, --with-modules, and --with-hobbit configuration switches,
- snd-out in examp.scm, pd-* and rt-* are currently broken. def-optkey-fun
- is now just define*, and def-optkey-instrument is definstrument.
- load-from-path is load. shell is system. removed fix-optargs.scm.
-
- removed mus-audio-systems, mus-audio-mixer-read, mus-audio-mixer-write,
- and all the associated field and device names (in CLM as well as Snd).
- removed mus-audio-report and changed mus-audio-describe to return the
- description as a string.
-
- removed sndrecord.c and new-buttons.scm.
-
- removed SGI support.
-
- removed midi.c and the --with-midi configure switch.
-
- in CLM, removed sc.c and clm-snd.lisp (CLM to Snd interjob communication).
-
- removed XmPrint/libXp support (--with-xp configure switch).
-
-
-versions of Alsa before 1.0 are no longer supported.
-
-mpc versions before 0.8.0 are no longer supported.
-
-
-checked: autoconf 2.65, sbcl 1.0.33|4, mpfr 2.4.2, gtk 2.19.1|2, mpc 0.8.1
-
-Thanks!: Hermann Beyer, Mike Scholz, Tommy Rushton, Mike Winter, Rick Taube.
+Thanks!: Kim Cascone, Mike Scholz, Michael McNabb, Rick Taube, Michael Edwards,
+ Fernando Lopez-Lezcano, Geoff Lee
diff --git a/README.Snd b/README.Snd
index 9dc3095..1120bfa 100644
--- a/README.Snd
+++ b/README.Snd
@@ -244,9 +244,6 @@ C, Scheme, Ruby, Forth, m4, Common Lisp, Emacs Lisp, javascript,
Fortran, expect, and postscript (altogether about 710,000 lines).
-To get the German version at run-time, (setlocale LC_ALL "de_DE").
-
-
----------------------------------------------------------------
If you hit a bug, don't just sit there weeping -- send me
diff --git a/_sndlib.h b/_sndlib.h
index 3cc4682..2cceebf 100644
--- a/_sndlib.h
+++ b/_sndlib.h
@@ -537,7 +537,7 @@ MUS_EXPORT mus_float_t mus_run_evaluate_ptree_1f1v1b2f(struct ptree *pt, mus_flo
MUS_EXPORT mus_float_t mus_run_evaluate_ptreec(struct ptree *pt, mus_float_t arg, XEN object, bool dir, int type);
MUS_EXPORT int mus_run_xen_to_run_type(XEN val);
-#if HAVE_S7
+#if HAVE_SCHEME
MUS_EXPORT struct ptree *mus_run_form_to_ptree_1_b_without_env(XEN code);
MUS_EXPORT mus_float_t mus_run_evaluate_ptree_0f2f(struct ptree *pt);
MUS_EXPORT struct ptree *mus_run_form_to_ptree_0_f(XEN code);
diff --git a/aclocal.m4 b/aclocal.m4
index d382751..b411081 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,30 +1,3 @@
-# based on AM_LANGINFO_CODESET of Bruno Haible
-AC_DEFUN([AM_LANGINFO_DECIMAL_POINT],
-[
- AC_CACHE_CHECK([for nl_langinfo and DECIMAL_POINT], am_cv_langinfo_decimal_point,
- [AC_TRY_LINK([#include <langinfo.h>],
- [char* cs = nl_langinfo(DECIMAL_POINT);],
- am_cv_langinfo_decimal_point=yes,
- am_cv_langinfo_decimal_point=no)
- ])
- if test $am_cv_langinfo_decimal_point = yes; then
- AC_DEFINE(HAVE_LANGINFO_DECIMAL_POINT, 1,
- [Define if you have <langinfo.h> and nl_langinfo(DECIMAL_POINT).])
- else
- AC_CACHE_CHECK([for nl_langinfo and RADIXCHAR], am_cv_langinfo_radixchar,
- [AC_TRY_LINK([#include <langinfo.h>],
- [char* cs = nl_langinfo(RADIXCHAR);],
- am_cv_langinfo_radixchar=yes,
- am_cv_langinfo_radixchar=no)
- ])
- if test $am_cv_langinfo_radixchar = yes; then
- AC_DEFINE(HAVE_LANGINFO_RADIXCHAR, 1,
- [Define if you have <langinfo.h> and nl_langinfo(RADIXCHAR).])
- fi
- fi
-])
-
-
AC_DEFUN([VL_PROG_CC_WARNINGS], [
ansi=$1
if test -z "$ansi"; then
@@ -411,2650 +384,7 @@ dnl
ifelse([$3], , :, [$3])
fi
])
-# codeset.m4 serial AM1 (gettext-0.10.40)
-dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible.
-
-AC_DEFUN([AM_LANGINFO_CODESET],
-[
- AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset,
- [AC_TRY_LINK([#include <langinfo.h>],
- [char* cs = nl_langinfo(CODESET);],
- am_cv_langinfo_codeset=yes,
- am_cv_langinfo_codeset=no)
- ])
- if test $am_cv_langinfo_codeset = yes; then
- AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
- [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
- fi
-])
-# gettext.m4 serial 34 (gettext-0.14.2)
-dnl Copyright (C) 1995-2005 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
-dnl They are *not* in the public domain.
-
-dnl Authors:
-dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
-dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
-
-dnl Macro to add for using GNU gettext.
-
-dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
-dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
-dnl default (if it is not specified or empty) is 'no-libtool'.
-dnl INTLSYMBOL should be 'external' for packages with no intl directory,
-dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory.
-dnl If INTLSYMBOL is 'use-libtool', then a libtool library
-dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static,
-dnl depending on --{enable,disable}-{shared,static} and on the presence of
-dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library
-dnl $(top_builddir)/intl/libintl.a will be created.
-dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
-dnl implementations (in libc or libintl) without the ngettext() function
-dnl will be ignored. If NEEDSYMBOL is specified and is
-dnl 'need-formatstring-macros', then GNU gettext implementations that don't
-dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
-dnl INTLDIR is used to find the intl libraries. If empty,
-dnl the value `$(top_builddir)/intl/' is used.
-dnl
-dnl The result of the configuration is one of three cases:
-dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
-dnl and used.
-dnl Catalog format: GNU --> install in $(datadir)
-dnl Catalog extension: .mo after installation, .gmo in source tree
-dnl 2) GNU gettext has been found in the system's C library.
-dnl Catalog format: GNU --> install in $(datadir)
-dnl Catalog extension: .mo after installation, .gmo in source tree
-dnl 3) No internationalization, always use English msgid.
-dnl Catalog format: none
-dnl Catalog extension: none
-dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur.
-dnl The use of .gmo is historical (it was needed to avoid overwriting the
-dnl GNU format catalogs when building on a platform with an X/Open gettext),
-dnl but we keep it in order not to force irrelevant filename changes on the
-dnl maintainers.
-dnl
-AC_DEFUN([AM_GNU_GETTEXT],
-[
- dnl Argument checking.
- ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
- [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
-])])])])])
- ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
- [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
-])])])])
- define(gt_included_intl, ifelse([$1], [external], [no], [yes]))
- define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], []))
-
- AC_REQUIRE([AM_PO_SUBDIRS])dnl
- ifelse(gt_included_intl, yes, [
- AC_REQUIRE([AM_INTL_SUBDIR])dnl
- ])
-
- dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
- AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
- AC_REQUIRE([AC_LIB_RPATH])
-
- dnl Sometimes libintl requires libiconv, so first search for libiconv.
- dnl Ideally we would do this search only after the
- dnl if test "$USE_NLS" = "yes"; then
- dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then
- dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
- dnl the configure script would need to contain the same shell code
- dnl again, outside any 'if'. There are two solutions:
- dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
- dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
- dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
- dnl documented, we avoid it.
- ifelse(gt_included_intl, yes, , [
- AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
- ])
-
- dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation.
- gt_INTL_MACOSX
-
- dnl Set USE_NLS.
- AM_NLS
-
- ifelse(gt_included_intl, yes, [
- BUILD_INCLUDED_LIBINTL=no
- USE_INCLUDED_LIBINTL=no
- ])
- LIBINTL=
- LTLIBINTL=
- POSUB=
-
- dnl If we use NLS figure out what method
- if test "$USE_NLS" = "yes"; then
- gt_use_preinstalled_gnugettext=no
- ifelse(gt_included_intl, yes, [
- AC_MSG_CHECKING([whether included gettext is requested])
- AC_ARG_WITH(included-gettext,
- [ --with-included-gettext use the GNU gettext library included here],
- nls_cv_force_use_gnu_gettext=$withval,
- nls_cv_force_use_gnu_gettext=no)
- AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
-
- nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
- if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
- ])
- dnl User does not insist on using GNU NLS library. Figure out what
- dnl to use. If GNU gettext is available we use this. Else we have
- dnl to fall back to GNU NLS library.
-
- dnl Add a version number to the cache macros.
- define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1)))
- define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc])
- define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl])
-
- AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc,
- [AC_TRY_LINK([#include <libintl.h>
-]ifelse([$2], [need-formatstring-macros],
-[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
-#endif
-changequote(,)dnl
-typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
-changequote([,])dnl
-], [])[extern int _nl_msg_cat_cntr;
-extern int *_nl_domain_bindings;],
- [bindtextdomain ("", "");
-return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings],
- gt_cv_func_gnugettext_libc=yes,
- gt_cv_func_gnugettext_libc=no)])
-
- if test "$gt_cv_func_gnugettext_libc" != "yes"; then
- dnl Sometimes libintl requires libiconv, so first search for libiconv.
- ifelse(gt_included_intl, yes, , [
- AM_ICONV_LINK
- ])
- dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
- dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
- dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
- dnl even if libiconv doesn't exist.
- AC_LIB_LINKFLAGS_BODY([intl])
- AC_CACHE_CHECK([for GNU gettext in libintl],
- gt_cv_func_gnugettext_libintl,
- [gt_save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS $INCINTL"
- gt_save_LIBS="$LIBS"
- LIBS="$LIBS $LIBINTL"
- dnl Now see whether libintl exists and does not depend on libiconv.
- AC_TRY_LINK([#include <libintl.h>
-]ifelse([$2], [need-formatstring-macros],
-[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
-#endif
-changequote(,)dnl
-typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
-changequote([,])dnl
-], [])[extern int _nl_msg_cat_cntr;
-extern
-#ifdef __cplusplus
-"C"
-#endif
-const char *_nl_expand_alias (const char *);],
- [bindtextdomain ("", "");
-return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
- gt_cv_func_gnugettext_libintl=yes,
- gt_cv_func_gnugettext_libintl=no)
- dnl Now see whether libintl exists and depends on libiconv.
- if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then
- LIBS="$LIBS $LIBICONV"
- AC_TRY_LINK([#include <libintl.h>
-]ifelse([$2], [need-formatstring-macros],
-[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
-#endif
-changequote(,)dnl
-typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
-changequote([,])dnl
-], [])[extern int _nl_msg_cat_cntr;
-extern
-#ifdef __cplusplus
-"C"
-#endif
-const char *_nl_expand_alias (const char *);],
- [bindtextdomain ("", "");
-return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
- [LIBINTL="$LIBINTL $LIBICONV"
- LTLIBINTL="$LTLIBINTL $LTLIBICONV"
- gt_cv_func_gnugettext_libintl=yes
- ])
- fi
- CPPFLAGS="$gt_save_CPPFLAGS"
- LIBS="$gt_save_LIBS"])
- fi
-
- dnl If an already present or preinstalled GNU gettext() is found,
- dnl use it. But if this macro is used in GNU gettext, and GNU
- dnl gettext is already preinstalled in libintl, we update this
- dnl libintl. (Cf. the install rule in intl/Makefile.in.)
- if test "$gt_cv_func_gnugettext_libc" = "yes" \
- || { test "$gt_cv_func_gnugettext_libintl" = "yes" \
- && test "$PACKAGE" != gettext-runtime \
- && test "$PACKAGE" != gettext-tools; }; then
- gt_use_preinstalled_gnugettext=yes
- else
- dnl Reset the values set by searching for libintl.
- LIBINTL=
- LTLIBINTL=
- INCINTL=
- fi
-
- ifelse(gt_included_intl, yes, [
- if test "$gt_use_preinstalled_gnugettext" != "yes"; then
- dnl GNU gettext is not found in the C library.
- dnl Fall back on included GNU gettext library.
- nls_cv_use_gnu_gettext=yes
- fi
- fi
-
- if test "$nls_cv_use_gnu_gettext" = "yes"; then
- dnl Mark actions used to generate GNU NLS library.
- BUILD_INCLUDED_LIBINTL=yes
- USE_INCLUDED_LIBINTL=yes
- LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV"
- LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV"
- LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
- fi
-
- if test "$gt_use_preinstalled_gnugettext" = "yes" \
- || test "$nls_cv_use_gnu_gettext" = "yes"; then
- dnl Mark actions to use GNU gettext tools.
- CATOBJEXT=.gmo
- fi
- ])
-
- if test -n "$INTL_MACOSX_LIBS"; then
- if test "$gt_use_preinstalled_gnugettext" = "yes" \
- || test "$nls_cv_use_gnu_gettext" = "yes"; then
- dnl Some extra flags are needed during linking.
- LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
- LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
- fi
- fi
-
- if test "$gt_use_preinstalled_gnugettext" = "yes" \
- || test "$nls_cv_use_gnu_gettext" = "yes"; then
- AC_DEFINE(ENABLE_NLS, 1,
- [Define to 1 if translation of program messages to the user's native language
- is requested.])
- else
- USE_NLS=no
- fi
- fi
-
- AC_MSG_CHECKING([whether to use NLS])
- AC_MSG_RESULT([$USE_NLS])
- if test "$USE_NLS" = "yes"; then
- AC_MSG_CHECKING([where the gettext function comes from])
- if test "$gt_use_preinstalled_gnugettext" = "yes"; then
- if test "$gt_cv_func_gnugettext_libintl" = "yes"; then
- gt_source="external libintl"
- else
- gt_source="libc"
- fi
- else
- gt_source="included intl directory"
- fi
- AC_MSG_RESULT([$gt_source])
- fi
-
- if test "$USE_NLS" = "yes"; then
-
- if test "$gt_use_preinstalled_gnugettext" = "yes"; then
- if test "$gt_cv_func_gnugettext_libintl" = "yes"; then
- AC_MSG_CHECKING([how to link with libintl])
- AC_MSG_RESULT([$LIBINTL])
- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
- fi
-
- dnl For backward compatibility. Some packages may be using this.
- AC_DEFINE(HAVE_GETTEXT, 1,
- [Define if the GNU gettext() function is already present or preinstalled.])
- AC_DEFINE(HAVE_DCGETTEXT, 1,
- [Define if the GNU dcgettext() function is already present or preinstalled.])
- fi
-
- dnl We need to process the po/ directory.
- POSUB=po
- fi
-
- ifelse(gt_included_intl, yes, [
- dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
- dnl to 'yes' because some of the testsuite requires it.
- if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then
- BUILD_INCLUDED_LIBINTL=yes
- fi
-
- dnl Make all variables we use known to autoconf.
- AC_SUBST(BUILD_INCLUDED_LIBINTL)
- AC_SUBST(USE_INCLUDED_LIBINTL)
- AC_SUBST(CATOBJEXT)
-
- dnl For backward compatibility. Some configure.ins may be using this.
- nls_cv_header_intl=
- nls_cv_header_libgt=
-
- dnl For backward compatibility. Some Makefiles may be using this.
- DATADIRNAME=share
- AC_SUBST(DATADIRNAME)
-
- dnl For backward compatibility. Some Makefiles may be using this.
- INSTOBJEXT=.mo
- AC_SUBST(INSTOBJEXT)
-
- dnl For backward compatibility. Some Makefiles may be using this.
- GENCAT=gencat
- AC_SUBST(GENCAT)
-
- dnl For backward compatibility. Some Makefiles may be using this.
- if test "$USE_INCLUDED_LIBINTL" = yes; then
- INTLOBJS="\$(GETTOBJS)"
- fi
- AC_SUBST(INTLOBJS)
-
- dnl Enable libtool support if the surrounding package wishes it.
- INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
- AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX)
- ])
-
- dnl For backward compatibility. Some Makefiles may be using this.
- INTLLIBS="$LIBINTL"
- AC_SUBST(INTLLIBS)
-
- dnl Make all documented variables known to autoconf.
- AC_SUBST(LIBINTL)
- AC_SUBST(LTLIBINTL)
- AC_SUBST(POSUB)
-])
-
-
-dnl Checks for all prerequisites of the intl subdirectory,
-dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS,
-dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL.
-AC_DEFUN([AM_INTL_SUBDIR],
-[
- AC_REQUIRE([AC_PROG_INSTALL])dnl
- AC_REQUIRE([AM_MKINSTALLDIRS])dnl
- AC_REQUIRE([AC_PROG_CC])dnl
- AC_REQUIRE([AC_CANONICAL_HOST])dnl
- AC_REQUIRE([gt_GLIBC2])dnl
- AC_REQUIRE([AC_PROG_RANLIB])dnl
- AC_REQUIRE([AC_ISC_POSIX])dnl
- AC_REQUIRE([AC_HEADER_STDC])dnl
- AC_REQUIRE([AC_C_CONST])dnl
- AC_REQUIRE([bh_C_SIGNED])dnl
- AC_REQUIRE([AC_C_INLINE])dnl
- AC_REQUIRE([AC_TYPE_OFF_T])dnl
- AC_REQUIRE([AC_TYPE_SIZE_T])dnl
- AC_REQUIRE([gl_AC_TYPE_LONG_LONG])dnl
- AC_REQUIRE([gt_TYPE_LONGDOUBLE])dnl
- AC_REQUIRE([gt_TYPE_WCHAR_T])dnl
- AC_REQUIRE([gt_TYPE_WINT_T])dnl
- AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
- AC_REQUIRE([gl_AC_HEADER_STDINT_H])
- AC_REQUIRE([gt_TYPE_INTMAX_T])
- AC_REQUIRE([gt_PRINTF_POSIX])
- AC_REQUIRE([AC_FUNC_ALLOCA])dnl
- AC_REQUIRE([AC_FUNC_MMAP])dnl
- AC_REQUIRE([gl_GLIBC21])dnl
- AC_REQUIRE([gt_INTDIV0])dnl
- AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl
- AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl
- AC_REQUIRE([gt_INTTYPES_PRI])dnl
- AC_REQUIRE([gl_XSIZE])dnl
- AC_REQUIRE([gt_INTL_MACOSX])dnl
-
- AC_CHECK_TYPE([ptrdiff_t], ,
- [AC_DEFINE([ptrdiff_t], [long],
- [Define as the type of the result of subtracting two pointers, if the system doesn't define it.])
- ])
- AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \
-stdlib.h string.h unistd.h sys/param.h])
- AC_CHECK_FUNCS([asprintf fwprintf getcwd getegid geteuid getgid getuid \
-mempcpy munmap putenv setenv setlocale snprintf stpcpy strcasecmp strdup \
-strtoul tsearch wcslen __argz_count __argz_stringify __argz_next \
-__fsetlocking])
-
- dnl Use the _snprintf function only if it is declared (because on NetBSD it
- dnl is defined as a weak alias of snprintf; we prefer to use the latter).
- gt_CHECK_DECL(_snprintf, [#include <stdio.h>])
- gt_CHECK_DECL(_snwprintf, [#include <stdio.h>])
-
- dnl Use the *_unlocked functions only if they are declared.
- dnl (because some of them were defined without being declared in Solaris
- dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
- dnl on Solaris 2.5.1 to run on Solaris 2.6).
- dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13.
- gt_CHECK_DECL(feof_unlocked, [#include <stdio.h>])
- gt_CHECK_DECL(fgets_unlocked, [#include <stdio.h>])
- gt_CHECK_DECL(getc_unlocked, [#include <stdio.h>])
-
- case $gt_cv_func_printf_posix in
- *yes) HAVE_POSIX_PRINTF=1 ;;
- *) HAVE_POSIX_PRINTF=0 ;;
- esac
- AC_SUBST([HAVE_POSIX_PRINTF])
- if test "$ac_cv_func_asprintf" = yes; then
- HAVE_ASPRINTF=1
- else
- HAVE_ASPRINTF=0
- fi
- AC_SUBST([HAVE_ASPRINTF])
- if test "$ac_cv_func_snprintf" = yes; then
- HAVE_SNPRINTF=1
- else
- HAVE_SNPRINTF=0
- fi
- AC_SUBST([HAVE_SNPRINTF])
- if test "$ac_cv_func_wprintf" = yes; then
- HAVE_WPRINTF=1
- else
- HAVE_WPRINTF=0
- fi
- AC_SUBST([HAVE_WPRINTF])
-
- AM_ICONV
- AM_LANGINFO_CODESET
- if test $ac_cv_header_locale_h = yes; then
- gt_LC_MESSAGES
- fi
-
- if test -n "$INTL_MACOSX_LIBS"; then
- CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers"
- fi
-
- dnl intl/plural.c is generated from intl/plural.y. It requires bison,
- dnl because plural.y uses bison specific features. It requires at least
- dnl bison-1.26 because earlier versions generate a plural.c that doesn't
- dnl compile.
- dnl bison is only needed for the maintainer (who touches plural.y). But in
- dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
- dnl the rule in general Makefile. Now, some people carelessly touch the
- dnl files or have a broken "make" program, hence the plural.c rule will
- dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
- dnl present or too old.
- AC_CHECK_PROGS([INTLBISON], [bison])
- if test -z "$INTLBISON"; then
- ac_verc_fail=yes
- else
- dnl Found it, now check the version.
- AC_MSG_CHECKING([version of bison])
-changequote(<<,>>)dnl
- ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
- case $ac_prog_version in
- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
-changequote([,])dnl
- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
- esac
- AC_MSG_RESULT([$ac_prog_version])
- fi
- if test $ac_verc_fail = yes; then
- INTLBISON=:
- fi
-])
-
-
-dnl Checks for special options needed on MacOS X.
-dnl Defines INTL_MACOSX_LIBS.
-AC_DEFUN([gt_INTL_MACOSX],
-[
- dnl Check for API introduced in MacOS X 10.2.
- AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
- gt_cv_func_CFPreferencesCopyAppValue,
- [gt_save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers"
- gt_save_LIBS="$LIBS"
- LIBS="$LIBS -framework CoreFoundation"
- AC_TRY_LINK([#include <CFPreferences.h>],
- [CFPreferencesCopyAppValue(NULL, NULL)],
- [gt_cv_func_CFPreferencesCopyAppValue=yes],
- [gt_cv_func_CFPreferencesCopyAppValue=no])
- CPPFLAGS="$gt_save_CPPFLAGS"
- LIBS="$gt_save_LIBS"])
- if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
- AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], 1,
- [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
- fi
- dnl Check for API introduced in MacOS X 10.3.
- AC_CACHE_CHECK([for CFLocaleCopyCurrent], gt_cv_func_CFLocaleCopyCurrent,
- [gt_save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers"
- gt_save_LIBS="$LIBS"
- LIBS="$LIBS -framework CoreFoundation"
- AC_TRY_LINK([#include <CFLocale.h>], [CFLocaleCopyCurrent();],
- [gt_cv_func_CFLocaleCopyCurrent=yes],
- [gt_cv_func_CFLocaleCopyCurrent=no])
- CPPFLAGS="$gt_save_CPPFLAGS"
- LIBS="$gt_save_LIBS"])
- if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
- AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], 1,
- [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
- fi
- INTL_MACOSX_LIBS=
- if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
- INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
- fi
- AC_SUBST([INTL_MACOSX_LIBS])
-])
-
-
-dnl gt_CHECK_DECL(FUNC, INCLUDES)
-dnl Check whether a function is declared.
-AC_DEFUN([gt_CHECK_DECL],
-[
- AC_CACHE_CHECK([whether $1 is declared], ac_cv_have_decl_$1,
- [AC_TRY_COMPILE([$2], [
-#ifndef $1
- char *p = (char *) $1;
-#endif
-], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)])
- if test $ac_cv_have_decl_$1 = yes; then
- gt_value=1
- else
- gt_value=0
- fi
- AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value],
- [Define to 1 if you have the declaration of `$1', and to 0 if you don't.])
-])
-
-
-dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
-AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
-# glibc2.m4 serial 1
-dnl Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-# Test for the GNU C Library, version 2.0 or newer.
-# From Bruno Haible.
-
-AC_DEFUN([gt_GLIBC2],
- [
- AC_CACHE_CHECK(whether we are using the GNU C Library 2 or newer,
- ac_cv_gnu_library_2,
- [AC_EGREP_CPP([Lucky GNU user],
- [
-#include <features.h>
-#ifdef __GNU_LIBRARY__
- #if (__GLIBC__ >= 2)
- Lucky GNU user
- #endif
-#endif
- ],
- ac_cv_gnu_library_2=yes,
- ac_cv_gnu_library_2=no)
- ]
- )
- AC_SUBST(GLIBC2)
- GLIBC2="$ac_cv_gnu_library_2"
- ]
-)
-# glibc21.m4 serial 3
-dnl Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-# Test for the GNU C Library, version 2.1 or newer.
-# From Bruno Haible.
-
-AC_DEFUN([gl_GLIBC21],
- [
- AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer,
- ac_cv_gnu_library_2_1,
- [AC_EGREP_CPP([Lucky GNU user],
- [
-#include <features.h>
-#ifdef __GNU_LIBRARY__
- #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
- Lucky GNU user
- #endif
-#endif
- ],
- ac_cv_gnu_library_2_1=yes,
- ac_cv_gnu_library_2_1=no)
- ]
- )
- AC_SUBST(GLIBC21)
- GLIBC21="$ac_cv_gnu_library_2_1"
- ]
-)
-# iconv.m4 serial AM4 (gettext-0.11.3)
-dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible.
-
-AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
-[
- dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
- AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
- AC_REQUIRE([AC_LIB_RPATH])
-
- dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
- dnl accordingly.
- AC_LIB_LINKFLAGS_BODY([iconv])
-])
-
-AC_DEFUN([AM_ICONV_LINK],
-[
- dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
- dnl those with the standalone portable GNU libiconv installed).
-
- dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
- dnl accordingly.
- AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
-
- dnl Add $INCICONV to CPPFLAGS before performing the following checks,
- dnl because if the user has installed libiconv and not disabled its use
- dnl via --without-libiconv-prefix, he wants to use it. The first
- dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
- am_save_CPPFLAGS="$CPPFLAGS"
- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
-
- AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [
- am_cv_func_iconv="no, consider installing GNU libiconv"
- am_cv_lib_iconv=no
- AC_TRY_LINK([#include <stdlib.h>
-#include <iconv.h>],
- [iconv_t cd = iconv_open("","");
- iconv(cd,NULL,NULL,NULL,NULL);
- iconv_close(cd);],
- am_cv_func_iconv=yes)
- if test "$am_cv_func_iconv" != yes; then
- am_save_LIBS="$LIBS"
- LIBS="$LIBS $LIBICONV"
- AC_TRY_LINK([#include <stdlib.h>
-#include <iconv.h>],
- [iconv_t cd = iconv_open("","");
- iconv(cd,NULL,NULL,NULL,NULL);
- iconv_close(cd);],
- am_cv_lib_iconv=yes
- am_cv_func_iconv=yes)
- LIBS="$am_save_LIBS"
- fi
- ])
- if test "$am_cv_func_iconv" = yes; then
- AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
- fi
- if test "$am_cv_lib_iconv" = yes; then
- AC_MSG_CHECKING([how to link with libiconv])
- AC_MSG_RESULT([$LIBICONV])
- else
- dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
- dnl either.
- CPPFLAGS="$am_save_CPPFLAGS"
- LIBICONV=
- LTLIBICONV=
- fi
- AC_SUBST(LIBICONV)
- AC_SUBST(LTLIBICONV)
-])
-
-AC_DEFUN([AM_ICONV],
-[
- AM_ICONV_LINK
- if test "$am_cv_func_iconv" = yes; then
- AC_MSG_CHECKING([for iconv declaration])
- AC_CACHE_VAL(am_cv_proto_iconv, [
- AC_TRY_COMPILE([
-#include <stdlib.h>
-#include <iconv.h>
-extern
-#ifdef __cplusplus
-"C"
-#endif
-#if defined(__STDC__) || defined(__cplusplus)
-size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
-#else
-size_t iconv();
-#endif
-], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
- am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
- am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
- AC_MSG_RESULT([$]{ac_t:-
- }[$]am_cv_proto_iconv)
- AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
- [Define as const if the declaration of iconv() needs const.])
- fi
-])
-# intdiv0.m4 serial 1 (gettext-0.11.3)
-dnl Copyright (C) 2002 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible.
-
-AC_DEFUN([gt_INTDIV0],
-[
- AC_REQUIRE([AC_PROG_CC])dnl
- AC_REQUIRE([AC_CANONICAL_HOST])dnl
-
- AC_CACHE_CHECK([whether integer division by zero raises SIGFPE],
- gt_cv_int_divbyzero_sigfpe,
- [
- AC_TRY_RUN([
-#include <stdlib.h>
-#include <signal.h>
-
-static void
-#ifdef __cplusplus
-sigfpe_handler (int sig)
-#else
-sigfpe_handler (sig) int sig;
-#endif
-{
- /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */
- exit (sig != SIGFPE);
-}
-
-int x = 1;
-int y = 0;
-int z;
-int nan;
-
-int main ()
-{
- signal (SIGFPE, sigfpe_handler);
-/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */
-#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP)
- signal (SIGTRAP, sigfpe_handler);
-#endif
-/* Linux/SPARC yields signal SIGILL. */
-#if defined (__sparc__) && defined (__linux__)
- signal (SIGILL, sigfpe_handler);
-#endif
-
- z = x / y;
- nan = y / y;
- exit (1);
-}
-], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no,
- [
- # Guess based on the CPU.
- case "$host_cpu" in
- alpha* | i[34567]86 | m68k | s390*)
- gt_cv_int_divbyzero_sigfpe="guessing yes";;
- *)
- gt_cv_int_divbyzero_sigfpe="guessing no";;
- esac
- ])
- ])
- case "$gt_cv_int_divbyzero_sigfpe" in
- *yes) value=1;;
- *) value=0;;
- esac
- AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value,
- [Define if integer division by zero raises signal SIGFPE.])
-])
-# intmax.m4 serial 2 (gettext-0.14.2)
-dnl Copyright (C) 2002-2005 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible.
-dnl Test whether the system has the 'intmax_t' type, but don't attempt to
-dnl find a replacement if it is lacking.
-
-AC_DEFUN([gt_TYPE_INTMAX_T],
-[
- AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
- AC_REQUIRE([gl_AC_HEADER_STDINT_H])
- AC_CACHE_CHECK(for intmax_t, gt_cv_c_intmax_t,
- [AC_TRY_COMPILE([
-#include <stddef.h>
-#include <stdlib.h>
-#if HAVE_STDINT_H_WITH_UINTMAX
-#include <stdint.h>
-#endif
-#if HAVE_INTTYPES_H_WITH_UINTMAX
-#include <inttypes.h>
-#endif
-], [intmax_t x = -1;], gt_cv_c_intmax_t=yes, gt_cv_c_intmax_t=no)])
- if test $gt_cv_c_intmax_t = yes; then
- AC_DEFINE(HAVE_INTMAX_T, 1,
- [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
- fi
-])
-# inttypes.m4 serial 1 (gettext-0.11.4)
-dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Paul Eggert.
-
-# Define HAVE_INTTYPES_H if <inttypes.h> exists and doesn't clash with
-# <sys/types.h>.
-
-AC_DEFUN([gt_HEADER_INTTYPES_H],
-[
- AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h,
- [
- AC_TRY_COMPILE(
- [#include <sys/types.h>
-#include <inttypes.h>],
- [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no)
- ])
- if test $gt_cv_header_inttypes_h = yes; then
- AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1,
- [Define if <inttypes.h> exists and doesn't clash with <sys/types.h>.])
- fi
-])
-# inttypes_h.m4 serial 6
-dnl Copyright (C) 1997-2004 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Paul Eggert.
-
-# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists,
-# doesn't clash with <sys/types.h>, and declares uintmax_t.
-
-AC_DEFUN([gl_AC_HEADER_INTTYPES_H],
-[
- AC_CACHE_CHECK([for inttypes.h], gl_cv_header_inttypes_h,
- [AC_TRY_COMPILE(
- [#include <sys/types.h>
-#include <inttypes.h>],
- [uintmax_t i = (uintmax_t) -1;],
- gl_cv_header_inttypes_h=yes,
- gl_cv_header_inttypes_h=no)])
- if test $gl_cv_header_inttypes_h = yes; then
- AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1,
- [Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
- and declares uintmax_t. ])
- fi
-])
-# inttypes-pri.m4 serial 1 (gettext-0.11.4)
-dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible.
-
-# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI*
-# macros to non-string values. This is the case on AIX 4.3.3.
-
-AC_DEFUN([gt_INTTYPES_PRI],
-[
- AC_REQUIRE([gt_HEADER_INTTYPES_H])
- if test $gt_cv_header_inttypes_h = yes; then
- AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken],
- gt_cv_inttypes_pri_broken,
- [
- AC_TRY_COMPILE([#include <inttypes.h>
-#ifdef PRId32
-char *p = PRId32;
-#endif
-], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes)
- ])
- fi
- if test "$gt_cv_inttypes_pri_broken" = yes; then
- AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1,
- [Define if <inttypes.h> exists and defines unusable PRI* macros.])
- fi
-])
-# isc-posix.m4 serial 2 (gettext-0.11.2)
-dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-# This file is not needed with autoconf-2.53 and newer. Remove it in 2005.
-
-# This test replaces the one in autoconf.
-# Currently this macro should have the same name as the autoconf macro
-# because gettext's gettext.m4 (distributed in the automake package)
-# still uses it. Otherwise, the use in gettext.m4 makes autoheader
-# give these diagnostics:
-# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX
-# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX
-
-undefine([AC_ISC_POSIX])
-
-AC_DEFUN([AC_ISC_POSIX],
- [
- dnl This test replaces the obsolescent AC_ISC_POSIX kludge.
- AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"])
- ]
-)
-# lcmessage.m4 serial 4 (gettext-0.14.2)
-dnl Copyright (C) 1995-2002, 2004-2005 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
-dnl They are *not* in the public domain.
-
-dnl Authors:
-dnl Ulrich Drepper <drepper@cygnus.com>, 1995.
-
-# Check whether LC_MESSAGES is available in <locale.h>.
-
-AC_DEFUN([gt_LC_MESSAGES],
-[
- AC_CACHE_CHECK([for LC_MESSAGES], gt_cv_val_LC_MESSAGES,
- [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
- gt_cv_val_LC_MESSAGES=yes, gt_cv_val_LC_MESSAGES=no)])
- if test $gt_cv_val_LC_MESSAGES = yes; then
- AC_DEFINE(HAVE_LC_MESSAGES, 1,
- [Define if your <locale.h> file defines LC_MESSAGES.])
- fi
-])
-# lib-ld.m4 serial 3 (gettext-0.13)
-dnl Copyright (C) 1996-2003 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl Subroutines of libtool.m4,
-dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
-dnl with libtool.m4.
-
-dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
-AC_DEFUN([AC_LIB_PROG_LD_GNU],
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
-[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
- acl_cv_prog_gnu_ld=yes ;;
-*)
- acl_cv_prog_gnu_ld=no ;;
-esac])
-with_gnu_ld=$acl_cv_prog_gnu_ld
-])
-
-dnl From libtool-1.4. Sets the variable LD.
-AC_DEFUN([AC_LIB_PROG_LD],
-[AC_ARG_WITH(gnu-ld,
-[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
-test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-# Prepare PATH_SEPARATOR.
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
-fi
-ac_prog=ld
-if test "$GCC" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
- AC_MSG_CHECKING([for ld used by GCC])
- case $host in
- *-*-mingw*)
- # gcc leaves a trailing carriage return which upsets mingw
- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
- *)
- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
- esac
- case $ac_prog in
- # Accept absolute paths.
- [[\\/]* | [A-Za-z]:[\\/]*)]
- [re_direlt='/[^/][^/]*/\.\./']
- # Canonicalize the path of ld
- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
- done
- test -z "$LD" && LD="$ac_prog"
- ;;
- "")
- # If it fails, then pretend we aren't using GCC.
- ac_prog=ld
- ;;
- *)
- # If it is relative, then search for the first ld in PATH.
- with_gnu_ld=unknown
- ;;
- esac
-elif test "$with_gnu_ld" = yes; then
- AC_MSG_CHECKING([for GNU ld])
-else
- AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL(acl_cv_path_LD,
-[if test -z "$LD"; then
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
- for ac_dir in $PATH; do
- test -z "$ac_dir" && ac_dir=.
- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- acl_cv_path_LD="$ac_dir/$ac_prog"
- # Check to see if the program is GNU ld. I'd rather use --version,
- # but apparently some GNU ld's only accept -v.
- # Break only if it was the GNU/non-GNU ld that we prefer.
- case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
- *GNU* | *'with BFD'*)
- test "$with_gnu_ld" != no && break ;;
- *)
- test "$with_gnu_ld" != yes && break ;;
- esac
- fi
- done
- IFS="$ac_save_ifs"
-else
- acl_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$acl_cv_path_LD"
-if test -n "$LD"; then
- AC_MSG_RESULT($LD)
-else
- AC_MSG_RESULT(no)
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-AC_LIB_PROG_LD_GNU
-])
-# lib-link.m4 serial 5 (gettext-0.14.2)
-dnl Copyright (C) 2001-2005 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible.
-dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
-dnl the libraries corresponding to explicit and implicit dependencies.
-dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
-dnl augments the CPPFLAGS variable.
-AC_DEFUN([AC_LIB_LINKFLAGS],
-[
- AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
- AC_REQUIRE([AC_LIB_RPATH])
- define([Name],[translit([$1],[./-], [___])])
- define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
- AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
- AC_LIB_LINKFLAGS_BODY([$1], [$2])
- ac_cv_lib[]Name[]_libs="$LIB[]NAME"
- ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
- ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
- ])
- LIB[]NAME="$ac_cv_lib[]Name[]_libs"
- LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
- INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
- AC_SUBST([LIB]NAME)
- AC_SUBST([LTLIB]NAME)
- dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
- dnl results of this search when this library appears as a dependency.
- HAVE_LIB[]NAME=yes
- undefine([Name])
- undefine([NAME])
-])
-
-dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
-dnl searches for libname and the libraries corresponding to explicit and
-dnl implicit dependencies, together with the specified include files and
-dnl the ability to compile and link the specified testcode. If found, it
-dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
-dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
-dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
-dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
-AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
-[
- AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
- AC_REQUIRE([AC_LIB_RPATH])
- define([Name],[translit([$1],[./-], [___])])
- define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
-
- dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
- dnl accordingly.
- AC_LIB_LINKFLAGS_BODY([$1], [$2])
-
- dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
- dnl because if the user has installed lib[]Name and not disabled its use
- dnl via --without-lib[]Name-prefix, he wants to use it.
- ac_save_CPPFLAGS="$CPPFLAGS"
- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
-
- AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
- ac_save_LIBS="$LIBS"
- LIBS="$LIBS $LIB[]NAME"
- AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
- LIBS="$ac_save_LIBS"
- ])
- if test "$ac_cv_lib[]Name" = yes; then
- HAVE_LIB[]NAME=yes
- AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
- AC_MSG_CHECKING([how to link with lib[]$1])
- AC_MSG_RESULT([$LIB[]NAME])
- else
- HAVE_LIB[]NAME=no
- dnl If $LIB[]NAME didn't lead to a usable library, we don't need
- dnl $INC[]NAME either.
- CPPFLAGS="$ac_save_CPPFLAGS"
- LIB[]NAME=
- LTLIB[]NAME=
- fi
- AC_SUBST([HAVE_LIB]NAME)
- AC_SUBST([LIB]NAME)
- AC_SUBST([LTLIB]NAME)
- undefine([Name])
- undefine([NAME])
-])
-
-dnl Determine the platform dependent parameters needed to use rpath:
-dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator,
-dnl hardcode_direct, hardcode_minus_L.
-AC_DEFUN([AC_LIB_RPATH],
-[
- AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
- AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
- AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
- AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
- AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [
- CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
- ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
- . ./conftest.sh
- rm -f ./conftest.sh
- acl_cv_rpath=done
- ])
- wl="$acl_cv_wl"
- libext="$acl_cv_libext"
- shlibext="$acl_cv_shlibext"
- hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
- hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
- hardcode_direct="$acl_cv_hardcode_direct"
- hardcode_minus_L="$acl_cv_hardcode_minus_L"
- dnl Determine whether the user wants rpath handling at all.
- AC_ARG_ENABLE(rpath,
- [ --disable-rpath do not hardcode runtime library paths],
- :, enable_rpath=yes)
-])
-
-dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
-dnl the libraries corresponding to explicit and implicit dependencies.
-dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
-AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
-[
- define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
- dnl By default, look in $includedir and $libdir.
- use_additional=yes
- AC_LIB_WITH_FINAL_PREFIX([
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
- ])
- AC_LIB_ARG_WITH([lib$1-prefix],
-[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib
- --without-lib$1-prefix don't search for lib$1 in includedir and libdir],
-[
- if test "X$withval" = "Xno"; then
- use_additional=no
- else
- if test "X$withval" = "X"; then
- AC_LIB_WITH_FINAL_PREFIX([
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
- ])
- else
- additional_includedir="$withval/include"
- additional_libdir="$withval/lib"
- fi
- fi
-])
- dnl Search the library and its dependencies in $additional_libdir and
- dnl $LDFLAGS. Using breadth-first-seach.
- LIB[]NAME=
- LTLIB[]NAME=
- INC[]NAME=
- rpathdirs=
- ltrpathdirs=
- names_already_handled=
- names_next_round='$1 $2'
- while test -n "$names_next_round"; do
- names_this_round="$names_next_round"
- names_next_round=
- for name in $names_this_round; do
- already_handled=
- for n in $names_already_handled; do
- if test "$n" = "$name"; then
- already_handled=yes
- break
- fi
- done
- if test -z "$already_handled"; then
- names_already_handled="$names_already_handled $name"
- dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
- dnl or AC_LIB_HAVE_LINKFLAGS call.
- uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
- eval value=\"\$HAVE_LIB$uppername\"
- if test -n "$value"; then
- if test "$value" = yes; then
- eval value=\"\$LIB$uppername\"
- test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
- eval value=\"\$LTLIB$uppername\"
- test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
- else
- dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
- dnl that this library doesn't exist. So just drop it.
- :
- fi
- else
- dnl Search the library lib$name in $additional_libdir and $LDFLAGS
- dnl and the already constructed $LIBNAME/$LTLIBNAME.
- found_dir=
- found_la=
- found_so=
- found_a=
- if test $use_additional = yes; then
- if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
- found_dir="$additional_libdir"
- found_so="$additional_libdir/lib$name.$shlibext"
- if test -f "$additional_libdir/lib$name.la"; then
- found_la="$additional_libdir/lib$name.la"
- fi
- else
- if test -f "$additional_libdir/lib$name.$libext"; then
- found_dir="$additional_libdir"
- found_a="$additional_libdir/lib$name.$libext"
- if test -f "$additional_libdir/lib$name.la"; then
- found_la="$additional_libdir/lib$name.la"
- fi
- fi
- fi
- fi
- if test "X$found_dir" = "X"; then
- for x in $LDFLAGS $LTLIB[]NAME; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- case "$x" in
- -L*)
- dir=`echo "X$x" | sed -e 's/^X-L//'`
- if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
- found_dir="$dir"
- found_so="$dir/lib$name.$shlibext"
- if test -f "$dir/lib$name.la"; then
- found_la="$dir/lib$name.la"
- fi
- else
- if test -f "$dir/lib$name.$libext"; then
- found_dir="$dir"
- found_a="$dir/lib$name.$libext"
- if test -f "$dir/lib$name.la"; then
- found_la="$dir/lib$name.la"
- fi
- fi
- fi
- ;;
- esac
- if test "X$found_dir" != "X"; then
- break
- fi
- done
- fi
- if test "X$found_dir" != "X"; then
- dnl Found the library.
- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
- if test "X$found_so" != "X"; then
- dnl Linking with a shared library. We attempt to hardcode its
- dnl directory into the executable's runpath, unless it's the
- dnl standard /usr/lib.
- if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
- dnl No hardcoding is needed.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
- else
- dnl Use an explicit option to hardcode DIR into the resulting
- dnl binary.
- dnl Potentially add DIR to ltrpathdirs.
- dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $found_dir"
- fi
- dnl The hardcoding into $LIBNAME is system dependent.
- if test "$hardcode_direct" = yes; then
- dnl Using DIR/libNAME.so during linking hardcodes DIR into the
- dnl resulting binary.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
- else
- if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
- dnl Use an explicit option to hardcode DIR into the resulting
- dnl binary.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
- dnl Potentially add DIR to rpathdirs.
- dnl The rpathdirs will be appended to $LIBNAME at the end.
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $found_dir"
- fi
- else
- dnl Rely on "-L$found_dir".
- dnl But don't add it if it's already contained in the LDFLAGS
- dnl or the already constructed $LIBNAME
- haveit=
- for x in $LDFLAGS $LIB[]NAME; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-L$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
- fi
- if test "$hardcode_minus_L" != no; then
- dnl FIXME: Not sure whether we should use
- dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
- dnl here.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
- else
- dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH
- dnl here, because this doesn't fit in flags passed to the
- dnl compiler. So give up. No hardcoding. This affects only
- dnl very old systems.
- dnl FIXME: Not sure whether we should use
- dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
- dnl here.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
- fi
- fi
- fi
- fi
- else
- if test "X$found_a" != "X"; then
- dnl Linking with a static library.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
- else
- dnl We shouldn't come here, but anyway it's good to have a
- dnl fallback.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
- fi
- fi
- dnl Assume the include files are nearby.
- additional_includedir=
- case "$found_dir" in
- */lib | */lib/)
- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
- additional_includedir="$basedir/include"
- ;;
- esac
- if test "X$additional_includedir" != "X"; then
- dnl Potentially add $additional_includedir to $INCNAME.
- dnl But don't add it
- dnl 1. if it's the standard /usr/include,
- dnl 2. if it's /usr/local/include and we are using GCC on Linux,
- dnl 3. if it's already present in $CPPFLAGS or the already
- dnl constructed $INCNAME,
- dnl 4. if it doesn't exist as a directory.
- if test "X$additional_includedir" != "X/usr/include"; then
- haveit=
- if test "X$additional_includedir" = "X/usr/local/include"; then
- if test -n "$GCC"; then
- case $host_os in
- linux* | gnu* | k*bsd*-gnu) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- for x in $CPPFLAGS $INC[]NAME; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-I$additional_includedir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_includedir"; then
- dnl Really add $additional_includedir to $INCNAME.
- INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
- fi
- fi
- fi
- fi
- fi
- dnl Look for dependencies.
- if test -n "$found_la"; then
- dnl Read the .la file. It defines the variables
- dnl dlname, library_names, old_library, dependency_libs, current,
- dnl age, revision, installed, dlopen, dlpreopen, libdir.
- save_libdir="$libdir"
- case "$found_la" in
- */* | *\\*) . "$found_la" ;;
- *) . "./$found_la" ;;
- esac
- libdir="$save_libdir"
- dnl We use only dependency_libs.
- for dep in $dependency_libs; do
- case "$dep" in
- -L*)
- additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
- dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
- dnl But don't add it
- dnl 1. if it's the standard /usr/lib,
- dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
- dnl 3. if it's already present in $LDFLAGS or the already
- dnl constructed $LIBNAME,
- dnl 4. if it doesn't exist as a directory.
- if test "X$additional_libdir" != "X/usr/lib"; then
- haveit=
- if test "X$additional_libdir" = "X/usr/local/lib"; then
- if test -n "$GCC"; then
- case $host_os in
- linux* | gnu* | k*bsd*-gnu) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- haveit=
- for x in $LDFLAGS $LIB[]NAME; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- dnl Really add $additional_libdir to $LIBNAME.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
- fi
- fi
- haveit=
- for x in $LDFLAGS $LTLIB[]NAME; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- dnl Really add $additional_libdir to $LTLIBNAME.
- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
- fi
- fi
- fi
- fi
- ;;
- -R*)
- dir=`echo "X$dep" | sed -e 's/^X-R//'`
- if test "$enable_rpath" != no; then
- dnl Potentially add DIR to rpathdirs.
- dnl The rpathdirs will be appended to $LIBNAME at the end.
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $dir"
- fi
- dnl Potentially add DIR to ltrpathdirs.
- dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $dir"
- fi
- fi
- ;;
- -l*)
- dnl Handle this in the next round.
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
- ;;
- *.la)
- dnl Handle this in the next round. Throw away the .la's
- dnl directory; it is already contained in a preceding -L
- dnl option.
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
- ;;
- *)
- dnl Most likely an immediate library name.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
- ;;
- esac
- done
- fi
- else
- dnl Didn't find the library; assume it is in the system directories
- dnl known to the linker and runtime loader. (All the system
- dnl directories known to the linker should also be known to the
- dnl runtime loader, otherwise the system is severely misconfigured.)
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
- fi
- fi
- fi
- done
- done
- if test "X$rpathdirs" != "X"; then
- if test -n "$hardcode_libdir_separator"; then
- dnl Weird platform: only the last -rpath option counts, the user must
- dnl pass all path elements in one option. We can arrange that for a
- dnl single library, but not when more than one $LIBNAMEs are used.
- alldirs=
- for found_dir in $rpathdirs; do
- alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
- done
- dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl.
- acl_save_libdir="$libdir"
- libdir="$alldirs"
- eval flag=\"$hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
- else
- dnl The -rpath options are cumulative.
- for found_dir in $rpathdirs; do
- acl_save_libdir="$libdir"
- libdir="$found_dir"
- eval flag=\"$hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
- done
- fi
- fi
- if test "X$ltrpathdirs" != "X"; then
- dnl When using libtool, the option that works for both libraries and
- dnl executables is -R. The -R options are cumulative.
- for found_dir in $ltrpathdirs; do
- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
- done
- fi
-])
-
-dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
-dnl unless already present in VAR.
-dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
-dnl contains two or three consecutive elements that belong together.
-AC_DEFUN([AC_LIB_APPENDTOVAR],
-[
- for element in [$2]; do
- haveit=
- for x in $[$1]; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X$element"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- [$1]="${[$1]}${[$1]:+ }$element"
- fi
- done
-])
-# lib-prefix.m4 serial 4 (gettext-0.14.2)
-dnl Copyright (C) 2001-2005 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible.
-
-dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
-dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
-dnl require excessive bracketing.
-ifdef([AC_HELP_STRING],
-[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
-[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
-
-dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
-dnl to access previously installed libraries. The basic assumption is that
-dnl a user will want packages to use other packages he previously installed
-dnl with the same --prefix option.
-dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
-dnl libraries, but is otherwise very convenient.
-AC_DEFUN([AC_LIB_PREFIX],
-[
- AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
- AC_REQUIRE([AC_PROG_CC])
- AC_REQUIRE([AC_CANONICAL_HOST])
- AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
- dnl By default, look in $includedir and $libdir.
- use_additional=yes
- AC_LIB_WITH_FINAL_PREFIX([
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
- ])
- AC_LIB_ARG_WITH([lib-prefix],
-[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
- --without-lib-prefix don't search for libraries in includedir and libdir],
-[
- if test "X$withval" = "Xno"; then
- use_additional=no
- else
- if test "X$withval" = "X"; then
- AC_LIB_WITH_FINAL_PREFIX([
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
- ])
- else
- additional_includedir="$withval/include"
- additional_libdir="$withval/lib"
- fi
- fi
-])
- if test $use_additional = yes; then
- dnl Potentially add $additional_includedir to $CPPFLAGS.
- dnl But don't add it
- dnl 1. if it's the standard /usr/include,
- dnl 2. if it's already present in $CPPFLAGS,
- dnl 3. if it's /usr/local/include and we are using GCC on Linux,
- dnl 4. if it doesn't exist as a directory.
- if test "X$additional_includedir" != "X/usr/include"; then
- haveit=
- for x in $CPPFLAGS; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-I$additional_includedir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test "X$additional_includedir" = "X/usr/local/include"; then
- if test -n "$GCC"; then
- case $host_os in
- linux* | gnu* | k*bsd*-gnu) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- if test -d "$additional_includedir"; then
- dnl Really add $additional_includedir to $CPPFLAGS.
- CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
- fi
- fi
- fi
- fi
- dnl Potentially add $additional_libdir to $LDFLAGS.
- dnl But don't add it
- dnl 1. if it's the standard /usr/lib,
- dnl 2. if it's already present in $LDFLAGS,
- dnl 3. if it's /usr/local/lib and we are using GCC on Linux,
- dnl 4. if it doesn't exist as a directory.
- if test "X$additional_libdir" != "X/usr/lib"; then
- haveit=
- for x in $LDFLAGS; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test "X$additional_libdir" = "X/usr/local/lib"; then
- if test -n "$GCC"; then
- case $host_os in
- linux*) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- dnl Really add $additional_libdir to $LDFLAGS.
- LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
- fi
- fi
- fi
- fi
- fi
-])
-
-dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
-dnl acl_final_exec_prefix, containing the values to which $prefix and
-dnl $exec_prefix will expand at the end of the configure script.
-AC_DEFUN([AC_LIB_PREPARE_PREFIX],
-[
- dnl Unfortunately, prefix and exec_prefix get only finally determined
- dnl at the end of configure.
- if test "X$prefix" = "XNONE"; then
- acl_final_prefix="$ac_default_prefix"
- else
- acl_final_prefix="$prefix"
- fi
- if test "X$exec_prefix" = "XNONE"; then
- acl_final_exec_prefix='${prefix}'
- else
- acl_final_exec_prefix="$exec_prefix"
- fi
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
- prefix="$acl_save_prefix"
-])
-
-dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
-dnl variables prefix and exec_prefix bound to the values they will have
-dnl at the end of the configure script.
-AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
-[
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- $1
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-])
-# longdouble.m4 serial 1 (gettext-0.12)
-dnl Copyright (C) 2002-2003 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible.
-dnl Test whether the compiler supports the 'long double' type.
-dnl Prerequisite: AC_PROG_CC
-
-AC_DEFUN([gt_TYPE_LONGDOUBLE],
-[
- AC_CACHE_CHECK([for long double], gt_cv_c_long_double,
- [if test "$GCC" = yes; then
- gt_cv_c_long_double=yes
- else
- AC_TRY_COMPILE([
- /* The Stardent Vistra knows sizeof(long double), but does not support it. */
- long double foo = 0.0;
- /* On Ultrix 4.3 cc, long double is 4 and double is 8. */
- int array [2*(sizeof(long double) >= sizeof(double)) - 1];
- ], ,
- gt_cv_c_long_double=yes, gt_cv_c_long_double=no)
- fi])
- if test $gt_cv_c_long_double = yes; then
- AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the 'long double' type.])
- fi
-])
-# longlong.m4 serial 5
-dnl Copyright (C) 1999-2004 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Paul Eggert.
-
-# Define HAVE_LONG_LONG if 'long long' works.
-
-AC_DEFUN([gl_AC_TYPE_LONG_LONG],
-[
- AC_CACHE_CHECK([for long long], ac_cv_type_long_long,
- [AC_TRY_LINK([long long ll = 1LL; int i = 63;],
- [long long llmax = (long long) -1;
- return ll << i | ll >> i | llmax / ll | llmax % ll;],
- ac_cv_type_long_long=yes,
- ac_cv_type_long_long=no)])
- if test $ac_cv_type_long_long = yes; then
- AC_DEFINE(HAVE_LONG_LONG, 1,
- [Define if you have the 'long long' type.])
- fi
-])
-# nls.m4 serial 1 (gettext-0.12)
-dnl Copyright (C) 1995-2003 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
-dnl They are *not* in the public domain.
-
-dnl Authors:
-dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
-dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
-
-AC_DEFUN([AM_NLS],
-[
- AC_MSG_CHECKING([whether NLS is requested])
- dnl Default is enabled NLS
- AC_ARG_ENABLE(nls,
- [ --disable-nls do not use Native Language Support],
- USE_NLS=$enableval, USE_NLS=yes)
- AC_MSG_RESULT($USE_NLS)
- AC_SUBST(USE_NLS)
-])
-
-AC_DEFUN([AM_MKINSTALLDIRS],
-[
- dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
- dnl find the mkinstalldirs script in another subdir but $(top_srcdir).
- dnl Try to locate it.
- MKINSTALLDIRS=
- if test -n "$ac_aux_dir"; then
- case "$ac_aux_dir" in
- /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;;
- *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;;
- esac
- fi
- if test -z "$MKINSTALLDIRS"; then
- MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
- fi
- AC_SUBST(MKINSTALLDIRS)
-])
-# po.m4 serial 5 (gettext-0.14.2)
-dnl Copyright (C) 1995-2005 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
-dnl They are *not* in the public domain.
-
-dnl Authors:
-dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
-dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
-
-AC_PREREQ(2.50)
-
-dnl Checks for all prerequisites of the po subdirectory.
-AC_DEFUN([AM_PO_SUBDIRS],
-[
- AC_REQUIRE([AC_PROG_MAKE_SET])dnl
- AC_REQUIRE([AC_PROG_INSTALL])dnl
- AC_REQUIRE([AM_MKINSTALLDIRS])dnl
- AC_REQUIRE([AM_NLS])dnl
-
- dnl Perform the following tests also if --disable-nls has been given,
- dnl because they are needed for "make dist" to work.
-
- dnl Search for GNU msgfmt in the PATH.
- dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
- dnl The second test excludes FreeBSD msgfmt.
- AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
- [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
- (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
- :)
- AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
-
- dnl Search for GNU xgettext 0.12 or newer in the PATH.
- dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
- dnl The second test excludes FreeBSD xgettext.
- AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
- [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
- (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
- :)
- dnl Remove leftover from FreeBSD xgettext call.
- rm -f messages.po
-
- dnl Search for GNU msgmerge 0.11 or newer in the PATH.
- AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
- [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :)
-
- dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
- dnl Test whether we really found GNU msgfmt.
- if test "$GMSGFMT" != ":"; then
- dnl If it is no GNU msgfmt we define it as : so that the
- dnl Makefiles still can work.
- if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 &&
- (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
- : ;
- else
- GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'`
- AC_MSG_RESULT(
- [found $GMSGFMT program is not GNU msgfmt; ignore it])
- GMSGFMT=":"
- fi
- fi
-
- dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
- dnl Test whether we really found GNU xgettext.
- if test "$XGETTEXT" != ":"; then
- dnl If it is no GNU xgettext we define it as : so that the
- dnl Makefiles still can work.
- if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 &&
- (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
- : ;
- else
- AC_MSG_RESULT(
- [found xgettext program is not GNU xgettext; ignore it])
- XGETTEXT=":"
- fi
- dnl Remove leftover from FreeBSD xgettext call.
- rm -f messages.po
- fi
-
- AC_OUTPUT_COMMANDS([
- for ac_file in $CONFIG_FILES; do
- # Support "outfile[:infile[:infile...]]"
- case "$ac_file" in
- *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
- esac
- # PO directories have a Makefile.in generated from Makefile.in.in.
- case "$ac_file" in */Makefile.in)
- # Adjust a relative srcdir.
- ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
- ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
- ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
- # In autoconf-2.13 it is called $ac_given_srcdir.
- # In autoconf-2.50 it is called $srcdir.
- test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
- case "$ac_given_srcdir" in
- .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
- /*) top_srcdir="$ac_given_srcdir" ;;
- *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
- esac
- if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
- rm -f "$ac_dir/POTFILES"
- test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
- cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
- POMAKEFILEDEPS="POTFILES.in"
- # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
- # on $ac_dir but don't depend on user-specified configuration
- # parameters.
- if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
- # The LINGUAS file contains the set of available languages.
- if test -n "$OBSOLETE_ALL_LINGUAS"; then
- test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
- fi
- ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"`
- # Hide the ALL_LINGUAS assigment from automake.
- eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
- POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
- else
- # The set of available languages was given in configure.in.
- eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
- fi
- # Compute POFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
- # Compute UPDATEPOFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
- # Compute DUMMYPOFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
- # Compute GMOFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
- case "$ac_given_srcdir" in
- .) srcdirpre= ;;
- *) srcdirpre='$(srcdir)/' ;;
- esac
- POFILES=
- UPDATEPOFILES=
- DUMMYPOFILES=
- GMOFILES=
- for lang in $ALL_LINGUAS; do
- POFILES="$POFILES $srcdirpre$lang.po"
- UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
- DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
- GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
- done
- # CATALOGS depends on both $ac_dir and the user's LINGUAS
- # environment variable.
- INST_LINGUAS=
- if test -n "$ALL_LINGUAS"; then
- for presentlang in $ALL_LINGUAS; do
- useit=no
- if test "%UNSET%" != "$LINGUAS"; then
- desiredlanguages="$LINGUAS"
- else
- desiredlanguages="$ALL_LINGUAS"
- fi
- for desiredlang in $desiredlanguages; do
- # Use the presentlang catalog if desiredlang is
- # a. equal to presentlang, or
- # b. a variant of presentlang (because in this case,
- # presentlang can be used as a fallback for messages
- # which are not translated in the desiredlang catalog).
- case "$desiredlang" in
- "$presentlang"*) useit=yes;;
- esac
- done
- if test $useit = yes; then
- INST_LINGUAS="$INST_LINGUAS $presentlang"
- fi
- done
- fi
- CATALOGS=
- if test -n "$INST_LINGUAS"; then
- for lang in $INST_LINGUAS; do
- CATALOGS="$CATALOGS $lang.gmo"
- done
- fi
- test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
- sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
- for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
- if test -f "$f"; then
- case "$f" in
- *.orig | *.bak | *~) ;;
- *) cat "$f" >> "$ac_dir/Makefile" ;;
- esac
- fi
- done
- fi
- ;;
- esac
- done],
- [# Capture the value of obsolete ALL_LINGUAS because we need it to compute
- # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
- # from automake.
- eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
- # Capture the value of LINGUAS because we need it to compute CATALOGS.
- LINGUAS="${LINGUAS-%UNSET%}"
- ])
-])
-
-dnl Postprocesses a Makefile in a directory containing PO files.
-AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE],
-[
- # When this code is run, in config.status, two variables have already been
- # set:
- # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in,
- # - LINGUAS is the value of the environment variable LINGUAS at configure
- # time.
-
-changequote(,)dnl
- # Adjust a relative srcdir.
- ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
- ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
- ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
- # In autoconf-2.13 it is called $ac_given_srcdir.
- # In autoconf-2.50 it is called $srcdir.
- test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
- case "$ac_given_srcdir" in
- .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
- /*) top_srcdir="$ac_given_srcdir" ;;
- *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
- esac
-
- # Find a way to echo strings without interpreting backslash.
- if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
- gt_echo='echo'
- else
- if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
- gt_echo='printf %s\n'
- else
- echo_func () {
- cat <<EOT
-$*
-EOT
- }
- gt_echo='echo_func'
- fi
- fi
-
- # A sed script that extracts the value of VARIABLE from a Makefile.
- sed_x_variable='
-# Test if the hold space is empty.
-x
-s/P/P/
-x
-ta
-# Yes it was empty. Look if we have the expected variable definition.
-/^[ ]*VARIABLE[ ]*=/{
- # Seen the first line of the variable definition.
- s/^[ ]*VARIABLE[ ]*=//
- ba
-}
-bd
-:a
-# Here we are processing a line from the variable definition.
-# Remove comment, more precisely replace it with a space.
-s/#.*$/ /
-# See if the line ends in a backslash.
-tb
-:b
-s/\\$//
-# Print the line, without the trailing backslash.
-p
-tc
-# There was no trailing backslash. The end of the variable definition is
-# reached. Clear the hold space.
-s/^.*$//
-x
-bd
-:c
-# A trailing backslash means that the variable definition continues in the
-# next line. Put a nonempty string into the hold space to indicate this.
-s/^.*$/P/
-x
-:d
-'
-changequote([,])dnl
-
- # Set POTFILES to the value of the Makefile variable POTFILES.
- sed_x_POTFILES="`$gt_echo \"$sed_x_variable\" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'`"
- POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"`
- # Compute POTFILES_DEPS as
- # $(foreach file, $(POTFILES), $(top_srcdir)/$(file))
- POTFILES_DEPS=
- for file in $POTFILES; do
- POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file"
- done
- POMAKEFILEDEPS=""
-
- if test -n "$OBSOLETE_ALL_LINGUAS"; then
- test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
- fi
- if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
- # The LINGUAS file contains the set of available languages.
- ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"`
- POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
- else
- # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
- sed_x_LINGUAS="`$gt_echo \"$sed_x_variable\" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`"
- ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
- fi
- # Hide the ALL_LINGUAS assigment from automake.
- eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
- # Compute POFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
- # Compute UPDATEPOFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
- # Compute DUMMYPOFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
- # Compute GMOFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
- # Compute PROPERTIESFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties)
- # Compute CLASSFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class)
- # Compute QMFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm)
- # Compute MSGFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg)
- # Compute RESOURCESDLLFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll)
- case "$ac_given_srcdir" in
- .) srcdirpre= ;;
- *) srcdirpre='$(srcdir)/' ;;
- esac
- POFILES=
- UPDATEPOFILES=
- DUMMYPOFILES=
- GMOFILES=
- PROPERTIESFILES=
- CLASSFILES=
- QMFILES=
- MSGFILES=
- RESOURCESDLLFILES=
- for lang in $ALL_LINGUAS; do
- POFILES="$POFILES $srcdirpre$lang.po"
- UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
- DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
- GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
- PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties"
- CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class"
- QMFILES="$QMFILES $srcdirpre$lang.qm"
- frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
- MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg"
- frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
- RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll"
- done
- # CATALOGS depends on both $ac_dir and the user's LINGUAS
- # environment variable.
- INST_LINGUAS=
- if test -n "$ALL_LINGUAS"; then
- for presentlang in $ALL_LINGUAS; do
- useit=no
- if test "%UNSET%" != "$LINGUAS"; then
- desiredlanguages="$LINGUAS"
- else
- desiredlanguages="$ALL_LINGUAS"
- fi
- for desiredlang in $desiredlanguages; do
- # Use the presentlang catalog if desiredlang is
- # a. equal to presentlang, or
- # b. a variant of presentlang (because in this case,
- # presentlang can be used as a fallback for messages
- # which are not translated in the desiredlang catalog).
- case "$desiredlang" in
- "$presentlang"*) useit=yes;;
- esac
- done
- if test $useit = yes; then
- INST_LINGUAS="$INST_LINGUAS $presentlang"
- fi
- done
- fi
- CATALOGS=
- JAVACATALOGS=
- QTCATALOGS=
- TCLCATALOGS=
- CSHARPCATALOGS=
- if test -n "$INST_LINGUAS"; then
- for lang in $INST_LINGUAS; do
- CATALOGS="$CATALOGS $lang.gmo"
- JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties"
- QTCATALOGS="$QTCATALOGS $lang.qm"
- frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
- TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg"
- frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
- CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll"
- done
- fi
-
- sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp"
- if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then
- # Add dependencies that cannot be formulated as a simple suffix rule.
- for lang in $ALL_LINGUAS; do
- frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
- cat >> "$ac_file.tmp" <<EOF
-$frobbedlang.msg: $lang.po
- @echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
- \$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
-EOF
- done
- fi
- if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then
- # Add dependencies that cannot be formulated as a simple suffix rule.
- for lang in $ALL_LINGUAS; do
- frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
- cat >> "$ac_file.tmp" <<EOF
-$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
- @echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
- \$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
-EOF
- done
- fi
- if test -n "$POMAKEFILEDEPS"; then
- cat >> "$ac_file.tmp" <<EOF
-Makefile: $POMAKEFILEDEPS
-EOF
- fi
- mv "$ac_file.tmp" "$ac_file"
-])
-# printf-posix.m4 serial 2 (gettext-0.13.1)
-dnl Copyright (C) 2003 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible.
-dnl Test whether the printf() function supports POSIX/XSI format strings with
-dnl positions.
-
-AC_DEFUN([gt_PRINTF_POSIX],
-[
- AC_REQUIRE([AC_PROG_CC])
- AC_CACHE_CHECK([whether printf() supports POSIX/XSI format strings],
- gt_cv_func_printf_posix,
- [
- AC_TRY_RUN([
-#include <stdio.h>
-#include <string.h>
-/* The string "%2$d %1$d", with dollar characters protected from the shell's
- dollar expansion (possibly an autoconf bug). */
-static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' };
-static char buf[100];
-int main ()
-{
- sprintf (buf, format, 33, 55);
- return (strcmp (buf, "55 33") != 0);
-}], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no,
- [
- AC_EGREP_CPP(notposix, [
-#if defined __NetBSD__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__
- notposix
-#endif
- ], gt_cv_func_printf_posix="guessing no",
- gt_cv_func_printf_posix="guessing yes")
- ])
- ])
- case $gt_cv_func_printf_posix in
- *yes)
- AC_DEFINE(HAVE_POSIX_PRINTF, 1,
- [Define if your printf() function supports format strings with positions.])
- ;;
- esac
-])
-# progtest.m4 serial 4 (gettext-0.14.2)
-dnl Copyright (C) 1996-2003, 2005 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
-dnl They are *not* in the public domain.
-
-dnl Authors:
-dnl Ulrich Drepper <drepper@cygnus.com>, 1996.
-
-AC_PREREQ(2.50)
-
-# Search path for a program which passes the given test.
-
-dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
-dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
-AC_DEFUN([AM_PATH_PROG_WITH_TEST],
-[
-# Prepare PATH_SEPARATOR.
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
-fi
-
-# Find out how to test for executable files. Don't use a zero-byte file,
-# as systems may use methods other than mode bits to determine executability.
-cat >conf$$.file <<_ASEOF
-#! /bin/sh
-exit 0
-_ASEOF
-chmod +x conf$$.file
-if test -x conf$$.file >/dev/null 2>&1; then
- ac_executable_p="test -x"
-else
- ac_executable_p="test -f"
-fi
-rm -f conf$$.file
-
-# Extract the first word of "$2", so it can be a program name with args.
-set dummy $2; ac_word=[$]2
-AC_MSG_CHECKING([for $ac_word])
-AC_CACHE_VAL(ac_cv_path_$1,
-[case "[$]$1" in
- [[\\/]]* | ?:[[\\/]]*)
- ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
- ;;
- *)
- ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in ifelse([$5], , $PATH, [$5]); do
- IFS="$ac_save_IFS"
- test -z "$ac_dir" && ac_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
- echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD
- if [$3]; then
- ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext"
- break 2
- fi
- fi
- done
- done
- IFS="$ac_save_IFS"
-dnl If no 4th arg is given, leave the cache variable unset,
-dnl so AC_PATH_PROGS will keep looking.
-ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
-])dnl
- ;;
-esac])dnl
-$1="$ac_cv_path_$1"
-if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
- AC_MSG_RESULT([$]$1)
-else
- AC_MSG_RESULT(no)
-fi
-AC_SUBST($1)dnl
-])
-# signed.m4 serial 1 (gettext-0.10.40)
-dnl Copyright (C) 2001-2002 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible.
-
-AC_DEFUN([bh_C_SIGNED],
-[
- AC_CACHE_CHECK([for signed], bh_cv_c_signed,
- [AC_TRY_COMPILE(, [signed char x;], bh_cv_c_signed=yes, bh_cv_c_signed=no)])
- if test $bh_cv_c_signed = no; then
- AC_DEFINE(signed, ,
- [Define to empty if the C compiler doesn't support this keyword.])
- fi
-])
-# size_max.m4 serial 2
-dnl Copyright (C) 2003 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible.
-
-AC_DEFUN([gl_SIZE_MAX],
-[
- AC_CHECK_HEADERS(stdint.h)
- dnl First test whether the system already has SIZE_MAX.
- AC_MSG_CHECKING([for SIZE_MAX])
- result=
- AC_EGREP_CPP([Found it], [
-#include <limits.h>
-#if HAVE_STDINT_H
-#include <stdint.h>
-#endif
-#ifdef SIZE_MAX
-Found it
-#endif
-], result=yes)
- if test -z "$result"; then
- dnl Define it ourselves. Here we assume that the type 'size_t' is not wider
- dnl than the type 'unsigned long'.
- dnl The _AC_COMPUTE_INT macro works up to LONG_MAX, since it uses 'expr',
- dnl which is guaranteed to work from LONG_MIN to LONG_MAX.
- _AC_COMPUTE_INT([~(size_t)0 / 10], res_hi,
- [#include <stddef.h>], result=?)
- _AC_COMPUTE_INT([~(size_t)0 % 10], res_lo,
- [#include <stddef.h>], result=?)
- _AC_COMPUTE_INT([sizeof (size_t) <= sizeof (unsigned int)], fits_in_uint,
- [#include <stddef.h>], result=?)
- if test "$fits_in_uint" = 1; then
- dnl Even though SIZE_MAX fits in an unsigned int, it must be of type
- dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'.
- AC_TRY_COMPILE([#include <stddef.h>
- extern size_t foo;
- extern unsigned long foo;
- ], [], fits_in_uint=0)
- fi
- if test -z "$result"; then
- if test "$fits_in_uint" = 1; then
- result="$res_hi$res_lo"U
- else
- result="$res_hi$res_lo"UL
- fi
- else
- dnl Shouldn't happen, but who knows...
- result='~(size_t)0'
- fi
- fi
- AC_MSG_RESULT([$result])
- if test "$result" != yes; then
- AC_DEFINE_UNQUOTED([SIZE_MAX], [$result],
- [Define as the maximum value of type 'size_t', if the system doesn't define it.])
- fi
-])
-# stdint_h.m4 serial 5
-dnl Copyright (C) 1997-2004 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Paul Eggert.
-
-# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists,
-# doesn't clash with <sys/types.h>, and declares uintmax_t.
-
-AC_DEFUN([gl_AC_HEADER_STDINT_H],
-[
- AC_CACHE_CHECK([for stdint.h], gl_cv_header_stdint_h,
- [AC_TRY_COMPILE(
- [#include <sys/types.h>
-#include <stdint.h>],
- [uintmax_t i = (uintmax_t) -1;],
- gl_cv_header_stdint_h=yes,
- gl_cv_header_stdint_h=no)])
- if test $gl_cv_header_stdint_h = yes; then
- AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1,
- [Define if <stdint.h> exists, doesn't clash with <sys/types.h>,
- and declares uintmax_t. ])
- fi
-])
-# uintmax_t.m4 serial 9
-dnl Copyright (C) 1997-2004 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Paul Eggert.
-
-AC_PREREQ(2.13)
-
-# Define uintmax_t to 'unsigned long' or 'unsigned long long'
-# if it is not already defined in <stdint.h> or <inttypes.h>.
-
-AC_DEFUN([gl_AC_TYPE_UINTMAX_T],
-[
- AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
- AC_REQUIRE([gl_AC_HEADER_STDINT_H])
- if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then
- AC_REQUIRE([gl_AC_TYPE_UNSIGNED_LONG_LONG])
- test $ac_cv_type_unsigned_long_long = yes \
- && ac_type='unsigned long long' \
- || ac_type='unsigned long'
- AC_DEFINE_UNQUOTED(uintmax_t, $ac_type,
- [Define to unsigned long or unsigned long long
- if <stdint.h> and <inttypes.h> don't define.])
- else
- AC_DEFINE(HAVE_UINTMAX_T, 1,
- [Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>.])
- fi
-])
-# ulonglong.m4 serial 4
-dnl Copyright (C) 1999-2004 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Paul Eggert.
-
-# Define HAVE_UNSIGNED_LONG_LONG if 'unsigned long long' works.
-
-AC_DEFUN([gl_AC_TYPE_UNSIGNED_LONG_LONG],
-[
- AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long,
- [AC_TRY_LINK([unsigned long long ull = 1ULL; int i = 63;],
- [unsigned long long ullmax = (unsigned long long) -1;
- return ull << i | ull >> i | ullmax / ull | ullmax % ull;],
- ac_cv_type_unsigned_long_long=yes,
- ac_cv_type_unsigned_long_long=no)])
- if test $ac_cv_type_unsigned_long_long = yes; then
- AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1,
- [Define if you have the 'unsigned long long' type.])
- fi
-])
-# wchar_t.m4 serial 1 (gettext-0.12)
-dnl Copyright (C) 2002-2003 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible.
-dnl Test whether <stddef.h> has the 'wchar_t' type.
-dnl Prerequisite: AC_PROG_CC
-
-AC_DEFUN([gt_TYPE_WCHAR_T],
-[
- AC_CACHE_CHECK([for wchar_t], gt_cv_c_wchar_t,
- [AC_TRY_COMPILE([#include <stddef.h>
- wchar_t foo = (wchar_t)'\0';], ,
- gt_cv_c_wchar_t=yes, gt_cv_c_wchar_t=no)])
- if test $gt_cv_c_wchar_t = yes; then
- AC_DEFINE(HAVE_WCHAR_T, 1, [Define if you have the 'wchar_t' type.])
- fi
-])
-# wint_t.m4 serial 1 (gettext-0.12)
-dnl Copyright (C) 2003 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible.
-dnl Test whether <wchar.h> has the 'wint_t' type.
-dnl Prerequisite: AC_PROG_CC
-
-AC_DEFUN([gt_TYPE_WINT_T],
-[
- AC_CACHE_CHECK([for wint_t], gt_cv_c_wint_t,
- [AC_TRY_COMPILE([#include <wchar.h>
- wint_t foo = (wchar_t)'\0';], ,
- gt_cv_c_wint_t=yes, gt_cv_c_wint_t=no)])
- if test $gt_cv_c_wint_t = yes; then
- AC_DEFINE(HAVE_WINT_T, 1, [Define if you have the 'wint_t' type.])
- fi
-])
-# xsize.m4 serial 3
-dnl Copyright (C) 2003-2004 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([gl_XSIZE],
-[
- dnl Prerequisites of lib/xsize.h.
- AC_REQUIRE([gl_SIZE_MAX])
- AC_REQUIRE([AC_C_INLINE])
- AC_CHECK_HEADERS(stdint.h)
-])
## fth.m4 -- Autoconf macros for configuring FTH -*- Autoconf -*-
diff --git a/audio.c b/audio.c
index 09cf81a..dfc261f 100644
--- a/audio.c
+++ b/audio.c
@@ -126,21 +126,6 @@ static const char *mus_audio_device_name(int dev)
}
-#if (!HAVE_OSS) || (HAVE_ALSA)
-static const char *mus_audio_format_names[] = {
- "unknown", S_mus_bshort, S_mus_mulaw, S_mus_byte, S_mus_bfloat, S_mus_bint, S_mus_alaw, S_mus_ubyte, S_mus_b24int,
- S_mus_bdouble, S_mus_lshort, S_mus_lint, S_mus_lfloat, S_mus_ldouble, S_mus_ubshort, S_mus_ulshort, S_mus_l24int,
- S_mus_bintn, S_mus_lintn
-};
-
-static const char *mus_audio_format_name(int fr)
-{
- if (mus_data_format_p(fr))
- return(mus_audio_format_names[fr]);
- return("invalid format");
-}
-#endif
-
static char *audio_strbuf = NULL; /* previous name "strbuf" collides with Mac OSX global! */
static void pprint(const char *str);
@@ -2405,7 +2390,7 @@ static int alsa_audio_open(int ur_dev, int srate, int chans, int format, int siz
if (alsa_trace)
mus_print("%s: %x rate=%d, chans=%d, format=%d:%s, size=%d",
c__FUNCTION__, ur_dev, srate, chans, format,
- mus_audio_format_name(format), size);
+ mus_data_format_to_string(format), size);
card = MUS_AUDIO_SYSTEM(ur_dev);
device = MUS_AUDIO_DEVICE(ur_dev);
@@ -2420,7 +2405,7 @@ static int alsa_audio_open(int ur_dev, int srate, int chans, int format, int siz
{
return(alsa_mus_error(MUS_AUDIO_FORMAT_NOT_AVAILABLE,
mus_format("could not change %s<%d> to alsa format",
- mus_audio_format_name(format), format)));
+ mus_data_format_to_string(format), format)));
}
alsa_name = (alsa_stream == SND_PCM_STREAM_PLAYBACK) ? alsa_playback_device_name : alsa_capture_device_name;
@@ -2984,9 +2969,9 @@ int mus_audio_open_output(int ur_dev, int srate, int chans, int format, int size
{
if (dev == MUS_AUDIO_SPEAKERS)
/* OR may not be available */
- info.play.port = AUDIO_SPEAKER | (sun_default_outputs & AUDIO_HEADPHONE);
+ info.play.port = AUDIO_SPEAKER | AUDIO_HEADPHONE;
else
- info.play.port = sun_default_outputs;
+ info.play.port = AUDIO_SPEAKER;
}
info.play.sample_rate = srate;
info.play.channels = chans;
@@ -5868,7 +5853,7 @@ static pid_t jack_mus_player_pid;
static pthread_t jack_mus_watchdog_thread;
static void *jack_mus_audio_watchdog(void *arg){
-#if HAVE_JACK
+#if MUS_JACK
struct sched_param par;
par.sched_priority = sched_get_priority_max(SCHED_RR);
@@ -6152,7 +6137,7 @@ static void jack_describe_audio_state_1(void) {
int jack_mus_audio_systems(void) {
- return(2);
+ return(1); /* was 2 which causes lots of problems -- Fernando and Bill 27-Jan-10 */
}
char *jack_mus_audio_moniker(void)
@@ -6224,7 +6209,7 @@ int mus_audio_open_output(int ur_dev, int srate, int chans, int format, int size
else
RETURN_ERROR_EXIT(MUS_AUDIO_FORMAT_NOT_AVAILABLE, fd,
mus_format("can't set output format to %d (%s) for %d (%s)",
- format, mus_audio_format_name(format),
+ format, mus_data_format_to_string(format),
dev,
mus_audio_device_name(dev)));
}
@@ -6375,7 +6360,7 @@ int mus_audio_open_input(int ur_dev, int srate, int chans, int format, int size)
else
RETURN_ERROR_EXIT(MUS_AUDIO_FORMAT_NOT_AVAILABLE, fd,
mus_format("can't set input format to %d (%s) on %d (%s)",
- format, mus_audio_format_name(format),
+ format, mus_data_format_to_string(format),
dev,
mus_audio_device_name(dev)));
}
@@ -7156,17 +7141,26 @@ int mus_audio_read_buffers(int port, int frames, int chans, mus_sample_t **bufs,
void mus_audio_alsa_channel_info(int dev, int *info);
void mus_audio_alsa_channel_info(int dev, int *info)
{
-#if HAVE_JACK
- info[0] = sndjack_num_read_channels_allocated;
+#if MUS_JACK
+ if (api == MUS_JACK_API)
+ {
+ info[0] = sndjack_num_channels_allocated;
+ return;
+ }
+#endif
+
+#if HAVE_ALSA
+ if (api == MUS_ALSA_API)
+ {
+ alsa_chans(dev, info);
+ return;
+ }
#endif
#if HAVE_OSS
info[0] = 2;
#endif
-#if HAVE_ALSA && (!MUS_JACK)
- alsa_chans(dev, info);
-#endif
}
@@ -7240,14 +7234,21 @@ int mus_audio_alsa_device_direction(int dev)
int mus_audio_device_channels(int dev)
{
-#if HAVE_ALSA &(!MUS_JACK)
- return(alsa_chans(dev, NULL));
+#if MUS_JACK
+ if (api == MUS_JACK_API)
+ {
+ return(sndjack_num_channels_allocated);
+ }
#endif
-
-#if HAVE_JACK
- return(sndjack_num_read_channels_allocated);
+
+#if HAVE_ALSA
+ if (api == MUS_ALSA_API)
+ {
+ return(alsa_chans(dev, NULL));
+ }
#endif
+
#if MUS_MAC_OSX
return(osx_chans(dev));
#endif
@@ -7258,33 +7259,39 @@ int mus_audio_device_channels(int dev)
int mus_audio_compatible_format(int dev) /* snd-dac and sndplay */
{
-#if HAVE_ALSA && (!MUS_JACK)
+#if HAVE_ALSA
int err, i;
int ival[32];
- err = alsa_formats(dev, 32, ival);
- if (err != MUS_ERROR)
+ if (api == MUS_ALSA_API)
{
- for (i = 1; i <= ival[0]; i++)
- if (ival[i] == MUS_AUDIO_COMPATIBLE_FORMAT)
- return(MUS_AUDIO_COMPATIBLE_FORMAT);
-
- for (i = 1; i <= ival[0]; i++)
- if ((ival[i] == MUS_BINT) || (ival[i] == MUS_LINT) ||
- (ival[i] == MUS_BFLOAT) || (ival[i] == MUS_LFLOAT) ||
- (ival[i] == MUS_BSHORT) || (ival[i] == MUS_LSHORT))
- return(ival[i]);
-
- for (i = 1; i <= ival[0]; i++)
- if ((ival[i] == MUS_MULAW) || (ival[i] == MUS_ALAW) ||
- (ival[i] == MUS_UBYTE) || (ival[i] == MUS_BYTE))
- return(ival[i]);
-
- return(ival[1]);
+ err = alsa_formats(dev, 32, ival);
+ if (err != MUS_ERROR)
+ {
+ for (i = 1; i <= ival[0]; i++)
+ if (ival[i] == MUS_AUDIO_COMPATIBLE_FORMAT)
+ return(MUS_AUDIO_COMPATIBLE_FORMAT);
+
+ for (i = 1; i <= ival[0]; i++)
+ if ((ival[i] == MUS_BINT) || (ival[i] == MUS_LINT) ||
+ (ival[i] == MUS_BFLOAT) || (ival[i] == MUS_LFLOAT) ||
+ (ival[i] == MUS_BSHORT) || (ival[i] == MUS_LSHORT))
+ return(ival[i]);
+
+ for (i = 1; i <= ival[0]; i++)
+ if ((ival[i] == MUS_MULAW) || (ival[i] == MUS_ALAW) ||
+ (ival[i] == MUS_UBYTE) || (ival[i] == MUS_BYTE))
+ return(ival[i]);
+
+ return(ival[1]);
+ }
}
#endif
#if MUS_JACK
- return(MUS_COMP_FLOAT);
+ if (api == MUS_JACK_API)
+ {
+ return(MUS_COMP_FLOAT);
+ }
#endif
return(MUS_AUDIO_COMPATIBLE_FORMAT);
@@ -7307,14 +7314,25 @@ int mus_audio_device_format(int dev) /* snd-dac snd-xrec snd-grec */
int mixer_vals[16];
int format;
+ /* we return the new format, so mixer_vals is just a local collector of possible formats */
mixer_vals[0] = 0;
-#if HAVE_OSS && (!MUS_JACK)
- oss_formats(dev, mixer_vals);
+#if HAVE_OSS
+ if (api == MUS_OSS_API)
+ oss_formats(dev, mixer_vals);
#endif
-#if HAVE_ALSA && (!MUS_JACK)
- alsa_formats(dev, 16, mixer_vals);
+#if HAVE_ALSA
+ if (api == MUS_ALSA_API)
+ alsa_formats(dev, 16, mixer_vals);
+#endif
+
+#if MUS_JACK
+ if (api == MUS_JACK_API)
+ {
+ mixer_vals[0] = 1;
+ mixer_vals[1] = MUS_COMP_FLOAT;
+ }
#endif
#if HAVE_SUN
@@ -7339,11 +7357,6 @@ int mus_audio_device_format(int dev) /* snd-dac snd-xrec snd-grec */
mixer_vals[3] = MUS_BSHORT;
#endif
-#if MUS_JACK
- mixer_vals[0] = 1;
- mixer_vals[1] = MUS_COMP_FLOAT;
-#endif
-
#if MUS_NETBSD
netbsd_formats(dev, mixer_vals);
#endif
diff --git a/autosave.scm b/autosave.scm
index 24b656e..3457b2e 100644
--- a/autosave.scm
+++ b/autosave.scm
@@ -2,8 +2,6 @@
(provide 'snd-autosave.scm)
-(if (not (provided? 'snd-extensions.scm)) (load "extensions.scm"))
-
(define auto-save-interval 60.0) ;seconds between auto-save checks
(define auto-saving #f)
diff --git a/clm.c b/clm.c
index fd3e9a7..3f8191e 100644
--- a/clm.c
+++ b/clm.c
@@ -31,17 +31,12 @@
#include "clm.h"
#include "clm-strings.h"
-#if WITH_RT
- #include "rt-various.h"
- #define mus_error(...) rt_mus_error(__VA_ARGS__)
-#else
- #define clm_malloc(Num, What) malloc(Num)
- #define clm_malloc_atomic(Num, What) malloc(Num)
- #define clm_calloc(Num, Size, What) calloc(Num, Size)
- #define clm_calloc_atomic(Num, Size, What) calloc(Num, Size)
- #define clm_realloc(Old, NewSize) realloc(Old, NewSize)
- #define clm_free(Ptr) free(Ptr)
-#endif
+#define clm_malloc(Num, What) malloc(Num)
+#define clm_malloc_atomic(Num, What) malloc(Num)
+#define clm_calloc(Num, Size, What) calloc(Num, Size)
+#define clm_calloc_atomic(Num, Size, What) calloc(Num, Size)
+#define clm_realloc(Old, NewSize) realloc(Old, NewSize)
+#define clm_free(Ptr) free(Ptr)
#if HAVE_GSL
#include <gsl/gsl_complex.h>
@@ -7839,6 +7834,8 @@ static void flush_buffers(rdout *gen)
if (allocation_failed)
{
+ mus_long_t old_file_buffer_size = 0;
+
/* first clean up the mess we made */
for (i = 0; i < gen->chans; i++)
if (addbufs[i])
@@ -7852,7 +7849,14 @@ static void flush_buffers(rdout *gen)
* and it might fail on the next call (if more chans), so we'll throw an error. We could get
* say 1024 samps per chan, then run through a loop outputting the current buffer, but geez...
*/
- mus_error(MUS_MEMORY_ALLOCATION_FAILED, S_mus_file_buffer_size " (" MUS_LD ") is too large: we can't allocate the output buffers!", clm_file_buffer_size);
+ /* but... if we hit this in with-sound, mus_error calls (eventually) s7_error which sees the
+ * dynamic-wind and tries to call mus-close, which tries to flush the buffers and we have
+ * an infinite loop. So, we need to clean up right now.
+ */
+ mus_sound_close_input(fd);
+ old_file_buffer_size = clm_file_buffer_size;
+ clm_file_buffer_size = MUS_DEFAULT_FILE_BUFFER_SIZE;
+ mus_error(MUS_MEMORY_ALLOCATION_FAILED, S_mus_file_buffer_size " (" MUS_LD ") is too large: we can't allocate the output buffers!", old_file_buffer_size);
return;
}
}
diff --git a/clm.fs b/clm.fs
index ddcd422..de00d27 100644
--- a/clm.fs
+++ b/clm.fs
@@ -2,12 +2,12 @@
\ Author: Michael Scholz <mi-scholz@users.sourceforge.net>
\ Created: Mon Mar 15 19:25:58 CET 2004
-\ Changed: Tue Dec 08 20:08:30 CET 2009
+\ Changed: Fri Jan 08 01:06:37 CET 2010
\ Commentary:
\
-\ clm-print ( fmt args -- )
-\ clm-message ( fmt args -- )
+\ clm-print ( fmt :optional args -- )
+\ clm-message ( fmt :optional args -- )
\
\ now@ ( -- secs )
\ now! ( secs -- )
@@ -16,7 +16,7 @@
\ tempo! ( secs -- )
\ interval->hertz ( n -- r )
\ keynum->hertz ( n -- r )
-\ hertz->keynum ( n -- r )
+\ hertz->keynum ( r -- n )
\ bpm->seconds ( bpm -- secs )
\ rhythm->seconds ( rhy -- secs )
\
@@ -28,9 +28,9 @@
\
\ ws-local-variables ( -- )
\ ws-interrupt? ( -- )
-\ ws-info ( start dur -- )
+\ ws-info ( start dur vars -- start dur )
\ run ( start dur -- )
-\ run-instrument ( start dur args -- )
+\ run-instrument ( start dur locsig-args -- )
\ end-run ( sample -- )
\ reverb-info ( caller in-chans out-chans -- )
\ instrument: ( -- )
@@ -46,19 +46,14 @@
\ clm-mix ( infile :key output output-frame frames input-frame scaler -- )
\ with-sound ( body-xt keyword-args -- ws )
\ clm-load ( fname keyword-args -- ws )
-\ with-current-sound ( :key offset scaled-to scaled-by -- )
+\ with-current-sound ( body-xt :key offset scaled-to scaled-by -- )
\ scaled-to ( body-xt scl -- )
\ scaled-by ( body-xt scl -- )
\ with-offset ( body-xt secs -- )
-\ with-mix ( body-str args fname beg -- )
+\ with-mix ( body-str|nil args fname start -- )
\ sound-let ( ws-xt-lst body-xt -- )
-$" fth 08-Dec-2009" value *clm-version*
-
-\ defined in snd/snd-xen.c
-[ifundef] snd-print : snd-print ( str -- str ) dup .string ; [then]
-[ifundef] clm-print : clm-print ( fmt args -- ) format snd-print drop ; [then]
-[ifundef] clm-message : clm-message ( fmt args -- str ) ." \ " fth-print cr ; [then]
+$" fth 08-Jan-2010" value *clm-version*
[ifundef] flog10
<'> flog alias flog10
@@ -66,61 +61,33 @@ $" fth 08-Dec-2009" value *clm-version*
<'> flnp1 alias flogp1
[then]
+\ if configured --with-shared-sndlib
dl-load sndlib Init_sndlib
-'snd provided? [if]
- 'snd-nogui provided? [if]
- : x-bounds <{ :optional snd 0 chn 0 axis 0 -- }> #f ;
- : y-bounds <{ :optional snd 0 chn 0 axis 0 -- }> #f ;
- : set-x-bounds <{ bounds :optional snd 0 chn 0 axis 0 -- }> #f ;
- : set-y-bounds <{ bounds :optional snd 0 chn 0 axis 0 -- }> #f ;
- [then]
-[else]
- <'> noop alias main-widgets
- <'> noop alias sounds
- <'> noop alias set-selected-sound
+'snd provided? [unless]
<'> noop alias sound?
<'> noop alias open-sound
<'> noop alias find-sound
- <'> noop alias update-sound
<'> noop alias save-sound
<'> noop alias close-sound
- <'> noop alias close-sound-extend
- <'> noop alias channels
<'> noop alias play
- <'> noop alias play-and-wait
<'> noop alias maxamp
<'> noop alias frames
<'> noop alias scale-channel
- <'> noop alias snd-tempnam
- <'> noop alias snd-version
: c-g? ( -- f ) #f ;
[then]
-\ Also defined in examp.fs.
-[ifundef] close-sound-extend
- \ 5 == notebook widget
- : close-sound-extend <{ snd -- }>
- main-widgets 5 array-ref false? unless
- 0 { idx }
- sounds empty? unless sounds snd array-index to idx then
- snd close-sound drop
- sounds empty? unless
- sounds length 1 = if
- sounds 0 array-ref
- else
- idx sounds length < if
- sounds idx array-ref
- else
- sounds -1 array-ref
- then
- then set-selected-sound drop
- then
- else
- snd close-sound drop
- then
-;
+[undefined] clm-print [if]
+ \ "hello" clm-print
+ \ "file %s, line %d\n" '( "oboe.snd" 123 ) clm-print
+ 'snd provided? [if]
+ : clm-print ( fmt :optional args -- ) fth-format snd-print drop ;
+ [else]
+ <'> fth-print alias clm-print ( fmt :optional args -- )
+ [then]
[then]
+\ puts a comment sign before output string and adds a carriage return
+: clm-message <{ fmt :optional args undef -- }> $" \\ %s\n" '( fmt args fth-format ) clm-print ;
\ === Notelist ===
hide
@@ -228,12 +195,13 @@ previous
: bpm->seconds ( bpm -- secs ) 60.0 swap f/ ;
: rhythm->seconds ( rhy -- secs ) 4.0 tempo@ bpm->seconds f* f* ;
+hide
: notelength ( scale "name" --; self -- r )
- rhythm->seconds create ,
+ create ,
does> ( self -- r )
- @
+ @ rhythm->seconds
;
-
+set-current
1.0 notelength |W \ whole
2.0 1/f notelength |H \ half
4.0 1/f notelength |Q \ quarter
@@ -245,6 +213,7 @@ previous
4.0 1/f 8.0 1/f f+ notelength |Q.
8.0 1/f 16.0 1/f f+ notelength |A.
16.0 1/f 32.0 1/f f+ notelength |S.
+previous
\ === Global User Variables (settable in ~/.snd_forth or ~/.fthrc) ===
#f value *locsig*
@@ -296,51 +265,47 @@ clm-default-frequency value *clm-default-frequency*
*clm-verbose* value *verbose*
*clm-notehook* value *notehook*
-hide
-user *fth-file-number*
-set-current
-: tempnam ( -- name )
- doc" Looks for environment variables TMP, TEMP, or TMPDIR, otherwise \
+'snd provided? [if]
+ <'> snd-tempnam alias fth-tempnam
+[else]
+ hide
+ user *fth-file-number*
+ set-current
+ : fth-tempnam ( -- name )
+ doc" Looks for environment variables TMP, TEMP, or TMPDIR, otherwise \
uses /tmp as temporary path and produces something like:\n\
/tmp/fth-12345-1.snd\n\
/tmp/fth-12345-2.snd\n\
/tmp/fth-12345-3.snd\n\
-[...]"
- 1 *fth-file-number* +!
- "%s/fth-%d-%d.snd"
- environ "TMP" array-assoc-ref ?dup-if
- 1 object-ref
- else
- environ "TEMP" array-assoc-ref ?dup-if
+..."
+ 1 *fth-file-number* +!
+ "%s/fth-%d-%d.snd"
+ environ "TMP" array-assoc-ref ?dup-if
1 object-ref
else
- environ "TMPDIR" array-assoc-ref ?dup-if
+ environ "TEMP" array-assoc-ref ?dup-if
1 object-ref
else
- "/tmp"
+ environ "TMPDIR" array-assoc-ref ?dup-if
+ 1 object-ref
+ else
+ "/tmp"
+ then
then
- then
- then ( tmp ) getpid *fth-file-number* @ 3 >array string-format
-;
-previous
-
-: fth-tempnam ( -- fname )
- 'snd provided? if
- snd-tempnam
- else
- tempnam
- then
-;
+ then ( tmp ) getpid *fth-file-number* @ 3 >array string-format
+ ;
+ previous
+[then]
: make-default-comment ( -- str )
- $" Written %s by %s at %s using clm (%s)"
+ $" \\ Written %s by %s at %s using clm (%s)"
#( $" %a %d-%b-%y %H:%M %Z" current-time strftime
getlogin
gethostname
*clm-version* ) string-format
;
-: times->samples ( start dur -- limit begin )
+: times->samples ( start dur -- len beg )
{ start dur }
start seconds->samples { beg }
dur seconds->samples { len }
@@ -387,8 +352,8 @@ $" with-sound interrupt" create-exception with-sound-interrupt
: ws-info ( start dur vars -- start dur )
{ start dur vars }
*clm-instruments* #( *clm-current-instrument* start dur vars ) array-push to *clm-instruments*
- *notehook* dup xt? swap proc? || if
- *clm-current-instrument* start dur *notehook* dup proc? if proc->xt then execute stack-reset
+ *notehook* word? if
+ *notehook* #( *clm-current-instrument* start dur ) run-proc drop
then
ws-interrupt?
start dur
@@ -499,8 +464,7 @@ if FILE was found in *CLM-SEARCH-LIST*, otherwise returns #f."
;
hide
-: .maxamps ( fname name sr scl? -- )
- { fname name sr scl? }
+: .maxamps { fname name sr scl? -- }
fname file-exists? if
fname mus-sound-maxamp { vals }
vals length 0 ?do
@@ -513,13 +477,11 @@ hide
2 +loop
then
;
-: .timer ( obj -- )
- { obj }
+: .timer { obj -- }
$" %*s: %.3f (utime %.3f, stime %.3f)"
#( 8 $" real" obj real-time@ obj user-time@ obj system-time@ ) clm-message
;
-: .timer-ratio ( srate frames obj -- )
- { sr frms obj }
+: .timer-ratio { sr frms obj -- }
frms 0> if
sr frms f/ { m }
$" %*s: %.2f (uratio %.2f)"
@@ -709,31 +671,29 @@ hide
;
: ws-before-output ( ws -- )
{ ws }
- ws :old-table-size clm-table-size array-assoc-set!
- ( ws ) :old-file-buffer-size mus-file-buffer-size array-assoc-set!
- ( ws ) :old-array-print-length mus-array-print-length array-assoc-set!
- ( ws ) :old-clipping mus-clipping array-assoc-set!
- ( ws ) :old-srate mus-srate array-assoc-set!
- ( ws ) :old-locsig-type locsig-type array-assoc-set!
- ( ws ) :old-*output* *output* array-assoc-set!
- ( ws ) :old-*reverb* *reverb* array-assoc-set!
- ( ws ) :old-verbose *verbose* array-assoc-set!
- ( ws ) :old-debug *clm-debug* array-assoc-set!
- ( ws ) :old-channels *channels* array-assoc-set!
- ( ws ) :old-notehook *notehook* array-assoc-set!
- ( ws ) :old-decay-time *clm-decay-time* array-assoc-set! to ws
- ws :verbose array-assoc-ref to *verbose*
- ws :debug array-assoc-ref to *clm-debug*
- ws :channels array-assoc-ref to *channels*
- ws :notehook array-assoc-ref to *notehook*
- ws :decay-time array-assoc-ref to *clm-decay-time*
- \ *clm-default-frequency* set-clm-default-frequency drop
- \ *clm-table-size* set-clm-table-size drop
+ ws :old-table-size clm-table-size array-assoc-set!
+ ( ws ) :old-file-buffer-size mus-file-buffer-size array-assoc-set!
+ ( ws ) :old-array-print-length mus-array-print-length array-assoc-set!
+ ( ws ) :old-clipping mus-clipping array-assoc-set!
+ ( ws ) :old-srate mus-srate array-assoc-set!
+ ( ws ) :old-locsig-type locsig-type array-assoc-set!
+ ( ws ) :old-*output* *output* array-assoc-set!
+ ( ws ) :old-*reverb* *reverb* array-assoc-set!
+ ( ws ) :old-verbose *verbose* array-assoc-set!
+ ( ws ) :old-debug *clm-debug* array-assoc-set!
+ ( ws ) :old-channels *channels* array-assoc-set!
+ ( ws ) :old-notehook *notehook* array-assoc-set!
+ ( ws ) :old-decay-time *clm-decay-time* array-assoc-set! to ws
+ ws :verbose array-assoc-ref to *verbose*
+ ws :debug array-assoc-ref to *clm-debug*
+ ws :channels array-assoc-ref to *channels*
+ ws :notehook array-assoc-ref to *notehook*
+ ws :decay-time array-assoc-ref to *clm-decay-time*
*clm-file-buffer-size* set-mus-file-buffer-size drop
*clm-array-print-length* set-mus-array-print-length drop
- *clm-clipped* boolean? if *clm-clipped* else #f then set-mus-clipping drop
- ws :srate array-assoc-ref set-mus-srate drop
- ws :locsig-type array-assoc-ref set-locsig-type drop
+ *clm-clipped* boolean? if *clm-clipped* else #f then set-mus-clipping drop
+ ws :srate array-assoc-ref set-mus-srate drop
+ ws :locsig-type array-assoc-ref set-locsig-type drop
;
: ws-after-output ( ws -- ws )
{ ws }
@@ -743,21 +703,21 @@ hide
ws :old-clipping array-assoc-ref set-mus-clipping drop
ws :old-srate array-assoc-ref set-mus-srate drop
ws :old-locsig-type array-assoc-ref set-locsig-type drop
- ws :old-*output* array-assoc-ref to *output*
- ws :old-*reverb* array-assoc-ref to *reverb*
- ws :old-verbose array-assoc-ref to *verbose*
- ws :old-debug array-assoc-ref to *clm-debug*
- ws :old-channels array-assoc-ref to *channels*
- ws :old-notehook array-assoc-ref to *notehook*
- ws :old-decay-time array-assoc-ref to *clm-decay-time*
+ ws :old-*output* array-assoc-ref to *output*
+ ws :old-*reverb* array-assoc-ref to *reverb*
+ ws :old-verbose array-assoc-ref to *verbose*
+ ws :old-debug array-assoc-ref to *clm-debug*
+ ws :old-channels array-assoc-ref to *channels*
+ ws :old-notehook array-assoc-ref to *notehook*
+ ws :old-decay-time array-assoc-ref to *clm-decay-time*
*ws-args* array-pop
;
: ws-statistics ( ws -- )
{ ws }
ws :output array-assoc-ref
- :reverb-file-name ws :reverb-file-name array-assoc-ref
+ :reverb-file-name ws :reverb-file-name array-assoc-ref
:scaled? ws :scaled-to array-assoc-ref ws :scaled-by array-assoc-ref ||
- :timer ws :timer array-assoc-ref
+ :timer ws :timer array-assoc-ref
snd-info
;
\ player can be one of xt, proc, string, or #f.
@@ -779,7 +739,7 @@ hide
{ ws }
ws :output array-assoc-ref { output }
ws :player array-assoc-ref { player }
- player proc? if
+ player word? if
player #( output ) run-proc drop
else
player string? if
@@ -830,10 +790,10 @@ set-current
#() { ws }
*ws-args* -1 array-ref { ws1 }
*ws-args* ws array-push to *ws-args*
- :play #f ws set-args
- :player #f ws set-args
- :statistics #f ws set-args
- :continue-old-file #f ws set-args
+ :play #f ws set-args
+ :player #f ws set-args
+ :statistics #f ws set-args
+ :continue-old-file #f ws set-args
:verbose ws1 :verbose array-assoc-ref ws set-args
:debug ws1 :debug array-assoc-ref ws set-args
:output ws1 :output array-assoc-ref ws set-args
@@ -856,12 +816,12 @@ set-current
;
: with-sound-main ( body-xt ws -- ws )
{ body-xt ws }
- body-xt xt? body-xt proc? || body-xt 1 $" a proc or xt" assert-type
- ws array? ws 2 $" an associative array" assert-type
+ body-xt word? body-xt 1 $" a proc or xt" assert-type
+ ws array? ws 2 $" an associative array" assert-type
ws ws-before-output
ws :reverb array-assoc-ref { reverb-xt }
reverb-xt if
- reverb-xt xt? reverb-xt proc? || reverb-xt 3 $" a proc or xt" assert-type
+ reverb-xt word? reverb-xt 3 $" a proc or xt" assert-type
#t
else
#f
@@ -885,7 +845,9 @@ set-current
then
cont? if
output mus-sound-srate set-mus-srate drop
- 'snd provided? if output 0 find-sound dup sound? if close-sound-extend else drop then then
+ 'snd provided? if
+ output 0 find-sound dup sound? if close-sound then drop
+ then
then
rev? if
cont? if
@@ -906,7 +868,7 @@ set-current
\ compute ws body
*clm-debug* if
\ EXECUTE provides probably a more precise backtrace than FTH-CATCH.
- body-xt dup proc? if proc->xt then execute
+ body-xt proc->xt execute
else
body-xt 'with-sound-interrupt #t fth-catch if
stack-reset
@@ -924,9 +886,10 @@ set-current
'with-sound-error #( get-func-name $" cannot open file->sample" ) fth-throw
then
\ compute ws reverb
+ \ push reverb arguments on stack
+ ws :reverb-data array-assoc-ref each end-each
*clm-debug* if
- \ push reverb arguments on stack
- ws :reverb-data array-assoc-ref each end-each reverb-xt dup proc? if proc->xt then execute
+ reverb-xt proc->xt execute
else
reverb-xt 'with-sound-interrupt #t fth-catch if
stack-reset
@@ -941,12 +904,16 @@ set-current
then
*output* mus-close drop
ws :timer array-assoc-ref stop-timer
- ws ws-get-snd drop
- ws :statistics array-assoc-ref if ws ws-statistics then
- ws :delete-reverb array-assoc-ref reverb-xt && if ws :reverb-file-name array-assoc-ref file-delete then
- ws :scaled-to array-assoc-ref if ws ws-scaled-to then
- ws :scaled-by array-assoc-ref if ws ws-scaled-by then
- ws :play array-assoc-ref if ws ws-play-it then
+ 'snd provided? if
+ ws ws-get-snd drop
+ then
+ ws :statistics array-assoc-ref if ws ws-statistics then
+ reverb-xt if
+ ws :delete-reverb array-assoc-ref if ws :reverb-file-name array-assoc-ref file-delete then
+ then
+ ws :scaled-to array-assoc-ref if ws ws-scaled-to then
+ ws :scaled-by array-assoc-ref if ws ws-scaled-by then
+ ws :play array-assoc-ref if ws ws-play-it then
ws ws-after-output ( ws )
;
previous
@@ -1050,10 +1017,11 @@ lambda: ( -- )\n\
;
: with-mix <{ body-str args fname start -- }>
- doc" BODY-STR is a string with with-sound commands, \
+ doc" BODY-STR is a string with with-sound commands or NIL, \
ARGS is an array of with-sound arguments, \
FNAME is the temporary mix file name without extension, \
-and START is the begin time for mix in.\n\
+and START is the begin time for mix in. \
+If BODY-STR is NIL a notelist file FNAME.fsm must exist.\n\
lambda: ( -- )\n\
0.0 0.1 440 0.1 fm-violin\n\
\"\n\
@@ -1065,35 +1033,44 @@ lambda: ( -- )\n\
0.1 0.1 1320 0.1 :reverb-amount 0.2 fm-violin\n\
\" #( :reverb <'> jc-reverb ) \"sec2\" 1.0 with-mix\n\
2.0 0.1 220 0.1 fm-violin\n\
- ; with-sound drop"
- body-str string? body-str 1 $" a string" assert-type
- args array? args 2 $" an array" assert-type
- fname string? fname 3 $" a string" assert-type
- start number? start 4 $" a number" assert-type
+; with-sound drop"
+ body-str string? body-str nil? || body-str 1 $" a string or nil" assert-type
+ args array? args list? || args 2 $" an array or a list" assert-type
+ fname string? fname 3 $" a string" assert-type
+ start number? start 4 $" a number" assert-type
*output* mus-output? false? if
'with-sound-error $" %s can only be called within with-sound" #( get-func-name ) fth-raise
then
fname ".snd" $+ { snd-file }
fname ".fsm" $+ { mix-file }
+ fname ".reverb" $+ { rev-file }
snd-file file-exists? if
snd-file file-mtime
else
#f
then { snd-time }
- mix-file file-exists? if
- mix-file readlines "" array-join
- else
- ""
- then ( old-body ) body-str string= if
- mix-file file-mtime
+ body-str string? if
+ mix-file file-exists? if
+ mix-file readlines "" array-join
+ else
+ ""
+ then ( old-body ) body-str string= if
+ mix-file file-mtime
+ else
+ mix-file #( body-str ) writelines
+ #f
+ then
else
- mix-file #( body-str ) writelines
- #f
+ mix-file file-exists? if
+ mix-file file-mtime
+ else
+ 'no-such-file $" %s: %S not found" #( get-func-name mix-file ) fth-raise
+ then
then { mix-time }
- snd-time false?
- mix-time false? ||
+ snd-time false?
+ mix-time false? ||
snd-time mix-time d< || if
- mix-file args each end-each :output snd-file clm-load drop
+ mix-file args each end-each :output snd-file :reverb-file-name rev-file clm-load drop
then
snd-file :output-frame start seconds->samples clm-mix
;
@@ -1111,8 +1088,8 @@ lambda: { tmp1 tmp2 }\n\
tmp1 clm-mix\n\
; ( the body-xt ) <'> sound-let with-sound drop"
{ ws-xt-lst body-xt }
- ws-xt-lst array? ws-xt-lst 1 $" an array" assert-type
- body-xt xt? body-xt proc? || body-xt 2 $" a proc or xt" assert-type
+ ws-xt-lst array? ws-xt-lst 1 $" an array" assert-type
+ body-xt word? body-xt 2 $" a proc or xt" assert-type
*output* mus-output? false? if
'with-sound-error $" %s can only be called within with-sound" #( get-func-name ) fth-raise
then
diff --git a/clm.rb b/clm.rb
index bfaead4..feab97b 100644
--- a/clm.rb
+++ b/clm.rb
@@ -2,7 +2,7 @@
# Author: Michael Scholz <mi-scholz@users.sourceforge.net>
# Created: Wed Oct 14 23:02:57 CEST 2009
-# Changed: Tue Dec 08 17:35:05 CET 2009
+# Changed: Tue Jan 12 00:12:48 CET 2010
# Commentary:
#
@@ -2054,7 +2054,7 @@ def install_eval_hooks(file, retval, input, hook, &reset_cursor)
reset_cursor.nil? or reset_cursor.call
$exit_hook.add_hook!(file) do | | prompt.reset end
hook.add_hook!(file) do |line|
- eval_line << line << "\n"
+ eval_line = eval_line + line + "\n"
eval_level += Snd_eval.count_level(line)
if eval_level.negative?
eval_level = 0
@@ -2291,16 +2291,17 @@ end
def verbose_message_string(stack_p, remark, *args)
fmt_remark = format("\n%s", remark)
- args.to_a.car = String(args.to_a.car)
- str = if args.length < 2
- args.car
+ str = if args.null?
+ ""
+ elsif args.length == 1
+ String(args.car)
else
format(*args)
end
str = if str.split(/\n/).length > 1
str.split(/\n/).join(fmt_remark)
else
- format("%s%s", remark, args.car)
+ format("%s%s", remark, str)
end
if $!
str += format("[%s] %s (%s)", rb_error_to_mus_tag.inspect, snd_error_to_message, $!.class)
@@ -2344,11 +2345,13 @@ def clm_message(*args)
else
format(*args)
end
- if provided?(:snd)
- clm_print("\n%s", msg)
- unless provided?(:snd_nogui)
- $stdout.print(msg, "\n")
- end
+ if provided? :snd
+ if provided? :snd_nogui
+ clm_print("%s\n", msg)
+ else
+ clm_print("\n%s", msg)
+ end
+ nil
else
$stdout.print(msg, "\n")
end
@@ -2357,14 +2360,7 @@ end
# like clm_print(*args), in emacs it prepends msg with a comment sign
def message(*args)
- msg = if args.null?
- ""
- elsif args.length == 1
- String(args.car)
- else
- format(*args)
- end
- clm_message(verbose_message_string(false, "# ", msg))
+ clm_message(verbose_message_string(false, "# ", *args))
end
# debug(var1, var2) --> #<DEBUG: ClassName: value1, ClassName: value2>
@@ -2383,7 +2379,7 @@ def debug_trace(*args)
clm_message(verbose_message_string(true, "# "))
end
-if provided? :snd then set_snd_input(:snd) end
+if provided?(:snd) then set_snd_input(:snd) end
class Snd
class << Snd
@@ -2428,6 +2424,10 @@ class Snd
end
def message(*args)
+ clm_message(verbose_message_string(false, "# ", *args))
+ end
+
+ def display(*args)
msg = if args.null?
""
elsif args.length == 1
@@ -2435,15 +2435,12 @@ class Snd
else
format(*args)
end
- clm_message(verbose_message_string(false, "# ", msg))
- end
-
- def display(*args)
- args[0] = String(args[0])
- msg = format(*args)
if snd_input == :snd
- snd_print("\n" + msg)
- if $VERBOSE then $stdout.print(msg, "\n") end
+ if provided? :snd_nogui
+ clm_print("%s\n", msg)
+ else
+ clm_print("\n%s", msg)
+ end
nil
else
$stdout.print(msg, "\n")
@@ -2470,12 +2467,13 @@ class Snd
end
def debug(*args)
- fmt = ""
- args.each do |arg|
- fmt += format("%s: %s", arg.class, arg.inspect)
- fmt += ", "
+ if args.null?
+ Snd.message("#<DEBUG>")
+ elsif args.length == 1
+ Snd.message("#<DEBUG: %s>", String(args.car))
+ else
+ Snd.message("#<DEBUG: %s>", format(*args))
end
- Snd.message("#<DEBUG: %s>", fmt.chomp(", "))
end
def debug_trace(*args)
diff --git a/clm2xen.c b/clm2xen.c
index 5b9b455..01abd2c 100644
--- a/clm2xen.c
+++ b/clm2xen.c
@@ -1061,14 +1061,14 @@ static XEN *make_vcts(int size)
enum {MUS_DATA_WRAPPER, MUS_INPUT_FUNCTION, MUS_ANALYZE_FUNCTION, MUS_EDIT_FUNCTION, MUS_SYNTHESIZE_FUNCTION, MUS_SELF_WRAPPER, MUS_MAX_VCTS};
-#if HAVE_S7
+#if HAVE_SCHEME
static XEN_MARK_OBJECT_TYPE mark_mus_xen(void *obj)
#else
static XEN_MARK_OBJECT_TYPE mark_mus_xen(XEN obj)
#endif
{
mus_xen *ms;
-#if HAVE_RUBY || HAVE_S7
+#if HAVE_RUBY || HAVE_SCHEME
/* rb_gc_mark and scheme_mark_object pass us the actual value, not the XEN wrapper */
ms = (mus_xen *)obj;
#endif
@@ -1101,7 +1101,7 @@ static void mus_xen_free(mus_xen *ms)
XEN_MAKE_OBJECT_FREE_PROCEDURE(mus_xen, free_mus_xen, mus_xen_free)
-#if HAVE_S7
+#if HAVE_SCHEME
static char *print_mus_xen(s7_scheme *sc, void *obj)
{
return(mus_describe(((mus_xen *)obj)->gen));
@@ -1140,7 +1140,7 @@ static XEN print_mus_xen(XEN obj)
#endif
-#if (!HAVE_S7)
+#if (!HAVE_SCHEME)
static XEN equalp_mus_xen(XEN obj1, XEN obj2)
{
if ((!(MUS_XEN_P(obj1))) || (!(MUS_XEN_P(obj2)))) return(XEN_FALSE);
@@ -1161,7 +1161,7 @@ static XEN mus_xen_apply(XEN gen, XEN arg1, XEN arg2)
}
#endif
-#if HAVE_S7
+#if HAVE_SCHEME
static XEN g_frame_set(XEN uf1, XEN uchan, XEN val);
static XEN g_mixer_set(XEN uf1, XEN in, XEN out, XEN val);
@@ -1237,7 +1237,7 @@ XEN mus_xen_to_object(mus_xen *gn) /* global for user-defined gens */
XEN mus_xen_to_object_with_vct(mus_xen *gn, XEN v) /* global for user-defined gens (not used anymore in this file) */
{
-#if HAVE_S7
+#if HAVE_SCHEME
if (!mus_vct_p(v)) fprintf(stderr, "vct arg clobbered");
#endif
gn->vcts[MUS_DATA_WRAPPER] = v;
@@ -1392,7 +1392,7 @@ static XEN call_set_method(XEN gen, XEN value, const char *method_name)
XEN_LIST_LENGTH(gen) - 1));
if (XEN_LIST_P(pair))
{
-#if HAVE_S7
+#if HAVE_SCHEME
if (s7_is_procedure_with_setter(XEN_CADR(pair)))
return(XEN_CALL_2(s7_procedure_with_setter_setter(XEN_CADR(pair)),
gen, value,
@@ -1420,7 +1420,7 @@ static XEN call_set_method_2(XEN gen, XEN arg, XEN value, const char *method_nam
XEN_LIST_LENGTH(gen) - 1));
if (XEN_LIST_P(pair))
{
-#if HAVE_S7
+#if HAVE_SCHEME
if (s7_is_procedure_with_setter(XEN_CADR(pair)))
return(XEN_CALL_3(s7_procedure_with_setter_setter(XEN_CADR(pair)),
gen, arg, value,
@@ -1812,7 +1812,7 @@ XEN g_mus_file_name(XEN gen)
#define H_mus_file_name "(" S_mus_file_name " gen): file associated with gen, if any"
if (XEN_LIST_P(gen)) return(call_get_method(gen, S_mus_file_name));
-#if HAVE_S7 && HAVE_PTHREADS
+#if HAVE_SCHEME && HAVE_PTHREADS
if (s7_is_thread_variable(gen))
gen = s7_thread_variable_value(s7, gen);
#endif
@@ -1825,7 +1825,7 @@ XEN g_mus_file_name(XEN gen)
/* ---------------- oscil ---------------- */
-#if (!HAVE_S7)
+#if (!HAVE_SCHEME)
static XEN g_make_oscil(XEN arg1, XEN arg2, XEN arg3, XEN arg4)
{
@@ -2764,7 +2764,7 @@ a new one is created. If normalize is " PROC_TRUE ", the resulting waveform goe
mus_float_t *partial_data = NULL;
mus_long_t len = 0, i;
bool partials_allocated = true;
-#if HAVE_S7
+#if HAVE_SCHEME
int gc_loc;
#endif
@@ -2807,7 +2807,7 @@ a new one is created. If normalize is " PROC_TRUE ", the resulting waveform goe
}
else table = utable;
-#if HAVE_S7
+#if HAVE_SCHEME
gc_loc = s7_gc_protect(s7, table);
#endif
@@ -2827,7 +2827,7 @@ a new one is created. If normalize is " PROC_TRUE ", the resulting waveform goe
if (partials_allocated)
free(partial_data);
-#if HAVE_S7
+#if HAVE_SCHEME
s7_gc_unprotect_at(s7, gc_loc);
#endif
@@ -2842,7 +2842,7 @@ static XEN g_phase_partials_to_wave(XEN partials, XEN utable, XEN normalize)
mus_float_t *partial_data = NULL, *wave;
mus_long_t len = 0, i;
bool partials_allocated = true;
-#if HAVE_S7
+#if HAVE_SCHEME
int gc_loc;
#endif
@@ -2899,7 +2899,7 @@ a new one is created. If normalize is " PROC_TRUE ", the resulting waveform goe
}
else table = utable;
-#if HAVE_S7
+#if HAVE_SCHEME
gc_loc = s7_gc_protect(s7, table);
#endif
@@ -2919,7 +2919,7 @@ a new one is created. If normalize is " PROC_TRUE ", the resulting waveform goe
if (partials_allocated)
free(partial_data);
-#if HAVE_S7
+#if HAVE_SCHEME
s7_gc_unprotect_at(s7, gc_loc);
#endif
@@ -5347,17 +5347,17 @@ static XEN g_env_any(XEN e, XEN func)
static XEN clm_output, clm_reverb; /* *output* and *reverb* at extlang level -- these can be output streams, vct, sound-data objects etc */
-#if (HAVE_S7 && (!HAVE_PTHREADS))
+#if (HAVE_SCHEME && (!HAVE_PTHREADS))
XEN mus_clm_output(void) {return(XEN_VARIABLE_REF(clm_output));}
XEN mus_clm_reverb(void) {return(XEN_VARIABLE_REF(clm_reverb));}
#endif
-#if (!HAVE_S7)
+#if (!HAVE_SCHEME)
XEN mus_clm_output(void) {return(XEN_VARIABLE_REF(S_output));}
XEN mus_clm_reverb(void) {return(XEN_VARIABLE_REF(S_reverb));}
#endif
-#if HAVE_S7 && HAVE_PTHREADS
+#if HAVE_SCHEME && HAVE_PTHREADS
XEN mus_clm_output(void)
{
XEN obj;
@@ -5389,7 +5389,7 @@ static XEN g_output_p(XEN obj)
{
#define H_mus_output_p "(" S_mus_output_p " gen): " PROC_TRUE " if gen is an output generator"
-#if HAVE_S7 && HAVE_PTHREADS
+#if HAVE_SCHEME && HAVE_PTHREADS
if (s7_is_thread_variable(obj))
obj = s7_thread_variable_value(s7, obj);
#endif
@@ -5416,7 +5416,7 @@ static XEN g_sample_to_file_p(XEN obj)
{
#define H_sample_to_file_p "(" S_sample_to_file_p " gen): " PROC_TRUE " if gen is a " S_sample_to_file " generator"
-#if HAVE_S7 && HAVE_PTHREADS
+#if HAVE_SCHEME && HAVE_PTHREADS
if (s7_is_thread_variable(obj))
obj = s7_thread_variable_value(s7, obj);
#endif
@@ -5429,7 +5429,7 @@ static XEN g_frame_to_file_p(XEN obj)
{
#define H_frame_to_file_p "(" S_frame_to_file_p " gen): " PROC_TRUE " if gen is a " S_frame_to_file " generator"
-#if HAVE_S7 && HAVE_PTHREADS
+#if HAVE_SCHEME && HAVE_PTHREADS
if (s7_is_thread_variable(obj))
obj = s7_thread_variable_value(s7, obj);
#endif
@@ -5548,7 +5548,7 @@ static XEN g_out_any_1(const char *caller, XEN frame, XEN chan, XEN val, XEN out
if (XEN_NOT_BOUND_P(outp))
outp = mus_clm_output();
-#if HAVE_S7 && HAVE_PTHREADS
+#if HAVE_SCHEME && HAVE_PTHREADS
else
{
if (s7_is_thread_variable(outp))
@@ -5644,7 +5644,7 @@ static XEN g_mus_close(XEN ptr)
if (MUS_XEN_P(ptr))
return(C_TO_XEN_INT(mus_close_file((mus_any *)XEN_TO_MUS_ANY(ptr))));
-#if HAVE_S7 && HAVE_PTHREADS
+#if HAVE_SCHEME && HAVE_PTHREADS
if (s7_is_thread_variable(ptr))
{
if (MUS_XEN_P(s7_thread_variable_value(s7, ptr)))
@@ -5694,7 +5694,7 @@ static XEN g_file_to_sample(XEN obj, XEN samp, XEN chan)
#define H_file_to_sample "(" S_file_to_sample " obj frame chan): sample value in sound file read by 'obj' in channel chan at frame"
int channel = 0;
-#if HAVE_S7 && HAVE_PTHREADS
+#if HAVE_SCHEME && HAVE_PTHREADS
if (s7_is_thread_variable(obj))
obj = s7_thread_variable_value(s7, obj);
#endif
@@ -5781,7 +5781,7 @@ static XEN g_sample_to_file(XEN obj, XEN samp, XEN chan, XEN val)
#define H_sample_to_file "(" S_sample_to_file " obj samp chan val): add val to the output stream \
handled by the output generator 'obj', in channel 'chan' at frame 'samp'"
-#if HAVE_S7 && HAVE_PTHREADS
+#if HAVE_SCHEME && HAVE_PTHREADS
if (s7_is_thread_variable(obj))
obj = s7_thread_variable_value(s7, obj);
#endif
@@ -5802,7 +5802,7 @@ static XEN g_sample_to_file_add(XEN obj1, XEN obj2)
{
#define H_sample_to_file_add "(" S_sample_to_file_add " obj1 obj2): mixes obj2 (an output generator) into obj1 (also an output generator)"
-#if HAVE_S7 && HAVE_PTHREADS
+#if HAVE_SCHEME && HAVE_PTHREADS
if (s7_is_thread_variable(obj2))
obj2 = s7_thread_variable_value(s7, obj2);
#endif
@@ -5914,7 +5914,7 @@ static XEN g_frame_to_file(XEN obj, XEN samp, XEN val)
#define H_frame_to_file "(" S_frame_to_file " obj samp val): add frame 'val' to the output stream \
handled by the output generator 'obj' at frame 'samp'"
-#if HAVE_S7 && HAVE_PTHREADS
+#if HAVE_SCHEME && HAVE_PTHREADS
if (s7_is_thread_variable(obj))
obj = s7_thread_variable_value(s7, obj);
#endif
@@ -6373,7 +6373,7 @@ return a new generator for signal placement in n channels. Channel 0 correspond
if (XEN_NOT_BOUND_P(keys3))
keys3 = mus_clm_output();
-#if HAVE_S7 && HAVE_PTHREADS
+#if HAVE_SCHEME && HAVE_PTHREADS
else
if (s7_is_thread_variable(keys3))
keys3 = s7_thread_variable_value(s7, keys3);
@@ -6381,7 +6381,7 @@ return a new generator for signal placement in n channels. Channel 0 correspond
if (XEN_NOT_BOUND_P(keys4))
keys4 = mus_clm_reverb();
-#if HAVE_S7 && HAVE_PTHREADS
+#if HAVE_SCHEME && HAVE_PTHREADS
else
if (s7_is_thread_variable(keys4))
keys4 = s7_thread_variable_value(s7, keys4);
@@ -6503,7 +6503,7 @@ XEN g_mus_channels(XEN obj)
if (sound_data_p(obj))
return(C_TO_XEN_INT((XEN_TO_SOUND_DATA(obj))->chans));
-#if HAVE_S7 && HAVE_PTHREADS
+#if HAVE_SCHEME && HAVE_PTHREADS
if (s7_is_thread_variable(obj))
return(C_TO_XEN_INT(mus_channels(XEN_TO_MUS_ANY(s7_thread_variable_value(s7, obj)))));
#endif
@@ -7793,7 +7793,7 @@ static XEN g_mus_irandom(XEN val) {return(C_TO_XEN_INT(mus_irandom(XEN_TO_C_INT(
-#if HAVE_S7
+#if HAVE_SCHEME
#if HAVE_GETTIMEOFDAY && HAVE_DIFFTIME && HAVE_SYS_TIME_H && (!MSC_VER)
#include <time.h>
@@ -7883,7 +7883,7 @@ XEN_NARGIFY_1(g_mus_order_w, g_mus_order)
XEN_NARGIFY_1(g_mus_data_w, g_mus_data)
XEN_NARGIFY_2(g_mus_set_data_w, g_mus_set_data)
XEN_NARGIFY_1(g_oscil_p_w, g_oscil_p)
-#if (!HAVE_S7)
+#if (!HAVE_SCHEME)
XEN_ARGIFY_4(g_make_oscil_w, g_make_oscil)
#endif
XEN_ARGIFY_3(g_oscil_w, g_oscil)
@@ -8182,7 +8182,7 @@ XEN_NARGIFY_1(g_mus_irandom_w, g_mus_irandom)
#define g_mus_data_w g_mus_data
#define g_mus_set_data_w g_mus_set_data
#define g_oscil_p_w g_oscil_p
-#if (!HAVE_S7)
+#if (!HAVE_SCHEME)
#define g_make_oscil_w g_make_oscil
#endif
#define g_oscil_w g_oscil
@@ -8430,7 +8430,7 @@ static void mus_xen_init(void)
current_connect_func = XEN_FALSE;
#endif
-#if HAVE_S7
+#if HAVE_SCHEME
mus_xen_tag = XEN_MAKE_OBJECT_TYPE("<generator>", print_mus_xen, free_mus_xen, s7_equalp_mus_xen, mark_mus_xen,
mus_xen_apply, s7_mus_set, s7_mus_length, s7_mus_copy, s7_mus_fill);
#else
@@ -8608,7 +8608,7 @@ static void mus_xen_init(void)
XEN_DEFINE_PROCEDURE(S_mus_xcoeffs, g_mus_xcoeffs_w, 1, 0, 0, H_mus_xcoeffs);
XEN_DEFINE_PROCEDURE(S_mus_ycoeffs, g_mus_ycoeffs_w, 1, 0, 0, H_mus_ycoeffs);
XEN_DEFINE_PROCEDURE(S_oscil_p, g_oscil_p_w, 1, 0, 0, H_oscil_p);
-#if (!HAVE_S7)
+#if (!HAVE_SCHEME)
XEN_DEFINE_PROCEDURE(S_make_oscil, g_make_oscil_w, 0, 4, 0, H_make_oscil);
#else
XEN_DEFINE_PROCEDURE_STAR(S_make_oscil, g_make_oscil, "(frequency *clm-default-frequency*) (initial-phase 0.0)", H_make_oscil);
@@ -8912,7 +8912,7 @@ static void mus_xen_init(void)
XEN_DEFINE_VARIABLE(S_output, clm_output, XEN_FALSE);
XEN_DEFINE_VARIABLE(S_reverb, clm_reverb, XEN_FALSE);
-#if HAVE_S7 && HAVE_GETTIMEOFDAY && HAVE_DIFFTIME && HAVE_SYS_TIME_H && (!MSC_VER)
+#if HAVE_SCHEME && HAVE_GETTIMEOFDAY && HAVE_DIFFTIME && HAVE_SYS_TIME_H && (!MSC_VER)
XEN_DEFINE_PROCEDURE("get-internal-real-time", g_get_internal_real_time_w, 0, 0, 0, "get system time");
XEN_DEFINE_CONSTANT("internal-time-units-per-second", 1, "clock speed");
#endif
@@ -8922,7 +8922,7 @@ static void mus_xen_init(void)
#if (!USE_SND)
#if HAVE_FORTH
- XEN_EVAL_C_STRING(": clm-print ( fmt lst -- ) 0 drop ;");
+XEN_EVAL_C_STRING("<'> fth-print alias clm-print ( fmt :optional args -- )");
#endif
#if HAVE_RUBY
@@ -8945,7 +8945,7 @@ static void mus_xen_init(void)
free(clm_version);
}
-#if HAVE_S7 && HAVE_GETTIMEOFDAY && HAVE_DIFFTIME && HAVE_SYS_TIME_H && (!MSC_VER)
+#if HAVE_SCHEME && HAVE_GETTIMEOFDAY && HAVE_DIFFTIME && HAVE_SYS_TIME_H && (!MSC_VER)
{
struct timezone z0;
gettimeofday(&overall_start_time, &z0);
diff --git a/configure b/configure
index d1e9ed5..2ac87b2 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.65 for snd 11.2.
+# Generated by GNU Autoconf 2.65 for snd 11.3.
#
# Report bugs to <bil@ccrma.stanford.edu>.
#
@@ -552,8 +552,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='snd'
PACKAGE_TARNAME='ftp://ccrma-ftp.stanford.edu/pub/Lisp/snd-11.tar.gz'
-PACKAGE_VERSION='11.2'
-PACKAGE_STRING='snd 11.2'
+PACKAGE_VERSION='11.3'
+PACKAGE_STRING='snd 11.3'
PACKAGE_BUGREPORT='bil@ccrma.stanford.edu'
PACKAGE_URL=''
@@ -598,20 +598,6 @@ ac_subst_vars='LTLIBOBJS
LIBOBJS
MAKE_TARGET
ORIGINAL_LDFLAGS
-POSUB
-LTLIBINTL
-LIBINTL
-INTLLIBS
-LTLIBICONV
-LIBICONV
-INTL_MACOSX_LIBS
-MSGMERGE
-XGETTEXT
-GMSGFMT
-MSGFMT
-USE_NLS
-MKINSTALLDIRS
-SET_MAKE
SNDLIB_LIB
SNDLIB_FILES
SNDLIB_CONFIG
@@ -667,7 +653,6 @@ FFTW_CFLAGS
FFTW_LIBS
PKG_CONFIG
FGREP
-RT_LIBS
SND_VERSION
SND_PACKAGE
INSTALL_DATA
@@ -770,12 +755,9 @@ with_temp_dir
with_save_dir
with_doc_dir
with_snd_as_widget
-with_snd_as_pd_external
-with_rt
with_threads
enable_threads
enable_largefile
-with_gnu_ld
with_x
enable_readline
with_ruby_prefix
@@ -783,10 +765,6 @@ with_ruby
with_forth
enable_snd_debug
with_shared_sndlib
-enable_nls
-enable_rpath
-with_libiconv_prefix
-with_libintl_prefix
enable_deprecated
'
ac_precious_vars='build_alias
@@ -1340,7 +1318,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures snd 11.2 to adapt to many kinds of systems.
+\`configure' configures snd 11.3 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1410,7 +1388,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of snd 11.2:";;
+ short | recursive ) echo "Configuration of snd 11.3:";;
esac
cat <<\_ACEOF
@@ -1422,8 +1400,6 @@ Optional Features:
--disable-largefile omit support for large files
--enable-readline include readline (the default)
--enable-snd-debug include internal Snd debugging functions
- --disable-nls do not use Native Language Support
- --disable-rpath do not hardcode runtime library paths
--disable-deprecated do not include any deprecated stuff from gtk, s7, motif, clm, snd, or sndlib
Optional Packages:
@@ -1467,19 +1443,12 @@ Optional Packages:
--with-save-dir directory to use for saved-state files
--with-doc-dir directory to search for documentation
--with-snd-as-widget make Snd a loadable widget, not a standalone program
- --with-snd-as-pd-external make Snd a loadable pd external, not a standalone program
- --with-rt makes Snd capable of running Snd-Rt
--with-threads include pthread support, same as --enable-threads
- --with-gnu-ld assume the C compiler uses GNU ld default=no
--with-x use the X Window System
--with-ruby-prefix=PFX where Ruby is installed
--with-ruby use Ruby as the extension language
--with-forth use Forth as the extension language
--with-shared-sndlib try to load libsndlib.so
- --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib
- --without-libiconv-prefix don't search for libiconv in includedir and libdir
- --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib
- --without-libintl-prefix don't search for libintl in includedir and libdir
Some influential environment variables:
CC C compiler command
@@ -1558,7 +1527,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-snd configure 11.2
+snd configure 11.3
generated by GNU Autoconf 2.65
Copyright (C) 2009 Free Software Foundation, Inc.
@@ -1689,6 +1658,52 @@ fi
} # ac_fn_c_try_run
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
# -------------------------------------------------------
# Tests whether HEADER exists, giving a warning if it cannot be compiled using
@@ -1813,52 +1828,6 @@ $as_echo "$ac_res" >&6; }
} # ac_fn_c_check_header_compile
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_link ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext conftest$ac_exeext
- if { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- grep -v '^ *+' conftest.err >conftest.er1
- cat conftest.er1 >&5
- mv -f conftest.er1 conftest.err
- fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then :
- ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=1
-fi
- # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
- # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
- # interfere with the next link command; also delete a directory that is
- # left behind by Apple's compiler. We do this before executing the actions.
- rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
- as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_link
-
# ac_fn_c_check_decl LINENO SYMBOL VAR
# ------------------------------------
# Tests whether SYMBOL is declared, setting cache variable VAR accordingly.
@@ -2275,7 +2244,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by snd $as_me 11.2, which was
+It was created by snd $as_me 11.3, which was
generated by GNU Autoconf 2.65. Invocation command line was
$ $0 $@
@@ -2720,7 +2689,7 @@ case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
ac_config_headers="$ac_config_headers mus-config.h sndlib.h"
-ac_config_files="$ac_config_files makefile po/Makefile.in"
+ac_config_files="$ac_config_files makefile"
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
@@ -3997,7 +3966,7 @@ LOCAL_LANGUAGE="None"
GRAPHICS_TOOLKIT="None"
PACKAGE=Snd
-VERSION=11.2
+VERSION=11.3
cat >>confdefs.h <<_ACEOF
#define SND_PACKAGE "$PACKAGE"
_ACEOF
@@ -4024,7 +3993,6 @@ _ACEOF
# --with-jack use Jack
# --with-static-alsa use ALSA statically loaded (for RPM generation)
# --with-snd-as-widget make Snd a loadable widget, not a standalone program
-# --with-snd-as-pd-external make Snd a loadable pd external, not a standalone program
# --with-doubles use doubles throughout (default is floats)
# --with-float-samples represent samples internally as floats or doubles (default=yes)
# --with-gmp include multiprecision arithmetic via gmp, mpfr, and mpc
@@ -4042,7 +4010,6 @@ _ACEOF
# --with-ruby-prefix set location of Ruby
# --with-s7 use S7 as the extension language (default = yes)
# --with-extension-language use some extension language (default=yes)
-# --with-rt make Snd capable of running Snd-Rt
# --with-static-xm include xm module
# --with-temp-dir directory to use for temp files
# --with-save-dir directory to use for saved-state files
@@ -4375,131 +4342,6 @@ if test "${with_snd_as_widget+set}" = set; then :
fi
-
-# Check whether --with-snd-as-pd-external was given.
-if test "${with_snd_as_pd_external+set}" = set; then :
- withval=$with_snd_as_pd_external; if test "$with_snd_as_pd_external" = yes ; then
-
- if test "$with_motif" = yes || test "$with_gtk" = yes ; then
- { as_fn_set_status motif or gtk can not be used.
-as_fn_error "When making snd as a pd external" "$LINENO" 5; }
- fi
- if test "$with_ruby" = yes ; then
- { as_fn_set_status ruby can not be used as extension language.
-as_fn_error "When making snd as a pd external" "$LINENO" 5; }
- fi
-
- CFLAGS="$CFLAGS -DSND_PD_PATH=\\\"`pwd`\\\""
- with_jack=yes
- $as_echo "#define SND_AS_PD_EXTERNAL 1" >>confdefs.h
-
- MAKE_TARGET=external
- RANDOM_FEATURES="$RANDOM_FEATURES pd-external"
-
- case "$host" in
- *-apple-*)
-# CFLAGS="$CFLAGS -DPD -I. -bundle -undefined suppress -flat_namespace"
- CFLAGS="$CFLAGS -DPD -I. -undefined suppress -flat_namespace"
- ;;
- esac
-
- fi
-fi
-
-
-RT_LIBS=""
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
- inttypes.h stdint.h unistd.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-eval as_val=\$$as_ac_Header
- if test "x$as_val" = x""yes; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-# Check whether --with-rt was given.
-if test "${with_rt+set}" = set; then :
- withval=$with_rt; if test "$with_rt" = yes ; then
-
- ac_fn_c_check_header_mongrel "$LINENO" "rollendurchmesserzeitsammler.h" "ac_cv_header_rollendurchmesserzeitsammler_h" "$ac_includes_default"
-if test "x$ac_cv_header_rollendurchmesserzeitsammler_h" = x""yes; then :
-
-fi
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tar_get_dynamic_roots_for in -lrollendurchmesserzeitsammler" >&5
-$as_echo_n "checking for tar_get_dynamic_roots_for in -lrollendurchmesserzeitsammler... " >&6; }
-if test "${ac_cv_lib_rollendurchmesserzeitsammler_tar_get_dynamic_roots_for+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lrollendurchmesserzeitsammler $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char tar_get_dynamic_roots_for ();
-int
-main ()
-{
-return tar_get_dynamic_roots_for ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_rollendurchmesserzeitsammler_tar_get_dynamic_roots_for=yes
-else
- ac_cv_lib_rollendurchmesserzeitsammler_tar_get_dynamic_roots_for=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rollendurchmesserzeitsammler_tar_get_dynamic_roots_for" >&5
-$as_echo "$ac_cv_lib_rollendurchmesserzeitsammler_tar_get_dynamic_roots_for" >&6; }
-if test "x$ac_cv_lib_rollendurchmesserzeitsammler_tar_get_dynamic_roots_for" = x""yes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBROLLENDURCHMESSERZEITSAMMLER 1
-_ACEOF
-
- LIBS="-lrollendurchmesserzeitsammler $LIBS"
-
-fi
-
-
- RT_LIBS="-lrollendurchmesserzeitsammler"
- OPTIONAL_LIBRARIES="$OPTIONAL_LIBRARIES rollendurchmesserzeitsammler"
-
- with_jack=yes
- with_guile=yes
-
- $as_echo "#define WITH_RT 1" >>confdefs.h
-
-
- fi
-fi
-
-
-
-
-
# if mingw add -mwindows to the load flags (I think this means we're trying to build a GUI app, not just a console app??)
case "$host" in
*-*-mingw*)
@@ -4595,6 +4437,24 @@ fi
# AC_CHECK_LIB(dl,main)
# I don't think I need libdl in S7, and the other extension languages will call for it if needed
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+eval as_val=\$$as_ac_Header
+ if test "x$as_val" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
for ac_header in fcntl.h limits.h unistd.h string.h sys/soundcard.h machine/soundcard.h sys/mixer.h stdbool.h sys/time.h
do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
@@ -5153,73 +5013,6 @@ _ACEOF
fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and DECIMAL_POINT" >&5
-$as_echo_n "checking for nl_langinfo and DECIMAL_POINT... " >&6; }
-if test "${am_cv_langinfo_decimal_point+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <langinfo.h>
-int
-main ()
-{
-char* cs = nl_langinfo(DECIMAL_POINT);
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- am_cv_langinfo_decimal_point=yes
-else
- am_cv_langinfo_decimal_point=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_decimal_point" >&5
-$as_echo "$am_cv_langinfo_decimal_point" >&6; }
- if test $am_cv_langinfo_decimal_point = yes; then
-
-$as_echo "#define HAVE_LANGINFO_DECIMAL_POINT 1" >>confdefs.h
-
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and RADIXCHAR" >&5
-$as_echo_n "checking for nl_langinfo and RADIXCHAR... " >&6; }
-if test "${am_cv_langinfo_radixchar+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <langinfo.h>
-int
-main ()
-{
-char* cs = nl_langinfo(RADIXCHAR);
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- am_cv_langinfo_radixchar=yes
-else
- am_cv_langinfo_radixchar=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_radixchar" >&5
-$as_echo "$am_cv_langinfo_radixchar" >&6; }
- if test $am_cv_langinfo_radixchar = yes; then
-
-$as_echo "#define HAVE_LANGINFO_RADIXCHAR 1" >>confdefs.h
-
- fi
- fi
-
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
@@ -5554,119 +5347,6 @@ fi
done
-
-# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
- withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
-else
- with_gnu_ld=no
-fi
-
-# Prepare PATH_SEPARATOR.
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
-fi
-ac_prog=ld
-if test "$GCC" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5
-$as_echo_n "checking for ld used by GCC... " >&6; }
- case $host in
- *-*-mingw*)
- # gcc leaves a trailing carriage return which upsets mingw
- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
- *)
- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
- esac
- case $ac_prog in
- # Accept absolute paths.
- [\\/]* | [A-Za-z]:[\\/]*)
- re_direlt='/[^/][^/]*/\.\./'
- # Canonicalize the path of ld
- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
- done
- test -z "$LD" && LD="$ac_prog"
- ;;
- "")
- # If it fails, then pretend we aren't using GCC.
- ac_prog=ld
- ;;
- *)
- # If it is relative, then search for the first ld in PATH.
- with_gnu_ld=unknown
- ;;
- esac
-elif test "$with_gnu_ld" = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
-fi
-if test "${acl_cv_path_LD+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- if test -z "$LD"; then
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
- for ac_dir in $PATH; do
- test -z "$ac_dir" && ac_dir=.
- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- acl_cv_path_LD="$ac_dir/$ac_prog"
- # Check to see if the program is GNU ld. I'd rather use --version,
- # but apparently some GNU ld's only accept -v.
- # Break only if it was the GNU/non-GNU ld that we prefer.
- case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
- *GNU* | *'with BFD'*)
- test "$with_gnu_ld" != no && break ;;
- *)
- test "$with_gnu_ld" != yes && break ;;
- esac
- fi
- done
- IFS="$ac_save_ifs"
-else
- acl_cv_path_LD="$LD" # Let the user override the test with a path.
-fi
-fi
-
-LD="$acl_cv_path_LD"
-if test -n "$LD"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if test "${acl_cv_prog_gnu_ld+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- # I'd rather use --version here, but apparently some GNU ld's only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
- acl_cv_prog_gnu_ld=yes ;;
-*)
- acl_cv_prog_gnu_ld=no ;;
-esac
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5
-$as_echo "$acl_cv_prog_gnu_ld" >&6; }
-with_gnu_ld=$acl_cv_prog_gnu_ld
-
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
$as_echo_n "checking for fgrep... " >&6; }
if test "${ac_cv_path_FGREP+set}" = set; then :
@@ -9475,9 +9155,9 @@ if test "x$ac_cv_lib_m_gtk_widget_get_visible" = x""yes; then :
fi
# for 2.19.n
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gtk_tool_palette_new in -lm" >&5
-$as_echo_n "checking for gtk_tool_palette_new in -lm... " >&6; }
-if test "${ac_cv_lib_m_gtk_tool_palette_new+set}" = set; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gtk_entry_get_text_window in -lm" >&5
+$as_echo_n "checking for gtk_entry_get_text_window in -lm... " >&6; }
+if test "${ac_cv_lib_m_gtk_entry_get_text_window+set}" = set; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -9491,28 +9171,28 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
#ifdef __cplusplus
extern "C"
#endif
-char gtk_tool_palette_new ();
+char gtk_entry_get_text_window ();
int
main ()
{
-return gtk_tool_palette_new ();
+return gtk_entry_get_text_window ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_m_gtk_tool_palette_new=yes
+ ac_cv_lib_m_gtk_entry_get_text_window=yes
else
- ac_cv_lib_m_gtk_tool_palette_new=no
+ ac_cv_lib_m_gtk_entry_get_text_window=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_gtk_tool_palette_new" >&5
-$as_echo "$ac_cv_lib_m_gtk_tool_palette_new" >&6; }
-if test "x$ac_cv_lib_m_gtk_tool_palette_new" = x""yes; then :
- $as_echo "#define HAVE_GTK_TOOL_PALETTE_NEW 1" >>confdefs.h
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_gtk_entry_get_text_window" >&5
+$as_echo "$ac_cv_lib_m_gtk_entry_get_text_window" >&6; }
+if test "x$ac_cv_lib_m_gtk_entry_get_text_window" = x""yes; then :
+ $as_echo "#define HAVE_GTK_ENTRY_GET_TEXT_WINDOW 1" >>confdefs.h
fi
@@ -10530,8 +10210,6 @@ if test "$with_s7" != no && test "$with_extension_language" != no && test "$ac_s
$as_echo "#define HAVE_MAKE_RATIO 1" >>confdefs.h
- $as_echo "#define WITH_CASE_SENSITIVE_SYMBOL_NAMES 1" >>confdefs.h
-
$as_echo "#define WITH_MULTIDIMENSIONAL_VECTORS 1" >>confdefs.h
ac_fn_c_check_header_mongrel "$LINENO" "complex.h" "ac_cv_header_complex_h" "$ac_includes_default"
@@ -12210,1607 +11888,6 @@ fi
#--------------------------------------------------------------------------------
-# gettext
-#--------------------------------------------------------------------------------
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
-set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then :
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
- @echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
- *@@@%%%=?*=@@@%%%*)
- eval ac_cv_prog_make_${ac_make}_set=yes;;
- *)
- eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- SET_MAKE=
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-
- MKINSTALLDIRS=
- if test -n "$ac_aux_dir"; then
- case "$ac_aux_dir" in
- /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;;
- *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;;
- esac
- fi
- if test -z "$MKINSTALLDIRS"; then
- MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
- fi
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
-$as_echo_n "checking whether NLS is requested... " >&6; }
- # Check whether --enable-nls was given.
-if test "${enable_nls+set}" = set; then :
- enableval=$enable_nls; USE_NLS=$enableval
-else
- USE_NLS=yes
-fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
-$as_echo "$USE_NLS" >&6; }
-
-
-
-
-
-
-# Prepare PATH_SEPARATOR.
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
-fi
-
-# Find out how to test for executable files. Don't use a zero-byte file,
-# as systems may use methods other than mode bits to determine executability.
-cat >conf$$.file <<_ASEOF
-#! /bin/sh
-exit 0
-_ASEOF
-chmod +x conf$$.file
-if test -x conf$$.file >/dev/null 2>&1; then
- ac_executable_p="test -x"
-else
- ac_executable_p="test -f"
-fi
-rm -f conf$$.file
-
-# Extract the first word of "msgfmt", so it can be a program name with args.
-set dummy msgfmt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_MSGFMT+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- case "$MSGFMT" in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
- ;;
- *)
- ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH; do
- IFS="$ac_save_IFS"
- test -z "$ac_dir" && ac_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
- echo "$as_me: trying $ac_dir/$ac_word..." >&5
- if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 &&
- (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
- ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext"
- break 2
- fi
- fi
- done
- done
- IFS="$ac_save_IFS"
- test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":"
- ;;
-esac
-fi
-MSGFMT="$ac_cv_path_MSGFMT"
-if test "$MSGFMT" != ":"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
-$as_echo "$MSGFMT" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- # Extract the first word of "gmsgfmt", so it can be a program name with args.
-set dummy gmsgfmt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_GMSGFMT+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- case $GMSGFMT in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
- ;;
-esac
-fi
-GMSGFMT=$ac_cv_path_GMSGFMT
-if test -n "$GMSGFMT"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5
-$as_echo "$GMSGFMT" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-
-# Prepare PATH_SEPARATOR.
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
-fi
-
-# Find out how to test for executable files. Don't use a zero-byte file,
-# as systems may use methods other than mode bits to determine executability.
-cat >conf$$.file <<_ASEOF
-#! /bin/sh
-exit 0
-_ASEOF
-chmod +x conf$$.file
-if test -x conf$$.file >/dev/null 2>&1; then
- ac_executable_p="test -x"
-else
- ac_executable_p="test -f"
-fi
-rm -f conf$$.file
-
-# Extract the first word of "xgettext", so it can be a program name with args.
-set dummy xgettext; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_XGETTEXT+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- case "$XGETTEXT" in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
- ;;
- *)
- ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH; do
- IFS="$ac_save_IFS"
- test -z "$ac_dir" && ac_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
- echo "$as_me: trying $ac_dir/$ac_word..." >&5
- if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 &&
- (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
- ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext"
- break 2
- fi
- fi
- done
- done
- IFS="$ac_save_IFS"
- test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
- ;;
-esac
-fi
-XGETTEXT="$ac_cv_path_XGETTEXT"
-if test "$XGETTEXT" != ":"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
-$as_echo "$XGETTEXT" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- rm -f messages.po
-
-
-# Prepare PATH_SEPARATOR.
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
-fi
-
-# Find out how to test for executable files. Don't use a zero-byte file,
-# as systems may use methods other than mode bits to determine executability.
-cat >conf$$.file <<_ASEOF
-#! /bin/sh
-exit 0
-_ASEOF
-chmod +x conf$$.file
-if test -x conf$$.file >/dev/null 2>&1; then
- ac_executable_p="test -x"
-else
- ac_executable_p="test -f"
-fi
-rm -f conf$$.file
-
-# Extract the first word of "msgmerge", so it can be a program name with args.
-set dummy msgmerge; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_MSGMERGE+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- case "$MSGMERGE" in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path.
- ;;
- *)
- ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH; do
- IFS="$ac_save_IFS"
- test -z "$ac_dir" && ac_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
- echo "$as_me: trying $ac_dir/$ac_word..." >&5
- if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then
- ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext"
- break 2
- fi
- fi
- done
- done
- IFS="$ac_save_IFS"
- test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":"
- ;;
-esac
-fi
-MSGMERGE="$ac_cv_path_MSGMERGE"
-if test "$MSGMERGE" != ":"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5
-$as_echo "$MSGMERGE" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- if test "$GMSGFMT" != ":"; then
- if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 &&
- (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
- : ;
- else
- GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5
-$as_echo "found $GMSGFMT program is not GNU msgfmt; ignore it" >&6; }
- GMSGFMT=":"
- fi
- fi
-
- if test "$XGETTEXT" != ":"; then
- if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 &&
- (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
- : ;
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5
-$as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; }
- XGETTEXT=":"
- fi
- rm -f messages.po
- fi
-
- ac_config_commands="$ac_config_commands default-1"
-
-
-
- if test "X$prefix" = "XNONE"; then
- acl_final_prefix="$ac_default_prefix"
- else
- acl_final_prefix="$prefix"
- fi
- if test "X$exec_prefix" = "XNONE"; then
- acl_final_exec_prefix='${prefix}'
- else
- acl_final_exec_prefix="$exec_prefix"
- fi
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
- prefix="$acl_save_prefix"
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5
-$as_echo_n "checking for shared library run path origin... " >&6; }
-if test "${acl_cv_rpath+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
-
- CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
- ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
- . ./conftest.sh
- rm -f ./conftest.sh
- acl_cv_rpath=done
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5
-$as_echo "$acl_cv_rpath" >&6; }
- wl="$acl_cv_wl"
- libext="$acl_cv_libext"
- shlibext="$acl_cv_shlibext"
- hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
- hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
- hardcode_direct="$acl_cv_hardcode_direct"
- hardcode_minus_L="$acl_cv_hardcode_minus_L"
- # Check whether --enable-rpath was given.
-if test "${enable_rpath+set}" = set; then :
- enableval=$enable_rpath; :
-else
- enable_rpath=yes
-fi
-
-
-
-
-
-
-
-
- use_additional=yes
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
-
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
-
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
-
-# Check whether --with-libiconv-prefix was given.
-if test "${with_libiconv_prefix+set}" = set; then :
- withval=$with_libiconv_prefix;
- if test "X$withval" = "Xno"; then
- use_additional=no
- else
- if test "X$withval" = "X"; then
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
-
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
-
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- else
- additional_includedir="$withval/include"
- additional_libdir="$withval/lib"
- fi
- fi
-
-fi
-
- LIBICONV=
- LTLIBICONV=
- INCICONV=
- rpathdirs=
- ltrpathdirs=
- names_already_handled=
- names_next_round='iconv '
- while test -n "$names_next_round"; do
- names_this_round="$names_next_round"
- names_next_round=
- for name in $names_this_round; do
- already_handled=
- for n in $names_already_handled; do
- if test "$n" = "$name"; then
- already_handled=yes
- break
- fi
- done
- if test -z "$already_handled"; then
- names_already_handled="$names_already_handled $name"
- uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
- eval value=\"\$HAVE_LIB$uppername\"
- if test -n "$value"; then
- if test "$value" = yes; then
- eval value=\"\$LIB$uppername\"
- test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value"
- eval value=\"\$LTLIB$uppername\"
- test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value"
- else
- :
- fi
- else
- found_dir=
- found_la=
- found_so=
- found_a=
- if test $use_additional = yes; then
- if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
- found_dir="$additional_libdir"
- found_so="$additional_libdir/lib$name.$shlibext"
- if test -f "$additional_libdir/lib$name.la"; then
- found_la="$additional_libdir/lib$name.la"
- fi
- else
- if test -f "$additional_libdir/lib$name.$libext"; then
- found_dir="$additional_libdir"
- found_a="$additional_libdir/lib$name.$libext"
- if test -f "$additional_libdir/lib$name.la"; then
- found_la="$additional_libdir/lib$name.la"
- fi
- fi
- fi
- fi
- if test "X$found_dir" = "X"; then
- for x in $LDFLAGS $LTLIBICONV; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- case "$x" in
- -L*)
- dir=`echo "X$x" | sed -e 's/^X-L//'`
- if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
- found_dir="$dir"
- found_so="$dir/lib$name.$shlibext"
- if test -f "$dir/lib$name.la"; then
- found_la="$dir/lib$name.la"
- fi
- else
- if test -f "$dir/lib$name.$libext"; then
- found_dir="$dir"
- found_a="$dir/lib$name.$libext"
- if test -f "$dir/lib$name.la"; then
- found_la="$dir/lib$name.la"
- fi
- fi
- fi
- ;;
- esac
- if test "X$found_dir" != "X"; then
- break
- fi
- done
- fi
- if test "X$found_dir" != "X"; then
- LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name"
- if test "X$found_so" != "X"; then
- if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
- LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
- else
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $found_dir"
- fi
- if test "$hardcode_direct" = yes; then
- LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
- else
- if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
- LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $found_dir"
- fi
- else
- haveit=
- for x in $LDFLAGS $LIBICONV; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-L$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir"
- fi
- if test "$hardcode_minus_L" != no; then
- LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
- else
- LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
- fi
- fi
- fi
- fi
- else
- if test "X$found_a" != "X"; then
- LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a"
- else
- LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name"
- fi
- fi
- additional_includedir=
- case "$found_dir" in
- */lib | */lib/)
- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
- additional_includedir="$basedir/include"
- ;;
- esac
- if test "X$additional_includedir" != "X"; then
- if test "X$additional_includedir" != "X/usr/include"; then
- haveit=
- if test "X$additional_includedir" = "X/usr/local/include"; then
- if test -n "$GCC"; then
- case $host_os in
- linux* | gnu* | k*bsd*-gnu) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- for x in $CPPFLAGS $INCICONV; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-I$additional_includedir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_includedir"; then
- INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir"
- fi
- fi
- fi
- fi
- fi
- if test -n "$found_la"; then
- save_libdir="$libdir"
- case "$found_la" in
- */* | *\\*) . "$found_la" ;;
- *) . "./$found_la" ;;
- esac
- libdir="$save_libdir"
- for dep in $dependency_libs; do
- case "$dep" in
- -L*)
- additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
- if test "X$additional_libdir" != "X/usr/lib"; then
- haveit=
- if test "X$additional_libdir" = "X/usr/local/lib"; then
- if test -n "$GCC"; then
- case $host_os in
- linux* | gnu* | k*bsd*-gnu) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- haveit=
- for x in $LDFLAGS $LIBICONV; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir"
- fi
- fi
- haveit=
- for x in $LDFLAGS $LTLIBICONV; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir"
- fi
- fi
- fi
- fi
- ;;
- -R*)
- dir=`echo "X$dep" | sed -e 's/^X-R//'`
- if test "$enable_rpath" != no; then
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $dir"
- fi
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $dir"
- fi
- fi
- ;;
- -l*)
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
- ;;
- *.la)
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
- ;;
- *)
- LIBICONV="${LIBICONV}${LIBICONV:+ }$dep"
- LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep"
- ;;
- esac
- done
- fi
- else
- LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
- LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name"
- fi
- fi
- fi
- done
- done
- if test "X$rpathdirs" != "X"; then
- if test -n "$hardcode_libdir_separator"; then
- alldirs=
- for found_dir in $rpathdirs; do
- alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
- done
- acl_save_libdir="$libdir"
- libdir="$alldirs"
- eval flag=\"$hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
- else
- for found_dir in $rpathdirs; do
- acl_save_libdir="$libdir"
- libdir="$found_dir"
- eval flag=\"$hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
- done
- fi
- fi
- if test "X$ltrpathdirs" != "X"; then
- for found_dir in $ltrpathdirs; do
- LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir"
- done
- fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5
-$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; }
-if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- gt_save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers"
- gt_save_LIBS="$LIBS"
- LIBS="$LIBS -framework CoreFoundation"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <CFPreferences.h>
-int
-main ()
-{
-CFPreferencesCopyAppValue(NULL, NULL)
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- gt_cv_func_CFPreferencesCopyAppValue=yes
-else
- gt_cv_func_CFPreferencesCopyAppValue=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- CPPFLAGS="$gt_save_CPPFLAGS"
- LIBS="$gt_save_LIBS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
-$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; }
- if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
-
-$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h
-
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5
-$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; }
-if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- gt_save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers"
- gt_save_LIBS="$LIBS"
- LIBS="$LIBS -framework CoreFoundation"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <CFLocale.h>
-int
-main ()
-{
-CFLocaleCopyCurrent();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- gt_cv_func_CFLocaleCopyCurrent=yes
-else
- gt_cv_func_CFLocaleCopyCurrent=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- CPPFLAGS="$gt_save_CPPFLAGS"
- LIBS="$gt_save_LIBS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5
-$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; }
- if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
-
-$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h
-
- fi
- INTL_MACOSX_LIBS=
- if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
- INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
- fi
-
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
-$as_echo_n "checking whether NLS is requested... " >&6; }
- # Check whether --enable-nls was given.
-if test "${enable_nls+set}" = set; then :
- enableval=$enable_nls; USE_NLS=$enableval
-else
- USE_NLS=yes
-fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
-$as_echo "$USE_NLS" >&6; }
-
-
-
-
- LIBINTL=
- LTLIBINTL=
- POSUB=
-
- if test "$USE_NLS" = "yes"; then
- gt_use_preinstalled_gnugettext=no
-
-
-
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5
-$as_echo_n "checking for GNU gettext in libc... " >&6; }
-if test "${gt_cv_func_gnugettext1_libc+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <libintl.h>
-extern int _nl_msg_cat_cntr;
-extern int *_nl_domain_bindings;
-int
-main ()
-{
-bindtextdomain ("", "");
-return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- gt_cv_func_gnugettext1_libc=yes
-else
- gt_cv_func_gnugettext1_libc=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext1_libc" >&5
-$as_echo "$gt_cv_func_gnugettext1_libc" >&6; }
-
- if test "$gt_cv_func_gnugettext1_libc" != "yes"; then
-
-
-
-
-
- am_save_CPPFLAGS="$CPPFLAGS"
-
- for element in $INCICONV; do
- haveit=
- for x in $CPPFLAGS; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X$element"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
- fi
- done
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5
-$as_echo_n "checking for iconv... " >&6; }
-if test "${am_cv_func_iconv+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
-
- am_cv_func_iconv="no, consider installing GNU libiconv"
- am_cv_lib_iconv=no
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdlib.h>
-#include <iconv.h>
-int
-main ()
-{
-iconv_t cd = iconv_open("","");
- iconv(cd,NULL,NULL,NULL,NULL);
- iconv_close(cd);
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- am_cv_func_iconv=yes
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- if test "$am_cv_func_iconv" != yes; then
- am_save_LIBS="$LIBS"
- LIBS="$LIBS $LIBICONV"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdlib.h>
-#include <iconv.h>
-int
-main ()
-{
-iconv_t cd = iconv_open("","");
- iconv(cd,NULL,NULL,NULL,NULL);
- iconv_close(cd);
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- am_cv_lib_iconv=yes
- am_cv_func_iconv=yes
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- LIBS="$am_save_LIBS"
- fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5
-$as_echo "$am_cv_func_iconv" >&6; }
- if test "$am_cv_func_iconv" = yes; then
-
-$as_echo "#define HAVE_ICONV 1" >>confdefs.h
-
- fi
- if test "$am_cv_lib_iconv" = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5
-$as_echo_n "checking how to link with libiconv... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5
-$as_echo "$LIBICONV" >&6; }
- else
- CPPFLAGS="$am_save_CPPFLAGS"
- LIBICONV=
- LTLIBICONV=
- fi
-
-
-
-
-
-
- use_additional=yes
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
-
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
-
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
-
-# Check whether --with-libintl-prefix was given.
-if test "${with_libintl_prefix+set}" = set; then :
- withval=$with_libintl_prefix;
- if test "X$withval" = "Xno"; then
- use_additional=no
- else
- if test "X$withval" = "X"; then
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
-
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
-
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- else
- additional_includedir="$withval/include"
- additional_libdir="$withval/lib"
- fi
- fi
-
-fi
-
- LIBINTL=
- LTLIBINTL=
- INCINTL=
- rpathdirs=
- ltrpathdirs=
- names_already_handled=
- names_next_round='intl '
- while test -n "$names_next_round"; do
- names_this_round="$names_next_round"
- names_next_round=
- for name in $names_this_round; do
- already_handled=
- for n in $names_already_handled; do
- if test "$n" = "$name"; then
- already_handled=yes
- break
- fi
- done
- if test -z "$already_handled"; then
- names_already_handled="$names_already_handled $name"
- uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
- eval value=\"\$HAVE_LIB$uppername\"
- if test -n "$value"; then
- if test "$value" = yes; then
- eval value=\"\$LIB$uppername\"
- test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value"
- eval value=\"\$LTLIB$uppername\"
- test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value"
- else
- :
- fi
- else
- found_dir=
- found_la=
- found_so=
- found_a=
- if test $use_additional = yes; then
- if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
- found_dir="$additional_libdir"
- found_so="$additional_libdir/lib$name.$shlibext"
- if test -f "$additional_libdir/lib$name.la"; then
- found_la="$additional_libdir/lib$name.la"
- fi
- else
- if test -f "$additional_libdir/lib$name.$libext"; then
- found_dir="$additional_libdir"
- found_a="$additional_libdir/lib$name.$libext"
- if test -f "$additional_libdir/lib$name.la"; then
- found_la="$additional_libdir/lib$name.la"
- fi
- fi
- fi
- fi
- if test "X$found_dir" = "X"; then
- for x in $LDFLAGS $LTLIBINTL; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- case "$x" in
- -L*)
- dir=`echo "X$x" | sed -e 's/^X-L//'`
- if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
- found_dir="$dir"
- found_so="$dir/lib$name.$shlibext"
- if test -f "$dir/lib$name.la"; then
- found_la="$dir/lib$name.la"
- fi
- else
- if test -f "$dir/lib$name.$libext"; then
- found_dir="$dir"
- found_a="$dir/lib$name.$libext"
- if test -f "$dir/lib$name.la"; then
- found_la="$dir/lib$name.la"
- fi
- fi
- fi
- ;;
- esac
- if test "X$found_dir" != "X"; then
- break
- fi
- done
- fi
- if test "X$found_dir" != "X"; then
- LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name"
- if test "X$found_so" != "X"; then
- if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
- LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
- else
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $found_dir"
- fi
- if test "$hardcode_direct" = yes; then
- LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
- else
- if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
- LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $found_dir"
- fi
- else
- haveit=
- for x in $LDFLAGS $LIBINTL; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-L$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir"
- fi
- if test "$hardcode_minus_L" != no; then
- LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
- else
- LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name"
- fi
- fi
- fi
- fi
- else
- if test "X$found_a" != "X"; then
- LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a"
- else
- LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name"
- fi
- fi
- additional_includedir=
- case "$found_dir" in
- */lib | */lib/)
- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
- additional_includedir="$basedir/include"
- ;;
- esac
- if test "X$additional_includedir" != "X"; then
- if test "X$additional_includedir" != "X/usr/include"; then
- haveit=
- if test "X$additional_includedir" = "X/usr/local/include"; then
- if test -n "$GCC"; then
- case $host_os in
- linux* | gnu* | k*bsd*-gnu) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- for x in $CPPFLAGS $INCINTL; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-I$additional_includedir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_includedir"; then
- INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir"
- fi
- fi
- fi
- fi
- fi
- if test -n "$found_la"; then
- save_libdir="$libdir"
- case "$found_la" in
- */* | *\\*) . "$found_la" ;;
- *) . "./$found_la" ;;
- esac
- libdir="$save_libdir"
- for dep in $dependency_libs; do
- case "$dep" in
- -L*)
- additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
- if test "X$additional_libdir" != "X/usr/lib"; then
- haveit=
- if test "X$additional_libdir" = "X/usr/local/lib"; then
- if test -n "$GCC"; then
- case $host_os in
- linux* | gnu* | k*bsd*-gnu) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- haveit=
- for x in $LDFLAGS $LIBINTL; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir"
- fi
- fi
- haveit=
- for x in $LDFLAGS $LTLIBINTL; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir"
- fi
- fi
- fi
- fi
- ;;
- -R*)
- dir=`echo "X$dep" | sed -e 's/^X-R//'`
- if test "$enable_rpath" != no; then
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $dir"
- fi
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $dir"
- fi
- fi
- ;;
- -l*)
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
- ;;
- *.la)
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
- ;;
- *)
- LIBINTL="${LIBINTL}${LIBINTL:+ }$dep"
- LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep"
- ;;
- esac
- done
- fi
- else
- LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name"
- LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name"
- fi
- fi
- fi
- done
- done
- if test "X$rpathdirs" != "X"; then
- if test -n "$hardcode_libdir_separator"; then
- alldirs=
- for found_dir in $rpathdirs; do
- alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
- done
- acl_save_libdir="$libdir"
- libdir="$alldirs"
- eval flag=\"$hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIBINTL="${LIBINTL}${LIBINTL:+ }$flag"
- else
- for found_dir in $rpathdirs; do
- acl_save_libdir="$libdir"
- libdir="$found_dir"
- eval flag=\"$hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIBINTL="${LIBINTL}${LIBINTL:+ }$flag"
- done
- fi
- fi
- if test "X$ltrpathdirs" != "X"; then
- for found_dir in $ltrpathdirs; do
- LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir"
- done
- fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5
-$as_echo_n "checking for GNU gettext in libintl... " >&6; }
-if test "${gt_cv_func_gnugettext1_libintl+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- gt_save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS $INCINTL"
- gt_save_LIBS="$LIBS"
- LIBS="$LIBS $LIBINTL"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <libintl.h>
-extern int _nl_msg_cat_cntr;
-extern
-#ifdef __cplusplus
-"C"
-#endif
-const char *_nl_expand_alias (const char *);
-int
-main ()
-{
-bindtextdomain ("", "");
-return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias ("")
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- gt_cv_func_gnugettext1_libintl=yes
-else
- gt_cv_func_gnugettext1_libintl=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then
- LIBS="$LIBS $LIBICONV"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <libintl.h>
-extern int _nl_msg_cat_cntr;
-extern
-#ifdef __cplusplus
-"C"
-#endif
-const char *_nl_expand_alias (const char *);
-int
-main ()
-{
-bindtextdomain ("", "");
-return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias ("")
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- LIBINTL="$LIBINTL $LIBICONV"
- LTLIBINTL="$LTLIBINTL $LTLIBICONV"
- gt_cv_func_gnugettext1_libintl=yes
-
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- fi
- CPPFLAGS="$gt_save_CPPFLAGS"
- LIBS="$gt_save_LIBS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext1_libintl" >&5
-$as_echo "$gt_cv_func_gnugettext1_libintl" >&6; }
- fi
-
- if test "$gt_cv_func_gnugettext1_libc" = "yes" \
- || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \
- && test "$PACKAGE" != gettext-runtime \
- && test "$PACKAGE" != gettext-tools; }; then
- gt_use_preinstalled_gnugettext=yes
- else
- LIBINTL=
- LTLIBINTL=
- INCINTL=
- fi
-
-
-
- if test -n "$INTL_MACOSX_LIBS"; then
- if test "$gt_use_preinstalled_gnugettext" = "yes" \
- || test "$nls_cv_use_gnu_gettext" = "yes"; then
- LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
- LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
- fi
- fi
-
- if test "$gt_use_preinstalled_gnugettext" = "yes" \
- || test "$nls_cv_use_gnu_gettext" = "yes"; then
-
-$as_echo "#define ENABLE_NLS 1" >>confdefs.h
-
- else
- USE_NLS=no
- fi
- fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5
-$as_echo_n "checking whether to use NLS... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
-$as_echo "$USE_NLS" >&6; }
- if test "$USE_NLS" = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5
-$as_echo_n "checking where the gettext function comes from... " >&6; }
- if test "$gt_use_preinstalled_gnugettext" = "yes"; then
- if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then
- gt_source="external libintl"
- else
- gt_source="libc"
- fi
- else
- gt_source="included intl directory"
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5
-$as_echo "$gt_source" >&6; }
- fi
-
- if test "$USE_NLS" = "yes"; then
-
- if test "$gt_use_preinstalled_gnugettext" = "yes"; then
- if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5
-$as_echo_n "checking how to link with libintl... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5
-$as_echo "$LIBINTL" >&6; }
-
- for element in $INCINTL; do
- haveit=
- for x in $CPPFLAGS; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X$element"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
- fi
- done
-
- fi
-
-
-$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h
-
-
-$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h
-
- fi
-
- POSUB=po
- fi
-
-
-
- INTLLIBS="$LIBINTL"
-
-
-
-
-
-
-
-# if test "$enable_nls" != no ; then
-# AM_GNU_GETTEXT([external])
-# OPTIONAL_LIBRARIES="$OPTIONAL_LIBRARIES gettext"
-# else
-# # desperation!
-# cp makefile.in makefile.gettext
-# cp makefile.no-gettext makefile.in
-# fi
-
-
-
-#--------------------------------------------------------------------------------
# debugging stuff
#--------------------------------------------------------------------------------
@@ -14410,7 +12487,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by snd $as_me 11.2, which was
+This file was extended by snd $as_me 11.3, which was
generated by GNU Autoconf 2.65. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -14437,7 +12514,6 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
# Files that config.status was made for.
config_files="$ac_config_files"
config_headers="$ac_config_headers"
-config_commands="$ac_config_commands"
_ACEOF
@@ -14467,16 +12543,13 @@ $config_files
Configuration headers:
$config_headers
-Configuration commands:
-$config_commands
-
Report bugs to <bil@ccrma.stanford.edu>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-snd config.status 11.2
+snd config.status 11.3
configured by $0, generated by GNU Autoconf 2.65,
with options \\"\$ac_cs_config\\"
@@ -14584,17 +12657,6 @@ _ASBOX
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-#
-# INIT-COMMANDS
-#
-# Capture the value of obsolete ALL_LINGUAS because we need it to compute
- # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
- # from automake.
- eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
- # Capture the value of LINGUAS because we need it to compute CATALOGS.
- LINGUAS="${LINGUAS-%UNSET%}"
-
-
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
@@ -14606,8 +12668,6 @@ do
"mus-config.h") CONFIG_HEADERS="$CONFIG_HEADERS mus-config.h" ;;
"sndlib.h") CONFIG_HEADERS="$CONFIG_HEADERS sndlib.h" ;;
"makefile") CONFIG_FILES="$CONFIG_FILES makefile" ;;
- "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
- "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
*) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
esac
@@ -14621,7 +12681,6 @@ done
if $ac_need_defaults; then
test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
- test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
fi
# Have a temporary directory for convenience. Make it in the build tree
@@ -14908,7 +12967,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
fi # test -n "$CONFIG_HEADERS"
-eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS"
+eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS "
shift
for ac_tag
do
@@ -15145,124 +13204,9 @@ $as_echo "$as_me: $ac_file is unchanged" >&6;}
fi
;;
- :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
-$as_echo "$as_me: executing $ac_file commands" >&6;}
- ;;
- esac
-
-
- case $ac_file$ac_mode in
- "default-1":C)
- for ac_file in $CONFIG_FILES; do
- # Support "outfile[:infile[:infile...]]"
- case "$ac_file" in
- *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
- esac
- # PO directories have a Makefile.in generated from Makefile.in.in.
- case "$ac_file" in */Makefile.in)
- # Adjust a relative srcdir.
- ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
- ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
- ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
- # In autoconf-2.13 it is called $ac_given_srcdir.
- # In autoconf-2.50 it is called $srcdir.
- test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
- case "$ac_given_srcdir" in
- .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
- /*) top_srcdir="$ac_given_srcdir" ;;
- *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
- esac
- if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
- rm -f "$ac_dir/POTFILES"
- test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
- cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
- POMAKEFILEDEPS="POTFILES.in"
- # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
- # on $ac_dir but don't depend on user-specified configuration
- # parameters.
- if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
- # The LINGUAS file contains the set of available languages.
- if test -n "$OBSOLETE_ALL_LINGUAS"; then
- test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
- fi
- ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"`
- # Hide the ALL_LINGUAS assigment from automake.
- eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
- POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
- else
- # The set of available languages was given in configure.in.
- eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
- fi
- # Compute POFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
- # Compute UPDATEPOFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
- # Compute DUMMYPOFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
- # Compute GMOFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
- case "$ac_given_srcdir" in
- .) srcdirpre= ;;
- *) srcdirpre='$(srcdir)/' ;;
- esac
- POFILES=
- UPDATEPOFILES=
- DUMMYPOFILES=
- GMOFILES=
- for lang in $ALL_LINGUAS; do
- POFILES="$POFILES $srcdirpre$lang.po"
- UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
- DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
- GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
- done
- # CATALOGS depends on both $ac_dir and the user's LINGUAS
- # environment variable.
- INST_LINGUAS=
- if test -n "$ALL_LINGUAS"; then
- for presentlang in $ALL_LINGUAS; do
- useit=no
- if test "%UNSET%" != "$LINGUAS"; then
- desiredlanguages="$LINGUAS"
- else
- desiredlanguages="$ALL_LINGUAS"
- fi
- for desiredlang in $desiredlanguages; do
- # Use the presentlang catalog if desiredlang is
- # a. equal to presentlang, or
- # b. a variant of presentlang (because in this case,
- # presentlang can be used as a fallback for messages
- # which are not translated in the desiredlang catalog).
- case "$desiredlang" in
- "$presentlang"*) useit=yes;;
- esac
- done
- if test $useit = yes; then
- INST_LINGUAS="$INST_LINGUAS $presentlang"
- fi
- done
- fi
- CATALOGS=
- if test -n "$INST_LINGUAS"; then
- for lang in $INST_LINGUAS; do
- CATALOGS="$CATALOGS $lang.gmo"
- done
- fi
- test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
- sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
- for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
- if test -f "$f"; then
- case "$f" in
- *.orig | *.bak | *~) ;;
- *) cat "$f" >> "$ac_dir/Makefile" ;;
- esac
- fi
- done
- fi
- ;;
- esac
- done ;;
esac
+
done # for ac_tag
diff --git a/configure.ac b/configure.ac
index 41148eb..7883b03 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,11 +1,11 @@
# Configuration script for Snd
-AC_INIT(snd, 11.2, bil@ccrma.stanford.edu, ftp://ccrma-ftp.stanford.edu/pub/Lisp/snd-11.tar.gz)
+AC_INIT(snd, 11.3, bil@ccrma.stanford.edu, ftp://ccrma-ftp.stanford.edu/pub/Lisp/snd-11.tar.gz)
AC_CONFIG_SRCDIR(snd.c)
AC_CANONICAL_HOST
AC_CONFIG_HEADERS(mus-config.h sndlib.h)
-AC_CONFIG_FILES(makefile po/Makefile.in )
+AC_CONFIG_FILES(makefile )
AC_PROG_CC
AC_HEADER_STDC # this needs to precede AC_CHECK_HEADER! (is this the case in 2.60?)
AC_PROG_INSTALL
@@ -19,7 +19,7 @@ LOCAL_LANGUAGE="None"
GRAPHICS_TOOLKIT="None"
PACKAGE=Snd
-VERSION=11.2
+VERSION=11.3
AC_DEFINE_UNQUOTED(SND_PACKAGE, "$PACKAGE")
AC_DEFINE_UNQUOTED(SND_VERSION, "$VERSION")
AC_SUBST(SND_PACKAGE)
@@ -37,7 +37,6 @@ AC_DEFINE_UNQUOTED(SND_HOST, "$host")
# --with-jack use Jack
# --with-static-alsa use ALSA statically loaded (for RPM generation)
# --with-snd-as-widget make Snd a loadable widget, not a standalone program
-# --with-snd-as-pd-external make Snd a loadable pd external, not a standalone program
# --with-doubles use doubles throughout (default is floats)
# --with-float-samples represent samples internally as floats or doubles (default=yes)
# --with-gmp include multiprecision arithmetic via gmp, mpfr, and mpc
@@ -55,7 +54,6 @@ AC_DEFINE_UNQUOTED(SND_HOST, "$host")
# --with-ruby-prefix set location of Ruby
# --with-s7 use S7 as the extension language (default = yes)
# --with-extension-language use some extension language (default=yes)
-# --with-rt make Snd capable of running Snd-Rt
# --with-static-xm include xm module
# --with-temp-dir directory to use for temp files
# --with-save-dir directory to use for saved-state files
@@ -185,54 +183,6 @@ AC_ARG_WITH(snd-as-widget,
MAKE_TARGET=widget
fi)
-AC_ARG_WITH(snd-as-pd-external,
- [ --with-snd-as-pd-external make Snd a loadable pd external, not a standalone program],
- [if test "$with_snd_as_pd_external" = yes ; then
-
- if test "$with_motif" = yes || test "$with_gtk" = yes ; then
- AC_MSG_ERROR(When making snd as a pd external, motif or gtk can not be used.)
- fi
- if test "$with_ruby" = yes ; then
- AC_MSG_ERROR(When making snd as a pd external, ruby can not be used as extension language.)
- fi
-
- CFLAGS="$CFLAGS -DSND_PD_PATH=\\\"`pwd`\\\""
- [with_jack=yes]
- AC_DEFINE(SND_AS_PD_EXTERNAL)
- MAKE_TARGET=external
- RANDOM_FEATURES="$RANDOM_FEATURES pd-external"
-
- case "$host" in
- *-apple-*)
-# CFLAGS="$CFLAGS -DPD -I. -bundle -undefined suppress -flat_namespace"
- CFLAGS="$CFLAGS -DPD -I. -undefined suppress -flat_namespace"
- ;;
- esac
-
- fi])
-
-RT_LIBS=""
-
-AC_ARG_WITH(rt,
- [ --with-rt makes Snd capable of running Snd-Rt],
- [if test "$with_rt" = yes ; then
-
- AC_CHECK_HEADER(rollendurchmesserzeitsammler.h)
- AC_CHECK_LIB(rollendurchmesserzeitsammler,tar_get_dynamic_roots_for)
-
- RT_LIBS="-lrollendurchmesserzeitsammler"
- OPTIONAL_LIBRARIES="$OPTIONAL_LIBRARIES rollendurchmesserzeitsammler"
-
- [with_jack=yes]
- [with_guile=yes]
-
- AC_DEFINE(WITH_RT)
-
- fi])
-
-AC_SUBST(RT_LIBS)
-
-
# if mingw add -mwindows to the load flags (I think this means we're trying to build a GUI app, not just a console app??)
case "$host" in
*-*-mingw*)
@@ -315,7 +265,6 @@ AC_OLD_BIGENDIAN
AC_SYS_LARGEFILE
AC_TYPE_OFF_T
-AM_LANGINFO_DECIMAL_POINT
AC_CHECK_SIZEOF(off_t)
AC_CHECK_SIZEOF(long)
AC_CHECK_SIZEOF(long long)
@@ -329,7 +278,6 @@ AC_CHECK_SIZEOF(ssize_t)
AC_CHECK_FUNCS(getcwd getwd strerror readlink setlocale access opendir sleep signal statvfs statfs getline difftime gettimeofday)
AC_CHECK_FUNCS(vsnprintf snprintf strftime memmove lstat strcasecmp pathconf)
-AC_LIB_PROG_LD
AC_PROG_FGREP
AC_DEFINE_UNQUOTED(FGREP_PROG, "$FGREP")
@@ -1130,7 +1078,7 @@ else
# for 2.17.7, 2.18.n
AC_CHECK_LIB(m, gtk_widget_get_visible, [AC_DEFINE(HAVE_GTK_WIDGET_GET_VISIBLE)], ,$GTK_LIBS)
# for 2.19.n
- AC_CHECK_LIB(m, gtk_tool_palette_new, [AC_DEFINE(HAVE_GTK_TOOL_PALETTE_NEW)], ,$GTK_LIBS)
+ AC_CHECK_LIB(m, gtk_entry_get_text_window, [AC_DEFINE(HAVE_GTK_ENTRY_GET_TEXT_WINDOW)], ,$GTK_LIBS)
# for gdk|pango_cairo
AC_CHECK_LIB(m, gdk_cairo_create,
@@ -1484,7 +1432,6 @@ if test "$with_s7" != no && test "$with_extension_language" != no && test "$ac_s
ac_snd_have_extension_language=yes
AC_DEFINE(HAVE_EXTENSION_LANGUAGE)
AC_DEFINE(HAVE_MAKE_RATIO)
- AC_DEFINE(WITH_CASE_SENSITIVE_SYMBOL_NAMES)
AC_DEFINE(WITH_MULTIDIMENSIONAL_VECTORS)
AC_CHECK_HEADER(complex.h,
[
@@ -2053,23 +2000,6 @@ AC_SUBST(SNDLIB_LIB)
#--------------------------------------------------------------------------------
-# gettext
-#--------------------------------------------------------------------------------
-
-AM_GNU_GETTEXT([external])
-
-# if test "$enable_nls" != no ; then
-# AM_GNU_GETTEXT([external])
-# OPTIONAL_LIBRARIES="$OPTIONAL_LIBRARIES gettext"
-# else
-# # desperation!
-# cp makefile.in makefile.gettext
-# cp makefile.no-gettext makefile.in
-# fi
-
-
-
-#--------------------------------------------------------------------------------
# debugging stuff
#--------------------------------------------------------------------------------
diff --git a/draw.scm b/draw.scm
index 684ca64..d3d95ae 100644
--- a/draw.scm
+++ b/draw.scm
@@ -1,7 +1,6 @@
;;; examples of extensions to Snd's graphics
(provide 'snd-draw.scm)
-(if (not (provided? 'snd-extensions.scm)) (load "extensions.scm"))
(define (overlay-rms-env snd chn)
diff --git a/dsp.fs b/dsp.fs
index 41b4a6e..32dd5c4 100644
--- a/dsp.fs
+++ b/dsp.fs
@@ -2,7 +2,7 @@
\ Author: Michael Scholz <mi-scholz@users.sourceforge.net>
\ Created: Fri Dec 30 04:52:13 CET 2005
-\ Changed: Tue Nov 17 16:30:58 CET 2009
+\ Changed: Thu Dec 31 04:38:29 CET 2009
\ src-duration ( en -- dur )
\ src-fit-envelope ( e1 target-dur -- e2 )
@@ -516,7 +516,7 @@ Global variable CHORDALIZE-CHORD is an array of members of chord such as #( 1 5/
: rotate-phase <{ func :optional snd #f chn #f -- vct }>
doc" Calls fft, applies FUNC, a proc or xt, to each phase, then un-ffts."
- func proc? func xt? || func 1 $" a proc or xt" assert-type
+ func word? func 1 $" a proc or xt" assert-type
snd chn #f frames { len }
2.0 len flog 2.0 flog f/ fceil ( pow2 ) f** fround->s { fftlen }
fftlen 2/ { fftlen2 }
diff --git a/effects.rb b/effects.rb
index 52c9ff0..8637fb1 100644
--- a/effects.rb
+++ b/effects.rb
@@ -2,7 +2,7 @@
# Translator/Author: Michael Scholz <mi-scholz@users.sourceforge.net>
# Created: Fri Feb 07 23:56:21 CET 2003
-# Changed: Wed Oct 14 23:11:01 CEST 2009
+# Changed: Sat Feb 06 13:57:27 CET 2010
# Commentary:
#
@@ -43,6 +43,9 @@
# Code:
require "clm"
+# FIXME
+# gtk temporarily disabled
+if provided? :snd_motif
require "snd-xm"
require "env"
require "extensions"
@@ -898,7 +901,7 @@ Move the slider to change the center frequency and bandwidth.",
@freq = if provided? :xm
scale_linear2log(20, Rvalue(i), 22050)
else
- scale_linear2log(20, Rvalue(RGTK_ADJUSTMENT(w)), 22050)
+ scale_linear2log(20, Rgtk_adjustment_get_value(RGTK_ADJUSTMENT(w)), 22050)
end
end
sliders[1] = @dlg.add_slider("bandwidth", 0, init_bw, 1000) do |w, c, i|
@@ -960,7 +963,7 @@ Move the slider to change the center frequency and bandwidth.",
@freq = if provided? :xm
scale_linear2log(20, Rvalue(i), 22050)
else
- scale_linear2log(20, Rvalue(RGTK_ADJUSTMENT(w)), 22050)
+ scale_linear2log(20, Rgtk_adjustment_get_value(RGTK_ADJUSTMENT(w)), 22050)
end
end
sliders[1] = @dlg.add_slider("bandwidth", 0, init_bw, 1000) do |w, c, i|
@@ -1019,7 +1022,7 @@ Move the slider to change the high-pass cutoff frequency.",
@freq = if provided? :xm
scale_linear2log(20, Rvalue(i), 22050)
else
- scale_linear2log(20, Rvalue(RGTK_ADJUSTMENT(w)), 22050)
+ scale_linear2log(20, Rgtk_adjustment_get_value(RGTK_ADJUSTMENT(w)), 22050)
end
end
@dlg.add_target([["entire sound", :sound, true],
@@ -1075,7 +1078,7 @@ Move the slider to change the low-pass cutoff frequency.",
@freq = if provided? :xm
scale_linear2log(20, Rvalue(i), 22050)
else
- scale_linear2log(20, Rvalue(RGTK_ADJUSTMENT(w)), 22050)
+ scale_linear2log(20, Rgtk_adjustment_get_value(RGTK_ADJUSTMENT(w)), 22050)
end
end
@dlg.add_target([["entire sound", :sound, true],
@@ -1238,7 +1241,7 @@ Move the sliders to set the filter cutoff frequency and resonance.",
@cutoff_freq = if provided? :xm
scale_linear2log(20, Rvalue(i), 22050)
else
- scale_linear2log(20, Rvalue(RGTK_ADJUSTMENT(w)), 22050)
+ scale_linear2log(20, Rgtk_adjustment_get_value(RGTK_ADJUSTMENT(w)),22050)
end
end
sliders[1] = @dlg.add_slider("resonance", 0.0, init_resonance, 1.0, 100) do |w, c, i|
@@ -2437,4 +2440,6 @@ unless defined? $__private_snd_menu__ and $__private_snd_menu__
$effects_menu = true
end
+end # if motif
+
# effects.rb ends here
diff --git a/enved.scm b/enved.scm
index e5c4672..e8f0782 100644
--- a/enved.scm
+++ b/enved.scm
@@ -9,7 +9,6 @@
;;; (play-panned snd) pans a mono sound following its enved envelope into a stereo sound
(provide 'snd-enved.scm)
-(if (not (provided? 'snd-extensions.scm)) (load "extensions.scm"))
(define channel-envelope
(make-procedure-with-setter
diff --git a/eval-c.scm b/eval-c.scm
deleted file mode 100644
index 2959a1f..0000000
--- a/eval-c.scm
+++ /dev/null
@@ -1,2644 +0,0 @@
-#!
-
-eval-c.scm
--Kjetil S. Matheussen/Notam, 2005
-
-eval-c.scm is developed with support from Notam/Oslo:
-http://www.notam02.no
-
-
-This is code to evaluate prefix-notated C-code on the fly with guile.
-See gui.scm, ladspa.scm, rt-compile.scm, rt-engine.scm and snd_conffile.scm
-for examples of use.
-
-
-
-
-
-EVAL-C
-------
-
-eval-c takes as arguments lisp- and C-like blocks, generates c-code from it, and runs it.
-
-Some reasons to use eval-c:
-
-* Easy integration of c-code from within lisp.
- Mix C and Lisp in the same source without making it look strange. (hopefully)
-* Use lisp-macros to generate c-code. (There is a special macro function
- called "define-c-macro" that works with eval-c). eval-c macros are more powerful
- than lisp macros since both strings and s-expressions can be manipulated to generate
- new code. See various examples.
-* Generate/compile/link/run c-code on the fly.
-* Some people think prefix notation is nice.
-* Speed. C is faster than guile.
-* Hides guile-semantic to access C-code from guile. Less need to read the guile manual.
-* Global functions does not need to be defined at the top-level. (that is a good thing,
- right?)
-* Special support for many strange things, for examples shared structures and classes.
-
-
-Examples.
---------
-
-The simplest fibonacci function:
-
-(define-c (<int> fib (<int> n))
- (if (< n 2)
- (return n)
- (return (+ (fib (- n 1))
- (fib (- n 2)))))))
-
-(define-c fib <int> ((<int> n))
- (if (< n 2)
- (return n)
- (return (+ (fib (- n 1))
- (fib (- n 2)))))))
-
-
-The define-c macro will produce the following code:
-
-(eval-c ""
- (public
- (<int> fib (lambda ((<int> n))
- (if (< n 2)
- (return n)
- (return (+ (fib (- n 1))
- (fib (- n 2)))))))))
-
-
-The "public" macro will change the code so that it looks something like this:
-
-(eval-c ""
- (<int> fib (lambda ((<int> n))
- (if (< n 2)
- (return n)
- (return (+ (fib (- n 1))
- (fib (- n 2)))))))
- (<SCM> fib_eval_c_helper (lambda ((<SCM> n))
- (return (MAKE_INTEGER (fib (GET_INTEGER n))))))
- (run-now
- (scm_c_define_gsubr (string "fib") 1 0 0 fib_eval_c_helper)))
-
-
-And after running the "lambda", "if", "<", "+", "-", "run-now" and "string" macros (most of eval-c is defined
-as macros), eval-c will produce and run the following c-code:
-
-static int fib (int n){
- if ((n < 2))
- return (n);
- else
- return ((fib ((n - 1)) + fib ((n - 2))));
-}
-static SCM fib_eval_c_helper (SCM n){
- return (MAKE_INTEGER (fib (GET_INTEGER (n))));
-}
-static void run_now_1 (){
- scm_c_define_gsubr ("fib", 1, 0, 0, fib_eval_c_helper);
-}
-
-
-The first function is the fibonacci generator, and the
-second function is the guile-wrapper. (GET_INTEGER and
-MAKE_INTEGER are just simple C macros.)
-"run_now"-functions are run once when the file is loaded.
-
-From guile you have now a function called "fib" which takes
-one argument.
-
-
-
-Hello world looks like this:
-
-(eval-c ""
- (run-now
- (printf (string "Hello world!\\n"))))
-
-
-
-
-First argument to eval c is a string with compiling/linking options.
-Usually just "", but can be "-lsnd" or something if needed.
-
-
-!#
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(use-modules (ice-9 optargs)
- (srfi srfi-1)
- (srfi srfi-13)
- (ice-9 rdelim)
- (ice-9 pretty-print))
-
-
-(provide 'snd-eval-c.scm)
-
-
-;; A bit more stack required
-(debug-set! stack 2000000)
-
-
-(if (not (provided? 'snd-oo.scm))
- (load-from-path "oo.scm"))
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;; Public variables ;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define *eval-c-do-cache* #t)
-(define eval-c-verbose #t)
-(define eval-c-very-verbose #f)
-(define eval-c-cleanup #f)
-(define eval-c-lazy-cleanup #t)
-(define eval-c-string-is-pointer #f)
-
-(if (not (defined? '*eval-c-compiler*))
- (primitive-eval '(define *eval-c-compiler* "gcc")))
-(if (not (defined? '*eval-c-CFLAGS*))
- (primitive-eval '(define *eval-c-CFLAGS* "")))
-
-
-(if (not (defined? 'snd-header-files-path))
- (let ((path #f))
- (for-each (lambda (l-path)
- (if (not path)
- (if (access? (string-append l-path "/clm.h") R_OK)
- (set! path l-path))))
- %load-path)
- (if path
- (define-toplevel 'snd-header-files-path path)
- (begin
- (c-display "Error! Header files for SND not found. Try setting snd-header-files-path.")
- (catch 'header-files-path-not-found)))))
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;; Various functions ;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define (c-tosymbol something)
- (cond ((string? something) (string->symbol something))
- ((symbol? something) something)
- (else
- (c-display "Error in eval-c.scm/c-tosymbol. Not able to handle " something ".")
- (thisisnotafunctionhopefully))))
-
-(define (c-tostring something)
- (cond ((string? something) something)
- ((number? something) (number->string something))
- ((symbol? something) (symbol->string something))
- ((char? something) (string something))
- (else
- (c-display "Error in eval-c.scm/c-tostring. Not able to handle " something ".")
- (thisisnotafunctionhopefully))))
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;; Variables ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define *eval-macro-prefix* #f)
-
-(define eval-c-macro-prefix 'eval-c-macro-)
-(define eval-faust-macro-prefix 'eval-faust-macro-)
-
-(define eval-c-run-nows '())
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;; Type Handling ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-(define eval-c-void-types (list "void"))
-(define eval-c-string-types (list "char *" "char*" "gchar*" "char *"))
-(define eval-c-int-types (list "int" "long" "short" "char" "gint" "size_t"))
-(define eval-c-int64-types (list "long long" "int64" "int64_t" "scm_t_int64"))
-(define eval-c-float-types (list "float"))
-(define eval-c-double-types (list "double"))
-
-
-;; etype: '<static-int>
-;; ctype: "static int"
-
-(define (eval-c-isetype? type)
- (symbol? type))
-
-(define (eval-c-isctype? type)
- (string? type))
-
-(define (eval-c-ctype->etype das-type)
- (string->symbol (<-> "<"
- (list->string (map (lambda (c)
- (if (eq? #\space c)
- #\-
- c))
- (string->list das-type)))
- ">")))
-
-
-(define (eval-c-etype->ctype das-type)
- (let ((type (string->list (symbol->string das-type)))
- (ret '()))
- (if (eq? #\< (car type))
- (set! type (cdr type)))
- (if (eq? #\> (last type))
- (set! type (c-butlast type)))
- (list->string (map (lambda (c)
- (if (eq? #\- c)
- #\space
- c))
- type))))
-
-#!
-(eval-c-etype->ctype '<int>)
-!#
-
-(define (eval-c-etype type)
- (if (eval-c-isetype? type)
- type
- (eval-c-ctype->etype type)))
-
-(define (eval-c-ctype type)
- (if (eval-c-isctype? type)
- type
- (eval-c-etype->ctype type)))
-
-(define (eval-c-returnsametype orgtype das-ret)
- (if (and (eval-c-isetype? orgtype)
- (eval-c-isctype? das-ret))
- (eval-c-ctype->etype das-ret)
- (if (and (eval-c-isctype? orgtype)
- (eval-c-isetype? das-ret))
- (eval-c-etype->ctype das-ret)
- das-ret)))
-
-
-(define (eval-c-strip-qualifiers das-type)
- (let* ((type-split (remove (lambda (s) (or (string=? "" s))) (string-split (eval-c-ctype das-type) #\space)))
- (type (string-trim-right (apply <-> (map (lambda (t) (<-> t " ")) type-split))))
- (type-first (car type-split)))
- (while (or (string=? type-first "unsigned")
- (string=? type-first "signed")
- (string=? type-first "static")
- (string=? type-first "volatile")
- (string=? type-first "const"))
- (set! type-split (cdr type-split))
- (set! type (string-trim-right (apply <-> (map (lambda (t) (<-> t " ")) type-split))))
- (set! type-first (car type-split)))
- (eval-c-returnsametype das-type type)))
-
-#!
-(eval-c-strip-qualifiers "unsigned static int")
-(eval-c-strip-qualifiers '<unsigned-static-int>)
-!#
-
-(define (eval-c-get-propertype das-type)
- (if (pair? das-type)
- " void* " ;; A function
- (<-> (eval-c-etype->ctype das-type) " ")))
-
-#!
-(eval-c-get-propertype '<int-wefwe>)
-!#
-
-(define (eval-c-to-scm das-type)
- (let ((type (eval-c-strip-qualifiers das-type)))
- (cond ((member type eval-c-void-types) "UNSPECIFIED")
- ((and (not eval-c-string-is-pointer) (member type eval-c-string-types) "STRING"))
- ((member type eval-c-int-types) "INTEGER")
- ((member type eval-c-int64-types) "INT64")
- ((member type eval-c-float-types) "FLOAT")
- ((member type eval-c-double-types) "DOUBLE")
- ((string=? type "SCM") "SCM")
- ((string=? type "jmp_buf") "JMP_BUF")
- (else
- "POINTER"))))
-
-(define (eval-c-add-void-type type)
- (set! eval-c-void-types (cons type eval-c-void-types)))
-(define (eval-c-add-string-type type)
- (set! eval-c-string-types (cons type eval-c-string-types)))
-(define (eval-c-add-int-type type)
- (set! eval-c-int-types (cons type eval-c-int-types)))
-(define (eval-c-add-int64-type type)
- (set! eval-c-int64-types (cons type eval-c-int64-types)))
-(define (eval-c-add-float-type type)
- (set! eval-c-float-types (cons type eval-c-float-types)))
-(define (eval-c-add-double-type type)
- (set! eval-c-double-types (cons type eval-c-double-types)))
-
-
-(define (eval-c-get-known-type type)
- (cadr (member (eval-c-to-scm (eval-c-etype->ctype type))
- `("UNSPECIFIED" <void>
- "STRING" <char-*>
- "INTEGER" <int>
- "INT64" <int64>
- "FLOAT" <float>
- "DOUBLE" <double>
- "SCM" <SCM>
- "JMP_BUF" <jmp_buf>
- "POINTER" <void-*>))))
-
-#!
-(eval-c-to-scm " static const unsigned char *")
-(eval-c-to-scm '<static-const-char-*>)
-(eval-c-to-scm "int")
-(eval-c-get-known-type '<static-const-char-*>)
-!#
-
-(define (eval-c-get-*type etype)
- (let ((ctype (string-trim-both (eval-c-etype->ctype etype))))
- (if (char=? #\* (last (string->list ctype)))
- (eval-c-ctype->etype (string-trim-both (list->string (c-butlast (string->list ctype)))))
- etype)))
-
-#!
-(eval-c-get-*type '<--int-*->)
-(eval-c-etype->ctype '<char-*>)
-!#
-
-(define (eval-c-cify-var das-var)
- (if (and (not (string? das-var))
- (not (symbol? das-var)))
- das-var
- (if (or (and (string? das-var)
- (string=? "-" (string-trim-both das-var)))
- (and (symbol? das-var)
- (string=? "-" (string-trim-both (symbol->string das-var)))))
- (if (symbol? das-var)
- '-
- "-")
- (let* ((var (if (string? das-var)
- das-var
- (symbol->string das-var)))
- (varlist (string->list var))
- (firsthit (member #\- varlist)))
- (if (and firsthit
- (or (null? (cdr firsthit))
- (not (equal? #\> (cadr firsthit)))))
- (let ((ret (apply <-> (map (lambda (c) (cond ((equal? #\- c)
- "_minus_")
- ((equal? #\> c)
- "_greaterthan_")
- ((equal? #\< c)
- "_lessthan_")
- ((equal? #\? c)
- "_questionmark_")
- ((equal? #\! c)
- "_exclamationmark_")
- ((equal? #\+ c)
- "_plus_")
- ((equal? #\/ c)
- "_divide_")
- ((equal? #\* c)
- "_multiply_")
- (else
- (string c))))
- varlist))))
- (if (symbol? das-var)
- (string->symbol ret)
- ret))
- das-var)))))
-
-#!
-(eval-c-cify-var '(aiai))
-(eval-c-cify-var 'c-dlsym)
-!#
-
-(define (eval-c-symbol-is-type s)
- (and (not (or (eq? s '<->')
- (eq? s '<)
- (eq? s '>)))
- (let ((aslist (string->list (symbol->string s))))
- (and (eq? #\<
- (car aslist))
- (eq? #\>
- (last aslist))))))
-
-
-(define *eval-c-public-funcdecls* (make-hash-table 219))
-
-(define (eval-c-put-public-funcdecl name decl)
- (hashq-set! *eval-c-public-funcdecls* name decl))
-
-(define (eval-c-get-public-funcdecl name)
- (hashq-ref *eval-c-public-funcdecls* name))
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;; Structures ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define eval-c-structlist '())
-
-(define (eval-c-add-struct name varlist)
- (set! eval-c-structlist (cons (cons (c-tosymbol name) varlist)
- eval-c-structlist)))
-
-(define (eval-c-get-struct name)
- (let ((struct (assq (c-tosymbol name) eval-c-structlist)))
- (if struct
- (cdr struct)
- #f)))
-
-(define (eval-c-get-structlisttype struct name)
- (let ((elem (assq (c-tosymbol name) struct)))
- (if elem
- (cadr elem)
- (c-display "Eval-c.scm/eval-c-get-structlisttype. Error. " name " not found in structure " struct "."))))
-
-(define (eval-c-get-structlistelem struct name)
- (let ((elem (assq (c-tosymbol name) struct)))
- (if elem
- (cdr elem)
- (c-display "Eval-c.scm/eval-c-get-structlistelem. Error. " name " not found in structure " struct "."))))
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;; Classes ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define eval-c-classlist '())
-
-(define eval-c-privatevars cadr)
-(define eval-c-publicvars caddr)
-(define eval-c-privatefuncs cadddr)
-(define eval-c-publicfuncs (lambda (x) (cadddr (cdr x))))
-(define eval-c-destructors (lambda (x) (cadddr (cddr x))))
-(define eval-c-constructors (lambda (x) (cadddr (cdddr x))))
-(define eval-c-privatevars (lambda (x) (cadddr (cdddr (cdr x)))))
-
-(define (eval-c-addclass name
- privatevars
- publicvars
- privatefuncs
- publicfuncs
- destructors
- constructors)
- (set! eval-c-classlist (cons (list name privatevars privatefuncs publicfuncs destructors constructors)
- eval-c-classlist)))
-
-
-(define (eval-c-get-cmethodname methodname classname publicorprivate)
- (c-tosymbol (<-> (c-tostring classname)
- "_split_"
- (c-tostring methodname)
- "_split_"
- publicorprivate)))
-
-#!
-(eval-c-get-cmethodname 'aiai 'Gakk "private")
-!#
-
-#!
-;; To complicated. Perhaps later.
-(define (eval-c-get-cmethodname methodname classtype rettype args)
- (define (gettype das-type)
- (let ((type (string->list (symbol->string das-type)))
- (ret '()))
- (if (eq? #\< (car type))
- (set! type (cdr type)))
- (if (eq? #\> (last type))
- (set! type (c-butlast type)))
- (list->string type)))
-
- (<-> (gettype classtype)
- "_split_"
- (gettype rettype)
- "_split_"
- methodname
- (apply <-> (map (lambda (x) (<-> "_split_" (gettype (car x))))
- args))))
-!#
-
-#!
-(eval-c-get-cmethodname "c-scale" '<Gakk_class> '<int> '((<struct-int> a)(<int> b)))
-->
-"Gakk_class" "_split_" "int" "_split_" "c-scale" "_split_" "struct-int" "_split_" "int"
-!#
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;; Getting the type of a variable ;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define eval-c-typelistlist '())
-(define eval-c-typelist '())
-
-(define (eval-c-puttype name type)
- (set! eval-c-typelist (cons (cons (c-tosymbol name) type) eval-c-typelist)))
-
-
-(define (eval-c-get-structlist name)
- (let ((ret '())
- (temp '())
- (alist (string->list (c-tostring name))))
- (define (checkit)
- (define (get-tempstring)
- (set! ret (cons (string->symbol (list->string (reverse! temp))) ret))
- (set! temp '()))
- (if (eq? #\. (car alist))
- (get-tempstring)
- (if (eq? #\- (car alist))
- (begin
- (set! alist (cdr alist))
- (get-tempstring))
- (set! temp (cons (car alist) temp))))
- (set! alist (cdr alist))
- (if (not (null? alist))
- (checkit)
- (get-tempstring)))
- (checkit)
- (reverse! ret)))
-
-
-
-#!
-(eval-c-get-structlist 'gakk1.gakk2->gakk3.gakk5)
-!#
-
-(define (eval-c-getfulltype name)
- (let ((varnamelist (eval-c-get-structlist name)))
-
- (define (rec struct varnamelist)
- (let ((firstelem (eval-c-get-structlisttype struct (car varnamelist))))
- (if (= (length varnamelist) 1)
- firstelem
- (rec (eval-c-get-struct firstelem) (cdr varnamelist)))))
-
- (let ((start (assq (c-tosymbol (car varnamelist)) eval-c-typelist)))
- (if start
- (if (> (length varnamelist) 1)
- (rec (eval-c-get-struct (eval-c-getfulltype (car varnamelist))) (cdr varnamelist))
- (cdr start))
- '<undefined_t>))))
-
-(define (eval-c-gettype name)
- (eval-c-strip-qualifiers (eval-c-getfulltype name)))
-
-
-#!
-(eval-c-puttype 'a '<const-static-int>)
-(eval-c-gettype 'a)
-!#
-
-
-
-#!
-(eval-c-add-struct '<struct-struct1> '((a <int>)
- (b <int>)))
-(eval-c-add-struct '<struct-struct2> '((c <struct-struct1> *)
- (d <int>)))
-(define a (eval-c-get-struct '<struct-struct2>))
-(eval-c-get-structlistelem a 'c)
-(eval-c-get-structlisttype a 'c)
-(eval-c-puttype 'a '<struct-struct2>)
-(eval-c-gettype 'a)
-(eval-c-gettype 'a.c)
-(eval-c-gettype 'a->c->a)
-;; (eval-c-gettype could/should be more intelligent regarding pointers and the use of "." or "->")
-!#
-
-
-(define eval-c-level 0)
-
-(define (eval-c-uplevel)
- (set! eval-c-level (1+ eval-c-level))
- (set! eval-c-typelistlist (cons eval-c-typelist eval-c-typelistlist)))
-
-(define (eval-c-downlevel)
- (set! eval-c-level (1- eval-c-level))
- (set! eval-c-typelist (car eval-c-typelistlist))
- (set! eval-c-typelistlist (cdr eval-c-typelistlist)))
-
-
-#!
-(begin eval-c-typelist)
-(eval-c-puttype 'name3 'atype3)
-(eval-c-gettype 'name2)
-(eval-c-uplevel)
-(eval-c-downlevel)
-(assq 'name eval-c-typelist)
-!#
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;; Parsing ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define* (eval-c-eval-funccall term)
- (define parser eval-parse)
- (if (null? (cdr term))
- (<-> (eval-c-cify-var (if (symbol? (car term))
- (symbol->string (car term))
- (car term)))
- " ()")
- (apply <-> (append (list (<-> (eval-c-cify-var (if (symbol? (car term))
- (symbol->string (car term))
- (car term)))
- " ("))
- (map (lambda (x) (<-> (parser x) ", ")) (c-butlast (cdr term)))
- (list (parser (last term)))
- (list ")")))))
-
-
-(define (eval-c-macro-result term)
- (let* ((a (cons (symbol-append *eval-macro-prefix* (car term)) (cdr term)))
- (b (macroexpand-1 a )))
- (if (not (equal? a b))
- (eval-parse b)
- (eval-c-eval-funccall term))))
-
-
-(define* (eval-parse term)
- (define parser eval-parse)
- (define macroexpander eval-c-macro-result)
-
- (if eval-c-very-verbose
- (c-display "top: " term))
- (cond
- ((string? term) (<-> term " "))
- ((number? term) (<-> (number->string term) " "))
- ((symbol? term) (<-> (symbol->string term) " "))
- ((char? term) (<-> (string term) " "))
-
- ((list? term)
- (if (string? (car term))
- (eval-c-eval-funccall term)
- (let ((type (car term)))
-
- (if (list? type)
-
- ;; ((<int> (<int> <int>)) funcname [funcpointer/lambda/NULL])
- (let ((typename (eval-c-get-unique-name)))
- (<-> "typedef " (eval-c-etype->ctype (car type)) "(*" typename ")("
- (if (not (null? (cadr type)))
- (<-> (eval-c-etype->ctype (car (cadr type)))
- (apply <-> (map (lambda (t)
- (<-> "," (eval-c-etype->ctype t)))
- (cdr (cadr type)))))
- "")
- ");"
- (parser `( ,(eval-c-ctype->etype typename) ,(cadr term) ,@(cddr term)))))
-
- ;; (<type> ...) / (func ...)
- (if (not (eval-c-symbol-is-type type))
-
- (macroexpander term)
-
- ;; (<type> ....)
- (let* ((is-toplevel (= 0 eval-c-level))
- (ctype (and is-toplevel (eval-c-etype->ctype type)))
- (is-static (and is-toplevel
- (let* ((minlength (min (string-length "nonstatic ") (string-length ctype))))
- (not (string= "nonstatic " ctype 0 minlength 0 minlength)))))
- (type (if is-toplevel
- (eval-c-ctype->etype (if is-static
- (<-> "static " ctype)
- (string-drop ctype (string-length "nonstatic "))))
- type))
- (varname (cadr term))
- (isvarname? (or (string? varname) (symbol? varname))))
-
- ;;(c-display varname ":" term (eval-c-etype->ctype (car term)) type)
-
- (if (not isvarname?)
-
- ;; (<type> () .... )
- (parser `(,type ,@(map parser (cdr term))))
-
- ;; (<type> varname ...)
- (begin
- (eval-c-puttype (if (string? varname)
- (car (string-split varname #\ ))
- varname)
- type)
-
- (if (= (length term) 2)
- ;; (<int> a)
- (<-> (eval-c-get-propertype type)
- (parser varname))
-
- (if (and (= (length term) 3)
- (or (not (list? (caddr term)))
- (not (or (eq? 'lambda (caaddr term))
- (eq? 'lambda-decl (caaddr term))))))
-
- ;; (<int> a 5)
- (<-> (eval-c-get-propertype type)
- (parser varname)
- " = "
- (parser (caddr term)))
-
- ;; (<int> a (lambda ...))
- (let* ((funcdecl (nth 2 term))
- (lambdaname (car funcdecl))
- (typedefs "")
- (funcvars (map (lambda (v)
- (let ((type (car v))
- (name (cadr v)))
- (if (list? type)
- (let ((typename (eval-c-get-unique-name)))
- (set! typedefs (<-> typedefs
- "typedef " (eval-c-etype->ctype (car type)) " (*" typename ")("
- (if (not (null? (cadr type)))
- (<-> (eval-c-etype->ctype (car (cadr type)))
- (apply <-> (map (lambda (t)
- (<-> "," (eval-c-etype->ctype t)))
- (cdr (cadr type)))))
- "")
- ");\n"))
- (list (eval-c-ctype->etype typename) name))
- v)))
- (if (null? (cadr funcdecl))
- '((<void> NOTHING))
- ;;(cadr funcdecl)
- (cadr funcdecl))))
- (funcbody (cddr funcdecl)))
-
- (if (not is-static)
- (eval-c-put-public-funcdecl varname `(,(car term) ,varname (lambda-decl ,(cadr funcdecl)))))
-
- (<-> typedefs
- (if (> eval-c-level 0)
- "static "
- "")
- (apply <-> (map parser (cons (eval-c-get-propertype type)
- (cons (eval-c-cify-var varname)
- `((,lambdaname ,funcvars
- ,@funcbody))))))))))))))))))))
-
-(define* (eval-c-parse term)
- (set! *eval-macro-prefix* eval-c-macro-prefix)
- (eval-parse term))
-
-
-#!
-(eval-c-parse '(<int> ai (lambda () (return 2))))
-(eval-c-parse '(<void> gakk (lambda (((<void> (<int>)) func)) (return 2))))
-(eval-c-parse '(<void> gakk (lambda ((<int> func)) (return 2))))
-!#
-
-(define (eval-c-parse-line term)
- (if (and (string? term)
- (not (string=? "" term))
- (eq? #\# (string-ref term 0)))
- (<-> term (string #\newline))
- (<-> (eval-c-parse term) ";" (string #\newline))))
-
-(define (eval-c-parse-lines terms)
- (apply <-> (map (lambda (x) (<-> (eval-c-parse-line x) " ")) terms)))
-
-
-
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;; C-macros;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-(define-macro (define-c-macro def . body)
- `(define-macro ,(cons (symbol-append eval-c-macro-prefix (car def)) (cdr def)) ,@body))
-(define-macro (define-faust-macro def . body)
- `(define-macro ,(cons (symbol-append eval-faust-macro-prefix (car def)) (cdr def)) ,@body))
-(define-macro (define-c/faust-macro def . body)
- `(begin
- (define-macro ,(cons (symbol-append eval-faust-macro-prefix (car def)) (cdr def)) ,@body)
- (define-macro ,(cons (symbol-append eval-c-macro-prefix (car def)) (cdr def)) ,@body)))
-
-
-
-(define-c-macro (set!-string-is-pointer-#t)
- (set! eval-c-string-is-pointer #t)
- "")
-
-(define-c-macro (set!-string-is-pointer-#f)
- (set! eval-c-string-is-pointer #f)
- "")
-
-(define-c-macro (if a b . c)
- (if (null? c)
- (<-> "if(" (eval-c-parse a) ")\n"
- (eval-c-parse `(begin ,b)))
- (<-> "if(" (eval-c-parse a) ")\n"
- (eval-c-parse `(begin ,b)) "\n"
- "else\n"
- (eval-c-parse (car c)))))
-
-(define-c-macro (when a . rest)
- `(if ,a
- (begin
- ,@rest)))
-
-(define-c-macro (?kolon a b . c)
- (<-> "("
- (eval-c-parse a)
- "\n?"
- (eval-c-parse b)
- "\n:"
- (if (not (null? c))
- (eval-c-parse (car c))
- "0")
- ")"))
-
-(define-c-macro (struct-set . rest)
- (<-> "{"
- (eval-c-parse (car rest))
- (apply <-> (map (lambda (t)
- (<-> "," (eval-c-parse t)))
- (cdr rest)))
- "}"))
-
-(define-c-macro (begin_p . rest)
- (<-> "("
- (eval-c-parse (car rest))
- (apply <-> (map (lambda (t)
- (<-> "," (eval-c-parse t) "\n" ))
- (cdr rest)))
- ")"))
-
-
-(define-c-macro (unquote something)
- (primitive-eval something))
-
-(define-c-macro (unquote-splicing something)
- (apply <-> (map eval-parse (primitive-eval something))))
-
-(define-c/faust-macro (include filename)
- (define ret "")
- (for-each-line-in-file (string-trim-right (eval-parse filename))
- (lambda (line)
- (set! ret (<-> ret line "\n"))))
- ret)
-
-(define-c/faust-macro (x11-selection)
- (define filename (tmpnam))
- (if (not (= 0 (system (<-> "xsel >" filename))))
- (c-display "Error. x11-selection requires the \"xsel\" program: http://www.vergenet.net/~conrad/software/xsel/")
- `(include ,filename)))
-
-(define-c/faust-macro (url das-url)
- (define filename (tmpnam))
- ;;(c-display "command:" (<-> "wget " (string-trim-right (eval-parse das-url)) " -O " filename))
- (if (not (= 0 (system (<-> "wget " (string-trim-right (eval-parse das-url)) " -O " filename))))
- (c-display "Error. url requires wget.")
- `(include ,filename)))
-
-(define-c-macro (arraydef name length)
- (<-> (eval-c-parse name) "[" (eval-c-parse length) "]"))
-
-(define-c-macro (MIN a b)
- `(EC_MIN ,a ,b))
-
-(define-c-macro (MAX a b)
- `(EC_MAX ,a ,b))
-
-
-;; eval-c infix fixer
-(for-each (lambda (op)
- (let ((opstring (symbol->string op)))
- (primitive-eval
- `(define-c-macro (,op . rest)
- (if (= 1 (length rest))
- (<-> "( " ,opstring (eval-c-parse (car rest)) ")")
- (apply <-> (append (list "(")
- (list (eval-c-parse (car rest)))
- (map (lambda (x) (<-> ,opstring " " (eval-c-parse x) " ")) (cdr rest))
- (list ") "))))))))
- '(+ - * / | % & ~ == != < > <= >= || && += -= /= *= |= &= >> << ^))
-
-; faust infix fixer
-(for-each (lambda (op)
- (define opstring #f)
- (cond ((pair? op)
- (set! opstring (cadr op))
- (set! op (car op)))
- (else
- (set! opstring (symbol->string op))))
- (primitive-eval
- `(define-faust-macro (,op . rest)
- (if (= 1 (length rest))
- (<-> ,opstring (eval-parse (car rest)))
- (apply <-> (append (list (eval-parse (car rest)))
- (map (lambda (x) (<-> ,opstring " " (eval-parse x) " ")) (cdr rest))
- ))))))
- '(+ - * / | % & ~ == != < > <= >= || && += -= /= *= |= &= >> << ^
- (|:>| ":>") (|<:| "<:") (|:| ":") (@ "alpha")
- (colon ":") (comma ","))) ;; Looks better using seq and par.
-
-
-
-(define-c-macro (= . rest)
- (c-display "\n\nError. \"=\" is not a valid eval-c function or operator. (Perhaps you ment \"==\" or \"set!\"?):\n")
- (display (cons '= rest))
- (newline)(newline))
-
-
-(define-c-macro (begin . body)
- (eval-c-uplevel)
- (let ((ret (<-> "{" (string #\newline)
- (eval-c-parse-lines body)
- "}")))
- (eval-c-downlevel)
- ret))
-
-
-(define (eval-c-cond->if terms)
- (let ((term (car terms)))
- (if (and (symbol? (car term))
- (eq? 'else (car term)))
- (cons 'begin (cdr term))
- (if (not (null? (cdr terms)))
- (list 'if (car term)
- (append (list 'begin) (cdr term))
- (eval-c-cond->if (cdr terms)))
- (list 'if (car term)
- (append (list 'begin) (cdr term)))))))
-
-
-
-(define-c-macro (cond . terms)
- (eval-c-cond->if terms))
-
-
-(define (eval-c-listify-struct rest)
- (let ((das-map '())
- (even #f))
- (define (nest rest)
- (if (not (null? rest))
- (let ((a (car rest)))
- (if even
- (begin
- (if (eq? '* a)
- (begin
- (set! das-map (cons (list even a (cadr rest)) das-map))
- (set! rest (cdr rest)))
- (set! das-map (cons (list even a) das-map)))
- (set! even #f))
- (set! even a))
- (nest (cdr rest)))))
- (nest rest)
- (reverse! das-map)))
-
-
-(define* (eval-c-structure structname cname rest #:optional (do-add-struct #t))
- (let ((das-map (eval-c-listify-struct rest)))
- (if do-add-struct
- (eval-c-add-struct structname
- (map (lambda (a)
- (if (= 3 (length a))
- (list (caddr a) (car a) (cadr a))
- (list (cadr a) (car a))))
- das-map)))
- (<-> "struct " cname
- " {\n"
- (apply <->
- (map (lambda (a)
- (<-> " "
- (eval-c-get-propertype (car a))
- (eval-c-parse (eval-c-cify-var (cadr a)))
- (if (= 3 (length a))
- (eval-c-parse (caddr a))
- "")
- ";\n"))
- das-map))
- "}")))
-
-
-(define* (eval-c-define-struct name rest #:optional (do-add-struct #t))
- (eval-c-structure (<-> "<struct-" (string-trim-right (eval-c-get-propertype name)) ">")
- (eval-c-parse (eval-c-get-propertype name))
- rest
- do-add-struct))
-
-(define-c-macro (define-struct name . rest)
- (eval-c-define-struct name rest))
-
-(define-c-macro (shared-struct structname)
- (eval-c-define-struct structname
- (apply append (map (lambda (def)
- (if (= 3 (length def))
- (list (cadr def)
- (caddr def)
- (car def))
- (list (cadr def)
- (car def))))
- (let ((das-struct (eval-c-get-struct (symbol-append '<struct- (string->symbol
- (list->string
- (cdr
- (string->list
- (symbol->string
- structname)))))))))
- (if (not das-struct)
- (c-display "\n\nError. struct \"" structname "\" not found.\n\n"))
- das-struct)))
- #f))
-
-
-(define (eval-c-shared-struct-but-only-known-types structname)
- (eval-c-define-struct structname
- (apply append (map (lambda (def)
- (if (= 3 (length def))
- (list '<void-*>
- (car def))
- (list (eval-c-get-known-type (cadr def))
- (car def))))
- (eval-c-get-struct (symbol-append '<struct- (string->symbol
- (list->string
- (cdr
- (string->list
- (symbol->string
- structname)))))))))
- #f))
-
-#!
-
-(eval-c-to-scm (eval-c-etype->ctype '<int>))
-(eval-c-macro-result
- '(define-struct <gakk>
- <int> a
- <jmp_buf> ai
- <int> b
- <char-*> c
- <struct-gakk> * d))
-(eval-c-macro-result '(shared-struct <gakk>))
-(eval-c-macro-result '(shared-struct-but-only-known-types <gakk>))
-(set! eval-c-typelist '())
-(begin eval-c-typelist)
-(eval-c-get-struct '<struct-gakk>)
-(set! eval-c-structlist '())
-(begin eval-c-structlist)
-(eval-c-puttype 'a '<struct-gakk>)
-(eval-c-gettype 'a.d.d.d.a)
-!#
-
-
-(define-c-macro (define-class name . rest)
- (let* ((privatevars '())
- (publics '())
- (publicvars '())
- (privatefuncs '())
- (publicfuncs '())
- (destructors '())
- (constructors '())
- (cname (eval-c-etype->ctype name))
- (structname (<-> cname "_class"))
- (cclassname (<-> "class_" cname))
- (classname (c-tosymbol (<-> "<" cclassname ">"))))
-
- (for-each (lambda (term)
- (cond ((eq? 'public (car term)) (set! publics (append (cdr term) publics)))
- ((eq? 'define (car term)) (if (eq? 'destructor (caadr term))
- (set! destructors (cons (cons (cdr (cadr term)) (cddr term)) destructors))
- (set! constructors (cons (cons (cdr (cadr term)) (cddr term)) constructors))))
- ((list? (cadr term)) (set! privatefuncs (cons term privatefuncs)))
- (else (set! privatevars (cons term privatevars)))))
- rest)
- (for-each (lambda (term)
- (if (list? (cadr term))
- (set! publicfuncs (cons term publicfuncs))
- (set! publicvars (cons term publicvars))))
- publics)
-
- (set! privatevars (reverse! privatevars))
- (set! publicvars (reverse! publicvars))
- (set! privatefuncs (reverse! privatefuncs))
- (set! publicfuncs (reverse! publicfuncs))
- (set! destructors (reverse! destructors))
- (set! constructors(reverse! constructors))
-
- (let ((func-org-func (lambda (funcs publicorprivate)
- (map (lambda (func)
- (let* ((rettype (car func))
- (rest (cadr func))
- (def (cadr rest))
- (name (car def))
- (args (cdr def))
- (body (cddr rest)))
- (list rettype
- (eval-c-get-cmethodname name cclassname publicorprivate)
- (cons (list classname 'this) args)
- body)))
- funcs))))
-
- (set! privatefuncs (func-org-func privatefuncs "private"))
- (set! publicfuncs (func-org-func publicfuncs "public"))
-
- (set! publicfuncs (cons `(,classname ,(eval-c-get-cmethodname 'constructor-internal cclassname "public") ()
- ((let* ((this ,classname
- (calloc 1 (sizeof ,classname))))
- ,@(map (lambda (var)
- `(set! ,(symbol-append 'this-> (cadr var)) ,(caddr var)))
- (remove (lambda (var) (= (length var) 2))
- (append privatevars publicvars)))
- (return this))))
- publicfuncs))
-
- (set! publicfuncs (cons `(<void> ,(eval-c-get-cmethodname 'destructor-internal cclassname "public") ((,classname this))
- ((free this)))
- publicfuncs))
-
- (if (null? destructors)
- (set! destructors '((()))))
- (if (null? constructors)
- (set! constructors '((() (return this)))))
-
- ;;(c-display "privatevars" privatevars "\n"
- ; "publicvars" publicvars "\n"
- ; "privatefuncs" privatefuncs "\n"
- ; "publicfuncs" publicfuncs "\n"
- ; "destructors" destructors "\n"
- ; "constructors" constructors "\n")
-
-
- (<-> (eval-c-structure classname
- structname
- (apply append (map (lambda (var) (list (car var) (cadr var))) (append privatevars publicvars))))
-
- ";\n"
- "typedef struct " structname "* " cclassname ";\n"
-
- (let ((methods (append
- (map (lambda (func)
- (eval-c-parse `(,(car func) ,(cadr func) (lambda ,(caddr func) ,@(cadddr func)))))
- (append privatefuncs publicfuncs))
- (map (lambda (constructor)
- (eval-c-parse `(,classname ,(eval-c-get-cmethodname 'constructor cclassname "public")
- (lambda ,(car constructor)
- (let* ((this ,classname
- (,(eval-c-get-cmethodname 'constructor-internal cclassname "public"))))
- ,@(cdr constructor))))))
- constructors)
- (map (lambda (destructor)
- (eval-c-parse `(<void> ,(eval-c-get-cmethodname 'destructor cclassname "public")
- (lambda ,(cons (list classname 'this) (car destructor))
- ,@(cdr destructor)
- (,(eval-c-get-cmethodname 'destructor-internal cclassname "public") this)))))
- destructors))))
- (apply <-> (append (map (lambda (method)
- (<-> (car (string-split method #\{)) ";\n"))
- methods)
- methods))
- )
- )
- )
-
- )
- )
-
-
-(define-c-macro (new classname . args)
- `(,(eval-c-get-cmethodname 'constructor (eval-c-etype->ctype classname) "public") ,@args))
-
-(define-c-macro (-> object methodname . args)
- `(,(eval-c-get-cmethodname methodname (eval-c-etype->ctype (eval-c-gettype object)) "public") ,object ,@args))
-
-#!
-(eval-c ""
- (<int> ais 78)
- (define-class <Bank>
- (<int> sum (+ 2 3))
- (<int> sum2)
- (<int> sum3 (+ this->sum 1500))
- (public
- (<int> (define (deposit (<int> das_sum))
- (<int> ai2 5)
- (set! this->sum (+ this->sum3 das_sum 13451345))
- (return (+ 2 this->sum))))))
- (run-now
- (let* ((bank <class_Bank> (new <class_Bank>)))
- (printf (string "aisann: %d %d\\n") ais (-> bank deposit 17)))))
-
-
-(c-dynamic-call "das_init" "/tmp/file6JoOzy.c.so")
-
-(eval-c-macro-result
- '(define-class <Gakk>
- (<int> ai 5)
- (<int> (define (amethod (<int> a))
- (return (-> this ai))))
-
- (public
- (<int> ai2)
- (<int> (define (c-scale (<float> x)
- (<float> x1)
- (<float> x2)
- (<float> y1)
- (<float> y2))
- (return (+ (-> this gakk)
- ;;(this->gakk2)
- y1
- (/ (* (- x x1) (- y2 y1))
- (- x2 x1)))))))
-
- (define (destructor)
- (c-display "killed me"))
-
- (define (constructor (<int> a) (<int> b))
- (set! this->ai (+ (-> this ai) a b))
- (return this))))
-
----
-
-(let* (gakk <class_Gakk>
- (new 5 6))
- (-> gakk c-scale 0 1 2 3))
-
-->
-(let* (gakk <class_Gakk>
- (new 5 6))
- (gakk->c-scale gakk 0 1 2 3))
-
-!#
-
-
-#!
-
-This definition of lambda doesn't work because I want the following to work:
-
- ("func" a b c) -> func(a,b,c)
-
-But, perhaps that last one shouldn't be allowed to work.
-
-(define-c-macro (lambda def . body)
- `( ,(if (null? def)
- "()"
- (apply <-> (append (list "(")
- (map (lambda (x) (<-> (eval-c-parse x) ", ")) (c-butlast def))
- (list (<-> (eval-c-parse (last def))))
- (list ")"))))
- (begin ,@body)))
-!#
-
-
-
-(define eval-c-decl-symbol (gensym))
-
-;; Workaround:
-(define-c-macro (lambda def . body)
- (eval-c-uplevel)
- (let ((ret (<-> (if (null? def)
- "()"
- (apply <-> (append (list "(")
- (map (lambda (x) (<-> (eval-c-parse x) ", ")) (c-butlast def))
- (list (<-> (eval-c-parse (last def))))
- (list ")"))))
- (if (eq? eval-c-decl-symbol (car body))
- ""
- (<-> "{" (string #\newline)
- (eval-c-parse-lines body)
- "}" (string #\newline))))))
- (eval-c-downlevel)
- ret))
-
-(define-c-macro (lambda-decl rest)
- `(lambda ,rest ,eval-c-decl-symbol))
-
-(define-c-macro (get-proto name)
- (eval-c-parse (eval-c-get-public-funcdecl name)))
-
-#!
-(eval-c ""
- (<nonstatic-void> printsomething (lambda ()
- (printf (string "something\\n")))))
-(eval-c ""
- (get-proto printsomething)
- (run-now
- (printsomething)))
-!#
-
-(define-c-macro (define def . body)
- (if (list? def)
- (<-> (eval-c-parse (eval-c-cify-var (car def)))
- (eval-c-parse (append (list 'lambda (cdr def))
- body)))
- `(,(car body) ,def ,(cadr body))))
-
-
-(define eval-c-get-run-now-procname
- (let ((num 0))
- (lambda ()
- (set! num (1+ num))
- (<-> "run_now_" (number->string num)))))
-
-(define-c-macro (run-now . body)
- (let ((procname (eval-c-get-run-now-procname)))
- (set! eval-c-run-nows (cons procname eval-c-run-nows))
- `(<void> ,procname (lambda ()
- ,@body))))
-
-
-(define* (eval-c-gen-public-func term #:optional publicname)
- (let* ((funcname_org (cadr term))
- (funcname (eval-c-cify-var funcname_org))
- (helperfuncname (<-> (symbol->string funcname) "_eval_c_helper"))
- (parameters (cadr (caddr term)))
- (rettype (car term))
- (i 0)
- (types (map (lambda (var)
- (list (eval-c-to-scm (string-trim-right
- (eval-c-get-propertype (car var))))
- (cadr var)))
- parameters)))
- `((<SCM> ,helperfuncname (lambda ,(map (lambda (var) (list '<SCM> (cadr var)))
- parameters)
- ,@(map-in-order (lambda (das-type)
- (let* ((type (car das-type))
- (name (cadr das-type)))
- (cond ((string=? "UNSPECIFIED" type)
- (c-display "\n\nError! eval-c.scm/eval-c-gen-public-func: Strange type for " das-type "\n\n"))
- ((string=? "SCM" type) "/* */")
- ((string=? "JMP_BUF" type) "/* *")
- (else
- `(SCM_ASSERT ,(cond ((string=? "STRING" type) `(|| (scm_is_false ,name) (IS_STRING_P ,name)))
- ((string=? "POINTER" type) `(POINTER_P ,name))
- ((string=? "INTEGER" type) `(== SCM_BOOL_T (scm_number_p ,name)))
- ((string=? "INT64" type) `(== SCM_BOOL_T (scm_number_p ,name)))
- ((string=? "FLOAT" type) `(== SCM_BOOL_T (scm_number_p ,name)))
- ((string=? "DOUBLE" type) `(== SCM_BOOL_T (scm_number_p ,name)))
- (else (c-display "\n\nError! eval.cscm/eval-c-gen-public-func: What?\n\n")))
- ,name
- ,(let ((ret i)) (set! i (1+ i)) ret)
- (string ,type))))))
- types)
- (,(let ((ret-scm (eval-c-to-scm (string-trim-right (eval-c-get-propertype rettype)))))
- (cond ((string=? "UNSPECIFIED" ret-scm) 'RETURN_UNSPECIFIED)
- ((string=? "POINTER" ret-scm) 'RETURN_POINTER)
- ((string=? "STRING" ret-scm) 'RETURN_STRING)
- (else
- (<-> "return MAKE_" ret-scm))))
- (,funcname ,@(map (lambda (type)
- (list (string->symbol (<-> "GET_" (car type)))
- (cadr type)))
- types)))))
- (run-now
- (scm_c_define_gsubr (string ,(if publicname publicname funcname_org)) ,(length parameters) 0 0 ,helperfuncname)))))
-
-(define-c-macro (public . body)
- (let* ((newbody '()))
- (for-each (lambda (term)
- (if (and (eval-c-symbol-is-type (car term))
- (= 3 (length term))
- (list? (caddr term))
- (eq? 'lambda (caaddr term)))
- (set! newbody (append newbody (list term) (eval-c-gen-public-func term)))
- (set! newbody (append newbody (list term)))))
- body)
- (eval-c-parse-lines newbody)))
-
-#!
-(eval-c-parse '(public (<int> a (lambda ((<int> b) (<char-*> c) (<void-*> d) (<float> e))
- (return 5)))))
-(eval-c ""
- (public
- (<void> as (lambda ((<void-*> a))
- (printf (string ("still here\\n")))))))
-(as (list "A_POINTER" 1112607200))
-!#
-
-(define eval-c-get-unique-name
- (let ((num 0))
- (lambda ()
- (set! num (1+ num))
- (<-> "unique_name_" (number->string num)))))
-
-(define (eval-c-proto->public funcdef)
- (let* ((temp (map string-trim-both (string-split funcdef #\()))
- (retname (string-split (car temp) #\space))
- (rettype (string-trim-both (apply <-> (map (lambda (x) (<-> x " ")) (c-butlast retname)))))
- (name (last retname))
- (args (let* ((temp1 (string-trim-right funcdef))
- (temp2 (string-trim-both (substring temp1
- (1+ (string-index temp1 #\())
- (1- (string-length temp1))))))
- (if (or (= (string-length temp2) 0)
- (string=? temp2 "void"))
- '()
- (map (lambda (x)
- (if (string-index x #\()
- (list "void*" (eval-c-get-unique-name))
- (let ((dassplit (map string-trim-both (string-split (string-trim-both x) #\space))))
- (if (= 1 (length dassplit))
- (list (car dassplit) (eval-c-get-unique-name))
- (list (string-trim-both (apply <-> (map (lambda (x)
- (<-> x " "))
- (c-butlast dassplit))))
- (string-trim-both (last dassplit)))))))
- (string-split temp2 #\,)))))
- )
-
- (while (char=? #\* (car (string->list name)))
- (begin
- (set! name (list->string (cdr (string->list name))))
- (set! rettype (<-> rettype "*"))))
-
- (eval-c-gen-public-func
- `( ,(string->symbol rettype) ,(string->symbol name) (lambda ,(map (lambda (x)
- (let* ((type (car x))
- (name (cadr x)))
- (if (char=? #\* (car (string->list name)))
- (begin
- (set! name (list->string (cdr (string->list name))))
- (if (string=? "" name)
- (set! name (eval-c-get-unique-name)))
- (set! type (<-> type "*"))))
- (list (string->symbol type)
- (string->symbol name))))
- args))))))
-#!
-(eval-c-proto->public "const char *jack_port_name (const jack_port_t *port)")
-(eval-c-proto->public "const char **jack_port_get_connections (const jack_port_t *port)")
-
-(eval-c-proto->public "void *jack_port_get_buffer (jack_port_t *, jack_nframes_t)")
-(eval-c-proto->public "void jack_on_shutdown (jack_client_t *client, void (*function)(void *arg), void *arg)")
-(eval-c-proto->public "void jack_on_shutdown (jack_client_t *client, void* arg)")
-!#
-
-(define-c-macro (proto->public . body)
- (eval-c-parse-lines (apply append! (map eval-c-proto->public
- (apply append! (map (lambda (lines) (remove! (lambda (line) (string=? "" (string-trim-both line)))
- lines))
- (map (lambda (bod) (string-split bod #\;))
- body)))))))
-
-
-#!
-(eval-c ""
- "#include <jack/jack.h>"
- (proto->public
- "int getchar(void);
-int fgetc (FILE
- *stream)"
- "int getc(FILE *stream)"
- "void jack_on_shutdown (jack_client_t *client, void (*function)(void *arg), void *arg)"
- "void *jack_port_get_buffer (jack_port_t *, jack_nframes_t)"
- "const char *jack_port_type (const jack_port_t *port)"
- ))
-
-(string-split "int ai();" #\;)
-!#
-
-
-(define-c-macro (variables->public . terms)
- (apply <-> (map (lambda (term)
- (let ((type (car term))
- (vars (cdr term)))
- (apply <-> (map (lambda (var)
- (let* ((funcname (string->symbol (eval-c-get-unique-name)))
- (funcdef `(,type ,funcname (lambda () (return ,var)))))
- (<-> (eval-c-parse funcdef)
- (eval-c-parse-lines (eval-c-gen-public-func funcdef var)))))
- vars))))
- terms)))
-
-(define-c-macro (functions->public . terms)
- (apply <-> (map (lambda (term)
- (<-> (eval-c-parse term)
- (eval-c-parse `(variables->public (<void*> ,(cadr term))))))
- terms)))
-
-#!
-
-(eval-c-parse
- '(variables->public
- (<int> JackPortIsInput
- JackPortIsOutput
- JackPortIsPhysical
- JackPortCanMonitor
- JackPortIsTerminal)
- (<char*> JACK_DEFAULT_TYPE)))
-!#
-
-
-(define-c-macro (set! name val)
- (<-> (eval-c-parse name) " = " (eval-c-parse val)))
-
-(define-c-macro (or . tests)
- `(|| ,@tests))
-
-(define-c-macro (and . tests)
- `(&& ,@tests))
-
-(define-c-macro (quote val)
- (<-> (string #\') (string-trim-right (eval-c-parse val)) (string #\')))
-
-(define-c-macro (let* defs . body)
- `(begin
- ,@(map (lambda (def)
- (if (= 3 (length def))
- (list (cadr def) (car def) (caddr def))
- (if (and (not (symbol? (cadr def)))
- (not (list? (cadr def))))
- (c-display "Error. \"" (cadr def) "\" is (probably) not a type in expression" def)
- (list (cadr def) (car def)))))
- defs)
- ,@body))
-
-(define-c-macro (let . something)
- (c-display "\n\nError. No such eval-c function: let. (perhaps you ment let*?)\n\n"))
-
-(define-c-macro (cast etype var)
- (<-> "((" (eval-c-etype->ctype etype) ")" (eval-c-parse var) ")"))
-
-(define-c-macro (not atest)
- `("!" ,atest))
-
-(define-c-macro (1+ something)
- `(+ 1 ,something))
-
-(define-c-macro (1- something)
- `(- ,something 1))
-
-(define-c-macro (sizeof type)
- `("sizeof" ,(eval-c-get-propertype type)))
-
-(define-c-macro (while test . body)
- (<-> "while (" (eval-c-parse test) ")"
- (eval-c-parse `(begin ,@body))))
-
-(define-c/faust-macro (string astring)
- (<-> "\"" (if (string? astring)
- astring
- (string-trim-right (eval-c-parse astring)))
- "\""))
-
-(define-c-macro (for init testing lastaction . body)
- `(begin ,init
- (while 1 (begin
- (if (not ,testing) break)
- ,@body
- ,lastaction))))
-
-
-(define-c-macro (for-each startval . rest)
- (let* ((restlen (length rest))
- (itername (caadr (last rest)))
- (body (cddr (last rest)))
- (endval #f)
- (testfunc #f)
- (addval #f))
- (cond ((= 2 restlen)
- ;;(for-each 0 n
- (set! endval (car rest))
- (set! testfunc (if (and (number? endval)
- (number? startval))
- (if (> startval endval)
- '>=
- '<)
- '<))
- (set! addval (if (eq? testfunc '<)
- 1
- -1)))
-
- ((= 4 restlen)
- ;;(for-each 0 < n 1
- (set! testfunc (car rest))
- (set! endval (cadr rest))
- (set! addval (caddr rest)))
-
- (else
- (if (member (car rest) '(< > <= >= == != <> & | ~))
- (begin
- ;;(for-each 0 < n
- (set! testfunc (car rest))
- (set! endval (cadr rest))
- (set! addval (if (member testfunc '(> =>))
- -1
- 1)))
- (begin
- ;;(for-each 0 n 1
- (set! endval (car rest))
- (set! testfunc (if (and (number? endval)
- (number? startval))
- (if (> startval endval)
- '>=
- '<)
- '<))
- (set! addval (cadr rest))))))
- `(for (<int> ,itername ,startval)
- (,testfunc ,itername ,endval)
- (set! ,itername (+ ,itername ,addval))
- ,@body)))
-
-
-
-
-
-#!
-
-;; neverending loop!
-(eval-c ""
- (run-now
- (for-each 10 != 5 1
- (lambda (i)
- (printf (string "%d\\n") i)))))
-
-
-(eval-c-parse '(if (not (== a 2)) b))
-
-(eval-c-parse '(for-each 0 < 5 1
- (lambda (i)
- (set! out[i] 0.0f))))
-
-(eval-c-parse '(for (set! i 0) (< i 5) i++
- (printf i)))
-
-(eval-c-parse '(if (not (a)) b))
-
-(eval-c-parse '(while (a) (begin (ai))))
-(eval-c-parse '(<static-int> a 5))
-(eval-c-parse '(define a <static-int> 5))
-(eval-c-parse '(<int> (define (gakk (<int> a)) (ai))))
-(eval-c-parse '(define (gakk (<int> a))))
-
-(eval-c-parse (list 'lambda (list (list '<int> 'a))))
-
-(define-c-macro (printf . rt)
- `("printf" 4 5 ,@rt))
-(macroexpand (cons (symbol-append eval-c-macro-prefix 'printf) (list 2)))
-
-(eval-c-parse '(<int> gakk (lambda ()
- au
- (au2))))
-
-(eval-c-parse '(<static-int> gakk 452 3 "314" (printf "asdfasdf")))
-
-(eval-c-parse '(if (not (== a b))
- (begin
- (printf (+ 2 5 2))
- (ai 5))
- (printf 3)))
-
-(eval-c-parse '(cond (test1 todo1 todo1.2 (todo1.3))
- (test2 todo2)
- (else todo3)))
-
-(eval-c-parse '(if (== 2 test1)
- (begin
- (todo1)
- (todo1.2)
- (todo1.3))
- (if (== 2 test2)
- (begin
- (todo2))
- (begin
- (todo3)
- (todo3.2)))))
-
-(eval-c-parse '(<void> parse_arguments
- (lambda ((<int> argc) (<char**> argv))
- (if (< argc 2)
- (begin
- (fprintf stderr (string "usage: %s y|n\n") package)
- (exit 9))))))
-
-(eval-c-parse '(<void> (define (parse_arguments (<int> argc)
- (<char**> argv))
- (if (< argc 2)
- (begin
- (fprintf stderr (string "usage: %s y|n\n") package)
- (exit 9)))
- (if (or (== argv[1][0] 'y)
- (== argv[1][0] 'Y)
- (== argv[1][0] '1))
- (set! onoff 1)
- (set! onoff 0)))))
-
-(eval-c-parse '(<int> process (lambda ((<jack_nframes_t> nframes)
- (<void*> arg))
- (let* ((out <jack_default_audio_sample_t*>
- (jack_port_get_buffer output_port nframes))
- (in <jack_default_audio_sample_t*>
- (jack_port_get_buffer input_port nframes)))
- (memcpy out in
- (* (sizeof <jack_default_audio_sample_t>) nframes)))
-
- (return 0))))
-
-
-!#
-
-
-
-;;;;;;;;;;;;;;;;;; Cache
-
-(define eval-c-generation 9) ;;Cached code with different generation can not be used, and file is automatically deleted.
-
-(define eval-c-cache-dir (<-> (getenv "HOME") "/snd-eval-c-cache"))
-
-(system (<-> "mkdir " eval-c-cache-dir " >/dev/null 2>/dev/null"))
-(define eval-c-cache '())
-
-(define eval-c-cached-code #f)
-
-;; Load cached code.
-(let* ((dir (opendir eval-c-cache-dir))
- (entry (readdir dir)))
- (while (not (eof-object? entry))
- (if (and (not (string=? "." entry))
- (not (string=? ".." entry))
- (>= (string-length entry) 6)
- (string=? (string-take entry 6) "cache.")
- (not (string=? (string-take-right entry 3) ".so")))
- (let ((filename (<-> eval-c-cache-dir "/" entry))
- (itsokey #t))
- ;;(c-display "cache-eval" filename)
- (catch #t
- (lambda ()
- (load filename)
- (list (car eval-c-cached-code)
- (cadr eval-c-cached-code)
- (caddr eval-c-cached-code)
- (cadddr eval-c-cached-code)
- (cadr (cdddr eval-c-cached-code))
- (caddr (cdddr eval-c-cached-code))
- ))
- (lambda x
- (set! itsokey #f)
- (c-display x)
- (c-display "Suspicious cached file detected:" filename "(this file should be deleted)")))
- (if itsokey
- (if (or (not (string=? (cadr eval-c-cached-code) (snd-version)))
- (not (string=? (caddr eval-c-cached-code) (version)))
- (not (= (car eval-c-cached-code) eval-c-generation)))
- (begin
- (c-display "Deleting obsolete cached code " (cadddr eval-c-cached-code) "and" filename ".")
- (system (<-> "rm -f " (cadddr eval-c-cached-code) " " filename)))
- (set! eval-c-cache (cons (cdddr eval-c-cached-code)
- eval-c-cache))))))
- (set! entry (readdir dir)))
- (closedir dir))
-;(load (<-> eval-c-cache-dir "/cache.qtSKPT"))
-;(begin eval-c-cached-code)
-
-
-(define (eval-c-check-cached compile-options terms)
- ;;(pretty-print terms)
- (let ((ret (call-with-current-continuation
- (lambda (return)
- (for-each (lambda (cache)
- (if (and (string=? compile-options (cadr cache))
- (equal? terms (caddr cache)))
- (return cache)))
- eval-c-cache)
- (return #f)))))
- (if ret
- (catch #t
- (lambda ()
- (cond ((defined? 'c-dynamic-call)
- (c-dynamic-call (car ret) "das_init"))
- (else
- (c-display "Linking" (car ret))
- (dynamic-call "das_init" (dynamic-link (car ret))))))
- (lambda x
- (c-display x)
- (set! ret #f))))
- ret))
-
-(define (eval-c-cache-it compile-options terms object-file)
- (if object-file
- (let* ((mainfile (mkstemp! (<-> eval-c-cache-dir "/cache.XXXXXX")))
- (newobjectfile (<-> (port-filename mainfile) ".so")))
- (set! eval-c-cache (cons `(,newobjectfile ,compile-options ,terms)
- eval-c-cache))
- (system (<-> "mv " object-file " " newobjectfile))
- (pretty-print `(set! eval-c-cached-code '(,eval-c-generation ,(snd-version) ,(version) ,newobjectfile ,compile-options ,terms)) mainfile)
- (close mainfile))))
-
-#!
-(eval-c-cache-it "aiai" '(gakk gakk))
-(pretty-print '(define (foo) (lambda (x))))
-(define t (mkstemp! "/tmp/aiXXXXXX"))
-(cadr (begin t))
-(port-filename t)
-
-!#
-
-
-;;;;;;;;;;;;;;;;;; Compiling and stuff
-
-;;(define (ec-waitforfile filename)
-;; (while (not (access? filename X_OK))
-;; (usleep 100)))
-
-(define eval-c-filestobedeleted '())
-(define (delete-at-exit filename)
- (push! filename eval-c-filestobedeleted))
-
-(add-hook! exit-hook (lambda args
- (for-each (lambda (filename)
- (system (<-> "rm -f " filename)))
- eval-c-filestobedeleted)
- #f))
-
-(define old-tmpnam tmpnam)
-(define* (tmpnam :key (autodelete #t))
- (define ret (old-tmpnam))
- (if autodelete
- (delete-at-exit ret))
- ret)
-
-
-(define* (eval-c-eval #:key (compile-options "") . codestrings)
- (let* ((evalstring "")
- (sourcefile (<-> (tmpnam) ".c"))
- (libfile (<-> sourcefile ".so"))
- (fd (open-file sourcefile "w"))
- (guile-config (<-> (cdr (assoc 'bindir %guile-build-info)) "/guile-config")))
- (if (not (access? guile-config X_OK))
- (begin
- (c-display "Error. " guile-config " not found, or is not an executable.")
- (c-display " Perhaps you need the guile-devel pacage?")
- (newline)
- (exit)))
- (for-each (lambda (s)
- (write-line s fd))
- (if (eq? (car codestrings) '#:compile-options)
- (cddr codestrings)
- codestrings))
- (close fd)
- (if eval-c-verbose
- (c-display "Compiling" sourcefile))
- (if #f
- (c-display (<-> *eval-c-compiler* " -O3 -fPIC -shared -o " libfile " " sourcefile " "
- (if (string=? *eval-c-compiler* "icc")
- "-L/opt/intel_cc_80/lib /opt/intel_cc_80/lib/libimf.a"
- (<-> "-Wall " (or (getenv "CFLAGS") "") " " (if (getenv "LDFLAGS") (getenv "LDFLAGS") "") " "))
- (string #\`) guile-config " compile" (string #\`) " "
- compile-options)))
- (if (not (= 0 (system (<-> *eval-c-compiler* " -O3 -fPIC -shared -o " libfile " " sourcefile " -g " ;" -fomit-frame-pointer "
- (if (string=? *eval-c-compiler* "icc")
- "-L/opt/intel_cc_80/lib /opt/intel_cc_80/lib/libimf.a"
- (<-> "-Wall " (or (getenv "CFLAGS") "") " " (if (getenv "LDFLAGS") (getenv "LDFLAGS") "") " "))
- " " *eval-c-CFLAGS* " "
- (string #\`) guile-config " compile" (string #\`) " "
- compile-options))))
- (begin
- (if eval-c-lazy-cleanup
- (delete-at-exit sourcefile))
- (throw 'compilation-failed)))
-
- ;;(ec-waitforfile libfile)
- (if (defined? 'c-dynamic-call)
- (c-dynamic-call libfile "das_init")
- (dynamic-call "das_init" (dynamic-link libfile)))
- (if (not *eval-c-do-cache*)
- (system (<-> "rm " libfile)))
-
- (if eval-c-cleanup
- (system (<-> "rm " sourcefile))
- (if eval-c-lazy-cleanup
- (delete-at-exit sourcefile)))
- libfile))
-
-
-
-
-(define (eval-c-parse-file terms)
- (define temp #f)
-
- (set! eval-c-run-nows '())
- (set! eval-c-typelistlist '())
- (set! eval-c-typelist '())
- ;;;(set! eval-c-structlist '())
- (set! eval-c-classlist '())
- (set! eval-c-level 0)
- (set! eval-c-string-is-pointer #f)
-
- (set! temp (map eval-c-parse-line terms))
-
- `(,(<-> "#include \"" snd-header-files-path "/mus-config.h\"")
- "#include <stdio.h>"
- "#include <libguile.h>"
- "#include <string.h>"
- "#include <stdlib.h>"
- "#define NOTHING"
- "#ifndef SCM_VECTOR_REF"
- " #define SCM_VECTOR_REF(a,b) SCM_VELTS (a)[(long)(b)]"
- "#endif"
- "#ifndef scm_is_false"
- "# define scm_is_false(a) ((a) == (SCM_BOOL_F))"
- "#endif"
- "#define EC_MAX(a,b) (((a)>(b))?(a):(b))"
- "#define EC_MIN(a,b) (((a)<(b))?(a):(b))"
- "#define MAKE_STRING(a) scm_protect_object(scm_mem2string(a,strlen(a)))"
- "#define RETURN_STRING(a) {char *ret=(a); return ret?MAKE_STRING(ret):SCM_BOOL_F;}"
- "#ifdef SCM_STRING_CHARS"
- "# define GET_STRING(a) (scm_is_false(a)?NULL:(char*)SCM_STRING_CHARS(a))"
- "#else"
- "# define GET_STRING(a) (scm_is_false(a)?NULL:(char*)scm_i_string_chars(a))"
- "#endif"
- "#define GET_POINTER3(a) (scm_is_false(a)?NULL:(void *)scm_num2ulong(a,0,\"GET_POINTER3()\"))"
- "#define GET_POINTER(a) (scm_is_false(a)?NULL:GET_POINTER3(SCM_CAR(SCM_CDR(a))))"
- "#define GET_POINTER2(a) GET_POINTER(a)"
- "#define MAKE_POINTER(a) scm_cons(MAKE_STRING(\"A_POINTER\"),scm_cons(scm_ulong2num((unsigned long)a),SCM_EOL))"
- "#define RETURN_POINTER(a) {unsigned long ret=(unsigned long)(a); return ret?MAKE_POINTER(ret):SCM_BOOL_F;}"
- "#define RETURN_UNSPECIFIED(a) {(a);return SCM_UNSPECIFIED;}"
- "#define GET_INTEGER(a) scm_to_int(scm_inexact_to_exact(scm_floor(a)))"
- "#define MAKE_INTEGER(a) scm_from_int(a)"
- "#define GET_INT64(a) scm_to_int64(scm_inexact_to_exact(scm_floor(a)))"
- "#define MAKE_INT64(a) scm_from_int64(a)"
- "#define GET_DOUBLE(a) scm_num2dbl(a,\"GET_DOUBLE\")"
- "#define MAKE_DOUBLE(a) scm_make_real((double)a)"
- "#define GET_FLOAT(a) ((float)scm_num2dbl(a,\"GET_DOUBLE\"))"
- "#define MAKE_FLOAT(a) scm_make_real((double)a)"
- "#define GET_SCM(a) (a)"
- "#define MAKE_SCM(a) (a)"
- "#define POINTER_P(a) (scm_is_false(a) || ((SCM_BOOL_T == scm_list_p(a)) && (IS_STRING_P(SCM_CAR(a)) || SCM_SYMBOLP(SCM_CAR(a))) && SCM_NULLP(SCM_CDR(SCM_CDR(a))) && (SCM_BOOL_T ==scm_number_p(SCM_CAR(SCM_CDR(a))))))"
- "#ifdef SCM_STRINGP"
- "# define IS_STRING_P(Arg) (SCM_STRINGP(Arg))"
- "#else"
- "# define IS_STRING_P(Arg) scm_is_string(Arg)"
- "#endif"
- "typedef scm_t_int64 int64;"
- ,@temp
-
- "void das_init(){"
- ,@(map (lambda (x)
- (<-> x "();"))
- (reverse eval-c-run-nows))
- "}"))
-
-
-
-#!
-(define (eval-c-non-macro compile-options . terms)
- (apply eval-c-eval
- (append (list #:compile-options compile-options)
- (eval-c-parse-file terms))))
-!#
-
-(define (eval-c-non-macro compile-options cache-key . terms)
- (if cache-key
- (if (not (eval-c-check-cached compile-options cache-key))
- (eval-c-cache-it compile-options cache-key
- (apply eval-c-eval
- (append (list #:compile-options compile-options)
- (eval-c-parse-file terms)))))
- (apply eval-c-eval
- (append (list #:compile-options compile-options)
- (eval-c-parse-file terms)))))
-
-
-(define-macro (eval-c compile-options . terms)
- `(if (not (eval-c-check-cached ,compile-options ',terms))
- (eval-c-cache-it ,compile-options ',terms
- (eval-c-eval #:compile-options ,compile-options
- ,@(eval-c-parse-file terms)))))
-
-
-
-(eval-c ""
- "#include <dlfcn.h>"
- "#include <unistd.h>"
-
- "typedef void (*functype)()"
-
- (variables->public
- (<int> RTLD_LAZY RTLD_NOW RTLD_GLOBAL RTLD_LOCAL))
-
- (public
- (<void-*> c_dlsym_internal (lambda ((<void-*> handle)
- (<char-*> funcname))
- (if (== handle NULL)
- (begin
- (printf (string "Handle null (%s)\\n") (dlerror))
- (return NULL))
- (return (dlsym handle funcname)))))
-
- (<void> c_dynamic_call_internal (lambda ((<void-*> handle)
- (<char-*> funcname))
- (let* ((func <functype> (c_dlsym_internal handle funcname)))
- (if (== func NULL)
- (printf (string "func null (%s)\\n") (dlerror))
- (func)))))
- (<void-*> c_dynamic_handle_internal (lambda ((<char-*> filename)
- (<int> flag))
- (let* ((handle <void-*> (dlopen filename flag)))
- (if (== handle NULL)
- (begin
- (printf (string "Handle null (%s)\\n") (dlerror))
- (return NULL))
- (return handle)))))))
-(define* (c-dynamic-handle filename :key
- (flags (logior (RTLD_GLOBAL) (RTLD_NOW))))
- (c_dynamic_handle_internal filename flags))
-
-(define (c-dlsym filename_or_handle funcname)
- (c_dlsym_internal (if (string? filename_or_handle)
- (c-dynamic-handle filename_or_handle)
- filename_or_handle)
- funcname))
-
-(define (c-dynamic-call filename_or_handle funcname)
- (if (string? filename_or_handle)
- (c-display "linking" filename_or_handle funcname))
- (c_dynamic_call_internal (if (string? filename_or_handle)
- (c-dynamic-handle filename_or_handle)
- filename_or_handle)
- funcname))
-
-
-
-;(define-macro (define-c ret-type def . body)
-; `(eval-c ""
-; (public (,(car def) ,(cadr def) (lambda ,(cdr def)
-; ,@body)))))
-
-(define-macro (define-c ret-type def)
- `(eval-c ""
- (public (,ret-type ,(car def) (lambda ,(cadr def)
- ,@(cddr def))))))
-#!
-(load-from-path "eval-c.scm")
-
-(eval-c ""
- (run-now
- (printf (string "Hello world!\\n"))))
-!#
-
-(eval-c ""
- (<void-*> a_pointer)
- (public
- (<int> ec-get-ints-element (lambda ((<int*> array) (<int> n))
- (return array[n])))
- (<double> ec-get-doubles-element (lambda ((<double*> array) (<int> n))
- (return array[n])))
- (<float> ec-get-floats-element (lambda ((<float*> array) (<int> n))
- (return array[n])))
- (<char*> ec-get-strings-element (lambda ((<char**> array) (<int> n))
- (return array[n])))
- (<void*> ec-get-pointers-element (lambda ((<void**> array) (<int> n))
- (return array[n])))
-
- (<void> ec-put-ints-element (lambda ((<int*> array) (<int> val) (<int> n))
- (set! array[n] val)))
- (<void> ec-put-doubles-element (lambda ((<double*> array) (<double> val) (<int> n))
- (set! array[n] val)))
- (<void> ec-put-floats-element (lambda ((<float*> array) (<float> val) (<int> n))
- (set! array[n] val)))
- (<void> ec-put-strings-element (lambda ((<char**> array) (<char*> val) (<int> n))
- (set! array[n] val)))
- (<void> ec-put-pointers-element (lambda ((<void**> array) (<void*> val) (<int> n))
- (set! array[n] val)))
-
- (<int*> ec-make-ints (lambda ((<int> n))
- (return (calloc n (sizeof <int>)))))
- (<int64*> ec-make-int64s (lambda ((<int> n))
- (return (calloc n (sizeof <int64>)))))
- (<double*> ec-make-doubles (lambda ((<int> n))
- (return (calloc n (sizeof <double>)))))
- (<float*> ec-make-floats (lambda ((<int> n))
- (return (calloc n (sizeof <float>)))))
- (<char**> ec-make-strings (lambda ((<int> n))
- (return (calloc n (sizeof <char*>)))))
- (<void**> ec-make-pointers (lambda ((<int> n))
- (return (calloc n (sizeof <void*>)))))
- (<size_t> ec-sizeof-pointer (lambda ()
- (return (sizeof <void-*>))))
- (<void-*> ec-pointer-to-pointer (lambda ((<void-*> pointer))
- (set! a_pointer pointer)
- (return &a_pointer)))
- ;; careful
- (<void> ec-free (lambda ((<void-*> pointer))
- (free pointer)))
-
- ;; No. This is dangerous, ugly and unnecesarry. #f is the same as NULL from the guile-side.
- ;;(<SCM> c_NULL (lambda ()
- ;; (return (MAKE_POINTER NULL))))
- ;;(run-now
- ;; (scm_c_define_gsubr (string "NULL") 0 0 0 c_NULL)
- ))
-
-
-
-(define ec-pointer->integer cadr)
-
-(define (ec-pointer? something)
- (and (pair? something)
- (string? (car something))
- (string=? "A_POINTER" (car something))))
-
-;; This one will never return an integer array, unless das-make-func is set to ec-make-ints. Same
-;; goes for creating a double-array; das-make-func must be set to ec-make-doubles.
-(define* (ec-make-array array #:key das-make-func das-ret)
- (if (null? array)
- #f
- (let* ((make-func (if das-make-func
- das-make-func
- (cond ((string? (car array)) ec-make-strings)
- ((ec-pointer? (car array)) ec-make-pointers)
- (else ec-make-floats))))
- (ret (if das-ret
- das-ret
- (make-func (length array))))
- (put-func (cond ((eq? ec-make-strings make-func) ec-put-strings-element)
- ((eq? ec-make-pointers make-func) ec-put-pointers-element)
- ((eq? ec-make-floats make-func) ec-put-floats-element)
- ((eq? ec-make-doubles make-func) ec-put-doubles-element)
- ((eq? ec-make-ints make-func) ec-put-ints-element)
- (else
- (c-display "Illegal das-make-func argument for ec-make-array: " das-make-func)))))
-
- (c-for-each (lambda (n val)
- (put-func ret val n))
- array)
- ret)))
-
-(define (ec-get-nullterminated-somethings array get-func)
- (let ((ret '()))
- (let loop ((n 0))
- (let ((res (get-func array n)))
- (if res
- (begin
- (set! ret (cons res ret))
- (loop (1+ n))))))
- (reverse! ret)))
-
-(define (ec-get-somethings array num-elements get-func)
- (if num-elements
- (let ((ret '()))
- (c-for 0 < num-elements 1
- (lambda (n)
- (set! ret (cons (get-func array n)
- ret))))
- (reverse! ret))
- (ec-get-nullterminated-somethings array get-func)))
-
-(define* (ec-get-ints array #:optional num)
- (ec-get-somethings array num ec-get-ints-element))
-(define* (ec-get-doubles array #:optional num)
- (ec-get-somethings array num ec-get-double-element))
-(define* (ec-get-floats array #:optional num)
- (ec-get-somethings array num ec-get-floats-element))
-(define* (ec-get-strings array #:optional num)
- (ec-get-somethings array num ec-get-strings-element))
-(define* (ec-get-pointers array #:optional num)
- (ec-get-somethings array num ec-get-pointers-element))
-
-
-#!
-(define a (ec-make-array '(0 1 2 3 4 5) #:das-make-func ec-make-ints))
-(ec-get-ints a 10)
-
-(define b (ec-make-array (list a a a a a a) #:das-make-func ec-make-pointers))
-(begin b)
-(ec-get-pointers b 6)
-!#
-
-
-;(define (ec-make-struct something)
-; ())
-
-(define (free-ec-struct-from-guardian object)
- (c-display "Automatically freeing a c-object of type:" ". This should not lead to trouble, but I'm not sure.")
- (if #t
- (begin
- (ec-free object)
- (c-display "that went well...?"))
- (c-display "(not really freeing)" object))
- ;;(,(symbol-append cleanname '_delete) das-c-object)
- ;;(-> das-this destructor)
- )
-
-
-(define-macro (define-ec-struct name . rest)
- (define autofree #f)
- (when (eqv? (car rest) :autofree)
- (set! autofree (cadr rest))
- (set! rest (cddr rest)))
-
- (let ((structname (symbol-append '<struct- (string->symbol
- (list->string
- (cdr
- (string->list
- (symbol->string
- name)))))))
- (structname-pointer (symbol-append '<struct- (string->symbol
- (<->
- (list->string
- (cdr
- (c-butlast
- (string->list
- (symbol->string
- name)))))
- "-*>"))))
- (cleanname (string->symbol (eval-c-etype->ctype name)))
- (das-map (eval-c-listify-struct rest)))
- (eval-c-add-struct structname
- (map (lambda (a)
- (if (= 3 (length a))
- (list (caddr a) (car a) (cadr a))
- (list (cadr a) (car a))))
- das-map))
- (primitive-eval
- `(eval-c ""
- ,(eval-c-shared-struct-but-only-known-types name)
- (public
- (,structname-pointer ,(symbol-append cleanname '_new) (lambda ()
- (return (calloc 1 (sizeof ,structname)))))
- (<void> ,(symbol-append cleanname '_delete) (lambda ((,structname-pointer arg))
- (free arg)))
- (<int> ,(symbol-append cleanname '_get_das_size) (lambda ()
- (return (sizeof ,structname))))
- ,@(apply append (map (lambda (def)
- (let ((name (cadr def))
- (type (if (or (pair? (car def))
- (= 3 (length def)))
- '<void-*>
- (eval-c-get-known-type (car def)))))
- `((<void> ,(symbol-append cleanname '_set_ name) ,(if (eq? type '<void-*>)
- `(lambda ((,structname-pointer arg)
- (,type newval)
- (<int> autofree))
- (if autofree (free ,(symbol-append 'arg-> name)))
- (set! ,(symbol-append 'arg-> name) newval))
- `(lambda ((,structname-pointer arg)
- (,type newval))
- (set! ,(symbol-append 'arg-> name) newval))))
- (,type ,(symbol-append cleanname '_get_ name) (lambda ((,structname-pointer arg))
- (return ,(symbol-append 'arg-> name)))))))
- (remove (lambda (t)
- (eq? '<jmp_buf> (car t)))
- das-map))))))
- `(def-class (,name :key
- ,@(map cadr das-map))
-
- (define c-object
- (let ((ret (,(symbol-append cleanname '_new))))
- (if ,autofree
- (add-finalizer ret free-ec-struct-from-guardian))
- ret))
-
-
- (def-method (get-c-object)
- c-object)
-
-; (define-method (get-pointer-to-c-object)
-; (cons "A_POINTER" (cons (scm_ulong2num ((unsigned long)a),SCM_EOL))
-
- (def-method (destructor)
- (,(symbol-append cleanname '_delete) c-object))
-
-
- (def-method (get-size)
- (,(symbol-append cleanname '_get_das_size)))
-
- ,@(map (lambda (def)
- `(define ,(symbol-append 'num-(cadr def)) #f))
- das-map)
-
- ,@(map (lambda (def)
- (let* ((name (cadr def))
- (type (car def))
- (typetype (eval-c-to-scm (eval-c-etype->ctype type)))
- (type*type (eval-c-to-scm (eval-c-etype->ctype (eval-c-get-*type type)))))
- (if (string=? typetype "POINTER")
- `(def-method (,name #:key das-make-func (autofree 'auto) #:rest rest)
- (if (not (null? rest))
- (let ((newval (car rest))
- (org-num ,(symbol-append 'num- name)))
- (,(symbol-append cleanname '_set_ name)
- c-object
- (if (and (not (ec-pointer? newval))
- (list? newval))
- (begin
- (set! ,(symbol-append 'num- name) (length newval))
- (ec-make-array (if (and (not (null? newval))
- (procedure? (car newval)))
- (map (lambda (a) (->2 a get-c-object))
- newval)
- newval)
- #:das-make-func ,(cadr (member type*type
- `("UNSPECIFIED" ec-make-pointers
- "STRING" ec-make-pointers
- "INTEGER" ec-make-ints
- "INT64" ec-make-int64s
- "DOUBLE" ec-make-doubles
- "FLOAT" ec-make-floats
- "POINTER" ec-make-pointers)))))
- (begin
- (set! ,(symbol-append 'num- name) #f)
- newval))
- (if (eq? autofree 'auto)
- (if org-num 1 0)
- (if autofree 1 0))))
- (if ,(symbol-append 'num- name)
- (,(cadr (member type*type
- `("UNSPECIFIED" ec-get-pointers
- "STRING" ec-get-pointers
- "INTEGER" ec-get-ints
- "INT64" ec-get-int64s
- "DOUBLE" ec-get-doubles
- "FLOAT" ec-get-floats
- "POINTER" ec-get-pointers)))
- (,(symbol-append cleanname '_get_ name) c-object)
- ,(symbol-append 'num- name))
- (,(symbol-append cleanname '_get_ name) c-object))))
- `(def-method (,name . rest)
- (if (not (null? rest))
- (,(symbol-append cleanname '_set_ name) c-object (car rest))
- (,(symbol-append cleanname '_get_ name) c-object))))))
- das-map)
- ,@(map (lambda (def)
- (let ((name (cadr def)))
- (if (eq? '<SCM> (car def))
- `(->2 this ,name ,name)
- `(if ,name
- (->2 this ,name ,name)))))
- das-map)
- )
- ))
-
-#!
-(define-ec-struct <struct_name>
- <int> one
- <float-*> twos
- <char-*> three)
-(define test (<struct_name> :one 1
- :twos '(2)
- :three "three"))
-
-
-(gc)
-(-> test one)
-=> 1
-
-(-> test one 4)
-(-> test one)
-=> 4
-
-(-> test twos)
-=> (2.0)
-
-(-> test twos '(2 3 4))
-(-> test twos)
-=> (2.0 3.0 4.0)
-
-(-> test three "four")
-(-> test three)
--> "four"
-
-
-(define-ec-struct <test>
- <SCM> val)
-
-(define test (<test> :val (list 2 3 4)))
-(gc)
-(-> test val)
-
-
-(define-ec-struct <test_struct>
- <int> one
- <float-*> floats)
-
-
-(define test (<test_struct> :one 1
- :floats '(2 3 4)))
-=> #<unspecified>
-
-(-> test scm test)
-(-> test scm)
-
-(-> test one)
-=> 1
-
-(-> test one 10)
-=> #<unspecified>
-
-(-> test one)
-=> 10
-
-(-> test get-c-object)
-
-(define-ec-struct test
-
-
-(define-ec-struct <Jack_Arg>
- <int> num_inports
- <int-*> ai
- <jack_port_t**> input_ports)
-(define jack (<Jack_Arg> #:num_inports 9))
-(begin jack)
-(-> jack num_inports)
-(-> jack num_inports 4)
-(<- jack num_inports)
-
-(-> jack get-size)
-(-> jack get-c-object)
-
-(-> jack input_ports)
-(define a (ec-make-array '(0 1 2 3 4 5) #:das-make-func ec-make-ints))
-(-> jack input_ports (list a a a a a))
-
-(-> jack ai)
-(-> jack ai '(0 1 2 3 4 5))
-
-->
-(eval-c-get-struct '<struct-Jack_Arg>)
-(eval-c-macro-result '(shared-struct-but-only-known-types <Jack_Arg>))
-(eval-c-add-struct '<struct-Jack_Arg>
- '((<int> num_inports)
- (<jack_port_t**> input_ports)))
-
-(primitive-eval
- '(eval-c ""
- (shared-struct-but-only-known-types <Jack_Arg>)
- (public
- (<struct-Jack_Arg-*> Jack_Arg_new (lambda (<void>)
- (calloc 1 (sizeof <struct-Jack_Arg>))))
- (<void> Jack_Arg_set_num_inports (lambda ((<struct-Jack_Arg> *arg)
- (<int> newval))
- (set! arg->num_inports newval)))
- (<int> Jack_Arg_get_num_inports (lambda ((<struct-Jack_Arg> *arg))
- (return arg->num_inports)))
- (<void> Jack_Arg_set_input_ports (lambda ((<struct-Jack_Arg> *arg)
- (<void-*> newval)
- (<int> autofree))
- (if autofree (free arg->input_ports newval))
- (set! arg->input_ports newval)))
- ...))
-
-
-(def-class (<Jack_Arg> #:key num_inports input_ports)
-
- (define c-object (Jack_Arg_new))
-
- (def-method (num_inports . rest)
- (if rest
- (Jack_Arg_set_num_inports c-object (car rest))
- (Jack_Arg_get_num_inports c-object)))
-
- (def-method (input_ports #:key das-make-func #:key (autofree #t) #:rest rest)
- (if (and rest
- (not (or (eq? #:das-make-func (car rest))
- (eq? #:autofree (car rest)))))
- (let ((newval (car rest)))
- (Jack_Arg_set_input_ports c-object (if (list? newval)
- (ec-make-array newval das-make-func (if autofree 1 0))
- newval)))
- (Jack_Arg_get_input_ports c-object)))
-
- (if num_inports
- (-> this num_inports num_inports))
- (if input_ports
- (-> this input_ports input_ports))
-
- )
-
-!#
-
-#!
-(eval-c-add-struct 'testing
- (map (lambda (a)
- (if (= 3 (length a))
- (list (caddr a) (car a) (cadr a))
- (list (cadr a) (car a))))
- (eval-c-listify-struct '(<jmp_buf> ai))))
-(shared-struct-but-only-known-types 'testing)
-(map (lambda (def)
- (if (= 3 (length def))
- (list '<void-*>
- (car def))
- (list (eval-c-get-known-type (cadr def))
- (car def))))
- (eval-c-get-struct 'testing))
-(eval-c-get-known-type '<jmp_buf>)
-
-; int a(void){
-; return 5;
-; }
-; int (*b)(int)=a;
-;
-; printf("b(): %d\n",b(3));
-
-(eval-c ""
-
- (run-now
- (<int> a (lambda ()
- (return 5)))
- ((<int> ()) b a)
-
- (printf (string "okey %d\\n") (b))))
-
-(eval-c ""
- (run-now
- (for-each 0 5
- (lambda (i)
- (printf (string "%d\\n") i)))))
-
-(eval-c ""
- "#include <lrdf.h>"
- (proto->public
- "int lrdf_export_by_source(const char *src, const char *file);"
- "lrdf_uris *lrdf_match_multi(lrdf_statement *patterns);"
- "lrdf_statement *lrdf_matches(lrdf_statement *pattern);"))
-
-
-(define-c <float> (c-scale ((<float> x)
- (<float> x1)
- (<float> x2)
- (<float> y1)
- (<float> y2))
- (return (+ y1
- (/ (* (- x x1)
- (- y2 y1))
- (- x2 x1))))))
-
-(define-c <int> (fib ((<int> n))
- (if (< n 2)
- (return n)
- (return (+ (fib (- n 1))
- (fib (- n 2)))))))
-
-
-(eval-c ""
- (public (<int> f-ib (lambda ((<int> n))
- (if (< n 2)
- (return n)
- (return (+ (f-ib (- n 1))
- (f-ib (- n 2)))))))))
-
-
-
-(eval-c-to-scm " static volatile int ")
-(eval-c ""
- (public
- (<int> jepp (lambda ((<int> a)(<int> b))
- (printf (string "jepp\\n"))
- (return (+ a b))))))
-
-(eval-c ""
- (public
- (<int> ratt 81)
- (<int> jepp5 (lambda ()
- (return ratt)))))
-
-(eval-c ""
- (run-now (printf (string "jepp1\\n"))
- (printf (string "jepp2\\n")))
-
- (run-now (printf (string "jepp3\\n"))
- (printf (string "jepp4\\n"))))
-
-
-(eval-c ""
- (run-now
- (printf (string "hello world!\\n"))))
-
-(eval-c ""
- (<int> jepp (lambda ()
- (printf (string "jepp\\n"))
- (return 0))))
-
-(begin "jepp\\n")
-
-(eval-c "-ljack"
-
- "#include <jack/jack.h>"
-
- (public
-
- (<int> a 5)
- (<int> b 6)
-
- (<void> parse_arguments
- (lambda ((<int> argc) (<char**> argv))
- (if (< argc 2)
- (begin
- (exit 9)))))
-
- (<jack_port_t*> input_port)
- (<jack_port_t*> output_port)
-
-
- (<int> process (lambda ((<jack_nframes_t> nframes)
- (<void*> arg))
- (let* ((out <jack_default_audio_sample_t*> (jack_port_get_buffer output_port nframes))
- (in <jack_default_audio_sample_t*> (jack_port_get_buffer input_port nframes)))
- (memcpy out in
- (* (sizeof <jack_default_audio_sample_t>) nframes)))
- (return 0)))
- )
- )
-
-
-!#
-
-
diff --git a/examp.fs b/examp.fs
index efdea8e..2e90f5e 100644
--- a/examp.fs
+++ b/examp.fs
@@ -3,7 +3,7 @@
\ Author: Michael Scholz <mi-scholz@users.sourceforge.net>
\ Created: Tue Jul 05 13:09:37 CEST 2005
-\ Changed: Thu Nov 26 18:25:33 CET 2009
+\ Changed: Thu Jan 07 00:33:30 CET 2010
\ Commentary:
\
@@ -108,7 +108,6 @@
\ open-next-file-in-directory ( -- f )
\ click-middle-button-to-open-next-file-in-directory ( -- )
\ chain-dsps ( start dur :optional dsps -- )
-\ if-cursor-follows-play-it-stays-where-play-stopped ( :optional enable -- )
\
\ smooth-channel-via-ptree ( :optional beg dur snd chn edpos -- val )
\ ring-modulate-channel ( freq :optional beg dur snd chn edpos -- val )
@@ -144,23 +143,20 @@
ary
;
-\ Also defined in clm.fs.
-[ifundef] close-sound-extend
- \ 5 == notebook widget
- : close-sound-extend <{ snd -- }>
- main-widgets 5 object-ref if
- sounds snd object-index 0 max { idx }
- snd close-sound drop
- sounds empty? unless
- sounds
- idx sounds length < if idx else -1 then
- object-ref set-selected-sound drop
- then
- else
- snd close-sound drop
+\ 5 == notebook widget
+: close-sound-extend <{ snd -- }>
+ main-widgets 5 object-ref if
+ sounds snd object-index 0 max { idx }
+ snd close-sound drop
+ sounds empty? unless
+ sounds
+ idx sounds length < if idx else -1 then
+ object-ref set-selected-sound drop
then
- ;
-[then]
+ else
+ snd close-sound drop
+ then
+;
: snd-snd <{ :optional snd #f -- snd }>
snd integer? if
@@ -241,7 +237,6 @@ previous
require clm
require env
require rgb
-require extensions
\ === from frame.scm
\
@@ -1474,29 +1469,31 @@ previous
\ 240.0 1.0 2048 pulse-voice
\ 1000.0 1.0 512 pulse-voice
-\ ;;; -------- convolution example
+'snd-nogui provided? [unless]
+ \ ;;; -------- convolution example
-hide
-: cnv-cb { sf -- prc; dir self -- val }
- 1 proc-create sf , ( prc )
- does> { dir self -- val }
- self @ ( sf ) next-sample
-;
-set-current
-: cnvtest ( snd0 snd1 amp -- mx )
- doc" Convolves SND0 and SND1, scaling by AMP, returns new max amp: 0 1 0.1 cnvtest"
- { snd0 snd1 amp }
- snd0 #f #f frames { flt-len }
- snd1 #f #f frames flt-len + { total-len }
- 0 snd1 0 1 #f make-sampler { sf }
- :input sf cnv-cb :filter 0 flt-len snd0 #f #f channel->vct make-convolve { cnv }
- total-len 0.0 make-vct map! cnv #f convolve end-map amp vct-scale! ( out-data )
- 0 total-len snd1 #f #f get-func-name vct->channel vct-peak { max-samp }
- sf free-sampler drop
- max-samp 1.0 f> if #( max-samp fnegate max-samp ) snd1 #f set-y-bounds drop then
- max-samp
-;
-previous
+ hide
+ : cnv-cb { sf -- prc; dir self -- val }
+ 1 proc-create sf , ( prc )
+ does> { dir self -- val }
+ self @ ( sf ) next-sample
+ ;
+ set-current
+ : cnvtest ( snd0 snd1 amp -- mx )
+ doc" Convolves SND0 and SND1, scaling by AMP, returns new max amp: 0 1 0.1 cnvtest"
+ { snd0 snd1 amp }
+ snd0 #f #f frames { flt-len }
+ snd1 #f #f frames flt-len + { total-len }
+ 0 snd1 0 1 #f make-sampler { sf }
+ :input sf cnv-cb :filter 0 flt-len snd0 #f #f channel->vct make-convolve { cnv }
+ total-len 0.0 make-vct map! cnv #f convolve end-map amp vct-scale! ( out-data )
+ 0 total-len snd1 #f #f get-func-name vct->channel vct-peak { max-samp }
+ sf free-sampler drop
+ max-samp 1.0 f> if #( max-samp fnegate max-samp ) snd1 #f set-y-bounds drop then
+ max-samp
+ ;
+ previous
+[then]
\ ;;; -------- swap selection chans
@@ -1769,6 +1766,7 @@ hide
#f
;
set-current
+
: switch-to-buffer <{ -- val }>
"" { default }
xb-last-buffer array? if
@@ -1780,8 +1778,6 @@ set-current
default #f undef report-in-minibuffer drop
msg <'> stb-cb #f #t prompt-in-minibuffer
;
-previous
-
: xb-close <{ snd -- val }>
xb-current-buffer array?
xb-current-buffer 0 array-ref snd = && if
@@ -1805,7 +1801,6 @@ previous
then
#f
;
-
: xb-open <{ snd -- val }>
close-all-buffers
xb-current-buffer to xb-last-buffer
@@ -1813,7 +1808,10 @@ previous
xb-last-width 0= if window-width else xb-last-width then
xb-last-height 0= if window-height 10 - else xb-last-height then open-current-buffer
;
-\ "b" 0 <'> switch-to-buffer #t "switch-to-buffer" "switch-to-buffer" bind-key
+previous
+
+\ C-x b
+\ "b" 0 <'> switch-to-buffer #t "Switch to buffer" "switch-to-buffer" bind-key drop
\ after-open-hook <'> xb-open add-hook!
\ close-hook <'> xb-close add-hook!
@@ -2199,48 +2197,6 @@ lambda: ( -- )
[then]
previous
-\ ;;; -------- cursor-follows-play and stays where it was when the play ended
-
-hide
-: current-cursor { snd chn -- cur } 'cursor snd chn channel-property ;
-: set-current-cursor { snd chn val -- } 'cursor val snd chn set-channel-property ;
-: original-cursor { snd chn -- cur } 'original-cursor snd chn channel-property ;
-: set-original-cursor { snd chn val -- } 'original-cursor val snd chn set-channel-property ;
-: local-dac-func <{ data -- val }>
- sounds each { snd }
- snd channels 0 ?do
- snd i #f cursor snd i original-cursor <> if
- snd i snd i #f cursor set-current-cursor
- then
- loop
- end-each
- #f
-;
-: local-start-playing-func <{ snd -- val }>
- snd channels 0 ?do
- snd i #f cursor { cur }
- snd i cur set-original-cursor
- snd i cur set-current-cursor
- loop
- #f
-;
-: local-stop-playing-func <{ snd -- val }>
- snd 0 current-cursor snd #t #f set-cursor
-;
-set-current
-: if-cursor-follows-play-it-stays-where-play-stopped <{ :optional enable #t -- }>
- enable if
- dac-hook <'> local-dac-func add-hook!
- start-playing-hook <'> local-start-playing-func add-hook!
- stop-playing-hook <'> local-stop-playing-func add-hook!
- else
- dac-hook <'> local-dac-func remove-hook! drop
- start-playing-hook <'> local-start-playing-func remove-hook! drop
- stop-playing-hook <'> local-stop-playing-func remove-hook! drop
- then
-;
-previous
-
\ ;;; -------- smooth-channel as virtual op
hide
diff --git a/examp.scm b/examp.scm
index b7c9016..3b0a48b 100644
--- a/examp.scm
+++ b/examp.scm
@@ -2195,7 +2195,6 @@ a sort of play list: (region-play-list (list (list reg0 0.0) (list reg1 0.5) (li
;;; -------- cursor-follows-play and stays where it was when the play ended
-(if (not (provided? 'snd-extensions.scm)) (load "extensions.scm"))
(if (not (provided? 'snd-hooks.scm)) (load "hooks.scm"))
(define* (if-cursor-follows-play-it-stays-where-play-stopped (enable #t))
diff --git a/extensions.fs b/extensions.fs
index dd23829..b370e2b 100644
--- a/extensions.fs
+++ b/extensions.fs
@@ -3,7 +3,7 @@
\ Translator/Author: Michael Scholz <mi-scholz@users.sourceforge.net>
\ Created: Sun Dec 18 19:21:00 CET 2005
-\ Changed: Sun Dec 20 00:51:04 CET 2009
+\ Changed: Sat Feb 06 14:06:16 CET 2010
\ Commentary:
\
@@ -23,6 +23,9 @@
\ backward-mark ( count snd chn -- mk )
\ mus-bank ( gens amps in1 in2 -- val )
\ oscil-bank ( amps gens in1 in2 -- val )
+\ after-save-as-hook-replace-sound ( snd fname from-dialog -- )
+\ emacs-style-save-as ( -- f )
+\ set-emacs-style-save-as ( f -- )
\
\ Snd-8 compatibility
\ samples->sound-data ( :optional beg len snd chn sd edpos sd-chan -- sd )
@@ -30,11 +33,9 @@
\ close-sound-file ( fd bytes -- n )
\ vct->sound-file ( fd v samps -- n )
\
-\ sound-property ( key snd -- value|#f )
-\ set-sound-property ( key val snd -- )
+\ remove-sound-property ( key :optional snd -- alist )
\ set-sound-property-save-state-ignore ( key snd -- alist )
-\ channel-property ( key snd chn -- value|#f )
-\ set-channel-property ( key val snd chn -- )
+\ remove-channel-property ( key :optional snd chn -- alist )
\ set-channel-property-save-state-ignore ( key snd chn -- alist )
\ channel-sync ( snd chn -- val )
\ set-channel-sync ( snd chn val -- )
@@ -88,6 +89,8 @@
\ with-buffers-menu ( -- )
\ set-global-sync ( choice -- )
\ show-selection ( -- )
+\
+\ if-cursor-follows-play-it-stays-where-play-stopped ( :optional enable -- )
require clm
require examp
@@ -252,6 +255,30 @@ previous
gens each ( gen ) in1 i object-ref in2 i object-ref oscil amps i vct-ref f* ( sum ) f+ end-each
;
+: after-save-as-hook-replace-sound ( snd fname from-dialog -- )
+ { snd fname from-dialog }
+ from-dialog if
+ snd revert-sound drop
+ snd close-sound drop
+ fname open-sound drop
+ then
+;
+: emacs-style-save-as ( -- f )
+ after-save-as-hook <'> after-save-as-hook-replace-sound hook-member?
+;
+: set-emacs-style-save-as ( f -- )
+ if
+ emacs-style-save-as unless
+ after-save-as-hook <'> after-save-as-hook-replace-sound add-hook!
+ then
+ else
+ after-save-as-hook <'> after-save-as-hook-replace-sound remove-hook! drop
+ then
+;
+\ #t set-emacs-style-save-as installs
+\ #f set-emacs-style-save-as deinstalls
+
+
\ === Snd-8 compatibility stuff (snd8.scm) ===
: samples->sound-data <{ :optional beg 0 len #f snd #f chn #f sd #f edpos #f sd-chan 0 -- sd }>
@@ -286,18 +313,6 @@ previous
\ === End of compatibility stuff ===
\ ;;; -------- sound-property
-
-: sound-property <{ key :optional snd #f -- val }>
- doc" Returns the value associated with KEY in the given sound's property list, or #f."
- snd sound-properties key array-assoc-ref
-;
-
-: set-sound-property <{ key val :optional snd #f -- alist }>
- doc" Sets key-value pair in the given sound's property list. \
-If KEY exists, VAL overwrites the old value."
- snd sound-properties key val array-assoc-set! snd set-sound-properties
-;
-
: remove-sound-property <{ key :optional snd #f -- alist }>
doc" Removes key-value pair in the given sound's property list. \
Returns altered list."
@@ -312,18 +327,6 @@ Returns altered list."
;
\ ;;; -------- channel-property
-
-: channel-property <{ key :optional snd #f chn #f -- val }>
- doc" Returns the value associated with KEY in the given channel's property list, or #f."
- snd chn channel-properties key array-assoc-ref
-;
-
-: set-channel-property <{ key val :optional snd #f chn #f -- alist }>
- doc" Sets key-value pair in the given channel's property list. \
-If KEY exists, VAL overwrites the old value."
- snd chn channel-properties key val array-assoc-set! snd chn set-channel-properties
-;
-
: remove-channel-property <{ key :optional snd #f chn #f -- alist }>
doc" Removes key-value pair in the given channel's property list. \
Returns altered list."
@@ -501,7 +504,7 @@ END defaults to end of channel, BEG defaults to 0, SND defaults to the currently
: eval-over-selection <{ func -- val }>
doc" Evaluates FUNC on each sample in the current selection."
- func proc?
+ func word?
undef selection? && if
#f #f selection-position { beg }
#f #f selection-frames { len }
@@ -603,13 +606,20 @@ previous
\ --- remember-sound-state ---
+\ for prefs
+\
+\ REMEMBERING-SOUND-STATE
+\ 0 - no remembering
+\ 1 - just within-run remembering
+\ 2 - write state to REMEMBER-SOUND-FILENAME
+0 value remembering-sound-state
".snd-remember-sound" value remember-sound-filename
#() value -saved-remember-sound-states-
hide
#( <'> sync <'> with-tracking-cursor <'> selected-channel <'> show-controls <'> read-only
<'> contrast-control? <'> expand-control? <'> reverb-control? <'> filter-control?
- <'> amp-control-bounds
+ <'> amp-control <'> amp-control-bounds
<'> contrast-control <'> contrast-control-amp <'> contrast-control-bounds
<'> expand-control <'> expand-control-bounds <'> expand-control-hop <'> expand-control-jitter
<'> expand-control-length <'> expand-control-ramp
@@ -620,7 +630,7 @@ hide
<'> reverb-control-scale-bounds
<'> speed-control <'> speed-control-bounds <'> speed-control-style
<'> speed-control-tones ) value sound-funcs
-#( <'> amp-control <'> time-graph? <'> transform-graph? <'> lisp-graph? <'> x-bounds <'> y-bounds
+#( <'> time-graph? <'> transform-graph? <'> lisp-graph? <'> x-bounds <'> y-bounds
<'> cursor <'> cursor-size
<'> cursor-style <'> show-marks <'> show-y-zero <'> show-grid <'> wavo-hop <'> wavo-trace
<'> max-transform-peaks
@@ -633,68 +643,55 @@ hide
<'> x-axis-style <'> show-axes <'> graphs-horizontal <'> lisp-graph-style
<'> transform-graph-style
<'> grid-density <'> tracking-cursor-style ) value channel-funcs
+\ REMEMBER-STATES
+\ #a( '( filename-symbol . values ) ... )
+\ VALUES
+\ #{ :time file-time
+\ :sound sound-value-array
+\ :channels channel-value-array }
#() value remember-states
-0 value remember-choice
-
-: saved-state ( snd -- ary|#f )
- { snd }
- snd file-name { fname }
- #f \ flag
- remember-states each { ary }
- ary 0 array-ref fname string= if drop ary leave then
- end-each
-;
-: set-saved-state ( snd new-state -- )
- { snd new-state }
- snd file-name { fname }
- #t \ flag
- remember-states each { ary }
- ary 0 array-ref fname string= if
- not \ toggle flag
- remember-states i new-state array-set!
- leave
- then
- end-each ( flag ) if
- remember-states new-state array-push drop
- then
+
+: saved-state ( snd -- ary|#f ) file-name remember-states swap array-assoc-ref ;
+: set-saved-state { snd new-state -- }
+ remember-states snd file-name new-state array-assoc-set! drop
;
: remember-sound-at-close <{ snd -- #f }>
- \ #( fname fwdate snd-fncs chn-fncs )
- #( snd file-name
- snd file-name file-write-date ) { new-state }
- sound-funcs map snd *key* execute end-map new-state swap array-push to new-state
+ #{ :time snd file-name file-write-date } { new-state }
+ sound-funcs map snd *key* execute end-map new-state :sound rot hash-set!
snd channels make-array map!
- nil { fnc }
- channel-funcs map *key* to fnc
- fnc xt->name "cursor" string= if
+ channel-funcs map
+ *key* xt->name "cursor" string= if
snd j ( chn ) undef ( edpos ) cursor \ three arguments!
else
- snd j ( chn ) fnc execute
+ snd j ( chn ) *key* execute
then
+ *key* xt->name "transform-type" string= if transform->integer then
end-map
- end-map new-state swap array-push to new-state
+ end-map new-state :channels rot hash-set!
snd new-state set-saved-state
#f
;
: remember-sound-at-open <{ snd -- }>
snd saved-state { state }
- remember-choice 2 <>
- state length && if
- snd file-name file-write-date state 1 array-ref equal?
- snd channels state 3 array-ref length = && if
+ state empty? not
+ remembering-sound-state 2 <> && if
+ snd file-name file-write-date state :time hash-ref d=
+ snd channels state :channels hash-ref length = && if
nil nil { val fnc }
- state 2 array-ref each to val
+ state :sound hash-ref each to val
sound-funcs i array-ref to fnc
fnc xt->name "selected-channel" string= if
- snd val set-selected-channel drop \ arguments swaped!
+ snd val set-selected-channel drop \ arguments swapped!
else
val snd fnc set-execute drop
then
end-each
+ state :channels hash-ref { chans-state }
snd channels 0 ?do
#t snd i ( chn ) set-squelch-update drop
- state 3 array-ref i ( chn) array-ref each to val \ channel-funcs values
+ chans-state i ( chn ) array-ref each to val \ channel-funcs values
channel-funcs i array-ref to fnc
+ fnc xt->name "transform-type" string= if val integer->transform to val then
fnc xt->name "cursor" string= if
val snd j ( chn ) undef ( edpos ) set-cursor drop \ four arguments!
else
@@ -716,35 +713,33 @@ hide
then
#f
;
+: remember-sound-write-cb <{ io -- }>
+ io $" \\ -*- snd-forth -*-\n" port-puts
+ io $" \\ from remember-sound-state in %s\n" '( *filename* ) port-puts-format
+ io $" \\ written: %s\n\n" '( date ) port-puts-format
+ io $" #a( " port-puts
+ remember-states each { en }
+ i 0> if io $" \n " port-puts then
+ io $" %S " '( en 0 array-ref ) port-puts-format
+ io $" %S " '( en 1 array-ref ) port-puts-format
+ end-each
+ io $" ) to -saved-remember-sound-states-\n\n" port-puts
+ io $" \\ %s ends here\n" '( remember-sound-filename #f file-basename ) port-puts-format
+;
: remember-sound-at-exit <{ -- #f }>
- \ The local variable IO must be defined here, not in the else
- \ branch. ficlVmExecuteXT()/ficlVmInnerLoop() try to kill a local
- \ stack but no local stack exists if remember-states is empty and IO
- \ is defined in the else branch. (I haven't seen this bug before.)
- nil { io }
remember-states empty? if
remember-sound-filename file-delete
else
- remember-sound-filename io-open-write to io
- io $" \\ -*- snd-forth -*-\n" io-write
- io $" \\ from remember-sound-state in %s\n" #( *filename* ) io-write-format
- io $" \\ written: %s\n\n" #( date ) io-write-format
- io $" %S to -saved-remember-sound-states-\n\n" #( remember-states ) io-write-format
- io $" \\ %s ends here\n" #( remember-sound-filename #f file-basename ) io-write-format
- io io-close
+ <'> remember-sound-write-cb :filename remember-sound-filename with-output-port
then
#f
;
set-current
-0 value remembering-sound-state
-
-: remember-sound-state ( choice -- )
+: remember-sound-state { choice -- }
doc" Remembers the state of a sound when it is closed, \
and if it is subsquently re-opened, restores that state."
- { choice }
- choice 0= \ no remembering
- choice 1 = || if \ just within-run remembering
+ choice 2 < if
choice 0= if
close-hook <'> remember-sound-at-close remove-hook! drop
after-open-hook <'> remember-sound-at-open remove-hook! drop
@@ -753,15 +748,14 @@ and if it is subsquently re-opened, restores that state."
before-exit-hook <'> remember-sound-at-exit remove-hook! drop
remember-sound-filename file-delete
then
- choice 0<> if
+ choice 0> if
close-hook <'> remember-sound-at-close add-hook!
after-open-hook <'> remember-sound-at-open add-hook!
- choice 1 <> if
+ choice 1 > if
open-hook <'> remember-sound-at-start add-hook!
before-exit-hook <'> remember-sound-at-exit add-hook!
then
then
- choice to remember-choice
choice to remembering-sound-state
;
previous
@@ -1467,4 +1461,47 @@ previous
then
;
+\ ;;; -------- cursor-follows-play and stays where it was when the play ended
+\ moved from examp.fs to extensions.fs [ms]
+
+hide
+: current-cursor { snd chn -- cur } 'cursor snd chn channel-property ;
+: set-current-cursor { snd chn val -- } 'cursor val snd chn set-channel-property ;
+: original-cursor { snd chn -- cur } 'original-cursor snd chn channel-property ;
+: set-original-cursor { snd chn val -- } 'original-cursor val snd chn set-channel-property ;
+: local-dac-func <{ data -- val }>
+ sounds each { snd }
+ snd channels 0 ?do
+ snd i #f cursor snd i original-cursor <> if
+ snd i snd i #f cursor set-current-cursor
+ then
+ loop
+ end-each
+ #f
+;
+: local-start-playing-func <{ snd -- val }>
+ snd channels 0 ?do
+ snd i #f cursor { cur }
+ snd i cur set-original-cursor
+ snd i cur set-current-cursor
+ loop
+ #f
+;
+: local-stop-playing-func <{ snd -- val }>
+ snd 0 current-cursor snd #t #f set-cursor
+;
+set-current
+: if-cursor-follows-play-it-stays-where-play-stopped <{ :optional enable #t -- }>
+ enable if
+ dac-hook <'> local-dac-func add-hook!
+ start-playing-hook <'> local-start-playing-func add-hook!
+ stop-playing-hook <'> local-stop-playing-func add-hook!
+ else
+ dac-hook <'> local-dac-func remove-hook! drop
+ start-playing-hook <'> local-start-playing-func remove-hook! drop
+ stop-playing-hook <'> local-stop-playing-func remove-hook! drop
+ then
+;
+previous
+
\ extensions.fs ends here
diff --git a/extensions.rb b/extensions.rb
index d9ff600..7d41597 100644
--- a/extensions.rb
+++ b/extensions.rb
@@ -2,7 +2,7 @@
# Translator/Author: Michael Scholz <mi-scholz@users.sourceforge.net>
# Created: Sat Jan 03 17:30:23 CET 2004
-# Changed: Sun Dec 20 01:36:53 CET 2009
+# Changed: Sat Feb 06 14:34:38 CET 2010
# Commentary:
#
@@ -50,18 +50,15 @@
# samples2vct(samp, samps, snd, chn, nv, epos)
# scale_sound_by(scl, beg, dur, snd, chn, edpos)
# scale_sound_to(norm, beg, dur, snd, chn)
+# emacs_style_save_as
+# set_emacs_style_save_as(val)
# mixer_scale(mx, scl, nmx)
# make_iir_low_pass_1(fc)
# make_iir_high_pass_1(fc)
# sine_bank(amps, phases, size)
#
# module Extensions
-# channel_property(key, snd, chn)
-# set_channel_property(key, val, snd, chn)
# remove_channel_property(key, snd, chn)
-#
-# sound_property(key, snd)
-# set_sound_property(key, val, snd)
# remove_sound_property(key, snd)
#
# channel_sync(snd, chn)
@@ -110,7 +107,7 @@
#
# yes_or_no?(question, action_if_yes, action_if_no, snd)
# check_for_unsaved_edits(check)
-# remember_sound_state
+# remember_sound_state(choice)
#
# mix_channel(fdata, beg, dur, snd, chn, edpos)
# insert_channel(fdata, beg, dur, snd, chn, edpos)
@@ -732,6 +729,24 @@ turns a sound-data object's data into a list of lists (one for each channel)")
end
end
+ def emacs_style_save_as
+ $after_save_as_hook.member?("after-save-as-hook-replace-sound")
+ end
+
+ def set_emacs_style_save_as(val = true)
+ if val and (not emacs_style_save_as())
+ $after_save_as_hook.add_hook!("after-save-as-hook-replace-sound") do |snd, fname, from_dialog|
+ if from_dialog
+ revert_sound(snd)
+ close_sound(snd)
+ open_sound(fname)
+ end
+ end
+ else
+ $after_save_as_hook.remove_hook!("after-save-as-hook-replace-sound")
+ end
+ end
+
alias mixer_scale mixer_multiply
alias mus_error_to_string mus_error_type2string
@@ -765,33 +780,6 @@ end
include Compatibility
module Extensions
- add_help(:channel_property,
- "channel_property(key, snd, chn) \
-returns the value associated with 'key' in the given channel's property list, or nil")
- def channel_property(key, snd = false, chn = false)
- if array?(props = channel_properties(snd, chn))
- array?(item = props.assoc(key)) and item[1]
- else
- nil
- end
- end
-
- add_help(:set_channel_property,
- "set_channel_property(key, val, snd, chn) \
-sets 'key-val' in the given channel's property list and returns 'val'")
- def set_channel_property(key, val, snd = false, chn = false)
- if array?(props = channel_properties(snd, chn))
- if array?(item = props.assoc(key))
- item[1] = val
- else
- props.push([key, val])
- end
- else
- set_channel_properties([[key, val]], snd, chn)
- end
- val
- end
-
add_help(:remove_channel_property, "remove_channel_property(key, snd) deletes key-value pair")
def remove_channel_property(key, snd = false, chn = false)
array?(props = channel_properties(snd, chn)) and
@@ -799,33 +787,6 @@ sets 'key-val' in the given channel's property list and returns 'val'")
props.delete(item)
end
- add_help(:sound_property,
- "sound_property(key, snd) \
-returns the value associated with 'key' in the given sound's property list, or nil")
- def sound_property(key, snd = false)
- if array?(props = sound_properties(snd))
- array?(item = props.assoc(key)) and item[1]
- else
- nil
- end
- end
-
- add_help(:set_sound_property,
- "set_sound_property(key, val, snd) \
-sets 'key-val' pair in the given sound's property list and returns 'val'.")
- def set_sound_property(key, val, snd = false)
- if array?(props = sound_properties(snd))
- if array?(item = props.assoc(key))
- item[1] = val
- else
- props.push([key, val])
- end
- else
- set_sound_properties([[key, val]], snd)
- end
- val
- end
-
add_help(:remove_sound_property, "remove_sound_property(key, snd) deletes key-value pair")
def remove_sound_property(key, snd = false)
array?(props = sound_properties(snd)) and
@@ -892,18 +853,39 @@ sets 'key-val' pair in the given sound's property list and returns 'val'.")
end
nil
end
+
+ # Used in remember_all_sound_properties and remember_sound_state
+ $sound_funcs = [:sync, :with_tracking_cursor, :selected_channel, :show_controls, :read_only,
+ :contrast_control?, :expand_control?, :reverb_control?, :filter_control?,
+ :amp_control, :amp_control_bounds,
+ :contrast_control, :contrast_control_amp, :contrast_control_bounds,
+ :expand_control, :expand_control_bounds, :expand_control_hop,
+ :expand_control_jitter, :expand_control_length, :expand_control_ramp,
+ :filter_control_envelope, :filter_control_in_dB, :filter_control_in_hz,
+ :filter_control_order,
+ :reverb_control_decay, :reverb_control_feedback, :reverb_control_length,
+ :reverb_control_length_bounds, :reverb_control_lowpass, :reverb_control_scale,
+ :reverb_control_scale_bounds,
+ :speed_control, :speed_control_bounds, :speed_control_style, :speed_control_tones]
+ # transform_type: #<transform Xxx> transform2integer --> save/load --> integer2transform
+ $channel_funcs = [:time_graph?, :transform_graph?, :lisp_graph?, :x_bounds, :y_bounds,
+ :cursor, :cursor_size, :cursor_style, :show_marks, :show_y_zero, :show_grid,
+ :wavo_hop, :wavo_trace, :max_transform_peaks, :show_transform_peaks,
+ :fft_log_frequency, :fft_log_magnitude, :with_verbose_cursor, :zero_pad,
+ :wavelet_type, :min_dB, :transform_size, :transform_graph_type,
+ :time_graph_type, :fft_window, :transform_type, :transform_normalization,
+ :time_graph_style, :show_mix_waveforms, :dot_size,
+ :x_axis_style, :show_axes, :graphs_horizontal, :lisp_graph_style,
+ :transform_graph_style, :grid_density, :tracking_cursor_style]
- # [MS] Based on the idea of remember_sound_state() below, here is
+ # [ms] Based on the idea of remember_sound_state() below, here is
# another approach, using a database file.
#
# remember_all_sound_properties() in ~/.snd-ruby.rb installs the hooks
# default database is ~/.snd-properties.db
# default tmp_snd_p is false (discarding `.*0000_00.snd' and `.*.rev.*' filenames)
- $remembering_sound_state = 0 # for prefs
-
def remember_all_sound_properties(database = ENV['HOME'] + "/.snd-properties", tmp_snd_p = false)
- $remembering_sound_state = 3
rsp = Remember_sound_properties.new(database)
unless $after_open_hook.member?("save-property-hook")
$after_open_hook.add_hook!("save-property-hook") do |snd|
@@ -976,17 +958,9 @@ sets 'key-val' pair in the given sound's property list and returns 'val'.")
end
def initialize(database)
- @database = database
- @sound_funcs = [:sync, :with_tracking_cursor]
- @channel_funcs = [:time_graph?, :transform_graph?, :lisp_graph?, :x_bounds, :y_bounds,
- :cursor, :cursor_size, :cursor_style, :show_marks, :show_y_zero,
- :wavo_hop, :wavo_trace, :max_transform_peaks, :show_transform_peaks,
- :fft_log_frequency, :fft_log_magnitude, :with_verbose_cursor, :zero_pad,
- :wavelet_type, :min_dB, :transform_size, :transform_graph_type,
- :time_graph_type, :fft_window, :transform_type, :transform_normalization,
- :time_graph_style, :show_mix_waveforms,
- :dot_size, :x_axis_style, :show_axes, :graphs_horizontal,
- :lisp_graph_style, :transform_graph_style]
+ @database = database
+ @sound_funcs = $sound_funcs
+ @channel_funcs = $channel_funcs
set_help
end
attr_reader :database
@@ -1011,14 +985,22 @@ sets 'key-val' pair in the given sound's property list and returns 'val'.")
if file_write_date(snd_name) == sound_property(:current_file_time, snd)
@sound_funcs.each do |prop|
if (val = sound_property(prop, snd))
- Kernel.set_snd_func(prop, val, snd)
+ if prop == :selected_channel # arguments swapped!
+ Kernel.set_snd_func(prop, snd, val)
+ else
+ Kernel.set_snd_func(prop, val, snd)
+ end
end
end
channels(snd).times do |chn|
set_squelch_update(true, snd, chn)
@channel_funcs.each do |prop|
if (val = channel_property(prop, snd, chn))
- Kernel.set_snd_func(prop, val, snd, chn)
+ if prop == :transform_type
+ Kernel.set_snd_func(prop, integer2transform(val), snd, chn)
+ else
+ Kernel.set_snd_func(prop, val, snd, chn)
+ end
end
end
set_squelch_update(false, snd, chn)
@@ -1052,7 +1034,11 @@ sets 'key-val' pair in the given sound's property list and returns 'val'.")
res += format(" set_sound_properties(%s, snd_s)\n", props.inspect)
channels(snd).times do |chn|
@channel_funcs.each do |prop|
- set_channel_property(prop, snd_func(prop, snd, chn), snd, chn)
+ if prop == :transform_type
+ set_channel_property(prop, transform2integer(snd_func(prop, snd, chn)), snd, chn)
+ else
+ set_channel_property(prop, snd_func(prop, snd, chn), snd, chn)
+ end
end
props = (channel_properties(snd, chn) or [])
if reject = channel_property(:save_state_ignore, snd, chn)
@@ -1227,7 +1213,7 @@ applies body to each sound file in dir")
end
alias for_each_sound_file each_sound_file
alias map_sound_files each_sound_file
- # each_sound_file(".", "/usr/gnu/sound/SFiles") do |f| play(f, :wait, true) end
+ # each_sound_file(".", "/usr/opt/sound/SFiles") do |f| play(f, :wait, true) end
add_help(:match_sound_files,
"match_sound_files(*dir_args) do |file| ... end \
@@ -1412,59 +1398,99 @@ If CHECK is false, the hooks are removed.")
$before_exit_hook.remove_hook!(unsaved_edits_at_exit_name)
end
end
-
+
+ # ;;; -------- remember-sound-state
+ $remembering_sound_state = 0 # for prefs
+ $remember_sound_filename = ".snd-remember-sound"
+
add_help(:remember_sound_state,
- "remember_sound_state() \
+ "remember_sound_state(choice=3) \
remembers the state of a sound when it is closed, \
-and if it is subsquently re-opened, restores that state")
- def remember_sound_state
- # states = {file_name => [date, sound_funcs, channel_funcs], ...}
- $remembering_sound_state = 1
- states = {}
- sound_funcs = [:sync, :with_tracking_cursor]
- channel_funcs = [:time_graph?, :transform_graph?, :lisp_graph?, :x_bounds, :y_bounds,
- :cursor, :cursor_size, :cursor_style, :show_marks, :show_y_zero,
- :wavo_hop, :wavo_trace, :max_transform_peaks, :show_transform_peaks,
- :fft_log_frequency, :fft_log_magnitude, :with_verbose_cursor, :zero_pad,
- :wavelet_type, :min_dB, :transform_size, :transform_graph_type,
- :time_graph_type, :fft_window, :transform_type, :transform_normalization,
- :time_graph_style, :show_mix_waveforms, :dot_size, :x_axis_style,
- :show_axes, :graphs_horizontal, :lisp_graph_style, :transform_graph_style,
- :grid_density, :tracking_cursor_style]
- $close_hook.add_hook!(get_func_name) do |snd|
- states[file_name(snd)] = [file_write_date(file_name(snd)),
- sound_funcs.map { |f| snd_func(f, snd) },
- (0...channels(snd)).map { |chn|
- channel_funcs.map { |f| snd_func(f, snd, chn) }
- }]
- false
- end
- $after_open_hook.add_hook!(get_func_name) do |snd|
- if array?(state = states[file_name(snd)]) and (not state.empty?)
- if file_write_date(file_name(snd)) == state[0]
- sound_funcs.zip(state[1]) do |f, val|
- Kernel.set_snd_func(f, val, snd)
- end
- channels(snd).times do |chn|
- set_squelch_update(true, snd, chn)
- channel_funcs.zip(state[2][chn]) do |f, val|
- Kernel.set_snd_func(f, val, snd, chn)
+and if it is subsequently re-opened, restores that state.\n\
+choice == 0: no remembering\n\
+choice == 1: just within-run remembering\n\
+choice == 2: don't read saved values\n\
+choice == 3: across runs remembering")
+ def remember_sound_state(choice = 3)
+ # states = {file_name => {:time => number, :sound => [], channels => []}, ...}
+ $remembering_sound_state = choice
+ states = {}
+ sound_funcs = $sound_funcs
+ channel_funcs = $channel_funcs
+ hook_name = get_func_name
+ if choice == 0 or choice == 1
+ if choice == 0
+ $close_hook.remove_hook!(hook_name)
+ if choice != 2
+ $after_open_hook.remove_hook!(hook_name)
+ end
+ end
+ $open_hook.remove_hook!(hook_name)
+ $before_exit_hook.remove_hook!(hook_name)
+ if File.exist?($remember_sound_filename)
+ File.unlink($remember_sound_filename)
+ end
+ end
+ if choice != 0
+ $close_hook.add_hook!(hook_name) do |snd|
+ states[file_name(snd)] = {
+ :time => file_write_date(file_name(snd)),
+ :sound => sound_funcs.map do |f| snd_func(f, snd) end,
+ :channels => (0...channels(snd)).map do |chn|
+ channel_funcs.map do |f|
+ if f == :transform_type
+ transform2integer(snd_func(f, snd, chn))
+ else
+ snd_func(f, snd, chn)
+ end
+ end
+ end}
+ false
+ end
+ if choice != 2
+ $after_open_hook.add_hook!(hook_name) do |snd|
+ if hash?(state = states[file_name(snd)]) and (not state.empty?)
+ if file_write_date(file_name(snd)) == state[:time] and
+ channels(snd) == state[:channels].length
+ sound_funcs.zip(state[:sound]) do |f, val|
+ if f == :selected_channel # arguments swapped!
+ Kernel.set_snd_func(f, snd, val)
+ else
+ Kernel.set_snd_func(f, val, snd)
+ end
+ end
+ channels(snd).times do |chn|
+ set_squelch_update(true, snd, chn)
+ channel_funcs.zip(state[:channels][chn]) do |f, val|
+ if f == :transform_type
+ Kernel.set_snd_func(f, integer2transform(val), snd, chn)
+ else
+ Kernel.set_snd_func(f, val, snd, chn)
+ end
+ end
+ set_squelch_update(false, snd, chn)
+ end
end
- set_squelch_update(false, snd, chn)
end
end
end
- end
- $open_hook.add_hook!(get_func_name) do |fname|
- if states.empty? and defined? $_saved_remember_sound_states_states_
- states = $_saved_remember_sound_states_states_
- end
- false
- end
- $after_save_state_hook.add_hook!(get_func_name) do |fname|
- File.open(File.expand_path(fname), "a+") do |f|
- f.printf("\n# from %s in %s\n", get_func_name, __FILE__)
- f.printf("$_saved_remember_sound_states_states_ = %s\n", states.inspect)
+ if choice != 1
+ $open_hook.add_hook!(hook_name) do |fname|
+ if states.empty? and File.exist?($remember_sound_filename)
+ load($remember_sound_filename)
+ states = $_saved_remember_sound_states_states_
+ end
+ false
+ end
+ $after_save_state_hook.add_hook!(hook_name) do |fname|
+ File.open($remember_sound_filename, "w") do |f|
+ f.printf("# -*- snd-ruby -*-\n")
+ f.printf("# from remember-sound-state in %s\n", __FILE__)
+ f.printf("# written: %s\n\n", Time.new.strftime("%a %b %d %H:%M:%S %Z %Y"))
+ f.printf("$_saved_remember_sound_states_states_ = %s\n\n", states.inspect)
+ f.printf("# %s ends here\n", File.basename($remember_sound_filename))
+ end
+ end
end
end
end
diff --git a/extensions.scm b/extensions.scm
index a4f58be..e8044d3 100644
--- a/extensions.scm
+++ b/extensions.scm
@@ -1,6 +1,5 @@
;;; various generally useful Snd extensions
-;;; channel-property, sound-property, edit-property
;;; delete selected portion and smooth the splice
;;; mix then scale result to original peak amp
;;; mix with envelope
@@ -27,76 +26,6 @@
(else (loop (cdr l) (cons (car l) result))))))
-;;; -------- channel-property
-
-(define channel-property
- (make-procedure-with-setter
-
- (lambda (key snd chn)
- "(channel-property key snd chn) returns the value associated with 'key' in the given channel's property list, or #f"
-
- (let ((data (assoc key (channel-properties snd chn))))
- (if data
- (cdr data)
- #f)))
-
- (lambda (key snd chn new-val)
- (let ((old-val (assoc key (channel-properties snd chn))))
- (if old-val
- (set-cdr! old-val new-val)
- (set! (channel-properties snd chn) (cons (cons key new-val) (channel-properties snd chn))))
- new-val))))
-
-
-(define channel-sync
- (make-procedure-with-setter
- (lambda (snd chn) (channel-property 'sync snd chn))
- (lambda (snd chn val) (set! (channel-property 'sync snd chn) val))))
-
-
-
-;;; -------- sound-property
-
-(define sound-property
- (make-procedure-with-setter
-
- (lambda (key snd)
- "(sound-property key snd) returns the value associated with 'key' in the given sound's property list, or #f"
- (let ((data (assoc key (sound-properties snd))))
- (if data
- (cdr data)
- #f)))
-
- (lambda (key snd new-val)
- (let ((old-val (assoc key (sound-properties snd))))
- (if old-val
- (set-cdr! old-val new-val)
- (set! (sound-properties snd) (cons (cons key new-val) (sound-properties snd))))
- new-val))))
-
-
-;;; -------- edit-property
-
-(define edit-property
- (make-procedure-with-setter
-
- (lambda (key snd chn edpos)
- "(edit-property key snd chn edpos) returns the value associated with 'key' in the given channel's edit history property list at edit location edpos"
- (let ((data (assoc key (edit-properties snd chn edpos))))
- (if data
- (cdr data)
- #f)))
-
- (lambda (key snd chn edpos new-val)
- (let ((old-val (assoc key (edit-properties snd chn edpos))))
- (if old-val
- (set-cdr! old-val new-val)
- (set! (edit-properties snd chn edpos) (cons (cons key new-val) (edit-properties snd chn edpos))))
- new-val))))
-
-
-
-
(define (all-chans)
"(all-chans) -> two parallel lists, the first sound objects, the second channel numbers. If we have
two sounds open (indices 0 and 1 for example), and the second has two channels, (all-chans) returns '((#<sound 0> #<sound 1> #<sound 1>) (0 0 1))"
@@ -111,6 +40,12 @@ two sounds open (indices 0 and 1 for example), and the second has two channels,
(list sndlist chnlist)))
+(define channel-sync
+ (make-procedure-with-setter
+ (lambda (snd chn) (channel-property 'sync snd chn))
+ (lambda (snd chn val) (set! (channel-property 'sync snd chn) val))))
+
+
;;; -------- mix with result at original peak amp
@@ -353,7 +288,9 @@ If 'check' is #f, the hooks are removed."
sound-funcs)
(map (lambda (sc)
(map (lambda (f)
- (f (car sc) (cadr sc)))
+ (if (equal? f transform-type)
+ (transform->integer (f (car sc) (cadr sc)))
+ (f (car sc) (cadr sc))))
channel-funcs))
(let ((scs '()))
(do ((i 0 (+ 1 i)))
@@ -385,7 +322,9 @@ If 'check' is #f, the hooks are removed."
(not (null? val))
(eq? (car val) 'lambda))
(set! (f snd chn) (eval val (current-environment)))
- (set! (f snd chn) val)))
+ (if (equal? f transform-type)
+ (set! (f snd chn) (integer->transform val))
+ (set! (f snd chn) val))))
channel-funcs
(list-ref (cadddr state) chn)))
(lambda () (set! (squelch-update snd chn) #f)))
@@ -1048,7 +987,6 @@ connects them with 'func', and applies the result as an amplitude envelope to th
(define (with-threaded-channels func)
(let ((chns (chans)))
(if (and (provided? 'snd-threads)
- (provided? 's7)
(not (provided? 'gmp))
(provided? 'snd-nogui))
@@ -1077,33 +1015,34 @@ connects them with 'func', and applies the result as an amplitude envelope to th
(define* (profile (file "sort.data"))
;; find all functions, write out each one's number of calls, sorted first by calls, then alphabetically
- (let ((st (symbol-table))
- (calls (make-vector 50000 #f))
- (call 0))
- (do ((i 0 (+ i 1)))
- ((= i (length st)))
- (let ((lst (vector-ref st i)))
- (for-each
- (lambda (sym)
- (if (and (defined? sym)
- (procedure? (symbol->value sym)))
- (begin
- (vector-set! calls call (list sym (symbol-calls sym)))
- (set! call (+ call 1)))))
- lst)))
- (let ((new-calls (make-vector call)))
- (do ((i 0 (+ i 1)))
- ((= i call))
- (vector-set! new-calls i (vector-ref calls i)))
- (let ((sorted-calls (sort! new-calls
- (lambda (a b)
- (or (> (cadr a) (cadr b))
- (and (= (cadr a) (cadr b))
- (string<? (symbol->string (car a))
- (symbol->string (car b)))))))))
- (with-output-to-file file
- (lambda ()
- (do ((i 0 (+ i 1)))
- ((= i call))
- (let ((c (vector-ref sorted-calls i)))
- (format #t "~A:~40T~A~%" (car c) (cadr c))))))))))
+ (if (provided? 'profiling)
+ (let ((st (symbol-table))
+ (calls (make-vector 50000 #f))
+ (call 0))
+ (do ((i 0 (+ i 1)))
+ ((= i (length st)))
+ (let ((lst (vector-ref st i)))
+ (for-each
+ (lambda (sym)
+ (if (and (defined? sym)
+ (procedure? (symbol->value sym)))
+ (begin
+ (vector-set! calls call (list sym (symbol-calls sym)))
+ (set! call (+ call 1)))))
+ lst)))
+ (let ((new-calls (make-vector call)))
+ (do ((i 0 (+ i 1)))
+ ((= i call))
+ (vector-set! new-calls i (vector-ref calls i)))
+ (let ((sorted-calls (sort! new-calls
+ (lambda (a b)
+ (or (> (cadr a) (cadr b))
+ (and (= (cadr a) (cadr b))
+ (string<? (symbol->string (car a))
+ (symbol->string (car b)))))))))
+ (with-output-to-file file
+ (lambda ()
+ (do ((i 0 (+ i 1)))
+ ((= i call))
+ (let ((c (vector-ref sorted-calls i)))
+ (format #t "~A:~40T~A~%" (car c) (cadr c)))))))))))
diff --git a/extsnd.html b/extsnd.html
index 8d8ae43..87b585d 100644
--- a/extsnd.html
+++ b/extsnd.html
@@ -418,53 +418,47 @@ Extensions to Snd can be found in:
<tr><td><a href="sndscm.html#dspdoc">dsp</a></td>
<td onmouseout="UnTip()" onmouseover="Tip(dsp_doc_tip)">various DSP-related procedures</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#dotsnd">edit123.scm, snd_conffile.scm, snd_frg.scm</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(dot_snd_doc_tip)">.snd examples (Tom Roth, Kjetil S. Matheussen, Olivier Doare)</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#envdoc">env</a></td>
+ <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(env_doc_tip)">envelope functions</td></tr>
-<tr><td><a href="sndscm.html#envdoc">env</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(env_doc_tip)">envelope functions</td></tr>
+<tr><td><a href="sndscm.html#enveddoc">enved</a></td>
+ <td onmouseout="UnTip()" onmouseover="Tip(enved_doc_tip)">envelope editor</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#enveddoc">enved</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(enved_doc_tip)">envelope editor</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#exampdoc">examp</a></td>
+ <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(examp_doc_tip)">many examples</td></tr>
-<tr><td><a href="sndscm.html#exampdoc">examp</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(examp_doc_tip)">many examples</td></tr>
+<tr><td><a href="sndscm.html#extensionsdoc">extensions</a></td>
+ <td onmouseout="UnTip()" onmouseover="Tip(extensions_doc_tip)">various generally useful Snd extensions</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#extensionsdoc">extensions</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(extensions_doc_tip)">various generally useful Snd extensions</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#fadedoc">fade</a></td>
+ <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(fade_doc_tip)">frequency-domain cross-fades</td></tr>
-<tr><td><a href="sndscm.html#fadedoc">fade</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(fade_doc_tip)">frequency-domain cross-fades</td></tr>
+<tr><td><a href="sndscm.html#framedoc">frame</a></td>
+ <td onmouseout="UnTip()" onmouseover="Tip(frame_doc_tip)">frames, vcts, sound-data objects</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#framedoc">frame</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(frame_doc_tip)">frames, vcts, sound-data objects</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#freeverbdoc">freeverb</a></td>
+ <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(freeverb_doc_tip)">a reverb</td></tr>
-<tr><td><a href="sndscm.html#freeverbdoc">freeverb</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(freeverb_doc_tip)">a reverb</td></tr>
+<tr><td><a href="sndclm.html#othergenerators">generators</a></td>
+ <td onmouseout="UnTip()" onmouseover="Tip(generators_doc_tip)">a bunch of generators</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="sndclm.html#othergenerators">generators</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(generators_doc_tip)">a bunch of generators</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#granidoc">grani</a></td>
+ <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(grani_doc_tip)">CLM's grani (Fernando Lopez-Lezcano and Mike Scholz)</td></tr>
-<tr><td><a href="sndscm.html#granidoc">grani</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(grani_doc_tip)">CLM's grani (Fernando Lopez-Lezcano and Mike Scholz)</td></tr>
+<tr><td><a href="sndscm.html#heartdoc">heart</a></td>
+ <td onmouseout="UnTip()" onmouseover="Tip(heart_doc_tip)">use Snd with non-sound (arbitrary range) data</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#heartdoc">heart</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(heart_doc_tip)">use Snd with non-sound (arbitrary range) data</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#hooksdoc">hooks</a></td>
+ <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(hooks_doc_tip)">functions related to hooks</td></tr>
-<tr><td><a href="sndscm.html#hooksdoc">hooks</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(hooks_doc_tip)">functions related to hooks</td></tr>
+<tr><td><a href="sndscm.html#indexdoc">index</a></td>
+ <td onmouseout="UnTip()" onmouseover="Tip(index_doc_tip)">snd-help extension</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#indexdoc">index</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(index_doc_tip)">snd-help extension</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#dotemacs">inf-snd.el, DotEmacs</a></td>
+ <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(inf_snd_doc_tip)">Emacs subjob support (Michael Scholz, Fernando Lopez-Lezcano)</td></tr>
-<tr><td><a href="sndscm.html#dotemacs">inf-snd.el, DotEmacs</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(inf_snd_doc_tip)">Emacs subjob support (Michael Scholz, Fernando Lopez-Lezcano)</td></tr>
-
-<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#jcrevdoc">jcrev</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(jcrev_doc_tip)">John Chowning's ancient reverb</td></tr>
-
-<tr><td><a href="sndscm.html#ladspadoc">ladspa.scm, ladspa-help.scm, gui.scm</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(ladspa_doc_tip)">Kjetil S. Matheussen's LADSPA GUI-builder and previewer.</td></tr>
+<tr><td><a href="sndscm.html#jcrevdoc">jcrev</a></td>
+ <td onmouseout="UnTip()" onmouseover="Tip(jcrev_doc_tip)">John Chowning's ancient reverb</td></tr>
<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#maracadoc">maraca</a></td>
<td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(maraca_doc_tip)">Perry Cook's maraca physical model</td></tr>
@@ -526,56 +520,53 @@ Extensions to Snd can be found in:
<tr><td><a href="sndscm.html#rgbdoc">rgb</a></td>
<td onmouseout="UnTip()" onmouseover="Tip(rgb_doc_tip)">color names</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#rtexdoc">rt-examples and friends</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(rtex_doc_tip)">hard real-time support</td></tr>
-
-<tr><td><a href="sndscm.html#rtiodoc">rtio</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(rtio_doc_tip)">real-time stuff</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#rtiodoc">rtio</a></td>
+ <td bgcolor="#f2f4ff"onmouseout="UnTip()" onmouseover="Tip(rtio_doc_tip)">real-time stuff</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#rubberdoc">rubber</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(rubber_doc_tip)">rubber-sound</td></tr>
+<tr><td><a href="sndscm.html#rubberdoc">rubber</a></td>
+ <td onmouseout="UnTip()" onmouseover="Tip(rubber_doc_tip)">rubber-sound</td></tr>
-<tr><td><a href="sndscm.html#selectiondoc">selection</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(selection_doc_tip)">functions acting on the current selection</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#selectiondoc">selection</a></td>
+ <td bgcolor="#f2f4ff"onmouseout="UnTip()" onmouseover="Tip(selection_doc_tip)">functions acting on the current selection</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#singerdoc">singer</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(singer_doc_tip)">Perry Cook's vocal-tract physical model</td></tr>
+<tr><td><a href="sndscm.html#singerdoc">singer</a></td>
+ <td onmouseout="UnTip()" onmouseover="Tip(singer_doc_tip)">Perry Cook's vocal-tract physical model</td></tr>
-<tr><td><a href="sndscm.html#sndolddoc">snd6|7|8|9|10.scm</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(sndold_doc_tip)">Backwards compatibility</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#sndolddoc">snd6|7|8|9|10.scm</a></td>
+ <td bgcolor="#f2f4ff"onmouseout="UnTip()" onmouseover="Tip(sndold_doc_tip)">Backwards compatibility</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#snddiffdoc">snddiff</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(snddiff_doc_tip)">sound difference detection</td></tr>
+<tr><td><a href="sndscm.html#snddiffdoc">snddiff</a></td>
+ <td onmouseout="UnTip()" onmouseover="Tip(snddiff_doc_tip)">sound difference detection</td></tr>
-<tr><td><a href="sndscm.html#sndgldoc">snd-gl</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(snd_gl_doc_tip)">OpenGL examples (gl.c)</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#sndgldoc">snd-gl</a></td>
+ <td bgcolor="#f2f4ff"onmouseout="UnTip()" onmouseover="Tip(snd_gl_doc_tip)">OpenGL examples (gl.c)</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#sndmotifdoc">snd-motif, snd-gtk, snd-xm</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(snd_motif_doc_tip)">Motif/Gtk module (xm.c, xg.c)</td></tr>
+<tr><td><a href="sndscm.html#sndmotifdoc">snd-motif, snd-gtk, snd-xm</a></td>
+ <td onmouseout="UnTip()" onmouseover="Tip(snd_motif_doc_tip)">Motif/Gtk module (xm.c, xg.c)</td></tr>
-<tr><td><a href="sndscm.html#sndtestdoc">snd-test</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(snd_test_doc_tip)">Snd regression tests</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#sndtestdoc">snd-test</a></td>
+ <td bgcolor="#f2f4ff"onmouseout="UnTip()" onmouseover="Tip(snd_test_doc_tip)">Snd regression tests</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#sndwarpdoc">sndwarp</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(sndwarp_doc_tip)">Bret Battey's sndwarp instrument</td></tr>
+<tr><td><a href="sndscm.html#sndwarpdoc">sndwarp</a></td>
+ <td onmouseout="UnTip()" onmouseover="Tip(sndwarp_doc_tip)">Bret Battey's sndwarp instrument</td></tr>
-<tr><td><a href="sndscm.html#spectrdoc">spectr</a></td>
- <td>instrument steady state spectra</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#spectrdoc">spectr</a></td>
+ <td bgcolor="#f2f4ff">instrument steady state spectra</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#stochasticdoc">stochastic</a></td>
- <td bgcolor="#f2f4ff">Bill Sack's dynamic stochastic synthesis</td></tr>
+<tr><td><a href="sndscm.html#stochasticdoc">stochastic</a></td>
+ <td>Bill Sack's dynamic stochastic synthesis</td></tr>
-<tr><td><a href="sndscm.html#straddoc">strad</a></td>
- <td>string physical model (from CLM)</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#straddoc">strad</a></td>
+ <td bgcolor="#f2f4ff">string physical model (from CLM)</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#vdoc">v</a></td>
- <td bgcolor="#f2f4ff">fm-violin</td></tr>
+<tr><td><a href="sndscm.html#vdoc">v</a></td>
+ <td>fm-violin</td></tr>
-<tr><td><a href="sndscm.html#wsdoc">ws</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(ws_doc_tip)">with-sound</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#wsdoc">ws</a></td>
+ <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(ws_doc_tip)">with-sound</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="sndscm.html#zipdoc">zip</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(zip_doc_tip)">the zipper (the anti-cross-fader)</td></tr>
+<tr><td><a href="sndscm.html#zipdoc">zip</a></td>
+ <td onmouseout="UnTip()" onmouseover="Tip(zip_doc_tip)">the zipper (the anti-cross-fader)</td></tr>
</table>
</td></tr></table>
@@ -920,8 +911,7 @@ See the function html in index.scm.
<!-- just-sounds -->
<tr><td colspan=2 bgcolor="#f2f4ff"><code><a class=def name="justsounds">just-sounds</a></code></td>
<td bgcolor="#f2f4ff"><code>#f</code></td></tr><tr><td></td><td colspan=2>
-In Motif and in Gtk versions 2.3 or later,
-if just-sounds is #t,
+If just-sounds is #t,
the file lists displayed by the file selection dialogs are filtered to show just
sound files (see <a href="#addsoundfileextension">add-sound-file-extension</a>).
</td></tr><tr><td colspan=3 height=16></td></tr>
@@ -959,7 +949,7 @@ This sets the maximum size of the region list, the number of regions that are ac
<!-- max-virtual-ptrees -->
<tr><td colspan=2 bgcolor="#f2f4ff"><code><a class=def name="maxvirtualptrees">max-virtual-ptrees</a></code></td>
-<td bgcolor="#f2f4ff"><code>3</code></td></tr><tr><td></td><td colspan=2>
+<td bgcolor="#f2f4ff"><code>32</code></td></tr><tr><td></td><td colspan=2>
This sets the maximum number of parse-trees (see <a href="#ptreechannel">ptree-channel</a>) that the
virtual editor will allow in any virtual edit (once the maximum is reached, the operation is handled
locally, not via a virtual edit).
@@ -2057,7 +2047,7 @@ hook function is used in <a href="sndscm.html#withmarkedsound">with-marked-sound
(if (not (= (<a class=quiet href="#marksync" onmouseout="UnTip()" onmouseover="Tip(extsnd_marksync_tip)">mark-sync</a> n) 0))
(<a class=quiet onmouseout="UnTip()" onmouseover="Tip(scheme_format_tip)">format</a> #f "~% sync: ~A" (<a class=quiet href="#marksync" onmouseout="UnTip()" onmouseover="Tip(extsnd_marksync_tip)">mark-sync</a> n))
"")
- (let ((props (<a class=quiet href="sndscm.html#markproperties" onmouseout="UnTip()" onmouseover="Tip(sndscm_markproperties_tip)">mark-properties</a> n)))
+ (let ((props (<a class=quiet href="#markproperties" onmouseout="UnTip()" onmouseover="Tip(sndscm_markproperties_tip)">mark-properties</a> n)))
(if (and (list? props)
(not (null? props)))
(<a class=quiet onmouseout="UnTip()" onmouseover="Tip(scheme_format_tip)">format</a> #f "~% properties: '~A" props)
@@ -4606,7 +4596,21 @@ This is the name of the mark.
<code><a class=def name="markproperties">mark-properties</a> mark</code>
</td></tr><tr><td></td><td>
mark-properties is a property list associated with a mark.
-<a href="sndscm.html#markproperty">mark-property</a> (in marks.scm) reads and writes this list.
+<a href="#markproperty">mark-property</a> reads and writes this list.
+</td></tr><tr><td colspan=2 height=16></td></tr>
+
+
+<!-- mark-property -->
+<tr><td colspan=2 bgcolor="#f2f4ff">
+<code><a class=def name="markproperty">mark-property</a> key mark</code>
+</td></tr><tr><td></td><td>
+mark-property accesses the property 'key' in the property list associated with the mark.
+<pre>
+ :<em class=typing>(set! (mark-property :weight m0) 2.5)</em> ; m0 is the mark
+ <em class=listener>2.5</em>
+ :<em class=typing>(mark-property :weight m0)</em>
+ <em class=listener>2.5</em>
+</pre>
</td></tr><tr><td colspan=2 height=16></td></tr>
@@ -4787,7 +4791,7 @@ define selection via marks: <a href="sndscm.html#defineselectionviamarks">define
force dragged mark to land on a beat: <a href="sndscm.html#snapmarktobeat">snap-mark-to-beat</a><br>
loop continuously between the two specified marks: <a href="sndscm.html#loopbetweenmarks">loop-between-marks</a><br>
split sound into separate files based on mark placement: <a href="sndscm.html#markexplode">mark-explode</a><br>
-mark property lists: <a href="sndscm.html#markproperty">mark-property</a><br>
+mark property lists: <a href="#markproperty">mark-property</a><br>
save mark properties in saved state file: <a href="sndscm.html#savemarkproperties">save-mark-properties</a><br>
show mark properties upon click: <a href="sndscm.html#markclickinfo">mark-click-info</a><br>
<br>
@@ -5111,10 +5115,24 @@ mix-position is the current starting position (a sample number) of 'mix'. To mo
<code><a class=def name="mixproperties">mix-properties</a> mix</code>
</td></tr><tr><td></td><td>
mix-properties is a property list associated with a mix.
-<a href="sndscm.html#mixproperty">mix-property</a> (in mix.scm) reads and writes this list.
+<a href="#mixproperty">mix-property</a> reads and writes this list.
</td></tr><tr><td colspan=2 height=18></td></tr>
+<!-- mix-property -->
+<tr><td colspan=2 bgcolor="#f2f4ff">
+<code><a class=def name="mixproperty">mix-property</a> key mix</code>
+</td></tr><tr><td></td><td>
+mix-property associates a property with a mix.
+<pre>
+ :<em class=typing>(set! (mix-property :info mx) "this is a mix")</em>
+ <em class=listener>"this is a mix"</em>
+ :<em class=typing>(mix-property :info mx)</em>
+ <em class=listener>"this is a mix"</em>
+</pre>
+</td></tr><tr><td colspan=2 height=16></td></tr>
+
+
<!-- mix-region -->
<tr><td colspan=2 bgcolor="#f2f4ff"><code><a class=def name="mixregion">mix-region</a> samp <em class=narg>reg snd chn reg-chan</em></code>
</td></tr><tr><td></td><td>
@@ -5254,7 +5272,7 @@ read mix samples: <a href="#makemixsampler">make-mix-sampler</a><br>
mix data maxamp: <a href="sndscm.html#mixmaxamp">mix-maxamp</a><br>
mix data to vct: <a href="sndscm.html#mixtovct">mix-&gt;vct</a><br>
save mix data in file: <a href="#savemix">save-mix</a><br>
-mix property list: <a href="sndscm.html#mixproperty">mix-property</a> in mix.scm<br>
+mix property list: <a href="#mixproperty">mix-property</a><br>
pan mono sound into stereo: see <a href="sndscm.html#placesound">place-sound</a> in examp.scm<br>
move a mixed sound via dlocsig: <a href="#mixmovesound">mix-move-sound</a><br>
the mix dialog: <a href="snd.html#mixdialog">Mix Dialog</a><br>
@@ -6114,7 +6132,7 @@ the configure argument --without-float-samples). See make-variable-display in s
</td></tr><tr><td></td><td>
channel-properties is a property list associated with a channel. It is set to '() at the time a sound is opened, so
it provides a relatively simple way to save data about a channel which will automatically be erased when the channel is closed.
-<a href="sndscm.html#channelproperty">channel-property</a> (in extensions.scm) reads and writes this list.
+<a href="#channelproperty">channel-property</a> reads and writes this list.
<br><br>
Traditionally in Lisp, a property list has been treated as an association list. This is a list
of pairs (made by cons), each inner pair having a key as its first element, and the associated value as the second element.
@@ -6130,6 +6148,36 @@ elaborate examples are in enved.scm (enved-envelope), or draw.scm (colored-sampl
</td></tr><tr><td colspan=2 height=18></td></tr>
+<!-- channel-property -->
+<tr><td colspan=2 bgcolor="#f2f4ff">
+<code><a class=def name="channelproperty">channel-property</a> key snd chn</code>
+</td></tr><tr><td></td><td>
+channel-property returns the value associated with 'key' in the given channel's
+<a href="extsnd.html#channelproperties">property list</a>. To add or change a property, use set! with this procedure.
+<pre>
+ Scheme:
+ :<em class=typing>(set! (channel-property 'info 0 0) "this is sound 0, first channel")</em>
+ <em class=listener>"this is sound 0, first channel"</em>
+ :<em class=typing>(channel-property 'info 0 0)</em>
+ <em class=listener>"this is sound 0, first channel"</em>
+
+ Ruby:
+ ><em class=typing>set_channel_property(:info, "this is info", 0, 0)</em>
+ <em class=listener>this is info</em>
+ ><em class=typing>channel_property(:info, 0, 0)</em>
+ <em class=listener>this is info</em>
+
+ Forth:
+ ><em class=typing>'info "this is info" 0 0 set-channel-property</em>
+ <em class=listener>'( '( 'info . this is info ) )</em>
+ ><em class=typing>'info 0 0 channel-property</em>
+ <em class=listener>this is info</em>
+</pre>
+The property list is convenient because the associated information goes away automatically
+when the channel is closed, and the property lists are saved by <a href="extsnd.html#savestate">save-state</a>.
+</td></tr><tr><td colspan=2 height=18></td></tr>
+
+
<!-- channel-style -->
<tr><td colspan=2 bgcolor="#f2f4ff">
<code><a class=def name="channelstyle">channel-style</a> <em class=narg>snd</em></code>
@@ -9042,11 +9090,22 @@ This is similar to <a href="#mussoundloopinfo">mus-sound-loop-info</a> (but it's
<code><a class=def name="soundproperties">sound-properties</a> <em class=narg>snd</em></code>
</td></tr><tr><td></td><td>
This is a property list associated with the given sound. It is set to '() at the time a sound is opened. The accessor
-<a href="sndscm.html#soundproperty">sound-property</a> is provided in extensions.scm. There are several
+is <a href="#soundproperty">sound-property</a>. There are several
examples of using it in snd-motif.scm and autosave.scm.
</td></tr><tr><td colspan=2 height=18></td></tr>
+<!-- sound-property -->
+<tr><td colspan=2 bgcolor="#f2f4ff">
+<code><a class=def name="soundproperty">sound-property</a> key snd</code>
+</td></tr><tr><td></td><td>
+sound-property provides access to a sound's <a href="#soundproperties">property list</a>.
+These properties are saved when Snd's state is saved (via <a href="extsnd.html#savestate">save-state</a>
+or the Options:Save session menu). To omit a given property at that time, add its name (a symbol) to
+the property 'save-state-ignore (a list of symbols); see 'inset-envelope in extensions.scm.
+</td></tr><tr><td colspan=2 height=16></td></tr>
+
+
<!-- sounds -->
<tr><td colspan=2 bgcolor="#f2f4ff">
<code><a class=def name="sounds">sounds</a></code>
@@ -10552,6 +10611,18 @@ edit lists, these property lists might simplify the access code.
</td></tr><tr><td></td><td></td></tr><tr><td colspan=2 height=16></td></tr>
+<!-- edit-property -->
+<tr><td colspan=2 bgcolor="#f2f4ff">
+<code><a class=def name="editproperty">edit-property</a> key snd chn edpos</code>
+</td></tr><tr><td></td><td>
+edit-property returns the value associated with 'key' in the given channel's edit history list
+<a href="extsnd.html#editproperties">property list</a> at edit location 'edpos'. To add or change a property, use set! with this procedure
+as in <a href="#channelproperty">channel-property</a>.
+The edit list property list is convenient because the associated information goes away automatically
+when the given edit is no longer accessible.
+</td></tr><tr><td colspan=2 height=16></td></tr>
+
+
<!-- edits -->
<tr><td colspan=2 bgcolor="#f2f4ff">
<code><a class=def name="edits">edits</a> <em class=narg>snd chn</em></code>
@@ -11616,7 +11687,7 @@ starts the File:Save as dialog (to save the currently selected sound), returning
<!-- show-listener -->
<tr><td colspan=2 bgcolor="#f2f4ff"><code><a class=def name="showlistener">show-listener</a></code>
</td></tr><tr><td></td><td>
-If show-listener is set to #t, it opens the listener pane; otherwise it closes the listener.
+If show-listener is set to #t, Snd opens the listener pane; otherwise it closes the listener.
</td></tr><tr><td colspan=2 height=16></td></tr>
@@ -13372,7 +13443,7 @@ make-bezier-1 in <a href="sndscm.html#musglyphs">musglyphs.scm</a> can be used t
<code><a class=def name="drawstring">draw-string</a> text x0 y0 <em class=narg>snd chn context</em></code>
</td></tr><tr><td></td><td>
This draws a string ('text') in the current font and foreground color starting at ('x0 y0') in the specified context.
-The next procedures use the channel-property list (extensions.scm) to maintain a list
+The next procedures use the channel-property list to maintain a list
of sample-oriented comments, displaying a given comment if its associated sample is
currently in the time-domain graph:
@@ -13380,13 +13451,13 @@ currently in the time-domain graph:
(define* (<a name="addcomment">add-comment</a> sample comment snd1 chn1)
(let* ((snd (or snd1 (<a class=quiet href="#selectedsound" onmouseout="UnTip()" onmouseover="Tip(extsnd_selectedsound_tip)">selected-sound</a>)))
(chn (or chn1 (<a class=quiet href="#selectedchannel" onmouseout="UnTip()" onmouseover="Tip(extsnd_selectedchannel_tip)">selected-channel</a>)))
- (old-comments (or (<a class=quiet href="sndscm.html#channelproperty" onmouseout="UnTip()" onmouseover="Tip(sndscm_channelproperty_tip)">channel-property</a> 'comments snd chn) '())))
- (set! (<a class=quiet href="sndscm.html#channelproperty" onmouseout="UnTip()" onmouseover="Tip(sndscm_channelproperty_tip)">channel-property</a> 'comments snd chn)
+ (old-comments (or (<a class=quiet href="#channelproperty" onmouseout="UnTip()" onmouseover="Tip(sndscm_channelproperty_tip)">channel-property</a> 'comments snd chn) '())))
+ (set! (<a class=quiet href="#channelproperty" onmouseout="UnTip()" onmouseover="Tip(sndscm_channelproperty_tip)">channel-property</a> 'comments snd chn)
(cons (list sample comment)
old-comments))))
(define (show-comments snd chn)
- (let ((comments (or (<a class=quiet href="sndscm.html#channelproperty" onmouseout="UnTip()" onmouseover="Tip(sndscm_channelproperty_tip)">channel-property</a> 'comments snd chn) '())))
+ (let ((comments (or (<a class=quiet href="#channelproperty" onmouseout="UnTip()" onmouseover="Tip(sndscm_channelproperty_tip)">channel-property</a> 'comments snd chn) '())))
(for-each
(lambda (<a class=quiet href="#comment" onmouseout="UnTip()" onmouseover="Tip(extsnd_comment_tip)">comment</a>)
(let* ((samp (car comment))
diff --git a/generators.scm b/generators.scm
index 2689aac..3c553d6 100644
--- a/generators.scm
+++ b/generators.scm
@@ -6849,6 +6849,142 @@ taking input from the readin generator 'reader'. The output data is available v
|#
+
+;;; ---------------- flocsig (flanged locsig) ----------------
+
+(defgenerator (flocsig
+ ;; assume stereo out/rev
+ :make-wrapper (lambda (g)
+ (set! (flocsig-maxd g) (ceiling amplitude))
+ (set! (flocsig-out1 g) (make-vct (flocsig-maxd g)))
+ (set! (flocsig-out2 g) (make-vct (flocsig-maxd g)))
+ (set! (flocsig-ri g) (make-rand-interp
+ :frequency (flocsig-frequency g)
+ :amplitude (- (flocsig-amplitude g) 1.0)))
+ (if (not (flocsig-offset g))
+ (set! (flocsig-offset g) (mus-random (* 0.3 (flocsig-amplitude g)))))
+ g))
+ (reverb-amount 0.0) (frequency 1.0) (amplitude 2.0) offset
+ (maxd 0)
+ (out1 #f :type vct) (out2 #f :type vct) (outloc 0)
+ (ri #f :type clm))
+
+(define (flocsig gen samp input)
+ ;; signal position and per-channel-delay depends on rand-interp
+ (declare (gen flocsig) (samp int) (input float))
+ (let* ((rpos (rand-interp (flocsig-ri gen)))
+ (pos (min (max (+ rpos (flocsig-offset gen)) (- (flocsig-amplitude gen))) (flocsig-amplitude gen)))
+ (amp1 (if (<= pos -1.0) 1.0
+ (if (>= pos 1.0) 0.0
+ (/ (sqrt (- 1.0 pos)) (sqrt 2.0)))))
+ (amp2 (if (<= pos -1.0) 0.0
+ (if (>= pos 1.0) 1.0
+ (/ (sqrt (+ 1.0 pos)) (sqrt 2.0)))))
+ (dly1 (abs (min 0.0 pos)))
+ (frac1 (- dly1 (floor dly1)))
+ (dly2 (max 0.0 pos))
+ (frac2 (- dly2 (floor dly2)))
+ (out1 (flocsig-out1 gen))
+ (loc (flocsig-outloc gen))
+ (out2 (flocsig-out2 gen))
+ (size (flocsig-maxd gen))
+ (loc10 (modulo (+ loc (floor dly1)) size))
+ (loc11 (modulo (+ loc 1 (floor dly1)) size))
+ (loc20 (modulo (+ loc (floor dly2)) size))
+ (loc21 (modulo (+ loc 1 (floor dly2)) size))
+ (rev (flocsig-reverb-amount gen)))
+
+ (vct-set! out1 loc10 (+ (vct-ref out1 loc10) (* amp1 input (- 1.0 frac1))))
+ (vct-set! out1 loc11 (+ (vct-ref out1 loc11) (* amp1 input frac1)))
+ (vct-set! out2 loc20 (+ (vct-ref out2 loc20) (* amp2 input (- 1.0 frac2))))
+ (vct-set! out2 loc21 (+ (vct-ref out2 loc21) (* amp2 input frac2)))
+
+ (let* ((val1 (vct-ref out1 loc))
+ (val2 (vct-ref out2 loc)))
+ (vct-set! out1 loc 0.0)
+ (vct-set! out2 loc 0.0)
+ (set! loc (+ loc 1))
+ (if (= loc size) (set! loc 0))
+ (outa samp val1)
+ (outb samp val2)
+ (if (> rev 0.0)
+ (begin
+ (outa samp (* rev val1) *reverb*)
+ (outb samp (* rev val2) *reverb*)))
+ (set! (flocsig-outloc gen) loc))))
+
+
+
+#|
+(definstrument (jcrev2)
+ (let* (
+ (allpass11 (make-all-pass -0.700 0.700 1051))
+ (allpass21 (make-all-pass -0.700 0.700 337))
+ (allpass31 (make-all-pass -0.700 0.700 113))
+ (comb11 (make-comb 0.742 4799))
+ (comb21 (make-comb 0.733 4999))
+ (comb31 (make-comb 0.715 5399))
+ (comb41 (make-comb 0.697 5801))
+ (outdel11 (make-delay (seconds->samples .01)))
+
+ (allpass12 (make-all-pass -0.700 0.700 1051))
+ (allpass22 (make-all-pass -0.700 0.700 337))
+ (allpass32 (make-all-pass -0.700 0.700 113))
+ (comb12 (make-comb 0.742 4799))
+ (comb22 (make-comb 0.733 4999))
+ (comb32 (make-comb 0.715 5399))
+ (comb42 (make-comb 0.697 5801))
+ (outdel12 (make-delay (seconds->samples .01)))
+
+ (file-dur (frames *reverb*))
+ (decay-dur (mus-srate))
+ (len (floor (+ decay-dur file-dur))))
+
+ (run
+ (lambda ()
+ (do ((i 0 (+ 1 i)))
+ ((= i len))
+
+ (let* ((allpass-sum (all-pass allpass31
+ (all-pass allpass21
+ (all-pass allpass11
+ (ina i *reverb*)))))
+ (comb-sum (+ (comb comb11 allpass-sum)
+ (comb comb21 allpass-sum)
+ (comb comb31 allpass-sum)
+ (comb comb41 allpass-sum))))
+ (outa i (delay outdel11 comb-sum)))
+
+ (let* ((allpass-sum (all-pass allpass32
+ (all-pass allpass22
+ (all-pass allpass12
+ (inb i *reverb*)))))
+ (comb-sum (+ (comb comb12 allpass-sum)
+ (comb comb22 allpass-sum)
+ (comb comb32 allpass-sum)
+ (comb comb42 allpass-sum))))
+ (outb i (delay outdel12 comb-sum)))
+ )))))
+
+
+(definstrument (simp beg dur (amp 0.5) (freq 440.0) (ramp 2.0) (rfreq 1.0) offset)
+ (let* ((os (make-pulse-train freq))
+ (floc (make-flocsig :reverb-amount 0.1
+ :frequency rfreq
+ :amplitude ramp
+ :offset offset))
+ (start (seconds->samples beg))
+ (end (+ start (seconds->samples dur))))
+ (run
+ (lambda ()
+ (do ((i start (+ i 1)))
+ ((= i end))
+ (flocsig floc i (* amp (pulse-train os))))))))
+
+(with-sound (:channels 2 :reverb-channels 2 :reverb jcrev2) (simp 0 1))
+|#
+
+
;;; --------------------------------------------------------------------------------
;;;
;;; set up make-* help strings
diff --git a/gettext.h b/gettext.h
deleted file mode 100644
index 8b262f4..0000000
--- a/gettext.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/* Convenience header for conditional use of GNU <libintl.h>.
- Copyright (C) 1995-1998, 2000-2002 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library 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. */
-
-#ifndef _LIBGETTEXT_H
-#define _LIBGETTEXT_H 1
-
-/* NLS can be disabled through the configure --disable-nls option. */
-#if ENABLE_NLS
-
-/* Get declarations of GNU message catalog functions. */
-# include <libintl.h>
-
-#else
-
-/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
- chokes if dcgettext is defined as a macro. So include it now, to make
- later inclusions of <locale.h> a NOP. We don't include <libintl.h>
- as well because people using "gettext.h" will not include <libintl.h>,
- and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
- is OK. */
-#if defined(__sun)
-# include <locale.h>
-#endif
-
-/* Disabled NLS.
- The casts to 'const char *' serve the purpose of producing warnings
- for invalid uses of the value returned from these functions.
- On pre-ANSI systems without 'const', the config.h file is supposed to
- contain "#define const". */
-# define gettext(Msgid) ((const char *) (Msgid))
-# define dgettext(Domainname, Msgid) ((const char *) (Msgid))
-# define dcgettext(Domainname, Msgid, Category) ((const char *) (Msgid))
-# define ngettext(Msgid1, Msgid2, N) \
- ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
-# define dngettext(Domainname, Msgid1, Msgid2, N) \
- ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
-# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
- ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
-# define textdomain(Domainname) ((const char *) (Domainname))
-# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname))
-# define bind_textdomain_codeset(Domainname, Codeset) ((const char *) (Codeset))
-
-#endif
-
-/* A pseudo function call that serves as a marker for the automated
- extraction of messages, but does not call gettext(). The run-time
- translation is done at a different place in the code.
- The argument, String, should be a literal string. Concatenated strings
- and other string expressions won't work.
- The macro's expansion is not parenthesized, so that it is suitable as
- initializer for static 'char[]' or 'const char[]' variables. */
-#define gettext_noop(String) String
-
-#endif /* _LIBGETTEXT_H */
diff --git a/gl.c b/gl.c
index c318d4a..ae851ed 100644
--- a/gl.c
+++ b/gl.c
@@ -7,6 +7,7 @@
* 'gl is added to *features*
*
* HISTORY:
+ * --------
* 16-Dec-09: removed Guile support.
* --------
* 17-Oct-08: removed gtkglext bindings.
@@ -5103,7 +5104,7 @@ static void define_functions(void)
static void define_integers(void)
{
-#if HAVE_S7
+#if HAVE_SCHEME
#define DEFINE_INTEGER(Name) s7_define_constant(s7, XL_PRE #Name XL_POST, C_TO_XEN_INT(Name))
#else
#define DEFINE_INTEGER(Name) XEN_DEFINE(XL_PRE #Name XL_POST, C_TO_XEN_INT(Name))
@@ -5939,7 +5940,7 @@ void Init_libgl(void)
define_integers();
define_functions();
XEN_YES_WE_HAVE("gl");
- XEN_DEFINE("gl-version", C_TO_XEN_STRING("16-Dec-09"));
+ XEN_DEFINE("gl-version", C_TO_XEN_STRING("06-Feb-10"));
gl_already_inited = true;
}
}
diff --git a/grfsnd.html b/grfsnd.html
index 64241be..81a1550 100644
--- a/grfsnd.html
+++ b/grfsnd.html
@@ -1,4 +1,4 @@
- <html>
+<html>
<head>
<title>Snd Customization and Extension</title>
<style type="text/css">
@@ -341,7 +341,7 @@ set_axis_numbers_font "9x15"
set_show_mix_waveforms true
set_trap_segfault false
set_listener_prompt ":"
-show_listener
+set_show_listener true
beige = make_color 0.96, 0.96, 0.86
blue = make_color 0, 0, 1
@@ -356,189 +356,365 @@ $mouse_enter_listener_hook.add_hook!("focus") do |widget| focus_widget(widget) e
$mouse_enter_text_hook.add_hook!("focus") do |widget| focus_widget(widget) end
</pre></td></tr></table>
-<p>And Forth:
+<p>And Forth (~/.snd_forth):
</p>
-<table border=0 cellpadding=5 hspace=20><tr><td><pre>
+<table border=0 cellpadding=5 hspace=20><tr><td>
+<pre>
\ .snd_forth -- start up file for Snd/Forth -*- snd-forth -*-
-\ You can easily install the *.fs scripts with:
+\ You can install the *.fs scripts with:
\
-\ cd fth-0.8.x/examples/site-lib
+\ cd ${top_srcdir}/examples/site-lib
\ ./install.fth
+\
+\ or even better
\
-\ If you have installed the *.fs files with install.fth, you don't
-\ need to add a path to *load-path*. ${prefix}/share/fth/site-fth is
-\ already included. Otherwise you can add a path with e.g.
+\ cd ${top_builddir}
+\ make install
+\
+\ If you have installed *.fs scripts with one of the above mentioned
+\ commands, you don't need to add a path to *load-path*.
+\ ${prefix}/share/fth/site-fth is already included. Otherwise you can
+\ add a path with e.g.:
+\
+\ "/home/mike/snd" add-load-path
+
+\ A special *SND-HOME* path points here to ~/.snd.d (similar to ~/.emacs.d):
+\
+\ ~/.snd.d directory for save-state-file
+\ ~/.snd.d/sound directory for *clm-file-name*
+\ add-directory-to-view-files-list
+\ set-open-file-dialog-director
+\ ~/.snd.d/zap directory for set-temp-dir
+\ set-save-dir
+\ ~/.snd.d/peaks directory for set-peak-env-dir
+\
+\ "HOME" getenv value *home*
+\ *home* "/.snd.d" $+ value *snd-home*
+\
+\ Change these paths to fit your needs!
\
-\ "/home/mike/snd-11" add-load-path
#t to *fth-verbose*
+#f to *fth-debug*
-: verbose-loading ( fname -- f )
- $" \\ loading \"%s\"\n" swap 1 &gt;list fth-print
- #t
+#f value *init-with-peaks* \ with peak-env support
+#f value *init-graph-extra-hooks* \ with display-correlate, zoom-spectrum, superimpose-ffts
+#f value *init-lisp-graph-extra-hooks* \ with display-energy, display-db
+
+: print-loading-file { fname -- }
+ *fth-verbose* if $" \\ loading %s\n" '( fname ) clm-print then
;
-'snd-nogui provided? [unless] before-load-hook ' verbose-loading 1 make-proc add-hook! [then]
+*filename* print-loading-file
+
+"HOME" getenv value *home*
+*home* "/.snd.d" $+ value *snd-home*
+hostname value *hostname*
+*hostname* /\\./ string-split car value *short-hostname*
+*argv* length 0&gt; [if] *argv* car undef file-basename [else] "snd" [then] value *program-name*
+
+before-load-hook lambda: &lt;{ fname -- f }&gt;
+ fname print-loading-file
+ #t
+; add-hook!
+
+\ if configured --with-shared-sndlib
+dl-load sndlib Init_sndlib
+
+\ Set them before loading clm.fs.
+2 set-default-output-chans drop
+48000 set-default-output-srate drop
+512 set-dac-size drop
+mus-clipping set-clipping drop
+1024 1024 * set-mus-file-buffer-size drop
+24 set-mus-array-print-length drop
+mus-array-print-length set-print-length drop
+128 set-object-print-length
require clm
require clm-ins
-require env
-
-[undefined] snd-print [if] ' fth-print alias snd-print [then]
-
-#t to *clm-verbose*
-lambda: ( str -- ) ." \ &lt;" .string ." &gt;" cr ; to *clm-notehook*
-
-'snd-motif provided? 'xm provided? not && [if] dl-load libxm Init_libxm [then]
-'snd-gtk provided? 'xg provided? not && [if] dl-load libxg Init_libxg [then]
-
-require examp
-require extensions
-require mix
-require marks
-require draw
-'snd-motif provided? [if]
- require effects
- require popup
- edhist-save-hook lambda: ( prc -- )
- $" #&lt;proc: %s&gt;\n" swap 1 &gt;list string-format .stdout
- ; 1 make-proc add-hook!
+
+\ Environment variable CLM_SEARCH_PATH
+\ Path variable where sound files reside.
+\ csh: setenv CLM_SEARCH_PATH /usr/gnu/sound/SFiles:${HOME}/.snd.d/sound
+\ sh: CLM_SEARCH_PATH=/usr/gnu/sound/SFiles:${HOME}/.snd.d/sound; export CLM_SEARCH_PATH
+
+"CLM_SEARCH_PATH" getenv dup [if]
+ ":" string-split [each] *clm-search-list* swap array-push to *clm-search-list* [end-each]
+[else]
+ drop
+ *clm-search-list* *snd-home* "/sound" $+ array-push to *clm-search-list*
+[then]
+#t to *clm-play*
+#t to *clm-statistics*
+#t to *clm-verbose*
+#f to *clm-debug*
+*snd-home* "/sound/fth-test.snd" $+ to *clm-file-name*
+*snd-home* "/sound/fth-test.reverb" $+ to *clm-reverb-file-name*
+#t to *clm-delete-reverb*
+lambda: &lt;{ ins beg dur -- }&gt; $" %14s: %5.2f %5.2f" '( ins beg dur ) clm-message ; to *clm-notehook*
+
+'snd-nogui provided? [if]
+ \ snd-nogui repl and prompt hooks
+ before-repl-hook reset-hook! \ remove default hook
+ before-repl-hook lambda: &lt;{ -- }&gt;
+ "" #f clm-message
+ $" Starting session on %s." '( $" %Ev %Er" current-time strftime ) clm-message
+ "" #f clm-message
+ ; add-hook!
+ after-repl-hook lambda: &lt;{ history -- }&gt;
+ "" #f clm-message
+ $" Thank you for using %s!" #( *program-name* string-upcase ) clm-message
+ "" #f clm-message
+ 1 sleep
+ ; add-hook!
+
+ \ A more elaborated prompt for fth and snd-forth-nogui.
+ before-prompt-hook lambda: &lt;{ prompt pos -- new-prompt }&gt;
+ "%EI:%EM%p" current-time strftime string-downcase! { tm }
+ "(/usr)?" *home* $+ make-regexp file-pwd "~" regexp-replace { path }
+ $" (%s:%s)\n[%s %s] (%d)&gt; " #( *short-hostname* path *program-name* tm pos ) string-format
+ ; add-hook!
[then]
-exit-hook lambda: ( -- f )
- save-state-file save-state drop
- #t
-; 0 make-proc add-hook!
-
-after-open-hook lambda: ( snd -- val )
- { snd }
- snd channels 0 ?do snd short-file-name snd i time-graph set-x-axis-label drop loop
- #t snd set-cursor-follows-play drop
- channels-combined snd set-channel-style
-; 1 make-proc add-hook!
-
-after-save-as-hook lambda: ( snd fname from-dialog -- f )
- { snd fname from-dialog }
- snd revert-sound drop
- snd close-sound drop
- fname open-sound drop
- #f
-; 3 make-proc add-hook!
-
-start-playing-hook lambda: ( snd -- f )
- { snd }
- #f
- snd sound? if snd cursor-follows-play if drop cursor-line snd #t set-cursor-style then then
-; 1 make-proc add-hook!
-
-stop-playing-hook lambda: ( snd -- f )
- { snd }
- #f
- snd sound? if drop cursor-cross snd #t set-cursor-style then
-; 1 make-proc add-hook!
-
-window-property-changed-hook lambda: ( cmd -- )
- ." \ remote command received: " ( cmd ) .string cr
-; 1 make-proc add-hook!
-
-before-save-state-hook lambda: ( fname -- f )
- ( fname ) io-open-write dup $" \\ -*- snd-forth -*-\n" io-write io-close
- #t
-; 1 make-proc add-hook!
-
-enved-hook lambda: ( en pt x y reason -- en'|#f )
- { en pt x y reason }
- reason enved-move-point = if
- x en car f&gt; x en -2 list-ref f&lt; and if
- en en pt 2* list-ref x #f #f stretch-envelope { new-en }
- new-en pt 2* 1+ y list-set!
- new-en
+*snd-home* add-load-path
+*init-with-peaks* [if]
+ *snd-home* "/peaks" $+ set-peak-env-dir drop
+[then]
+*snd-home* "/snd-saved.fs" $+ set-save-state-file drop
+*snd-home* "/zap" $+ set-temp-dir drop
+*snd-home* "/zap" $+ set-save-dir drop
+*snd-home* "/sound" $+ set-open-file-dialog-directory drop
+"/usr/gnu/cvs/snd" set-html-dir drop
+"BROWSER" getenv "firefox" || set-html-program drop
+#t set-trap-segfault drop
+#t set-show-listener drop
+0.0 set-auto-update-interval drop
+"rev" add-sound-file-extension drop
+"reverb" add-sound-file-extension drop
+"wave" add-sound-file-extension drop
+*clm-search-list* [each] ( dir ) undef add-directory-to-view-files-list drop [end-each]
+
+before-save-state-hook lambda: &lt;{ fname -- f }&gt;
+ $" \\ -*- snd-forth -*-\n" :filename fname with-output-port
+ #t \ #t --&gt; append mode
+; add-hook!
+
+\ make-default-comment from clm.fs
+output-comment-hook lambda: &lt;{ str -- s }&gt;
+ str empty? if make-default-comment else str then
+; add-hook!
+
+'snd-nogui provided? [unless]
+ 'snd-motif provided? [if]
+ \ if not configured --with-static-xm
+ 'xm provided? not [if] dl-load libxm Init_libxm [then]
+ require snd-xm
+ add-mark-pane
+ #t show-smpte-label
+ after-open-hook &lt;'&gt; show-disk-space add-hook!
+
+ require effects
+ #f to use-combo-box-for-fft-size \ boolean (default #f)
+
+ require popup
+ edhist-save-hook lambda: &lt;{ prc -- }&gt; "%S" #( prc ) clm-message ; add-hook!
+ [then]
+
+ 'snd-gtk provided? [if]
+ \ if not configured --with-static-xg
+ 'xg provided? not [if] dl-load libxg Init_libxg [then]
+ $" Serif 10" set-axis-label-font drop
+ [then]
+
+ require extensions
+ #t set-emacs-style-save-as
+ #t check-for-unsaved-edits
+ *snd-home* "/snd-remember-sound.fs" $+ to remember-sound-filename
+ 3 remember-sound-state
+ 0.00 0.10 #t prefs-activate-initial-bounds
+ with-reopen-menu
+ with-buffers-menu
+ 2 set-global-sync
+
+ require examp
+ *init-graph-extra-hooks* [if]
+ graph-hook &lt;'&gt; display-correlate add-hook!
+ graph-hook &lt;'&gt; zoom-spectrum add-hook!
+ graph-hook &lt;'&gt; superimpose-ffts add-hook!
+ [then]
+ *init-lisp-graph-extra-hooks* [if]
+ lisp-graph-hook &lt;'&gt; display-energy add-hook!
+ lisp-graph-hook &lt;'&gt; display-db add-hook!
+ [then]
+ after-transform-hook &lt;'&gt; fft-peak add-hook!
+
+ require mix
+ mix-click-hook &lt;'&gt; mix-click-sets-amp add-hook!
+ mix-click-hook &lt;'&gt; mix-click-info add-hook!
+
+ require marks
+ save-mark-properties
+ mark-click-hook &lt;'&gt; mark-click-info add-hook!
+
+ require dsp
+ graph-hook lambda: &lt;{ snd chn y0 y1 -- #f }&gt;
+ $" freq: %.3f" #( snd chn left-sample snd chn spot-freq ) string-format
+ snd #f report-in-minibuffer drop
+ #f
+ ; add-hook!
+
+ mouse-click-hook lambda: &lt;{ snd chn button state x y axis -- a }&gt;
+ axis time-graph = if
+ $" freq: %.3f" #( snd chn #f cursor snd chn spot-freq ) string-format
+ snd #f report-in-minibuffer
else
#f
then
- else
+ ; add-hook!
+
+ require env
+ enved-hook lambda: &lt;{ en pt x y reason -- en'|#f }&gt;
+ reason enved-move-point = if
+ x en 0 array-ref f&gt; x en -2 array-ref f&lt; && if
+ en en pt 2* array-ref x #f #f stretch-envelope ( new-en ) dup pt 2* 1+ y array-set!
+ else
+ #f
+ then
+ else
+ #f
+ then
+ ; add-hook!
+
+ require rgb
+ lightsteelblue2 set-help-button-color drop
+ lightsalmon2 set-reset-button-color drop
+ light-salmon set-quit-button-color drop
+ wheat set-doit-button-color drop
+ burlywood set-doit-again-button-color drop
+ lightsteelblue1 set-pushed-button-color drop
+ beige set-selected-graph-color drop
+ blue set-selected-data-color drop
+
+ #t set-show-indices drop
+ #f set-verbose-cursor drop
+ #t set-with-inset-graph drop
+ #t set-with-pointer-focus drop
+ #t set-just-sounds drop
+ #t set-enved-wave? drop
+ #t set-show-y-zero drop
+ #t set-show-transform-peaks drop
+ speed-control-as-ratio set-speed-control-style drop
+ graph-as-spectrogram set-transform-graph-type drop \ graph-once graph-as-sonogram
+ rainbow-colormap set-colormap drop
+ $" snd&gt; " set-listener-prompt drop
+ 160 set-window-x drop
+ 0 set-window-y drop
+ 800 set-window-width drop
+ 600 set-window-height drop
+
+ exit-hook lambda: &lt;{ -- f }&gt;
+ save-state-file save-state drop
+ sounds each close-sound drop end-each
+ #t
+ ; add-hook!
+
+ window-property-changed-hook lambda: &lt;{ cmd -- }&gt;
+ $" remote command received: %S" #( cmd ) clm-message
#f
- then
-; 5 make-proc add-hook!
-
-\ from ~/.snd_prefs_forth
-with-buffers-menu
-with-reopen-menu
-0.00 0.10 #t prefs-activate-initial-bounds
-2 set-global-sync
-#f check-for-unsaved-edits
-3 remember-sound-state
-'xm provided? [if]
- add-mark-pane
- #t with-inset-graph
- #t show-smpte-label
-[then]
-save-mark-properties
-defined? use-combo-box-for-fft-size [if]
- #f to use-combo-box-for-fft-size
-[then]
+ ; add-hook!
-22050 set-default-output-srate drop
-2 set-default-output-chans drop
-mus-next set-default-output-header-type drop
-mus-lfloat set-default-output-data-format drop
-mus-interp-linear set-locsig-type drop
-512 set-dac-size drop
-mus-audio-default set-audio-output-device drop
-#t set-show-indices drop
-0.0 set-auto-update-interval drop
-#f set-trap-segfault drop
-$" rev" add-sound-file-extension drop
-$" reverb" add-sound-file-extension drop
-$" wave" add-sound-file-extension drop
-$" snd&gt; " set-listener-prompt drop
-speed-control-as-ratio set-speed-control-style drop
+ after-open-hook lambda: &lt;{ snd -- }&gt;
+ snd channels 0 ?do snd short-file-name snd i time-graph set-x-axis-label drop loop
+ #t snd set-with-tracking-cursor drop
+ channels-combined snd set-channel-style
+ ; add-hook!
+
+ : snd-set-cursor-style { snd kind -- #f }
+ snd sound? if kind snd #t set-cursor-style drop then
+ #f
+ ;
+ start-playing-hook lambda: &lt;{ snd -- f }&gt; snd cursor-line snd-set-cursor-style ; add-hook!
+ stop-playing-hook lambda: &lt;{ snd -- f }&gt; snd cursor-cross snd-set-cursor-style ; add-hook!
+
+ \ bind-key ( key modifiers func :optional extended=#f origin="" prefs-info="" -- val )
+ \
+ \ modifiers:
+ \ 0 normal
+ \ 1 shift
+ \ 4 control
+ \ 8 meta
+ \
+ \ extended (prefix key):
+ \ #t C-x
+ \ #f none
+ \
+ \ func ( -- val )
+ \
+ \ val should be:
+ \ cursor-in-view
+ \ cursor-on-left
+ \ cursor-on-right
+ \ cursor-in-middle
+ \ keyboard-no-action
+ \
+ \ C-x C-c terminate Snd
+ &lt;char&gt; c 4 lambda: &lt;{ -- val }&gt;
+ 0 snd-exit drop
+ cursor-in-view
+ ; #t $" terminate Snd" "terminate-snd" bind-key drop
+ \ C-x k close selected sound
+ &lt;char&gt; k 0 lambda: &lt;{ -- val }&gt;
+ selected-sound close-sound-extend
+ cursor-in-view
+ ; #t $" close sound and jump to next open" "close-current-sound" bind-key drop
+ \ C-x C-k show listener
+ &lt;char&gt; k 4 lambda: &lt;{ -- val }&gt;
+ #t set-show-listener drop
+ cursor-in-view
+ ; #t $" show listener" "show-listener" bind-key drop
+ \ C-x C-n hide listener
+ &lt;char&gt; n 4 lambda: &lt;{ -- val }&gt;
+ #f set-show-listener drop
+ cursor-in-view
+ ; #t $" hide listener" "hide-listener" bind-key drop
+ \ C-x C-x play
+ &lt;char&gt; x 4 lambda: &lt;{ -- val }&gt;
+ #t play drop
+ cursor-in-view
+ ; #t $" play current sound" "play-current-sound" bind-key drop
+ \ C-x C-t play from cursor
+ &lt;char&gt; t 4 lambda: &lt;{ -- val }&gt;
+ selected-sound :start undef undef undef cursor play drop
+ cursor-in-view
+ ; #t $" play from cursor" "play-from-cursor" bind-key drop
+ \ C-x x eval over selection
+ &lt;char&gt; x 0 lambda: &lt;{ -- val }&gt;
+ undef selection? if
+ $" selection-eval:" &lt;'&gt; eval-over-selection #f #f prompt-in-minibuffer
+ else
+ $" no selection" #f #f report-in-minibuffer
+ then drop
+ cursor-in-view
+ ; #t $" eval over selection" "eval-over-selection" bind-key drop
+[then] \ not snd-nogui
'snd-nogui provided? [unless]
- rainbow-colormap set-colormap drop
- #f set-show-listener drop
- #f set-show-controls drop
- #f set-just-sounds drop
- 1.0 set-enved-base drop
- #t set-enved-wave? drop
- #t set-show-y-zero drop
- #t set-verbose-cursor drop
- 0.96 0.96 0.86 make-color ( beige ) set-selected-graph-color drop
- 0.00 0.00 1.00 make-color ( blue ) set-selected-data-color drop
- #f set-with-gl drop
- graph-once set-transform-graph-type drop
- #t set-show-transform-peaks drop
- dolph-chebyshev-window set-fft-window drop
- fourier-transform set-transform-type drop
- \ lisp-graph-hook ' display-db 2 make-proc add-hook!
- \ lisp-graph-hook ' display-energy 2 make-proc add-hook!
- mix-click-hook ' mix-click-info 1 make-proc add-hook!
- mark-click-hook ' mark-click-info 1 make-proc add-hook!
- defined? show-disk-space [if]
- after-open-hook ' show-disk-space 1 make-proc add-hook!
- [then]
- #t set-show-listener drop
- #f set-show-controls drop
- 160 set-window-x drop
- 000 set-window-y drop
- 800 set-window-width drop
- 600 set-window-height drop
+ save-state-file file-exists? [if] require snd-saved [then]
[then]
-[ifundef] enved
- $" enved" '( 0.0 0.0 25.0 1.0 75.0 1.0 100.0 0.0 ) 1.0 define-envelope drop
- $" brass" '( 0.0 0.0 20.0 1.0 40.0 0.6 90.0 0.5 100.0 0.0 ) 1.0 define-envelope drop
- $" bassoon" '( 0.0 0.0 10.0 1.0 90.0 1.0 100.0 0.0 ) 1.0 define-envelope drop
- $" clarinet" '( 0.0 0.0 25.0 1.0 75.0 1.0 100.0 0.0 ) 32.0 define-envelope drop
- $" woodwind" '( 0.0 0.0 10.0 1.0 90.0 1.0 100.0 0.0 ) 0.32 define-envelope drop
+\ find-file searchs in *clm-search-list*
+sounds empty? [if]
+ *clm-file-name* find-file dup [if] open-sound [then] drop cr
[then]
-$" fth" textdomain drop
+$" Snd of %s (Fth %s)" #( snd-version fth-version ) clm-message
\ .snd_forth ends here
-</pre></td></tr></table>
+</pre>
+</td></tr></table>
<p>
If you loaded Snd with GSL, and have set the GSL_IEEE_MODE environment variable,
@@ -569,7 +745,7 @@ I may remove all this stuff eventually (it was always a bad idea).
<table border=2 bordercolor="#f2f4ff" cellpadding=6 hspace=10><tr><td>
<table cellspacing=0 cellpadding=0 hspace=20>
-<tr><th align=left bgcolor="beige">Resource Name</th><th width=10 bgcolor="beige"></th><th align=left bgcolor="beige">Default Value</th><th width=10 bgcolor="beige"></th><th align=left bgcolor="beige">Purpose</th><th width=10 bgcolor="beige"></th><th align=left bgcolor="beige">Scheme Name</th></tr>
+<tr><th align=left bgcolor="beige">Resource Name</th><th width=10 bgcolor="beige"></th><th align=left bgcolor="beige">Default Value</th><th width=10 bgcolor="beige"></th><th align=left bgcolor="beige"><center>Purpose</center></th><th width=10 bgcolor="beige"></th><th align=left bgcolor="beige">Scheme Name</th></tr>
<tr><td><br></td><td><br></td><td></td><td></td><td></td><td></td><td></td></tr>
@@ -702,12 +878,6 @@ I think other toolkits use helvetica where Motif defaults to a small fixed font
it looks like 7x13 on my machine.
</p>
-<p>If you have the xg module loaded into the Gtk+ version of Snd, you can load
-snd-gtk.scm, and call <a href="sndscm.html#makefontselectordialog">make-font-selector-dialog</a>
-or <a href="sndscm.html#makecolorselectordialog">make-color-selector-dialog</a> to
-goof around
-with the fonts and colors.
-</p>
<p>
The <A class=def NAME="xautoresize">autoResize</a> resource determines how Snd acts when files
@@ -843,11 +1013,9 @@ latter are (configure --help):
<tr><td colspan=2 bgcolor="#EEFDEE">Debugging etc</td><td></td><td></td></tr>
<tr><td></td><td>--with-snd-as-widget</td><td></td><td>make Snd a loadable widget, not a standalone program</td></tr>
-<tr><td></td><td>--with-snd-as-pd-external</td><td></td><td>make Snd a loadable pd external, not a standalone program</td></tr>
<tr><td></td><td>--with-profiling</td><td></td><td>include profiling (branch counting) machinery, default: no (only for s7)</td></tr>
<tr><td></td><td>--enable-snd-debug</td><td></td><td>include internal Snd debugging functions, default: no (not useful if not actually debugging!) </td></tr>
<tr><td></td><td>--disable-largefile</td><td></td><td>omit support for large (64-bit byte address) files</td></tr>
-<tr><td></td><td>--disable-nls</td><td></td><td>do not use Native Language Support</td></tr>
<tr><td colspan=2></td><td></td><td></td></tr>
</table>
@@ -857,9 +1025,8 @@ latter are (configure --help):
make install
</pre>
<p>tries to use s7, Motif, ALSA (if Linux), and a float sample representation, then
-installs the snd executable in /usr/local/bin, a brief blurb
-in /usr/local/man/man1, and the German translations in whatever directory the translation files are sent to (this is part of
-the NLS business in Gnu).
+installs the snd executable in /usr/local/bin, with a brief blurb
+in /usr/local/man/man1.
Here at CCRMA, we normally use:
</p>
<pre>
@@ -2109,7 +2276,7 @@ and guile's new leader was a disaster. Guile became comatose, and the
guile forums became (in my view) ever more hostile. I tried to
escape to Gauche, but then that project chose to go toward a compiler,
and abandoned embedded language support. I reached a point where
-guile was severely hampering my work. I wanted solid multithreading
+guile was getting in my way. I wanted solid multithreading
(for with-sound in CLM primarily), and guile's was a morass of
bugs. Since guile code was famously unreadable, it was impossible
to find these bugs in any reasonable time. I also wanted multiprecision
@@ -2327,7 +2494,7 @@ data directly to the DAC:
(<a class=quiet href="extsnd.html#musaudioclose" onmouseout="UnTip()" onmouseover="Tip(extsnd_musaudioclose_tip)">mus-audio-close</a> audio-port)
(ladspa-cleanup descriptor handle)))))
</pre></td></tr></table>
-<p>For a Ladspa GUI builder, see <a href="sndscm.html#ladspadoc">ladspa.scm</a>.
+<p>
One slight "gotcha"
in this area: the Snd configuration switch --with-doubles causes "vcts" to
be arrays of doubles, but Ladspa plugins expect to see arrays of floats.
diff --git a/gtk-popup.scm b/gtk-popup.scm
index 7541f37..d0c3a9b 100644
--- a/gtk-popup.scm
+++ b/gtk-popup.scm
@@ -512,9 +512,10 @@
(set! fft-popup-menu fft-popup-menu-1)
(add-hook! gtk-popup-hook
(lambda (widget event data snd chn)
- (let* ((e (GDK_EVENT_BUTTON event))
- (x (.x e))
- (y (.y e))
+ (let* ((e (GDK_EVENT event))
+ (coords (gdk_event_get_coords e))
+ (x (cadr coords))
+ (y (caddr coords))
(menu graph-popup-menu))
(if snd
(begin
@@ -598,159 +599,7 @@
(with-marks next-mark-popup-menu)
(with-marks last-mark-popup-menu))))))
(gtk_widget_show menu)
- (gtk_menu_popup (GTK_MENU menu) #f #f #f #f (.button e) (.time e))
+ (let ((time (gdk_event_get_time e)))
+ (gtk_menu_popup (GTK_MENU menu) #f #f #f #f 2 time))
#t)
#f))))))
-
-
-;;; -------- edit history popup
-
-(define edhist-funcs '())
-(define edhist-widgets '())
-(define edhist-channel-widgets '())
-(define edhist-snd #f)
-(define edhist-chn #f)
-(define edhist-time 0)
-
-(define (edhist-clear-edits)
- (set! edhist-funcs '())
- #f)
-
-(define (edhist-save-edits)
- (let* ((old-val (assoc (cons edhist-snd edhist-chn) edhist-funcs))
- (cur-edits (edits edhist-snd edhist-chn))
- (new-func (edit-list->function edhist-snd edhist-chn (+ 1 (car cur-edits)) (apply + cur-edits))))
- (if old-val
- (set-cdr! old-val new-func)
- ;; perhaps this should save the previous function under the current file name?
- (set! edhist-funcs (cons (cons (cons edhist-snd edhist-chn) new-func) edhist-funcs)))
- #f))
-
-(define (edhist-reapply-edits)
- (let* ((old-val (assoc (cons edhist-snd edhist-chn) edhist-funcs)))
- (if old-val ((cdr old-val) edhist-snd edhist-chn))))
-
-(define (edhist-apply-edits)
- ;; the current popdown widgets are in edhist-widgets, current funcs are in edhist-funcs
- ;; edhist-apply (for new widgets) is car of edhist-widgets
-
- (define (edhist-apply w d)
- (let ((index (cadr (g_object_get_data (G_OBJECT w) "popup-index"))))
- (if (and (> index 0)
- (<= index (length edhist-funcs)))
- ((cdr (list-ref edhist-funcs (- index 1))) edhist-snd edhist-chn))))
-
- (let ((wids (cdr edhist-widgets))
- (funcs edhist-funcs)
- (parent (car edhist-widgets))
- (index 1))
- (if (not (null? funcs))
- (for-each
- (lambda (func)
- (let* ((label (car func))
- (button (if (not (null? wids))
- (let ((wid (car wids)))
- (set! wids (cdr wids))
- wid)
- (let ((wid (gtk_menu_item_new_with_label "label")))
- (gtk_menu_shell_append (GTK_MENU_SHELL parent) wid)
- (set! edhist-widgets (append edhist-widgets (list wid)))
- (g_signal_connect wid "activate" edhist-apply)
- wid))))
- (if (pair? label)
- (change-label button (format #f "~A[~A]" (short-file-name (car label)) (cdr label)))
- (change-label button label))
- (g_object_set_data (G_OBJECT button) "popup-index" (GPOINTER index))
- (gtk_widget_show button)
- (set! index (+ 1 index))))
- edhist-funcs))
- (if (not (null? wids))
- (for-each
- (lambda (w)
- (gtk_widget_hide w))
- wids))
- (gtk_menu_popup (GTK_MENU parent) #f #f #f #f 3 edhist-time)
- #f))
-
-(define (edhist-help-edits)
- (help-dialog "Edit History Functions"
- "This popup menu gives access to the edit-list function handlers in Snd. \
-At any time you can backup in the edit list, 'save' the current trailing edits, make some \
-new set of edits, then 'reapply' the saved edits. The 'apply' choice gives access to all \
-currently saved edit lists -- any such list can be applied to any channel. 'Clear' deletes \
-all saved edit lists."
- (list "{edit lists}" "{edit-list->function}")
- (list "extsnd.html#editlists" "extsnd.html#editlist_to_function")
- ))
-
-(define edhist-save-menu #f)
-(define edhist-apply-menu #f)
-(define edhist-reapply-menu #f)
-(define edhist-clear-menu #f)
-
-;(gc) -- trouble here?
-(define edit-history-menu
- (let ((every-menu (lambda (w) #f)))
- (make-popup-menu
- (lambda (w) #f)
- (list
- (list "Edits" #f)
- (list #f #f)
- (list "Save"
- (lambda (w) (set! edhist-save-menu w))
- (lambda (w d) (edhist-save-edits)))
- (list "Reapply"
- (lambda (w) (set! edhist-reapply-menu w))
- (lambda (w d) (edhist-reapply-edits)))
- (list "Apply"
- (lambda (w)
- (set! edhist-apply-menu w)
- (let* ((top-cascade (gtk_menu_new)))
- (gtk_menu_item_set_submenu (GTK_MENU_ITEM w) top-cascade)
- (set! edhist-widgets (list top-cascade))))
- (lambda (w d) (edhist-apply-edits)))
- (list "Clear"
- (lambda (w) (set! edhist-clear-menu w))
- (lambda (w d) (edhist-clear-edits)))
- (list "Help" #f
- (lambda (w d) (edhist-help-edits)))))))
-
-(define (add-edhist-popup snd)
- (let ((chns (channels snd)))
- (do ((i 0 (+ 1 i)))
- ((= i chns))
- (let ((edhist (list-ref (channel-widgets snd i) 7)))
- (if (not (member edhist edhist-channel-widgets))
- (begin
- (set! edhist-channel-widgets (cons edhist edhist-channel-widgets))
- (g_signal_connect edhist "button_press_event"
- (lambda (w e d)
- (let ((button (.button (GDK_EVENT_BUTTON e))))
- (if (= button 3)
- (begin
- (set! edhist-snd snd)
- (set! edhist-chn i)
- (gtk_widget_set_sensitive edhist-clear-menu (not (null? edhist-funcs)))
- (gtk_widget_set_sensitive edhist-save-menu (> (apply + (edits snd i)) 0))
- (gtk_widget_set_sensitive edhist-apply-menu (not (null? edhist-funcs)))
- (gtk_widget_set_sensitive edhist-reapply-menu (not (eq? #f (assoc (cons snd i) edhist-funcs))))
- (gtk_widget_show edit-history-menu)
- (set! edhist-time (.time (GDK_EVENT_BUTTON e)))
- (gtk_menu_popup (GTK_MENU edit-history-menu) #f #f #f #f (.button (GDK_EVENT_BUTTON e)) (.time (GDK_EVENT_BUTTON e)))
- #t) ; don't select anything in the list (i.e. don't pass event to widget)
- #f)))
- #f)
- ))))))
-
-(add-hook! after-open-hook add-edhist-popup)
-(add-hook! close-hook (lambda (snd)
- (let ((chns (channels snd))
- (name (short-file-name snd)))
- (do ((i 0 (+ 1 i)))
- ((= i chns))
- (let* ((old-val (assoc (cons snd i) edhist-funcs)))
- (if old-val
- (set-car! old-val (format #f "~A[~A]" name i))))))))
-(for-each add-edhist-popup (sounds))
-
-
diff --git a/gui.scm b/gui.scm
deleted file mode 100644
index 7c73f0e..0000000
--- a/gui.scm
+++ /dev/null
@@ -1,1892 +0,0 @@
-
-;;; Functions to help making various gui-things more convenient and without
-;;; worrying about whether we use gtk or motif. (see ladspa.scm and snd_conffile.scm for examples of use)
-;;; -Kjetil S. Matheussen.
-
-(if (provided? 'snd-gui.scm)
- (begin
- (display "Very warning: gui.scm has already been loaded. (This is not good.)")
- (newline)))
-
-
-(provide 'snd-gui.scm)
-
-(use-modules (ice-9 optargs)
- (ice-9 format)
- (srfi srfi-1)
- (srfi srfi-13))
-
-
-;;(use-modules (oop goops))
-
-
-(define-macro (c-load-from-path filename)
- `(if (not (provided? (symbol-append 'snd- ',filename '.scm)))
- (load-from-path (symbol->string (symbol-append ',filename '.scm)))))
-
-
-
-
-;;##############################################################
-;; Load files
-;;##############################################################
-
-(c-load-from-path eval-c)
-
-
-
-
-;;##############################################################
-;; Various functions
-;;##############################################################
-
-(define use-gtk (if (provided? 'snd-gtk)
- #t
- #f))
-
-
-(if (not use-gtk)
- (begin
- (display "Warning, gui.scm might not work very well with Motif anymore.")(newline)
- (display "You should compile up Snd using the --with-gtk and --with-static-xm configure options.")(newline)))
-
-
-(if use-gtk
- (if (not (provided? 'xg))
- (let ((hxm (dlopen "xg.so")))
- (if (string? hxm)
- (snd-error (format #f "gui.scm needs the xg module: ~A" hxm))
- (dlinit hxm "Init_libxg"))))
- (if (not (provided? 'xm))
- (let ((hxm (dlopen "xm.so")))
- (if (string? hxm)
- (snd-error (format #f "gui.scm needs the xm module: ~A" hxm))
- (dlinit hxm "Init_libxm")))))
-
-
-
-
-
-
-
-(define (c-integer somekindofnumberorsomething)
-;; somekindofnumberorsomething)
- (inexact->exact (floor somekindofnumberorsomething)))
-
-(define (c-integer2 somekindofnumberorsomething)
- (inexact->exact (floor somekindofnumberorsomething)))
-
-(define (c-editor-widget snd)
- (list-ref (channel-widgets snd 0) 0))
-
-
-(define (c-selected-sound)
- (cond ((selected-sound) (selected-sound))
- ((not (null? (sounds)))
- (set! (selected-sound) (car (sounds)))
- (selected-sound))
- (else
- #f)))
-
-
-;; Copied from gtk-popup.scm
-(define* (c-g_signal_connect obj name func #:optional data)
- (g_signal_connect_closure_by_id (GPOINTER obj)
- (g_signal_lookup name (G_OBJECT_TYPE (GTK_OBJECT obj)))
- 0
- (g_cclosure_new func data #f)
- #f))
-
-
-
-
-(define-c <float> (c-scale ((<float> x)
- (<float> x1)
- (<float> x2)
- (<float> y1)
- (<float> y2))
- (return (+ y1
- (/ (* (- x x1)
- (- y2 y1))
- (- x2 x1))))))
-
-(define (c-sync? snd)
- (> (sync snd) 0))
-
-
-
-(define (for-each-line-in-file filename func)
- (let* ((fd (open-file filename "r"))
- (line (read-line fd)))
- (while (not (eof-object? line))
- (func line)
- (set! line (read-line fd)))))
-
-(define (c-for-each-channel2 snd func)
- (c-for 0 < (chans snd) 1 func))
-
-(define (c-for-each-channel snd func)
- (if (c-sync? snd)
- (let ((oh-yes #f))
- (for-each (lambda (gakk)
- (if (= (car gakk) snd)
- (begin
- (set! oh-yes #t)
- (func (cadr gakk)))))
- (selection-members))
- (if (not oh-yes)
- (c-for-each-channel2 snd func)))
- (func (selected-channel snd))))
-
-(define (c-get-channel snd y)
- (define (get-channel ch)
- (if (>= ch (chans snd))
- #f
- (let ((axinfo (axis-info snd ch)))
- (if (and (>= y (list-ref axinfo 13))
- (< y (list-ref axinfo 11)))
- ch
- (get-channel (1+ ch))))))
- (get-channel 0))
-
-
-(define (c-get-bounds snd ch func)
- (let ((axinfo (axis-info snd ch)))
- (func (list-ref axinfo 10)
- (list-ref axinfo 13)
- (list-ref axinfo 12)
- (list-ref axinfo 11))))
-
-(define (c-get-mouse-info2 snd x y mustcall func)
- (let ((ch (if (number? mustcall) mustcall (c-get-channel snd y))))
- (if (and mustcall
- (not ch))
- (set! ch 0))
- (if ch
- (let* ((axinfo (axis-info snd ch)))
- (if (or mustcall
- (and (>= x (list-ref axinfo 10))
- (< x (list-ref axinfo 12))))
- (func ch
- (c-scale (* (srate snd) (position->x x snd ch)) (list-ref axinfo 0) (list-ref axinfo 1) 0 1)
- (c-scale (position->y y snd ch) 1 -1 0 1)))))))
-
-
-(define (c-get-mouse-info snd x y mustcall func)
- (let ((axinfo (axis-info snd 0))
- (ch 0)
- (xmax 0)
- (ymax 0)
- (newx 0)
- (newy 0))
- (define (set-channel!)
- (if (>= ch (chans snd))
- #f
- (begin
- (set! axinfo (axis-info snd ch))
- (if (and (>= y (list-ref axinfo 13))
- (< y (list-ref axinfo 11)))
- #t
- (begin
- (set! ch (1+ ch))
- (set-channel!))))))
- (let ((legalchannel (set-channel!)))
- (if (or mustcall
- (and legalchannel
- (>= x (list-ref axinfo 10))
- (< x (list-ref axinfo 12))))
- (begin
- (set! ch (min (- (chans snd) 1) ch))
- (set! axinfo (axis-info snd ch))
- (set! xmax (- (list-ref axinfo 12) (list-ref axinfo 10)))
- (set! ymax (- (list-ref axinfo 11) (list-ref axinfo 13)))
- (set! newx (min xmax (max 0 (- x (list-ref axinfo 10)))))
- (set! newy (min ymax (max 0 (- y (list-ref axinfo 13)))))
- (func ch x newy))))))
-
-;; Taken from new-effects.scm
-(define yellow-pixel
- (let ((pix #f))
- (lambda ()
- (if (not pix)
- (let* ((shell (cadr (main-widgets)))
- (dpy (XtDisplay shell))
- (scr (DefaultScreen dpy))
- (cmap (DefaultColormap dpy scr))
- (col (XColor)))
- (if (= (XAllocNamedColor dpy cmap "yellow" col col) 0)
- (snd-error "can't allocate yellow!")
- (set! pix (.pixel col)))))
- pix)))
-
-
-(define (c-report das-text)
- (let ((text (if (string=? " " das-text)
- (string-append "snd: "
- (apply string-append (map (lambda (snd) (string-append (short-file-name snd) ", "))
- (reverse (cdr (sounds)))))
- (short-file-name (car (sounds))))
- das-text)))
- (if use-gtk
- (gtk_window_set_title (GTK_WINDOW (cadr (main-widgets))) text)
- (if (defined? 'change-window-property)
- (change-window-property "SND_VERSION" "WM_NAME" text)
- (set! (window-property "SND_VERSION" "WM_NAME") text)))))
-
-
-;; Set cursor-style. Copied from the manual.
-(define (c-set-sound-cursor snd shape)
- (do ((j 0 (1+ j)))
- ((= j (channels snd)) #f)
- (set! (tracking-cursor-style snd j) shape)
- (set! (cursor-style snd j) shape)))
-
-
-(define (c-scale-do x x1 x2 y1 y2)
- (+ y1
- (/ (* (- x x1)
- (- y2 y1))
- (- x2 x1))))
-
-(define (c-scale-do2 x y1 y2)
- (+ y1 (* x (- y2 y1))))
-
-(define (c-scale-do3 x x1 x2)
- (/ (- x x1)
- (- x2 x1)))
-
-(define-macro (c-scale2 x x1 x2 y1 y2)
- (if (and (number? x1) (number? x2) (= 0 x1) (= 1 x2))
- `(c-scale-do2 ,x ,y1 ,y2)
- (if (and (number? y1) (number? y2) (= 0 y1) (= 1 y2))
- `(c-scale-do3 ,x ,x1 ,x2)
- `(c-scale-do ,x ,x1 ,x2 ,y1 ,y2))))
-
-(define (insert! list pos element)
- (if (= 0 pos)
- (cons element list)
- (let ((f (drop list (- pos 1))))
- (set-cdr! f (cons element (cdr f)))
- list)))
-
-(define (sublist l start end)
- (take (drop l start) (- end start)))
-
-;;(sublist '(0 1 2 3 4 5 6 7 8 9) 2 5)
-
-;; A desperate way to minimize consing. (Guile is definitely not a realtime friendly language...)
-
-(c-for 0 < 50 1
- (lambda (n)
- (define-toplevel (string->symbol (format #f "c-arg~A" n)) 0)))
-
-
-(define-macro (lambda-non-cons args . body)
- (let ((lets '())
- (sets '()))
- (c-for-each (lambda (n val)
- (set! lets (cons (list val #f) lets))
- (set! sets (cons (list 'set!
- val
- (string->symbol (format #f "c-arg~A" n)))
- sets)))
- args)
- `(let (,@lets)
- (lambda ()
- ,@sets
- ,@body))))
-
-
-(define-macro (call-non-cons func . args)
- (let ((sets '()))
- (c-for-each (lambda (n val)
- (set! sets (cons (list 'set!
- (string->symbol (format #f "c-arg~A" n))
- val)
- sets)))
- args)
- `(begin
- ,@(reverse sets)
- (,func))))
-
-
-
-(define-macro (add-call-hook! funcname func)
- `(define ,funcname
- (let ((func-old ,funcname))
- (lambda args
- (apply ,func args)
- (apply func-old args)))))
-
-(define-macro (add-called-hook! funcname func)
- `(define ,funcname
- (let ((func-old ,funcname))
- (lambda args
- (apply func-old args)
- (apply ,func args)))))
-
-
-
-(define c-gc-isoff #f)
-
-;; The following functions ensure that gc-off is not called more times than gc-on.
-;; It takes an optional argument which is the number of milliseconds before turning
-;; the garbage collector on again, no matter what. Set this arguement to #f to avoid
-;; automaticly turning the garbage collector on. But that is dangerous.
-;;(define* (c-gc-off #:optional (timeout 2000))
-(define* (c-gc-off #:optional (timeout 2000))
- (if (not c-gc-isoff)
- (begin
- (gc-off)
- (set! c-gc-isoff #t)
- (if timeout
- (in timeout
- (lambda ()
- (c-gc-on)))))))
-
-
-;; Ouch, might actually freeze the machine if using jack. Better turn the function off.
-;; (re-mlocking all memory in audio.c without using MCL_FUTURE seems to fix the freezing problem)
-;(define (c-gc-off)
-; #t)
-
-(define (c-gc-on)
- (if c-gc-isoff
- (begin
- (gc-on)
- (set! c-gc-isoff #f))))
-
-
-
-
-
-
-
-;;##############################################################
-;; Mouse stuff. All c-code mouse handling in snd is disabled,
-;; and replaced with scheme-code. Selection handling is
-;; handled in snd_conffile.scm.
-;;##############################################################
-
-
-(define mouse-button-press-hook (<hook>))
-(define mouse-doubleclick-hook (<hook>))
-(define mouse-move-hook (<hook>))
-(define mouse-drag2-hook (<hook>))
-(define mouse-button-release-hook (<hook>))
-(define mouse-scroll-hook (<hook>))
-(define selection-changed2-hook (<hook>))
-
-
-(if (not use-gtk)
- (c-display "c-remove-handler not implemented for motif")
- (eval-c (string-append (string #\`) "pkg-config --cflags gtk+-2.0" (string #\`))
- "#include <gtk/gtk.h>"
-
- (public
- (<void> c-remove-handler (lambda ((<gpointer> g)
- (<char-*> handlername))
- (g_signal_handler_disconnect g (g_signal_handler_find g
- G_SIGNAL_MATCH_ID
- (g_signal_lookup handlername (G_OBJECT_TYPE g))
- 0 0 0 0))))
-
- (<void> c-draw-string (lambda ((<GtkWidget-*> widget) (<GdkGC-*> gc) (<int> x) (<int> y) (<char-*> text))
- (let* ((font <GdkFont*> (gtk_style_get_font widget->style)))
- (gdk_draw_string widget->window font gc x y text)))))))
-
-
-
-
-;; Remove all gtk mousehandlers for a widget.
-(define (c-remove-mousehandlers w)
- (c-remove-handler w "motion_notify_event")
- (c-remove-handler w "button_press_event")
- (c-remove-handler w "button_release_event")
- (c-remove-handler w "scroll_event"))
-
-
-(add-hook! after-open-hook
- (lambda (snd)
- (let ((w (c-editor-widget snd)))
- (if (not use-gtk)
- (begin
- (XtAddEventHandler w ButtonPressMask #f
- (lambda (w c e f)
- (-> mouse-button-press-hook run
- snd (.x e) (.y e) (.state e))))
- (XtAddEventHandler w ButtonMotionMask #f
- (lambda (w c e f)
- (-> mouse-drag2-hook run
- snd (.x e) (.y e) (.state e))))
- (XtAddEventHandler w ButtonReleaseMask #f
- (lambda (w c e f)
- (-> mouse-button-release-hook run
- snd (.x e) (.y e) 1 (.state e)))))
- (let ((ispressed #f)
- (ismoved #f))
-
- (c-remove-mousehandlers w)
-
- (c-g_signal_connect w "button_press_event"
- (lambda (w e i)
- (focus-widget w)
- (set! ispressed #t)
- (set! ismoved #f)
- (let ((did-doubleclick? 'nope)
- (did-singleclick? 'nope))
- (if (= (.type (GDK_EVENT_BUTTON e)) GDK_2BUTTON_PRESS)
- (set! did-doubleclick? (-> mouse-doubleclick-hook run
- snd
- (.x (GDK_EVENT_BUTTON e))
- (.y (GDK_EVENT_BUTTON e))
- (.state (GDK_EVENT_BUTTON e)))))
- (if (not (eq? 'stop! did-doubleclick?))
- (set! did-singleclick? (-> mouse-button-press-hook run
- snd (.x (GDK_EVENT_BUTTON e)) (.y (GDK_EVENT_BUTTON e))
- (.button (GDK_EVENT_BUTTON e)) (.state (GDK_EVENT_BUTTON e)))))
-
- (if (and (not (eq? 'stop! did-doubleclick?))
- (not (eq? 'stop! did-singleclick?))
- (= (.button (GDK_EVENT_BUTTON e)) 3))
- (run-hook gtk-popup-hook w e i snd 0)))))
- (c-g_signal_connect w "motion_notify_event"
- (lambda (w e i)
- (set! ismoved #t)
- ;;(c-display snd (.x (GDK_EVENT_BUTTON e)) (.y (GDK_EVENT_BUTTON e)) (.button (GDK_EVENT_BUTTON e)) (.state (GDK_EVENT_BUTTON e)))
- (let ((args (if (.is_hint (GDK_EVENT_MOTION e))
- (let ((s (cdr (gdk_window_get_pointer (.window e)))))
- (list snd (car s) (cadr s) (.button (GDK_EVENT_BUTTON e)) (caddr s)))
- (list snd (.x (GDK_EVENT_BUTTON e)) (.y (GDK_EVENT_BUTTON e))
- (.button (GDK_EVENT_BUTTON e)) (.state (GDK_EVENT_BUTTON e))))))
- (if (and (not (eq? 'stop! (apply (<- mouse-move-hook run) args)))
- ispressed)
- (apply (<- mouse-drag2-hook run) args)))))
- (c-g_signal_connect w "button_release_event"
- (lambda (w e i)
- (set! ispressed #f)
- (-> mouse-button-release-hook run
- snd (.x (GDK_EVENT_BUTTON e)) (.y (GDK_EVENT_BUTTON e)) (.button (GDK_EVENT_BUTTON e)) (.state (GDK_EVENT_BUTTON e)))))
- (c-g_signal_connect w "scroll_event"
- (lambda (w e i)
- (set! ispressed #f)
- (-> mouse-scroll-hook run
- snd (.direction (GDK_EVENT_SCROLL e)) (.x (GDK_EVENT_SCROLL e)) (.y (GDK_EVENT_SCROLL e)) (.state (GDK_EVENT_SCROLL e)))
- ))
- )))))
-
-
-(define (c-rightbutton? button)
- (= 3 button))
-
-(define (c-leftbutton? button)
- (= 1 button))
-
-(define (c-ctrl? stat)
- (= (logand stat 4) 4))
-
-(define (c-shift? stat)
- (= (logand stat 1) 1))
-
-(define (c-altGr? stat)
- (= (logand stat 8192) 8192))
-
-;; Common way to treat mouse
-(def-class (<mouse-cycle> clickfunc movefunc releasefunc #:key (scaled #f) (add-type 'add!))
-
- (define (press-hook snd pix-x pix-y button stat)
- (let ((isdragged #f)
- (mousefunc (if scaled c-get-mouse-info2 c-get-mouse-info)))
- (mousefunc snd pix-x pix-y #t
- (lambda (ch x y)
- (let ((res (clickfunc snd ch x y button stat)))
- (if (or (eq? 'stop! res)
- (eq? 'allways-stop! res))
- (begin
- (-> mouse-move-hook only!
- (lambda (snd pix-x pix-y button stat)
- (set! isdragged #t)
- (mousefunc snd pix-x pix-y ch
- (lambda (dasch x y)
- (movefunc snd ch x y button stat)))))
- (-> mouse-button-release-hook only!
- (lambda (snd pix-x pix-y button stat)
- (-> mouse-move-hook not-only!)
- (-> mouse-button-release-hook not-only!)
- (mousefunc snd pix-x pix-y ch
- (lambda (dasch x y)
- (if (and (eq? 'allways-stop! res) (not isdragged))
- (begin
- ;; Small hack needed to get the mouse-click-hook to run.
- (focus-widget (c-editor-widget snd))
- (select-channel ch)
- (run-hook mouse-click-hook
- snd ch button stat pix-x pix-y time-graph))
- (if (= 7 (car (procedure-property releasefunc 'arity)))
- (releasefunc snd ch x y button stat isdragged)
- (releasefunc snd ch x y button stat)))))))
- 'stop!)))))))
-
- (def-method (delete!)
- (-> mouse-button-press-hook remove! press-hook))
-
- (mouse-button-press-hook add-type press-hook)
-
- )
-
-
-
-;; Allways select current channel
-(-> mouse-button-press-hook add-system!
- (lambda (snd x y button stat)
- (let ((ch (c-get-channel snd y)))
- (if ch
- (select-channel ch)))))
-
-
-;; Run the mouse-click-hook
-(let ((isdragged #f))
- (-> mouse-button-press-hook add!
- (lambda (snd x y button stat)
- (set! isdragged #f)))
- (-> mouse-drag2-hook add!
- (lambda (snd x y button stat)
- (set! isdragged #t)))
- (-> mouse-scroll-hook add!
- (lambda (snd direction orgx y stat)
- (c-get-mouse-info snd orgx y #t
- (lambda (ch x y)
- (focus-widget (c-editor-widget snd))
- (run-hook mouse-click-hook
- snd ch (+ direction 4) stat orgx y time-graph)))))
- (-> mouse-button-release-hook add!
- (lambda (snd orgx y button stat)
- (if (not isdragged)
- (c-get-mouse-info snd orgx y #t
- (lambda (ch x y)
- (focus-widget (c-editor-widget snd))
- (select-channel ch)
- (run-hook mouse-click-hook
- snd ch button stat orgx y time-graph)))))))
-
-
-;; Moving marks with the mouse
-(let ((currmark #f))
- (<mouse-cycle> (lambda (snd ch x y button stat)
- (let ((pointpos (max 0 (c-integer (* (srate snd) (position->x x snd ch)))))
- (pointrange (- (* (srate snd) (position->x 15 snd ch))
- (* (srate snd) (position->x 0 snd ch)))))
- (if (and (> y 7)
- (< y 15))
- (call-with-current-continuation
- (lambda (return)
- (for-each
- (lambda (mark)
- (if (< (abs (- (mark-sample mark) pointpos)) pointrange)
- (begin
- (set! currmark mark)
- (return 'stop!))))
- (list-ref (list-ref (marks) snd) ch)))))))
-
- (lambda (snd ch x y button stat)
- (let ((pointpos (max 0 (c-integer (* (srate snd) (position->x x snd ch))))))
- (if (> (mark-sync currmark) 0)
- (move-syncd-marks (mark-sync currmark)
- (- pointpos (mark-sample currmark)))
- (set! (mark-sample currmark) pointpos))))
-
- (lambda (snd ch x y button stat)
- (let ((pointpos (max 0 (c-integer (* (srate snd) (position->x x snd ch))))))
- (if (> (mark-sync currmark) 0)
- (move-syncd-marks (mark-sync currmark)
- (- pointpos (mark-sample currmark)))
- (set! (mark-sample currmark) pointpos))))
-
- #:add-type 'add-system!
- ))
-
-
-
-
-;; Moving mixes with the mouse
-(let ((currmixes #f)
- (offset 0))
-
- (<mouse-cycle> (lambda (snd ch x y button stat)
- (let ((pointpos (max 0 (c-integer (* (srate snd) (position->x x snd ch)))))
- (pointrange (- (* (srate snd) (position->x (mix-tag-width) snd ch))
- (* (srate snd) (position->x 0 snd ch)))))
- (call-with-current-continuation
- (lambda (return)
- (c-for-each
- (lambda (n mix)
- (if (< (abs (- (mix-position mix) pointpos)) pointrange)
- (let ((ypos (if (> (mix-tag-y mix) 0)
- (mix-tag-y mix)
- (- (* (mix-tag-height) n) 5))))
- (if (and (>= y ypos)
- (<= y (+ ypos (+ (mix-tag-height) 3))))
- (begin
- (set! offset (- (mix-position mix) pointpos))
- (set! currmixes '())
- (if (c-sync? snd)
- (for-each (lambda (dasmix)
- (if (= (mix-position mix) (mix-position dasmix))
- (set! currmixes (cons dasmix currmixes))))
- (apply append (mixes snd)))
- (set! currmixes (list mix)))
- (return 'stop!))))))
- (mixes snd ch))))))
-
- (lambda (snd ch x y button stat)
- (let ((pointpos (max 0 (c-integer (* (srate snd) (position->x x snd ch))))))
- ;;(set! (mix-position currmix) (+ offset pointpos))
- (draw-line x 0 x (list-ref (axis-info snd ch) 11))))
-
- (lambda (snd ch x y button stat)
- (let ((pointpos (max 0 (c-integer (* (srate snd) (position->x x snd ch))))))
- (for-each (lambda (mix)
- (set! (mix-position mix) (+ offset pointpos)))
- currmixes)
- (set! currmixes #f)))
-
- #:add-type 'add-system!
- ))
-
-
-
-
-;; To avoid irritating non-smoothness, we turn off the garbage collector for 2 seconds. (Does not seem to be necessary for guile 1.7 and newer)
-(if (not (c-atleast1.7?))
- (-> mouse-button-press-hook add-system!
- (lambda (snd orgx orgy button stat)
- (c-gc-off))))
-
-
-
-
-
-
-
-;;##############################################################
-;; Double buffer
-;;##############################################################
-
-(def-class (<doublebuffer> parent)
-
- (def-var pixmap #f)
- (def-var drawable #f)
-
- (define width 0)
- (define height 0)
-
- (define (make-pixmap!)
- (set! width (car (widget-size parent)))
- (set! height (cadr (widget-size parent)))
- (set! pixmap (gdk_pixmap_new (.window parent) width height -1))
- (set! drawable (GDK_DRAWABLE pixmap)))
-
- (def-method (pixmap->parent)
- (gdk_draw_drawable (GDK_DRAWABLE (.window parent))
- (.black_gc (.style parent))
- drawable
- 0 0
- 0 0
- width height))
-
- (def-method (parent->pixmap)
- (gdk_draw_drawable drawable
- (.black_gc (.style parent))
- (GDK_DRAWABLE (.window parent))
- 0 0
- 0 0
- width height))
-
- (make-pixmap!)
- (this->parent->pixmap)
-
- (c-g_signal_connect parent "expose_event"
- (lambda (w e d)
- (c-display "ai2")
- (this->parent->pixmap)))
-
-)
-
-
-
-;;##############################################################
-;; Paint (not usable yet)
-;;##############################################################
-
-(def-class (<paint> parent width height)
-
- (define pixmap #f)
- (define colors '())
- (define gc #f)
- (define font #f)
-
- (define xmin width)
- (define ymin height)
- (define xmax 0)
- (define ymax 0)
-
- (define (update-minmax x1 y1 x2 y2)
- (set! xmin (min xmin x1 x2))
- (set! ymin (min ymin y1 y2))
- (set! xmax (max xmax x1 x2))
- (set! ymax (max ymax y1 y2)))
-
- (define (reset-minmax)
- (set! xmin width)
- (set! ymin height)
- (set! xmax 0)
- (set! ymax 0))
-
- (def-method (line color x1 y1 x2 y2)
- (update-minmax x1 y1 x2 y2)
- (gdk_draw_line pixmap color x1 y1 (- x2 x1 -1) (- y2 y1 -1)))
-
- (define (update-do x1 y1 x2 y2)
- (gdk_draw_pixmap (.window parent)
- gc
- pixmap
- x1 y1
- x1 y1
- (- x2 x1 -1) (- y2 y1 -1)))
-
- (def-method (update)
- (if (and (>= xmax xmin)
- (>= ymax ymin))
- (update-do xmin ymix xmax ymax))
- (reset-minmax))
-
- (def-method (update-all)
- (reset-minmax)
- (update-do 0 0 width height))
-
- (set! pixmap (gdk_pixmap_new (.window parent)
- width
- height
- -1))
-
- (gtk_signal_connect (GTK_OBJECT parent) "expose_event"
- (lambda (w e)
- (this->update-all))
- #f)
-
- )
-
-
-
-
-;;##############################################################
-;; Pool (this class is pointless, right?)
-;; The point is to avoid garbage collection, but just
-;; calling a function does consing of its arguments, or?
-;;##############################################################
-
-(def-class (<pool>)
- (define all 0)
- (define pool '())
- (define (get)
- (set! all (+ all 8))
- (if (or #t (null? pool))
- (cons #f #f)
- (let ((ret pool))
- (set! pool (cdr pool))
- ret)))
- (define (put cell)
- (if #t
- (c-free cell)
- (begin
- (set-cdr! cell pool)
- (set! pool cell))))
- (def-method (cons a b)
- (let ((cell (get)))
- (set-car! cell a)
- (set-cdr! cell b)
- cell))
- (def-method (list . rest)
- (if (null? rest)
- rest
- (this->cons (car rest) (apply this->list (cdr rest)))))
- (def-method (list-copy daslist)
- (apply this->list daslist))
- (def-method (map func daslist)
- (let* ((ret '(0))
- (tail ret))
- (for-each (lambda (el)
- (let ((new (this->cons (func el) '())))
- (set-cdr! tail new)
- (set! tail new)))
- daslist)
- (cdr ret)))
- (def-method (insert! list pos element)
- (if (= 0 pos)
- (this->cons element list)
- (let ((f (drop list (- pos 1))))
- (set-cdr! f (this->cons element (cdr f)))
- list)))
- (define (returnalot alot)
- (if (and (not (null? alot)) (pair? alot))
- (let ((temp #f))
- (for-each (lambda (a) (returnalot a)) alot)
- (while (not (null? alot))
- (set! temp alot)
- (set! alot (cdr alot))
- (put temp)))))
-
- (def-method (returnalot alot)
- (c-display "pool-length:" (length pool))
- ;(c-display "inserting: " alot)
- (returnalot alot)
- (c-display "pool-length:" (length pool))
- ;(newline)
- )
-
-)
-
-
-;;##############################################################
-;; Nodeline
-;;##############################################################
-
-
-(def-class (<nodeline> dasnodes linefunc textfunc changefunc)
-
- (define nodes (map list-copy dasnodes))
-
- (define lines '())
- (define boxes '())
-
- (define minx 0)
- (define maxx 1)
- (define miny 0)
- (define maxy 0)
- (define proportion 1)
-
- (def-var boxsize 0.04)
-
- (define (gfx-> x)
- (c-scale x 0 1 minx maxx))
- (define (gfy-> x)
- (c-scale x 0 1 miny maxy))
-
- (define (<-gfx x)
- (c-scale x minx maxx 0 1))
- (define (<-gfy x)
- (c-scale x miny maxy 0 1))
-
- (define (for-each-node func)
- (let ((prev #f)
- (i 0))
- (for-each (lambda (n)
- (if prev
- (func i
- (car prev) (cadr prev)
- (car n) (cadr n)))
- (set! i (1+ i))
- (set! prev n))
- nodes)))
-
- (define (for-each-box func)
- (for-each (lambda (n)
- (apply func n))
- boxes))
-
- (define (for-each-line func)
- (for-each (lambda (n)
- (apply func n))
- lines))
-
- (define (get-last-line)
- (car lines))
-
-
- (define (nodes-partly minx maxx func)
- (for-each-node (lambda (i x1 y1 x2 y2)
- (if (and (< x1 maxx) (> x2 minx))
- (let ((nx1 x1)
- (nx2 x2)
- (ny1 y1)
- (ny2 y2))
- (if (< nx1 minx)
- (begin
- (set! nx1 minx)
- (set! ny1 (c-scale nx1 x1 x2 y1 y2))))
- (if (< ny1 miny)
- (begin
- (set! ny1 miny)
- (set! nx1 (c-scale ny1 y1 y2 x1 x2))))
- (if (> nx2 maxx)
- (begin
- (set! nx2 maxx)
- (set! ny2 (c-scale nx2 x1 x2 y1 y2))))
- (if (> ny2 maxy)
- (begin
- (set! ny2 maxy)
- (set! nx2 (c-scale ny2 y1 y2 x1 x2))))
- (func i nx1 ny1 nx2 ny2))))))
-
-
-
- (def-method (get-graph #:optional start end)
- (if (not start)
- nodes
- (let ((ret '()))
- (nodes-partly start end
- (lambda (i x1 y1 x2 y2)
- (if (null? ret)
- (set! ret (list (list x2 y2) (list x1 y1)))
- (set! ret (cons (list x2 y2) ret)))))
- (reverse! ret))))
-
-
- (def-method (get-val x)
- (let ((first nodes)
- (next #f))
- (while (< (caadr first) x)
- (set! first (cdr first)))
- (set! next (cadr first))
- (set! first (car first))
- (c-scale x (car first) (car next) (cadr first) (cadr next))))
-
-
- (def-method (set-graph! graph)
- (if (not (= (length graph) (length nodes)))
- (begin
- (changefunc this)
- (set! nodes (map list-copy graph))
- (make-lines-and-boxes)
- (this->paint))
- (let ((start-not-set #t)
- (start 0)
- (end 0))
- (c-for-each (lambda (n a b)
- (let ((eq (equal? a b)))
- (if start-not-set
- (begin
- (set! end n)
- (if (not eq)
- (begin
- (set! start n)
- (set! start-not-set #f))))
- (if (not eq)
- (set! end n)))))
- graph nodes)
- (paint-some start (1+ end))
- (set! nodes (map list-copy graph))
- (make-lines-and-boxes)
- (paint-some start (1+ end)))))
-
-
-
- (define (get-node x y)
- (call-with-current-continuation
- (lambda (return)
- (for-each-box (lambda (i x1 y1 x2 y2)
- (if (and (>= x x1)
- (< x x2)
- (>= y y1)
- (< y y2))
- (return i))))
- #f)))
-
-
- (define (perhaps-make-node x y)
- (define (square x)
- (* x x))
- (define (distance2 x1 y1 x2 y2)
- (+ (square (- x1 x2)) (square (- y1 y2))))
- (call-with-current-continuation
- (lambda (return)
- (for-each-node (lambda (i x1 y1 x2 y2)
- (if (and (>= x x1)
- (<= x x2))
- (let* ((gx (<-gfx x))
- (gx1 (<-gfx x1))
- (gx2 (<-gfx x2))
- (a2 (distance2 gx1 y1 gx y))
- (b2 (distance2 gx y gx2 y2))
- (c2 (distance2 gx1 y1 gx2 y2))
- (F2 (/ (- (* 4 a2 b2)
- (square (- (+ a2 b2) c2)))
- 16))
- (hc2 (* 4 (/ F2 c2))))
- (return (if (< hc2 (square boxsize))
- (let ((node (list x y)))
- (changefunc this)
- (set! nodes (insert! nodes i node))
- (make-lines-and-boxes)
- (this->paint)
- node)
- #f)))))))))
-
-
- (define (make-lines-and-boxes)
- (set! lines '())
- (set! boxes '())
- (nodes-partly minx maxx
- (lambda (i x1 y1 x2 y2)
- (set! lines (cons (list i
- (<-gfx x1)
- (<-gfy y1)
- (<-gfx x2)
- (<-gfy y2))
- lines))))
- (for-each-node (lambda (i x1 y1 x2 y2)
- (let ((makebox (lambda (i x y)
- (if (and (<= x maxx) (>= x minx))
- (let ((nx (<-gfx x))
- (ny (<-gfy y))
- (ax (* boxsize proportion)))
- (set! boxes (cons (list i
- (- nx ax)
- (- ny boxsize)
- (+ nx ax)
- (+ ny boxsize))
- boxes)))))))
- (if (= i 1)
- (makebox 0 x1 y1))
- (makebox i x2 y2)))))
-
-
-
- (define (paint-some start end)
- (for-each-box (lambda (n x1 y1 x2 y2)
- (if (and (>= n start)
- (<= n end))
- (begin
- (linefunc x1 y1 x2 y1)
- (linefunc x2 y1 x2 y2)
- (linefunc x2 y2 x1 y2)
- (linefunc x1 y2 x1 y1)))))
- (for-each-line (lambda (n x1 y1 x2 y2)
- (if (and (>= n start)
- (<= n end))
- (begin
- (linefunc x1 y1 x2 y2)
- (textfunc y1 (+ x1 (/ boxsize 2)) (- y1 boxsize))
- (if (= n (car (get-last-line)))
- (textfunc y2 (+ x2 (/ boxsize 2)) (- y2 boxsize))))))))
-
-
- (def-method (paint)
- (paint-some 0 (length nodes)))
-
-
- ;; The dasm(in|ax)(x|y) variables defines the range of the whole graph that is showed
- ;; in the current display.
-
- (def-method (set-bounds! dasminx dasmaxx dasminy dasmaxy dasproportion)
- (set! minx dasminx)
- (set! maxx dasmaxx)
- (set! miny dasminy)
- (set! maxy dasmaxy)
- (set! proportion dasproportion)
- (make-lines-and-boxes))
-
-
-
- ;; The x values for the mousefunctions are between 0 and 1 in the current display.
-
- (define pressednode #f)
- (define prevnode #f)
- (define nextnode #f)
- (define pressednodenum 0)
- (define x_press 0)
- (define y_press 0)
- (define x_press_offset 0)
- (define y_press_offset 0)
- (define (maixy x)
- (max 0 (min 1 x)))
- (define direction #f)
-
-
- (define (delete-node nodenum)
- (changefunc this)
- (set! nodes (delete! (list-ref nodes nodenum) nodes eq?))
- (set! pressednode #f)
- (set! prevnode #f)
- (set! nextnode #f)
- (make-lines-and-boxes)
- (this->paint)
- 'stop!)
-
- (def-method (mouse-clicked x y button stat)
- (if (and pressednode
- (c-rightbutton? button)
- (> pressednodenum 0)
- (< pressednodenum (1- (length nodes))))
- (delete-node pressednodenum)))
-
- (def-method (mouse-press x y button stat)
- (if (and (c-shift? stat)
- (c-rightbutton? button))
- (let ((nodenum (get-node (maixy x) (maixy y))))
- (if (and nodenum
- (> nodenum 0)
- (< nodenum (1- (length nodes))))
- (delete-node nodenum)))
- (let ((func (lambda ()
- (let ((nodenum (get-node (maixy x) (maixy y))))
- (if nodenum
- (begin
- (set! pressednodenum nodenum)
- (if (> nodenum 0)
- (set! prevnode (list-ref nodes (1- nodenum))))
- (set! pressednode (list-ref nodes nodenum))
- (if (< nodenum (1- (length nodes)))
- (set! nextnode (list-ref nodes (1+ nodenum))))
- (set! x_press x)
- (set! y_press y)
- (set! x_press_offset (- (<-gfx (car pressednode)) x))
- (set! y_press_offset (- (cadr pressednode) y))
- (set! direction (if (c-rightbutton? button) 'not-set #f))
- 'stop!)
- #f)))))
- (if (not (func))
- (if (perhaps-make-node (gfx-> x) y)
- (func))
- 'stop!))))
-
- (def-method (mouse-move x_org y_org button stat)
- (if pressednode
- (let ((y (+ y_press_offset (if (c-ctrl? stat) (+ y_press (/ (- y_org y_press) 12)) y_org)))
- (x (+ x_press_offset (if (c-ctrl? stat) (+ x_press (/ (- x_org x_press) 12)) x_org)))
- (minx2 (if prevnode (if nextnode (car prevnode) 1) 0))
- (maxx2 (if nextnode (if prevnode (car nextnode) 0) 1)))
- (if direction
- (begin
- (if (eq? direction 'not-set)
- (set! direction (if (> (abs (- x_org x_press)) (abs (- y_org y_press)))
- 'x
- 'y)))
- (if (eq? direction 'y)
- (set! x (+ x_press_offset x_press))
- (set! y (+ y_press_offset y_press)))))
- (paint-some pressednodenum (1+ pressednodenum))
- (set-car! pressednode (max minx2 (min maxx2 (gfx-> x))))
- (set-car! (cdr pressednode) (if (c-shift? stat) 0.5 (maixy y)))
- (make-lines-and-boxes)
- (paint-some pressednodenum (1+ pressednodenum))
- (c-gc-on) ;; To avoid crashing the machine, actually.
- 'stop!)))
-
- (def-method (mouse-release x y button stat)
- (if pressednode
- (begin
- (this->mouse-move x y button stat)
- (set! prevnode #f)
- (set! pressednode #f)
- (set! nextnode #f)
- 'stop!)))
-
-
- )
-
-
-
-
-(def-class (<editor-nodeline> snd ch orgval #:optional string-func moused-func (context mark-context))
-
- (Super (<nodeline> (begin
- (if (or (< orgval 0) (> orgval 1))
- (begin
- (c-display "Warning! gui.scm/<editor-nodeline>: orgval=" orgval)
- (set! orgval (max 0 (min orgval 1)))))
- (list (list 0 orgval) (list 1 orgval)))
- (lambda (x1 y1 x2 y2)
- (c-get-bounds snd ch
- (lambda (minx miny maxx maxy)
- (draw-line (c-scale x1 0 1 minx maxx)
- (c-scale y1 0 1 miny maxy)
- (c-scale x2 0 1 minx maxx)
- (c-scale y2 0 1 miny maxy)
- snd
- ch
- context))))
- (lambda (val x y)
- (if string-func
- (c-get-bounds snd ch
- (lambda (minx miny maxx maxy)
- (c-draw-string (c-editor-widget snd)
- (list-ref (snd-gcs) 3)
- (min (- maxx 20) (c-scale x 0 1 minx maxx))
- (max 20 (c-scale y 0 1 miny maxy))
- (string-func val))))))
- (lambda (this)
- (-> this paint))))
-
- (define active #t)
-
- (def-method (set-inactive)
- (-> this paint)
- (set! visible #f))
-
- (def-method (set-active)
- (-> this paint)
- (set! visible #t))
-
- (def-method (is-active?)
- active)
-
- (define (das-after-graph-hook dassnd dasch)
- (if (and active (= snd dassnd) (= ch dasch))
- (let ((length (/ (frames snd ch) (srate snd)))
- (minx (car (x-bounds snd ch)))
- (maxx (cadr (x-bounds snd ch)))
- (miny (car (y-bounds snd ch)))
- (maxy (cadr (y-bounds snd ch))))
- (-> this set-bounds!
- (c-scale minx 0 length 0 1)
- (c-scale maxx 0 length 0 1)
- (c-scale miny -1 1 0 1)
- (c-scale maxy -1 1 0 1)
- (/ (/ (window-height) (chans snd)) (window-width)))
- (-> this paint)))
- #f)
-
-
- (define mouse-cycle (<mouse-cycle> (lambda (dassnd dasch x y button stat)
- (if (and active (= snd dassnd) (= ch dasch))
- (if (eq? 'stop! (-> this mouse-press x y button stat))
- (begin
- (if moused-func (moused-func this))
- 'stop!))))
- (lambda (snd ch x y button stat)
- (-> this mouse-move x y button stat)
- (if moused-func (moused-func this)))
- (lambda (snd ch x y button stat isdragged)
- (if isdragged
- (-> this mouse-release x y button stat)
- (-> this mouse-clicked x y button stat))
- (if moused-func (moused-func this)))
-
- #:scaled #t))
-
- (define (das-close-hook dassnd)
- (if (= dassnd snd)
- (this->delete!)))
-
-
- (def-method (delete!)
- (remove-hook! after-graph-hook das-after-graph-hook)
- (-> mouse-cycle delete!)
- (remove-hook! close-hook das-close-hook))
-
-
- (add-hook! after-graph-hook das-after-graph-hook)
- (add-hook! close-hook das-close-hook)
-
- (das-after-graph-hook snd ch)
-
- )
-
-
-#!
-(c-for 0 < 0.9 0.1
- (lambda (n)
- (<editor-nodeline> (c-selected-sound) 0 n)))
-!#
-
-
-
-
-;;##############################################################
-;; Menues
-;;##############################################################
-
-#!
-(define m
-!#
-
-(define* (menu-sub-add menu menu-label #:optional callback)
- (define (submenu menu-item)
- (gtk_menu_item_get_submenu (GTK_MENU_ITEM menu-item)))
-
- (let ((dasmenu (submenu (if (integer? menu) (main-menu menu) menu))))
- (if use-gtk
- (let ((menuitem (gtk_menu_item_new_with_label menu-label))
- (submenu (gtk_menu_new)))
- (gtk_menu_shell_append (GTK_MENU_SHELL dasmenu) menuitem)
- ;;(gtk_menu_shell_append (GTK_MENU_SHELL (gtk_menu_item_get_submenu (GTK_MENU_ITEM dasmenu))) menuitem)
- (gtk_widget_show menuitem)
- (gtk_menu_item_set_submenu (GTK_MENU_ITEM menuitem) submenu)
- (if callback
- (g_signal_connect_closure_by_id
- (GPOINTER menuitem)
- (g_signal_lookup "activate" (G_OBJECT_TYPE (GTK_OBJECT menuitem))) 0
- (g_cclosure_new (lambda (w d)
- (callback))
- #f #f)
- #f))
- menuitem)
-;; submenu)
- (let* ((submenu (XmCreatePulldownMenu dasmenu menu-label
- (list XmNbackground (basic-color))))
- (menuitem (XtCreateManagedWidget menu-label
- xmCascadeButtonWidgetClass dasmenu
- (list XmNsubMenuId submenu
- XmNbackground (basic-color)))))
- (if callback
- (XtAddCallback menuitem XmNcascadingCallback (lambda (w c i) (callback))))
- submenu))))
-
-
-
-(define* (menu-add top-menu menu-label callback #:optional position)
- (define (submenu menu-item)
- (gtk_menu_item_get_submenu (GTK_MENU_ITEM menu-item)))
- (if (integer? top-menu)
- (if position
- (add-to-menu top-menu menu-label callback position)
- (add-to-menu top-menu menu-label callback))
- (if use-gtk
- (let ((child (gtk_menu_item_new_with_label menu-label)))
- (gtk_menu_shell_append (GTK_MENU_SHELL (submenu top-menu)) child)
- (gtk_widget_show child)
- ;(set-procedure-property! das 'arity '(2 0 #f))
- ;;(set-procedure-properties! das '((arity 2 0 #f)))
- ;;(c-display "prop: " (procedure-properties das))
- (g_signal_connect_closure_by_id
- (GPOINTER child)
- (g_signal_lookup "activate" (G_OBJECT_TYPE (GTK_OBJECT child))) 0
- (g_cclosure_new (lambda (w d)
- (callback))
- ;das
- ; (callback))
- #f #f)
- #f)
- child)
- (let ((child (XtCreateManagedWidget menu-label xmPushButtonWidgetClass top-menu
- (list XmNbackground (basic-color)))))
- (XtAddCallback child XmNactivateCallback
- (lambda (w c i)
- (callback)))
- child))))
-
-
-(define (menu-set-label menu label)
- (if use-gtk
- (gtk_label_set_text (GTK_LABEL (gtk_bin_get_child (GTK_BIN menu))) label)
- (let ((str (XmStringCreateLocalized label)))
- (XtSetValues menu (list XmNlabelString str))
- (XmStringFree str))))
-
-
-
-#!
-(define (submenu_func menu-item)
- (gtk_menu_item_get_submenu (GTK_MENU_ITEM menu-item)))
-
-;; step-by-step how to make menues and submenues with gtk: (not exactly trivial...)
-(define m (add-to-main-menu "testing"))
-(begin (main-menu m))
-(define s (menu-sub-add m "aiai"))
-(define menuitem (gtk_menu_item_new_with_label "menuitem"))
-(begin menuitem)
-(define submenu (gtk_menu_new))
-(gtk_menu_shell_append (GTK_MENU_SHELL (submenu_func (main-menu m))) menuitem)
-(gtk_widget_show menuitem)
-(gtk_menu_item_set_submenu (GTK_MENU_ITEM menuitem) submenu)
-(begin submenu)
-
-(define menuitem2 (gtk_menu_item_new_with_label "menuitem2"))
-(gtk_menu_shell_append (GTK_MENU_SHELL (submenu_func menuitem)) menuitem2)
-(gtk_widget_show menuitem2)
-
-
-;; Menu-test
-(let ((test-menu (add-to-main-menu "testing")))
- (define (adding menu n)
- (if (> n 0)
- (let ((submenu (menu-sub-add menu (format #f "Submenu ~D" n))))
- (menu-add menu "MenuItem" (lambda () (display n)))
- (adding submenu (- n 1)))))
- (adding test-menu 10))
-!#
-
-
-
-
-
-
-;;##############################################################
-;; Checkbuttons
-;;##############################################################
-
-(def-class (<checkbutton> parent name callback #:optional onoff (extraopts '()))
-
- (def-var button #f)
-
- (def-method (set to)
- (if use-gtk
- (gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON button) to)
- (XtSetValues button (list XmNset to))))
-
- (def-method (remove)
- (if use-gtk
- (hide-widget (GTK_WIDGET button))
- ;;(gtk_widget_destroy (GTK_WIDGET button))
- (XtUnmanageChild button)))
-
- (if use-gtk
- (let ((dasparent (if (isdialog? parent) (-> parent getbox2) (GTK_BOX parent))))
- (set! button (if name (gtk_check_button_new_with_label name) (gtk_check_button_new)))
- (gtk_box_pack_end (GTK_BOX dasparent) button #f #f 0)
- (gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON button) onoff)
- (gtk_widget_show button)
- (g_signal_connect_closure_by_id
- (GPOINTER button)
- (g_signal_lookup "clicked" (G_OBJECT_TYPE (GTK_OBJECT button))) 0
- (g_cclosure_new (lambda (w d)
- (callback (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON w))))
- #f #f)
- #f))
- (let* ((dasparent (if (isdialog? parent) (-> parent getbox2) parent)))
- (set! button (XtCreateManagedWidget (if name name "") xmToggleButtonWidgetClass dasparent
- (append (list XmNbackground (basic-color)
- ;;XmNlabelString name
- XmNset onoff
- XmNselectColor (yellow-pixel))
- extraopts)))
- (XtAddCallback button XmNvalueChangedCallback (lambda (w c i) (callback (.set i)))))))
-
-
-
-(define (checkbutton-get button)
- (if use-gtk
- (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON button))
- (c-display "checkbutton-get not implemented for motif.")))
-
-(define (checkbutton-set button to)
- (if use-gtk
- (gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON button) to)
- (XtSetValues button (list XmNset to))))
-
-(define (checkbutton-remove button)
- (if use-gtk
- (hide-widget (GTK_WIDGET button))
- ;;(gtk_widget_destroy (GTK_WIDGET button))
- (XtUnmanageChild button)))
-
-
-
-
-
-;;##############################################################
-;; Buttons
-;;##############################################################
-
-(def-class (<button> parent name callback)
-
- (def-var button #f)
-
- (def-method (remove)
- (if use-gtk
- (hide-widget (GTK_WIDGET button))
- ;;(gtk_widget_destroy (GTK_WIDGET button))
- (XtUnmanageChild button)))
-
- (if use-gtk
- (let ((dasparent (if (isdialog? parent)
- (GTK_BOX (.action_area (GTK_DIALOG (-> parent dialog))))
- (GTK_BOX parent))))
- (set! button (gtk_button_new_with_label name))
- (gtk_box_pack_start dasparent button #t #t 20)
- (g_signal_connect_closure_by_id (GPOINTER button)
- (g_signal_lookup "clicked" (G_OBJECT_TYPE (GTK_OBJECT button)))
- 0 (g_cclosure_new (lambda (w data)
- (callback))
- #f #f) #f)
- (gtk_widget_show button))
- (begin
- (set! button (XtCreateManagedWidget name xmPushButtonWidgetClass parent
- (list XmNbackground (basic-color)
- XmNarmColor (pushed-button-color))))
- (XtAddCallback button XmNactivateCallback (lambda (w c i)
- (callback))))))
-
-
-
-
-
-;;##############################################################
-;; Togglebuttons
-;;##############################################################
-
-(def-class (<togglebutton> parent name callback #:optional onoff (extraopts '()))
-
- (def-var button #f)
-
- (def-method (set to)
- (if use-gtk
- (gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON button) to)
- (XtSetValues button (list XmNset to))))
-
- (def-method (remove)
- (if use-gtk
- (hide-widget (GTK_WIDGET button))
- ;;(gtk_widget_destroy (GTK_WIDGET button))
- (XtUnmanageChild button)))
-
- (if use-gtk
- (let ((dasparent (if (isdialog? parent) (-> parent getbox2) (GTK_BOX parent))))
- (set! button (gtk_toggle_button_new_with_label name))
- (gtk_box_pack_end (GTK_BOX dasparent) button #f #f 0)
- (gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON button) onoff)
- (gtk_widget_show button)
- (g_signal_connect_closure_by_id
- (GPOINTER button)
- (g_signal_lookup "clicked" (G_OBJECT_TYPE (GTK_OBJECT button))) 0
- (g_cclosure_new (lambda (w d)
- (if (= 1 (car (procedure-property callback 'arity)))
- (callback (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON w)))
- (callback this (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON w)))))
- #f #f)
- #f))
- (let* ((dasparent (if (isdialog? parent) (-> parent getbox2) parent)))
- (set! button (XtCreateManagedWidget (if name name "") xmToggleButtonWidgetClass dasparent
- (append (list XmNbackground (basic-color)
- ;;XmNlabelString name
- XmNset onoff
- XmNselectColor (yellow-pixel))
- extraopts)))
- (XtAddCallback button XmNvalueChangedCallback (lambda (w c i) (callback (.set i)))))))
-
-
-
-;;##############################################################
-;; Sliders
-;;##############################################################
-
-#!
-(scale-log->linear 0 0.5 2)
-(scale-linear->log 0 0 log-scale-ticks)
-
-(scale-log->linear 0 1.2 2)
-(scale-linear->log 0 1 2)
-(scale-log-label 0 1 2)
-!#
-
-(def-class (<slider> parent
- title
- low initial high
- func
- scaler
- #:optional autofunc use-log)
-
- (define hbox #f)
- (define label #f)
- (define scale #f)
- (define slider #f)
-
- (def-method (delete!)
- (gtk_widget_destroy (GTK_WIDGET scale))
- (gtk_widget_destroy (GTK_WIDGET label))
- (gtk_widget_destroy (GTK_WIDGET hbox)))
-
- (def-method (set! val)
- (gtk_adjustment_set_value (GTK_ADJUSTMENT slider) val))
-
- (when use-log
- (set! low (1+ low))
- (set! high (1+ high)))
-
- (if use-gtk
- (let* ((vbox (if (isdialog? parent) (-> parent getbox1) parent))
- (adj (if use-log
- (gtk_adjustment_new (scale-log->linear low (1+ initial) high) 0 log-scale-ticks 1 10 1)
- (gtk_adjustment_new initial low high 0.0 0.0 0.0))))
- (define (get-two-dec-string n)
- (fix-defines
- (define whole (c-integer n))
- (define rest (- n whole))
- (define dec100 (c-integer (* rest 100)))
- (<-> (number->string whole) (if (< dec100 10) ".0" ".") (number->string dec100))))
-
- (define (get-slider-text n)
- (if use-log
- (<-> title " "
- (get-two-dec-string n))
- (format #f "~A" title)))
-
- (set! label (gtk_label_new (get-slider-text initial)))
-
- (set! hbox (gtk_hbox_new #f 0))
-
- (set! scale (gtk_hscale_new (GTK_ADJUSTMENT adj)))
-
- (if autofunc
- (<checkbutton> hbox #f autofunc))
-
- (gtk_box_pack_start (GTK_BOX vbox) hbox #f #f 2)
- (gtk_widget_show hbox)
- (gtk_box_pack_start (GTK_BOX hbox) label #f #f 6)
- (gtk_widget_show label)
- (gtk_range_set_update_policy (GTK_RANGE (GTK_SCALE scale)) GTK_UPDATE_CONTINUOUS)
- (gtk_scale_set_digits (GTK_SCALE scale)
- (if use-log
- 0
- (if (>= scaler 1000) 3 (if (>= scaler 100) 2 (if (>= scaler 10) 1 0)))))
- (gtk_scale_set_draw_value (GTK_SCALE scale) (not use-log))
- (gtk_widget_show scale)
-
- (gtk_box_pack_start (GTK_BOX hbox) scale #t #t 0)
- (if use-log
- (g_signal_connect_closure_by_id (GPOINTER adj)
- (g_signal_lookup "value_changed" (G_OBJECT_TYPE (GTK_OBJECT adj))) 0
- (g_cclosure_new (lambda (w d)
- (define val (1- (scale-linear->log low (gtk_adjustment_get_value (GTK_ADJUSTMENT adj)) high)))
- (func val)
- (change-label label (get-slider-text val))
- )
- #f #f)
- #f)
- (g_signal_connect_closure_by_id (GPOINTER adj)
- (g_signal_lookup "value_changed" (G_OBJECT_TYPE (GTK_OBJECT adj))) 0
- (g_cclosure_new (lambda (w d) (func (gtk_adjustment_get_value (GTK_ADJUSTMENT adj)))) #f #f)
- #f))
- (set! slider adj))
- (let* ((mainform (if (isdialog? parent) (-> parent getbox1) parent))
- (dastitle (XmStringCreate title XmFONTLIST_DEFAULT_TAG))
- (new-slider (XtCreateManagedWidget title xmScaleWidgetClass mainform
- (list XmNorientation XmHORIZONTAL
- XmNshowValue #t
- XmNminimum (c-integer (* low scaler))
- XmNmaximum (c-integer (* high scaler))
- XmNvalue (c-integer (* initial scaler))
- XmNdecimalPoints (if (= scaler 1000) 3 (if (= scaler 100) 2 (if (= scaler 10) 1 0)))
- XmNtitleString dastitle
- XmNleftAttachment XmATTACH_FORM
- XmNrightAttachment XmATTACH_FORM
- XmNbackground (basic-color)
- ))))
-
- (XmStringFree dastitle)
- (XtAddCallback new-slider XmNvalueChangedCallback (lambda (w c info) (func (/ (.value info) scaler))))
- (XtAddCallback new-slider XmNdragCallback (lambda (w c info) (func (/ (.value info) scaler))))
- (set! slider new-slider))))
-
-
-
-
-
-
-
-;;##############################################################
-;; Dialogs
-;;##############################################################
-
-(define (isdialog? dialog)
- (and (object? dialog)
- (instance? dialog <dialog>)))
-
-(def-class (<dialog> label deletefunc . buttons)
-
- (define box1 #f)
- (define box2 #f)
-
- (define wassoc (list (list 'Close "quit_button" (quit-button-color))
- (list 'Help "help_button" (help-button-color))
- (list 'Apply "doit_button" (doit-button-color))
- (list 'Dismiss "quit_button" (quit-button-color))
- (list 'Ok "doit_button" (doit-button-color))))
-
-
- (def-var dialog #f)
- (def-var sliders #f)
-
- (def-method (getbox2)
- (if (not box2)
- (let ((hbox #f))
- (if use-gtk
- (begin
- (set! hbox (gtk_hbox_new #f 0))
- (gtk_box_pack_start (GTK_BOX (.vbox (GTK_DIALOG dialog))) hbox #f #f 4)
- (gtk_widget_show hbox))
- (let* ((mainform box1)
- (sep (XtCreateManagedWidget "sep" xmSeparatorWidgetClass mainform
- (list XmNorientation XmHORIZONTAL
- XmNseparatorType XmSHADOW_ETCHED_OUT
- XmNbackground (basic-color))))
- (rc (XtCreateManagedWidget "rc" xmRowColumnWidgetClass mainform
- (list XmNorientation XmHORIZONTAL
- XmNbackground (basic-color)
- XmNradioBehavior #f
- XmNradioAlwaysOne #t
- XmNbottomAttachment XmATTACH_FORM
- XmNleftAttachment XmATTACH_FORM
- XmNrightAttachment XmATTACH_FORM
- XmNentryClass xmToggleButtonWidgetClass
- XmNisHomogeneous #t))))
- (set! hbox rc)))
- (setbox2! hbox)))
- box2)
-
- (define (setbox2! dashbox)
- (set! box2 dashbox))
-
- (def-method (getbox1)
- (if (not box1)
- (let ((vbox #f))
- (if use-gtk
- (begin
- (set! vbox (gtk_vbox_new #f 2))
- (gtk_box_pack_start (GTK_BOX (.vbox (GTK_DIALOG dialog))) vbox #f #f 4)
- (gtk_widget_show vbox))
- (set! vbox (XtCreateManagedWidget "formd" xmRowColumnWidgetClass dialog
- (list XmNleftAttachment XmATTACH_FORM
- XmNrightAttachment XmATTACH_FORM
- XmNtopAttachment XmATTACH_FORM
- XmNbottomAttachment XmATTACH_WIDGET
- XmNbottomWidget (XmMessageBoxGetChild dialog XmDIALOG_SEPARATOR)
- XmNbackground (highlight-color)
- XmNorientation XmVERTICAL))))
- (setbox1! vbox)))
- box1)
-
- (define (setbox1! dasvbox)
- (set! box1 dasvbox))
-
- (def-method (hide)
- (if use-gtk
- (gtk_widget_hide dialog)
- (XtUnmanageChild dialog))
- (if (c-selected-sound)
- (focus-widget (c-editor-widget (c-selected-sound)))))
-
- (def-method (show)
- (if use-gtk
- (begin
- (gtk_widget_show dialog)
- (gdk_window_raise (.window dialog)))
- (if (not (XtIsManaged dialog))
- (XtManageChild dialog)
- (raise-dialog dialog))))
-
-
- ;; Replacement for add-sliders in new-effects.scm/gtk-effects.scm
- (def-method (add-sliders dassliders)
- (set! sliders (map
- (lambda (slider-data)
- (apply <slider> (cons (this->getbox1) slider-data)))
- dassliders))
-
- (if (not use-gtk)
- (let ((num_inputs (+ 1 (length sliders))))
- (set! (widget-size dialog) (list (min 800 (max 400 (* num_inputs 20)))
- (min 800 (max 120 (* num_inputs 70)))))))
-
- sliders)
-
-
- (let ((names '())
- (funcs '())
- (wnames '())
- (new-dialog #f))
-
- (if use-gtk
- (begin
- (set! new-dialog (gtk_dialog_new))
- (gtk_window_set_title (GTK_WINDOW new-dialog) label)
- (gtk_container_set_border_width (GTK_CONTAINER new-dialog) 10)
- (gtk_window_set_default_size (GTK_WINDOW new-dialog) -1 -1)
- (gtk_window_set_resizable (GTK_WINDOW new-dialog) #t)
- (gtk_widget_realize new-dialog)
-
- (g_signal_connect_closure_by_id (GPOINTER new-dialog)
- (g_signal_lookup "delete_event" (G_OBJECT_TYPE (GTK_OBJECT new-dialog)))
- 0 (g_cclosure_new (lambda (w ev data)
- (if deletefunc (deletefunc))
- (gtk_widget_hide new-dialog)
- (if (c-selected-sound)
- (focus-widget (c-editor-widget (c-selected-sound)))))
- #f #f) #f))
- (let ((titlestr (XmStringCreate label XmFONTLIST_DEFAULT_TAG)))
- (set! new-dialog
- (XmCreateTemplateDialog (cadr (main-widgets)) label
- (list XmNautoUnmanage #f
- XmNdialogTitle titlestr
- ;XmNresizePolicy XmRESIZE_GROW
- XmNnoResize #f
- XmNbackground (basic-color)
- XmNtransient #f)))
- (XtAddCallback new-dialog XmNcancelCallback (lambda (w c i)
- (if deletefunc (deletefunc))
- (XtUnmanageChild new-dialog)
- (if (c-selected-sound)
- (focus-widget (c-editor-widget (c-selected-sound))))))
- (XmStringFree titlestr)))
-
-
- (for-each
- (lambda (e)
- (if (procedure? e)
- (set! funcs (cons e funcs))
- (begin
- (set! names (cons e names))
- (set! wnames (cons (if (assoc (string->symbol e) wassoc) (assoc (string->symbol e) wassoc) (list #f "noname")) wnames)))))
- buttons)
-
- (for-each
- (lambda (name func wname)
- (let ((button ((if (> (car (procedure-property func 'arity)) 0)
- <togglebutton>
- <button>)
- (if use-gtk
- (.action_area (GTK_DIALOG new-dialog))
- new-dialog)
- name
- func)))
- (if use-gtk
- (gtk_widget_set_name (-> button button) (cadr wname))
- (if (car wname)
- (XtVaSetValues
- (-> button button)
- (list XmNarmColor (pushed-button-color)
- XmNbackground (caddr wname)))))))
-
- (reverse names) (reverse funcs) (reverse wnames))
-
- ;; build rest in (.vbox (GTK_DIALOG new-dialog))
- (set! dialog new-dialog)))
-
-
-
-
-
-
-
-;;##############################################################
-;; GUI test
-;;##############################################################
-
-#!
-(define d (<dialog> "gakk" #f
- "Close" (lambda () (-> d hide))
- "Apply" (lambda () (display "apply"))
- "Play" (lambda (onoroff) (c-display "play" onoroff))
- "Help" (lambda () (display "help"))))
-
-(<slider> d "slider1" 0 1 2 (lambda (val) (display val)(newline)) 100)
-(<slider> d "slider2" 0 0.2 1 (lambda (val) (display val)(newline)) 1000)
-(<slider> d "slider3" 0 1 20 (lambda (val) (display val)(newline)) 1)
-(<checkbutton> d "checkbutton1" (lambda (a) (display a)(newline)))
-(<checkbutton> d "checkbutton2" (lambda (a) (display a)(newline)))
-(<checkbutton> d "checkbutton3" (lambda (a) (display a)(newline)))
-(<togglebutton> d "togglebutton1" (lambda (a) (display a)(newline)))
-(-> d show)
-(-> d hide)
-!#
-
-
-
-
-
-
-
-
-
-
diff --git a/help-snd-fm.pd b/help-snd-fm.pd
deleted file mode 100644
index c4099c4..0000000
--- a/help-snd-fm.pd
+++ /dev/null
@@ -1,29 +0,0 @@
-#N canvas 340 440 775 300 10;
-#X msg 74 151 reload;
-#X obj 174 177 snd pd-fm.scm 1 1;
-#X obj 288 246 dac~;
-#X obj 284 53 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
--262144 -1 -1 0 256;
-#X obj 440 53 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
--262144 -1 -1 0 256;
-#X obj 503 26 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
--262144 -1 -1 0 256;
-#X msg 278 84 Carrier-Frequency \$1;
-#X msg 434 84 Index \$1;
-#X msg 502 83 Amplitude \$1;
-#X obj 505 55 * 0.03;
-#X obj 163 53 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
--262144 -1 -1 0 256;
-#X msg 157 84 Fm-Frequency \$1;
-#X connect 0 0 1 0;
-#X connect 1 1 2 0;
-#X connect 1 1 2 1;
-#X connect 3 0 6 0;
-#X connect 4 0 7 0;
-#X connect 5 0 9 0;
-#X connect 6 0 1 0;
-#X connect 7 0 1 0;
-#X connect 8 0 1 0;
-#X connect 9 0 8 0;
-#X connect 10 0 11 0;
-#X connect 11 0 1 0;
diff --git a/help-snd.pd b/help-snd.pd
deleted file mode 100644
index fa1c865..0000000
--- a/help-snd.pd
+++ /dev/null
@@ -1,81 +0,0 @@
-#N canvas 481 303 707 547 10;
-#X obj 101 135 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
--262144 -1 -1 0 256;
-#X obj 101 162 snd pd-add.scm 2 1;
-#X obj 101 195 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
--262144 -1 -1 0 256;
-#X obj 201 137 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
--262144 -1 -1 0 256;
-#X msg 38 134 reload;
-#X obj 341 157 snd pd-send_receive.scm;
-#X msg 341 127 reload;
-#X obj 483 130 s in;
-#X obj 512 97 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
--262144 -1 -1 71 256;
-#X obj 475 186 r out;
-#X msg 468 95 gakk;
-#X obj 475 215 print;
-#X obj 580 95 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X msg 608 96 list 2 3 4;
-#X obj 130 301 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
--262144 -1 -1 118 256;
-#X obj 255 300 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
--262144 -1 -1 150 256;
-#X obj 71 301 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
--262144 -1 -1 95 256;
-#X obj 71 388 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
--262144 -1 -1 108 256;
-#X obj 146 389 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
--262144 -1 -1 280 256;
-#X obj 213 390 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
--262144 -1 -1 441 256;
-#X msg 17 300 reload;
-#X obj 75 341 snd pd-inout.scm 400 400;
-#X obj 436 346 snd pd-mozilla.scm;
-#X msg 436 301 start;
-#X msg 316 299 testing;
-#X msg 190 299 testing;
-#X msg 409 95 we 3 2;
-#X msg 512 286 eval (newline);
-#X msg 512 309 eval (display(environ));
-#X obj 65 487 snd pd-any.scm;
-#X msg 25 448 reload;
-#X obj 193 448 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
--262144 -1 -1 57 256;
-#X msg 149 446 gakk;
-#X obj 261 446 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X msg 289 447 list 2 3 4;
-#X msg 90 446 we 3 2;
-#X text 27 19 SND as an external for PD.;
-#X text 26 36 Kjetil S. Matheussen \, 2005;
-#X connect 0 0 1 0;
-#X connect 1 0 2 0;
-#X connect 3 0 1 1;
-#X connect 4 0 1 0;
-#X connect 6 0 5 0;
-#X connect 8 0 7 0;
-#X connect 9 0 11 0;
-#X connect 10 0 7 0;
-#X connect 12 0 7 0;
-#X connect 13 0 7 0;
-#X connect 14 0 21 152;
-#X connect 15 0 21 323;
-#X connect 16 0 21 9;
-#X connect 20 0 21 0;
-#X connect 21 13 17 0;
-#X connect 21 185 18 0;
-#X connect 21 346 19 0;
-#X connect 23 0 22 0;
-#X connect 24 0 21 396;
-#X connect 25 0 21 284;
-#X connect 26 0 7 0;
-#X connect 27 0 22 0;
-#X connect 28 0 22 0;
-#X connect 30 0 29 0;
-#X connect 31 0 29 0;
-#X connect 32 0 29 0;
-#X connect 33 0 29 0;
-#X connect 34 0 29 0;
-#X connect 35 0 29 0;
diff --git a/hooks.fs b/hooks.fs
index 4dffcdf..022a31f 100644
--- a/hooks.fs
+++ b/hooks.fs
@@ -3,7 +3,7 @@
\ Author: Michael Scholz <mi-scholz@users.sourceforge.net>
\ Created: Tue Aug 08 23:27:50 CEST 2006
-\ Changed: Sun Dec 14 00:22:42 CET 2008
+\ Changed: Thu Dec 31 05:27:01 CET 2009
\ snd-hooks Array with all Snd hooks.
\ reset-all-hooks ( -- )
@@ -105,18 +105,18 @@ require examp
end-each
;
-: with-local-hook <{ hook local-hook-procs thunk -- ?? }>
+: with-local-hook <{ hook local-hook-procs thunk -- }>
doc" Evaluates THUNK (an xt) with HOOK set to LOCAL-HOOK-PROCS (an array of procs), \
then restores HOOK to its previous state."
- hook hook? hook 1 $" a hook" assert-type
- local-hook-procs array? local-hook-procs 2 $" a array" assert-type
- thunk xt? thunk proc? || thunk 3 $" a proc or xt" assert-type
+ hook hook? hook 1 $" a hook" assert-type
+ local-hook-procs array? local-hook-procs 2 $" a array" assert-type
+ thunk word? thunk 3 $" a proc or xt" assert-type
hook hook->array { old-procs }
hook reset-hook!
local-hook-procs each ( proc ) hook swap add-hook! end-each
- thunk execute ( ?? )
+ thunk '() run-proc drop
hook reset-hook!
old-procs each ( proc ) hook swap add-hook! end-each
;
-\ draw.fs ends here
+\ hooks.fs ends here
diff --git a/index.html b/index.html
index 01927e4..269fe20 100644
--- a/index.html
+++ b/index.html
@@ -25,303 +25,307 @@
</td></tr></table>
<br>
-<!-- created 19-Dec-2009 at 8:55 -->
+<!-- created 8-Feb-2010 at 13:32 -->
<table cellspacing=0 cellpadding=1>
- <tr><td><em class=tab><a href="extsnd.html#abort">abort</a></em></td><td width=20></td><td><em class=tab><a href="extsnd.html#epsfile">eps-file</a></em></td><td width=20></td><td><em class=tab><a href="sndclm.html#make-move-sound">make-move-sound</a></em></td><td width=20></td><td><em class=tab><a href="sndscm.html#notchoutrumbleandhiss">notch-out-rumble-and-hiss</a></em></td><td width=20></td><td><em class=tab><a href="sndscm.html#sineramp">sine-ramp</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#addampcontrols">add-amp-controls</a></em></td><td></td><td><em class=tab><a href="extsnd.html#epsleftmargin">eps-left-margin</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-autocorrelation">make-moving-autocorrelation</a></em></td><td></td><td><em class=tab><a href="sndscm.html#notchselection">notch-selection</a></em></td><td></td><td><em class=tab><a href="sndscm.html#singerdoc">singer</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#addcolormap">add-colormap</a></em></td><td></td><td><em class=tab><a href="extsnd.html#epssize">eps-size</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-average">make-moving-average</a></em></td><td></td><td><em class=tab><a href="sndscm.html#notchsound">notch-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#smoothchannel">smooth-channel</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#addcomment">add-comment</a></em></td><td></td><td><em class=tab><a href="sndscm.html#evalbetweenmarks">eval-between-marks</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-fft">make-moving-fft</a></em></td><td></td><td><em class=tab><a href="sndclm.html#notch?">notch?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#smoothselection">smooth-selection</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#adddirectorytoviewfileslist">add-directory-to-view-files-list</a></em></td><td></td><td><em class=tab><a href="sndscm.html#evaloverselection">eval-over-selection</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-pitch">make-moving-pitch</a></em></td><td></td><td><em class=tab><a href="sndscm.html#nrev">nrev</a></em></td><td></td><td><em class=tab><a href="extsnd.html#smoothsound">smooth-sound</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#addfilefilter">add-file-filter</a></em></td><td></td><td><em class=tab><a href="sndscm.html#everysample">every-sample?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-scentroid">make-moving-scentroid</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrxycos">nrxycos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#smoothexamples"><b>Smoothing</b></a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#addfilesorter">add-file-sorter</a></em></td><td></td><td><em class=tab><a href="extsnd.html#exit">exit</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-spectrum">make-moving-spectrum</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrxycos?">nrxycos?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#pins">SMS synthesis</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#addfiletoviewfileslist">add-file-to-view-files-list</a></em></td><td></td><td><em class=tab><a href="extsnd.html#exithook">exit-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-ncos">make-ncos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrxysin">nrxysin</a></em></td><td></td><td><em class=tab><a href="sndscm.html#snapmarktobeat">snap-mark-to-beat</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#addmark">add-mark</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontrol">expand-control</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-noid">make-noid</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrxysin?">nrxysin?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#snapmixtobeat">snap-mix-to-beat</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#addmarkpane">add-mark-pane</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontrolbounds">expand-control-bounds</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-notch">make-notch</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nsin">nsin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndtosample">snd-&gt;sample</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#addplayer">add-player</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontrolhop">expand-control-hop</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nrxycos">make-nrxycos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nsin?">nsin?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndtosamplep">snd-&gt;sample?</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#addsoundfileextension">add-sound-file-extension</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontroljitter">expand-control-jitter</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nrxysin">make-nrxysin</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#sndcolor">snd-color</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#addsourcefileextension">add-source-file-extension</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontrollength">expand-control-length</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nsin">make-nsin</a></em></td><td></td><td bgcolor="lightgreen"><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#snderror">snd-error</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#addtomainmenu">add-to-main-menu</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontrolramp">expand-control-ramp</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-one-pole">make-one-pole</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#snderrorhook">snd-error-hook</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#addtomenu">add-to-menu</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontrolp">expand-control?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-one-zero">make-one-zero</a></em></td><td></td><td><em class=tab><a href="sndscm.html#offsetchannel">offset-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndfont">snd-font</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#addtooltip">add-tooltip</a></em></td><td></td><td><em class=tab><a href="sndscm.html#explodesf2">explode-sf2</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-oscil">make-oscil</a></em></td><td></td><td><em class=tab><a href="sndscm.html#offsetsound">offset-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndgcs">snd-gcs</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#addtransform">add-transform</a></em></td><td></td><td><em class=tab><a href="sndclm.html#exponentially-weighted-moving-average">exponentially-weighted-moving-average</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-phase-vocoder">make-phase-vocoder</a></em></td><td></td><td><em class=tab><a href="sndclm.html#one-pole">one-pole</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndhelp">snd-help</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#addwatcher">add-watcher</a></em></td><td></td><td><em class=tab><a href="extsnd.html#extractchannel">extract-channel</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makepixmap">make-pixmap</a></em></td><td></td><td><em class=tab><a href="sndclm.html#one-pole?">one-pole?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sndscmhooks">snd-hooks</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#spectra">additive synthesis</a></em></td><td></td><td><em class=tab><a href="extsnd.html#extractchannels">extract-channels</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makeplayer">make-player</a></em></td><td></td><td><em class=tab><a href="sndclm.html#one-zero">one-zero</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndopenedsound">*snd-opened-sound*</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#afterapplycontrolshook">after-apply-controls-hook</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#make-polyoid">make-polyoid</a></em></td><td></td><td><em class=tab><a href="sndclm.html#one-zero?">one-zero?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndprint">snd-print</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#afteredithook">after-edit-hook</a></em></td><td></td><td bgcolor="lightgreen"><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#make-polyshape">make-polyshape</a></em></td><td></td><td><em class=tab><a href="extsnd.html#openfiledialog">open-file-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndspectrum">snd-spectrum</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#aftergraphhook">after-graph-hook</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#make-polywave">make-polywave</a></em></td><td></td><td><em class=tab><a href="extsnd.html#openfiledialogdirectory">open-file-dialog-directory</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndtempnam">snd-tempnam</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#afterlispgraphhook">after-lisp-graph-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#cellon">feedback fm</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-pulse-train">make-pulse-train</a></em></td><td></td><td><em class=tab><a href="extsnd.html#openhook">open-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndurl">snd-url</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#afteropenhook">after-open-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fft">fft</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rand">make-rand</a></em></td><td></td><td><em class=tab><a href="sndscm.html#opennextfileindirectory">open-next-file-in-directory</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndurls">snd-urls</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#aftersaveashook">after-save-as-hook</a></em></td><td></td><td><em class=tab><a href="snd.html#fftsize">fft sizes</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rand-interp">make-rand-interp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#openrawsound">open-raw-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndversion">snd-version</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#aftersavestatehook">after-save-state-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fftedit">fft-edit</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-readin">make-readin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#openrawsoundhook">open-raw-sound-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndwarning">snd-warning</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#aftertransformhook">after-transform-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftlogfrequency">fft-log-frequency</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makeregion">make-region</a></em></td><td></td><td><em class=tab><a href="extsnd.html#opensound">open-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndwarninghook">snd-warning-hook</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#all-pass">all-pass</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftlogmagnitude">fft-log-magnitude</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makeregionframereader">make-region-frame-reader</a></em></td><td></td><td><em class=tab><a href="extsnd.html#optimization">optimization</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sndwarp">sndwarp</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#all-pass?">all-pass?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fftsmoother">fft-smoother</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makeregionsampler">make-region-sampler</a></em></td><td></td><td><em class=tab><a href="extsnd.html#optimizationhook">optimization-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-locsig"><b>Sound placement</b></a></em></td></tr>
- <tr><td><em class=tab><a href="grfsnd.html#sndandalsa"><b>Alsa</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#fftsquelch">fft-squelch</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-sampletofile">make-sample-&gt;file</a></em></td><td></td><td><em class=tab><a href="extsnd.html#orientationhook">orientation-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#soundtoamp_env">sound-&gt;amp-env</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#ampcontrol">amp-control</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftwindow">fft-window</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makesampler">make-sampler</a></em></td><td></td><td><em class=tab><a href="sndclm.html#oscil">oscil</a></em></td><td></td><td><em class=tab><a href="sndscm.html#soundtoframe">sound-&gt;frame</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#ampcontrolbounds">amp-control-bounds</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftalpha">fft-window-alpha</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-sawtooth-wave">make-sawtooth-wave</a></em></td><td></td><td><em class=tab><a href="sndclm.html#oscil?">oscil?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundtointeger">sound-&gt;integer</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#amplitude-modulate">amplitude-modulate</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftbeta">fft-window-beta</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-scalar-mixer">make-scalar-mixer</a></em></td><td></td><td><em class=tab><a href="sndscm.html#oscopedoc">oscilloscope dialog</a></em></td><td></td><td><em class=tab><a href="sndscm.html#soundtosounddata">sound-&gt;sound-data</a></em></td></tr>
- <tr><td><em class=tab><a href="grfsnd.html#analyseladspa">analyse-ladspa</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftwithphases">fft-with-phases</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makeselection">make-selection</a></em></td><td></td><td><em class=tab><a href="sndclm.html#out-any">out-any</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndsounddata"><b>sound-data</b></a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#anyenvchannel">any-env-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftexamples"><b>FFTs</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#makeselectionframereader">make-selection-frame-reader</a></em></td><td></td><td><em class=tab><a href="sndclm.html#outa">outa</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddata*">sound-data*</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#appendsound">append-sound</a></em></td><td></td><td><em class=tab><a href="sndscm.html#nbdoc">file database</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makesndtosample">make-snd-&gt;sample</a></em></td><td></td><td><em class=tab><a href="sndclm.html#*output*">*output*</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddata+">sound-data+</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#applycontrols">apply-controls</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filetoarray">file-&gt;array</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makesoundbox">make-sound-box</a></em></td><td></td><td><em class=tab><a href="extsnd.html#outputcommenthook">output-comment-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sounddatatofile">sound-data-&gt;file</a></em></td></tr>
- <tr><td><em class=tab><a href="grfsnd.html#applyladspa">apply-ladspa</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filetoframe">file-&gt;frame</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makesounddata">make-sound-data</a></em></td><td></td><td><em class=tab><a href="extsnd.html#outputnamehook">output-name-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sounddatatoframe">sound-data-&gt;frame</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#arraytofile">array-&gt;file</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filetoframe?">file-&gt;frame?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-square-wave">make-square-wave</a></em></td><td></td><td><em class=tab><a href="sndscm.html#overlayrmsenv">overlay-rms-env</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sounddatatosound">sound-data-&gt;sound</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#array-interp">array-interp</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filetosample">file-&gt;sample</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-src">make-src</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#sounddatatosounddata">sound-data-&gt;sound-data</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#asoneedit">as-one-edit</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filetosample?">file-&gt;sample?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-ssb-am">make-ssb-am</a></em></td><td></td><td bgcolor="lightgreen"><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#sounddatatovct">sound-data-&gt;vct</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#askbeforeoverwrite">ask-before-overwrite</a></em></td><td></td><td><em class=tab><a href="sndscm.html#filetosounddata">file-&gt;sound-data</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makesyncframereader">make-sync-frame-reader</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#sounddataadd">sound-data-add!</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#asymmetric-fm">asymmetric-fm</a></em></td><td></td><td><em class=tab><a href="sndscm.html#filetovct">file-&gt;vct</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-table-lookup">make-table-lookup</a></em></td><td></td><td><em class=tab><a href="extsnd.html#padchannel">pad-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddatachans">sound-data-chans</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#asymmetric-fm?">asymmetric-fm?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filename">file-name</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-triangle-wave">make-triangle-wave</a></em></td><td></td><td><em class=tab><a href="sndscm.html#padmarks">pad-marks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddatacopy">sound-data-copy</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#audioinputdevice">audio-input-device</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericfilename"><b>file-name (generic)</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-two-pole">make-two-pole</a></em></td><td></td><td><em class=tab><a href="sndscm.html#padsound">pad-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddatafill">sound-data-fill!</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#audiooutputdevice">audio-output-device</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericfill"><b>fill! (generic)</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-two-zero">make-two-zero</a></em></td><td></td><td><em class=tab><a href="sndscm.html#panmix">pan-mix</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddatalength">sound-data-length</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#autoresize">auto-resize</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fillpolygon">fill-polygon</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makevariabledisplay">make-variable-display</a></em></td><td></td><td><em class=tab><a href="sndscm.html#panmixvct">pan-mix-vct</A></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddatamaxamp">sound-data-maxamp</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#autosavedoc">auto-save</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fillrectangle">fill-rectangle</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makevariablegraph">make-variable-graph</a></em></td><td></td><td><em class=tab><a href="sndclm.html#partialstopolynomial">partials-&gt;polynomial</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddatamultiply">sound-data-multiply!</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#autoupdate">auto-update</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filter">filter</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makevct">make-vct</a></em></td><td></td><td><em class=tab><a href="sndclm.html#partialstowave">partials-&gt;wave</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddataoffset">sound-data-offset!</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#autoupdateinterval">auto-update-interval</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filterchannel">filter-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-wave-train">make-wave-train</a></em></td><td></td><td><em class=tab><a href="extsnd.html#pausing">pausing</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddatapeak">sound-data-peak</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#autocorrelate">autocorrelate</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtercontrolcoeffs">filter-control-coeffs</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mapchannel">map-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#peakenvdir">peak-env-dir</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddataref">sound-data-ref</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#axiscolor">axis-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtercontrolenvelope">filter-control-envelope</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mapsound">map-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#peakenvhook">peak-env-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddatareverse">sound-data-reverse!</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#axisinfo">axis-info</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtercontrolindB">filter-control-in-dB</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mapsoundfiles">map-sound-files</a></em></td><td></td><td><em class=tab><a href="extsnd.html#peaks">peaks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddatascale">sound-data-scale!</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#axislabelfont">axis-label-font</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtercontrolinhz">filter-control-in-hz</a></em></td><td></td><td><em class=tab><a href="sndscm.html#maracadoc">maracas</a></em></td><td></td><td><em class=tab><a href="extsnd.html#peaksfont">peaks-font</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddataset">sound-data-set!</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#axisnumbersfont">axis-numbers-font</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtercontrolorder">filter-control-order</a></em></td><td></td><td><em class=tab><a href="extsnd.html#marktointeger">mark-&gt;integer</a></em></td><td></td><td><em class=tab><a href="sndclm.html#phase-partialstowave">phase-partials-&gt;wave</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddata?">sound-data?</a></em></td></tr>
- <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#filterwaveformcolor">filter-control-waveform-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markclickhook">mark-click-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#phase-vocoder">phase-vocoder</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundfileextensions">sound-file-extensions</a></em></td></tr>
- <tr><td bgcolor="lightgreen"><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#filtercontrolp">filter-control?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markcolor">mark-color</a></em></td><td></td><td><em class=tab><a href="sndclm.html#phase-vocoder?">phase-vocoder?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundfilep">sound-file?</a></em></td></tr>
- <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#filterselection">filter-selection</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markdraghook">mark-drag-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#prc95doc"><b>Physical Models</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundfilesindirectory">sound-files-in-directory</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#backgroundgradient">background-gradient</a></em></td><td></td><td><em class=tab><a href="sndscm.html#filterselectionandsmooth">filter-selection-and-smooth</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markdragtrianglehook">mark-drag-triangle-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#pianodoc">piano model</a></em></td><td></td><td><em class=tab><a href="sndscm.html#soundinterp">sound-interp</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#badheaderhook">bad-header-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtersound">filter-sound</a></em></td><td></td><td><em class=tab><a href="sndscm.html#markexplode">mark-explode</a></em></td><td></td><td><em class=tab><a href="sndclm.html#pink-noise">pink-noise</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sound-let">sound-let</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#bagpipe">bagpipe</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filter?">filter?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markhome">mark-home</a></em></td><td></td><td><em class=tab><a href="sndscm.html#placesound">place-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundloopinfo">sound-loop-info</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#basiccolor">basic-color</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filtered-comb">filtered-comb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markhook">mark-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#play">play</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundproperties">sound-properties</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#beatspermeasure">beats-per-measure</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filtered-comb?">filtered-comb?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#markloops">mark-loops</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericplay"><b>play (generic)</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#soundproperty">sound-property</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#beatsperminute">beats-per-minute</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtersinsnd"><b>Filters</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#markname">mark-name</a></em></td><td></td><td><em class=tab><a href="sndscm.html#playbetweenmarks">play-between-marks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundwidgets">sound-widgets</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#beforeclosehook">before-close-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#findchannel">find-channel</a></em></td><td></td><td><em class=tab><a href="sndscm.html#marknametoid">mark-name-&gt;id</a></em></td><td></td><td><em class=tab><a href="extsnd.html#playhook">play-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundp">sound?</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#beforeexithook">before-exit-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#finddialog">find-dialog</a></em></td><td></td><td><em class=tab><a href="sndscm.html#markproperties">mark-properties</a></em></td><td></td><td><em class=tab><a href="sndscm.html#playmixes">play-mixes</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundfontinfo">soundfont-info</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#beforesaveashook">before-save-as-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#findmark">find-mark</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markproperties">mark-properties</a></em></td><td></td><td><em class=tab><a href="sndscm.html#playsines">play-sines</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounds">sounds</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#beforesavestatehook">before-save-state-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#findmix">find-mix</a></em></td><td></td><td><em class=tab><a href="sndscm.html#markproperty">mark-property</a></em></td><td></td><td><em class=tab><a href="sndscm.html#playsyncdmarks">play-syncd-marks</a></em></td><td></td><td><em class=tab><a href="sndscm.html#twotab">spectral interpolation</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#beforetransformhook">before-transform-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#findsound">find-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#marksample">mark-sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#playerhome">player-home</a></em></td><td></td><td><em class=tab><a href="sndscm.html#spectralpolynomial">spectral-polynomial</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#analogfilterdoc">bessel filters</a></em></td><td></td><td><em class=tab><a href="extsnd.html#finishprogressreport">finish-progress-report</a></em></td><td></td><td><em class=tab><a href="extsnd.html#marksync">mark-sync</a></em></td><td></td><td><em class=tab><a href="extsnd.html#playerQ">player?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectrohop">spectro-hop</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#bigbird">bigbird</a></em></td><td></td><td><em class=tab><a href="sndclm.html#fir-filter">fir-filter</a></em></td><td></td><td><em class=tab><a href="extsnd.html#marksyncmax">mark-sync-max</a></em></td><td></td><td><em class=tab><a href="extsnd.html#players">players</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectroxangle">spectro-x-angle</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#bindkey">bind-key</a></em></td><td></td><td><em class=tab><a href="sndclm.html#fir-filter?">fir-filter?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#marktagheight">mark-tag-height</a></em></td><td></td><td><em class=tab><a href="extsnd.html#playexamples"><b>Playing</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectroxscale">spectro-x-scale</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#bird">bird</a></em></td><td></td><td><em class=tab><a href="sndclm.html#firmant">firmant</a></em></td><td></td><td><em class=tab><a href="extsnd.html#marktagwidth">mark-tag-width</a></em></td><td></td><td><em class=tab><a href="extsnd.html#playing">playing</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectroyangle">spectro-y-angle</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#boldpeaksfont">bold-peaks-font</a></em></td><td></td><td><em class=tab><a href="sndclm.html#firmant?">firmant?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markp">mark?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#pluck">pluck</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectroyscale">spectro-y-scale</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#bomb">bomb</a></em></td><td></td><td><em class=tab><a href="sndscm.html#stereoflute">flute model</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markstuff"><b>Marking</b></a></em></td><td></td><td><em class=tab><a href="grfsnd.html#sndandladspa"><b>Plugins</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectrozangle">spectro-z-angle</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#break">break</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fmbell">fm-bell</a></em></td><td></td><td><em class=tab><a href="extsnd.html#emarks">marks</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polartorectangular">polar-&gt;rectangular</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectrozscale">spectro-z-scale</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#brown-noise">brown-noise</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fmdrum">fm-drum</a></em></td><td></td><td><em class=tab><a href="sndscm.html#matchsoundfiles">match-sound-files</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polynomial">polynomial</a></em></td><td></td><td><em class=tab><a href="sndclm.html#spectrum">spectrum</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#analogfilterdoc">butterworth filters</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fmnoise">fm-noise</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixerdoc"><b>Matrices</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#polydoc">polynomial operations</a></em></td><td></td><td><em class=tab><a href="sndscm.html#spectrumtocoeffs">spectrum-&gt;coeffs</a></em></td></tr>
- <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#fmvox">fm-talker</a></em></td><td></td><td><em class=tab><a href="sndscm.html#maxenvelope">max-envelope</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polyoid">polyoid</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectrumend">spectrum-end</a></em></td></tr>
- <tr><td bgcolor="lightgreen"><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#fmtrumpet">fm-trumpet</a></em></td><td></td><td><em class=tab><a href="extsnd.html#maxregions">max-regions</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polyoidenv">polyoid-env</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectrumstart">spectrum-start</a></em></td></tr>
- <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#vdoc">fm-violin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#maxfftpeaks">max-transform-peaks</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polyoid?">polyoid?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#speedcontrol">speed-control</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#cgx">c-g!</a></em></td><td></td><td><em class=tab><a href="sndscm.html#reson">fm-voice</a></em></td><td></td><td><em class=tab><a href="extsnd.html#maxvirtualptrees">max-virtual-ptrees</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polyshape">polyshape</a></em></td><td></td><td><em class=tab><a href="extsnd.html#speedcontrolbounds">speed-control-bounds</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#cgp">c-g?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#focuswidget">focus-widget</a></em></td><td></td><td><em class=tab><a href="extsnd.html#maxamp">maxamp</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polyshape?">polyshape?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#speedstyle">speed-control-style</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#callin">call_in</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fofins">FOF synthesis</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericmaxamp"><b>maxamp (generic)</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#polywave">polywave</a></em></td><td></td><td><em class=tab><a href="extsnd.html#speedtones">speed-control-tones</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#cascadetocanonical">cascade-&gt;canonical</a></em></td><td></td><td><em class=tab><a href="sndscm.html#foreachchild">for-each-child</a></em></td><td></td><td><em class=tab><a href="extsnd.html#maxampposition">maxamp-position</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polywave?">polywave?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#square-wave">square-wave</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#chaindsps">chain-dsps</a></em></td><td></td><td><em class=tab><a href="sndscm.html#foreachsoundfile">for-each-sound-file</a></em></td><td></td><td><em class=tab><a href="extsnd.html#maxampexamples"><b>Maxamps</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#positiontox">position-&gt;x</a></em></td><td></td><td><em class=tab><a href="sndclm.html#square-wave?">square-wave?</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#channeltovct">channel-&gt;vct</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fp">Forbidden Planet</a></em></td><td></td><td><em class=tab><a href="extsnd.html#menuwidgets">menu-widgets</a></em></td><td></td><td><em class=tab><a href="extsnd.html#positiontoy">position-&gt;y</a></em></td><td></td><td><em class=tab><a href="extsnd.html#squelchupdate">squelch-update</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#channelampenvs">channel-amp-envs</a></em></td><td></td><td><em class=tab><a href="extsnd.html#foregroundcolor">foreground-color</a></em></td><td></td><td><em class=tab><a href="sndscm.html#menusdoc">menus, optional</a></em></td><td></td><td><em class=tab><a href="extsnd.html#positioncolor">position-color</a></em></td><td></td><td><em class=tab><a href="sndscm.html#squelchvowels">squelch-vowels</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#channeldata">channel-data</a></em></td><td></td><td><em class=tab><a href="extsnd.html#forgetregion">forget-region</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mindb">min-dB</a></em></td><td></td><td><em class=tab><a href="sndscm.html#powerenv">power-env</a></em></td><td></td><td><em class=tab><a href="extsnd.html#srate">srate</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#channelenvelope">channel-envelope</a></em></td><td></td><td><em class=tab><a href="sndclm.html#formant">formant</a></em></td><td></td><td><em class=tab><a href="extsnd.html#minibufferhistorylength">minibuffer-history-length</a></em></td><td></td><td><em class=tab><a href="extsnd.html#preferencesdialog">preferences-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericsrate"><b>srate (generic)</b></a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#channelpolynomial">channel-polynomial</a></em></td><td></td><td><em class=tab><a href="sndclm.html#formant?">formant?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mix">mix</a></em></td><td></td><td><em class=tab><a href="sndscm.html#previousframe">previous-frame</a></em></td><td></td><td><em class=tab><a href="sndclm.html#src">src</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#channelproperties">channel-properties</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#sndandforth"><b>Forth</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixtointeger">mix-&gt;integer</a></em></td><td></td><td><em class=tab><a href="extsnd.html#previoussample">previous-sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#srcchannel">src-channel</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#channelproperty">channel-property</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fouriertransform">fourier-transform</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixtovct">mix-&gt;vct</a></em></td><td></td><td><em class=tab><a href="extsnd.html#printdialog">print-dialog</a></em></td><td></td><td><em class=tab><a href="sndscm.html#srcduration">src-duration</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#channelrms">channel-rms</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fractionalfouriertransform">fractional-fourier-transform</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixamp">mix-amp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#printhook">print-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#srcmixes">src-mixes</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#channelstyle">channel-style</a></em></td><td></td><td><em class=tab><a href="sndclm.html#frame1">frame</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixampenv">mix-amp-env</a></em></td><td></td><td><em class=tab><a href="extsnd.html#printlength">print-length</a></em></td><td></td><td><em class=tab><a href="extsnd.html#srcsoundselection">src-selection</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#channelsync">channel-sync</a></em></td><td></td><td><em class=tab><a href="sndclm.html#frame*">frame*</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixchannel">mix-channel</a></em></td><td></td><td><em class=tab><a href="sndscm.html#profile">profile</a></em></td><td></td><td><em class=tab><a href="extsnd.html#srcsound">src-sound</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#channelwidgets">channel-widgets</a></em></td><td></td><td><em class=tab><a href="sndclm.html#frame+">frame+</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixclickhook">mix-click-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#progressreport">progress-report</a></em></td><td></td><td><em class=tab><a href="sndclm.html#src?">src?</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#channels">channels</a></em></td><td></td><td><em class=tab><a href="sndclm.html#frametofile">frame-&gt;file</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixcolor">mix-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#promptinminibuffer">prompt-in-minibuffer</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ssb-am">ssb-am</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#genericchannels"><b>channels (generic)</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#frametofile?">frame-&gt;file?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixdialogmix">mix-dialog-mix</a></em></td><td></td><td><em class=tab><a href="extsnd.html#ptreechannel">ptree-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ssb-am?">ssb-am?</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#channelsequal">channels-equal?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#frametoframe">frame-&gt;frame</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixdraghook">mix-drag-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#pulse-train">pulse-train</a></em></td><td></td><td><em class=tab><a href="sndscm.html#ssbbank">ssb-bank</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#channelstyleconstants">channels-separate</a></em></td><td></td><td><em class=tab><a href="sndclm.html#frametolist">frame-&gt;list</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixfiledialog">mix-file-dialog</a></em></td><td></td><td><em class=tab><a href="sndclm.html#pulse-train?">pulse-train?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#ssbbankenv">ssb-bank-env</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#channels=">channels=?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#frametosample">frame-&gt;sample</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixframe">mix-frame</a></em></td><td></td><td><em class=tab><a href="extsnd.html#pushedbuttoncolor">pushed-button-color</a></em></td><td></td><td><em class=tab><a href="sndscm.html#ssbfm">ssb-fm</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#chans">chans</a></em></td><td></td><td><em class=tab><a href="sndscm.html#frametosound">frame-&gt;sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixhome">mix-home</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#starthook">start-hook</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#analogfilterdoc">chebyshev filters</a></em></td><td></td><td><em class=tab><a href="sndscm.html#frametosounddata">frame-&gt;sound-data</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixlength">mix-length</a></em></td><td></td><td bgcolor="lightgreen"><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#startplaying">start-playing</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#checkforunsavededits">check-for-unsaved-edits</a></em></td><td></td><td><em class=tab><a href="sndscm.html#frametovct">frame-&gt;vct</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixmaxamp">mix-maxamp</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#startplayinghook">start-playing-hook</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#checkmixtags">check-mix-tags</a></em></td><td></td><td><em class=tab><a href="sndscm.html#framecopy">frame-copy</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixmovesound">mix-move-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#quitbuttoncolor">quit-button-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#startplayingselectionhook">start-playing-selection-hook</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#cleanchannel">clean-channel</a></em></td><td></td><td><em class=tab><a href="sndscm.html#framereaderatendQ">frame-reader-at-end?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixname">mix-name</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#startprogressreport">start-progress-report</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#cleansound">clean-sound</a></em></td><td></td><td><em class=tab><a href="sndscm.html#framereaderchans">frame-reader-chans</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixnametoid">mix-name-&gt;id</a></em></td><td></td><td bgcolor="lightgreen"><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#startwaterfall">start-waterfall</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#clear-array">clear-array</a></em></td><td></td><td><em class=tab><a href="sndscm.html#framereaderhome">frame-reader-home</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixposition">mix-position</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#stereotomono">stereo-&gt;mono</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#clearlistener">clear-listener</a></em></td><td></td><td><em class=tab><a href="sndscm.html#framereaderposition">frame-reader-position</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixproperties">mix-properties</a></em></td><td></td><td><em class=tab><a href="sndclm.html#radianstodegrees">radians-&gt;degrees</a></em></td><td></td><td><em class=tab><a href="extsnd.html#stopdachook">stop-dac-hook</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#clearminibuffer">clear-minibuffer</a></em></td><td></td><td><em class=tab><a href="sndscm.html#framereaderQ">frame-reader?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixproperty">mix-property</a></em></td><td></td><td><em class=tab><a href="sndclm.html#radianstohz">radians-&gt;hz</a></em></td><td></td><td><em class=tab><a href="extsnd.html#stopplayer">stop-player</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#clearselection">clear-selection</a></em></td><td></td><td><em class=tab><a href="sndclm.html#frame-ref">frame-ref</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixregion">mix-region</a></em></td><td></td><td><em class=tab><a href="extsnd.html#rampchannel">ramp-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#stopplaying">stop-playing</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#cliphook">clip-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#framereverse">frame-reverse!</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixreleasehook">mix-release-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rand">rand</a></em></td><td></td><td><em class=tab><a href="extsnd.html#stopplayinghook">stop-playing-hook</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#clipping">clipping</a></em></td><td></td><td><em class=tab><a href="sndclm.html#frame-set!">frame-set!</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixsamplerQ">mix-sampler?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rand-interp">rand-interp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#stopplayingselectionhook">stop-playing-selection-hook</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#clmchannel">clm-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#frame?">frame?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixselection">mix-selection</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rand-interp?">rand-interp?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#stretchenvelope">stretch-envelope</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#clmload">clm-load</a></em></td><td></td><td><em class=tab><a href="sndclm.html#framedoc"><b>frames</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixsound">mix-sound</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rand?">rand?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#superimposeffts">superimpose-ffts</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#clonesoundas">clone-sound-as</a></em></td><td></td><td><em class=tab><a href="extsnd.html#frames">frames</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixsounddata">mix-sound-data</a></em></td><td></td><td><em class=tab><a href="sndscm.html#allrandomnumbers"><b>Random Numbers</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#swapchannels">swap-channels</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#closehook">close-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericframes"><b>frames (generic)</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixspeed">mix-speed</a></em></td><td></td><td><em class=tab><a href="sndscm.html#readframe">read-frame</a></em></td><td></td><td><em class=tab><a href="sndscm.html#swapselectionchannels">swap-selection-channels</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#closesound">close-sound</a></em></td><td></td><td><em class=tab><a href="sndscm.html#freeframereader">free-frame-reader</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixsync">mix-sync</a></em></td><td></td><td><em class=tab><a href="extsnd.html#readhook">read-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sync">sync</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colortolist">color-&gt;list</a></em></td><td></td><td><em class=tab><a href="extsnd.html#freeplayer">free-player</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixsyncmax">mix-sync-max</a></em></td><td></td><td><em class=tab><a href="extsnd.html#readmixsample">read-mix-sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericsync"><b>sync (generic)</b></a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colorcutoff">color-cutoff</a></em></td><td></td><td><em class=tab><a href="extsnd.html#freesampler">free-sampler</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixtagheight">mix-tag-height</a></em></td><td></td><td><em class=tab><a href="extsnd.html#readonly">read-only</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sync-all">sync-all</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colorhook">color-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#freeverb">freeverb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixtagwidth">mix-tag-width</a></em></td><td></td><td><em class=tab><a href="extsnd.html#readregionsample">read-region-sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#syncmax">sync-max</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colorinverted">color-inverted</a></em></td><td></td><td><em class=tab><a href="fm.html#fmintro"><b>Frequency Modulation</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixtagy">mix-tag-y</a></em></td><td></td><td><em class=tab><a href="extsnd.html#readsample">read-sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#syncdmarks">syncd-marks</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#colormixes">color-mixes</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fullmix">fullmix</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixvct">mix-vct</a></em></td><td></td><td><em class=tab><a href="sndclm.html#readin">readin</a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colororientationdialog">color-orientation-dialog</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#mixwaveformheight">mix-waveform-height</a></em></td><td></td><td><em class=tab><a href="sndclm.html#readin?">readin?</a></em></td><td></td><td bgcolor="lightgreen"><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colorscale">color-scale</a></em></td><td></td><td bgcolor="lightgreen"><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#mixp">mix?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#recorderdialog">recorder-dialog</a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colorp">color?</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#mixer1">mixer</a></em></td><td></td><td><em class=tab><a href="snd.html#recordfile"><b>Recording</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#table-lookup">table-lookup</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colormap">colormap</a></em></td><td></td><td><em class=tab><a href="sndscm.html#gaussiandistribution">gaussian-distribution</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mixermultiply">mixer*</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rectangulartomagnitudes">rectangular-&gt;magnitudes</a></em></td><td></td><td><em class=tab><a href="sndclm.html#table-lookup?">table-lookup?</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colormaptointeger">colormap-&gt;integer</a></em></td><td></td><td><em class=tab><a href="extsnd.html#gcoff">gc-off</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixerdoc">mixer as matrix</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rectangulartopolar">rectangular-&gt;polar</a></em></td><td></td><td><em class=tab><a href="sndclm.html#tap">tap</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colormapname">colormap-name</a></em></td><td></td><td><em class=tab><a href="extsnd.html#gcon">gc-on</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mixeradd">mixer+</a></em></td><td></td><td><em class=tab><a href="extsnd.html#redo">redo</a></em></td><td></td><td><em class=tab><a href="sndscm.html#telephone">telephone</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colormapref">colormap-ref</a></em></td><td></td><td><em class=tab><a href="sndclm.html#generators"><b>Generators</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixercopy">mixer-copy</a></em></td><td></td><td><em class=tab><a href="extsnd.html#redochannel">redo-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#tempdir">temp-dir</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colormapsize">colormap-size</a></em></td><td></td><td><em class=tab><a href="extsnd.html#glgraphtops">gl-graph-&gt;ps</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixer-determinant">mixer-determinant</a></em></td><td></td><td><em class=tab><a href="extsnd.html#redoedit">redo-edit</a></em></td><td></td><td><em class=tab><a href="extsnd.html#textfocuscolor">text-focus-color</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colormapp">colormap?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#glspectrogram">glSpectrogram</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixer-inverse">mixer-inverse</a></em></td><td></td><td><em class=tab><a href="sndscm.html#regiontoframe">region-&gt;frame</a></em></td><td></td><td><em class=tab><a href="extsnd.html#timegraphhook">time-graph-hook</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colors"><b>Colors</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#goertzel">goertzel</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixer-poly">mixer-poly</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regiontointeger">region-&gt;integer</a></em></td><td></td><td><em class=tab><a href="extsnd.html#timegraphstyle">time-graph-style</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#comb">comb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#gotolistenerend">goto-listener-end</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mixer-ref">mixer-ref</a></em></td><td></td><td><em class=tab><a href="sndscm.html#regiontosounddata">region-&gt;sound-data</a></em></td><td></td><td><em class=tab><a href="extsnd.html#timegraphtype">time-graph-type</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#comb?">comb?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#grani">grani</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mixer-set!">mixer-set!</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regiontovct">region-&gt;vct</a></em></td><td></td><td><em class=tab><a href="extsnd.html#timegraphp">time-graph?</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#comment">comment</a></em></td><td></td><td><em class=tab><a href="sndclm.html#grains"><b>Granular synthesis</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixer-solve">mixer-solve</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionchans">region-chans</a></em></td><td></td><td><em class=tab><a href="extsnd.html#tinyfont">tiny-font</a></em></td></tr>
- <tr><td><em class=tab><a href="grfsnd.html#sndwithcm"><b>Common Music</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#granulate">granulate</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixer-transpose">mixer-transpose</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionframes">region-frames</a></em></td><td></td><td><em class=tab><a href="extsnd.html#trackingcursors"><b>Tracking cursors</b></a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#compandchannel">compand-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#granulate?">granulate?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mixer?">mixer?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regiongraphstyle">region-graph-style</a></em></td><td></td><td><em class=tab><a href="extsnd.html#trackingcursorstyle">tracking-cursor-style</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#compandsound">compand-sound</a></em></td><td></td><td><em class=tab><a href="sndscm.html#granulatedsoundinterp">granulated-sound-interp</a></em></td><td></td><td><em class=tab><a href="sndclm.html#framedoc"><b>mixers</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionhome">region-home</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformtointeger">transform-&gt;integer</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#concatenateenvelopes">concatenate-envelopes</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graph">graph</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixes">mixes</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionmaxamp">region-maxamp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformtovct">transform-&gt;vct</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#continue-frametofile">continue-frame-&gt;file</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphtops">graph-&gt;ps</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndmixes"><b>Mixing</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionmaxampposition">region-maxamp-position</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformdialog">transform-dialog</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#continue-sampletofile">continue-sample-&gt;file</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphcolor">graph-color</a></em></td><td></td><td><em class=tab><a href="sndscm.html#monotostereo">mono-&gt;stereo</a></em></td><td></td><td><em class=tab><a href="sndscm.html#regionplaylist">region-play-list</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformframes">transform-frames</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#contrastchannel">contrast-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphcursor">graph-cursor</a></em></td><td></td><td><em class=tab><a href="sndscm.html#moogfilter">moog-filter</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionposition">region-position</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformgraphstyle">transform-graph-style</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#contrastcontrol">contrast-control</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphdata">graph-data</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseclickhook">mouse-click-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionsample">region-sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformgraphtype">transform-graph-type</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#contrastcontrolamp">contrast-control-amp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphhook">graph-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mousedraghook">mouse-drag-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionsamplerQ">region-sampler?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformgraphp">transform-graph?</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#contrastcontrolbounds">contrast-control-bounds</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphlines">graph-lines</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseentergraphhook">mouse-enter-graph-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionsrate">region-srate</a></em></td><td></td><td><em class=tab><a href="extsnd.html#normalizefft">transform-normalization</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#contrastcontrolp">contrast-control?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphstyle">graph-style</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseenterlabelhook">mouse-enter-label-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionok">region?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformsample">transform-sample</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#contrast-enhancement">contrast-enhancement</a></em></td><td></td><td><em class=tab><a href="sndscm.html#grapheq">graphic equalizer</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseenterlistenerhook">mouse-enter-listener-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionstuff"><b>Regions</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformsize">transform-size</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#contrastsound">contrast-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphshorizontal">graphs-horizontal</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseentertexthook">mouse-enter-text-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#eregions">regions</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformtype">transform-type</a></em></td></tr>
- <tr><td><em class=tab><a href="snd.html#controls"><b>Control Panel</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#green-noise">green-noise</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseleavegraphhook">mouse-leave-graph-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#remembersoundstate">remember-sound-state</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformp">transform?</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#controlstochannel">controls-&gt;channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#green-noise-interp">green-noise-interp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseleavelabelhook">mouse-leave-label-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#removefrommenu">remove-from-menu</a></em></td><td></td><td><em class=tab><a href="sndscm.html#transposemixes">transpose-mixes</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#convolution">convolution</a></em></td><td></td><td><em class=tab><a href="extsnd.html#griddensity">grid-density</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mousleavelistenerhook">mouse-leave-listener-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reportinminibuffer">report-in-minibuffer</a></em></td><td></td><td><em class=tab><a href="extsnd.html#trapsegfault">trap-segfault</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#convolvewith">convolution reverb</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#mousleavetexthook">mouse-leave-text-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#resampleexamples"><b>Resampling</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#triangle-wave">triangle-wave</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#convolve">convolve</a></em></td><td></td><td bgcolor="lightgreen"><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#mousepresshook">mouse-press-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#resetallhooks">reset-all-hooks</a></em></td><td></td><td><em class=tab><a href="sndclm.html#triangle-wave?">triangle-wave?</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#convolvefiles">convolve-files</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#move-locsig">move-locsig</a></em></td><td></td><td><em class=tab><a href="extsnd.html#resetbuttoncolor">reset-button-color</a></em></td><td></td><td><em class=tab><a href="sndscm.html#tubebell">tubular bell</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#convolveselectionwith">convolve-selection-with</a></em></td><td></td><td><em class=tab><a href="sndscm.html#harmonicizer">harmonicizer</a></em></td><td></td><td><em class=tab><a href="sndscm.html#movemixes">move-mixes</a></em></td><td></td><td><em class=tab><a href="extsnd.html#resetcontrols">reset-controls</a></em></td><td></td><td><em class=tab><a href="sndclm.html#two-pole">two-pole</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#convolvewith">convolve-with</a></em></td><td></td><td><em class=tab><a href="sndscm.html#dht">Hartley transform</a></em></td><td></td><td><em class=tab><a href="sndclm.html#move-sound">move-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#resetlistenercursor">reset-listener-cursor</a></em></td><td></td><td><em class=tab><a href="sndclm.html#two-pole?">two-pole?</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#convolve?">convolve?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#headertype">header-type</a></em></td><td></td><td><em class=tab><a href="sndclm.html#move-sound?">move-sound?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#restorecontrols">restore-controls</a></em></td><td></td><td><em class=tab><a href="sndclm.html#two-zero">two-zero</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#genericcopy"><b>copy (generic)</b></a></em></td><td></td><td><em class=tab><a href="snd.html#formats"><b>Headers and Data formats</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-autocorrelation">moving-autocorrelation</A></em></td><td></td><td><em class=tab><a href="sndscm.html#reverbexamples"><b>Reverb</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#two-zero?">two-zero?</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#copyframereader">copy-frame-reader</a></em></td><td></td><td><em class=tab><a href="sndscm.html#hellodentist">hello-dentist</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-autocorrelation?">moving-autocorrelation?</A></em></td><td></td><td><em class=tab><a href="sndclm.html#*reverb*">*reverb*</a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#copysampler">copy-sampler</a></em></td><td></td><td><em class=tab><a href="extsnd.html#helpbuttoncolor">help-button-color</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-average">moving-average</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbdecay">reverb-control-decay</a></em></td><td></td><td bgcolor="lightgreen"><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#copying"><b>Copying</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#helpdialog">help-dialog</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-average?">moving-average?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrolfeedback">reverb-control-feedback</a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#correlate">correlate</a></em></td><td></td><td><em class=tab><a href="extsnd.html#helphook">help-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-fft">moving-fft</A></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrollength">reverb-control-length</a></em></td><td></td><td><em class=tab><a href="extsnd.html#unbindkey">unbind-key</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#countmatches">count-matches</a></em></td><td></td><td><em class=tab><a href="extsnd.html#hidewidget">hide-widget</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-fft?">moving-fft?</A></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrollengthbounds">reverb-control-length-bounds</a></em></td><td></td><td><em class=tab><a href="sndscm.html#unclipchannel">unclip-channel</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#createssbdialog">create-ssb-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#highlightcolor">highlight-color</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-length">moving-length</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrollowpass">reverb-control-lowpass</a></em></td><td></td><td><em class=tab><a href="extsnd.html#undo">undo</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#mixdoc">cross-fade (amplitude)</a></em></td><td></td><td><em class=tab><a href="sndscm.html#hilberttransform">hilbert-transform</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-max">moving-max</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrolscale">reverb-control-scale</a></em></td><td></td><td><em class=tab><a href="extsnd.html#undoexamples"><b>Undo and Redo</b></a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#fadedoc">cross-fade (frequency domain)</a></em></td><td></td><td><em class=tab><a href="sndscm.html#hookmember">hook-member</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-pitch">moving-pitch</A></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrolscalebounds">reverb-control-scale-bounds</a></em></td><td></td><td><em class=tab><a href="extsnd.html#undochannel">undo-channel</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#crosssynthesis">cross-synthesis</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndhooks"><b>Hooks</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-pitch?">moving-pitch?</A></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrolp">reverb-control?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#undoedit">undo-edit</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#currenteditposition">current-edit-position</a></em></td><td></td><td><em class=tab><a href="extsnd.html#htmldir">html-dir</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-rms">moving-rms</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reversechannel">reverse-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#undohook">undo-hook</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#currentfont">current-font</a></em></td><td></td><td><em class=tab><a href="extsnd.html#htmlprogram">html-program</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-scentroid">moving-scentroid</A></em></td><td></td><td><em class=tab><a href="extsnd.html#reversechannels">reverse-channels</a></em></td><td></td><td><em class=tab><a href="sndscm.html#updategraphs">update-graphs</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#cursor">cursor</a></em></td><td></td><td><em class=tab><a href="sndclm.html#hztoradians">hz-&gt;radians</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-scentroid?">moving-scentroid?</A></em></td><td></td><td><em class=tab><a href="sndscm.html#reverseenvelope">reverse-envelope</a></em></td><td></td><td><em class=tab><a href="extsnd.html#updatehook">update-hook</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#cursorcolor">cursor-color</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#moving-spectrum">moving-spectrum</A></em></td><td></td><td><em class=tab><a href="extsnd.html#reverseselection">reverse-selection</a></em></td><td></td><td><em class=tab><a href="extsnd.html#updatelispgraph">update-lisp-graph</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#cursorfollowsplay">cursor-follows-play</a></em></td><td></td><td bgcolor="lightgreen"><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#moving-spectrum?">moving-spectrum?</A></em></td><td></td><td><em class=tab><a href="extsnd.html#reversesound">reverse-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#updatesound">update-sound</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#cursorchoices">cursor-in-view</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#moving-sum">moving-sum</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverseexamples"><b>Reversing</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#updatetimegraph">update-time-graph</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#cursorlocationoffset">cursor-location-offset</a></em></td><td></td><td><em class=tab><a href="sndclm.html#iir-filter">iir-filter</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mpg">mpg</a></em></td><td></td><td><em class=tab><a href="extsnd.html#revertsound">revert-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#updatetransformgraph">update-transform-graph</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#cursorposition">cursor-position</a></em></td><td></td><td><em class=tab><a href="sndclm.html#iir-filter?">iir-filter?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#multiply-arrays">multiply-arrays</a></em></td><td></td><td><em class=tab><a href="extsnd.html#rightsample">right-sample</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sndmotifdoc">user interface extensions</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#cursorsize">cursor-size</a></em></td><td></td><td><em class=tab><a href="extsnd.html#gin">in</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musalsabuffersize">mus-alsa-buffer-size</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ring-modulate">ring-modulate</a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#cursorstyle">cursor-style</a></em></td><td></td><td><em class=tab><a href="sndclm.html#in-any">in-any</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musalsabuffers">mus-alsa-buffers</a></em></td><td></td><td><em class=tab><a href="sndscm.html#rmsgain">rms</a></em></td><td></td><td bgcolor="lightgreen"><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#cursorupdateinterval">cursor-update-interval</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ina">ina</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musalsacapturedevice">mus-alsa-capture-device</a></em></td><td></td><td><em class=tab><a href="sndscm.html#rmsgain">rms, gain, balance gens</a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#cursorexamples"><b>Cursors</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#inb">inb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musalsadevice">mus-alsa-device</a></em></td><td></td><td><em class=tab><a href="sndscm.html#rmsenvelope">rms-envelope</a></em></td><td></td><td><em class=tab><a href="sndscm.html#variabledisplay">variable-display</a></em></td></tr>
- <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#infodialog">info-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musalsaplaybackdevice">mus-alsa-playback-device</a></em></td><td></td><td><em class=tab><a href="extsnd.html#rotatechannel">rotate-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#variablegraphp">variable-graph?</a></em></td></tr>
- <tr><td bgcolor="lightgreen"><em class=tab> </em></td><td></td><td><em class=tab><a href="grfsnd.html#initladspa">init-ladspa</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musalsasquelchwarning">mus-alsa-squelch-warning</a></em></td><td></td><td><em class=tab><a href="sndscm.html#rubbersound">rubber-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vct">vct</a></em></td></tr>
- <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#initialgraphhook">initial-graph-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#musarrayprintlength">mus-array-print-length</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#sndandruby"><b>Ruby</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#vcttimes">vct*</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#dacfolding">dac-combines-channels</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#sndinitfile"><b>Initialization file</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#musaudioclose">mus-audio-close</a></em></td><td></td><td><em class=tab><a href="sndscm.html#run">run</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctplus">vct+</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#dachook">dac-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#insertchannel">insert-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musaudiodescribe">mus-audio-describe</a></em></td><td></td><td><em class=tab><a href="extsnd.html#run">run</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vcttochannel">vct-&gt;channel</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#dacsize">dac-size</a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertfiledialog">insert-file-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musaudioopeninput">mus-audio-open-input</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#vcttofile">vct-&gt;file</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#datacolor">data-color</a></em></td><td></td><td><em class=tab><a href="sndscm.html#insertframe">insert-frame</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musaudioopenoutput">mus-audio-open-output</a></em></td><td></td><td bgcolor="lightgreen"><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#vcttoframe">vct-&gt;frame</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#dataformat">data-format</a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertregion">insert-region</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musaudioread">mus-audio-read</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#vcttolist">vct-&gt;list</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#datalocation">data-location</a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertsample">insert-sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musaudiowrite">mus-audio-write</a></em></td><td></td><td><em class=tab><a href="s7.html#s7doc"><b>s7 scheme</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#vcttosounddata">vct-&gt;sound-data</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#datasize">data-size</a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertsamples">insert-samples</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musbytespersample">mus-bytes-per-sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sample">sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vcttostring">vct-&gt;string</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#dbtolinear">db-&gt;linear</a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertselection">insert-selection</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-channel">mus-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#sampletofile">sample-&gt;file</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vcttovector">vct-&gt;vector</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#cdebugging"><b>Debugging (C)</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertsilence">insert-silence</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-channels">mus-channels</a></em></td><td></td><td><em class=tab><a href="sndclm.html#sampletofile?">sample-&gt;file?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctadd">vct-add!</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#variabledisplay"><b>Debugging (instruments)</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertsound">insert-sound</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-chebyshev-tu-sum">mus-chebyshev-tu-sum</a></em></td><td></td><td><em class=tab><a href="sndclm.html#sampletoframe">sample-&gt;frame</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctcopy">vct-copy</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#snderrors"><b>Debugging (Scheme)</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#insertsounddata">insert-sound-data</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musclipping">mus-clipping</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sampleratendQ">sampler-at-end?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctfill">vct-fill!</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#def-clm-struct">def-clm-struct</a></em></td><td></td><td><em class=tab><a href="sndscm.html#insertvct">insert-vct</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-close">mus-close</a></em></td><td></td><td><em class=tab><a href="extsnd.html#samplerhome">sampler-home</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctlength">vct-length</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#defaultoutputchans">default-output-chans</a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertionexamples"><b>Insertions</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-data">mus-data</a></em></td><td></td><td><em class=tab><a href="extsnd.html#samplerposition">sampler-position</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctmap">vct-map!</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#defaultoutputdataformat">default-output-data-format</a></em></td><td></td><td><em class=tab><a href="sndclm.html#instruments"><b>Instruments</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#musdataformattostring">mus-data-format-&gt;string</a></em></td><td></td><td><em class=tab><a href="extsnd.html#samplerQ">sampler?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctmove">vct-move!</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#defaultoutputheadertype">default-output-header-type</a></em></td><td></td><td><em class=tab><a href="sndclm.html#instruments">instruments</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musdataformatname">mus-data-format-name</a></em></td><td></td><td><em class=tab><a href="extsnd.html#samplers"><b>samplers</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctmultiply">vct-multiply!</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#defaultoutputsrate">default-output-srate</a></em></td><td></td><td><em class=tab><a href="extsnd.html#integertocolormap">integer-&gt;colormap</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-describe">mus-describe</a></em></td><td></td><td><em class=tab><a href="extsnd.html#samples">samples</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctoffset">vct-offset!</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#defgenerator">defgenerator</a></em></td><td></td><td><em class=tab><a href="extsnd.html#integertomark">integer-&gt;mark</a></em></td><td></td><td><em class=tab><a href="extsnd.html#muserrorhook">mus-error-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#samplestoseconds">samples-&gt;seconds</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctpeak">vct-peak</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#defineenvelope">define-envelope</a></em></td><td></td><td><em class=tab><a href="extsnd.html#integertomix">integer-&gt;mix</a></em></td><td></td><td><em class=tab><a href="extsnd.html#muserrortypetostring">mus-error-type-&gt;string</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sashcolor">sash-color</a></em></td><td></td><td><em class=tab><a href="sndscm.html#vctpolynomial">vct-polynomial</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#defineselectionviamarks">define-selection-via-marks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#integertoregion">integer-&gt;region</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musexpandfilename">mus-expand-filename</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savecontrols">save-controls</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctref">vct-ref</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#definstrument">definstrument</a></em></td><td></td><td><em class=tab><a href="extsnd.html#integertosound">integer-&gt;sound</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-feedback">mus-feedback</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savedir">save-dir</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctreverse">vct-reverse!</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#defvar">defvar</a></em></td><td></td><td><em class=tab><a href="extsnd.html#integertotransform">integer-&gt;transform</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-feedforward">mus-feedforward</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveedithistory">save-edit-history</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctscale">vct-scale!</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#degreestoradians">degrees-&gt;radians</a></em></td><td></td><td><em class=tab><a href="sndscm.html#integrateenvelope">integrate-envelope</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musfft">mus-fft</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveenvelopes">save-envelopes</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctset">vct-set!</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#delay">delay</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#sndswitches"><b>Invocation flags</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#musfilebuffersize">mus-file-buffer-size</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savehook">save-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctsubseq">vct-subseq</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#delaychannelmixes">delay-channel-mixes</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#musfileclipping">mus-file-clipping</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savelistener">save-listener</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctsubtract">vct-subtract!</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#delaytick">delay-tick</a></em></td><td></td><td bgcolor="lightgreen"><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#mus-file-name">mus-file-name</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savemacros">save-macros</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctp">vct?</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#delay?">delay?</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#musfileprescaler">mus-file-prescaler</a></em></td><td></td><td><em class=tab><a href="sndscm.html#savemarkproperties">save-mark-properties</a></em></td><td></td><td><em class=tab><a href="extsnd.html#Vcts"><b>Vcts</b></a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#deletecolormap">delete-colormap</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#sndandjack"><b>Jack</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#musfloatequalfudgefactor">mus-float-equal-fudge-factor</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savemarks">save-marks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vectortovct">vector-&gt;vct</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#deletefilefilter">delete-file-filter</a></em></td><td></td><td><em class=tab><a href="sndscm.html#jcreverb">jc-reverb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-frequency">mus-frequency</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savemix">save-mix</a></em></td><td></td><td><em class=tab><a href="extsnd.html#verbosecursor">verbose-cursor</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#deletefilesorter">delete-file-sorter</a></em></td><td></td><td><em class=tab><a href="sndscm.html#jcrevdoc">jc-reverb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#musgeneratorp">mus-generator?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#savemixes">save-mixes</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesamp">view-files-amp</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#deletemark">delete-mark</a></em></td><td></td><td><em class=tab><a href="extsnd.html#justsounds">just-sounds</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musheaderrawdefaults">mus-header-raw-defaults</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveregion">save-region</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesampenv">view-files-amp-env</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#deletemarks">delete-marks</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#musheadertypetostring">mus-header-type-&gt;string</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveregiondialog">save-region-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesdialog">view-files-dialog</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#deletesample">delete-sample</a></em></td><td></td><td bgcolor="lightgreen"><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#musheadertypename">mus-header-type-name</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveselection">save-selection</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesfiles">view-files-files</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#deletesamples">delete-samples</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#mus-hop">mus-hop</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveselectiondialog">save-selection-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesselecthook">view-files-select-hook</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#deleteselection">delete-selection</a></em></td><td></td><td><em class=tab><a href="sndscm.html#kalmanfilterchannel">kalman-filter-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-increment">mus-increment</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savesound">save-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesselectedfiles">view-files-selected-files</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#deleteselectionandsmooth">delete-selection-and-smooth</a></em></td><td></td><td><em class=tab><a href="extsnd.html#key">key</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-input?">mus-input?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savesoundas">save-sound-as</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilessort">view-files-sort</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#deletetransform">delete-transform</a></em></td><td></td><td><em class=tab><a href="snd.html#builtinkeys"><b>Key bindings</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-interp-type">mus-interp-type</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savesounddialog">save-sound-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesspeed">view-files-speed</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#deletewatcher">delete-watcher</a></em></td><td></td><td><em class=tab><a href="extsnd.html#keybinding">key-binding</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-interpolate">mus-interpolate</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savestate">save-state</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesspeedstyle">view-files-speed-style</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#deletionexamples"><b>Deletions</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#keypresshook">key-press-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-length">mus-length</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savestatefile">save-state-file</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewmixesdialog">view-mixes-dialog</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#describehook">describe-hook</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#mus-location">mus-location</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savestatehook">save-state-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewregionsdialog">view-regions-dialog</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#describemark">describe-mark</a></em></td><td></td><td bgcolor="lightgreen"><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#musmaxmalloc">mus-max-malloc</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveexamples"><b>Saving</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewsound">view-sound</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#dialogwidgets">dialog-widgets</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#musmaxtablesize">mus-max-table-size</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sgfilter">savitzky-golay-filter</a></em></td><td></td><td><em class=tab><a href="extsnd.html#ptreechannel"><b>Virtual Edits</b></a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#disablecontrolpanel">disable-control-panel</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#ladspadescriptor">ladspa-descriptor</a></em></td><td></td><td><em class=tab><a href="sndscm.html#musmix">mus-mix</a></em></td><td></td><td><em class=tab><a href="sndclm.html#sawtooth-wave">sawtooth-wave</a></em></td><td></td><td><em class=tab><a href="sndscm.html#singerdoc">voice physical model</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#displaybarkfft">display-bark-fft</a></em></td><td></td><td><em class=tab><a href="extsnd.html#ladspadir">ladspa-dir</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-name">mus-name</a></em></td><td></td><td><em class=tab><a href="sndclm.html#sawtooth-wave?">sawtooth-wave?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#voicedtounvoiced">voiced-&gt;unvoiced</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#displaydb">display-db</a></em></td><td></td><td><em class=tab><a href="extsnd.html#leftsample">left-sample</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-offset">mus-offset</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scaleby">scale-by</a></em></td><td></td><td><em class=tab><a href="sndscm.html#volterrafilter">volterra-filter</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#displayedits">display-edits</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericlength"><b>length (generic)</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-order">mus-order</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scalechannel">scale-channel</a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#displayscannedsynthesis">display-scanned-synthesis</A></em></td><td></td><td><em class=tab><a href="sndscm.html#makelevelmeter">level meters</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musosssetbuffers">mus-oss-set-buffers</a></em></td><td></td><td><em class=tab><a href="sndscm.html#scaleenvelope">scale-envelope</a></em></td><td></td><td bgcolor="lightgreen"><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#dissolvefade">dissolve-fade</a></em></td><td></td><td><em class=tab><a href="sndclm.html#lineartodb">linear-&gt;db</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musoutformat">mus-out-format</a></em></td><td></td><td><em class=tab><a href="sndscm.html#scalemixes">scale-mixes</a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#ditherchannel">dither-channel</a></em></td><td></td><td><em class=tab><a href="sndscm.html#linearsrcchannel">linear-src-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-output?">mus-output?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scaleselectionby">scale-selection-by</a></em></td><td></td><td><em class=tab><a href="sndclm.html#wave-train">wave-train</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#dithersound">dither-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#lispgraphhook">lisp-graph-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-phase">mus-phase</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scaleselectionto">scale-selection-to</a></em></td><td></td><td><em class=tab><a href="sndclm.html#wave-train?">wave-train?</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#dlocsig">dlocsig</a></em></td><td></td><td><em class=tab><a href="extsnd.html#lispgraphstyle">lisp-graph-style</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musprescaler">mus-prescaler</a></em></td><td></td><td><em class=tab><a href="sndscm.html#scalesound">scale-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#wavelettype">wavelet-type</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#dop">do?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#lispgraphp">lisp-graph?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-ramp">mus-ramp</a></em></td><td></td><td><em class=tab><a href="sndscm.html#scaletempo">scale-tempo</a></em></td><td></td><td><em class=tab><a href="sndscm.html#pqwvox">waveshaping voice</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#doitagainbuttoncolor">doit-again-button-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listtovct">list-&gt;vct</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-random">mus-random</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scaleto">scale-to</a></em></td><td></td><td><em class=tab><a href="extsnd.html#wavohop">wavo-hop</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#doitbuttoncolor">doit-button-color</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#listladspa">list-ladspa</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-reset">mus-reset</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scanchannel">scan-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#wavotrace">wavo-trace</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#dot-product">dot-product</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listenerclickhook">listener-click-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-run">mus-run</a></em></td><td></td><td><em class=tab><a href="sndscm.html#scansound">scan-sound</a></em></td><td></td><td><em class=tab><a href="sndclm.html#weighted-moving-average">weighted-moving-average</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#dotsize">dot-size</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listenercolor">listener-color</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-safety">mus-safety</a></em></td><td></td><td><em class=tab><a href="sndscm.html#dspdocscanned">scanned synthesis</a></em></td><td></td><td><em class=tab><a href="extsnd.html#widgetposition">widget-position</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#drawaxes">draw-axes</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listenerfont">listener-font</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-scaler">mus-scaler</a></em></td><td></td><td><em class=tab><a href="sndscm.html#scentroid">scentroid</a></em></td><td></td><td><em class=tab><a href="extsnd.html#widgetsize">widget-size</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#drawdot">draw-dot</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listenerprompt">listener-prompt</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundchans">mus-sound-chans</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scriptarg">script-arg</a></em></td><td></td><td><em class=tab><a href="extsnd.html#widgettext">widget-text</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#drawdots">draw-dots</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listenerselection">listener-selection</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundcloseinput">mus-sound-close-input</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scriptargs">script-args</a></em></td><td></td><td><em class=tab><a href="extsnd.html#movingwindows"><b>Window size and position</b></a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#drawline">draw-line</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listenertextcolor">listener-text-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundcloseoutput">mus-sound-close-output</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#sndwithnogui"><b>Scripting</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#windowheight">window-height</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#drawlines">draw-lines</a></em></td><td></td><td><em class=tab><a href="extsnd.html#littleendianp">little-endian?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundcomment">mus-sound-comment</a></em></td><td></td><td><em class=tab><a href="extsnd.html#searchprocedure">search-procedure</a></em></td><td></td><td><em class=tab><a href="extsnd.html#windowproperty">window-property</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#drawmarkhook">draw-mark-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#locsig">locsig</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussounddataformat">mus-sound-data-format</a></em></td><td></td><td><em class=tab><a href="extsnd.html#searchexamples"><b>Searching</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#windowpropertychangedhook">window-property-changed-hook</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#drawmixhook">draw-mix-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#locsig-ref">locsig-ref</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussounddatalocation">mus-sound-data-location</a></em></td><td></td><td><em class=tab><a href="sndclm.html#secondstosamples">seconds-&gt;samples</a></em></td><td></td><td><em class=tab><a href="sndscm.html#windowsamples">window-samples</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#drawstring">draw-string</a></em></td><td></td><td><em class=tab><a href="sndclm.html#locsig-reverb-ref">locsig-reverb-ref</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussounddatumsize">mus-sound-datum-size</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectall">select-all</a></em></td><td></td><td><em class=tab><a href="extsnd.html#windowwidth">window-width</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#makedropsite">drop sites</a></em></td><td></td><td><em class=tab><a href="sndclm.html#locsig-reverb-set!">locsig-reverb-set!</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundduration">mus-sound-duration</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectchannel">select-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#windowx">window-x</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#drophook">drop-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#locsig-set!">locsig-set!</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundforget">mus-sound-forget</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectchannelhook">select-channel-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#windowy">window-y</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#duringopenhook">during-open-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#locsig-type">locsig-type</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundframes">mus-sound-frames</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectsound">select-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withbackgroundprocesses">with-background-processes</a></em></td></tr>
- <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#locsig?">locsig?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundheadertype">mus-sound-header-type</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectsoundhook">select-sound-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withfilemonitor">with-file-monitor</a></em></td></tr>
- <tr><td bgcolor="lightgreen"><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#logfreqstart">log-freq-start</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundlength">mus-sound-length</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectedchannel">selected-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withgl">with-gl</a></em></td></tr>
- <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#loopbetweenmarks">loop-between-marks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundloopinfo">mus-sound-loop-info</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selecteddatacolor">selected-data-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withinsetgraph">with-inset-graph</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#editlists"><b>Edit lists</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#lpccoeffs">lpc-coeffs</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundmarkinfo">mus-sound-mark-info</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectedgraphcolor">selected-graph-color</a></em></td><td></td><td><em class=tab><a href="sndscm.html#withlocalhook">with-local-hook</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#editfragment">edit-fragment</a></em></td><td></td><td><em class=tab><a href="sndscm.html#lpcpredict">lpc-predict</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundmaxamp">mus-sound-maxamp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectedsound">selected-sound</a></em></td><td></td><td><em class=tab><a href="sndscm.html#withmarkedsound">with-marked-sound</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#editheaderdialog">edit-header-dialog</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundmaxampexists">mus-sound-maxamp-exists?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selection">selection</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withmixtags">with-mix-tags</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#edithook">edit-hook</a></em></td><td></td><td bgcolor="lightgreen"><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundopeninput">mus-sound-open-input</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectiontomix">selection-&gt;mix</a></em></td><td></td><td><em class=tab><a href="sndscm.html#withmixedsound">with-mixed-sound</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#editlisttofunction">edit-list-&gt;function</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundopenoutput">mus-sound-open-output</a></em></td><td></td><td><em class=tab><a href="sndscm.html#selectiontosounddata">selection-&gt;sound-data</a></em></td><td></td><td><em class=tab><a href="sndscm.html#withmixedsoundtonotelist">with-mixed-sound-&gt;notelist</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#editposition">edit-position</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mainmenu">main-menu</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundprune">mus-sound-prune</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionchans">selection-chans</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withpointerfocus">with-pointer-focus</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#editproperties">edit-properties</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mainwidgets">main-widgets</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundread">mus-sound-read</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectioncolor">selection-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withrelativepanes">with-relative-panes</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#editproperty">edit-property</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-all-pass">make-all-pass</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundreopenoutput">mus-sound-reopen-output</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectioncreatesregion">selection-creates-region</a></em></td><td></td><td><em class=tab><a href="sndscm.html#withreopenmenu">with-reopen-menu</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#edittree">edit-tree</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-asymmetric-fm">make-asymmetric-fm</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundreportcache">mus-sound-report-cache</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionframes">selection-frames</a></em></td><td></td><td><em class=tab><a href="sndscm.html#withsound">with-sound</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#edits">edits</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makebandpass">make-bandpass</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundsamples">mus-sound-samples</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionmaxamp">selection-maxamp</a></em></td><td></td><td><em class=tab><a href="sndscm.html#withtempsound">with-temp-sound</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#edot-product">edot-product</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makebandstop">make-bandstop</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundseekframe">mus-sound-seek-frame</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionmaxampposition">selection-maxamp-position</a></em></td><td></td><td><em class=tab><a href="sndscm.html#withtemporaryselection">with-temporary-selection</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#analogfilterdoc">elliptic filters</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makebiquad">make-biquad</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundsrate">mus-sound-srate</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionmember">selection-member?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#withthreadedchannels">with-threaded-channels</a></em></td></tr>
- <tr><td><em class=tab><a href="grfsnd.html#emacssnd"><b>Emacs and Snd</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#makebirds">make-birds</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundtypespecifier">mus-sound-type-specifier</a></em></td><td></td><td><em class=tab><a href="sndscm.html#selectionmembers">selection-members</a></em></td><td></td><td><em class=tab><a href="sndscm.html#withthreadedsound">with-threaded-sound</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#emacsstylesaveas">emacs-style-save-as</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makecolor">make-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundwrite">mus-sound-write</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionposition">selection-position</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withtrackingcursor">with-tracking-cursor</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#env">env</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-comb">make-comb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundwritedate">mus-sound-write-date</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionsrate">selection-srate</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withverbosecursor">with-verbose-cursor</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#env-any">env-any</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-convolve">make-convolve</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mussrate">mus-srate</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionok">selection?</a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envchannel">env-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-delay">make-delay</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-width">mus-width</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionstuff"><b>Selections</b></a></em></td><td></td><td bgcolor="lightgreen"><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envchannelwithbase">env-channel-with-base</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makedifferentiator">make-differentiator</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-xcoeff">mus-xcoeff</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sendmozilla">send-mozilla</a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#envexptchannel">env-expt-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-env">make-env</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-xcoeffs">mus-xcoeffs</a></em></td><td></td><td><em class=tab><a href="sndscm.html#setglobalsync">set-global-sync</a></em></td><td></td><td><em class=tab><a href="extsnd.html#xtoposition">x-&gt;position</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#env-interp">env-interp</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-fft-window">make-fft-window</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-ycoeff">mus-ycoeff</a></em></td><td></td><td><em class=tab><a href="extsnd.html#setsamples">set-samples</a></em></td><td></td><td><em class=tab><a href="extsnd.html#xaxislabel">x-axis-label</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#envmixes">env-mixes</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-filetoframe">make-file-&gt;frame</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-ycoeffs">mus-ycoeffs</a></em></td><td></td><td><em class=tab><a href="sndscm.html#shepardtone">shepard-tone</a></em></td><td></td><td><em class=tab><a href="extsnd.html#xaxisstyle">x-axis-style</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envselection">env-selection</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-filetosample">make-file-&gt;sample</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#shortfilename">short-file-name</a></em></td><td></td><td><em class=tab><a href="extsnd.html#xbounds">x-bounds</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envsound">env-sound</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-filter">make-filter</a></em></td><td></td><td bgcolor="lightgreen"><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#showaxes">show-axes</a></em></td><td></td><td><em class=tab><a href="extsnd.html#xpositionslider">x-position-slider</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#envsoundinterp">env-sound-interp</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-filtered-comb">make-filtered-comb</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#showcontrols">show-controls</a></em></td><td></td><td><em class=tab><a href="extsnd.html#xzoomslider">x-zoom-slider</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#env?">env?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-fir-filter">make-fir-filter</a></em></td><td></td><td><em class=tab><a href="extsnd.html#nameclickhook">name-click-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#showdiskspace">show-disk-space</A></em></td><td></td><td><em class=tab><a href="extsnd.html#xrampchannel">xramp-channel</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envedbase">enved-base</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-firmant">make-firmant</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ncos">ncos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showgrid">show-grid</a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envedclipping">enved-clip?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-formant">make-formant</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ncos?">ncos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showindices">show-indices</a></em></td><td></td><td bgcolor="lightgreen"><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#enveddialog">enved-dialog</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-frame">make-frame</a></em></td><td></td><td><em class=tab><a href="extsnd.html#newsound">new-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showlistener">show-listener</a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envedenvelope">enved-envelope</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-frame!">make-frame!</a></em></td><td></td><td><em class=tab><a href="extsnd.html#newsounddialog">new-sound-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showmarks">show-marks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#ytoposition">y-&gt;position</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#filterenv">enved-filter</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-frametofile">make-frame-&gt;file</a></em></td><td></td><td><em class=tab><a href="extsnd.html#newsoundhook">new-sound-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showmixwaveforms">show-mix-waveforms</a></em></td><td></td><td><em class=tab><a href="extsnd.html#yaxislabel">y-axis-label</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#filterenvorder">enved-filter-order</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makeframereader">make-frame-reader</a></em></td><td></td><td><em class=tab><a href="extsnd.html#newwidgethook">new-widget-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#showselection">show-selection</a></em></td><td></td><td><em class=tab><a href="extsnd.html#ybounds">y-bounds</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envedhook">enved-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-granulate">make-granulate</a></em></td><td></td><td><em class=tab><a href="sndscm.html#nextframe">next-frame</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showselectiontransform">show-selection-transform</a></em></td><td></td><td><em class=tab><a href="extsnd.html#ypositionslider">y-position-slider</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envedin-dB">enved-in-dB</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makegraphdata">make-graph-data</a></em></td><td></td><td><em class=tab><a href="extsnd.html#nextsample">next-sample</a></em></td><td></td><td><em class=tab><a href="sndscm.html#showsmptelabel">show-smpte-label</a></em></td><td></td><td><em class=tab><a href="extsnd.html#yzoomslider">y-zoom-slider</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envedpower">enved-power</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makehiddencontrolsdialog">make-hidden-controls-dialog</a></em></td><td></td><td><em class=tab><a href="sndclm.html#noid">noid</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showsonogramcursor">show-sonogram-cursor</a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envedstyle">enved-style</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makehighpass">make-highpass</a></em></td><td></td><td><em class=tab><a href="sndscm.html#cleandoc"><b>Noise Reduction</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#showtransformpeaks">show-transform-peaks</a></em></td><td></td><td bgcolor="lightgreen"><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envedtarget">enved-target</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makehilberttransform">make-hilbert-transform</a></em></td><td></td><td><em class=tab><a href="extsnd.html#normalizechannel">normalize-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showwidget">show-widget</a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envedwaving">enved-wave?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-iir-filter">make-iir-filter</a></em></td><td></td><td><em class=tab><a href="sndscm.html#normalizeenvelope">normalize-envelope</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showyzero">show-y-zero</a></em></td><td></td><td><em class=tab><a href="sndscm.html#ztransform">z-transform</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envedwaveformcolor">enved-waveform-color</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-locsig">make-locsig</a></em></td><td></td><td><em class=tab><a href="sndclm.html#normalizepartials">normalize-partials</a></em></td><td></td><td><em class=tab><a href="sndscm.html#silenceallmixes">silence-all-mixes</a></em></td><td></td><td><em class=tab><a href="extsnd.html#zeropad">zero-pad</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#envelopeinterp">envelope-interp</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makelowpass">make-lowpass</a></em></td><td></td><td><em class=tab><a href="sndscm.html#normalizesound">normalize-sound</a></em></td><td></td><td><em class=tab><a href="sndscm.html#silencemixes">silence-mixes</a></em></td><td></td><td><em class=tab><a href="sndscm.html#zipsound">zip-sound</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#envelopedmix">enveloped-mix</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makemixsampler">make-mix-sampler</a></em></td><td></td><td><em class=tab><a href="sndscm.html#normalizedmix">normalized-mix</a></em></td><td></td><td><em class=tab><a href="sndclm.html#sinc-train">sinc-train</a></em></td><td></td><td><em class=tab><a href="sndscm.html#zipper">zipper</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envexamples"><b>Envelopes</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-mixer">make-mixer</a></em></td><td></td><td><em class=tab><a href="sndclm.html#notch">notch</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sincwidth">sinc-width</a></em></td><td></td><td><em class=tab><a href="extsnd.html#zoomcolor">zoom-color</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#epsbottommargin">eps-bottom-margin</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-mixer!">make-mixer!</a></em></td><td></td><td><em class=tab><a href="sndscm.html#notchchannel">notch-channel</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sineenvchannel">sine-env-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#zoomfocusstyle">zoom-focus-style</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#abort">abort</a></em></td><td width=20></td><td><em class=tab><a href="extsnd.html#epsleftmargin">eps-left-margin</a></em></td><td width=20></td><td><em class=tab><a href="sndclm.html#make-mixer!">make-mixer!</a></em></td><td width=20></td><td><em class=tab><a href="sndscm.html#notchselection">notch-selection</a></em></td><td width=20></td><td><em class=tab><a href="extsnd.html#smoothchannel">smooth-channel</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#addampcontrols">add-amp-controls</a></em></td><td></td><td><em class=tab><a href="extsnd.html#epssize">eps-size</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-move-sound">make-move-sound</a></em></td><td></td><td><em class=tab><a href="sndscm.html#notchsound">notch-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#smoothselection">smooth-selection</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#addcolormap">add-colormap</a></em></td><td></td><td><em class=tab><a href="sndscm.html#evalbetweenmarks">eval-between-marks</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-autocorrelation">make-moving-autocorrelation</a></em></td><td></td><td><em class=tab><a href="sndclm.html#notch?">notch?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#smoothsound">smooth-sound</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#addcomment">add-comment</a></em></td><td></td><td><em class=tab><a href="sndscm.html#evaloverselection">eval-over-selection</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-average">make-moving-average</a></em></td><td></td><td><em class=tab><a href="sndscm.html#nrev">nrev</a></em></td><td></td><td><em class=tab><a href="extsnd.html#smoothexamples"><b>Smoothing</b></a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#adddirectorytoviewfileslist">add-directory-to-view-files-list</a></em></td><td></td><td><em class=tab><a href="sndscm.html#everysample">every-sample?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-fft">make-moving-fft</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrxycos">nrxycos</a></em></td><td></td><td><em class=tab><a href="sndscm.html#pins">SMS synthesis</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#addfilefilter">add-file-filter</a></em></td><td></td><td><em class=tab><a href="extsnd.html#exit">exit</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-pitch">make-moving-pitch</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrxycos?">nrxycos?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#snapmarktobeat">snap-mark-to-beat</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#addfilesorter">add-file-sorter</a></em></td><td></td><td><em class=tab><a href="extsnd.html#exithook">exit-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-scentroid">make-moving-scentroid</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrxysin">nrxysin</a></em></td><td></td><td><em class=tab><a href="sndscm.html#snapmixtobeat">snap-mix-to-beat</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#addfiletoviewfileslist">add-file-to-view-files-list</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontrol">expand-control</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-spectrum">make-moving-spectrum</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrxysin?">nrxysin?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndtosample">snd-&gt;sample</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#addmark">add-mark</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontrolbounds">expand-control-bounds</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-ncos">make-ncos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nsin">nsin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndtosamplep">snd-&gt;sample?</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#addmarkpane">add-mark-pane</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontrolhop">expand-control-hop</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-noid">make-noid</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nsin?">nsin?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndcolor">snd-color</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#addplayer">add-player</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontroljitter">expand-control-jitter</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-notch">make-notch</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#snderror">snd-error</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#addsoundfileextension">add-sound-file-extension</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontrollength">expand-control-length</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nrxycos">make-nrxycos</a></em></td><td></td><td bgcolor="lightgreen"><center>O</center></td><td></td><td><em class=tab><a href="extsnd.html#snderrorhook">snd-error-hook</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#addsourcefileextension">add-source-file-extension</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontrolramp">expand-control-ramp</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nrxysin">make-nrxysin</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#sndfont">snd-font</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#addtomainmenu">add-to-main-menu</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontrolp">expand-control?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nsin">make-nsin</a></em></td><td></td><td><em class=tab><a href="sndscm.html#offsetchannel">offset-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndgcs">snd-gcs</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#addtomenu">add-to-menu</a></em></td><td></td><td><em class=tab><a href="sndscm.html#explodesf2">explode-sf2</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-one-pole">make-one-pole</a></em></td><td></td><td><em class=tab><a href="sndscm.html#offsetsound">offset-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndhelp">snd-help</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#addtooltip">add-tooltip</a></em></td><td></td><td><em class=tab><a href="sndclm.html#exponentially-weighted-moving-average">exponentially-weighted-moving-average</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-one-zero">make-one-zero</a></em></td><td></td><td><em class=tab><a href="sndclm.html#one-pole">one-pole</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sndscmhooks">snd-hooks</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#addtransform">add-transform</a></em></td><td></td><td><em class=tab><a href="extsnd.html#extractchannel">extract-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-oscil">make-oscil</a></em></td><td></td><td><em class=tab><a href="sndclm.html#one-pole?">one-pole?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndopenedsound">*snd-opened-sound*</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#addwatcher">add-watcher</a></em></td><td></td><td><em class=tab><a href="extsnd.html#extractchannels">extract-channels</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-phase-vocoder">make-phase-vocoder</a></em></td><td></td><td><em class=tab><a href="sndclm.html#one-zero">one-zero</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndprint">snd-print</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#spectra">additive synthesis</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#makepixmap">make-pixmap</a></em></td><td></td><td><em class=tab><a href="sndclm.html#one-zero?">one-zero?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndspectrum">snd-spectrum</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#afterapplycontrolshook">after-apply-controls-hook</a></em></td><td></td><td bgcolor="lightgreen"><center>F</center></td><td></td><td><em class=tab><a href="extsnd.html#makeplayer">make-player</a></em></td><td></td><td><em class=tab><a href="extsnd.html#openfiledialog">open-file-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndtempnam">snd-tempnam</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#afteredithook">after-edit-hook</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#make-polyoid">make-polyoid</a></em></td><td></td><td><em class=tab><a href="extsnd.html#openfiledialogdirectory">open-file-dialog-directory</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndurl">snd-url</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#aftergraphhook">after-graph-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#cellon">feedback fm</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-polyshape">make-polyshape</a></em></td><td></td><td><em class=tab><a href="extsnd.html#openhook">open-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndurls">snd-urls</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#afterlispgraphhook">after-lisp-graph-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fft">fft</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-polywave">make-polywave</a></em></td><td></td><td><em class=tab><a href="sndscm.html#opennextfileindirectory">open-next-file-in-directory</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndversion">snd-version</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#afteropenhook">after-open-hook</a></em></td><td></td><td><em class=tab><a href="snd.html#fftsize">fft sizes</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-pulse-train">make-pulse-train</a></em></td><td></td><td><em class=tab><a href="extsnd.html#openrawsound">open-raw-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndwarning">snd-warning</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#aftersaveashook">after-save-as-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fftedit">fft-edit</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rand">make-rand</a></em></td><td></td><td><em class=tab><a href="extsnd.html#openrawsoundhook">open-raw-sound-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndwarninghook">snd-warning-hook</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#aftersavestatehook">after-save-state-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftlogfrequency">fft-log-frequency</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rand-interp">make-rand-interp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#opensound">open-sound</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sndwarp">sndwarp</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#aftertransformhook">after-transform-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftlogmagnitude">fft-log-magnitude</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-readin">make-readin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#optimization">optimization</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-locsig"><b>Sound placement</b></a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#all-pass">all-pass</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fftsmoother">fft-smoother</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makeregion">make-region</a></em></td><td></td><td><em class=tab><a href="extsnd.html#optimizationhook">optimization-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#soundtoamp_env">sound-&gt;amp-env</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#all-pass?">all-pass?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fftsquelch">fft-squelch</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makeregionframereader">make-region-frame-reader</a></em></td><td></td><td><em class=tab><a href="extsnd.html#orientationhook">orientation-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#soundtoframe">sound-&gt;frame</a></em></td></tr>
+ <tr><td><em class=tab><a href="grfsnd.html#sndandalsa"><b>Alsa</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftwindow">fft-window</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makeregionsampler">make-region-sampler</a></em></td><td></td><td><em class=tab><a href="sndclm.html#oscil">oscil</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundtointeger">sound-&gt;integer</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#ampcontrol">amp-control</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftalpha">fft-window-alpha</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-sampletofile">make-sample-&gt;file</a></em></td><td></td><td><em class=tab><a href="sndclm.html#oscil?">oscil?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#soundtosounddata">sound-&gt;sound-data</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#ampcontrolbounds">amp-control-bounds</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftbeta">fft-window-beta</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makesampler">make-sampler</a></em></td><td></td><td><em class=tab><a href="sndscm.html#oscopedoc">oscilloscope dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndsounddata"><b>sound-data</b></a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#amplitude-modulate">amplitude-modulate</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftwithphases">fft-with-phases</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-sawtooth-wave">make-sawtooth-wave</a></em></td><td></td><td><em class=tab><a href="sndclm.html#out-any">out-any</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddata*">sound-data*</a></em></td></tr>
+ <tr><td><em class=tab><a href="grfsnd.html#analyseladspa">analyse-ladspa</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftexamples"><b>FFTs</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-scalar-mixer">make-scalar-mixer</a></em></td><td></td><td><em class=tab><a href="sndclm.html#outa">outa</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddata+">sound-data+</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#anyenvchannel">any-env-channel</a></em></td><td></td><td><em class=tab><a href="sndscm.html#nbdoc">file database</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makeselection">make-selection</a></em></td><td></td><td><em class=tab><a href="sndclm.html#*output*">*output*</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sounddatatofile">sound-data-&gt;file</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#appendsound">append-sound</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filetoarray">file-&gt;array</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makeselectionframereader">make-selection-frame-reader</a></em></td><td></td><td><em class=tab><a href="extsnd.html#outputcommenthook">output-comment-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sounddatatoframe">sound-data-&gt;frame</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#applycontrols">apply-controls</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filetoframe">file-&gt;frame</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makesndtosample">make-snd-&gt;sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#outputnamehook">output-name-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sounddatatosound">sound-data-&gt;sound</a></em></td></tr>
+ <tr><td><em class=tab><a href="grfsnd.html#applyladspa">apply-ladspa</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filetoframe?">file-&gt;frame?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makesoundbox">make-sound-box</a></em></td><td></td><td><em class=tab><a href="sndscm.html#overlayrmsenv">overlay-rms-env</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddatatosounddata">sound-data-&gt;sound-data</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#arraytofile">array-&gt;file</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filetosample">file-&gt;sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makesounddata">make-sound-data</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#sounddatatovct">sound-data-&gt;vct</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#array-interp">array-interp</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filetosample?">file-&gt;sample?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-square-wave">make-square-wave</a></em></td><td></td><td bgcolor="lightgreen"><center>P</center></td><td></td><td><em class=tab><a href="extsnd.html#sounddataadd">sound-data-add!</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#asoneedit">as-one-edit</a></em></td><td></td><td><em class=tab><a href="sndscm.html#filetosounddata">file-&gt;sound-data</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-src">make-src</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#sounddatachans">sound-data-chans</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#askbeforeoverwrite">ask-before-overwrite</a></em></td><td></td><td><em class=tab><a href="sndscm.html#filetovct">file-&gt;vct</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-ssb-am">make-ssb-am</a></em></td><td></td><td><em class=tab><a href="extsnd.html#padchannel">pad-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddatacopy">sound-data-copy</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#asymmetric-fm">asymmetric-fm</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filename">file-name</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makesyncframereader">make-sync-frame-reader</a></em></td><td></td><td><em class=tab><a href="sndscm.html#padmarks">pad-marks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddatafill">sound-data-fill!</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#asymmetric-fm?">asymmetric-fm?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericfilename"><b>file-name (generic)</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-table-lookup">make-table-lookup</a></em></td><td></td><td><em class=tab><a href="sndscm.html#padsound">pad-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddatalength">sound-data-length</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#audioinputdevice">audio-input-device</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericfill"><b>fill! (generic)</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-triangle-wave">make-triangle-wave</a></em></td><td></td><td><em class=tab><a href="sndscm.html#panmix">pan-mix</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddatamaxamp">sound-data-maxamp</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#audiooutputdevice">audio-output-device</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fillpolygon">fill-polygon</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-two-pole">make-two-pole</a></em></td><td></td><td><em class=tab><a href="sndscm.html#panmixvct">pan-mix-vct</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddatamultiply">sound-data-multiply!</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#autoresize">auto-resize</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fillrectangle">fill-rectangle</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-two-zero">make-two-zero</a></em></td><td></td><td><em class=tab><a href="sndclm.html#partialstopolynomial">partials-&gt;polynomial</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddataoffset">sound-data-offset!</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#autosavedoc">auto-save</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filter">filter</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makevariabledisplay">make-variable-display</a></em></td><td></td><td><em class=tab><a href="sndclm.html#partialstowave">partials-&gt;wave</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddatapeak">sound-data-peak</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#autoupdate">auto-update</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filterchannel">filter-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makevariablegraph">make-variable-graph</a></em></td><td></td><td><em class=tab><a href="extsnd.html#pausing">pausing</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddataref">sound-data-ref</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#autoupdateinterval">auto-update-interval</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtercontrolcoeffs">filter-control-coeffs</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makevct">make-vct</a></em></td><td></td><td><em class=tab><a href="extsnd.html#peakenvdir">peak-env-dir</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddatareverse">sound-data-reverse!</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#autocorrelate">autocorrelate</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtercontrolenvelope">filter-control-envelope</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-wave-train">make-wave-train</a></em></td><td></td><td><em class=tab><a href="extsnd.html#peakenvhook">peak-env-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddatascale">sound-data-scale!</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#axiscolor">axis-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtercontrolindB">filter-control-in-dB</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mapchannel">map-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#peaks">peaks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddataset">sound-data-set!</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#axisinfo">axis-info</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtercontrolinhz">filter-control-in-hz</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mapsound">map-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#peaksfont">peaks-font</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounddata?">sound-data?</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#axislabelfont">axis-label-font</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtercontrolorder">filter-control-order</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mapsoundfiles">map-sound-files</a></em></td><td></td><td><em class=tab><a href="sndclm.html#phase-partialstowave">phase-partials-&gt;wave</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundfileextensions">sound-file-extensions</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#axisnumbersfont">axis-numbers-font</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filterwaveformcolor">filter-control-waveform-color</a></em></td><td></td><td><em class=tab><a href="sndscm.html#maracadoc">maracas</a></em></td><td></td><td><em class=tab><a href="sndclm.html#phase-vocoder">phase-vocoder</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundfilep">sound-file?</a></em></td></tr>
+ <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#filtercontrolp">filter-control?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#marktointeger">mark-&gt;integer</a></em></td><td></td><td><em class=tab><a href="sndclm.html#phase-vocoder?">phase-vocoder?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundfilesindirectory">sound-files-in-directory</a></em></td></tr>
+ <tr><td bgcolor="lightgreen"><center>B</center></td><td></td><td><em class=tab><a href="extsnd.html#filterselection">filter-selection</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markclickhook">mark-click-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#prc95doc"><b>Physical Models</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#soundinterp">sound-interp</a></em></td></tr>
+ <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#filterselectionandsmooth">filter-selection-and-smooth</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markcolor">mark-color</a></em></td><td></td><td><em class=tab><a href="sndscm.html#pianodoc">piano model</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sound-let">sound-let</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#backgroundgradient">background-gradient</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtersound">filter-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markdraghook">mark-drag-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#pink-noise">pink-noise</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundloopinfo">sound-loop-info</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#badheaderhook">bad-header-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filter?">filter?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markdragtrianglehook">mark-drag-triangle-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#placesound">place-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundproperties">sound-properties</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#bagpipe">bagpipe</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filtered-comb">filtered-comb</a></em></td><td></td><td><em class=tab><a href="sndscm.html#markexplode">mark-explode</a></em></td><td></td><td><em class=tab><a href="extsnd.html#play">play</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundproperty">sound-property</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#basiccolor">basic-color</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filtered-comb?">filtered-comb?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markhome">mark-home</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericplay"><b>play (generic)</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundwidgets">sound-widgets</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#beatspermeasure">beats-per-measure</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtersinsnd"><b>Filters</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#markhook">mark-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#playbetweenmarks">play-between-marks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundp">sound?</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#beatsperminute">beats-per-minute</a></em></td><td></td><td><em class=tab><a href="extsnd.html#findchannel">find-channel</a></em></td><td></td><td><em class=tab><a href="sndscm.html#markloops">mark-loops</a></em></td><td></td><td><em class=tab><a href="extsnd.html#playhook">play-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundfontinfo">soundfont-info</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#beforeclosehook">before-close-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#finddialog">find-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markname">mark-name</a></em></td><td></td><td><em class=tab><a href="sndscm.html#playmixes">play-mixes</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounds">sounds</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#beforeexithook">before-exit-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#findmark">find-mark</a></em></td><td></td><td><em class=tab><a href="sndscm.html#marknametoid">mark-name-&gt;id</a></em></td><td></td><td><em class=tab><a href="sndscm.html#playsines">play-sines</a></em></td><td></td><td><em class=tab><a href="sndscm.html#twotab">spectral interpolation</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#beforesaveashook">before-save-as-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#findmix">find-mix</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markproperties">mark-properties</a></em></td><td></td><td><em class=tab><a href="sndscm.html#playsyncdmarks">play-syncd-marks</a></em></td><td></td><td><em class=tab><a href="sndscm.html#spectralpolynomial">spectral-polynomial</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#beforesavestatehook">before-save-state-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#findsound">find-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markproperty">mark-property</a></em></td><td></td><td><em class=tab><a href="extsnd.html#playerhome">player-home</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectrohop">spectro-hop</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#beforetransformhook">before-transform-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#finishprogressreport">finish-progress-report</a></em></td><td></td><td><em class=tab><a href="extsnd.html#marksample">mark-sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#playerQ">player?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectroxangle">spectro-x-angle</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#analogfilterdoc">bessel filters</a></em></td><td></td><td><em class=tab><a href="sndclm.html#fir-filter">fir-filter</a></em></td><td></td><td><em class=tab><a href="extsnd.html#marksync">mark-sync</a></em></td><td></td><td><em class=tab><a href="extsnd.html#players">players</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectroxscale">spectro-x-scale</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#bigbird">bigbird</a></em></td><td></td><td><em class=tab><a href="sndclm.html#fir-filter?">fir-filter?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#marksyncmax">mark-sync-max</a></em></td><td></td><td><em class=tab><a href="extsnd.html#playexamples"><b>Playing</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectroyangle">spectro-y-angle</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#bindkey">bind-key</a></em></td><td></td><td><em class=tab><a href="sndclm.html#firmant">firmant</a></em></td><td></td><td><em class=tab><a href="extsnd.html#marktagheight">mark-tag-height</a></em></td><td></td><td><em class=tab><a href="extsnd.html#playing">playing</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectroyscale">spectro-y-scale</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#bird">bird</a></em></td><td></td><td><em class=tab><a href="sndclm.html#firmant?">firmant?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#marktagwidth">mark-tag-width</a></em></td><td></td><td><em class=tab><a href="sndscm.html#pluck">pluck</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectrozangle">spectro-z-angle</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#boldpeaksfont">bold-peaks-font</a></em></td><td></td><td><em class=tab><a href="sndclm.html#flocsig">flocsig</A></em></td><td></td><td><em class=tab><a href="extsnd.html#markp">mark?</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#sndandladspa"><b>Plugins</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectrozscale">spectro-z-scale</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#bomb">bomb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#flocsig?">flocsig?</A></em></td><td></td><td><em class=tab><a href="extsnd.html#markstuff"><b>Marking</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#polartorectangular">polar-&gt;rectangular</a></em></td><td></td><td><em class=tab><a href="sndclm.html#spectrum">spectrum</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#break">break</a></em></td><td></td><td><em class=tab><a href="sndscm.html#stereoflute">flute model</a></em></td><td></td><td><em class=tab><a href="extsnd.html#emarks">marks</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polynomial">polynomial</a></em></td><td></td><td><em class=tab><a href="sndscm.html#spectrumtocoeffs">spectrum-&gt;coeffs</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#brown-noise">brown-noise</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fmbell">fm-bell</a></em></td><td></td><td><em class=tab><a href="sndscm.html#matchsoundfiles">match-sound-files</a></em></td><td></td><td><em class=tab><a href="sndscm.html#polydoc">polynomial operations</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectrumend">spectrum-end</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#analogfilterdoc">butterworth filters</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fmdrum">fm-drum</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixerdoc"><b>Matrices</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#polyoid">polyoid</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectrumstart">spectrum-start</a></em></td></tr>
+ <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#fmnoise">fm-noise</a></em></td><td></td><td><em class=tab><a href="sndscm.html#maxenvelope">max-envelope</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polyoidenv">polyoid-env</a></em></td><td></td><td><em class=tab><a href="extsnd.html#speedcontrol">speed-control</a></em></td></tr>
+ <tr><td bgcolor="lightgreen"><center>C</center></td><td></td><td><em class=tab><a href="sndscm.html#fmvox">fm-talker</a></em></td><td></td><td><em class=tab><a href="extsnd.html#maxregions">max-regions</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polyoid?">polyoid?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#speedcontrolbounds">speed-control-bounds</a></em></td></tr>
+ <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#fmtrumpet">fm-trumpet</a></em></td><td></td><td><em class=tab><a href="extsnd.html#maxfftpeaks">max-transform-peaks</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polyshape">polyshape</a></em></td><td></td><td><em class=tab><a href="extsnd.html#speedstyle">speed-control-style</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#cgx">c-g!</a></em></td><td></td><td><em class=tab><a href="sndscm.html#vdoc">fm-violin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#maxvirtualptrees">max-virtual-ptrees</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polyshape?">polyshape?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#speedtones">speed-control-tones</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#cgp">c-g?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#reson">fm-voice</a></em></td><td></td><td><em class=tab><a href="extsnd.html#maxamp">maxamp</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polywave">polywave</a></em></td><td></td><td><em class=tab><a href="sndclm.html#square-wave">square-wave</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#callin">call_in</a></em></td><td></td><td><em class=tab><a href="extsnd.html#focuswidget">focus-widget</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericmaxamp"><b>maxamp (generic)</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#polywave?">polywave?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#square-wave?">square-wave?</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#cascadetocanonical">cascade-&gt;canonical</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fofins">FOF synthesis</a></em></td><td></td><td><em class=tab><a href="extsnd.html#maxampposition">maxamp-position</a></em></td><td></td><td><em class=tab><a href="extsnd.html#positiontox">position-&gt;x</a></em></td><td></td><td><em class=tab><a href="extsnd.html#squelchupdate">squelch-update</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#chaindsps">chain-dsps</a></em></td><td></td><td><em class=tab><a href="sndscm.html#foreachchild">for-each-child</a></em></td><td></td><td><em class=tab><a href="extsnd.html#maxampexamples"><b>Maxamps</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#positiontoy">position-&gt;y</a></em></td><td></td><td><em class=tab><a href="sndscm.html#squelchvowels">squelch-vowels</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#channeltovct">channel-&gt;vct</a></em></td><td></td><td><em class=tab><a href="sndscm.html#foreachsoundfile">for-each-sound-file</a></em></td><td></td><td><em class=tab><a href="extsnd.html#menuwidgets">menu-widgets</a></em></td><td></td><td><em class=tab><a href="extsnd.html#positioncolor">position-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#srate">srate</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#channelampenvs">channel-amp-envs</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fp">Forbidden Planet</a></em></td><td></td><td><em class=tab><a href="sndscm.html#menusdoc">menus, optional</a></em></td><td></td><td><em class=tab><a href="sndscm.html#powerenv">power-env</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericsrate"><b>srate (generic)</b></a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#channeldata">channel-data</a></em></td><td></td><td><em class=tab><a href="extsnd.html#foregroundcolor">foreground-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mindb">min-dB</a></em></td><td></td><td><em class=tab><a href="extsnd.html#preferencesdialog">preferences-dialog</a></em></td><td></td><td><em class=tab><a href="sndclm.html#src">src</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#channelenvelope">channel-envelope</a></em></td><td></td><td><em class=tab><a href="extsnd.html#forgetregion">forget-region</a></em></td><td></td><td><em class=tab><a href="extsnd.html#minibufferhistorylength">minibuffer-history-length</a></em></td><td></td><td><em class=tab><a href="sndscm.html#previousframe">previous-frame</a></em></td><td></td><td><em class=tab><a href="extsnd.html#srcchannel">src-channel</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#channelpolynomial">channel-polynomial</a></em></td><td></td><td><em class=tab><a href="sndclm.html#formant">formant</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mix">mix</a></em></td><td></td><td><em class=tab><a href="extsnd.html#previoussample">previous-sample</a></em></td><td></td><td><em class=tab><a href="sndscm.html#srcduration">src-duration</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#channelproperties">channel-properties</a></em></td><td></td><td><em class=tab><a href="sndclm.html#formant?">formant?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixtointeger">mix-&gt;integer</a></em></td><td></td><td><em class=tab><a href="extsnd.html#printdialog">print-dialog</a></em></td><td></td><td><em class=tab><a href="sndscm.html#srcmixes">src-mixes</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#channelproperty">channel-property</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#sndandforth"><b>Forth</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixtovct">mix-&gt;vct</a></em></td><td></td><td><em class=tab><a href="extsnd.html#printhook">print-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#srcsoundselection">src-selection</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#channelrms">channel-rms</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fouriertransform">fourier-transform</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixamp">mix-amp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#printlength">print-length</a></em></td><td></td><td><em class=tab><a href="extsnd.html#srcsound">src-sound</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#channelstyle">channel-style</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fractionalfouriertransform">fractional-fourier-transform</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixampenv">mix-amp-env</a></em></td><td></td><td><em class=tab><a href="sndscm.html#profile">profile</a></em></td><td></td><td><em class=tab><a href="sndclm.html#src?">src?</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#channelsync">channel-sync</a></em></td><td></td><td><em class=tab><a href="sndclm.html#frame1">frame</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixchannel">mix-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#progressreport">progress-report</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ssb-am">ssb-am</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#channelwidgets">channel-widgets</a></em></td><td></td><td><em class=tab><a href="sndclm.html#frame*">frame*</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixclickhook">mix-click-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#promptinminibuffer">prompt-in-minibuffer</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ssb-am?">ssb-am?</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#channels">channels</a></em></td><td></td><td><em class=tab><a href="sndclm.html#frame+">frame+</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixcolor">mix-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#ptreechannel">ptree-channel</a></em></td><td></td><td><em class=tab><a href="sndscm.html#ssbbank">ssb-bank</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#genericchannels"><b>channels (generic)</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#frametofile">frame-&gt;file</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixdialogmix">mix-dialog-mix</a></em></td><td></td><td><em class=tab><a href="sndclm.html#pulse-train">pulse-train</a></em></td><td></td><td><em class=tab><a href="sndscm.html#ssbbankenv">ssb-bank-env</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#channelsequal">channels-equal?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#frametofile?">frame-&gt;file?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixdraghook">mix-drag-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#pulse-train?">pulse-train?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#ssbfm">ssb-fm</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#channelstyleconstants">channels-separate</a></em></td><td></td><td><em class=tab><a href="sndclm.html#frametoframe">frame-&gt;frame</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixfiledialog">mix-file-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#pushedbuttoncolor">pushed-button-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#starthook">start-hook</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#channels=">channels=?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#frametolist">frame-&gt;list</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixframe">mix-frame</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#startplaying">start-playing</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#chans">chans</a></em></td><td></td><td><em class=tab><a href="sndclm.html#frametosample">frame-&gt;sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixhome">mix-home</a></em></td><td></td><td bgcolor="lightgreen"><center>Q</center></td><td></td><td><em class=tab><a href="extsnd.html#startplayinghook">start-playing-hook</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#analogfilterdoc">chebyshev filters</a></em></td><td></td><td><em class=tab><a href="sndscm.html#frametosound">frame-&gt;sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixlength">mix-length</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#startplayingselectionhook">start-playing-selection-hook</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#checkforunsavededits">check-for-unsaved-edits</a></em></td><td></td><td><em class=tab><a href="sndscm.html#frametosounddata">frame-&gt;sound-data</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixmaxamp">mix-maxamp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#quitbuttoncolor">quit-button-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#startprogressreport">start-progress-report</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#checkmixtags">check-mix-tags</a></em></td><td></td><td><em class=tab><a href="sndscm.html#frametovct">frame-&gt;vct</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixmovesound">mix-move-sound</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#startwaterfall">start-waterfall</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#cleanchannel">clean-channel</a></em></td><td></td><td><em class=tab><a href="sndscm.html#framecopy">frame-copy</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixname">mix-name</a></em></td><td></td><td bgcolor="lightgreen"><center>R</center></td><td></td><td><em class=tab><a href="sndscm.html#stereotomono">stereo-&gt;mono</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#cleansound">clean-sound</a></em></td><td></td><td><em class=tab><a href="sndscm.html#framereaderatendQ">frame-reader-at-end?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixnametoid">mix-name-&gt;id</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#stopdachook">stop-dac-hook</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#clear-array">clear-array</a></em></td><td></td><td><em class=tab><a href="sndscm.html#framereaderchans">frame-reader-chans</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixposition">mix-position</a></em></td><td></td><td><em class=tab><a href="sndclm.html#radianstodegrees">radians-&gt;degrees</a></em></td><td></td><td><em class=tab><a href="extsnd.html#stopplayer">stop-player</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#clearlistener">clear-listener</a></em></td><td></td><td><em class=tab><a href="sndscm.html#framereaderhome">frame-reader-home</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixproperties">mix-properties</a></em></td><td></td><td><em class=tab><a href="sndclm.html#radianstohz">radians-&gt;hz</a></em></td><td></td><td><em class=tab><a href="extsnd.html#stopplaying">stop-playing</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#clearminibuffer">clear-minibuffer</a></em></td><td></td><td><em class=tab><a href="sndscm.html#framereaderposition">frame-reader-position</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixproperty">mix-property</a></em></td><td></td><td><em class=tab><a href="extsnd.html#rampchannel">ramp-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#stopplayinghook">stop-playing-hook</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#clearselection">clear-selection</a></em></td><td></td><td><em class=tab><a href="sndscm.html#framereaderQ">frame-reader?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixregion">mix-region</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rand">rand</a></em></td><td></td><td><em class=tab><a href="extsnd.html#stopplayingselectionhook">stop-playing-selection-hook</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#cliphook">clip-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#frame-ref">frame-ref</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixreleasehook">mix-release-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rand-interp">rand-interp</a></em></td><td></td><td><em class=tab><a href="sndscm.html#stretchenvelope">stretch-envelope</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#clipping">clipping</a></em></td><td></td><td><em class=tab><a href="sndscm.html#framereverse">frame-reverse!</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixsamplerQ">mix-sampler?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rand-interp?">rand-interp?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#superimposeffts">superimpose-ffts</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#clmchannel">clm-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#frame-set!">frame-set!</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixselection">mix-selection</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rand?">rand?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#swapchannels">swap-channels</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#clmload">clm-load</a></em></td><td></td><td><em class=tab><a href="sndclm.html#frame?">frame?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixsound">mix-sound</a></em></td><td></td><td><em class=tab><a href="sndscm.html#allrandomnumbers"><b>Random Numbers</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#swapselectionchannels">swap-selection-channels</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#clonesoundas">clone-sound-as</a></em></td><td></td><td><em class=tab><a href="sndclm.html#framedoc"><b>frames</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixsounddata">mix-sound-data</a></em></td><td></td><td><em class=tab><a href="sndscm.html#readframe">read-frame</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sync">sync</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#closehook">close-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#frames">frames</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixspeed">mix-speed</a></em></td><td></td><td><em class=tab><a href="extsnd.html#readhook">read-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericsync"><b>sync (generic)</b></a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#closesound">close-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericframes"><b>frames (generic)</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixsync">mix-sync</a></em></td><td></td><td><em class=tab><a href="extsnd.html#readmixsample">read-mix-sample</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sync-all">sync-all</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colortolist">color-&gt;list</a></em></td><td></td><td><em class=tab><a href="sndscm.html#freeframereader">free-frame-reader</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixsyncmax">mix-sync-max</a></em></td><td></td><td><em class=tab><a href="extsnd.html#readonly">read-only</a></em></td><td></td><td><em class=tab><a href="extsnd.html#syncmax">sync-max</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colorcutoff">color-cutoff</a></em></td><td></td><td><em class=tab><a href="extsnd.html#freeplayer">free-player</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixtagheight">mix-tag-height</a></em></td><td></td><td><em class=tab><a href="extsnd.html#readregionsample">read-region-sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#syncdmarks">syncd-marks</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colorhook">color-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#freesampler">free-sampler</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixtagwidth">mix-tag-width</a></em></td><td></td><td><em class=tab><a href="extsnd.html#readsample">read-sample</a></em></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colorinverted">color-inverted</a></em></td><td></td><td><em class=tab><a href="sndscm.html#freeverb">freeverb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixtagy">mix-tag-y</a></em></td><td></td><td><em class=tab><a href="sndclm.html#readin">readin</a></em></td><td></td><td bgcolor="lightgreen"><center>T</center></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#colormixes">color-mixes</a></em></td><td></td><td><em class=tab><a href="fm.html#fmintro"><b>Frequency Modulation</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixvct">mix-vct</a></em></td><td></td><td><em class=tab><a href="sndclm.html#readin?">readin?</a></em></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colororientationdialog">color-orientation-dialog</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fullmix">fullmix</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixwaveformheight">mix-waveform-height</a></em></td><td></td><td><em class=tab><a href="extsnd.html#recorderdialog">recorder-dialog</a></em></td><td></td><td><em class=tab><a href="sndclm.html#table-lookup">table-lookup</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colorscale">color-scale</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#mixp">mix?</a></em></td><td></td><td><em class=tab><a href="snd.html#recordfile"><b>Recording</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#table-lookup?">table-lookup?</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colorp">color?</a></em></td><td></td><td bgcolor="lightgreen"><center>G</center></td><td></td><td><em class=tab><a href="sndclm.html#mixer1">mixer</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rectangulartomagnitudes">rectangular-&gt;magnitudes</a></em></td><td></td><td><em class=tab><a href="sndclm.html#tap">tap</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colormap">colormap</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#mixermultiply">mixer*</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rectangulartopolar">rectangular-&gt;polar</a></em></td><td></td><td><em class=tab><a href="sndscm.html#telephone">telephone</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colormaptointeger">colormap-&gt;integer</a></em></td><td></td><td><em class=tab><a href="sndscm.html#gaussiandistribution">gaussian-distribution</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixerdoc">mixer as matrix</a></em></td><td></td><td><em class=tab><a href="extsnd.html#redo">redo</a></em></td><td></td><td><em class=tab><a href="extsnd.html#tempdir">temp-dir</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colormapname">colormap-name</a></em></td><td></td><td><em class=tab><a href="extsnd.html#gcoff">gc-off</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mixeradd">mixer+</a></em></td><td></td><td><em class=tab><a href="extsnd.html#redochannel">redo-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#textfocuscolor">text-focus-color</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colormapref">colormap-ref</a></em></td><td></td><td><em class=tab><a href="extsnd.html#gcon">gc-on</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixercopy">mixer-copy</a></em></td><td></td><td><em class=tab><a href="extsnd.html#redoedit">redo-edit</a></em></td><td></td><td><em class=tab><a href="extsnd.html#timegraphhook">time-graph-hook</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colormapsize">colormap-size</a></em></td><td></td><td><em class=tab><a href="sndclm.html#generators"><b>Generators</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixer-determinant">mixer-determinant</a></em></td><td></td><td><em class=tab><a href="sndscm.html#regiontoframe">region-&gt;frame</a></em></td><td></td><td><em class=tab><a href="extsnd.html#timegraphstyle">time-graph-style</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colormapp">colormap?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#glgraphtops">gl-graph-&gt;ps</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixer-inverse">mixer-inverse</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regiontointeger">region-&gt;integer</a></em></td><td></td><td><em class=tab><a href="extsnd.html#timegraphtype">time-graph-type</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colors"><b>Colors</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#glspectrogram">glSpectrogram</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixer-poly">mixer-poly</a></em></td><td></td><td><em class=tab><a href="sndscm.html#regiontosounddata">region-&gt;sound-data</a></em></td><td></td><td><em class=tab><a href="extsnd.html#timegraphp">time-graph?</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#comb">comb</a></em></td><td></td><td><em class=tab><a href="sndscm.html#goertzel">goertzel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mixer-ref">mixer-ref</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regiontovct">region-&gt;vct</a></em></td><td></td><td><em class=tab><a href="extsnd.html#tinyfont">tiny-font</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#comb?">comb?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#gotolistenerend">goto-listener-end</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mixer-set!">mixer-set!</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionchans">region-chans</a></em></td><td></td><td><em class=tab><a href="extsnd.html#trackingcursors"><b>Tracking cursors</b></a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#comment">comment</a></em></td><td></td><td><em class=tab><a href="sndscm.html#grani">grani</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixer-solve">mixer-solve</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionframes">region-frames</a></em></td><td></td><td><em class=tab><a href="extsnd.html#trackingcursorstyle">tracking-cursor-style</a></em></td></tr>
+ <tr><td><em class=tab><a href="grfsnd.html#sndwithcm"><b>Common Music</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#grains"><b>Granular synthesis</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixer-transpose">mixer-transpose</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regiongraphstyle">region-graph-style</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformtointeger">transform-&gt;integer</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#compandchannel">compand-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#granulate">granulate</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mixer?">mixer?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionhome">region-home</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformtovct">transform-&gt;vct</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#compandsound">compand-sound</a></em></td><td></td><td><em class=tab><a href="sndclm.html#granulate?">granulate?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#framedoc"><b>mixers</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionmaxamp">region-maxamp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformdialog">transform-dialog</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#concatenateenvelopes">concatenate-envelopes</a></em></td><td></td><td><em class=tab><a href="sndscm.html#granulatedsoundinterp">granulated-sound-interp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixes">mixes</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionmaxampposition">region-maxamp-position</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformframes">transform-frames</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#continue-frametofile">continue-frame-&gt;file</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graph">graph</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndmixes"><b>Mixing</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#regionplaylist">region-play-list</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformgraphstyle">transform-graph-style</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#continue-sampletofile">continue-sample-&gt;file</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphtops">graph-&gt;ps</a></em></td><td></td><td><em class=tab><a href="sndscm.html#monotostereo">mono-&gt;stereo</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionposition">region-position</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformgraphtype">transform-graph-type</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#contrastchannel">contrast-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphcolor">graph-color</a></em></td><td></td><td><em class=tab><a href="sndscm.html#moogfilter">moog-filter</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionsample">region-sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformgraphp">transform-graph?</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#contrastcontrol">contrast-control</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphcursor">graph-cursor</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseclickhook">mouse-click-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionsamplerQ">region-sampler?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#normalizefft">transform-normalization</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#contrastcontrolamp">contrast-control-amp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphdata">graph-data</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mousedraghook">mouse-drag-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionsrate">region-srate</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformsample">transform-sample</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#contrastcontrolbounds">contrast-control-bounds</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphhook">graph-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseentergraphhook">mouse-enter-graph-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionok">region?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformsize">transform-size</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#contrastcontrolp">contrast-control?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphlines">graph-lines</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseenterlabelhook">mouse-enter-label-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionstuff"><b>Regions</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformtype">transform-type</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#contrast-enhancement">contrast-enhancement</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphstyle">graph-style</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseenterlistenerhook">mouse-enter-listener-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#eregions">regions</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformp">transform?</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#contrastsound">contrast-sound</a></em></td><td></td><td><em class=tab><a href="sndscm.html#grapheq">graphic equalizer</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseentertexthook">mouse-enter-text-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#remembersoundstate">remember-sound-state</a></em></td><td></td><td><em class=tab><a href="sndscm.html#transposemixes">transpose-mixes</a></em></td></tr>
+ <tr><td><em class=tab><a href="snd.html#controls"><b>Control Panel</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphshorizontal">graphs-horizontal</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseleavegraphhook">mouse-leave-graph-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#removefrommenu">remove-from-menu</a></em></td><td></td><td><em class=tab><a href="extsnd.html#trapsegfault">trap-segfault</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#controlstochannel">controls-&gt;channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#green-noise">green-noise</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseleavelabelhook">mouse-leave-label-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reportinminibuffer">report-in-minibuffer</a></em></td><td></td><td><em class=tab><a href="sndclm.html#triangle-wave">triangle-wave</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#convolution">convolution</a></em></td><td></td><td><em class=tab><a href="sndclm.html#green-noise-interp">green-noise-interp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mousleavelistenerhook">mouse-leave-listener-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#resampleexamples"><b>Resampling</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#triangle-wave?">triangle-wave?</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#convolvewith">convolution reverb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#griddensity">grid-density</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mousleavetexthook">mouse-leave-text-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#resetallhooks">reset-all-hooks</a></em></td><td></td><td><em class=tab><a href="sndscm.html#tubebell">tubular bell</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#convolve">convolve</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#mousepresshook">mouse-press-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#resetbuttoncolor">reset-button-color</a></em></td><td></td><td><em class=tab><a href="sndclm.html#two-pole">two-pole</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#convolvefiles">convolve-files</a></em></td><td></td><td bgcolor="lightgreen"><center>H</center></td><td></td><td><em class=tab><a href="sndclm.html#move-locsig">move-locsig</a></em></td><td></td><td><em class=tab><a href="extsnd.html#resetcontrols">reset-controls</a></em></td><td></td><td><em class=tab><a href="sndclm.html#two-pole?">two-pole?</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#convolveselectionwith">convolve-selection-with</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#movemixes">move-mixes</a></em></td><td></td><td><em class=tab><a href="extsnd.html#resetlistenercursor">reset-listener-cursor</a></em></td><td></td><td><em class=tab><a href="sndclm.html#two-zero">two-zero</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#convolvewith">convolve-with</a></em></td><td></td><td><em class=tab><a href="sndscm.html#harmonicizer">harmonicizer</a></em></td><td></td><td><em class=tab><a href="sndclm.html#move-sound">move-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#restorecontrols">restore-controls</a></em></td><td></td><td><em class=tab><a href="sndclm.html#two-zero?">two-zero?</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#convolve?">convolve?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#dht">Hartley transform</a></em></td><td></td><td><em class=tab><a href="sndclm.html#move-sound?">move-sound?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#reverbexamples"><b>Reverb</b></a></em></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#genericcopy"><b>copy (generic)</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#headertype">header-type</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-autocorrelation">moving-autocorrelation</A></em></td><td></td><td><em class=tab><a href="sndclm.html#*reverb*">*reverb*</a></em></td><td></td><td bgcolor="lightgreen"><center>U</center></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#copyframereader">copy-frame-reader</a></em></td><td></td><td><em class=tab><a href="snd.html#formats"><b>Headers and Data formats</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-autocorrelation?">moving-autocorrelation?</A></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbdecay">reverb-control-decay</a></em></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#copysampler">copy-sampler</a></em></td><td></td><td><em class=tab><a href="sndscm.html#hellodentist">hello-dentist</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-average">moving-average</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrolfeedback">reverb-control-feedback</a></em></td><td></td><td><em class=tab><a href="extsnd.html#unbindkey">unbind-key</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#copying"><b>Copying</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#helpbuttoncolor">help-button-color</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-average?">moving-average?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrollength">reverb-control-length</a></em></td><td></td><td><em class=tab><a href="sndscm.html#unclipchannel">unclip-channel</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#correlate">correlate</a></em></td><td></td><td><em class=tab><a href="extsnd.html#helpdialog">help-dialog</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-fft">moving-fft</A></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrollengthbounds">reverb-control-length-bounds</a></em></td><td></td><td><em class=tab><a href="extsnd.html#undo">undo</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#countmatches">count-matches</a></em></td><td></td><td><em class=tab><a href="extsnd.html#helphook">help-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-fft?">moving-fft?</A></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrollowpass">reverb-control-lowpass</a></em></td><td></td><td><em class=tab><a href="extsnd.html#undoexamples"><b>Undo and Redo</b></a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#createssbdialog">create-ssb-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#hidewidget">hide-widget</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-length">moving-length</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrolscale">reverb-control-scale</a></em></td><td></td><td><em class=tab><a href="extsnd.html#undochannel">undo-channel</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#mixdoc">cross-fade (amplitude)</a></em></td><td></td><td><em class=tab><a href="extsnd.html#highlightcolor">highlight-color</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-max">moving-max</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrolscalebounds">reverb-control-scale-bounds</a></em></td><td></td><td><em class=tab><a href="extsnd.html#undoedit">undo-edit</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#fadedoc">cross-fade (frequency domain)</a></em></td><td></td><td><em class=tab><a href="sndscm.html#hilberttransform">hilbert-transform</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-pitch">moving-pitch</A></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrolp">reverb-control?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#undohook">undo-hook</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#crosssynthesis">cross-synthesis</a></em></td><td></td><td><em class=tab><a href="sndscm.html#hookmember">hook-member</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-pitch?">moving-pitch?</A></em></td><td></td><td><em class=tab><a href="extsnd.html#reversechannel">reverse-channel</a></em></td><td></td><td><em class=tab><a href="sndscm.html#updategraphs">update-graphs</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#currenteditposition">current-edit-position</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndhooks"><b>Hooks</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-rms">moving-rms</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reversechannels">reverse-channels</a></em></td><td></td><td><em class=tab><a href="extsnd.html#updatehook">update-hook</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#currentfont">current-font</a></em></td><td></td><td><em class=tab><a href="extsnd.html#htmldir">html-dir</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-scentroid">moving-scentroid</A></em></td><td></td><td><em class=tab><a href="sndscm.html#reverseenvelope">reverse-envelope</a></em></td><td></td><td><em class=tab><a href="extsnd.html#updatelispgraph">update-lisp-graph</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#cursor">cursor</a></em></td><td></td><td><em class=tab><a href="extsnd.html#htmlprogram">html-program</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-scentroid?">moving-scentroid?</A></em></td><td></td><td><em class=tab><a href="extsnd.html#reverseselection">reverse-selection</a></em></td><td></td><td><em class=tab><a href="extsnd.html#updatesound">update-sound</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#cursorcolor">cursor-color</a></em></td><td></td><td><em class=tab><a href="sndclm.html#hztoradians">hz-&gt;radians</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-spectrum">moving-spectrum</A></em></td><td></td><td><em class=tab><a href="extsnd.html#reversesound">reverse-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#updatetimegraph">update-time-graph</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#cursorfollowsplay">cursor-follows-play</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#moving-spectrum?">moving-spectrum?</A></em></td><td></td><td><em class=tab><a href="extsnd.html#reverseexamples"><b>Reversing</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#updatetransformgraph">update-transform-graph</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#cursorchoices">cursor-in-view</a></em></td><td></td><td bgcolor="lightgreen"><center>I</center></td><td></td><td><em class=tab><a href="sndclm.html#moving-sum">moving-sum</a></em></td><td></td><td><em class=tab><a href="extsnd.html#revertsound">revert-sound</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sndmotifdoc">user interface extensions</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#cursorlocationoffset">cursor-location-offset</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#mpg">mpg</a></em></td><td></td><td><em class=tab><a href="extsnd.html#rightsample">right-sample</a></em></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#cursorposition">cursor-position</a></em></td><td></td><td><em class=tab><a href="sndclm.html#iir-filter">iir-filter</a></em></td><td></td><td><em class=tab><a href="sndclm.html#multiply-arrays">multiply-arrays</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ring-modulate">ring-modulate</a></em></td><td></td><td bgcolor="lightgreen"><center>V</center></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#cursorsize">cursor-size</a></em></td><td></td><td><em class=tab><a href="sndclm.html#iir-filter?">iir-filter?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musalsabuffersize">mus-alsa-buffer-size</a></em></td><td></td><td><em class=tab><a href="sndscm.html#rmsgain">rms</a></em></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#cursorstyle">cursor-style</a></em></td><td></td><td><em class=tab><a href="extsnd.html#gin">in</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musalsabuffers">mus-alsa-buffers</a></em></td><td></td><td><em class=tab><a href="sndscm.html#rmsgain">rms, gain, balance gens</a></em></td><td></td><td><em class=tab><a href="sndscm.html#variabledisplay">variable-display</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#cursorupdateinterval">cursor-update-interval</a></em></td><td></td><td><em class=tab><a href="sndclm.html#in-any">in-any</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musalsacapturedevice">mus-alsa-capture-device</a></em></td><td></td><td><em class=tab><a href="sndscm.html#rmsenvelope">rms-envelope</a></em></td><td></td><td><em class=tab><a href="extsnd.html#variablegraphp">variable-graph?</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#cursorexamples"><b>Cursors</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#ina">ina</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musalsadevice">mus-alsa-device</a></em></td><td></td><td><em class=tab><a href="extsnd.html#rotatechannel">rotate-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vct">vct</a></em></td></tr>
+ <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#inb">inb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musalsaplaybackdevice">mus-alsa-playback-device</a></em></td><td></td><td><em class=tab><a href="sndscm.html#rubbersound">rubber-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vcttimes">vct*</a></em></td></tr>
+ <tr><td bgcolor="lightgreen"><center>D</center></td><td></td><td><em class=tab><a href="extsnd.html#infodialog">info-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musalsasquelchwarning">mus-alsa-squelch-warning</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#sndandruby"><b>Ruby</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctplus">vct+</a></em></td></tr>
+ <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="grfsnd.html#initladspa">init-ladspa</a></em></td><td></td><td><em class=tab><a href="sndclm.html#musarrayprintlength">mus-array-print-length</a></em></td><td></td><td><em class=tab><a href="sndscm.html#run">run</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vcttochannel">vct-&gt;channel</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#dacfolding">dac-combines-channels</a></em></td><td></td><td><em class=tab><a href="extsnd.html#initialgraphhook">initial-graph-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musaudioclose">mus-audio-close</a></em></td><td></td><td><em class=tab><a href="extsnd.html#run">run</a></em></td><td></td><td><em class=tab><a href="sndscm.html#vcttofile">vct-&gt;file</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#dachook">dac-hook</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#sndinitfile"><b>Initialization file</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#musaudiodescribe">mus-audio-describe</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#vcttoframe">vct-&gt;frame</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#dacsize">dac-size</a></em></td><td></td><td><em class=tab><a href="sndscm.html#insertchannel">insert-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musaudioopeninput">mus-audio-open-input</a></em></td><td></td><td bgcolor="lightgreen"><center>S</center></td><td></td><td><em class=tab><a href="extsnd.html#vcttolist">vct-&gt;list</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#datacolor">data-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertfiledialog">insert-file-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musaudioopenoutput">mus-audio-open-output</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#vcttosounddata">vct-&gt;sound-data</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#dataformat">data-format</a></em></td><td></td><td><em class=tab><a href="sndscm.html#insertframe">insert-frame</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musaudioread">mus-audio-read</a></em></td><td></td><td><em class=tab><a href="s7.html#s7doc"><b>s7 scheme</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#vcttostring">vct-&gt;string</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#datalocation">data-location</a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertregion">insert-region</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musaudiowrite">mus-audio-write</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sample">sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vcttovector">vct-&gt;vector</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#datasize">data-size</a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertsample">insert-sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musbytespersample">mus-bytes-per-sample</a></em></td><td></td><td><em class=tab><a href="sndclm.html#sampletofile">sample-&gt;file</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctadd">vct-add!</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#dbtolinear">db-&gt;linear</a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertsamples">insert-samples</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-channel">mus-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#sampletofile?">sample-&gt;file?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctcopy">vct-copy</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#cdebugging"><b>Debugging (C)</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertselection">insert-selection</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-channels">mus-channels</a></em></td><td></td><td><em class=tab><a href="sndclm.html#sampletoframe">sample-&gt;frame</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctfill">vct-fill!</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#variabledisplay"><b>Debugging (instruments)</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertsilence">insert-silence</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-chebyshev-tu-sum">mus-chebyshev-tu-sum</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sampleratendQ">sampler-at-end?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctlength">vct-length</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#snderrors"><b>Debugging (Scheme)</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertsound">insert-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musclipping">mus-clipping</a></em></td><td></td><td><em class=tab><a href="extsnd.html#samplerhome">sampler-home</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctmap">vct-map!</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#def-clm-struct">def-clm-struct</a></em></td><td></td><td><em class=tab><a href="sndscm.html#insertsounddata">insert-sound-data</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-close">mus-close</a></em></td><td></td><td><em class=tab><a href="extsnd.html#samplerposition">sampler-position</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctmove">vct-move!</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#defaultoutputchans">default-output-chans</a></em></td><td></td><td><em class=tab><a href="sndscm.html#insertvct">insert-vct</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-data">mus-data</a></em></td><td></td><td><em class=tab><a href="extsnd.html#samplerQ">sampler?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctmultiply">vct-multiply!</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#defaultoutputdataformat">default-output-data-format</a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertionexamples"><b>Insertions</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#musdataformattostring">mus-data-format-&gt;string</a></em></td><td></td><td><em class=tab><a href="extsnd.html#samplers"><b>samplers</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctoffset">vct-offset!</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#defaultoutputheadertype">default-output-header-type</a></em></td><td></td><td><em class=tab><a href="sndclm.html#instruments"><b>Instruments</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#musdataformatname">mus-data-format-name</a></em></td><td></td><td><em class=tab><a href="extsnd.html#samples">samples</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctpeak">vct-peak</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#defaultoutputsrate">default-output-srate</a></em></td><td></td><td><em class=tab><a href="sndclm.html#instruments">instruments</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-describe">mus-describe</a></em></td><td></td><td><em class=tab><a href="sndclm.html#samplestoseconds">samples-&gt;seconds</a></em></td><td></td><td><em class=tab><a href="sndscm.html#vctpolynomial">vct-polynomial</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#defgenerator">defgenerator</a></em></td><td></td><td><em class=tab><a href="extsnd.html#integertocolormap">integer-&gt;colormap</a></em></td><td></td><td><em class=tab><a href="extsnd.html#muserrorhook">mus-error-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sashcolor">sash-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctref">vct-ref</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#defineenvelope">define-envelope</a></em></td><td></td><td><em class=tab><a href="extsnd.html#integertomark">integer-&gt;mark</a></em></td><td></td><td><em class=tab><a href="extsnd.html#muserrortypetostring">mus-error-type-&gt;string</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savecontrols">save-controls</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctreverse">vct-reverse!</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#defineselectionviamarks">define-selection-via-marks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#integertomix">integer-&gt;mix</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musexpandfilename">mus-expand-filename</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savedir">save-dir</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctscale">vct-scale!</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#definstrument">definstrument</a></em></td><td></td><td><em class=tab><a href="extsnd.html#integertoregion">integer-&gt;region</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-feedback">mus-feedback</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveedithistory">save-edit-history</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctset">vct-set!</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#defvar">defvar</a></em></td><td></td><td><em class=tab><a href="extsnd.html#integertosound">integer-&gt;sound</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-feedforward">mus-feedforward</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveenvelopes">save-envelopes</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctsubseq">vct-subseq</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#degreestoradians">degrees-&gt;radians</a></em></td><td></td><td><em class=tab><a href="extsnd.html#integertotransform">integer-&gt;transform</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musfft">mus-fft</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savehook">save-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctsubtract">vct-subtract!</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#delay">delay</a></em></td><td></td><td><em class=tab><a href="sndscm.html#integrateenvelope">integrate-envelope</a></em></td><td></td><td><em class=tab><a href="sndclm.html#musfilebuffersize">mus-file-buffer-size</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savelistener">save-listener</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vctp">vct?</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#delaychannelmixes">delay-channel-mixes</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#sndswitches"><b>Invocation flags</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#musfileclipping">mus-file-clipping</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savemacros">save-macros</a></em></td><td></td><td><em class=tab><a href="extsnd.html#Vcts"><b>Vcts</b></a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#delaytick">delay-tick</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#mus-file-name">mus-file-name</a></em></td><td></td><td><em class=tab><a href="sndscm.html#savemarkproperties">save-mark-properties</a></em></td><td></td><td><em class=tab><a href="extsnd.html#vectortovct">vector-&gt;vct</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#delay?">delay?</a></em></td><td></td><td bgcolor="lightgreen"><center>J</center></td><td></td><td><em class=tab><a href="extsnd.html#musfileprescaler">mus-file-prescaler</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savemarks">save-marks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#verbosecursor">verbose-cursor</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#deletecolormap">delete-colormap</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#musfloatequalfudgefactor">mus-float-equal-fudge-factor</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savemix">save-mix</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesamp">view-files-amp</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#deletefilefilter">delete-file-filter</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#sndandjack"><b>Jack</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-frequency">mus-frequency</a></em></td><td></td><td><em class=tab><a href="sndscm.html#savemixes">save-mixes</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesampenv">view-files-amp-env</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#deletefilesorter">delete-file-sorter</a></em></td><td></td><td><em class=tab><a href="sndscm.html#jcreverb">jc-reverb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#musgeneratorp">mus-generator?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveregion">save-region</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesdialog">view-files-dialog</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#deletemark">delete-mark</a></em></td><td></td><td><em class=tab><a href="sndscm.html#jcrevdoc">jc-reverb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musheaderrawdefaults">mus-header-raw-defaults</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveregiondialog">save-region-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesfiles">view-files-files</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#deletemarks">delete-marks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#justsounds">just-sounds</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musheadertypetostring">mus-header-type-&gt;string</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveselection">save-selection</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesselecthook">view-files-select-hook</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#deletesample">delete-sample</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#musheadertypename">mus-header-type-name</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveselectiondialog">save-selection-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesselectedfiles">view-files-selected-files</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#deletesamples">delete-samples</a></em></td><td></td><td bgcolor="lightgreen"><center>K</center></td><td></td><td><em class=tab><a href="sndclm.html#mus-hop">mus-hop</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savesound">save-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilessort">view-files-sort</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#deleteselection">delete-selection</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#mus-increment">mus-increment</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savesoundas">save-sound-as</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesspeed">view-files-speed</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#deleteselectionandsmooth">delete-selection-and-smooth</a></em></td><td></td><td><em class=tab><a href="sndscm.html#kalmanfilterchannel">kalman-filter-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-input?">mus-input?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savesounddialog">save-sound-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesspeedstyle">view-files-speed-style</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#deletetransform">delete-transform</a></em></td><td></td><td><em class=tab><a href="extsnd.html#key">key</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-interp-type">mus-interp-type</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savestate">save-state</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewmixesdialog">view-mixes-dialog</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#deletewatcher">delete-watcher</a></em></td><td></td><td><em class=tab><a href="snd.html#builtinkeys"><b>Key bindings</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-interpolate">mus-interpolate</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savestatefile">save-state-file</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewregionsdialog">view-regions-dialog</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#deletionexamples"><b>Deletions</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#keybinding">key-binding</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-length">mus-length</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savestatehook">save-state-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewsound">view-sound</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#describehook">describe-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#keypresshook">key-press-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-location">mus-location</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveexamples"><b>Saving</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#ptreechannel"><b>Virtual Edits</b></a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#describemark">describe-mark</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#musmaxmalloc">mus-max-malloc</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sgfilter">savitzky-golay-filter</a></em></td><td></td><td><em class=tab><a href="sndscm.html#singerdoc">voice physical model</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#dialogwidgets">dialog-widgets</a></em></td><td></td><td bgcolor="lightgreen"><center>L</center></td><td></td><td><em class=tab><a href="extsnd.html#musmaxtablesize">mus-max-table-size</a></em></td><td></td><td><em class=tab><a href="sndclm.html#sawtooth-wave">sawtooth-wave</a></em></td><td></td><td><em class=tab><a href="sndscm.html#voicedtounvoiced">voiced-&gt;unvoiced</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#disablecontrolpanel">disable-control-panel</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#musmix">mus-mix</a></em></td><td></td><td><em class=tab><a href="sndclm.html#sawtooth-wave?">sawtooth-wave?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#volterrafilter">volterra-filter</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#displaybarkfft">display-bark-fft</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#ladspadescriptor">ladspa-descriptor</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-name">mus-name</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scaleby">scale-by</a></em></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#displaydb">display-db</a></em></td><td></td><td><em class=tab><a href="extsnd.html#ladspadir">ladspa-dir</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-offset">mus-offset</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scalechannel">scale-channel</a></em></td><td></td><td bgcolor="lightgreen"><center>W</center></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#displayedits">display-edits</a></em></td><td></td><td><em class=tab><a href="extsnd.html#leftsample">left-sample</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-order">mus-order</a></em></td><td></td><td><em class=tab><a href="sndscm.html#scaleenvelope">scale-envelope</a></em></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#displayscannedsynthesis">display-scanned-synthesis</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericlength"><b>length (generic)</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#musosssetbuffers">mus-oss-set-buffers</a></em></td><td></td><td><em class=tab><a href="sndscm.html#scalemixes">scale-mixes</a></em></td><td></td><td><em class=tab><a href="sndclm.html#wave-train">wave-train</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#dissolvefade">dissolve-fade</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makelevelmeter">level meters</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musoutformat">mus-out-format</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scaleselectionby">scale-selection-by</a></em></td><td></td><td><em class=tab><a href="sndclm.html#wave-train?">wave-train?</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#ditherchannel">dither-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#lineartodb">linear-&gt;db</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-output?">mus-output?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scaleselectionto">scale-selection-to</a></em></td><td></td><td><em class=tab><a href="extsnd.html#wavelettype">wavelet-type</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#dithersound">dither-sound</a></em></td><td></td><td><em class=tab><a href="sndscm.html#linearsrcchannel">linear-src-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-phase">mus-phase</a></em></td><td></td><td><em class=tab><a href="sndscm.html#scalesound">scale-sound</a></em></td><td></td><td><em class=tab><a href="sndscm.html#pqwvox">waveshaping voice</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#dlocsig">dlocsig</a></em></td><td></td><td><em class=tab><a href="extsnd.html#lispgraphhook">lisp-graph-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musprescaler">mus-prescaler</a></em></td><td></td><td><em class=tab><a href="sndscm.html#scaletempo">scale-tempo</a></em></td><td></td><td><em class=tab><a href="extsnd.html#wavohop">wavo-hop</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#dop">do?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#lispgraphstyle">lisp-graph-style</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-ramp">mus-ramp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scaleto">scale-to</a></em></td><td></td><td><em class=tab><a href="extsnd.html#wavotrace">wavo-trace</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#doitagainbuttoncolor">doit-again-button-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#lispgraphp">lisp-graph?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-random">mus-random</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scanchannel">scan-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#weighted-moving-average">weighted-moving-average</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#doitbuttoncolor">doit-button-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listtovct">list-&gt;vct</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-reset">mus-reset</a></em></td><td></td><td><em class=tab><a href="sndscm.html#scansound">scan-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#widgetposition">widget-position</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#dot-product">dot-product</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#listladspa">list-ladspa</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-run">mus-run</a></em></td><td></td><td><em class=tab><a href="sndscm.html#dspdocscanned">scanned synthesis</a></em></td><td></td><td><em class=tab><a href="extsnd.html#widgetsize">widget-size</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#dotsize">dot-size</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listenerclickhook">listener-click-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-safety">mus-safety</a></em></td><td></td><td><em class=tab><a href="sndscm.html#scentroid">scentroid</a></em></td><td></td><td><em class=tab><a href="extsnd.html#widgettext">widget-text</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#drawaxes">draw-axes</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listenercolor">listener-color</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-scaler">mus-scaler</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scriptarg">script-arg</a></em></td><td></td><td><em class=tab><a href="extsnd.html#movingwindows"><b>Window size and position</b></a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#drawdot">draw-dot</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listenerfont">listener-font</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundchans">mus-sound-chans</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scriptargs">script-args</a></em></td><td></td><td><em class=tab><a href="extsnd.html#windowheight">window-height</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#drawdots">draw-dots</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listenerprompt">listener-prompt</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundcloseinput">mus-sound-close-input</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#sndwithnogui"><b>Scripting</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#windowproperty">window-property</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#drawline">draw-line</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listenerselection">listener-selection</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundcloseoutput">mus-sound-close-output</a></em></td><td></td><td><em class=tab><a href="extsnd.html#searchprocedure">search-procedure</a></em></td><td></td><td><em class=tab><a href="extsnd.html#windowpropertychangedhook">window-property-changed-hook</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#drawlines">draw-lines</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listenertextcolor">listener-text-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundcomment">mus-sound-comment</a></em></td><td></td><td><em class=tab><a href="extsnd.html#searchexamples"><b>Searching</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#windowsamples">window-samples</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#drawmarkhook">draw-mark-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#littleendianp">little-endian?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussounddataformat">mus-sound-data-format</a></em></td><td></td><td><em class=tab><a href="sndclm.html#secondstosamples">seconds-&gt;samples</a></em></td><td></td><td><em class=tab><a href="extsnd.html#windowwidth">window-width</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#drawmixhook">draw-mix-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#locsig">locsig</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussounddatalocation">mus-sound-data-location</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectall">select-all</a></em></td><td></td><td><em class=tab><a href="extsnd.html#windowx">window-x</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#drawstring">draw-string</a></em></td><td></td><td><em class=tab><a href="sndclm.html#locsig-ref">locsig-ref</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussounddatumsize">mus-sound-datum-size</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectchannel">select-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#windowy">window-y</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#makedropsite">drop sites</a></em></td><td></td><td><em class=tab><a href="sndclm.html#locsig-reverb-ref">locsig-reverb-ref</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundduration">mus-sound-duration</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectchannelhook">select-channel-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withbackgroundprocesses">with-background-processes</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#drophook">drop-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#locsig-reverb-set!">locsig-reverb-set!</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundforget">mus-sound-forget</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectsound">select-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withfilemonitor">with-file-monitor</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#duringopenhook">during-open-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#locsig-set!">locsig-set!</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundframes">mus-sound-frames</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectsoundhook">select-sound-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withgl">with-gl</a></em></td></tr>
+ <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#locsig-type">locsig-type</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundheadertype">mus-sound-header-type</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectedchannel">selected-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withinsetgraph">with-inset-graph</a></em></td></tr>
+ <tr><td bgcolor="lightgreen"><center>E</center></td><td></td><td><em class=tab><a href="sndclm.html#locsig?">locsig?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundlength">mus-sound-length</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selecteddatacolor">selected-data-color</a></em></td><td></td><td><em class=tab><a href="sndscm.html#withlocalhook">with-local-hook</a></em></td></tr>
+ <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#logfreqstart">log-freq-start</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundloopinfo">mus-sound-loop-info</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectedgraphcolor">selected-graph-color</a></em></td><td></td><td><em class=tab><a href="sndscm.html#withmarkedsound">with-marked-sound</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#editlists"><b>Edit lists</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#loopbetweenmarks">loop-between-marks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundmarkinfo">mus-sound-mark-info</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectedsound">selected-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withmixtags">with-mix-tags</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#editfragment">edit-fragment</a></em></td><td></td><td><em class=tab><a href="sndscm.html#lpccoeffs">lpc-coeffs</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundmaxamp">mus-sound-maxamp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selection">selection</a></em></td><td></td><td><em class=tab><a href="sndscm.html#withmixedsound">with-mixed-sound</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#editheaderdialog">edit-header-dialog</a></em></td><td></td><td><em class=tab><a href="sndscm.html#lpcpredict">lpc-predict</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundmaxampexists">mus-sound-maxamp-exists?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectiontomix">selection-&gt;mix</a></em></td><td></td><td><em class=tab><a href="sndscm.html#withmixedsoundtonotelist">with-mixed-sound-&gt;notelist</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#edithook">edit-hook</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundopeninput">mus-sound-open-input</a></em></td><td></td><td><em class=tab><a href="sndscm.html#selectiontosounddata">selection-&gt;sound-data</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withpointerfocus">with-pointer-focus</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#editlisttofunction">edit-list-&gt;function</a></em></td><td></td><td bgcolor="lightgreen"><center>M</center></td><td></td><td><em class=tab><a href="extsnd.html#mussoundopenoutput">mus-sound-open-output</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionchans">selection-chans</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withrelativepanes">with-relative-panes</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#editposition">edit-position</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundprune">mus-sound-prune</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectioncolor">selection-color</a></em></td><td></td><td><em class=tab><a href="sndscm.html#withreopenmenu">with-reopen-menu</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#editproperties">edit-properties</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mainmenu">main-menu</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundread">mus-sound-read</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectioncreatesregion">selection-creates-region</a></em></td><td></td><td><em class=tab><a href="sndscm.html#withsound">with-sound</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#editproperty">edit-property</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mainwidgets">main-widgets</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundreopenoutput">mus-sound-reopen-output</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionframes">selection-frames</a></em></td><td></td><td><em class=tab><a href="sndscm.html#withtempsound">with-temp-sound</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#edittree">edit-tree</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-all-pass">make-all-pass</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundreportcache">mus-sound-report-cache</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionmaxamp">selection-maxamp</a></em></td><td></td><td><em class=tab><a href="sndscm.html#withtemporaryselection">with-temporary-selection</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#edits">edits</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-asymmetric-fm">make-asymmetric-fm</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundsamples">mus-sound-samples</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionmaxampposition">selection-maxamp-position</a></em></td><td></td><td><em class=tab><a href="sndscm.html#withthreadedchannels">with-threaded-channels</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#edot-product">edot-product</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makebandpass">make-bandpass</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundseekframe">mus-sound-seek-frame</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionmember">selection-member?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#withthreadedsound">with-threaded-sound</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#analogfilterdoc">elliptic filters</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makebandstop">make-bandstop</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundsrate">mus-sound-srate</a></em></td><td></td><td><em class=tab><a href="sndscm.html#selectionmembers">selection-members</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withtrackingcursor">with-tracking-cursor</a></em></td></tr>
+ <tr><td><em class=tab><a href="grfsnd.html#emacssnd"><b>Emacs and Snd</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#makebiquad">make-biquad</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundtypespecifier">mus-sound-type-specifier</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionposition">selection-position</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withverbosecursor">with-verbose-cursor</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#emacsstylesaveas">emacs-style-save-as</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makebirds">make-birds</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundwrite">mus-sound-write</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionsrate">selection-srate</a></em></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#env">env</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makecolor">make-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundwritedate">mus-sound-write-date</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionok">selection?</a></em></td><td></td><td bgcolor="lightgreen"><center>X</center></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#env-any">env-any</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-comb">make-comb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mussrate">mus-srate</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionstuff"><b>Selections</b></a></em></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envchannel">env-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-convolve">make-convolve</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-width">mus-width</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sendmozilla">send-mozilla</a></em></td><td></td><td><em class=tab><a href="extsnd.html#xtoposition">x-&gt;position</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envchannelwithbase">env-channel-with-base</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-delay">make-delay</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-xcoeff">mus-xcoeff</a></em></td><td></td><td><em class=tab><a href="sndscm.html#setglobalsync">set-global-sync</a></em></td><td></td><td><em class=tab><a href="extsnd.html#xaxislabel">x-axis-label</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#envexptchannel">env-expt-channel</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makedifferentiator">make-differentiator</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-xcoeffs">mus-xcoeffs</a></em></td><td></td><td><em class=tab><a href="extsnd.html#setsamples">set-samples</a></em></td><td></td><td><em class=tab><a href="extsnd.html#xaxisstyle">x-axis-style</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#env-interp">env-interp</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-env">make-env</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-ycoeff">mus-ycoeff</a></em></td><td></td><td><em class=tab><a href="sndscm.html#shepardtone">shepard-tone</a></em></td><td></td><td><em class=tab><a href="extsnd.html#xbounds">x-bounds</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#envmixes">env-mixes</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-fft-window">make-fft-window</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-ycoeffs">mus-ycoeffs</a></em></td><td></td><td><em class=tab><a href="extsnd.html#shortfilename">short-file-name</a></em></td><td></td><td><em class=tab><a href="extsnd.html#xpositionslider">x-position-slider</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envselection">env-selection</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-filetoframe">make-file-&gt;frame</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#showaxes">show-axes</a></em></td><td></td><td><em class=tab><a href="extsnd.html#xzoomslider">x-zoom-slider</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envsound">env-sound</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-filetosample">make-file-&gt;sample</a></em></td><td></td><td bgcolor="lightgreen"><center>N</center></td><td></td><td><em class=tab><a href="extsnd.html#showcontrols">show-controls</a></em></td><td></td><td><em class=tab><a href="extsnd.html#xrampchannel">xramp-channel</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#envsoundinterp">env-sound-interp</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-filter">make-filter</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#showdiskspace">show-disk-space</a></em></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#env?">env?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-filtered-comb">make-filtered-comb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#nameclickhook">name-click-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showgrid">show-grid</a></em></td><td></td><td bgcolor="lightgreen"><center>Y</center></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envedbase">enved-base</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-fir-filter">make-fir-filter</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ncos">ncos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showindices">show-indices</a></em></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envedclipping">enved-clip?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-firmant">make-firmant</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ncos?">ncos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showlistener">show-listener</a></em></td><td></td><td><em class=tab><a href="extsnd.html#ytoposition">y-&gt;position</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#enveddialog">enved-dialog</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-flocsig">make-flocsig</a></em></td><td></td><td><em class=tab><a href="extsnd.html#newsound">new-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showmarks">show-marks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#yaxislabel">y-axis-label</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envedenvelope">enved-envelope</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-formant">make-formant</a></em></td><td></td><td><em class=tab><a href="extsnd.html#newsounddialog">new-sound-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showmixwaveforms">show-mix-waveforms</a></em></td><td></td><td><em class=tab><a href="extsnd.html#ybounds">y-bounds</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#filterenv">enved-filter</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-frame">make-frame</a></em></td><td></td><td><em class=tab><a href="extsnd.html#newsoundhook">new-sound-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#showselection">show-selection</a></em></td><td></td><td><em class=tab><a href="extsnd.html#ypositionslider">y-position-slider</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#filterenvorder">enved-filter-order</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-frame!">make-frame!</a></em></td><td></td><td><em class=tab><a href="extsnd.html#newwidgethook">new-widget-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showselectiontransform">show-selection-transform</a></em></td><td></td><td><em class=tab><a href="extsnd.html#yzoomslider">y-zoom-slider</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envedhook">enved-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-frametofile">make-frame-&gt;file</a></em></td><td></td><td><em class=tab><a href="sndscm.html#nextframe">next-frame</a></em></td><td></td><td><em class=tab><a href="sndscm.html#showsmptelabel">show-smpte-label</a></em></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envedin-dB">enved-in-dB</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makeframereader">make-frame-reader</a></em></td><td></td><td><em class=tab><a href="extsnd.html#nextsample">next-sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showsonogramcursor">show-sonogram-cursor</a></em></td><td></td><td bgcolor="lightgreen"><center>Z</center></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envedpower">enved-power</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-granulate">make-granulate</a></em></td><td></td><td><em class=tab><a href="sndclm.html#noid">noid</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showtransformpeaks">show-transform-peaks</a></em></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envedstyle">enved-style</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makegraphdata">make-graph-data</a></em></td><td></td><td><em class=tab><a href="sndscm.html#cleandoc"><b>Noise Reduction</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#showwidget">show-widget</a></em></td><td></td><td><em class=tab><a href="sndscm.html#ztransform">z-transform</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envedtarget">enved-target</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makehiddencontrolsdialog">make-hidden-controls-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#normalizechannel">normalize-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showyzero">show-y-zero</a></em></td><td></td><td><em class=tab><a href="extsnd.html#zeropad">zero-pad</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envedwaving">enved-wave?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makehighpass">make-highpass</a></em></td><td></td><td><em class=tab><a href="sndscm.html#normalizeenvelope">normalize-envelope</a></em></td><td></td><td><em class=tab><a href="sndscm.html#silenceallmixes">silence-all-mixes</a></em></td><td></td><td><em class=tab><a href="sndscm.html#zipsound">zip-sound</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envedwaveformcolor">enved-waveform-color</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makehilberttransform">make-hilbert-transform</a></em></td><td></td><td><em class=tab><a href="sndclm.html#normalizepartials">normalize-partials</a></em></td><td></td><td><em class=tab><a href="sndscm.html#silencemixes">silence-mixes</a></em></td><td></td><td><em class=tab><a href="sndscm.html#zipper">zipper</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#envelopeinterp">envelope-interp</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-iir-filter">make-iir-filter</a></em></td><td></td><td><em class=tab><a href="sndscm.html#normalizesound">normalize-sound</a></em></td><td></td><td><em class=tab><a href="sndclm.html#sinc-train">sinc-train</a></em></td><td></td><td><em class=tab><a href="extsnd.html#zoomcolor">zoom-color</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#envelopedmix">enveloped-mix</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-locsig">make-locsig</a></em></td><td></td><td><em class=tab><a href="sndscm.html#normalizedmix">normalized-mix</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sincwidth">sinc-width</a></em></td><td></td><td><em class=tab><a href="extsnd.html#zoomfocusstyle">zoom-focus-style</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envexamples"><b>Envelopes</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#makelowpass">make-lowpass</a></em></td><td></td><td><em class=tab><a href="sndclm.html#notch">notch</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sineenvchannel">sine-env-channel</a></em></td><td></td>
+</tr>
+ <tr><td><em class=tab><a href="extsnd.html#epsbottommargin">eps-bottom-margin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makemixsampler">make-mix-sampler</a></em></td><td></td><td><em class=tab><a href="sndscm.html#notchchannel">notch-channel</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sineramp">sine-ramp</a></em></td><td></td>
+</tr>
+ <tr><td><em class=tab><a href="extsnd.html#epsfile">eps-file</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-mixer">make-mixer</a></em></td><td></td><td><em class=tab><a href="sndscm.html#notchoutrumbleandhiss">notch-out-rumble-and-hiss</a></em></td><td></td><td><em class=tab><a href="sndscm.html#singerdoc">singer</a></em></td><td></td>
+</tr>
</table>
</body></html>
diff --git a/ladspa-help.scm b/ladspa-help.scm
deleted file mode 100644
index 057c70f..0000000
--- a/ladspa-help.scm
+++ /dev/null
@@ -1,185 +0,0 @@
-
-
-;; Dave Phillips ladspa help.
-
-(provide 'snd-ladspa-help.scm)
-
-(define ladspa-help-texts (list
-
-"cmt" "canyon_delay" "Canyon delay"
- "A deep stereo cross-delay with built-in low pass filters. Note: This effect works only with stereo soundfiles !"
-
-"delay" "delay_5s"
-
-"Delay 5s" "The delay time unit is in seconds. The balance slider controls the strength of the delays."
-
-"delayorama_1402" "delayorama"
-
-"Delayorama" "Random seed: Controls the random numbers that will be used to stagger the delays and amplitudes if random is turned up on them. Changing this forces the random values to be recalulated. Input gain (dB): Controls the gain of the input signal in decibels. Feedback (%): Controls the amount of output signal fed back into the input. Number of taps: Controls the number of taps in the delay. First delay (s): The time (in seconds) of the first delay. Delay range (s): The time difference (in seconds) between the first and last delay. Delay change: The scaling factor between one delay and the next. Delay random (%): The random factor applied to the delay. Amplitude change: The scaling factor between one amplitude and the next. Amplitude random (%): The random factor applied to the amplitude. Dry/wet mix: The level of delayed sound mixed into the output."
-
-"cmt" "fbdelay_5s"
-
-"Feedback delay (5 sec)" "Feedback delay with maximum delay time of 5 seconds."
-"fad_delay_1192" "fadDelay"
-
-"Fractionally addressed delay line"
- "A fixed ring buffer delay implementation. Has different dynamics than a normal delay, more suitable for certain things. Changes in delay length are generally more pleasing, but delays >2s long have reduced sound quality."
-
-"cmt" "grain_scatter"
-
-"Granular scatter processor"
- "This plugin generates an output audio stream by scattering short `grains' of sound from an input stream. It is possible to control the length and envelope of these grains, how far away from their source time grains may be scattered and the density (grains/sec) of the texture produced."
-
-
-"tape_delay_1211" "tapeDelay"
-
-
-"Tape delay" "Correctly models the tape motion and some of the smear effect, but there is no simulation for the head saturation yet. The way the tape accelerates and decelerates gives a nicer delay effect for many purposes."
-
-
-"decimator_1202" "decimator"
-
-
-"Decimator" "Decimates by reducing the effective sample rate and reducing the bit depth of the input signal. Allows non-integer values for smooth transitions between clean and low-fidelity signals. Bit depth: The bit depth that the signal will be reduced to. Sample rate scalar: Multiplies (scales) the signal sample rate by this value."
-
-"diode_1185" "diode"
-
-"Diode" "Mangles the signal as if it had been passed through a diode rectifier network. You should probably follow this with a DC offset remover, unless you want the offset. Mode: 0 for none, 1 for half wave, 2 for full wave, 3 for silence. The mode parameter is continuously variable from through to half-wave rectification to full-wave to silence."
-
-"foverdrive_1196" "foverdrive"
-"Fast overdrive" "A simple overdrive. Compresses the extreme peaks to make a sound similar to an overdriven amplifier. Level: Controls the point at which the signal starts to distort and the degree of distortion."
-"foldover_1213" "foldover"
-"Foldover distortion" "Uses a sine wave approximation to simulate valve-style foldover distortion. Probably should have a DC offset remover on the output, but it's not always necessary. Drive: Controls the degree of distortion. Skew: Controls the asymmetry of the waveform."
-
-
-"gsm_1215" "gsm"
-
-"GSM simulator" "Encodes and decodes a signal using the GSM voice compression system. Has the effect of making the signal sound like it is being sent over a European mobile phone network. Dry/wet mix: 0 will give you the dry signal (but with the appropriate amount of delay), 1 will give you a totally wet signal. Number of passes: The number of times the signal is sent through the encode/decode process. Increases the CPU consumption almost linearly, and it will become more peaky so less friendly to realtime processing. Error rate (bits/block): The number of simulated bits that get changed during the transmission process."
-
-"overdrive_1182" "overdrive"
-
-"Mono overdrive" "A basic overdrive effect, with controls for the degree of compression and for the distortion. Amps limit (in dB relative to nominal 0): Mostly this parameter is used to artificially lower the headroom of the amp, but it can also be used to counteract the effects of hosts that ignore the audio input range hints. If the host is using 16-bit int WAV files then a good guess for limit is +80dB. Drive level: This controls the degree of amplifier compression. Values above 1.0 will work, but they produce unpredictable output levels. Lowering the limit is a better way of increasing the distortion. Low-density coloration: Controls the amplitude of some low (input space) frequency amplitude distortion. High-density coloration: Controls the amplitude of some high (input space) frequency amplitude distortion."
-
-"satan_maximiser_1408" "satanMaximiser"
-
-"Barry's Satan maximizer"
-"Compresses signals with a stupidly short attack and decay, infinite ratio and hard knee. Not really a compressor, but good harsh distortion. Decay time (samples): Controls the envelope decay time. Knee point (dB): Controls the knee roll-off point, i.e. the point above which the compression kicks in. 0 will have no effect, -90 will remove virtually the entire dynamic range."
-
-"sifter_1210" "sifter"
-"Signal sifter" "Sorts and mixes blocks of the input signal to give a 'bumpy ramp' effect. Certain types of input will produce silence on the output (mostly ones with only low frequency components). This is a very odd effect, and doesn't really have any music applications, but can produce some interesting noises."
-
-"overdrive_s_1183" "overdrive_s"
-"Stereo overdrive" "A basic overdrive_s effect, with controls for the degree of compression and for the distortion. Amps limit (in dB relative to nominal 0): Mostly this parameter is used to artificially lower the headroom of the amp, but it can also be used to counteract the effects of hosts that ignore the audio input range hints. If the host is using 16-bit int WAV files then a good guess for limit is +80dB. Drive level: This controls the degree of amplifier compression. Values above 1.0 will work, but they produce unpredictable output levels. Lowering the limit is a better way of increasing the distortion. Low-density coloration: Controls the amplitude of some low (input space) frequency amplitude distortion. High-density coloration: Controls the amplitude of some high (input space) frequency amplitude distortion."
-
-"transient_1206" "transient"
-"Transient mangler" "No help yet, sorry"
-
-"valve_1209" "valve"
-
-"Valve saturation" "A model of valve (tube) distortion, lacking some of the harmonics you would get in a real tube amp, but sounds good nonetheless. Distortion level: How hard the signal is driven against the limit of the amplifier. Distortion character: The hardness of the sound, low for softer, high for harder."
-
-"shaper_1187" "shaper"
-
-"Wave shaper" "Reshapes the wave by an exponential function. Inspiration was taken from the Nord module of the same name. If you are getting rubbish out then it's probably because the host isn't using the input/output range hints, which are very important for this plugin. Waveshape: Positive values have an expanding effect, negative values have a compressing effect."
- "comb_1190" "comb"
-"Comb filter"
-
-"Band separation controls the distance between the filter's peaks. Feedback level increases the distinctive wooshy phaser sound."
-
-"Karaoke"
-
-"Attempts to strip the vocals from a stereo signal. Vocal volume (dB): Controls the attenuation of the vocal (center channel) in decibels. The greater the attenuation the greater the loss of the stereo field."
-"svf_1214" "svf"
-
-"State variable filter"
-
-"An oversampled state variable filter with a few tweaks. Quite nice, tends to be unstable with high resonance and Q values, but good when kept under control. Filter type: (0=none, 1=LP, 2=HP, 3=BP, 4=BR, 5=AP) Select between no filtering, low-pass, high-pass, band-pass, band-reject and all-pass. Filter frequency: Cutoff frequency, beware of high values with low sample rates. Filter Q: The filter's cutoff slope. Filter resonance: The filter's resonance is sort of separate from Q but very related (implemented with feedback). Do not use with the bandpass mode."
-"vcf-303 ladspa plugin"
-"VCF-303"
-
-"Emulates the voltage controlled resonant filter of the bass synthesizer of Roland's TB-303. Move the sliders to set the filter parameters."
-"mbeq_1197" "mbeq"
-"multiband eq"
-"Multiband equalizer"
-
-"This is a fairly typical multiband graphic equalizer. It's implemented using a FFT, so it takes quite a lot of CPU power, but it should have less phase effect than an equivalent filter implementation. If the input signal is at too low a sample rate then the top bands will be ignored, i.e., the highest useful band will always be a high shelf."
-"cmt" "compress_peak"
-"Compressor (peak tracking)"
-"Move the sliders to set the compressor parameters."
-
-"cmt" "compress_rms"
-"Compressor (rms tracking)"
-"Move the sliders to set the compressor parameters."
-"dyson_compress_1403" "dysonCompress"
-"Dyson compressor"
-"Peak limit (dB) controls the desired limit of the output signal in decibels. Release time (s) controls the time in seconds taken for the compressor to relax its gain control over the input signal. (No information is available regarding the significance of the fast and normal compression ratio settings)."
-"cmt" "expand_peak"
-"Expander (peak tracking)"
-"Move the sliders to set the expander parameters."
-"cmt" "expand_rms"
-"Expander (rms tracking)"
-"Move the sliders to set the expander parameters."
-"cmt" "limit_peak"
-"Limiter (peak tracking)"
-"Move the sliders to set the limiter parameters."
-"cmt" "limit_rms"
-"Limiter (rms tracking)"
-"Move the sliders to set the limiter parameters."
-"am_pitchshift_1433" "amPitchshift"
-"AM Pitchshifter" "This plugin works by running a single write pointer (monotonic) and two read pointers (pitchscaled) over a ringbuffer. The output is faded between the two read pointers according to the sine of the distance from the write pointer. The design is based on the mechanism of a mechanical pitchshifter I saw in the Gemeentemuseum in Den Haag, though I'm sure it is a common enough algorithm. Pitch shift: The multiple of the output pitch. Thus, a value of 2.0 will increase the pitch by one octave. Buffer size: The order of magnitude of the buffer size. Small buffers will sound fluttery, large buffers will have flangey sounding echoes. I recommend a buffer size of 3 for a reasonable compromise, with wideband material at around 48KHz. For drums you might have to lower it, and for voiced background noises it can go higher."
-"harmonic_gen_1220" "harmonicGen"
-"Harmonic generator" "Allows you to add harmonics and remove the fundamental from any audio signal. Known bugs: There is no bandwidth limiting filter on the output, so it is easy to create excessive high-frequency harmonics that could cause aliasing problems. However, in practice this doesn't seem to be a serious problem. Examples: There are many interesting effects you can achieve with sine waves. One example is producing band-limited square waves from sine waves. To do this, set the parameters to 1, 0, -0.3333, 0, 0.2, 0, -0.14285, 0, 0.11111. To get a triangle-like signal use 1, 0, -0.3333, 0, -0.2, 0, -0.14285, 0, -0.11111. Fundamental magnitude: The amplitude of the fundamental of the signal. Reduce it to 0 to remove the base signal altogether, or -1 to phase-invert it. 2nd harmonic magnitude: The 2nd harmonic, its frequency is twice the frequency of the fundamental. 3rd harmonic magnitude: The 3rd harmonic, its frequency is three times the frequency of the fundamental. Even harmonics add a distorted feel to the sound. Valve (tube) amplifiers introduce distortions at all the harmonics, transistor amplifiers only introduce distortion into the odd harmonics."
-"pitch_scale_1194" "pitchScaleHQ"
-"Pitch scaler" "A pitch shifter implementation that scales the harmonics appropriately with the base frequencies. It is an implementation of Stephen M. Sprenger's pitch scaler design. It gives reasonable, general purpose results for small changes, but won't give Antares or Eventide anything to worry about. The FFT block size and oversampling has been kept at reasonable levels to keep the CPU usage low. Pitch coefficient: The pitch scaling factor. A value of 2.0 will increase the pitch by one octave, .50 will lower it by one octave, etc.""pitch_scale_1194" "pitchScaleHQ"
-"Pitch scaler"
-"A pitch shifter implementation that scales the harmonics appropriately with the base frequencies. It is an implementation of Stephen M. Sprengler's pitch scaler design. It gives reasonable, general purpose results for small changes, but won't give Antares or Eventide anything to worry about. The FFT block size and oversampling has been kept at reasonable levels to keep the CPU usage low. Pitch coefficient: The pitch scaling factor, a value of 2.0 will increase the pitch by one octave, etc."
-"multivoice_chorus_1201" "multivoiceChorus"
-"Multivoice chorus"
-"This is an implementation of a Multivoice (as opposed to Multiscale) chorus algorithm. It uses a novel sinc-based noise interpolation method to produce a subtle modulation law, which makes it possible to get away with larger numbers of voices without the metallic, artificial sound common in chorus effects. Voice separation (ms): The individual voices can either be running at the same base delay (set this to zero) or staggered. Setting this to non-zero values can make the output sound richer, but will make it sound grainy with some type of signals. Detune (%): The maximum amount that a voice will be detuned by. A value of 1 is recommended, but you may be able to get away with higher values if the signal is less harmonic. LFO frequency (Hz): The frequency that the detune effect will be modulated at. A matter of taste, for most types of input a lower value will be more subtle. Output attenuation (dB): With large numbers of voices the output can become too high, so use this to trim the amplitude to a more helpful level."
-"dj_flanger_1438" "djFlanger"
-"DJ Flanger" "This is a flanger which is more or less typical of DJ mixing desks. Requested by Patrick Shirkey. LFO Sync: When turned from off to on it resets the phase of the LFO back to the start of the cycle. Used to sync the LFO to the track. LFO Period: The cycle period of the LFO in seconds. LFO Depth: The maximum delay the LFO will use to flange, in milliseconds. Feedback: The amount of the delayed output that is mixed back into the delay."
-"flanger_1191" "flanger"
-"Flanger"
-"A digital flanger implementation. Uses a novel zero excursion and a controlled bandwidth modulation function that should make the modulation less repetitive and noticeable. This effect is similar in character to a phaser, the main difference is that a phaser sounds more regular and stable. Delay base (ms): This is the offset from the input time that the detuned delay moves around. 10 is probably a good starting value. Max slowdown (ms): This is the maximum delay that will be applied to the delayed signal, relative to the dry signal. LFO frequency (Hz): This is the core frequency that the 'LFO' will move at. The LFO isn't actually an oscillator, but it does change periodically. Feedback: Feedback applied from the output to the input. Increases the depth of the effect, but makes it sound less like a real flanger."
-"phasers_1217" "lfoPhaser"
-"retro_flange_1208" "retroFlange"
-"Retro flanger"
-"A model of someone flanging the input. Models the tape saturation effects and frequency smear. The smear could probably be done better. Average stall (ms): The average time difference between the two tapes, per stall. Flange frequency (Hz): The rate the tape is stalled at."
-"ringmod_1188" "ringmod_1i1o1l"
-"Ring modulation Help"
-"Ring or amplitude modulation with LFO. Move the sliders to set the ring modulation parameters. Modulation depth key: 0=none 1=AM 2=RM"
-"cmt" "freeverb3"
-"Freeverb3" "Jezar's famous reverb. Move the sliders to set the reverb parameters. This effect works only with stereo soundfiles! See the Freeverb Web page at http://www.jw015a0732.pwp.blueyonder.co.uk/freeverb.htm for more information."
-"gverb_1216" "gverb"
-"Gverb" "A mono in, stereo out reverb implementation by Juhana Sadeharju (kouhia at nic.funet.fi). Steve Harris ported it to LADSPA and did some testing. Please contact Juhana directly regarding any bugs you find. Roomsize (m): The size of the room, in meters. Excessivly large, and excessivly small values will make it sound a bit unrealistic. Values of around 30 sound good. Reverb time (s): Reverb decay time, in seconds. 7 is a good place to start. Damping: This controls the high-frequency damping (a lowpass filter). Values near 1 will make it sound very bright, values near 0 will make it sound very dark. Input bandwidth: This is like a damping control for the input. It has a similar effect to the damping control, but is subtly different. Dry signal level (dB): The amount of dry signal to be mixed with the reverbed signal. Early reflection level (dB): The quantity of early reflections (scatter reflections directly from the source). Think of Lexicon's ambience patches. Tail level (dB): The level of the classic reverb tail reflections."
-"plate_1423" "plate"
-"Plate reverb" "A physical model of a steel plate reverb. Based on Josep Comajuncosas' gong model, it uses 8 linear waveguides to model the plate. Reverb time: Controls the RT60 time of the reverb. Actually controls the size of the plate. The mapping betwwen plate size and RT60 time is just a heuristic, so it's not very accurate. Damping: Controls the degree that the surface of the plate is damped. Dry/wet mix: Controls the balance between the dry and wet signals."
-"imp_1199" "imp"
-"Impulse convolver" "This is a convolver for a set of fairly short impulses. The set of impulses has to be compiled in; currently they are:
-ID Impulse source
-
-1 Unit impulse (identity)
-2 My flat (light natural reverb)
-3 Yamaha Marshall stack simulator
-4 Fender 68 Vibrolux (SM57 on axis)
-5 Fender 68 Vibrolux (SM57 off axis)
-6 Fender 68 Vibrolux (Audio-technica AT4050)
-7 Fender 68 Vibrolux (Neumann U87)
-8 Fender Bassman (SM57 on axis)
-9 Fender Bassman (SM57 off axis)
-10 Fender Bassman (Audio-technica AT4050)
-11 Fender Bassman (Neumann U87)
-12 Fender Superchamp (SM57 on axis)
-13 Fender Superchamp (SM57 off axis)
-14 Fender Superchamp (Audio-technica AT4050)
-15 Fender Superchamp (Neumann U87)
-16 Marshall JCM2000 (SM57 on axis)
-17 Marshall JCM2000 (SM57 off axis)
-18 Marshall Plexi (SM57 on axis)
-19 Marshall Plexi (SM57 off axis)
-20 Matchless Chieftain (SM57 on axis)
-21 Matchless Chieftain (SM57 off axis)
-
-The impulse ID selects the impulse to convolve with. High latency mode: If you are running with blocks that are not whole powers of two long, or you are hearing distortion, try changing this to 1. Gain (dB): Controls the gain of the output signal in decibels."
-
-))
diff --git a/ladspa.scm b/ladspa.scm
deleted file mode 100644
index f482cbd..0000000
--- a/ladspa.scm
+++ /dev/null
@@ -1,936 +0,0 @@
-
-;; ladspa.scm
-;; Use ladspa plugins with the help of a mouse. -Kjetil S. Matheussen.
-
-;; Changes 9.8.2003 ->
-;; Many changes.
-;;
-;; Changes 8.8.2003 -> 9.8.2003
-;; -Added some workaround code for vst plugins. Previously, applying didn't work.
-;; -Possible to use plugins without input audio ports.
-;; -Channels were reversed. Fixed
-;; -Applying to a single channel allways made the script apply to channel 0. Fixed.
-;; -Try to fix dialog-proportions after opening.
-
-
-;; Changes 5.8.2003 -> 8.8.2003
-;; -Fixed segfaults when exiting.
-;; -Improved the apply function.
-;; -Use the help text from new-plugins.scm written by Dave Phillips.
-;; -Fixed the sliders so that sound is updated also when changing
-;; position. Not only after releasing.
-;;
-
-;; ladspa.scm -> ladspa2.scm:
-;; -Making heavy use of the new ladspa-functions in snd 6.11.
-;; -Realtime preview works perfectly. Seems to at least.
-;; -Many plugins can be previewed at the same time.
-;; -Previewing is automaticly looped.
-;; -The plugins with more than one input or output audio port work.
-;; -The default values are based on ladspa hints.
-;; -Toggle ports uses toggle buttons instead of sliders.
-;; -Integer ports uses integer sliders instead of float sliders.
-;; -Initialisation is probably faster.
-;; -Added the hour-glass progress reporter when applying.
-;;
-;; Problems:
-;; -Theres a lot of (if (not (string=? "vst" libname)) tests. This is a workaround
-;; to make a vst plugin remember parametersettings even when changed inside a native gui.
-;; However, this can lead to problems when the number of channels for the
-;; selection is changed from what was the situation when
-;; the dialog was opened. Doing a workaround for that situation too is messy as well.
-;; -The Model-E vst plugin have no less than 513 input control ports,
-;; and makes the script stop because snd is out of stack. There might
-;; be something wrong with the script. Don't know scheme too well.
-;; -In some resize-positions, some widgets becomes invisible.
-;; -Realtime preview wont work if number of frames sent to the
-;; dac-hook is more than 8192. (minor problem probably, and is solved
-;; by increasing "ladspa-maxbuf" to something larger than 8192).
-
-
-
-
-(provide 'snd-ladspa.scm)
-
-
-
-;; Increase this number if you can't preview sound because of large latency in the system.
-;; Note, this is not the latency, just the maximum buffer size. The only bad consequence about
-;; increasing this number, is the increased use of memory.
-
-(define ladspa-maxbuf 8192)
-
-
-
-(if (not (provided? 'snd-gui.scm))
- (load-from-path "gui.scm"))
-
-
-(c-load-from-path eval-c)
-
-
-;; Organize help texts.
-(c-load-from-path ladspa-help)
-
-(define ladspa-help-assoclist '())
-
-(define (insert-ladspa-help alist)
- (if (not (null? alist))
- (begin
- (set! ladspa-help-assoclist
- (cons (list (string-append (car alist) (cadr alist))
- (caddr alist) (cadddr alist))
- ladspa-help-assoclist))
- (insert-ladspa-help (cddddr alist)))))
-
-(insert-ladspa-help ladspa-help-texts)
-
-
-(define ladspa-effects-menu (add-to-main-menu "Ladspa"))
-
-
-(define num-running-ladspas 0)
-(define (ladspa-add-num-instance!)
- (if (and (defined? 'c-use-rt-player?)
- (c-use-rt-player?)
- (-> (c-p) isplaying))
- (begin
- (-> (c-p) pause)
- (set! num-running-ladspas (1+ num-running-ladspas))
- (-> (c-p) continue))
- (set! num-running-ladspas (1+ num-running-ladspas))))
-(define (ladspa-remove-num-instance!)
- (set! num-running-ladspas (max 0 (1- num-running-ladspas))))
-
-(def-class (<ladspa> libname plugname)
-
- (def-var descriptor (ladspa-descriptor libname plugname))
-
- ;; <array> of ladspa plugin handles.
- (define handles #f)
-
- ;; These are lists of numbers.
- (def-var input-controls '())
- (def-var output-controls '())
-
- (define input-audios '())
- (define output-audios '())
-
- ;; Is #t if ladspa plugin has no audio inputs.
- (define no_audio_inputs #f)
-
- ;; A ladspa plugin does not need to have equal number of audio
- ;; inputs and outputs. This variable holds the mininum of the two.
- ;; Except when no_audio_inputs is #t. Then it holds the number
- ;; of audio-outputs instead.
- (define min_num_audios 0)
-
-
- ;; <array> of vcts. All handles use the same vcts.
- (define ports #f)
-
-
- (define isopened #f)
-
-
- (define* (open #:optional (num_handles 1))
- (-> ports map! (lambda (n port) (or port
- (make-vct ladspa-maxbuf))))
- (call-with-current-continuation
- (lambda (return)
- (set! handles (<array/map> num_handles
- (lambda (n)
- (let ((handle (ladspa-instantiate descriptor (srate) )))
- (if (not handle)
- (begin
- (c-display "Error: Could not make ladspa handle.")
- (this->close)
- (return #f))
- (begin
- (-> ports for-each (lambda (n port)
- (ladspa-connect-port descriptor handle n port)))
- (ladspa-activate descriptor handle)))
- handle))))))
- #t)
-
-
- ;; Close all handles.
- (def-method (close)
- ;;(display "close called ")(display (-> handles length))(newline)
- (if handles
- (-> handles for-each (lambda (n handle)
- (if handle
- (begin
- (ladspa-deactivate descriptor handle)
- (ladspa-cleanup descriptor handle))))))
- (set! handles #f))
-
-
- (define (get-port portnum)
- (ports portnum))
-
- ;; Not used.
- (define (set-port! portnum vct)
- (display "ai: ")(display handle)(newline)
- (ports portnum vct)
- (ladspa-connect-port descriptor handle portnum vct)) ;; Which handle???
-
- (define (get-num-input-audio-ports)
- (length input-audios))
- (define (get-input-audio-port num)
- (get-port (list-ref input-audios num)))
- (define (set-input-audio-port num vct)
- (set-port! (list-ref input-audios num) vct))
-
- (define (get-num-output-audio-ports)
- (length output-audios))
- (define (get-output-audio-port num)
- (get-port (list-ref output-audios num)))
- (define (set-output-audio-port num vct)
- (set-port! (list-ref output-audios num) vct))
-
-
- ;; Warning, len must not be larger than ladspa-maxbuf.
- (define (run len)
- (-> handles for-each (lambda (n handle)
- (ladspa-run descriptor handle len))))
-
-
-
- (def-method (set-default-input-controls)
- ;;;; There is a serious bug regarding getting default values using lrdf. Disabled for now.
- ;;(let* ((def-uri (lrdf_get_default_uri (.UniqueID descriptor)))
- ;; (defs (and def-uri (lrdf_get_setting_values def-uri)))
- ;; (def-count (and defs (lrdf_defaults_count defs)))
- ;; (def-vals (and defs (-> (<array/map> def-count (lambda (n) (cons (lrdf_defaults_pid defs n) (lrdf_defaults_value defs n)))) get-list))))
- ;;(if defs (lrdf_free_setting_values defs))
- (for-each (lambda (x)
- (let ((hint (car (x 1)))
- (lo (cadr (x 1)))
- (hi (caddr (x 1))))
- (define (ishint dashint)
- (= (logand hint LADSPA_HINT_DEFAULT_MASK) dashint))
- (define (ishint_notdefault dashint)
- (not (= (logand hint dashint ) 0)))
- (this 'input-control-set! (x 0)
- (cond ;;((and def-vals (assoc (x 0) def-vals )) (cdr (assoc (x 0) def-vals)))
- ((ishint LADSPA_HINT_DEFAULT_0) 0)
- ((ishint LADSPA_HINT_DEFAULT_MINIMUM) lo)
- ((ishint LADSPA_HINT_DEFAULT_LOW) (if (ishint_notdefault LADSPA_HINT_LOGARITHMIC)
- (exp (+ (* 0.75 (log lo)) (* 0.25 (log hi))))
- (+ (* 0.75 lo) (* 0.25 hi))))
- ((ishint LADSPA_HINT_DEFAULT_1) 1)
- ((ishint LADSPA_HINT_DEFAULT_MAXIMUM) hi)
- ((ishint LADSPA_HINT_DEFAULT_HIGH) (if (ishint_notdefault LADSPA_HINT_LOGARITHMIC)
- (exp (+ (* 0.75 (log hi)) (* 0.25 (log lo))))
- (+ (* 0.75 hi) (* 0.25 lo))))
- ((ishint LADSPA_HINT_DEFAULT_MIDDLE) (if (ishint_notdefault LADSPA_HINT_LOGARITHMIC)
- (exp (+ (* 0.5 (log hi)) (* 0.5 (log lo))))
- (+ (* 0.5 hi) (* 0.5 lo))))
- ((ishint LADSPA_HINT_DEFAULT_100) 100)
- ((ishint LADSPA_HINT_DEFAULT_440) 440)
- ((ishint LADSPA_HINT_SAMPLE_RATE) (srate))
- (else
- (/ (+ lo hi) 2))))))
-
- (map (lambda (x) (<array> x (list-ref (.PortRangeHints descriptor) x)))
- input-controls)))
- ;;)
-
-
- (define (minimum-num-handles sndchannels pluginchannels)
- (+ (if (> (modulo sndchannels pluginchannels) 0) 1 0)
- (c-integer (/ sndchannels pluginchannels))))
-
-
-
- ;; This one always return #f because it can be used as a hook.
- (define apply-soundobject
- (let ((len #f)
- (num_chans #f)
- (chan #f))
- (lambda (sdobj)
- (set! len (sound-data-length sdobj))
- (set! num_chans (sound-data-chans sdobj))
- (if (> len ladspa-maxbuf)
- (begin
- (display "Ladspa buffer to small. Can't use ladspa plugin in realtime.")
- (display "You can try to reduce the dac-size to fix the problem.")
- (newline))
- (begin
- (set! chan 0)
- (-> handles for-each (lambda (handlenum handle)
- (if (not no_audio_inputs)
- (c-for 0 < min_num_audios 1
- (lambda (n)
- (if (< (+ chan n) num_chans)
- (sound-data->vct sdobj
- (+ chan n)
- (get-input-audio-port n))))))
- (ladspa-run descriptor handle len)
- (c-for 0 < min_num_audios 1
- (lambda (n)
- (if (< (+ chan n) num_chans)
- (vct->sound-data (get-output-audio-port n)
- sdobj
- (+ chan n)))))
- (set! chan (+ chan min_num_audios))))))
- #f)))
-
-
- (def-method (apply! #:optional parset-func)
- (define (get-startchan snd chan)
- (if (selection-member? snd chan)
- chan
- (get-startchan snd (+ chan 1))))
- (if (not (selection-member? (selected-sound)))
- (select-all (selected-sound)))
- (let* ((snd (selected-sound))
- (start (selection-position snd))
- (length (selection-frames snd))
- (end (+ start length))
- (startchan #f)
- (chans #f)
- (tempfilename #f)
- (new-file #f)
- (buflen (if parset-func 32 ladspa-maxbuf))
- (vct-out (make-vct buflen))
- (sdobj #f)
- (isbreaked #f)
- (readers '()))
-
- (define (apply-open)
- (if (not (string=? "vst" libname))
- (open (minimum-num-handles chans min_num_audios))
- #t))
-
- (c-for 0 < (channels snd) 1
- (lambda (ch)
- (if (selection-member? snd ch)
- (if (not startchan)
- (begin
- (set! startchan ch)
- (set! chans 1))
- (set! chans (1+ (- ch startchan)))))))
- (if (not startchan)
- (begin
- (set! startchan 0)
- (set! chans (chans snd))))
-
- (set! sdobj (make-sound-data chans buflen))
-
- (if (not (apply-open))
- (begin
- (display "Could not start plugin.")
- (newline))
- (begin
-
- ;; Set up samplers for each channel.
- (c-for 0 < chans 1
- (lambda (ch)
- (set! readers (cons (make-sampler start
- snd
- (+ startchan ch))
- readers))))
- (set! readers (reverse readers))
-
-
- ;; Create a temporary file.
- (set! tempfilename (snd-tempnam))
- (set! new-file (mus-sound-open-output tempfilename (srate snd) chans #f #f)) ; Bill S 2-Dec-06
-
- ;; Start the hour-glass
- (start-progress-report)
-
-
- ;; Do the ladspa.
- (c-for 0 < (+ buflen length) buflen
- (lambda (n)
- (if (< n length)
- (let ((len (min (- length n)
- buflen)))
-
- ;;(display "N: ")(display n)
- ;;(display " len: ")(display len)
- ;;(display " length: ")(display length)(newline)
-
- (if (or isbreaked (c-g?))
- (if (not isbreaked) (set! isbreaked #t))
- (begin
-
- ;; Update hour-glass
- (progress-report (/ n length) snd)
-
- ;; The length of sdobj must be the length of the data. Can only happen at last iteration.
- (if (< len buflen)
- (begin
- (set! sdobj (make-sound-data chans len))
- (set! vct-out (make-vct len))))
-
- ;; Reading data into soundobject from soundfile.
- (if (not no_audio_inputs)
- (c-for-each (lambda (ch reader)
- (vct-map! vct-out
- (lambda () (next-sample reader)))
- (vct->sound-data vct-out sdobj ch))
- readers))
-
- ;; Automation
- (if parset-func
- (parset-func snd (+ start n)))
-
- ;; Process soundobject
- (apply-soundobject sdobj)
-
- ;; Writing data from soundobject into temporary file.
- (mus-sound-write new-file
- 0
- (1- len)
- chans
- sdobj)))))))
-
-
- ;; Close temporary file.
- (mus-sound-close-output new-file (* chans (* (mus-bytes-per-sample mus-out-format) length)))
-
-
- ;; Let snd know about the new file.
- (if (defined? 'c-report-and-clear)
- (c-report-and-clear "Please wait, inserting new data."))
-
- (if (not isbreaked)
- (c-for 0 < chans 1
- (lambda (ch)
- (set-samples start length tempfilename snd (+ ch startchan) #f (string-append "ladspa: " libname "/" plugname) ch))))
-
-
- ;; Close hour-glass
- (finish-progress-report)
-
-
- ;; Close plugin.
- (if (not (string=? "vst" libname))
- (this->close))))))
-
-
-
-
-
- (def-method (add-dac-hook!)
- (let* ((num_channels (channels (selected-sound)))
- (num_ins (length input-audios))
- (num_outs (length output-audios)))
- (define (init-dac-hook-stuff)
- (if (not (open (minimum-num-handles num_channels min_num_audios)))
- #f
- (begin
- (ladspa-add-num-instance!)
- (add-hook! dac-hook apply-soundobject)
- #t)))
- (if (= 0 min_num_audios)
- (begin
- (c-display "Ladspa plugin has no output audio ports.")
- #f)
- (if (not (string=? "vst" libname))
- (init-dac-hook-stuff)
- (if (not handles)
- (init-dac-hook-stuff)
- (begin
- (ladspa-add-num-instance!)
- (add-hook! dac-hook apply-soundobject)
- #t))))))
-
-
- (def-method (remove-dac-hook!)
- (ladspa-remove-num-instance!)
- (remove-hook! dac-hook apply-soundobject)
- (if (not (string=? "vst" libname))
- (this->close)))
-
- (def-method (input-control-set! num val)
- (vct-set! (ports num) 0 val))
-
- (def-method (get-input-control num)
- (vct-ref (ports num) 0))
-
-
- (def-method (get-hint portnum)
- (car (list-ref (.PortRangeHints descriptor) portnum)))
-
- (define (ishint portnum dashint)
- (not (= (logand (this->get-hint portnum) dashint) 0)))
-
- (def-method (get-lo portnum)
- (* (if (ishint portnum LADSPA_HINT_SAMPLE_RATE)
- (srate)
- 1)
- (if (not (ishint portnum LADSPA_HINT_BOUNDED_BELOW))
- 0 ;The value Ardour use.
- (cadr (list-ref (.PortRangeHints descriptor) portnum)))))
-
- (def-method (get-hi portnum)
- (* (if (ishint portnum LADSPA_HINT_SAMPLE_RATE)
- (srate)
- 1)
- (if (not (ishint portnum LADSPA_HINT_BOUNDED_ABOVE))
- (if (not (ishint portnum LADSPA_HINT_TOGGLED))
- 4 ;The value Ardour use.
- 1)
- (caddr (list-ref (.PortRangeHints descriptor) portnum)))))
-
-
- ;; Constructor:
- (if (not descriptor)
- (set! this #f)
- (begin
- (c-for-each (lambda (n x)
- (if (> (logand x LADSPA_PORT_CONTROL) 0)
- (if (> (logand x LADSPA_PORT_INPUT) 0)
- (set! input-controls (append input-controls (list n)))
- (set! output-controls (append output-controls (list n))))
- (if (> (logand x LADSPA_PORT_INPUT) 0)
- (set! input-audios (append input-audios (list n)))
- (set! output-audios (append output-audios (list n))))))
- (.PortDescriptors descriptor))
- (if (= (length input-audios) 0)
- (begin
- (set! min_num_audios (length output-audios))
- (set! no_audio_inputs #t))
- (set! min_num_audios (min (length input-audios) (length output-audios))))
- (set! ports (apply <array> (map (lambda (x) (if (> (logand x LADSPA_PORT_CONTROL) 0)
- (make-vct 1)
- #f))
- (.PortDescriptors descriptor))))
- (this->set-default-input-controls))))
-
-
-
-(define (install-ladspa-menues)
-
- (define das-ladspa-list #f)
-
- (define (get-ladspa-list)
- (if (not das-ladspa-list)
- (set! das-ladspa-list (sort (map (lambda (listpart) (list (ladspa-descriptor (car listpart) (cadr listpart))
- (car listpart)
- (cadr listpart)))
- (list-ladspa))
- (lambda (x y)
- (string-ci<? (.Name (car x))
- (.Name (car y)))))))
- das-ladspa-list)
-
- (define (get-ladspa-with-id id)
- (if (null? (get-ladspa-list))
- #f
- (if (= (.UniqueID (caar das-ladspa-list)) id)
- (let ((ret (car das-ladspa-list)))
- (set! das-ladspa-list (cdr das-ladspa-list))
- ret)
- (let loop ((part das-ladspa-list))
- (if (or (null? part)
- (null? (cdr part)))
- #f
- (if (= (.UniqueID (caadr part)) id)
- (let ((ret (cadr part)))
- (set-cdr! part (cddr part))
- ret)
- (loop (cdr part))))))))
-
-
- (define ladspa-add-effect-menuitem
- (let* ((num-effects-per-submenu 12)
- (ladspa-effect-num num-effects-per-submenu)
- (uncat-submenu #f)
- (curr-submenu #f))
- (lambda* (name proc #:optional menu)
- (if menu
- (menu-add menu name proc)
- (begin
- (if (not uncat-submenu)
- (set! uncat-submenu
- (if (provided? 'snd-lrdf)
- (menu-sub-add ladspa-effects-menu "Uncategorised")
- ladspa-effects-menu)))
- (if (= num-effects-per-submenu ladspa-effect-num)
- (begin
- (set! curr-submenu (menu-sub-add uncat-submenu (string-append (substring name 0 (min (string-length name) 20)) " ... ")))
- (set! ladspa-effect-num -1)))
- (menu-add curr-submenu name proc)
- (set! ladspa-effect-num (+ 1 ladspa-effect-num)))))))
-
-
- (define (make-ladspadialog descriptor libraryname effectname)
- (define ladspa #f)
- (define dialog #f)
- (define toggles #f)
-
- (let ((name (.Name descriptor))
- (author (.Maker descriptor))
- (lisense (.Copyright descriptor))
- (isplaying #f)
- (onoffbutton #f)
- (islooping #f)
- (isplayingselection #f)
- (nodelines (make-hash-table 4))
- (play-hooks (make-hash-table 4))
- (node-graphs (make-hash-table 4))
- (open-portnums '()))
-
- (define (ShowDialog)
- (MakeDialogIfNotMade)
- (-> dialog show)
- (-> onoffbutton set #t)
- (enableplugin)
- (for-each (lambda (portnum)
- (automation-onoff #t portnum
- (-> ladspa get-lo portnum)
- (-> ladspa get-hi portnum)
- (list-ref (.PortNames descriptor) portnum)))
- open-portnums)
- )
-
- (define (Help)
- (let ((dashelp (assoc (string-append libraryname effectname) ladspa-help-assoclist)))
- (help-dialog author
- (string-append (if dashelp
- (caddr dashelp)
- lisense)
- (string #\newline #\newline)
- "Processing can be stopped by pressing C-g"))))
-
- (define (Apply)
- (stop-playing)
- (disableplugin)
- (-> onoffbutton set #f)
- (if (null? (hash-fold acons '() nodelines))
- (-> ladspa apply!)
- (-> ladspa apply!
- (lambda (snd pos)
- (hash-fold (lambda (portnum nodeline s)
- (let ((lo (-> ladspa get-lo portnum))
- (hi (-> ladspa get-hi portnum)))
- (-> ladspa input-control-set!
- portnum
- (c-scale (-> nodeline get-val (c-scale pos 0 (frames snd 0) 0 1))
- 0 1
- hi lo))))
- '() nodelines)))))
-
- (define (Close)
- (set! open-portnums (hash-fold (lambda (portnum nodeline s) (nodeline-off portnum) (cons portnum s))
- '() nodelines))
- (-> onoffbutton set #f)
- (-> dialog hide)
- (disableplugin)
- (if (string=? "vst" libraryname)
- (-> ladspa close)))
-
- (define (Preview button onoroff)
- (if onoroff
- (begin
- (if (not (selection-member? (selected-sound)))
- (select-all (selected-sound)))
- (if (defined? 'c-play-selection)
- (c-play-selection)
- (letrec ((das-play (lambda ()
- (play-selection #f
- (lambda (x)
- (if (= x 0)
- (das-play)
- (-> button set #f)
- ))))))
- (das-play))))
- (stop-playing)))
-
- (define (Reset)
- (-> ladspa set-default-input-controls)
- (for-each (lambda (slider portnum)
- (-> slider set! (-> ladspa get-input-control portnum)))
- (-> dialog sliders)
- (remove (lambda (portnum) (ishint (car (list-ref (.PortRangeHints descriptor) portnum)) LADSPA_HINT_TOGGLED))
- (-> ladspa input-controls)))
- (for-each (lambda (toggle portnum)
- (-> toggle set (> (-> ladspa get-input-control portnum) 0)))
- toggles
- (filter-org (lambda (portnum) (ishint (car (list-ref (.PortRangeHints descriptor) portnum)) LADSPA_HINT_TOGGLED))
- (-> ladspa input-controls))))
-
- (define (enableplugin)
- (if (not (-> ladspa add-dac-hook!))
- (begin
- (display "Unable to use ladspa plugin.")
- (newline))))
-
- (define (disableplugin)
- (-> ladspa remove-dac-hook!))
-
- (define (onoff onoroff)
- (if onoroff
- (enableplugin)
- (disableplugin)))
-
- (define (nodeline-off portnum)
- (remove-hook! play-hook (hash-ref play-hooks portnum))
- (hash-set! node-graphs portnum (-> (hash-ref nodelines portnum) get-graph))
- (hash-remove! play-hooks portnum)
- (-> (hash-ref nodelines portnum) paint)
- (-> (hash-ref nodelines portnum) delete!)
- (hash-remove! nodelines portnum))
-
- (define (automation-onoff onoroff portnum lo hi name)
- (if onoroff
- (let* ((nodeline (<editor-nodeline> (selected-sound) 0
- (c-scale (-> ladspa get-input-control portnum) hi lo 0 1)
- (lambda (val)
- (format #f "~1,3f(~A)" (c-scale val 0 1 hi lo) name))
- #f
- (list-ref (list cursor-context selection-context) (random 2))))
- (das-play-hook (let ((lastcursor (- (dac-size))))
- (lambda (samples)
- (let* ((snd (selected-sound))
- (ch 0)
- (newcursor (cursor snd ch)))
- (if (or (= newcursor (- lastcursor (dac-size)) )
- (= newcursor lastcursor))
- (set! newcursor (min (frames snd ch) (+ (dac-size) lastcursor))))
- (set! lastcursor newcursor)
- (-> ladspa input-control-set!
- portnum
- (c-scale (-> nodeline get-val (c-scale newcursor 0 (frames snd ch) 0 1))
- 0 1
- hi lo)))))))
- (if (hash-ref node-graphs portnum)
- (-> nodeline set-graph!
- (hash-ref node-graphs portnum)))
- (hash-set! nodelines portnum nodeline)
- (add-hook! play-hook das-play-hook)
- (hash-set! play-hooks portnum das-play-hook))
- (nodeline-off portnum)))
-
- (define (slider-moved val portnum lo hi name)
- (if (not (hash-ref nodelines portnum))
- (-> ladspa input-control-set! portnum val)))
-
- (define (ishint dashint dashint2)
- (not (= (logand dashint dashint2 ) 0)))
-
- (define (MakeDialogIfNotMade)
- (if (not dialog)
- (begin
- ;; Make sure the plugin is disabled before quitting.
- (add-hook! exit-hook (lambda args
- (disableplugin)
- (if (string=? "vst" libraryname)
- (-> ladspa close))
- #f))
-
-
- ;; Make dialog
- (set! dialog
- (<dialog> name Close
- "Close" Close
- "Apply" Apply
- "Preview" Preview
- "Reset" Reset
- (if (assoc (string-append libraryname effectname) ladspa-help-assoclist)
- "Help"
- "Not much help")
- Help))
-
- ;; Add sliders.
- (if (not (null? (-> ladspa input-controls)))
- (dialog 'add-sliders
- (map (lambda (portnum)
- (let* ((lo (-> ladspa get-lo portnum))
- (init (-> ladspa get-input-control portnum))
- (hi (-> ladspa get-hi portnum))
- (hint (-> ladspa get-hint portnum))
- (scale (if (ishint hint LADSPA_HINT_INTEGER)
- 1
- (if use-gtk 1000.0 100.0)))
- (name (list-ref (.PortNames descriptor) portnum)))
- (list name
- lo
- init
- hi
- (lambda (val) (slider-moved val portnum lo hi name))
- scale
- (lambda (onoff) (automation-onoff onoff portnum lo hi name)))))
- (remove (lambda (portnum) (ishint (car (list-ref (.PortRangeHints descriptor) portnum)) LADSPA_HINT_TOGGLED))
- (-> ladspa input-controls)))
- ))
-
-
- ;; Add toggle buttons.
- (set! toggles (map (lambda (portnum)
- (let* ((hint (-> ladspa get-hint portnum))
- (hi (-> ladspa get-hi portnum))
- (lo (-> ladspa get-lo portnum))
- (portname (list-ref (.PortNames descriptor) portnum))
- (ison (> (-> ladspa get-input-control portnum) 0)))
- (<checkbutton> dialog
- portname
- (lambda (on)
- (-> ladspa input-control-set! portnum (if on hi lo)))
- ison)))
- (filter-org (lambda (portnum) (ishint (car (list-ref (.PortRangeHints descriptor) portnum)) LADSPA_HINT_TOGGLED))
- (-> ladspa input-controls))))
-
-
- ;; Add on/off button.
- (set! onoffbutton (<checkbutton> dialog
- "On/off"
- onoff
- #t)))))
-
-
- (set! ladspa (<ladspa> libraryname effectname))
- (if (not ladspa)
- (begin
- (c-display "Could not load plugin" libraryname effectname)
- #f)
- (ShowDialog))))
-
- (define* (make-ladspadialog-menuitem descriptor libraryname effectname #:optional menu)
- (ladspa-add-effect-menuitem (.Name descriptor) (lambda ()
- ;;ShowDialog
- (make-ladspadialog descriptor libraryname effectname))
- menu))
-
- ;; Following function made while looking at the source for jack-rack written by Bob Ham.
-
- (define (menu-descend-base menu uri base)
- (let ((uris (lrdf_get_subclasses uri)))
- (if uris
- (let ((n 0))
- (while (< n (lrdf_uris_count uris))
- (let* ((item (lrdf_uris_get_item uris n))
- (label (lrdf_get_label item))
- (newmenu (menu-sub-add menu label)))
- (menu-descend newmenu item (string-append base "/" label)))
- (set! n (1+ n)))
- (lrdf_free_uris uris))))
- (let ((uris (lrdf_get_instances uri)))
- (if uris
- (let ((n 0))
- (while (< n (lrdf_uris_count uris))
- (let* ((item (lrdf_uris_get_item uris n))
- (das-ladspa (get-ladspa-with-id (lrdf_get_uid item))))
- (if das-ladspa
- (apply make-ladspadialog-menuitem (append das-ladspa (list menu)))))
- (set! n (1+ n)))
- (lrdf_free_uris uris))))
- )
-
- (define (menu-descend menu uri base)
- (menu-descend-base menu uri base))
-
- (if (provided? 'snd-lrdf)
- (menu-descend ladspa-effects-menu (string-append (LADSPA-BASE) "Plugin") ""))
-
- (for-each (lambda (x)
- (apply make-ladspadialog-menuitem x))
- (get-ladspa-list))
- )
-
-
-
-
-
-
-
-;; Remove the following line to take away lrdf support.
-(provide 'snd-lrdf)
-
-
-(define lrdf-is-inited #f)
-
-(define ladspa-not-initialized #t)
-
-(if (and (provided? 'snd-lrdf)
- (not lrdf-is-inited))
- (begin
- (eval-c "-llrdf"
-
- "#include <lrdf.h>"
-
- (proto->public
- "void lrdf_init();"
- "void lrdf_cleanup();"
- ;;"int lrdf_read_files(const char *uri[]);"
- "int lrdf_read_file(const char *uri);"
- ;;"void lrdf_add_triple(const char *source, const char *subject, const char* predicate, const char *object, enum lrdf_objtype literal);"
- "char* lrdf_add_preset(const char *source, const char *label, unsigned long id, lrdf_defaults *vals);"
- "void lrdf_remove_matches(lrdf_statement *pattern);"
- "void lrdf_remove_uri_matches(const char *uri);"
- "void lrdf_rebuild_caches();"
- "int lrdf_export_by_source(const char *src, const char *file);"
- "lrdf_uris *lrdf_match_multi(lrdf_statement *patterns);"
- "lrdf_statement *lrdf_matches(lrdf_statement *pattern);"
- "lrdf_statement *lrdf_one_match(lrdf_statement *pattern);"
- "int lrdf_exists_match(lrdf_statement *pattern);"
- "lrdf_uris *lrdf_get_all_superclasses(const char *uri);"
- "lrdf_uris *lrdf_get_subclasses(const char *uri);"
- "lrdf_uris *lrdf_get_all_subclasses(const char *uri);"
- "lrdf_uris *lrdf_get_instances(const char *uri);"
- "lrdf_uris *lrdf_get_all_instances(const char *uri);"
- "lrdf_statement *lrdf_all_statements();"
- "void lrdf_free_uris(lrdf_uris *u);"
- "void lrdf_free_statements(lrdf_statement *s);"
- "char *lrdf_get_setting_metadata(const char *uri, const char *element);"
- "char *lrdf_get_default_uri(unsigned long id);"
- "lrdf_uris *lrdf_get_setting_uris(unsigned long id);"
- "unsigned long lrdf_get_uid(const char *uri);"
- "lrdf_defaults *lrdf_get_setting_values(const char *uri);"
- "lrdf_defaults *lrdf_get_scale_values(unsigned long id, unsigned long port);"
- "void lrdf_free_setting_values(lrdf_defaults *def);"
- "char *lrdf_get_label(const char *uri);")
-
- (public
- (<int> lrdf_defaults_count (lambda ((<lrdf_defaults*> defs))
- (return defs->count)))
-
- (<int> lrdf_defaults_pid (lambda ((<lrdf_defaults*> defs)
- (<int> n))
- (return defs->items[n].pid)))
-
- (<float> lrdf_defaults_value (lambda ((<lrdf_defaults*> defs)
- (<int> n))
- (return defs->items[n].value)))
-
- (<int> lrdf_uris_count (lambda ((<lrdf_uris*> uris))
- (return uris->count)))
-
- (<char*> lrdf_uris_get_item (lambda ((<lrdf_uris*> uris)
- (<int> n))
- (return uris->items[n])))
-
- (<char*> LADSPA-BASE (lambda ()
- (return LADSPA_BASE)))))
-
- (lrdf_init)
-
- (for-each (lambda (path)
- (catch #t
- (lambda ()
- (let* ((dir (opendir path))
- (entry (readdir dir)))
- (while (not (eof-object? entry))
- (if (and (not (string=? "." entry))
- (not (string=? ".." entry)))
- (lrdf_read_file (string-append "file://" path "/" entry)))
- (set! entry (readdir dir)))
- (closedir dir)))
- (lambda (key . args)
- #f)))
- (string-split (if (getenv "LADSPA_RDF_PATH")
- (getenv "LADSPA_RDF_PATH")
- "/usr/local/share/ladspa/rdf:/usr/share/ladspa/rdf")
- #\:))
- (set! lrdf-is-inited #t)))
-
-
-(install-ladspa-menues)
-(set! ladspa-not-initialized #f)
-
diff --git a/makefile.in b/makefile.in
index ee294e9..fc8c9b8 100644
--- a/makefile.in
+++ b/makefile.in
@@ -19,9 +19,8 @@ JACK_FLAGS = @JACK_FLAGS@
ORIGINAL_LDFLAGS = @ORIGINAL_LDFLAGS@
LDFLAGS = @LDFLAGS@
-LIBS = @LIBINTL@ @LIBS@
+LIBS = @LIBS@
XEN_LIBS = @XEN_LIBS@
-XM_LIBS = @XM_LIBS@
GTK_LIBS = @GTK_LIBS@
GTK_LD_LIBS = @GTK_LD_LIBS@
MOTIF_LIBS = @XLIBS@
@@ -33,7 +32,6 @@ FFTW_LIBS = @FFTW_LIBS@
SNDLIB_LIB = @SNDLIB_LIB@
FAM_LIB = @FAM_LIB@
JACK_LIBS = @JACK_LIBS@
-RT_LIBS = @RT_LIBS@
GMP_LIBS = @GMP_LIBS@
LDSO_FLAGS = @LDSO_FLAGS@
@@ -52,16 +50,13 @@ top_srcdir = @top_srcdir@
datarootdir = ${prefix}/share
pkgdatadir = ${datarootdir}/snd
# snd-help.c looks for the documentation in /usr/local/share/doc/snd-11 -- perhaps it should be pkgdatadir? or passed at compile time
-localedir = ${datadir}/locale
-DEFS = -DLOCALE_DIR=\"$(localedir)\" -DSCRIPTS_DIR=\"$(pkgdatadir)\" @DEFS@
+DEFS = -DSCRIPTS_DIR=\"$(pkgdatadir)\" @DEFS@
SNDLIB_FILES = $(@SNDLIB_FILES@)
GX_FILES = $(@GX_FILES@)
GX_HEADERS = $(@GX_HEADERS@)
-SUBDIRS = po
-
.SUFFIXES:
.SUFFIXES: .c .o
@@ -81,7 +76,7 @@ S7_O_FILES = @S7_LIB@
NO_GUI_HEADERS = snd-nogui0.h snd-nogui1.h
-O_FILES = snd-io.o snd-utils.o snd-listener.o snd-error.o snd-completion.o snd-menu.o snd-axis.o snd-data.o snd-fft.o snd-marks.o snd-file.o snd-edits.o snd-chn.o snd-dac.o snd-region.o snd-select.o snd-find.o snd-snd.o snd-help.o snd-main.o snd-print.o snd-trans.o snd-mix.o snd.o snd-env.o snd-xen.o snd-ladspa.o snd-kbd.o snd-sig.o snd-draw.o run.o rt-various.o
+O_FILES = snd-io.o snd-utils.o snd-listener.o snd-error.o snd-completion.o snd-menu.o snd-axis.o snd-data.o snd-fft.o snd-marks.o snd-file.o snd-edits.o snd-chn.o snd-dac.o snd-region.o snd-select.o snd-find.o snd-snd.o snd-help.o snd-main.o snd-print.o snd-trans.o snd-mix.o snd.o snd-env.o snd-xen.o snd-ladspa.o snd-kbd.o snd-sig.o snd-draw.o run.o
X_O_FILES = snd-xutils.o snd-xhelp.o snd-xfind.o snd-xmenu.o snd-xdraw.o snd-xlistener.o snd-xchn.o snd-xsnd.o snd-xregion.o snd-xdrop.o snd-xmain.o snd-xmix.o snd-xrec.o snd-xenv.o snd-gxutils.o snd-gxbitmaps.o snd-gxcolormaps.o snd-xfft.o snd-xprint.o snd-xfile.o snd-xprefs.o
@@ -101,8 +96,7 @@ NO_FILES =
main_target: @MAKE_TARGET@
snd: $(SNDLIB_HEADERS) $(SND_HEADERS) $(GX_HEADERS) $(S7_HEADERS) $(S7_O_FILES) $(SNDLIB_FILES) $(O_FILES) $(GX_FILES) $(GL_FILES)
- (cd po && $(MAKE))
- $(CC) $(LDFLAGS) $(CFLAGS) $(S7_O_FILES) $(SNDLIB_FILES) $(O_FILES) $(GX_FILES) $(GL_FILES) -o snd $(SNDLIB_LIB) $(XEN_LIBS) $(GTK_LIBS) $(GL_LIBS) $(MOTIF_LIBS) $(JACK_LIBS) $(RT_LIBS) $(AUDIO_LIB) $(FFTW_LIBS) $(GSL_LIBS) $(FAM_LIB) $(GMP_LIBS) $(LIBS)
+ $(CC) $(LDFLAGS) $(CFLAGS) $(S7_O_FILES) $(SNDLIB_FILES) $(O_FILES) $(GX_FILES) $(GL_FILES) -o snd $(SNDLIB_LIB) $(XEN_LIBS) $(GTK_LIBS) $(GL_LIBS) $(MOTIF_LIBS) $(JACK_LIBS) $(AUDIO_LIB) $(FFTW_LIBS) $(GSL_LIBS) $(FAM_LIB) $(GMP_LIBS) $(LIBS)
xm: xen.h mus-config.h $(S7_HEADERS)
rm -f xen.o
@@ -121,11 +115,6 @@ widget: snd_widget.o
snd_widget.o: $(SNDLIB_HEADERS) $(SND_HEADERS) $(GX_HEADERS) $(S7_HEADERS) $(SNDLIB_FILES) $(O_FILES) $(GX_FILES) $(GL_FILES)
$(LD) -r $(LDFLAGS) $(SNDLIB_FILES) $(O_FILES) $(GX_FILES) $(GL_FILES) -o snd_widget.o
-external: $(SNDLIB_HEADERS) $(SND_HEADERS) $(GX_HEADERS) $(S7_HEADERS) $(SNDLIB_FILES) $(O_FILES) $(GX_FILES) $(GL_FILES) snd_pd_external.o
- $(CC) -shared -o snd.pd_linux $(LDFLAGS) $(SNDLIB_FILES) $(O_FILES) $(GX_FILES) $(SNDLIB_LIB) $(XEN_LIBS) $(JACK_LIBS) $(RT_LIBS) $(AUDIO_LIB) $(FFTW_LIBS) $(GSL_LIBS) $(FAM_LIB) $(GMP_LIBS) $(LIBS) snd_pd_external.o
- strip --strip-unneeded snd.pd_linux
- ln -sf snd-11/snd.pd_linux ..
-
$(SNDLIB_O_FILES): $(SNDLIB_HEADERS) $(SND_HEADERS) $(S7_HEADERS)
$(O_FILES): $(SNDLIB_HEADERS) $(SND_HEADERS) $(SND_X_HEADERS) $(S7_HEADERS)
$(X_O_FILES): $(SNDLIB_HEADERS) $(SND_HEADERS) $(SND_X_HEADERS) $(S7_HEADERS)
@@ -188,7 +177,6 @@ install: snd
${SHELL} ${top_srcdir}/mkinstalldirs ${mandir}
${SHELL} ${top_srcdir}/mkinstalldirs ${mandir}/man1
${SHELL} ${top_srcdir}/mkinstalldirs ${pkgdatadir}
- (cd po && $(MAKE) install)
$(INSTALL) snd ${bindir}/snd
$(INSTALL) ${top_srcdir}/snd.1 ${mandir}/man1
(cd ${top_srcdir} && for f in ${SND_SCRIPTS}; do ${INSTALL_DATA} ${top_srcdir}/$${f} ${pkgdatadir}/$${f}; done)
@@ -203,7 +191,6 @@ install-strip: snd
${SHELL} ${top_srcdir}/mkinstalldirs ${mandir}
${SHELL} ${top_srcdir}/mkinstalldirs ${mandir}/man1
${SHELL} ${top_srcdir}/mkinstalldirs ${pkgdatadir}
- (cd po && $(MAKE) install)
$(INSTALL) -s snd ${bindir}/snd
$(INSTALL) ${top_srcdir}/snd.1 ${mandir}/man1
(cd ${top_srcdir} && for f in ${SND_SCRIPTS}; do ${INSTALL_DATA} ${top_srcdir}/$${f} ${pkgdatadir}/$${f}; done)
diff --git a/makefile.no-gettext b/makefile.no-gettext
deleted file mode 100644
index 2d36279..0000000
--- a/makefile.no-gettext
+++ /dev/null
@@ -1,227 +0,0 @@
-PACKAGE = @PACKAGE@
-VERSION = @VERSION@
-
-CC = @CC@
-SHELL = @SHELL@
-INSTALL = @INSTALL@
-INSTALL_DATA = ${INSTALL} -m 0644
-
-CFLAGS = @CFLAGS@
-GTK_CFLAGS = @GTK_CFLAGS@
-XEN_CFLAGS = @XEN_CFLAGS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-MOTIF_FLAGS = @XFLAGS@
-FFTW_CFLAGS = @FFTW_CFLAGS@
-GL_FLAGS = @GL_FLAGS@
-GSL_FLAGS = @GSL_CFLAGS@
-JACK_FLAGS = @JACK_FLAGS@
-
-ORIGINAL_LDFLAGS = @ORIGINAL_LDFLAGS@
-LDFLAGS = @LDFLAGS@
-
-LIBS = @LIBINTL@ @LIBS@
-XEN_LIBS = @XEN_LIBS@
-XM_LIBS = @XM_LIBS@
-LD_XM_LIBS = @LD_XM_LIBS@
-GTK_LIBS = @GTK_LIBS@
-GTK_LD_LIBS = @GTK_LD_LIBS@
-MOTIF_LIBS = @XLIBS@
-AUDIO_LIB = @AUDIO_LIB@
-GSL_LIBS = @GSL_LIBS@
-GL_LIBS = @GL_LIBS@
-GL_FILES = @GL_FILES@
-FFTW_LIBS = @FFTW_LIBS@
-SNDLIB_LIB = @SNDLIB_LIB@
-FAM_LIB = @FAM_LIB@
-JACK_LIBS = @JACK_LIBS@
-RT_LIBS = @RT_LIBS@
-
-LDSO_FLAGS = @LDSO_FLAGS@
-SO_FLAGS = @SO_FLAGS@
-SO_LD = @SO_LD@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-datadir = @datadir@
-bindir = @bindir@
-srcdir = @srcdir@
-VPATH = @srcdir@
-mandir = @mandir@
-top_srcdir = @top_srcdir@
-
-datarootdir = ${prefix}/share
-pkgdatadir = ${datarootdir}/snd
-# snd-help.c looks for the documentation in /usr/local/share/doc/snd-10 -- perhaps it should be pkgdatadir? or passed at compile time
-localedir = ${datadir}/locale
-DEFS = -DLOCALE_DIR=\"$(localedir)\" -DSCRIPTS_DIR=\"$(pkgdatadir)\" @DEFS@
-
-SNDLIB_FILES = $(@SNDLIB_FILES@)
-MIDI_FILES = $(@MIDI_FILES@)
-
-GX_FILES = $(@GX_FILES@)
-GX_HEADERS = $(@GX_HEADERS@)
-
-SUBDIRS =
-
-.SUFFIXES:
-.SUFFIXES: .c .o
-
-.c.o:
- $(CC) -c $(DEFS) $(GTK_CFLAGS) $(CAIRO_CFLAGS) $(CFLAGS) $(XEN_CFLAGS) $(MOTIF_FLAGS) $(GSL_FLAGS) $(GL_FLAGS) $(JACK_FLAGS) $(FFTW_CFLAGS) $<
-
-SND_SCRIPTS = *.scm *.fs *.rb *.fsm
-SNDLIB_HEADERS = mus-config.h sndlib.h _sndlib.h sndlib-strings.h clm.h vct.h sndlib2xen.h clm2xen.h xen.h clm-strings.h
-SND_HEADERS = mus-config.h sndlib.h _sndlib.h clm.h snd.h snd-0.h snd-1.h snd-strings.h xen.h snd-menu.h snd-file.h
-SND_X_HEADERS = snd-x0.h snd-x1.h
-SND_G_HEADERS = snd-g0.h snd-g1.h
-SNDLIB_O_FILES = headers.o audio.o io.o sound.o clm.o xen.o vct.o sndlib2xen.o clm2xen.o
-MIDI_O_FILES = midi.o
-
-S7_HEADERS = s7.h
-S7_FILES = s7.c
-S7_O_FILES = @S7_LIB@
-
-NO_GUI_HEADERS = snd-nogui0.h snd-nogui1.h
-
-O_FILES = snd-io.o snd-utils.o snd-listener.o snd-error.o snd-completion.o snd-menu.o snd-axis.o snd-data.o snd-fft.o snd-marks.o snd-file.o snd-edits.o snd-chn.o snd-dac.o snd-region.o snd-select.o snd-find.o snd-snd.o snd-help.o snd-main.o snd-print.o snd-trans.o snd-mix.o snd.o snd-env.o snd-xen.o snd-ladspa.o snd-kbd.o snd-sig.o snd-draw.o run.o rt-various.o
-
-X_O_FILES = snd-xutils.o snd-xhelp.o snd-xfind.o snd-xmenu.o snd-xdraw.o snd-xlistener.o snd-xchn.o snd-xsnd.o snd-xregion.o snd-xdrop.o snd-xmain.o snd-xmix.o snd-xrec.o snd-xenv.o snd-gxutils.o snd-gxbitmaps.o snd-gxcolormaps.o snd-xfft.o snd-xprint.o snd-xfile.o snd-xprefs.o
-
-XM_O_FILES = snd-xutils.o snd-xhelp.o snd-xfind.o snd-xmenu.o snd-xdraw.o snd-xlistener.o snd-xchn.o snd-xsnd.o snd-xregion.o snd-xdrop.o snd-xmain.o snd-xmix.o snd-xrec.o snd-xenv.o snd-gxutils.o snd-gxbitmaps.o snd-gxcolormaps.o snd-xfft.o snd-xprint.o snd-xfile.o snd-xprefs.o xm.o
-
-G_O_FILES = snd-gutils.o snd-ghelp.o snd-gfind.o snd-gmenu.o snd-gdraw.o snd-glistener.o snd-gchn.o snd-gsnd.o snd-gregion.o snd-gdrop.o snd-gmain.o snd-gmix.o snd-grec.o snd-genv.o snd-gxutils.o snd-gxbitmaps.o snd-gxcolormaps.o snd-gfft.o snd-gprint.o snd-gfile.o snd-gprefs.o
-
-XG_O_FILES = snd-gutils.o snd-ghelp.o snd-gfind.o snd-gmenu.o snd-gdraw.o snd-glistener.o snd-gchn.o snd-gsnd.o snd-gregion.o snd-gdrop.o snd-gmain.o snd-gmix.o snd-grec.o snd-genv.o snd-gxutils.o snd-gxbitmaps.o snd-gxcolormaps.o snd-gfft.o snd-gprint.o snd-gfile.o snd-gprefs.o xg.o
-
-NO_GUI_O_FILES = snd-nogui.o
-GM_FILES = xm.o
-GM_SO_FILE = xm.so
-GG_FILES = xg.o
-GG_SO_FILE = xg.so
-NO_FILES =
-
-main_target: @MAKE_TARGET@
-
-snd: $(SNDLIB_HEADERS) $(SND_HEADERS) $(GX_HEADERS) $(S7_O_FILES) $(SNDLIB_FILES) $(MIDI_FILES) $(O_FILES) $(GX_FILES) $(GL_FILES)
- $(CC) $(LDFLAGS) $(CFLAGS) $(S7_O_FILES) $(SNDLIB_FILES) $(MIDI_FILES) $(O_FILES) $(GX_FILES) $(GL_FILES) -o snd $(SNDLIB_LIB) $(XEN_LIBS) $(GTK_LIBS) $(GL_LIBS) $(MOTIF_LIBS) $(JACK_LIBS) $(RT_LIBS) $(AUDIO_LIB) $(FFTW_LIBS) $(GSL_LIBS) $(FAM_LIB) $(LIBS)
-
-xm: xen.h mus-config.h
- rm -f xen.o
- $(CC) -c xen.c -DUNDEF_USE_SND $(DEFS) $(SO_FLAGS) $(GTK_CFLAGS) $(CAIRO_CFLAGS) $(CFLAGS) $(XEN_CFLAGS) $(MOTIF_FLAGS) $(GSL_FLAGS) $(JACK_FLAGS) $(GL_FLAGS)
- $(CC) -c xm.c -DUNDEF_USE_SND $(DEFS) $(SO_FLAGS) $(GTK_CFLAGS) $(CAIRO_CFLAGS) $(CFLAGS) $(XEN_CFLAGS) $(MOTIF_FLAGS) $(GSL_FLAGS) $(JACK_FLAGS) $(GL_FLAGS)
- $(SO_LD) xen.o $(GM_FILES) -o $(GM_SO_FILE) $(SO_FLAGS) $(LDSO_FLAGS) $(ORIGINAL_LDFLAGS) $(LD_XM_LIBS) $(GL_LIBS) $(MOTIF_LIBS) $(FAM_LIB) $(LIBS)
-
-xg: xen.h mus-config.h
- rm -f xen.o
- $(CC) -c xen.c -DUNDEF_USE_SND $(DEFS) $(SO_FLAGS) $(GTK_CFLAGS) $(CAIRO_CFLAGS) $(CFLAGS) $(XEN_CFLAGS) $(MOTIF_FLAGS) $(GSL_FLAGS) $(JACK_FLAGS) $(GL_FLAGS)
- $(CC) -c xg.c -DUNDEF_USE_SND $(DEFS) $(SO_FLAGS) $(GTK_CFLAGS) $(CAIRO_CFLAGS) $(CFLAGS) $(XEN_CFLAGS) $(MOTIF_FLAGS) $(GSL_FLAGS) $(JACK_FLAGS) $(GL_FLAGS)
- $(SO_LD) xen.o $(GG_FILES) -o $(GG_SO_FILE) $(LDSO_FLAGS) $(ORIGINAL_LDFLAGS) $(GTK_LD_LIBS) $(FAM_LIB) $(LIBS)
-
-widget: snd_widget.o
-
-snd_widget.o: $(SNDLIB_HEADERS) $(SND_HEADERS) $(GX_HEADERS) $(SNDLIB_FILES) $(MIDI_FILES) $(O_FILES) $(GX_FILES) $(GL_FILES)
- $(LD) -r $(LDFLAGS) $(SNDLIB_FILES) $(MIDI_FILES) $(O_FILES) $(GX_FILES) $(GL_FILES) -o snd_widget.o
-
-external: $(SNDLIB_HEADERS) $(SND_HEADERS) $(GX_HEADERS) $(SNDLIB_FILES) $(MIDI_FILES) $(O_FILES) $(GX_FILES) $(GL_FILES) snd_pd_external.o
- $(CC) -shared -o snd.pd_linux $(LDFLAGS) $(SNDLIB_FILES) $(MIDI_FILES) $(O_FILES) $(GX_FILES) $(SNDLIB_LIB) $(XEN_LIBS) $(JACK_LIBS) $(RT_LIBS) $(AUDIO_LIB) $(FFTW_LIBS) $(GSL_LIBS) $(FAM_LIB) $(LIBS) snd_pd_external.o
- strip --strip-unneeded snd.pd_linux
- ln -sf snd-10/snd.pd_linux ..
-
-$(SNDLIB_O_FILES): $(SNDLIB_HEADERS) $(SND_HEADERS)
-$(MIDI_O_FILES): $(SNDLIB_HEADERS) $(SND_HEADERS)
-$(O_FILES): $(SNDLIB_HEADERS) $(SND_HEADERS) $(SND_X_HEADERS)
-$(X_O_FILES): $(SNDLIB_HEADERS) $(SND_HEADERS) $(SND_X_HEADERS)
-$(G_O_FILES): $(SNDLIB_HEADERS) $(SND_HEADERS) $(SND_G_HEADERS)
-$(S7_O_FILES): $(S7_HEADERS) $(S7_FILES)
-
-clean:
- rm -f $(SNDLIB_O_FILES)
- rm -f $(MIDI_O_FILES)
- rm -f $(O_FILES)
- rm -f $(X_O_FILES)
- rm -f $(G_O_FILES)
- rm -f $(NO_GUI_O_FILES)
- rm -f $(GM_FILES)
- rm -f $(GM_SO_FILE)
- rm -f $(GG_FILES)
- rm -f $(GG_SO_FILE)
- rm -f $(GL_FILES)
- rm -f $(S7_O_FILES)
- rm -f sndplay.o audinfo.o sndrecord.o sndinfo.o
- rm -f snd sndplay audinfo sndrecord sndinfo
-
-distclean: clean
- rm -f mus-config.h config.log config.status makefile
-
-clmclean:
- rm io.o headers.o audio.o sound.o clm.o
-
-allclean:
- rm -f *.o
- rm -f *.so
- rm -f *.a
- rm -f snd sndplay audinfo sndrecord sndinfo
-
-sndplay: $(SNDLIB_HEADERS)
- $(CC) -c $(DEFS) $(CFLAGS) -DUSE_SND=0 headers.c
- $(CC) -c $(DEFS) $(CFLAGS) -DUSE_SND=0 io.c
- $(CC) -c $(DEFS) $(CFLAGS) -DUSE_SND=0 audio.c
- $(CC) -c $(DEFS) $(CFLAGS) -DUSE_SND=0 sound.c
- $(CC) -c $(DEFS) $(CFLAGS) -DUSE_SND=0 sndplay.c
- $(CC) $(LDFLAGS) $(CFLAGS) headers.o io.o audio.o sound.o sndplay.o -o sndplay $(JACK_LIBS) $(AUDIO_LIB) $(LIBS)
-
-sndrecord: $(SNDLIB_HEADERS)
- $(CC) -c $(DEFS) $(CFLAGS) -DUSE_SND=0 headers.c
- $(CC) -c $(DEFS) $(CFLAGS) -DUSE_SND=0 io.c
- $(CC) -c $(DEFS) $(CFLAGS) -DUSE_SND=0 audio.c
- $(CC) -c $(DEFS) $(CFLAGS) -DUSE_SND=0 sound.c
- $(CC) -c $(DEFS) $(CFLAGS) -DUSE_SND=0 sndrecord.c
- $(CC) $(LDFLAGS) $(CFLAGS) headers.o io.o audio.o sound.o sndrecord.o -o sndrecord $(JACK_LIBS) $(AUDIO_LIB) $(LIBS)
-
-sndinfo: $(SNDLIB_HEADERS)
- $(CC) -c $(DEFS) $(CFLAGS) -DUSE_SND=0 headers.c
- $(CC) -c $(DEFS) $(CFLAGS) -DUSE_SND=0 io.c
- $(CC) -c $(DEFS) $(CFLAGS) -DUSE_SND=0 audio.c
- $(CC) -c $(DEFS) $(CFLAGS) -DUSE_SND=0 sound.c
- $(CC) -c $(DEFS) $(CFLAGS) -DUSE_SND=0 sndinfo.c
- $(CC) $(LDFLAGS) $(CFLAGS) headers.o io.o audio.o sound.o sndinfo.o -o sndinfo $(JACK_LIBS) $(AUDIO_LIB) $(LIBS)
-
-audinfo: $(SNDLIB_HEADERS)
- $(CC) -c $(DEFS) $(CFLAGS) -DUSE_SND=0 headers.c
- $(CC) -c $(DEFS) $(CFLAGS) -DUSE_SND=0 io.c
- $(CC) -c $(DEFS) $(CFLAGS) -DUSE_SND=0 audio.c
- $(CC) -c $(DEFS) $(CFLAGS) -DUSE_SND=0 sound.c
- $(CC) -c $(DEFS) $(CFLAGS) -DUSE_SND=0 audinfo.c
- $(CC) $(LDFLAGS) $(CFLAGS) headers.o io.o audio.o sound.o audinfo.o -o audinfo $(JACK_LIBS) $(AUDIO_LIB) $(LIBS)
-
-install: snd
- ${SHELL} ${top_srcdir}/mkinstalldirs ${bindir}
- ${SHELL} ${top_srcdir}/mkinstalldirs ${mandir}
- ${SHELL} ${top_srcdir}/mkinstalldirs ${mandir}/man1
- ${SHELL} ${top_srcdir}/mkinstalldirs ${pkgdatadir}
- $(INSTALL) snd ${bindir}/snd
- $(INSTALL) ${top_srcdir}/snd.1 ${mandir}/man1
- (cd ${top_srcdir} && for f in ${SND_SCRIPTS}; do ${INSTALL_DATA} ${top_srcdir}/$${f} ${pkgdatadir}/$${f}; done)
-
-uninstall:
- rm -f ${bindir}/snd
- rm -f ${mandir}/man1/snd.1
- for f in ${SND_SCRIPTS}; do rm -f ${pkgdatadir}/$${f}; done
-
-install-strip: snd
- ${SHELL} ${top_srcdir}/mkinstalldirs ${bindir}
- ${SHELL} ${top_srcdir}/mkinstalldirs ${mandir}
- ${SHELL} ${top_srcdir}/mkinstalldirs ${mandir}/man1
- ${SHELL} ${top_srcdir}/mkinstalldirs ${pkgdatadir}
- $(INSTALL) -s snd ${bindir}/snd
- $(INSTALL) ${top_srcdir}/snd.1 ${mandir}/man1
- (cd ${top_srcdir} && for f in ${SND_SCRIPTS}; do ${INSTALL_DATA} ${top_srcdir}/$${f} ${pkgdatadir}/$${f}; done)
-
-Makefile: Makefile.in config.status
- ./config.status
-
-config.status: configure
- ./config.status --recheck
-
-configure: configure.in
- cd $(srcdir); autoconf
diff --git a/marks.fs b/marks.fs
index 14b74b5..c9a284d 100644
--- a/marks.fs
+++ b/marks.fs
@@ -3,7 +3,7 @@
\ Author: Michael Scholz <mi-scholz@users.sourceforge.net>
\ Created: Tue Dec 27 19:22:06 CET 2005
-\ Changed: Fri Nov 06 00:29:50 CET 2009
+\ Changed: Sat Feb 06 14:01:51 CET 2010
\ Commentary:
\
@@ -12,10 +12,6 @@
\ move-syncd-marks ( sync diff -- )
\ describe-mark ( id -- ary )
\
-\ mark-properties ( id -- props )
-\ set-mark-properties ( id props -- )
-\ mark-property ( id key -- val )
-\ set-mark-property ( id key val -- )
\ save-mark-properties ( -- )
\ mark-click-info ( id -- #t )
@@ -92,31 +88,9 @@ require examp
;
\ --- Mark Properties ---
-: mark-properties ( id -- props )
- doc" Returns mark ID's entire property list."
- { id }
- id mark? unless 'no-such-mark #( get-func-name id ) fth-throw then
- :mark-property id object-id property-ref
-;
-: set-mark-properties ( id props -- )
- { id props }
- id mark? unless 'no-such-mark #( get-func-name id ) fth-throw then
- :mark-property id object-id props property-set!
-;
-: mark-property ( id key -- val )
- doc" Returns the value associated with KEY in the given mark's property list, or #f."
- { id key }
- id mark-properties key list-assoc-ref
-;
-: set-mark-property ( id key val -- )
- doc" Sets VAL to KEY in the given mark's property list."
- { id key val }
- id dup mark-properties key val list-assoc-set! set-mark-properties
-;
-
hide
: save-mark-properties-cb <{ filename -- }>
- undef undef undef marks 0 array-ref 0 array-ref array? if
+ undef undef undef marks car car cons? if
filename :fam a/o io-open { io }
io $" \n\\ from save-mark-properties in %s\n" #( *filename* ) io-write-format
io $" require marks\n\n" io-write
diff --git a/marks.rb b/marks.rb
index 1fd0404..ad2ebae 100644
--- a/marks.rb
+++ b/marks.rb
@@ -2,7 +2,7 @@
# Translator: Michael Scholz <mi-scholz@users.sourceforge.net>
# Created: Wed Mar 23 02:08:47 CET 2005
-# Changed: Thu Nov 26 18:17:55 CET 2009
+# Changed: Sat Feb 06 13:48:36 CET 2010
# Commentary:
#
@@ -36,11 +36,6 @@
# define_selection_via_marks(m1, m2)
# snap_mark_to_beat
# mark_explode(htype = Mus_next, dformat = Mus_bfloat)
-#
-# mark_properties(id)
-# set_mark_properties(id, new_val)
-# mark_property(id, key)
-# set_mark_property(id, key, val)
# save_mark_properties
# mark_click_info(id)
# eval_header(sndf)
@@ -456,60 +451,6 @@ splits a sound into a bunch of sounds based on mark placements")
#
# === Mark Properties ===
#
- $all_mark_properties = Array.new
-
- def mark_properties(id)
- property(id, :mark_property)
- end
-
- def set_mark_properties(id, new_val)
- set_property(id, :mark_property, new_val)
- end
-
- def remove_mark_properties(id)
- if hash?(mark_properties(id))
- properties.delete(id)
- $all_mark_properties.delete(id)
- end
- end
-
- add_help(:mark_property,
- "mark_property(id, key) \
-returns the value associated with 'key' in the given mark's property list, or false")
- def mark_property(id, key)
- Snd.raise(:no_such_mark, id) unless mark?(id)
- hash?(h = mark_properties(id)) and h[key]
- end
-
- add_help(:set_mark_property,
- "set_mark_property(id, key, val) \
-sets the value 'val' to 'key' in the given mark's property list")
- def set_mark_property(id, key, val)
- Snd.raise(:no_such_mark, id) unless mark?(id)
- unless hash?(h = mark_properties(id)) and h.store(key, val)
- $all_mark_properties.push(id)
- set_mark_properties(id, {key => val})
- end
- end
-
- add_help(:remove_mark_property,
- "remove_mark_property(key, id) \
-removes the key-value pair in the given mark's property list")
- def remove_mark_property(key, id)
- Snd.raise(:no_such_mark, id) unless mark?(id)
- if hash?(h = mark_properties(id))
- h.delete(key)
- else
- $all_mark_properties.delete(id)
- end
- end
-
-=begin
- $close_hook.add_hook!("remove-mark-properties") do |snd|
- $all_mark_properties.each do |id| (not mark?(id)) and remove_mark_properties(id) end
- end
-=end
-
add_help(:save_mark_properties,
"save_mark_properties() \
sets up an $after_save_state_hook function to save any mark-properties")
diff --git a/marks.scm b/marks.scm
index 22fb9ea..f4f289a 100644
--- a/marks.scm
+++ b/marks.scm
@@ -17,7 +17,6 @@
;;; define-selection-via-marks selects the portion between two marks
;;; snap-mark-to-beat forces dragged mark to end up on a beat
;;; mark-explode splits a sound into a bunch of sounds based on mark placements
-;;; mark-property implements property lists for marks
;;; save-mark-properties sets up an after-save-state-hook function to save any mark-properties
;;; mark-click-info is a mark-click-hook function that describes a mark and its properties
@@ -370,26 +369,7 @@
(update-time-graph snd)))
-;;; -------- mark property lists
-
-(define mark-property
- (make-procedure-with-setter
- (lambda (key id)
- "(mark-property key mark) returns the value associated with 'key' in the given mark's property list, or #f"
- (if (mark? id)
- (let ((data (assoc key (mark-properties id))))
- (if data
- (cdr data)
- #f))
- (throw 'no-such-mark (list "mark-property" id))))
- (lambda (key id new-val)
- (if (mark? id)
- (let ((old-val (assoc key (mark-properties id))))
- (if old-val
- (set-cdr! old-val new-val)
- (set! (mark-properties id) (cons (cons key new-val) (mark-properties id))))
- new-val)
- (throw 'no-such-mark (list "set! mark-property" id))))))
+;;; -------- save mark property lists
(define (save-mark-properties)
"(save-mark-properties) sets up an after-save-state-hook function to save any mark-properties"
diff --git a/mix.fs b/mix.fs
index 3a308cc..7fe5d4f 100644
--- a/mix.fs
+++ b/mix.fs
@@ -3,7 +3,7 @@
\ Translator: Michael Scholz <mi-scholz@users.sourceforge.net>
\ Created: Tue Oct 11 18:23:12 CEST 2005
-\ Changed: Sat Oct 31 00:04:31 CET 2009
+\ Changed: Sat Feb 06 18:13:53 CET 2010
\ Commentary:
\
@@ -17,9 +17,7 @@
\ mix-maxamp ( id -- max-amp )
\ snap-mix-to-beat ( at-tag-position -- )
\
-\ mix-property ( id key -- val )
-\ set-mix-property ( id key val -- )
-\ mix-click-sets-amp ( -- )
+\ mix-click-sets-amp ( id -- #t )
\ mix-click-info ( id -- #t )
\ mix-name->id ( name -- id )
\
@@ -39,23 +37,15 @@
require clm
require examp
-: tree-for-each ( proc-or-xt tree -- ?? )
+: tree-for-each ( proc-or-xt tree -- )
doc" Applies PROC-OR-XT to every leaf of TREE."
{ proc-or-xt tree }
tree nil? unless
- tree array? if
- proc-or-xt tree 0 array-ref recurse
- proc-or-xt tree 1 nil array-subarray recurse
+ tree cons? if
+ proc-or-xt tree car recurse
+ proc-or-xt tree cdr recurse
else
- proc-or-xt xt? if
- tree proc-or-xt execute
- else
- proc-or-xt proc? if
- proc-or-xt tree run-proc
- else
- #f
- then
- then
+ proc-or-xt proc? if proc-or-xt '( tree ) run-proc drop then
then
then
;
@@ -79,7 +69,7 @@ previous
doc" Returns the id of the mix at the given SAMPLE, or #f."
#f \ flag
snd snd-snd chn snd-chn mixes each { id }
- id mix-position samp = if
+ id mix-position samp d= if
drop \ drop flag
id
leave
@@ -134,30 +124,16 @@ Resets mix-release-hook to cancel."
previous
\ --- Mix Property ---
-: mix-property ( id key -- val )
- doc" Returns the value associated with KEY in the given mix's property list, or #f."
- { id key }
- \ mix? returns mix id if mix id is active, but mix id 0 means false in Forth.
- id mix? false? if 'no-such-mix #( get-func-name id ) fth-throw then
- id mix-properties key array-assoc-ref
-;
-: set-mix-property ( id key val -- )
- doc" Sets VAL to KEY in the given mix's property list."
- { id key val }
- id mix? false? if 'no-such-mix #( get-func-name id ) fth-throw then
- id dup mix-properties key val array-assoc-set! set-mix-properties drop
-;
-
: mix-click-sets-amp <{ id -- #t }>
- id :zero mix-property not if
- id :amp id mix-amp set-mix-property
+ 'zero id mix-property not if
+ 'amp id id mix-amp set-mix-property drop
id 0.0 set-mix-amp drop
- id :zero #t set-mix-property
+ 'zero id #t set-mix-property
else
- id id :amp mix-property set-mix-amp drop
- id :zero #f set-mix-property
- then
- #t
+ id 'amp id mix-property set-mix-amp drop
+ 'zero id #f set-mix-property
+ then drop
+ #t \ #t --> omit default action
;
\ mix-click-hook <'> mix-click-sets-amp add-hook!
diff --git a/mix.rb b/mix.rb
index 3e3b77b..34e8ef6 100644
--- a/mix.rb
+++ b/mix.rb
@@ -2,7 +2,7 @@
# Translator: Michael Scholz <mi-scholz@users.sourceforge.net>
# Created: Tue Feb 22 13:40:33 CET 2005
-# Changed: Sun Nov 29 14:51:09 CET 2009
+# Changed: Sat Feb 06 18:21:12 CET 2010
# Commentary:
#
@@ -17,9 +17,7 @@
# mix_maxamp(id)
# snap_mix_to_beat(at_tag_position)
#
-# mix_property(id, key)
-# set_mix_property(id, key, val)
-# mix_click_sets_amp
+# mix_click_sets_amp(id)
# mix_click_info(id)
# mix_name2id(name)
#
@@ -144,52 +142,18 @@ Reset $mix_release_hook to cancel.")
#
# === Mix Property ===
#
- add_help(:mix_property,
- "mix_property(id, key) \
-returns the value associated with KEY in the given mix's property list, or false.")
- def mix_property(id, key)
- Snd.raise(:no_such_mix, id) unless mix?(id)
- if (data = mix_properties(id)) and (res = data.assoc(key))
- if (val = res.cdr).length == 1
- val.car
- else
- val
- end
+ def mix_click_sets_amp(id)
+ unless mix_property(:zero, id)
+ set_mix_property(:amp, id, mix_amp(id))
+ set_mix_amp(id, 0.0)
+ set_mix_property(:zero, id, true)
else
- false
- end
- end
-
- add_help(:set_mix_property,
- "set_mix_property(id, key, val) \
-sets the value VAL to KEY in the given mix's property list.")
- def set_mix_property(id, key, val)
- Snd.raise(:no_such_mix, id) unless mix?(id)
- if data = mix_properties(id)
- if res = data.assoc(key)
- res.cdr = val
- else
- data.push([key, val])
- end
- else # new list
- set_mix_properties(id, [[key, val]])
- end
- val
- end
-
- def mix_click_sets_amp
- $mix_click_hook.add_hook!("mix-click-sets-amp") do |id|
- unless mix_property(id, :zero)
- set_mix_property(id, :amp, mix_amp(id))
- set_mix_amp(id, 0.0)
- set_mix_property(id, :zero, true)
- else
- set_mix_amp(id, mix_property(id, :amp))
- set_mix_property(id, :zero, false)
- end
- true
+ set_mix_amp(id, mix_property(:amp, id))
+ set_mix_property(:zero, id, false)
end
+ true
end
+ # $mix_click_hook.add_hook!("mix-click-sets-amp", &method(:mix_click_sets_amp).to_proc)
#
# === Mix Click Info ===
diff --git a/mix.scm b/mix.scm
index 353a8a0..ab8604d 100644
--- a/mix.scm
+++ b/mix.scm
@@ -6,7 +6,6 @@
;;; (find-mix sample snd chn) returns the mix at the given sample, or #f
;;; (mix-maxamp mix) maxamp of mix
;;;
-;;; mix-property associates a property list with a mix
;;; mix-click-sets-amp sets up hook functions so that mix click zeros amps, then subsequent click resets to the before-zero value
;;; check-mix-tags tries to move mix tags around to avoid collisions
@@ -146,28 +145,6 @@ All mixes sync'd to it are also moved the same number of samples. (remove-hook!
-;;; --------- mix-property
-
-(define mix-property
- (make-procedure-with-setter
- (lambda (key id)
- "(mix-property key mix) returns the value associated with 'key' in the given mix's property list, or #f"
- (if (mix? id)
- (let ((data (assoc key (mix-properties id))))
- (if data
- (cdr data)
- #f))
- (throw 'no-such-mix (list "mix-property" id))))
- (lambda (key id new-val)
- (if (mix? id)
- (let ((old-val (assoc key (mix-properties id))))
- (if old-val
- (set-cdr! old-val new-val)
- (set! (mix-properties id) (cons (cons key new-val) (mix-properties id))))
- new-val)
- (throw 'no-such-mix (list "set! mix-property" id))))))
-
-
;;; -------- mix-click-sets-amp
(define (mix-click-sets-amp)
diff --git a/mus-config.h.in b/mus-config.h.in
index 9ac1bb6..6a0b7cb 100644
--- a/mus-config.h.in
+++ b/mus-config.h.in
@@ -53,8 +53,6 @@
#undef SIZEOF_SSIZE_T
#undef HAVE_GETTEXT
#undef HAVE_READLINE
-#undef HAVE_LANGINFO_DECIMAL_POINT
-#undef HAVE_LANGINFO_RADIXCHAR
#undef HAVE_NESTED_FUNCTIONS
#undef HAVE_FCNTL_H
@@ -86,7 +84,6 @@
#undef HAVE_PTHREAD_H
#undef HAVE_PTHREADS
-#undef ENABLE_NLS
#undef SND_PACKAGE
#undef SND_VERSION
#undef SND_HOST
@@ -145,7 +142,6 @@
#undef MUS_DEFAULT_DOC_DIR
#undef MUS_TRAP_SEGFAULT
#undef SND_AS_WIDGET
-#undef SND_AS_PD_EXTERNAL
#undef mus_float_t
#define mus_long_t int64_t
#undef WITH_DOUBLES
@@ -190,14 +186,12 @@
#undef HAVE_RB_GET_LOAD_PATH
#undef HAVE_APPLICABLE_SMOB
-#undef WITH_RT
#undef WITH_RELATIVE_PANES
#undef HAVE_MAKE_COMPLEX
#undef HAVE_MAKE_RATIO
#undef HAVE_MAKE_RECTANGULAR
#undef WITH_BUILTIN_GTKRC
-#undef HAVE_GDK_GL_CONTEXT_COPY
#undef HAVE_GDK_DRAW_PIXBUF
#undef HAVE_GTK_FILE_CHOOSER_DIALOG_NEW
#undef HAVE_GBOOLEAN_GTK_FILE_CHOOSER_SET_FILENAME
@@ -223,7 +217,7 @@
#undef HAVE_GTK_INFO_BAR_NEW
#undef HAVE_GTK_STATUS_ICON_GET_TITLE
#undef HAVE_GTK_WIDGET_GET_VISIBLE
-#undef HAVE_GTK_TOOL_PALETTE_NEW
+#undef HAVE_GTK_ENTRY_GET_TEXT_WINDOW
#undef HAVE_PANGO_MATRIX_ROTATE
#undef MUS_PANGO_VERSION
diff --git a/oo.scm b/oo.scm
deleted file mode 100644
index d56a720..0000000
--- a/oo.scm
+++ /dev/null
@@ -1,1932 +0,0 @@
-#!
-
-;;OO is a message based system to cause less typing doing object oriented programming with guile.
-;;-Kjetil S. Matheussen, 9.2.2005
-
-;; This file has also become a container for all sorts of general functions and macros of various
-;; sizes.
-
-;;What makes this system different from all the other systems I know about for scheme
-;;(found at www.schemers.org), is that the methods are placed inside the classes, like
-;;this:
-
-(def-class (<aclass>)
- (def-method (a) 0)
- (def-method (b) 1))
-
-;;The system is used in various other files in SND made by me.
-;;The code was previously placed in gui.scm.
-
-
-;;"def-class" and "def-method" is used instead of "define-class" and "define-method" to
-;;not interfere with goops.
-
-;;Theres a lot of special macros specified in this file, and I have the following lines in my .emacs file
-;;to make them look better:
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(def-method\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 (cond ((match-beginning 1) font-lock-function-name-face)
- ((match-beginning 2) font-lock-variable-name-face)
- (t font-lock-type-face))
- nil t))))
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(def-class\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 font-lock-type-face
- nil t))))
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(def-constructor\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 font-lock-type-face
- nil t))))
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(c-load-from-path\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 font-lock-type-face
- nil t))))
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(def-var\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 font-lock-variable-name-face
- nil t))))
-
-(put 'letrec* 'scheme-indent-function 1)
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(letrec[*]\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 font-lock-variable-name-face
- nil t))))
-
-
-!#
-
-
-(provide 'snd-oo.scm)
-
-(use-modules (ice-9 optargs)
- (ice-9 format))
-; (srfi srfi-1))
-;; (srfi srfi-26))
-
-(if (not srfi-loaded)
- (use-modules (srfi srfi-1)))
-(set! srfi-loaded #t)
-
-
-(define-macro (c-load-from-path filename)
- `(if (not (provided? (symbol-append 'snd- ',filename '.scm)))
- (load-from-path (symbol->string (symbol-append ',filename '.scm)))))
-
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;; Various functions ;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-(define-macro (define-toplevel symbol val)
- `(primitive-eval `(define ,,symbol ,,val)))
-
-
-;; Snd has its own filter function (a clm function) overriding the guile filter function. This affects
-;; remove, because remove is based on filter. Redefine remove:
-(define (remove pred list)
- (%filter (lambda (e) (not (pred e)))
- list))
-
-(define filter-org %filter)
-
-(define <-> string-append)
-(define <_> symbol-append)
-
-(define (keyword->string k)
- (symbol->string (keyword->symbol k)))
-
-(define (nth n list)
- (list-ref list n))
-
-(define (nth-cdr n list)
- (cond ((= 0 n)
- list)
- (else
- (nth-cdr (1- n) (cdr list)))))
-
-(define (sublist l start end)
- (take (drop l start) (- end start)))
-
-;;(sublist '(0 1 2 3 4 5 6 7 8 9) 2 5)
-
-(define (flatten tree)
- (cond ((null? tree) '())
- ((pair? (car tree))
- (append (flatten (car tree))
- (flatten (cdr tree))))
- (else
- (cons (car tree) (flatten (cdr tree))))))
-
-(define (yppla list func)
- (apply func list))
-(define-macro (curryppla args . code)
- (define list (gensym))
- `(lambda (,list)
- (yppla ,list (lambda ,args ,@code))))
-
-(define-macro (push! val where)
- (let ((ret (gensym)))
- `(let ((,ret ,val))
- (set! ,where (cons ,ret ,where))
- ,ret)))
-
-(define-macro (push-back! val where)
- (let ((ret (gensym)))
- `(let ((,ret ,val))
- (set! ,where (append! ,where (list ,ret)))
- ,ret)))
-
-(define-macro (inc! var how-much)
- `(begin
- (set! ,var (+ ,how-much ,var))
- ,var))
-
-(define-macro (when cond . rest)
- `(cond (,cond (let ()
- ,@rest))
- (else '())))
-
-(define (c-atleast1.7?)
- (or (>= (string->number (major-version)) 2)
- (and (string=? "1" (major-version))
- (>= (string->number (minor-version)) 7))))
-
-
-(define (c-before1.8?)
- (and (= 1 (string->number (major-version)))
- (< (string->number (minor-version)) 8)))
-
-
-(define (c-butlast l)
- (if (null? l)
- l
- (reverse! (cdr (reverse l)))))
-
-
-
-(define (hash-table->alist table)
- (hash-fold (lambda (key value s) (cons (cons key value) s)) '()
- table))
-(define hash->list hash-table->alist)
-
-
-(define (deep-list-search what list)
- (cond ((eq? what list)
- #t)
- ((pair? list)
- (or (deep-list-search what (car list))
- (deep-list-search what (cdr list))))
- (else
- #f)))
-#!
-(deep-list-search 'aiai '((((2 3) ((5 . aiai))))))
-!#
-
-(define (deep-list-copy list)
- (cond ((not (pair? list))
- list)
- (else
- (cons (deep-list-copy (car list))
- (deep-list-copy (cdr list))))))
-
-
-
-(define (c-integer somekindofnumberorsomething)
-;; somekindofnumberorsomething)
- (inexact->exact (floor somekindofnumberorsomething)))
-
-(define (c-integer2 somekindofnumberorsomething)
- (inexact->exact (floor somekindofnumberorsomething)))
-
-
-;; C-like for-iterator
-(define (c-for init pred least add proc)
- (do ((n init (+ n add)))
- ((not (pred n least)))
- (proc n)))
-
-
-#!
-(c-for 2 < 7 1
- (lambda (n) (display n)(newline)))
-!#
-
-
-(define (c-for-each func . lists)
- (let ((n 0))
- (apply for-each (cons (lambda els
- (apply func (cons n els))
- (set! n (1+ n)))
- lists))))
-
-(define (append-various . rest)
- (apply symbol-append (map (lambda (r)
- (cond ((keyword? r) (keyword->symbol r))
- ((string? r) (string->symbol r))
- ((not (symbol? r))
- 'unknown)
- (else r)))
- rest)))
-
-
-;; !!!!!!!
-(define (c-display . args)
- ;(if (not (show-listener))
- ; (set! (show-listener) #t))
- ;(gtk_paned_set_position (GTK_PANED (list-ref (main-widgets) 3)) (c-integer (* (window-height) 0.75)))
- (set! (show-listener) #t)
- (let ((printfunc (if (show-listener #f) snd-print display)))
- (c-for-each (lambda (n arg)
- (if (> n 0)
- (printfunc " "))
- (printfunc arg))
- args)
- (printfunc #\newline))
- (if (defined? 'gtk_events_pending)
- (while (= 1 (gtk_events_pending))
- (gtk_main_iteration))))
-
-; (gtk_main_iteration_do #f))
-
-;(define (print . args)
-; (display (car args))
-; (for-each (lambda (x) (display " ")(display x)) (cdr args))
-; (newline))
-
-(define (print . args)
- (define result #f)
- (if (pair? args)
- (begin
- (write (car args))
- (for-each (lambda (x) (display #\ )(write x)) (cdr args))
- (set! result (car (reverse args)))))
- (newline)
- result)
-
-#!
-!#
-
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;; labamba/delafina/etc. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;; labamba is a replacement for lambda*,
-;; and delafina is a replacement for define*.
-
-;; Differences between lambda* and labamba:
-;;
-;; * ":optional-key/:optkey" in addition to :key, :rest and :allow-other-keys
-;; * ":optional" does not exist in labamba. (useless(?) when having optional-key/optkey)
-;; * When calling a function, (func 2 3 :hmm) is the same as (func 2 3 :hmm #t)
-;; * ":rest" only contains rest, not :rest, :key and everything else.
-;; ;;* labamba has a very simple patternmatcher (case-lambda style)
-;; * Gives more accurate and less verbose debugging information
-;; * The result of macroexpanding labamba is less verbose than the result of macroexpanding lambda*
-;; because the use of helper functions.
-;; * labamba is probably very slow compared to lambda* since the patternmatching is performed
-;; at runtime (where it compares a definition list against a call list) instead of
-;; generating specific patternmatching logic at macroxpansion time.
-
-
-
-(define (labamba-parse function-name
- args
- must-provides
- optkeys
- keys
- key/optkey-defaults
- allow-other-keys?
- rest?
- cont)
-
- (define org-args args)
-
- (define keyargs (map (lambda (key)
- (cons key 'undefined))
- (append optkeys keys)))
- (define rest '())
- (define must-provide-results '())
-
- (define (failed message)
- (c-display message "\n arguments:" org-args)
- (throw 'labamba-failed function-name))
-
- ;; Parse arguments which must be provided
- (let loop ((args* args)
- (must-provides* must-provides))
- (cond ((null? must-provides*)
- (set! args args*))
- ((null? args*)
- (failed (<-> "Too few arguments for \"" function-name "\". Expected " (number->string (length must-provides))
- ", found " (number->string (length args)) ".")))
- ((keyword? (car args*))
- (failed (<-> "Misplaced keyword in the arguments for \"" function-name "\":\n :"
- (keyword->string (car args*)) " can not be placed here. Expected at least " (number->string (length must-provides))
- " arguments before keywords.")))
- (else
- (push! (car args*) must-provide-results)
- (loop (cdr args*)
- (cdr must-provides*)))))
- (set! must-provide-results (reverse! must-provide-results))
-
- ;; Parse optional-key arguments if supplied without using keywords.
- (let loop ((args* args)
- (optkeys* optkeys)
- (keyargs* keyargs))
- (cond ((or (null? optkeys*)
- (null? args*)
- (keyword? (car args*)))
- (set! args args*))
- (else
- (set-cdr! (car keyargs*) (car args*))
- (loop (cdr args*)
- (cdr optkeys*)
- (cdr keyargs*)))))
-
- ;;(c-display "res" res)
-
- ;; Parse key args and build rest.
- (let loop ((args* args))
-
- (define (push-rest!)
- (push! (car args*) rest)
- (if (or (null? (cdr args*))
- (keyword? (cadr args*)))
- (push! #t rest)
- (begin
- (set! args* (cdr args*))
- (push! (car args*) rest)))
- (loop (cdr args*)))
-
- (cond ((null? args*)
- #t)
- ((keyword? (car args*))
- (let* ((arg0 (car args*))
- (hit (assq (keyword->symbol arg0) keyargs)))
- (cond ((and (not hit)
- rest?
- allow-other-keys?)
- (push-rest!))
- ((not hit)
- (failed (<-> "Unknown key :" (keyword->string arg0))))
- ((not (eq? 'undefined (cdr hit)))
- (failed (<-> "Key :" (keyword->string arg0) " has already got a value.")))
- ((or (null? (cdr args*))
- (keyword? (cadr args*)))
- (set-cdr! hit #t)
- (loop (cdr args*)))
- (else
- (set-cdr! hit (cadr args*))
- (loop (cddr args*))))))
- ((not rest?)
- (c-display "Don't know how to handle:" args*)
- (failed (<-> "Too many arguments."))) ;;. (Perhaps missing :rest ?)")))
- (else
- (push! (car args*) rest)
- (loop (cdr args*)))))
-
- (set! rest (reverse! rest))
-
- ;; Check the content of rest
-; (if (and rest?
-; (not allow-other-keys?))
-; (for-each (lambda (arg)
-; (if (keyword? arg)
-; (if (memq (keyword->symbol arg) (map car defaults))
-; (failed (<-> "Key :" (keyword->string arg) " has already got a value."))
-; (failed (<-> "Unknown key :" (keyword->string arg))))))
-; args))
-
-
- ;;(c-display "must-provide-results" must-provide-results)
- ;;(c-display "keyargs" keyargs)
- ;;(c-display "rest" rest rest?)
-
- (let ()
- (define das-args (append! must-provide-results
- (map (lambda (keyarg key-default)
- (if (eq? 'undefined keyarg)
- (if (procedure? key-default)
- (key-default)
- key-default)
- keyarg))
- (map cdr keyargs)
- key/optkey-defaults)))
- (if rest?
- (apply cont (append! das-args (list rest)))
- (apply cont das-args))))
-
-
-
-#!
-(labamba-parse "ano" '(50 60) '() '(a b) '() (list #f #f) #f #f (lambda x x))
-
-(catch 'labamba-failed
- (lambda ()
- (labamba-parse "ano"
- '(10 20 30 :e :d 90 34 :hmm :hmm2 35 36)
- '(a b)
- '(c)
- '(c d e)
- (list 3 4 5)
- #t
- #t
- (lambda (a b c d e rest)
- (c-display "a/b/c/d/e" a b c d e rest))))
- (lambda x
- (c-display "x" x)))
-!#
-
-
-
-(define (labamba-create-defaults def function-name)
- (cons 'list (let loop ((def def)
- (got-key #f))
- (cond ((null? def) '())
- ((or (eqv? (car def) :key)
- (eqv? (car def) :optkey)
- (eqv? (car def) :optional-key))
- (loop (cdr def) #t))
- ((eqv? (car def) :allow-other-keys)
- '())
- ((eqv? (car def) :rest)
- '())
- ((keyword? (car def))
- (c-display "Unknown keyword argument" (car def))
- (throw 'labamba-failed function-name))
- (got-key
- (cons (cond ((not (pair? (car def)))
- #f)
- (else
- (let ()
- (define val (cadar def))
- (if (not (pair? val))
- ;;(or (number? val)
- ;; (char? val)
- ;; (string? val))
- val
- `(lambda ()
- ,val)))))
- (loop (cdr def) #t)))
- (else
- (loop (cdr def) #f))))))
-
-#!
-(pretty-print (labamba-create-defaults '(a d :key b (c 9) (e aiai) (d (+ 5 200)) :allow-other-keys :rest ba) "<anonymous>"))
-(pretty-print (labamba-create-defaults '(a d :optkey oa ob :key b (c 9) :optkey (e aiai) (f (+ 5 200)) :allow-other-keys :rest ba) "ano"))
-!#
-
-
-(define (labamba-create-arglist def function-name)
- (catch 'labamba-failed-internal
- (lambda ()
- (define check-duplicate
- (let ((names '()))
- (lambda (name)
- (when (memq name names)
- (c-display (<-> "Argument name '" (symbol->string name) "' more than once.") def ".")
- (throw 'labamba-failed-internal function-name))
- (push! name names))))
- (let loop ((def def)
- (got-key #f))
- (cond ((null? def) '())
- ((or (eqv? (car def) :key)
- (eqv? (car def) :optkey)
- (eqv? (car def) :optional-key))
- (loop (cdr def) #t))
- ((eqv? (car def) :allow-other-keys)
- (loop (cdr def) #t))
- ((eqv? (car def) :rest)
- (check-duplicate (cadr def))
- (list (cadr def)))
- ((keyword? (car def))
- (c-display "Unknown keyword argument" (car def))
- (throw 'labamba-failed-internal function-name))
- (else
- (let ()
- (define name (if got-key
- (if (not (pair? (car def)))
- (car def)
- (caar def))
- (car def)))
- (check-duplicate name)
- (cons name
- (loop (cdr def) got-key)))))))
- (lambda x
- (apply throw (cons 'labamba-failed x)))))
-
-
-#!
-(labamba-create-arglist '(a d :key b (c 9) (e aiai) (f (+ 5 200)) :allow-other-keys :rest ba) "<anonymous>")
-(labamba-create-arglist '(a d :optkey oa ob :key b (c 9) :optkey (e aiai) (f (+ 5 200)) :allow-other-keys :rest ba) "ano")
-!#
-
-
-(define (labamba-create-must-provide-list def)
- (let loop ((def def))
- (cond ((null? def) '())
- ((keyword? (car def))
- '())
- (else
- (cons (car def)
- (loop (cdr def)))))))
-
-#!
-(labamba-create-must-provide-list '(a d :optkey oa ob :key b (c 9) :optkey (e aiai) (f (+ 5 200)) :allow-other-keys :rest ba))
-(labamba-create-must-provide-list '(a d :key b (c 9) (e aiai) (f (+ 5 200)) :allow-other-keys :rest ba))
-!#
-
-
-(define (labamba-create-optkeys-list def)
-
- (let loop ((def def)
- (collect #f))
- (cond ((null? def) '())
- ((or (eqv? :key-optional (car def))
- (eqv? :optkey (car def)))
- (loop (cdr def) #t))
- ((keyword? (car def))
- (loop (cdr def)
- #f))
- (collect
- (cons (if (pair? (car def))
- (caar def)
- (car def))
- (loop (cdr def) #t)))
- (else
- (loop (cdr def) #f)))))
-#!
-(labamba-create-optkeys-list '(a d :optkey oa ob :key b (c 9) :optkey (e aiai) (f (+ 5 200)) :allow-other-keys :rest ba))
-!#
-
-
-
-(define (labamba-create-keys-list def)
-
- (let loop ((def def)
- (collect #f))
- (cond ((null? def) '())
- ((eqv? :key (car def))
- (loop (cdr def) #t))
- ((keyword? (car def))
- (loop (cdr def)
- #f))
- (collect
- (cons (if (pair? (car def))
- (caar def)
- (car def))
- (loop (cdr def) #t)))
- (else
- (loop (cdr def) #f)))))
-#!
-(labamba-create-keys-list '(a d :optkey oa ob :key b (c 9) :optkey (e aiai) (f (+ 5 200)) :allow-other-keys :rest ba))
-!#
-
-
-#!
-TODO
-(define (labamba-patternmatcher rest)
- (for-each (curryppla (def body)
- (c-display "def/body" def body))
- rest)
- )
-
-#!
-(labamba-patternmatcher '((() #t)
- ((x) x)
- ((x y . rest)
- y)
- ((x . rest)
- rest)))
-=>
-(lambda rest
- (cond ((null? rest) #t)
- (( = (length rest) 1)
- (let ((x (car rest)))
- x))
- (else
- (let ((x (car rest))
- (rest (cdr rest)))
- (define res (rt-gensym))
- `(let ((res ,x))
- (if res
- (and* ,@rest)
- #f))))))
-!#
-
-(define (labamba-allow-other-keys? def)
- (and (memv :allow-other-keys def)
- #t))
-
-(define (labamba-rest? def)
- (and (memv :rest def)
- #t))
-
-;; In case of improper list, replace with :rest
-(define (make-proper-labamba-def-list def)
- (cond ((null? def) '())
- ((not (pair? def))
- `(:rest ,def))
- (else
- (cons (car def)
- (make-proper-labamba-def-list (cdr def))))))
-
-(define-macro (labamba-onymous function-name def . code)
- (define args (gensym))
- (if (not function-name)
- (set! function-name "<anonymous>"))
- (set! def (make-proper-labamba-def-list def))
- `(lambda ,args
- (labamba-parse ,function-name
- ,args
- ',(labamba-create-must-provide-list def)
- ',(labamba-create-optkeys-list def)
- ',(labamba-create-keys-list def)
- ,(labamba-create-defaults def function-name)
- ,(labamba-allow-other-keys? def)
- ,(labamba-rest? def)
- (lambda ,(labamba-create-arglist def function-name)
- ,@code))))
-
-(define-macro (labamba def . code)
- `(labamba-onymous "<anonymous>"
- ,def
- ,@code))
-
-#!
-( (labamba (:optkey hepp :rest ai)
- hepp)
- 50)
-
-(pretty-print (macroexpand '(labamba (:optkey hepp)
- hepp)))
-
-(pretty-print (macroexpand '(labamba (a b c)
- (c-display "x" x))))
-
-( (labamba x
- (c-display "x" x))
- 2 3 4)
-
-( (labamba (a b c)
- (c-display "a b c" a b c)
- (+ a b c));(car c)))
- 2 3 4)
-
-
-( (labamba (a b :key (d 100) :rest c)
- (c-display "c:" c)
- (+ a b d ));(car c)))
- 2 90 :d 50 70 :ai 90)
-
-
-( (labamba (a b :key (d 100) :allow-other-keys :rest c)
- (c-display "c:" c)
- (+ a b d ));(car c)))
- 2 90 :d 50 :wef 90 :b 3 'a 'b 'c 'fd 70)
-
-
-(macroexpand '(labamba (a b :key (d 100) :allow-other-keys :rest c)
- (c-display "c:" c)
- (+ a b d )))
-
-
-
-
-!#
-
-(define-macro (delafina def . body)
- (define function-name (symbol->string (if (pair? def) (car def) def)))
- (if (pair? def)
- `(begin
- (define ,(car def)
- (labamba-onymous ,function-name
- ,(cdr def)
- ,@body)))
- `(begin
- (define ,def
- (labamba-onymous ,function-name
- ,(car body)
- ,@(cdr body))))))
-
-#!
-(delafina (hello ai)
- ai)
-(hello 2 3 4 5 :ai)
-
-(labamba (2 3)
- (+ 2 3))
-!#
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;; define*2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;; Fixes the ":rest" problem in "define*"
-
-;; define*2 is a lot less sophisticated than labamba/delafina/etc. and
-;; should probably not be used in new code.
-
-
-(define-macro (define*2 def . code)
- (cond ((or (not (proper-list? def))
- (not (memv :rest def)))
- `(define* ,def ,@code))
- (else
- (let* ((keyargs '())
- (rest-name #f)
- (defargs (let loop ((arg (cdr def))
- (inkeys #f))
- (cond ((null? arg)
- '())
- ((eqv? :key (car arg))
- (cons :key
- (loop (cdr arg) #t)))
- ((eqv? :rest (car arg))
- (set! rest-name (cadr arg))
- arg)
- ((eqv? :allow-other-keys (car arg))
- (set! rest-name (caddr arg))
- arg)
- ;;(cdr arg))
- (inkeys
- (let ((keyarg (list (if (pair? (car arg))
- (caar arg)
- (car arg))
- (if (pair? (car arg))
- (cadr (car arg))
- #f))))
- (push-back! keyarg keyargs)
- (cons (list (car keyarg)
- ''undefined)
- (loop (cdr arg)
- inkeys))))
- (else
- (cons (car arg)
- (loop (cdr arg)
- inkeys)))))))
- ;;(c-display "keyargs/defarg" keyargs "\n" defargs)
- `(define* (,(car def) ,@defargs)
- ,@(map (lambda (keyarg)
- `(cond ((eq? 'undefined ,(car keyarg))
- (set! ,(car keyarg) ,(cadr keyarg)))
- (else
- (set! ,rest-name (cddr ,rest-name)))))
- keyargs)
- (let ()
- ,@code))))))
-
-#!
-(pretty-print (macroexpand '(define*2 (ai :key
- (b 2)
- c
- :rest rest)
- (c-display b c rest)
- )))
-(define*2 (ai :key
- (b 2)
- :rest rest)
- (c-display b rest)
- )
-
-(ai :b 1 :c 2 3 4 5)
-(ai :b 1 3 4 5)
-(ai 3 4 5)
-!#
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;; letrec* ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-(define-macro (letrec* vardecls . body)
- (let* ((sets '())
- (newvardecls (map (lambda (vardecl)
- (if (not (number? (cadr vardecl)))
- (begin
- (set! sets (cons `(set! ,(car vardecl) ,(cadr vardecl)) sets))
- `(,(car vardecl) #f))
- vardecl))
- vardecls)))
- `(let* ,newvardecls
- ,@(reverse! sets)
- (let ()
- ,@body))))
-
-#!
-(letrec* ((a (+ d 2))
- (b (lambda () (+ (c) a d)))
- (c (lambda () 7))
- (d 6))
- (+ a (b)))
-->
-(let* ((a #f)
- (b #f)
- (c #f)
- (d 6))
- (set! a (+ d 2))
- (set! b (lambda () (+ (c) a d)))
- (set! c (lambda () 7))
- (+ a (b)))
-!#
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;; c-time ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;; Like "time". Uses the rt engine to measure time.
-
-(define-macro (c-time form)
- `(let* ((t1 (rte-time))
- (r ,form)
- (t2 (rte-time)))
- (display "Time: ")
- (display (- t2 t1))
- (newline)
- r))
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;; container ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;; Holds all kind of data in a hash table in a convenient way.
-
-
-(define (make-container)
- (let ((container (make-hash-table 219)))
- (hashq-set! container 'hash-table container)
- (hashq-set! container 'reset (lambda ()
- (set! container (make-hash-table 219))))
- (lambda (which . rest)
- (if (null? rest)
- (hashq-ref container which)
- (hashq-set! container which (car rest))))))
-
-
-
-#!
-
-(define (make-container)
- (let ((container (make-hash-table 219)))
- (hashq-set! container 'hash-table container)
- (hashq-set! container 'reset (lambda ()
- (set! container (make-hash-table 219))))
- (lambda (which . rest)
- (if (null? rest)
- (hashq-ref container which)
- (hashq-set! container which (car rest))))))
-
-(define (make-bank sum)
- (let ((attributes (make-hash-table)))
- (define dispatcher
- (lambda (which . rest)
- (apply (hashq-ref attributes which) rest)))
- (hashq-set! attributes 'sum (lambda ()
- sum))
- (hashq-set! attributes 'add (lambda (n)
- (set! sum (+ n sum))))
- dispatcher))
-
-
-(define bank (make-bank 0))
-(bank 'add 2)
-(bank 'sum)
-
-(bank 'sum)
-
-(bank 'add (lambda (n) (set!
-
-(c 'gakk 45)
-(c 'gakk)
-
-((c 'reset))
-
-(-> c gakk)
-(-> c hash-table)
-
-(-> c hash-table (make-hash-table 219))
-!#
-
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;; supereval ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;; Makes evaling very complicated expressions less inconvenient.
-;; (Slow, but a nice headache-avoider)
-
-(define (supereval func)
- (let* ((filename (tmpnam))
- (fd (open-file filename "w")))
- (delete-at-exit filename)
- (func (lambda something
- (for-each (lambda (s)
- (display s fd))
- something)))
- (close fd)
- (load filename)
- (delete-file filename)))
-
-(define (supereval2 func)
- (let* ((filename (tmpnam))
- (fd (open-file filename "w"))
- (ret (rt-gensym)))
- (delete-at-exit filename)
- (display "(define " fd)
- (display ret fd)
- (display " " fd)
- (func (lambda something
- (for-each (lambda (s)
- (display s fd))
- something)))
- (display ")\n" fd)
- (close fd)
- (load filename)
- (delete-file filename)
- (primitive-eval ret)))
-
-#!
-(supereval (lambda (out)
- (out "(c-display \"hello\")")))
-(supereval (lambda (out)
- (out '(c-display 'hello))
- (out '(newline))))
-!#
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;; schemecodeparser ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;; Helper function for scheme codewalking.
-
-
-(define schemecodeparser-varlist '())
-
-(define (schemecodeparser-get-varlist)
- schemecodeparser-varlist)
-
-
-
-(define* (schemecodeparser expr :key elsefunc symbolfunc keywordfunc atomfunc nullfunc pairfunc use-customsymbolhandler? customsymbolhandler blockhandler symbolhandler (varlist '()))
-
- (let parse ((varlist varlist)
- (expr expr))
-
- (define (blockhandlerfunc varlist expr)
- ;;(c-display "blockhandlerfunc" varlist expr)
- (if (not blockhandler)
- (map (lambda (expr)
- (parse varlist expr))
- expr)
- (begin
- (set! schemecodeparser-varlist varlist)
- (blockhandler expr))))
-
- ;; Like append, but varlist1 might not be a valid list (in case of optional arguments)
- (define (append-varlists varlist1 varlist2)
- (append (let append ((varlist varlist1))
- (cond ((null? varlist) varlist)
- ((not (pair? varlist)) (list varlist))
- (else (cons (car varlist)
- (append (cdr varlist))))))
- varlist2))
-
- (set! schemecodeparser-varlist varlist)
-
- ;;(c-display "scp/expr:" expr)
-
- (cond ((and (symbol? expr)
- symbolfunc)
- (symbolfunc expr))
- ((and (keyword? expr)
- keywordfunc)
- (keywordfunc expr))
- ((not (pair? expr))
- (if atomfunc
- (atomfunc expr)
- expr))
- ((null? expr)
- (if nullfunc
- (nullfunc expr)
- expr))
- ((pair? (car expr))
- (if pairfunc
- (pairfunc expr)
- (blockhandlerfunc varlist expr)))
- ((and use-customsymbolhandler?
- (use-customsymbolhandler? expr))
- (customsymbolhandler expr))
- ((eq? 'lambda (car expr))
- `(lambda ,(cadr expr)
- ,@(blockhandlerfunc (append-varlists (cadr expr) varlist) (cddr expr))))
- ((eq? 'define (car expr))
- `(define ,(cadr expr)
- ,@(blockhandlerfunc (append-varlists (cadr expr) varlist) (cddr expr))))
- ((eq? 'delay (car expr))
- `(delay ,@(blockhandlerfunc varlist (cdr expr))))
- ((eq? 'force (car expr))
- `(force ,@(blockhandlerfunc varlist (cdr expr))))
- ((eq? 'begin (car expr))
- `(begin
- ,@(blockhandlerfunc varlist (cdr expr))))
- ((eq? 'do (car expr))
- (let* ((newvars (append (map car (cadr expr)) varlist))
- (first (map (lambda (a)
- (let ((second (parse varlist (cadr a))))
- `(,(car a) ,second ,@(blockhandlerfunc newvars (cddr a)))))
- (cadr expr))))
- `(do ,first
- ,@(blockhandlerfunc newvars (cddr expr)))))
- ;; named let
- ((and (eq? 'let (car expr))
- (symbol? (cadr expr)))
- (let* ((newvars (append (cons (cadr expr) (map car (caddr expr)))
- varlist))
- (vars (map (lambda (a)
- `(,(car a) ,@(blockhandlerfunc varlist (cdr a))))
- (caddr expr))))
- `(let ,(cadr expr) ,vars
- ,@(blockhandlerfunc newvars (cdddr expr)))))
- ((eq? 'let (car expr))
- (let ((vars (map (lambda (a)
- `(,(car a) ,@(blockhandlerfunc varlist (cdr a))))
- (cadr expr))))
- `(let ,vars
- ,@(blockhandlerfunc (append (map car (cadr expr))
- varlist)
- (cddr expr)))))
- ((eq? 'let* (car expr))
- (let* ((newvars varlist)
- ;; This needs to be generated outside quasiquote, because quasiqote elements does not need to be generated in order. (@#$@#$@#$@!!!#$@)
- (let*vars (map (lambda (a)
- (let ((ret `(,(car a) ,@(blockhandlerfunc newvars (cdr a)))))
- (push! (car a) newvars)
- ret))
- (cadr expr))))
- `(let* ,let*vars
- ,@(blockhandlerfunc newvars (cddr expr)))))
- ((eq? 'letrec (car expr))
- (let* ((newvars (append (map car (cadr expr))
- varlist))
- (vars (map (lambda (a)
- `(,(car a) ,@(blockhandlerfunc newvars (cdr a)))) ;; Not entily correct...
- (cadr expr))))
- `(letrec ,vars
- ,@(blockhandlerfunc newvars (cddr expr)))))
- ((or (eq? 'quote (car expr))
- (eq? 'QUOTE (car expr)))
- expr)
- ((or (eq? 'quasiquote (car expr))
- (eq? 'QUASIQUOTE (car expr)))
- (letrec* ((unquotes '())
- (parser (lambda (expr)
- ;;(c-display "expr" expr)
- (cond ((and (pair? expr)
- (eq? 'unquote (car expr)))
- (let ((res (parse varlist (cadr expr))))
- (cond ((not (pair? res))
- ;;(c-display "heppsann" (cadr expr) res (list 'unquote res))
- (list 'unquote res))
- (else
- (let ((name (rt-gensym)))
- ;;(c-display "got something:" expr (cadr expr))
- (push! (list name res) unquotes)
- (list 'unquote name))))))
- ((and (pair? expr)
- (eq? 'unquote-splicing (car expr)))
- (let ((res (parse varlist (cadr expr))))
- (cond ((not (pair? res))
- (list 'unquote-splicing res))
- (else
- (let ((name (rt-gensym)))
- ;;(c-display "got something2:" expr (cadr expr))
- (push! (list name res) unquotes)
- (list 'unquote-splicing name))))))
- ((pair? expr)
- ;;(c-display "yes, pair:" expr)
- ;;(c-display "car/cadr" (car expr) (cadr expr))
- (map parser expr))
-
- (else
- expr))))
- (newexpr (map parser expr)))
- ;;(c-display "unquotes:" unquotes)
- (if (null? unquotes)
- newexpr
- `(let ,(reverse! unquotes)
- ,newexpr))))
- ((eq? 'cond (car expr))
- `(cond ,@(map (lambda (exprs)
- (let ((test (parse varlist (car exprs))))
- `(,test ,@(blockhandlerfunc varlist (cdr exprs)))))
- (cdr expr))))
- ((eq? 'case (car expr))
- (let ((first (parse varlist (cadr expr))))
- `(case ,first
- ,@(map (lambda (expr)
- `(,(car expr) ,@(blockhandlerfunc varlist (cdr expr))))
- (cddr expr)))))
- ((and symbolhandler
- (eq? (car expr) (car symbolhandler)))
- ((cadr symbolhandler) expr))
- (else
- (if elsefunc
- (elsefunc expr)
- `(,(parse varlist (car expr)) ,@(map (lambda (expr)
- (parse varlist expr))
- (cdr expr))))))))
-#!
-(schemecodeparser '(begin `(+ ,a 3)))
-!#
-
-(define (fix-defines-do terms)
- ;;(c-display terms)
- (schemecodeparser terms
- :blockhandler
- (lambda (terms)
- ;(if (not (eq? 'define (car terms)))
- ; (let ((temp (c-macroexpand-1 terms)))
- ; (if (eq? 'define (car temp))
- ; (set! terms temp))))
- ;;(c-display "terms fdd" terms)
- (let* ((defines '())
- (newterms (map (lambda (terms)
- (if (and (pair? terms)
- (eq? 'define (car terms)))
- (if (pair? (cadr terms))
- (begin
- (push! (car (cadr terms)) defines)
- `(set! ,(car (cadr terms)) (lambda ,(cdr (cadr terms)) ,@(cddr terms))))
- (begin
- (push! (cadr terms) defines)
- `(set! ,(cadr terms) ,@(cddr terms))))
- terms))
- terms)))
- (if (null? defines)
- (map fix-defines-do terms)
- `((let* ,(delete-duplicates (map (lambda (name)
- `(,name #f))
- (reverse! defines)))
- ,@(map fix-defines-do newterms))))))))
-
-
-(define-macro (fix-defines . terms)
- `(let ()
- ,@(fix-defines-do terms)))
-
-
-#!
-(fix-defines-do '(let ()
- (set! a 5)
- (define b 6)
- (define (c) 7)))
-
-
-(macroexpand '(fix-defines
- (set! a 5)
- (define b 6)
- (define (c) 7)))
-
-
-!#
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;; c-loop is a macro for doing music loops ;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-
-(define-macro (c-loop var min-val check-func max-val inc-val . body)
- (define das-min (gensym))
- (define das-max (gensym))
- (define loop (gensym))
- `(let ((,das-min ,min-val)
- (,das-max ,max-val))
- (let ,loop ((,var ,das-min))
- (if (,check-func ,var ,das-max)
- (begin
- (let ((,(symbol-append var '.scale) (lambda (das-matches . das-rest)
- (if (not (null? das-rest))
- (c-scale ,var ,das-min ,das-max das-matches (car das-rest))
- (fix-defines
- (define get-time car)
- (define get-val cadr)
- (define das-first (car das-matches))
- (define das-last (last das-matches))
- (define matches (map (lambda (match)
- (cons (c-scale (get-time match)
- (get-time das-first) (get-time das-last)
- ,das-min ,das-max)
- (cdr match)))
- das-matches))
- (define (find-matchpointer matches)
- (if (or (null? (cddr matches))
- (and (>= ,var (get-time (car matches)))
- (<= ,var (get-time (cadr matches)))))
- matches
- (find-matchpointer (cdr matches))))
- (define matchpointer (find-matchpointer matches))
- (define match (car matchpointer))
- (define time (get-time match))
- (define val (get-val match))
- (define next-match (cadr matchpointer))
- (define next-time (get-time next-match))
- (define next-val (get-val next-match))
- (c-scale ,var time next-time val next-val))))))
- ,@body
- (,loop (+ ,var ,inc-val))))))))
-
-#!
-(c-loop i 0 < 20 (i.scale `((1 1) (2 0.5) (3 1)))
- (c-display i))
-!#
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;; Structs (redefined by rt-compiler) ;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-(define-macro (=> object das-method . rest)
- (define method (keyword->symbol das-method))
- (define object-decomposed (map string->symbol (string-split (symbol->string object) #\:)))
- (let ()
- (define struct-name (car object-decomposed))
- (define object-name (if (null? (cdr object-decomposed))
- (car object-decomposed)
- (cadr object-decomposed)))
- `(,(append-various 'access- struct-name ":" method) ,object-name ,@rest)))
-
-
-(define-macro (define-rt-something-struct something name . das-slots)
- (define name-name (gensym))
- (define val-name (gensym))
- (define slots '())
-
- (for-each (lambda (slot)
- (if (keyword? slot)
- (push-back! (list (append-various slot) 0) slots)
- (set-cdr! (last slots) (list slot))))
- das-slots)
-
- (let ((slot-names (map car slots)))
- `(begin
-
- ;; guile
- (define* (,(symbol-append 'make- name) :key ,@slots)
- (,something ,@slot-names))
- ,@(let ((i -1))
- (map-in-order (lambda (slot)
- (set! i (1+ i))
- `(define ,(append-various 'access- name ":" slot)
- (make-procedure-with-setter
- (lambda (,name-name)
- (,(symbol-append something '-ref) ,name-name ,i))
- (lambda (,name-name ,val-name)
- (,(symbol-append something '-set!) ,name-name ,i ,val-name)))))
- slot-names))
- )))
-
-
-(define-macro (define-rt-vct-struct name . das-slots)
- `(define-rt-something-struct vct ,name ,@das-slots))
-
-(define-macro (define-rt-vector-struct name . das-slots)
- `(define-rt-something-struct vector ,name ,@das-slots))
-
-
-#!
-(define-rt-vct-struct str
- :a 1
- :b)
-(set! (=> str:str) 200)
-(set! (=> str :b) 200)
-(=> str:str)
-(=> str :b)
-
-(macroexpand '(=> str:str :b))
-(macroexpand '(=> str :b))
-!#
-
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;; Finalizer ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-(define-rt-vector-struct das-guardian
- :finalizer
- :guardian
- :num-visitors 1)
-
-(define das-guardians '())
-
-;; Make sure cleanup-func doesn't refer to object somehow.
-;; This, for example:
-;; (let ((obj (list 2 3))) (add-guardian-object obj (lambda x x)))
-;; won't work.
-
-(define (add-finalizer object finalizer)
- (let ((das-guardian (member finalizer das-guardians (lambda (finalizer das-guardian)
- (eqv? finalizer (=> das-guardian :finalizer))))))
- ;;(c-display "hmm" das-guardian)
- (if das-guardian
- (begin
- (set! das-guardian (car das-guardian))
- ((=> das-guardian :guardian) object)
- (set! (=> das-guardian :num-visitors) (1+ (=> das-guardian :num-visitors))))
- (push! (make-das-guardian :finalizer finalizer
- :guardian (let ((guardian (make-guardian)))
- (guardian object)
- guardian))
- das-guardians)))
- (set! das-guardians
- (remove (lambda (das-guardian)
- (let loop ((object ((=> das-guardian :guardian))))
- (and object
- (begin
- ((=> das-guardian :finalizer) object)
- (set! (=> das-guardian :num-visitors) (1- (=> das-guardian :num-visitors)))
- (if (= 0 (=> das-guardian :num-visitors))
- #t
- (loop ((=> das-guardian :guardian))))))))
- das-guardians)))
-
-#!
-(define alist (list 'unique-name 2 3 4))
-(define cleanfunc (lambda (object) (c-display "freeing" object)))
-(add-finalizer alist cleanfunc)
-(add-finalizer alist (lambda (object)
- (c-display object "was garbage collected")))
-(gc)
-
-(map cadr das-guardians)
-(map caddr das-guardians)
-(length das-guardians)
-(set! alist #f)
-
-(begin das-guardians)
-
-!#
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;; Class definition, etc. ;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define-macro (def-class def . body)
-
- (define newvars '())
- (define newbody '())
-
- (for-each (lambda (a) (if (eq? (car a) 'def-constructor)
- (let* ((name (caadr a))
- (constructor-name (symbol-append 'constructor- name))
- (classname (symbol->string (car def)))
- (reversedclassnameaslist (reverse (string->list classname)))
- (funcname (if (member (car reversedclassnameaslist) '(#\> #\) #\] #\}))
- (symbol-append (apply symbol (reverse (cdr reversedclassnameaslist)))
- '/
- name
- (symbol (car reversedclassnameaslist)))
- (symbol-append (car def) '/ name))))
- (define-toplevel funcname
- (lambda args
- (let ((classfunc (eval-string classname)))
- (define-toplevel funcname
- (lambda args
- (apply (-> (classfunc) get-method constructor-name) args)))
- (apply (-> (classfunc) get-method constructor-name) args)))))))
- body)
-
- (set! newbody (map-in-order (lambda (t)
- (cond ((or (eq? (car t) 'define)
- (eq? (car t) 'define*))
- (if (list? (cadr t))
- (set! newvars (cons (car (cadr t)) newvars))
- (set! newvars (cons (cadr t) newvars)))
- (if (list? (cadr t))
- (if (eq? (car t) 'define*)
- `(set! ,(car (cadr t)) (lambda* ,(cdr (cadr t))
- ,@(cddr t)))
- `(set! ,(car (cadr t)) (lambda ,(cdr (cadr t))
- ,@(cddr t))))
- `(set! ,(cadr t) ,(caddr t))))
- ((eq? (car t) 'def-method)
- (let* ((nameandvars (cadr t))
- (body (cddr t))
- (defname (symbol-append 'this-> (car nameandvars))))
- (set! newvars (cons defname newvars))
- (if (and (list? nameandvars)
- (or (member #:optional nameandvars)
- (member #:rest nameandvars)
- (member #:key nameandvars)))
- `(set! ,defname (add-method2* ,nameandvars ,@body))
- `(set! ,defname (add-method2 ,nameandvars ,@body)))))
- ((eq? (car t) 'def-var)
- (if (= 2 (length t))
- `(add-method2* ',(cadr t) (lambda rest
- (if (null? rest)
- ,(cadr t)
- (set! ,(cadr t) (car rest)))))
- (let* ((name (cadr t))
- (initial (caddr t))
- (thisname name));;(symbol-append 'this-> name)))
- (set! newvars (cons thisname newvars))
- `(begin
- (add-method2 (,name . rest) (if (null? rest) ,thisname (set! ,thisname (car rest))))
- (set! ,thisname ,initial)))))
- ((eq? (car t) 'def-constructor)
- (let* ((nameandvars (cadr t))
- (body (cddr t))
- (name (car nameandvars))
- (args (cdr nameandvars))
- (name2 (symbol-append 'constructor- name)))
- `(add-method2* ,(cons name2 args) ,@body)))
- (else
- t)))
- body))
-
-
- ;;(c-display "newvars" newvars)
- ;;(c-display "newbody" newbody)
-
-
- `(define* ,def
- (let* ((methods (make-hash-table 251))
- (supers '())
- (super (lambda args (c-display "\n\nError! \"super\" is not a method. Perhaps you ment \"Super\"?\n\n")))
- (add-super! (lambda (asuper)
- (if (null? supers)
- (set! super asuper))
- (set! supers (cons asuper supers))))
- (dispatch-preds #f)
- (dispatch-funcs #f)
- (add-dispatcher (lambda (pred func)
- (cond ((not dispatch-preds)
- (set! dispatch-preds pred)
- (set! dispatch-funcs func))
- ((procedure? dispatch-preds)
- (set! dispatch-preds (list dispatch-preds pred))
- (set! dispatch-funcs (list dispatch-funcs func)))
- (else
- (set! dispatch-preds (append dispatch-preds (list pred)))
- (set! dispatch-funcs (append dispatch-funcs (list func)))))))
- (add-method-do (lambda (name func)
- (hashq-set! methods name func)
- func))
- ,@(map (lambda (var)
- (list var #f))
- (reverse! newvars)))
-
- (def-var class-name ',(car def))
-
- (def-method (add-method name func)
- (add-method-do name func))
-
- (def-method (dir)
- (append (cons class-name
- (hash-fold (lambda (key value s) (cons key s)) '()
- methods))
- (map (lambda (super) (-> super dir))
- supers)))
- (def-method (get-method name)
- (or (hashq-ref methods name)
- (any (lambda (super) (-> super get-method name))
- supers)))
- (def-method (instance? class-name*)
- (or (eq? class-name* class-name)
- (any (lambda (super) (-> super instance? class-name*))
- supers)))
-
- (define (this name . rest)
- (apply (or (hashq-ref methods name)
- (any (lambda (super) (-> super get-method name))
- supers)
- (lambda x (format #t "No such method: \"~A\" in class \"~A\".~%" name class-name)))
- rest))
-
- (define (this-with-custom-dispatchers m . rest)
- (call-with-current-continuation
- (lambda (return)
- (for-each (lambda (pred func)
- (if (pred m rest)
- (return (func m rest))))
- dispatch-preds
- dispatch-funcs)
- (apply (or (hashq-ref methods m)
- (any (lambda (super) (-> super get-method m))
- supers)
- (lambda x (format #t "No such method: \"~A\" in class \"~A\".~%" m class-name)))
- rest))))
-
- (define (this-with-custom-dispatcher m . rest)
- (if (dispatch-preds m rest)
- (dispatch-funcs m rest)
- (apply (or (hashq-ref methods m)
- (any (lambda (super) (-> super get-method m))
- supers)
- (lambda x (format #t "No such method: \"~A\" in class \"~A\".~%" m class-name)))
- rest)))
-
- ,@newbody
-
- (if (and this dispatch-preds)
- (if (procedure? dispatch-preds)
- (set! this this-with-custom-dispatcher)
- (set! this this-with-custom-dispatchers)))
-
- this)))
-
-
-(define-macro (add-method2 nameandvars . body)
- `(add-method-do ',(car nameandvars) (lambda ,(cdr nameandvars) ,@body)))
-
-(define-macro (add-method2* nameandvars . body)
- `(add-method-do ',(car nameandvars) (lambda* ,(cdr nameandvars) ,@body)))
-
-#!
-(def-class (gakk)
- (define g 2)
- (define h (+ g 2))
- (c-display "ai")
- (def-var a 5)
- (c-display "h:" h))
-
-(begin gakk)
-(define g (gakk))
-(-> g a)
-(-> g add-method 'tja (lambda (c)
- 90))
-(-> g dir)
-(-> g tja 2)
-!#
-
-(define-macro (def-method nameandvars . body)
- (if (and (list? nameandvars)
- (or (member #:optional nameandvars)
- (member #:rest nameandvars)
- (member #:key nameandvars)))
- `(define ,(symbol-append 'this-> (car nameandvars))
- (add-method2* ,nameandvars ,@body))
- `(define ,(symbol-append 'this-> (car nameandvars))
- (add-method2 ,nameandvars ,@body))))
-
-(define-macro (def-var name . initial)
- (if (null? initial)
- `(add-method ',name (lambda rest
- (if (null? rest)
- ,name
- (set! ,name (car rest)))))
- (let ((thisname name ));;(symbol-append 'this-> name)))
- `(define ,thisname
- (begin
- (add-method2 (,name . rest) (if (null? rest) ,thisname (set! ,thisname (car rest))))
- ,(car initial))))))
-
-
-(define-macro (def-constructor nameandvars . body)
- (let* ((name (car nameandvars))
- (args (cdr nameandvars))
- (name2 (symbol-append 'constructor- name)))
- `(add-method2* ,(cons name2 args) ,@body)))
-
-(define (object? o)
- (and (procedure? o)
- (catch #t
- (lambda ()
- (-> o instance? (-> o class-name)))
- (lambda (key . args)
- #f))))
-
-(define-macro (instance? object class)
- `(-> ,object instance? ',class))
-
-(define-macro (Super . rest)
- `(define dassupers
- (for-each add-super! (list ,@rest))))
-
-
-
-;; The -> macro caches the function pointer. Generally a little bit faster than ->2.
-;;
-;; Warning! When dynamically generating "->"-calls, its easy to make memory-leaking code.
-;; If you thing that is whats happening, rename "->3" to "->" and "->3" to "->", and see if that helps.
-;; If it did, change the "->"-calls thats causing the leak into "->2"-calls.
-;;
-;; Nah, this wasn't such a good idea... ->-bad-idea is the old ->
-(define-macro (->-bad-idea object method . args)
- (if (number? object)
- `(list-set! ,method ,object ,(car args))
- (let ((funcname (gensym (string-append "->___" (symbol->string method)))))
- (define-toplevel funcname
- (let ((func #f)
- (lastobj #f))
- (lambda (object . args)
- (if (not (eq? lastobj object))
- (begin
- (set! lastobj object)
- (set! func (object 'get-method method))
- (if (not func)
- (throw 'no-such-method method "in class" (object 'class-name)))))
- (apply func args))))
- `(,funcname ,object ,@args))))
-
-
-;; This one works just the same as ->, but doesn't cache the function pointer. Could be a tiny tiny little bit faster than -> in some situations.
-(define-macro (->2 object method . args)
- (if (number? object)
- `(list-set! ,method ,object ,(car args))
- `(,object ',method ,@args)))
-
-(define-macro (-> object method . args)
- (if (number? object)
- `(list-set! ,method ,object ,(car args))
- `(,object ',method ,@args)))
-
-(define-macro (<- object method)
- (if (number? object)
- `(list-ref ,method ,object)
- `(-> ,object get-method ',method)))
-
-
-#!
-(def-class (<gakk>)
- (define a #f)
- (define b #f)
- (set! a 5)
- (set! b a))
-(define a 5)
-(define b a)
-
-(define (<gakk>)
- (define a 5)
- (define b a)
- b)
-
-(define gakk (<gakk>))
-
-(class (<wefwe> wrg)
- (def-method (ai val)
- 5))
-
-(class (<test>)
- (def-method (ai val)
- val))
-(define a (<test>))
-(-> a ai 5)
-
-(def-class (<super1> sum)
- (def-var avar 2)
- (def-method (super1)
- (display "super1 sum: ")(display sum)
- (newline)))
-
-(def-class (<super2> sum)
- (def-method (super2)
- (display "super2 sum: ")(display sum)
- (newline)))
-
-(def-class (<bank> sum) (Super (<super1> (+ 1000 sum)) (<super2> (+ 2000 sum)))
- (def-method (print-sum)
- (display sum)(newline))
- (def-method (deposit x)
- (set! sum (+ sum x))
- (this->print-sum))
- (def-method (withdraw x)
- (set! sum (- sum x))
- (this->print-sum)))
-
-(define b (<bank> 5))
-(begin b)
-(-> b deposit 3)
-(-> b withdraw 6)
-(define b->withdraw (<- b withdraw))
-(begin b->withdraw)
-(b->withdraw 7)
-(-> b class-name)
-(-> b super1)
-(-> b super2)
-(-> b avar)
-(-> b avar 5)
-(-> b avar)
-(instance? b <bank>)
-(instance? b <super1>)
-(instance? b <super2>)
-(instance? b <someother-class>)
-(-> b dir)
-(-> b not-a-method)
-!#
-
-
-
-
-
-
-;;##############################################################
-;; Array
-;;##############################################################
-
-(def-class (<array> . rest)
- (define dasarray (list->vector rest))
-
- (def-method (get-vector)
- dasarray)
- (def-method (set-vector! v)
- (set! dasarray v))
- (def-method (get-list)
- (vector->list dasarray))
- (def-method (set-list! l)
- (set! dasarray (list->vector l)))
- (def-method (reset!)
- (this->set-list! rest))
- (def-method (set!! . rest)
- (this->set-list! rest))
- (def-method (set! . rest)
- (c-for-each (lambda (i val)
- (vector-set! dasarray i val))
- rest))
- (def-method (for-each func)
- (c-for 0 < (this->length) 1
- (lambda (n)
- (func n (vector-ref dasarray n)))))
- (def-method (map! func)
- (this->for-each (lambda (n el)
- (vector-set! dasarray n (func n el)))))
- (def-method (map func)
- (let* ((ret '(0))
- (tail ret))
- (this->for-each (lambda (n el)
- (let ((new (list (func n el))))
- (set-cdr! tail new)
- (set! tail new))))
- (cdr ret)))
- (def-method (length)
- (vector-length dasarray))
-
- ;; Python-like list-selector (not complete, or optimized, or very useful in the current form.)
- (def-method (p sel)
- (let* ((split (string-split sel #\:))
- (intsplit (apply <array> (map string->number split))))
- (cond ((= 1 (length split)) (vector-ref dasarray (intsplit 0)))
- ((= 2 (length split)) (sublist (this->get-list) (intsplit 0) (intsplit 1)))
- (else split))))
-
- (add-dispatcher (lambda (n rest)
- (integer? n))
- (lambda (n rest)
- (if (null? rest)
- (vector-ref dasarray n)
- (vector-set! dasarray n (car rest)))))
-
- (add-dispatcher (lambda (s rest)
- (string? s))
- (lambda (s rest)
- (this->p s)))
-
- (def-constructor (length len #:optional default)
- (this->set-vector! (make-vector len default))
- this)
-
- (def-constructor (map len func)
- (this->set-vector! (make-vector len #f))
- (this->map! (lambda (n el) (func n)))
- this)
-
- (def-constructor (multidimensional dimensions #:optional default)
- (if (null? dimensions)
- default
- (-> this constructor-map (car dimensions) (lambda (n)
- (<array/multidimensional> (cdr dimensions) default)))))
- )
-
-
-
-#!
-(define a (<array> 0 1 2 3 4 5 6 7 8))
-(begin a)
-(-> a get-list)
-(a 0 10)
-(a 1 11)
-(a 0)
-(a 1)
-(-> a get-list)
-(a "2:6")
-(-> a set! 9 8 7 6 5)
-(-> a get-list)
-(-> a set!! 9 8 7 6 5)
-(-> a get-list)
-(-> a map list)
-(-> a reset!)
-(-> a get-list)
-(-> a dir)
-
-(define a (<array/multidimensional> '(5 4)))
-(-> a for-each (lambda (n1 el1) (-> el1 map! (lambda (n2 el2) (exact->inexact (+ n1 (/ n2 10)))))))
-(-> a map (lambda (n el) (-> el get-list)))
-((a 0) 3)
-((a 3) 2)
-!#
-
-
-
-
-
-
-;;##############################################################
-;; A hook class.
-;;##############################################################
-(def-class (<hook>)
- (define funcs '())
- (define system-funcs '())
- (define steelfunc #f)
- (def-method (add! func)
- (set! funcs (cons func funcs)))
- (def-method (add-system! func)
- (set! system-funcs (cons func system-funcs)))
- (def-method (only! func)
- (set! steelfunc func))
- (def-method (not-only!)
- (set! steelfunc #f))
- (def-method (remove! func)
- (set! funcs (remove! (lambda (f) (eq? f func))
- funcs)))
- (def-method (run . args)
- (if steelfunc
- (apply steelfunc args)
- (call-with-current-continuation
- (lambda (return)
- (for-each (lambda (func)
- (if (eq? 'stop! (apply func args))
- (return 'stop!)))
- (append system-funcs funcs)))))))
-
-
-
diff --git a/osc.scm b/osc.scm
deleted file mode 100644
index 92efc2e..0000000
--- a/osc.scm
+++ /dev/null
@@ -1,204 +0,0 @@
-
-(if (not provided? 'snd-eval-c.scm)
- (load-from-path "eval-c.scm"))
-
-
-(eval-c-add-int-type "int32_t")
-
-(eval-c "-llo"
- "#include <lo/lo.h>"
- "#include <jack/ringbuffer.h>"
-
- (proto->public
- "lo_blob lo_blob_new(int32_t size, void* data);"
- "lo_address lo_address_new(const char *host, const char *port);"
- "int lo_send_message (lo_address targ, const char *path, lo_message msg);"
- "lo_message lo_message_new (void);"
- "void lo_message_free (lo_message m);"
- "void lo_message_add_int32 (lo_message m, int32_t a);"
- "void lo_message_add_float (lo_message m, float a);"
- "void lo_message_add_string (lo_message m, const char *a);"
- "void lo_address_free (lo_address t);")
-
- (<jack_ringbuffer_t*> rb NULL)
-
- (run-now
- (set! rb (jack_ringbuffer_create 1024*64)))
-
- (<int> generic_handler (lambda ((<const-char*> path)
- (<const-char*> types)
- (<lo_arg-**> argv)
- (<int> argc)
- (<void*> data)
- (<void*> user_data))
- (<int> len (strlen path))
- (if (< (jack_ringbuffer_write_space rb) (+ len
- (sizeof <int>)
- (sizeof <int>)))
- (begin
- (fprintf stderr (string "Error. OSC Ringbuffer full.\\n"))
- (return 0)))
- (jack_ringbuffer_write rb (cast <void*> &len) (sizeof <int>))
- (jack_ringbuffer_write rb (cast <void*> path) len)
- (jack_ringbuffer_write rb (cast <void*> &argc) (sizeof <int>))
- (for-each 0 argc
- (lambda (n)
- (if (< (jack_ringbuffer_write_space rb) (+ 1
- (sizeof <float>)
- (sizeof <int>)))
- (begin
- (fprintf stderr (string "Error. OSC Ringbuffer full.\\n"))
- (return 0)))
- (jack_ringbuffer_write rb (cast <void*> "&types[n]") 1)
- (cond ((== ,(string->symbol "'s'") types[n])
- (<char*> s "&(argv[n]->s)")
- (<int> len (strlen s))
- (jack_ringbuffer_write rb (cast <void*> &len) (sizeof <int>))
- (if (< (jack_ringbuffer_write_space rb) len)
- (begin
- (<char*> error "error")
- (fprintf stderr (string "Error. OSC Ringbuffer full.\\n"))
- (jack_ringbuffer_write rb (cast <void*> error) 6)
- (return 0)))
- (jack_ringbuffer_write rb (cast <void*> argv[n]) len))
- ((== ,(string->symbol "'f'") types[n])
- (jack_ringbuffer_write rb (cast <void*> "&(argv[n]->f)") (sizeof <float>)))
- ((== ,(string->symbol "'i'") types[n])
- (jack_ringbuffer_write rb (cast <void*> "&(argv[n]->i)") (sizeof <int>)))
- (else
- (fprintf stderr (string "Error. Unknown type"))
- (return 0)))))
-
- ;(<int> i)
- ;"printf(\"path: <%s>\\n\", path);"
- ;"for (i=0; i<argc; i++) {"
- ;" printf(\"arg %d '%c' \", i, types[i]);"
- ;" lo_arg_pp(types[i], argv[i]);"
- ;" printf(\"\\n\");"
- ;"}"
- ;(printf (string "\\n"))
- (return 0)))
-
-
- (<void> error_handler (lambda ((<int> num)
- (<const-char*> msg)
- (<const-char*> path))
- (printf (string "liblo server error %d in path %s: %s\\n")
- num path msg)))
-
- (<lo_server_thread> st)
-
- (public
- (<void> osc_internal_start_server (lambda ((<char*> port))
- (set! st (lo_server_thread_new port error_handler))
- (lo_server_thread_add_method st NULL NULL generic_handler NULL)
- (lo_server_thread_start st)))
-
- (<void> osc_internal_stop_server (lambda ()
- (lo_server_thread_free st)))
-
- (<SCM> osc_rb_get_int (lambda ()
- (<int> ret)
- (if (< (jack_ringbuffer_read_space rb) (sizeof <int>))
- (return SCM_BOOL_F))
- (jack_ringbuffer_read rb (cast <void*> &ret) (sizeof <int>))
- (return (MAKE_INTEGER ret))))
- (<SCM> osc_rb_get_string (lambda ((<int> len))
- (<char> dasret[1024])
- (while (< (jack_ringbuffer_read_space rb) len)
- (usleep 50))
- (jack_ringbuffer_read rb (cast <void*> dasret) len)
- (set! dasret[len] 0)
- (RETURN_STRING dasret)))
-
- (<SCM> osc_rb_get (lambda ()
- (<char> type)
- (if (< (jack_ringbuffer_read_space rb) (+ 1 (sizeof <int>)))
- (return SCM_BOOL_F))
- (jack_ringbuffer_read rb &type 1)
- (cond ((== ,(string->symbol "'s'") type)
- (<int> len)
- (jack_ringbuffer_read rb (cast <void*> &len) (sizeof <int>))
- (return (osc_rb_get_string len)))
- ((== ,(string->symbol "'f'") type)
- (<float> ret)
- (jack_ringbuffer_read rb (cast <void*> &ret) (sizeof <float>))
- (return (MAKE_FLOAT ret)))
- ((== ,(string->symbol "'i'") type)
- (return (osc_rb_get_int)))
- (else
- (fprintf stderr (string "Error. Unknown type"))
- (return SCM_BOOL_F))))))
- )
-
-(define (osc_send host port path . args)
- (define address (lo_address_new host (if (string? port)
- port
- (number->string port))))
- (define message (lo_message_new))
- (for-each (lambda (arg)
- (cond ((integer? arg)
- (lo_message_add_int32 message arg))
- ((number? arg)
- (lo_message_add_float message arg))
- ((string? arg)
- (lo_message_add_string message arg))
- (else (error "unkown arg" arg))))
- args)
- (let ((res (lo_send_message address path message)))
- (lo_message_free message)
- (lo_address_free address)
- res))
-
-(define (osc_start_server port)
- (if (number? port)
- (set! port (number->string port)))
- (osc_internal_start_server port))
-
-(define (osc_get)
- (let ((strlen (osc_rb_get_int)))
- (if (not strlen)
- #f
- (let ((path (osc_rb_get_string strlen)))
- (define len (osc_rb_get_int))
- (cons path
- (map (lambda (i)
- (let loop ((ret (osc_rb_get)))
- (if (not ret)
- (begin
- (usleep 50)
- (loop (osc_rb_get)))
- ret)))
- (iota len)))))))
-
-(define (osc_add_callback func)
- (in 100
- (lambda ()
- (catch #t
- (lambda ()
- (let ((res (osc_get)))
- (if res
- (apply func res))))
- (lambda x
- (c-display "Error: " x)))
- (osc_add_callback func))))
-
-
-#!
-(load-from-path "osc.scm")
-
-(define port 6012)
-(osc_start_server port)
-
-
-(osc_send #f port "/foo/bar" 5.2 9.4 "hello" 5)
-(osc_get)
-
-;; osc_add_callback can be used instead of osc_get:
-
-(osc_add_callback (lambda (path . args)
- (c-display "path: " path ", args:" args)))
-
-
-!#
-
diff --git a/pd-add.scm b/pd-add.scm
deleted file mode 100644
index 66145cf..0000000
--- a/pd-add.scm
+++ /dev/null
@@ -1,15 +0,0 @@
-
-;(pd-inlets 2)
-;(pd-outlets 1)
-
-(let ((inlet1 0))
- (pd-inlet 1 'float
- (lambda (x)
- (set! inlet1 x)))
- (pd-inlet 0 'float
- (lambda (x)
- (pd-outlet 0 (+ inlet1 x)))))
-
-
-
-
diff --git a/pd-any.scm b/pd-any.scm
deleted file mode 100644
index bf26191..0000000
--- a/pd-any.scm
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-(pd-inlet 0 'any
- (lambda x
- (pd-display "Got " x " to inlet 0")))
diff --git a/pd-fm.scm b/pd-fm.scm
deleted file mode 100644
index 52760dc..0000000
--- a/pd-fm.scm
+++ /dev/null
@@ -1,47 +0,0 @@
-
-(let ((amp 0.6)
- (mc-ratio 2)
- (index 4)
- (freq 300))
-
- (define fm
- (make-oscil (* freq mc-ratio)
- :initial-phase (/ 3.14159 2.0)))
-
- (define carrier
- (make-oscil freq))
-
- (define fm_index
- (* (hz->radians freq) mc-ratio index))
-
- (define instrument
- (<rt-out> 0 (* amp
- (oscil carrier
- (* fm_index
- (oscil fm))))))
-
- (pd-inlet 0 'mc-ratio
- (lambda (val)
- (set! mc-ratio val)))
-
- (pd-inlet 0 'Fm-Frequency
- (lambda (val)
- (set! (mus-frequency fm)
- (* mc-ratio val))))
-
- (pd-inlet 0 'Carrier-Frequency
- (lambda (val)
- (set! (mus-frequency carrier)
- val)))
-
- (pd-inlet 0 'Index
- (lambda (val)
- (set! (-> instrument fm_index)
- (* (hz->radians freq)
- mc-ratio val))))
-
- (pd-inlet 0 'Amplitude
- (lambda (val)
- (set! (-> instrument amp)
- val))))
-
diff --git a/pd-global.scm b/pd-global.scm
deleted file mode 100644
index 9883e62..0000000
--- a/pd-global.scm
+++ /dev/null
@@ -1,253 +0,0 @@
-
-
-;; These functions are global functions available for all guile scripts loaded into PD.
-;; Kjetil S. Matheussen, 2004.
-
-;;/* 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. */
-;;/* */
-
-
-(provide 'snd-pd-global.scm)
-
-(debug-enable 'debug)
-(debug-enable 'trace)
-(debug-enable 'backtrace)
-
-(use-modules (ice-9 stack-catch))
-
-(set! (show-backtrace) #t)
-(debug-enable 'debug)
-(if #t
- (begin
- (read-enable 'positions)
- (debug-enable 'debug)
- (debug-enable 'backtrace)
- (debug-set! frames 8)
- (debug-set! depth 50)))
-
-
-(if (not (provided? 'snd-rt-compiler.scm)) (load-from-path "rt-compiler.scm"))
-(if (not (provided? 'snd-oo.scm)) (load-from-path "oo.scm"))
-
-;(load-from-path "rt-compiler.scm")
-;(set! *rt-engine* *rt-pd-engine*)
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Misc. functions
-;;
-;;
-(define (pd-load-if-exists filename)
- (if (access? filename F_OK)
- (load filename)))
-
-(define (pd-display . args)
- (if (not (null? args))
- (begin
- (display (car args))
- (apply pd-display (cdr args)))
- (newline)))
-
-(define (pd-filter proc list)
- (if (null? list)
- '()
- (if (proc (car list))
- (cons (car list) (pd-filter proc (cdr list)))
- (pd-filter proc (cdr list)))))
-
-(define (pd-for init pred least add proc)
- (do ((n init (+ n add)))
- ((not (pred n least)))
- (proc n)))
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Argument checking
-;;
-;;
-(define (pd-check-number number message)
- (if (number? number)
- #t
- (begin
- (pd-display message ": " number " is not a number")
- #f)))
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Bindings
-;;
-;;
-(define pd-global-bindings '())
-
-(define (pd-bind-do symbol func bindings)
- (if (or (not (symbol? symbol))
- (not (procedure? func)))
- (begin
- (pd-display "Wrong arguments for pd-bind")
- bindings)
- (cons (list symbol
- func
- (pd-c-bind symbol func))
- bindings)))
-
-(define (pd-unbind-do symbol bindings)
- (if (not (symbol? symbol))
- (begin
- (pd-display "Wrong arguments for pd-unbind")
- bindings)
- (let ((binding (assq symbol bindings)))
- (pd-c-unbind (caddr binding) symbol)
- (pd-filter (lambda (x) (not (eq? symbol (car x))))
- bindings))))
-
-(define (pd-bind symbol func)
- (set! pd-global-bindings (pd-bind-do symbol func pd-global-bindings)))
-
-(define (pd-unbind symbol)
- (set! pd-global-bindings (pd-unbind-do symbol pd-global-bindings)))
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Sending
-;;
-;;
-(define (pd-send symbol firstarg . args)
- (if (or (symbol? symbol)
- (number? symbol))
- (cond ((> (length args) 0) (pd-c-send-list symbol (cons firstarg args)))
- ((list? firstarg) (pd-c-send-list symbol firstarg))
- ((number? firstarg) (pd-c-send-number symbol firstarg))
- ((string? firstarg) (pd-c-send-string symbol firstarg))
- ((eq? 'bang firstarg) (pd-c-send-bang symbol))
- ((symbol? firstarg) (pd-c-send-symbol symbol firstarg))
- (else
- (pd-display "Unknown argument to pd-outlet-or-send:" firstarg)))))
-
-(define (pd-get-symbol sym)
- (if (not (symbol? sym))
- (pd-display sym " is not a scheme symbol")
- (pd-c-get-symbol sym)))
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; RT support
-(rt-ec-function <t_snd_pd-*> rt_get_pd_instance
- (lambda ((<SCM> instance))
- (return (cast <t_snd_pd-*>
- (scm_num2ulong instance
- 0
- (string "rt_get_pd_instance"))))))
-(<rt-func> 'rt_get_pd_instance '<void-*> '(<SCM>))
-
-(<rt-type> '<t_snd_pd-*>
- number?
- 'rt_get_pd_instance
- #:transformfunc (lambda (address)
- (list "A_POINTER" address)))
-
-(rt-ec-function <void> rt_pd_outlet (lambda ((<t_snd_pd-*> instance)
- (<int> outlet_num)
- (<float> val))
- (outlet_float instance->outlets[outlet_num] val)))
-(<rt-func> 'rt_pd_outlet '<void> '(<t_snd_pd-*> <int> <float))
-
-(define-rt-macro (pd-outlet outlet_num val)
- `(rt_pd_outlet pd-instance ,outlet_num ,val))
-
-
-#!
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Evaluate strings from stdin
-;; (incomplete, used snd_eval_stdin_str instead)
-;;
-(define pd-eval-strings
- (let ((to-be-evaluated "")
- (insidestring #f)
- (inside-commented-block 0)
- (inside-commented-line #f)
- (balance 0)) ;; parantheses
- (define (eval-it!)
- ;(pd-display "about to evaluate -" to-be-evaluated "-")
- (if (not (string=? "" to-be-evaluated))
- (pd-display (eval-string to-be-evaluated)))
- (display "snd-pd> ")
- (set! to-be-evaluated ""))
- (define (add-char! c)
- (set! to-be-evaluated (string-append/shared to-be-evaluated (string c))))
- (define (left-par!)
- (add-char! #\()
- (set! balance (1+ balance)))
- (define (right-par!)
- (if (> balance 0)
- (begin
- (add-char! #\))
- (set! balance (1- balance))
- (if (= 0 balance)
- (eval-it!)))))
- (lambda (string)
- ;(pd-display "debug" to-be-evaluated balance)
- (for-each (lambda (c)
- ;(pd-display "checking" c "-" to-be-evaluated "-")
- (if (and (= -1 inside-commented-block)
- (char=? c #\!))
- (set! inside-commented-block 2)
- (begin
- (if (= -1 inside-commented-block)
- (set! inside-commented-block 0))
- (cond (insidestring
- (if (char=? c #\")
- (set! insidestring #f))
- (add-char! c))
- ((= inside-commented-block 2)
- (if (char=? c #\!)
- (set! inside-commented-block 1)))
- ((= inside-commented-block 1)
- (if (char=? c #\#)
- (set! inside-commented-block 0)
- (set! inside-commented-block 2)))
- (else
- (cond ((char=? c #\() (left-par!))
- ((char=? c #\)) (right-par!))
- ((and (or (char=? c #\ )
- (char=? c #\newline))
- (= 0 balance))
- (eval-it!))
- ((char=? c #\")
- (set! insidestring #t)
- (add-char! c))
- ((char=? c #\#)
- (set! inside-commented-block -1))
- (else
- (add-char! c))))))))
- (string->list string)))))
-
-!#
-
-
-(pd-load-if-exists "/etc/.k_guile.scm")
-(pd-load-if-exists (string-append (getenv "HOME") "/.k_guile.scm"))
-
-
-
-
diff --git a/pd-inout.scm b/pd-inout.scm
deleted file mode 100644
index c3ca0f9..0000000
--- a/pd-inout.scm
+++ /dev/null
@@ -1,24 +0,0 @@
-
-(define num-inouts 400)
-
-;(pd-inlets num-inouts)
-;(pd-outlets num-inouts)
-
-
-(pd-for 0 < num-inouts 1
- (lambda (i)
- (pd-inlet i 'float
- (lambda (x)
- ;;(pd-display "Got " x " to inlet " i)
- (pd-for 0 < 400 1 ;num-inouts 1
- (lambda (i2)
- (pd-outlet i2 (+ i2 x))))))))
-
-
-(pd-inlet 284 'testing
- (lambda ()
- (pd-display "This is a function for handling 'testing sent to inlet 284.")))
-
-
-
-
diff --git a/pd-local.scm b/pd-local.scm
deleted file mode 100644
index 61f8d23..0000000
--- a/pd-local.scm
+++ /dev/null
@@ -1,152 +0,0 @@
-
-
-;; This file is evaluated (not (load)-ed) right before the file defined in the k_guile object in pd is evaluated or the
-;; reload message has been sent. (see k_guile.c/k_guile_new)
-;; Kjetil S. Matheussen, 2004.
-;;
-;;/* 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. */
-;;/* */
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; DSP-Engine and buses
-;;
-;;
-(if (defined? '*rt-engine*)
- (begin
- (set! *rt-engine* *rt-pd-engine*)
- (set! *out-bus* (make-bus pd-num-outlets))
- (set! *in-bus* (make-bus pd-num-outlets))))
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Argument checking
-;;
-;;
-(define (pd-legaloutlet outlet-num)
- (if (and (< outlet-num pd-num-outlets)
- (>= outlet-num 0))
- #t
- (begin
- (pd-display "outlet-num out of range")
- #f)))
-
-(define (pd-legalinlet inlet-num)
- (if (and (< inlet-num pd-num-inlets)
- (>= inlet-num 0))
- #t
- (begin
- (pd-display "inlet-num out of range")
- #f)))
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Inlets
-;;
-;;
-(define pd-inlet-vector (make-vector pd-num-inlets '()))
-(define pd-inlet-anyvector (make-vector 1 '()))
-
-;; This function is called from the C side when the object receives something on an inlet.
-(define (pd-inlet-func inlet-num symbol args)
- (let ((inlet-func (assq symbol
- (vector-ref pd-inlet-vector
- inlet-num))))
- (if (not inlet-func)
- (begin
- (set! inlet-func (assq 'any
- (vector-ref pd-inlet-vector inlet-num)))
- (set! args (cons symbol args))))
- (if inlet-func
- (apply (cadr inlet-func) args)
- (pd-display "No function defined for handling <" symbol "> to inlet " inlet-num))))
-
-(define (pd-inlet inlet-num symbol func)
- (if (not (procedure? func))
- (pd-display "Wrong argument to pd-inlet: " func " is not a procedure")
- (if (and (pd-check-number inlet-num "pd-inlet")
- (pd-legalinlet inlet-num))
- (let ((inlet-funcs (vector-ref (if (eq? symbol 'any)
- pd-inlet-anyvector
- pd-inlet-vector)
- inlet-num)))
- (vector-set! pd-inlet-vector
- inlet-num
- (cons (list symbol func)
- inlet-funcs))))))
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Outlets
-;;
-;;
-(define (pd-outlet outlet-num firstarg . args)
- (if (pd-legaloutlet outlet-num)
- (cond ((not (null? args)) (pd-c-outlet-list pd-instance outlet-num issymbol (cons firstarg args)))
- ((list? firstarg) (pd-c-outlet-list pd-instance outlet-num firstarg))
- ((number? firstarg) (pd-c-outlet-number pd-instance outlet-num firstarg))
- ((string? firstarg) (pd-c-outlet-string pd-instance outlet-num firstarg))
- ((eq? 'bang firstarg) (pd-c-outlet-bang pd-instance outlet-num))
- ((symbol? firstarg) (pd-c-outlet-symbol pd-instance outlet-num firstarg))
- (else
- (pd-display "Unknown argument to pd-outlet-or-send:" firstarg)))))
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Bindings
-;;
-;;
-;; We must have our own local bind/unbind functions to be able to clean up automaticly.
-(define pd-local-bindings '())
-
-(define (pd-bind symbol func)
- (set! pd-local-bindings (pd-bind-do symbol func pd-local-bindings)))
-
-(define (pd-unbind symbol)
- (set! pd-local-bindings (pd-unbind-do symbol pd-local-bindings)))
-
-(define (pd-unbind-all)
- (if (not (null? pd-local-bindings))
- (begin
- (pd-unbind (car (car pd-local-bindings)))
- (pd-unbind-all))))
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Cleanup
-;;
-;;
-(define pd-destroy-func #f)
-(define (pd-set-destroy-func thunk)
- (if (not (procedure? thunk))
- (pd-display "Wrong argument to pd-set-destroy-func: " thunk " is not a procedure.")
- (set! pd-destroy-func thunk)))
-
-;; This func is called from the C-side.
-(define (pd-cleanup-func)
- (if pd-destroy-func
- (begin
- (pd-destroy-func)
- (set! pd-destroy-func #f)))
- (pd-unbind-all))
-
diff --git a/pd-mozilla.scm b/pd-mozilla.scm
deleted file mode 100644
index e0e17b2..0000000
--- a/pd-mozilla.scm
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-(pd-inlet 0 'start
- (lambda x
- (system "mozilla&")))
-
-
-
diff --git a/pd-send_receive.scm b/pd-send_receive.scm
deleted file mode 100644
index bae7668..0000000
--- a/pd-send_receive.scm
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-;; Send out what comes in.
-(pd-bind 'in
- (lambda (arg)
- (pd-send 'out arg)))
-
-
-#!
-;; This one does the same and is faster, but requires some more typing:
-(let ((s-out (pd-get-symbol 'out)))
- (pd-bind 'in
- (lambda (arg)
- (pd-send s-out arg))))
-!#
-
-
-#!
-;; And the following example will (most probably) lead to a segmentation fault:
-;; This is also the only way I can think of right now that will make pd segfault using the pd- interface.
-(pd-send 5 arg)
-!#
-
diff --git a/pd-stochastic.scm b/pd-stochastic.scm
deleted file mode 100644
index 91c76fe..0000000
--- a/pd-stochastic.scm
+++ /dev/null
@@ -1,86 +0,0 @@
-;; adapted from snd-scheme version of
-;; CLM implementation of Xenakis' Dynamic Stochastic Synthesis as heard in
-;; his GENDY3, S.709, Legende d'Eer, etc.
-;; 12/17/03
-;; revised 02/07/06
-;; Bill Sack wsack@buffalo.edu
-
-;; to do: - load lists for array dynamically and/or through arguments
-
-(letrec*
- ((amp .9) (bits 16) (xmin 1) (xmax 20) (xwig 0) (xstep 1) (ywig 0) (xfb 0)
- ;;make vct to hold x,y breakpoints
- (xy-array (vct 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0))
- ;;some explanation of the parameters:
- ;;amp - scales overall amplitude
- ;;bits - the resolution of the wave's amplitude dimension: from 2 -> whatever
- ;;xmin - minimum number of samples between time breakpoints. must be equal to or greater than 1
- ;;xmax - maximum number of samples between time breakpoints.
- ;;xwig - amplitude applied to random walk function in time dimension
- ;;xstep - quantization of freedom in time dimension, in samples. minimum of 1
- ;;ywig - amplitude applied to random walk function in amplitude dimension, in
- ;; percent of overall possible amplitude
- ;;xfb - an attempt at an FIR low-pass filter - the old (n + (x * n-1)) trick,
- ;; not really that useful
- ;;init-array - initial x and y breakpoints for wave. x values must be
- ;; integers and 1 or greater, y values between -(2^bits / 2) and (2^bits / 2)
- (y 0) (dx 0) (prev-dx 0) (dy 0)
- (j 0) (m 0) (dt 0) (output 0)
- (oldy 0) (xdev 0) (ydev 0)
- (b (expt 2 (- bits 1))); because we use signed ints - see (- b) below
- (xy-array-l (inexact->exact (vct-length xy-array)));length of vct - used in modulo below
- (instrument (<rt-play>
- (lambda ()
- (if (= dx dt);;when current sample is a breakpoint
- (begin
- (set! dx (vct-ref xy-array (modulo m xy-array-l)))
- (set! y (vct-ref xy-array (+ (modulo m xy-array-l) 1)))
- (set! prev-dx (vct-ref xy-array (modulo (- m 2) xy-array-l)))
- (set! dy (- y oldy))
- (set! oldy y)
- ;;straight uniform distribution for y
- (set! ydev (inexact->exact (round (* (- 1.0 (random 2.0)) (* .01 b ywig)))))
- ;;gaussian distribution for x
- (set! xdev
- (* xstep (inexact->exact (round
- (* xwig
- (* (sqrt (* -2.0 (log (- 1 (random 1.0)))))
- (cos (* 6.283185307179586 (random 1.0)))))))))
- (vct-set! xy-array (modulo m xy-array-l)
- ;;mirror stuff for x
- (cond ((or (< (round xmax) (+ dx xdev))
- (> (round xmin)(+ dx xdev)))
- (max (min ;;this mirror is attentuated
- (inexact->exact (round (+ (* xfb prev-dx) (* (- 1 xfb) (+ dx (- xdev))))))
- (inexact->exact (round xmax))) (inexact->exact (round xmin))))
- (else (inexact->exact (round (+ (* xfb prev-dx)
- (* (- 1 xfb) (+ dx xdev))))))))
- (vct-set! xy-array (+ (modulo m xy-array-l) 1)
- ;;mirror stuff for y
- (cond ((or (< b (+ y ydev)) (> (- b) (+ y ydev)))
- (max (min (+ y (- ydev)) b) (- b)))
- (else (+ y ydev))))
- (set! m (+ m 2))
- (set! dt 0)))
- (set! dt (+ 1 dt))
- (set! j (+ j (/ dy dx)));linear interpolation
- (set! output (/ j b));normalization -1 to 1
- (out 0 (* amp output))))))
- (pd-inlet 0 'Amplitude
- (lambda (val)
- (set! (-> instrument amp) val)))
- (pd-inlet 0 'xwig
- (lambda (val)
- (set! (-> instrument xwig) val)))
- (pd-inlet 0 'ywig
- (lambda (val)
- (set! (-> instrument ywig) val)))
- (pd-inlet 0 'xstep
- (lambda (val)
- (set! (-> instrument xstep) val)))
- (pd-inlet 0 'xmin
- (lambda (val)
- (set! (-> instrument xmin) val)))
- (pd-inlet 0 'xmax
- (lambda (val)
- (set! (-> instrument xmax) val))))
diff --git a/peak-phases.scm b/peak-phases.scm
index 616c4bf..744ea2c 100644
--- a/peak-phases.scm
+++ b/peak-phases.scm
@@ -20,7 +20,7 @@
;; (acos (+ -1/8 (/ (sqrt (+ 1 32)) 8))) -> 0.93592945566133
;; plug that into the original:
;; (+ (sin 0.93592945566133) (sin (* 2 0.93592945566133))) -> 1.7601725930461
-;; see smax in clm.c -- this works at least up to n=25, but as n increases, it gets slower than the fft method
+;; see smax in clm.c -- this works for small n
;;
;; for 1+3, diff is 12cos^3x-8cosx so (acos 0) = pi/2 is a red-herring, but 3cos^2x-2 -> x = (sqrt 2/3), (acos (sqrt 2/3)) -> 0.61547970867039
;; and (+ (sin 0.61547970867039) (sin (* 3 0.61547970867039))) is 1.539600717839 and
@@ -42,7 +42,7 @@
;; so it's messier.
-;; there's always an equivalent point made by flipping the even harmonics, and another pair at 2-val (symmetry around 0)
+;; there's always an equivalent point found by flipping the even harmonics, and another pair at 2-val (symmetry around 0)
;; so there are always 4 equivalent points. A function that returns the other 3 given 1 is at the end of this file.
@@ -83,7 +83,7 @@
2.038954 #(0.000000 1.944593 1.341515 0.115071)
)
-;;; 5 all -------------------------------------------------------------------------------- ; sqrt 2.23
+;;; 5 all -------------------------------------------------------------------------------- ; 2.23
#(5 2.5405211753511 #(0 1 0 0 0)
2.3434929847717 #(0.0 0.84531772136688 1.6645057201385 1.4203575849533 1.5933285951614)
@@ -98,7 +98,7 @@
2.343508 #(0.000000 1.845332 1.664532 0.420369 1.593338)
)
-;;; 6 all -------------------------------------------------------------------------------- ; sqrt 2.4494
+;;; 6 all -------------------------------------------------------------------------------- ; 2.4494
#(6 2.8200183503167 #(0 0 0 0 1 0)
2.5598928928375 #(0.0 0.91140931844711 0.34124284982681 1.3568490743637 1.4451304674149 1.2563138008118)
@@ -112,7 +112,7 @@
2.549360 #(0.000000 0.886491 0.264319 1.300337 1.330828 1.157371)
)
-;;; 7 all -------------------------------------------------------------------------------- ; sqrt is 2.64575
+;;; 7 all -------------------------------------------------------------------------------- ; 2.64575
#(7 3.072141248417 #(0 0 0 1 1 0 1)
2.639426 #(0.000000 0.904980 0.986109 1.721148 1.291116 1.621443 0.966099)
@@ -121,7 +121,7 @@
2.639364 #(0.000000 1.904695 0.985719 0.720925 1.290796 0.621014 0.965536)
)
-;;; 8 all -------------------------------------------------------------------------------- ; sqrt is 2.8284
+;;; 8 all -------------------------------------------------------------------------------- ; 2.8284
#(8 3.5725696916739 #(0 1 0 0 0 0 1 1)
3.4905790371793 #(0 1 0 0 1 1 1 0)
@@ -143,7 +143,7 @@
2.961829 #(0.000000 1.872309 1.500693 1.463585 1.942384 0.062267 1.250564 0.435026 1.252813)
)
-;;; 10 all -------------------------------------------------------------------------------- ; sqrt is 3.162
+;;; 10 all -------------------------------------------------------------------------------- ; 3.162
#(10 3.8132503352626 #(0 1 0 1 0 0 0 0 0 1)
3.7726427002737 #(0 1 1 0 0 0 0 1 0 1)
3.7587492407668 #(0 1 1 0 1 1 1 0 0 0)
@@ -154,9 +154,10 @@
3.102782 #(0.000000 0.927743 1.602314 0.494139 -0.054832 0.785103 0.940332 1.169212 0.894844 0.494709)
3.102734 #(0.000000 1.928606 1.603786 1.495372 -0.052790 1.786999 0.942669 0.172108 0.897837 1.498611)
3.102729 #(0.000000 -0.072172 1.602638 1.494434 -0.054524 1.785698 0.940876 0.169981 0.895530 1.495531)
+ 3.102679 #(0.000000 -0.071505 1.603768 1.495148 -0.052966 1.786780 0.942656 0.171631 0.897221 1.498092)
)
-;;; 11 all -------------------------------------------------------------------------------- ; sqrt is 3.31662
+;;; 11 all -------------------------------------------------------------------------------- ; 3.31662
#(11 4.0969838225299 #(0 0 1 1 0 0 0 0 1 0 1)
4.0506916989601 #(0 0 0 1 1 1 1 0 1 1 0)
3.8018732822274 #(0 1 0 0 1 0 0 0 1 1 1)
@@ -166,9 +167,10 @@
3.218745 #(0.000000 1.518100 1.908924 1.617043 1.540909 0.660141 -0.056826 0.670660 1.165195 1.212229 0.198401)
3.218587 #(0.000000 0.518100 1.908924 0.617043 1.540909 1.660141 -0.056826 1.670660 1.165195 0.212229 0.198401)
3.218514 #(0.000000 0.481786 0.091759 0.383540 0.459429 1.340439 0.058075 1.330988 0.836240 0.789345 -0.196819)
+ 3.218444 #(0.000000 0.482127 0.090769 0.383093 0.459045 1.339823 0.056682 1.328792 0.834826 0.787716 -0.199032)
)
-;;; 12 all -------------------------------------------------------------------------------- ; sqrt 3.464
+;;; 12 all -------------------------------------------------------------------------------- ; 3.464
#(12 3.761 #(0 0 1 1 0 0 0 0 0 1 0 1)
3.7616552322386 #(0 1 1 0 0 1 0 1 0 0 0 0)
@@ -177,13 +179,13 @@
3.389586 #(0.000000 0.076743 0.348321 0.615321 0.763893 0.188090 0.117764 1.147735 1.461927 0.591300 1.497863 0.867456)
3.389547 #(0.000000 -0.079085 1.648740 1.380212 1.228354 1.804105 1.875295 0.844196 0.527781 1.396624 0.490362 1.119947)
3.389430 #(0.000000 1.081078 0.354514 1.624157 0.776410 1.200581 0.129241 0.162495 1.480822 1.614178 1.518801 1.892528)
+ 3.389128 #(0.000000 1.076659 0.348730 1.615059 0.764020 1.188577 0.117561 0.148053 1.462454 1.591386 1.497945 1.868055)
)
-;;; 13 all -------------------------------------------------------------------------------- ; sqrt 3.6055
+;;; 13 all -------------------------------------------------------------------------------- ; 3.6055
#(13 4.2969298731102 #(0 1 0 1 0 0 1 1 0 0 0 0 0)
4.1211657406183 #(0 0 0 0 0 0 1 1 0 0 1 0 1)
- 3.5426704 #(0.000000 1.884492 1.746295 1.269047 1.431366 1.353118 -0.047229 1.765818 0.773088 0.649022 1.690846 0.531435 1.066736)
3.525309 #(0.000000 1.051846 0.170520 1.635159 0.455907 1.511384 -0.147127 1.055447 1.000548 0.097871 0.005880 0.160672 0.616896)
3.525164 #(0.000000 0.947554 1.827637 0.362791 1.540717 0.485315 0.143016 0.940517 0.994364 1.896615 -0.012058 1.833412 1.375539)
3.525069 #(0.000000 0.947187 1.827546 0.362752 1.541123 0.485247 0.142279 0.941021 0.994821 1.896143 -0.012766 1.832600 1.375866)
@@ -192,23 +194,24 @@
3.5254909 #(0.000000 0.051846 0.170520 0.635159 0.455907 0.511384 -0.147127 0.055447 1.000548 1.097871 0.005880 1.160672 0.616896)
3.525038 #(0.000000 0.946517 1.827042 0.361916 1.539603 0.484426 0.141403 0.938505 0.992273 1.893878 -0.015423 1.830018 1.372777)
+ 3.524879 #(0.000000 0.948502 1.829668 0.364984 1.544240 0.488687 0.147763 0.945396 1.000061 1.903153 -0.004551 1.840699 1.384079)
)
-;;; 14 all -------------------------------------------------------------------------------- ; sqrt 3.7416
+;;; 14 all -------------------------------------------------------------------------------- ; 3.7416
#(14 4.3488449994701 #(0 0 1 1 0 1 0 1 1 0 0 0 0 0)
4.1603193984251 #(0 1 0 1 1 0 1 0 0 0 1 0 0 0)
3.615056 #(0.000000 -0.014234 1.497005 1.525139 0.510798 0.632906 1.943720 0.571193 0.639383 0.229407 1.337049 0.146893 1.848962 0.407090)
- 3.613748 #(0.000000 1.023288 1.576401 0.586347 0.610927 1.785590 0.076073 1.737436 0.849661 1.431147 1.557390 1.399833 0.140416 1.726308)
3.613339 #(0.000000 1.024769 1.581138 0.589649 0.616118 1.792590 0.082043 1.743552 0.858157 1.441060 1.566137 1.409695 0.151752 1.740508)
+ 3.613280 #(0.000000 0.028982 0.530538 0.496734 -0.474935 -0.580078 0.104750 1.488617 -0.565757 -0.157842 -1.258035 -0.057079 0.253472 -0.294346)
+ 3.613121 #(0.000000 0.028974 0.530453 0.496128 -0.475742 -0.580534 0.104588 -0.512201 1.433649 1.841085 0.741103 -0.058374 0.252301 -0.295482)
)
-;;; 15 all -------------------------------------------------------------------------------- ; sqrt 3.8729
-#(15 4.4060654286219 #(0 1 0 1 0 1 1 1 1 1 0 1 1 0 0) ; sqrt 3.87298 (3.8729833462074)
+;;; 15 all -------------------------------------------------------------------------------- ; 3.8729
+#(15 4.4060654286219 #(0 1 0 1 0 1 1 1 1 1 0 1 1 0 0) ; 3.87298 (3.8729833462074)
- 3.8280912 #(0.000000 1.291329 1.191272 0.601514 0.260378 0.201206 0.939117 1.629230 -0.151581 0.978580 -0.006025 1.462117 -1.984689 1.582123 -0.088546)
- 3.769495 #(0.000000 0.861926 1.067568 1.645641 0.268524 0.280775 1.730448 1.041614 0.987977 -0.028569 1.083835 1.649360 1.178871 1.627637 1.378714)
3.769174 #(0.000000 0.861484 1.066267 1.645788 0.266828 0.280266 1.728769 1.041069 0.986580 -0.030711 1.080503 1.645587 1.174768 1.625077 1.375877)
+ 3.768991 #(0.000000 0.863434 1.069349 1.651266 0.272078 0.287377 1.735528 1.050008 0.997192 -0.020076 1.092043 1.658049 1.188297 1.641481 1.391589)
)
;;; 16 all --------------------------------------------------------------------------------
@@ -216,56 +219,53 @@
4.5445760745314 #(0 1 1 0 1 0 1 0 0 0 1 1 0 0 0 0)
3.880044 #(0.000000 1.305525 1.470275 0.177035 0.840097 1.175803 -0.045240 1.607574 1.078362 0.676837 1.296177 0.358482 1.543390 0.161953 0.029701 -1.946850)
- 3.875530 #(0.000000 0.733351 0.683888 1.199502 1.638047 1.284172 -0.000926 1.476713 0.537863 0.218346 -0.150830 -0.097782 1.334454 1.641338 0.263386 1.433437)
3.875293 #(0.000000 0.731415 0.678125 1.193317 1.630455 1.274923 -0.010275 1.463125 0.520861 0.201904 -0.170540 -0.119593 1.314021 1.618273 0.238721 1.406287)
+ 3.875080 #(0.000000 0.730612 0.678979 1.195144 1.632126 1.276744 -0.008560 1.467028 0.525375 0.204869 -0.166129 -0.115302 1.317856 1.622654 0.244306 1.412402)
)
-;;; 17 all -------------------------------------------------------------------------------- ; sqrt 4.1231
+;;; 17 all -------------------------------------------------------------------------------- ; 4.1231
#(17 4.7478643837553 #(0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 1)
4.7478643837553 #(0 1 0 1 0 0 0 0 0 1 0 1 1 0 0 1 1)
4.7654988506492 #(0 0 0 0 1 1 0 1 0 0 1 1 1 0 1 1 1)
4.7654988506492 #(0 1 0 1 1 0 0 0 0 1 1 0 1 1 1 0 1)
- 4.042218 #(0.000000 1.195245 1.847767 0.807893 1.771163 0.686263 0.384018 0.222746 0.065845 0.751171 0.175055 0.107773 0.968939 1.308336 1.526357 0.336423 0.094154)
- 4.029589 #(0.000000 1.390548 0.919347 1.765666 1.162578 0.778237 1.059194 0.502728 0.167163 0.780385 1.497520 0.340206 0.770821 0.381212 0.966250 1.199209 1.322634)
- 4.015903 #(0.000000 1.472953 1.050428 -0.098048 1.371548 0.999528 1.282472 0.734092 0.410222 1.106631 1.854737 0.687918 1.213088 0.819009 1.474174 -0.301826 -0.112172)
4.014837 #(0.000000 1.466046 1.041812 -0.108499 1.356223 0.981589 1.262667 0.715209 0.388569 1.081759 1.825430 0.656039 1.178209 0.785251 1.435495 -0.342701 -0.159210)
+ 4.009869 #(0.000000 1.659692 0.153864 0.208373 0.465377 0.801497 0.333865 -0.306619 0.133983 0.553164 0.090623 1.393118 -0.083771 1.035016 -1.047840 0.020577 0.849233)
+ 3.981459 #(0.000000 0.520484 1.429480 0.505816 -0.891395 0.114390 0.146335 0.416197 0.938893 0.898753 0.507264 0.650687 -0.081499 -0.607990 0.213218 -0.096782 -0.652476)
)
-;;; 18 all -------------------------------------------------------------------------------- ; sqrt 4.24264
+;;; 18 all -------------------------------------------------------------------------------- ; 4.24264
#(18 4.9109328272248 #(0 0 0 1 1 0 1 1 1 1 0 1 1 1 0 1 0 0)
4.8247395547715 #(0 0 0 1 1 1 1 1 1 0 1 1 0 0 1 0 1 0)
4.795 #(0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 1 0)
- 4.181072 #(0.000000 0.733865 1.755150 -0.039048 1.400407 1.137000 -0.062504 1.403348 1.122213 0.924200 1.871024 0.635965 1.614137 1.365947 1.630714 0.017679 0.536900 0.251135)
4.160068 #(0.000000 1.247966 0.634845 0.085105 1.281747 1.591288 0.560708 1.554818 0.532041 1.253325 0.973787 0.305025 0.369962 0.426191 -0.060193 0.478556 0.689072 1.025864)
- 4.150462 #(0.000000 0.777321 1.404366 -0.043198 0.769941 0.466152 1.514196 0.523353 1.553476 0.862607 1.129321 1.812862 1.761708 1.705176 0.205170 1.664986 1.475778 1.158308)
4.149424 #(0.000000 0.783719 1.424772 -0.028969 0.797469 0.495441 1.555906 0.574291 1.602121 0.919568 1.186181 1.878000 1.832983 1.781966 0.287268 1.741363 1.571076 1.265215)
+ 4.145376 #(0.000000 0.815970 1.442468 0.022437 0.838057 0.561089 1.647234 0.678944 1.711039 1.021597 1.327383 0.016884 -0.030470 1.937927 0.480054 1.947188 1.779952 1.482341)
)
-;;; 19 all -------------------------------------------------------------------------------- ; sqrt 4.35889
+;;; 19 all -------------------------------------------------------------------------------- ; 4.35889
#(19 5.0964118877766 #(0 0 0 0 1 1 0 1 0 0 1 0 0 0 1 0 0 0 1)
5.0269187181249 #(0 1 0 1 0 1 0 0 0 0 0 1 1 1 0 0 1 1 0)
5.0140104455275 #(0 0 1 0 0 0 1 1 1 0 0 0 0 0 1 0 0 1 0)
4.957 #(0 1 0 0 1 1 1 1 1 1 0 0 1 1 1 0 1 0 1)
- 4.272792 #(0.000000 0.528850 1.104907 0.786742 1.698800 1.643330 0.403916 0.572722 1.831151 0.901802 0.711706 1.370304 0.255803 1.697269 1.579317 1.383837 1.486610 0.855160 1.543014)
- 4.260106 #(0.000000 0.961219 1.099312 1.848880 0.351850 0.549657 1.482065 1.308906 1.011054 0.314966 0.428754 0.990081 0.706571 0.663011 1.120253 0.451523 1.315927 0.139312 1.618362)
- 4.258057 #(0.000000 0.958086 1.084318 1.834627 0.329785 0.519089 1.461596 1.274600 0.982620 0.280756 0.390832 0.938300 0.648929 0.608041 1.057741 0.397793 1.238085 0.075732 1.539104)
+ 4.256823 #(0.000000 0.950552 1.078946 1.827333 0.322429 0.515165 1.448194 1.262486 0.963019 0.265994 0.371763 0.920917 0.630954 0.586208 1.035067 0.365945 1.213903 0.045859 1.507359)
+ 4.236757 #(0.000000 1.035424 1.317375 0.882321 0.748630 1.392844 1.209695 0.917957 1.063517 0.320073 1.579879 0.456384 1.606003 -0.204593 -1.100470 0.700110 1.199787 1.220259 -0.044138)
+ 4.223666 #(0.000000 0.962025 0.721631 1.138738 1.342295 0.675056 0.848936 1.157044 1.060853 -0.213787 0.531124 1.684505 0.561245 0.375645 1.309393 -0.531388 0.959835 0.983902 0.285296)
)
-;;; 20 all -------------------------------------------------------------------------------- ; sqrt 4.4721
+;;; 20 all -------------------------------------------------------------------------------- ; 4.4721
#(20 5.2602326468873 #(0 1 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 1 1)
5.2536671092168 #(0 1 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 1 0 1)
5.2516581503036 #(0 1 0 0 1 0 0 0 0 0 0 1 0 1 1 1 0 0 0 1)
5.2027356749364 #(0 1 1 0 0 0 0 0 0 1 1 1 0 0 1 0 1 0 0 0)
5.202707605727 #(0 0 0 0 1 1 0 1 0 0 1 0 1 1 1 0 1 1 1 0)
- 4.291914 #(0.000000 1.278963 1.458110 -0.186845 1.843940 0.268499 0.191579 -0.056514 0.849960 1.189465 -0.002184 0.349397 1.688503 1.466393 1.246095 -0.043687 1.176611 0.594044 1.175961 0.357275)
4.290058 #(0.000000 1.287568 1.468290 -0.170532 1.858695 0.280488 0.217365 -0.031942 0.876344 1.219692 0.026561 0.381289 1.735799 1.508060 1.291588 0.006572 1.225731 0.645841 1.236621 0.419452)
)
-;;; 21 all -------------------------------------------------------------------------------- ; sqrt 4.5825
+;;; 21 all -------------------------------------------------------------------------------- ; 4.5825
#(21 5.3651112556805 #(0 1 1 0 1 1 1 1 0 1 1 1 1 0 0 0 1 0 1 1 1)
5.3503630356826 #(0 1 0 1 1 1 1 1 1 1 0 1 0 0 1 1 0 0 1 1 1)
5.3430035169068 #(0 1 1 1 1 1 0 1 1 0 0 0 0 1 0 1 1 0 0 0 1)
@@ -273,133 +273,123 @@
5.3164971341632 #(0 1 0 0 0 0 1 0 1 0 0 0 1 1 1 0 0 1 0 0 0)
5.3164971341632 #(0 0 0 1 0 1 1 1 1 1 0 1 1 0 1 1 0 0 0 1 0)
- 4.485600 #(0.000000 1.412468 1.238450 1.306053 0.014744 1.434528 -0.196242 1.568079 0.187098 1.087114 0.355322 1.827294 1.076449 1.029957 1.575882 0.586560 0.655056 0.355723 0.777743 1.654925 -0.021796)
- 4.484937 #(0.000000 1.402384 1.230867 1.290204 -0.003022 1.416891 -0.218303 1.545732 0.161701 1.054870 0.322557 1.792234 1.036702 0.984860 1.529955 0.537863 0.600903 0.301795 0.717718 1.593597 -0.087374)
+ 4.484397 #(0.000000 1.399581 1.230490 1.289720 -0.005391 1.417174 -0.222099 1.544621 0.160786 1.057475 0.320522 1.788712 1.040114 0.988797 1.529192 0.536731 0.600787 0.298519 0.720851 1.592406 -0.083584)
)
-;;; 22 all -------------------------------------------------------------------------------- ; sqrt 4.6904
+;;; 22 all -------------------------------------------------------------------------------- ; 4.6904
#(22 5.3384906472168 #(0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1)
5.3118962410791 #(0 1 1 1 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 1 1 0)
5.29249935509144 #(0 1 1 0 1 1 0 0 1 1 1 0 0 1 0 1 0 1 1 1 1 1)
5.292244006282 #(0 0 1 1 1 0 0 1 1 0 1 1 0 0 0 0 0 0 1 0 1 0)
4.622803 #(0.000000 1.340373 0.970954 1.002159 0.880275 1.416080 1.819200 1.007752 0.255081 0.347189 0.600359 0.574629 0.015990 0.999438 1.635477 0.619917 0.631959 1.121023 0.599154 1.883352 0.740818 1.129065)
- 4.591982 #(0.000000 -0.086851 1.094579 0.612847 -0.225564 1.052241 0.748697 1.954229 0.023159 0.332205 1.213921 1.064392 1.125288 1.130676 1.516743 0.987296 0.975094 1.525802 0.462206 1.659880 0.468915 1.177291)
- 4.589375 #(0.000000 -0.097982 1.079679 0.592460 -0.252060 1.024157 0.715879 1.899053 -0.018225 0.279558 1.164196 0.995806 1.055719 1.060850 1.435831 0.911000 0.886392 1.423440 0.362120 1.556858 0.344089 1.061499)
+ 4.588140 #(0.000000 -0.096778 1.080722 0.593207 -0.254680 1.023732 0.716557 1.901465 -0.019583 0.278478 1.160188 0.996330 1.054608 1.061984 1.434750 0.905801 0.882108 1.425520 0.362314 1.555862 0.347441 1.064021)
)
-;;; 23 all -------------------------------------------------------------------------------- ; sqrt 4.7958
+;;; 23 all -------------------------------------------------------------------------------- ; 4.7958
#(23 5.5572876930237 #(0 0 1 0 0 0 1 1 1 1 0 1 1 0 0 0 0 1 0 1 0 0 0)
5.35928895203514 #(0 1 1 0 0 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1)
5.3592889520338 #(0 0 1 1 0 1 1 0 0 1 1 1 1 0 0 1 0 1 0 1 1 1 1)
- 4.609257 #(0.000000 0.683790 -0.218260 0.258830 1.210541 0.912420 0.179334 1.479903 1.362790 0.840577 0.351780 0.586844 0.573904 -0.010458 1.066028 1.677523 1.558633 0.034291 0.269662 1.327649 0.058439 -0.100067 0.164256)
- 4.608149 #(0.000000 0.689843 -0.224641 0.265935 1.214418 0.913144 0.193912 1.490677 1.369870 0.847986 0.364508 0.590297 0.587196 0.001665 1.086259 1.701757 1.576597 0.043191 0.292943 1.341607 0.077448 -0.073340 0.199292)
+ 4.607681 #(0.000000 0.689399 -0.223358 0.265838 1.213936 0.913933 0.191373 1.489050 1.370717 0.847890 0.362722 0.592331 0.586381 0.000455 1.084840 1.698411 1.578127 0.043618 0.291463 1.342365 0.078224 -0.076344 0.195753)
)
-;;; 24 all -------------------------------------------------------------------------------- ; sqrt 4.89897
+;;; 24 all -------------------------------------------------------------------------------- ; 4.89897
#(24 5.7082858085632 #(0 1 1 0 0 1 1 1 0 0 1 1 1 1 0 0 0 0 0 0 1 0 1 0)
5.6697635650635 #(0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 0 0 1 0 0 1 0 1 0)
5.6446962356567 #(0 1 1 0 0 1 1 0 0 0 1 1 1 0 1 0 1 1 0 1 0 0 0 0)
5.635 #(0 1 0 0 0 0 1 0 0 1 0 0 1 1 1 0 1 0 1 0 0 0 1 1)
5.6358969066981 #(0 0 0 1 0 1 1 1 0 0 0 1 1 0 1 1 1 1 1 1 0 1 1 0)
- 4.898310 #(0.000000 0.289908 1.243053 1.316260 0.981048 -0.015828 0.087983 -0.141851 0.850507 1.125166 0.207133 1.191771 1.184999 -0.031777 0.021164 1.511848 0.441664 1.474001 0.734003 0.462184 0.869525 0.377835 0.501468 0.555313)
- 4.735282 #(0.000000 1.860446 1.355913 1.308197 0.314230 0.372191 -0.002124 0.284243 1.155531 1.745749 0.314969 1.070871 0.971036 0.707571 0.167370 0.796337 0.739824 0.382519 1.452081 0.500769 1.698554 0.347264 0.170862 0.768082)
- 4.731118 #(0.000000 1.860803 1.366994 1.302335 0.302699 0.363228 -0.013684 0.289220 1.148967 1.728710 0.307024 1.053479 0.954906 0.686881 0.150335 0.765348 0.723320 0.355984 1.444753 0.472575 1.675484 0.332398 0.142782 0.753292)
+ 4.730847 #(0.000000 1.860054 1.365565 1.300661 0.304467 0.364421 -0.013175 0.287107 1.148150 1.732528 0.305694 1.054141 0.959139 0.689514 0.150812 0.767232 0.724213 0.359240 1.442900 0.475499 1.678401 0.330818 0.144568 0.751992)
)
-;;; 25 all -------------------------------------------------------------------------------- ; sqrt 5
+;;; 25 all -------------------------------------------------------------------------------- ; 5
#(25 5.7284736633301 #(0 1 0 0 1 1 0 1 1 0 1 0 1 0 1 1 0 0 1 1 1 0 0 0 0)
5.7190117835999 #(0 0 1 1 0 1 0 0 1 1 1 0 1 1 1 1 1 1 1 0 0 0 1 0 1)
5.6488965032573 #(0 0 0 0 1 1 1 0 0 1 1 0 1 1 0 1 1 1 1 0 1 0 1 0 0)
5.6488965032573 #(0 1 0 1 1 0 1 1 0 0 1 1 1 0 0 0 1 0 1 1 1 1 1 1 0)
- 4.948398 #(0.000000 1.686765 1.762710 1.532195 0.085851 0.266079 1.489375 0.115086 0.757502 0.552909 0.292603 1.861685 0.311415 1.400027 1.667706 1.732975 1.674925 0.489022 0.298773 1.259968 1.553419 0.784088 1.716599 1.134221 0.281750)
- 4.948133 #(0.000000 1.017449 0.206814 1.069041 1.478866 -0.395547 1.342461 -0.005382 1.343012 1.463276 1.395370 1.627041 1.911452 0.743332 0.784726 1.590023 0.492977 1.010516 1.941282 1.678821 0.191562 1.647820 0.872032 0.853004 0.403096)
- 4.926905 #(0.000000 0.355954 1.212496 1.402938 1.466374 1.630894 0.210471 1.061533 1.091242 1.129379 0.833926 0.982335 1.701199 0.187178 1.388909 1.608424 1.095499 0.130794 0.020607 1.528740 0.434794 0.092721 1.110061 -0.157890 1.038455)
- 4.860159 #(0.000000 0.215381 1.722795 0.455839 0.004999 -0.005491 0.444508 0.843580 0.582040 0.648795 0.043757 0.798792 0.543508 -0.115202 -0.129954 1.705960 0.537850 0.862363 1.349256 0.623963 1.811154 1.295841 1.721108 0.604714 0.953494)
- 4.856362 #(0.000000 0.230036 1.725153 0.447762 0.013002 0.016044 0.461468 0.868860 0.607444 0.653202 0.059932 0.825768 0.573597 -0.080633 -0.112667 1.738272 0.573805 0.891315 1.385491 0.664318 1.843610 1.337275 1.773442 0.651588 1.001993)
+ 4.855641 #(0.000000 0.229926 1.726904 0.449778 0.015484 0.016859 0.462379 0.871412 0.609322 0.654662 0.062760 0.825989 0.576895 -0.081196 -0.112104 1.739215 0.575276 0.891044 1.388407 0.667892 1.843741 1.342090 1.776343 0.652054 1.004535)
)
-;;; 26 all -------------------------------------------------------------------------------- ; sqrt 5.0990
+;;; 26 all -------------------------------------------------------------------------------- ; 5.0990
#(26 5.8922033309937 #(0 1 0 1 0 0 1 0 0 1 1 0 1 1 1 1 1 1 1 0 0 0 1 1 1 0)
5.8206262588501 #(0 1 1 0 1 0 0 1 1 0 1 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0)
5.78661186695166 #(0 0 0 1 1 0 0 0 1 1 0 1 0 1 0 1 1 1 1 1 0 0 1 0 0 1)
5.7865648269653 #(0 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0)
- 5.110649 #(0.000000 0.774777 0.723600 0.351434 0.506245 1.753401 -0.041710 0.654578 0.924416 0.592060 0.124977 1.725460 0.568638 0.292303 -0.029411 0.650921 1.229026 1.335950 1.218484 1.435408 0.895624 1.655178 0.450508 1.542149 0.782878 -0.005138)
5.023346 #(0.000000 0.471497 0.419434 0.860585 1.369474 -0.146335 1.642121 0.161223 1.825222 0.594228 1.689539 0.413066 1.098262 1.472516 1.249094 1.170567 0.839656 0.942436 0.149512 -0.243079 1.269486 1.068124 -0.150509 1.648862 0.945727 1.703664)
+ 5.008256 #(0.000000 0.356007 0.611393 0.800030 0.608139 -0.552559 0.276762 0.954695 0.541230 0.391873 0.749201 -0.287679 0.663114 1.822966 -0.042535 -0.215786 1.534399 0.896769 0.284021 0.968921 0.944615 0.005656 -0.473527 0.937503 1.376587 0.108845)
)
-;;; 27 all -------------------------------------------------------------------------------- ; sqrt 5.1961
+;;; 27 all -------------------------------------------------------------------------------- ; 5.1961
#(27 5.980658531189 #(0 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 1 0 0 0 0 0 1 1)
5.8753982451551 #(0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 1 0 0 1 0 0 0)
5.8753981590271 #(0 1 1 0 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 1 0)
- 5.198693 #(0.000000 1.168670 0.246753 0.527351 1.555827 0.930074 0.702478 1.853770 0.731175 -0.145926 0.842011 0.634271 1.628409 1.399866 1.392022 1.357129 0.254987 0.567359 0.102270 0.542512 1.655944 1.537226 -0.001419 0.809036 1.555787 1.627118 1.879787)
- 5.068135 #(0.000000 1.185482 1.016158 -0.035766 0.953478 0.742295 0.052694 -0.006929 1.591866 1.830689 1.923034 0.831178 0.494103 0.820919 0.580187 1.305243 0.822823 0.202048 0.447301 0.870280 1.164388 0.323407 0.501566 -0.073732 0.819627 1.665527 0.416545)
+ 5.066453 #(0.000000 1.180887 1.012981 -0.037241 0.953126 0.743204 0.046304 -0.010627 1.594368 1.830120 1.926912 0.836044 0.497153 0.820806 0.580883 1.308790 0.813677 0.203614 0.448890 0.870192 1.163708 0.319673 0.498880 -0.075386 0.820143 1.666968 0.421343)
)
-;;; 28 all -------------------------------------------------------------------------------- ; sqrt 5.2915
+;;; 28 all -------------------------------------------------------------------------------- ; 5.2915
#(28 6.1332263946533 #(0 0 1 0 0 0 0 1 1 0 1 0 1 1 1 1 1 0 0 1 0 0 1 1 1 0 1 0)
6.107029914856 #(0 0 0 1 1 0 1 1 0 1 0 0 1 0 0 0 1 1 1 1 1 1 0 1 1 1 0 1)
6.0962085723877 #(0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 0 0 1 0 0 0 1 0 1 0 0 1 0)
6.0962085723877 #(0 1 0 1 0 1 1 0 1 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 1 1 1)
- 5.242161 #(0.000000 0.825023 1.444075 1.501611 1.384068 0.222730 1.668253 0.289740 1.159852 1.612884 0.852066 0.907506 1.309912 1.884505 1.822488 1.726767 1.187679 1.303657 1.712545 0.683164 -0.154057 0.680605 0.562844 0.693056 0.072366 1.543048 0.663342 0.417165)
+ 5.201582 #(0.000000 -0.594236 0.471372 -0.239106 0.026372 1.367317 -1.367383 0.475651 -0.077031 -1.126466 0.500322 -0.840077 0.289150 0.017573 1.087716 1.066819 1.177512 0.077022 0.675500 0.393911 1.002792 0.832733 0.902383 1.149342 0.256199 0.532177 1.776896 0.135269)
+ 5.161016 #(0.000000 0.609398 -0.031546 0.163654 1.750544 0.009072 1.168722 1.319687 0.754527 1.449905 0.404768 1.387397 -0.443377 1.700390 0.448442 1.105795 0.302344 0.108046 0.813277 -1.223453 0.735575 -0.228080 1.376959 0.772459 0.355021 0.857861 0.747767 -0.540969)
)
-;;; 29 all -------------------------------------------------------------------------------- ; sqrt 5.38516
+;;; 29 all -------------------------------------------------------------------------------- ; 5.38516
#(29 6.2162199020386 #(0 0 0 0 1 1 1 1 1 0 0 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0)
6.2025485038757 #(0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 0 1 1 0 0 0 1)
6.1994609975558 #(0 0 1 0 1 0 1 1 1 0 0 0 0 1 1 1 1 1 0 1 1 1 0 0 1 0 0 1 0)
6.168496131897 #(0 0 1 1 1 0 0 1 1 1 1 0 1 0 1 0 1 1 0 0 1 0 0 1 1 1 1 1 1)
6.168496131897 #(0 1 1 0 1 1 0 0 1 0 1 1 1 1 1 1 1 0 0 1 1 1 0 0 1 0 1 0 1)
- 5.335399 #(0.000000 1.166831 1.326181 0.919326 0.904875 0.391920 0.155640 -0.046408 1.779143 0.349492 0.995949 1.657018 0.720402 1.387534 1.260805 0.099824 1.772823 0.827227 1.512989 0.623469 0.428224 0.975285 0.951945 0.774234 -0.049109 0.844150 0.853893 0.775309 1.317984)
- 5.245922 #(0.000000 1.424864 1.435248 0.953536 0.878604 1.948240 1.593568 0.964819 0.950878 1.429890 0.788122 0.554465 0.403558 0.816339 1.604860 0.137260 0.932482 1.346779 1.047273 1.284962 1.351276 1.754640 1.787147 0.783064 0.063586 1.165307 0.333030 1.135678 1.873234)
+ 5.244731 #(0.000000 1.423197 1.434334 0.954277 0.877662 1.948724 1.591838 0.966340 0.952717 1.429672 0.787029 0.555356 0.405697 0.817643 1.603999 0.138279 0.926533 1.343354 1.048968 1.281826 1.347978 1.753988 1.784362 0.779861 0.066133 1.166301 0.329314 1.131806 1.874060)
)
-;;; 30 all -------------------------------------------------------------------------------- ; sqrt 5.4772
+;;; 30 all -------------------------------------------------------------------------------- ; 5.4772
#(30 6.3668465614319 #(0 0 1 0 0 1 0 0 1 0 0 1 1 1 0 0 1 1 1 1 1 1 0 1 0 1 0 1 1 1)
6.3080444335938 #(0 0 1 1 0 0 1 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 1 1 1 1 0 1 0 1)
6.2868418693542 #(0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 1 0 1 0 0 1 1 0 0 0 1 0 1 1 1)
6.257221698761 #(0 1 0 1 1 1 1 0 0 1 0 0 0 1 1 0 0 1 1 0 1 0 0 1 1 1 1 1 0 1)
- 5.398747 #(0.000000 1.521428 0.226115 0.283911 1.354780 1.625400 0.459241 1.770812 0.586042 1.023468 -0.039564 -0.109925 0.223410 1.919160 0.194363 0.018657 0.663362 1.057386 0.748288 1.603286 0.771028 0.532151 1.821844 0.479457 1.529963 0.994013 0.355801 0.308791 1.777411 -0.099097)
+ 5.396180 #(0.000000 1.520615 0.225616 0.287942 1.352721 1.627968 0.463888 1.771367 0.587849 1.027773 -0.033501 -0.102620 0.226920 1.922043 0.200259 0.023109 0.666954 1.058135 0.756098 1.607795 0.775242 0.535327 1.831042 0.484415 1.540370 1.001150 0.363611 0.315720 1.783111 -0.093791)
+ 5.366694 #(0.000000 1.367293 0.678335 1.056059 -0.506652 0.354228 0.103786 0.546097 0.755979 0.321279 -0.471933 -0.199299 0.505109 0.194951 -0.044195 1.645993 0.866175 1.019312 1.251553 0.153557 0.520073 -0.271182 0.225402 -0.451939 0.517701 0.215495 0.989027 0.341703 0.791872 0.749094)
)
-;;; 31 all -------------------------------------------------------------------------------- ; sqrt 5.56776
+;;; 31 all -------------------------------------------------------------------------------- ; 5.56776
#(31 6.4472563825087 #(0 0 0 0 1 1 1 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 0 1 0 1 1 0 1 1 1)
6.3776631355286 #(0 1 0 1 0 0 0 0 1 0 1 0 0 0 1 1 1 0 1 1 1 1 0 0 1 0 0 1 1 1 1)
6.3353910446167 #(0 1 0 0 1 1 0 1 1 0 0 0 0 0 0 1 1 1 1 0 0 1 1 1 0 0 1 0 1 0 1)
6.3243918418884 #(0 0 1 1 1 1 0 1 1 1 0 0 1 0 1 1 0 1 1 0 1 1 1 0 0 0 1 0 1 1 1)
- 5.485430 #(0.000000 1.718165 0.728213 1.286359 -0.004595 1.143596 1.649384 0.830722 0.858916 0.362509 -0.009819 1.506755 0.905334 0.999701 1.675416 0.520418 0.550721 0.646093 1.646489 0.937651 0.006881 1.738678 0.425920 1.627434 0.681906 0.801137 1.142399 1.157692 0.687687 1.100679 1.182165)
+ 5.483548 #(0.000000 1.716513 0.734155 1.284407 0.002926 1.138357 1.651222 0.840380 0.862951 0.362868 -0.011541 1.508984 0.900956 1.004294 1.662373 0.522900 0.542553 0.647212 1.649604 0.938574 0.006447 1.743627 0.420681 1.628282 0.676409 0.803864 1.141938 1.155986 0.676801 1.099313 1.174563)
)
-;;; 32 all -------------------------------------------------------------------------------- ; sqrt 5.65685
+;;; 32 all -------------------------------------------------------------------------------- ; 5.65685
#(32 6.5261273384094 #(0 0 0 1 1 1 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0)
6.4710988998413 #(0 0 0 1 0 0 1 1 0 1 1 1 1 0 0 0 1 1 1 0 0 1 0 0 1 0 1 0 1 0 0 0)
6.4692246308309 #(0 0 1 1 0 1 0 1 0 0 1 1 1 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0)
6.4519599479542 #(0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 1 0 0 1 1 1 0 0 0 1 0 0 1 1)
6.4451498985291 #(0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 1 1 0 1 1 0 0 0 1 1 1 0 1 0)
- 5.651906 #(0.000000 1.406861 1.718396 0.095829 0.042486 0.036663 1.624234 1.050334 0.888959 0.603272 0.814136 1.450600 0.995853 1.289701 0.354180 0.750872 0.684781 0.539118 1.333288 0.156949 1.147049 0.722982 1.640783 0.526025 1.015492 0.937127 1.886652 0.044300 0.973937 0.157497 1.368313 1.138888)
- 5.530750 #(0.000000 -0.352601 1.298866 -0.246226 0.377204 0.343588 0.385759 0.119523 0.154386 1.352548 0.236343 0.277403 0.138477 1.317633 1.715585 1.191246 1.730009 1.633846 0.446737 0.657600 0.931336 0.321774 1.903459 1.323436 0.492795 1.393481 1.744032 0.383402 0.705428 0.070220 0.826085 -0.021017)
+ 5.529767 #(0.000000 -0.357496 1.295472 -0.244166 0.378862 0.343677 0.387655 0.125795 0.157477 1.354195 0.239429 0.278240 0.142338 1.318038 1.716131 1.194338 1.731815 1.633958 0.445551 0.658322 0.932928 0.324708 1.907298 1.327700 0.501470 1.391423 1.750708 0.386360 0.706755 0.076956 0.832906 -0.015253)
)
-;;; 33 all -------------------------------------------------------------------------------- ; sqrt 5.74456
+;;; 33 all -------------------------------------------------------------------------------- ; 5.74456
#(33 6.678719997406 #(0 0 0 1 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1 1 0 1 0 1 0 0)
6.6342549324036 #(0 0 1 1 0 1 1 0 0 1 1 0 0 0 1 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1)
6.6147227287292 #(0 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 0 0)
6.5579299926758 #(0 1 1 0 1 1 0 1 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0)
- 5.637427 #(0.000000 0.099912 0.534504 0.846470 0.659842 0.825482 1.906874 0.030344 0.158213 0.330329 1.408723 -0.017506 0.935843 1.253317 0.374591 0.650171 -0.059219 1.844442 0.441461 0.248480 0.777899 0.462692 -0.166931 0.929719 0.596411 1.312246 1.696927 1.199980 0.255010 1.260835 1.685785 1.107417 0.567245)
+ 5.635107 #(0.000000 0.096917 0.534048 0.844232 0.664210 0.830370 1.909422 0.035015 0.156012 0.327754 1.408862 -0.022849 0.930596 1.245585 0.370155 0.652349 -0.062548 1.851506 0.444607 0.245493 0.778912 0.461144 -0.163445 0.929749 0.597185 1.314796 1.697920 1.195133 0.256759 1.266343 1.688596 1.108980 0.567202)
)
-;;; 34 all -------------------------------------------------------------------------------- ; sqrt 5.8309518
+;;; 34 all -------------------------------------------------------------------------------- ; 5.8309518
#(34 6.7310481071472 #(0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 1 0 1 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0)
6.7281470298767 #(0 1 0 0 0 1 0 1 0 0 1 1 0 1 1 1 1 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0)
6.7141165733337 #(0 1 1 1 0 0 1 0 0 0 1 1 0 1 1 0 1 0 0 1 1 1 0 0 0 1 0 1 0 0 0 0 0 0)
@@ -407,21 +397,20 @@
6.6788883209229 #(0 0 1 0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 1 1 0 1 1 1 1 0 0 1 1 1 1 0 1 0)
6.6782836914062 #(0 0 1 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 1 1 0 0 0 1 1 1 1 1 1 0 1 0 0 0)
- 5.725377 #(0.000000 1.535347 0.233968 0.275962 1.097380 0.280152 0.878634 1.493819 1.517912 0.757045 1.652732 0.033716 1.228933 0.198197 1.325326 0.725096 0.786769 1.816075 1.111363 1.452379 1.065469 0.666849 1.725288 1.389428 -0.523789 1.353963 1.538458 1.487603 0.636885 0.679697 0.890896 -0.130950 -0.014975 0.551402)
+ 5.721275 #(0.000000 1.537213 0.239671 0.278042 1.094883 0.274881 0.871861 1.496857 1.521795 0.761213 1.656084 0.025131 1.235452 0.206266 1.321622 0.722819 0.794646 1.810454 1.109962 1.456186 1.070438 0.656560 1.724659 1.407688 -0.522881 1.349622 1.540863 1.488043 0.627895 0.673112 0.878488 -0.129260 -0.021006 0.554817)
)
-;;; 35 all -------------------------------------------------------------------------------- ; sqrt 5.9160
+;;; 35 all -------------------------------------------------------------------------------- ; 5.9160
#(35 6.8652677536011 #(0 1 1 0 1 1 0 0 0 1 0 1 0 1 1 0 0 0 1 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 0)
6.8216953277588 #(0 0 1 0 0 1 1 0 1 1 0 1 0 0 1 0 1 0 1 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0)
6.7839112281799 #(0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 1 0 1 1 0 1 0 1 0 0 0)
6.7759642601013 #(0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 1 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0)
6.7637429237366 #(0 1 1 0 1 1 1 1 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0)
- 5.946662 #(0.000000 0.493254 1.581728 1.241056 0.206479 0.577842 0.313268 0.849444 1.273433 1.408925 0.356668 1.054844 0.950274 1.763185 1.230410 1.551386 1.610206 0.260692 0.196905 1.196274 0.621434 -0.069557 1.243162 1.365265 0.741193 -0.151205 0.317827 1.506730 -0.053577 1.044484 1.384738 1.412282 1.296086 1.194698 0.781853)
- 5.771837 #(0.000000 0.102501 1.404047 0.820072 1.455765 0.155198 1.617214 1.532547 1.546763 0.871971 1.320274 1.298048 1.415596 0.138617 1.059726 0.648271 1.388867 1.070574 0.136528 0.361049 1.849929 1.482549 0.789255 1.753935 0.987334 1.204571 0.200984 -0.165955 0.162948 -0.016254 0.358513 0.680559 1.628783 0.567086 0.905384)
+ 5.769511 #(0.000000 0.102697 1.401830 0.818397 1.461851 0.154032 1.618494 1.534460 1.543814 0.875127 1.319240 1.294792 1.413591 0.147300 1.056367 0.647379 1.391041 1.070554 0.137544 0.362172 1.848827 1.486280 0.790850 1.754258 0.990175 1.205429 0.198438 -0.165833 0.163564 -0.016866 0.359072 0.684081 1.633963 0.564667 0.903834)
)
-;;; 36 all -------------------------------------------------------------------------------- ; sqrt 6
+;;; 36 all -------------------------------------------------------------------------------- ; 6
#(36 6.9388113021851 #(0 1 1 1 1 0 0 1 1 1 1 1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0)
6.934184551239 #(0 1 0 1 0 0 1 0 0 1 1 1 0 1 1 0 1 1 1 1 1 0 1 0 0 1 1 1 1 0 0 1 1 0 0 0)
6.9237461090088 #(0 0 1 1 1 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0)
@@ -429,11 +418,10 @@
6.8763957023621 #(0 0 1 1 0 1 1 1 0 0 0 0 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 0 1 0 0 0 0 1 0 0)
6.8008880615234 #(0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0 0 1)
- 6.079976 #(0.000000 0.485646 1.596985 0.466616 0.896554 0.427555 0.820635 0.284672 0.253614 0.673322 1.121298 0.382951 1.301510 -0.091582 0.212857 1.860640 1.133192 1.529859 1.848028 1.704717 0.074358 0.632735 1.414172 0.573290 0.517663 0.674529 1.705508 1.776694 1.317631 0.677628 0.049721 1.148240 0.581401 0.940173 0.624068 1.824362)
- 5.936558 #(0.000000 1.020395 0.682061 0.145229 0.936788 0.775393 0.195826 1.860839 0.767169 0.244951 0.278596 0.168966 1.558929 0.003039 0.286915 1.675604 -0.339460 0.598693 0.950862 0.837159 0.055729 -0.084756 0.242305 1.358195 0.991537 0.180500 0.580730 0.700878 1.012271 0.841627 1.167590 1.691917 0.648370 1.730781 0.457346 1.445741)
+ 5.931449 #(0.000000 1.020268 0.677676 0.141480 0.933164 0.775943 0.190974 1.852375 0.763224 0.240685 0.277882 0.163474 1.552588 0.007697 0.283092 1.674709 -0.345165 0.591058 0.945716 0.824253 0.043245 -0.089554 0.231180 1.353274 0.983801 0.173104 0.583544 0.693163 1.001038 0.832122 1.162817 1.689517 0.636045 1.729156 0.451707 1.432502)
)
-;;; 37 all -------------------------------------------------------------------------------- ; sqrt 6.0827
+;;; 37 all -------------------------------------------------------------------------------- ; 6.0827
#(37 7.1209874153137 #(0 1 1 1 0 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 1 1 0 1 1 0 0 1 0 0 0 0 0)
7.1156206130981 #(0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 1 1 0 0 1 1 0 1 0 1 0 0 0 0 1 1 0 1 0 0 0)
7.1152505874634 #(0 0 1 1 0 0 0 1 0 0 0 1 1 1 1 1 1 0 0 0 1 0 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0)
@@ -443,11 +431,10 @@
7.0475845336914 #(0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 1 0 0 1 0 0)
7.0251078605652 #(0 0 0 0 1 0 0 1 0 0 1 1 1 1 1 0 0 1 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0)
- 6.197751 #(0.000000 1.767044 0.368055 1.162794 -0.018784 1.487338 1.864218 1.056062 0.424689 0.750157 0.915212 0.035334 0.265318 1.518376 0.533492 1.043268 0.567126 1.561121 1.474787 1.068744 1.236196 -0.252481 1.172124 1.252810 1.445963 0.953156 1.295904 0.219585 0.181683 0.973492 0.665016 1.635257 1.193879 0.655032 1.171858 1.766653 0.071611)
- 5.936426 #(0.000000 1.354678 1.824235 0.294749 1.759482 1.854458 1.057081 1.365747 0.285960 0.389854 1.780695 1.529523 0.432637 0.310839 -0.088431 0.220290 1.005976 1.630419 1.371842 0.730554 0.394231 1.334711 0.100045 1.911120 0.330779 0.439893 1.545537 0.668629 0.024076 0.315507 1.797184 0.446129 1.630893 1.052608 1.338027 1.425238 1.833376)
+ 5.933969 #(0.000000 1.357580 1.821190 0.294387 1.750925 1.845472 1.054143 1.356098 0.293620 0.391313 1.778601 1.534928 0.426019 0.315757 -0.095725 0.216499 0.999813 1.634650 1.366520 0.730349 0.391123 1.330014 0.106679 1.912375 0.325125 0.431168 1.541075 0.670579 0.023629 0.320519 1.802217 0.442394 1.635271 1.059117 1.341290 1.420508 1.824162)
)
-;;; 38 all -------------------------------------------------------------------------------- ; sqrt 6.1644
+;;; 38 all -------------------------------------------------------------------------------- ; 6.1644
#(38 7.1993880271912 #(0 1 0 1 1 0 1 0 0 0 0 1 0 1 1 1 0 0 0 0 1 0 1 1 1 0 1 1 1 1 1 0 0 1 1 0 0 0)
7.1926069259644 #(0 0 1 0 1 0 0 1 0 1 0 0 1 1 0 1 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0)
7.1880865097046 #(0 0 1 0 1 1 0 1 0 0 1 0 1 0 0 1 1 1 0 0 0 1 0 0 1 1 1 0 1 0 0 0 1 0 0 0 0 0)
@@ -457,10 +444,10 @@
7.1221342086792 #(0 0 1 0 1 0 1 1 0 1 0 1 0 0 1 1 1 1 1 0 0 0 1 1 1 0 1 0 1 1 0 0 1 0 0 0 0 0)
7.0688242912292 #(0 0 1 1 0 1 0 1 0 1 1 1 0 1 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 1 1 0 0 0 0)
- 6.146360 #(0.000000 0.476890 1.187281 1.426312 0.722927 0.086422 1.885059 1.426459 0.401112 0.948516 0.675027 1.706288 1.798554 0.794486 1.084932 0.150453 1.372734 0.521719 0.235591 0.815653 1.073699 1.399316 0.317186 1.597847 1.780606 1.705809 -0.484089 1.406122 1.012725 1.335872 0.538387 1.599539 0.513653 0.849289 1.369921 1.300910 0.982992 1.626754)
+ 6.141081 #(0.000000 0.476359 1.183611 1.424660 0.720669 0.084602 1.874771 1.422499 0.404825 0.949357 0.682500 1.709551 1.802453 0.795775 1.088809 0.144361 1.364027 0.520155 0.230721 0.817258 1.067794 1.407900 0.308825 1.598206 1.778867 1.700646 -0.474543 1.394960 1.012106 1.341722 0.530505 1.592235 0.510888 0.855540 1.374812 1.298891 0.989427 1.632520)
)
-;;; 39 all -------------------------------------------------------------------------------- ; sqrt 6.2449
+;;; 39 all -------------------------------------------------------------------------------- ; 6.2449
#(39 7.3091864585876 #(0 0 0 1 1 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 1 1 0 1 0 1 0 1 1 0 0 0 0)
7.2959136962891 #(0 0 0 1 1 1 1 1 0 1 1 0 0 1 1 1 1 0 0 1 0 1 0 0 1 0 1 1 1 1 0 1 0 0 0 1 0 0 0)
7.2940211296082 #(0 0 1 1 0 0 1 0 1 0 1 0 0 0 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 1 1 0 1 1 0 1 0 0 0)
@@ -470,13 +457,10 @@
7.2313327789307 #(0 1 1 1 0 1 0 1 0 1 0 0 0 1 0 0 1 1 1 1 0 0 1 1 0 1 0 1 1 0 1 0 0 0 0 1 0 0 0)
7.1506487936623 #(0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 1 0 1 1 0 0 0 1 0 1 1 0 0 0 1)
- 6.426675 #(0.000000 1.818137 1.342569 0.142832 1.026106 0.707254 -0.143789 1.634201 1.159772 0.712817 0.664790 1.509263 1.138778 0.334743 0.519331 0.912494 0.940500 1.759106 0.390588 -0.064689 -0.019349 0.549107 0.302561 1.663475 0.378628 1.471952 1.645422 1.095122 0.073958 0.511787 0.539325 0.127101 0.536831 -0.082605 0.780542 1.607220 0.655670 0.670877 0.980323)
- 6.196960 #(0.000000 0.072837 0.190837 1.648263 1.196908 0.620815 -0.072278 0.521352 0.512306 -0.079924 0.031122 0.191777 0.566249 0.992734 1.704523 1.919237 1.298553 0.078559 1.474970 1.241030 0.876610 1.524315 1.606954 1.560822 0.875927 0.074988 0.620974 1.738952 0.193633 1.355431 0.692050 0.036909 1.231952 1.521839 1.570858 0.384056 1.514890 0.127366 0.315753)
- 6.170464 #(0.000000 0.016666 0.133803 1.645154 1.153939 0.710256 -0.118273 0.522885 0.542289 -0.117196 -0.090811 0.194221 0.561387 0.961332 1.735566 1.945668 1.269822 0.023027 1.489496 1.286823 0.870180 1.572411 1.660127 1.530712 0.845768 0.160005 0.583049 1.633683 0.100508 1.413437 0.741250 -0.039585 1.252623 1.590932 1.574137 0.349963 1.524872 0.099573 0.350895)
- 6.148205 #(0.000000 0.034488 0.186322 1.633703 1.198620 0.761519 -0.125431 0.513435 0.580411 -0.106911 -0.116272 0.205469 0.602895 1.035091 1.744640 1.944779 1.272815 -0.006083 1.518655 1.184162 0.896306 1.624257 1.654680 1.488829 0.894491 0.164922 0.599104 1.532769 0.118820 1.424339 0.742485 -0.165205 1.284305 1.594496 1.565082 0.290887 1.507709 0.157444 0.442330)
+ 6.130953 #(0.000000 0.038461 0.171605 1.637522 1.177657 0.764596 -0.121999 0.532157 0.566373 -0.107168 -0.131067 0.222564 0.601164 1.033230 1.720725 1.942372 1.261330 -0.012481 1.519629 1.204483 0.906347 1.595016 1.659825 1.493185 0.901436 0.172939 0.594674 1.531973 0.100311 1.415234 0.766685 -0.148692 1.282135 1.608493 1.559674 0.288962 1.494453 0.151064 0.429304)
)
-;;; 40 all -------------------------------------------------------------------------------- ; sqrt 6.3245
+;;; 40 all -------------------------------------------------------------------------------- ; 6.3245
#(40 7.4570450782776 #(0 0 1 1 0 1 0 0 0 1 1 1 1 0 0 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0)
7.448447227478 #(0 1 1 1 0 1 1 1 0 0 1 0 1 1 1 1 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 1 0 0 1 0 0 0 0 0)
7.4427533149719 #(0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 1 0 0 1 0 1 1 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0)
@@ -486,11 +470,10 @@
7.4014959335327 #(0 1 0 0 0 1 0 1 1 0 1 0 0 0 1 1 1 1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 0 0 0)
7.3913831710815 #(0 1 0 1 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 0 1 1 0 0 1 0 0 1 1 1 1 0 0 0 1 0 0 0 0 0)
- 6.375101 #(0.000000 1.712999 1.418012 0.147643 1.120425 1.347165 1.590486 1.601687 0.159318 0.512199 0.473485 1.280318 0.330110 0.098911 -0.148626 1.451511 -0.353804 -0.063394 0.078216 0.307579 1.932228 1.269624 0.658000 0.756073 0.231090 1.506055 0.227984 1.260058 1.486901 1.872019 1.243329 0.622530 1.528907 1.677672 0.754250 -0.266483 1.621042 0.704135 1.271128 0.602640)
- 6.365349 #(0.000000 1.736578 1.406190 0.119777 1.099700 1.296633 1.525808 1.595839 0.217189 0.517633 0.483622 1.361290 0.329044 0.071174 -0.122685 1.514074 -0.309450 -0.028417 0.156176 0.308932 0.015347 1.254577 0.727152 0.817475 0.304492 1.581466 0.269994 1.283844 1.567794 1.912681 1.310220 0.600426 1.612691 1.716122 0.827722 -0.213409 1.638459 0.763171 1.367798 0.680200)
+ 6.359590 #(0.000000 1.739675 1.405308 0.121711 1.100727 1.299619 1.535644 1.606276 0.225584 0.532188 0.499676 1.364255 0.341368 0.084411 -0.119244 1.527805 -0.299891 -0.008683 0.161744 0.307111 0.025975 1.272599 0.734213 0.815609 0.314850 1.614225 0.291669 1.303282 1.593188 1.961386 1.325951 0.612536 1.631728 1.738640 0.856008 -0.177260 1.664579 0.796324 1.388427 0.713224)
)
-;;; 41 all -------------------------------------------------------------------------------- ; sqrt 6.4031
+;;; 41 all -------------------------------------------------------------------------------- ; 6.4031
#(41 7.5969347953796 #(0 1 0 1 1 1 0 0 1 0 0 1 1 0 1 0 1 0 0 1 1 0 1 1 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0)
7.5873513221741 #(0 1 1 0 0 1 0 1 1 0 0 0 1 1 1 0 1 0 0 1 1 1 0 1 0 1 0 0 1 1 1 1 0 1 0 0 0 0 0 0 0)
7.5666546821594 #(0 0 1 0 1 0 1 0 1 1 0 0 1 0 1 1 0 0 1 1 0 0 1 1 1 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0)
@@ -500,10 +483,10 @@
7.4493231773376 #(0 0 0 1 1 1 0 0 0 0 1 1 1 0 1 0 1 0 0 1 0 1 1 0 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0)
7.4106826782227 #(0 0 1 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 1 0 1 1 1 1 1 1 0 1 0 1 1 0 1 0 0 0 1 1 1 1)
- 6.344991 #(0.000000 1.142294 1.769940 -0.310971 1.203146 1.066446 0.497942 0.454411 1.420805 1.905484 0.393768 0.290707 -1.899906 1.888099 1.641880 1.164300 0.664925 1.691377 0.480450 0.545367 1.337163 0.405262 -0.086187 0.766662 0.476345 0.518741 0.830951 0.899691 1.186790 -0.010599 0.946384 1.662683 0.713564 0.139079 0.127287 0.233458 0.892810 0.090077 1.493757 0.208410 0.425454)
+ 6.336362 #(0.000000 1.136564 1.769039 -0.302528 1.219485 1.077066 0.499384 0.459848 1.421023 1.898005 0.403090 0.295010 -1.896917 1.896083 1.647995 1.178305 0.666829 1.680796 0.463075 0.545628 1.334683 0.394364 -0.085600 0.753986 0.467752 0.515771 0.824057 0.897722 1.181114 -0.015790 0.947115 1.655981 0.729980 0.146814 0.128215 0.219239 0.873463 0.080337 1.491244 0.201806 0.413100)
)
-;;; 42 all -------------------------------------------------------------------------------- ; sqrt 6.4807
+;;; 42 all -------------------------------------------------------------------------------- ; 6.4807
#(42 7.8644123077393 #(0 0 1 1 1 0 0 1 0 0 1 1 1 0 0 1 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0)
7.8588690757751 #(0 1 0 1 0 0 1 1 1 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 1)
7.8527493476868 #(0 1 0 1 0 0 1 1 1 0 0 1 0 0 1 1 1 0 0 1 0 1 1 0 0 1 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0)
@@ -512,10 +495,10 @@
7.7545323371887 #(0 1 0 1 1 0 0 0 0 1 1 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 0 1 1 0 0 1 1)
7.6252284049988 #(0 0 1 1 0 0 1 1 1 0 0 0 1 0 1 1 0 0 1 0 1 1 0 1 0 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0)
- 6.528165 #(0.000000 1.768530 1.635257 1.863686 1.444104 1.509765 0.037424 0.079881 1.558654 0.223234 1.874863 1.075752 0.730524 0.234775 0.737540 0.906245 1.757324 -0.090159 1.296852 1.566854 0.363402 1.834974 1.467405 1.270704 0.700345 0.418623 0.773319 1.272381 1.673757 0.837384 1.558131 0.701140 1.621651 0.639561 0.728033 0.723251 1.144108 -0.012130 0.041247 0.583303 -0.077806 0.927534)
+ 6.516884 #(0.000000 1.768622 1.637074 1.894155 1.463115 1.509202 0.039353 0.067299 1.550337 0.223442 1.876116 1.060050 0.743213 0.231318 0.732579 0.904347 1.742710 -0.083306 1.287727 1.574440 0.371363 1.847227 1.473916 1.279577 0.737523 0.417753 0.778032 1.265656 1.671219 0.865974 1.570751 0.741796 1.641006 0.670828 0.743179 0.718859 1.155946 -0.041773 0.057970 0.601558 -0.077027 0.961216)
)
-;;; 43 all -------------------------------------------------------------------------------- ; sqrt 6.5574
+;;; 43 all -------------------------------------------------------------------------------- ; 6.5574
#(43 7.8286972045898 #(0 1 0 0 1 0 0 1 1 1 1 0 0 0 0 1 1 1 0 0 1 0 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0)
7.824122428894 #(0 1 0 1 1 0 1 1 0 0 0 0 0 1 1 0 0 0 1 1 1 1 0 1 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 1)
7.8140468597412 #(0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 0 0 1 0 1 1 0 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0)
@@ -527,150 +510,159 @@
7.6866073608398 #(0 1 1 0 1 1 0 1 0 1 0 1 0 0 0 1 1 0 1 0 0 1 1 1 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0)
7.6619415283203 #(0 1 0 1 0 1 1 1 1 0 1 0 1 1 1 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 1 1)
- 6.506766 #(0.000000 1.131024 1.646078 1.145133 0.705030 0.665253 1.067422 0.401739 0.237114 1.378260 0.723856 0.447859 0.155297 0.065180 0.030365 0.491330 1.846770 1.424179 0.397005 0.045175 0.779686 0.123422 0.577263 0.142382 0.603044 0.383864 1.243676 0.941110 1.754840 0.144353 1.083428 1.325804 1.395433 0.497559 1.826659 0.171733 0.970323 0.211249 0.678389 1.326403 1.452975 -0.234930 0.764464)
+ 6.482409 #(0.000000 1.144559 1.691771 1.153951 0.716239 0.646091 1.063134 0.342868 0.213241 1.376155 0.672100 0.425584 0.173096 0.110029 0.015293 0.460666 1.796149 1.444048 0.314197 0.012835 0.819748 0.119031 0.582195 0.100074 0.621426 0.361508 1.290142 0.942275 1.772437 0.174260 1.102162 1.335380 1.397832 0.481081 1.799028 0.225127 0.933833 0.257264 0.672894 1.297185 1.465653 -0.223387 0.778846)
)
-;;; 44 all -------------------------------------------------------------------------------- ; sqrt 6.6332
+;;; 44 all -------------------------------------------------------------------------------- ; 6.6332
#(44 8.0920171737671 #(0 0 0 0 1 0 1 1 0 1 0 1 0 0 0 1 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 1 1 0 1 0 0)
7.9767818450928 #(0 1 0 0 1 1 0 1 1 0 1 1 0 0 0 1 1 1 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 1 0 1 0 1)
- 6.571371 #(0.000000 0.524017 0.234107 0.523837 -0.264968 1.909503 -0.060021 -0.161195 0.052743 1.727980 1.773814 0.464722 0.276198 0.505932 1.149161 0.369381 -1.717449 0.446217 0.153755 1.217967 1.399829 0.752848 1.675696 1.374808 0.062239 0.268672 0.574129 0.773614 -0.047507 1.589690 0.900543 1.287372 0.204450 0.655437 1.582077 0.439180 -0.033612 1.274347 0.841928 0.461992 1.019815 0.034062 1.372619 0.143797)
+ 6.552505 #(0.000000 0.516530 0.224688 0.526733 -0.270777 1.917868 -0.031145 -0.157428 0.072119 1.708014 1.778556 0.463152 0.275914 0.508605 1.163702 0.356039 -1.719404 0.466987 0.149273 1.208679 1.406203 0.743516 1.669343 1.404167 0.072628 0.264489 0.573670 0.758686 -0.024977 1.581357 0.913109 1.310679 0.226713 0.685141 1.566700 0.432175 -0.042399 1.284123 0.875160 0.466218 1.017090 0.066147 1.376720 0.160417)
)
-;;; 45 all -------------------------------------------------------------------------------- ; sqrt 6.7082
+;;; 45 all -------------------------------------------------------------------------------- ; 6.7082
#(45 8.197151904921 #(0 0 0 1 1 0 0 0 0 1 1 1 0 1 0 0 1 0 0 1 1 0 1 0 0 1 0 1 0 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1)
8.1777801513672 #(0 1 0 1 1 0 0 1 1 0 1 0 1 1 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1 1 1 0 0 0 0 0 1 0 1 0 0 0 1 1 1)
- 6.733216 #(0.000000 1.046039 -0.093168 -0.287194 1.304494 0.099286 0.599638 0.896819 1.319512 -0.092575 1.205127 1.960076 1.835815 0.911972 1.796624 0.203326 0.384703 0.293652 1.270000 0.678784 1.338160 0.091242 0.045178 0.618404 0.081743 -0.136191 0.082490 0.734896 1.534238 0.391868 0.015844 -0.028641 1.157355 1.703686 1.162787 1.112022 1.157168 -0.081316 1.410063 1.031223 0.519783 -0.170081 0.029151 1.562310 0.000944)
+ 6.715752 #(0.000000 1.063263 -0.084313 -0.308071 1.311751 0.078439 0.563430 0.906202 1.294917 -0.113087 1.201323 1.947038 1.864311 0.911865 1.829609 0.165635 0.398239 0.282842 1.263610 0.672379 1.307813 0.126215 0.052273 0.593793 0.059808 -0.161493 0.060957 0.707975 1.546661 0.395392 -0.009478 0.015644 1.171989 1.713543 1.186925 1.053520 1.145840 -0.052794 1.428974 1.005587 0.552192 -0.173242 -0.003437 1.549788 -0.004089)
+ 6.710299 #(0.000000 1.070454 -0.070264 -0.304171 1.303714 0.067328 0.560149 0.926320 1.295525 -0.117952 1.194981 1.956221 1.866342 0.923076 1.845341 0.138668 0.401314 0.279294 1.256758 0.676902 1.303468 0.122084 0.076388 0.565286 0.065561 -0.146052 0.045330 0.692077 1.557091 0.407743 -0.008797 0.050936 1.157411 1.726607 1.190266 1.043818 1.133662 -0.039201 1.443994 1.004945 0.568772 -0.159943 -0.016969 1.559761 -0.010082)
+ 6.703069 #(0.000000 1.072698 -0.071857 -0.315201 1.289632 0.049576 0.550574 0.936882 1.274552 -0.137730 1.176138 1.942981 1.857508 0.917101 1.838948 0.103561 0.380280 0.254574 1.230670 0.649004 1.266031 0.090864 0.066401 0.507493 0.032763 -0.178855 -0.002723 0.628256 1.522968 0.368551 -0.048869 0.031008 1.094372 1.686721 1.156790 0.976242 1.078178 -0.079430 1.396731 0.951285 0.527926 -0.211141 -0.089011 1.504966 -0.078161)
)
-;;; 46 all -------------------------------------------------------------------------------- ; sqrt 6.7823
+;;; 46 all -------------------------------------------------------------------------------- ; 6.7823
#(46 8.4391345977783 #(0 0 1 0 0 1 1 0 0 1 1 0 0 1 1 1 0 0 0 1 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0)
8.22203540802 #(0 1 0 1 0 0 0 0 1 0 0 1 1 0 1 1 1 0 0 0 1 1 1 0 1 1 1 0 0 0 1 0 1 1 0 0 1 0 0 1 0 1 0 0 0 0)
- 6.714884 #(0.000000 1.430614 1.050734 1.938330 0.602295 0.132084 0.059120 0.207458 1.126611 0.787254 0.131012 1.554717 0.417150 1.006360 1.058848 0.929247 0.418778 1.898773 1.789830 0.138248 0.772624 1.490097 1.315221 0.508253 0.682973 0.114926 0.722937 1.313706 0.918156 1.945432 1.524903 1.216006 1.848834 1.485105 0.011813 0.904096 1.417974 1.105701 1.380666 1.485412 0.916671 1.250300 -0.106102 0.632544 0.143282 1.033968)
+ 6.699675 #(0.000000 1.448795 1.081717 1.923365 0.599093 0.110602 0.062986 0.201393 1.127916 0.800992 0.134374 1.541686 0.425230 0.988970 1.044715 0.905011 0.394025 1.877303 1.779770 0.103636 0.810901 1.462019 1.298360 0.506301 0.690905 0.079943 0.741252 1.295527 0.922954 1.948031 1.523204 1.191425 1.863021 1.502798 -0.017565 0.925811 1.378082 1.110394 1.347775 1.468163 0.886624 1.241739 -0.114390 0.646794 0.156750 0.998631)
)
-;;; 47 all -------------------------------------------------------------------------------- ; sqrt 6.8556
+;;; 47 all -------------------------------------------------------------------------------- ; 6.8556
#(47 8.4154777526855 #(0 1 1 1 0 0 1 0 0 0 1 1 0 1 0 0 1 1 0 0 0 0 1 1 1 1 1 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 1 1 1 1 0)
8.3755550384521 #(0 0 0 0 1 0 0 0 1 1 0 0 1 1 1 1 1 0 1 0 1 0 1 1 1 0 1 1 1 1 0 1 1 0 1 1 0 1 0 0 0 1 1 0 1 0 0)
8.3640232086182 #(0 0 0 0 1 0 0 1 0 1 1 0 0 1 1 0 1 1 0 0 0 1 0 0 1 0 1 1 1 1 0 0 1 1 1 1 0 1 0 1 0 1 1 1 0 0 0)
8.3221893310547 #(0 0 1 0 1 0 0 0 0 1 0 0 1 1 1 1 1 0 1 0 1 0 1 1 1 0 1 1 1 1 0 1 1 0 0 1 1 0 0 1 0 1 1 0 1 0 0)
- 6.935479 #(0.000000 1.626964 0.970534 0.114962 0.743908 1.948102 -0.009731 -0.080479 1.073693 0.276803 0.272335 0.364237 0.828918 1.447588 0.141800 0.658582 0.911537 1.506516 0.769682 1.379841 0.723738 1.446998 1.829530 -0.182154 1.326410 0.914695 0.970200 1.172379 1.668232 0.490185 0.157448 1.321211 0.985742 0.968323 1.086150 0.235616 1.342152 0.853088 0.038216 1.657347 0.275094 0.005729 0.220833 1.218845 1.755797 1.071134 1.375811)
+ 6.898253 #(0.000000 1.645884 0.934913 0.194679 0.665432 -0.018287 0.148892 -0.008290 1.152457 0.369356 0.420327 0.263161 0.908971 1.353484 0.009249 0.632180 0.981966 1.493199 0.686258 1.258306 0.634035 1.456400 1.875852 -0.209351 1.421929 0.802662 1.139442 1.217730 1.814674 0.663240 0.186483 1.202231 1.039761 0.919383 1.129168 0.233484 1.481787 1.038730 0.301618 1.769493 0.304135 0.283068 0.214215 1.150511 1.753766 1.147951 1.285863)
+ 6.844938 #(0.000000 1.706436 0.887725 0.241948 0.640735 -0.015147 0.209797 -0.022816 1.206450 0.338043 0.461560 0.209432 0.953577 1.337507 -0.047268 0.654068 0.962003 1.455413 0.741025 1.220734 0.639406 1.484125 1.927246 -0.192936 1.468640 0.777060 1.109095 1.272173 1.810991 0.648504 0.095681 1.286027 1.013267 1.034501 1.164556 0.313720 1.477368 1.097093 0.373880 1.770353 0.269844 0.335587 0.321184 1.173615 1.779299 1.088415 1.323272)
+ 6.839431 #(0.000000 1.707000 0.885271 0.233907 0.651927 -0.011748 0.217674 -0.026454 1.211428 0.349699 0.457067 0.222525 0.948014 1.342792 -0.049850 0.652055 0.968625 1.464418 0.749553 1.222877 0.635210 1.480624 1.915233 -0.202765 1.474975 0.776193 1.112445 1.266123 1.809237 0.658024 0.102958 1.290639 1.006124 1.030838 1.151617 0.307178 1.475376 1.085280 0.368954 1.771707 0.262040 0.332089 0.325281 1.173936 1.776791 1.092991 1.334125)
)
-;;; 48 all -------------------------------------------------------------------------------- ; sqrt 6.9282
+;;; 48 all -------------------------------------------------------------------------------- ; 6.9282
#(48 8.6921081542969 #(0 1 1 1 1 0 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 0 1 0 0 0 0 1 1 0 1 0 0 0 1 1 1 0 1 1 1 1 1 1 0 0 1)
8.5232070520636 #(0 0 1 0 1 0 1 1 1 1 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 1 1)
8.4671268463135 #(0 0 0 0 1 0 1 1 1 1 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 0 1 1 0 0 1 1)
- 6.995313 #(0.000000 0.706870 1.119922 1.000635 1.031826 0.650357 1.520853 1.185518 0.628215 1.855950 1.560080 0.010914 0.353833 1.522287 0.399218 0.246420 1.404214 1.641199 0.846819 0.436645 1.075608 -0.297890 1.853134 0.532867 0.558151 0.832089 -0.140544 1.231331 0.004860 0.483664 1.466328 0.548279 1.079111 1.113013 1.279503 0.987792 0.927684 0.394102 0.023209 0.851291 1.305978 1.191442 0.787785 1.266969 0.713833 0.743052 1.707125 0.483230)
+ 6.980037 #(0.000000 0.714809 1.124370 1.017865 1.014114 0.664672 1.531406 1.188183 0.617357 1.860549 1.558531 0.014695 0.344467 1.510121 0.390744 0.234603 1.391527 1.638315 0.865522 0.426915 1.047274 -0.296939 1.845891 0.534915 0.550273 0.823141 -0.146685 1.248340 0.000265 0.471183 1.472001 0.565248 1.074211 1.116687 1.283067 0.966571 0.947737 0.390146 0.008433 0.850534 1.316029 1.202929 0.806340 1.261962 0.711575 0.744623 1.695356 0.486838)
+ 6.977635 #(0.000000 0.725310 1.117701 1.024986 1.009839 0.673225 1.528400 1.188923 0.621209 1.876724 1.562270 0.015125 0.333619 1.504461 0.379663 0.230746 1.385943 1.627794 0.880344 0.413276 1.037503 -0.301312 1.859153 0.526696 0.546354 0.813537 -0.166070 1.250772 -0.007804 0.460473 1.454295 0.583516 1.067580 1.101911 1.283683 0.938219 0.923724 0.383459 -0.005134 0.835423 1.304766 1.200682 0.788274 1.249365 0.693188 0.724495 1.675185 0.464583)
)
-;;; 49 all -------------------------------------------------------------------------------- ; sqrt 7
+;;; 49 all -------------------------------------------------------------------------------- ; 7
#(49 8.7310771942139 #(0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 1 0 1 1 1 0 0 1 1 0 0 0 1 0 0 1 0 1 0 1 0 1 0)
8.6587047576904 #(0 1 1 0 0 1 0 0 1 1 0 1 0 0 1 0 1 1 1 1 1 0 1 1 1 0 1 1 1 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 1 0 1 0 0)
8.7183141708374 #(0 0 1 1 0 1 1 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 1 1 0 1 1 1 1 0 0 0 1)
8.5157623291016 #(0 1 1 0 0 0 0 0 1 0 0 1 1 0 1 0 1 1 1 1 0 0 1 1 1 0 1 1 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 0 1 0 1 0 0)
- 7.105953 #(0.000000 1.242770 1.616309 -0.067503 1.078394 0.796244 0.711974 1.572177 0.241225 0.120055 1.465757 1.031678 0.796150 1.407609 -0.115189 -0.100708 0.479451 1.152066 1.355703 0.735683 0.390032 1.277193 1.334256 0.657960 0.452309 1.177291 1.609393 -0.603564 1.426387 0.472274 0.336381 0.876592 0.347280 0.719700 0.407769 1.457448 1.903126 1.181580 1.773958 1.693165 1.058973 1.686216 1.019783 -0.040247 1.297756 -0.358166 -0.208333 1.457348 0.146576)
+ 7.083279 #(0.000000 1.269291 1.638723 -0.047748 1.071303 0.782544 0.678115 1.541344 0.239619 0.152102 1.488228 1.014405 0.817816 1.452959 -0.083119 -0.093983 0.442657 1.118434 1.356961 0.704794 0.435528 1.294088 1.370680 0.704901 0.448402 1.187606 1.623849 -0.574588 1.439487 0.503306 0.315114 0.869370 0.332350 0.714359 0.369655 1.476546 1.875290 1.192089 1.786387 1.718471 1.064819 1.726233 1.002117 -0.038607 1.307448 -0.385155 -0.171276 1.481247 0.100879)
+ 7.080059 #(0.000000 1.274094 1.630181 -0.023001 1.070264 0.774635 0.649524 1.520287 0.227247 0.143790 1.476996 0.985602 0.820368 1.460844 -0.081812 -0.097833 0.427238 1.105238 1.344048 0.677618 0.440313 1.292589 1.355935 0.671066 0.442024 1.194686 1.637976 -0.608731 1.445001 0.489139 0.288284 0.839811 0.306651 0.697677 0.322272 1.434046 1.837282 1.162580 1.758282 1.703586 1.053212 1.725915 0.985403 -0.088157 1.290974 -0.452562 -0.194397 1.444227 0.070103)
)
-;;; 50 all -------------------------------------------------------------------------------- ; sqrt 7.071
+;;; 50 all -------------------------------------------------------------------------------- ; 7.071
#(50 8.8124130871436 #(0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 0 1 1 1 0 0 1 0 0 1 1 1 1 1 0 0 1 0 1 1 0 1 0 1 1 0 0 1 0 1 1)
8.8096923828125 #(0 0 1 1 0 0 1 0 1 1 1 1 1 0 1 1 0 0 1 1 0 1 1 1 1 1 1 0 1 1 1 0 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 1 1 1)
8.7809114456177 #(0 0 1 0 1 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 1 0 0 1 1 1 1 0 1 1 1 0 1 1 0 1 0 0 1)
- 7.131308 #(0.000000 1.516129 0.691319 1.301162 0.034379 1.489340 0.373281 1.618832 1.007313 1.015263 0.923335 1.138166 -0.046339 0.908928 0.709363 1.493868 0.025249 -0.278339 0.855717 1.070373 1.293730 0.709710 0.689822 0.371651 0.840329 0.702319 0.766767 0.321551 1.345325 1.451009 1.002744 -0.110359 0.127517 1.314810 -0.192311 1.207929 1.432466 0.333848 1.375586 0.861473 -0.021919 1.495789 1.332816 1.607104 0.396739 0.565029 0.079702 0.329260 0.907185 1.511892)
+ 7.104292 #(0.000000 1.532034 0.704024 1.275043 0.034779 1.490944 0.343355 1.597991 1.003462 1.025181 0.918448 1.179916 -0.071455 0.872931 0.683017 1.515413 -0.012716 -0.304889 0.852630 1.085891 1.327164 0.715603 0.706487 0.381579 0.830047 0.710812 0.780464 0.319830 1.325892 1.481201 0.993257 -0.087685 0.172838 1.304264 -0.186348 1.239594 1.388042 0.302646 1.396888 0.856789 -0.081508 1.462640 1.335906 1.559368 0.354458 0.569102 0.074687 0.298075 0.909239 1.484471)
)
-;;; 51 all -------------------------------------------------------------------------------- ; sqrt 7.141
+;;; 51 all -------------------------------------------------------------------------------- ; 7.141
#(51 8.8691492080688 #(0 1 1 1 1 0 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 1 0 1 0 0 0 0 0 1 1 1 1 0 1 1 1 0 0 1 0 1 1 1 0 0 1)
8.8213935921978 #(0 0 1 0 1 1 1 1 1 0 1 1 1 0 1 0 1 1 1 1 1 1 1 0 0 1 0 1 0 0 0 0 0 1 1 1 1 0 1 1 1 0 0 1 0 1 1 1 0 0 1)
- 7.253674 #(0.000000 1.342499 1.450577 1.657833 0.270176 0.861539 0.159471 0.519655 0.585360 1.631393 1.583200 0.130375 0.491779 1.631419 0.712448 1.352256 0.563967 1.132614 0.650920 0.590550 0.586367 0.520382 1.584088 1.810618 1.748482 1.926356 -0.105310 0.681794 1.943163 0.055838 1.958564 0.649533 1.761361 1.532968 1.678311 0.469092 0.276104 1.337312 0.972977 0.242704 1.294198 0.042598 1.880225 1.106930 0.137882 0.545520 0.194918 0.080983 0.997834 1.229835 0.394453)
+ 7.227024 #(0.000000 1.309288 1.423643 1.626865 0.236569 0.835316 0.134358 0.546005 0.634935 1.636992 1.557839 0.161637 0.505100 1.654295 0.710405 1.360527 0.581107 1.148964 0.660281 0.621685 0.609616 0.471602 1.615920 1.797354 1.748162 1.906548 -0.117500 0.729912 1.925744 0.014618 -0.013588 0.689029 1.761774 1.545332 1.692826 0.522366 0.268369 1.342672 0.970856 0.297749 1.328074 0.038797 1.893564 1.067766 0.133132 0.489762 0.174464 0.088829 0.965376 1.237136 0.412040)
+ 7.226460 #(0.000000 1.304628 1.446548 1.682757 0.254311 0.874237 0.113444 0.564436 0.613107 1.667375 1.587370 0.168974 0.478299 1.654274 0.737375 1.371968 0.587498 1.130769 0.641862 0.605103 0.625285 0.470342 1.613483 1.784721 1.779170 1.937238 -0.133836 0.702172 1.923760 0.050099 -0.049496 0.653160 1.721520 1.581474 1.692317 0.485732 0.302174 1.341269 1.005251 0.272738 1.341587 0.031558 1.853833 1.051012 0.134816 0.503459 0.177340 0.078164 1.028636 1.247384 0.425018)
)
-;;; 52 all -------------------------------------------------------------------------------- ; sqrt 7.211
+;;; 52 all -------------------------------------------------------------------------------- ; 7.211
#(52 9.1133499145508 #(0 0 1 1 0 1 1 0 1 0 1 0 0 0 1 0 1 1 1 0 0 1 1 0 1 1 1 1 1 1 0 1 0 1 1 1 1 0 1 1 0 0 1 1 0 0 0 0 1 1 0 1)
9.109245300293 #(0 1 1 0 0 1 0 0 1 1 0 0 0 1 0 1 1 1 0 1 0 1 1 0 1 1 0 1 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 0 0)
8.9920463562012 #(0 1 1 0 1 0 0 0 0 0 1 0 0 0 1 0 1 1 1 0 0 1 1 0 1 1 0 1 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0)
- 7.175075 #(0.000000 0.658737 1.409732 1.499480 0.121379 1.354352 0.567827 0.569909 1.753335 0.412631 1.792516 0.484624 1.363462 1.235080 1.355834 1.074028 0.904190 1.569500 0.508890 0.290623 0.495491 1.061605 -0.058928 0.260247 0.425830 1.253392 1.841664 1.133893 1.732632 -0.146070 0.201418 1.115504 0.522922 1.221118 0.277226 -0.095388 1.270458 0.897939 0.919899 0.674418 0.640730 1.078966 1.375472 1.051033 1.327016 0.390313 1.527364 0.836537 0.538740 1.434597 1.285123 0.831689)
+ 7.149737 #(0.000000 0.631718 1.446098 1.478773 0.119348 1.347186 0.570275 0.537178 1.768074 0.400579 1.752143 0.527996 1.397343 1.240563 1.338275 1.021738 0.936626 1.568260 0.516819 0.308476 0.482402 1.096064 -0.060160 0.259483 0.398962 1.253846 1.878522 1.121548 1.717764 -0.134371 0.224256 1.122775 0.533335 1.223694 0.258831 -0.099257 1.272598 0.870492 0.890684 0.687746 0.677480 1.098395 1.397497 1.045901 1.346856 0.415368 1.577769 0.869637 0.539653 1.425636 1.250370 0.816634)
)
-;;; 53 all -------------------------------------------------------------------------------- ; sqrt 7.280
+;;; 53 all -------------------------------------------------------------------------------- ; 7.280
#(53 9.171422958374 #(0 0 1 0 0 0 1 0 0 0 0 1 0 1 1 0 0 1 1 1 0 1 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 1 1 0 1 0 1 1 1 0 1 1 1 1 0)
9.0914754867554 #(0 1 0 1 0 1 1 0 1 0 0 1 0 0 1 1 0 1 1 0 1 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 1 1 1 0 1 0 1 1 1 0 0 1 1 0 0)
- 7.232385 #(0.000000 0.644432 0.822097 1.605019 1.164111 1.709609 0.517067 -0.011686 0.321247 0.295348 1.028140 1.391366 1.085639 1.759695 1.613157 0.169321 0.951157 -0.396064 0.827754 1.655761 0.750800 1.004993 0.885126 0.306200 0.192381 0.893388 1.760875 0.893134 -0.025323 0.085709 0.313137 1.615380 0.332377 1.885224 1.406347 1.137831 0.708617 0.363697 1.358495 1.832723 0.584315 1.414959 1.798416 1.625970 1.681951 -0.118563 1.644698 0.916488 0.187823 1.797631 0.323672 0.102205 1.714523)
+ 7.211402 #(0.000000 0.616516 0.846689 1.603746 1.161970 1.711662 0.514826 -0.046593 0.307026 0.319518 1.005929 1.378198 1.088439 1.754482 1.597324 0.155392 0.927857 -0.374215 0.834281 1.641395 0.751477 1.007227 0.872774 0.298992 0.171911 0.882242 1.761522 0.889562 -0.029460 0.079990 0.274506 1.592029 0.319770 1.894422 1.397662 1.118695 0.715594 0.355740 1.347351 1.817486 0.553207 1.398165 1.814722 1.638043 1.670484 -0.112799 1.641090 0.885500 0.184635 1.804143 0.327137 0.103994 1.699875)
)
-;;; 54 all -------------------------------------------------------------------------------- ; sqrt 7.348
+;;; 54 all -------------------------------------------------------------------------------- ; 7.348
#(54 9.2755253455568 #(0 1 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 0 1 1 0 1 0 1 1 1 0 0 0 1 1 1 0 0 1 0 0 1 1 1 0 0 1 1 0 1 1 1 1 1 1)
9.1825122833252 #(0 1 0 1 0 1 1 0 1 1 0 0 1 0 1 0 0 0 1 1 1 0 0 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 0 1 1 1 0 1 1 0 0 0 0 1 0 0 1 1)
- 7.473944 #(0.000000 1.467404 0.023731 1.472476 0.201126 1.110885 -0.010858 0.196002 0.891445 1.933147 1.845736 0.063205 0.120984 0.791601 0.054946 0.529145 1.599550 0.039909 0.533756 0.690325 1.135934 0.222672 0.001755 0.211294 1.133584 -0.014228 1.651289 1.186600 0.740934 1.562914 1.417103 0.626874 1.654128 0.930076 0.563794 0.540877 0.424658 0.068801 1.037289 0.063797 0.272940 0.676669 0.919373 0.423667 1.110586 1.622285 1.348597 0.226348 1.951197 0.120858 1.497693 0.998554 0.263682 0.460537)
+ 7.443372 #(0.000000 1.460094 0.029480 1.477292 0.194504 1.130857 -0.011559 0.196607 0.910538 1.942378 1.856143 0.073782 0.106536 0.782067 0.015679 0.526692 1.574187 0.006803 0.549469 0.713956 1.143272 0.214273 -0.006914 0.234548 1.123772 -0.040900 1.688974 1.132361 0.750952 1.580976 1.414364 0.621252 1.659991 0.954457 0.566577 0.517500 0.475417 0.053159 0.997640 0.071486 0.244737 0.645205 0.909009 0.416256 1.128118 1.623242 1.395129 0.254188 1.922473 0.082757 1.503655 0.993178 0.292882 0.452456)
+ 7.440644 #(0.000000 1.471451 -0.015784 1.455931 0.190029 1.174326 -0.012948 0.217349 0.930390 1.954096 1.901405 0.061675 0.095622 0.795850 -0.025185 0.590142 1.570603 -0.024158 0.552696 0.745288 1.213088 0.218232 0.013777 0.203625 1.143503 -0.031712 1.690549 1.109572 0.717168 1.579723 1.402271 0.651976 1.675714 0.982619 0.583122 0.545558 0.505460 0.074160 1.016678 0.086390 0.218294 0.645253 0.978136 0.444185 1.136602 1.623680 1.427872 0.263354 1.934507 0.100339 1.552280 1.006472 0.324932 0.501032)
)
-;;; 55 all -------------------------------------------------------------------------------- ; sqrt 7.416
+;;; 55 all -------------------------------------------------------------------------------- ; 7.416
#(55 9.2178440093994 #(0 0 1 1 0 1 1 0 0 1 1 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 1 1 1 0 1 0 1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 1 0)
9.0889595835043 #(0 0 1 0 0 1 0 0 1 1 0 0 1 1 1 1 1 0 0 0 1 1 0 0 0 1 0 0 0 0 1 1 1 1 1 1 0 1 0 1 1 1 0 1 1 1 1 1 0 1 1 0 1 0 1)
- 7.470741 #(0.000000 1.017825 0.439236 1.792422 1.110953 1.100195 -0.300907 1.162805 1.141693 1.596882 0.386669 0.657303 1.564962 1.298709 1.280597 1.009858 1.676751 1.782107 -0.210933 1.474184 1.648705 0.814700 0.554094 1.238438 0.344182 0.425624 1.391043 -0.123941 1.306843 -0.065903 1.066628 1.179895 1.406699 0.604286 1.415173 0.489947 1.737685 0.408115 0.324955 0.107448 0.919541 0.435943 0.503232 0.015921 1.676839 0.679207 0.321032 1.316972 1.710893 -0.284599 0.044200 0.766967 1.145007 0.620811 1.678114)
+ 7.451332 #(0.000000 1.015522 0.419781 1.786262 1.107475 1.103933 -0.284779 1.169664 1.149947 1.598124 0.363126 0.676112 1.578238 1.291612 1.245283 1.033548 1.668865 1.776540 -0.235451 1.497061 1.650467 0.804066 0.578800 1.237507 0.363355 0.405917 1.359086 -0.081502 1.322443 -0.075509 1.059301 1.159256 1.417115 0.593047 1.432288 0.485288 1.745052 0.389923 0.309901 0.092283 0.920478 0.417379 0.444034 -0.018126 1.664423 0.672706 0.319923 1.321383 1.698559 -0.280604 0.008984 0.748175 1.131299 0.634549 1.650466)
)
-;;; 56 all -------------------------------------------------------------------------------- ; sqrt 7.483
+;;; 56 all -------------------------------------------------------------------------------- ; 7.483
#(56 9.4667987823486 #(0 1 1 0 0 1 0 0 0 0 1 1 1 0 1 1 1 0 0 1 0 1 0 1 1 1 0 0 0 1 0 0 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0)
9.3902807235718 #(0 1 1 1 0 0 1 0 1 1 1 0 0 1 0 0 1 0 1 0 0 0 0 0 1 1 1 0 0 1 1 0 1 0 1 1 0 1 1 1 0 1 1 1 1 0 0 0 1 0 1 0 1 1 1 1)
9.1394176483154 #(0 1 0 1 1 0 1 0 1 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 1 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 1 0)
- 7.544739 #(0.000000 1.532008 1.620227 -0.188929 1.319334 0.315303 1.237975 1.429280 0.167148 1.732935 -0.032524 0.372631 0.098452 1.589578 1.506774 0.385718 0.248086 1.248792 0.180728 -0.002914 1.308470 0.090333 1.275406 0.985429 1.601081 1.649435 0.577460 0.795847 1.056103 1.534741 1.070369 1.266496 1.689303 1.451305 0.073566 0.606801 1.749694 1.266284 0.628857 0.531839 0.777402 0.392105 1.121795 0.079083 0.876722 -0.240812 1.694200 0.585152 1.266348 0.239025 1.571491 1.501932 1.230976 0.476465 0.861601 -1.849719)
+ 7.496344 #(0.000000 1.568704 1.684572 -0.148340 1.314849 0.294667 1.216056 1.371847 0.218226 1.718171 -0.035073 0.388886 0.147715 1.561670 1.521826 0.377203 0.314182 1.252072 0.195458 0.040131 1.282831 0.104620 1.284695 1.018097 1.589377 1.671829 0.571705 0.778141 1.044242 1.493974 1.061731 1.277916 1.661684 1.390367 0.043059 0.636020 1.745841 1.281047 0.640069 0.489822 0.793603 0.416123 1.080027 0.085938 0.836829 -0.269213 1.610846 0.617009 1.252134 0.226020 1.570706 1.564931 1.232435 0.472360 0.895004 -1.822702)
+ 7.456452 #(0.000000 1.587521 1.572730 -0.235262 1.516361 0.097167 1.232158 1.273500 0.340432 1.561082 -0.231938 0.088389 0.038596 1.577034 1.543308 0.574636 0.569259 1.167032 0.062845 0.086950 1.145738 0.110481 1.358771 1.074898 1.818660 1.757921 0.725862 0.790777 1.028340 1.492187 1.196434 1.481748 1.797765 1.295680 -0.024964 0.574943 1.643145 1.170739 0.612831 0.714816 0.923786 0.290814 0.714914 0.228686 0.683175 -0.242830 1.543475 0.544940 1.268496 0.012127 1.813830 1.821753 1.090824 0.492236 1.055742 -1.886227)
)
-;;; 57 all -------------------------------------------------------------------------------- ; sqrt 7.5498
+;;; 57 all -------------------------------------------------------------------------------- ; 7.5498
#(57 9.650218963623 #(0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 1 1 0 1 0 1 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0)
9.616 #(0 0 1 1 1 0 1 0 0 0 0 1 0 1 1 0 0 1 1 0 0 1 1 1 0 1 1 1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 1 1 1 0 0 0 1 1 0 1 0 0 1 0 1)
9.370246887207 #(0 1 1 0 1 0 1 0 0 0 1 1 1 1 0 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 0 1 0 0 1 1 0 1 0 0)
- 7.546486 #(0.000000 0.402544 0.873914 0.824224 1.710182 0.183023 0.378574 0.128782 1.816255 1.249608 1.030253 1.030831 0.184699 0.677473 1.528003 1.262679 1.840809 0.082787 1.487290 1.579585 0.150833 0.308197 0.183834 1.435443 0.452047 0.800416 1.697556 1.103318 1.169502 1.438166 1.765331 0.875181 1.049248 1.321068 0.824424 0.599899 1.694664 0.504547 1.583285 1.657047 0.940116 1.788668 1.529808 0.367904 1.371253 0.572088 1.370961 1.371348 0.244247 1.592370 0.135712 0.911345 0.228778 1.543468 1.190091 1.504171 1.491159)
+ 7.520679 #(0.000000 0.434294 0.845950 0.842308 1.695683 0.220894 0.397920 0.144752 1.817140 1.209654 1.062453 1.027438 0.202316 0.671718 1.533565 1.295334 1.811921 0.062499 1.548311 1.557995 0.127885 0.318033 0.125151 1.422462 0.471021 0.753247 1.666903 1.090152 1.159402 1.477128 1.769995 0.852448 0.998214 1.346725 0.812116 0.583570 1.681157 0.512662 1.545484 1.616182 0.957299 1.804231 1.474004 0.349918 1.341089 0.589556 1.304638 1.365528 0.259796 1.531042 0.119965 0.908086 0.243855 1.566686 1.212055 1.465069 1.474980)
)
-;;; 58 all -------------------------------------------------------------------------------- ; sqrt 7.6157
+;;; 58 all -------------------------------------------------------------------------------- ; 7.6157
#(58 9.623 #(0 0 0 0 1 1 1 1 0 0 0 1 1 0 0 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 1 0 0 0 1 0 1 1 0 1 1 1 1 0 1 0 1 0 0 1 0 0 1 0 1)
9.6140956878662 #(0 0 1 1 1 0 1 1 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 1 1 0 1 0 0 1)
9.4419231414795 #(0 0 1 1 1 0 1 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 1 0 0 1 1 0 0 1 1 1 0 1 0 1 0 1 1 0 1 1 0 0 0 0 1)
- 7.768938 #(0.000000 1.109097 1.409806 0.682358 0.467021 0.312384 0.097489 0.026747 1.220995 1.211503 0.225921 1.209220 1.818602 -0.211409 0.809940 1.807636 0.879346 1.674018 1.484115 0.932001 1.243162 0.525249 1.132300 0.476416 0.242480 0.730651 1.108639 -0.300638 0.079449 -0.049588 0.364479 0.026169 1.846416 0.895554 1.171114 -0.080673 -0.017567 0.208647 0.087353 1.667844 0.097570 0.408794 -0.054107 0.741259 0.368864 0.355318 1.530725 0.616411 1.268438 0.704465 0.004218 1.850395 1.003035 0.221262 1.548795 1.400654 1.637855 0.438151)
+ 7.745794 #(0.000000 1.100191 1.415305 0.691601 0.439370 0.308235 0.100447 0.036447 1.220872 1.223872 0.231572 1.171694 1.809349 -0.227459 0.809988 1.786270 0.841393 1.645770 1.481891 0.953114 1.263246 0.510403 1.149957 0.468622 0.249138 0.743943 1.111418 -0.307749 0.111451 -0.046475 0.372214 0.012870 1.846889 0.930746 1.174868 -0.074824 -0.051802 0.213256 0.048456 1.695122 0.084656 0.403424 -0.036485 0.751793 0.378818 0.327262 1.518648 0.594441 1.261512 0.706370 -0.033501 1.851784 1.012151 0.225551 1.540375 1.427414 1.639169 0.432369)
)
-;;; 59 all -------------------------------------------------------------------------------- ; sqrt 7.6811
+;;; 59 all -------------------------------------------------------------------------------- ; 7.6811
#(59 9.9013983722749 #(0 0 0 1 1 0 0 1 0 0 0 1 0 0 1 1 0 0 0 1 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 0 0 1 0 1 1 1 1 0 1 1 0 0 0 0 1 1 0 1 0 1 0 1)
9.4819116592407 #(0 1 0 0 1 0 1 1 1 0 0 1 0 1 0 0 0 1 0 1 0 1 1 1 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 1 1 0 0)
- 7.724629 #(0.000000 0.037770 0.391221 1.375190 1.460596 0.247393 0.985674 0.685477 1.513867 0.242692 1.189528 -0.381583 -0.114918 1.528395 0.193795 1.270542 0.094213 0.658575 0.266315 0.285962 0.045650 0.679227 0.998653 1.196159 0.437211 0.628603 0.974912 0.421166 1.382314 1.136409 0.571555 0.233805 0.659202 1.345389 0.542703 1.519544 0.895274 0.518168 0.858083 0.579919 -1.769637 1.628159 0.262016 0.499483 0.259567 1.772999 1.269565 1.330245 0.186473 1.483663 1.715329 0.337532 0.730895 0.759130 0.466503 1.199869 1.885847 1.358627 0.448610)
+ 7.674817 #(0.000000 0.018517 0.358695 1.385949 1.461232 0.264126 0.966469 0.697430 1.506529 0.264217 1.233066 -0.422313 -0.114097 1.544334 0.198775 1.244501 0.107992 0.668216 0.312414 0.290513 0.022046 0.684867 0.986337 1.224846 0.476492 0.627953 0.949269 0.452772 1.392841 1.180357 0.633197 0.263889 0.620308 1.346266 0.548958 1.562315 0.909309 0.537784 0.837910 0.590670 -1.757389 1.673166 0.198430 0.513936 0.261081 1.780499 1.270897 1.345053 0.209762 1.437916 1.721067 0.289046 0.777234 0.788249 0.492237 1.200359 1.922726 1.369656 0.462461)
)
;;; 60 all -------------------------------------------------------------------------------- ; 7.7459
#(60 9.783 #(0 0 0 0 1 0 0 1 1 1 0 0 1 0 1 0 0 1 1 1 0 1 1 0 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 0 0 0 1 0 1 1 0 0 0 1 1 1 1 1 0 0 1 1)
9.575254043103 #(0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 1 1 0 0 0 1 1 1 1 1 0 0 1 1)
- 7.935335 #(0.000000 0.301460 0.154594 0.926161 0.556773 -0.382933 0.258521 1.771478 1.112063 0.562827 0.878233 1.351228 0.062375 -0.076971 1.296801 1.229014 0.667964 -0.039689 1.413006 1.941096 1.392275 1.142934 1.300012 0.678494 1.918106 1.033085 0.728046 0.009373 1.793410 1.277628 0.589589 1.056518 -0.015762 0.079485 0.726388 0.199178 0.523300 1.915194 0.004320 0.733675 0.446087 1.082847 0.832097 0.301438 0.887965 1.529064 -0.135841 1.828425 0.500135 -0.262291 0.479025 0.905992 0.113077 1.003133 1.735616 0.423833 0.255207 0.579853 0.189704 0.407112)
+ 7.854485 #(0.000000 0.330870 0.212782 0.901112 0.626352 -0.457201 0.211182 1.776508 1.150760 0.560146 0.858431 1.302838 0.105442 -0.095041 1.323260 1.195729 0.655632 -0.041916 1.439871 1.887001 1.340430 1.191811 1.373071 0.691447 1.966641 1.008513 0.779866 0.085055 1.838452 1.337936 0.485753 1.050699 -0.006522 0.041190 0.766458 0.171374 0.551741 1.949709 -0.025990 0.752445 0.463071 1.083321 0.895947 0.431913 0.875487 1.443685 -0.181549 1.787444 0.549138 -0.192086 0.352167 0.834083 0.216039 0.893614 1.683274 0.499023 0.152152 0.626009 0.135723 0.357459)
)
;;; 61 all -------------------------------------------------------------------------------- ; 7.8102
#(61 10.140303840769 #(0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 0 1 0 0 1 1 0 1 1 1 1 1 0 0 1 0 1 0 1 1 1 1 0 0 0 1 0 1 1 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 0 1)
9.9175914844707 #(0 0 0 1 0 1 1 1 1 1 1 0 0 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 1 0 0 0 1 1 0 1 1 0 0 1 0 1 1 0 0 1 1)
- 7.980166 #(0.000000 0.298002 1.287475 1.960312 0.460175 1.791127 1.855641 1.091689 -0.161144 0.678997 -0.116225 0.409856 0.585795 0.002885 0.531530 1.347276 0.714227 1.010284 1.089781 0.261707 0.326017 1.228124 0.015720 0.906256 0.613968 0.879374 0.672943 0.040413 1.063426 -0.075697 1.206571 0.067001 1.527392 -0.048466 0.595624 -0.043737 1.552985 0.224001 0.546616 1.630458 1.246807 0.872625 -0.149784 1.431674 0.782321 1.564428 1.095507 1.639891 0.007533 0.204819 0.419727 1.472987 1.196777 -0.284536 0.039196 0.128722 1.521707 1.193340 0.578800 0.931218 1.214417)
+ 7.933501 #(0.000000 0.316947 1.257356 1.973943 0.418213 1.780012 1.863052 1.061405 -0.121817 0.627490 -0.171828 0.435133 0.563904 0.012662 0.518171 1.366328 0.727904 0.990429 1.057023 0.264644 0.357251 1.228333 0.030746 0.869951 0.579905 0.876322 0.642081 0.041291 1.046651 -0.068734 1.197439 0.117655 1.503163 0.001173 0.609887 -0.008913 1.579789 0.246878 0.586994 1.683733 1.229129 0.829682 -0.201466 1.414819 0.803903 1.591371 1.102240 1.679296 -0.006605 0.257190 0.478457 1.463096 1.189938 -0.233749 0.048881 0.159257 1.542954 1.183531 0.619414 0.948990 1.227974)
)
;;; 62 all -------------------------------------------------------------------------------- ; 7.8740
#(62 10.281167984009 #(0 0 0 1 0 1 0 0 0 1 1 1 1 1 0 1 0 0 1 0 1 0 0 1 1 1 0 1 0 1 0 0 0 1 1 0 0 1 0 0 1 1 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0)
9.9292116165161 #(0 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 1 1 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0)
- 7.968356 #(0.000000 0.689926 1.667162 0.265184 1.643217 1.403980 1.845257 0.953399 1.972710 0.568189 1.829521 1.295442 1.369086 -0.000441 1.658967 0.079859 1.035277 0.022371 1.043899 1.201266 0.582228 0.563042 0.031155 1.667933 0.080240 1.124258 0.407876 0.225057 0.715322 0.461372 0.290515 1.575521 1.545048 1.724880 0.276550 1.606355 1.050304 0.701281 1.316985 1.417372 0.109653 0.834160 1.280902 1.230585 0.474195 1.682172 1.468297 1.714391 1.767555 0.622562 1.693925 1.597851 0.758853 0.758111 0.864143 1.070401 0.158039 1.202159 0.831680 0.714845 1.271929 1.570095)
+ 7.867687 #(0.000000 0.712778 1.676017 0.246844 1.656097 1.428520 1.829255 1.013884 0.031332 0.606223 1.867187 1.311811 1.377034 -0.032234 1.689363 0.088000 1.027705 0.008990 1.012020 1.179857 0.606252 0.582295 0.019864 1.670998 0.116916 1.143991 0.399068 0.225588 0.727972 0.510771 0.289954 1.584178 1.516566 1.729886 0.285500 1.619304 1.092962 0.710964 1.283837 1.418411 0.070754 0.941077 1.259732 1.195002 0.450871 1.663832 1.507943 1.715520 1.837497 0.647269 1.684433 1.566868 0.724332 0.751690 0.936294 1.116625 0.171934 1.223209 0.807982 0.666927 1.291168 1.547340)
)
;;; 63 all -------------------------------------------------------------------------------- ; 7.9372
@@ -678,14 +670,14 @@
9.9866892843745 #(0 0 0 1 0 1 1 0 1 1 1 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 1 1 1 0 0 1 1 0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 1 1 1 1 0 1 0 0 0 1 0 1 0)
9.9555234909058 #(0 0 0 1 0 1 1 0 1 1 1 1 1 1 1 0 0 1 1 1 0 1 1 0 1 0 1 1 0 1 0 0 1 1 0 0 1 0 0 1 0 0 1 1 1 1 1 0 0 1 1 1 0 1 0 1 0 0 0 1 0 1 0)
- 7.963699 #(0.000000 0.120770 0.138960 0.549658 1.499183 0.262091 -0.214844 1.294254 0.125432 0.213367 1.513483 0.076256 1.866761 1.152465 1.913705 0.359754 1.245918 0.841095 1.482762 1.191836 0.131307 1.806284 0.961555 0.917079 1.183176 0.982981 1.302112 1.162162 0.340064 1.024450 0.192194 1.827391 1.470071 1.298870 -0.001595 1.389278 1.635319 1.255406 1.258873 0.357715 0.903109 1.850356 1.429853 0.261670 1.571264 0.347552 0.765286 0.429583 0.005987 1.552964 1.156308 1.062538 0.172518 0.944969 1.399210 -0.145553 -0.184651 -0.006678 1.035426 1.699499 0.154196 0.644619 0.549731)
+ 7.921801 #(0.000000 0.142718 0.118610 0.583313 1.534648 0.239524 -0.238709 1.282132 0.133458 0.207889 1.501653 0.097281 1.891492 1.168327 1.945945 0.325567 1.274429 0.867531 1.492235 1.217784 0.148043 1.775676 0.945888 0.994144 1.174855 1.032613 1.304584 1.169802 0.353681 1.013972 0.171608 1.815373 1.492883 1.323277 -0.041232 1.329356 1.654292 1.251598 1.289589 0.390684 0.890799 1.804944 1.430243 0.271409 1.555380 0.406815 0.819576 0.470424 -0.016235 1.561170 1.171048 1.055486 0.179958 0.974818 1.455548 -0.128339 -0.156807 -0.006719 1.063115 1.741340 0.215767 0.667652 0.637400)
)
;;; 64 all -------------------------------------------------------------------------------- ; 8
#(64 10.1628899603246 #(0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 1 1 1 1 1 0 1 0 1 1 1 1 1 1 0 0 1 1 1 0 0 0 0 1 0 0 1 1 0 1 1 0 0 1 1 1 0 1)
9.957244923706 #(0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 1 1 1 0 1 0 1 0 1 1 1 0 1 1 0 0 1 0 1 0 0 0 0 1 1 0 1 1 0 1 1 0 0 1 1 1 1 1)
- 8.195014 #(0.000000 1.933352 0.167943 1.956922 0.343180 1.451461 1.398959 0.432441 0.380810 1.165451 1.214255 -0.051192 1.549597 1.489152 0.225586 -0.213539 1.723909 1.166972 1.730246 0.793721 0.828072 1.647961 0.411987 0.707042 1.268587 1.444952 -1.881440 1.462916 0.601814 1.178559 1.389836 0.154373 -0.061100 1.695069 1.712394 1.504019 1.259700 1.100576 0.245948 -1.892784 -0.091275 1.085523 0.351684 0.448300 0.583966 1.491833 0.741520 1.554532 1.925530 0.150396 1.172479 0.596249 1.287970 0.621516 1.369814 1.204471 0.851244 0.242192 1.004419 0.315304 0.869855 1.807477 0.801657 1.009747)
+ 8.100315 #(0.000000 -0.011431 0.176033 1.946744 0.424758 1.370313 1.373205 0.485618 0.395367 1.180930 1.295182 -0.166759 1.650356 1.563262 0.198740 -0.210928 1.788693 1.253820 1.756557 0.797984 0.791381 1.558266 0.408238 0.655047 1.157938 1.411644 -1.852513 1.401918 0.598778 1.119485 1.334792 0.134729 -0.029955 1.603287 1.767626 1.493217 1.168553 1.035926 0.227798 -1.892022 -0.079697 0.973366 0.272672 0.473264 0.528740 1.463736 0.668768 1.433771 0.000192 0.151895 1.137468 0.547328 1.187962 0.554471 1.421858 1.102070 0.713780 0.209174 0.946060 0.262962 0.836930 1.672612 0.775458 0.984317)
)
;;; 65 all -------------------------------------------------------------------------------- ; 8.0622
@@ -693,7 +685,7 @@
10.18968963623 #(0 0 1 1 1 0 0 0 1 0 1 1 0 1 1 0 0 1 1 0 1 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 1 1 0 1 1 1 0 1 0 0 0 0 0 0 1 0 1 0)
10.157649040222 #(0 0 1 1 1 0 0 0 1 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 1 0 1 0)
- 8.223730 #(0.000000 -0.216496 1.121786 1.273289 1.439484 1.875927 1.640570 -0.264879 1.138525 1.815984 1.253273 1.527800 0.552546 0.958412 1.447600 1.391168 1.659764 0.259765 0.591362 1.863027 0.276348 1.163239 0.911787 1.162732 1.670898 1.007391 1.596396 0.176433 0.879353 0.465067 1.290690 0.224853 1.756309 0.518925 1.148984 0.322092 0.430549 1.229340 1.549004 0.435621 -0.083135 0.302716 0.095942 1.232926 1.814400 0.251349 0.704664 0.298827 1.030002 0.114930 1.348577 1.061931 1.433770 1.194358 1.117348 0.982067 0.793124 -0.004921 -0.077818 1.236652 0.782915 -0.058838 1.258826 0.454796 0.039226)
+ 8.185323 #(0.000000 -0.197695 1.111990 1.279045 1.453568 1.880089 1.652898 -0.258178 1.157306 1.803312 1.241486 1.512776 0.557016 0.971861 1.456350 1.369158 1.671963 0.267724 0.575446 1.861148 0.274483 1.167060 0.913767 1.182435 1.676848 1.014627 1.605815 0.166447 0.871791 0.465671 1.307383 0.216340 1.720968 0.504141 1.148194 0.322179 0.418389 1.213882 1.533998 0.428315 -0.083588 0.303388 0.085230 1.233324 1.827466 0.262733 0.698831 0.283485 1.036767 0.139964 1.359838 1.048009 1.457465 1.221811 1.081299 1.000099 0.801300 -0.019478 -0.102132 1.227842 0.804930 -0.049722 1.277822 0.467848 0.067973)
)
;;; 66 all -------------------------------------------------------------------------------- ; 8.1240
@@ -701,7 +693,7 @@
10.26798183746 #(0 0 0 1 0 1 1 0 0 1 1 0 1 1 0 0 1 1 0 0 0 1 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 1 1 1 1 1 1 0 0 0 1 0 1 0 0 1)
10.208241079264 #(0 1 0 0 0 0 1 1 0 1 1 1 0 0 1 1 0 1 0 1 0 1 1 1 0 0 0 0 0 1 0 0 1 1 1 1 1 1 0 0 0 1 0 1 1 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0)
- 8.277160 #(0.000000 1.004163 1.931753 0.563972 1.569743 1.733213 1.720968 0.933484 0.648449 -0.136607 0.574426 0.808312 0.747139 1.304788 0.195537 0.235548 1.333540 0.352741 1.848914 0.257426 0.984290 1.515509 -0.228757 0.676673 -0.061984 1.427157 1.436556 1.072208 0.182104 0.503485 -0.026448 1.469792 0.925173 1.034154 0.798933 0.815786 1.484266 0.196043 0.324500 1.303622 0.196867 1.234121 1.700712 1.683988 0.069686 0.401118 0.933492 0.265765 0.960256 0.427903 1.495549 0.581166 0.491662 1.841566 1.025788 0.268270 0.638878 -0.047334 0.556826 0.657086 -0.027737 -0.173391 0.749751 0.467312 0.557692 0.728141)
+ 8.227473 #(0.000000 1.042415 1.887166 0.565775 1.579396 1.719934 1.705474 0.943685 0.661300 -0.143842 0.606865 0.800463 0.785441 1.230758 0.206126 0.253062 1.282380 0.336918 1.844611 0.255996 0.986658 1.499102 -0.243536 0.670342 -0.060349 1.419244 1.457699 1.097872 0.191913 0.485811 -0.039263 1.481405 0.951279 1.062328 0.801749 0.815430 1.466674 0.221885 0.333620 1.282712 0.208797 1.192604 1.686847 1.633777 0.050291 0.395663 0.906537 0.269887 0.957914 0.451636 1.504336 0.578081 0.489796 1.817594 1.001371 0.237123 0.628249 -0.006090 0.552512 0.643408 -0.022730 -0.142827 0.708761 0.464445 0.584518 0.740619)
)
;;; 67 all -------------------------------------------------------------------------------- ; 8.1853
@@ -710,14 +702,17 @@
10.445269388021 #(0 1 1 0 0 1 1 0 1 0 0 0 0 0 1 1 0 1 1 0 0 0 1 1 1 1 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 1 1 1 0 1 0 0 1 0 1 0 1 1 1 0 1 1 1 1)
10.422191619873 #(0 1 1 0 0 0 1 1 1 0 0 0 0 0 1 1 0 1 1 0 0 0 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 1 1 1 0 1 0 0 1 0 1 0 1 1 1 0 1 1 0 1)
- 8.421960 #(0.000000 0.697015 1.573676 1.056967 1.931019 0.934030 1.701679 1.062884 0.135843 1.649206 0.195002 -0.050833 1.849544 0.765151 0.726770 0.417157 1.251752 0.917080 1.096282 1.494039 0.929719 0.024556 1.675068 1.612690 -0.279583 1.611938 0.591888 1.395911 1.171189 0.080261 0.520193 -0.160995 -0.153186 0.033435 0.051130 1.190090 0.393274 -0.150395 1.359200 0.039951 1.006945 1.372100 1.455831 1.719786 0.617271 1.039259 1.028488 1.131809 -0.020143 1.386423 0.682091 0.530855 0.697468 0.949283 1.456245 0.629397 1.746312 0.015726 0.920668 1.586676 0.291044 1.113525 1.352437 1.111137 0.706610 0.099030 1.752653)
+ 8.371527 #(0.000000 0.667304 1.614289 1.089357 1.956251 0.923377 1.713806 1.015186 0.123180 1.663435 0.207214 -0.076167 1.846681 0.676152 0.750642 0.466519 1.322950 0.990797 1.150000 1.514207 0.952391 0.017347 1.687021 1.673553 -0.164297 1.672670 0.566874 1.402623 1.185958 0.096090 0.548162 -0.195458 -0.148036 0.060168 0.059858 1.139399 0.389628 -0.227361 1.374299 0.007875 0.978145 1.392195 1.524239 1.761132 0.673543 0.996205 0.965701 1.015470 0.049164 1.454567 0.707106 0.568465 0.651068 0.973138 1.430886 0.594741 1.685990 0.022924 0.946549 1.590136 0.250316 1.172880 1.369594 1.124543 0.708263 0.122913 1.843788)
)
;;; 68 all -------------------------------------------------------------------------------- ; 8.2462
#(68 10.585594177246 #(0 0 1 0 1 0 0 0 1 1 1 1 1 0 1 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 1 1 0 1 1 1 0 1 1 1 1 0 1)
10.460547747753 #(0 0 1 0 1 0 0 0 1 1 1 1 1 0 1 0 0 0 1 1 1 1 1 0 1 0 1 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 1 1 0 1 1 1 0 0 1 1 0 0 1)
- 8.331051 #(0.000000 0.209869 1.809117 1.036471 0.786095 0.889084 0.674215 0.659863 0.295879 0.163245 0.395074 -0.008615 1.606625 0.994334 0.939507 1.034254 0.783239 1.134183 1.357842 1.029666 0.733826 1.696921 0.026852 1.857221 1.448964 0.117222 0.144689 -0.060242 0.454047 0.530131 1.358299 -0.073961 1.618985 1.476155 -0.018342 0.212389 1.686750 1.029819 1.366301 1.461516 0.192326 1.239422 0.647176 0.228567 1.481899 1.159464 0.673633 1.404613 0.188937 1.250444 0.589388 1.606728 1.294233 0.226307 0.447027 1.203174 0.086507 1.248885 0.032607 1.022493 -0.014501 0.717348 1.513174 -0.076335 0.526392 0.698313 1.011977 1.690580)
+ 8.266203 #(0.000000 0.226478 1.821146 1.057445 0.793394 0.899662 0.702448 0.651351 0.314366 0.180781 0.408044 0.002154 1.530234 0.933481 0.856476 0.963314 0.727696 1.059639 1.302323 1.011017 0.722916 1.658223 0.024905 1.842799 1.437222 0.116883 0.141340 -0.092096 0.509434 0.594919 1.323857 -0.089376 1.574790 1.494810 -0.030322 0.221517 1.689280 1.037400 1.340566 1.432886 0.170248 1.251586 0.700773 0.164231 1.489865 1.131187 0.608650 1.419637 0.253857 1.271567 0.561770 1.555543 1.309912 0.184993 0.432075 1.261930 0.054034 1.349534 0.037501 1.035219 -0.081210 0.694312 1.524379 -0.164809 0.510731 0.676488 1.042007 1.630015)
+ 8.242024 #(0.000000 0.311720 1.865339 1.055517 0.760599 0.905874 0.729252 0.721014 0.376540 0.186055 0.494566 0.032123 1.520937 0.954630 0.841167 0.937983 0.806724 1.094218 1.236988 1.029128 0.736908 1.735781 0.048490 1.818576 1.417234 0.168782 0.112905 -0.032077 0.507371 0.645285 1.315761 0.097537 1.540088 1.518741 0.031447 0.233955 1.746253 1.008022 1.322264 1.434433 0.138294 1.251393 0.721203 0.075282 1.458771 1.120583 0.758313 1.491514 0.326829 1.300557 0.558897 1.509869 1.236887 0.148900 0.463343 1.159840 0.008766 1.441017 0.155594 1.099316 -0.132458 0.683016 1.451081 -0.207333 0.527103 0.687610 0.964424 1.546336)
+ 8.224722 #(0.000000 0.330505 1.865198 1.040326 0.771754 0.921861 0.737383 0.718411 0.379200 0.182262 0.477156 0.051344 1.500724 0.923109 0.831201 0.937939 0.809385 1.084115 1.229171 1.029188 0.719143 1.750285 0.058810 1.790220 1.407625 0.195161 0.108082 -0.025586 0.526048 0.664277 1.311945 0.121108 1.528274 1.530636 0.037661 0.239061 1.758149 1.005644 1.307440 1.419352 0.122835 1.252444 0.733189 0.061524 1.442584 1.103276 0.768718 1.478280 0.353696 1.292358 0.546544 1.489825 1.237455 0.161296 0.462545 1.166850 -0.015788 1.448443 0.179431 1.093839 -0.142454 0.678297 1.440454 -0.226500 0.542976 0.693524 0.971708 1.540970)
+ 8.211262 #(0.000000 0.325949 1.863277 1.049284 0.770159 0.927302 0.739172 0.714905 0.377578 0.178114 0.476904 0.050232 1.502189 0.922208 0.827873 0.937668 0.804315 1.080237 1.225817 1.031718 0.724563 1.747914 0.055714 1.781350 1.408955 0.196825 0.100590 -0.031817 0.531600 0.673751 1.312340 0.119291 1.526818 1.536399 0.042376 0.235541 1.763250 1.006743 1.310755 1.427501 0.115890 1.248883 0.727836 0.056419 1.439721 1.096162 0.764357 1.476494 0.371674 1.301600 0.547380 1.486285 1.231046 0.163989 0.467972 1.173776 -0.019447 1.449374 0.182984 1.099620 -0.144102 0.671463 1.446106 -0.227007 0.549644 0.697153 0.974426 1.539199)
)
;;; 69 all -------------------------------------------------------------------------------- ; 8.3066
@@ -725,7 +720,7 @@
10.544771744298 #(0 0 1 1 1 0 0 1 1 0 0 0 1 0 1 1 0 1 1 0 1 1 1 0 0 0 1 1 1 0 1 0 0 1 0 1 1 1 1 1 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 0 0 1 0 0 1 1 0 0 0)
10.495518383865 #(0 0 1 1 1 0 1 1 1 0 0 1 0 0 1 1 0 1 1 0 1 1 1 0 0 0 1 1 1 0 1 0 0 1 0 1 0 1 1 1 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 0 1 0 1 0 0 1 0 0 1 1 0 0 0)
- 8.523465 #(0.000000 0.551013 0.107085 -0.235268 0.652411 1.710303 0.723131 0.053444 1.558606 0.906461 -0.345911 1.439975 0.725565 0.540025 1.148715 0.454227 0.276094 0.934309 0.594052 0.038567 1.147117 1.549754 0.230714 0.383776 0.930978 0.051407 1.541862 0.435588 1.108267 1.525093 1.424173 1.077260 0.489945 0.566938 0.528967 -0.072452 1.871698 1.041310 0.216712 0.679192 1.295280 0.947068 1.728801 0.043802 0.455284 0.551746 0.143495 0.493026 1.296888 -0.010047 -0.485571 1.767538 0.636217 -0.065804 1.399405 1.548248 0.725683 0.493123 1.618517 0.414931 1.260195 0.408911 0.885491 0.917941 1.027672 1.136113 1.296880 1.316177 1.175425)
+ 8.451062 #(0.000000 0.626512 0.102913 -0.210853 0.631407 1.690015 0.710192 0.041042 1.528463 0.884725 -0.391550 1.439191 0.709014 0.593389 1.214081 0.484260 0.262801 0.948578 0.597376 0.018355 1.168273 1.551864 0.235338 0.369402 0.928470 0.083439 1.548457 0.451527 1.100609 1.489983 1.447564 1.046867 0.494252 0.559047 0.504055 -0.096390 1.886972 1.031150 0.183643 0.700932 1.251457 0.988150 1.750877 0.013606 0.461117 0.566294 0.194364 0.479619 1.317047 0.056135 -0.497173 1.813278 0.603894 -0.051833 1.410648 1.530129 0.674904 0.477939 1.615936 0.418033 1.269069 0.424243 0.901557 0.877636 1.052549 1.106990 1.234198 1.323601 1.153727)
)
;;; 70 all -------------------------------------------------------------------------------- ; 8.3666
@@ -734,14 +729,16 @@
10.635682482778 #(0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 1 1 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 1 1 0 1 0 1 1 0 0 0 0)
10.532930374146 #(0 1 1 1 1 1 0 1 1 0 1 1 0 1 1 1 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 1 1 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 0 0)
- 8.548946 #(0.000000 0.567274 1.284963 0.442468 1.108587 1.099462 0.879842 1.265485 1.364910 1.905005 0.814017 1.669289 0.498898 1.105941 1.107691 1.236108 1.021614 1.833837 1.121350 -0.101642 0.281558 1.336008 1.763086 0.824665 0.216160 0.271704 0.739275 -0.000284 0.207759 0.123375 0.337060 1.405790 0.261188 1.622091 0.407795 1.549422 1.087224 -0.014390 1.630838 1.716164 1.417120 0.160803 0.595019 0.714874 0.570847 0.051666 0.281434 0.172638 0.157992 1.237582 1.062796 1.896457 -0.217044 0.609285 1.495084 0.581539 0.516866 1.619107 1.455590 0.607713 0.093253 1.582330 0.133278 -0.129044 1.078828 1.109156 0.624242 0.263387 0.069301 1.200698)
+ 8.447984 #(0.000000 0.572911 1.336277 0.350404 1.057558 1.058240 0.808100 1.231263 1.347023 1.908490 0.743806 1.685740 0.496463 1.011608 1.166851 1.281784 1.016601 1.815156 1.094034 -0.019119 0.341492 1.293199 1.792051 0.827258 0.140640 0.324893 0.709160 -0.047692 0.190350 0.079962 0.309718 1.409583 0.268151 1.588214 0.425928 1.595124 1.089296 -0.059508 1.671054 1.856496 1.409830 0.193704 0.532286 0.736689 0.611309 0.057264 0.327612 0.193820 0.140887 1.323454 1.088421 1.937670 -0.216334 0.618992 1.479979 0.616104 0.440796 1.649344 1.380442 0.560084 0.165653 1.641709 0.009755 -0.147473 1.022757 1.170010 0.645005 0.355963 0.079063 1.216178)
)
;;; 71 all -------------------------------------------------------------------------------- ; 8.4261
#(71 10.922951698303 #(0 1 0 1 0 1 1 0 1 0 1 1 1 1 1 0 1 0 0 0 0 0 0 1 1 0 1 1 1 1 1 0 0 1 0 0 1 1 0 0 1 1 0 0 0 1 1 1 1 0 1 1 1 0 1 0 1 1 0 1 1 0 0 0 0 1 1 1 1 0 0)
10.610488331633 #(0 1 0 1 0 1 1 0 1 0 1 1 1 1 1 0 1 1 0 0 0 1 0 1 1 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 1 1 1 0 1 1 1 0 1 0 1 0 0 1 1 0 0 0 0 1 1 1 1 1 0)
- 8.527499 #(0.000000 0.238782 -0.021674 1.243114 0.086941 0.151109 1.176500 1.341651 0.055657 1.459705 0.416120 1.083516 -0.130666 0.805893 0.462102 0.950745 0.948691 0.873012 0.702222 0.615804 0.738790 0.397311 0.442814 1.110078 0.430188 1.183652 1.057855 1.061383 1.212047 0.729209 -0.382323 0.513719 0.847894 0.339739 0.092567 1.637865 -0.061885 0.759516 0.975238 -0.016014 1.282647 -0.018797 0.681636 0.350503 1.758705 1.313524 0.760397 -0.001057 0.821121 1.093506 1.539552 1.845228 -0.073113 1.256935 -0.097281 0.423310 0.873109 0.916438 0.361002 0.152789 1.523871 0.210751 0.818548 1.041290 0.905930 0.056581 1.654197 0.271972 1.530966 0.611381 0.193604)
+ 8.440233 #(0.000000 0.281620 -0.068040 1.212994 0.082884 0.151338 1.172975 1.340633 0.089092 1.520939 0.390424 1.059180 -0.143687 0.793528 0.464831 0.964500 1.038592 0.924100 0.699491 0.628415 0.728953 0.419378 0.416939 1.086266 0.469083 1.218829 1.080263 1.040618 1.221008 0.783493 -0.376804 0.563021 0.825550 0.395924 0.099140 1.667506 -0.052959 0.746264 1.012590 0.010062 1.283091 0.079604 0.707938 0.399370 1.699131 1.331692 0.758939 0.038914 0.842781 1.133462 1.571778 1.821535 -0.070164 1.338298 -0.043193 0.457364 0.927043 1.018106 0.394036 0.214715 1.525753 0.207051 0.804055 1.078445 0.878290 0.145754 1.688584 0.323450 1.544219 0.646703 0.249628)
+ 8.439238 #(0.000000 0.276107 -0.070132 1.211706 0.085429 0.156807 1.166165 1.340130 0.080969 1.510958 0.384898 1.063583 -0.144644 0.790391 0.457140 0.966153 1.037302 0.920679 0.702021 0.620618 0.725639 0.422874 0.420100 1.083549 0.467428 1.217728 1.079739 1.045814 1.218343 0.794090 -0.385148 0.555816 0.824477 0.396408 0.100580 1.660083 -0.057128 0.752895 1.014631 0.012372 1.282970 0.077081 0.706858 0.391749 1.701713 1.330159 0.757882 0.051854 0.831656 1.131587 1.559808 1.815092 -0.076761 1.329302 -0.051492 0.453939 0.924078 1.027972 0.393327 0.213516 1.518846 0.220128 0.798546 1.071601 0.874120 0.138547 1.681211 0.324199 1.543502 0.644521 0.242135)
+ 8.435957 #(0.000000 0.269297 -0.077334 1.227986 0.099346 0.153339 1.156544 1.338818 0.080358 1.508492 0.386475 1.057831 -0.149696 0.780050 0.446451 0.966892 1.046573 0.909796 0.711860 0.607648 0.728829 0.414295 0.435287 1.095696 0.468651 1.208714 1.065645 1.029719 1.218527 0.780257 -0.388778 0.558077 0.822807 0.385720 0.107325 1.650721 -0.074002 0.745630 1.019096 -0.000921 1.265232 0.077381 0.702289 0.388266 1.704005 1.314898 0.763242 0.065968 0.827575 1.131010 1.543903 1.801281 -0.090592 1.331199 -0.070188 0.438312 0.911576 1.021247 0.397335 0.197463 1.524582 0.222542 0.796608 1.060561 0.881618 0.139332 1.671144 0.318235 1.532079 0.634108 0.221934)
)
;;; 72 all -------------------------------------------------------------------------------- ; 8.4853
@@ -749,7 +746,8 @@
10.908146369485 #(0 1 1 0 0 0 0 1 0 1 1 0 1 1 1 1 0 1 1 0 0 1 1 0 1 0 0 1 1 1 1 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 1 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 1 0)
10.800657366855 #(0 1 1 0 1 0 0 1 1 1 1 0 1 1 1 1 0 1 1 0 0 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 0 1 0 0 0 0 0 0 1 0)
- 8.650887 #(0.000000 1.870567 0.882401 0.662026 1.929554 1.119676 -0.078552 0.550178 0.682161 1.391692 1.611212 1.179086 1.154813 0.262828 0.443203 1.573453 0.169912 1.033918 0.341714 1.428578 1.040600 1.353808 0.018775 0.144507 -0.002773 0.384895 0.391287 0.840157 0.620898 0.254117 0.076909 0.606246 0.693180 0.652553 0.921046 0.422215 1.711714 1.474682 0.044751 1.209796 1.199515 1.014690 0.353469 0.595401 0.043657 0.586419 0.247622 0.581550 1.648039 -0.261715 0.283487 1.396398 1.500714 0.225182 0.357483 1.682496 1.108568 1.738813 1.062855 0.498823 1.771965 1.128873 1.743639 0.074891 0.770915 1.360327 0.646427 1.539407 0.322892 1.087724 0.180857 -0.085961)
+ 8.528747 #(0.000000 1.883315 0.883590 0.690111 0.012330 1.169086 -0.124532 0.562751 0.613246 1.384106 1.627459 1.146447 1.201359 0.274448 0.365484 1.598744 0.140054 0.961385 0.362349 1.466966 1.030553 1.398472 -0.000367 0.001024 -0.025483 0.335217 0.346768 0.862581 0.605107 0.202521 0.057766 0.489894 0.649311 0.632856 0.820182 0.442507 1.699728 1.398537 0.085900 1.223891 1.214677 0.980021 0.294920 0.603111 0.056460 0.611655 0.144347 0.600727 1.667324 -0.266392 0.269711 1.380664 1.454186 0.206334 0.284467 1.657472 1.204428 1.760572 1.070909 0.568248 1.669320 1.080200 1.706746 -0.023626 0.788085 1.406029 0.669594 1.501538 0.346401 1.077695 0.139246 -0.116060)
+ 8.524120 #(0.000000 1.942574 0.870705 0.723005 -0.014356 1.206056 -0.144910 0.592480 0.597980 1.389366 1.629268 1.139761 1.191623 0.298282 0.380449 1.596989 0.122523 0.970747 0.353439 1.458507 1.003506 1.410764 0.010467 0.029221 0.006977 0.338094 0.347615 0.835002 0.567277 0.214634 0.083557 0.464996 0.649155 0.627271 0.820285 0.390725 1.722337 1.436483 0.070515 1.276194 1.226496 1.002404 0.336580 0.645125 0.064491 0.593640 0.212773 0.611179 1.626395 -0.232000 0.321199 1.392117 1.449016 0.249418 0.337273 1.669998 1.158793 1.785090 1.074999 0.600834 1.663520 1.125728 1.734174 -0.000002 0.804846 1.420378 0.672749 1.494501 0.385676 1.125444 0.181997 -0.123067)
)
;;; 73 all -------------------------------------------------------------------------------- ; 8.5440
@@ -758,7 +756,7 @@
10.876985549927 #(0 0 1 1 0 0 0 0 1 0 0 0 1 1 1 1 1 0 0 0 0 1 0 1 1 1 0 1 0 1 1 1 0 1 1 0 0 1 0 0 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0)
10.773231506348 #(0 0 1 1 0 0 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0 1 1 1 0 1 0 1 1 1 0 1 1 0 1 1 0 0 1 0 0 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 0 1 1 1 0 0 1 0 1 0 1 0 0 1 1)
- 8.698791 #(0.000000 -1.942518 1.851457 1.387496 0.843028 0.859052 0.740801 0.135468 1.226363 0.088162 1.144415 -0.188945 1.001889 0.967540 1.233867 1.857127 1.258766 -1.804163 0.141309 0.708278 1.815288 1.094097 -0.206810 1.830295 0.237711 1.581334 0.876265 1.102932 1.258564 1.678630 0.301035 0.064819 1.845672 1.694076 0.254231 0.492540 1.789590 1.223860 0.677207 0.906377 1.417326 -0.229635 0.346126 -0.081019 1.786592 0.002141 0.141916 1.432097 0.157589 1.529006 1.903798 1.627723 0.398527 1.310764 1.655073 0.492335 1.214768 0.810475 0.621757 1.536389 1.169645 0.692090 0.552245 1.129954 1.660696 -0.376913 0.963607 0.135125 1.169533 1.673072 0.228192 1.382869 0.547257)
+ 8.630797 #(0.000000 -1.923890 1.832475 1.411348 0.859220 0.830281 0.749781 0.156342 1.234837 0.078378 1.154778 -0.170957 0.942563 0.955415 1.244824 1.878806 1.239960 -1.790167 0.133626 0.685252 1.835694 1.060345 -0.225738 1.853239 0.255001 1.597038 0.867320 1.104256 1.230951 1.708734 0.332655 0.021462 1.841450 1.675514 0.227738 0.431150 1.788664 1.229516 0.627705 0.900863 1.387107 -0.278699 0.344257 -0.112826 1.769201 0.017115 0.168498 1.442722 0.181954 1.512737 1.889099 1.633559 0.442801 1.331238 1.701188 0.562452 1.186051 0.822422 0.598601 1.519339 1.114824 0.679505 0.517142 1.104552 1.614818 -0.364173 0.949305 0.151007 1.204928 1.660235 0.231539 1.420986 0.521946)
)
;;; 74 all -------------------------------------------------------------------------------- ; 8.6023
@@ -767,14 +765,16 @@
10.70422077179 #(0 1 1 1 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 0 0 1 0 1 0 1 1 0 1 1 1 0 0 1 0 0 1 0 0 0 0 1 1 1 0 0 1 1 0 1 1 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0)
10.684138298035 #(0 1 1 0 0 1 1 1 1 1 0 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 1 1 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1)
- 8.710265 #(0.000000 1.287394 0.183806 1.707846 1.104971 0.052643 1.079680 0.751710 0.073963 0.907633 0.127925 0.774351 1.788562 0.045144 1.270971 0.208298 1.021819 1.518810 0.037608 0.672325 1.465597 -0.005986 -0.012581 1.187180 1.244818 -0.211706 0.864799 0.850726 0.157316 1.472437 0.527960 -0.558358 1.823113 1.621387 0.011142 -0.032903 1.376262 -0.067293 1.392556 0.314826 0.053341 1.675184 1.551710 1.033266 0.856359 1.273923 1.572665 -0.482652 0.336621 0.986008 1.244754 0.746641 -0.099050 0.077982 0.267310 0.589977 -0.124701 0.137556 1.246845 0.859306 0.734758 0.920267 -0.231756 0.415170 -0.099393 0.742257 0.401970 0.641347 1.302690 1.035523 -0.230687 -0.334275 1.408156 1.328799)
+ 8.603399 #(0.000000 1.289121 0.179813 1.664436 1.030473 0.038221 1.109233 0.685205 0.104720 0.900174 0.139109 0.708795 1.757883 0.005214 1.270272 0.170764 1.015824 1.473396 0.062110 0.642280 1.511753 0.076851 -0.052704 1.170215 1.201214 -0.177624 0.916285 0.847959 0.091085 1.524256 0.503482 -0.580848 1.733880 1.643576 0.000848 -0.018166 1.335087 -0.101736 1.383297 0.172882 0.092654 1.632801 1.576673 1.131639 0.809857 1.243319 1.552010 -0.565113 0.294426 0.995148 1.271367 0.711478 -0.110727 0.020374 0.247625 0.616565 -0.053557 0.075233 1.223381 0.936233 0.736987 0.954827 -0.260341 0.371886 -0.036859 0.720303 0.355561 0.762869 1.313759 1.071846 -0.121195 -0.411196 1.395555 1.292686)
+ 8.591160 #(0.000000 1.326875 0.186257 1.626649 1.046949 0.068365 1.097543 0.632566 0.101739 0.852702 0.180479 0.729463 1.764788 0.005610 1.290265 0.148260 1.081427 1.512147 0.162026 0.574244 1.504646 0.085531 -0.066851 1.077353 1.134998 -0.152198 0.976664 0.806684 0.065422 1.591714 0.474911 -0.516258 1.776006 1.654626 0.055300 0.021368 1.416531 0.000458 1.361199 0.255855 0.138454 1.664281 1.602763 1.147659 0.788111 1.292070 1.559842 -0.536720 0.349641 1.120249 1.329697 0.664649 -0.007842 0.082737 0.338102 0.636398 -0.055455 0.171947 1.185452 0.909087 0.850936 1.049527 -0.197575 0.385195 0.057369 0.753759 0.352103 0.888812 1.289783 1.091336 -0.065007 -0.319902 1.484993 1.231017)
+ 8.582125 #(0.000000 1.331951 0.172085 1.619556 1.045558 0.064616 1.098625 0.631277 0.106067 0.858641 0.170939 0.725442 1.756423 0.005280 1.298322 0.147872 1.088088 1.511852 0.162353 0.576812 1.507654 0.088058 -0.077688 1.069594 1.132792 -0.149304 0.977809 0.810174 0.060215 1.594904 0.470550 -0.519833 1.781006 1.661407 0.048679 0.022932 1.408891 0.001987 1.357016 0.250402 0.134420 1.656892 1.599225 1.154537 0.782641 1.288749 1.559885 -0.530388 0.349702 1.127696 1.328278 0.660081 -0.006398 0.073039 0.339832 0.647245 -0.051963 0.165338 1.178413 0.917107 0.855539 1.043548 -0.192031 0.379310 0.056987 0.751942 0.357165 0.892883 1.293292 1.085892 -0.069051 -0.316180 1.486047 1.232879)
)
;;; 75 all -------------------------------------------------------------------------------- ; 8.6603
#(75 11.477107048035 #(0 1 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 1 0 1 1 1 1 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 1 1 0 1 1 0 0 0 0 0 1 1 0 1 1 1 1 1 0 1 0 1 1 1 0 1 1 1 0)
10.935811368418 #(0 1 0 1 0 1 1 0 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 1 1 0 0 0 0 1 1 0 1 1 1 1 1 0 1 0 0 1 1 0 1 0 1 1)
- 8.871641 #(0.000000 1.837078 1.287108 1.338880 0.297328 1.076946 1.013091 0.138152 0.108080 1.329165 1.091513 1.209507 1.612712 0.323193 0.394187 1.697249 1.559087 0.872748 1.893328 1.208758 1.193513 1.283350 1.307000 1.059102 1.431154 1.391207 0.747873 0.761160 0.232357 0.987735 1.282174 0.395314 0.143025 1.294728 1.434846 0.395496 0.883656 1.801056 0.494765 0.444237 0.570271 1.086637 1.344145 0.422724 1.081506 0.273237 1.264941 1.520967 1.449355 1.539558 1.523786 0.082254 1.223985 0.119938 1.215270 0.553645 -0.049318 1.455935 0.096777 1.458376 0.719719 0.527918 0.545628 1.348497 1.599842 -0.026747 -0.120541 0.232441 1.687531 0.820701 1.350680 0.295227 0.891788 0.584925 1.648239)
+ 8.755345 #(0.000000 1.811391 1.281850 1.365930 0.279034 1.044383 1.097740 0.155993 0.162089 1.326284 1.064053 1.233279 1.565090 0.333632 0.398039 1.695988 1.552069 0.889435 1.911860 1.073720 1.184158 1.261880 1.338328 1.083645 1.425949 1.423851 0.751021 0.666831 0.255814 1.029354 1.286567 0.429427 0.119410 1.267616 1.511610 0.337376 0.834976 1.830007 0.496678 0.548906 0.631144 1.125902 1.326330 0.311198 1.222139 0.336019 1.265751 1.546506 1.485703 1.613773 1.584545 0.067409 1.220551 0.090046 1.259570 0.636480 -0.072408 1.420429 -0.006880 1.420828 0.792488 0.574593 0.452237 1.507954 1.678840 0.022329 -0.093752 0.297194 1.717148 0.832669 1.391323 0.335323 0.823262 0.539373 1.686878)
)
;;; 76 all -------------------------------------------------------------------------------- ; 8.7178
@@ -782,14 +782,14 @@
11.208243370056 #(0 1 1 1 1 0 0 1 0 1 1 1 0 1 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 1 1 1 0 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 0 0 0 1 0 0 1 0 1 0)
10.689208030701 #(0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 1 1 1 0 1 0 0 0 1 0 1 1 0 1 1 0 1 1 1 0 0 1 1 0 1 0 1 1 0 1 1 1 1 0 0 0 1 0 0 1 0 0 0)
- 9.040248 #(0.000000 -0.075445 -0.042067 1.424791 1.270623 0.355624 0.690563 1.361008 0.641427 1.467497 1.062640 -0.127421 1.200218 1.653860 0.282435 0.366944 1.469308 0.682162 1.189340 0.840006 1.603699 0.381223 1.349013 1.920679 1.408846 0.812062 0.690615 0.929610 0.668785 1.400883 -0.036573 0.683856 1.386673 -0.012250 1.017152 0.838723 0.860382 0.274410 0.201901 0.584226 1.032505 0.008920 0.688996 -0.012891 1.026476 0.635210 1.188596 1.830061 0.226973 0.017634 1.680354 1.120095 0.107369 1.897715 0.358667 1.766040 1.078351 0.728649 0.980811 0.983379 0.932231 0.780534 0.294511 0.873922 0.899058 0.476207 1.371348 1.150048 1.722464 1.700085 0.898642 0.641157 1.133137 1.748584 1.394350 0.997489)
+ 8.878078 #(0.000000 0.004773 -0.103492 1.464526 1.355493 0.373769 0.730874 1.355515 0.636215 1.423074 0.991404 -0.128344 1.180734 1.607182 0.256388 0.331417 1.493120 0.694821 1.166715 0.886075 1.583791 0.432618 1.387336 1.881585 1.366148 0.771369 0.629827 0.966763 0.663154 1.413611 -0.002086 0.730889 1.349619 -0.048964 0.970097 0.832475 0.921014 0.180017 0.293666 0.668528 1.000188 -0.048179 0.631573 0.098611 0.972851 0.610154 1.122683 1.900205 0.356262 -0.038601 1.677759 1.138261 0.195820 1.871526 0.300899 1.913740 1.053747 0.670960 0.936839 1.026203 0.845177 0.815083 0.253447 0.812786 0.944364 0.432314 1.255944 1.256565 1.848108 1.637633 0.917306 0.586309 1.307991 1.824225 1.369054 1.025254)
)
;;; 77 all -------------------------------------------------------------------------------- ; 8.7750
#(77 11.25105381012 #(0 1 0 0 1 1 1 1 1 0 0 1 0 1 0 1 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 1 1 1 0 1 1 0 0 1 0 1 1 0 1 1 1 0 1 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0)
11.114716461811 #(0 1 0 0 1 1 1 1 1 0 0 1 0 1 0 1 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 1 1 1 0 1 1 0 0 1 0 1 0 0 1 1 1 0 1 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 1 1 0 0 0 1 0 1 1 0 0 0 0)
- 9.093281 #(0.000000 0.268506 0.654164 0.556938 1.152166 1.769882 0.409895 0.190010 0.765700 0.549956 0.412931 0.391014 1.063040 0.315330 0.376068 0.648792 1.485718 1.360629 0.579766 1.837226 -0.144138 0.412423 0.244810 -0.084130 0.640231 0.226674 -0.177448 0.834094 0.970834 1.563778 0.847859 1.292791 -0.176772 1.361017 0.560080 1.864732 -0.065711 1.353406 1.187217 0.743057 1.831069 1.131362 0.845461 0.133460 0.524276 -0.101328 1.764124 0.377556 0.595964 1.239042 0.534738 1.268476 0.837906 0.015073 0.515534 0.431954 0.593689 1.231356 0.399300 0.866039 1.566497 1.530545 1.733602 1.745187 0.853868 1.234497 0.492726 -0.430779 1.815374 1.112892 1.116718 0.301242 0.565192 0.206109 1.443766 0.079898 1.339141)
+ 8.992530 #(0.000000 0.273305 0.636541 0.591786 1.250333 1.821197 0.289514 0.259887 0.828920 0.561916 0.421920 0.344525 1.060159 0.255882 0.401122 0.700772 1.399348 1.460674 0.587737 1.876361 -0.129897 0.435555 0.243080 -0.128768 0.621493 0.179555 -0.123939 0.770501 0.903705 1.643498 0.856236 1.258936 -0.134199 1.410235 0.590105 1.848959 -0.068978 1.350934 1.241367 0.706731 1.803219 1.123293 0.894736 0.263524 0.490047 -0.062351 1.742742 0.410358 0.604497 1.181481 0.546114 1.238346 0.767583 -0.020130 0.454277 0.374986 0.564309 1.227403 0.488899 0.912412 1.609177 1.507132 1.660870 1.717098 0.846584 1.245017 0.496816 -0.401436 1.815649 1.047338 1.092837 0.258642 0.542486 0.084081 1.405602 0.010906 1.314360)
)
;;; 78 all -------------------------------------------------------------------------------- ; 8.8318
@@ -797,7 +797,7 @@
11.541502084124 #(0 1 1 0 1 0 0 0 1 1 0 0 1 0 1 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 0 0 1 0 1 1 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 0 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 1)
11.471938943963 #(0 1 1 0 1 0 0 0 0 1 0 0 1 0 1 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 0 0 1 0 1 1 1 1 0 0 0 1 1 1 0 1 0 0 1 0 1 0 1 1 1 1 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 1 1 0 0 0 1)
- 9.173513 #(0.000000 1.042188 1.313997 -0.061302 0.455073 1.707540 0.185434 1.799202 1.242388 -0.219501 1.570005 1.746164 1.045867 0.931763 0.397061 1.179761 0.819306 1.625801 0.410297 0.373007 0.955310 1.475242 0.639347 1.428343 0.812053 0.320660 1.661993 0.368271 1.117158 1.701048 0.985495 1.732507 1.595598 1.077858 1.241969 0.701919 1.172030 1.602934 0.852170 0.213751 1.083117 1.195487 -0.017351 0.790718 0.699732 1.228198 1.893981 1.198611 1.262036 0.620175 0.797988 1.509455 1.061465 1.446777 0.690537 0.052392 0.535614 -0.040909 1.841810 1.466898 1.754456 1.171756 0.208123 -0.132922 -0.004080 0.294282 0.263483 0.996461 0.960394 0.774327 1.415000 1.417793 0.290446 -0.076477 1.623453 1.637349 1.527714 0.602096)
+ 9.047323 #(0.000000 1.103444 1.308431 -0.073750 0.396510 1.700168 0.209666 1.815522 1.245080 -0.198930 1.501088 1.734183 1.117197 0.953782 0.412310 1.142138 0.864978 1.603396 0.364927 0.353877 0.954118 1.526240 0.633931 1.447827 0.853959 0.337247 1.611050 0.497681 1.109996 1.677280 0.952764 1.788004 1.640054 1.140673 1.226322 0.670284 1.187528 1.621796 0.838135 0.310998 1.061464 1.157091 0.035864 0.757372 0.699814 1.209888 1.906054 1.207365 1.315770 0.590429 0.772908 1.560852 1.046339 1.453080 0.729462 -0.013257 0.473486 -0.055020 1.853466 1.445753 1.752529 1.212711 0.230008 -0.101047 -0.069474 0.251241 0.279493 0.999207 0.973809 0.824344 1.432279 1.418756 0.309234 -0.071261 1.634142 1.819965 1.556528 0.679157)
)
;;; 79 all -------------------------------------------------------------------------------- ; 8.8882
@@ -805,7 +805,7 @@
11.407577489438 #(0 0 1 1 1 0 0 1 1 1 0 0 1 1 1 1 0 0 0 1 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 1 1 1 0 0 1 0 1 1 1 1 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 1 0 1 1 0 0 1 0)
11.334476470947 #(0 0 1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 0 0 1 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 1 1 1 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0)
- 9.142173 #(0.000000 1.009943 1.285700 1.375442 0.776373 0.534120 1.405838 1.765481 0.171297 0.688213 0.162164 -0.041698 0.155640 0.949852 0.791854 1.714266 0.245729 -0.050759 1.021276 0.929833 0.357152 0.059585 0.951191 0.324384 0.927296 0.137403 1.326314 0.590706 1.924323 0.428987 0.129693 0.565657 0.822423 0.674889 0.540485 1.286263 1.070812 0.290676 1.753468 1.479513 1.607333 -0.010780 1.597661 0.798796 -0.019516 1.534740 1.871509 1.397930 1.247239 0.535649 1.604564 0.514763 0.686088 1.145948 1.721685 1.233029 -0.107350 0.401421 0.988051 0.948839 0.825125 0.996982 0.002541 0.094470 1.532265 1.556173 1.538176 0.936466 1.577854 0.374427 1.156909 0.201091 1.493419 0.261171 0.802474 1.760587 0.458117 1.499052 1.660314)
+ 9.007793 #(0.000000 1.060760 1.270595 1.395270 0.747209 0.556415 1.415765 1.824860 0.153530 0.687376 0.170695 -0.070949 0.111445 0.914133 0.754875 1.717328 0.274765 -0.032651 1.050414 0.853924 0.337576 0.044553 0.964259 0.453524 0.969709 0.077253 1.281589 0.594787 1.936445 0.461093 0.160087 0.566315 0.831740 0.689893 0.505754 1.296659 1.012435 0.317563 1.706288 1.418620 1.535781 0.052256 1.735628 0.720267 0.061761 1.549416 1.862201 1.423098 1.392412 0.509761 1.552433 0.499252 0.564017 1.159038 1.640094 1.227051 -0.087738 0.377383 0.960490 0.913356 0.794916 1.038013 0.120764 0.131968 1.459038 1.624999 1.572557 0.892314 1.717436 0.410694 1.149208 0.124134 1.487383 0.252717 0.771374 1.872563 0.450972 1.506829 1.718108)
)
;;; 80 all -------------------------------------------------------------------------------- ; 8.9443
@@ -814,7 +814,7 @@
11.438133302082 #(0 1 1 1 1 1 0 1 0 0 1 1 0 1 1 0 1 1 0 0 1 1 1 1 1 1 0 1 0 0 0 1 1 0 0 1 1 1 1 1 1 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 1 1 0 1 0 1 1 1 1 1 1 1 1 0 1 0 1 0 0 1 1 0 1 0)
11.30185508728 #(0 1 1 1 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0 0 0 1 1 1 1 1 0 1 0 0 0 1 1 0 0 1 1 0 1 1 1 0 0 0 0 1 0 1 0 1 0 1 1 0 0 1 1 1 0 1 0 1 1 1 1 1 1 1 1 0 1 0 1 0 0 1 0 0 1 0)
- 9.306407 #(0.000000 0.714198 0.687538 0.507305 0.964626 1.707424 1.807729 1.912955 1.610020 1.360139 0.806846 0.131231 0.582898 0.547536 0.238967 0.392959 1.194186 0.576776 1.520247 1.165922 -0.025719 0.518403 0.475993 0.926181 0.369735 1.445238 1.793879 0.121918 0.475927 0.061585 1.582441 0.213991 1.765312 1.189728 0.799436 -0.257222 0.952372 0.494286 0.593438 0.991343 0.644404 1.535304 0.094355 1.140912 0.042607 0.508167 1.366216 0.068817 0.796950 1.354070 0.751968 0.245469 0.847860 0.908795 1.648627 0.426244 0.709288 1.114429 0.996056 0.602666 0.426340 0.645434 1.489671 1.809742 1.316469 0.869508 0.134400 0.123994 1.318383 1.597540 0.885787 0.126357 1.514982 -0.004651 0.535573 1.947022 1.824354 1.766184 0.800287 0.098453)
+ 9.205147 #(0.000000 0.703405 0.700902 0.514248 0.946347 1.663177 1.769666 1.900686 1.605454 1.392768 0.822370 0.129046 0.628952 0.504124 0.239927 0.373824 1.188981 0.599928 1.502802 1.162935 -0.023345 0.475535 0.483598 0.925389 0.383940 1.437773 1.760107 0.103226 0.468412 0.027701 1.582921 0.198998 1.802909 1.221218 0.826341 -0.289910 0.955245 0.507205 0.570247 1.013687 0.616928 1.572092 0.109272 1.074474 0.058010 0.559979 1.336420 0.017001 0.758622 1.406219 0.748581 0.229327 0.788929 0.897241 1.675194 0.416596 0.657213 1.130513 0.994275 0.631492 0.442734 0.619436 1.481023 1.801322 1.346879 0.866307 0.152470 0.136080 1.314223 1.591664 0.901219 0.125012 1.536807 -0.062453 0.507717 1.920970 1.851607 1.792365 0.825099 0.127129)
)
;;; 81 all -------------------------------------------------------------------------------- ; 9
@@ -822,14 +822,14 @@
11.501712958685 #(0 0 0 0 1 1 1 1 1 1 0 1 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 1 0 0 0 1 1 0 1 1 0 1 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 1 1 0 1 1 0 1 0 1 0 0 0 0 0 1 0 0)
11.22668050284 #(0 0 0 0 1 1 1 1 1 1 0 1 1 0 0 0 1 0 1 1 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 1 0 0 0 1 0 0 1 1 0 1 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 1 1 1 1 0 0 1 0 1 0 0 0 0 0 1 0 1)
- 9.356304 #(0.000000 0.839969 0.746333 0.363775 0.628960 1.058153 0.720018 1.705240 1.340669 1.518008 0.579728 0.116441 1.109781 0.111312 1.194246 1.668653 1.212080 1.013234 1.079228 0.044412 1.602731 0.223959 1.864864 0.120766 0.752430 0.991248 1.325356 1.538378 0.967387 0.106751 1.035847 1.146474 0.531986 1.630570 1.814600 0.904151 1.640690 0.543660 0.623818 1.764117 0.929877 1.725308 0.034659 1.912933 0.889336 1.782439 0.286609 0.247588 0.741058 0.851948 -0.090713 0.552455 0.499472 0.005481 0.025171 0.951239 -0.281539 1.887299 1.867252 1.443161 1.156409 0.270342 1.839217 0.381931 1.255066 1.072675 0.556032 0.023553 0.399564 0.292185 1.005902 1.707588 1.108348 0.503374 -0.160828 -0.049379 0.333101 1.613390 0.110781 0.131426 -0.000793)
+ 9.189928 #(0.000000 0.851012 0.768389 0.384178 0.629332 1.095883 0.750397 1.692090 1.295251 1.512743 0.600745 0.135186 1.014670 0.097959 1.252734 1.706618 1.237750 0.899818 1.109359 0.040794 1.561069 0.191237 1.863568 0.045500 0.770289 0.932926 1.322344 1.456895 1.077896 0.085647 0.981129 1.098290 0.478443 1.611472 1.891445 0.774321 1.589013 0.553775 0.645552 1.839453 0.944792 1.714307 0.018158 1.905480 0.842050 1.722840 0.191956 0.280845 0.726838 0.805330 -0.225466 0.558169 0.445022 -0.020465 -0.045392 0.915085 -0.314722 1.895354 1.892329 1.496213 1.131848 0.329090 1.851317 0.393350 1.172486 0.993907 0.573944 -0.073421 0.396100 0.201460 0.990213 1.711288 1.122809 0.529811 -0.167865 -0.059194 0.299886 1.636984 0.170455 0.189573 -0.057418)
)
;;; 82 all -------------------------------------------------------------------------------- ; 9.0554
#(82 11.697486877441 #(0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 1 0 1 0 0 0 0 1 1 1 1 0 1 0 0 1 0 0 1 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 1 1 1 0 1 1 0)
11.601468306037 #(0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 1 1 1 0 1 1 1 1 1 1 0 0 0 1 1 0 0 1 1 1 0 1 0 0 1 0 1 0 1 1 1 1 1 1 1 0 1 0 0 0 1 0 1 1 0 1 1 1 0 0 0 1 1 0 1 0 0 0 0 0 1 1 1 0 0 1 0)
- 9.394869 #(0.000000 1.600718 0.074166 1.028882 0.418426 1.732618 0.712636 -0.035371 1.210107 0.455867 0.485461 0.424037 -0.288033 1.776440 1.051102 0.246089 1.292411 -0.124938 1.339004 1.077988 0.447048 1.558154 0.444427 1.757427 0.335067 0.356130 1.157410 1.673247 0.375118 0.261925 0.836292 1.208202 1.850085 0.906770 0.034074 0.105541 0.113663 1.511712 1.279324 0.524587 1.570402 1.605031 0.102882 0.377240 0.211230 1.059644 1.597890 0.414411 1.913593 -0.121398 1.194372 1.436419 1.555978 0.685857 1.628095 -0.061997 0.390114 1.444596 1.686473 1.031513 0.337289 0.936163 0.843741 0.371311 1.838875 0.546370 0.848798 1.515929 0.710918 0.778000 0.161700 -1.868843 0.565579 0.419009 0.539134 1.171999 1.175335 0.884262 1.426049 1.116083 1.619843 0.408598)
+ 9.317636 #(0.000000 1.580147 0.065417 1.020661 0.450092 1.747766 0.719963 -0.007854 1.192304 0.479649 0.494873 0.375688 -0.310789 1.783238 1.042148 0.261862 1.282872 -0.098360 1.334176 1.089010 0.471906 1.602564 0.406881 1.794327 0.343668 0.355129 1.122184 1.676936 0.380614 0.271707 0.799437 1.205433 1.863787 0.899851 0.082806 0.052170 0.106035 1.530334 1.263665 0.519818 1.571832 1.585696 0.146697 0.372400 0.184499 1.065910 1.586430 0.389648 1.945616 -0.155229 1.149914 1.416015 1.543806 0.675290 1.575972 -0.061898 0.351605 1.477489 1.687761 0.991467 0.309759 0.917057 0.859287 0.401688 1.855540 0.565558 0.820131 1.496468 0.726028 0.759257 0.175775 -1.886963 0.549321 0.377567 0.512515 1.144811 1.162349 0.872901 1.419204 1.119090 1.643112 0.406556)
)
;;; 83 all -------------------------------------------------------------------------------- ; 9.1104
@@ -837,7 +837,7 @@
11.868338980165 #(0 0 1 1 0 0 0 1 1 1 0 1 0 0 0 0 0 1 1 1 1 0 1 0 1 0 1 0 1 1 1 1 0 1 1 0 1 1 1 0 0 1 1 0 0 0 0 0 0 1 1 0 1 0 0 1 1 1 1 1 1 0 1 0 0 0 0 1 0 0 1 0 0 1 1 0 1 0 0 1 1 0 0)
11.429935034332 #(0 1 1 0 0 0 0 0 1 0 1 1 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 0 1 1 0 0 1 1 1 0 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 1 0 0)
- 9.467727 #(0.000000 0.658096 -0.135519 0.824160 0.011591 1.260924 0.432865 1.266821 1.796272 1.854427 1.465026 0.988631 1.367414 0.050047 1.269861 0.344375 1.689718 1.862784 1.811679 -0.307382 1.711766 0.517912 1.048902 1.584856 -0.018702 -0.112171 1.876993 0.654407 0.868999 0.796387 1.153516 0.930492 0.679416 0.209236 0.210024 0.369487 0.968696 0.073373 0.224173 0.967019 0.545959 1.618353 1.690764 0.431391 0.098576 0.003321 1.382119 1.130691 0.214064 0.831320 0.585144 1.619081 0.655665 0.400348 0.390970 1.326226 1.914361 1.135491 0.415615 1.230685 1.942591 1.545594 1.234883 0.035187 0.232116 0.179891 0.420805 0.027308 0.110194 1.325346 1.208592 0.725817 1.571773 1.916947 0.936086 1.467609 1.235827 0.480136 -0.088176 1.885086 0.273252 1.069401 1.453990)
+ 9.308042 #(0.000000 0.674038 -0.100229 0.795008 -0.005016 1.224202 0.450329 1.268397 1.887593 1.820882 1.475592 1.009151 1.388893 0.054707 1.311312 0.256980 1.696962 1.946308 1.783166 -0.245863 1.701747 0.448128 1.069764 1.642463 -0.001822 -0.121825 1.902159 0.715451 0.759076 0.671952 1.014468 0.804562 0.624241 0.246666 0.198227 0.319781 0.972928 0.048348 0.265138 0.947919 0.535515 1.605261 1.738247 0.495980 0.180419 -0.019950 1.519006 1.073196 0.145324 0.826031 0.561392 1.566556 0.638466 0.288935 0.393074 1.382164 1.914089 1.114807 0.374541 1.280976 -0.042175 1.694437 1.318040 0.003935 0.162595 0.206913 0.425319 0.051228 0.144929 1.338030 1.226408 0.742711 1.624228 1.948389 0.801456 1.474462 1.310598 0.456474 -0.009958 1.862008 0.281002 0.958108 1.394257)
)
;;; 84 all -------------------------------------------------------------------------------- ; 9.1652
@@ -847,7 +847,7 @@
11.81104850769 #(0 0 1 1 1 1 1 0 1 1 0 1 0 1 0 0 0 1 1 0 1 0 0 1 1 1 1 0 0 0 1 1 0 1 1 1 0 1 1 1 1 0 1 1 0 0 1 0 1 1 0 0 1 1 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 1)
11.774056434631 #(0 1 1 1 0 0 1 0 1 1 0 1 0 1 0 0 0 1 1 1 1 0 0 0 1 1 1 0 0 0 1 1 0 1 1 1 0 1 1 1 1 0 1 1 0 0 1 0 1 1 0 0 1 1 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 1)
- 9.588401 #(0.000000 0.164132 -0.035974 0.257617 1.315576 0.514849 0.377703 1.326638 1.516087 -0.036152 0.338611 0.344970 1.745294 1.139743 1.464944 0.981325 1.432569 1.148332 0.544284 1.429918 0.085320 0.788917 0.433781 1.945472 0.225629 -0.138149 1.495067 1.729796 0.036347 0.964270 0.909196 1.356091 -0.102710 0.464272 -0.340438 -0.172662 1.251981 0.907976 1.470832 1.509440 0.111747 -0.047488 0.688392 1.772208 1.148758 0.298069 0.059080 1.043945 0.615355 0.835555 0.499619 1.209482 1.035631 0.887326 0.692304 1.458467 0.783368 0.979803 0.720463 1.200928 -0.108458 0.181838 1.499845 0.773496 0.541003 1.353068 1.467626 0.661066 1.048871 1.283898 0.263303 1.715137 -0.099379 1.209607 0.188178 0.975348 -0.182511 0.677724 0.607240 1.607343 1.109592 1.043626 1.487717 0.722973)
+ 9.385120 #(0.000000 0.156357 -0.037997 0.219854 1.295753 0.548038 0.384283 1.325154 1.496399 -0.002873 0.353717 0.433179 1.695048 1.041368 1.490948 0.941793 1.499077 1.069117 0.515008 1.339812 0.110830 0.691646 0.473271 1.865996 0.275855 -0.126722 1.546736 1.769620 0.103211 0.936851 0.996843 1.275160 -0.038479 0.456299 -0.270381 -0.281424 1.175449 0.996497 1.479690 1.426145 0.167626 -0.093946 0.757246 1.700566 1.068633 0.349282 0.177733 0.994299 0.610427 0.881908 0.571663 1.153845 0.980717 0.823873 0.647523 1.499541 0.878240 0.910562 0.753431 1.096188 -0.018488 0.140035 1.517002 0.841864 0.604896 1.323155 1.503514 0.622007 1.002136 1.400136 0.267006 1.656690 -0.134930 1.131455 0.145420 0.877521 -0.197600 0.692486 0.707588 1.592121 1.101369 1.020149 1.501795 0.566154)
)
;;; 85 all -------------------------------------------------------------------------------- ; 9.2195
@@ -856,7 +856,7 @@
11.953980403239 #(0 0 1 0 1 0 0 1 0 0 0 1 0 1 1 0 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 1 1 1 1 0 0 0 1 0 1 0 1 0 1 1 0 0 1 0 1 1 1 0 0 1 1 1 0 1 1 1 1 1 0 1 0 0 1 0 1 1 0 0 0 1 1 1 1 1 1)
11.927130699158 #(0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 1 1 0 1 1 1 1 0 1 0 0 0 1 0 1 0 1 0 1 1 0 0 1 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 0 1 0 0 1 0 1 1 0 0 0 1 1 1 1 0 1)
- 9.462900 #(0.000000 0.347782 0.055357 1.526598 0.549729 1.347263 0.926715 -0.015501 -0.265330 0.688188 1.397075 1.752473 0.536549 1.382740 0.628167 1.784342 1.573884 0.497324 0.804287 0.386520 0.319693 1.039259 1.115887 1.838017 -0.075007 0.457508 0.886339 -0.126171 1.798753 1.782418 1.181061 0.078056 1.607984 0.536789 0.511494 0.803889 0.621644 1.642252 1.506085 0.453078 1.018760 1.365500 1.028189 0.460896 1.147564 0.300842 0.391967 0.363441 1.828101 0.110918 0.685784 1.640759 0.704971 0.823000 0.638964 1.464515 1.195552 1.387794 0.336170 0.887244 0.612291 0.700036 0.850953 1.220912 0.708427 1.464326 1.003926 1.118046 0.252589 1.705252 1.408190 0.593588 1.157535 0.571962 1.283076 -0.031835 0.790743 0.399060 0.067030 0.302303 -0.025438 1.655626 0.641457 0.657294 0.072284)
+ 9.299528 #(0.000000 0.399942 0.004739 1.466409 0.492110 1.304621 0.888195 -0.075515 -0.298822 0.682209 1.460228 1.738749 0.528667 1.391866 0.623837 1.752533 1.552667 0.407444 0.779845 0.401467 0.300904 1.000224 1.043253 1.808715 -0.072227 0.520231 0.933068 -0.133158 1.834623 1.767304 1.162899 0.069874 1.579447 0.521268 0.480701 0.808178 0.628222 1.643882 1.513944 0.495021 0.952953 1.332499 0.986556 0.540231 1.143652 0.300833 0.365142 0.372205 1.818445 0.102807 0.737107 1.653187 0.706957 0.883084 0.633049 1.572321 1.200008 1.391958 0.290798 0.866815 0.629719 0.688738 0.775843 1.229057 0.670179 1.448285 0.978242 1.149602 0.266832 1.650707 1.426606 0.610583 1.104281 0.525671 1.339180 -0.100187 0.727160 0.359119 0.067400 0.286743 -0.067870 1.722234 0.646605 0.612179 0.131330)
)
;;; 86 all -------------------------------------------------------------------------------- ; 9.2736
@@ -864,7 +864,7 @@
11.819784750357 #(0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 1 0 1 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 0 1 1 0 1 1 0 0 1 0 1 1 1 0 1 1 1 1 1 1 0 1 0 0 0 0 1 1 1 1 1 0 0 1 1 0 0 0 0 1 0 0 1 0 1 1 0)
11.780031204224 #(0 0 1 1 1 1 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 0 1 1 1 1 1 1 0 0 1 1 1 0 1 1 0 1 1 0 0 1 0 1 1 1 0 1 1 0 1 1 1 0 1 0 0 0 0 1 0 1 1 1 0 0 1 1 0 0 0 0 1 0 0 1 0 1 1 0)
- 9.646301 #(0.000000 -0.161010 0.875846 -0.026244 1.228903 -0.025481 1.079461 0.076030 1.576828 1.078425 0.263743 0.375566 1.552864 0.567695 1.645424 1.006018 0.896194 0.936982 1.092709 0.987463 1.531962 1.557719 1.769815 1.455529 1.730039 0.731560 1.515210 0.693167 0.956974 -0.030986 0.780586 0.928088 0.891977 0.873892 0.078207 1.713317 0.984980 1.497795 0.777246 1.227512 0.521583 0.697101 1.634480 1.621270 0.418058 0.293180 0.831146 0.896056 1.232552 1.557588 0.126676 0.555107 0.387432 1.476269 0.893360 0.655170 0.962509 0.587877 -0.052524 1.211089 -0.155065 0.667003 1.645396 0.457754 0.602656 1.311566 1.278602 0.283143 1.544482 -0.346565 1.530130 1.111773 1.494740 1.476813 1.318259 1.141745 0.681765 0.235433 1.839715 0.961314 1.346253 0.158022 0.288910 0.994627 -0.207228 0.079583)
+ 9.497652 #(0.000000 -0.191966 0.874165 -0.113604 1.145329 -0.029606 0.979758 0.090706 1.594429 1.088630 0.309622 0.391593 1.527488 0.529023 1.641493 1.056057 0.858093 0.989363 1.059878 1.034542 1.611888 1.517985 1.786013 1.439878 1.749982 0.683689 1.584849 0.676166 0.973091 -0.056155 0.837099 0.927331 0.894372 0.862941 0.039232 1.693488 1.098072 1.465638 0.806027 1.212286 0.644524 0.626506 1.628853 1.659498 0.470498 0.284711 0.860950 0.923299 1.259118 1.611177 0.160311 0.571898 0.386212 1.534026 0.862204 0.677507 0.968928 0.627439 -0.050755 1.146242 -0.120891 0.574870 1.650502 0.363641 0.754966 1.357081 1.350703 0.325158 1.526072 -0.450417 1.616983 1.077044 1.527622 1.477732 1.299671 1.107803 0.690151 0.302741 1.861758 0.878171 1.443384 0.203255 0.188319 1.051436 -0.271932 0.102320)
)
;;; 87 all -------------------------------------------------------------------------------- ; 9.3274
@@ -872,7 +872,7 @@
12.065419665482 #(0 0 1 1 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 0 0 0 0 0 1 0 1 0 1 1 1 0 1 1 0 1 0 0 1 0 1 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 0 1)
11.76194265333 #(0 0 1 1 1 1 1 0 0 1 0 1 0 1 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 1 0 1 0 0 0 0 0 1 0 1 0 1 1 1 0 1 1 0 1 0 0 1 0 1 1 0 0 1 1 1 0 0 0 1 1 0 1 1 1 0 1 0 0 0 0 0 1 1 1)
- 9.682556 #(0.000000 0.845794 -0.155663 0.453614 -0.098921 0.458671 1.788848 0.078824 0.343695 0.253684 0.584822 1.392446 0.466403 1.166702 0.199487 0.797647 0.164550 0.578845 0.962057 1.502489 0.194225 1.529465 0.927335 0.054226 1.521317 1.180128 1.096887 0.224573 1.023456 -0.058284 -0.060172 0.964056 0.012585 0.527228 0.692522 -0.075023 0.631214 1.359861 1.026728 1.013716 0.595834 1.863365 1.342799 0.085149 0.018470 1.350589 1.477713 1.190908 1.191515 0.277107 0.230227 0.684008 0.969764 0.383757 1.038902 1.581902 1.486618 0.058306 0.434535 -0.085428 1.643855 -0.120489 0.579274 -0.101931 1.261034 0.464336 1.506377 1.239026 0.512175 0.450323 0.810994 1.760729 0.857555 0.268223 0.680459 0.548019 0.928591 1.483310 0.180026 1.087145 0.770571 0.275674 0.244745 0.474317 0.510486 1.056901 1.651006)
+ 9.525908 #(0.000000 0.848669 -0.229359 0.501969 -0.157100 0.508485 1.863440 0.064876 0.338319 0.257895 0.562000 1.381993 0.487949 1.171227 0.224235 0.884118 0.166327 0.602477 1.016064 1.425350 0.204765 1.512523 0.837608 0.066706 1.577805 1.210557 1.036933 0.244653 1.065706 -0.037169 -0.007476 1.005806 -0.028378 0.493528 0.745787 -0.052341 0.671446 1.373227 0.925241 1.123129 0.640018 1.870962 1.367591 0.124734 0.030353 1.369462 1.531317 1.175227 1.188637 0.280527 0.215537 0.703708 0.997401 0.402647 1.066585 1.644301 1.445529 0.060999 0.415221 -0.110664 1.699209 -0.180791 0.554651 -0.142211 1.147067 0.493011 1.463153 1.222013 0.525763 0.559930 0.782934 1.715909 0.774108 0.282272 0.647427 0.561153 0.926516 1.507352 0.204012 1.183548 0.765152 0.352625 0.228562 0.450282 0.528864 1.132755 1.658562)
)
;;; 88 all -------------------------------------------------------------------------------- ; 9.3808
@@ -880,14 +880,14 @@
11.991882324219 #(0 0 1 0 1 1 1 1 0 0 0 1 1 1 0 0 1 0 1 1 0 1 1 1 0 0 0 1 1 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 1 1 1 1 0 1 1 0 1 0 0 1 0 1 1 1 0 1 0 1 0 1 0 1 1 1 0 1 1 0 0 1 1 1 1 1 1)
11.638312339783 #(0 1 1 0 1 1 1 1 0 0 1 1 1 1 0 0 0 1 1 1 0 1 1 1 0 0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 0 1 0 1 1 0 1 0 0 0 0 1 1 1 0 1 0 1 0 1 0 0 1 0 0 1 1 0 0 1 1 1 1 1 1)
- 9.756997 #(0.000000 0.829123 0.379808 1.421860 0.752499 1.607280 0.167482 0.426584 0.412008 1.357632 0.840113 1.649678 1.154682 1.545322 1.789852 1.374004 -0.069987 0.637844 0.197948 0.576520 0.274270 1.137572 0.370572 0.121143 0.438333 0.099908 0.379517 1.580850 -0.251538 1.574293 0.196396 0.317083 1.299682 0.879764 0.741551 0.700497 0.790019 1.325901 -0.023078 0.146075 0.824567 0.749702 0.110345 0.527556 1.628453 0.847799 0.607021 1.620759 0.952189 1.607954 1.078189 0.236882 0.428186 -0.171279 1.322063 -0.232237 0.170088 1.467738 1.340685 1.008595 1.038962 0.167949 1.011565 1.868809 1.747938 1.222509 1.201406 1.268667 1.453377 1.096948 0.035948 0.133689 1.077515 0.899781 -0.028990 0.797388 0.099281 0.493219 1.582929 0.473923 1.208943 1.109185 0.591646 0.566253 1.410694 1.632866 0.585878 1.385556)
+ 9.475708 #(0.000000 0.903221 0.347956 1.456031 0.828580 1.643982 0.148556 0.285015 0.368378 1.348305 0.899917 1.676601 1.229883 1.510364 1.762830 1.416223 -0.076727 0.708622 0.227197 0.526180 0.192748 1.135040 0.397802 0.069269 0.452248 0.080459 0.421103 1.612135 -0.294070 1.450912 0.252627 0.243333 1.319610 0.894965 0.777992 0.623068 0.666908 1.298868 0.004599 0.160342 0.843820 0.799254 0.047662 0.459167 1.664048 0.843596 0.662570 1.691378 0.835226 1.635010 1.167776 0.199300 0.464582 -0.160885 1.372246 -0.254823 0.205505 1.430331 1.323402 0.996924 1.002806 0.119807 1.111641 1.807800 1.832422 1.262904 1.230939 1.204819 1.365473 1.106441 0.112389 0.078557 0.953838 0.820817 -0.130524 0.801345 0.172669 0.572888 1.552056 0.498391 1.153764 1.112120 0.593611 0.679966 1.501006 1.738007 0.566300 1.324180)
)
;;; 89 all -------------------------------------------------------------------------------- ; 9.4340
#(89 12.644 #(0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1 1 0 1 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 1 1 0 1 0 1 1 0 1 1 0 0 1 1 0 0 1 0 1 0 1 1 1 0 1 0 1 0 0 0 0 0 1)
12.148494905477 #(0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 1 0 1 1 1 1 1 1 0 0 1 0 0 1 0 1 0 0 0 0 0 1 1 0 1 1 0 1 0 0 1 0 1 1 0 0 1 1 0 0 1 0 1 0 1 1 1 0 0 1 1 0 0 0 0 0 1)
- 9.877639 #(0.000000 -0.001650 0.938774 0.973997 0.236793 0.104156 0.462029 0.457848 1.239199 0.479154 0.444969 0.888200 0.976068 0.587117 1.732653 0.257075 0.468408 1.486765 0.219709 0.308785 -0.075871 0.005760 0.343953 -0.074157 0.692517 0.712129 1.203090 0.695092 1.457343 0.544031 -0.105336 -0.029395 1.693708 1.228230 1.319111 1.284878 0.720498 0.650534 0.323756 0.913559 0.523375 1.547461 0.997214 0.514880 -0.057793 0.489578 1.320768 0.648647 0.684796 1.383208 1.031316 1.089728 -0.432696 1.048952 1.313048 0.883454 0.148121 0.090356 1.613376 0.659053 0.041250 1.006412 0.111526 1.812907 1.738178 -0.143084 0.277954 1.256742 0.213569 0.770176 -0.238574 1.200107 0.096345 0.745553 1.190864 1.773064 -1.670884 0.443680 1.105940 0.428322 1.441067 1.275870 -0.431112 0.246974 0.562347 0.212171 1.276209 1.646441 0.818708)
+ 9.668490 #(0.000000 0.019099 0.948139 0.979418 0.250206 0.163772 0.457263 0.414493 1.134100 0.508380 0.372572 0.932465 1.030583 0.673378 1.695768 0.342509 0.604799 1.469853 0.273753 0.387674 -0.095446 0.035285 0.358687 -0.137913 0.674177 0.760536 1.193159 0.741563 1.478839 0.579812 -0.196151 -0.033196 1.724655 1.204602 1.432626 1.307783 0.745110 0.701714 0.304088 0.913004 0.504909 1.494186 1.000481 0.601243 -0.061058 0.408627 1.318696 0.619511 0.598632 1.377771 1.084484 1.062157 -0.445518 1.029037 1.206320 1.011825 0.195245 0.064891 1.641931 0.670305 0.030654 0.942419 0.069747 1.889348 1.758332 -0.104216 0.309865 1.247161 0.195328 0.754897 -0.153092 1.242402 0.140746 0.681876 1.261445 1.809944 -1.598600 0.370457 1.110420 0.524323 1.468570 1.251528 -0.459280 0.230514 0.603708 0.154623 1.192653 1.724267 0.810754)
)
;;; 90 all -------------------------------------------------------------------------------- ; 9.4868
@@ -896,7 +896,7 @@
12.299262768523 #(0 0 1 0 1 0 0 0 1 1 1 0 1 1 0 0 1 0 1 0 1 1 1 1 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 1 0 1 1 0 1 1 0 0 1 1 0 0 0 0 1 1 0 1 0 1 1 1 1 1 1 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 0 0)
12.059710502625 #(0 0 1 0 1 0 0 0 1 1 1 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 1 0 1 1 0 1 1 0 0 1 1 0 1 1 0 1 0 0 1 0 1 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 0)
- 9.802539 #(0.000000 0.752616 1.036282 0.231916 0.259027 1.303527 1.077874 0.094476 1.140546 -1.864729 0.215363 1.477138 1.585209 1.303899 0.204692 1.913733 1.373919 1.470657 -0.168039 0.837295 0.592532 1.195557 -0.114477 0.383394 0.406328 1.020841 1.816481 0.400363 -0.231623 0.127670 1.411738 -0.113054 0.297174 1.165606 0.048069 0.319685 1.087620 0.039463 0.663897 0.310370 0.881763 1.115736 1.123575 0.835174 1.542787 1.161571 1.104593 0.680872 1.210706 0.165887 1.197162 0.327664 1.894332 0.669327 0.503756 1.870895 0.729507 0.834727 1.911599 1.270356 0.003394 0.660456 0.737431 0.643195 1.816488 1.584950 0.483460 0.495035 0.549579 0.949423 0.345502 -0.144785 1.748785 1.897666 1.538393 0.760181 -0.200671 0.602634 0.431459 0.605893 0.232588 1.446500 1.641186 1.279251 0.345461 0.119348 0.553882 0.772922 0.770960 0.520214)
+ 9.675166 #(0.000000 0.761012 1.024164 0.247182 0.218469 1.277519 1.096760 0.103001 1.101763 -1.866284 0.184271 1.552459 1.562284 1.347570 0.167073 1.910658 1.379159 1.494400 -0.206486 0.851277 0.633733 1.225298 -0.137308 0.420454 0.384196 1.046976 1.808225 0.416442 -0.313787 0.113191 1.358940 -0.113863 0.300151 1.153138 0.093933 0.333364 1.052483 0.009745 0.651351 0.358068 0.962174 1.079899 1.061315 0.860711 1.541739 1.064312 1.134057 0.668654 1.178888 0.091653 1.221825 0.284737 1.836318 0.735046 0.530721 1.802349 0.744694 0.872927 1.894938 1.246463 0.019523 0.697177 0.711222 0.703902 1.794092 1.607773 0.462497 0.502276 0.593572 0.905769 0.378253 -0.176027 1.781924 1.826782 1.550131 0.775938 -0.252968 0.614004 0.429204 0.688824 0.255646 1.489678 1.591720 1.271165 0.321826 0.096128 0.519901 0.754305 0.786147 0.492251)
)
;;; 91 all -------------------------------------------------------------------------------- ; 9.5394
@@ -905,28 +905,28 @@
12.335505485535 #(0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 1 0 1 0 1 0 1 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 0 0 0 1 0 0 1 0 1 1 1 0 0 0 1 0 0 0 0 0 0 1 1 1 0)
12.130150794983 #(0 1 1 0 0 0 1 0 0 0 0 1 0 1 1 1 1 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 1 0 1 0 1 0 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 0 0 1 0 1 1 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0)
- 9.902752 #(0.000000 0.363227 1.887622 1.480844 0.759673 1.409627 1.757522 1.125093 0.629509 1.066456 0.762963 1.868228 0.889084 1.425827 0.512440 1.257889 1.144337 0.262402 -0.028105 1.787658 1.744794 0.184229 0.350506 1.398985 0.136611 0.754631 0.569796 0.611354 1.411632 0.527050 1.639032 0.056332 1.528613 1.704976 0.068846 0.093286 1.305905 0.696921 0.630602 0.021316 0.585336 1.828283 1.593606 0.437775 1.160328 1.942591 0.741293 -0.026509 0.902582 0.480017 1.666840 0.552106 0.816332 1.710811 0.281326 0.417140 -0.280592 1.725330 -0.090812 0.866178 1.486097 0.341834 0.054042 0.175857 0.862302 1.135036 1.325651 1.332636 0.572009 1.513626 0.802021 1.036859 0.731522 0.514694 1.321777 1.182538 1.780946 1.910867 0.074953 1.257638 0.623296 -0.112049 1.371751 -0.041052 1.454854 1.149943 0.802178 0.106478 1.615652 1.860805 0.745480)
+ 9.725780 #(0.000000 0.347043 1.817671 1.523313 0.733564 1.386090 1.750257 1.077112 0.654972 1.007043 0.833788 1.907067 0.911992 1.435292 0.559932 1.223021 1.134784 0.320148 -0.005054 1.811849 1.714685 0.116358 0.338868 1.418880 0.090596 0.687160 0.542587 0.599402 1.387899 0.478339 1.665601 0.076266 1.559232 1.730431 0.055171 0.072597 1.485006 0.608529 0.588056 0.086816 0.580678 1.871369 1.548230 0.403444 1.228071 -0.018019 0.784251 -0.003518 0.946691 0.442802 1.606321 0.531603 0.841389 1.650377 0.274797 0.432582 -0.274249 1.695722 -0.127148 0.910501 1.468522 0.281828 0.065362 0.170134 0.881699 1.139893 1.342189 1.349156 0.518862 1.611214 0.786008 1.012098 0.776828 0.518256 1.264074 1.165259 1.755387 1.992515 0.117123 1.302821 0.585152 -0.129420 1.403599 0.007482 1.485004 1.125421 0.837666 0.155084 1.588092 1.881930 0.832876)
)
;;; 92 all -------------------------------------------------------------------------------- ; 9.5917
#(92 12.627931418696 #(0 1 1 1 1 0 0 1 0 0 1 1 0 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 0 1 0 1 1 1 0 0 0 0 1 1 1 0 0 1 0 1 1 1 1 0 1)
12.009957507951 #(0 0 0 1 0 1 0 0 0 1 1 0 0 1 1 0 1 0 0 1 1 0 1 1 0 0 1 1 1 0 0 1 0 1 1 1 0 0 0 0 0 1 1 1 1 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 1 1 1 0 0 1 1 1 1 1 1 1 0 1 0 1 0 1 0 0 1 1 1 1 1 1 1 1 0 1 0 1)
- 10.065559 #(0.000000 0.141590 0.591067 -0.273664 0.109524 0.150931 -0.065193 1.522771 1.100683 1.915385 0.945054 0.416395 0.506460 0.967670 0.892800 0.444384 0.978231 0.551463 1.806092 0.812880 0.337347 0.745158 0.737125 0.039374 1.816002 1.754331 -0.153411 0.375586 1.709272 0.929345 0.140622 1.299655 0.678129 1.737411 0.384892 1.807870 -0.165294 0.055700 1.413493 1.491492 0.892747 0.973492 0.462634 1.000510 1.444715 0.232275 0.442867 1.127880 0.843926 0.435399 0.793688 1.225466 0.999896 1.203156 1.352315 0.928443 1.857692 1.856539 1.059642 1.137273 0.270867 0.250443 0.496777 1.099626 1.089764 -0.131195 1.301564 1.447548 0.873845 0.743504 -0.254308 1.791107 1.307116 0.453613 1.874294 0.659660 1.310659 0.079092 1.757470 0.317345 1.028755 1.824769 1.029933 1.536597 0.527782 0.090662 0.574081 -0.014138 1.675793 0.700129 1.144338 -0.032252)
+ 9.787626 #(0.000000 0.082393 0.541384 -0.157723 0.170949 0.068525 -0.039847 1.486767 1.124833 1.941302 0.934696 0.420367 0.524712 0.948514 0.854932 0.420242 1.042918 0.606941 1.849357 0.752787 0.377640 0.675075 0.709441 0.064087 1.750739 1.781054 -0.195711 0.312635 1.765224 0.991454 0.102988 1.279586 0.639549 1.766982 0.294616 1.781498 -0.213712 0.267413 1.469780 1.479844 0.909765 0.974596 0.504906 1.024259 1.499574 0.147290 0.420486 1.111577 0.874169 0.389279 0.734931 1.161199 1.090645 1.245121 1.319866 0.938271 0.001230 1.919886 1.142086 1.135554 0.359937 0.200827 0.535851 1.156230 1.227243 -0.096349 1.213609 1.440085 0.942931 0.851008 -0.316974 1.838572 1.398649 0.465015 1.910112 0.674977 1.322658 0.071417 1.730533 0.340133 0.974695 1.899249 0.991864 1.594438 0.660968 0.098177 0.561715 -0.007894 1.669096 0.762638 1.098689 -0.091503)
)
;;; 93 all -------------------------------------------------------------------------------- ; 9.6437
#(93 12.624432854783 #(0 0 1 0 1 1 1 0 0 1 0 0 0 1 0 1 1 1 1 0 1 1 0 0 1 0 0 1 0 0 0 0 1 0 1 0 1 1 1 0 1 1 1 1 1 0 0 1 0 1 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 1 1 1 1 0 1 1 0 1 0 1 0 1 1 1 1 1 0 0 0 1 1 1)
12.125471062226 #(0 1 0 0 0 0 1 0 1 0 1 1 1 0 1 0 0 0 1 1 1 0 1 1 1 1 0 1 0 0 1 0 1 0 0 1 1 0 0 1 0 1 1 0 1 1 1 0 1 0 1 0 1 1 1 1 0 0 0 1 0 0 1 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 1 0 0 1 0 0 1 1 0 1 1 1 1 1 1)
- 10.071535 #(0.000000 1.589191 1.614068 1.715255 -0.079975 0.428894 0.533919 -0.123270 1.737783 1.430292 0.287181 1.034844 1.642631 0.874425 0.910058 1.475822 1.621619 0.923028 1.132065 1.312180 0.386728 0.614301 0.425087 0.714943 0.140169 0.413711 1.198554 0.066078 0.172608 -0.165072 0.291559 1.798460 0.114339 1.200321 0.838609 0.449945 0.134308 1.802311 1.196819 0.503521 0.600300 1.026091 1.568347 1.809346 1.746077 1.334689 1.695686 1.241115 1.558725 -0.098165 0.828619 0.718486 1.564366 0.048722 1.635158 -0.239725 1.493858 1.393148 0.128798 1.012446 0.246574 0.647778 0.263411 -0.136446 1.249301 1.597989 0.218051 1.547785 0.775446 -0.155178 1.587598 0.129126 0.517183 1.383301 0.572865 0.566440 1.466901 1.108167 1.644420 1.245953 0.129838 0.121258 0.988283 1.411367 1.022324 0.214587 1.712570 1.571300 0.509308 1.487591 0.644924 1.597508 0.709560)
+ 9.854549 #(0.000000 1.552549 1.718338 1.769613 -0.119732 0.492440 0.503657 -0.175647 1.849127 1.352113 0.172524 1.036991 1.681226 0.863492 0.864535 1.423771 1.685456 0.942569 1.102888 1.321151 0.438884 0.600854 0.353097 0.718798 0.151509 0.414939 1.177265 0.090976 0.217190 -0.169042 0.380173 1.870354 0.139296 1.180724 0.945788 0.493656 0.013254 1.846493 1.096645 0.519579 0.537067 0.993884 1.572386 1.827109 1.707687 1.372250 1.752097 1.231385 1.577369 -0.035701 0.803747 0.835081 1.576714 -0.056144 1.584560 -0.262305 1.556068 1.398609 0.189017 0.972427 0.251306 0.625906 0.348861 -0.227969 1.370952 1.566644 0.268730 1.582773 0.842429 -0.125818 1.543533 0.129114 0.555024 1.376033 0.547176 0.552229 1.492374 1.103008 1.743249 1.305142 0.154515 0.108975 1.159313 1.412077 1.111288 0.297980 1.779713 1.488673 0.440451 1.496960 0.705937 1.679928 0.672324)
)
;;; 94 all -------------------------------------------------------------------------------- ; 9.6954
#(94 12.840441703796 #(0 1 0 1 1 0 0 1 1 0 1 1 0 0 1 1 0 1 1 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 1 0 0 1 0 1 1 1 0 1 0 1 0 0 1 1 1 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 1 1 1 0 1 0)
12.510846178591 #(0 0 0 1 1 1 0 1 0 0 1 1 0 0 1 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 1 0 0 1 0 0 1 1 1 1 0 1 0 0 0 1 1 1 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 1 1 1 0 1 0)
- 10.337255 #(0.000000 0.231309 1.023353 0.808677 0.017813 0.950185 0.941588 0.179875 1.163783 1.094016 0.063012 0.485124 0.644465 0.861607 0.052012 0.173739 1.586457 0.721078 1.000409 0.506720 0.979645 0.533869 0.303927 0.978760 0.916785 0.639247 1.052225 0.280133 1.851310 0.004320 1.049954 0.437777 1.562833 1.054784 -0.067374 1.399772 0.723737 1.686541 0.447539 0.028846 1.748986 1.362227 1.877223 0.981230 1.582476 1.275117 1.205513 0.273027 1.695130 0.994165 1.048353 1.087708 -0.020994 0.138780 0.074766 0.389433 0.185112 1.635937 0.243667 1.033031 1.025201 1.283029 0.283837 1.619257 1.505790 1.946369 0.216493 0.939579 1.398043 0.841810 0.736685 0.619737 0.981783 1.562219 1.120219 0.643349 1.245391 1.706961 1.292784 0.046871 1.157807 0.935556 0.370003 0.685133 1.619125 0.147877 1.487259 0.009989 0.442151 0.794252 1.120417 1.097670 0.717026 -0.096073)
+ 10.179938 #(0.000000 0.275955 1.008168 0.769693 0.012761 1.002715 0.975117 0.198133 1.246608 1.140845 0.052277 0.550311 0.667051 0.878915 0.005358 0.199771 1.590652 0.688032 1.018297 0.532410 0.948966 0.420469 0.380138 1.001912 0.836711 0.612752 1.107078 0.401167 1.837302 0.029498 1.066131 0.391168 1.559418 1.090677 -0.081376 1.435528 0.717500 1.673231 0.453313 0.008267 1.726702 1.386080 1.825370 1.052454 1.593911 1.260381 1.282596 0.353407 1.679236 0.961919 0.964435 1.110623 -0.018750 0.088686 0.138479 0.409135 0.252180 1.624222 0.202309 1.036707 1.037621 1.300418 0.359442 1.534339 1.466042 0.023011 0.204420 0.964968 1.392667 0.865598 0.656617 0.601572 0.954908 1.496719 1.146022 0.575321 1.309385 1.786903 1.367692 -0.035620 1.139182 0.904949 0.403621 0.759358 1.658805 0.239970 1.446595 0.059926 0.427956 0.890509 1.106241 1.067783 0.714720 -0.070544)
)
;;; 95 all -------------------------------------------------------------------------------- ; 9.7468
@@ -935,7 +935,7 @@
12.448801040649 #(0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 1 0 1 0 0 1 1 1 1 0 1 0 0 1 1 1 1 0 0 1 0 0 1 1 1 0 0 1 0 1 1 0 0 1 1 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 0 1 1 0 1 1 1 0 1 0 1 0 0 0 1 0)
12.431831359863 #(0 1 0 1 0 0 0 0 1 0 1 0 0 1 1 0 0 1 1 1 1 0 0 1 0 1 1 0 1 0 0 1 1 1 1 0 0 1 0 0 1 1 1 0 0 1 0 1 1 0 0 1 1 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 1 1 1 0 1 1 0 1 1 1 0 1 0 1 0 0 0 1 1)
- 10.489562 #(0.000000 1.424012 1.015929 1.261500 0.830912 0.460318 0.018488 1.142466 0.730176 -0.031499 1.419924 -0.003859 0.131617 1.823379 1.167479 1.522581 1.030468 0.076205 0.738165 1.205024 0.521931 1.945188 0.922478 0.923768 0.442084 1.719607 1.228411 0.884321 1.553652 1.691022 1.348584 1.223855 1.127894 0.649357 1.621547 0.062561 0.666320 0.715614 1.617120 1.501197 0.481532 0.549353 0.909001 0.774274 0.658663 1.509410 0.126831 0.375073 1.092693 0.033748 0.619324 -0.084900 -0.026012 1.609882 0.797790 1.937092 1.013315 0.129564 1.501317 0.819488 1.428840 1.617098 1.752315 0.744607 1.398317 0.198917 0.489356 1.375274 0.645169 1.349848 0.817833 0.684424 1.033508 0.019373 1.510887 1.609758 1.467830 1.473261 0.038526 1.094026 0.708585 1.241998 1.258300 1.734168 1.327907 1.524456 -0.000727 1.584887 0.155750 1.420650 0.752715 0.991378 -0.022714 0.208314 1.720302)
+ 10.235625 #(0.000000 1.377727 1.050080 1.248588 0.792511 0.457414 -0.055883 1.119410 0.716637 -0.052602 1.456211 0.043854 0.060760 1.875481 1.227381 1.598809 1.008899 -0.015511 0.650365 1.135128 0.505929 1.953271 0.954717 0.995663 0.441155 1.644959 1.144288 0.893585 1.501787 1.665821 1.285051 1.269707 1.100703 0.614012 1.644523 0.025581 0.726668 0.689714 1.647097 1.520117 0.526824 0.600754 0.937599 0.769083 0.576717 1.486253 0.132827 0.510890 1.041432 -0.005366 0.651637 0.011614 0.130109 1.558226 0.840399 1.919461 0.956452 -0.033431 1.467648 0.779006 1.520580 1.594015 1.776824 0.630227 1.369021 0.233621 0.576736 1.284446 0.686051 1.244490 0.758159 0.607687 1.098945 0.019238 1.551322 1.656758 1.453475 1.432615 0.109371 1.026239 0.702585 1.243564 1.313956 1.705889 1.246024 1.487779 -0.079036 1.542639 0.220488 1.233833 0.851176 1.002292 -0.074783 0.085043 1.732247)
)
;;; 96 all -------------------------------------------------------------------------------- ; 9.7980
@@ -944,7 +944,7 @@
12.682573318481 #(0 1 1 1 1 0 0 0 1 0 0 0 0 1 1 1 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 1 0 1 1 0 1 1 1 0 1 1 0 0 1 1 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 0 1 1 1)
12.586637130548 #(0 0 1 1 0 0 0 0 1 0 0 1 0 1 1 1 0 1 0 1 1 0 1 0 1 1 1 0 0 1 0 0 1 0 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 1 1 0 1 1 0 1 1 1 0 1 1 0 0 1 1 0 1 1 1 1 0 0 0 0 1 1 1 1 0 1 0 0 1 1 1)
- 10.288381 #(0.000000 1.688744 0.147656 0.075921 0.126329 1.595130 1.551472 1.512272 1.667498 0.650971 0.801686 1.675047 0.064355 -0.313224 -0.146340 -0.087344 -0.125213 0.488615 1.463549 1.426729 1.655501 0.936221 1.002341 0.450792 0.056134 1.572125 -0.396077 0.657233 0.723710 1.077084 0.531884 0.524949 -0.004246 0.889297 1.607723 1.206401 1.304545 0.255866 0.588314 -0.480874 0.659054 0.593032 1.773953 1.650343 0.412834 1.092100 0.817643 1.215305 0.155941 1.714735 1.377846 0.728476 1.411659 -0.333489 1.308033 -0.294866 0.750283 1.928228 1.540847 0.094936 0.516990 0.957468 0.163440 0.304524 0.696317 1.712628 0.830027 1.136338 0.051300 1.300817 0.059192 1.494083 1.219370 0.992319 1.844447 1.275218 1.011615 1.336861 0.810814 -0.149102 0.126739 0.789561 0.590127 1.675916 1.283590 0.285289 1.361428 1.972945 -0.255829 0.183174 0.352839 0.912365 0.030333 1.344334 0.836044 1.499939)
+ 10.143546 #(0.000000 1.727459 0.177145 0.122483 0.104947 1.595900 1.526824 1.490455 1.714067 0.660443 0.777364 1.679465 0.077677 -0.294467 -0.113909 -0.072458 -0.096637 0.546842 1.523444 1.453151 1.659027 0.935049 0.896030 0.481793 0.063949 1.527618 -0.439113 0.657257 0.740138 1.134654 0.486937 0.510530 0.019742 0.953960 1.563444 1.186373 1.282718 0.285360 0.523455 -0.443229 0.661680 0.590075 1.784663 1.629130 0.439477 1.108022 0.794512 1.190248 0.140026 1.683877 1.285385 0.723671 1.430564 -0.407035 1.333663 -0.284993 0.807668 1.932536 1.504275 0.132746 0.548813 0.996987 0.078978 0.258518 0.692343 1.752129 0.856172 1.123936 0.019481 1.238234 0.021425 1.490908 1.189616 0.958265 1.837191 1.273185 1.036536 1.324453 0.825371 -0.167044 0.226778 0.829123 0.589493 1.655322 1.220794 0.308504 1.350472 1.901864 -0.257271 0.157385 0.340863 0.934781 0.012324 1.263813 0.840677 1.511040)
)
;;; 97 all -------------------------------------------------------------------------------- ; 9.8489
@@ -952,7 +952,7 @@
12.872588157654 #(0 0 0 1 1 1 0 0 0 0 1 0 1 0 0 0 1 1 0 1 0 0 1 0 0 0 1 1 1 1 0 1 1 1 1 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 1 0 1 0 0 0 1 1 0 0 1 1 0 0 1 1 1 1 1 0 1 0 0 0 1 1 1 0 1 1 0 1)
12.585 #(0 1 0 1 1 1 0 0 0 0 1 0 1 0 0 0 1 1 0 1 0 0 1 0 0 0 1 1 1 1 0 0 1 1 1 1 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 1 0 1 1 0 0 1 1 0 0 1 0 0 0 1 1 1 1 1 0 1 0 0 0 1 1 1 0 1 1 0 1)
- 10.290542 #(0.000000 1.553480 0.850499 1.825725 1.494140 1.527664 1.634628 0.843725 0.810851 1.112177 0.378766 1.896372 1.294603 0.713402 0.099967 1.414345 1.913278 -0.241447 0.015194 0.181198 0.332862 0.894408 1.594704 0.200446 1.537379 0.824093 1.289387 1.080168 1.517777 0.823862 1.030258 0.179896 1.146954 0.656310 0.441973 1.398471 1.769131 1.541023 1.331590 1.551396 0.780069 1.566512 0.105031 1.521077 1.374653 0.562656 -0.127966 1.909660 -0.091894 0.817760 0.274984 -0.279237 0.144836 1.836606 1.099657 1.666006 1.077904 0.510727 -1.876802 1.713821 1.823067 -0.055549 1.450491 0.717825 1.443574 1.058589 1.154698 1.929234 1.789328 0.471765 0.700017 0.783122 1.331977 0.505793 0.930892 1.348844 0.168048 1.218249 1.184421 0.394522 0.254153 1.058887 1.490116 0.272947 0.927064 0.213764 0.526827 0.211654 0.531100 0.636355 1.543138 0.871366 1.354467 0.708027 1.817698 0.624859 1.148919)
+ 10.140134 #(0.000000 1.550840 0.840480 1.835324 1.446850 1.452380 1.593649 0.820257 0.809097 1.064987 0.420297 1.891148 1.301900 0.688621 0.079587 1.428231 1.925945 -0.195794 -0.037626 0.112206 0.319097 0.887127 1.611077 0.238530 1.520936 0.820530 1.251344 1.132870 1.530152 0.855095 1.024300 0.196385 1.152898 0.628719 0.484546 1.417055 1.864338 1.494874 1.333086 1.537808 0.807564 1.605049 0.116877 1.537697 1.383539 0.604811 -0.100791 1.896979 -0.047478 0.808115 0.313272 -0.332650 0.156856 1.815593 1.086453 1.676458 1.091422 0.566706 -1.849581 1.737668 1.814619 -0.062868 1.475546 0.754246 1.438540 1.049489 1.275897 1.966535 1.842581 0.457248 0.686869 0.796782 1.327428 0.529076 0.972861 1.390454 0.179148 1.238384 1.213988 0.429168 0.247688 1.032646 1.422014 0.303941 0.918146 0.232804 0.572177 0.220963 0.492382 0.612747 1.626184 0.845590 1.330185 0.721089 1.844173 0.628039 1.155414)
)
;;; 98 all -------------------------------------------------------------------------------- ; 9.8995
@@ -960,21 +960,21 @@
13.161917686462 #(0 0 1 0 1 1 0 0 0 0 1 1 1 1 0 0 0 1 1 0 1 1 0 0 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 0 0 1 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 1 1)
12.724907890996 #(0 0 1 0 1 1 0 0 0 0 1 1 1 1 0 0 0 1 1 0 1 0 0 0 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 0 0 1 0 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 1 1)
- 10.247701 #(0.000000 -0.054064 0.707887 1.123454 -0.090331 1.667675 0.431184 0.658058 -0.018773 0.621709 1.527756 0.150776 0.896635 0.549252 0.211191 1.776481 0.935692 0.645862 0.307207 1.591986 1.780200 0.173893 1.770030 1.242252 1.342148 1.231452 -0.015671 0.436222 1.145537 1.656408 -0.097817 0.210690 1.363760 1.645646 1.186231 0.821668 1.010646 1.493405 0.809057 0.594265 0.926410 -0.189509 1.763725 1.757308 -0.011075 0.661888 0.439878 0.584949 0.056032 0.174414 1.243625 1.951934 0.458397 0.181996 0.481265 0.505481 1.847505 1.275334 1.374131 -0.006193 0.283074 0.008627 0.564129 0.642080 0.994364 0.017757 0.697349 1.189411 0.765116 1.259897 0.682852 1.738670 0.240062 1.748923 0.702785 0.153275 1.454044 0.299525 1.460524 0.289790 -0.009117 1.502403 1.214604 0.422874 1.518382 0.478258 0.255012 1.325845 0.603573 0.489473 0.944070 0.336441 1.680023 0.143971 1.348751 -0.016381 1.972550 1.414126)
+ 10.163535 #(0.000000 -0.034183 0.716187 1.128124 -0.107520 1.673166 0.450196 0.636169 -0.028510 0.583055 1.510265 0.179956 0.923641 0.546413 0.224847 1.804359 0.947942 0.685974 0.314709 1.631784 1.794778 0.182047 1.773852 1.266731 1.357078 1.245195 0.021701 0.409122 1.140439 1.654753 -0.106740 0.195170 1.360589 1.682452 1.209715 0.842119 1.017654 1.514103 0.821841 0.604329 0.920140 -0.215635 1.770429 1.802441 -0.023381 0.670960 0.459790 0.595618 0.085346 0.203136 1.277393 1.914034 0.481931 0.164722 0.494113 0.522770 1.863605 1.287865 1.371623 0.017443 0.315207 0.015272 0.539256 0.641922 0.961814 0.019548 0.687288 1.156827 0.780628 1.266474 0.699333 1.713958 0.264737 1.706089 0.709165 0.170254 1.470200 0.336119 1.454108 0.279679 0.027960 1.499354 1.214462 0.445956 1.539663 0.518279 0.245948 1.359751 0.631857 0.473010 0.938494 0.356453 1.710729 0.168298 1.325549 0.038970 1.990205 1.403327)
)
;;; 99 all -------------------------------------------------------------------------------- ; 9.9499
#(99 13.236550650051 #(0 1 1 0 0 1 1 1 0 1 0 0 0 0 1 1 1 1 1 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 1 1 1 1 0 1 1 0 1 1 1 0 0 1 0 1 0 0 1 1 1 0 0 0 1 1 1 0 0 1 0 0 1 1 1 0 1 0 0 0 1 0 0 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 1)
13.002375571256 #(0 1 1 0 1 1 0 1 1 0 0 1 0 1 0 1 1 1 0 0 1 1 0 1 0 1 0 1 0 0 1 1 1 1 1 0 1 1 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 1 1 0 1 0 0 0)
- 10.308157 #(0.000000 0.598112 1.238906 0.053084 1.477541 0.227219 1.086740 1.526141 1.532287 1.148906 0.621297 0.706372 -0.195726 0.347108 0.663074 1.443213 -0.288814 0.028420 1.542742 1.638021 1.143358 0.128641 0.455910 1.634493 0.270548 1.510316 -0.146392 1.504588 1.480715 0.964428 1.359271 1.692732 1.239505 0.520395 1.250986 0.556891 0.631838 0.489803 1.325537 0.261799 1.954293 -0.270911 0.631671 0.591182 1.446524 -0.195647 1.667367 1.754032 0.448965 0.483881 0.094869 1.469427 0.757247 1.120602 -0.029196 0.151737 0.004187 1.819081 0.101539 -0.098229 0.090229 0.365597 1.220039 0.897389 0.046823 1.430552 0.092029 0.071569 0.679501 -0.269342 0.665351 0.329117 1.691025 0.637924 1.354771 0.991491 0.942775 1.722606 0.645765 0.982988 1.629708 -0.415282 1.628313 1.146885 0.485096 0.133630 1.492851 1.822293 0.282804 1.933794 0.943289 1.741791 1.000852 0.562698 1.342602 0.764317 1.099980 1.685362 1.316140)
+ 10.057880 #(0.000000 0.544778 1.164192 0.009798 1.584906 0.285969 1.123951 1.543228 1.663950 1.177683 0.641598 0.691722 -0.217475 0.330468 0.690438 1.585129 -0.405588 -0.077180 1.612870 1.665174 1.085410 0.136654 0.389622 1.577467 0.392729 1.540956 -0.131502 1.530487 1.465244 0.878464 1.334094 1.679085 1.264870 0.461544 1.210157 0.695573 0.680555 0.439281 1.251908 0.147616 0.011565 -0.256625 0.647138 0.559722 1.516346 -0.196038 1.688645 1.731465 0.409083 0.554617 0.035533 1.449927 0.798738 1.099351 -0.091199 0.149357 0.063270 1.801401 0.121368 -0.016399 0.125950 0.227518 1.198764 0.974098 0.065534 1.404441 0.111333 0.095865 0.727332 -0.372946 0.663811 0.429353 1.678381 0.527079 1.290883 0.899118 1.019693 1.723851 0.692950 0.954512 1.658559 -0.407983 1.537823 1.166030 0.470063 0.127994 1.391707 1.821276 0.243589 1.857489 0.904279 1.728601 1.028545 0.576251 1.432508 0.716258 1.177447 1.634838 1.316487)
)
;;; 100 all -------------------------------------------------------------------------------- ; 10
#(100 13.230233676417 #(0 0 0 1 1 0 1 0 0 1 0 0 1 1 1 0 0 1 1 1 1 0 1 1 1 0 1 1 0 1 0 1 1 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 0 1 0 1 1 1 0 1 0 0 0 0 0 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 1 1 1 1 1 0 1 0)
12.998435541498 #(0 1 1 0 1 0 1 0 0 1 0 0 0 0 1 1 0 1 0 0 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 0 1 0 1 0 0 0 1 0 1 1 0 1 0 1 0 1 1 1 0 1 1 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 1 0 0 0 0)
- 10.568162 #(0.000000 1.897192 1.089802 1.849143 1.350612 1.178642 0.296785 1.386284 0.086680 1.312714 0.064523 0.254735 1.564344 -0.325411 0.966919 0.303184 1.575931 0.403482 0.702811 0.708554 0.717425 0.891356 1.505653 -0.163044 1.318235 0.049467 1.806674 0.052669 0.446544 -0.066888 1.583173 1.500861 1.706341 0.891621 -0.049051 1.408904 0.734300 1.042531 0.411768 1.202606 1.201319 0.655064 1.420149 1.933805 0.029008 1.843956 -0.022894 0.348912 1.399152 0.107580 0.569063 1.675555 1.342767 0.082858 0.432997 0.802406 1.904389 0.130036 0.194357 1.688709 1.035184 0.593866 0.174732 1.048755 1.278613 0.635024 0.677005 -0.087310 0.034638 -0.011440 1.452077 1.279900 0.122833 1.300840 0.403718 0.942352 1.747084 1.506977 0.319128 1.161608 0.868605 1.534319 0.168344 1.742573 1.398080 1.184630 1.108706 1.493292 1.580026 1.000628 0.092154 0.999793 0.793937 1.413824 1.462199 1.007675 -0.032362 0.639004 0.712924 1.567412)
+ 10.263511 #(0.000000 1.936766 1.253067 1.893066 1.396448 1.055890 0.286241 1.346350 0.101580 1.289390 0.138230 0.252765 1.612018 -0.354387 0.991636 0.351270 1.609409 0.505533 0.785418 0.687157 0.705775 0.862125 1.495329 -0.211641 1.362181 -0.008083 1.768016 0.068052 0.510198 -0.123786 1.591565 1.430592 1.722664 0.951627 -0.094278 1.424228 0.750903 0.942411 0.463887 1.217873 1.264922 0.543502 1.565616 1.839154 0.014412 1.864583 -0.036907 0.328150 1.460241 0.066787 0.551301 1.706889 1.315263 0.212953 0.512844 0.753204 1.779237 0.164952 0.199483 1.820949 1.102336 0.514516 0.076088 0.993265 1.289579 0.636092 0.829903 -0.050155 0.085571 -0.013386 1.330122 1.209778 0.067634 1.268495 0.207576 0.842682 1.620203 1.593668 0.394801 1.141837 0.830826 1.477551 0.038065 1.650181 1.432331 1.162451 0.985991 1.440167 1.543590 0.971324 0.180824 0.922321 0.717259 1.271453 1.476113 1.058032 -0.022253 0.575053 0.718978 1.576136)
)
;;; 101 all -------------------------------------------------------------------------------- ; 10.0499
@@ -983,7 +983,7 @@
13.268 #(0 0 1 1 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 0 1 0 1 1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 1 1 1 0 1 0 0 0 1 1 0 1 0 1 0 1 0 0 1 1 0 0 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0)
13.219774246216 #(0 0 1 1 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 0 0 0 1 1 0 1 0 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 0 1 0 0 1 1 1 1 0 0 1 1 1 1 0 1 1 1 0 1 0 0 0 1 1 0 1 0 1 0 1 0 0 1 1 0 0 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0)
- 10.458184 #(0.000000 1.365981 0.279158 0.109204 1.692772 1.478536 1.242896 0.270305 0.272951 0.240350 -0.309342 0.573248 1.560454 0.909152 0.894632 0.131182 1.682178 0.109019 1.471542 -0.429518 0.786907 1.619861 0.961014 0.532931 0.205479 1.594901 0.718894 1.510038 0.677205 0.157118 0.940633 1.406168 0.534958 0.739348 0.947001 0.544892 1.509353 1.176860 -0.077531 0.077868 0.009057 1.914351 0.565079 0.012961 1.465603 1.054131 1.693030 0.230105 0.384180 -0.332314 0.452638 0.536839 0.801637 1.703663 1.832535 1.115596 1.338108 0.352840 -0.492349 1.574260 1.094587 0.162315 1.161133 1.769747 0.618835 1.708619 1.134486 0.686301 0.081083 0.687812 1.684506 1.780352 1.598181 1.479785 1.741393 1.218187 1.458457 0.467121 0.776170 1.237505 0.660196 1.093883 1.326167 1.031574 1.649349 0.941190 1.266110 1.125782 -0.027346 1.370348 0.154456 -0.045542 0.424444 1.066504 1.331432 1.667181 1.762030 0.407976 0.810586 1.648824 -0.199706)
+ 10.312939 #(0.000000 1.436436 0.216413 0.051195 1.702276 1.442146 1.267361 0.266045 0.317740 0.222834 -0.305334 0.533849 1.590717 0.866978 0.860987 0.081117 1.691884 0.104147 1.494159 -0.378935 0.786409 1.632466 0.855732 0.529635 0.230954 1.569932 0.714660 1.460154 0.681591 0.127550 0.963438 1.317387 0.493969 0.732761 0.920971 0.498106 1.485833 1.222340 -0.078875 0.075089 -0.028509 1.878808 0.535686 -0.022750 1.439942 1.036346 1.614210 0.267149 0.391688 -0.338305 0.462721 0.475791 0.795268 1.682973 1.775634 1.098127 1.269761 0.367781 -0.438568 1.546808 1.042520 0.099958 1.134025 1.690170 0.589055 1.661299 1.156793 0.732727 0.063045 0.685484 1.685498 1.750157 1.590986 1.445459 1.739041 1.189606 1.406157 0.465283 0.754992 1.177860 0.660907 1.108380 1.326505 0.993136 1.675878 0.926302 1.256470 1.142504 -0.009028 1.358869 0.195126 -0.008652 0.409297 1.020115 1.266397 1.663360 1.704212 0.400159 0.785504 1.631850 -0.201740)
)
;;; 102 all -------------------------------------------------------------------------------- ; 10.0995
@@ -992,7 +992,7 @@
13.300039088203 #(0 0 1 1 1 0 0 0 1 0 0 1 1 1 1 0 1 0 0 1 0 0 1 1 1 1 0 0 1 1 1 0 1 0 1 0 1 1 0 1 0 1 1 0 0 0 1 0 0 1 0 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 0 0 1 0 1 0 1 0 1 0 0 0)
13.194128990173 #(0 0 1 1 1 0 0 0 1 0 0 1 1 1 1 0 1 0 0 1 0 0 1 1 1 0 0 0 1 1 1 0 1 0 1 0 1 1 0 1 0 1 1 0 0 0 1 0 0 1 0 0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 1 1 0 1 1 0 1 1 1 1 0 1 0 0 1 0 1 0 1 0 1 0 0 0)
- 10.722733 #(0.000000 0.107746 0.575473 0.373475 0.769957 0.929796 -0.009907 0.060051 0.260777 1.700394 1.569565 1.350701 0.524354 0.544568 0.787862 0.536682 1.572025 0.306265 0.538006 -0.471549 0.480007 1.424329 1.415327 0.522463 1.678296 1.631728 0.717121 0.302072 0.498241 1.668574 1.626127 0.640599 1.542371 1.190906 0.902391 -0.187339 0.007833 1.809577 0.615943 -0.129682 0.993543 0.608309 0.273371 0.625083 0.305989 0.434057 1.107676 1.820392 0.450360 -0.137044 0.640665 0.198128 1.714085 0.131825 0.558274 1.235679 1.801235 1.638882 0.977322 0.940544 0.702878 0.257108 -0.044126 1.533355 0.749024 -0.238023 0.885776 1.826081 0.233700 0.015538 0.284801 0.366724 0.852750 0.268704 0.209855 0.670154 1.750203 0.687646 0.208998 1.155531 1.867293 0.794804 -0.104621 0.994542 1.150793 0.747755 1.543846 1.549435 -0.271729 0.200727 0.887588 -0.019049 0.258390 1.085851 1.161940 1.280963 0.228440 1.118813 1.112343 0.899284 0.762852 1.715183)
+ 10.518128 #(0.000000 0.158104 0.572153 0.353012 0.800008 0.902652 -0.047406 0.114131 0.210980 1.661582 1.492172 1.359226 0.590421 0.584071 0.828289 0.522258 1.614822 0.393539 0.528821 -0.507386 0.521209 1.378564 1.426801 0.491296 1.702421 1.706782 0.776288 0.320985 0.486135 1.559499 1.596722 0.663369 1.588744 1.193652 0.882733 -0.182185 -0.018178 1.819075 0.629820 -0.120946 1.155579 0.600694 0.282450 0.660190 0.360200 0.410780 1.109729 1.796573 0.454225 -0.124645 0.580639 0.229405 1.658776 0.187224 0.666071 1.126830 1.802136 1.638168 1.035462 0.988117 0.734821 0.272070 0.035200 1.548827 0.742037 -0.336342 0.937852 1.873781 0.268393 0.060345 0.259383 0.376254 0.854688 0.275403 0.162375 0.690924 1.843698 0.658630 0.166352 1.185262 1.897025 0.826480 -0.179859 0.979978 1.192399 0.747732 1.585813 1.635811 -0.198666 0.230558 0.859599 -0.122139 0.259591 1.087618 1.159146 1.250091 0.241890 1.079829 1.109142 0.920196 0.738483 1.802671)
)
;;; 103 all -------------------------------------------------------------------------------- ; 10.1489
@@ -1000,7 +1000,7 @@
13.673172572795 #(0 0 0 1 1 0 0 1 0 1 1 0 1 1 0 1 0 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 0 0 1 0 1 0 1 1 1 1 1 1 1 1 0 1 0 1 0 0 0 1 1 0 1 1 1 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 1 1 1 0 1 1 1 1 1 1 0 1 1 0 1 0 1 0 0 0 0 1 0 1 1 0 0 0 1)
13.435972213745 #(0 1 1 0 0 1 0 0 1 1 0 0 1 0 0 0 1 0 1 1 0 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 1 0 0 1 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 1 0 1)
- 10.834412 #(0.000000 0.623205 0.679886 0.547336 0.086822 -0.067934 0.852723 1.530830 0.429959 0.950649 0.250670 0.763075 0.209225 0.063644 0.222086 1.798495 1.817438 1.171965 1.739960 1.956558 -0.157540 1.727497 0.623102 1.644146 1.260933 0.002170 0.532825 1.233626 1.390200 1.497169 0.245783 0.711701 1.225417 0.978892 0.610061 0.118043 -0.185640 1.069710 1.000558 1.197383 0.213516 -0.165285 0.642804 0.869647 1.393397 0.691290 1.889193 1.363369 0.176297 1.583074 1.296251 1.322441 1.654240 1.158154 -0.027682 0.941826 1.401105 0.360846 0.929318 0.100034 1.538906 0.442770 1.364037 1.668580 1.422657 1.122805 1.808550 0.874574 0.060924 1.515503 0.834323 1.587973 -0.116339 1.540751 0.621442 0.077902 0.070243 0.789179 0.133282 1.580483 0.690930 -0.240077 1.922675 0.136573 0.846467 0.621664 0.626413 0.680266 1.296638 1.460995 1.326890 1.346667 0.401688 1.723806 1.065013 1.312112 0.166908 0.082975 0.749837 0.225596 0.378124 1.278899 1.324422)
+ 10.570961 #(0.000000 0.672728 0.692621 0.578993 0.142091 -0.065848 0.898872 1.510275 0.431113 0.904618 0.337793 0.728483 0.236501 0.184172 0.331782 1.816913 1.773367 1.102577 1.735853 0.005979 -0.166874 1.709111 0.649644 1.599777 1.201722 -0.097777 0.530708 1.203936 1.308084 1.393847 0.196395 0.606051 1.092599 0.963590 0.552058 0.169427 -0.161774 1.094052 1.015579 1.272009 0.186995 -0.236982 0.585767 0.928361 1.345315 0.629845 1.919375 1.241008 0.145716 1.545201 1.256548 1.293481 1.645323 1.203231 0.037073 0.988640 1.313923 0.388204 1.026676 0.216484 1.488427 0.485155 1.236645 1.624301 1.443233 1.092087 1.814521 0.872449 0.104257 1.581640 0.816403 1.523077 -0.109119 1.616828 0.581790 0.045804 0.001556 0.743825 0.189650 1.621671 0.761599 -0.243859 -0.020383 0.154969 0.865764 0.677140 0.686255 0.676970 1.349675 1.432656 1.259275 1.470335 0.490042 1.767912 1.014245 1.300439 0.222372 0.209987 0.897880 0.301998 0.308389 1.271099 1.275137)
)
;;; 104 all -------------------------------------------------------------------------------- ; 10.1980
@@ -1008,14 +1008,14 @@
13.682311361591 #(0 1 1 1 1 0 0 0 1 1 1 1 0 1 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 1 0 1 0 1 1 1 0 0 1 1 1 0 0 1 1 1 1 0 1 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 1 0 1 1 0 0 1 0 0 1 0 1 0 0 0 1 0 0 1 1 1 0 1 1 0 1 0 1 0 1 1 0 1 1 1 1 1 0)
13.330215043333 #(0 1 1 1 1 1 0 0 1 1 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 1 0 1 0 1 1 0 0 0 1 1 1 0 0 1 1 1 1 0 1 0 1 1 1 1 1 1 0 0 0 1 1 1 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 0 1 0 0 1 1 1 0 1 1 0 1 0 1 0 1 1 0 1 1 1 1 1 0)
- 10.711568 #(0.000000 1.356964 1.769841 0.928052 1.582230 1.142192 0.400927 1.266357 1.593164 0.841378 1.331396 -0.034007 0.871582 1.131932 1.033175 0.080151 0.845621 0.377181 0.240146 0.956167 1.640464 0.699349 1.480582 0.724437 0.268760 0.421574 1.557052 -0.111323 0.831491 0.233284 0.578402 0.142878 1.722636 0.152934 0.671353 0.366631 -0.052076 1.563313 1.448681 0.505874 1.087532 1.881271 0.812024 0.103417 -0.184493 0.789781 -0.132797 0.590868 1.559041 -0.110831 1.599052 0.768545 0.605743 1.141647 0.400060 0.353358 0.612842 1.510087 1.667760 1.559872 0.083206 0.954697 0.481813 1.831473 0.435322 -0.024047 1.690957 1.285550 0.097430 0.009748 0.055688 1.528649 1.271019 0.565858 1.119535 1.388137 0.994993 0.947928 1.659788 1.839905 0.407296 0.384142 1.166680 0.081635 0.310045 1.392047 1.823517 -0.416373 0.424827 1.646526 1.621387 -0.250130 -0.125508 1.919991 0.085881 0.468199 0.644185 0.707680 0.157325 1.348518 0.416736 0.213969 1.275175 0.760717)
+ 10.500667 #(0.000000 1.346196 1.706703 0.972397 1.611867 1.060118 0.350152 1.225933 1.544542 0.802111 1.366803 0.027578 0.931512 1.169253 1.014491 0.098802 0.872313 0.409814 0.296181 0.976460 1.664852 0.647662 1.496819 0.782342 0.374390 0.434524 1.547321 -0.114822 0.826717 0.234110 0.580408 0.123443 1.705669 0.194666 0.732066 0.368259 -0.126548 1.575472 1.485058 0.537042 1.042018 1.872773 0.809045 0.029456 -0.149406 0.794585 -0.067660 0.586851 1.548303 -0.041945 1.597041 0.736632 0.556716 1.029095 0.383441 0.400726 0.565815 1.511446 1.671713 1.549315 0.168084 0.960022 0.474292 1.857548 0.508658 0.009919 1.663087 1.260399 0.045807 0.093212 0.095371 1.442054 1.279521 0.668881 1.097494 1.424980 0.997705 0.877172 1.625484 1.753412 0.383283 0.397347 1.250089 0.031747 0.327861 1.413343 1.819447 -0.358385 0.378277 1.623673 1.601000 -0.327956 -0.194115 1.931924 0.102824 0.468241 0.611368 0.680543 0.146920 1.369611 0.463548 0.266976 1.330787 0.685790)
)
;;; 105 all -------------------------------------------------------------------------------- ; 10.2470
#(105 14.418999645918 #(0 1 0 0 1 1 0 0 1 1 0 1 0 1 1 1 1 1 0 1 1 0 1 1 0 0 1 0 1 0 0 0 0 1 0 1 1 1 0 0 1 1 0 1 1 1 0 0 1 0 0 0 1 0 1 1 1 1 0 1 1 0 1 0 1 0 1 1 1 1 1 1 0 1 0 0 0 1 1 1 1 0 1 1 0 1 0 1 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 1 0)
13.595993876506 #(0 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 1 1 0 1 1 0 1 1 0 0 1 0 1 0 0 0 0 1 0 1 1 1 0 0 0 1 0 1 1 1 0 0 1 0 0 0 1 0 1 1 1 1 0 1 1 0 1 0 1 0 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 0 1 1 0 1 0 0 0 1 1 0 0 1 1 1 0 0 1 1 1 0 0 1 0)
- 10.722686 #(0.000000 0.747476 0.277474 1.237339 1.306101 -0.157182 0.336351 0.628642 0.349988 0.855466 -0.154523 -0.021911 1.234046 1.675176 0.995349 1.383347 0.067817 0.993454 0.038975 1.805174 1.514652 0.879107 0.463427 1.509959 0.171621 -0.103363 0.229021 0.490060 1.233568 1.199655 1.120316 1.258395 1.061553 1.831361 1.268378 1.669448 0.492702 1.445037 1.937801 1.318400 0.027380 1.550437 1.215532 0.905116 0.649418 0.382154 1.116456 0.580984 0.710779 1.524771 0.537471 1.425727 1.345562 0.326543 0.136753 0.567216 0.619084 0.843454 0.659835 0.051717 1.462244 1.398645 0.399650 0.329732 1.504347 1.577630 1.770148 1.429726 0.376873 0.204493 1.245905 1.531122 1.325471 0.795904 1.127876 0.202326 -0.096810 0.140690 0.232503 0.761155 0.081747 0.683088 0.546753 0.110431 1.663495 0.492859 0.062284 0.532040 -0.298173 0.764516 0.099156 0.963132 1.068570 1.944489 0.596259 0.595665 1.012306 -0.043794 0.611918 -0.024843 1.604824 0.279511 0.659923 1.816867 1.312214)
+ 10.363435 #(0.000000 0.648454 0.162784 1.252498 1.449143 -0.267271 0.405389 0.667634 0.402110 0.931580 -0.060716 0.002176 1.264685 1.700793 1.038528 1.491517 0.041211 0.962917 0.053018 1.896633 1.604080 0.854572 0.356875 1.489387 0.140472 -0.155170 0.201282 0.479958 1.170301 1.177848 1.050490 1.295880 1.011224 1.885874 1.149502 1.659875 0.445708 1.535453 1.930240 1.297086 0.017288 1.416574 1.218976 0.896089 0.602484 0.461596 1.089833 0.562561 0.587888 1.561281 0.496717 1.362391 1.289309 0.283474 0.223022 0.493831 0.646351 0.893838 0.745068 -0.059802 1.492311 1.311585 0.362297 0.294306 1.613771 1.601274 1.897860 1.469984 0.351383 0.182265 1.299078 1.574236 1.268804 0.805370 1.095826 0.191616 -0.108346 0.206455 0.232189 0.738320 0.078063 0.578604 0.405498 0.026953 1.574810 0.433341 0.158170 0.505016 -0.222233 0.744910 0.178406 1.026913 1.122222 1.950184 0.601897 0.687999 1.036110 0.041034 0.609962 -0.001841 1.667688 0.341582 0.694426 1.773052 1.222521)
)
;;; 106 all -------------------------------------------------------------------------------- ; 10.2956
@@ -1024,7 +1024,7 @@
13.421741504769 #(0 1 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1 1 1 1 0 1 0 1 0 0 0 0 1 1 1 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 1 1 1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 1 0 1 1 0 0 1 0 1 0 1 1 1 1 0 0 1 0 0 1 1 0 0 1 1 1 0 1 1 1 0)
13.200031373463 #(0 0 1 0 1 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 1 1 1 0 1 0 1 1 1 1 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 1 0 1 1 1 0 0 1 0 0 0 0 0 1 1 0 0 1 0 1 1 0 0 1 1 1 1 1 1 0 0 1 1 0 1 1 0 0 0 0 0 1 0 1)
- 10.878542 #(0.000000 0.072599 0.362509 1.398156 1.081365 0.730756 1.932048 0.626211 0.828123 1.094900 1.453180 0.997935 1.343376 0.096250 0.218792 -0.133819 1.265940 0.821467 0.413523 0.101890 0.410057 0.647170 1.509805 1.912062 0.882106 0.199755 0.612409 0.230469 1.380680 1.129852 0.138128 0.364791 1.280272 1.989860 1.119224 0.365049 0.130448 0.936275 -0.203435 0.117944 1.313857 0.797408 1.621045 0.895994 1.351739 0.024545 1.055080 0.263661 1.446167 0.264375 1.495617 0.797773 0.767919 0.846056 0.681662 0.585818 1.208875 1.725598 0.576180 1.363375 0.454480 0.955049 1.162665 1.539524 1.166862 0.234013 1.455969 0.975804 0.241487 0.644683 -0.005905 1.805191 0.019768 -0.317248 0.377824 1.985728 -0.319064 1.286175 0.066686 0.059396 1.759918 1.401112 0.811419 1.119146 0.925187 -0.123684 0.193024 -0.094133 0.135129 0.514226 1.946012 0.383531 1.166633 0.585345 1.433209 1.878153 0.356350 0.416889 1.580888 -0.121418 0.410838 1.534423 1.616858 1.207776 -0.127230 1.225655)
+ 10.611190 #(0.000000 0.096481 0.249387 1.425174 1.160912 0.786672 1.949026 0.544018 0.780271 1.093188 1.445257 0.984767 1.356837 0.167632 0.305203 -0.217841 1.231163 0.797766 0.463366 0.050787 0.272695 0.632800 1.486226 1.904005 0.843804 0.243415 0.579405 0.240523 1.305489 1.136513 0.056452 0.421227 1.315756 0.065574 1.086072 0.393350 0.075143 0.929719 -0.187101 0.043632 1.276394 0.751505 1.489413 0.865391 1.341892 0.005556 1.095213 0.263027 1.525323 0.283136 1.479483 0.834848 0.707198 0.887971 0.664951 0.603547 1.226421 1.707257 0.656643 1.365279 0.469464 1.024989 1.141016 1.520446 1.221493 0.158407 1.478065 0.956283 0.235059 0.647745 -0.036405 1.769160 0.083729 -0.336659 0.369977 0.044289 -0.332643 1.187815 0.152846 0.092513 1.720777 1.313531 0.788899 1.072779 0.933034 -0.137657 0.135400 0.031524 0.258938 0.474433 1.934129 0.382558 1.129725 0.635158 1.467509 1.903284 0.390643 0.411464 1.561027 -0.159146 0.406763 1.494280 1.636198 1.315368 -0.078964 1.212445)
)
;;; 107 all -------------------------------------------------------------------------------- ; 10.3441
@@ -1033,7 +1033,7 @@
13.624429092956 #(0 1 0 1 1 0 0 0 1 1 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 1 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 1 0 0 1 1 0 1 0 1 1 0 0 1 0 1 0 0 0 1 1 1 0 1 0 1 1 0 1 1 1 1 1 1 0 1 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1)
13.224366750161 #(0 1 0 1 1 1 0 0 1 1 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 1 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 1 1 0 1 1 0 0 1 1 0 1 0 1 1 0 0 1 0 1 0 0 0 1 1 1 0 1 0 1 1 0 1 1 1 1 1 1 0 1 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1)
- 10.930450 #(0.000000 1.297376 0.621178 1.840062 1.695826 0.329880 0.109075 0.655900 1.523177 0.694939 0.619157 0.233147 0.590494 1.346736 1.361347 0.535985 1.111787 0.145372 0.217155 1.031655 -0.071498 1.788973 1.124828 0.233908 0.070238 1.579368 1.324557 1.752585 0.509569 0.186733 0.493064 1.937285 1.484128 0.142538 1.427656 1.036383 -0.033797 0.963618 0.059330 0.726235 1.222167 0.200337 -0.037986 0.256160 1.457835 1.414043 1.747867 0.356180 0.165919 0.971039 0.808515 1.120896 1.408411 1.709181 1.134606 0.520979 0.882983 1.327374 0.957319 1.298838 0.090705 1.123183 1.404067 0.244384 1.953408 1.355833 1.518257 1.299655 1.614730 1.319995 0.512898 1.385359 1.151561 1.325107 0.529125 1.444416 0.070967 -0.007781 0.792650 0.422501 0.018486 1.887271 0.239633 1.153534 0.811736 0.672783 -0.019506 1.319612 1.663810 0.039706 1.812623 1.632794 1.407945 0.144418 0.518171 1.020819 -0.255881 1.684165 1.323125 1.666207 1.564477 0.836531 0.097586 1.215565 0.300269 0.797513 1.705863)
+ 10.670873 #(0.000000 1.277825 0.648778 1.788201 1.821941 0.398067 0.136443 0.603734 1.526564 0.736017 0.611887 0.104630 0.582777 1.396271 1.358511 0.587701 1.090629 0.104300 0.286059 1.052192 -0.008637 1.716250 1.095999 0.299008 0.102028 1.671719 1.333423 1.826064 0.583536 0.179128 0.500753 1.863734 1.604128 0.213423 1.380890 1.089935 -0.026961 1.076924 0.053396 0.801035 1.365829 0.287598 -0.121105 0.238084 1.507398 1.506722 1.695510 0.402118 0.099232 0.960852 0.733266 1.088844 1.313701 1.774566 1.150008 0.513505 0.903845 1.316520 0.985521 1.291711 0.146441 1.158970 1.423091 0.213512 1.888701 1.390193 1.552826 1.303882 1.585216 1.318812 0.564298 1.383542 1.170492 1.356062 0.588066 1.390025 0.086580 -0.028509 0.800002 0.494344 0.077493 1.858266 0.188553 1.145867 0.856600 0.685904 0.030569 1.337007 1.694651 0.050357 1.956754 1.539061 1.521399 0.177511 0.493878 1.010334 -0.251314 1.633411 1.380099 1.675712 1.534292 0.698815 0.084877 1.117961 0.354643 0.827795 1.767933)
)
;;; 108 all -------------------------------------------------------------------------------- ; 10.3923
@@ -1042,14 +1042,14 @@
13.694299006963 #(0 1 1 0 0 0 0 1 0 1 0 0 1 1 0 1 1 1 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 1 0 1 0 1 1 0 0 1 1 0 1 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 1 1 0 1 0 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 1)
13.534 #(0 1 1 0 0 0 0 1 0 1 0 0 1 1 0 1 1 1 0 1 1 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 1 0 1 0 1 1 0 0 1 1 0 1 1 0 1 0 0 1 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 1 1 0 1 1 1 0 1 0 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 1 0 1 1 0 1 0 1 0 0 0 0 1)
- 10.957726 #(0.000000 1.259469 0.429156 1.740067 1.194913 1.000403 1.350458 1.648464 0.350864 1.526939 0.973763 0.239360 0.502722 0.015575 0.424776 0.315153 0.662941 0.651820 0.856958 -0.278859 1.358596 1.476667 0.633016 0.102411 0.770569 0.895018 -0.000283 -0.226438 0.724931 0.275403 0.917757 1.367410 0.820830 1.123959 1.513341 1.053013 1.815404 -0.088458 0.543316 0.723905 0.939116 1.573678 0.459155 0.887270 1.695952 0.709404 1.671337 0.075717 0.736472 0.045202 0.409921 0.383495 1.386497 1.051351 0.343989 1.756881 0.010456 1.733782 0.959748 1.275353 0.910872 0.516056 0.685154 1.136749 1.224308 0.909733 0.124222 0.682739 0.224609 0.890861 0.149656 1.618739 1.427692 0.117756 0.110797 0.697783 1.211183 0.456877 -0.067751 0.651125 1.043350 1.089782 0.276248 0.625855 1.256630 1.546302 0.524287 1.441599 1.767396 0.908492 0.148905 1.762063 1.693457 1.617327 1.238920 -0.015163 1.465394 -0.130241 1.056886 0.263439 0.620680 -0.053518 1.671213 1.410710 1.565435 1.019154 1.415638 0.827777)
+ 10.659874 #(0.000000 1.278042 0.521263 1.772691 1.162007 0.848607 1.375644 1.648529 0.363507 1.603925 1.052202 0.173827 0.411892 0.034841 0.393392 0.249313 0.603750 0.672741 0.835586 -0.268382 1.403720 1.615615 0.561727 0.207764 0.798076 0.881463 -0.011873 -0.178812 0.708487 0.308765 0.986103 1.495976 0.789104 1.057505 1.496668 1.000861 1.875853 -0.138013 0.561202 0.713656 0.871014 1.613258 0.366523 0.776543 1.755838 0.715233 1.714340 0.052316 0.667904 0.128133 0.508958 0.406150 1.447059 0.992917 0.369847 1.817747 0.037993 1.695367 1.038517 1.287920 0.884893 0.572021 0.730892 1.148415 1.258519 0.832610 0.291632 0.721972 0.141329 0.901457 0.089228 1.634632 1.385384 0.148236 0.174716 0.659497 1.224097 0.523074 -0.227718 0.542047 1.090851 1.102403 0.218401 0.690365 1.302391 1.605985 0.483766 1.528742 1.788404 1.058512 0.147332 1.779601 1.745814 1.616646 1.246003 -0.067874 1.489514 -0.140665 1.057671 0.341921 0.667259 -0.047874 1.784578 1.448518 1.525065 1.035547 1.397355 0.906653)
)
;;; 109 all -------------------------------------------------------------------------------- ; 10.4403
#(109 13.820175866598 #(0 0 0 1 0 1 1 1 1 0 1 0 0 1 0 0 1 1 1 1 1 0 1 1 1 0 1 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 0 1 1 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 1 1 1 0 1 1 1 0 0 1 1 1 0 0 1 0 1 0 0 0 1 0 1 1 1 0 1 1 0 1 0 1 1 0 0 0 0)
13.496821304096 #(0 0 0 1 0 1 0 1 1 0 1 0 0 1 0 0 1 1 1 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 0 1 1 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 1 1 1 0 1 1 1 0 0 1 1 1 0 0 1 0 1 0 0 0 1 0 1 1 1 0 1 1 0 1 1 1 1 0 0 0 0)
- 11.149155 #(0.000000 0.241393 0.436925 0.197892 1.000029 0.146129 1.215107 0.011478 0.024586 1.643296 1.134687 -0.076688 1.459024 1.749548 1.835504 1.676164 -0.129440 1.014483 0.199788 0.363472 1.066433 1.593752 1.209465 1.271824 -0.159922 1.542036 1.682428 0.436762 1.046780 0.916267 1.486469 0.981917 1.834162 -0.211515 1.690297 1.154579 0.771749 0.247097 0.097551 1.581195 -0.044309 1.304939 0.403486 1.334038 1.776378 1.357285 1.521568 0.756237 -0.036058 0.913648 0.515440 1.161764 0.124031 1.651921 1.092694 1.002578 0.496767 1.275794 1.739338 0.139902 0.082228 1.631412 1.318134 0.060893 0.418930 0.819720 1.601218 0.186060 1.947993 1.004628 1.262404 0.422401 0.843972 1.038181 0.115855 1.831043 -0.035791 0.270425 0.624685 1.300206 0.572245 0.376645 0.767749 0.716410 0.716182 0.761053 -0.016111 1.548474 0.408592 0.892369 1.333322 1.811497 1.039680 1.142949 1.289428 0.672242 1.190583 0.322318 0.436562 1.132439 0.167794 1.377153 0.234626 -0.028953 1.527337 0.819033 0.039600 0.107144 1.302093)
+ 10.849242 #(0.000000 0.320557 0.438497 0.260492 1.097136 0.114003 1.268731 -0.018415 0.027310 1.569511 1.176000 -0.023515 1.480720 1.766312 1.826887 1.734239 -0.113047 0.975635 0.232535 0.308194 1.095809 1.597944 1.198418 1.346560 -0.140451 1.599386 1.666308 0.502794 1.029948 0.919024 1.440653 0.962012 1.879462 -0.194040 1.743078 1.218057 0.828007 0.366467 0.107611 1.529623 -0.016028 1.347429 0.467156 1.364694 1.731561 1.408193 1.654822 0.769270 -0.075207 0.927814 0.613433 1.135919 0.272056 1.541179 1.017736 0.943511 0.465870 1.258751 1.788803 0.039449 0.079972 1.674980 1.369042 0.061628 0.404340 0.881174 1.641922 0.297895 -0.052383 0.906236 1.302983 0.503313 0.875186 0.918108 0.182413 1.759932 -0.086093 0.333125 0.750122 1.272070 0.635363 0.425817 0.825793 0.718008 0.735348 0.799944 -0.014211 1.591358 0.378945 0.984642 1.348425 1.884153 1.123315 1.152588 1.231103 0.725634 1.254061 0.280691 0.393909 1.197347 0.043627 1.324136 0.202427 0.091141 1.467764 0.820902 0.107231 0.122556 1.204880)
)
;;; 110 all -------------------------------------------------------------------------------- ; 10.4881
@@ -1057,7 +1057,7 @@
13.64278793335 #(0 0 1 0 0 1 1 1 0 1 0 1 1 0 1 0 1 0 0 1 0 0 1 0 0 1 1 0 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 1 0 1 1 0 0 1 1 0 0 0 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 1 1 0 0 0 1 1 1 0 1 1 1 1 1 1 0 1 0 1 0 1 0 1)
13.592092514038 #(0 0 1 0 0 1 1 1 0 1 0 1 1 0 1 0 0 0 0 1 0 0 1 0 0 1 1 0 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 1 1 0 1 1 0 0 1 1 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 0 1 1 1 1 0 0 0 1 1 1 0 1 1 1 1 1 1 0 1 0 1 0 1 0 1)
- 11.186571 #(0.000000 1.243465 -0.135895 0.680195 -0.029625 0.181565 1.302018 1.441912 0.657314 1.461282 0.154565 1.671155 -0.085655 1.589494 0.331462 0.741975 1.174344 0.912574 1.244450 0.093153 0.871148 1.041358 0.896515 0.492287 0.403635 1.076685 0.917627 1.159258 0.980074 1.081103 0.183274 0.574816 0.881284 0.365316 1.771196 0.012985 0.914744 0.548637 0.936617 0.175351 1.749631 0.102886 1.202643 0.477113 0.414557 1.251945 1.485425 0.820612 1.878109 0.381090 0.623315 0.691548 0.235481 -0.038373 0.515253 0.921663 1.451085 1.752452 0.812268 1.147151 0.751365 1.272413 1.238355 0.952315 1.139922 0.876098 1.860058 1.394235 0.214798 0.409380 1.729874 -0.093260 1.886401 1.177615 1.278892 0.609002 0.895646 0.300031 1.421526 0.887525 1.559626 1.313388 1.381758 0.120947 0.365842 1.739004 0.574783 1.155559 0.858727 -0.056627 1.205206 0.103083 1.741107 0.491673 -0.215519 1.496385 -0.064098 0.102253 1.286074 0.426767 0.706012 0.480521 1.245339 0.250268 1.738595 1.046156 0.787652 1.796968 1.321627 0.529547)
+ 10.904715 #(0.000000 1.258112 -0.193892 0.660561 -0.067037 0.185916 1.303223 1.416562 0.770118 1.504979 0.247623 1.694945 -0.067599 1.656202 0.279113 0.752789 1.137750 0.961652 1.334796 0.108572 0.936349 1.054326 0.882497 0.517441 0.443107 1.082527 0.906634 1.104590 0.934309 1.042995 0.198584 0.549209 0.878212 0.323768 1.840587 -0.018821 0.934392 0.507844 0.954519 0.201338 1.830035 0.059088 1.152494 0.366490 0.381479 1.301197 1.553929 0.809321 1.719946 0.280221 0.591448 0.667097 0.221700 -0.049860 0.505635 0.911858 1.496033 1.744794 0.792512 1.125082 0.749937 1.254727 1.225078 0.985900 1.087038 0.851401 1.761520 1.349227 0.227912 0.412438 1.730387 -0.116680 1.871269 1.170030 1.316337 0.640905 0.827428 0.256917 1.340752 0.825635 1.650777 1.225559 1.370648 0.047112 0.345914 1.695811 0.506430 1.147759 0.860457 -0.195788 1.166119 0.097623 1.712606 0.548686 -0.248804 1.522466 -0.105386 0.113515 1.336882 0.356990 0.754468 0.457764 1.326858 0.211004 1.703209 1.007676 0.832245 1.773082 1.320890 0.484524)
)
;;; 111 all -------------------------------------------------------------------------------- ; 10.5357
@@ -1065,7 +1065,7 @@
14.359505653381 #(0 1 0 0 0 0 1 1 1 0 1 1 1 1 1 0 0 0 1 0 1 0 1 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 1 0 1 0 0 1 0 1 0 1 1 1 0 1 0 1 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 0 0 0 0 1 1 0 0 1 1 0 1 1 1 1 1 0 1 0 0 1 1 0 1 1 0 0 0 0 0 1 1 0 0 0)
13.80813938144 #(0 1 0 0 0 1 0 0 1 1 1 1 0 1 0 1 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 1 1 1 0 1 1 0 0 1 0 0 0 0 1 0 1 1 1 1 0 1 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 0 0 1 1 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 1 1 1)
- 11.104061 #(0.000000 1.417915 1.030931 -0.084332 1.809024 0.207734 1.701948 1.483197 0.417403 1.522524 -0.163582 1.245183 0.128334 1.207114 1.144926 0.147615 1.329712 0.606985 0.402191 1.951392 0.371331 0.647307 1.025849 1.412460 0.048779 0.028915 0.985807 0.138636 0.856518 1.254498 -0.185466 0.829304 1.541737 0.756517 1.475003 1.467318 1.329262 0.959815 0.452334 1.245754 -0.203627 0.401704 0.830344 1.358728 1.371936 1.492993 0.169291 0.490840 -0.089923 1.333437 1.114533 1.343933 1.386586 0.955103 0.103190 0.607351 1.593372 0.003633 1.591927 1.082163 1.292752 0.827869 0.977866 0.909486 0.723373 0.339557 1.291383 0.853676 0.963120 1.551627 1.461243 -0.062142 0.830153 0.854812 1.523703 0.726428 1.864440 0.159347 -0.199368 0.317928 1.905337 0.264294 0.665689 0.170249 0.268892 1.463953 1.122008 0.969968 1.606331 1.946215 1.815899 1.182056 1.700620 0.612108 0.429950 1.689531 0.386258 1.495151 1.628502 0.998859 0.267864 1.352850 -0.225173 1.529566 0.640854 0.360389 1.438927 0.259242 0.284800 0.584446 0.121039)
+ 10.780417 #(0.000000 1.395592 0.998234 -0.100571 1.877252 0.187310 1.719034 1.463612 0.338701 1.539243 -0.114122 1.259722 0.131127 1.282151 1.272129 0.056808 1.340244 0.550490 0.479588 0.044932 0.438657 0.628049 0.984100 1.382677 0.106447 0.074775 0.982176 0.104047 0.794772 1.274097 -0.209668 0.883065 1.595158 0.714130 1.424551 1.400984 1.373902 1.002380 0.529342 1.226038 -0.238344 0.500922 0.853056 1.311739 1.329994 1.421117 0.058105 0.583431 -0.160000 1.275401 1.118437 1.297368 1.466414 0.972530 0.118400 0.547186 1.683514 -0.092686 1.533999 1.142573 1.407549 0.748954 0.870119 0.946991 0.757712 0.278537 1.324406 0.914570 1.015014 1.571307 1.453782 -0.033530 0.725995 0.815249 1.556774 0.743527 1.887001 0.131065 -0.132649 0.346570 1.905860 0.227743 0.585863 0.184892 0.232922 1.558290 1.121659 0.901131 1.578394 -1.982890 1.868742 1.157272 1.609619 0.624852 0.431233 1.700634 0.395118 1.565006 1.554072 0.995239 0.357701 1.301256 -0.342553 1.428946 0.592672 0.267825 1.376782 0.215919 0.239078 0.702722 0.129968)
)
;;; 112 all -------------------------------------------------------------------------------- ; 10.5830
@@ -1074,35 +1074,35 @@
14.059637729172 #(0 0 1 1 0 0 1 1 0 0 0 0 1 1 0 1 1 0 1 1 1 0 1 0 0 1 1 1 0 0 0 0 1 1 1 1 0 1 1 1 1 1 0 1 0 1 1 0 1 1 0 0 1 0 1 1 1 1 1 0 0 1 0 1 0 1 0 1 0 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 0 0 1 1 0 1 0 0 0 0 0 0 1 1 1)
13.719 #(0 1 1 0 1 1 0 0 1 1 0 0 1 0 0 1 1 1 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 0 1 1 1 0 1 1 1 0 1 0 1 1 1 1 0 1 1 1 0 0 1 0 0 1 1 1 1 0 0 1 0 1 1 0 1 0 0 1 1 0 0 0 1 0 0 0 0 1 0 1 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0)
- 11.215431 #(0.000000 -0.164595 1.281006 1.038583 0.518850 1.093018 0.974210 0.756709 1.064013 0.311551 -0.209403 0.969270 0.286404 1.444972 1.173099 0.726794 1.065282 0.842801 0.361662 1.856345 1.723233 0.272997 0.531469 0.589783 0.780736 0.630350 1.313286 0.516999 0.119599 0.718058 1.838452 1.926496 0.717296 0.449807 0.215120 0.351948 0.812867 0.209068 1.651576 1.461979 1.620615 0.006993 0.668867 1.584370 1.632365 1.904245 0.320561 0.478972 0.431666 0.481053 0.867904 1.872063 0.015747 -0.195302 0.514271 0.739946 1.511947 -0.135720 0.512818 0.877164 0.923808 -0.171665 0.416166 1.015008 0.629646 0.747712 0.696784 0.357370 -0.033747 1.625273 1.472719 1.159126 -0.003429 1.838913 0.312847 1.116388 -0.230312 0.346102 1.152807 1.778964 0.638955 1.347905 0.534265 1.345393 1.122970 1.490171 1.146528 0.473747 0.367952 -0.000866 1.283995 0.128730 0.798112 1.737613 1.007616 0.274829 0.142137 0.910166 0.542322 0.829979 1.823549 0.731807 -0.125715 0.834655 1.499570 1.361510 1.080104 1.443321 1.339592 0.207330 1.403746 0.599763)
+ 10.845117 #(0.000000 -0.158327 1.401204 1.046284 0.606033 1.007432 0.821147 0.777131 1.191003 0.281168 -0.213386 0.931613 0.270073 1.467160 1.160719 0.719156 1.119500 0.921050 0.338356 1.852347 1.694813 0.280438 0.548162 0.621771 0.776321 0.726910 1.366435 0.361185 0.204980 0.663438 1.818516 1.844021 0.702258 0.375243 0.183850 0.271592 0.801636 0.177014 1.650341 1.485505 1.613569 0.023984 0.595433 1.567109 1.631045 1.976520 0.341970 0.382730 0.336006 0.385772 0.849861 1.971647 -0.020693 -0.252209 0.541858 0.718095 1.501457 -0.050490 0.574887 0.884122 0.922137 -0.210804 0.399065 0.934908 0.603003 0.729544 0.724140 0.339351 0.010354 1.670738 1.403419 1.219908 0.046839 1.828576 0.337830 1.156758 -0.245774 0.253425 1.088930 1.803465 0.659036 1.280948 0.553339 1.423842 1.161039 1.518648 1.032282 0.462496 0.361515 -0.065509 1.266241 0.169518 0.861132 1.751182 1.018993 0.276744 0.251817 0.934363 0.471710 0.796826 1.825463 0.722560 -0.124037 0.868357 1.536252 1.320702 1.110019 1.453229 1.284426 0.139601 1.364785 0.515991)
)
;;; 113 all -------------------------------------------------------------------------------- ; 10.6301
#(113 14.501041453443 #(0 0 0 0 0 0 1 1 0 1 1 1 1 0 1 1 0 1 0 1 1 0 1 1 1 0 1 0 1 1 0 1 1 0 0 1 1 1 1 1 0 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 0 0 1 0 0 0 0 0 1 0 0 1 1 0 1 0 1 0 0 0 1 1 1 0 0 0 1 1 0 0 1 0 1 1 1 0 0 1 0 0 1 1 1 1 0 0 0 1 1 1)
14.027848738379 #(0 0 1 1 1 0 1 1 0 1 1 0 1 0 1 1 0 1 0 1 1 0 1 1 1 0 1 0 1 0 0 1 1 0 0 1 1 1 1 1 0 1 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 0 1 0 0 1 1 1 1 1 0 0 0 1 0 0 1 0 1 1 1 0 0 1 0 1 1 1 1 1 0 0 0 1 1 1)
- 11.330733 #(0.000000 0.944225 0.958254 0.089300 0.293470 0.788423 1.240896 1.664272 -0.041191 0.369588 1.356838 1.249750 0.134011 0.357274 0.369076 0.279774 1.888530 1.077233 1.773068 1.290697 0.025578 1.883092 0.447295 0.635951 0.116784 -0.635391 0.741387 0.452971 1.670007 0.411969 0.075356 1.470294 0.664326 1.446002 1.459584 0.736055 0.647226 0.600508 0.490093 1.688308 1.668851 -0.086958 1.307243 0.460141 0.448175 1.026668 0.455495 0.353573 1.149405 1.443697 0.866169 0.205267 -0.118306 1.011676 1.284509 -0.143448 0.098818 -0.070586 1.824058 0.448827 0.826144 0.120020 1.040242 -0.155807 0.561745 1.840664 0.780661 0.324734 0.482555 1.448645 0.944811 1.356837 0.879185 1.213471 0.062206 1.300223 -0.057436 1.620627 0.696368 0.939937 1.230592 0.074639 0.947053 0.037151 1.049278 0.878679 0.500422 -0.217472 1.323876 0.860572 1.449720 0.465878 0.828751 0.715173 0.131475 0.723595 0.507537 0.091130 0.881116 1.486030 0.479648 0.184950 0.009193 1.345639 1.487064 0.946151 1.415761 1.639514 0.822186 1.454617 0.960774 1.088804 0.621843)
+ 11.048344 #(0.000000 0.919692 0.966198 0.049647 0.342796 0.843356 1.400331 1.798178 -0.017297 0.404348 1.369961 1.313433 0.178318 0.444265 0.360676 0.304379 1.854815 1.044621 1.875366 1.229216 0.026918 1.852727 0.442359 0.649080 0.042701 -0.713484 0.682491 0.450956 1.782312 0.404885 0.097675 1.480809 0.703169 1.503849 1.418848 0.662438 0.620730 0.584405 0.495320 1.695115 1.694902 -0.072337 1.305935 0.442698 0.542038 1.126695 0.448401 0.361844 1.182903 1.404467 0.954027 0.241295 -0.184222 1.070006 1.319902 -0.187375 0.084299 -0.115175 1.805795 0.489735 0.842322 0.086099 1.067769 -0.221870 0.495993 1.874440 0.758572 0.304935 0.542165 1.428762 0.947360 1.267056 0.929151 1.161327 0.000198 1.239059 -0.051090 1.581018 0.739031 0.987987 1.213142 0.048911 0.982130 0.043719 1.038723 0.894636 0.480357 -0.238602 1.313171 0.867293 1.462411 0.488707 0.849466 0.768855 0.150216 0.676905 0.534922 0.102410 0.863174 1.557359 0.466702 0.167027 -0.050321 1.423513 1.461067 0.944068 1.451016 1.669142 0.714971 1.462784 0.944546 1.163431 0.664108)
)
;;; 114 all -------------------------------------------------------------------------------- ; 10.6771
#(114 14.119774267447 #(0 1 1 1 1 1 0 0 0 1 1 0 1 1 0 0 1 1 0 1 0 1 1 1 1 0 0 0 0 1 1 1 0 0 0 1 0 1 1 0 0 1 1 1 1 1 1 1 1 0 1 1 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 1 1 0 0 1 1 1 0 1 0 1 0 1 1 0 0 1 0 0 1 0 0 1 1 1 0 0 1 1 1 0 0 1 0 0 0 1 1 1 1 1 1 0 1 0 1 1)
13.847382931726 #(0 1 1 1 1 1 0 0 1 1 1 0 1 0 0 0 1 1 0 1 0 1 1 1 1 0 1 0 1 1 1 0 0 0 0 1 0 1 1 1 0 1 1 1 1 1 0 1 1 0 1 1 0 1 0 0 1 0 1 0 1 1 0 1 1 0 1 1 1 0 0 1 1 1 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 1 1 1 0 1 1 1 1 0 0 1 0 0 0 1 1 1 1 1 1 0 0 0 0 1)
- 11.213722 #(0.000000 0.561383 0.933292 0.751360 0.976534 0.169707 1.614195 0.913934 1.657844 1.206219 -0.767327 0.180548 0.099198 1.230981 -0.341957 0.505859 1.604861 1.784922 1.639147 -0.620036 0.228829 0.967901 0.714159 0.336458 0.657589 1.298337 0.539215 0.950578 1.516358 1.005467 0.578604 0.949977 0.274191 1.665362 1.855572 0.149246 0.057937 0.094430 -0.224121 1.484486 0.872296 -0.101941 1.107743 1.239700 1.422766 1.625544 1.059931 -0.067681 1.380155 1.255518 1.615467 0.590455 1.182879 0.569451 0.521654 1.354133 1.446115 1.096849 0.165464 1.627811 1.804255 1.522814 0.713354 0.801356 1.158130 1.084416 0.307009 1.044629 1.153973 0.152346 0.951573 0.621623 -0.065873 0.333929 0.906474 1.435845 1.202905 1.135497 0.294103 1.245057 0.839558 1.061975 0.025844 0.566175 1.001117 -0.269476 1.455094 0.829696 1.776758 -0.352503 1.833084 0.971063 -0.284851 1.594947 1.439335 0.541719 0.479728 0.655118 1.677084 -0.177710 1.488005 0.093079 1.184492 0.443237 0.165439 0.953633 -0.095974 1.407836 -0.052361 0.269020 0.863122 0.266811 1.113928 -0.219720)
+ 10.965544 #(0.000000 0.566352 0.972981 0.733730 1.007572 0.164124 1.609905 0.921618 1.659108 1.209113 -0.783492 0.156163 0.011127 1.217185 -0.270928 0.474338 1.613610 1.787802 1.635135 -0.600415 0.224620 0.945755 0.720745 0.309385 0.587586 1.313504 0.582174 1.002571 1.542598 0.976329 0.561500 0.951969 0.205434 1.609289 1.941526 0.174388 0.109363 0.108318 -0.233139 1.517604 0.883759 -0.088121 1.137074 1.184464 1.466701 1.577743 1.023056 -0.039501 1.418902 1.224805 1.635962 0.645021 1.140847 0.601029 0.416715 1.304286 1.484267 1.118782 0.178566 1.600821 1.773024 1.504450 0.693134 0.783098 1.183808 1.052086 0.352443 1.015167 1.204518 0.103818 0.842373 0.625500 -0.098402 0.360723 0.934322 1.394449 1.247019 1.152506 0.265127 1.286554 0.773988 1.005665 0.015643 0.489250 1.047281 -0.317404 1.452606 0.842741 1.850456 -0.423452 1.821723 1.026938 -0.254851 1.652864 1.396409 0.513416 0.423558 0.665566 1.632233 -0.265889 1.507523 0.036101 1.181067 0.425282 0.140091 0.984299 -0.041166 1.380925 -0.066178 0.288836 0.798820 0.237154 1.169903 -0.177548)
)
;;; 115 all -------------------------------------------------------------------------------- ; 10.7238
#(115 15.196797370911 #(0 0 0 0 1 1 0 1 1 0 0 1 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 1 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 1 0 1 0 1 0 0 1 1 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 0 0 1 0)
14.359978160099 #(0 0 0 0 1 1 1 0 0 0 0 1 0 1 1 0 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 1 0 1 0 1 0 0 1 1 0 1 1 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 0 0 1 0)
- 11.253782 #(0.000000 0.186575 0.368818 1.037065 -0.189582 1.661102 0.299435 0.361812 1.431173 1.639433 0.545678 -0.242839 1.000930 1.155721 0.109861 0.671255 0.441818 1.067770 -0.161441 1.186864 0.036622 0.900953 0.546604 1.208234 1.371161 1.108264 0.012224 1.605010 -0.087103 0.689006 1.377439 0.757904 0.033996 0.737858 1.347505 0.120787 0.179380 0.512175 0.821169 0.012365 0.335353 0.953986 1.787143 1.520644 1.146802 1.407297 1.366138 1.466743 0.668529 1.596157 0.240126 1.528969 1.375232 0.480073 1.450123 0.134010 0.726956 0.425171 0.281456 1.045184 1.564280 0.341446 -0.018739 0.210075 0.378380 1.150638 1.424656 0.758058 0.088232 0.053345 0.003441 1.663148 -0.109803 1.264853 0.655824 0.530796 0.727284 1.020112 -0.263329 1.099598 0.877169 0.898273 1.521552 0.883466 0.308011 1.700681 0.500890 0.281863 1.143044 0.079860 1.476963 1.136205 0.429611 1.089699 0.685947 1.845462 0.638175 0.842470 0.126694 0.270279 1.934683 0.315533 0.005294 0.755866 0.602555 0.246605 0.735683 1.115199 0.523724 0.503817 -0.064834 1.584285 0.505675 0.203452 0.334754)
+ 11.047196 #(0.000000 0.220286 0.348351 1.037835 -0.221272 1.602750 0.267937 0.337221 1.436363 1.649511 0.513600 -0.256518 0.999975 1.131355 0.122025 0.683846 0.405514 1.058505 -0.163077 1.153609 0.089045 0.918910 0.591515 1.193717 1.361550 1.108025 0.001244 1.695306 -0.061027 0.698634 1.380797 0.821395 0.065492 0.715554 1.325639 0.052122 0.194485 0.526819 0.812493 -0.013138 0.354849 0.966559 1.715866 1.543521 1.158630 1.404427 1.337837 1.485539 0.708613 1.549215 0.274159 1.583135 1.440953 0.492609 1.373405 0.103528 0.706813 0.388269 0.262641 1.033530 1.644530 0.364282 -0.084319 0.188361 0.276840 1.134877 1.409207 0.769997 0.129685 0.004938 0.099202 1.714815 -0.008101 1.329209 0.715556 0.561352 0.760734 0.982687 -0.266772 1.148766 0.790049 0.878100 1.505885 0.908781 0.268497 1.726700 0.521614 0.288110 1.070603 0.113965 1.428353 1.206430 0.408991 1.110215 0.707473 1.827677 0.629479 0.799415 0.142552 0.352861 -0.011017 0.336824 0.095382 0.777514 0.594402 0.237934 0.830233 1.150330 0.523868 0.449385 -0.124236 1.564700 0.568380 0.219755 0.317399)
)
;;; 116 all -------------------------------------------------------------------------------- ; 10.7703
#(116 14.830805621528 #(0 1 1 0 1 1 1 1 1 0 1 0 1 0 0 1 0 0 0 1 1 0 0 1 1 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 0 0 1 0 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 0 1 1 1 0 0 0 0 1 1 1 0 1 0 1 1 1 0 1 0 0 1 0 0 1 1 1)
14.175787507646 #(0 1 0 1 0 1 1 1 1 1 0 1 1 1 0 1 0 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 0 0 0 0 1 1 0 1 0 1 0 0 1 1 1 0 0 0 0 0 1 0 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 1 1 0 1 1 0 0 1 1 1 0 0 1 0 0 0 0 0 1 0 1 1 0)
- 11.283454 #(0.000000 0.714034 0.153221 1.176014 0.429745 1.605593 1.609370 0.953264 0.082116 0.886902 1.017836 0.018646 1.498022 1.026157 0.394912 1.235165 0.053648 0.643976 1.305024 1.886163 1.815753 1.093447 1.814356 0.914307 0.288423 0.313709 0.940170 0.393656 0.287469 1.225456 1.137981 1.580693 0.355711 0.059484 0.788080 0.318673 0.004298 1.143480 -0.374284 1.019032 0.293090 1.125028 0.822587 0.240271 1.312918 -0.297149 1.356877 1.493178 1.612584 0.083907 1.647970 0.025439 1.114624 1.277505 1.377295 1.138671 -0.038099 1.793038 1.501019 0.694626 0.747436 0.196485 1.315502 1.829491 1.470057 0.186658 1.200672 0.864236 1.622117 0.253669 1.462727 0.707090 0.797858 0.975366 1.048072 -0.043372 1.335447 1.116666 0.349755 1.589425 1.670328 1.335279 0.339649 1.056667 1.649853 1.609782 1.032976 0.416330 0.984896 0.331771 0.410217 1.770805 -0.063711 0.356657 1.229025 1.336330 1.595823 0.590894 1.313808 0.136634 1.509582 1.379050 -0.141405 1.407394 -0.580449 -0.119633 0.016602 0.858927 0.918343 0.601025 0.350239 0.437224 0.640359 0.922001 -0.050311 0.370903)
+ 11.086528 #(0.000000 0.755384 0.145384 1.129268 0.419747 1.644563 1.574587 0.966615 0.088301 0.841939 1.048652 0.076777 1.463079 1.029456 0.401080 1.257478 0.047401 0.571148 1.297641 1.848123 1.810855 1.073929 1.849582 0.917437 0.303613 0.289655 0.947971 0.391300 0.278061 1.223901 1.160351 1.548582 0.366848 0.098205 0.774639 0.272306 -0.012421 1.169407 -0.355802 0.987397 0.308742 1.134696 0.836934 0.208862 1.291922 -0.357148 1.353914 1.511885 1.734567 0.118456 1.620226 0.006350 1.103034 1.232401 1.399810 1.157815 -0.074741 1.806994 1.513661 0.678140 0.815439 0.169373 1.347558 1.800167 1.429023 0.226196 1.214265 0.899410 1.559577 0.170239 1.412491 0.684670 0.758176 0.959266 1.033145 -0.085704 1.326704 1.065488 0.309492 1.563092 1.719140 1.262602 0.306578 1.017289 1.684620 1.540953 0.972714 0.427263 0.972619 0.347642 0.485787 1.759097 -0.055260 0.345918 1.197387 1.340217 1.626911 0.556703 1.310899 0.018910 1.555550 1.398190 -0.124641 1.419399 -0.472585 -0.168201 0.000081 0.862927 0.947147 0.627156 0.294644 0.464638 0.735196 0.913811 -0.083296 0.353761)
)
;;; 117 all -------------------------------------------------------------------------------- ; 10.8167
@@ -1110,7 +1110,7 @@
14.522986412048 #(0 1 1 1 0 0 1 1 0 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 0 1 1 1 0 1 0 0 0 1 0 1 0 0 0 1 1 1 1 1 1 0 1 1 0 1 1 0 1 0 0 0 0 1 0 1 1 0 1 0 0 1 1 1 0 0 1 1 0 0 0 0 1 0 0 1 1 1 1 1 0 1 0 1 1 1 1 0 1 0 1 0 0 0 1 0 1 1 0 1 0 0 0 1 0 0 1)
14.136 #(0 1 1 1 0 0 1 1 0 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 0 1 1 1 0 1 0 0 0 1 0 1 0 0 0 1 1 1 1 1 1 0 1 1 0 1 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0 1 0 0 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0 0 1 0 1 1 0 1 0 0 0 1 0 0 1)
- 11.543128 #(0.000000 1.534379 0.980165 1.668762 0.080483 1.592391 1.454265 -0.460121 -0.103788 0.755208 -0.006830 -0.240681 0.351538 1.790211 0.335740 1.302376 1.656050 0.333132 0.249702 0.827952 -0.019697 1.365353 1.182810 1.777836 -0.203402 0.936291 1.616535 1.190412 0.946113 1.396886 -0.252884 0.151947 1.509608 0.820200 -0.109731 1.428009 0.192470 0.552088 0.545855 0.231725 0.064313 0.149170 1.869772 1.552899 1.882554 0.270636 1.291875 0.555847 0.231322 1.692819 1.141522 1.191331 1.654744 0.082252 0.969475 0.600504 0.551066 0.039416 1.533109 0.859483 -0.320726 1.868963 0.105708 1.143795 0.092680 1.267252 0.493038 1.633986 1.120324 1.072927 0.620742 0.747419 1.694239 0.392467 1.569422 1.577201 1.253948 1.224504 1.657812 0.506690 1.624025 1.133205 1.706717 0.783632 0.037422 1.831531 0.260898 1.551839 1.510953 0.894475 0.759979 1.180784 1.393244 1.318666 -0.024667 0.923879 0.016201 1.874306 0.724143 0.068859 0.833584 1.016193 0.801122 1.692275 0.482212 0.881339 0.834783 1.627365 0.054304 1.316587 0.436016 0.462746 0.053984 0.764451 1.337856 0.224208 0.898721)
+ 11.263540 #(0.000000 1.560525 1.134427 1.608621 0.052993 1.609018 1.486911 -0.445943 0.008803 0.752370 0.028764 -0.224264 0.318657 1.733370 0.348392 1.251322 1.623960 0.375625 0.366500 0.853171 0.069985 1.270793 1.252144 1.798948 -0.235305 0.899493 1.695148 1.184573 0.901777 1.491583 -0.255238 0.171137 1.504144 0.947591 -0.217129 1.474652 0.235894 0.544807 0.595391 0.234855 0.157270 0.184105 1.854836 1.603738 1.834175 0.288069 1.391917 0.537176 0.195146 1.712077 1.141149 1.227701 1.694406 0.153586 1.035184 0.624304 0.531259 0.085708 1.628691 0.821055 -0.270561 1.792578 0.128845 1.257968 0.114803 1.203180 0.502231 1.556774 1.102206 1.028942 0.644956 0.756074 1.624964 0.372136 1.612527 1.590478 1.237294 1.174753 1.695792 0.480882 1.643440 1.165341 1.645594 0.724315 0.007276 1.797480 0.384303 1.588515 1.427716 0.951478 0.726772 1.176417 1.344001 1.291523 -0.132144 1.037678 0.021170 1.887989 0.711644 0.164573 0.849933 1.069371 0.792512 1.611846 0.378029 0.805276 0.719737 1.739960 0.126760 1.346133 0.443121 0.384752 -0.046444 0.759117 1.357471 0.231891 0.940737)
)
;;; 118 all -------------------------------------------------------------------------------- ; 10.8628
@@ -1118,7 +1118,7 @@
14.496 #(0 0 0 0 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 0 1 1 0 1 0 1 0 1 0 1 1 0 0 0 0 1 0 1 1 0 1 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 0 1 1 0 0 1 0 1 1 1 0 1 1 0 0 0 0 0 1 1 0 1 0 1 1 1 1 0 0 1 1 0 1)
14.207115029287 #(0 1 1 1 1 1 1 0 1 0 0 1 1 1 1 0 0 0 1 0 1 0 1 1 0 0 1 0 1 0 0 0 1 0 0 0 0 1 1 1 1 0 0 1 0 0 1 1 1 1 1 0 0 1 0 0 0 1 1 1 1 1 0 0 1 1 0 0 0 0 1 1 0 1 0 1 1 1 1 1 1 1 0 1 0 0 1 0 1 1 0 0 1 1 1 0 1 1 0 1 1 1 1 0 1 1 1 1 0 1 0 1 0 1 0 0 0 0)
- 11.688804 #(0.000000 -0.206710 0.017267 0.159858 0.072316 0.751444 0.038871 1.891387 0.387398 1.348848 0.869818 1.812680 0.692436 0.284047 1.193547 0.890496 0.153662 0.494673 1.649157 -0.415627 1.302433 0.131437 0.879641 0.520862 1.847390 1.719558 1.648116 1.260575 0.473514 1.745030 1.714326 -0.105206 0.781535 0.250160 0.169917 0.459505 0.953391 0.314688 0.298866 1.834003 1.359805 1.273590 1.633459 -0.571987 1.044726 -0.102912 0.995996 0.606317 1.143587 0.212903 1.562972 1.143092 1.113752 1.135689 1.322260 0.257869 0.907001 0.951038 0.278238 1.035311 0.690783 0.646805 1.031768 0.660851 -0.031369 1.258594 1.058324 0.037043 1.725134 0.971586 1.092214 0.865608 0.199441 0.717056 0.916949 0.654947 -0.269963 0.851534 1.363264 0.041264 0.970705 0.963937 1.668958 1.539557 1.803357 1.014527 1.673027 1.579675 1.043156 1.540786 0.609154 1.438927 -0.011247 0.493837 -0.212107 0.424041 1.111070 1.047745 1.150799 0.315186 1.327350 0.035848 0.615534 -0.053208 0.772431 0.488827 1.061925 -0.208381 1.867316 0.333363 0.891041 0.854268 0.494797 1.006360 1.497117 0.101472 1.097378 1.215456)
+ 11.322110 #(0.000000 -0.317678 -0.002560 0.223935 0.238758 0.803775 -0.015797 1.863103 0.437135 1.285083 0.882669 1.919350 0.702231 0.232242 1.144953 0.806723 0.257313 0.545600 1.663858 -0.386981 1.234521 0.125216 0.866002 0.439353 1.773476 1.647701 1.488970 1.238490 0.550082 1.692633 1.784086 -0.063741 0.678206 0.236820 0.253740 0.668175 0.987949 0.281415 0.387045 1.913425 1.459563 1.286969 1.682518 -0.596012 1.123180 -0.054387 1.008517 0.715984 1.284762 0.178451 1.572207 1.199223 1.136132 1.152027 1.268589 0.171898 1.082815 0.987850 0.304711 1.094300 0.701777 0.635177 1.038464 0.723832 -0.075163 1.339415 1.076358 0.012723 1.698344 1.069253 1.002155 0.843362 0.203394 0.760669 0.992248 0.614527 -0.212659 0.903981 1.402732 0.149631 1.008274 1.006736 1.691738 1.567020 1.818681 0.975637 1.732166 1.601698 1.170147 1.664932 0.664458 1.512702 -0.033515 0.438142 -0.256054 0.431661 1.148402 1.044587 1.178721 0.160422 1.398399 0.081949 0.719272 -0.058543 0.696290 0.372313 1.082620 -0.294648 1.887431 0.356703 0.876617 0.866906 0.433723 0.987197 1.590965 0.129872 1.086581 1.196243)
)
;;; 119 all -------------------------------------------------------------------------------- ; 10.9087
@@ -1126,14 +1126,14 @@
14.803846337507 #(0 1 0 1 1 1 0 1 0 0 0 1 0 0 1 0 1 0 0 1 1 1 0 0 1 1 1 0 1 0 0 1 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 0 0 1 1 0 1 1 0 0 1 0 1 1 1 0 0 1 1 1 1 0 0 0 1 0 1 0 1)
14.502624011553 #(0 1 0 0 1 0 0 1 1 1 1 1 0 1 0 1 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 0 0 1 0 1 1 1 0 0 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 0 0 1 0 1 1 0 1 1 1 0 0 1 0 1 0 1 0 0)
- 11.634610 #(0.000000 0.792853 0.997569 1.269068 0.270056 1.715067 0.351253 1.620788 0.894707 1.627714 0.844482 0.639170 0.865748 1.580975 1.682604 0.583005 0.066660 0.407337 0.589685 0.295391 1.699360 -0.633673 1.225319 0.280497 -0.303825 1.978631 0.743968 1.121846 0.020217 1.346693 0.004098 0.225046 0.612146 0.811306 0.284942 0.446615 1.276071 0.503224 1.708177 1.896903 0.956430 0.870897 0.858216 1.016246 -0.185540 0.345580 0.040908 0.439295 1.662127 0.444527 -0.178788 0.410053 -0.041714 1.920360 1.078008 1.602615 1.390588 0.225312 0.305152 1.320483 1.455455 0.250999 1.019593 0.685897 0.833234 0.759599 0.295228 0.452215 1.168035 -0.165115 1.542983 0.825451 0.072168 0.428180 0.486997 1.724948 0.747378 0.072606 -0.181255 0.266658 1.686984 1.520840 1.981006 0.785876 0.187443 0.127922 0.576033 0.713578 1.887860 0.287623 0.157882 0.878858 0.020224 0.300176 1.865789 -0.021662 1.122066 0.785965 0.849415 1.328988 1.233437 0.857320 -0.066563 -0.058214 0.930589 1.807215 1.337470 1.564791 0.495889 0.969879 0.666846 0.316161 1.566168 0.850304 1.069499 -0.116699 1.004674 1.129160 1.623575)
+ 11.399133 #(0.000000 0.688532 0.993301 1.282385 0.331130 1.748738 0.314471 1.524217 0.904003 1.572974 0.870430 0.570274 0.872464 1.608082 1.674399 0.533838 0.089091 0.317086 0.550369 0.272370 1.757853 -0.735205 1.232073 0.308557 -0.342974 -0.022226 0.752715 1.156899 -0.073424 1.352462 -0.014906 0.203792 0.543574 0.830834 0.276867 0.415986 1.248478 0.447994 1.736526 1.926184 0.844353 0.932345 0.838238 1.034506 -0.158667 0.451333 0.071272 0.463466 1.593967 0.509852 -0.187653 0.478259 -0.072708 1.901312 1.185794 1.619150 1.437658 0.201978 0.247576 1.318386 1.434732 0.305368 1.045273 0.619756 0.884166 0.806350 0.269438 0.426223 1.161232 -0.155851 1.448538 0.813507 0.144858 0.426969 0.458142 1.744681 0.719765 0.047972 -0.175918 0.227700 1.594311 1.514560 0.004768 0.819670 0.203263 0.120944 0.536243 0.724975 1.961944 0.334180 0.071722 0.886463 -0.047616 0.243202 1.917486 0.004138 1.015585 0.763997 0.782949 1.312833 1.219241 0.841463 -0.057794 -0.106115 1.025889 1.718941 1.293537 1.510767 0.464182 0.934313 0.711056 0.285128 1.653719 0.846647 1.051283 -0.036251 1.006457 1.060254 1.649614)
)
;;; 120 all -------------------------------------------------------------------------------- ; 10.9545
#(120 14.761 #(0 1 1 1 0 1 0 0 1 0 1 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 0 1 1 0 1 0 0 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 0 0 0 0 1 0 1 0 1 1 0 1 0 1 1 0 1 1 1 0 0 1 1 0 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 1 1 0 0 0 0 1 1 1 1 0 0 1 0 1 1 1 1 1 0 1 1 1)
14.534638752286 #(0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 1 1 0 1 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 0 1 0 1 1 1 0 0 1 1 1 0 0 1 0 1 1 0 0 0 1 0 1 1 0 0 1 1 0 1 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 1 0 1 0 1 1 0 1 0 0)
- 11.551849 #(0.000000 1.580359 1.174168 0.647354 0.088704 0.859258 1.310037 0.503246 0.194534 1.824154 0.780383 0.278641 1.969733 1.781007 0.227057 0.701748 1.588717 0.152188 0.367436 1.263321 0.091818 0.452040 -0.201174 -0.282527 0.372110 1.538921 -0.095254 0.274185 -0.402321 1.821694 0.718991 0.931647 1.583557 1.212206 1.329647 0.356629 1.272705 0.149515 0.686986 0.068391 -0.076681 1.315639 0.058019 1.627822 0.464976 -0.341806 1.479357 1.479661 1.322922 0.462365 1.891548 -0.157369 1.946218 0.506763 1.629812 0.300785 1.341389 0.668303 1.232684 0.672185 0.324319 0.370306 -0.056694 1.024118 0.295137 0.443579 0.995881 0.181306 -0.094666 1.175159 1.060726 1.055645 0.294473 0.786908 1.684747 -0.335381 -0.104182 0.780692 -0.030306 1.310268 0.348836 -0.275510 1.460385 1.726122 1.552376 1.240963 0.276550 0.499986 1.492092 0.697217 1.630173 0.668902 0.933324 1.340253 1.036255 1.051239 1.346544 0.093232 -0.103434 0.104549 1.641857 0.914812 1.650968 1.532934 0.101890 0.425482 0.757382 -0.083976 0.077541 0.217434 0.658993 1.099468 0.984035 -0.081912 1.395181 0.016034 0.113118 -0.106636 0.383073 1.693608)
+ 11.263618 #(0.000000 1.579554 1.181305 0.640220 0.090753 0.840600 1.308852 0.497039 0.103622 1.816139 0.798211 0.314366 -0.000515 1.787979 0.253137 0.693068 1.589655 0.135035 0.326080 1.315301 0.132426 0.496787 -0.245751 -0.220396 0.410504 1.461196 -0.162342 0.262558 -0.405836 1.758194 0.767476 0.950101 1.608264 1.225440 1.354661 0.383009 1.261884 0.150258 0.725484 0.058388 -0.125089 1.285316 0.034823 1.608247 0.460372 -0.310111 1.430222 1.537507 1.329193 0.571721 1.811861 -0.088568 1.924345 0.602008 1.627984 0.377600 1.240687 0.657776 1.263272 0.686633 0.329329 0.399651 0.069584 0.933553 0.353599 0.369798 0.963741 0.164317 -0.093381 1.205503 1.096253 1.026481 0.283933 0.776648 1.660268 -0.365667 -0.085122 0.735025 0.096169 1.299777 0.411941 -0.189662 1.488848 1.716595 1.622116 1.258150 0.241516 0.395405 1.555648 0.703694 1.555371 0.658692 0.978041 1.387965 1.040970 1.039549 1.327303 0.033895 -0.119952 0.103333 1.597186 0.970380 1.715557 1.531685 0.121427 0.353271 0.726586 -0.150449 -0.005165 0.144570 0.716688 1.110020 1.049395 -0.047571 1.293102 -0.027875 0.084197 -0.123528 0.415942 1.667424)
)
;;; 121 all -------------------------------------------------------------------------------- ; 11
@@ -1142,14 +1142,14 @@
14.286643427331 #(0 1 0 1 0 1 1 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 1 0 0 0 1 1 0 1 0 1 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 1 0 0 1 0 1 1 0 1 1 1 1 1 1 1 0 1 0 1 1 0 1 1 0 1 1 1 0 1 0 1 0 1 1 1 0 1 0 0 1 1 0 0 1 1 1 0 1 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 1 1 1 1 1)
14.184466362 #(0 1 0 1 0 1 1 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 1 0 0 0 1 1 0 1 0 1 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 1 0 0 1 0 1 1 0 1 1 1 1 1 1 1 0 1 0 1 1 0 1 1 0 1 1 1 0 0 0 1 0 1 1 1 0 1 0 0 0 1 0 0 0 1 1 0 1 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 1 1 1 1 1)
- 11.775484 #(0.000000 1.022262 1.271482 0.643607 0.437924 0.279288 0.661609 1.352899 0.953392 1.848754 1.696604 1.438336 0.425582 1.240759 1.437967 0.437435 1.565267 1.404512 0.421117 1.839973 1.189881 0.793711 0.274084 0.796316 0.187551 1.888154 1.460709 0.535244 0.016161 1.652775 1.123780 1.388922 0.385789 1.400661 1.296182 0.853109 0.450258 0.210859 0.316882 0.705161 1.285657 0.425251 1.254105 1.683175 0.048115 1.951315 1.731614 0.874795 0.634597 1.100923 1.509564 1.587044 0.274413 1.585840 1.407281 0.471735 1.108320 0.131599 -0.032315 1.736257 -0.234561 1.403251 0.296792 0.537555 0.611160 0.153228 0.395112 0.357364 0.186128 0.745786 0.849358 1.115245 1.062105 1.877850 0.568539 0.927320 -0.072796 0.965039 0.111781 1.642647 0.518920 1.787522 0.980519 0.048424 0.952625 1.303994 0.683786 0.781545 0.964512 1.473519 0.860230 -0.024866 0.480272 1.231557 0.812450 1.813769 0.768620 0.803829 1.215696 1.640898 1.064596 0.937275 0.637880 1.697131 0.239494 0.551289 1.244447 0.807587 0.625089 0.979155 1.712062 0.831640 0.406917 0.615061 -0.033416 0.060207 0.055480 0.166836 0.948962 0.289309 0.578908)
+ 11.510317 #(0.000000 1.010635 1.208882 0.610825 0.431939 0.326596 0.566433 1.313556 0.963239 1.902018 1.614706 1.468251 0.414702 1.156272 1.322910 0.430568 1.534917 1.322121 0.473300 1.803175 1.189334 0.733413 0.228391 0.745179 0.190402 1.865933 1.466738 0.484273 -0.065630 1.698588 1.114550 1.383744 0.385969 1.389730 1.300205 0.931471 0.420408 0.211659 0.377193 0.682111 1.330312 0.418887 1.223045 1.651353 0.093738 1.912533 1.713535 0.830889 0.616033 1.102063 1.459052 1.658029 0.218826 1.555843 1.382022 0.498806 1.127253 0.146319 -0.038654 1.752054 -0.253977 1.430810 0.289218 0.517691 0.606321 0.151287 0.393808 0.297252 0.204252 0.721125 0.854480 1.132357 1.009186 1.882561 0.525193 0.936073 -0.083867 0.915927 0.085752 1.707649 0.529772 1.846708 0.958573 0.055729 1.037531 1.376490 0.660891 0.750456 1.003870 1.501910 0.790118 -0.022939 0.536828 1.293751 0.753034 1.843678 0.850543 0.765280 1.183421 1.634952 1.032145 0.983278 0.685641 1.769696 0.279593 0.568017 1.267824 0.800740 0.569023 1.009915 1.734476 0.876879 0.342137 0.650176 0.048106 0.164075 0.052161 0.169971 0.893115 0.267253 0.600348)
)
;;; 122 all -------------------------------------------------------------------------------- ; 11.0454
#(122 14.800878258504 #(0 0 0 1 0 1 1 0 1 1 0 1 0 1 0 1 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 1 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 0 1 1 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0)
14.536 #(0 1 1 0 0 0 1 1 0 0 1 1 0 0 0 0 1 0 0 0 1 0 1 1 1 1 1 1 0 1 1 1 1 1 0 1 0 1 0 0 1 1 1 1 0 1 1 1 1 1 0 0 1 0 0 0 1 1 1 1 1 0 1 1 0 1 1 0 0 0 1 0 1 0 1 1 1 0 0 0 1 0 0 1 0 1 1 0 1 0 1 1 0 0 1 1 1 1 1 0 1 0 1 1 1 0 0 1 0 1 1 0 0 0 1 1 1 1 1 0 0 0)
- 11.781577 #(0.000000 1.885547 -0.038962 0.832322 1.125418 1.194442 -0.243583 0.338576 1.092783 1.578729 0.567291 1.375541 1.776478 0.223389 0.947026 1.111148 1.386874 1.531472 1.187102 1.520200 1.785818 0.782979 0.282626 1.351361 0.069515 1.332067 0.704842 0.467209 1.029832 1.729478 1.330818 0.527941 0.782345 0.356079 1.340245 0.721350 0.394755 0.322035 1.106414 0.628681 1.330054 0.337404 0.875667 1.526116 0.486579 1.152498 0.205000 1.540411 1.554908 -0.239638 0.641488 1.693704 -0.035943 0.984761 0.335648 0.825720 1.704092 1.761797 1.737791 0.853443 0.367767 -0.154319 1.197361 0.111286 0.357081 0.741875 0.978157 1.224499 1.348702 0.848470 1.192784 1.023717 1.666885 0.278834 1.099525 0.608533 0.228029 0.318498 1.412495 0.534709 1.147603 0.526537 0.211610 1.085855 1.784953 0.417656 1.343439 1.231789 1.615759 1.761105 1.359004 1.218910 1.069916 1.246778 1.090162 0.578155 -0.325574 0.212298 0.079492 0.448475 1.051483 1.680702 1.543440 1.462900 -0.271035 -0.608985 0.135102 0.272799 -0.000801 1.675958 1.365580 0.579774 1.812670 0.744289 0.182647 -0.082641 1.489769 -0.449507 0.902850 -0.225432 1.200987 0.866116)
+ 11.371351 #(0.000000 1.933405 0.006514 0.863403 1.110664 1.197683 -0.200989 0.365545 1.124997 1.583356 0.562034 1.307741 1.751736 0.230016 0.967759 1.075411 1.490835 1.506594 1.057254 1.431488 1.804138 0.786342 0.282022 1.407647 0.078640 1.313035 0.852425 0.446274 0.992241 1.726745 1.457763 0.573977 0.828725 0.353660 1.345585 0.770848 0.321133 0.312382 1.143768 0.582869 1.283141 0.362248 0.878710 1.512264 0.358683 1.182204 0.250282 1.541665 1.600119 -0.257599 0.669012 1.704993 0.008171 1.018488 0.441266 0.869206 1.749999 1.737846 1.811821 0.936550 0.438230 -0.151604 1.180480 0.137141 0.385897 0.709865 1.035240 1.232163 1.332642 0.863314 1.266957 1.135668 1.747174 0.186313 1.043550 0.589274 0.314286 0.303913 1.418889 0.460369 1.122493 0.549167 0.178567 1.006414 1.743082 0.483057 1.314362 1.252503 1.581364 1.766186 1.423352 1.179244 1.123762 1.239944 1.142624 0.652216 -0.308408 0.291038 0.034281 0.465348 1.072715 1.803039 1.540261 1.501198 -0.243572 -0.612032 0.054195 0.288727 0.038002 1.555755 1.435018 0.624858 1.784793 0.783902 0.186959 -0.113182 1.558466 -0.395809 0.878977 -0.191627 1.127910 0.908794)
)
;;; 123 all -------------------------------------------------------------------------------- ; 11.0905
@@ -1159,7 +1159,7 @@
14.80501968131 #(0 0 1 1 1 0 0 1 1 1 1 1 0 1 1 0 1 1 0 0 1 1 0 0 1 1 1 1 1 0 1 0 1 0 0 0 0 0 0 1 0 1 1 1 0 1 1 1 1 1 0 0 1 0 1 0 1 1 0 0 0 1 1 1 1 1 1 0 1 1 0 1 1 0 1 0 1 1 0 1 0 1 1 1 1 0 0 0 0 1 1 1 1 1 0 1 1 1 0 0 1 0 1 1 1 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 1)
14.67458183944 #(0 0 1 1 1 0 0 1 1 1 1 1 0 1 1 0 1 1 0 0 1 1 0 0 1 1 1 1 0 0 1 0 1 0 1 0 0 0 1 1 0 1 1 1 0 1 1 1 1 1 0 0 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1 0 1 1 0 1 1 0 1 0 1 1 0 1 0 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 1)
- 11.699746 #(0.000000 -0.038040 0.256947 0.867608 1.328783 -0.219797 -0.003690 1.364730 0.694302 -0.294937 1.073072 0.038924 0.239228 0.188820 1.175137 1.857928 1.155368 1.155842 1.032811 1.895403 0.016987 0.101844 0.580871 1.097359 0.026629 -0.092499 1.221996 0.947775 0.714602 -0.393612 -0.283181 -0.091038 1.635514 0.970453 1.306560 0.222771 0.580248 1.782981 0.034493 0.446212 1.651443 1.410999 0.682441 -0.186881 1.569346 0.667500 0.859710 0.013377 -0.181531 1.057095 0.796976 0.998672 1.732396 0.031309 1.014677 0.732113 1.796863 0.221097 0.760009 0.238875 0.052413 1.285204 1.268763 0.055623 1.529780 0.279631 0.161396 0.486189 0.299039 -0.117196 -0.203144 0.150197 1.118608 0.284454 -0.192305 1.713902 1.195482 1.688271 1.152486 1.106866 -0.021879 1.116699 1.855350 -0.029313 1.177409 0.035078 1.375908 0.378311 0.698646 -0.047452 1.633998 0.448658 0.278707 0.526085 0.215810 0.721398 1.682731 1.235135 0.355249 0.245439 1.026722 -0.020403 1.039242 1.385912 1.331865 1.400986 0.473817 1.390566 0.829934 0.132076 0.827748 1.702404 0.743927 -0.145545 0.040166 0.850377 1.414053 1.222307 1.299576 1.379155 1.414513 -0.123415 -0.262469)
+ 11.433162 #(0.000000 -0.048563 0.333610 0.841721 1.329204 -0.194541 -0.085898 1.285272 0.755117 -0.333342 1.096936 0.057053 0.282324 0.218295 1.211572 1.826874 1.204386 1.191162 0.988247 1.871883 0.035947 0.156609 0.601397 1.152537 0.055941 -0.033638 1.189193 0.958691 0.720277 -0.426922 -0.195297 -0.140517 1.645766 0.966888 1.255627 0.183137 0.522112 1.819530 -0.033448 0.488756 1.669546 1.437958 0.759984 -0.248621 1.601751 0.699689 0.838455 0.029619 -0.186085 1.115858 0.770068 1.044083 1.726537 0.010569 1.010000 0.680090 1.783270 0.171033 0.770505 0.297105 0.001548 1.287702 1.282254 0.083837 1.511070 0.335111 0.135806 0.522999 0.349704 -0.058765 -0.153477 0.192646 1.112202 0.285985 -0.135167 1.718062 1.191986 1.679268 1.148282 1.118853 0.024705 1.099244 1.863837 -0.033684 1.180815 0.021614 1.340130 0.375680 0.692495 -0.063254 1.619635 0.444931 0.275795 0.558215 0.201446 0.738799 1.748309 1.243286 0.380065 0.217374 1.038691 -0.000281 1.043547 1.366885 1.328682 1.434391 0.552659 1.416147 0.851243 0.195541 0.864029 1.679266 0.837320 -0.143873 0.044453 0.858952 1.404325 1.206796 1.266892 1.416538 1.471081 -0.100789 -0.295920)
)
;;; 124 all -------------------------------------------------------------------------------- ; 11.1355
@@ -1167,14 +1167,14 @@
15.141 #(0 1 0 0 1 1 0 0 0 0 0 1 1 1 0 1 1 1 0 0 1 1 1 1 1 0 0 1 0 1 1 1 1 0 1 1 1 0 0 1 0 0 1 1 0 1 1 1 0 1 0 1 1 1 1 0 0 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 0 1 1 0 0 0 0 0 1 1 1 1 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 1 1 1 1 1 0 1)
14.607 #(0 0 0 1 0 1 1 1 1 0 0 0 1 1 1 1 1 0 0 1 0 1 1 0 0 1 1 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 0 1 0 1 1 0 1 0 1 1 0 0 1 0 0 1 0 1 1 1 0 1 0 1 1 1 0 1 0 1 1 1 0 1 1 0 0 1 1 1 1 1 0 0 1 0 1 1 1 1 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 0 0 0 1)
- 12.002723 #(0.000000 0.097529 1.673758 0.838803 0.922603 0.692553 0.394186 0.306521 1.702332 0.216471 0.302754 0.377402 -0.116963 1.234655 1.045098 0.279831 0.397825 0.922698 1.430688 0.836954 0.033763 1.243252 0.183458 1.857805 0.870735 0.438576 1.152538 0.832944 1.495784 -0.423909 1.512259 0.800627 0.321839 0.421853 0.301046 1.336560 -0.256013 1.217415 1.035915 1.508646 0.551663 0.651818 0.418433 0.274204 0.833354 0.859295 0.549066 0.389314 1.420477 0.287952 1.443389 1.263421 0.951017 -0.117004 0.926874 1.738907 0.188603 0.283427 0.473477 0.655998 1.409493 0.936783 1.670993 1.359291 0.014560 0.223769 -0.224385 1.466771 -0.065566 1.878586 0.538022 0.923665 1.776794 0.843498 1.197100 0.596808 1.224271 0.561042 0.762612 -0.391152 1.370048 1.611274 1.232329 0.696877 1.470068 1.787790 -0.568667 -0.383936 0.684201 1.545383 1.674908 0.644207 1.106252 1.787057 0.394081 -0.115128 1.103142 0.472747 1.188732 1.534940 0.397952 0.902467 0.487292 1.057702 1.963793 0.083731 0.216108 1.551118 0.594197 0.133428 -0.242510 1.055570 0.527599 0.205484 0.919364 1.626701 0.801698 0.655661 0.968315 1.271704 0.680846 0.801513 0.519403 0.587392)
+ 11.550428 #(0.000000 0.080421 1.638608 0.827415 1.022157 0.794824 0.363797 0.356232 1.653943 0.273661 0.315938 0.324090 -0.174922 1.135281 1.065088 0.216373 0.408815 0.871898 1.506042 0.827008 0.145621 1.311628 0.188898 1.917555 0.908174 0.475632 1.346225 0.772663 1.468479 -0.442723 1.627929 0.833678 0.352667 0.356268 0.190802 1.302343 -0.244023 1.171488 1.145579 1.405386 0.530219 0.618243 0.446306 0.306212 0.843408 0.823000 0.623434 0.340762 1.465537 0.353979 1.483773 1.275924 0.949896 -0.094330 1.002393 1.777695 0.130323 0.320136 0.449860 0.708660 1.520317 0.902427 1.755671 1.361490 -0.022144 0.248685 -0.212118 1.472963 0.001373 1.930048 0.657749 1.033592 1.930915 0.872289 1.169712 0.493289 1.254850 0.536042 0.727641 -0.404428 1.452917 1.585763 1.376122 0.579875 1.492230 1.919313 -0.431534 -0.338285 0.693966 1.564894 1.789635 0.744985 1.120311 1.859692 0.408509 -0.108251 1.043114 0.520888 1.160630 1.577427 0.417148 0.842411 0.563010 1.175170 0.004331 0.167717 0.264096 1.588637 0.649754 0.229437 -0.297690 1.003617 0.630288 0.210058 0.848034 1.468227 0.749581 0.714642 1.025392 1.250968 0.760797 0.986079 0.587199 0.657686)
)
;;; 125 all -------------------------------------------------------------------------------- ; 11.1803
#(125 15.546414800183 #(0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 1 1 1 1 1 0 0 1 0 1 1 1 0 0 1 0 0 1 1 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 0 1 1 0 1 0 0 1 1 1 0 1 0 1 1 1 0 1 1 0 0 0 1 0 0 0 0 0 1 1 1 0 0 1 1 0 0 0 0 1 0 0 0 1 1 0 1 0 1 1 1 1 1 0 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 1 0)
14.985 #(0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 1 0 0 1 0 1 1 1 1 1 0 0 1 0 1 1 1 0 0 1 0 0 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 0 1 1 0 1 0 0 1 1 1 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 1 1 0 0 0 0 1 0 0 0 1 1 0 1 0 1 1 1 1 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0)
- 11.993391 #(0.000000 1.363065 1.412657 1.438727 0.481886 -0.017793 0.587178 0.328585 0.600538 1.000590 1.069245 1.876230 1.372156 0.716985 1.569767 0.944812 1.523825 1.647838 1.537622 0.538422 -0.778505 0.769331 -0.162723 0.842222 0.197145 1.671509 0.116037 1.637528 0.051191 0.041618 0.179886 0.273856 0.365407 0.132313 0.101929 1.198663 -0.174121 1.404275 0.911630 1.564842 0.042718 0.768842 0.173358 1.854951 1.800994 0.201633 0.289795 1.432570 0.857413 1.244980 1.563957 1.441915 1.719070 1.024868 0.884376 0.750744 0.036211 0.606714 1.265748 0.560678 -0.369949 0.044091 0.216573 0.146797 1.166091 0.714645 0.646507 0.483699 0.998401 1.226613 1.324954 0.791525 0.260595 1.367857 0.793708 0.104972 1.263126 1.390268 1.513328 0.462534 0.771264 1.058732 -0.030382 0.528031 -0.070617 1.100723 0.046226 1.461601 1.898171 1.084573 1.297940 1.847574 0.456678 0.685814 -0.501816 0.737059 0.797457 1.822300 0.298859 0.999117 1.034511 0.892639 0.116512 0.315554 0.466377 1.589683 0.045178 1.306442 1.816165 0.632906 1.551904 0.550082 -0.076190 1.425431 0.947572 -0.090978 0.553307 1.182173 1.078503 0.857809 1.673625 1.627686 1.290774 0.594827 0.657729)
+ 11.648313 #(0.000000 1.333617 1.348627 1.541189 0.471590 0.009792 0.598001 0.307817 0.490620 0.985309 1.091426 -0.001163 1.340040 0.836784 1.623874 0.947308 1.571874 1.682766 1.589162 0.557263 -0.756708 0.730824 -0.158194 0.874299 0.171235 1.715877 0.094269 1.693006 -0.003210 0.000120 0.287900 0.244674 0.296210 0.173475 0.085061 1.244060 -0.144629 1.393090 0.947003 1.655321 0.002790 0.767782 0.124395 1.853419 1.758066 0.194944 0.250850 1.408833 0.894108 1.257111 1.525693 1.431141 1.685746 1.068857 0.882461 0.823678 0.026294 0.575513 1.196728 0.511831 -0.419424 0.099490 0.258924 0.086741 1.209891 0.776894 0.689005 0.464341 0.964100 1.217002 1.415581 0.799532 0.365877 1.408200 0.763564 0.006423 1.199628 1.366770 1.516931 0.512343 0.778639 1.046367 -0.030955 0.495012 -0.135383 1.164549 0.106450 1.400465 1.884304 1.076206 1.325538 1.830511 0.426231 0.624854 -0.473458 0.824626 0.811406 1.794711 0.276168 1.040904 1.041351 0.932614 0.097539 0.320948 0.427283 1.673738 0.058715 1.208554 1.802580 0.736999 1.486771 0.493299 -0.114934 1.454238 0.938896 -0.001008 0.465131 1.114238 1.106355 0.899465 1.638188 1.770365 1.334000 0.620664 0.679533)
)
;;; 126 all -------------------------------------------------------------------------------- ; 11.2250
@@ -1183,7 +1183,7 @@
14.722991453869 #(0 0 1 0 0 0 0 1 1 0 1 1 1 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 0 1 0 1 1 1 1 1 1 0 1 1 0 0 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 1 0 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 1 0 0 1 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0)
14.67419786533 #(0 0 1 0 0 0 0 1 1 0 1 1 1 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 0 1 0 0 1 1 1 1 1 0 1 1 0 0 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 0 0 1 1 0 0 0 0 1 0 0 1 1 0 1 0 1 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 1 0 1 1 0 0 1 0 0 1 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0)
- 11.923828 #(0.000000 0.764130 0.494097 1.223242 0.814691 1.159851 1.713664 1.708482 1.722588 0.673447 0.073008 1.741166 0.378290 0.752252 -0.171779 0.174658 1.062541 0.856839 1.298456 0.491267 1.403592 0.528306 0.811873 0.335636 0.456011 0.880047 0.666378 0.124507 -0.083829 1.799094 0.431652 1.574611 1.395582 0.993421 0.975950 0.770789 0.793169 0.321113 1.089181 1.086115 0.251002 0.935836 0.685308 1.106916 0.966258 0.613296 1.337825 1.113786 0.197319 1.166505 0.535915 0.046809 1.075891 0.320975 0.435839 1.438794 1.646858 1.262435 1.082043 0.544528 1.509112 0.938508 1.225592 0.629764 1.609655 1.214734 1.406165 1.193019 0.217687 0.447848 0.282314 0.419891 1.623755 -0.071984 0.816571 0.035483 0.078067 0.571043 0.781214 0.274492 0.495878 0.852859 0.262985 0.493740 1.258531 1.731125 0.239650 0.177961 1.153343 0.930391 -0.062414 1.860428 1.710902 0.233067 1.154746 1.539814 0.953267 1.649846 1.690947 -0.451174 0.328627 1.759799 0.345044 -0.104983 0.945740 1.027608 0.752666 -0.017629 0.809999 0.041945 1.437872 0.468790 1.054369 -0.014689 0.615607 1.083975 -0.293666 1.541332 0.691100 0.693699 1.011390 0.220011 -0.053226 0.192583 1.016269 0.867460)
+ 11.646421 #(0.000000 0.783354 0.477512 1.253110 0.843235 1.151611 1.776485 1.760575 1.681752 0.730006 0.045160 1.736690 0.407538 0.776082 -0.149665 0.118155 1.043398 0.886346 1.266966 0.464797 1.490961 0.508735 0.813720 0.323023 0.497343 0.883742 0.777236 0.032201 -0.028928 1.879633 0.487326 1.564099 1.377642 1.038918 0.997841 0.772528 0.664136 0.422400 1.108331 1.079145 0.182535 0.861269 0.666073 1.144138 0.967548 0.618725 1.317456 1.055559 0.169200 1.190808 0.542539 0.102286 1.035285 0.269594 0.362056 1.447106 1.623967 1.295543 1.042982 0.563737 1.413097 0.927097 1.217352 0.645238 1.672041 1.249794 1.365393 1.184870 0.215475 0.446420 0.268737 0.454358 1.640494 -0.005592 0.811852 0.022599 0.006838 0.575607 0.788256 0.277209 0.507239 0.865772 0.240298 0.440148 1.239994 1.742351 0.307484 0.117039 1.175025 1.036036 -0.045083 1.887799 1.760331 0.237340 1.185712 1.547093 0.944760 1.616168 1.583017 -0.482738 0.340412 1.842126 0.324026 -0.095777 0.930039 1.092185 0.720502 0.037666 0.822861 0.074078 1.474808 0.449941 1.101699 -0.022697 0.705622 1.090163 -0.212189 1.573920 0.670064 0.714736 1.038625 0.322397 -0.012609 0.171444 1.066093 0.808086)
)
;;; 127 all -------------------------------------------------------------------------------- ; 11.2694
@@ -1191,7 +1191,7 @@
14.859080656941 #(0 0 1 0 0 1 0 0 1 1 0 0 1 1 1 1 0 1 1 1 1 0 0 1 1 0 0 0 1 0 1 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 0 0 0 0 1 0 1 0 1 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 1 0)
14.851 #(0 0 1 0 0 1 0 0 1 1 1 0 1 1 1 1 0 1 1 1 1 0 0 1 1 0 0 0 1 0 1 1 0 1 0 1 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 0 1 1 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 0 0 0 0 1 0 1 0 1 1 0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 1 1 0)
- 12.152148 #(0.000000 0.958509 1.288916 0.179365 1.145389 0.468059 1.705215 0.230431 1.469957 1.407468 0.015200 1.773602 1.357894 1.587660 1.001248 -0.212084 0.165468 1.527212 0.118628 1.628448 1.353415 1.665294 1.326760 0.451538 0.538417 0.105994 0.485389 -0.051779 -0.042743 1.227990 0.259347 0.749251 -0.090239 1.406343 0.179385 1.748998 0.876157 0.147144 0.609031 1.388342 0.086134 0.686170 1.672400 1.326030 0.710812 0.562528 0.346010 1.770338 0.932073 1.244760 1.001795 0.163863 0.905071 1.582109 0.966488 1.789391 0.183056 0.583151 0.576368 1.369791 1.075141 1.283970 0.259192 0.016717 1.673084 1.091374 1.797115 0.049183 -0.190030 0.657091 0.609597 1.244703 0.539595 0.686346 0.558953 0.490841 0.073660 0.074818 0.797139 0.122364 0.233459 1.586411 1.706446 0.073685 0.293822 0.233432 0.175916 0.886449 0.785060 1.160321 0.961914 1.416076 0.054814 0.090553 0.701719 1.839046 1.534118 1.673239 1.309578 0.288926 -0.092267 1.568297 0.654344 0.149783 1.361694 0.740732 1.682680 0.141042 0.594962 0.908034 1.662918 0.519790 0.689146 1.304402 1.217201 1.643655 0.737873 0.769341 -0.104255 1.954283 0.269780 1.717162 0.406508 1.564079 1.610530 0.579108 1.589079)
+ 11.699011 #(0.000000 0.903362 1.211856 0.140038 1.135211 0.381375 1.760382 0.085762 1.491342 1.389146 -0.061313 1.803786 1.391686 1.602565 1.108884 -0.340017 0.149433 1.526090 0.182886 1.634703 1.273351 1.632040 1.364477 0.441065 0.568174 0.139809 0.397260 -0.095334 0.043930 1.143733 0.246892 0.726814 0.017442 1.388076 0.127116 1.810798 0.863030 0.023445 0.611570 1.253310 0.035270 0.700878 1.760603 1.321555 0.607001 0.713237 0.254814 1.782321 0.974286 1.296553 0.938518 0.215897 0.894821 1.624301 0.944582 1.702532 0.312676 0.571431 0.565057 1.293019 1.119474 1.264981 0.229611 0.125843 1.673370 1.075961 1.883151 0.053063 -0.210448 0.772789 0.616212 1.270560 0.426218 0.606943 0.678612 0.478030 0.011137 0.054799 0.813663 0.089354 0.199529 1.652598 1.727755 -0.050043 0.289157 0.330801 0.220253 0.933461 0.716830 1.158487 1.069535 1.360156 -0.013607 0.202748 0.758217 1.871466 1.547480 1.685106 1.205754 0.305143 -0.172354 1.550855 0.567735 0.014176 1.383037 0.698668 1.654179 0.106818 0.528742 0.923723 1.732348 0.521286 0.824633 1.327889 1.316152 1.677030 0.706547 0.642802 -0.132421 0.013187 0.324826 1.597417 0.415558 1.523030 1.569835 0.521422 1.590498)
)
;;; 128 all -------------------------------------------------------------------------------- ; 11.3137
@@ -1200,7 +1200,7 @@
15.249417304993 #(0 1 1 0 1 0 0 1 0 0 0 0 1 0 1 1 1 1 0 1 1 0 0 1 0 1 1 1 1 0 0 0 1 0 0 1 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 0 0 0 1 0 0 1 1 1 1 0 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 1 0 0 1 0 0 1 0 0 1 1 1 0 1 0 1 0 0 0 1 1 1 0 0 0 0 1 0 0 1 0 1 1 0 0 1 0 0 1 1)
15.138 #(0 1 1 0 1 0 0 1 0 0 0 0 1 0 1 1 1 1 0 1 0 0 0 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 0 1 1 1 1 1 1 0 1 0 0 1 1 0 0 0 1 0 0 1 1 1 1 0 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 1 1 0 1 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 1 1 1 0 1 0 1 0 0 1 1 1 1 0 0 0 0 1 0 0 1 1 1 1 0 0 1 0 0 1 1)
- 12.105611 #(0.000000 1.400838 0.041638 1.508709 1.029603 1.134491 0.802006 1.077254 0.290199 0.776060 0.333272 0.798903 1.495048 0.736403 0.716538 1.490474 1.732071 0.067904 0.305788 0.342175 0.083379 -0.245676 0.977007 0.611077 0.032305 1.542701 1.799983 -0.165893 1.192000 1.370497 0.416270 1.229838 1.296357 0.093882 0.622375 1.775231 0.130657 1.001043 0.520557 0.880430 0.274960 0.236932 1.273222 1.202712 0.921842 0.689482 0.542233 1.402979 -0.090626 0.400708 -0.163121 1.510199 1.487808 0.404386 1.128434 1.271053 0.113048 0.574452 -0.013964 0.379722 0.174982 0.017519 0.558916 0.599553 1.381890 0.874920 1.349503 1.087007 1.532833 0.217815 1.742839 0.031631 1.494458 1.259801 0.933732 0.266261 1.330818 1.003622 -0.057613 1.429830 1.341541 1.135068 0.330048 0.320914 0.675479 1.185133 0.847596 -0.035867 0.285429 0.125880 0.629232 0.839535 1.509944 1.005742 1.268935 0.235630 0.717944 0.738132 0.980602 0.685610 0.666258 0.596734 0.604406 0.288109 1.326903 0.707156 0.324597 1.063299 -0.094244 1.049472 0.298003 1.203545 0.673931 1.161524 1.525689 0.768210 1.759316 0.762009 0.939916 1.904997 0.457693 0.640230 1.171883 1.681858 0.014538 1.442652 -0.004020 0.953825)
+ 11.778347 #(0.000000 1.414806 0.032481 1.522458 1.055742 1.152557 0.859291 1.010902 0.251697 0.766489 0.336930 0.752249 1.473190 0.745079 0.733453 1.474518 1.684281 0.036427 0.261379 0.321561 0.020767 -0.154475 1.032907 0.554760 0.031908 1.501114 1.743476 -0.098981 1.142375 1.383461 0.397731 1.247005 1.305580 0.063057 0.570294 1.836136 0.068888 0.923743 0.524055 0.882876 0.205193 0.402885 1.312204 1.132799 0.845182 0.737609 0.534386 1.369702 -0.134697 0.408685 -0.213703 1.492366 1.425912 0.366781 1.170750 1.220328 0.069229 0.543321 -0.034886 0.375756 0.150514 0.028846 0.532808 0.684247 1.415708 0.939655 1.379362 1.082829 1.446760 0.352049 1.712327 -0.002133 1.512121 1.233860 0.916211 0.355286 1.343002 1.039292 -0.018513 1.396773 1.385690 1.089589 0.304430 0.338055 0.657639 1.161275 0.829767 -0.099933 0.323511 0.125628 0.630212 0.837867 1.495232 1.075308 1.296667 0.333866 0.701732 0.638468 0.953688 0.658835 0.638144 0.585899 0.597356 0.285451 1.386842 0.729807 0.256318 1.126530 -0.110150 1.026665 0.331697 1.227505 0.618468 1.161824 1.588830 0.723934 1.786859 0.783894 0.922933 1.934077 0.473306 0.681833 1.138663 1.696535 -0.039415 1.397371 -0.016216 1.045743)
)
;;; 256 all --------------------------------------------------------------------------------
@@ -1265,7 +1265,7 @@
2.045217 #(0.000000 0.436172 1.100327 0.766122)
)
-;;; 5 odd -------------------------------------------------------------------------------- ; sqrt=2.2360679
+;;; 5 odd -------------------------------------------------------------------------------- ; 2.2360679
#(5 2.7317879199982 #(0 1 1 0 0)
2.3731805734023 #(0 7/16 7/4 5/8 7/16)
@@ -1274,21 +1274,21 @@
2.307253 #(0.000000 1.606636 0.245540 1.403918 1.575230)
)
-;;; 6 odd -------------------------------------------------------------------------------- ; sqrt=2.44948
+;;; 6 odd -------------------------------------------------------------------------------- ; 2.44948
#(6 2.8638670444489 #(0 0 0 0 1 0)
2.522759 #(0.000000 1.360421 1.129847 1.035439 1.320248 0.102465)
2.522749 #(0.000000 0.639403 0.869779 0.964074 0.679243 -0.103102)
)
-;;; 7 odd -------------------------------------------------------------------------------- ; sqrt=2.64575
+;;; 7 odd -------------------------------------------------------------------------------- ; 2.64575
#(7 2.9204399585724 #(0 0 0 1 1 0 1)
2.618497 #(0.000000 1.527527 0.524623 0.177241 0.453108 1.577456 1.970355)
2.618376 #(0.000000 0.474123 1.477585 1.824644 1.552691 0.429533 0.035303)
)
-;;; 8 odd -------------------------------------------------------------------------------- ; sqrt=2.828427
+;;; 8 odd -------------------------------------------------------------------------------- ; 2.828427
#(8 3.2507002353668 #(0 1 1 0 1 1 1 0)
2.8071956634521 #(0 109/128 7/4 1 13/16 123/64 21/128 43/128)
@@ -1298,7 +1298,7 @@
2.790799 #(0.000000 1.197514 0.327251 1.112061 1.319778 0.232086 -0.004810 -0.126263)
)
-;;; 9 odd -------------------------------------------------------------------------------- ; sqrt=3
+;;; 9 odd -------------------------------------------------------------------------------- ; 3
#(9 3.5549147642153 #(0 1 0 1 1 0 0 0 0)
3.46973755015 #(0 1 1 0 1 0 0 0 1)
3.4140722751617 #(0 0 1 1 1 1 0 1 0)
@@ -1307,7 +1307,7 @@
2.886464 #(0.000000 1.605518 1.374012 0.351118 1.929257 0.196622 0.091381 1.096286 1.622082)
)
-;;; 10 odd -------------------------------------------------------------------------------- ; sqrt=3.162277
+;;; 10 odd -------------------------------------------------------------------------------- ; 3.162277
#(10 3.5391488075256 #(0 0 1 1 0 1 0 0 0 0)
3.054055 #(0.000000 0.508058 0.119325 0.663858 1.627094 1.847660 0.043999 1.283121 0.512586 0.295891)
@@ -1318,8 +1318,8 @@
3.053807 #(0.000000 0.524885 0.155185 0.727764 -0.282439 -0.043214 0.155190 1.412864 0.658810 0.474600)
)
-;;; 11 odd -------------------------------------------------------------------------------- ; sqrt=3.31662
-#(11 3.6182308197021 #(0 0 0 1 1 1 0 1 1 0 1) ; sqrt is 3.31662
+;;; 11 odd -------------------------------------------------------------------------------- ; 3.31662
+#(11 3.6182308197021 #(0 0 0 1 1 1 0 1 1 0 1) ; 3.31662
3.177383 #(0.000000 1.758655 0.386236 -0.008172 1.159122 0.785208 0.739625 0.606297 1.367332 0.311355 0.827147)
3.177220 #(0.000000 0.232935 1.599549 -0.005436 0.822576 1.185453 1.230375 1.357659 0.594255 1.644007 1.122113)
@@ -1329,7 +1329,7 @@
3.177098 #(0.000000 1.745038 0.362715 -0.030740 1.128748 0.736155 0.690326 0.545405 1.303285 0.236832 0.743503)
)
-;;; 12 odd -------------------------------------------------------------------------------- ; sqrt=3.464101
+;;; 12 odd -------------------------------------------------------------------------------- ; 3.464101
#(12 4.0877377663658 #(0 0 0 0 1 0 1 0 0 1 1 0)
4.0507665657231 #(0 1 0 1 0 0 1 1 0 0 0 0)
4.0 #(0 0 1 1 0 0 0 0 0 1 0 1)
@@ -1342,7 +1342,7 @@
3.362737 #(0.000000 -0.077029 1.405769 1.027930 1.006574 1.870564 0.481680 0.791450 0.202834 1.026360 0.648485 1.363973)
)
-;;; 13 odd -------------------------------------------------------------------------------- ; sqrt=3.60555
+;;; 13 odd -------------------------------------------------------------------------------- ; 3.60555
#(13 3.9482246631869 #(0 0 0 0 0 0 1 1 0 0 1 0 1)
3.8778836727142 #(0 0 1 1 0 0 1 0 1 0 0 0 0)
@@ -1352,7 +1352,7 @@
3.475452 #(0.000000 1.620672 1.042066 1.652912 1.561748 1.044454 1.472771 -0.159565 0.082334 1.041828 0.507070 0.948164 0.058404)
)
-;;; 14 odd -------------------------------------------------------------------------------- ; sqrt=3.741657
+;;; 14 odd -------------------------------------------------------------------------------- ; 3.741657
#(14 4.2126383781433 #(0 0 0 0 0 1 1 0 0 1 0 1 0 0)
4.2575645446777 #(0 1 0 0 1 0 0 1 0 0 0 1 1 1)
4.2842662512094 #(0 1 1 0 0 1 1 1 0 1 0 0 0 0)
@@ -1363,7 +1363,7 @@
3.599409 #(0.000000 0.851134 1.636505 0.091221 1.006010 0.744090 1.678264 0.418648 -0.048848 1.351639 1.174737 1.143087 1.519418 1.448182)
)
-;;; 15 odd -------------------------------------------------------------------------------- ; sqrt=3.872983
+;;; 15 odd -------------------------------------------------------------------------------- ; 3.872983
#(15 4.4701427567987 #(0 1 0 0 1 0 1 1 1 1 1 0 0 1 1)
4.4776539802551 #(0 0 1 0 1 0 0 1 0 0 0 1 1 1 1)
4.5555243492126 #(0 1 0 0 1 0 1 0 0 1 1 0 0 0 0)
@@ -1374,7 +1374,7 @@
3.739752 #(0.000000 1.191367 0.176518 1.591145 1.710423 1.309889 1.422724 0.785426 1.754948 1.707551 1.122738 1.744847 0.127913 0.663567 0.776627)
)
-;;; 16 odd -------------------------------------------------------------------------------- ; sqrt=4
+;;; 16 odd -------------------------------------------------------------------------------- ; 4
#(16 4.5778832343715 #(0 1 1 0 0 0 0 1 0 0 1 1 1 0 1 0)
4.5854911804199 #(0 0 1 0 1 0 1 1 0 1 1 1 1 1 0 0)
4.6032500267029 #(0 1 1 1 1 1 0 1 0 1 1 1 0 0 1 0)
@@ -1385,7 +1385,7 @@
3.858242 #(0.000000 0.144652 0.676444 0.017002 0.269119 1.012194 1.772841 1.585260 1.809100 0.289620 1.399960 0.670537 0.175237 0.296937 -0.017357 1.108803)
)
-;;; 17 odd -------------------------------------------------------------------------------- ; sqrt=4.12310
+;;; 17 odd -------------------------------------------------------------------------------- ; 4.12310
#(17 4.5790815353394 #(0 1 0 0 1 0 0 0 1 0 0 1 1 1 1 0 0)
4.6202440261841 #(0 0 1 1 1 0 1 1 1 1 1 0 0 1 0 1 1)
4.8765740394592 #(0 0 0 0 1 0 1 1 0 1 0 0 0 1 0 0 0)
@@ -1394,7 +1394,7 @@
3.927805 #(0.000000 0.618908 0.864629 1.180783 1.677629 1.929621 0.580975 1.820904 0.468136 1.289907 0.485211 0.029658 1.160895 0.856998 0.644358 0.814931 0.296558)
)
-;;; 18 odd -------------------------------------------------------------------------------- ; sqrt=4.2426406
+;;; 18 odd -------------------------------------------------------------------------------- ; 4.2426406
#(18 4.801501750946 #(0 1 0 1 0 0 0 1 1 0 1 0 0 1 0 0 0 0)
4.857753276825 #(0 1 0 0 0 0 1 0 0 0 0 1 1 0 1 1 0 0)
4.86248254776 #(0 0 1 1 1 1 1 0 0 0 1 0 0 1 0 1 0 0)
@@ -1409,7 +1409,7 @@
4.071185 #(0.000000 0.956640 1.083713 0.493342 0.797185 0.138960 0.613585 0.388904 -0.007616 0.968034 0.616152 1.753096 0.351362 1.174080 1.220111 1.511627 0.186455 1.775153)
)
-;;; 19 odd -------------------------------------------------------------------------------- ; sqrt=4.358898
+;;; 19 odd -------------------------------------------------------------------------------- ; 4.358898
#(19 5.0520766258263 #(0 0 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0)
5.0155117084604 #(0 0 0 1 1 0 0 0 1 0 0 1 1 0 1 0 0 0 0)
4.9927339414282 #(0 1 0 0 1 1 0 1 1 1 0 1 1 1 1 0 0 0 1)
@@ -1423,126 +1423,112 @@
4.173923 #(0.000000 0.329738 1.407540 1.252167 0.448297 0.551162 1.341659 1.859617 1.357020 0.222879 0.553639 1.254187 0.641694 -0.208417 1.489583 1.646436 1.391179 1.758274 1.299312)
)
-;;; 20 odd -------------------------------------------------------------------------------- ; sqrt=4.472135
+;;; 20 odd -------------------------------------------------------------------------------- ; 4.472135
#(20 5.136606875959 #(0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0)
5.104093841111 #(0 1 1 0 1 1 0 1 0 1 0 0 0 1 1 0 0 0 0 0)
5.043 #(0 1 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 0)
- 4.463104 #(0.000000 0.761800 1.236823 0.024313 0.590123 1.505373 1.550313 -0.073442 0.241861 0.856525 0.795787 0.538896 1.584914 1.104127 1.007262 0.563390 0.997438 0.457495 1.344824 0.646695)
- 4.368486 #(0.000000 0.113861 0.064838 0.257429 0.009769 0.820593 1.249433 1.802515 1.600199 0.593951 1.336324 -0.210992 1.241347 -0.012829 1.734820 1.191920 -0.265711 0.702375 0.147270 1.859136)
- 4.366124 #(0.000000 0.107213 0.050360 0.244140 -0.004168 0.797680 1.223533 1.776650 1.576278 0.549227 1.301176 -0.259145 1.196811 -0.056724 1.689699 1.134515 -0.325940 0.634078 0.086678 1.787063)
+ 4.360063 #(0.000000 0.073521 -0.009620 0.184167 -0.090618 0.682702 1.090680 1.616612 1.399432 0.352373 1.094838 -0.499526 0.947850 -0.319867 1.410866 0.829866 -0.654620 0.294523 -0.287091 1.405089)
)
-;;; 21 odd -------------------------------------------------------------------------------- ; sqrt=4.5825756
+;;; 21 odd -------------------------------------------------------------------------------- ; 4.5825756
#(21 5.2726634376804 #(0 0 1 1 1 1 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0)
5.2359894831295 #(0 1 1 0 1 0 0 1 0 1 1 1 0 0 0 0 1 0 0 0 1)
5.2142992491192 #(0 1 1 0 0 1 0 0 0 1 1 1 0 1 0 1 1 1 1 0 1)
5.2105652502144 #(0 1 1 0 1 0 1 1 1 0 0 0 0 1 1 0 0 1 0 0 0)
5.1372244578347 #(0 1 1 1 0 0 0 0 1 1 1 0 1 1 1 1 0 1 1 0 1)
- 4.450883 #(0.000000 1.233726 0.089703 0.908233 0.292656 1.788040 -0.065526 1.336395 1.075719 0.741073 1.053493 1.212155 1.462562 0.811845 1.503163 1.664044 0.651531 0.030848 1.056015 1.234151 -0.039082)
+ 4.450399 #(0.000000 1.232888 0.090626 0.908626 0.292628 1.789632 -0.064521 1.337231 1.077653 0.742032 1.053479 1.212396 1.464307 0.813375 1.503599 1.665799 0.652080 0.032818 1.058665 1.235482 -0.037282)
)
-;;; 22 odd -------------------------------------------------------------------------------- ; sqrt=4.6904157
+;;; 22 odd -------------------------------------------------------------------------------- ; 4.6904157
#(22 5.5119525535942 #(0 0 1 0 1 0 0 1 1 1 0 1 0 0 1 1 0 0 0 0 0 0)
5.473 #(0 1 1 1 1 0 0 0 0 1 0 1 1 0 1 1 1 1 1 0 1 1)
5.1805551751198 #(0 1 0 1 0 1 0 0 1 0 1 1 0 0 1 1 0 0 0 0 0 0)
- 4.583138 #(0.000000 0.182502 0.419278 1.939872 0.361839 0.587626 1.531169 1.787871 1.541630 1.351840 -0.018857 1.718843 0.820884 0.366708 1.868174 -0.084082 0.063751 0.682750 1.416463 0.537570 1.653628 0.496830)
+ 4.582778 #(0.000000 0.181219 0.413695 1.937138 0.354645 0.584330 1.521156 1.778203 1.534204 1.337940 -0.034924 1.699942 0.807878 0.347955 1.849970 -0.102930 0.038171 0.664785 1.395334 0.513333 1.628189 0.471554)
)
-;;; 23 odd -------------------------------------------------------------------------------- ; sqrt=4.7958315
+;;; 23 odd -------------------------------------------------------------------------------- ; 4.7958315
#(23 5.5374279022217 #(0 1 1 1 0 0 0 1 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0)
5.4125407453101 #(0 0 0 1 1 1 1 0 0 1 0 1 0 1 1 1 1 0 1 1 0 0 1)
- 4.670881 #(0.000000 0.391209 0.126147 -0.323045 -0.195528 0.780936 0.970227 1.275123 1.516514 0.497217 0.267114 0.241569 1.146441 0.691186 0.452638 0.445423 0.812925 0.115225 1.055254 0.895488 -1.954590 0.966112 -0.192187)
4.663897 #(0.000000 0.403435 0.142748 -0.306349 -0.210666 0.795999 1.004771 1.283072 1.566950 0.563329 0.340321 0.292952 1.204762 0.724980 0.539830 0.518629 0.906326 0.187293 1.164337 0.997077 -1.862047 1.042851 -0.124041)
)
-;;; 24 odd -------------------------------------------------------------------------------- ; sqrt=4.89897948
+;;; 24 odd -------------------------------------------------------------------------------- ; 4.89897948
#(24 5.6568542494923 #(0 1 0 1 0 0 0 1 1 1 1 0 1 1 0 0 0 1 0 0 1 0 0 0)
5.6584029055795 #(0 1 1 0 0 1 0 1 0 0 1 1 1 1 0 0 0 0 0 0 1 0 0 0)
5.62041703818643 #(0 1 0 0 1 0 1 0 1 1 0 0 1 0 1 1 0 0 1 1 1 1 1 1)
5.6193280144865 #(0 1 0 0 1 0 1 0 1 1 0 0 1 0 1 1 0 0 1 1 1 1 1 1)
- 4.790001 #(0.000000 0.500517 1.188515 1.396576 0.474723 1.494460 -0.065387 0.816534 0.003240 0.853121 0.041977 1.046665 0.984817 1.789280 -0.054055 0.183792 0.636954 0.256880 0.014326 0.139970 0.024351 -0.135132 1.157437 0.672925)
+ 4.789073 #(0.000000 0.498962 1.192122 1.399568 0.478175 1.498537 -0.058937 0.823036 0.009630 0.862968 0.052440 1.055798 0.997888 1.799698 -0.043449 0.198517 0.646569 0.269929 0.032678 0.156758 0.040928 -0.117138 1.174336 0.689332)
)
-;;; 25 odd -------------------------------------------------------------------------------- ; sqrt=5
+;;; 25 odd -------------------------------------------------------------------------------- ; 5
#(25 5.7861609458923 #(0 1 0 1 1 1 0 0 1 1 0 0 0 1 0 1 1 0 1 0 0 1 1 1 1)
5.7734115151023 #(0 0 1 1 0 0 0 0 0 1 1 1 1 1 0 1 1 1 0 1 0 1 1 0 1)
5.7220960914079 #(0 1 0 0 0 0 0 1 0 1 0 0 1 0 1 1 1 0 1 1 0 0 0 1 1)
- 4.952389 #(0.000000 0.649552 0.146968 0.137592 1.920162 1.770908 1.877396 0.502509 -0.092100 0.572738 1.615288 0.866122 0.452803 0.426754 0.428242 1.480905 0.907148 -0.281654 1.752124 0.802190 0.517608 1.888063 0.273561 0.653670 1.328454)
- 4.940301 #(0.000000 0.068941 0.280987 0.744123 1.665761 1.640509 1.200511 1.123563 1.696266 0.637874 0.883209 0.025382 1.721216 0.451503 0.071096 0.292264 0.770874 0.241249 0.692111 0.321227 -0.116766 1.144162 -0.149523 0.630713 0.076503)
- 4.890161 #(0.000000 -0.125890 0.649744 0.793802 -0.283768 0.141829 1.160126 1.184857 -0.002174 -0.240610 1.214633 0.278259 0.700886 1.109919 0.612475 1.459495 0.407722 0.119540 0.180624 -0.083081 1.060528 0.146783 0.546703 0.376238 0.307053)
+ 4.889151 #(0.000000 -0.128293 0.647012 0.790395 -0.286222 0.142942 1.157912 1.181898 -0.008090 -0.239858 1.215092 0.277126 0.697826 1.108639 0.614409 1.458730 0.405980 0.119432 0.178568 -0.086880 1.056419 0.142726 0.542932 0.376693 0.306796)
)
-;;; 26 odd -------------------------------------------------------------------------------- ; sqrt=5.0990
+;;; 26 odd -------------------------------------------------------------------------------- ; 5.0990
#(26 5.8912210464478 #(0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 1 1 1 1 0 0)
5.8572101593018 #(0 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 0 1 1 1 0 0 0 0)
5.8545204896237 #(0 1 0 1 0 0 1 1 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 1 0 0)
5.8537594936002 #(0 0 0 0 1 1 1 1 0 0 1 0 0 1 0 0 1 1 1 0 1 1 1 1 0 1)
- 5.058191 #(0.000000 0.963510 1.600122 1.739679 0.398231 -0.057796 1.231026 1.438488 0.378841 -0.000542 1.855780 0.773155 0.905183 0.022318 0.216751 0.538533 -0.159436 0.757975 0.682881 0.713783 1.058188 0.165324 1.772365 0.277114 1.781621 -0.007420)
- 5.055923 #(0.000000 1.850899 1.623230 0.411901 1.085371 1.752389 1.281766 0.304190 0.520004 1.225336 1.575826 1.230455 1.745219 1.292940 1.802108 -0.127313 1.840563 1.168270 0.199407 1.202404 1.359182 0.043186 1.106369 0.811094 0.231058 0.510109)
- 5.053527 #(0.000000 0.944025 1.245710 0.093194 0.306137 1.114440 1.444316 1.823154 0.610370 0.729077 -0.014396 1.183732 1.663139 0.726593 1.907293 0.624400 0.516512 1.574612 1.429517 1.489610 1.512613 -0.418034 1.459880 1.393958 0.677536 1.872369)
- 5.010120 #(0.000000 1.694148 1.370493 1.371036 0.627367 0.747787 1.218760 1.690483 1.087951 0.649663 -0.138511 1.084636 0.313576 0.194751 0.714032 1.228241 1.541447 -0.163640 1.422442 1.761640 0.864082 1.845608 0.668665 -0.119233 0.169526 0.142007)
+ 5.008456 #(0.000000 1.693298 1.368284 1.373891 0.627805 0.749201 1.218581 1.690405 1.084549 0.650173 -0.133773 1.086196 0.314357 0.195942 0.717774 1.230001 1.543258 -0.160224 1.426853 1.764971 0.866097 1.848572 0.672503 -0.114245 0.170724 0.146283)
)
-;;; 27 odd -------------------------------------------------------------------------------- ; sqrt=5.196152
+;;; 27 odd -------------------------------------------------------------------------------- ; 5.196152
#(27 5.9741146989154 #(0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 1 0 0 1 1 0 0 0 1 0)
5.968769496567 #(0 0 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 0 1 0 0 1 0 1 0 1 1)
5.9206547737122 #(0 1 0 0 1 1 0 1 0 0 0 1 1 0 0 1 1 0 1 0 1 1 1 1 1 1 0)
5.8637111082051 #(0 0 1 1 0 0 1 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 1 1 1)
- 5.159976 #(0.000000 0.060824 1.210207 1.106404 0.924969 -0.022790 0.023912 -0.183868 0.515526 0.968425 1.378371 0.126703 1.003394 1.684154 0.187692 -0.104012 0.879975 0.487286 1.825016 1.033078 0.155452 1.194679 1.635355 1.210386 1.229222 1.367651 1.379503)
- 5.092899 #(0.000000 0.107634 1.216581 1.162863 0.970813 -0.022757 0.034500 -0.152242 0.572768 1.004014 1.377153 0.120509 0.957651 1.745324 0.131867 -0.240890 0.876422 0.511888 1.810253 0.923913 0.162764 1.222507 1.599602 1.229795 1.210136 1.334551 1.305999)
+ 5.091597 #(0.000000 0.108433 1.216643 1.164927 0.973412 -0.021700 0.035052 -0.150680 0.575434 1.005110 1.378469 0.117668 0.956832 1.742119 0.131354 -0.244103 0.873574 0.514283 1.810072 0.920776 0.162873 1.223342 1.596642 1.233515 1.209783 1.332933 1.299893)
)
-;;; 28 odd -------------------------------------------------------------------------------- ; sqrt=5.291502
+;;; 28 odd -------------------------------------------------------------------------------- ; 5.291502
#(28 6.0999548630948 #(0 1 0 1 0 1 1 1 0 0 0 1 1 0 0 1 1 0 1 0 0 0 0 1 0 1 1 0)
6.0720555632906 #(0 0 1 1 0 0 0 0 1 0 0 1 1 1 1 0 1 0 1 1 1 0 0 1 0 1 1 1)
6.057788848877 #(0 1 1 1 0 0 0 1 1 0 1 1 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 0)
6.0276107788086 #(0 0 1 1 1 0 0 0 1 0 1 1 1 0 1 1 1 1 1 1 0 0 1 0 0 1 0 1)
- 5.094147 #(0.000000 1.678293 -0.049244 0.224215 0.111515 0.903614 0.755406 0.130442 -0.168168 0.188117 0.613631 -0.056929 1.188744 1.776972 0.501714 0.256057 0.150336 1.662400 1.604557 0.465157 1.336771 1.662296 0.357936 1.287361 0.899458 0.171216 0.750846 0.327439)
+ 5.092585 #(0.000000 1.695440 -0.043623 0.222052 0.119988 0.906658 0.748492 0.144655 -0.170479 0.199068 0.623366 -0.017877 1.188512 1.804895 0.527591 0.257090 0.180945 1.672974 1.633662 0.481970 1.385001 1.687455 0.368286 1.304198 0.926301 0.205231 0.776507 0.352984)
)
-;;; 29 odd -------------------------------------------------------------------------------- ; sqrt=5.385164
+;;; 29 odd -------------------------------------------------------------------------------- ; 5.385164
#(29 6.2191140571712 #(0 1 1 0 0 1 0 1 1 0 0 1 1 0 1 0 1 0 1 1 0 0 0 0 0 0 1 1 1)
6.1821198011886 #(0 0 0 1 0 1 1 1 1 0 0 1 0 0 1 1 0 0 1 0 1 0 0 0 0 1 0 0 0)
6.1290216445923 #(0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 1 0 1 0 0 0 1 1 0 1 1 0)
6.1179310275088 #(0 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 1 1 0 0 0 1 1 1 1 1)
6.0348020511367 #(0 1 1 1 1 0 0 0 1 1 0 1 0 1 1 0 0 1 0 0 1 1 1 0 1 1 1 1 1)
- 5.408434 #(0.000000 1.230326 1.005338 1.568513 0.576466 1.768004 0.800504 0.140541 0.719371 1.353662 0.186415 1.632586 1.491027 1.607986 0.311591 1.880869 1.593879 0.776334 0.744436 0.853178 0.849473 -0.101925 0.610882 0.902989 1.474353 1.175276 0.765416 0.379647 0.892498)
- 5.272030 #(0.000000 0.140743 0.547498 0.728483 1.351219 -0.029008 1.644948 0.409195 1.709885 1.192129 0.960160 0.986939 0.680214 1.560338 0.678252 0.351955 0.262554 1.372795 0.621730 0.923306 0.829609 0.799092 -0.003664 1.062178 1.056981 1.782392 0.560713 1.470489 0.057415)
+ 5.267374 #(0.000000 0.150950 0.558525 0.734122 1.367984 -0.010939 1.646605 0.436638 1.718320 1.202816 0.978274 1.009951 0.702458 1.591440 0.711769 0.372772 0.283792 1.401587 0.653090 0.959946 0.846748 0.832705 0.047894 1.107158 1.102787 1.831833 0.612394 1.520781 0.108517)
)
-;;; 30 odd -------------------------------------------------------------------------------- ; sqrt=5.4772255
+;;; 30 odd -------------------------------------------------------------------------------- ; 5.4772255
#(30 6.2854590415955 #(0 1 1 1 1 1 1 0 1 1 0 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 1 0 0 0)
6.2697563171387 #(0 1 0 1 0 0 1 1 0 0 1 0 0 1 1 1 0 0 1 0 1 0 0 1 1 1 1 1 1 1)
6.2528157234192 #(0 1 1 1 1 1 1 1 1 0 1 1 0 0 1 1 1 1 0 0 0 1 1 0 1 1 0 1 0 1)
6.2357559204102 #(0 1 0 1 0 1 1 0 0 1 1 0 1 1 0 0 0 0 1 1 1 1 0 1 1 1 1 0 1 1)
- 5.555741 #(0.000000 0.440437 0.547330 0.415184 1.387308 1.812823 0.105595 0.253652 1.773552 1.111459 0.099032 0.174668 1.454910 0.731376 -0.387293 0.833427 1.738667 1.583378 1.784819 0.419743 0.472096 1.815315 0.081606 1.690766 1.343988 -0.054973 0.554467 0.734783 0.203950 0.719585)
- 5.513413 #(0.000000 1.699709 0.335515 1.213665 1.173165 0.712606 1.332346 0.661773 1.151588 1.282957 0.915551 1.580851 0.407690 0.015142 0.608461 0.692936 0.435513 1.553569 1.342559 0.745177 1.768811 1.155092 0.969923 1.188309 0.450077 0.987363 1.749350 1.705283 0.542005 1.184319)
- 5.492249 #(0.000000 0.563551 1.671520 0.867866 1.418934 0.888205 1.760307 0.156746 0.075068 1.405354 0.475017 0.935741 0.137021 0.435531 1.006673 1.290807 0.884129 1.856283 1.482983 0.709540 0.436947 1.406909 1.323650 -0.251610 1.118569 1.335084 1.334543 0.672636 0.762099 0.969101)
- 5.358806 #(0.000000 -0.271457 0.783438 0.425053 1.744822 0.807939 1.820861 0.238896 0.799795 0.439623 0.605605 1.287351 -0.032502 0.804421 0.594993 1.138094 0.779046 1.814919 1.362522 1.644976 1.051666 0.275625 0.182208 0.071316 0.645048 1.516939 1.896139 1.691621 1.284236 1.539293)
+ 5.356917 #(0.000000 -0.272403 0.779609 0.427831 1.743491 0.813040 1.826167 0.242297 0.800154 0.444205 0.599989 1.282484 -0.036742 0.801786 0.590077 1.134322 0.784392 1.820310 1.361582 1.648573 1.057728 0.274607 0.187893 0.071940 0.646543 1.513903 1.900196 1.697822 1.289117 1.535078)
)
-;;; 31 odd -------------------------------------------------------------------------------- ; sqrt 5.56776
+;;; 31 odd -------------------------------------------------------------------------------- ; 5.56776
#(31 6.3631281852722 #(0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 1 0 0 0 0 0 1 1 1)
6.3062944412231 #(0 0 0 1 0 1 0 0 1 0 1 0 1 1 1 0 0 0 1 1 1 1 1 1 1 0 1 1 0 0 1)
6.269211769104 #(0 1 1 0 0 1 0 0 1 1 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0)
6.1342258453369 #(0 0 1 0 0 0 0 0 1 0 1 1 1 0 1 1 1 0 1 1 0 1 0 1 1 1 1 0 0 1 1)
- 5.614499 #(0.000000 1.057256 0.771211 1.692016 1.270992 0.219098 1.680191 0.736741 0.722604 0.077997 1.236137 1.356933 0.499227 0.145448 0.536830 1.669975 1.026571 1.731919 0.405892 1.552979 1.655350 0.117425 1.560581 0.172129 0.615040 0.346847 0.133285 0.186681 0.303421 1.326259 1.673642)
- 5.425523 #(0.000000 1.389806 -0.056230 1.469509 1.137213 0.305570 1.280814 0.123403 0.782740 0.169376 0.276987 1.267800 0.811553 0.594695 0.254696 0.347109 0.670917 0.608253 0.394014 1.237088 -0.176540 1.798909 1.693125 0.776592 0.387595 1.098697 0.155491 0.343988 0.883507 1.120558 0.164346)
+ 5.423494 #(0.000000 1.386303 -0.055734 1.470363 1.133289 0.301867 1.278872 0.118563 0.785226 0.165360 0.277066 1.264913 0.806911 0.592449 0.252572 0.349148 0.668297 0.601505 0.393268 1.237828 -0.182749 1.792953 1.685727 0.766750 0.385388 1.093159 0.147275 0.340746 0.884734 1.109480 0.159614)
)
-;;; 32 odd -------------------------------------------------------------------------------- ; sqrt 5.65685
+;;; 32 odd -------------------------------------------------------------------------------- ; 5.65685
#(32 6.5067925453186 #(0 1 1 1 1 0 0 1 0 1 0 0 1 0 1 1 1 1 1 0 0 1 0 0 1 0 0 0 1 0 0 0)
6.5040426254272 #(0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 1 1 1 0 1 0 0 1 0 1 0 0 1 1)
6.4926128387451 #(0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 1 1)
@@ -1550,12 +1536,10 @@
6.4720740318298 #(0 1 1 0 1 0 1 0 0 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1)
6.3532226957365 #(0 1 1 0 0 1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 1 0 1 1 1 1 1 1 0 1 1 1)
- 5.737898 #(0.000000 1.505411 1.032925 1.272107 1.948264 0.535387 1.256291 1.374580 0.197145 -0.062144 -0.227457 0.725228 1.801557 1.715862 0.056005 1.135273 1.599180 1.263509 -0.001405 1.615917 0.681908 0.665842 0.435477 0.755601 1.495256 1.125605 1.363942 0.840006 0.784951 0.030466 0.994065 -0.231434)
- 5.715647 #(0.000000 0.410274 0.975561 1.602942 0.063060 0.072541 1.838816 -0.096294 1.663893 0.802756 0.594757 1.369695 0.800505 0.835361 1.017235 0.138821 1.593083 1.278450 0.935340 0.980912 1.470845 0.493496 0.245307 0.978711 0.840784 1.228750 0.330939 1.204178 0.236628 1.099369 1.618449 0.878276)
- 5.568195 #(0.000000 0.864197 1.206780 0.518250 1.052419 1.503755 0.172815 1.933752 0.474956 1.250670 1.077163 0.958586 1.434472 1.372066 0.301177 1.951810 1.409866 1.768524 1.770189 0.059023 1.199228 0.031133 1.951118 1.510914 1.124798 1.068124 0.894251 1.680496 0.359644 1.280881 0.851659 1.940411)
+ 5.567572 #(0.000000 0.861612 1.209352 0.519940 1.052688 1.500206 0.176574 1.932012 0.476025 1.248486 1.078099 0.961526 1.430505 1.363781 0.301762 1.949580 1.401541 1.767835 1.762773 0.053035 1.192812 0.032127 1.950646 1.510242 1.125351 1.064249 0.897680 1.674417 0.357268 1.272658 0.844033 1.936450)
)
-;;; 33 odd -------------------------------------------------------------------------------- ; sqrt 5.74456
+;;; 33 odd -------------------------------------------------------------------------------- ; 5.74456
#(33 6.6069865226746 #(0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 1 0 0 1 0 1 0)
6.6028137207031 #(0 0 0 1 1 0 1 1 0 0 1 0 1 1 0 1 0 1 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1)
6.5531010627747 #(0 1 0 0 1 1 1 0 0 1 0 1 0 1 1 0 0 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0)
@@ -1563,11 +1547,10 @@
6.5448527336121 #(0 0 1 0 0 1 0 0 0 1 0 1 0 1 0 1 1 0 1 1 1 1 0 1 1 0 0 0 1 1 1 1 1)
6.4944429397583 #(0 1 0 0 1 0 1 0 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 1 1 1 0 0 0 1 1 1 0)
- 5.758270 #(0.000000 0.113404 1.120017 1.701330 0.197542 0.687920 1.778466 0.838895 1.080380 1.571697 0.746577 0.404086 0.231382 1.453934 0.000732 0.041420 1.256944 0.560894 0.913938 0.742759 1.225738 1.056488 0.349734 1.000449 0.767247 1.067291 0.568479 0.890173 1.741165 1.253922 -0.065271 0.637751 0.190859)
- 5.609282 #(0.000000 1.601378 1.151754 1.255882 1.484759 0.842755 0.332424 1.777485 1.321353 1.210150 1.309696 0.892871 0.783538 0.995875 1.549766 0.195313 0.383356 0.790240 1.810006 1.076131 0.948957 1.611620 1.763571 1.526779 1.624700 0.598825 1.558941 -0.269107 0.725346 1.888923 0.574505 -0.052169 0.720866)
+ 5.606985 #(0.000000 1.601250 1.154201 1.251204 1.484471 0.841351 0.331138 1.775294 1.322346 1.205337 1.309192 0.894341 0.780080 0.993837 1.545031 0.197628 0.378099 0.791105 1.808947 1.068283 0.948274 1.605477 1.762770 1.528242 1.622190 0.602603 1.560229 -0.275479 0.725028 1.892782 0.568803 -0.062637 0.716748)
)
-;;; 34 odd -------------------------------------------------------------------------------- ; sqrt 5.8309518
+;;; 34 odd -------------------------------------------------------------------------------- ; 5.8309518
#(34 6.7313859392731 #(0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 1 1 0 1 1 1 0 0 0)
6.7289090156555 #(0 1 0 1 1 0 1 1 1 0 1 1 1 0 0 0 1 0 0 0 1 1 1 1 0 0 0 0 1 0 0 1 0 0)
6.7241077423096 #(0 1 1 0 1 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 1 0 0 1 1 1 1 0 0)
@@ -1576,13 +1559,10 @@
6.67742395401 #(0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 0 0 0 1 1 0 1 0 0 1 0)
6.5771403312683 #(0 0 1 1 0 1 0 1 0 1 1 1 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0)
- 5.886165 #(0.000000 1.745057 1.504386 -0.023968 0.205090 1.069486 -0.047234 -0.063358 1.013504 1.050064 1.684875 1.021832 1.166236 0.938115 1.431988 0.555525 1.405223 0.917281 1.215195 0.669468 0.053688 0.024930 1.643093 1.423509 0.223624 1.512856 0.695528 0.899790 1.529750 0.050412 1.716725 0.262916 0.290650 1.510059)
- 5.839478 #(0.000000 1.077567 0.246449 0.066969 0.318374 0.562472 0.300162 0.284136 0.411567 -0.020399 1.219454 0.270019 1.522953 0.513677 1.223260 1.013061 0.431117 0.338529 1.237793 0.497738 0.580028 -0.075760 1.487399 0.638100 1.210373 1.405820 0.223755 0.099999 0.180390 1.071946 1.507801 0.907555 1.312123 0.150270)
- 5.816833 #(0.000000 1.157345 0.256038 0.835407 -0.111435 1.474980 0.935665 0.608453 0.782889 0.016890 0.469694 0.073778 1.600833 0.868989 1.311955 0.083246 0.787037 0.915296 0.599183 1.680447 0.714292 0.577515 0.989293 0.528274 0.073313 0.898937 0.826996 0.257335 0.989154 1.326012 1.464130 -0.048931 0.064501 -0.019809)
- 5.753105 #(0.000000 1.130183 0.270829 -0.036827 0.299120 0.549714 0.319021 0.244523 0.299691 -0.035411 1.031030 0.340113 1.526602 0.453387 1.238275 0.948598 0.523409 0.348975 1.186579 0.387995 0.599827 -0.153812 1.376542 0.579295 1.245681 1.475569 0.226047 0.057774 0.145290 1.074479 1.411076 0.857537 1.331022 0.149083)
+ 5.745149 #(0.000000 1.128000 0.272515 -0.039342 0.299166 0.551340 0.311135 0.243296 0.298010 -0.034808 1.017937 0.346637 1.523918 0.449629 1.252707 0.940022 0.532163 0.349046 1.187598 0.382385 0.597063 -0.156613 1.373428 0.579016 1.245233 1.475704 0.214408 0.059071 0.148707 1.076050 1.407267 0.860377 1.325750 0.147798)
)
-;;; 35 odd -------------------------------------------------------------------------------- ; sqrt 5.9160
+;;; 35 odd -------------------------------------------------------------------------------- ; 5.9160
#(35 6.8717794418335 #(0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 1 1 1 1 1 0 0 0 0 1 0 0)
6.8709630966187 #(0 1 1 1 0 1 1 0 0 1 1 0 0 0 1 1 1 0 1 1 1 1 1 0 0 1 0 1 1 0 1 0 0 0 0)
6.8534955978394 #(0 1 0 1 1 0 0 0 1 1 1 0 1 0 0 1 0 0 1 1 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0)
@@ -1591,12 +1571,10 @@
6.7593507766724 #(0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0)
6.7392678260803 #(0 1 1 1 1 1 0 0 1 0 0 0 0 1 1 0 0 1 1 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 0)
- 6.019745 #(0.000000 1.737129 1.447005 0.192023 0.352390 1.109469 1.141770 0.792931 1.332317 1.747510 0.049345 0.538993 1.123913 1.631468 1.604207 0.569597 1.151844 0.643054 1.428529 0.806422 1.446482 0.982775 1.718698 1.359816 1.027004 0.088993 1.023736 -0.089824 0.151136 1.196612 0.522589 0.421171 0.192329 0.077722 1.755938)
- 5.948037 #(0.000000 1.888333 0.202222 1.459883 1.899590 0.077015 0.184626 0.842418 0.183084 0.790336 0.161822 1.118884 1.465652 0.054107 0.126784 0.159971 1.756298 1.301912 1.390376 1.485580 0.832130 1.913961 0.739868 1.697090 1.715452 0.577852 0.520050 -0.044341 1.434851 0.673531 1.907051 -0.198499 0.468800 1.485794 -0.010059)
- 5.843073 #(0.000000 0.447118 1.594809 1.669697 0.388294 0.939721 1.349246 1.471757 0.229879 1.220293 0.015517 0.235472 1.878461 1.153388 1.070915 1.614842 0.213338 1.378752 -0.042476 1.210965 0.391987 0.194525 1.730623 1.549383 -0.158441 -0.118789 1.470858 0.353092 1.125923 0.226604 1.676502 0.958027 0.568213 1.051033 0.956793)
+ 5.838235 #(0.000000 0.446999 1.593042 1.667453 0.393874 0.928772 1.354904 1.466772 0.226754 1.215249 0.009860 0.231727 1.867304 1.148536 1.079686 1.602019 0.201717 1.367553 -0.043267 1.213451 0.401906 0.197087 1.726905 1.537420 -0.145221 -0.105823 1.452971 0.350421 1.134485 0.211013 1.683797 0.967568 0.587830 1.050198 0.967015)
)
-;;; 36 odd -------------------------------------------------------------------------------- ; sqrt 6
+;;; 36 odd -------------------------------------------------------------------------------- ; 6
#(36 6.9997129440308 #(0 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0)
6.9918489456177 #(0 1 1 0 1 0 1 1 0 0 0 1 1 0 0 1 1 0 1 1 0 1 1 1 0 1 0 1 1 1 1 1 0 0 0 0)
6.9864625930786 #(0 0 1 0 0 1 1 0 1 0 1 0 0 1 1 0 1 1 1 0 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 0)
@@ -1606,12 +1584,10 @@
6.838840007782 #(0 1 0 1 0 0 0 0 1 1 1 0 0 1 1 1 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0)
6.8277182579041 #(0 1 1 0 1 1 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 0 0 0 1 1 0 1 0 1 0 1 0 0 0 0)
- 6.104999 #(0.000000 1.752837 1.478507 1.030358 0.542949 1.150752 1.406409 1.628306 1.434529 0.479758 0.002634 0.911576 1.383993 -0.102666 0.349338 1.583590 0.591440 0.477767 1.641508 0.699772 0.604507 1.198450 1.127226 1.313060 0.124747 1.197769 1.691888 1.408777 0.796362 0.816210 0.996479 0.378214 0.535476 1.799163 1.275608 -0.072063)
- 6.099892 #(0.000000 1.361377 0.202438 0.314999 0.779494 1.393777 1.913562 0.025829 1.339151 -0.043380 1.671171 1.100351 -0.055501 1.240865 0.568669 1.249382 1.470228 1.378432 1.688402 1.085009 0.463836 0.866522 1.785170 0.115926 1.223568 1.687751 1.149252 -0.013129 -0.098900 1.491222 1.091598 0.347575 0.045474 0.438897 0.881415 0.357110)
- 6.016673 #(0.000000 1.826322 1.547179 0.952547 0.477038 1.162933 1.537852 1.616467 1.556978 0.529041 -0.029882 0.943491 1.413483 -0.099514 0.357670 1.526831 0.596935 0.495743 1.671598 0.688048 0.673697 1.213868 1.237691 1.323253 0.069622 1.221165 1.683607 1.439006 0.853929 0.877627 1.034837 0.394991 0.585083 1.852663 1.314082 0.000632)
+ 6.007470 #(0.000000 1.835468 1.540652 0.947836 0.467178 1.145373 1.548126 1.614562 1.568365 0.539785 -0.028475 0.923911 1.420822 -0.085529 0.342219 1.504958 0.595333 0.498077 1.688989 0.701757 0.689088 1.219019 1.260901 1.338629 0.064609 1.232767 1.687085 1.456229 0.883768 0.908239 1.052628 0.406168 0.626002 1.862562 1.329723 0.032870)
)
-;;; 37 odd -------------------------------------------------------------------------------- ; sqrt 6.0827
+;;; 37 odd -------------------------------------------------------------------------------- ; 6.0827
#(37 7.1364183425903 #(0 0 1 1 1 1 0 0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 1 1 1 0 1 0 0 1 0 1 0 0 0 0 0)
7.1333456039429 #(0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 1 0 0 1 1 0 1 1 1 0 0 0 0 0 0)
7.1091394424438 #(0 1 1 1 0 0 0 1 1 1 0 0 0 1 0 1 0 1 1 0 1 0 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0)
@@ -1621,14 +1597,10 @@
7.0678915977478 #(0 1 1 0 1 0 0 1 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0)
7.0 #(0 1 0 0 0 1 1 1 0 0 0 1 0 1 0 1 1 1 1 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0)
- 6.273110 #(0.000000 1.414826 0.628930 0.813312 1.065302 1.100961 0.750318 0.560248 1.131956 0.792537 0.929293 1.615968 0.180268 0.893844 0.600559 1.653420 0.991917 1.641041 0.200192 1.603679 0.411579 -0.041896 0.607810 0.660238 1.020969 0.955364 0.021152 0.677987 1.049195 0.130855 0.151263 1.871387 1.407878 1.188185 0.378601 0.736505 0.234494)
- 6.272789 #(0.000000 1.133035 1.392613 0.042242 0.488169 1.067855 0.466900 1.009724 1.297296 -0.020264 0.213550 1.161597 0.220645 1.302691 0.561728 1.363189 1.429844 1.006096 1.302650 1.283239 0.704952 0.925881 0.857679 0.228013 0.085843 0.496374 1.252893 0.798642 1.265720 0.745828 0.734376 1.709904 1.738836 1.195157 0.487100 1.694337 -0.109364)
- 6.188054 #(0.000000 0.968224 0.070327 1.632986 0.105613 1.411809 0.684391 1.642900 1.605862 0.625871 0.869592 -0.009040 0.146251 0.619250 0.523405 -0.104175 1.545106 0.182479 0.670963 1.750521 0.809958 1.155189 0.083130 0.801919 0.424481 1.619941 1.204745 0.810053 1.159940 0.480371 0.377627 1.784864 0.052817 0.212958 0.341438 0.490002 0.733538)
- 6.081952 #(0.000000 1.182643 1.880890 0.917711 1.782193 0.533613 1.966519 0.276512 1.060916 1.008436 1.034444 1.409402 0.325297 1.689443 0.011897 0.482084 1.187189 -0.008290 0.942875 0.888629 1.615674 0.518707 0.209665 1.445572 1.607638 1.463244 0.455519 0.342060 1.492558 0.899737 0.360829 0.062694 0.491338 0.398972 0.240995 0.313114 0.128098)
- 6.036609 #(0.000000 1.186836 1.851373 0.939982 1.800124 0.501307 0.041874 0.315613 1.104973 1.083962 0.996374 1.386293 0.270417 1.655817 0.075548 0.506924 1.193913 -0.080100 0.947171 0.898506 1.535022 0.431700 0.247013 1.495917 1.577876 1.466904 0.487274 0.287103 1.387520 0.813607 0.220321 0.131906 0.542934 0.407763 0.191786 0.342249 -0.003612)
+ 6.024853 #(0.000000 1.197998 1.847287 0.935006 1.782937 0.496617 0.026869 0.302955 1.087642 1.074685 1.005491 1.377595 0.273425 1.653861 0.070205 0.494353 1.198438 -0.081973 0.936958 0.883593 1.529878 0.426603 0.218858 1.480597 1.569766 1.445696 0.463800 0.267438 1.385323 0.811147 0.214359 0.106300 0.522104 0.380804 0.177813 0.326019 -0.015506)
)
-;;; 38 odd -------------------------------------------------------------------------------- ; sqrt 6.1644
+;;; 38 odd -------------------------------------------------------------------------------- ; 6.1644
#(38 7.1993670463562 #(0 1 1 0 1 0 0 1 0 1 1 1 0 1 0 0 1 1 1 0 1 0 0 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0)
7.1947164535522 #(0 0 1 0 1 0 1 0 0 1 1 1 0 1 1 1 1 1 1 0 0 1 1 0 0 0 0 1 1 0 1 1 0 0 0 0 1 1)
7.1848387718201 #(0 1 0 1 0 1 1 1 0 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 0 1 0 1 1 0 1 1 0 0 0 0 0 0)
@@ -1636,15 +1608,10 @@
7.0878057479858 #(0 1 0 1 0 0 0 0 1 1 1 0 0 0 1 1 0 1 0 1 1 0 1 0 0 1 0 0 1 1 0 0 1 0 0 0 0 0)
7.027690410614 #(0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 1 1 0 0 0 0 1 1 1 0 1 1 0 1 0 0 1 0 0 0 0 0)
- 6.498837 #(0.000000 1.801604 0.138566 0.402561 1.435184 0.824436 1.269325 1.272347 -0.296668 0.873783 1.019759 -0.253123 0.411596 1.052152 0.142907 1.757835 0.523367 1.303252 0.183203 1.272231 0.367459 0.107509 1.443922 0.519098 0.955865 1.626394 -0.190019 1.189288 0.505993 0.657608 0.052303 1.900451 0.696608 0.586186 0.959641 0.544372 0.416611 0.524010)
- 6.452596 #(0.000000 0.115497 -0.060036 0.317068 1.634984 0.036767 -0.086413 -0.083780 1.247181 0.433227 0.414209 1.132978 1.207160 1.490715 0.172103 0.712944 1.197801 1.103764 0.120056 1.101450 1.893411 0.654044 0.808558 1.430306 0.689174 1.160631 1.173076 0.697867 1.637022 0.354978 1.732659 0.883715 0.917374 1.137078 0.886037 0.623492 1.838209 1.361251)
- 6.348056 #(0.000000 1.247565 0.994689 1.551099 0.488888 1.542772 0.366143 0.747116 1.870909 0.581972 1.763898 0.325382 1.522317 1.667152 -0.036519 0.152144 1.656849 0.839732 1.484584 1.607022 1.778165 0.443653 1.638816 0.121838 0.586642 0.676378 1.844632 1.364308 1.088233 0.948975 0.777379 0.438270 1.909125 1.267138 0.242669 -0.098927 0.720866 1.048624)
- 6.255785 #(0.000000 0.537963 1.433119 0.193669 1.073750 1.409720 0.253621 1.600698 1.169674 0.398706 0.390438 0.937066 1.748314 1.407198 0.884146 0.216875 1.711672 1.119496 1.267424 -0.006595 0.451145 0.747136 0.892551 1.797660 1.604377 1.140079 1.693859 1.175881 0.041849 0.781996 0.129068 1.202625 0.339892 0.677325 0.505202 0.452014 0.432224 0.550985)
- 6.165830 #(0.000000 0.462832 0.991001 1.193428 1.484281 1.315729 0.860143 1.140933 1.413999 1.045581 0.799459 1.426775 1.652962 0.947760 1.763775 -0.186887 0.770754 1.363209 0.874219 0.951100 0.756724 -0.009883 1.400020 0.245476 1.797703 0.276568 -0.083497 1.210259 1.139287 0.296699 1.548206 0.212402 1.093671 1.387543 1.107437 1.594481 0.412756 0.263829)
- 6.158150 #(0.000000 0.453799 0.980538 1.179986 1.498613 1.315340 0.864147 1.146440 1.412127 1.065010 0.800037 1.422050 1.637947 0.939605 1.753720 -0.201853 0.762548 1.338650 0.856767 0.928289 0.739961 -0.022537 1.385579 0.222773 1.801816 0.253801 -0.105287 1.187455 1.127374 0.285317 1.543973 0.201181 1.089315 1.363428 1.070273 1.590468 0.411998 0.235987)
+ 6.150178 #(0.000000 0.458381 0.980410 1.182584 1.502374 1.305302 0.863491 1.146667 1.407357 1.061564 0.795229 1.420865 1.626108 0.940678 1.765120 -0.200782 0.758841 1.330656 0.859416 0.934009 0.734086 -0.018706 1.390826 0.222287 1.806876 0.258169 -0.107351 1.180819 1.133567 0.286545 1.542814 0.215728 1.086918 1.359138 1.067734 1.591630 0.412893 0.246316)
)
-;;; 39 odd -------------------------------------------------------------------------------- ; sqrt 6.2449
+;;; 39 odd -------------------------------------------------------------------------------- ; 6.2449
#(39 7.3710842132568 #(0 0 1 1 0 0 1 1 0 1 0 0 1 1 1 0 0 0 1 1 1 0 1 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0)
7.3583292961121 #(0 1 0 0 1 0 1 1 0 0 0 1 1 1 1 0 0 1 0 0 1 1 0 1 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0)
7.3438787460327 #(0 1 0 1 0 1 1 1 0 0 0 1 1 1 1 0 1 0 0 0 1 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 0 0 0)
@@ -1655,89 +1622,77 @@
7.2700448036194 #(0 0 1 1 0 0 0 1 1 1 0 0 0 1 0 1 1 1 0 0 1 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 0 0 0)
7.2362656593323 #(0 1 1 0 0 1 1 0 0 1 0 0 1 0 1 1 1 0 0 0 0 1 0 1 1 0 1 1 1 0 0 0 1 0 0 0 0 0 0)
- 6.462067 #(0.000000 1.795459 1.784017 0.483619 0.568729 0.941472 1.832033 1.448092 1.077620 0.034685 0.883125 1.873724 1.497965 0.975006 1.176788 0.239320 0.676185 1.023431 1.786560 0.716448 0.526115 1.006061 0.473787 0.024751 0.022319 1.546096 1.828681 1.145327 0.004278 0.198717 0.660662 0.477926 0.443146 -0.193443 0.487446 0.769045 0.138291 1.289855 0.649880)
- 6.292279 #(0.000000 0.171168 1.466437 1.681104 0.385166 0.679657 0.626789 1.364206 1.186666 1.380171 1.066173 0.679053 1.167416 1.539866 0.716773 0.938982 0.857611 0.280502 1.175559 0.839655 1.463265 -0.040007 1.941183 0.612128 1.438603 0.370504 1.686779 1.245780 0.763477 0.153959 0.891563 0.295563 0.645686 1.638717 1.267480 1.224588 1.746069 0.920474 0.937215)
- 6.284352 #(0.000000 0.192277 1.488124 1.689573 0.362635 0.677187 0.611955 1.386945 1.206468 1.374376 1.067243 0.670049 1.196501 1.523604 0.719934 0.911569 0.866430 0.282077 1.165556 0.815835 1.462436 -0.046667 1.926390 0.596616 1.454430 0.367524 1.672847 1.253330 0.784895 0.144629 0.901025 0.289192 0.648034 1.627064 1.256537 1.216499 1.734743 0.914576 0.932227)
- 6.250059 #(0.000000 0.345278 1.454015 1.679545 0.331641 0.640273 0.604755 1.417521 1.231509 1.284099 1.046593 0.699830 1.279977 1.547604 0.782996 0.843588 0.921726 0.311852 1.186251 0.832146 1.446077 -0.113093 1.797197 0.566624 1.555826 0.323762 1.641591 1.293098 0.846396 0.081417 0.932961 0.298887 0.573103 1.614892 1.289373 1.197098 1.725013 0.976358 0.920251)
- 6.197650 #(0.000000 0.386971 1.432177 1.769856 0.361717 0.646585 0.591169 1.419497 1.234746 1.282184 1.034876 0.655115 1.319481 1.557778 0.802975 0.831538 0.924203 0.306047 1.185949 0.799612 1.481934 -0.172092 1.810245 0.582387 1.597569 0.287702 1.668042 1.313665 0.891156 0.033217 0.921511 0.336500 0.581852 1.685588 1.285660 1.208996 1.754405 1.036754 0.949919)
+ 6.187454 #(0.000000 0.388618 1.432653 1.784425 0.371935 0.650011 0.589744 1.419632 1.232381 1.275218 1.031193 0.648549 1.314783 1.550413 0.796967 0.829675 0.920444 0.286140 1.176611 0.777335 1.481467 -0.170605 1.810857 0.590069 1.604413 0.287254 1.659794 1.308709 0.893762 0.025955 0.915239 0.336227 0.586243 1.686232 1.285404 1.206990 1.759017 1.037935 0.925206)
)
-;;; 40 odd -------------------------------------------------------------------------------- ; sqrt 6.3245
+;;; 40 odd -------------------------------------------------------------------------------- ; 6.3245
#(40 7.6328768730164 #(0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 0 0 1 1 1 0 0 0 1 1)
7.5038495063782 #(0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 0 1 1 0 1 1 1 1 0 0 1 0 1 1 0 1 0 1 0 1 1 1)
- 6.566332 #(0.000000 1.470543 0.181367 -0.174348 1.253649 0.045015 1.458341 0.025983 1.650285 1.425566 1.345927 1.560550 0.947286 1.019090 1.238103 1.329600 1.716150 1.638998 0.294274 0.775921 0.004181 0.678946 1.664987 1.624679 0.621322 1.196080 0.254744 0.487358 0.248968 1.045168 -0.056900 0.286198 0.992952 0.885599 1.692674 1.234112 0.792550 0.251953 -0.025761 1.457484)
- 6.285502 #(0.000000 1.294350 1.060757 1.059518 0.378189 0.814434 0.122712 1.703746 1.074565 1.547554 0.394523 1.044867 0.393238 0.311159 1.444751 0.144055 0.741111 -1.878810 0.501746 -0.118985 1.460662 1.556565 0.445863 1.235896 1.329802 1.414012 0.407537 1.075662 1.427650 -0.532205 0.348237 1.780181 0.935228 0.560963 1.404082 1.197915 1.450127 1.297798 1.909317 1.579720)
+ 6.277925 #(0.000000 1.286847 1.056558 1.064552 0.386122 0.823982 0.120665 1.715364 1.070368 1.544864 0.375054 1.038193 0.380390 0.305991 1.429156 0.150341 0.742273 -1.907886 0.495478 -0.131302 1.454190 1.544371 0.424550 1.222035 1.334261 1.409069 0.400912 1.070887 1.396403 -0.550278 0.327917 1.771458 0.927243 0.552970 1.392666 1.183354 1.462584 1.291648 1.910305 1.576805)
)
-;;; 41 odd -------------------------------------------------------------------------------- ; sqrt 6.4031
+;;; 41 odd -------------------------------------------------------------------------------- ; 6.4031
#(41 7.86743174872036 #(0 1 0 0 1 1 1 1 1 1 1 1 0 1 0 1 0 0 1 1 1 0 1 0 0 1 1 0 1 0 1 1 0 0 1 1 1 1 1 0 0)
7.7093445316966 #(0 1 1 0 1 0 1 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 1 0 0 1 0 1 1 1 0 1)
- 6.363575 #(0.000000 0.595834 1.319757 1.412299 0.989212 0.404714 0.209678 -0.053155 1.040286 1.200895 0.711267 0.922635 -0.020704 0.319918 0.734700 0.163969 1.936443 0.828164 0.939239 0.326183 -0.011958 0.288925 0.623387 1.699541 1.939487 1.721551 0.242765 0.434988 0.883416 1.112214 0.524049 1.093341 0.746530 0.930094 -0.030955 0.987163 -0.052475 1.449159 0.352428 1.544729 1.061566)
- 6.334688 #(0.000000 0.584065 1.287825 1.427449 0.969153 0.402856 0.193350 -0.084344 1.013136 1.215860 0.693199 0.900848 -0.019850 0.283468 0.734410 0.179840 1.916958 0.826888 0.912005 0.269542 -0.050832 0.295979 0.591926 1.706413 1.912233 1.698630 0.195307 0.442822 0.838108 1.114771 0.510102 1.044874 0.745364 0.903406 -0.075406 0.946323 -0.076634 1.436089 0.338512 1.539735 1.017122)
+ 6.327577 #(0.000000 0.582814 1.286033 1.434762 0.968648 0.414373 0.202678 -0.084375 1.012441 1.216240 0.698275 0.906119 0.006115 0.289651 0.751619 0.181944 1.916605 0.830850 0.905938 0.268842 -0.060925 0.318843 0.592034 1.698481 1.912304 1.683298 0.193210 0.459818 0.828474 1.122554 0.525807 1.056723 0.751455 0.901980 -0.077116 0.957355 -0.093347 1.453165 0.349371 1.538528 1.034674)
)
-;;; 42 odd -------------------------------------------------------------------------------- ; sqrt 6.4807
+;;; 42 odd -------------------------------------------------------------------------------- ; 6.4807
#(42 7.9323644638062 #(0 0 1 0 1 1 0 1 1 0 1 0 0 0 1 0 0 1 1 0 1 1 1 0 0 0 1 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0)
7.8349797520917 #(0 0 1 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 1 1 0 1 1 1 0 1 0 0 1 1 1 1 1 0 0 1 1 1 0 1 1 1)
7.77445936203 #(0 1 1 0 0 0 0 1 1 1 0 1 1 0 0 1 0 0 1 1 1 1 1 0 1 0 1 0 0 0 1 1 0 1 0 1 1 0 1 1 1 1)
- 6.684033 #(0.000000 0.525437 0.011411 0.817575 -0.043990 1.528164 0.640334 0.636232 0.488862 1.015113 0.396715 1.154024 0.328981 0.264696 0.374376 0.443557 1.624162 1.809252 -0.004918 0.392220 0.940610 0.796778 1.155857 0.620475 1.249282 1.490550 1.601375 1.427170 0.338569 1.351786 1.140470 0.155804 0.949175 1.725245 0.023294 1.133357 1.386899 0.420227 0.161540 1.053674 0.973652 0.268093)
- 6.417925 #(0.000000 0.607176 1.439294 0.659384 0.207390 1.055262 0.250204 1.499133 1.026537 1.325552 -0.136399 0.669283 -0.136787 1.240581 1.351933 1.836478 1.604717 1.565088 0.403774 1.145176 1.725346 0.171560 -0.080847 -0.341759 1.258306 0.807768 0.145730 0.193097 0.960761 0.114058 1.540603 1.931802 1.083086 1.401755 1.525979 -0.329434 1.605476 1.071389 0.378131 0.507019 0.492016 1.077371)
+ 6.408479 #(0.000000 0.615414 1.470843 0.696787 0.198900 1.065083 0.258615 1.498581 1.009578 1.330852 -0.125534 0.667854 -0.151832 1.235447 1.351733 1.833745 1.621535 1.576927 0.386650 1.123212 1.738064 0.185423 -0.092954 -0.362850 1.267803 0.809007 0.146693 0.174438 0.940048 0.098849 1.557978 1.898566 1.061904 1.399143 1.502843 -0.309744 1.594046 1.048117 0.348277 0.500199 0.501915 1.050638)
)
-;;; 43 odd -------------------------------------------------------------------------------- ; sqrt 6.5574
+;;; 43 odd -------------------------------------------------------------------------------- ; 6.5574
#(43 7.8550543785095 #(0 1 0 0 0 1 0 0 1 0 0 1 1 0 1 1 1 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1)
7.8274940102143 #(0 0 1 0 0 1 0 1 0 1 0 1 1 1 0 1 0 0 0 0 1 1 0 1 1 0 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0)
7.7573688953539 #(0 1 0 0 0 1 0 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 1 1 0 1)
- 6.497009 #(0.000000 0.182276 0.880291 0.619591 0.488129 0.302549 0.511746 0.111806 0.105443 1.309940 1.268167 1.000552 1.673451 0.658821 0.914049 0.174666 1.742802 1.125362 0.858501 0.387751 0.533854 1.398858 1.735277 -0.356098 0.687505 1.683501 1.672735 1.335129 -0.024200 0.448329 1.243463 0.577767 1.712837 0.974430 0.149697 1.109896 0.198986 0.479972 1.050646 1.042931 1.377285 1.115772 1.805803)
+ 6.480896 #(0.000000 0.162445 0.869999 0.643054 0.499615 0.316081 0.502954 0.136590 0.117083 1.312132 1.258206 1.002617 1.668339 0.653729 0.901112 0.185217 1.792525 1.096541 0.881150 0.351883 0.533560 1.402531 1.721250 -0.341462 0.698820 1.678458 1.686345 1.303828 -0.030019 0.457569 1.242075 0.589258 1.726081 0.987456 0.169302 1.113924 0.233149 0.477401 1.064623 1.025028 1.388482 1.105104 1.814053)
)
-;;; 44 odd -------------------------------------------------------------------------------- ; sqrt 6.6332
+;;; 44 odd -------------------------------------------------------------------------------- ; 6.6332
#(44 8.20137867697624 #(0 0 1 1 0 1 0 0 1 0 1 1 0 0 1 0 1 0 0 1 0 1 0 0 0 1 1 1 0 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0)
7.9338580613871 #(0 1 0 0 0 1 0 1 1 1 1 0 1 1 0 0 0 0 1 0 0 1 1 0 0 0 1 1 1 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0)
- 6.621712 #(0.000000 0.345954 1.319948 1.445897 1.306648 0.577089 0.383039 -0.241792 1.042735 0.424888 0.649159 1.660142 1.831032 1.028088 1.468076 1.654436 0.629310 0.176584 1.539419 0.905154 1.503580 -0.459716 0.956701 0.660783 0.465450 0.354822 0.747305 0.799101 1.305662 0.704757 1.107418 1.248476 0.685526 1.448349 0.398980 1.105529 0.561604 1.702929 0.310228 0.020231 0.937291 1.212482 1.566191 1.345743)
+ 6.604847 #(0.000000 0.351044 1.306542 1.465763 1.320249 0.565440 0.399940 -0.237398 1.055407 0.418613 0.685395 1.680568 1.845447 1.017355 1.471092 1.618392 0.598714 0.202675 1.546748 0.895775 1.499434 -0.449664 0.958870 0.671637 0.465436 0.361895 0.743954 0.800411 1.320233 0.704441 1.101784 1.234656 0.652603 1.451040 0.413040 1.111137 0.556088 1.736681 0.344377 0.023949 0.937837 1.223467 1.558214 1.345712)
)
-;;; 45 odd -------------------------------------------------------------------------------- ; sqrt 6.7082
+;;; 45 odd -------------------------------------------------------------------------------- ; 6.7082
#(45 8.1525803340105 #(0 1 1 0 0 0 1 0 1 0 1 1 0 0 1 0 0 1 1 1 1 0 0 0 1 1 0 1 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 1)
8.1351366043091 #(0 0 1 0 1 0 1 1 0 0 1 0 1 1 1 0 0 0 1 1 0 1 1 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 1 0 1 0 0 0 0)
- 7.014550 #(0.000000 1.549820 1.727819 0.947378 0.202649 0.128108 1.845552 0.989769 1.385432 0.774466 1.562304 1.791925 0.994094 0.351909 1.681951 0.720260 1.571855 1.622106 1.386850 -0.198958 0.204647 0.483002 0.056720 0.712129 0.333500 1.341493 0.578522 0.993324 0.454692 0.578053 0.974240 0.388626 1.746814 0.438852 0.578490 0.087252 0.189583 1.329407 -0.180755 1.569434 0.723657 0.922447 1.443666 0.001943 0.207990)
- 6.667587 #(0.000000 0.998424 0.525574 1.197896 0.368509 0.643070 0.602468 0.082327 1.166476 1.202114 1.684358 1.233037 1.274729 0.387928 0.620226 1.475172 0.783213 0.312748 1.264167 1.600256 1.589760 1.946350 0.813435 1.387789 0.553982 0.228024 1.104641 1.695619 1.176810 1.051063 0.445070 1.695001 1.761899 1.625404 1.782837 0.651641 1.554176 1.360317 1.052699 0.134380 0.726186 1.139524 0.871101 1.188090 0.974140)
+ 6.631015 #(0.000000 1.007271 0.477966 1.144428 0.405377 0.709562 0.591098 0.023922 1.174211 1.114679 1.631206 1.257380 1.314198 0.342822 0.579809 1.458996 0.840637 0.297374 1.352000 1.645616 1.557736 1.966797 0.747895 1.349386 0.523533 0.276675 1.146356 1.736290 1.157329 1.019943 0.469399 1.677619 1.797739 1.624789 1.799637 0.670741 1.546255 1.428852 1.094569 0.113612 0.742588 1.142278 0.965770 1.246971 0.979825)
)
-;;; 46 odd -------------------------------------------------------------------------------- ; sqrt 6.7823
+;;; 46 odd -------------------------------------------------------------------------------- ; 6.7823
#(46 8.2970391011104 #(0 1 1 1 1 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 1 0 0 0 1 1 0 1 0)
8.1455316543579 #(0 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 0 1 1 0 0 1 0 0 0 1 1 1 1 0 0 0 1 1 1 0 1 1 0 1 0 0 0 0 1)
- 7.105251 #(0.000000 1.353994 0.413905 0.999377 1.057068 0.709675 0.615860 0.113982 1.576267 0.179678 1.426822 0.981541 -0.162204 0.434777 1.205347 1.524673 1.000438 0.303430 0.718528 1.199417 0.734265 0.168285 1.707809 1.461986 0.687343 1.450258 0.999465 -0.087951 1.790205 0.193916 1.555009 1.838407 0.970275 1.651515 1.399755 1.688215 1.322336 0.182176 0.028034 1.214377 1.744514 0.477277 0.913755 0.573956 1.002048 1.301328)
- 6.726226 #(0.000000 0.604882 0.765923 0.939301 0.795079 1.265153 0.066352 -0.371082 0.456849 1.673735 0.583175 0.598155 0.911807 1.248689 0.098839 0.451373 0.802912 -0.002070 0.857014 1.030605 1.248717 0.512645 1.206624 0.511331 0.734853 1.445745 0.591262 1.567997 0.650810 1.523308 1.181377 0.837318 0.308186 0.028856 0.880053 0.333676 -0.017637 1.574321 0.001725 0.325661 0.335005 -0.226001 -0.092867 1.463860 0.950045 0.814775)
+ 6.716722 #(0.000000 0.589157 0.764149 0.948916 0.779538 1.268976 0.079906 -0.380388 0.448649 1.688367 0.584830 0.606310 0.913828 1.245805 0.098838 0.459100 0.785114 0.012839 0.855902 1.034909 1.254775 0.506944 1.208460 0.513427 0.740531 1.441441 0.587365 1.582678 0.642329 1.527431 1.201228 0.845885 0.317234 0.031593 0.892897 0.339503 -0.008048 1.585731 0.008559 0.333144 0.349434 -0.214088 -0.070758 1.486266 0.987125 0.864350)
)
-;;; 47 odd -------------------------------------------------------------------------------- ; sqrt 6.8556
+;;; 47 odd -------------------------------------------------------------------------------- ; 6.8556
#(47 8.4595276184949 #(0 0 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 1 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1)
8.336971282959 #(0 0 1 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 1 0 1 1 1 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 1 0)
- 7.210873 #(0.000000 1.566854 1.559342 1.445736 1.743531 1.716836 1.127417 0.668001 1.528054 0.174443 0.272253 -0.014976 1.790296 1.376529 0.342231 1.723531 1.448614 0.625536 0.532794 1.251120 1.472450 0.700758 1.236925 0.393791 1.737381 1.495383 1.315233 0.281691 0.613711 0.576631 0.821529 1.851651 1.045857 0.247443 0.699845 0.467117 -0.093990 0.590323 1.217594 -0.076570 1.358863 1.779697 -0.068622 0.698093 0.197578 1.317204 0.013950)
- 6.988007 #(0.000000 0.790799 0.529982 1.053958 0.373490 0.747769 -0.059692 1.207232 1.564180 1.223659 -0.136839 1.894469 -0.030786 0.034957 0.173044 0.165625 -0.012732 1.225338 1.299736 0.268333 0.021026 1.645098 1.827903 0.433201 1.288916 0.033342 0.463394 1.590752 1.268226 0.923046 0.435115 0.946021 0.691462 1.664376 0.354058 0.109933 0.758190 0.934615 1.948248 1.941282 1.478547 0.526254 1.518056 0.790893 1.244470 1.493378 0.432692)
+ 6.973857 #(0.000000 0.758162 0.533060 1.050675 0.371789 0.753161 -0.055841 1.202077 1.548218 1.240172 -0.135349 1.883668 -0.053064 0.007245 0.142039 0.125631 -0.015507 1.225195 1.283385 0.255181 0.022599 1.616239 1.777752 0.385024 1.288256 -0.003670 0.428918 1.573305 1.240846 0.883657 0.409915 0.917250 0.665498 1.654374 0.301385 0.074114 0.710230 0.883469 1.906835 1.896837 1.457717 0.479830 1.501599 0.705470 1.211146 1.424325 0.375246)
)
;;; 48 odd -------------------------------------------------------------------------------- ; 6.9282
#(48 8.35563071219336 #(0 1 0 0 1 0 1 1 1 1 1 0 0 0 1 0 1 0 1 1 1 0 1 1 1 1 1 1 0 1 0 0 1 0 0 1 1 0 0 0 1 1 0 1 0 0 0 1)
- 7.246462 #(0.000000 1.356698 -0.062399 0.419335 0.018912 0.019469 1.086834 1.375876 0.814929 1.060293 1.712420 0.396926 0.730832 0.467653 0.801802 1.172900 0.374224 1.608410 1.858565 -0.107371 0.553667 1.618892 -0.030210 1.701272 0.760689 0.150761 -0.015109 0.877602 1.005512 1.608485 1.126036 1.486738 0.755311 1.289597 1.205930 0.058019 1.997882 1.013411 1.721191 1.269691 1.807633 1.364924 1.101733 0.778774 1.718707 1.730713 -0.031059 1.492536)
- 6.992068 #(0.000000 1.017056 1.018822 0.065576 1.453551 0.025459 1.788337 1.628087 0.365288 0.909579 0.600349 1.541063 0.587615 1.472613 1.031509 1.537990 0.293651 0.746549 0.408509 1.311489 0.065061 1.063635 1.431319 1.547836 0.292989 1.506167 1.143681 1.687727 1.399301 1.679544 0.222977 0.556109 1.119115 0.507747 0.497625 0.308510 0.262017 0.398343 1.624709 1.513594 0.775585 0.332782 0.117257 1.303093 0.209496 0.496805 0.201218 1.906745)
+ 6.939783 #(0.000000 0.972239 1.013903 0.049685 1.453960 0.006991 1.721531 1.664266 0.335814 1.016251 0.568530 1.497653 0.634227 1.462162 1.061859 1.530053 0.253384 0.747785 0.440535 1.369360 0.066789 1.053402 1.438699 1.617507 0.268188 1.488765 1.146321 1.721703 1.406331 1.662527 0.195485 0.527187 1.107263 0.569224 0.558388 0.258611 0.364078 0.461783 1.657414 1.406090 0.846516 0.350642 0.228831 1.300935 0.200653 0.533849 0.230298 1.949867)
)
;;; 49 odd -------------------------------------------------------------------------------- ; 7
#(49 8.57458718352971 #(0 0 0 1 1 1 1 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 1 1 0 0 1 1 1 0 1 1 1 0 0 1 0 0 1 0 0 0 1 0)
- 7.434920 #(0.000000 1.125898 0.150074 1.046158 0.962446 1.306626 0.103665 0.653682 1.788801 0.037785 1.543260 0.755454 1.626361 0.904741 -0.121968 1.522476 -0.211749 0.009130 0.232027 0.865627 0.510112 1.776874 1.854081 -0.068569 1.679078 -0.260736 0.476878 1.267880 0.914970 1.402339 1.212345 0.456306 1.109712 1.090381 0.135938 1.900427 1.411989 0.728803 0.602931 0.285995 1.442410 0.612579 0.888404 1.459891 0.396330 1.364427 1.371237 1.163607 1.483597)
- 7.032919 #(0.000000 -0.153111 0.046108 1.152465 1.356595 0.175748 0.024905 -0.099710 1.357663 1.707950 0.869055 0.511936 0.793043 1.469495 0.196415 0.828767 1.694768 1.336269 1.698432 1.426156 1.026857 0.605658 1.154113 0.980541 1.312199 -0.130649 0.080328 1.173303 1.490017 1.742261 0.945394 0.023678 -0.000686 1.084889 0.841091 1.724414 1.137226 1.437386 0.748019 1.868908 0.406486 1.453971 0.670327 0.344785 1.282565 0.094239 0.283644 0.072175 0.168693)
+ 6.997932 #(0.000000 -0.164932 0.062543 1.158715 1.337678 0.224375 0.048734 -0.092163 1.331151 1.726668 0.869593 0.492681 0.773739 1.547901 0.177653 0.783886 1.699317 1.314118 1.727115 1.406752 1.010538 0.644469 1.163474 0.987306 1.315592 -0.176138 0.077515 1.241145 1.483011 1.781204 0.940989 0.041761 -0.011584 1.150594 0.905660 1.772957 1.156521 1.425270 0.817709 1.841119 0.475148 1.453704 0.759985 0.412258 1.319758 0.058409 0.262995 0.090380 0.205050)
)
;;; 50 odd -------------------------------------------------------------------------------- ; 7.07
@@ -1745,23 +1700,21 @@
8.7194833755493 #(0 0 0 0 0 1 1 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 1 1 0 0 0 1 1)
8.711 #(0 0 0 0 1 1 1 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 1 1 0 0 0 1 1)
- 6.997835 #(0.000000 1.351320 1.075777 0.249961 1.395274 1.836941 0.018130 1.069958 0.146917 0.676556 0.912349 1.013128 1.664672 1.663765 1.478876 1.707742 0.087043 0.826154 1.765461 1.028653 0.052247 1.511095 0.701067 1.218273 0.626373 1.413858 1.513453 1.904487 0.145866 1.577833 1.689654 1.361256 1.607913 1.876577 1.116656 1.046767 0.157758 1.893211 0.075781 0.999782 1.361862 0.864304 0.342554 0.527574 1.248862 0.712302 0.651731 0.237097 1.097418 0.025278)
+ 6.955341 #(0.000000 1.361678 1.058811 0.255280 1.370961 1.849509 -0.002708 1.051990 0.138785 0.680633 0.885054 1.004997 1.663130 1.665701 1.471149 1.691478 0.092552 0.824520 1.755358 1.033319 0.055803 1.509243 0.690460 1.232103 0.639211 1.442515 1.557836 1.909825 0.175467 1.577584 1.679153 1.359609 1.558171 1.882842 1.134585 1.054710 0.137527 1.900435 0.058225 0.972013 1.379097 0.844996 0.356897 0.497540 1.235873 0.734577 0.652916 0.243110 1.084307 -0.045442)
)
;;; 51 odd -------------------------------------------------------------------------------- ; 7.141
#(51 8.7549686431885 #(0 1 0 1 1 1 0 0 0 0 0 1 1 0 1 0 0 0 1 1 1 1 1 1 0 1 0 0 1 0 1 1 1 0 1 1 0 1 1 0 0 0 1 1 0 0 1 1 1 0 0)
8.5829010009766 #(0 1 0 0 1 1 1 1 0 0 1 1 0 0 0 1 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 0 1 1 1 0 1 0 0 1 0 0 1 0)
- 7.330966 #(0.000000 0.906809 1.156201 0.546297 1.822529 0.697978 0.163962 0.223049 0.184379 0.112419 1.121858 0.008650 0.999927 1.325427 0.786555 1.174734 0.713378 0.747154 1.024084 0.737511 0.717328 1.666814 1.127886 0.524802 0.986171 -0.104721 0.648012 1.331615 1.772462 0.341264 0.556797 -0.092771 1.386022 0.398246 1.026518 0.787103 0.161977 0.203898 0.173123 1.184983 1.315664 1.695088 -0.000689 0.022008 0.531578 0.275884 0.177301 1.526375 1.010123 0.353055 1.091549)
- 7.228140 #(0.000000 0.906860 1.136847 0.423445 1.735895 0.653752 0.164332 0.236808 0.132330 0.002342 1.147187 -0.017213 1.034843 1.410946 0.854852 1.206303 0.644736 0.769666 1.102382 0.744909 0.631335 1.675329 1.135716 0.607790 0.942213 -0.083909 0.612805 1.350899 1.722357 0.432053 0.503953 -0.164340 1.361416 0.364761 0.970007 0.752256 0.070635 0.275363 0.230400 1.216015 1.208183 1.595714 0.012575 0.046242 0.434200 0.278653 0.151270 1.529155 0.839268 0.320682 0.959022)
+ 7.172306 #(0.000000 0.909177 1.082558 0.423297 1.710029 0.622182 0.123248 0.238145 0.111405 -0.005868 1.183451 -0.023327 1.056498 1.429816 0.869277 1.243066 0.634439 0.787523 1.185573 0.736384 0.560380 1.640838 1.176200 0.630609 0.974302 -0.060275 0.669023 1.370066 1.744386 0.456180 0.564820 -0.189241 1.325300 0.366433 0.976825 0.687291 0.021802 0.278684 0.272812 1.237703 1.169976 1.554073 0.084016 0.010043 0.411302 0.322351 0.132313 1.524958 0.781110 0.369514 0.817515)
)
;;; 52 odd -------------------------------------------------------------------------------- ; 7.211
#(52 9.0527429580688 #(0 1 1 1 1 0 0 0 1 1 1 0 1 1 0 1 1 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 0 1 0 1 0 1 1 1 0 1 0 0 0 0 0 1 0 0 0 0)
8.8599758148193 #(0 0 0 1 0 1 1 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 1 1 0 0 0 1 0 1 0 1 1 0 1 0 0 0 1)
- 7.550405 #(0.000000 -0.008915 0.868987 0.755898 0.477359 -0.071571 -0.058863 0.705692 0.796110 1.973380 1.661757 0.523332 0.407855 -0.155132 1.172669 0.200037 1.005568 0.163102 0.402079 1.592765 1.872720 1.346906 0.879789 0.502443 1.284969 0.987743 0.127003 0.586779 1.042536 0.307329 0.587745 1.032740 0.109368 -0.005477 0.233077 1.138796 0.908987 1.610059 0.833360 -0.131478 0.778323 0.785170 0.508565 1.076709 1.645883 1.478054 1.510807 1.704818 0.372644 1.915750 1.923068 0.255295)
- 7.187558 #(0.000000 0.254605 0.766449 0.614721 0.404639 -0.050284 -0.110583 0.677730 0.581828 0.045697 1.687218 0.521095 0.256756 -0.222686 1.222008 0.059688 1.021073 0.179202 0.795802 1.716279 0.132740 1.463155 0.938348 0.327572 1.192614 0.944377 0.026418 0.569842 1.128655 0.316635 0.684002 0.954922 0.106312 0.003304 0.107718 1.037679 1.089563 1.603763 0.761052 -0.368440 1.070298 0.702397 0.621063 1.025075 1.539794 1.413838 1.554001 1.511942 0.341054 1.778825 0.216581 0.422404)
+ 7.087457 #(0.000000 0.217695 0.815228 0.652105 0.472210 0.034513 -0.067645 0.661251 0.580253 0.051364 1.785056 0.529546 0.204393 -0.248113 1.238820 0.097387 0.952805 0.167446 0.758512 1.718336 0.161942 1.593107 0.882652 0.246677 1.208436 0.995914 0.028887 0.487573 1.153005 0.362942 0.720923 0.863427 0.090963 0.015179 0.082123 0.995009 1.057407 1.708206 0.745582 -0.334290 1.156564 0.740724 0.619550 1.021238 1.501400 1.347681 1.370305 1.480905 0.364029 1.829054 0.147181 0.425026)
)
;;; 53 odd -------------------------------------------------------------------------------- ; 7.280
@@ -1770,31 +1723,28 @@
9.127 #(0 1 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 1 1 1 1 1 1 0 1 1 0 1 0 1 1 0 0 0 1 1 1 1 0 1 0 0 1 1 0 1 1 0)
9.037 #(0 1 0 1 1 1 0 0 1 1 1 0 1 0 0 0 1 0 0 0 0 0 1 1 1 1 1 1 0 1 1 0 1 0 1 1 1 1 0 1 1 1 1 0 1 1 0 0 1 0 1 1 0)
- 7.524539 #(0.000000 1.209823 0.076867 0.528242 -0.085715 -0.060396 0.052567 0.435619 1.502209 0.877492 -0.114423 1.156441 1.643292 1.081366 0.105402 0.588946 0.691567 1.044406 1.655487 1.237295 1.005371 -0.084531 0.397462 0.208512 0.856118 0.257771 0.575418 0.520375 1.914246 -0.313358 0.768242 1.323422 0.047193 1.316450 1.382544 0.391313 0.555523 0.163532 1.794019 1.368184 0.030096 -0.039642 1.259364 0.546079 1.652950 -0.249679 1.739333 -0.125567 0.997649 1.636908 0.045866 0.577626 0.170868)
- 7.353621 #(0.000000 1.320111 0.086971 0.443309 -0.129837 -0.142438 -0.065445 0.341967 1.528439 0.773213 -0.100480 1.154379 1.631689 1.070347 0.038534 0.637491 0.549387 1.059882 1.587995 1.226733 1.139512 -0.082068 0.317985 0.156744 0.788787 0.236936 0.590283 0.629698 1.893035 -0.215740 0.743674 1.268473 0.081797 1.438490 1.263910 0.356050 0.518005 0.124161 1.977814 1.337921 0.036942 0.002662 1.306504 0.539773 1.559460 -0.091212 1.796141 -0.077459 0.945713 1.619081 -0.036737 0.587665 0.192110)
+ 7.328398 #(0.000000 1.323316 0.090636 0.416020 -0.104790 -0.150655 -0.085466 0.322576 1.519998 0.782048 -0.097470 1.144182 1.642482 1.059700 0.046666 0.636822 0.566939 1.068435 1.582787 1.237990 1.139438 -0.080410 0.302519 0.170536 0.796163 0.258878 0.597088 0.650344 1.891267 -0.185276 0.783330 1.319079 0.101048 1.441548 1.279127 0.378940 0.497233 0.128115 -0.023252 1.362656 0.035940 0.000318 1.303743 0.556737 1.568402 -0.042713 1.832579 -0.064391 0.962372 1.637583 -0.028880 0.624258 0.208143)
)
;;; 54 odd -------------------------------------------------------------------------------- ; 7.348
#(54 9.3444428264144 #(0 1 0 0 1 0 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 1 1 1 1 0 0 0 1 1 1 0 1 1 1 1 1 0 1 0 1 1 1 0 1)
9.025 #(0 1 1 0 1 1 1 0 1 1 1 0 1 0 0 0 0 0 1 0 1 0 1 1 0 1 0 0 1 1 1 0 1 1 1 1 1 0 0 1 1 1 1 1 0 1 0 1 1 0 1 1 0 0)
- 7.909090 #(0.000000 0.575533 1.650151 0.442556 0.029264 0.242895 0.117160 -0.111650 1.927840 1.609010 0.829413 1.641295 1.878284 1.641225 1.374209 0.651875 0.060303 1.987995 0.046630 1.746432 0.065020 0.428144 1.371651 0.374446 1.283114 0.053469 1.525505 0.164243 0.140917 0.591320 1.313132 0.228674 0.710780 0.492877 1.177965 1.365714 1.974894 1.575443 1.278166 1.422311 0.656210 0.444247 1.188187 0.234190 1.759073 1.576591 0.214001 0.367049 1.366017 0.498172 0.155327 1.301384 1.645971 0.576034)
- 7.420296 #(0.000000 0.360120 1.488256 0.104770 1.578174 0.035177 1.232901 1.406306 0.715062 1.021018 0.232018 1.051922 0.506746 -0.027610 0.186458 -0.091776 1.265755 -0.001409 0.260363 0.473194 1.777485 0.038459 0.029447 1.568217 1.133398 1.443054 0.316281 0.921703 1.862097 1.655783 0.583803 1.401542 0.495907 0.741077 1.883313 0.902444 0.614047 1.144288 0.725122 0.011195 1.350399 0.874950 0.900546 1.929212 1.420584 0.594793 0.951590 1.384350 1.333284 1.827460 -0.013549 0.177705 0.653913 0.510404)
+ 7.382767 #(0.000000 0.377009 1.450208 0.143766 1.588804 -0.013305 1.294803 1.343549 0.729906 1.019930 0.219933 1.115842 0.478294 -0.039761 0.190163 -0.073775 1.266731 -0.012485 0.217107 0.429770 1.775908 0.044805 0.088840 1.557938 1.200867 1.469875 0.337233 0.897755 1.840529 1.636699 0.577936 1.438752 0.462454 0.737312 1.874809 0.840581 0.670222 1.178638 0.700692 0.023071 1.371004 0.851830 0.910486 1.914889 1.402103 0.563313 0.948170 1.439682 1.327042 1.830120 -0.017755 0.219583 0.691772 0.484436)
)
;;; 55 odd -------------------------------------------------------------------------------- ; 7.416
#(55 9.3425494397445 #(0 1 0 0 1 1 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 1 0 1 0 1 1 0 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0 1 0 1 0 1 1 0 0 1 1 0)
9.2039985656738 #(0 0 1 1 1 0 1 0 0 1 1 1 0 1 0 0 1 1 0 1 1 1 0 1 1 1 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 1 1 1)
- 7.967501 #(0.000000 0.114824 0.754288 1.568503 -0.000073 1.845111 1.401789 0.385564 1.306605 1.187419 0.409546 0.220689 1.197884 0.775952 1.483899 1.169252 0.288456 0.795382 1.958528 0.303768 1.126547 1.730406 1.573922 1.385950 0.233854 0.712846 0.724411 0.479079 0.401210 -0.031541 0.746591 -0.037899 0.684571 0.243932 1.210741 1.203812 0.743919 1.623134 1.380966 1.398503 0.030757 0.075035 1.453219 1.009474 1.271799 0.511996 1.141909 1.582994 1.116151 1.177404 0.919157 1.729440 0.212386 1.989862 1.150567)
- 7.563351 #(0.000000 0.368235 0.145833 1.479221 0.591396 1.096055 1.318438 0.030986 1.545542 0.184413 1.672234 0.586656 0.204269 0.070591 0.032594 0.555992 1.613675 0.991720 1.303079 1.422231 0.050615 -0.019693 0.132367 0.169762 1.644475 0.193922 0.362292 1.490872 1.642354 0.593448 0.779425 0.134013 0.112230 0.320021 1.209351 1.065636 1.556050 0.360630 -0.238041 1.101032 1.044596 -0.149576 1.392065 1.334107 0.600167 1.278608 0.218796 0.675588 0.263270 0.607447 0.000915 1.493940 0.376231 0.347368 1.793238)
+ 7.446395 #(0.000000 0.358443 0.006268 1.438938 0.660737 1.174573 1.356688 -0.028605 1.551766 0.138031 1.640245 0.508233 0.111719 0.291046 -0.002915 0.439027 1.749820 0.957490 1.305061 1.381755 0.118297 -0.048238 0.119143 0.316320 1.640043 0.190921 0.268741 1.462638 1.573850 0.647751 0.686849 0.032330 0.131845 0.362604 1.137926 1.074360 1.573764 0.422084 -0.431589 1.090490 0.961492 -0.117113 1.299195 1.317555 0.595537 1.310228 0.141377 0.676701 0.194125 0.601174 0.013221 1.558469 0.388012 0.257186 1.803287)
)
;;; 56 odd -------------------------------------------------------------------------------- ; 7.483
#(56 9.5274312814935 #(0 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 1 1 0 1 1 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 1 0)
9.3816785812378 #(0 0 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 1 1 0 1 0 1 0 0 0 0 0 0 1 0 1 1 1 0)
- 7.587889 #(0.000000 0.281180 1.034249 1.333110 0.685524 1.317936 1.827911 1.706399 0.672890 0.921372 0.349019 0.317417 0.811599 0.965275 0.625890 1.069756 0.842012 0.838561 1.471433 1.518877 0.232811 1.923904 1.185800 1.293424 1.787184 0.081829 0.503072 1.749298 1.537049 -0.005988 1.387264 1.791298 0.423674 1.737901 1.068102 1.334257 1.475709 1.224429 1.068228 0.364398 0.129226 0.239920 1.112972 0.227813 1.296393 1.514812 -0.176602 1.258915 0.353189 1.208121 0.926194 1.683964 0.739380 1.645061 1.542441 1.125220)
+ 7.438757 #(0.000000 0.399584 1.080682 1.282815 0.754797 1.304787 1.824143 1.790693 0.691286 0.987316 0.360583 0.349008 0.752988 1.116013 0.562702 1.074532 0.850688 0.844939 1.444388 1.530941 0.255231 1.863387 1.106579 1.310141 1.836783 -0.005007 0.360656 1.658990 1.588332 -0.013412 1.425619 1.827389 0.425917 1.713960 1.019636 1.345889 1.564516 1.246321 1.028804 0.474895 0.129090 0.228469 1.190499 0.208117 1.372797 1.554651 -0.150304 1.292293 0.381212 1.275332 0.867023 1.563695 0.615073 1.736449 1.595570 1.057393)
)
;;; 57 odd -------------------------------------------------------------------------------- ; 7.549
@@ -1802,7 +1752,7 @@
9.543363571167 #(0 1 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 1 0 0 1 1 0 0 1 1 1 1 1 0 1 0 1 0 0 1 1 1)
9.3903837203979 #(0 1 0 1 0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 1 0 0 1 1 0 1 1 1 1 1 1 0 1 0 0 0 0 1 1 0)
- 7.533525 #(0.000000 -0.110368 1.373665 0.683281 0.734430 0.072842 1.680535 0.911874 1.551081 1.315444 1.198477 0.981804 0.742823 1.484583 1.510441 1.313062 -0.319403 0.650244 1.352689 0.534390 0.989197 0.598315 1.412571 0.366093 1.756982 0.667808 -0.146382 0.140933 0.201053 1.541445 0.470385 0.071671 0.048554 0.309101 0.515656 0.933911 1.278294 1.429136 0.321693 1.263589 0.779335 0.295750 0.088394 1.313005 0.046392 0.303668 1.255124 0.335204 1.541087 1.560750 0.301819 0.859413 0.706334 0.414830 0.618501 0.871042 1.830563)
+ 7.498232 #(0.000000 -0.129172 1.380361 0.700320 0.780441 0.090360 1.662756 0.878900 1.570440 1.307072 1.212448 0.971480 0.736973 1.472139 1.503004 1.321091 -0.333336 0.652738 1.407756 0.559265 0.970311 0.614385 1.441684 0.387567 1.768917 0.697588 -0.175161 0.102601 0.178290 1.528309 0.468873 0.084595 0.063505 0.298061 0.525085 0.923933 1.286889 1.429105 0.333843 1.303850 0.808595 0.285713 0.098774 1.284736 0.038814 0.328707 1.274912 0.350159 1.518973 1.572017 0.226187 0.841753 0.707945 0.437563 0.618742 0.866615 1.853272)
)
;;; 58 odd -------------------------------------------------------------------------------- ; 7.6157
@@ -1810,7 +1760,7 @@
9.6265433375878 #(0 1 1 0 1 0 1 1 0 0 0 0 0 1 1 0 1 1 1 1 0 1 1 1 0 1 0 0 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 0 1 1 0 0 0 0 0 1 0 1 0 1)
9.5893135070801 #(0 1 1 0 1 0 1 1 0 0 0 0 0 0 1 0 1 1 1 1 0 1 1 1 0 1 0 0 1 1 1 0 0 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 0 0 0 0 1 1 0 1 0 0)
- 7.627847 #(0.000000 0.525420 -0.131826 1.340004 0.411770 0.921214 0.545101 1.063724 1.241038 1.263018 1.806080 1.590628 0.564786 1.417837 1.609177 0.377057 0.908997 1.394841 1.936451 1.504384 0.500478 0.059003 1.398356 1.073605 0.713199 1.221105 0.060957 0.324964 0.508713 1.206289 1.039559 0.905119 0.215923 0.253894 1.841752 1.062825 -0.076037 1.850224 1.498163 -0.121317 1.452662 0.576643 -0.172130 0.491691 1.124569 0.485642 0.292526 1.542908 0.468563 1.651521 -0.018778 1.553408 -0.248523 0.375316 0.948047 0.265435 1.906174 0.001259)
+ 7.600558 #(0.000000 0.520739 -0.135944 1.323686 0.400915 0.909904 0.533857 1.060902 1.237556 1.269869 1.780318 1.589139 0.543975 1.422673 1.606043 0.380912 0.893798 1.363714 1.916308 1.467556 0.484343 0.035905 1.362512 1.052674 0.701216 1.227654 0.054331 0.336647 0.485517 1.190925 1.006530 0.883787 0.199084 0.210890 1.799500 1.041239 -0.101762 1.809564 1.478560 -0.155244 1.422988 0.562288 -0.223688 0.441421 1.097613 0.463947 0.279884 1.513750 0.404962 1.608757 -0.053634 1.500664 -0.269655 0.342883 0.921060 0.214677 1.886658 -0.040125)
)
;;; 59 odd -------------------------------------------------------------------------------- ; 7.681
@@ -1818,14 +1768,14 @@
9.6750946044922 #(0 1 1 1 0 0 0 0 0 1 1 0 1 0 0 1 0 0 1 1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 0 0 1 1 0 1 1 0 1 0 1 0 1 1 1)
9.5173864364624 #(0 1 1 1 0 0 0 0 0 1 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 0 1 1 0 1 1 0 1 0 1 0 1 1 0)
- 7.774617 #(0.000000 1.499380 0.502154 1.169745 0.534419 0.254837 0.243501 0.759635 1.308835 0.538932 -0.151959 1.968527 1.378953 1.305305 0.447948 1.190507 0.795144 1.483034 1.649856 1.817403 1.773564 0.387596 0.188771 1.724811 0.307934 1.394184 0.895012 -0.046635 0.233274 1.017473 0.671038 1.392139 0.849134 1.222716 0.677248 0.234477 0.997460 0.874343 -0.078514 0.047024 1.007730 0.581143 1.143957 1.486250 0.338833 1.551538 1.615016 1.129756 1.426739 1.226202 0.607325 1.331218 0.301372 0.718279 1.555303 1.049639 0.788614 1.029670 1.413780)
+ 7.741960 #(0.000000 1.501701 0.525865 1.161753 0.529159 0.270826 0.218250 0.773726 1.319830 0.556353 -0.116162 1.959913 1.370778 1.299951 0.469006 1.209988 0.774892 1.506136 1.620871 1.839302 1.771939 0.363371 0.149516 1.732074 0.337910 1.384337 0.859937 -0.091583 0.242196 1.038683 0.672335 1.377439 0.844079 1.247494 0.687313 0.247422 0.971507 0.875947 -0.132269 0.068013 0.990158 0.558561 1.166478 1.461737 0.390268 1.589938 1.646093 1.108271 1.389794 1.218941 0.623049 1.328368 0.293951 0.686422 1.541983 1.030349 0.765160 1.050122 1.421779)
)
;;; 60 odd -------------------------------------------------------------------------------- ; 7.7459
#(60 9.8824768066406 #(0 1 0 1 1 1 1 1 1 0 1 0 1 0 0 1 0 1 1 1 1 1 0 1 0 1 1 0 0 1 1 1 1 1 0 0 0 0 1 1 0 0 1 0 0 0 1 0 1 1 0 0 1 1 1 0 1 1 1 0)
9.6560277938843 #(0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 1 1 1 1 0 1 0 0 1 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 1 0 1 1 1 0 0 1 0 0)
- 7.893430 #(0.000000 0.208461 0.599578 1.718884 1.059355 0.150026 1.026383 0.745207 0.434984 1.028839 0.129677 1.213167 -0.214502 1.601596 1.407953 -0.059843 1.386199 0.352360 1.051210 -0.513449 1.246298 0.391944 0.725592 1.110769 1.856170 0.099739 -0.009068 1.807038 0.291750 1.365520 1.417004 0.121573 1.925234 1.609901 0.366597 0.159573 1.577759 1.418821 0.381436 0.044042 0.211004 1.056596 1.703995 0.347288 1.390531 1.468181 1.222781 0.443038 -0.169447 0.784738 1.595169 1.051586 1.297816 0.271488 -0.140170 1.590665 -0.015802 0.842081 0.789290 0.484362)
+ 7.857665 #(0.000000 0.223209 0.603575 1.764270 1.067104 0.187365 1.035902 0.794108 0.433016 1.033035 0.145771 1.156871 -0.219666 1.573710 1.443685 -0.075370 1.358785 0.303230 1.086388 -0.497651 1.289419 0.401682 0.659712 1.089676 1.856047 0.116154 -0.018385 1.805009 0.283091 1.355723 1.391805 0.134527 1.947706 1.585397 0.339768 0.177105 1.585913 1.433627 0.415283 0.076405 0.232897 1.045188 1.720360 0.368338 1.403808 1.465340 1.272212 0.390722 -0.169143 0.809007 1.637020 1.046025 1.278161 0.277031 -0.143141 1.608400 -0.047592 0.824963 0.767856 0.505759)
)
;;; 61 odd -------------------------------------------------------------------------------- ; 7.8102
@@ -1834,7 +1784,7 @@
9.8069976254571 #(0 0 1 0 1 1 1 0 0 0 1 1 1 0 0 0 0 0 1 1 0 1 1 1 0 0 0 1 1 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0)
9.6689287776524 #(0 0 0 0 1 0 1 1 0 0 1 1 0 1 1 0 0 0 1 0 1 1 0 1 0 0 1 0 1 0 0 1 1 0 1 0 0 0 1 1 1 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1)
- 7.912147 #(0.000000 -0.284724 0.871001 1.824000 0.187202 0.485793 0.058043 1.057189 0.809196 0.430987 -0.539993 1.630413 0.651264 0.131038 0.014724 1.766620 1.773021 1.071895 1.616132 0.600355 0.152550 1.434617 1.191104 0.487017 1.563004 -0.304576 0.693421 1.454203 0.598354 1.081383 0.963782 0.277001 1.018535 0.830397 0.464574 0.741848 0.187452 1.491281 -0.466761 0.628918 1.155820 0.912422 0.991144 0.922056 1.566861 1.161917 1.758102 0.857485 0.141852 1.004809 -0.227494 0.165953 0.649193 1.090821 -0.401606 0.163182 -0.116974 0.739866 0.969428 1.082275 0.909816)
+ 7.857896 #(0.000000 -0.285399 0.823242 1.838436 0.195366 0.495062 0.059385 1.090265 0.794552 0.420691 -0.519612 1.635839 0.641488 0.102434 0.029874 1.764858 1.791261 1.048148 1.632929 0.632579 0.184003 1.413673 1.170475 0.489799 1.537578 -0.331530 0.730697 1.461548 0.637006 1.061775 0.952924 0.229569 1.035665 0.815775 0.438987 0.681863 0.122537 1.434561 -0.441940 0.666680 1.209672 0.876350 0.967642 0.912456 1.532843 1.170179 1.681404 0.828103 0.078394 1.099216 -0.258673 0.141049 0.669908 1.132284 -0.418347 0.140292 -0.114280 0.691516 0.930301 1.000443 0.814492)
)
;;; 62 odd -------------------------------------------------------------------------------- ; 7.8740
@@ -1843,7 +1793,7 @@
9.8772821666628 #(0 1 1 1 0 1 0 0 1 0 0 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 0 0 1 0 0 1 1 0 1 1 1 1 0 1 1 1 0 1 0 1 0 0 1 0 0 0 0 1 1 1 0 0 0)
9.7982149124146 #(0 0 1 1 0 1 0 0 1 0 0 0 0 1 1 0 1 1 1 0 1 0 0 1 1 0 1 1 0 0 0 1 0 0 1 1 0 1 0 1 1 0 1 1 1 0 1 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0)
- 7.963439 #(0.000000 1.915778 -0.189713 0.152855 0.679955 0.257287 1.345056 1.109062 1.390076 0.812597 0.121916 -0.040999 0.083007 1.409263 0.746112 0.505985 0.231262 0.292479 0.688215 0.254703 -1.532413 1.935357 0.263862 0.040933 -0.028971 0.406032 0.933565 0.340220 1.257883 0.342098 1.271170 1.362272 1.259356 0.864614 0.689363 1.185508 1.546292 0.048025 0.185877 0.155723 1.241725 1.455163 0.259198 0.614727 1.331412 0.549840 0.969308 1.325001 -0.087311 0.859658 0.570722 1.608675 0.341161 1.524053 1.450838 0.898034 0.078353 0.984679 0.951543 0.499691 1.672805 0.879950)
+ 7.898820 #(0.000000 1.944630 -0.233766 0.194074 0.632528 0.244097 1.295357 1.083082 1.417054 0.803363 0.145854 -0.027101 0.092459 1.346041 0.714136 0.496930 0.231422 0.301991 0.686204 0.243924 -1.563559 1.918516 0.220697 0.080691 -0.014833 0.446774 0.891213 0.258510 1.257642 0.342611 1.263751 1.277776 1.294727 0.860089 0.701054 1.210101 1.496405 0.103266 0.192735 0.104842 1.258474 1.453911 0.253806 0.639523 1.315895 0.501832 0.988778 1.377143 -0.093251 0.847651 0.534509 1.576710 0.289289 1.494672 1.468048 0.890136 0.094160 0.980729 1.004372 0.473542 1.665530 0.916284)
)
;;; 63 odd -------------------------------------------------------------------------------- ; 7.9372
@@ -1851,7 +1801,7 @@
10.191082449969 #(0 0 0 0 0 1 0 1 1 1 1 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 1 1 1 1 0 1 1 0 1 1 0 0 1 0 1 1 0 1 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 1 0)
9.8550319671631 #(0 0 0 0 0 1 1 1 1 1 1 0 1 0 1 1 1 0 1 0 0 0 0 0 1 1 1 0 1 1 0 1 1 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 1 0 0 0 1 1 0)
- 8.055820 #(0.000000 1.540970 0.165900 0.848131 0.596287 0.529931 0.433488 0.841530 1.011191 1.002061 1.709828 0.020043 -0.156539 0.583535 1.258399 0.354956 0.309800 1.336340 0.348845 1.043278 1.801037 0.413274 1.787920 0.870559 1.060209 1.623807 0.903693 1.967654 0.560204 0.607509 0.812048 0.149936 0.666598 1.584237 0.011862 1.864009 1.099511 1.515839 1.437153 1.559480 1.743856 1.467122 0.952383 0.208387 1.736239 0.064491 1.752633 1.125098 1.509176 0.491387 0.749155 1.228530 0.124776 -0.035697 1.339281 1.207774 0.883592 0.263950 1.394588 0.828732 0.352800 -0.010357 0.709429)
+ 7.948145 #(0.000000 1.539475 0.161798 0.888172 0.644850 0.560856 0.373296 0.740322 0.997111 0.990726 1.714710 0.000204 -0.059337 0.489441 1.199741 0.344903 0.377992 1.324444 0.327172 1.030233 1.815732 0.453837 1.831167 0.869528 0.930984 1.546410 0.943059 0.036494 0.637658 0.638162 0.895027 0.151329 0.648004 1.560389 -0.080794 1.865235 1.071846 1.600614 1.489565 1.624660 1.776118 1.477155 0.860778 0.195726 1.793090 0.077337 1.818695 1.007562 1.452080 0.593044 0.820711 1.201159 0.115055 -0.074780 1.318294 1.186127 0.885589 0.160188 1.402572 0.743298 0.420254 -0.035628 0.649753)
)
;;; 64 odd -------------------------------------------------------------------------------- ; 8
@@ -1861,20 +1811,20 @@
10.022200584412 #(0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 1 0 1 1 0 1 0 0 0 0 1)
10.0 #(0 1 1 0 1 0 0 1 0 0 1 1 0 0 0 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0)
- 8.155119 #(0.000000 1.081729 0.586249 0.855976 0.671644 0.972794 1.043057 0.123210 0.539841 0.068101 1.259652 1.195416 1.320756 -0.018934 0.705149 0.387893 0.977797 0.093146 1.546142 0.957101 0.620787 0.727194 0.878410 0.028771 0.584428 -0.663414 0.875469 0.487606 1.308875 0.612641 1.747937 1.003437 0.798519 0.234079 1.163693 1.233888 1.124885 0.428032 1.163992 1.665499 0.589242 0.041827 -0.023809 0.568943 1.731336 0.234069 0.458638 0.680391 0.719633 1.649257 -0.203605 0.026217 -0.373497 1.624387 0.310105 0.475286 1.367764 1.621254 0.858687 1.144674 0.288901 1.511600 0.498688 0.809292)
+ 8.102427 #(0.000000 1.093483 0.572595 0.844978 0.673060 0.954388 1.040037 0.119197 0.518564 0.060455 1.248394 1.174761 1.328130 -0.025064 0.699614 0.363224 0.999429 0.070207 1.526085 0.933139 0.632180 0.706214 0.895577 0.027223 0.562559 -0.677926 0.887771 0.466541 1.310535 0.633476 1.757285 0.985169 0.840458 0.249359 1.127384 1.251713 1.131004 0.431247 1.154106 1.691647 0.571769 0.027963 -0.048930 0.589961 1.728379 0.293342 0.451660 0.648030 0.756142 1.674560 -0.201196 -0.008355 -0.371017 1.645091 0.318920 0.484095 1.390100 1.623086 0.903517 1.084811 0.269233 1.540613 0.497352 0.838366)
)
;;; 65 odd -------------------------------------------------------------------------------- ; 8.0622
#(65 10.517309434908 #(0 1 1 1 0 1 1 0 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 0 1 1 1 0 1 1 0 1 0 1 0 1 1 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 1 1 1 1 1 1 0 0 0 0 1 0 1)
10.169842720032 #(0 0 1 1 0 0 1 0 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 0 1 1 1 0 1 1 0 1 0 1 0 1 1 1 1 1 0 0 1 1 0 0 0 0 1 1 0 0 1 1 1 1 1 1 0 0 0 0 1 0 1)
- 8.229464 #(0.000000 1.503485 1.469867 1.681740 1.526484 1.041014 -0.016565 1.224639 0.144700 1.390906 1.136595 0.370353 0.165099 0.448446 0.705000 1.545500 0.048391 -0.004653 0.360963 0.558218 1.818110 0.141448 1.543743 1.099370 1.363420 1.464782 0.383926 1.483681 0.605450 1.206845 1.768893 0.131892 -0.310743 0.320982 1.610327 1.402637 1.405210 1.341021 1.407879 0.163973 1.072562 0.052450 0.184435 0.111149 0.777045 1.059144 1.312412 0.725451 0.799484 1.744765 0.137653 0.858160 1.452496 1.323690 0.633474 1.948166 1.706026 0.995044 0.465037 1.794881 0.203899 1.104323 0.526429 0.815197 0.753182)
+ 8.172672 #(0.000000 1.518195 1.421942 1.672069 1.562903 1.077678 -0.038876 1.155686 0.137457 1.439940 1.161505 0.403278 0.148919 0.431081 0.714503 1.553024 0.049829 -0.048853 0.403370 0.554759 1.858577 0.108907 1.550019 1.043977 1.346680 1.464647 0.361146 1.468789 0.563953 1.191460 1.789712 0.164920 -0.315651 0.292311 1.632786 1.402156 1.438404 1.338369 1.398013 0.120164 1.082713 0.040915 0.200054 0.163737 0.746352 1.078255 1.301486 0.789604 0.779220 1.733476 0.104805 0.882612 1.489016 1.319755 0.638745 1.951289 1.723376 0.981490 0.532925 1.790055 0.220577 1.162286 0.586079 0.891776 0.713314)
)
;;; 66 odd -------------------------------------------------------------------------------- ; 8.1240
#(66 10.212840820553 #(0 0 0 0 0 1 1 1 1 0 0 0 1 1 0 1 0 0 1 0 0 1 1 1 1 0 0 1 1 1 0 0 1 1 0 1 1 0 0 0 1 0 1 0 0 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0)
- 8.279440 #(0.000000 0.862544 -0.028274 1.039220 0.986331 1.137501 -0.139652 0.832691 1.306852 1.707064 0.130311 1.437586 0.000368 -0.015976 0.745348 -0.207260 1.551591 0.881444 0.510077 0.777822 -0.165336 0.923733 0.114482 1.216158 0.233598 1.574791 1.535692 0.365694 1.635772 1.308293 0.662306 0.834319 0.236824 0.097765 1.456306 1.377612 1.553839 0.254753 0.158734 0.083465 1.016431 -0.041128 1.182599 0.132655 0.629064 1.051729 0.605172 0.765023 1.835881 0.091217 1.547667 0.043306 0.552523 0.995886 1.083837 1.544235 1.741905 1.223905 1.159156 1.700472 1.592181 1.188557 0.829140 1.234787 1.452455 1.006708)
+ 8.213734 #(0.000000 0.875891 -0.038426 1.030793 0.934449 1.163672 -0.117030 0.799481 1.336449 1.711387 0.132538 1.451166 0.050035 -0.013579 0.762242 -0.184991 1.539794 0.912211 0.481593 0.797209 -0.183255 0.906401 0.080616 1.191651 0.224350 1.574286 1.535970 0.369438 1.645761 1.330178 0.684148 0.810378 0.256641 0.118877 1.446410 1.368364 1.553366 0.231134 0.166828 0.065570 0.977025 -0.054496 1.231128 0.163661 0.621473 1.111392 0.583841 0.780214 1.875964 0.063511 1.532487 0.056828 0.561941 1.021009 1.058835 1.564173 1.759528 1.217371 1.234815 1.726477 1.584459 1.186412 0.856248 1.233217 1.406087 1.021868)
)
;;; 67 odd -------------------------------------------------------------------------------- ; 8.1853
@@ -1882,14 +1832,14 @@
10.287303318203 #(0 1 0 1 0 1 0 1 1 0 0 1 0 1 1 1 1 0 1 1 0 0 1 1 1 1 1 0 0 1 1 0 1 0 1 1 0 0 0 1 0 1 1 1 1 0 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 1)
10.209677696228 #(0 1 0 1 1 1 0 1 1 0 0 1 0 1 1 1 1 0 1 1 1 0 1 1 1 1 1 0 0 1 1 0 1 1 1 1 0 0 0 1 0 1 1 1 0 0 1 0 1 1 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 0 1)
- 8.522302 #(0.000000 0.348706 0.847507 0.557665 1.483209 0.568163 0.713632 0.441870 -0.121923 1.398686 0.994445 0.144849 1.345895 0.000319 0.914333 1.095527 1.403918 1.171889 0.969244 0.931709 1.928028 0.545849 1.048102 1.306809 0.193760 1.685533 0.079768 0.512724 1.378930 -0.037740 0.143963 -0.195291 1.715293 0.984151 0.575142 0.677544 1.962879 1.372368 1.086143 1.753787 0.910887 0.525597 1.136956 0.678600 0.616525 1.400378 1.445246 -0.008917 1.407070 0.888116 1.256887 0.124496 0.640276 0.587895 0.296050 0.887550 0.493365 -0.055623 0.814795 0.829278 1.124824 -0.215807 0.977111 0.114340 0.603184 0.039516 0.614634)
+ 8.393414 #(0.000000 0.323558 0.773512 0.543115 1.464274 0.617531 0.768170 0.486067 -0.114691 1.371213 1.045051 0.154459 1.409265 -0.001430 0.845583 1.066142 1.411855 1.213448 1.008672 0.925354 1.968831 0.560411 1.022867 1.327298 0.257930 1.710620 0.131187 0.552237 1.410484 -0.153253 0.082468 -0.168847 1.829838 0.952197 0.627682 0.728023 -0.002204 1.528375 1.123477 1.740987 0.910284 0.460718 1.166214 0.644257 0.666653 1.305272 1.440421 -0.035783 1.418659 0.879188 1.206353 0.112522 0.626349 0.596319 0.259279 0.983219 0.541592 -0.108788 0.891047 0.804404 1.181363 -0.084054 0.996435 0.145549 0.695218 0.103562 0.545296)
)
;;; 68 odd -------------------------------------------------------------------------------- ; 8.24621
#(68 10.698028101377 #(0 0 1 1 1 0 1 0 0 0 1 1 1 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 0 1 1 1 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 0 0 0 0 1 0 0 0 1 1)
10.359804316765 #(0 0 1 1 1 0 1 0 0 0 1 1 1 1 1 1 0 1 0 1 0 0 1 1 0 1 1 1 0 0 1 1 1 1 0 0 1 0 0 1 1 0 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 0 0 0 0 1 0 0 0 1 0)
- 8.426614 #(0.000000 0.270373 1.666691 0.953549 0.650366 0.342873 0.283697 0.118411 0.846816 -0.098119 1.382288 0.904011 0.777812 0.910460 0.158512 1.684236 0.165956 0.631425 0.672310 0.726790 1.626504 1.193104 0.451317 0.620038 0.884476 0.641733 1.150303 -0.062225 0.269179 0.324122 -0.015894 0.758382 0.450037 0.869302 0.218188 0.399047 1.412998 1.782581 0.687818 1.484703 -0.114595 0.636338 1.649231 0.885308 -0.042107 1.345722 1.376031 1.071370 1.300058 0.924140 1.616894 0.316035 0.130389 1.289599 -0.230733 0.467761 0.027781 1.349580 1.685979 1.907147 0.296048 1.689232 1.058362 0.377738 0.817752 1.275510 0.671274 0.182183)
+ 8.336851 #(0.000000 0.259490 1.658480 0.947754 0.643198 0.333781 0.319521 0.140635 0.840116 -0.093928 1.399771 0.924663 0.796187 0.901123 0.174046 1.683765 0.215186 0.666907 0.616899 0.757816 1.618725 1.164610 0.429879 0.619186 0.904738 0.601896 1.157163 -0.028108 0.195565 0.331608 -0.055200 0.726411 0.405388 0.896722 0.239752 0.394251 1.365681 1.733182 0.679989 1.449071 -0.172014 0.592384 1.579007 0.881776 -0.070220 1.356469 1.414314 1.029497 1.312474 0.882910 1.637291 0.267676 0.216802 1.345237 -0.218308 0.490146 0.061175 1.366311 1.651501 1.891274 0.303859 1.705204 1.043931 0.380624 0.815933 1.241095 0.674761 0.215095)
)
;;; 69 odd -------------------------------------------------------------------------------- ; 8.3066
@@ -1898,14 +1848,14 @@
10.636575441359 #(0 0 1 0 0 1 1 1 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 1 1 1 0 0 1 1 1 1 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1 0 1 0 1 0 0 0 1 0 0 1 0 1)
10.452348709106 #(0 0 1 0 0 1 1 1 1 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 1 1 1 1 0 1 0 1 1 0 1 1 0 0 0 1 1 0 0 1 0 1 1 1 0 1 0 1 0 0 0 0 0 0 1 0 1)
- 8.527843 #(0.000000 1.821999 1.568559 -0.246242 0.231233 0.318924 0.668630 1.222442 0.896404 0.251464 1.483472 0.529523 1.011081 1.012156 1.096375 0.992057 0.120920 0.018789 0.481866 0.060791 1.732254 0.120094 0.593025 1.541649 0.997563 0.543556 1.474473 -0.035568 0.558549 0.198380 1.080695 0.066854 0.300403 1.431445 0.070857 1.534302 1.125926 1.450459 1.399675 0.599160 1.614263 1.066440 0.158465 0.091004 0.950402 1.132715 0.996807 1.894446 0.452550 0.677723 -0.015073 0.236125 1.624897 0.634376 0.697620 0.739580 -0.156098 0.740053 1.194673 1.233827 0.730093 0.654307 -0.161818 0.919781 1.149990 0.941782 0.792379 1.238314 0.580807)
+ 8.393949 #(0.000000 1.780383 1.377205 -0.222062 0.265035 0.241489 0.617603 1.309356 0.816740 0.211378 1.475376 0.640925 1.002660 1.050227 1.061657 1.043469 0.148902 0.025041 0.467020 0.105374 1.678820 0.162562 0.539177 1.536622 1.084325 0.409619 1.478101 -0.035095 0.606755 0.243519 1.003185 -0.059301 0.327478 1.472599 -0.023493 1.571577 1.033275 1.440548 1.352377 0.681368 1.625814 1.041991 0.158272 0.103564 0.907746 1.129532 1.029263 1.858665 0.409959 0.628531 -0.018404 0.264258 1.518049 0.624188 0.671170 0.729732 -0.213966 0.649762 1.158675 1.207077 0.746114 0.619516 -0.170619 0.859889 1.126326 0.947623 0.705906 1.358411 0.652740)
)
;;; 70 odd -------------------------------------------------------------------------------- ; 8.3666
#(70 11.087729454041 #(0 1 0 0 0 0 1 1 1 1 0 0 1 0 1 0 0 1 1 0 1 0 1 0 0 1 0 0 0 1 1 1 1 0 1 1 0 1 1 1 0 0 0 1 0 0 1 1 0 1 1 0 1 1 0 0 0 1 0 1 0 1 1 1 1 1 1 0 1 1)
10.431521047498 #(0 1 0 0 0 0 1 1 1 1 0 0 1 0 1 0 0 1 1 0 1 0 1 1 0 1 0 0 0 1 1 1 1 0 1 0 0 1 1 1 0 0 0 1 0 0 1 1 0 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 1 1 1 1 1)
- 8.475409 #(0.000000 1.059619 0.531069 -0.360618 0.443326 0.887028 1.078695 0.046943 1.675287 1.289345 1.811695 -0.154591 -0.068396 0.909364 -0.044609 -0.265344 0.255744 0.380586 0.830543 -0.112572 0.110864 0.534363 0.826629 0.952829 0.825881 -0.384875 1.028820 0.689630 0.356567 -0.430022 0.433638 0.718788 0.440635 1.825523 1.413688 1.439314 -0.188220 1.232179 0.637156 0.949886 1.250059 0.592053 1.312453 1.794016 0.348777 1.752539 0.655788 1.514846 0.174686 1.417986 0.571648 0.219254 1.284467 1.266208 0.932012 1.399952 -0.440770 -0.129536 1.202897 1.109117 0.744520 0.797840 -0.032827 0.902223 1.500319 1.131310 1.034812 1.219659 0.037295 0.710235)
+ 8.404063 #(0.000000 1.035843 0.569597 -0.368593 0.391526 0.904986 1.048585 0.073471 1.667347 1.315264 1.813342 -0.129589 -0.120711 0.913761 -0.031028 -0.255188 0.277569 0.384289 0.790025 -0.111157 0.071891 0.539868 0.796556 0.956575 0.810170 -0.337459 1.061333 0.698391 0.365875 -0.412197 0.446422 0.695701 0.468955 1.799494 1.445485 1.405234 -0.177099 1.224635 0.617909 0.933618 1.278067 0.558186 1.263797 1.809471 0.380644 1.797969 0.634597 1.499063 0.203322 1.460392 0.661893 0.240253 1.306313 1.248699 0.945178 1.384311 -0.428837 -0.137316 1.146056 1.049445 0.739560 0.783963 0.018052 0.913676 1.505595 1.128099 0.946549 1.223995 0.041518 0.701834)
)
;;; 71 odd -------------------------------------------------------------------------------- ; 8.4261
@@ -1913,7 +1863,7 @@
11.002258540604 #(0 0 0 0 0 1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 1 0 1 0 1 1 0 1 1 1 1 0 1 1 0 1 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 0 0)
10.642364501953 #(0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 1 0 0 0 0 1 0 0 1 1 1 0 1 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 1 0 0 1 1 0 0)
- 8.827452 #(0.000000 1.001173 0.713186 1.765840 -0.021455 -0.092564 -0.233716 1.598785 0.350605 0.684212 1.106061 0.797988 0.672668 0.718889 -0.014413 0.250140 1.032422 0.323960 1.416518 1.119892 1.215141 1.372914 1.863866 1.862655 1.399669 1.579873 0.456140 1.480659 0.851157 0.505832 1.081454 1.532655 -0.249722 0.825414 0.002673 1.102446 1.442384 1.730034 0.001693 0.953578 0.769277 0.167864 0.893119 1.111840 1.517418 1.834207 0.945195 0.891649 0.853000 1.135810 0.508582 0.784680 1.290283 0.414004 1.598804 0.461660 0.947057 -0.183152 0.875021 0.030819 -0.306957 0.761391 1.172302 0.653077 1.686671 -0.261922 1.631798 1.425877 1.270964 0.363536 1.514648)
+ 8.676585 #(0.000000 1.091030 0.804990 1.804918 0.024809 -0.014688 -0.192011 1.629516 0.313287 0.740302 1.030059 0.836120 0.790790 0.803999 -0.117923 0.230730 1.048371 0.368472 1.425702 1.059424 1.227772 1.310436 1.801575 1.810129 1.410867 1.518587 0.513386 1.512962 0.816051 0.406704 1.043676 1.614649 -0.232839 0.787583 -0.102383 1.099149 1.417683 1.753472 -0.047839 0.935090 0.783389 0.171679 0.905943 1.211201 1.674218 1.822575 0.942690 0.994855 0.944687 1.228850 0.555387 0.824449 1.241658 0.412542 1.470311 0.483262 0.998424 -0.243852 0.794854 0.083777 -0.251146 0.726782 1.115593 0.529550 1.794614 -0.066716 1.633106 1.449981 1.279662 0.230419 1.577663)
)
;;; 72 odd -------------------------------------------------------------------------------- ; 8.4853
@@ -1921,14 +1871,14 @@
10.912703440154 #(0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 1 0 1 0 1 0 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 1 1 1 1 1 0 0 0 1)
10.880306243896 #(0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 1 1 0 1 1 1 0 0 0 0 0 1)
- 8.788965 #(0.000000 1.572212 0.282211 0.389008 0.684457 1.377471 1.048395 1.451357 0.200308 1.183792 0.433534 0.778936 1.778666 0.768318 1.281522 1.603182 0.989727 0.437937 1.718127 0.154693 0.445686 0.460844 0.643218 0.593719 0.931295 1.488328 0.906759 1.544579 1.061611 1.254320 0.497969 0.372888 1.731831 0.240105 0.385529 1.533131 0.672707 0.247395 1.208608 1.415010 0.383177 0.966122 0.711374 0.276799 0.533251 0.802309 -0.008324 1.203148 1.862081 0.765235 1.005937 1.434161 0.496640 1.150257 0.588926 1.412664 1.127752 1.084409 0.664979 0.291433 1.029657 0.973466 0.070689 0.178614 0.017724 1.349469 0.962992 -0.146048 0.137547 0.207098 -0.026017 1.681982)
+ 8.715445 #(0.000000 1.580103 0.288339 0.349822 0.713222 1.391036 1.078676 1.432100 0.212666 1.189191 0.430185 0.780762 1.802290 0.773221 1.379297 1.621443 0.970048 0.421848 1.738406 0.148497 0.485613 0.507423 0.597391 0.574024 0.919805 1.488682 0.879212 1.577005 1.091670 1.280124 0.486943 0.360415 1.719703 0.222743 0.366004 1.531967 0.675897 0.255385 1.209761 1.392177 0.376808 0.925331 0.687063 0.365167 0.601974 0.783101 0.059783 1.173845 1.837088 0.807946 1.018280 1.459325 0.476348 1.192285 0.606828 1.400643 1.124872 1.080853 0.614512 0.313816 1.011146 0.972298 0.058716 0.191864 0.018067 1.339384 1.010011 -0.185394 0.183693 0.267705 -0.026365 1.710770)
)
;;; 73 odd -------------------------------------------------------------------------------- ; 8.5440
#(73 11.087996391987 #(0 0 0 1 1 1 1 0 0 1 1 1 0 0 0 1 1 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 1 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 1 1 0 1 1 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1)
10.907942771912 #(0 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 1 1 1 1 0 0 1 1 1 1 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 1 1 1 0 1 1 0 0 0 0 1 1 1 1 1 0 0 1 1 1 1 0 1 0 1)
- 8.763219 #(0.000000 1.449071 0.498408 0.031798 1.116997 1.488282 0.033521 -0.249621 1.016296 1.303351 1.629820 0.003900 0.260655 1.659319 0.017682 0.490262 0.706042 1.118263 0.483775 1.645390 0.478012 0.307320 1.103050 0.666547 -0.102634 0.006854 0.026352 1.462832 1.423344 -0.039116 1.345289 1.476171 0.048095 0.531247 0.113200 0.472157 0.862139 0.397438 1.007965 1.349558 0.532156 0.676607 0.247111 0.563977 -0.174702 0.435086 0.246686 1.370534 0.675360 1.107876 0.568423 0.232191 0.308496 1.122471 1.438323 0.540102 -0.074011 -0.049643 1.896214 0.378760 1.549695 0.426733 0.622266 -0.353430 1.444060 0.976662 0.111884 1.695227 0.254711 0.937000 0.169254 1.474868 1.942946)
+ 8.618379 #(0.000000 1.483573 0.386364 0.007574 1.130454 1.548047 0.046472 -0.238166 1.053639 1.322001 1.697975 0.018201 0.230394 1.612735 0.015858 0.463109 0.778833 1.088121 0.503821 1.643966 0.499458 0.402598 1.203560 0.581557 -0.094459 0.081441 0.038380 1.392278 1.430231 -0.008974 1.457494 1.432072 0.013466 0.447969 0.140148 0.487374 0.906832 0.495473 1.040893 1.317478 0.604114 0.724308 0.239278 0.617862 -0.192821 0.466635 0.231710 1.431302 0.728866 1.135747 0.498221 0.209309 0.309324 1.094795 1.451922 0.527106 0.063127 -0.177212 1.917059 0.379586 1.635121 0.384172 0.660176 -0.303267 1.519314 1.065701 0.218252 1.594772 0.304700 0.989911 0.217806 1.547663 0.023045)
)
;;; 74 odd -------------------------------------------------------------------------------- ; 8.6023
@@ -1936,7 +1886,7 @@
11.288741871055 #(0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 1 0 1 1 0 1 1 1 1 1 0 1 1 1 1 0 0 0 0 1 1 0 0 1 0 1 1 1 0 1 1 0 0 0 1 1 1 0 1 1 1 0 0 1 0 0 1 1 1 1 0 1 0)
11.262331896 #(0 0 1 1 1 0 0 1 1 0 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1 1 0 0 0 0 0 0 1 0 0 1 1 1 0 0 1 1 1 0 0 0 0 1 1 1 1 0 1 0 0 0 0 1 0 1 0 1 0 1 1 1 1 0 1 0 0 1 1 0)
- 8.688210 #(0.000000 0.236146 0.350867 0.932414 0.916127 -0.134227 1.422451 1.378440 0.165915 0.899622 1.115092 -0.349637 1.073086 1.714053 0.285639 0.145742 1.220134 0.308649 0.470781 0.995798 0.705086 1.250908 1.194674 0.162507 0.895038 1.363555 -0.228830 0.519653 0.111896 0.788740 -0.065863 0.206662 0.732665 1.772265 1.706019 1.663325 -0.373276 1.877736 1.089266 1.665920 0.909199 1.325366 0.617314 -0.356441 0.241279 1.590512 0.467605 0.165585 1.143900 1.193046 1.103548 0.238834 1.290486 0.908667 0.157801 1.562621 1.085079 1.236647 1.785549 1.177682 1.292914 0.994337 0.718034 0.032772 1.331245 -0.363292 1.269540 1.002871 0.033954 0.224687 -0.257186 0.132497 1.528664 0.907105)
+ 8.505770 #(0.000000 0.271959 0.303263 0.871130 0.904134 -0.104703 1.438323 1.380312 0.153606 0.874000 1.112738 -0.381121 1.128821 1.800391 0.271558 0.179924 1.245144 0.340659 0.429014 0.985023 0.709222 1.205236 1.196024 0.193210 0.875814 1.373206 -0.208581 0.550691 0.133632 0.785455 -0.009102 0.272459 0.666791 1.782681 1.718095 1.685691 -0.371908 1.897876 1.085596 1.690614 0.839009 1.371639 0.648809 -0.333122 0.227967 1.542904 0.506314 0.141899 1.120242 1.221884 1.118539 0.201184 1.273447 0.940438 0.135993 1.603620 1.099885 1.279633 1.766033 1.155852 1.376417 1.081428 0.676161 0.039331 1.365221 -0.352489 1.294597 1.006846 0.055171 0.246691 -0.270644 0.094155 1.572455 0.920094)
)
;;; 75 odd -------------------------------------------------------------------------------- ; 8.6603
@@ -1944,7 +1894,7 @@
11.190553665161 #(0 0 0 0 0 1 0 0 1 1 1 0 1 1 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 0 1 1 0 0 1 0 1 0 1 1 1 1 0 1 0 0 1 1 1 1 1 1 0 0 1 0 0 1 0 1 1)
10.942812919617 #(0 0 0 1 0 1 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 1 1 0 0 0 0 0 1 1 0 0 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1 0 0 0 0 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1)
- 8.889625 #(0.000000 1.001992 1.810738 0.104519 0.700904 0.067718 1.060611 0.166858 1.669135 0.873844 1.566275 0.262510 1.172269 1.807944 0.016660 1.616014 -0.231827 1.459863 1.429779 0.875346 0.126180 0.811419 1.913006 0.218675 0.206322 1.189576 -0.152210 0.048106 0.140559 0.029516 0.671342 0.423124 0.910539 0.436124 0.940829 0.472214 0.561885 0.226900 1.847453 0.297772 1.633232 0.984632 1.501492 0.228865 1.122408 1.744015 1.560088 -0.007068 0.344156 0.282031 0.755763 1.342395 1.135614 0.424597 1.932189 0.488585 1.701361 1.811445 0.787338 1.554645 -0.026757 0.124612 1.281547 1.080332 0.154213 1.589068 1.215455 0.750430 -0.198112 1.693508 1.521191 0.644416 0.743392 0.898393 0.066934)
+ 8.830225 #(0.000000 1.013223 1.786238 0.129968 0.742905 0.065558 1.058975 0.184381 1.706608 0.871401 1.576169 0.234876 1.159254 1.815829 0.044583 1.623881 -0.273273 1.449612 1.446965 0.865112 0.115317 0.800902 1.868160 0.193326 0.208366 1.197082 -0.140618 0.023427 0.155605 0.022088 0.669779 0.410669 0.912385 0.441621 0.938781 0.474698 0.584583 0.235271 1.854406 0.253463 1.628345 0.973725 1.523370 0.221025 1.050324 1.700556 1.553674 -0.033401 0.309970 0.285585 0.766476 1.312340 1.141568 0.397314 1.911780 0.489889 1.710603 1.800612 0.786152 1.581292 0.016796 0.054030 1.284053 1.068286 0.185660 1.583475 1.229260 0.782068 -0.218011 1.642371 1.522647 0.627779 0.726814 0.875588 0.094902)
)
;;; 76 odd -------------------------------------------------------------------------------- ; 8.7178
@@ -1952,7 +1902,7 @@
11.446428749262 #(0 0 1 1 0 0 0 1 0 0 1 1 1 1 1 0 1 0 1 1 0 0 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 1 0 1 0 0 1 0 1 0 1 1 1 0 1 1 0 0 0 0)
11.21743106842 #(0 0 1 1 0 0 0 1 0 1 1 1 1 1 1 1 1 0 1 1 0 0 0 1 0 1 1 1 0 0 0 1 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 1 0 1 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0)
- 8.908219 #(0.000000 0.280420 0.834581 0.746892 1.206231 0.461105 0.919611 1.003241 1.348518 0.813791 1.765814 0.344255 1.304761 0.322893 1.216052 0.979845 0.756130 0.425806 1.479335 0.016574 0.467798 0.844222 0.778710 0.819902 0.270874 0.472344 0.952944 1.334599 0.211025 0.888401 0.070505 1.433357 0.591986 0.084305 1.723600 1.520269 0.448581 0.859211 0.485866 0.791418 0.183563 0.076441 1.439692 0.120659 1.811365 1.868232 0.247061 1.539368 1.150224 1.045468 0.466985 0.832682 0.104753 1.080540 0.549761 0.536716 1.565609 1.004632 0.462105 1.036754 1.820880 0.220881 0.413339 1.328763 0.404688 1.776006 1.392081 0.179559 0.898446 0.683352 1.592556 1.434050 1.710851 1.462547 -0.017354 0.806592)
+ 8.719136 #(0.000000 0.238228 0.866700 0.785845 1.198005 0.449360 0.987968 1.005461 1.451658 0.861106 1.705432 0.367718 1.265412 0.220083 1.163991 1.018497 0.626826 0.457241 1.563729 0.038490 0.469112 0.910518 0.875256 0.828814 0.396911 0.463093 0.944564 1.317058 0.227081 0.878000 0.090646 1.438487 0.572699 0.044226 1.714140 1.428069 0.404994 0.881001 0.506207 0.832745 0.217709 0.062311 1.518466 0.162150 1.815365 1.953818 0.288442 1.572564 0.981833 1.014948 0.478895 0.893965 0.010668 1.093786 0.647179 0.561896 1.540396 0.997765 0.471378 0.936088 1.858708 0.259771 0.408306 1.374269 0.412062 1.729366 1.386572 0.132543 0.885369 0.689587 1.586207 1.498263 1.665075 1.533684 0.055734 0.826303)
)
;;; 77 odd -------------------------------------------------------------------------------- ; 8.7750
@@ -1961,20 +1911,20 @@
11.302083969116 #(0 1 1 1 1 0 1 0 0 0 0 0 1 0 1 1 0 1 1 0 1 1 0 1 0 1 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 1 0 1 1 0 0 0 0 0 1 1 1 1 0 0 1 1 0 1 1 1 0 0 1 1 1 0 1 1 0 1 0 0 0 1)
11.192246437073 #(0 1 0 1 1 0 1 0 0 0 0 0 1 0 1 0 0 1 1 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 1 0 1 1 0 1 0 0 0 1 1 1 1 0 0 1 1 0 1 1 1 0 0 1 1 1 0 1 1 0 0 0 0 0 0)
- 8.872404 #(0.000000 1.719836 1.610049 1.714791 0.890813 1.039903 0.522927 0.062879 1.822697 1.429651 0.580786 0.490392 0.190060 0.500077 0.499511 0.882434 1.332267 1.062134 -0.254173 1.300969 0.375554 -0.248064 0.807077 1.197998 -0.214412 1.386988 0.282220 1.418525 0.664006 0.557848 1.382144 1.189538 0.670630 0.933336 1.841342 0.829811 -1.753609 0.767475 0.173905 -0.013033 0.063208 0.690797 -0.008421 0.132720 1.086996 1.645328 0.782354 -0.183979 1.129680 -0.038334 0.309007 0.820413 -0.019903 0.219068 -0.034004 1.862396 1.264517 -0.328986 -0.173826 0.092775 0.971239 0.589355 0.046318 0.278218 -0.324594 1.052348 0.137717 1.039883 1.072021 1.828660 0.235023 0.482290 0.107335 0.593976 1.671563 0.291804 0.828707)
+ 8.738911 #(0.000000 1.735390 1.596183 1.688158 0.936460 1.171580 0.505377 0.087525 1.862148 1.431401 0.594847 0.469813 0.196922 0.535307 0.536063 0.953652 1.327262 1.042995 -0.239454 1.283974 0.373825 -0.231495 0.842073 1.180351 -0.200754 1.452179 0.278091 1.438428 0.651650 0.579116 1.359926 1.185874 0.646945 0.889845 1.929037 0.820540 -1.753498 0.788440 0.134659 -0.052264 0.029418 0.734290 -0.032548 0.116885 1.060915 1.618492 0.727618 -0.211968 1.156442 -0.079189 0.326736 0.907689 -0.005226 0.152753 0.054647 1.883310 1.223284 -0.341320 -0.253047 0.094276 0.965735 0.643481 0.075505 0.256644 -0.263207 1.005258 0.117913 1.054554 1.077316 1.857353 0.229976 0.488605 0.099240 0.563812 1.742434 0.311603 0.824202)
)
;;; 78 odd -------------------------------------------------------------------------------- ; 8.8318
#(78 11.455265310659 #(0 0 1 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 1 1 0 1 1 1 1 0 1 0 1 1 1 0 1 0 1 1 0 0 1 1 0 0 1 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 0 1 1 0 0)
- 8.960295 #(0.000000 1.684661 0.810819 0.096817 0.278650 0.711538 0.615969 0.647025 1.076133 0.457296 1.824860 1.141996 0.836762 1.176467 0.045288 -0.179294 0.376737 -0.040588 1.090407 0.439781 0.807567 0.708828 0.241383 0.063426 -0.183244 0.673172 0.618086 0.986184 0.032022 -0.159256 0.460461 0.351489 0.828893 1.151918 -0.081180 0.663029 0.636438 0.527527 1.227297 0.355278 0.918429 1.743651 1.263844 1.441969 0.175923 1.036718 1.804042 1.743247 0.907282 1.300858 1.567997 0.154198 0.059021 0.829480 0.330853 0.230218 0.525271 1.710744 -0.138538 1.381381 1.343383 -0.042208 1.624684 1.384919 0.990581 0.426525 1.225758 -0.230574 1.277886 0.089996 1.665928 0.650795 1.165115 0.236931 1.071089 0.679456 0.664528 0.279323)
+ 8.802318 #(0.000000 1.670624 0.812122 0.146846 0.294174 0.693556 0.587537 0.634781 1.067651 0.436186 1.879310 1.122795 0.875431 1.177280 0.081581 -0.171779 0.307696 -0.040349 1.123589 0.453417 0.838454 0.781236 0.260980 0.086805 -0.163582 0.675514 0.678636 0.987481 0.002829 -0.141018 0.519002 0.397540 0.841714 1.116573 -0.056209 0.665263 0.588230 0.601360 1.262779 0.489363 0.951797 1.844032 1.183466 1.520023 0.226265 1.028907 1.744367 1.798831 0.850890 1.303993 1.629043 0.218880 -0.013397 0.760540 0.223307 0.242187 0.497769 1.705174 -0.220494 1.417201 1.258808 -0.026975 1.662089 1.392477 1.011251 0.392762 1.200206 -0.223742 1.247356 0.076980 1.596406 0.650646 1.163958 0.226439 1.049893 0.648772 0.668638 0.239788)
)
;;; 79 odd -------------------------------------------------------------------------------- ; 8.8882
#(79 11.710210993982 #(0 0 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 0 0 1 1 0 1 0 0 1 0 0 1 0 0 1 1 0 1 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0)
11.54291004024 #(0 0 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 1 1 0 1 0 0 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0)
- 9.199503 #(0.000000 0.166697 0.068085 1.257887 -1.717214 1.116654 0.776968 0.239577 0.176344 0.743217 0.736492 1.048234 1.353593 1.227908 0.220896 1.402908 0.304945 0.051363 1.308404 1.639063 0.233039 1.330790 0.239088 0.822049 0.577224 0.014337 1.159680 1.337955 1.063857 0.758231 1.168212 1.200011 -0.060053 1.025281 1.047546 1.332973 0.809678 1.038818 0.017680 0.227082 1.132049 0.737168 1.709934 0.267517 1.508697 1.418332 -0.112771 0.976310 0.280562 1.061039 0.134970 0.592586 1.418131 1.272580 1.400921 1.707755 0.391108 0.363104 1.317614 0.281407 0.324351 0.109125 1.154538 1.335976 1.082210 0.059131 1.082400 1.088353 0.569540 0.970830 0.569033 0.607951 0.031808 0.933949 1.273776 0.986259 0.298454 1.669412 1.200681)
+ 9.032747 #(0.000000 0.124530 0.084337 1.207012 -1.685634 1.139546 0.798843 0.205513 0.191920 0.771596 0.709294 1.060156 1.306301 1.180129 0.172935 1.469548 0.312389 0.029733 1.276716 1.619060 0.185814 1.335089 0.230224 0.744215 0.640916 0.004372 1.208026 1.376872 1.040587 0.774353 1.196291 1.232790 -0.083283 0.994754 1.089292 1.346886 0.811236 1.121029 0.041263 0.292104 1.163816 0.847947 1.690829 0.233248 1.545365 1.385301 -0.118876 1.000271 0.385071 1.019290 0.095627 0.622982 1.451758 1.306252 1.388413 1.801974 0.366500 0.328922 1.378185 0.301223 0.350573 0.064377 1.218067 1.372685 1.143318 0.091446 1.126163 1.155545 0.581935 0.993663 0.589285 0.695851 -0.012686 0.960401 1.363014 0.999373 0.414897 1.632419 1.206396)
)
;;; 80 odd -------------------------------------------------------------------------------- ; 8.9443
@@ -1984,7 +1934,7 @@
11.501195907593 #(0 0 1 1 1 1 0 0 1 1 1 0 0 0 1 1 1 1 1 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 1 0 0 0 0 1 0 1 1 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 1 0 0 1 1 1 0 1 1)
11.122416496277 #(0 0 0 0 1 1 0 0 1 0 1 0 0 0 1 1 1 1 1 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 1 0 0 0 1 1 0 1 1 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 1 1)
- 9.199283 #(0.000000 0.622736 0.598643 1.515651 0.473193 1.473415 0.262404 1.712067 1.274878 0.985587 0.398227 1.147039 0.385223 0.829120 0.126939 -0.199123 0.068983 0.970901 1.164094 0.637370 1.793166 0.948066 0.512625 0.180924 0.742063 -0.054838 0.306963 1.447237 0.641452 1.165372 0.880388 0.061855 1.288706 1.066216 0.100604 0.646557 0.910784 -0.165872 0.959412 0.114066 0.374211 1.535331 0.469695 0.808676 -0.085182 0.323406 0.850359 1.242138 1.409278 0.804708 0.305372 1.003428 0.396795 0.768059 -0.021221 1.497227 1.080281 0.515414 0.483455 0.983226 1.378784 1.297601 0.136998 0.857143 0.619678 0.143410 0.370969 0.802646 1.276721 1.560464 1.721278 1.881471 -0.120826 -0.111127 1.657537 0.132194 -0.246935 0.005939 -0.448909 0.950352)
+ 8.997577 #(0.000000 0.636877 0.581887 1.539940 0.386937 1.444268 0.263745 1.734047 1.153990 1.178961 0.409904 1.147601 0.400429 0.793591 0.082405 -0.225802 -0.005138 0.884518 1.165242 0.565378 1.788584 1.034146 0.560873 0.163787 0.729783 -0.032842 0.174033 1.452839 0.704434 1.295562 0.894084 0.004572 1.259642 1.086940 0.096265 0.708077 1.040159 -0.118406 0.931958 0.147212 0.380518 1.533426 0.482267 0.849232 -0.105292 0.312144 0.906675 1.300636 1.407112 0.880385 0.323766 1.136133 0.477713 0.832994 0.116063 1.525731 1.176770 0.508202 0.505047 0.932213 1.390120 1.432314 0.100174 0.964697 0.618395 0.240772 0.441270 0.853622 1.360968 1.513958 1.657939 1.949511 -0.043607 -0.157402 1.714453 0.115452 -0.191582 0.004686 -0.363333 0.986587)
)
;;; 81 odd -------------------------------------------------------------------------------- ; 9
@@ -1993,14 +1943,14 @@
11.381307601929 #(0 0 1 0 0 0 1 0 1 0 0 1 1 1 1 0 1 0 1 1 1 0 0 0 0 1 1 0 0 1 0 1 1 1 1 0 1 0 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 0 1 1 0 0 1 0 1 1 1 1 1 1 1 0 0 0 1 1 1 0 1 1 1 1 0 1 1)
11.372210502625 #(0 0 1 0 1 0 0 0 1 0 0 1 1 1 1 0 1 0 1 0 1 0 0 0 0 1 1 0 0 1 0 1 1 1 1 0 1 0 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 0 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 0 1 1)
- 9.356055 #(0.000000 0.133813 -0.106690 0.205713 0.883891 1.351664 0.333467 1.060597 0.311995 0.664549 0.646123 0.670106 1.694307 0.078246 0.397577 1.329787 1.073111 0.936279 0.470970 0.841378 0.335576 0.391460 1.213472 0.804619 -0.061524 0.528336 1.011237 1.381111 0.566757 1.273274 0.890483 1.243136 1.841058 1.066824 0.417280 1.698501 0.502917 0.456383 0.007976 0.974894 1.236830 1.109846 1.444104 1.103410 -0.067577 0.567374 1.084971 0.309210 0.255405 0.522923 0.431679 1.905280 0.602396 0.295860 0.560500 -0.037377 -0.190036 1.704659 1.094028 0.327745 1.178357 0.335608 1.470260 1.470468 1.406267 0.062671 0.008385 1.160928 1.043654 0.104012 0.238132 1.734418 1.470668 0.565448 1.937823 0.440057 0.623022 1.072089 -0.086241 1.253834 1.012897)
+ 9.124737 #(0.000000 0.114951 -0.156617 0.130762 0.948976 1.473460 0.200146 1.050232 0.309432 0.668304 0.600226 0.514324 1.614645 0.027331 0.432070 1.426490 1.078915 0.875206 0.563951 0.769778 0.338472 0.425550 1.096855 0.818145 -0.099872 0.475844 1.040509 1.262558 0.691066 1.297963 0.912010 1.340133 1.837731 1.009196 0.447054 1.654006 0.586541 0.584973 -0.142722 0.933562 1.169420 1.207851 1.299012 1.054464 -0.161428 0.461955 1.126193 0.364440 0.266545 0.366337 0.459641 1.850860 0.511243 0.238437 0.659249 0.020907 -0.149966 1.652743 1.132651 0.182106 1.056700 0.354346 1.466115 1.471448 1.369802 0.090760 0.158789 1.104302 1.024330 0.140711 0.266658 1.726786 1.417821 0.536799 1.861785 0.493346 0.659505 1.031127 -0.084659 1.318665 0.971899)
)
;;; 82 odd -------------------------------------------------------------------------------- ; 9.0554
#(82 11.815696616621 #(0 1 0 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 0 1 0 1 1 1 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 1 1 0 0 0 0 0 1 0 1 1 0 0)
11.662058134504 #(0 1 0 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 0 1 0 0 1 1 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 0 1 1 1 0 1 1 1 0 0 0 0 1 0 1 1 0 0)
- 9.317282 #(0.000000 1.667470 1.043682 0.726697 0.499876 1.596068 1.454031 0.968105 0.771381 0.046114 1.071516 0.840489 1.627292 0.556414 1.690186 1.543898 0.355818 1.280459 0.183768 0.463030 0.204701 1.669902 0.317365 0.110918 0.172352 -0.023403 1.810647 -0.081790 1.035046 0.308809 0.562399 0.523946 1.837506 0.228789 -0.056535 1.841627 0.184058 0.980489 1.096294 -0.337517 -0.146918 0.567670 1.750592 0.586197 0.375585 1.180206 -0.081434 1.828933 0.700597 0.164268 0.915519 1.593531 0.722721 1.270060 0.648836 1.158726 0.355971 1.258292 1.917154 0.598721 0.883623 1.492734 0.272063 1.890183 0.226157 1.493826 1.558973 0.285346 -0.096677 0.944633 0.726784 -0.230798 0.915763 0.751245 1.426186 1.420704 1.205384 0.125375 0.269052 0.398533 0.292507 0.189652)
+ 9.078481 #(0.000000 1.601838 0.894761 0.670953 0.458004 1.500100 1.391379 1.043091 0.767143 -0.052924 1.070188 0.729588 1.675456 0.482970 1.628139 1.499877 0.413042 1.349154 0.073379 0.419784 0.195362 1.674665 0.359240 0.127761 0.104488 0.034246 1.837406 -0.086932 1.066315 0.292320 0.572937 0.472594 1.830611 0.149948 -0.154057 1.844874 0.147315 0.939792 1.021304 -0.364959 -0.169589 0.370528 1.689450 0.534611 0.477872 1.148804 -0.149858 1.725802 0.786765 0.120424 0.861128 1.679040 0.764894 1.319297 0.652896 1.131833 0.318998 1.345715 1.791272 0.554704 0.800169 1.423512 0.291395 1.843602 0.158962 1.517486 1.597817 0.196941 0.003251 0.861936 0.703238 -0.330788 0.898538 0.846063 1.226132 1.494567 1.095987 -0.016822 0.217221 0.422930 0.303449 0.038425)
)
;;; 83 odd -------------------------------------------------------------------------------- ; 9.1104
@@ -2008,7 +1958,7 @@
11.795211509729 #(0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 0 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 0 1 0 0 1 0 1 0 1 1 1 1 0 0 0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 0 1 1 1 1 0 1 1 0 1 1 0 0 1 0 0 1)
11.732900669843 #(0 0 0 1 1 1 1 1 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 0 1 1 0 1 1 0 1 0 0 1 1 1 0 1 0 1 0 0 1 1 0 0 1 1 0 0 1 1 1 1 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1)
- 9.453104 #(0.000000 0.879574 1.302516 0.255360 0.314703 1.772066 1.071321 0.652701 1.404865 0.016506 0.867926 0.917881 0.518078 0.416354 1.611389 0.890481 0.651457 1.217128 1.863193 1.487839 0.933549 -0.076514 0.590993 0.100450 0.029738 -0.037119 0.485594 0.321020 1.364961 0.515760 1.644762 0.315669 1.658988 1.486439 1.848003 0.583632 1.419652 0.263438 -0.063174 0.121981 -0.344738 1.841073 0.604857 1.272382 0.112838 0.664963 0.033966 0.971099 0.586154 0.790461 1.015111 0.653709 0.125710 1.323323 1.390699 0.764908 1.391392 0.891334 0.043950 0.539916 0.628642 0.926719 1.088782 -0.047914 1.600462 0.004552 0.677158 0.651362 1.820740 0.522495 0.049957 1.526147 1.253417 0.064498 0.881692 0.659079 1.158677 0.818902 0.784072 0.713419 0.867742 1.833691 0.202401)
+ 9.256262 #(0.000000 0.893682 1.215062 0.261674 0.301244 1.667892 1.074739 0.652406 1.442497 0.067593 0.950667 0.912763 0.430814 0.452950 1.613732 0.957413 0.663266 1.232666 1.815943 1.394648 0.876667 -0.156633 0.675921 0.118922 0.032695 -0.050568 0.475301 0.368444 1.369712 0.554330 1.616155 0.180142 1.609094 1.517797 1.836897 0.556017 1.428228 0.225802 -0.072555 0.092618 -0.329902 1.869917 0.654493 1.285397 0.093173 0.694397 0.082665 1.005786 0.644490 0.721986 0.974813 0.741512 0.054021 1.280398 1.470244 0.848455 1.334930 0.909569 0.060119 0.598757 0.611960 0.791297 1.017761 -0.052206 1.641962 -0.009148 0.627045 0.733619 1.747315 0.528644 0.095295 1.427405 1.215690 0.096917 0.965641 0.594017 1.219115 0.794731 0.748087 0.769021 0.834615 1.820470 0.166592)
)
;;; 84 odd -------------------------------------------------------------------------------- ; 9.1652
@@ -2016,7 +1966,7 @@
11.724502770898 #(0 0 1 0 0 0 1 0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 1 1 1 1 1 1 0 1 0 1 1 0 1 1 0 1 0 1 0 0 0 0 1 0 1 1 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 1 1 0 0 1 0 1)
11.626023292542 #(0 0 1 0 0 0 1 0 0 1 1 1 0 1 1 0 1 0 0 0 0 0 1 0 0 1 1 1 0 1 0 1 1 0 1 1 0 1 0 1 0 0 0 0 1 1 1 1 0 1 0 0 0 1 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 1 1 0 0 1 0 1)
- 9.640025 #(0.000000 0.028413 1.804062 1.150233 1.818073 0.837644 0.367655 1.910352 1.883355 0.217579 0.372315 1.257074 1.934680 0.867993 1.867228 1.281628 0.880275 0.792337 0.715365 0.598231 0.717001 1.184445 1.685849 -0.382043 0.741932 1.601271 1.535826 0.710883 0.477080 0.818997 1.775396 0.293728 1.813647 1.821714 0.799184 0.194668 1.113939 1.580528 0.980458 1.233671 1.214968 1.664316 1.346095 0.898464 0.571911 0.701144 -0.079594 0.690068 0.748276 0.943673 0.125153 1.112099 0.248475 0.794536 0.301643 0.073394 1.036904 0.413628 1.080806 1.094264 0.729167 0.804742 0.239898 0.642212 1.081007 -0.122042 -0.303378 0.160553 0.648651 0.222720 1.205703 0.720392 1.522239 1.514128 0.282070 1.166889 1.152956 0.268260 1.692586 1.646820 0.636896 1.060675 1.654967 0.312655)
+ 9.408964 #(0.000000 0.011199 1.872976 1.168413 1.820329 0.867383 0.450844 1.903919 1.885618 0.297757 0.420789 1.071304 1.931037 0.911069 1.835102 1.318161 0.981416 0.777558 0.658229 0.501427 0.704380 1.234730 1.576148 -0.404444 0.753521 1.685227 1.528859 0.649710 0.447371 0.876499 1.648904 0.270093 1.826577 1.858564 0.784043 0.266312 1.187931 1.517933 1.063935 1.251907 1.113257 1.739387 1.375415 1.016207 0.631260 0.711247 0.015598 0.673185 0.645110 0.961320 0.201341 1.155064 0.370130 0.721487 0.306549 0.031213 1.034875 0.384948 1.205645 1.057205 0.678961 0.950920 0.242742 0.465042 1.107138 0.006178 -0.411119 0.316488 0.644650 0.284319 1.238909 0.929997 1.429890 1.448449 0.261717 1.173191 1.204126 0.249333 1.635184 1.815514 0.528122 1.083344 1.567156 0.382097)
)
;;; 85 odd -------------------------------------------------------------------------------- ; 9.2195
@@ -2024,7 +1974,7 @@
12.309050256429 #(0 1 1 1 0 1 1 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0 1 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 1 1 0 1 0 0 0 0 0 1 1 0 0 1 1 0 0 1 0 0 1 0 0 0 0 1 1 1 0 0 0 1 1 0 1)
11.829360154975 #(0 0 0 1 0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 1 0 0 1 1 0 1 0 1 0 0 1 0 1 0 0 1 0 1 1 1 1 1 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 1 0 0 0 0 1 1 1 0 0 0 1 1 0 1)
- 9.594687 #(0.000000 0.918820 1.893461 0.729872 0.379528 0.416287 1.667575 1.868778 0.149257 0.787675 0.105648 1.728405 1.621186 1.303692 0.646944 1.345398 0.007057 1.388132 1.882893 0.891728 -0.355527 1.388548 0.857719 1.214029 1.752925 -0.478295 0.888495 0.440437 0.739715 1.771839 1.524393 0.715350 0.859673 1.468758 1.066203 0.375358 1.448620 1.044719 1.670645 0.493968 -0.166244 1.643228 1.464870 0.735970 1.354528 1.228610 0.695069 1.385019 0.556548 0.387913 0.699321 0.248279 0.946261 1.110145 -0.322832 -0.129670 1.283544 1.501191 0.094223 1.724654 0.579890 1.672368 -0.071160 1.075457 0.302408 0.572157 0.918153 0.442936 0.002684 -0.069211 0.385698 0.803335 1.371303 0.938445 0.273730 0.414410 0.330651 -1.786480 0.929593 1.063244 1.214540 0.516454 1.311259 1.380932 0.107861)
+ 9.465775 #(0.000000 0.926497 1.912982 0.724685 0.322627 0.413589 1.660637 1.895832 0.157335 0.778492 0.053572 1.701116 1.628304 1.259287 0.560147 1.396734 0.003145 1.403221 1.839799 0.945257 -0.350698 1.379316 0.852273 1.233339 1.756149 -0.441143 0.862164 0.385721 0.778567 1.732744 1.515948 0.705269 0.907001 1.417527 1.059932 0.423453 1.505797 1.067398 1.729989 0.442347 -0.213637 1.665218 1.507934 0.742993 1.360564 1.246020 0.745280 1.398189 0.629110 0.368349 0.784066 0.272131 0.937863 1.079113 -0.205814 -0.135369 1.359625 1.503164 0.089891 1.766781 0.577191 1.661645 -0.074246 1.074249 0.276953 0.602284 0.967441 0.429099 -0.028654 -0.057574 0.452427 0.797924 1.340649 0.996549 0.304102 0.435701 0.330388 -1.848562 1.004058 1.052755 1.230653 0.600599 1.285129 1.401888 0.150242)
)
;;; 86 odd -------------------------------------------------------------------------------- ; 9.2736
@@ -2032,7 +1982,7 @@
12.274354058598 #(0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 1 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 1 1 0 1 1 0 1 0 0 1 0 0 1 1 1 1 1 0 1 1 0 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 1 1 1 1 0 0 0 1 0 1)
12.140432277993 #(0 0 0 1 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 1 1 0 1 1 0 0 0 0 1 0 0 1 1 1 1 1 0 1 1 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 1 1 1 1 0 0 0 1 0 1)
- 9.639196 #(0.000000 0.658824 0.438777 1.587598 0.112423 0.730053 0.659009 1.186918 0.526597 0.225654 0.090572 0.275566 0.447002 0.359440 0.655864 0.016095 1.713517 -0.416445 0.328366 0.394251 1.363405 1.726777 1.475709 0.303393 0.594110 1.751238 0.651602 0.949580 0.869364 -0.007988 0.874060 1.071950 1.313394 -0.005657 1.506051 0.956066 0.422849 0.465328 0.322076 0.339926 1.752499 1.167728 1.680127 1.825246 -0.091820 1.215926 0.394818 1.030941 1.422792 0.537400 1.273352 -0.085176 1.052369 0.552997 0.007921 1.551202 1.753196 0.877636 1.448585 1.160671 -0.093716 0.633675 1.320941 1.811365 1.505337 0.325101 -0.052851 0.346554 0.977644 0.074990 0.198419 0.773633 0.240286 0.472437 0.173683 1.722807 0.840607 1.232096 1.240622 0.515759 1.821238 0.787704 -0.057138 1.932704 1.026747 0.545802)
+ 9.508311 #(0.000000 0.698209 0.444349 1.643929 0.112040 0.722050 0.603602 1.168865 0.575022 0.207781 0.012829 0.202522 0.500673 0.379354 0.652201 0.028781 1.657214 -0.429080 0.312078 0.298910 1.379272 1.701793 1.446683 0.341962 0.635517 1.706713 0.656114 0.955127 0.848607 0.004977 0.882647 1.007405 1.349936 -0.045731 1.535647 0.942469 0.386739 0.490302 0.265059 0.341273 1.789738 1.154407 1.737990 1.823841 -0.126515 1.195669 0.418465 0.967403 1.364443 0.646463 1.273577 -0.089613 1.051566 0.533401 -0.008559 1.556727 1.818294 0.917012 1.450946 1.151145 -0.065094 0.623682 1.278940 1.799873 1.581680 0.356532 -0.055283 0.339176 0.973130 0.042596 0.214540 0.800970 0.172851 0.485305 0.193391 1.732965 0.845176 1.237689 1.246565 0.532825 1.826631 0.754110 0.023794 1.938503 1.000035 0.526519)
)
;;; 87 odd -------------------------------------------------------------------------------- ; 9.3274
@@ -2040,7 +1990,7 @@
12.481803894043 #(0 1 0 0 0 1 1 1 1 1 0 0 0 1 1 0 0 0 0 1 1 1 1 0 0 0 1 0 1 0 1 1 1 1 0 0 1 0 1 0 0 1 1 0 1 0 0 1 1 1 0 1 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1)
11.937030388359 #(0 0 1 1 1 1 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 0 1 0 1 1 1 1 0 0 0 1 0 0 1 0 1 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 1 1 1)
- 9.848017 #(0.000000 1.336703 0.807820 1.246294 0.733681 1.509888 0.534576 1.049459 0.978630 0.931279 0.122643 -0.067820 1.377460 0.616106 0.736906 -0.039004 0.438765 0.602608 0.729157 1.276678 1.727923 0.179828 1.229050 0.470877 0.961797 0.745493 1.370804 1.403841 0.655516 0.721259 0.903513 1.548151 1.895529 0.835499 0.702595 0.537624 0.286898 0.871541 1.452775 1.545448 1.251681 0.953900 0.442696 0.415701 0.507383 0.336476 0.062481 0.180011 1.099750 -0.065425 0.870920 1.391640 -0.215782 1.192900 0.310783 -0.292688 1.006328 0.666002 -0.090014 1.310638 0.393450 1.611524 0.169150 1.660408 0.944243 1.474199 0.577963 -0.264951 0.171058 -0.512723 1.558195 0.521383 0.387538 1.240528 0.409629 1.056507 0.029907 0.315230 0.753370 0.305856 0.270022 0.605409 1.120014 1.058708 0.476456 -0.216999 1.035128)
+ 9.616596 #(0.000000 1.310958 0.754562 1.303397 0.721025 1.428717 0.591424 1.089303 0.979747 0.851609 0.194103 0.093149 1.289385 0.639454 0.683697 -0.091136 0.287991 0.522150 0.713358 1.352523 1.751207 0.208853 1.160016 0.505751 0.974311 0.729076 1.489718 1.416226 0.722903 0.756989 0.935940 1.604762 1.957054 0.876377 0.616610 0.583314 0.266650 0.826607 1.482778 1.654693 1.219411 0.981839 0.604214 0.483568 0.623712 0.360352 0.014600 0.227366 1.137463 0.038130 0.857015 1.371872 -0.317254 1.268802 0.340543 -0.342336 1.099156 0.565171 -0.060891 1.385410 0.455249 1.756605 0.194859 1.737233 0.971526 1.454731 0.658995 -0.278576 0.143111 -0.500926 1.667969 0.443772 0.433297 1.300228 0.428852 1.148867 0.036290 0.303160 0.837318 0.291675 0.358639 0.667437 1.073533 1.121706 0.591123 -0.191985 1.092217)
)
;;; 88 odd -------------------------------------------------------------------------------- ; 9.3808
@@ -2048,7 +1998,7 @@
12.592202186584 #(0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 1 0 1 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 1 1 0 1 0 1 0 1 1 0 0 0 0 1 0 1 0 0 1 1 1 1 0 0 1 0 0 0 0 0 1 1 0)
12.128922775356 #(0 1 0 1 0 0 0 1 1 1 1 1 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 1 0 0 1 0 0 1 0 0 1 1 1 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 0 0 1 0 1 0 1 1 0 1 0 1 1 1 0 1 1 1 1 1 1 0 0 1 0 1 1 0 0 0 1)
- 9.873969 #(0.000000 0.609067 1.346954 1.552515 1.173230 1.296463 1.675389 0.555026 1.220445 1.057962 0.593249 0.332894 0.551266 0.379815 1.594070 0.441490 1.100590 -0.236312 -0.117599 1.176489 0.151618 0.126040 0.913122 1.523126 0.975884 0.410269 0.831318 1.301947 0.579769 1.849522 1.429516 0.472118 0.668742 0.312255 1.777678 1.276226 -0.027745 0.716822 0.385146 1.626760 0.898208 0.699578 1.685092 1.778881 0.194836 0.353879 1.442072 1.122287 1.607071 0.105590 0.104668 1.195263 -0.067080 1.698046 0.894237 0.918544 1.661923 1.170844 -0.172175 1.238749 0.220890 0.241146 0.370964 1.316642 0.007812 1.127428 0.574871 0.717604 1.547716 0.602606 1.513731 0.048091 1.123841 1.261666 1.137280 1.820740 1.777767 1.604904 1.728800 -0.261671 0.048892 0.468948 -0.062001 1.019609 -0.003211 -0.061609 1.734236 1.581764)
+ 9.594931 #(0.000000 0.645364 1.284970 1.527303 1.140649 1.382156 1.641676 0.588513 1.187402 1.017557 0.576281 0.299151 0.543743 0.323764 1.420274 0.397198 1.098107 -0.138535 -0.221863 1.184868 0.196180 0.027599 0.860021 1.566995 0.926869 0.298582 0.891034 1.247178 0.633219 1.869331 1.507826 0.403947 0.627196 0.436491 1.829661 1.310669 -0.054737 0.712566 0.336665 1.588448 0.912937 0.773448 1.691677 1.755555 0.161679 0.349839 1.388383 0.929272 1.656293 0.233057 0.176298 1.109602 -0.135274 1.612981 0.849452 0.944870 1.633835 1.218814 -0.218076 1.207423 0.276712 0.134046 0.338158 1.318993 0.076816 1.111969 0.763953 0.676770 1.569949 0.565661 1.458829 -0.071861 1.065169 1.303203 1.075593 1.817059 1.667727 1.656139 1.670660 -0.298000 0.041350 0.436296 -0.080122 1.073967 -0.093355 -0.071797 1.644887 1.690544)
)
;;; 89 odd -------------------------------------------------------------------------------- ; 9.4340
@@ -2057,7 +2007,7 @@
12.4725522995 #(0 0 1 1 0 0 0 0 1 1 1 0 1 1 1 1 1 0 0 0 1 1 1 1 1 0 1 1 0 1 1 1 1 0 0 1 0 1 1 1 0 1 1 1 1 1 1 0 0 1 1 1 0 1 0 0 1 0 1 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 1 1 0 1 1 1 1 1 0 1 1 0)
12.362 #(0 1 1 0 1 1 1 0 0 0 1 0 0 1 0 1 1 1 1 0 0 1 0 0 0 0 0 1 1 0 0 1 1 1 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 1 0 0 1 0 1 1 1 0 1 1 1 1 0 1 1 0 1 0 1 0 1 1 1 0 0 0 1 0 1 1 1 0)
- 9.855102 #(0.000000 0.073174 0.827631 0.079947 0.228918 0.920022 0.454248 1.285068 0.261943 0.739988 0.321910 -0.163504 0.456591 1.713143 0.806420 -0.065573 0.125491 1.167523 1.529615 1.350507 1.137483 1.183768 -0.214273 1.490663 1.482396 1.289073 1.091881 0.451433 1.389461 1.311250 0.246667 1.488331 0.358714 0.631064 0.360768 1.809757 0.888023 -0.159159 0.189603 1.063726 0.791469 1.660225 0.975746 1.682594 0.814075 0.975580 1.433604 0.367317 0.005501 1.254942 1.067396 1.188398 1.383477 0.670275 0.336775 0.889137 1.142909 1.349130 1.724552 0.934275 1.434983 0.219395 0.683674 0.190601 1.317366 1.562453 -0.541175 1.225206 0.519596 1.228889 -0.362941 0.607406 0.582203 -0.114791 0.000838 1.031046 0.757721 1.866435 1.603047 0.740204 0.975565 0.835672 1.163017 1.610787 1.022869 -0.271753 0.224168 -0.003744 0.436978)
+ 9.637715 #(0.000000 0.118473 0.873820 0.079663 0.220670 0.920556 0.435133 1.249489 0.183350 0.707019 0.335084 -0.103878 0.518593 1.762831 0.852754 0.028931 0.097691 1.070260 1.492104 1.356240 1.063631 1.206684 -0.261304 1.480145 1.440942 1.306084 1.087408 0.400909 1.355536 1.394566 0.251007 1.461126 0.403052 0.653539 0.353989 1.790756 0.913545 -0.143795 0.239250 1.132374 0.720785 1.679808 0.972580 1.733928 0.785455 1.000248 1.391928 0.433720 0.003345 1.225461 1.097790 1.191241 1.368353 0.547678 0.318860 0.828321 1.117309 1.378465 1.814855 0.872410 1.396290 0.320538 0.687825 0.249687 1.258112 1.521271 -0.596747 1.284795 0.611924 1.261608 -0.371506 0.522661 0.511535 -0.081526 0.006063 1.046478 0.755202 1.838428 1.522432 0.800048 0.899579 0.885785 1.185348 1.625803 0.975754 -0.132463 0.284623 -0.062513 0.435356)
)
;;; 90 odd -------------------------------------------------------------------------------- ; 9.4868
@@ -2065,7 +2015,7 @@
12.44910044225 #(0 0 0 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 0 0 0 0 0 1 1 1 1 1 0 1 1 0 0 0 0 0 1 1 1 1 0 1 1 0 1 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 1 1 1 0 1 0 1 1 0 1)
12.309 #(0 0 0 0 1 1 0 1 1 0 1 1 0 0 1 1 0 1 0 0 1 0 1 1 1 1 0 0 0 0 0 0 1 1 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 0 0 0 1 1 1 0 1 1 1 0 0 1 0 1 0 1 1 1 1 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 1)
- 9.998446 #(0.000000 0.548990 -0.013589 0.883027 0.816655 1.911657 0.146732 1.027771 1.220763 -0.110292 0.913604 1.701929 0.840243 -0.010393 0.524649 0.311931 1.194525 0.138961 0.834923 0.801796 1.265111 0.632984 -0.166195 1.827621 0.766082 0.214109 1.423908 0.593722 0.195928 0.514888 0.511352 1.311811 1.122524 1.121438 1.161205 0.861625 -0.348739 0.708571 1.395140 0.263011 0.740660 0.735578 0.603733 1.061909 1.657221 1.682470 1.430409 0.995781 1.916272 1.443946 1.164521 0.985385 1.227893 1.191732 1.553673 0.317660 0.739684 0.276108 0.850127 0.662704 0.069474 0.928973 1.210959 0.178976 0.464508 0.751665 0.944936 1.813331 0.864801 0.173811 0.177229 -0.136332 1.076385 1.529336 1.726312 0.388393 0.212401 1.839591 0.799567 0.231837 0.443069 0.036759 1.508101 1.229636 0.336741 1.038660 1.042210 0.491496 0.603914 -0.096908)
+ 9.776509 #(0.000000 0.611589 -0.047171 0.875863 0.807380 1.937640 0.082392 1.028888 1.189638 -0.080529 1.047900 1.837110 0.791004 -0.082925 0.515469 0.297371 1.140866 0.124356 0.815287 0.721951 1.221301 0.613645 -0.234314 1.751554 0.724735 0.289161 1.459885 0.654832 0.224545 0.547723 0.462838 1.334765 1.042715 1.123260 1.167848 0.831018 -0.381585 0.702130 1.410278 0.259296 0.800644 0.669328 0.648056 0.932340 1.733600 1.655479 1.488680 1.084087 1.930475 1.451279 1.103758 0.968436 1.199062 1.262166 1.536981 0.321166 0.688840 0.385842 0.874995 0.656118 0.081488 0.928260 1.322135 0.249322 0.511966 0.867636 0.908130 1.903958 0.899316 0.198052 0.189817 -0.057447 1.239062 1.514774 1.762368 0.374613 0.219657 1.842120 0.840114 0.108939 0.402350 0.127707 1.526821 1.291687 0.439352 1.025206 1.136881 0.438204 0.552035 -0.191766)
)
;;; 91 odd -------------------------------------------------------------------------------- ; 9.5394
@@ -2073,14 +2023,14 @@
12.7095674403 #(0 0 1 1 1 1 0 0 1 1 1 1 0 1 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 1 0 1 1 1 0 0 1 1 1 0 1 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 1 0 1 1 0 0 1 0 1 0 0 0 0 1 1 0 1 1 1 1 1 1 0)
12.351367950439 #(0 1 0 1 1 0 1 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 1 1 1 0 0 0 1 0 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 0 0 0 1 1 1 1 1 0 1 1 1 1 1 0 0 0 1 0 0 0 1 1 0 1 1 1 0 0 1 0 0 1 1 1 1 1 0)
- 10.004487 #(0.000000 0.078152 0.770677 0.927598 1.612057 -0.068116 1.020414 0.143774 0.439720 0.288229 1.001685 0.128407 -0.099339 1.073875 1.099324 0.107389 1.320176 1.501912 0.111357 1.696434 0.687627 0.251635 -0.127544 0.222361 1.112957 0.469501 1.458590 1.474545 1.425461 1.400937 0.203285 0.429316 1.548744 1.876549 0.919924 0.518146 1.007383 1.476080 0.989685 0.493203 0.997184 1.098867 0.004664 1.254564 0.865352 1.334304 1.629761 0.518756 0.124921 0.934014 1.163539 0.312246 0.549865 0.153557 0.237387 0.745393 0.898258 -0.025714 1.220968 1.149489 0.564292 0.849027 0.441088 1.091722 0.869800 1.484940 0.902495 1.305380 0.603203 0.859886 0.010344 1.644651 0.878745 -0.064352 0.703062 0.768528 1.355468 1.776649 1.479452 0.885675 -0.129772 1.065837 1.759765 1.071660 1.221772 0.843789 1.538800 0.486414 0.424897 0.209647 0.126965)
+ 9.644586 #(0.000000 0.113503 0.898045 0.964476 1.557687 -0.111493 1.003295 0.098401 0.556034 0.258119 0.903989 0.156890 -0.040302 1.029213 1.091723 0.111424 1.298763 1.388774 0.101717 1.657855 0.729003 0.291327 -0.096216 0.238150 1.171923 0.492944 1.608261 1.440764 1.557587 1.440428 0.094402 0.538084 1.384345 1.899785 0.828102 0.397227 1.077210 1.476985 1.023856 0.531612 0.966626 1.007047 -0.035241 1.430467 0.874782 1.350416 1.602491 0.619025 0.260341 0.988819 1.159468 0.370169 0.455666 0.094277 0.327448 0.745349 0.892751 -0.061704 1.218864 1.156000 0.674546 0.749114 0.539252 0.971841 0.689801 1.571665 0.984689 1.318256 0.534017 0.887115 -0.032593 1.784222 0.988524 -0.103480 0.690376 0.786012 1.343014 1.787947 1.458712 0.883868 -0.045066 1.216882 1.704241 1.091187 1.297374 0.814516 1.532912 0.548448 0.331032 0.322422 0.158280)
)
;;; 92 odd -------------------------------------------------------------------------------- ; 9.5917
#(92 12.42142723142 #(0 1 1 0 1 1 0 0 1 1 1 1 0 0 1 1 0 0 1 0 1 1 1 1 1 0 1 0 0 1 1 1 1 0 1 0 1 1 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 1 1 0 0 1 0 1 0 1)
12.280749613899 #(0 1 0 0 1 0 0 0 1 1 1 1 0 0 1 1 0 0 0 1 1 0 1 1 1 1 1 0 0 1 1 0 0 0 0 0 1 1 0 0 0 1 0 1 1 1 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1)
- 10.026156 #(0.000000 1.385852 1.208664 0.928649 0.611368 1.727910 0.207983 1.683962 0.747340 0.776060 0.589355 0.399163 -0.058556 0.936825 1.413992 0.937500 0.382156 1.902641 0.585365 1.523101 -0.106242 1.751878 0.015500 -0.311127 0.724432 0.889864 1.047535 0.421466 1.087470 1.260956 0.648931 1.351216 1.214659 0.030558 0.233365 1.656426 0.725526 0.085327 1.490620 0.798361 0.368896 1.105489 0.264873 1.162891 0.798861 0.727882 1.815519 1.521362 1.025752 0.786428 0.202242 1.413890 0.721019 0.723510 1.165029 1.489543 -0.012407 0.551201 1.421930 -0.062926 0.444923 1.036913 1.181081 0.883300 1.413448 1.046847 1.229748 0.611539 0.594477 0.988828 1.622521 0.962075 1.520403 0.871860 0.997483 -0.021682 0.972890 1.659807 1.767806 1.684490 0.162430 0.594927 0.700560 1.335834 0.554676 0.255673 0.126380 0.447183 0.087214 -0.092555 1.870001 0.787656)
+ 9.792560 #(0.000000 1.311227 1.095471 0.911889 0.561518 1.789320 0.165118 1.652081 0.710823 0.863412 0.638391 0.395031 -0.186528 0.908241 1.473902 0.997284 0.353293 1.866582 0.623422 1.491470 -0.091245 1.651552 0.059111 -0.293786 0.646960 0.849573 1.013970 0.510008 0.939961 1.232035 0.565772 1.276939 1.254081 0.016816 0.263524 1.674680 0.789913 0.075357 1.511350 0.844444 0.412718 1.248236 0.235113 1.174518 0.931833 0.738422 1.784115 1.513496 1.007028 0.698572 0.219242 1.418482 0.631120 0.825399 1.069170 1.543537 0.047301 0.550701 1.443321 -0.070146 0.407054 1.103595 1.281089 0.894269 1.366310 1.021936 1.218229 0.623481 0.656138 1.044792 1.580630 0.953934 1.495461 0.828386 0.950244 -0.056766 0.946216 1.618919 1.766436 1.706140 0.197911 0.565681 0.647612 1.409929 0.485433 0.285870 0.088329 0.396975 0.120320 -0.157939 1.765280 0.713769)
)
;;; 93 odd -------------------------------------------------------------------------------- ; 9.6437
@@ -2089,14 +2039,14 @@
12.587555885315 #(0 1 1 1 0 1 1 1 0 0 0 1 1 1 0 1 0 0 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 0 0 0 0 1 1 1 0 0 1 0 0 0 1 1 1 0 1 1 0 1 0 1 1 1 1)
12.403578299298 #(0 1 1 1 1 0 1 1 1 0 0 0 1 1 1 1 0 1 1 1 1 1 1 0 1 1 0 1 0 0 1 1 0 1 0 1 1 0 0 0 1 0 0 0 1 1 1 0 1 1 0 1 1 1 0 1 1 1 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 0 0 1 0 1 1 1)
- 10.301641 #(0.000000 1.441472 1.410040 0.723949 -0.056282 -0.171465 1.077436 1.137930 0.895409 1.036967 0.470618 1.094707 0.826778 1.719769 1.491915 1.321245 0.477041 1.348377 1.629627 0.899508 1.742679 0.050549 -0.146991 1.620705 0.754799 1.116522 0.539096 0.529543 0.005477 1.426134 1.512584 -0.357418 -0.007440 0.330619 0.156202 0.806006 -0.123457 0.556093 1.960540 0.111763 -0.146923 1.100544 0.374760 1.788559 1.314144 0.152602 0.084374 0.806499 1.807619 -0.015246 1.651371 0.952368 -0.038575 0.550462 0.988400 1.524574 0.400579 1.255039 1.875691 0.467142 0.836609 1.159580 1.576051 1.671242 1.061235 1.429652 0.926203 1.748838 0.682014 1.274114 0.375435 0.137635 1.205452 0.269315 0.035283 0.735377 -0.079004 1.524374 1.948482 0.252306 0.995231 1.007209 1.514703 0.848294 1.284115 1.223435 1.274628 1.794796 0.672432 0.205276 1.387772 1.493043 1.037730)
+ 9.976719 #(0.000000 1.372133 1.304589 0.578236 0.004747 -0.142577 1.018717 1.183676 0.952782 0.945775 0.380481 1.032602 0.910151 1.755349 1.573263 1.351161 0.496498 1.342917 1.704259 1.062218 1.705819 0.220731 -0.191359 1.665093 0.736479 1.183430 0.487862 0.547633 0.134680 1.431730 1.484820 -0.370633 0.006930 0.398938 0.047111 0.863142 -0.064386 0.497704 0.168173 0.113112 -0.128071 0.982230 0.283399 1.798758 1.420293 0.016744 -0.036419 0.763650 1.865671 0.010614 1.672654 0.878173 -0.170333 0.666511 0.885451 1.459523 0.378362 1.294566 1.836101 0.407978 0.825840 1.201687 1.700963 1.841255 1.137640 1.403926 0.978616 1.741072 0.728226 1.405123 0.379029 0.114544 1.115538 0.399366 0.177843 0.740212 -0.171513 1.470670 0.056179 0.077652 0.980858 1.016733 1.610229 0.934386 1.370440 1.237583 1.420839 1.855116 0.736434 0.111889 1.361588 1.422191 1.085650)
)
;;; 94 odd -------------------------------------------------------------------------------- ; 9.6954
#(94 12.792093608509 #(0 1 1 1 1 0 0 1 0 1 1 0 0 1 0 0 1 1 0 1 1 1 0 0 1 1 1 0 0 0 1 0 1 1 1 1 0 0 1 1 0 0 1 0 1 0 1 1 1 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 1 0 1 1 1 1 0 1 0 0 0 1 0 1 0 1 1)
12.789479876738 #(0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 0 1 1 0 1 1 1 0 0 1 1 1 0 0 0 1 0 1 1 1 1 0 0 1 1 0 0 1 0 1 0 1 1 1 1 1 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 1 1 1 0 0 1 0 1 1 1 1 0 1 0 0 0 1 0 1 0 1 1)
- 10.246531 #(0.000000 1.572127 0.918167 0.931303 0.579428 0.757744 1.139742 0.427803 0.813918 0.344123 0.823057 0.661306 1.482942 1.801637 0.528972 -0.299165 1.377298 0.839549 1.103163 0.044263 0.811150 -1.833733 0.450365 1.469564 0.121778 -0.028299 0.502007 1.212750 -0.013861 0.345975 1.607946 0.245211 -0.085913 0.421630 1.179262 0.179401 0.449289 0.479601 1.230364 1.037325 0.860549 0.818364 0.694820 0.846088 1.001084 0.798161 -1.900813 0.078596 1.156388 0.295991 0.813550 0.286828 0.094353 0.461946 1.392309 1.878412 0.164799 0.731502 0.701037 0.466133 1.799641 1.306077 0.758549 1.472138 0.119145 1.420089 0.544069 0.967276 1.103590 1.777955 0.032539 1.617762 -0.002929 1.503619 0.430085 0.416174 0.851290 1.577134 1.119429 -1.880332 1.656605 1.384575 1.939059 1.331834 1.559054 -0.007478 0.929704 0.745377 0.580189 1.104295 0.043673 1.536938 1.403889 0.727226)
+ 9.981215 #(0.000000 1.446775 0.852391 0.885349 0.619952 0.682733 1.117147 0.421420 0.837038 0.343684 0.789980 0.576493 1.472358 1.784598 0.625810 -0.325945 1.336142 0.741427 1.021414 0.042998 0.935510 -1.825758 0.494225 1.457995 0.176545 0.011408 0.577961 1.307908 0.019996 0.345202 1.549905 0.246641 -0.100440 0.495400 1.190386 0.157716 0.550178 0.465111 1.290009 1.092483 0.851143 0.839357 0.781613 0.818905 0.963675 0.805610 -1.913712 0.000307 1.160106 0.225606 0.788435 0.310311 -0.065879 0.474473 1.411518 1.922760 0.183203 0.762082 0.643243 0.288494 1.776261 1.338461 0.754453 1.468051 -0.008241 1.424508 0.563818 1.034118 1.091810 1.866418 0.074631 1.604710 -0.073837 1.528895 0.357169 0.443813 0.862544 1.501150 1.071485 -1.927086 1.712123 1.303318 -0.023481 1.323548 1.573185 0.020282 0.882700 0.716927 0.578943 1.052475 -0.069819 1.537088 1.438403 0.732174)
)
;;; 95 odd -------------------------------------------------------------------------------- ; 9.7468
@@ -2105,7 +2055,7 @@
12.858592033386 #(0 1 1 0 1 0 0 0 1 1 1 0 0 0 1 0 1 0 1 0 1 1 0 0 1 1 1 0 0 1 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0)
12.575266058635 #(0 1 1 0 1 0 1 0 1 1 1 0 0 0 1 0 1 0 0 0 1 0 0 0 1 1 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 1 0 1 1 0 1 0 0 0 1 1 0 1 1 1 1 1 0 0 0 1 1 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 0)
- 10.007008 #(0.000000 1.339606 0.114442 -0.524223 1.783157 1.406115 0.955294 1.147207 1.369985 0.329639 0.823044 1.369910 1.909975 1.150587 0.770887 0.891014 0.209205 0.248648 0.412032 1.226254 0.260083 1.567759 1.150873 0.410629 0.776911 0.252741 0.232365 0.789543 1.633449 1.278840 0.589716 0.219486 0.315245 1.718018 0.985476 1.210864 0.048321 0.728415 1.415357 1.163794 0.865913 1.875407 1.183813 0.800709 0.681927 0.431557 1.769332 1.354907 1.225164 1.422861 1.922921 0.633553 0.763270 1.159262 0.732507 1.464124 -0.034941 0.223014 -0.302655 1.794808 1.053366 -0.167664 0.974990 -0.184488 1.119593 -0.209763 0.915393 1.320643 0.099857 0.215138 1.101394 1.111418 0.388564 0.890046 0.703081 0.829922 0.818245 1.129395 1.388724 1.508645 -0.040380 1.428742 1.839127 1.088302 -0.240682 -0.206039 1.196411 0.491986 1.357436 1.121357 0.413806 0.038753 0.892477 0.987348 0.105276)
+ 9.895207 #(0.000000 1.294597 0.114284 -0.486761 1.741069 1.381430 0.964083 1.117816 1.388906 0.342642 0.872766 1.378391 1.907719 1.120729 0.720717 0.950296 0.270703 0.292914 0.393244 1.239882 0.226556 1.596804 1.136431 0.362748 0.770201 0.278303 0.171935 0.802359 1.605155 1.249030 0.605698 0.222725 0.334276 1.735874 0.973315 1.189809 0.043126 0.714433 1.433438 1.159849 0.876971 1.864162 1.179605 0.768142 0.687888 0.416196 1.737711 1.298652 1.202426 1.478003 1.920223 0.618990 0.786292 1.161632 0.776728 1.480163 -0.038293 0.206154 -0.305035 1.777596 1.033430 -0.186063 0.985612 -0.186625 1.123576 -0.161678 0.928269 1.385889 0.113635 0.195768 1.139533 1.076719 0.306286 0.860468 0.700504 0.777234 0.793069 1.120006 1.348870 1.479147 -0.053140 1.447356 1.826338 1.128569 -0.204130 -0.174679 1.194519 0.543785 1.351651 1.191571 0.474454 0.029616 0.957018 0.987115 0.129300)
)
;;; 96 odd -------------------------------------------------------------------------------- ; 9.7980
@@ -2114,7 +2064,7 @@
12.956554412842 #(0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 1 1 0 1 0 1 0 1 0 0 1 1 1 1 0 0 1 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 1 1 1 1 0 1 1 0 0 0 1 0 0 0 0 1 1 1 1 1 1 0 1 0 1 1 1 0 1 0 0 1 1 0)
12.803173065186 #(0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 1 1 0 1 0 1 0 1 0 0 1 1 1 1 0 0 1 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 1 1 0 1 1 0 0 0 1 0 0 0 0 1 1 0 1 1 1 0 1 0 1 1 1 0 1 0 0 1 1 0)
- 10.276202 #(0.000000 0.693752 1.646635 0.316763 0.142135 0.191992 1.046275 0.406035 0.319438 1.914066 0.457860 1.815512 0.690674 0.792192 1.354962 0.178161 0.415037 0.509189 0.808493 0.045364 1.055720 1.989012 0.533990 -0.106888 0.284597 1.163028 1.469909 0.410214 0.617850 0.234228 0.305753 1.448662 1.664895 1.471360 1.162546 0.544365 1.120254 -0.007657 0.918954 0.034115 1.740803 1.876235 0.397892 0.414838 0.665361 -0.059340 0.654781 0.875535 1.686293 0.610716 0.588382 0.753332 1.407529 1.093190 1.771058 0.821707 1.860251 1.300589 0.634825 0.653137 0.987068 1.077430 0.791472 0.052882 0.113883 -0.315822 1.224585 0.477387 0.527639 0.630360 1.405277 0.946110 1.305449 -0.055397 0.287183 1.159189 1.557710 1.920133 0.554841 0.088184 1.462953 -0.074492 1.431437 1.532879 1.566309 1.202511 0.012885 1.530123 0.821123 0.503054 1.499805 0.672145 0.291486 1.755831 0.173124 0.855056)
+ 10.005112 #(0.000000 0.617120 1.588892 0.358869 0.190571 0.184029 1.116872 0.353266 0.272840 1.923568 0.485941 1.873664 0.719750 0.860737 1.356115 0.189260 0.407958 0.476678 0.757078 0.005696 0.976626 -0.082715 0.574172 -0.127992 0.359756 1.230639 1.449247 0.384123 0.632913 0.212186 0.375158 1.409850 1.689817 1.466780 1.191834 0.580828 0.969630 0.050457 0.972741 -0.040323 1.754130 1.824394 0.327324 0.348180 0.551902 -0.074246 0.653313 0.867464 1.653595 0.691841 0.660586 0.692106 1.407798 1.143671 1.675970 0.853383 1.797911 1.263992 0.623580 0.739114 0.952005 1.083047 0.761744 0.009292 0.196697 -0.320189 1.187374 0.396405 0.572542 0.589034 1.440309 0.969511 1.266222 0.049857 0.272646 1.175018 1.638573 -0.023757 0.533095 0.144951 1.527582 -0.210768 1.462077 1.498369 1.578091 1.202679 -0.015967 1.467018 0.797949 0.431087 1.560928 0.729157 0.293598 1.837069 0.176960 0.846070)
)
;;; 97 odd -------------------------------------------------------------------------------- ; 9.8489
@@ -2122,7 +2072,7 @@
12.954301727663 #(0 1 0 1 1 0 0 0 1 0 0 1 1 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 1 0 0 0 0 0 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 0 1 1 0 1 1 0 1 0 0 1 1 1 1 1 1 0 1 0 0 0)
12.837450993031 #(0 0 1 1 0 1 1 0 0 0 1 0 1 1 0 1 0 1 1 0 0 0 1 1 0 0 0 0 1 1 1 1 1 1 0 1 1 1 0 0 1 1 0 0 1 1 1 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 1 1 1 0 1 0 1 0 0 1 1 1 1 1 1 1 0 1 0 0 0 1 0 1 0 0 1 1 0 1 1)
- 10.389322 #(0.000000 0.350712 1.513081 0.085939 -0.187116 1.078672 0.214994 1.052464 1.730095 0.478749 1.679194 0.053223 0.782529 1.099303 1.860913 0.910416 0.723930 -0.129990 0.053676 0.570447 0.419587 1.160840 0.725305 0.728464 0.523025 0.620632 0.383880 0.506814 1.505892 0.157249 -0.085872 1.677110 1.782853 0.278600 1.179509 1.283488 0.440333 0.395430 0.657001 0.560079 1.354208 -0.089222 -0.134217 1.710250 0.247729 1.547568 0.376067 1.700773 0.003215 -0.154222 1.631390 0.475204 1.590700 1.258065 0.565474 1.833558 1.744090 1.081077 -0.029188 0.200841 0.275571 0.643885 1.047871 -0.005562 0.095652 1.652247 0.704730 0.094037 0.759699 0.540293 0.549873 0.809604 1.678006 1.419553 0.875674 0.724551 -0.081858 -0.053700 1.362172 1.693938 0.610163 0.447690 1.168025 1.775015 1.649503 0.695968 0.191919 0.722205 1.752769 0.599909 0.595531 1.055231 1.554874 0.838440 1.018718 0.761788 0.019553)
+ 10.086069 #(0.000000 0.398869 1.507939 -0.018128 -0.145979 1.335916 0.248372 1.116940 1.630673 0.517062 1.662739 0.068616 0.804142 1.098387 1.860269 1.011633 0.733679 -0.279321 0.109589 0.713828 0.443164 1.052728 0.676240 0.720178 0.604448 0.635460 0.391441 0.601205 1.411836 0.135565 -0.103973 1.582032 1.850182 0.322504 1.312902 1.255624 0.330892 0.376910 0.698343 0.604906 1.375487 -0.163554 -0.299708 1.766757 0.226189 1.601426 0.538535 1.736643 -0.043635 -0.310556 1.615539 0.515201 1.580448 1.201139 0.607786 1.937500 1.621913 0.985952 -0.031094 0.145717 0.263288 0.652672 1.008662 -0.044349 0.195905 1.687043 0.645112 -0.065677 0.689770 0.518299 0.525334 0.767597 1.716590 1.580933 0.924519 0.743766 0.028140 -0.037581 1.390709 1.624999 0.589007 0.414418 1.242588 1.835232 1.713202 0.804987 0.253729 0.758930 1.938406 0.604528 0.561383 0.988918 1.540613 0.882247 1.075975 0.672351 -0.010718)
)
;;; 98 odd -------------------------------------------------------------------------------- ; 9.8995
@@ -2131,7 +2081,7 @@
13.062 #(0 0 0 0 1 0 0 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 1 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1 0 1 1 0 0 1 0 1 0 1 1 1 0 0 0 1 1 0 1 0 1 1 0 1 0 0 0 1 1 1 1 1 1 0 1 0 1 1 1 0 0 0 0 0 1 1 0)
12.972 #(0 0 1 1 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 1 1 0 1 1 1 0 0 1 1 1 1 1 1 1 0 0 0 1 0 1 0 1 0 0 1 1 1 1 1 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 1 1 1 1 0 1 1 1 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0 1 0 0 1 0)
- 10.398671 #(0.000000 0.997743 0.704639 0.025414 -0.126617 1.179234 1.759046 0.866874 0.584333 -0.169309 -0.037733 1.684322 -0.083602 1.444928 0.825503 1.503054 0.420215 0.803565 1.616054 0.035988 1.173743 1.644743 1.080236 0.714881 0.171193 1.746957 1.639860 1.647036 1.433366 0.676861 0.234202 1.173182 1.303414 1.144658 1.326706 -0.090625 0.903339 -0.270081 0.839564 1.054809 0.366817 1.381854 1.230534 0.103949 1.177597 0.394864 0.678038 0.731294 0.452565 0.701060 0.898454 1.412751 1.524667 0.296914 -0.100935 0.198728 -0.232736 1.548240 0.354019 0.136427 0.185440 0.897343 1.119655 0.684912 0.979678 0.578611 1.586509 0.506284 0.416505 0.785105 1.314405 1.495126 0.692596 0.451754 1.098861 1.121402 0.671823 0.068595 -0.185829 1.129173 1.743454 0.665599 1.382768 1.015379 0.542578 0.737339 1.150173 0.046523 0.709922 0.194314 1.311885 1.765844 1.333644 1.767855 1.624767 0.415613 1.063668 1.493626)
+ 10.155218 #(0.000000 1.050858 0.748649 0.031516 -0.172550 1.115795 1.756968 0.878801 0.629081 -0.208299 0.000871 1.702547 -0.071168 1.446723 0.781138 1.546944 0.475575 0.728792 1.570481 -0.009931 1.133655 1.636190 1.143582 0.638436 0.173628 1.717524 1.634291 1.637348 1.504551 0.705469 0.219154 1.210848 1.213830 1.172235 1.315263 -0.124468 0.866026 -0.257476 0.799569 1.045481 0.383177 1.379118 1.210118 0.126438 1.232877 0.379458 0.702358 0.804482 0.423827 0.644616 0.933090 1.359384 1.521676 0.306341 -0.110883 0.195570 -0.222632 1.533635 0.333114 0.113787 0.138863 0.805267 1.151257 0.677023 0.972896 0.609210 1.620200 0.475807 0.443530 0.728962 1.334846 1.504495 0.710432 0.414621 1.075889 1.155960 0.685302 0.109538 -0.164632 1.129468 1.663415 0.638477 1.399650 1.077825 0.587508 0.727192 1.144090 0.045001 0.734890 0.234681 1.308068 1.701788 1.399063 1.803874 1.715939 0.382380 1.032349 1.525557)
)
;;; 99 odd -------------------------------------------------------------------------------- ; 9.9499
@@ -2140,7 +2090,7 @@
13.046126365662 #(0 1 1 1 1 0 1 0 1 1 1 1 0 1 0 1 0 0 0 1 1 1 1 0 0 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 0 0 1 0 1 0 1 0 0 1 1 0 1 0 0 0 0 1 0 1 1 0 1 0 0 1 1 1 0 0 1 1 0 1 1 0 1 0 0 1 1 1 1 1 1 1 0 0 0 1 0 0 1 1 0 0 1)
13.000000000002 #(0 1 0 1 1 0 1 0 0 1 1 1 1 0 1 0 0 1 0 1 1 1 1 0 0 1 1 1 1 1 0 0 0 1 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 1 1 1 1 1 1 0)
- 10.683567 #(0.000000 0.479321 0.084834 1.549552 1.298207 1.052032 1.221457 0.141487 1.059239 0.718062 1.336261 1.770515 1.501358 1.430894 1.784165 0.578723 0.260822 1.220211 0.998147 0.281728 0.960035 -0.588695 1.133965 1.453599 1.351183 0.007811 1.384855 1.314317 0.643883 1.326187 1.721376 0.020914 0.676960 -0.103714 0.809944 1.632195 0.116975 1.380230 0.951932 0.133235 1.516709 0.511898 0.718216 1.454154 1.499887 0.515859 1.172541 0.505607 0.329952 0.229730 0.959124 -0.275039 0.590734 1.006862 -0.032756 1.372010 0.177037 -0.272448 0.641299 0.288148 1.177329 0.830553 1.125630 0.544864 0.143127 0.829740 0.576700 0.264182 0.686064 0.427184 -0.128357 -0.202460 1.741752 1.182225 0.440141 -0.155524 1.803314 1.326075 0.450673 1.601789 0.434751 0.679106 1.476715 -0.342412 1.224309 1.735263 0.216140 0.729113 0.983837 1.103511 0.651614 0.692297 0.878395 0.593783 1.353281 0.221804 1.129596 1.410006 1.079376)
+ 10.312958 #(0.000000 0.481560 0.120353 1.531203 1.294463 1.021971 1.157967 0.225422 0.936028 0.666017 1.370380 1.664911 1.421465 1.506153 1.733268 0.427854 0.347583 1.242834 0.958737 0.120568 0.836343 -0.629422 1.050583 1.465543 1.320776 0.008312 1.397959 1.269762 0.565281 1.406719 1.778284 0.024204 0.695912 -0.235541 0.733813 1.565309 0.201413 1.300540 1.025639 -0.049691 1.491657 0.491767 0.693599 1.420362 1.569512 0.514109 1.080007 0.497877 0.276235 0.109730 0.916928 -0.196384 0.463796 1.026422 0.019584 1.327741 0.228323 -0.269108 0.695896 0.513366 1.062644 0.824350 1.143454 0.754550 0.277373 0.879252 0.562791 0.303071 0.667775 0.632851 -0.185723 -0.229321 1.792582 1.191966 0.521501 -0.053550 1.764763 1.310815 0.439362 1.794328 0.412807 0.497547 1.483212 -0.289427 1.173897 1.717957 0.106241 0.728315 0.938941 1.045705 0.724619 0.686808 1.201837 0.595334 1.345626 0.190333 1.194583 1.367612 0.981855)
)
;;; 100 odd -------------------------------------------------------------------------------- ; 10
@@ -2148,28 +2098,28 @@
13.24493912033 #(0 1 1 1 0 1 0 1 1 0 0 0 0 1 1 0 1 0 0 1 0 1 1 0 0 1 0 1 1 1 0 0 1 1 1 1 1 0 1 0 0 1 0 0 1 1 0 0 1 1 1 1 1 1 0 0 1 1 0 0 0 1 0 1 0 1 1 1 0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 0 0 0 0)
13.117680368039 #(0 1 1 1 0 1 1 1 1 0 1 1 0 1 1 0 1 0 0 1 0 1 1 0 0 0 0 1 1 1 0 0 1 1 1 1 1 0 1 0 1 1 0 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 1 0 1 0 0 1 1 1 0 0 0 0 0 0)
- 10.530961 #(0.000000 0.998522 0.792867 0.756615 0.330244 1.663664 0.571072 1.069722 1.715501 0.504643 1.364987 0.668094 -0.215524 0.422347 0.729483 1.109537 -0.015297 0.023039 1.213524 0.035103 0.776107 1.494535 0.047305 0.176308 0.458554 1.283597 0.694385 0.431250 1.761059 1.190416 1.044652 1.164050 0.308901 0.113672 1.408084 0.096689 1.559684 1.938228 -0.017124 1.689467 1.038856 1.571902 0.762747 1.634160 0.270414 0.680522 0.343564 0.147067 0.180664 -0.135268 0.678368 0.161831 0.856541 1.302671 0.389279 1.004644 0.188519 -0.378511 1.885257 0.600957 0.500614 0.335993 0.570523 -0.116809 0.704164 0.542207 1.718265 1.098528 0.515766 -0.339892 1.143453 1.525206 0.436450 0.458848 1.187297 1.507980 1.271701 0.176624 0.104265 0.335909 0.400000 0.291293 1.227422 1.804358 -0.217818 1.094491 1.701207 0.369914 -0.074964 1.375125 0.219951 1.420105 1.249738 1.053009 0.140182 -0.318889 0.820424 0.949630 0.937297 1.069980)
+ 10.319861 #(0.000000 1.051991 0.827951 0.802537 0.410017 1.611948 0.567689 1.067377 1.699214 0.535100 1.379705 0.654292 -0.318438 0.550521 0.716835 1.085342 -0.010280 0.034396 1.240764 0.012859 0.731979 1.449184 0.050535 0.203659 0.423507 1.264201 0.633401 0.433164 1.756626 1.152388 1.042542 1.115394 0.307386 0.105269 1.480931 0.040477 1.529281 1.895397 -0.015325 1.682911 0.924775 1.582857 0.743718 1.617609 0.328282 0.757625 0.304890 0.127080 0.223458 -0.206851 0.646309 0.096092 0.863598 1.246883 0.365680 0.973844 0.235875 -0.427056 1.892917 0.563307 0.537769 0.377213 0.592753 -0.178707 0.763182 0.567301 1.658331 1.130230 0.462026 -0.355920 1.161347 1.583116 0.429448 0.528324 1.220131 1.457871 1.296166 0.175560 0.101732 0.349624 0.369393 0.277447 1.307676 1.748500 -0.195056 1.061286 1.759661 0.385679 -0.076797 1.369038 0.192287 1.469593 1.263492 1.036087 0.113073 -0.329491 0.801187 1.017356 0.960875 1.145933)
)
;;; 101 odd -------------------------------------------------------------------------------- ; 10.0499
#(101 13.462674500314 #(0 1 1 0 0 0 1 1 1 0 1 1 1 0 1 0 1 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 1 1 0 1 0 1 1 0 1 0 1 0 1 1 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1)
13.28250751675 #(0 1 1 1 0 0 1 1 1 0 1 1 1 0 1 0 1 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 1 1 0 1 0 1 1 0 1 0 1 0 1 1 0 0 1 0 0 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 1)
- 10.546831 #(0.000000 0.001449 1.687759 -0.099649 0.998441 0.464061 1.326021 0.415170 1.438297 1.283152 0.552385 0.199037 0.242824 0.771623 0.845989 0.418511 1.552911 1.284331 0.382909 0.927767 0.464249 0.956663 1.219504 0.559152 1.735664 1.649543 1.809085 1.517089 0.254596 0.310696 0.075826 1.641518 0.938212 0.649469 0.272461 0.062361 1.032834 1.775769 1.603630 -0.263998 1.624802 0.173176 0.953640 -0.209151 1.754175 0.056965 -0.144828 0.555219 1.315001 0.276833 0.557969 1.887493 1.230203 1.717178 0.392532 0.716075 -0.034492 0.301581 1.050381 1.594495 1.443410 0.904984 0.907019 1.327713 1.294422 0.428343 0.263414 -0.073108 -0.206909 0.473718 1.582112 1.613477 1.107471 -0.248827 1.447396 0.245595 -0.119692 1.206011 1.466921 1.244239 0.582588 0.963164 0.473996 1.402258 -0.026656 -0.068673 0.609278 0.334199 1.475797 0.491058 0.365138 1.256482 0.274236 0.632884 1.841229 1.290886 -0.076915 1.768555 -0.043671 0.527578 1.452183)
+ 10.281075 #(0.000000 -0.000228 1.607056 -0.080861 0.985132 0.524113 1.353873 0.433179 1.407692 1.352229 0.642253 0.159276 0.177464 0.783784 0.928651 0.439586 1.519410 1.289985 0.455990 0.954537 0.455752 0.916927 1.187888 0.591324 1.825631 1.636923 1.751679 1.547498 0.303258 0.290687 0.161824 1.653871 0.948653 0.650648 0.311016 0.050678 0.977370 1.793570 1.605611 -0.239181 1.560604 0.139687 0.972971 -0.253136 1.763928 0.104602 -0.155846 0.583413 1.246468 0.309838 0.492616 1.887308 1.201978 1.779312 0.480013 0.842530 0.032362 0.214971 1.015442 1.668358 1.345559 0.869997 0.866182 1.301525 1.331527 0.335867 0.305540 -0.051285 -0.317509 0.481901 1.569888 1.677538 1.055625 -0.221624 1.499580 0.158489 -0.127186 1.228151 1.556859 1.251196 0.603015 0.960589 0.536481 1.420313 -0.053734 -0.037973 0.682078 0.307195 1.460940 0.478910 0.402154 1.322187 0.266704 0.682091 1.811457 1.300705 -0.145243 1.744334 -0.063801 0.503801 1.415802)
)
;;; 102 odd -------------------------------------------------------------------------------- ; 10.0995
#(102 13.701085090637 #(0 1 0 1 0 0 0 1 1 1 1 1 0 1 1 1 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 1 1 0 1 0 1 1 1 0 1 1 1 1 1 0 0 1 0 1 0 1 1 1 1 0 1 1 1 1 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1 1 0)
13.159336831147 #(0 1 0 1 0 0 0 1 1 1 1 1 0 1 1 1 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 0 0 1 0 1 1 0 1 1 1 0 1 1 1 1 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1 1 0)
- 10.588064 #(0.000000 -0.045924 0.170507 0.335110 1.742128 1.444302 0.729120 0.508430 0.580591 1.062656 0.634366 1.533151 0.427023 0.665276 1.823060 1.034323 0.764546 1.302780 1.909072 0.239268 -0.124371 1.185384 0.700907 0.799016 1.068909 0.509544 1.639050 1.134433 -0.053868 0.496191 1.117906 1.414611 1.331094 1.335442 0.639917 0.217948 0.213016 1.371715 1.718322 0.263329 0.247314 0.787213 0.151169 0.715701 1.080993 0.848332 1.414916 0.794121 1.341897 1.029847 0.082138 1.224013 0.426687 0.851723 0.070166 1.263174 1.349406 0.004554 1.128198 1.886424 1.765049 1.615099 0.922346 1.090713 0.578202 -0.082577 0.426706 0.415947 1.276822 0.032506 0.970658 1.220075 0.556193 0.705021 -0.270297 0.216398 0.917668 0.605413 0.654468 1.929736 0.417257 0.167551 0.510284 0.155899 0.742775 0.641963 0.137462 1.875460 0.030730 1.235250 1.729814 -0.014554 1.078435 0.882369 0.214219 1.550373 0.865591 0.510166 1.192112 1.916620 1.726374 0.608912)
+ 10.233562 #(0.000000 -0.118887 0.172503 0.213857 1.715764 1.434745 0.756895 0.556962 0.536790 1.136105 0.571723 1.621402 0.480375 0.585318 1.767596 1.003549 0.760586 1.302511 1.912163 0.277335 -0.249300 1.331742 0.678292 0.688629 1.050405 0.535923 1.725955 1.122201 -0.016282 0.410823 1.064760 1.371912 1.322678 1.444033 0.632515 0.220823 0.108923 1.430817 1.807982 0.279571 0.223392 0.749250 0.218103 0.801447 1.124759 0.932277 1.599960 0.805158 1.230831 1.025132 0.087075 1.331184 0.462528 0.774667 0.024537 1.250026 1.416834 -0.167249 1.083786 1.934005 1.659134 1.624561 0.897078 0.996770 0.567561 -0.105819 0.361235 0.377611 1.224451 -0.000852 0.926240 1.024478 0.575162 0.735597 -0.246910 0.158069 0.737413 0.582327 0.745493 1.978760 0.392152 0.208934 0.477246 0.048943 0.668662 0.663310 0.136698 1.800615 -0.023717 1.018045 1.663360 -0.009002 0.952748 0.954263 0.353768 1.569445 0.907372 0.508480 1.165544 1.944287 1.755134 0.669804)
)
;;; 103 odd -------------------------------------------------------------------------------- ; 10.1489
#(103 13.551587266363 #(0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 0 1 1 1 0 0 1 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 0 1 0 0 1 0 1 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1)
13.142812158651 #(0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 0 0 0 1 1 1 0 0 1 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 1 0 1 1 1 1 0 0 1 0 1 0 1 0 0 0 1 1 0 1 0 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1)
- 10.773000 #(0.000000 1.567292 0.189588 1.582693 1.461990 1.124630 0.764030 1.116190 0.414904 1.513242 1.542436 1.898524 1.566403 0.342797 0.363692 -0.274374 1.480011 0.603546 1.250556 0.135529 -0.246372 0.984754 0.249596 0.948843 1.679660 1.065340 0.876805 0.100076 0.184474 0.277635 0.006475 0.884791 1.223223 1.095003 0.679080 0.166280 1.256394 0.369567 0.937453 1.774409 0.236417 0.988530 1.104663 0.024139 0.996315 0.076355 0.809844 0.541001 1.057308 0.498789 1.784658 0.464158 0.640937 0.435353 1.099215 1.794742 1.051037 1.180471 1.389597 0.013743 0.985070 0.090281 1.516800 0.868686 0.655018 0.460708 0.344650 0.798246 1.923655 1.576639 0.061566 1.219978 1.432394 0.043632 -0.504719 1.453620 0.581968 0.668728 1.636013 1.274824 1.766466 1.005669 1.069898 0.244729 1.604664 0.895759 1.058186 0.112363 0.863289 0.695641 0.691767 1.499851 0.328427 0.744614 0.822037 1.065757 1.075891 0.396498 1.143465 1.052577 0.007276 1.911198 1.730110)
+ 10.483864 #(0.000000 1.529124 0.292303 1.614592 1.439134 1.119992 0.726100 1.078951 0.393599 1.477223 1.421166 1.923105 1.569881 0.349005 0.357340 -0.169132 1.530362 0.487162 1.234321 0.105509 -0.315697 0.969385 0.289214 1.004357 1.642913 1.075562 0.792163 0.140201 0.280879 0.396563 0.005320 0.862461 1.201967 1.063664 0.629252 0.190748 1.305861 0.420724 0.929359 1.794657 0.266396 1.008795 1.072459 -0.060916 1.033322 -0.015726 0.789995 0.547394 1.006681 0.558517 1.829976 0.456513 0.648298 0.413831 1.104229 1.874164 1.030555 1.151366 1.250471 0.011960 0.960722 0.003531 1.416518 0.883336 0.656083 0.487125 0.386184 0.807601 1.858566 1.601075 0.030021 1.164499 1.417997 0.076892 -0.456593 1.457335 0.536357 0.691422 1.637897 1.333175 1.753142 0.969514 1.038428 0.226389 1.623114 0.885070 1.017452 0.146624 0.900548 0.760277 0.636382 1.417269 0.386963 0.722598 0.849428 0.956882 0.978433 0.399582 1.114494 1.150743 -0.035186 1.850184 1.730428)
)
;;; 104 odd -------------------------------------------------------------------------------- ; 10.1980
@@ -2178,21 +2128,21 @@
13.214084551284 #(0 0 0 1 1 0 1 1 1 0 1 1 1 0 1 0 0 0 0 0 1 1 1 1 0 0 1 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 0 1 1 0 1 0 0 1 1 1 0 0 0 1 1 0 1 0 0 0 1 1 1 0 1 1 1 1 1 1 1 0 1 1 0 1 0 1 1 1 1 1 1 1 0 0 0 1 0 1 0 1 0 0 1 0 0 1 1 1 1 0)
13.176067352295 #(0 0 0 1 1 0 1 1 1 0 1 1 1 0 1 0 0 0 0 0 1 1 1 1 0 0 1 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 1 0 0 0 1 1 1 0 1 1 1 1 1 1 1 0 1 1 0 1 0 1 1 1 1 1 1 1 0 0 0 1 0 1 0 1 0 0 1 0 0 1 1 1 1 0)
- 10.865589 #(0.000000 1.129964 -0.063701 1.168775 1.356420 1.288696 0.050046 1.846814 -0.047364 -0.179009 0.325508 1.398852 1.662137 0.312468 1.078706 0.257586 0.882886 1.579576 -0.023204 1.413449 0.092495 0.824426 0.624082 1.020239 -0.292687 0.645199 1.647047 0.889524 0.608076 1.227140 0.737895 1.415872 0.944169 0.772188 0.931370 1.310101 0.850244 0.981752 0.739797 1.626314 0.152227 1.184711 0.868117 0.617126 0.301273 0.969082 1.142223 -0.094250 0.387750 0.941854 1.592322 0.397262 1.064806 1.634875 0.935333 0.321701 1.941654 0.267895 -0.119234 0.860931 1.949219 0.704035 0.767932 1.632057 1.401409 1.116812 1.258222 1.495264 1.303993 1.163079 1.030472 0.900016 1.768796 0.511792 -0.010584 1.182375 0.118173 0.654435 0.153364 -0.192490 1.279381 0.168316 0.079600 1.232044 1.142550 0.223870 1.597828 0.733698 0.826848 1.282408 1.051133 0.213378 1.413037 1.723559 1.454466 1.711866 0.760953 0.696694 0.703484 1.601077 1.640954 0.416526 0.526376 -0.268983)
+ 10.606059 #(0.000000 1.085881 -0.075367 1.230889 1.412805 1.326137 0.078417 1.764186 -0.092992 -0.214770 0.384151 1.281336 1.627255 0.243352 1.054104 0.189933 0.862369 1.526544 -0.059669 1.340286 0.130622 0.797988 0.583589 1.005873 -0.270081 0.638434 1.650124 0.859422 0.667156 1.244543 0.669322 1.413901 0.900013 0.862993 0.980680 1.299554 0.823342 0.993380 0.705784 1.687047 0.073996 1.188052 0.851017 0.722840 0.358253 0.930255 1.149096 -0.050648 0.420505 1.042970 1.670058 0.356446 1.048034 1.614564 0.943489 0.297122 1.928668 0.271393 -0.061933 0.922884 1.953300 0.801762 0.801458 1.583010 1.408162 1.217683 1.360072 1.550762 1.306240 1.128892 0.981465 0.955382 1.859164 0.504295 -0.057262 1.215585 0.080840 0.635566 0.158602 -0.170837 1.353374 0.207659 0.068005 1.183352 1.109632 0.262141 1.528434 0.772530 0.781776 1.366426 0.982317 0.187868 1.482667 1.728141 1.551482 1.705749 0.753262 0.648821 0.683235 1.552583 1.657570 0.459542 0.522761 -0.255948)
)
;;; 105 odd -------------------------------------------------------------------------------- ; 10.2470
#(105 14.179738044739 #(0 1 1 1 1 0 1 0 0 1 0 1 1 0 1 1 1 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 1 1 1 0 0 1 0 1 1 1 0 1 0 1 0 0 1 1 1 0 0 1 1 1 0 1 0 1 0 1 1 0 1 1 0 0 0 0 1 1 1 1 1 1 1 0 1 1 0 0 0)
13.491228801467 #(0 1 1 1 1 0 1 0 0 1 0 1 1 0 0 0 1 0 1 0 1 1 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 1 1 1 1 1 0 0 1 0 1 0 1 0 1 0 1 0 0 1 1 1 0 0 1 1 1 0 1 0 1 0 1 1 0 1 1 0 0 0 0 1 1 1 1 1 1 0 0 1 1 0 0 0)
- 10.788836 #(0.000000 1.918366 1.361153 1.084367 0.594146 0.982369 0.766220 0.494139 1.610506 1.435563 0.180035 1.590587 1.366182 0.635678 0.447438 0.957448 1.648215 1.859514 0.543008 1.917974 1.718776 1.491521 0.508312 1.187503 -0.166175 1.905418 1.008972 1.463526 -0.022087 1.045811 1.157278 0.571766 0.884666 -0.260738 1.400773 1.275217 0.798157 0.280152 0.803436 1.740515 0.922148 0.881070 1.361301 1.224159 1.489626 0.144532 1.250781 -0.130822 -0.341357 0.176790 1.569478 1.371664 0.662930 -0.008479 0.960477 1.855141 -0.088177 0.790785 0.074961 0.796317 1.403625 1.132137 0.151795 0.630526 1.112446 1.236694 0.053598 1.553797 -0.031680 1.735381 1.081327 0.274948 0.840634 0.602732 1.289682 0.003630 1.287747 0.742062 0.542571 1.177295 0.961156 0.698698 0.034785 0.497612 1.665444 0.166454 1.649564 0.198559 0.366724 1.076108 1.770521 1.760481 1.240482 0.251522 1.121523 0.150490 1.328315 -0.014721 0.200982 0.307655 0.189582 0.291640 0.448561 -0.197279 1.394798)
+ 10.436013 #(0.000000 0.010197 1.399122 1.080203 0.650201 0.936020 0.764679 0.648548 1.492151 1.481227 0.309128 1.595944 1.500665 0.671780 0.500045 0.948947 1.670153 1.935208 0.443238 1.901457 1.609125 1.515506 0.477509 1.251952 -0.210756 1.790217 0.997259 1.433372 -0.044553 1.141364 1.270682 0.668897 1.004440 -0.304833 1.351854 1.331548 0.885670 0.306312 0.785904 1.717765 0.825851 0.971752 1.388440 1.220394 1.510319 0.141714 1.252728 -0.168204 -0.288782 0.160378 1.615589 1.477331 0.666472 0.003119 1.007740 1.981692 -0.124471 0.813074 0.073993 0.696636 1.363823 0.997743 0.105131 0.670943 1.249827 1.120211 0.127063 1.478910 -0.091588 1.779520 1.104469 0.223628 0.799964 0.645807 1.247968 0.008984 1.339739 0.748779 0.516967 1.233402 1.026860 0.707531 0.033878 0.483212 1.539648 0.113410 1.587063 0.257477 0.367099 1.114621 1.738083 1.675076 1.291418 0.410245 1.030930 0.183058 1.355480 -0.014892 0.270769 0.230985 0.310145 0.267130 0.430249 -0.286804 1.347692)
)
;;; 106 odd -------------------------------------------------------------------------------- ; 10.2956
#(106 13.492804348903 #(0 1 1 1 1 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 1 0 1 1 1 1 0 1 1 0 0 1 1 1 0 1 1 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 1 0 1 0 1 1 1 1 1 0 1 0 0 0 1 1 1 0 0 1 0 0 1)
13.091135978699 #(0 0 0 0 1 0 1 0 1 1 1 1 1 1 1 0 1 0 1 1 0 0 1 1 1 0 1 1 1 1 1 0 1 1 0 0 0 0 1 1 1 1 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 1 1 1 1 1 1 0 1 0 0 1 0 1 1 0 0 1 1 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 1 1 1 0 1 1 1 0)
- 10.809953 #(0.000000 0.764516 1.132399 0.463574 0.098667 1.262192 1.644914 1.160048 0.453829 0.994691 -0.013841 1.098721 0.602886 0.750544 1.566489 0.084154 0.174010 0.914778 1.583587 0.556558 0.496066 1.332179 -0.200265 1.671004 0.657804 0.129110 1.207638 1.021808 1.164262 0.370205 -0.306419 1.830068 1.813296 0.882098 0.470597 1.054560 1.522689 1.306310 0.488738 1.334467 0.272882 0.255275 0.075408 1.101200 0.378510 0.980086 0.221797 0.464025 0.773842 0.676961 1.089914 0.253871 0.641994 0.747979 0.183353 0.091314 1.801139 1.955063 1.239646 -0.174005 1.703584 0.189608 0.998365 1.036595 0.292771 1.297702 1.519729 1.624147 1.130951 1.509008 1.507378 0.093123 0.482643 0.305660 0.217467 1.764840 1.241681 0.299078 1.634555 1.292297 1.173222 0.146219 1.813292 1.176990 0.828887 1.470496 1.186664 -0.063780 0.077472 1.371721 -0.167846 1.022702 1.493430 0.000664 1.641710 0.474837 0.041575 1.278937 1.437382 0.380175 0.616979 0.173683 0.246090 1.368161 0.160003 1.540740)
+ 10.534652 #(0.000000 0.756342 1.053737 0.507898 0.107283 1.377123 1.637886 1.131738 0.489639 1.064497 -0.041601 1.059707 0.623324 0.708308 1.544035 0.076219 0.177059 1.029912 1.657361 0.596518 0.447621 1.295700 -0.283067 1.725111 0.710532 0.160119 1.169815 1.050153 1.107658 0.346011 -0.285730 1.908379 1.856931 0.910100 0.406620 1.077964 1.577200 1.331571 0.419429 1.272067 0.278764 0.211860 0.151301 1.089860 0.370780 0.930620 0.267728 0.599992 0.737628 0.735018 1.076867 0.213591 0.642317 0.746608 0.088449 0.028967 1.814028 -0.016663 1.230535 -0.096649 1.677166 0.074481 1.007150 1.109360 0.373416 1.251727 1.510888 1.665857 1.201936 1.508415 1.482220 0.041338 0.543197 0.498364 0.183625 1.756735 1.271083 0.378587 1.590840 1.334438 1.297880 0.221602 1.862903 1.110435 0.903528 1.497305 1.131137 -0.042569 0.079727 1.335700 -0.187898 1.074054 1.453502 0.009818 1.686127 0.528625 0.058391 1.343881 1.403495 0.278771 0.780914 0.090934 0.246941 1.297050 0.182144 1.600236)
)
;;; 107 odd -------------------------------------------------------------------------------- ; 10.3441
@@ -2201,7 +2151,7 @@
13.722554538648 #(0 0 0 1 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 1 0 0 0 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1 1 0 1 1 0 0 1 1 0 0 1 0 0 0 1 0 0 1 0 1 1 1 0 1)
13.537808159641 #(0 0 0 1 1 1 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 0 1 0 0 1 0 1 1 0 1 1 0 0 0 0 0 1 1 1 1 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 0 0 0 1 1 0 0 0 0 1 1 1 0 1 1 1 0 1 1 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1)
- 11.170686 #(0.000000 1.505733 1.822658 0.101573 0.573177 1.543489 0.228845 1.805669 0.246218 1.489270 1.397038 0.179242 1.465406 1.588561 0.137021 1.705944 -0.035898 1.209148 0.031408 1.843814 0.651920 0.046446 1.590335 0.672879 0.865121 0.260900 1.089288 0.510268 -0.061006 -0.033587 0.356048 1.428691 0.754774 0.022509 0.017199 0.989117 0.907363 1.025908 0.163052 0.605705 -0.263387 0.712986 1.835855 1.711417 1.222615 1.642511 1.416487 1.776621 1.525437 0.388631 0.387568 0.834751 0.263198 0.127730 0.486337 0.341996 1.385135 -0.090541 0.409498 0.412915 1.907542 0.988511 0.973836 1.621358 1.074275 0.766284 1.528771 0.022365 0.707612 1.339599 0.506377 -0.169813 0.421426 0.360106 1.887980 0.520353 1.039424 0.541893 1.703399 -0.113335 1.599638 0.658183 0.279938 0.331702 1.730977 0.751911 1.558246 1.071450 1.586435 0.192340 0.032356 0.558213 0.676405 0.013148 1.818062 -0.086206 1.298969 0.096285 0.856838 1.112124 1.833641 0.246583 1.802623 1.846656 1.262811 1.183922 1.556235)
+ 10.816051 #(0.000000 1.552502 1.768549 0.002661 0.652757 1.523348 0.249199 1.871014 0.194343 1.450124 1.360182 0.169739 1.396378 1.429205 0.142270 1.730147 -0.002739 1.259144 -0.046761 1.913988 0.628134 0.094350 1.578198 0.641239 0.923494 0.273094 1.097636 0.576545 0.087000 -0.000058 0.247704 1.473573 0.660008 0.057710 0.062440 0.912391 0.717900 1.000900 0.177797 0.705833 -0.218698 0.802495 1.833356 1.736406 1.337627 1.564175 1.509610 1.774311 1.419317 0.515205 0.404699 0.954389 0.275403 0.096363 0.465746 0.257729 1.391774 -0.072053 0.407168 0.349585 1.901261 0.957432 0.861760 1.638353 0.972358 0.743252 1.558417 -0.040611 0.873828 1.223249 0.566138 -0.167083 0.477292 0.413303 1.920594 0.526634 0.929019 0.622051 1.567688 -0.051855 1.567258 0.647156 0.334181 0.327601 1.922705 0.733485 1.607437 1.051687 1.632079 0.052792 0.024657 0.531319 0.622279 0.053522 1.799547 -0.040918 1.356767 0.067034 0.912066 1.067862 1.833522 0.274099 1.814596 1.907996 1.300578 1.120802 1.537526)
)
;;; 108 odd -------------------------------------------------------------------------------- ; 10.3923
@@ -2210,14 +2160,14 @@
13.584542754139 #(0 1 1 1 0 1 1 1 1 1 1 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 0 0 1 1 0 1 0 0 0 1 1 0 0 0 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1 1 0 0 0 0 1 0 1 0 1 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 1 0)
13.472808406168 #(0 1 1 1 0 1 1 1 1 1 1 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 1 0 1 0 0 0 1 1 0 0 0 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 1 1 1 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 1 0)
- 11.245740 #(0.000000 1.823320 0.325174 1.075534 0.490758 1.022845 -0.400672 1.038306 -1.339416 0.854380 -1.861467 1.609616 1.188426 1.754430 0.598859 -0.257697 0.599427 0.884863 1.339103 -0.227100 1.719513 0.266647 0.093216 0.929401 -0.273058 0.651005 0.971098 1.588414 0.167174 1.445138 0.013069 -1.740703 0.372170 0.262104 0.334143 1.748435 1.691964 1.289984 1.786106 0.647969 0.377396 0.153970 0.754218 1.877612 -0.233969 1.859485 0.994537 0.963336 0.742774 0.521058 0.811032 1.386667 0.663305 0.634150 -0.292429 0.348444 -0.173896 1.220562 1.184270 1.775642 0.361693 -0.522904 1.125652 0.827915 1.098973 0.654224 0.603271 1.152176 0.978392 0.433379 0.460047 1.044074 1.777759 0.062001 0.069895 0.606320 1.121962 0.776590 0.288391 1.225007 0.876311 0.048737 1.402697 0.939346 1.407523 0.216050 0.879446 1.470659 0.934767 1.860199 1.405847 1.319912 0.573729 1.457827 1.269836 0.258346 0.262125 0.371556 -1.408582 0.891158 0.221652 0.623687 0.569427 1.201159 1.060274 0.458959 1.588509 0.251630)
+ 10.767229 #(0.000000 1.857494 0.244826 1.234237 0.534739 0.983543 -0.374383 1.043503 -1.343308 0.857561 -1.975020 1.538725 1.167406 1.764310 0.594039 -0.342292 0.644740 0.892815 1.488212 -0.301824 1.656162 0.305658 0.136325 0.867105 -0.351129 0.738655 1.033025 1.616179 0.247466 1.419642 -0.002160 -1.789395 0.446183 0.243608 0.394428 1.852627 1.812044 1.342490 1.695248 0.636483 0.436030 0.233472 0.810171 1.926921 -0.284287 1.938872 0.955904 0.878211 0.757670 0.454091 0.950197 1.375314 0.766216 0.727285 -0.360054 0.412757 -0.375116 1.214220 1.166051 1.688676 0.258428 -0.432511 1.145867 0.865710 1.020146 0.660078 0.674032 1.131370 1.002605 0.348201 0.550003 1.112586 1.845641 0.086436 0.134403 0.537431 1.040377 0.665042 0.316803 1.242876 0.907610 0.061413 1.237433 1.053259 1.358095 0.229352 0.822637 1.579322 0.802067 1.926217 1.507847 1.372674 0.579469 1.258383 1.170336 0.252761 0.259717 0.556495 -1.357484 0.816272 0.167162 0.693076 0.376219 1.359041 1.088357 0.481051 1.494038 0.220499)
)
;;; 109 odd -------------------------------------------------------------------------------- ; 10.4403
#(109 13.889015913621 #(0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 1 0 0 1 0 1 1 1 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 1 1 1 0 1 1 1 0 0 1 1 0)
13.798 #(0 0 1 0 1 0 0 1 0 0 1 1 1 0 1 1 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 1 0 0 0 1 0 0 1 1 1 0 0 1 1 0 1 0 1 1 0 1 1 1 1 1 0 1 0 0 0 1 0 1 0 0 1 1 0 0)
- 11.154420 #(0.000000 0.061204 1.443537 0.534046 0.485260 1.666089 1.092866 1.189662 0.491697 1.615158 1.452833 1.385505 1.633213 -0.083405 0.857567 1.559463 0.940563 0.515106 0.518750 0.746501 0.047921 1.532884 1.272962 0.347020 0.682412 1.227826 0.477301 0.143274 1.417425 0.815596 1.137127 0.568586 0.513183 1.481398 1.141143 1.289929 1.290922 0.376695 1.090562 -1.543137 1.337264 0.129534 0.135882 1.052522 1.061009 0.413912 1.308531 0.704831 0.520070 0.519516 1.254512 0.638336 1.721057 0.468433 0.936504 1.458614 1.563513 1.221619 1.477527 0.657146 1.395650 0.942805 -0.038381 1.190661 0.794594 0.045887 0.652304 1.480547 0.436781 0.244765 0.221928 0.207635 1.369937 -0.181283 1.495402 0.312767 1.568768 0.945897 0.803741 1.885210 0.209812 1.604073 -0.041337 0.610217 0.831499 0.985804 1.399485 0.995477 1.285491 0.901124 1.189052 1.931012 1.257426 0.749398 1.091466 -0.165467 0.612781 1.389606 1.146595 -0.128135 0.642214 1.038631 0.396717 0.974476 0.811239 1.666870 -0.140821 0.038302 0.316329)
+ 10.864123 #(0.000000 -0.016904 1.604414 0.553071 0.420367 1.734264 1.042699 1.227595 0.530998 1.486263 1.372355 1.325513 1.615876 0.086602 0.957394 1.548705 0.921925 0.638604 0.578140 0.724346 0.054355 1.516898 1.274745 0.290234 0.645810 1.290619 0.444472 0.217429 1.312068 0.904847 1.004812 0.610111 0.484865 1.462524 1.108420 1.244937 1.244775 0.382509 1.077329 -1.495490 1.326504 0.272538 0.099229 1.028259 1.079015 0.461448 1.424703 0.696203 0.527298 0.556199 1.230267 0.625620 1.693298 0.458094 0.898065 1.463939 1.538741 1.110468 1.387995 0.644793 1.380720 0.933478 -0.064013 1.282568 0.699711 0.064621 0.732408 1.699104 0.475607 0.294280 0.229966 0.320280 1.314214 -0.150971 1.586814 0.219608 1.616821 1.007159 0.682581 0.004042 0.237949 1.636574 -0.075532 0.637881 0.738958 1.023641 1.479966 0.928780 1.359626 0.908964 1.173349 1.964977 1.273596 0.745404 1.098887 -0.079030 0.502144 1.472459 1.255646 -0.099015 0.649829 1.018466 0.426521 0.962503 0.870787 1.728493 -0.143580 0.031486 0.204046)
)
;;; 110 odd -------------------------------------------------------------------------------- ; 10.4881
@@ -2225,7 +2175,7 @@
13.75 #(0 1 0 0 1 0 0 0 1 0 1 1 0 0 1 1 0 1 0 0 0 1 0 1 1 0 1 1 1 1 0 0 1 0 1 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 0 0 1 1 1 1 0 1 0 1 0 0 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 0 0 1 1 0 0 0 1 0)
13.576010454591 #(0 1 0 0 1 0 0 0 1 1 1 1 0 0 1 1 0 1 0 0 0 1 0 1 1 0 1 1 1 1 0 0 1 0 1 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 1 0 0 1 0 1 0 1 0 0 0 1 1 1 1 1 1 1 0 1 1 0 0 1 1 0 1 0 1 0)
- 11.075954 #(0.000000 1.554144 1.098049 0.849094 0.481029 0.274590 0.452835 1.241748 1.688954 1.374025 -0.190864 -0.094953 1.611196 1.248054 1.255002 0.064401 0.142001 0.690981 1.545859 1.374281 1.406077 1.311683 1.190709 1.287158 1.401798 -0.254381 -0.144829 -0.282479 0.195585 0.341894 1.946210 1.153230 -0.399108 0.644110 1.190933 1.348653 1.452031 1.028215 -0.135560 0.795763 1.319211 1.471241 0.767368 0.472376 0.757187 1.783023 0.177096 0.703334 0.912067 0.104923 0.442585 -0.024440 1.351745 0.493480 0.589552 1.156198 0.047085 0.759343 1.642035 1.242979 1.321967 0.807422 0.718031 0.135491 1.114523 -0.083035 1.211838 1.478657 1.617797 1.764841 0.605522 0.270341 1.617015 0.640817 1.497760 0.467073 1.093968 -0.584889 0.661678 0.362219 0.125717 0.145827 0.253644 1.263123 1.374874 0.727727 0.070719 1.451948 0.390064 1.086851 -0.047869 1.050177 -0.032444 1.741620 0.485563 -0.077418 -0.587825 0.949738 1.666615 -0.263187 1.798412 0.811979 0.447393 1.197667 0.817815 0.674965 1.303116 0.173645 0.018115 0.507828)
+ 10.541538 #(0.000000 1.584097 1.139814 0.871278 0.416591 0.118688 0.672426 1.256258 1.664722 1.410639 -0.270823 -0.061943 1.601823 1.223255 1.291376 0.027131 0.117441 0.700306 1.621886 1.270558 1.429744 1.359367 1.090094 1.237746 1.410298 -0.338735 -0.132305 -0.251219 0.337733 0.262757 1.936668 1.195875 -0.464689 0.517768 1.208234 1.498743 1.518196 0.961925 -0.135858 0.706927 1.350509 1.523037 0.833912 0.424444 0.728562 1.804525 0.189564 0.702080 0.906083 0.139619 0.405107 -0.003809 1.412134 0.523131 0.557561 1.001710 0.064599 0.666366 1.458683 1.131027 1.460708 0.805723 0.824143 0.112092 1.125696 0.071455 1.174024 1.522359 1.668726 1.807105 0.600957 0.261846 1.745918 0.611469 1.437166 0.540773 1.086905 -0.672618 0.779134 0.330237 0.296427 0.186426 0.098209 1.150516 1.503300 0.736371 -0.062412 1.392634 0.234067 1.071602 -0.064449 1.000723 0.022822 1.736288 0.521393 0.008630 -0.612849 0.969483 1.646120 -0.187476 1.740190 0.884004 0.473359 1.235300 0.898487 0.778748 1.264076 0.161471 0.059166 0.670192)
)
;;; 111 odd -------------------------------------------------------------------------------- ; 10.5357
@@ -2233,7 +2183,7 @@
14.114 #(0 0 0 1 1 1 1 0 0 0 1 1 0 0 0 0 1 0 0 1 0 1 0 1 1 1 0 1 1 1 0 0 1 0 0 1 1 0 0 0 1 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 1 0 1 0 0 0 1 1 1 0 1 0 1 0 1 1 0 1 1 0 0 0 0 0 1 0 1 1 1 1 1 0 0 1 0 1 0)
13.709900383304 #(0 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 1 0 0 1 0 1 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 1 0 0 1 0 0 0 1 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 1 0 0 1 0 1 1 0 0 0 0 0 1 0 1 1 1 1 1 0 0 1 0 1 0)
- 11.267787 #(0.000000 0.120038 0.411803 -0.152961 0.611240 0.026709 1.090137 0.988009 -0.216001 0.080639 1.646831 1.943205 -0.029292 0.813897 0.766377 1.755744 1.279904 1.317999 1.468766 1.752248 0.066511 0.260628 1.789580 1.025861 -0.132381 1.480723 0.665217 1.673992 1.511259 -0.010469 0.875360 0.927775 0.484770 0.322430 0.224781 1.609299 0.924366 0.805428 1.138414 0.711278 0.266476 0.955224 0.145269 0.052160 0.407875 -0.077141 0.917652 1.202545 0.175316 1.077785 1.094355 0.172597 0.830837 1.578684 1.530787 0.535139 1.451614 -0.207602 1.695309 0.561182 0.122837 0.209631 0.113493 1.012163 0.583620 0.456719 0.471845 0.407930 1.847192 1.199847 -0.037320 0.096901 1.435104 1.302369 -0.102176 0.500732 -0.012471 0.595865 1.481385 1.850708 0.907093 0.118968 0.050655 1.624164 1.777448 0.497278 1.514890 0.736501 1.494674 0.460650 1.253302 0.309945 0.427171 0.919682 1.156276 1.954636 -0.111007 0.142194 0.215795 1.636800 1.398200 1.214715 -0.122532 -0.213446 0.408672 1.150669 0.288881 1.344792 1.594947 0.759657 0.422942)
+ 10.807002 #(0.000000 0.040718 0.380496 -0.202710 0.560411 -0.093271 1.125927 0.914347 -0.239159 0.048603 1.620693 0.038753 -0.020330 0.889107 0.875251 1.799900 1.401933 1.277803 1.445234 1.675128 0.029796 0.266092 1.862769 1.036828 -0.154174 1.552457 0.684808 1.707217 1.501012 -0.103515 0.808547 0.924262 0.503116 0.459086 0.087652 1.678541 0.942996 0.821964 1.225747 0.642440 0.312464 0.872718 0.219520 0.066241 0.491065 -0.009182 0.925270 1.182463 0.223271 1.183244 1.255447 0.170382 0.854815 1.703570 1.564884 0.505223 1.492952 -0.247768 1.717722 0.600837 0.061067 0.145757 0.088520 0.986508 0.727768 0.376903 0.499733 0.461457 1.802220 1.207635 -0.076267 0.091857 1.487657 1.392774 -0.066246 0.433712 0.042017 0.648806 1.380519 1.942613 0.888322 0.015993 -0.066993 1.628180 1.722341 0.498960 1.610657 0.745001 1.494814 0.485157 1.320563 0.312020 0.520933 0.958379 1.180551 -0.068855 -0.032534 0.142176 0.284490 1.688259 1.325386 1.221127 -0.020796 -0.225635 0.565648 1.141219 0.220768 1.279307 1.518394 0.729108 0.476854)
)
;;; 112 odd -------------------------------------------------------------------------------- ; 10.5830
@@ -2241,7 +2191,7 @@
14.383410482601 #(0 0 1 0 1 0 0 0 0 1 1 0 0 1 1 0 0 0 0 1 1 1 1 0 1 0 0 0 1 0 0 1 0 1 1 1 0 1 1 0 1 1 1 0 1 0 0 0 0 1 0 1 1 0 1 1 1 1 1 0 1 0 0 1 1 1 0 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 0 1 1 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0)
13.92684841156 #(0 0 0 1 0 1 0 0 1 0 0 1 1 0 0 0 0 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 1 0 0 1 1 0 0 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 1 1 0 1 0 1 1 1 1 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 1 1 1 0 0 0 0 0 1 1 0 0 1)
- 11.255856 #(0.000000 0.472972 0.026272 0.788813 0.493526 0.657277 1.550762 0.379320 1.431680 0.702254 1.154579 1.069870 -0.042843 1.617383 0.241360 0.961884 0.598709 1.505980 1.357741 1.271727 0.967136 0.008340 1.680776 1.509883 1.337937 0.643127 0.494703 0.315402 1.014620 0.960825 0.290245 0.021743 -0.002984 1.283334 0.567707 1.582832 0.521099 1.035764 0.572214 0.440999 0.085241 0.456210 1.850398 1.798811 0.234198 1.114029 0.752443 0.438669 1.544386 0.630144 -0.038291 1.218611 1.163244 0.006941 0.696576 1.050162 -0.148427 1.718898 0.262196 0.464829 0.406202 0.870811 0.905264 1.208815 0.322577 0.966239 0.240435 -0.175729 0.290061 1.183131 0.279491 0.224405 0.304693 0.243866 0.604276 0.339372 0.697128 1.205958 -0.054460 0.423856 1.358444 -0.127730 1.182214 0.853290 1.343543 1.431802 1.222025 0.404966 0.577342 1.232715 0.104311 0.323373 1.519319 1.087096 0.102189 0.201596 1.583396 0.252275 -0.244450 0.906254 1.190797 1.178179 0.759816 1.621582 1.144909 1.350825 1.774873 0.715119 1.094141 0.492489 1.328783 -0.064382)
+ 11.006067 #(0.000000 0.407318 0.038259 0.789637 0.462299 0.731527 1.513409 0.314769 1.498911 0.719140 1.130388 1.019414 -0.032991 1.657147 0.250646 0.880167 0.593810 1.560786 1.298224 1.245087 0.930246 0.003684 1.675794 1.549272 1.347312 0.661382 0.455631 0.337426 1.098169 0.964062 0.271343 0.017020 0.035842 1.358898 0.648674 1.635512 0.508233 1.013142 0.528971 0.408099 0.055374 0.507242 1.870839 1.765312 0.132491 1.173287 0.820912 0.531744 1.596565 0.708413 0.040001 1.222534 1.119861 0.001217 0.677820 1.038370 -0.183163 1.602712 0.290990 0.499871 0.412648 0.873306 0.891379 1.162729 0.420337 0.900317 0.263387 -0.233580 0.356722 1.221387 0.331711 0.278765 0.279083 0.264056 0.563747 0.380094 0.683152 1.182080 -0.104469 0.477352 1.256022 -0.162879 1.183204 0.801346 1.345874 1.469456 1.194714 0.373524 0.381954 1.294809 0.076453 0.309328 1.568083 1.153978 0.083665 0.224743 1.600972 0.169498 -0.137208 0.934150 1.166158 1.246787 0.835765 1.618843 1.112424 1.363442 1.700355 0.784619 1.198380 0.511607 1.297715 -0.085566)
)
;;; 113 odd -------------------------------------------------------------------------------- ; 10.6301
@@ -2249,7 +2199,7 @@
14.00348588593 #(0 1 1 0 0 1 1 0 0 1 0 1 1 1 0 1 0 1 1 0 0 0 1 0 0 0 0 1 1 0 0 0 1 1 1 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 1 1 0 0 1 0 0 1 1 0 1 0 1 0 0 1 1 0 1 0 0)
13.825498858186 #(0 1 1 0 1 1 1 0 0 1 0 1 1 1 0 1 0 1 1 0 0 0 1 0 0 0 0 1 1 0 0 1 1 1 1 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 1 1 0 0 1 0 0 1 1 0 1 1 1 0 0 1 1 0 1 0 0)
- 11.278429 #(0.000000 0.695211 0.468637 1.007327 0.318644 1.257250 0.174313 -0.022570 0.778022 1.841236 1.107014 1.762800 1.388598 -0.197033 0.107966 1.615227 -0.170684 0.724651 0.761623 0.985911 0.790584 1.367763 1.678713 1.334896 1.684125 0.626426 1.619396 0.735090 0.945579 0.491635 0.684529 0.887871 1.855310 1.222783 1.436352 1.184067 0.452268 0.362212 1.089094 0.771139 0.511064 0.917166 0.438528 0.539224 0.528480 1.431686 0.550932 0.425631 1.284698 1.399314 1.231602 0.774507 0.409661 1.804565 0.448106 1.614470 1.964202 1.813551 0.774740 0.606952 0.988707 1.585448 0.703327 0.891042 0.069282 1.403767 0.468494 1.126383 0.183900 1.900261 1.560122 0.803488 0.152694 0.601935 1.151655 1.770846 1.460545 0.280511 0.180960 1.437784 0.908342 0.450845 0.083445 0.042674 1.834638 1.392588 1.569427 0.508178 0.974812 0.338275 0.969315 1.000970 0.209293 0.865545 0.936237 0.409577 0.343151 0.969389 0.925574 1.271806 1.628545 0.507608 1.504778 1.714364 1.407314 0.806910 1.414943 1.010503 1.934654 0.019772 0.717034 0.543045 1.391067)
+ 10.830811 #(0.000000 0.777010 0.339885 1.151654 0.214660 1.325086 0.365981 -0.120682 0.771056 1.821511 1.089613 1.775746 1.325053 -0.389290 0.066626 1.572781 -0.255413 0.663944 0.743223 1.044331 0.806241 1.446096 1.740539 1.441519 1.731659 0.778886 1.654702 0.771648 1.055036 0.536902 0.756197 0.871278 1.835287 1.275898 1.493588 1.078123 0.465086 0.310478 1.078407 0.781207 0.516974 0.875728 0.404929 0.584724 0.510042 1.391902 0.440931 0.463452 1.284091 1.391266 1.270151 0.893455 0.394450 1.819313 0.485592 1.636271 -0.036329 1.712077 0.614536 0.700135 0.905889 1.605033 0.774025 0.849322 0.153757 1.506239 0.470554 1.091216 0.281033 1.822585 1.619344 0.711294 0.167528 0.651309 0.997971 1.720811 1.410461 0.213958 0.253563 1.417046 0.879733 0.557503 -0.016076 -0.069611 1.988255 1.353457 1.663613 0.517133 1.012658 0.276923 0.978886 1.024702 0.262481 0.756743 0.847719 0.511661 0.344711 0.925074 0.739403 1.156008 1.754997 0.527190 1.420313 1.644902 1.429972 0.796843 1.319715 0.945162 1.979555 -0.120434 0.687957 0.560847 1.312066)
)
;;; 114 odd -------------------------------------------------------------------------------- ; 10.6771
@@ -2258,7 +2208,7 @@
13.974405288696 #(0 0 1 0 1 1 0 0 1 0 1 0 1 1 0 0 1 1 1 1 1 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 0 1 0 1 1 0 1 0 0 1 0 1 1 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 1 0 0 0 1 1 0 1 1 1 0 1 1 1 1 1 0 0 1 1 0 0 0 1 1 1 0 1 1 1 1 1 1 0 0 1 1 0 0 0)
13.920305720092 #(0 0 1 0 1 1 0 0 1 0 1 0 1 1 0 0 0 1 1 1 1 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 1 0 1 1 0 1 0 0 1 0 1 1 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 1 0 0 0 1 1 0 1 1 1 0 1 1 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 1 1 1 1 1 0 0 1 0 0 0 0)
- 11.258179 #(0.000000 -0.197656 0.580196 0.245641 1.120784 1.553635 0.659270 0.678598 1.082081 1.589003 0.358901 0.234408 1.591666 0.026902 0.969985 -0.357954 1.446182 1.000571 0.732198 1.533095 0.375843 1.221148 0.536730 0.580997 0.655352 0.918042 0.991543 1.532025 0.436287 0.937070 0.481213 1.632931 0.604754 1.535101 0.848575 0.755890 1.200220 0.355042 1.632715 1.054230 0.304964 1.215875 -0.147874 0.722166 1.541274 1.518242 1.689332 1.524638 0.699983 1.596786 1.785325 1.631249 1.013291 -0.604029 1.703662 0.890613 -0.176642 0.050251 0.319960 1.669539 0.794176 -0.000845 0.528716 0.686166 0.696716 1.756505 0.660875 1.760438 1.273627 1.053304 1.783183 1.905387 1.885493 -0.084490 1.097311 0.646178 0.611710 1.793648 1.168823 1.152299 0.766716 0.149031 0.351658 1.398049 0.081477 0.219154 1.564292 1.531388 1.479327 -0.003114 1.787172 0.876523 1.713424 1.241185 1.545077 0.243158 1.437183 0.401976 0.624445 1.111405 1.372979 1.680865 1.374718 1.411218 0.903182 0.545243 0.434708 1.301199 0.445004 1.639541 1.765889 0.725809 1.176951 1.554360)
+ 10.893446 #(0.000000 -0.171596 0.619185 0.281862 1.043264 1.567378 0.665787 0.729725 1.053034 1.588101 0.314594 0.235935 1.680745 0.093373 1.047315 -0.457890 1.527547 1.051579 0.733558 1.549329 0.308437 1.197888 0.496945 0.551888 0.651217 0.845079 0.925238 1.540468 0.452846 0.895995 0.518141 1.788886 0.640878 1.495668 0.815558 0.755660 1.281160 0.316856 1.740475 1.033507 0.309092 1.177803 -0.077072 0.628410 1.670303 1.389802 1.799632 1.401256 0.685519 1.613263 1.807978 1.642646 0.979703 -0.654098 1.724524 0.995846 -0.193662 0.125187 0.214689 1.743864 0.816251 -0.018028 0.478963 0.696937 0.660937 1.726733 0.649133 1.780150 1.306925 1.040470 1.809028 1.831298 0.026306 -0.092480 1.102158 0.592890 0.665308 1.733647 1.113345 1.152421 0.664839 0.094844 0.345078 1.395251 0.137585 0.201383 1.452515 1.538023 1.507215 -0.080487 1.812400 0.824086 1.815776 1.232038 1.563109 0.189123 1.463229 0.268564 0.604003 1.173751 1.349395 1.765104 1.467526 1.342353 0.914619 0.487960 0.461978 1.303491 0.410147 1.660630 1.742036 0.688673 1.235757 1.568722)
)
;;; 115 odd -------------------------------------------------------------------------------- ; 10.7238
@@ -2266,7 +2216,7 @@
14.449532208006 #(0 0 0 0 1 0 0 0 0 1 0 0 1 1 1 0 0 0 1 1 0 0 1 1 1 0 1 1 1 0 1 1 1 0 0 1 0 1 1 0 1 0 1 1 1 1 1 0 0 0 0 0 0 1 1 0 1 0 0 1 1 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 0 0 1 1 0 1 0 1 0 1 1 0 0 1 1 0 1 0 1 0 1 0 0 0 0 1 1 1 0)
14.20306968689 #(0 1 1 0 1 1 0 0 1 1 0 0 0 0 0 0 1 0 1 0 1 1 1 0 0 1 1 0 1 0 1 1 1 0 1 0 1 1 1 1 1 0 1 0 0 1 1 1 0 0 1 1 0 1 0 1 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 1 1 0 1 1 1)
- 11.364483 #(0.000000 1.087276 -0.068737 -0.050249 0.689697 0.762887 0.365557 0.872613 1.220412 0.547434 0.957386 0.545498 0.323855 1.032821 1.000338 0.186141 1.508549 1.280329 0.191454 0.371056 1.575449 0.936064 1.628275 0.066725 0.159105 0.128117 0.637553 1.116781 0.209123 1.490747 -0.397759 0.316951 1.729138 1.139653 1.300859 0.584964 1.230144 0.791888 1.066697 0.724923 0.129619 0.874299 1.338430 1.970788 1.934484 1.862722 0.270498 1.703216 1.217850 0.235079 -0.075907 0.162070 0.306054 0.374907 0.115061 -0.009737 0.504858 0.695674 0.416149 0.011673 -0.248464 -0.008155 1.335499 0.285180 -0.043474 1.230366 0.600528 0.175838 0.701394 0.199687 1.296355 1.199077 0.096717 1.821725 0.190707 1.440593 0.872741 0.786966 0.678416 0.103733 0.078150 1.430492 1.533029 1.222981 1.581296 0.474076 -0.478351 0.639161 1.360839 1.884435 0.581612 0.692569 1.603465 0.533667 0.919304 0.727864 1.734618 1.189641 1.726454 0.334548 0.069462 0.867812 0.258085 0.172729 0.576207 1.122307 1.487795 1.700994 0.836027 0.839634 0.922927 0.344700 0.728185 1.204695 0.259185)
+ 11.082605 #(0.000000 1.055817 -0.141515 0.012211 0.658603 0.771827 0.303048 0.919948 1.217003 0.461460 0.974308 0.478702 0.316382 1.026649 0.960443 0.140941 1.457808 1.356185 0.219526 0.339066 1.565401 0.992888 1.629089 0.058317 0.142338 0.124601 0.698203 1.135380 0.228647 1.458683 -0.330404 0.272076 1.728481 1.142025 1.236278 0.553581 1.255651 0.835908 1.118004 0.734999 0.134530 0.881562 1.360758 1.989439 1.982071 1.808498 0.308731 1.654184 1.250554 0.232283 -0.135920 0.191530 0.263760 0.310663 0.023530 -0.009145 0.417690 0.776304 0.432628 -0.010004 -0.274474 0.013630 1.323902 0.289608 -0.093883 1.235804 0.620971 0.138439 0.771990 0.255639 1.211679 1.185166 0.084056 1.883040 0.118625 1.415688 0.869017 0.787978 0.648275 0.067705 0.140441 1.463642 1.501658 1.232301 1.562981 0.412037 -0.490535 0.739171 1.435193 1.897383 0.593787 0.708799 1.648182 0.612439 0.874684 0.825850 1.782025 1.212062 1.682443 0.370358 0.009908 0.869556 0.171684 0.213001 0.506785 1.075734 1.498517 1.695457 0.858239 0.794653 0.948620 0.373551 0.768671 1.139040 0.331303)
)
;;; 116 odd -------------------------------------------------------------------------------- ; 10.7703
@@ -2274,14 +2224,14 @@
14.619069099426 #(0 0 1 0 1 0 0 0 0 1 1 0 0 1 1 0 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 1 1 1 1 1 0 1 1 0 1 1 0 0 1 1 0 0 1 1 1 0 1 0 1 1 0 0 1 0 1 1 0 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 0 1 0 0 1 0 1 1 0 1 0)
13.887789451571 #(0 0 1 0 1 0 0 0 0 1 1 0 0 1 1 0 1 1 1 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 1 1 0 1 1 0 1 1 0 0 1 1 0 1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 0 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 0 1 0 0 1 0 1 1 0 1 0)
- 11.413275 #(0.000000 0.480694 1.890792 1.042506 0.834214 1.455021 0.872709 1.054081 1.192850 0.109824 0.770949 1.194638 0.166363 1.684123 -0.038739 0.801340 0.292725 1.601573 0.765799 1.537681 0.217255 0.030677 1.058050 0.084733 0.305146 0.739728 0.189906 0.601294 -0.104400 0.302135 1.627521 0.220622 1.498773 0.917523 1.466298 -0.003018 1.000232 1.581088 1.535895 -0.097316 0.584346 1.399759 0.124148 0.608810 0.351622 1.058795 0.876387 1.522204 1.842614 1.926055 1.287295 1.296658 0.091501 0.951166 0.944347 1.113350 0.375310 0.940475 0.680643 1.518910 1.535153 1.676749 0.129549 0.763180 0.012850 1.493143 1.162607 1.498562 0.308158 1.187094 1.023951 1.217924 1.741235 1.786286 1.383715 1.196148 0.437833 1.373081 0.289467 1.753327 -0.027299 0.772097 1.628256 0.091565 0.688989 0.553239 0.246961 -0.135034 1.630901 0.293567 -0.053941 1.328508 1.829406 1.381124 1.314130 0.491011 -0.234418 0.216105 0.240163 1.664184 0.891805 0.920312 0.455643 1.688425 1.341710 0.008388 1.247550 0.560355 0.751912 1.553613 1.544335 1.415814 -0.237108 0.035210 1.591811 0.993863)
+ 11.030001 #(0.000000 0.482273 1.910962 1.137144 0.883439 1.509403 0.883573 0.987080 1.221385 0.103626 0.777660 1.279291 0.149696 1.721274 -0.096849 0.819330 0.324276 1.598657 0.779765 1.562486 0.246694 0.122410 1.093943 0.083655 0.263489 0.775571 0.222016 0.554249 -0.099878 0.350881 1.705264 0.253476 1.560606 0.922540 1.476454 0.164832 0.986215 1.547206 1.572182 -0.195693 0.632182 1.445786 0.193725 0.662675 0.444947 0.954892 0.902468 1.534123 1.821641 0.033238 1.299989 1.135583 0.050000 0.998890 0.776205 1.163189 0.481363 0.962576 0.672122 1.550642 1.656448 1.672078 0.105016 0.853797 -0.036901 1.436911 1.112813 1.393971 0.261298 1.239046 1.037261 1.103149 1.553685 1.884446 1.306905 1.196801 0.462413 1.502630 0.356638 1.665562 -0.022106 0.724939 1.726326 0.046343 0.703793 0.624565 0.173289 -0.177122 1.673866 0.264423 -0.051978 1.306031 1.702331 1.421278 1.290690 0.476922 -0.190312 0.247478 0.283138 1.559503 0.912283 0.837815 0.478168 1.733021 1.439123 0.000404 1.312636 0.625815 0.833067 1.524651 1.666783 1.607436 -0.208532 0.040895 1.496346 1.136673)
)
;;; 117 odd -------------------------------------------------------------------------------- ; 10.8167
#(117 14.63381513714 #(0 1 1 1 0 1 1 1 0 0 1 1 1 1 1 1 1 0 0 0 0 1 1 0 1 1 1 0 1 1 1 0 1 0 1 1 1 1 1 0 0 1 1 1 0 0 0 1 1 1 1 0 1 0 1 0 0 0 1 0 0 0 1 0 1 1 1 1 1 1 0 1 1 0 0 1 1 0 1 0 1 1 0 1 0 1 1 1 0 0 1 0 1 1 0 0 0 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 1 1 0 1 1)
14.427604264985 #(0 1 1 1 0 1 1 1 0 0 1 1 1 1 1 1 1 0 0 0 0 1 1 0 1 1 1 0 1 1 1 0 1 0 1 1 1 1 1 0 0 1 1 1 0 0 0 0 1 1 1 0 1 0 1 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 0 1 1 0 0 1 1 0 1 0 1 1 0 1 0 1 1 1 0 0 1 0 1 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 1 0 1 1 0 1 1)
- 11.533786 #(0.000000 0.334484 0.763284 0.172303 1.239011 1.142032 0.832571 1.503768 1.728641 0.528581 1.264662 0.685804 1.694259 -0.310283 1.354680 0.949669 1.511133 0.391802 1.132976 0.158173 0.824352 0.572921 1.537761 1.278729 1.092131 0.949588 0.166647 0.943977 1.484133 0.026931 0.601228 1.552510 1.607311 1.047388 1.590294 0.618367 0.278173 -0.000353 -0.034650 1.368395 1.682695 -0.020721 0.294508 1.278111 0.442548 1.491462 1.118202 1.065158 -0.199208 0.483129 1.170144 0.862287 0.781604 1.296499 1.671366 1.382103 0.191751 1.548268 0.930573 0.690883 1.364553 0.681629 1.512883 0.934083 0.972648 1.350788 0.820937 0.065418 -0.061176 1.579684 1.802203 1.759723 1.566569 1.226442 0.268435 0.498499 0.297858 0.921385 0.157026 0.756996 0.861673 1.826901 0.035244 1.309664 0.195153 1.839283 0.636139 0.684529 0.464267 1.723664 1.392978 0.136953 1.504889 1.818193 1.531016 0.304474 0.667041 0.992154 1.738452 1.512266 0.482359 0.605949 0.362380 1.469098 1.959309 0.047070 0.136266 1.037246 0.120440 0.069027 0.272864 1.337515 1.733737 0.541336 1.665442 1.386794 1.374899)
+ 11.149998 #(0.000000 0.249175 0.821028 0.158585 1.183097 1.021619 0.721112 1.540423 1.636413 0.554844 1.214601 0.689782 1.726455 -0.337762 1.337467 0.974730 1.452670 0.435539 1.072425 0.064904 0.803706 0.619206 1.443180 1.363023 1.079475 0.906895 0.102067 0.972266 1.388857 0.056608 0.482419 1.557937 1.577843 1.134512 1.641767 0.536032 0.254602 0.013507 -0.066888 1.383578 1.642108 0.101544 0.216922 1.184246 0.465865 1.517752 1.057346 1.141724 -0.308205 0.444454 1.150128 0.875643 0.761140 1.267468 1.622653 1.432402 0.223578 1.739539 0.967937 0.579394 1.295325 0.695686 1.465143 0.919977 0.860962 1.417037 0.800275 0.146391 -0.000155 1.696914 1.882403 1.749514 1.535689 1.248442 0.349026 0.450459 0.193358 0.892641 0.053406 0.721666 0.773947 1.759240 0.044923 1.297657 0.210102 1.748949 0.500587 0.746678 0.338398 1.743964 1.348629 0.109571 1.563782 1.787700 1.516085 0.239212 0.557966 1.005287 1.673499 1.372211 0.394314 0.726349 0.285910 1.401445 0.001714 0.038742 0.015697 0.874866 0.061458 0.169447 0.280342 1.267460 1.681993 0.516764 1.636595 1.269543 1.389119)
)
;;; 118 odd -------------------------------------------------------------------------------- ; 10.8628
@@ -2289,7 +2239,7 @@
14.72793006897 #(0 1 0 0 0 1 0 0 1 0 0 1 1 0 1 0 1 1 1 1 1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 1 1 1 0 0 1 0 0 0 0 1 1 1 1 0 1 0 0 1 1 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 1 1 0 1)
14.399567650824 #(0 1 0 0 0 1 0 0 1 0 0 1 1 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 0 0 1 0 1 1 1 0 0 0 0 1 1 0 1 1 0 0 0 1 1 1 0 0 1 0 0 0 1 1 1 1 1 0 1 0 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 1 0 1 1 1 0 0 1 0 1 0 0 0 0 1 1 1 0 1 0 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 1 1 0 1)
- 11.629548 #(0.000000 1.535051 1.563874 1.266716 0.738506 1.209412 0.377014 0.257657 0.249027 1.788290 0.444777 1.435469 -0.419230 0.780572 1.239745 0.611827 0.381875 0.494373 0.260322 0.706587 1.170533 0.237959 1.515542 0.765735 1.719320 1.934411 -0.324897 -0.229242 0.482779 0.875762 0.493549 -0.270590 1.872723 1.613736 0.670183 0.365341 1.804259 0.822083 1.385153 1.089982 1.724866 1.806755 0.696172 1.534495 0.304871 0.255152 0.485751 1.022612 -0.219348 0.955013 1.008621 1.170164 1.817786 -0.189401 0.678566 1.531799 1.484538 -0.405162 1.467974 0.604888 0.529910 0.904444 1.408373 1.168542 1.882510 1.275828 1.671028 0.615530 1.586497 1.222225 0.520271 0.638943 0.990174 1.803946 -0.125474 0.195589 1.729031 0.945189 1.318705 0.245720 1.803541 1.623585 0.646344 1.291547 1.132577 1.130000 1.060563 1.229394 0.465803 1.395927 1.031808 0.670464 0.975721 0.055444 0.297578 -0.132632 0.998333 0.839734 -0.069760 1.280764 0.974051 1.952783 1.022851 1.490514 0.623489 0.843765 1.476430 1.572183 1.188235 -0.066485 1.479075 0.442364 1.609119 -0.123686 -0.000020 0.082360 1.134485 1.886336)
+ 11.372032 #(0.000000 1.523039 1.654792 1.296895 0.679630 1.128093 0.293702 0.263297 0.251694 1.758110 0.485626 1.453639 -0.379976 0.771922 1.239382 0.574303 0.306697 0.492927 0.247401 0.748791 1.191748 0.287486 1.535566 0.717780 1.701758 0.020099 -0.333683 -0.236144 0.479701 0.894147 0.506598 -0.213943 1.935748 1.675071 0.630079 0.312347 1.807125 0.811680 1.412367 1.148607 1.688673 1.836522 0.690765 1.599539 0.213638 0.204884 0.492059 0.997203 -0.192780 0.939855 1.057021 1.229414 1.744424 -0.261222 0.619435 1.538022 1.338027 -0.451061 1.448769 0.646222 0.463594 0.932980 1.349569 1.129326 1.866095 1.225106 1.702560 0.709499 1.574194 1.152635 0.520204 0.660002 0.985920 1.789041 -0.079703 0.211739 1.767402 0.858164 1.341056 0.239320 1.880627 1.593185 0.559515 1.436030 1.171062 1.189861 1.100151 1.189996 0.389297 1.416765 1.042577 0.699089 0.971695 0.119883 0.287880 -0.187905 1.035934 0.793280 -0.056348 1.293519 0.977590 1.919763 1.071977 1.479275 0.636536 0.794422 1.500070 1.574080 1.109578 -0.212097 1.527463 0.484680 1.540304 -0.084171 0.051145 0.106486 1.258155 1.902329)
)
;;; 119 odd -------------------------------------------------------------------------------- ; 10.9087
@@ -2297,7 +2247,7 @@
14.647579104049 #(0 1 0 0 1 0 1 1 0 1 1 1 1 0 0 1 0 0 0 0 0 1 1 1 1 1 0 0 1 0 0 0 1 0 1 1 1 0 0 0 1 1 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 1 1)
14.464 #(0 0 1 1 0 0 0 0 1 0 1 0 1 1 1 0 1 0 1 0 0 1 0 0 1 1 0 0 0 0 1 1 1 0 1 1 1 0 1 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 1 0 1 1 0 0 0 0 1 0 1 1 1 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1)
- 11.733891 #(0.000000 1.478069 0.107235 0.561860 0.810750 0.658971 1.432337 1.591686 1.566810 -0.022222 1.794849 1.571610 0.856219 1.674420 0.303802 1.623816 0.950247 0.682436 0.191707 -0.169335 0.397941 0.543281 0.417893 -0.135172 1.504694 0.236740 1.627375 1.546826 1.933604 0.785619 0.059252 -0.042742 1.856576 0.170726 0.519440 1.194782 1.069420 0.137017 0.005394 0.391407 -0.089960 1.147130 1.708938 0.686748 1.295405 0.345376 1.854260 0.095475 0.286488 1.502215 1.194561 1.475072 0.363221 0.900796 1.497468 0.525978 1.585182 1.703395 0.805658 1.498692 -0.151728 0.662382 0.974670 0.842710 0.663585 1.736893 0.949731 -0.170556 1.936780 0.766978 1.285798 1.394631 1.232216 1.031874 1.161231 1.860299 1.263569 1.928623 1.332420 0.067220 -0.195100 -0.159358 0.926109 1.411361 1.035593 0.213656 1.449678 1.442744 0.595861 0.397227 1.491114 0.358769 0.408655 0.568620 0.584927 0.783173 0.029700 0.952965 0.925942 1.900175 0.033203 1.591609 -0.215946 0.173222 1.133333 0.721553 1.770436 1.659250 1.000380 -0.029785 1.095600 0.787249 1.520724 1.870137 1.542222 1.053126 1.366122 0.743809 1.827450)
+ 11.382967 #(0.000000 1.444491 0.042366 0.548006 0.816543 0.679614 1.385112 1.627863 1.546748 0.031993 1.677827 1.574178 0.804669 1.619426 0.262735 1.591650 0.901571 0.739014 0.218040 -0.251205 0.415303 0.533041 0.538900 -0.148241 1.517166 0.322143 1.652843 1.546693 0.012125 0.807853 0.050445 0.060938 1.733598 0.143293 0.628291 1.200546 1.020750 0.148847 -0.035605 0.447306 -0.107546 1.020138 1.651382 0.636097 1.240051 0.242234 1.888487 0.107674 0.288583 1.452175 1.258610 1.431294 0.341530 0.864171 1.510358 0.478016 1.594912 1.715452 0.831582 1.400774 -0.069042 0.662935 1.072296 0.910175 0.694021 1.777556 0.926689 -0.136723 1.922550 0.838807 1.332649 1.369361 1.231697 1.181069 1.191873 1.813261 1.267689 1.907850 1.318117 0.121883 -0.180072 -0.079061 0.962676 1.399166 1.041657 0.166202 1.480007 1.429525 0.617737 0.362826 1.433409 0.341654 0.470685 0.540518 0.682924 0.822949 -0.007358 1.090972 0.858435 1.863865 0.121511 1.632952 -0.232687 0.124502 1.124498 0.781091 1.754001 1.721517 0.982660 -0.027596 1.125202 0.709628 1.475250 1.804491 1.544573 1.054093 1.364433 0.732317 1.842957)
)
;;; 120 odd -------------------------------------------------------------------------------- ; 10.9545
@@ -2306,7 +2256,7 @@
14.578378677368 #(0 1 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 1 1 1 0 1 1 1 1 0 1 0 0 0 1 0 1 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 1 0 0 1 1 0 1 0 0 1 0 1 1 1 1 1 0 0 0 0 1 0 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1 0 1 0 0 1 1 1 0 1 0 0 1 1 0 0 0 1)
14.530112637252 #(0 0 0 1 0 0 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 0 1 1 1 1 1 1 1 0 0 1 0 1 1 1 1 0 0 0 1 1 0 1 1 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 0 1 1 1 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 1 1 1 0 1 0 1 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0)
- 11.776356 #(0.000000 1.517734 1.437683 1.088349 0.272436 1.384186 0.163939 0.148813 0.992503 1.216052 1.031948 1.644043 1.381029 1.083033 1.259023 0.702311 0.852932 1.235414 1.077136 1.548334 1.982626 0.551193 1.468054 1.380541 1.778891 0.795765 0.855260 1.215688 1.718970 0.087809 0.382828 -0.028922 0.184823 0.010862 0.462605 0.900192 0.580951 0.113800 1.007016 0.367538 1.410754 0.073676 0.652246 1.378150 0.438228 1.003773 1.793513 1.420858 0.562387 0.428937 1.554553 1.510975 0.847200 -0.035587 1.166642 1.336290 0.020843 1.895928 1.431220 0.690153 0.846473 1.237607 0.325247 1.143842 0.938491 0.300299 1.103227 1.568712 0.396783 -0.094440 0.544746 1.709276 0.043889 1.596556 0.599480 1.038960 0.492834 0.067689 1.817151 0.998261 1.626327 0.876867 1.746259 0.131038 0.081517 1.101222 1.622608 1.508127 1.005239 0.271152 0.281923 0.394484 1.675239 0.956992 0.174912 0.791066 0.397784 0.753858 0.743145 0.865302 0.079175 1.740900 1.812742 0.242621 0.632052 1.731404 0.766129 0.631705 0.097084 1.636600 0.426697 1.409817 1.085097 0.256550 0.737400 1.075765 0.444513 1.005798 0.587945 0.112913)
+ 11.434841 #(0.000000 1.530317 1.447448 1.120621 0.289073 1.464777 0.224675 0.202745 0.978241 1.183328 1.077611 1.619331 1.493600 1.026109 1.231846 0.780466 0.729095 1.243552 1.021452 1.492606 0.094341 0.594529 1.487011 1.362111 1.846247 0.762911 0.857337 1.292262 1.800156 0.108655 0.435872 -0.104788 0.248046 -0.104156 0.413569 0.977211 0.538930 0.153517 1.020689 0.347681 1.450123 0.160463 0.608384 1.389635 0.486527 1.028913 1.870059 1.441996 0.499150 0.426331 1.436894 1.472686 0.857486 -0.118323 1.082449 1.326787 0.076587 -0.011148 1.354177 0.656038 0.757540 1.211312 0.263250 1.161900 0.817149 0.217041 1.079975 1.627683 0.380790 -0.105103 0.577163 1.824029 0.099898 1.553199 0.623483 1.117595 0.518951 0.034641 1.824968 0.992499 1.533307 0.926295 1.632807 0.221358 0.072799 1.012468 1.650469 1.525449 1.104012 0.258565 0.246220 0.311852 1.672341 0.897434 0.216561 0.699531 0.454737 0.806046 0.730947 0.830500 0.000401 1.714442 1.884891 0.251627 0.576583 1.712072 0.780389 0.667338 0.017801 1.672487 0.436739 1.309639 1.163475 0.306013 0.840764 0.958896 0.384084 0.816652 0.644612 0.066377)
)
;;; 121 odd -------------------------------------------------------------------------------- ; 11
@@ -2314,7 +2264,7 @@
14.673 #(0 0 1 0 0 1 1 0 0 0 1 1 0 1 0 0 1 0 1 1 1 1 1 0 1 1 0 1 1 1 0 1 0 1 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 1 0 1 1 0 0 1 1 0 1 1 1 0 0 0 0 1 0 1 0 1 1 1 0 0 0 1 0 1 0 0 0 0 1 1 1 1 0 1 0 0)
14.355115628334 #(0 0 1 0 0 1 1 0 0 0 1 1 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 1 1 0 1 0 1 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1 0 0 0 0 1 1 1 0 0 1 0 0 0 1 1 0 1 1 1 0 1 0 0 1 0 1 1 1 0 1 0 0 1 1 0 0 0 0 0 1 1 1 0 0 1 1 0 0 0 1 0 1 0 0 0 0 1 1 1 1 0 1 0 0)
- 11.807489 #(0.000000 0.415690 1.102040 0.556543 1.716861 0.144569 1.489961 0.849369 0.309117 1.356988 1.294578 1.493893 0.529084 1.185417 1.320816 0.855958 0.768148 0.840171 1.064494 0.672238 1.858502 0.077698 1.345748 0.910473 1.163893 0.391217 0.118941 1.021751 1.820150 1.728967 0.463644 0.835055 0.391196 1.391462 0.188070 1.662024 0.555515 -0.087250 0.264111 0.105533 1.400734 1.750313 1.284190 0.049443 0.524946 0.000012 0.502069 0.105654 0.432107 0.031381 0.541025 0.151195 0.550697 0.506494 1.734968 0.583634 0.931604 -0.097132 0.533650 -0.098958 -0.052868 1.537039 0.043290 1.756552 1.118176 0.336512 0.917998 1.465075 1.056894 1.052309 0.121737 0.407218 0.511001 0.947588 1.611200 0.062187 0.125436 1.822253 0.824956 0.462928 1.654106 0.542318 0.279336 0.557835 0.987729 0.000348 0.901879 0.029645 0.839715 -0.001483 1.490420 1.192298 0.556946 -0.167766 0.270119 1.086684 1.089184 -0.201074 1.488914 1.081399 1.766020 1.552204 0.386778 0.278987 1.923689 1.296543 0.347547 0.794376 0.977939 1.554950 1.111586 0.952095 -0.140303 0.331486 0.688999 1.581240 0.814019 0.970737 0.223654 -0.010601 1.491268)
+ 11.353001 #(0.000000 0.546936 1.111740 0.499462 1.766462 0.169303 1.586982 0.801681 0.334713 1.216864 1.256642 1.491354 0.494366 1.188721 1.276420 0.896397 0.831173 0.937932 1.118112 0.684225 1.898377 0.158758 1.346945 0.960398 1.274240 0.290650 0.119509 1.026186 1.806522 1.726799 0.384923 0.757976 0.356123 1.501209 0.153583 1.761742 0.560783 0.007600 0.393149 0.126156 1.324903 1.658458 1.330758 -0.017909 0.404922 0.129424 0.472875 0.089316 0.444681 -0.030068 0.606860 0.131438 0.675091 0.552180 1.737749 0.660524 0.870041 -0.022586 0.588384 -0.183408 -0.047090 1.500088 -0.088088 1.772391 1.133452 0.262471 0.825927 1.451969 1.092666 0.962574 0.123398 0.357871 0.481956 1.002567 1.706394 0.077444 0.136240 1.852553 0.824859 0.474477 1.693983 0.610178 0.360494 0.572513 1.087023 0.005222 0.894041 0.108812 0.959309 -0.126052 1.435178 1.220186 0.536664 -0.099745 0.254879 1.179534 1.207334 -0.137379 1.442617 1.083534 1.846851 1.540107 0.480643 0.293409 0.049224 1.302563 0.371937 0.871834 1.040573 1.603680 1.106026 0.967035 -0.156181 0.354045 0.707836 1.614636 0.797178 1.001811 0.269210 -0.014140 1.436582)
)
;;; 122 odd -------------------------------------------------------------------------------- ; 11.0454
@@ -2322,7 +2272,7 @@
14.561 #(0 0 1 0 1 1 0 1 0 0 0 0 1 1 1 1 0 0 1 0 1 0 0 1 1 0 1 0 0 0 0 0 1 1 1 0 1 0 0 1 0 0 0 1 1 0 0 1 0 1 1 1 1 0 0 1 1 0 0 0 1 0 1 0 1 0 0 1 1 1 1 0 1 0 0 0 0 0 1 0 1 0 0 1 1 0 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 1 1 1)
14.266534958875 #(0 0 1 0 1 1 0 1 0 0 0 0 1 1 1 1 0 0 1 1 1 0 0 1 1 0 1 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 1 1 1 1 0 1 1 1 0 0 0 1 0 1 0 1 0 0 1 1 1 1 0 1 0 0 0 0 0 1 0 1 0 0 1 1 0 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 1 0 1)
- 11.873559 #(0.000000 1.093576 1.032283 1.455037 0.994945 -0.034880 1.182282 0.104595 0.212431 0.272616 1.720620 0.072282 1.229524 0.041331 1.384249 1.763876 1.316379 1.278885 1.600101 1.100734 1.554195 -0.009352 1.553896 0.319449 1.348581 0.269003 0.418752 1.225723 1.108254 0.070820 1.315565 1.415763 1.319395 0.395751 0.061030 -0.507752 0.569197 0.066919 1.404343 0.841460 0.205958 1.403278 0.490230 0.538857 1.458942 0.500100 1.099683 -1.911170 1.647698 1.684763 0.700765 1.431333 0.361174 1.240540 0.368988 -0.290500 0.063152 -0.264955 0.650394 0.644651 0.115406 1.150392 0.886660 1.230013 0.337414 1.676344 0.944881 1.534935 -0.043584 0.458406 1.326017 0.780003 1.068165 1.000500 0.555622 0.578406 1.542605 0.424192 0.830186 0.218109 0.532886 1.381681 -0.062213 0.492658 0.801610 1.188467 0.769854 0.994908 -0.137816 0.186722 0.054250 1.320216 1.171603 0.979965 1.005880 1.223085 1.789565 -0.204745 0.408281 0.532636 1.435008 1.513422 0.050868 0.655489 0.434808 1.926038 1.823332 -0.155884 0.176229 1.589667 0.733681 0.398646 -0.089080 1.966700 1.159116 0.442481 0.982041 0.810700 1.686642 1.769933 0.497179 0.884096)
+ 11.485389 #(0.000000 1.216382 1.043024 1.597164 1.056437 -0.037416 1.244947 0.144418 0.130447 0.237415 1.741737 0.141543 1.266722 0.028176 1.393738 1.822637 1.273693 1.372538 1.663966 1.122448 1.519401 -0.076644 1.544579 0.281485 1.309368 0.312986 0.488368 1.230157 1.147185 0.109847 1.383675 1.433538 1.375250 0.359818 0.119864 -0.511402 0.603816 0.007967 1.412366 0.739483 0.231032 1.601832 0.519670 0.511575 1.420886 0.497913 1.191995 -1.907095 1.651420 1.706036 0.583237 1.475051 0.276533 1.216413 0.383062 -0.418594 -0.105172 -0.286256 0.703231 0.731304 0.070880 1.113035 0.874502 1.156015 0.430481 1.616479 0.873036 1.639979 -0.090477 0.422275 1.285366 0.687404 0.957112 0.854386 0.710720 0.537213 1.643749 0.404795 0.795636 0.114935 0.501506 1.413961 -0.143919 0.528899 0.738768 1.208560 0.667236 0.956667 -0.148151 0.217356 0.016183 1.376077 1.149520 0.955548 1.070693 1.230727 1.672320 -0.140657 0.363742 0.479919 1.487862 1.487607 0.112321 0.543806 0.415254 -0.005196 1.942814 -0.170568 0.178190 1.620108 0.699227 0.392659 -0.082468 1.885230 1.208261 0.492862 0.960353 0.838109 1.574553 1.668296 0.574268 0.881797)
)
;;; 123 odd -------------------------------------------------------------------------------- ; 11.0905
@@ -2330,14 +2280,14 @@
15.019962594276 #(0 1 0 1 0 0 1 0 0 0 0 1 1 1 1 0 1 0 1 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 1 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 1 1 1 0 1 1 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 0 0 1 1 0 0 1 1 1 1 1 0 0 1 0 1 0)
14.795100232697 #(0 1 0 1 0 0 1 0 0 0 0 1 1 1 1 0 1 0 1 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 1 0 0 1 1 1 0 1 1 0 1 0 1 1 1 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 0 0 1 1 0 0 1 0 1 1 1 0 0 1 0 1 0)
- 11.949200 #(0.000000 1.157045 1.625480 1.344748 0.433846 0.837967 0.432704 0.497597 0.392876 0.034840 1.820518 1.187635 0.043966 1.762456 -0.094304 0.398802 0.594956 1.228795 1.556070 0.640247 1.594609 0.255838 0.728967 0.170242 0.133970 1.189721 0.491338 0.861279 1.130109 -0.362948 0.111675 -0.043227 1.110760 1.058019 0.936603 0.382203 0.773718 1.020092 0.986703 1.426202 0.299374 0.364284 1.607958 0.528286 1.316796 0.128439 0.903864 0.035423 0.718819 0.998719 0.401937 1.147722 0.113186 1.548292 1.386537 0.837201 1.250460 1.597179 1.823177 0.497940 0.402717 0.756971 0.751553 0.397247 1.473465 1.631101 0.229337 1.200402 1.201862 1.322124 0.003366 0.824515 1.927497 1.564932 0.429051 0.404848 1.714929 1.528376 1.428384 0.522830 0.474940 0.221772 0.070466 -0.009097 1.026557 0.054020 1.189629 0.096158 0.709089 0.621410 1.558616 0.214329 1.359243 1.382435 0.479753 1.380146 1.056058 0.247756 1.007386 1.174434 -0.017988 1.975736 1.623624 -0.251489 0.012792 0.445785 -0.287486 0.379536 -0.015516 1.381150 -0.295385 1.240871 0.604130 1.763725 1.246959 1.625439 1.155266 0.747428 1.464709 1.573286 0.881953 0.254850 1.288746)
+ 11.559895 #(0.000000 1.210659 1.579381 1.248498 0.495532 0.839539 0.405615 0.571835 0.431871 -0.023701 1.803795 1.090746 0.042339 1.922867 -0.060079 0.332174 0.585242 1.177053 1.559054 0.745064 1.460640 0.256370 0.777739 0.088951 0.110358 1.105045 0.467507 0.899944 1.140746 -0.421062 0.114986 -0.021546 1.087228 1.042373 0.881958 0.305376 0.743447 0.996364 0.899884 1.457985 0.332014 0.282096 1.664246 0.415521 1.329335 0.061824 0.907609 -0.030560 0.610499 0.971914 0.410317 1.010768 0.231244 1.511665 1.381133 0.755855 1.274834 1.466057 1.815481 0.579470 0.443869 0.695966 0.817721 0.465551 1.382168 1.648275 0.249190 1.186337 1.246191 1.292955 -0.014265 0.935762 1.878122 1.577544 0.498002 0.402474 1.708889 1.475571 1.453534 0.393597 0.407837 0.248710 0.009080 -0.090687 0.953768 0.070065 1.142668 0.178747 0.660848 0.619219 1.568447 0.240807 1.381979 1.306219 0.573742 1.427144 1.056094 0.185297 0.976255 1.132344 0.012096 -0.023187 1.600379 -0.296603 -0.009952 0.536403 -0.412102 0.501969 -0.068945 1.334612 -0.400741 1.126297 0.673373 1.721726 1.291316 1.589393 1.215954 0.737669 1.370723 1.581837 0.881932 0.284094 1.298010)
)
;;; 124 odd -------------------------------------------------------------------------------- ; 11.1355
#(124 15.930208950198 #(0 0 1 1 1 1 1 0 1 1 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 1 0 1 0 1 1 1 0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 1 0 0 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1 0 0 0 1 1 1 1 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0)
14.82254124518 #(0 0 0 0 1 0 0 1 1 1 0 1 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 1 1 1 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 1 1 1 0 0 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 0 0 1 1 0 1 1 0 0 0 1 0 0 0 0 0)
- 11.808938 #(0.000000 0.801618 0.038028 1.241500 0.522082 0.974922 -0.023527 1.057307 0.432514 -0.623179 -0.020853 -0.137446 0.917958 0.700799 0.371665 1.686335 0.016403 0.208533 0.734346 1.511547 -0.258464 0.190891 1.120028 0.423965 1.435579 0.102373 0.268459 1.196512 1.765093 0.703225 0.535556 -0.035196 -0.199324 0.646626 0.488948 1.708159 0.545796 1.585581 1.433308 0.228427 1.514584 0.027084 -0.002935 0.933530 1.878959 0.563815 0.081736 1.841312 0.971271 -0.085232 -0.183341 0.787728 0.281785 0.663526 0.780695 1.101505 1.667779 0.015853 0.424696 0.376259 1.013994 0.600626 0.521560 0.189799 -0.250597 1.045768 0.554102 1.074784 1.097426 0.909025 1.102130 1.774074 0.801691 -0.453657 1.609383 1.304923 0.096387 1.359155 1.846063 0.640805 0.007617 0.661509 1.389014 1.335819 0.540231 0.430909 0.832852 0.589839 0.688840 0.005610 -0.078520 -0.215990 0.268762 -0.438622 -0.301297 0.655275 0.337457 1.016012 -0.079678 1.309174 1.595126 0.061877 1.419641 0.259318 0.185659 1.416710 1.403078 0.652387 0.618078 0.554339 1.648173 1.513127 1.251720 -0.489980 1.416013 0.020314 1.344830 1.462660 0.644491 0.827093 1.094899 0.677312 0.557386 -0.175616)
+ 11.467062 #(0.000000 0.715423 0.135414 1.241617 0.437301 0.894872 -0.050825 1.045153 0.402735 -0.632165 0.036909 -0.096291 0.909265 0.754415 0.432523 1.739859 0.073731 0.238507 0.737748 1.472032 -0.348265 0.249631 1.123067 0.448761 1.440452 0.121736 0.289957 1.191958 1.755054 0.661469 0.583275 -0.009878 -0.214932 0.626290 0.385301 1.658347 0.574976 1.533237 1.371969 0.233757 1.409047 0.001324 0.016983 0.893318 1.755562 0.556057 0.022490 0.029728 1.032401 -0.034857 -0.198754 0.789667 0.337550 0.675909 0.667805 1.120454 1.628411 0.050758 0.419132 0.346046 1.030436 0.566727 0.600034 0.147960 -0.355359 1.033050 0.572718 1.099655 1.101877 0.911820 1.109123 1.791590 0.807453 -0.517722 1.596306 1.253463 0.094589 1.343562 1.850175 0.682499 0.059340 0.667826 1.246694 1.326595 0.500648 0.436220 0.832945 0.606316 0.736765 0.105173 -0.167703 -0.319688 0.197341 -0.475228 -0.274038 0.739524 0.298340 0.979783 -0.048903 1.327428 1.535526 -0.126224 1.348343 0.247487 0.226604 1.325935 1.403865 0.645880 0.688446 0.557048 1.672929 1.466609 1.290606 -0.550782 1.448593 0.061890 1.384914 1.479325 0.578071 0.910662 0.998092 0.793450 0.497778 -0.255234)
)
;;; 125 odd -------------------------------------------------------------------------------- ; 11.1803
@@ -2345,14 +2295,14 @@
14.833 #(0 0 1 1 0 1 1 0 1 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 1 1 1 1 1 0 0 0 1 0 0 1 1 0 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 1 0 1 1 1 0 1 0 1 1 1 1 0 1 0 0 1 0 1 0 1 1 1 0 0 1 0 1 0 1 0 1 1 1 1 0 1 1 0 0 0 1 1 0)
14.82163143158 #(0 0 1 1 0 0 1 1 0 0 1 1 1 0 1 1 0 1 0 0 0 0 1 1 1 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 1 1 0 0 1 1 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 0 1 1 1 0 1 0 0 1 0 1 1 1 0 1 1 1 0 1 0 1 0 0 1 1 0 1 1 0 1 0 0 1 1 1 0 0)
- 12.124568 #(0.000000 0.856699 1.968124 0.652463 0.593253 1.612417 1.298750 0.362642 1.002872 0.294830 0.622460 1.770408 1.372656 1.214800 1.327454 0.017833 0.428273 1.274610 0.200148 1.032919 0.374128 0.603474 0.765977 0.906155 0.078656 0.224528 0.957128 1.370451 0.433604 0.948812 0.698324 -0.105486 1.768869 0.621610 -0.435256 1.109841 1.716177 1.015016 0.032619 0.222495 0.769654 1.762204 0.909805 1.571743 -0.036625 1.282526 1.320934 1.800543 1.245665 0.056880 -0.095006 0.275985 0.451042 -0.029547 0.091080 0.092027 0.024486 1.334237 0.966565 -0.053693 1.387640 1.395120 0.008426 -0.221316 -0.020648 0.235894 0.339976 1.383109 1.390036 1.162861 0.837065 1.976755 0.516739 0.228541 1.099010 1.583623 0.128047 1.712038 0.110754 0.385602 1.295964 0.132415 -0.080754 1.543954 1.358498 1.032732 0.522510 0.017910 0.640767 0.273075 0.453981 1.672560 1.337754 0.199448 1.222983 -0.426651 1.563815 1.232786 0.419691 1.823088 1.322066 1.183935 1.185548 1.705317 0.061094 1.093831 1.857735 0.832239 0.217746 0.561517 1.345688 1.002413 0.201450 1.456846 0.432491 1.044408 0.252579 0.136378 0.257302 0.651435 1.941215 1.514796 0.641277 0.229224 0.169471)
+ 11.721418 #(0.000000 0.929171 0.003677 0.613565 0.485858 1.650188 1.319755 0.446049 0.998075 0.347703 0.660991 1.723761 1.511420 1.157084 1.346424 -0.000964 0.381319 1.237807 0.296653 1.012894 0.334165 0.565157 0.787880 1.053347 0.030554 0.206516 0.802154 1.395576 0.405864 0.961336 0.730891 -0.175434 1.880364 0.580702 -0.396513 1.113404 1.818277 1.028544 -0.079294 0.322464 0.744232 1.698619 0.951979 1.647046 -0.004110 1.315757 1.341387 1.843189 1.158320 0.005725 -0.091766 0.173615 0.323370 -0.152256 0.099809 0.204878 0.108728 1.302676 0.833123 -0.087579 1.336394 1.355657 -0.101322 -0.205643 -0.029488 0.121711 0.358067 1.479079 1.354752 1.140638 0.906251 -0.046085 0.497958 0.285307 1.056304 1.695243 0.066283 1.644871 0.082905 0.416798 1.205516 0.186737 -0.157605 1.488899 1.267746 0.969189 0.600768 0.079912 0.590137 0.232206 0.490362 1.682965 1.346565 0.098073 1.151039 -0.332144 1.636377 1.125237 0.441790 1.880514 1.317299 1.171493 1.142172 1.641414 0.019832 1.064809 1.873992 0.865042 0.227667 0.436266 1.165237 1.013517 0.197239 1.496459 0.423852 1.091595 0.362977 0.008152 0.235014 0.541688 1.988483 1.397637 0.680806 0.186489 0.332382)
)
;;; 126 odd -------------------------------------------------------------------------------- ; 11.2250
#(126 15.556811374771 #(0 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 0 1 0 1 0 0 1 1 1 1 1 1 1 0 0 0 1 0 1 1 1 1 0 0 0 1 0 1 0 1 1 0 1 1 0 1 0 1 1 0 0 0 1 1 1 0 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 1 1 0 0 1 1 0 1 1 1 0 0 1 1 0 1 1 0 0 1 1 0 1)
14.961482935205 #(0 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 0 1 0 1 0 0 1 1 1 1 1 1 1 0 0 0 1 0 1 1 1 1 0 0 0 1 0 1 0 1 1 0 1 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 1 1 0 0 1 1 0 1 1 1 0 1 1 1 0 1 0 0 0 1 1 0 1)
- 11.949765 #(0.000000 1.300065 1.868083 -0.233152 0.878851 -0.567944 1.076737 1.280692 1.098226 1.724572 0.995524 0.949309 1.077259 1.075750 1.071709 -0.306455 -0.305341 0.457185 1.307110 0.641742 -0.041080 0.318166 0.172303 1.334981 0.090155 0.676056 1.254997 1.601464 0.645385 -0.159969 0.015703 0.502522 1.830848 0.891498 -0.326415 -0.190113 -0.094621 1.113899 0.878212 1.177186 0.999399 1.581265 0.031556 1.410487 0.592246 0.773745 1.742455 1.497355 0.090325 0.144029 0.248757 1.781253 -0.144884 -0.132287 0.814784 0.839462 1.689926 1.417707 0.746577 1.881187 0.360734 0.402754 0.502409 -0.002309 -0.125169 0.701053 -0.038728 0.524263 1.136332 0.184876 0.537366 1.311502 1.133104 0.735594 0.047252 1.496810 0.437885 0.961793 1.188381 1.355421 1.513872 0.896362 1.344534 1.906406 0.416110 0.383324 0.013920 1.422124 0.304261 1.693899 1.148655 0.700829 0.954894 -0.170954 1.233435 1.356815 0.973339 0.836878 1.680026 1.630681 0.250347 0.274611 1.651369 1.365911 0.990194 0.500632 0.891911 0.365957 1.404046 -0.055289 0.674269 -0.108032 0.917504 0.051330 0.633933 1.063334 0.819449 1.092406 -1.867466 1.753940 1.222524 1.763083 0.649337 0.823096 0.042257 1.031525)
+ 11.620743 #(0.000000 1.300898 1.917297 -0.293040 0.896833 -0.601682 1.140580 1.306153 1.122969 1.758083 0.942723 0.961308 1.044496 0.980783 1.127427 -0.251343 -0.427866 0.405328 1.419466 0.602380 -0.056536 0.263898 0.134139 1.428763 0.014795 0.725845 1.263021 1.668485 0.664324 -0.176065 0.041856 0.455017 1.977471 0.861764 -0.325499 -0.178179 -0.095371 1.151527 0.887722 1.226755 0.889766 1.666641 0.062134 1.410037 0.485851 0.846780 1.733412 1.516020 0.148866 0.091948 0.168328 1.801265 -0.136299 -0.062301 0.844118 0.830360 1.713581 1.410773 0.864031 1.901329 0.392767 0.448977 0.384927 -0.023102 -0.091621 0.730719 -0.110238 0.491946 1.070226 0.080261 0.423591 1.317268 1.106058 0.770109 0.059061 1.576992 0.427030 1.018242 1.137492 1.309620 1.478786 0.894337 1.387901 1.953868 0.379067 0.372209 0.016662 1.484576 0.314935 1.644997 1.297146 0.604450 0.954902 -0.290705 1.399859 1.357032 0.981574 0.876837 1.655285 1.630649 0.221057 0.266159 1.699132 1.478352 0.965351 0.417556 0.936882 0.387429 1.416858 -0.122239 0.665611 -0.126811 1.049911 0.067378 0.506853 1.082576 0.829527 1.044911 -1.803083 1.774678 1.169830 1.803033 0.625068 0.801197 -0.022098 1.141362)
)
;;; 127 odd -------------------------------------------------------------------------------- ; 11.2694
@@ -2360,7 +2310,7 @@
15.018874168396 #(0 0 1 0 1 1 0 0 1 1 1 0 1 0 1 0 1 1 0 1 0 0 1 1 1 1 1 1 1 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 1 1 0 0 0 1 0 0 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 0 0 0 1 0 0 1 1 1 0 0 0 1 1 1 1 0 1 0 1 1 0 0 1 1 0 0 0 0 0 0 1 1 0 1 0 1 0 0 1 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 1)
14.695912364919 #(0 0 1 0 1 1 0 0 1 1 1 0 1 0 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 1 1 0 0 0 1 0 0 1 1 0 1 1 1 1 1 0 0 1 1 1 1 1 0 0 0 1 0 0 1 1 1 0 0 0 1 1 0 1 0 1 0 1 1 0 0 1 1 0 0 0 0 0 0 1 1 0 1 0 1 0 0 1 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0)
- 12.045200 #(0.000000 0.706796 0.694983 0.536103 -0.178522 1.288989 0.874556 0.492863 1.296198 0.226142 -0.076084 1.402098 1.427129 0.576355 0.280801 -0.199304 0.408537 0.547725 1.176731 0.676126 0.216871 1.001162 1.320930 0.112388 0.916883 1.126354 0.202314 1.004726 0.839438 1.876315 0.716715 -0.012857 1.573954 1.102653 0.171000 0.720057 -0.060132 1.912919 1.538280 0.220952 1.358368 0.769030 0.681340 0.453143 1.286145 0.982760 1.225721 1.726886 1.207554 1.592141 -0.036053 0.329497 0.967606 1.362406 0.791724 0.305453 0.637653 1.037198 1.507223 1.736489 0.582175 1.165636 -0.256391 1.700087 1.225523 -0.099800 0.947510 1.415887 1.185098 1.192866 1.160922 1.301441 0.799470 1.581855 1.624517 1.570144 1.489561 0.670635 1.524710 1.270692 0.637707 -0.171317 -0.012437 -0.179614 1.952570 1.210281 0.356513 0.987447 0.825178 0.997341 0.470250 0.612394 0.777309 0.170869 1.205436 0.477162 0.480367 0.373097 0.054721 1.168943 1.768642 0.899810 0.285669 1.688864 1.106974 1.750890 0.348675 -0.299949 0.820387 0.940087 0.914744 1.649211 1.757119 1.890729 0.448956 1.942173 0.740300 1.257055 1.263470 1.320363 0.525150 0.630768 1.105351 0.202681 1.034057 -0.139219 1.171776)
+ 11.649687 #(0.000000 0.599088 0.717748 0.375313 -0.085475 1.314250 0.916666 0.489936 1.313253 0.320057 -0.018336 1.386659 1.460618 0.453543 0.274564 -0.193189 0.330395 0.538690 1.213942 0.826391 0.184846 1.025419 1.325058 0.199119 0.825177 1.116704 0.198956 0.933920 0.860207 1.910535 0.657252 0.000629 1.585842 1.117619 0.179014 0.700501 -0.075892 1.931812 1.587966 0.032903 1.432970 0.739690 0.848283 0.459954 1.243607 0.955191 1.228955 1.708772 1.249076 1.602959 -0.037617 0.339063 0.939110 1.312434 0.805554 0.307506 0.614994 0.900554 1.516087 1.770136 0.489909 1.128034 -0.326786 1.667918 1.220378 -0.156669 0.949056 1.477953 1.191247 1.139999 1.083178 1.220400 0.816759 1.667238 1.722881 1.524642 1.397491 0.669230 1.492356 1.263926 0.648384 -0.208392 -0.001796 -0.109835 0.029930 1.265453 0.346560 0.991067 0.798832 1.050073 0.423282 0.636331 0.608594 0.081599 1.124899 0.448465 0.603806 0.419541 -0.037518 1.207508 1.736816 0.823190 0.208325 1.614511 1.007081 1.789351 0.295943 -0.261218 0.750839 0.886560 0.966009 1.718891 1.727386 1.831676 0.447667 -0.085762 0.812761 1.251527 1.273760 1.318551 0.479871 0.755706 1.119098 0.132521 1.077135 -0.089421 1.156064)
)
;;; 128 odd -------------------------------------------------------------------------------- ; 11.3137
@@ -2368,7 +2318,7 @@
15.003612518311 #(0 1 0 0 1 1 1 1 1 1 0 1 1 1 0 1 0 1 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 1 1 1 1 1 0 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 1 0 0 1 0 0 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 0 0 1 0 0 1 1 0 0 0 1 0 1 0 0 0 1 1 1 0 1 1 1 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 0 1)
14.876242756695 #(0 1 0 0 1 1 1 1 1 1 0 1 1 1 0 1 0 1 1 0 1 0 1 1 0 1 1 1 0 0 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 0 1 0 1 0 0 0 1 0 0 0 0 1 0 1 0 1 0 1 1 0 1 0 0 1 0 0 0 1 1 1 1 1 0 0 1 1 1 1 1 0 1 0 0 1 0 0 1 1 0 0 0 1 0 1 0 0 0 1 1 1 0 1 1 1 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 0 1)
- 12.120198 #(0.000000 0.034450 0.693732 1.022865 0.490576 0.835187 0.738290 0.875195 1.616086 1.233917 0.697969 0.607975 0.931012 -0.023372 0.715286 0.036745 0.364873 -0.442940 0.688336 0.119678 0.318534 1.428318 0.655631 0.435810 1.240967 -0.280444 0.571613 0.156172 1.014561 1.164840 1.586419 -0.056496 0.151682 1.427598 0.971955 0.395086 1.036693 0.726916 0.763103 1.176043 0.186243 0.161959 1.083278 0.573322 1.418773 0.727053 0.927259 0.672519 1.402473 0.038170 0.712330 1.770171 0.886080 -0.296275 0.752507 1.547988 0.758483 0.317330 1.253309 0.755268 0.617792 1.361208 1.213959 1.239239 0.004766 0.281864 0.946994 0.916165 1.510549 1.447242 0.763691 1.726119 0.614679 0.485012 1.628966 0.394475 0.121270 0.288036 0.478246 1.382136 0.095886 1.329614 0.235420 -0.099720 1.851089 0.388289 1.694422 1.234458 0.746333 0.962658 1.531296 0.109484 0.569180 0.433043 0.272086 0.136859 1.364690 1.722504 1.529248 0.423402 1.604895 0.139978 -0.046261 1.230129 -0.127555 0.600180 0.707629 0.240627 0.396193 1.299530 1.188470 0.852937 0.261212 1.112269 1.019667 1.484956 0.204247 1.801482 1.602170 0.623185 1.005941 0.416510 0.140243 -0.163555 1.305340 0.950268 1.661686 1.433887)
+ 11.630647 #(0.000000 0.022825 0.755460 1.002252 0.527246 0.866714 0.809928 0.931858 1.619037 1.071731 0.687199 0.657459 0.914313 -0.088698 0.778950 0.009424 0.332431 -0.463602 0.770163 0.257475 0.385888 1.416454 0.677168 0.430166 1.135331 -0.285982 0.481797 0.180392 0.934709 1.235271 1.669121 0.036426 0.149171 1.478462 0.935321 0.355680 1.046079 0.738095 0.783489 1.016209 0.146979 0.195053 1.067379 0.548286 1.447060 0.606169 0.937704 0.709789 1.239627 -0.119834 0.848910 1.904691 0.975860 -0.254507 0.782641 1.493213 0.830338 0.480742 1.285694 0.634661 0.592296 1.295378 1.355462 1.273456 0.124053 0.186399 0.991403 0.849559 1.494273 1.457508 0.742205 1.851945 0.547452 0.401918 1.863215 0.449820 0.145638 0.283387 0.560575 1.408527 0.122128 1.301259 0.254395 -0.104680 1.869532 0.277155 1.670687 1.282223 0.725736 0.926642 1.403981 0.021398 0.526528 0.499855 0.203639 0.041825 1.299012 1.717836 1.541786 0.421554 1.725739 0.259648 0.055275 1.155199 -0.080592 0.717756 0.780475 0.210944 0.463022 1.404324 1.177258 0.865798 0.254046 1.062558 1.045805 1.487457 0.294475 1.865988 1.556563 0.613629 1.105437 0.447010 0.217458 -0.209686 1.466979 1.051532 1.614253 1.464080)
)
;;; 256 odd --------------------------------------------------------------------------------
@@ -2392,7 +2342,7 @@
;;; 2048 odd --------------------------------------------------------------------------------
#(2048 83.108 #(0 1 1 0 1 0 1 0 1 1 1 0 0 0 0 0 1 0 1 1 0 1 1 0 0 1 1 0 1 1 0 1 1 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 1 0 0 0 1 0 1 1 1 1 0 1 1 0 0 1 0 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 0 1 1 0 1 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 1 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 1 1 0 1 0 1 0 1 0 0 1 0 1 0 0 0 1 1 0 1 1 1 0 1 1 0 0 1 0 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 1 1 1 0 1 0 0 0 1 1 0 1 0 1 1 0 0 1 1 0 1 0 1 1 1 0 1 1 0 1 1 1 0 1 1 0 1 0 1 1 1 0 0 0 1 0 1 0 0 1 1 0 1 0 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 1 0 1 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0 1 0 1 1 0 1 1 1 1 1 0 1 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 1 0 0 1 1 1 0 1 0 0 0 0 1 1 1 1 0 0 1 0 0 1 1 0 1 0 0 0 0 1 0 1 1 0 0 0 1 1 1 0 1 1 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 1 1 1 1 0 0 1 1 0 0 0 1 0 1 0 0 1 0 1 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 0 0 1 0 0 1 1 0 1 0 0 0 0 1 1 0 1 1 0 1 1 1 0 0 1 0 0 0 0 1 0 1 1 1 0 1 0 1 0 0 1 1 1 0 1 1 0 1 1 0 1 1 1 0 0 1 1 0 0 1 1 0 0 0 1 0 1 1 0 0 1 1 1 1 1 1 0 0 0 1 0 1 0 0 0 1 0 1 1 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 1 0 1 0 1 1 1 0 1 0 1 0 0 0 0 1 0 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 1 0 0 1 1 1 1 1 0 0 1 0 0 0 1 0 1 0 0 1 0 1 1 0 1 0 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 1 1 0 1 0 0 0 0 1 0 0 0 0 1 0 1 1 0 0 0 1 0 1 1 1 0 0 0 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 0 1 1 1 1 0 0 1 0 0 1 1 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 1 0 0 1 1 0 0 1 1 1 0 0 1 1 1 0 0 0 1 0 0 1 1 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 1 0 1 1 1 1 0 0 0 0 1 1 0 1 0 1 1 0 0 0 1 1 1 1 1 0 0 0 1 0 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 1 1 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 1 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 0 1 1 1 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0 1 1 0 1 1 0 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 1 0 0 1 1 1 0 1 1 0 0 1 1 1 1 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 1 1 0 0 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 0 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 0 0 1 1 1 0 1 1 0 1 1 0 1 0 1 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 1 0 1 0 0 1 1 0 1 0 1 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 0 0 0 1 0 1 0 0 0 1 1 0 1 1 1 0 0 1 1 1 0 0 0 1 0 1 0 1 1 1 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 0 1 1 1 0 1 0 0 0 1 1 1 0 1 1 1 1 1 1 0 1 1 0 0 1 1 0 1 1 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 1 1 0 0 0 1 1 1 1 0 1 0 1 1 0 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 1 1 1 1 0 0 1 1 1 1 1 1 0 1 1 1 0 1 0 1 0 0 1 1 0 0 0 1 0 1 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 1 0 1 1 1 0 0 0 1 0 0 1 1 0 1 0 0 0 1 0 0 1 0 1 1 1 0 1 1 1 1 0 1 1 0 1 0 1 1 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 1 1 1 0 0 0 0 1 1 0 1 0 0 1 1 1 1 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 1 1 0 1 1 0 0 0 0 1 1 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 1 1 0 1 1 1 0 1 1 0 0 1 0 0 0 1 0 1 0 0 1 1 0 1 0 0 0 0 1 0 1 1 1 0 1 0 1 1 1 1 1 1 0 1 1 0 0 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 0 1 0 1 1 1 0 0 0 1 1 1 0 0 1 1 1 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 1 1 1 0 0 1 0 1 0 1 0 1 0 1 1 1 1 0 0 0 0 1 0 1 0 0 1 1 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 1 0 1 0 0 1 0 0 1 0 0 0 1 0 1 1 0 1 1 1 1 1 1 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 0 1 1 0 1 0 0 1 1 1 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 1 1 0 0 1 0 1 0 0 0 1 1 0 1 0 1 1 1 1 1 0 0 1 1 1 1 1 0 1 0 0 1 1 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 1 1 0 1 0 1 1 1 0 1 0 0 0 0 1 1 1 0 0 0 1 1 0 0 1 1 1 0 1 0 1 0 1 1 0 0 1 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 1 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 0 1 1 1 0 1 1 0 1 0 0 0 1 0 1 1 1 1 0 0 1 1 0 1 0 1 1 1 0 1 0 0 0 1 0 0 1 1 1 0 0 0 1 1 1 0 1 1 0 1 0 0 1 1 1 1 1 0 0 1 1 0 0 0 1 1 1 0 0 1 1 1 1 0 0 1 0 1 1 1 0 0 0 0 1 1 1 1 0 0 1 0 1 0 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 0 1 1 1 1 0 0 1 1 1 1 0 1 1 1 0 0 0 0)
- 80.018680 #(0.000000 1.679092 1.013963 1.612289 0.644625 -0.082615 1.600490 0.598700 0.464274 0.835345 0.242364 0.394846 1.164524 1.534459 1.620202 0.668842 1.354299 1.013775 1.256113 -0.108942 0.065520 0.553531 1.353131 1.736066 1.796201 0.800369 1.730059 0.550903 1.907436 0.063697 1.207856 1.008943 -0.005343 0.070791 1.634875 1.092167 -0.211954 1.920479 0.758342 0.372487 0.135685 1.501069 -0.068872 0.449413 0.205019 0.921902 1.554559 0.737365 1.348550 1.155737 0.968441 1.389589 0.794483 1.446258 1.355536 0.195820 0.588264 1.256146 0.553514 1.122314 1.468107 0.302501 0.547814 0.187068 -0.044988 0.390227 1.329328 0.344601 1.263958 1.119793 1.312063 1.899330 0.206450 1.596229 1.906825 1.636833 0.952294 1.629338 1.613417 1.634496 1.355584 1.532509 1.731279 0.499012 -0.085555 1.063552 1.536462 0.439292 -0.114266 0.906444 1.825905 1.296859 0.144924 1.862807 1.486232 0.367488 1.382029 0.571334 0.928352 1.337410 -0.033444 0.425978 0.968838 0.249699 1.514798 1.423034 1.795268 1.646996 1.007349 1.389468 1.486141 0.381033 0.134662 0.075526 1.438305 1.388079 1.738557 0.227637 0.917084 1.072891 1.645418 1.319177 0.844839 1.841108 0.999347 1.756366 1.695352 0.754565 0.540587 0.650462 1.759886 1.686502 1.006497 0.612320 0.630584 1.553761 -0.087307 0.297875 0.682167 1.313284 1.968058 0.487778 0.875713 0.757927 1.077060 0.912273 -0.283356 1.049707 1.432933 0.650617 0.073649 0.799987 0.046435 1.265427 0.094434 0.864072 1.331036 0.446739 -0.030065 -0.240379 1.586134 1.613073 0.362246 0.446869 0.897172 -0.048629 0.279794 1.743580 1.012519 1.631365 0.471122 -0.299634 1.637641 0.581402 0.066215 0.037165 0.925918 1.194708 0.131953 0.532569 0.548523 1.001483 1.559651 1.462090 0.641254 1.147688 0.175604 1.050914 1.175625 1.505278 0.677236 0.526383 0.472680 0.277787 0.612670 1.246871 0.883555 1.596699 0.226304 0.890654 0.767809 0.609594 -0.008448 1.166729 1.492376 0.910598 0.333342 -0.186359 -0.235141 0.566659 0.172743 1.216895 1.737345 0.432731 0.727555 0.066033 1.197376 1.213196 1.788656 0.413873 0.581114 1.598521 1.074242 0.720186 0.084999 1.114628 0.361109 0.514103 1.379230 1.335432 0.074195 0.782441 0.346846 1.117424 -0.138363 0.478500 0.764703 0.069727 0.491788 1.118793 1.321179 1.498472 1.651073 1.581948 1.433202 -0.000708 1.506725 1.342572 0.142126 0.278260 1.489076 1.207473 0.119572 1.492580 0.136316 0.025962 1.266041 1.902944 1.355714 0.389406 1.290576 0.224197 0.980947 0.107275 0.120067 1.289578 1.325139 1.959001 0.881633 1.376422 0.890033 1.102621 1.627054 0.520663 0.253483 0.584321 0.518954 0.475176 1.795122 0.625906 0.245147 1.861500 0.141732 1.270690 0.516149 1.697256 1.329594 0.866543 1.368095 0.479753 0.834283 1.840567 1.216055 0.843148 1.252415 0.833562 1.448397 1.564272 1.858889 0.281188 1.317048 1.577467 0.064580 1.904052 1.786383 0.782299 1.827010 1.742469 0.453458 0.815815 0.175083 1.180890 0.137467 0.428305 1.044972 0.446104 1.054852 1.328351 0.606447 0.992176 0.481552 -0.071807 1.657518 0.850004 0.230427 0.478534 0.217625 0.876382 0.048152 0.368787 0.424425 0.717918 1.267992 1.255403 0.844668 0.370957 1.793616 0.739363 1.268612 1.187070 1.229513 0.168326 0.634722 0.147631 0.349708 1.287219 0.798156 0.299113 1.492318 0.146026 1.834210 0.311513 0.928660 1.692242 0.457742 0.360367 0.889793 0.331302 0.816023 0.006959 1.721866 1.216894 0.657971 0.471911 0.273368 1.260074 0.845391 0.144510 1.307222 0.890462 0.391054 1.151362 1.341641 0.635416 0.190596 1.133964 0.233464 -0.156457 0.554734 0.927577 1.708448 1.953819 1.406599 1.599810 -0.009997 0.567407 0.145805 0.444864 0.571162 0.286351 1.112292 1.584918 0.394527 0.785872 0.957345 0.409538 1.795997 0.041064 1.662459 0.267640 0.930597 0.633344 1.221298 0.756817 1.235321 1.283086 1.650214 1.222516 1.051646 1.302650 1.035241 0.879031 -0.200847 1.102999 0.803012 0.414786 0.513828 0.635106 0.365919 0.455891 1.537838 0.682880 1.612062 1.299667 1.787244 -0.009328 0.327766 1.109613 0.971379 0.991406 1.166691 1.322572 1.156305 1.129910 0.753770 1.577433 0.651182 0.520206 1.846686 0.224027 -0.051794 1.917124 1.726502 0.257985 1.471541 0.542716 1.254825 0.277271 1.906410 0.662223 1.789325 0.963406 1.271472 1.239550 1.161723 1.174726 1.759425 0.052367 1.865640 0.439859 -0.157902 -0.021610 0.642904 1.697695 1.293362 -0.145943 1.570155 -0.067128 0.718386 0.865787 -0.007275 0.179097 0.883830 0.869217 1.164584 1.874255 1.719482 1.444507 1.699691 1.546951 1.787012 1.665463 1.042091 0.532963 0.260407 1.921664 0.899251 0.847670 0.402041 1.186908 1.050334 0.943901 -0.013447 0.095448 1.218456 -0.406388 1.711511 1.560336 1.503878 0.009301 0.565054 1.586147 -0.084088 0.484163 0.581630 1.009054 0.157099 1.229378 1.784095 1.154481 1.797953 1.761559 0.831384 0.346752 1.314462 1.203203 1.392911 0.832585 -0.206772 0.533097 1.291715 0.807593 1.723142 1.666894 0.605487 0.809294 0.531960 0.194053 1.351396 1.169917 1.540290 1.954294 0.966579 1.838307 0.956452 1.210007 1.064169 0.646680 0.676644 0.582696 0.232969 0.729865 1.326086 1.519748 1.150474 0.658115 0.290145 1.353606 0.530121 0.318046 1.629114 0.551190 0.781219 0.938447 0.991776 0.195835 0.523404 1.463426 0.449167 0.325709 0.442346 1.075478 1.751758 1.395495 0.846398 0.242985 0.560954 0.570770 1.026026 1.010068 0.455456 1.373959 1.467315 0.069709 0.100605 0.427118 1.034637 0.282853 1.404316 0.731979 1.416314 1.900010 1.559087 0.680169 -0.010957 1.081853 0.919284 1.558539 1.109854 -0.047757 1.749123 0.663139 0.065603 -0.056353 1.258619 1.678356 1.442422 1.800607 1.084544 0.357118 0.487366 -0.142977 0.210768 0.964179 1.679261 1.086686 0.811648 1.436372 0.939024 0.623837 0.292666 0.543928 1.282604 0.508302 1.175309 1.611833 1.404913 0.896312 0.045250 0.001845 0.663941 0.574662 0.504956 0.900217 1.328905 0.814401 0.892017 0.137764 1.465184 0.436561 0.993302 0.857975 0.871783 1.082806 0.054950 -0.069181 0.634267 1.216553 0.884638 0.015380 1.718012 0.376638 1.229673 -0.081499 0.015704 1.555596 0.248383 1.683791 1.740743 1.211156 0.013416 1.463029 0.313449 1.030970 1.391305 -0.074736 0.677818 0.908581 0.160000 1.857131 0.145932 0.141346 1.946252 1.056776 1.370974 1.722962 0.761214 1.585416 0.104488 0.416165 1.153723 1.648608 1.283411 0.295314 1.605347 1.518768 0.110521 0.855831 1.551063 1.887547 1.341989 0.721606 0.038307 1.749727 1.608993 0.341647 1.984628 -0.049712 0.465270 0.657147 1.829125 1.708524 0.390686 0.878899 0.728505 1.840418 1.473492 1.302054 0.151315 0.251991 0.459117 0.624506 0.242632 0.692401 0.621954 1.255972 1.727718 1.794727 0.701579 0.889821 1.573939 1.666474 1.095664 1.764266 0.027238 0.159662 0.450493 1.806947 0.603820 1.489560 0.413487 1.526108 1.802984 1.778912 1.213529 1.066617 0.040831 1.406429 1.014159 1.165503 -0.004695 1.039903 1.003534 -0.401842 1.653209 1.724195 0.407015 1.406017 1.270549 1.817213 1.271801 1.288032 1.538400 0.801597 1.138364 0.185159 1.171406 0.048901 1.011370 -0.035450 0.987428 1.157952 1.387312 1.205967 1.724853 1.903060 0.020878 0.722639 0.424798 1.871395 1.418413 0.398559 1.538641 0.226128 0.462267 1.690098 0.775310 1.759335 0.214844 1.360564 0.946999 0.099262 1.830058 1.662650 0.940924 0.834187 1.752864 0.886557 0.615738 1.675242 1.436092 -0.101286 -0.212375 1.427743 1.882878 1.366547 0.168485 0.417295 0.129699 1.499692 0.012433 1.497475 1.595494 0.718395 1.226562 0.458692 0.991883 0.199307 0.644477 0.024249 -0.097158 -0.078139 1.252772 1.739547 0.114895 0.469165 0.592194 0.785232 0.480638 1.581568 0.055482 1.421406 1.157157 1.109880 0.379044 1.664982 -0.015214 0.621677 0.010888 0.406279 0.231009 1.576373 1.021949 1.143861 0.721897 1.209908 1.588241 1.128074 0.087522 0.760602 1.444929 0.530825 0.965618 0.890173 1.224487 0.768192 1.143589 0.142203 1.773190 0.782755 1.137899 0.555856 1.662752 1.348160 0.892844 1.513193 0.578378 0.709774 0.314215 0.757602 -0.107234 1.324953 1.369120 0.163575 1.222036 0.897656 0.750932 0.621870 -0.037481 0.244940 0.023810 0.628122 1.050929 1.716967 0.446429 1.340498 0.583850 0.411286 1.463968 1.322496 0.780956 0.862443 0.616380 1.791488 0.167763 1.262637 0.818100 0.174460 0.267346 1.219306 1.394886 1.110147 1.023316 -0.025266 1.746759 1.251666 0.952957 0.759985 1.676611 0.182405 1.355039 1.187257 1.264178 1.743110 -0.000632 -0.028637 1.252358 1.084509 1.919896 0.613209 0.210003 1.394086 1.818524 0.455981 0.977740 1.562293 0.635637 0.242714 0.523263 -0.176418 -0.049409 0.295627 1.103361 1.076197 1.824062 -0.110307 1.515637 0.566889 0.743325 0.144176 0.345361 0.751926 0.853150 0.185931 1.312692 0.556198 1.628028 0.749305 -0.115217 -0.018075 0.935267 1.045623 0.124592 0.659536 0.544835 0.499822 1.688973 1.470296 0.702110 0.803914 0.527872 1.171074 1.011457 1.040554 0.569460 1.862892 0.429717 0.866752 1.696879 1.747123 1.572650 0.594745 1.274103 1.220799 0.398692 1.380249 0.457752 1.053279 1.316878 0.222754 0.530339 1.207525 0.449851 1.338782 1.405985 1.326773 0.171856 0.231784 -0.217126 1.544399 0.163061 1.192289 1.273805 1.045563 1.563841 -0.177298 0.102186 0.267961 0.654114 0.916302 0.100333 1.046949 1.810423 1.228554 1.514237 0.409074 0.281154 0.063804 1.492055 0.561841 0.881480 1.066536 0.802879 1.893357 1.545487 1.469198 1.459232 0.341922 0.745955 0.375852 0.810601 -0.090079 0.227915 0.536547 1.577712 0.803182 1.329450 1.474758 0.875355 1.139484 1.124843 0.778468 0.712971 -0.057300 0.390366 0.897760 0.941682 1.110109 0.793286 0.473200 0.107479 1.775554 0.194506 1.124334 0.413136 0.081349 -0.075924 1.905064 0.577268 0.220376 0.698826 1.631338 1.119430 1.657072 0.736706 1.659232 -0.025933 0.590979 -0.081404 1.661722 0.672321 0.440298 0.345230 0.295680 1.221691 0.165416 1.834417 0.685015 1.533820 0.558892 0.382464 1.961931 -0.012734 0.545490 1.348904 0.409855 0.752424 0.511360 0.123096 0.121250 1.033751 1.685749 0.962722 1.509184 1.559737 0.741824 0.388512 0.853797 0.469431 1.374392 -0.096159 1.844858 1.675920 1.791014 0.632980 -0.095551 0.394490 1.761072 0.748126 0.922426 1.181198 0.756719 1.204853 1.180018 0.483391 0.616236 0.327935 1.387020 0.923916 0.541435 1.396904 1.055708 0.240905 -0.076433 0.941873 1.305821 1.689480 1.034102 0.088100 0.811200 0.140216 0.179310 0.887099 1.572613 1.584390 1.002142 0.565045 1.806168 0.640808 0.297671 0.105817 0.333467 0.379567 0.660573 0.773392 1.822699 1.485444 1.811024 1.856272 0.752126 0.318014 1.830499 0.711767 1.675677 0.097266 1.792992 0.010421 1.373786 1.565154 0.127692 0.090642 1.076354 1.643120 0.306284 0.098136 0.947913 0.611612 0.916336 1.566334 1.636551 1.129476 0.809313 0.615947 0.310347 -0.027901 0.528668 1.761283 0.067805 0.652312 1.245839 0.791951 1.613448 0.652645 0.662146 1.126442 1.511173 1.172103 1.425588 1.410366 0.532681 0.789884 1.506774 1.417677 1.299675 0.968135 1.298528 0.177116 0.487249 0.606513 1.584372 0.330646 1.431423 0.815702 0.887757 1.823741 0.666679 0.849569 1.511945 1.667619 0.438531 1.197179 1.551575 1.284001 0.192989 0.962679 0.084970 0.083089 0.848712 1.465330 0.482514 1.017018 1.684158 0.146877 1.935866 -0.041818 1.089380 1.439737 0.398880 1.386918 1.467531 1.684008 -0.212954 0.978158 1.818905 1.484229 1.166664 0.266697 1.655221 0.176339 1.168867 0.004132 1.536533 0.959894 1.561594 0.405316 1.418890 1.601336 0.526054 0.004534 1.601955 0.419377 -0.112417 1.533289 1.116536 0.790747 1.477550 0.411514 0.056533 1.806498 0.020464 1.789530 0.086165 1.256570 0.776658 0.331575 1.084245 0.727804 1.168302 0.676121 0.642016 0.756152 0.182761 1.179935 1.019374 1.419773 1.090044 1.697024 0.961212 1.896363 1.029691 0.993438 1.076045 1.193506 0.253389 1.131138 1.531025 0.841483 1.649737 1.082646 1.448062 1.587165 1.696591 1.779750 1.901971 0.747170 0.479868 0.700267 0.044651 0.904885 1.542608 0.351358 1.843782 0.022705 0.883640 0.369598 1.398988 0.694038 1.817217 0.512216 1.597458 0.220142 0.837112 1.151133 1.559335 1.024606 0.057836 0.691296 1.273114 1.113439 0.627399 0.268820 1.604917 1.437751 0.315106 1.209655 1.268288 0.829305 0.064724 1.416726 1.155883 0.616786 1.108943 0.940265 0.969120 0.832045 1.442099 1.058158 0.984589 -0.025168 0.737278 0.063192 1.008626 0.091989 0.234831 0.574358 1.549743 0.215816 1.088853 1.398654 0.223360 1.221293 0.478409 0.504484 1.911302 0.035719 0.341700 1.638561 0.505776 0.185128 1.142485 0.867356 1.131030 1.392628 1.265087 1.567842 0.897110 1.419534 1.619412 1.392354 0.311161 1.152296 1.544209 0.646842 0.310737 1.347009 0.023227 1.252194 0.447582 1.440454 1.038309 1.171989 0.909730 0.682290 0.657238 1.072191 1.468112 1.086530 1.110473 1.318860 1.295616 0.824206 0.699974 0.982254 1.214186 1.166234 0.095175 0.864710 1.085108 1.937730 0.353682 1.245575 0.330096 1.248178 1.727296 -1.975744 0.931228 0.534498 1.367071 0.997128 0.682399 1.820602 1.777698 0.241172 1.509831 0.994834 1.555832 -0.018039 1.361216 1.523513 0.878681 1.306592 0.156701 1.038202 0.350473 1.190364 1.139915 1.520090 0.869894 0.625663 1.100009 0.309812 1.368621 0.677466 1.024406 1.484260 1.466514 1.089896 0.034290 1.184538 0.373645 1.179848 0.610049 0.220616 0.553310 1.829706 1.429904 0.800371 0.149069 1.994225 1.575705 0.241503 0.620528 0.874023 0.999499 -0.006606 1.542257 1.527195 1.438025 1.150625 0.227118 0.009321 1.828640 1.288875 0.442936 0.391811 -0.120315 -0.064026 0.642664 0.044393 0.657260 1.156814 1.329908 0.981386 1.049174 1.267025 0.659271 1.811339 1.469793 1.313379 1.723655 0.415596 -0.021623 0.862527 0.991616 1.742825 1.772475 1.620514 0.964651 0.652737 0.711252 0.508912 0.231445 0.567465 1.526564 1.923889 1.123497 0.291064 1.877671 1.468944 0.308289 0.443277 1.003694 1.021833 0.440628 0.205400 1.344634 0.859086 0.492229 0.740069 0.868245 0.362662 1.262787 1.056725 1.031544 -0.033310 0.158241 0.921375 1.238111 0.454527 1.718025 1.627080 1.468576 0.723823 0.168059 0.539865 1.977784 0.960371 -0.070411 1.429704 1.510184 1.787524 1.880662 0.953397 1.594341 -0.116290 1.780971 -0.083917 1.573625 0.143615 0.128520 -0.143017 1.230787 1.556154 0.702452 1.329386 1.132677 1.256364 1.626941 0.371622 0.925187 1.757935 1.537643 0.416225 0.358809 1.483154 0.121900 1.880789 1.652884 0.022516 0.549082 1.102223 0.633908 1.285737 1.487667 0.593130 1.228270 0.569357 0.748928 -0.021256 1.541660 1.700819 1.336035 0.749169 1.629575 1.836167 -0.003650 1.241987 0.421078 1.672585 0.655959 0.652851 1.377619 1.361915 0.353619 1.408706 0.230006 1.008721 0.173173 0.443654 0.228163 0.369167 0.800933 0.748341 1.106498 1.532347 0.551808 0.223660 1.031544 0.904535 -0.283585 1.397474 0.398439 0.181478 -0.053437 0.452204 1.192733 0.211706 1.284571 0.389309 0.442274 0.263863 0.206246 0.938037 1.169381 1.697762 0.352146 1.550659 0.446236 1.875229 1.395772 1.404259 0.926244 -0.100197 1.360413 0.203303 0.239971 1.770888 1.269163 1.464451 1.137790 0.963366 1.322883 0.950663 1.624024 1.877003 0.097546 0.296802 0.040780 0.973483 0.572523 0.071248 1.578736 0.593234 0.275605 0.047349 0.228982 0.284918 1.467737 0.914227 0.946600 0.240605 0.112882 0.754880 1.851867 -0.020483 1.348803 1.018085 0.135997 1.364946 1.734614 1.159875 0.818095 0.486892 0.454488 0.558651 0.050666 1.586248 1.223182 0.125291 1.891737 1.510713 1.941229 1.888418 0.107550 0.069636 1.475724 0.643121 0.787039 1.034148 0.647980 0.955563 1.644822 1.712959 1.200290 1.579088 0.884606 1.861555 0.763102 1.153345 0.522177 1.167634 1.827974 1.349801 1.556746 0.873493 0.437122 0.812903 1.348335 1.900494 1.663332 0.182212 0.090363 0.547201 0.133155 0.195803 1.115326 1.256593 1.430356 0.859859 0.753983 0.538647 0.821091 0.721146 0.005334 0.638925 0.736957 1.191883 1.751598 0.836542 0.636930 0.862596 1.122101 1.126421 0.098220 1.847300 0.738571 0.481294 0.719909 1.154948 0.934675 0.714647 1.685323 0.414901 0.923612 1.425697 0.687569 0.399027 0.525986 -0.007184 1.501229 0.517356 1.897805 1.534650 0.640731 1.920886 0.086342 1.244143 1.415082 0.263078 1.030551 0.072670 1.135328 1.349689 0.684288 0.146678 1.107438 0.335755 0.096893 0.505963 1.196544 1.442058 0.983958 0.502013 0.344896 0.305508 0.345819 1.214939 0.123279 1.559985 0.310066 1.435724 0.241818 1.855350 0.746934 1.168678 -0.001025 1.506032 0.713237 1.272230 1.782715 1.126876 0.802976 0.795421 0.479106 1.716241 1.382721 1.275482 -0.031088 1.521340 0.857539 1.775741 0.726949 1.205070 1.474728 0.081044 0.539521 1.507636 1.599965 0.245694 0.158488 0.435753 0.932921 1.699432 0.096018 0.953336 1.792983 0.831954 1.455854 1.517225 1.003818 1.468124 1.821595 1.727330 0.857422 0.534994 0.757068 0.148812 0.110688 0.702090 0.227913 1.492353 1.561370 1.677688 1.624701 0.838197 1.134072 1.521489 1.507318 0.289365 0.197650 0.518636 1.041891 0.771878 1.051484 0.159366 1.724765 0.143061 0.254539 1.444954 0.777118 0.125183 1.495216 0.642216 1.648307 0.765120 1.835042 1.795852 0.537327 0.543311 1.168425 1.047160 0.932284 0.276530 -0.047971 1.734435 0.529146 1.610604 1.612045 1.577161 1.010878 0.839976 1.840162 0.063522 1.293946 0.157903 1.251878 0.579409 0.375208 -0.118592 -0.044495 1.926584 1.164947 1.082343 1.714684 0.465709 0.754582 0.160576 1.047358 0.640559 -0.160997 1.019137 1.715548 0.254038 0.648966 1.333673 -0.019119 1.714685 0.163716 -0.174639 -0.044431 0.299283 0.709582 1.074540 0.588022 0.746316 1.072680 1.656382 0.906699 0.944651 1.561208 1.761890 1.091269 1.415403 0.097086 0.690448 0.436439 1.619213 0.765257 0.270274 -0.171784 1.202942 0.997391 0.017019 1.003536 1.514325 1.044475 1.293876 1.830262 0.977786 -0.100553 1.412276 0.381577 0.198320 -0.228497 0.389982 1.311702 0.095537 0.106786 0.308979 0.435331 1.255327 1.915664 0.469344 0.128632 1.193530 0.907233 1.177711 0.231821 0.133525 1.704938 1.053625 0.180807 0.181071 0.187368 1.519560 0.208938 1.828915 0.394964 1.122869 0.050446 1.579453 0.953681 1.949403 1.755662 1.237006 0.577180 1.250794 1.381652 -0.036926 0.966677 1.175897 0.432882 0.158983 0.225173 0.833443 0.258552 1.859506 1.054440 0.180688 -0.000577 0.471218 -0.056858 1.026077 0.225593 0.027069 0.254575 1.332824 1.438032 0.742335 1.355915 0.514362 1.594596 0.956854 1.276169 0.091935 0.364549 1.925492 0.032016 1.435322 1.510822 0.234354 0.525739 1.085146 0.132447 0.494482 0.763171 0.867063 0.418810 0.037771 0.594710 1.420642 1.291850 1.407313 0.001324 1.327578 0.494325 0.637405 0.688482 1.501203 0.757489 1.148005 1.618374 1.195671 1.251768 0.799722 0.463964 1.277568 0.668441 1.307955 0.059722 1.525883 0.668523 0.570101 0.206908 0.742606 1.249922 0.260986 0.181265 1.658481 0.215846 0.830043 0.339862 0.849988 1.956315 1.712004 1.492557 1.987319 1.034350 0.072407 0.255404 1.179981 1.446368 0.905497 0.681440 1.739005 -0.067663 0.654260 1.519472 -0.024335 0.896237 1.049246 0.958167 0.819833 0.517464 0.757830 0.549980 0.372789 0.279440 0.396628 1.959841 0.883637 0.964344 0.895920 0.140065 1.188614 1.568295 0.901249 0.164335 0.861597 0.433522 0.984215 0.828702 1.540801 1.435871 1.574453 1.711575 0.790659 0.729527)
+ 78.937441 #(0.000000 1.689846 1.018490 1.611502 0.639207 -0.082787 1.592906 0.601026 0.457537 0.853588 0.246480 0.384884 1.166407 1.518233 1.610776 0.682841 1.354812 1.022675 1.260499 -0.112300 0.069724 0.538233 1.350546 1.731710 1.788711 0.798385 1.720292 0.552885 1.914312 0.083341 1.189678 1.001287 -0.016752 0.082208 1.635077 1.097941 -0.211066 1.915710 0.755430 0.377368 0.141690 1.508951 -0.063008 0.455045 0.203452 0.898819 1.541895 0.734814 1.350906 1.164589 0.953740 1.385840 0.788728 1.463142 1.354194 0.191281 0.579789 1.257225 0.559072 1.122363 1.468759 0.308060 0.535123 0.171149 -0.035758 0.383213 1.313251 0.349952 1.270535 1.135458 1.334934 1.890883 0.201654 1.594547 1.903186 1.646471 0.951539 1.635073 1.622014 1.631851 1.367584 1.552595 1.728701 0.503153 -0.095067 1.062992 1.535287 0.428952 -0.115113 0.904825 1.834421 1.316028 0.139571 1.862408 1.474241 0.357211 1.399016 0.565894 0.914744 1.336730 -0.021306 0.427360 0.982944 0.246389 1.520693 1.429115 1.795578 1.639579 0.993318 1.397084 1.476412 0.372916 0.127072 0.078109 1.452725 1.376697 1.742105 0.223687 0.910528 1.065049 1.633967 1.318213 0.850379 1.824021 0.982950 1.747574 1.683992 0.758363 0.534234 0.648109 1.761061 1.684306 0.998762 0.599534 0.636315 1.560104 -0.085181 0.292286 0.687333 1.315914 1.968365 0.498146 0.872936 0.750372 1.064806 0.913607 -0.281292 1.049262 1.431464 0.630016 0.070509 0.782794 0.040723 1.266929 0.098300 0.871494 1.325216 0.428614 -0.023960 -0.257052 1.568632 1.612023 0.370339 0.462301 0.888796 -0.048313 0.277648 1.743637 1.021040 1.635300 0.468648 -0.299562 1.640302 0.579774 0.064992 0.038520 0.939604 1.190498 0.120304 0.541286 0.541673 1.009244 1.560773 1.452497 0.646789 1.167337 0.164892 1.045596 1.183654 1.504427 0.689198 0.507543 0.474697 0.285834 0.591708 1.250029 0.879318 1.605841 0.233841 0.888556 0.769118 0.609719 0.005003 1.165066 1.500099 0.895021 0.312884 -0.181818 -0.210240 0.557941 0.168915 1.201735 1.729684 0.438679 0.710349 0.066805 1.172545 1.217293 1.790687 0.425805 0.600925 1.609051 1.095530 0.709253 0.066051 1.122549 0.360681 0.504521 1.391375 1.336403 0.056554 0.787635 0.366142 1.100069 -0.145467 0.490070 0.750042 0.057074 0.500767 1.115333 1.323101 1.500424 1.652321 1.578052 1.424819 1.991538 1.503509 1.341974 0.124773 0.286553 1.512043 1.195123 0.116467 1.495999 0.150475 0.027458 1.256602 1.914178 1.348946 0.392902 1.287852 0.230423 0.958003 0.103199 0.114147 1.300265 1.337726 1.960234 0.875466 1.375678 0.887083 1.091556 1.629083 0.517975 0.251541 0.586015 0.521301 0.456918 1.797111 0.628470 0.222309 1.874302 0.151586 1.270942 0.496347 1.704067 1.347411 0.882141 1.354015 0.482906 0.856096 1.842757 1.198720 0.849675 1.254644 0.826368 1.421665 1.565656 1.849673 0.296163 1.321414 1.594984 0.087468 1.904057 1.770304 0.793373 1.811382 1.738248 0.462200 0.809299 0.173428 1.173632 0.144430 0.424475 1.053220 0.438286 1.053618 1.341106 0.601239 0.987605 0.470342 -0.084584 1.657004 0.844639 0.225215 0.485905 0.210184 0.877181 0.051768 0.365625 0.433545 0.746015 1.265726 1.261056 0.846870 0.380347 1.777246 0.734969 1.263058 1.188062 1.231298 0.176469 0.633541 0.141868 0.355117 1.292107 0.788635 0.283102 1.491545 0.163836 1.840225 0.320653 0.924229 1.684915 0.457135 0.366316 0.874699 0.332267 0.811181 0.009053 1.707102 1.224700 0.647231 0.470735 0.285938 1.249680 0.848736 0.154419 1.302189 0.895984 0.384598 1.149654 1.339615 0.657930 0.197967 1.099859 0.240221 -0.153442 0.545081 0.929453 1.706713 1.972300 1.409127 1.618121 0.006566 0.576765 0.166203 0.440455 0.587109 0.296341 1.125394 1.573122 0.397018 0.779058 0.971743 0.402398 1.799594 0.038208 1.672239 0.269341 0.945851 0.650314 1.220807 0.761092 1.240143 1.289371 1.635050 1.213648 1.046902 1.318709 1.036745 0.879976 -0.197862 1.091013 0.799716 0.415004 0.529374 0.637845 0.383399 0.463124 1.542566 0.699920 1.623643 1.293281 1.800152 -0.015788 0.322487 1.117097 0.956307 0.996452 1.172323 1.326188 1.147377 1.113843 0.785183 1.575362 0.649795 0.523062 1.860141 0.223472 -0.063293 1.909246 1.736574 0.279197 1.477865 0.554212 1.260388 0.277292 1.918266 0.649419 1.792368 0.946606 1.286217 1.246372 1.179007 1.168477 1.733196 0.040035 1.869694 0.417707 -0.156793 -0.001456 0.649687 1.705122 1.327413 -0.139936 1.559127 -0.059925 0.722765 0.854277 -0.012595 0.185935 0.880412 0.884245 1.159530 1.868145 1.721058 1.444300 1.726310 1.551803 1.792034 1.663910 1.037587 0.549667 0.246300 1.919241 0.898305 0.864542 0.391918 1.169414 1.044794 0.943499 -0.018653 0.086991 1.211404 -0.409634 1.709608 1.558102 1.500905 0.023446 0.566640 1.586175 -0.075684 0.457930 0.590761 1.012075 0.155814 1.237055 1.774284 1.163196 1.795167 1.756188 0.853326 0.344718 1.331156 1.207746 1.380685 0.825802 -0.204853 0.528726 1.294224 0.820804 1.714428 1.655171 0.596704 0.807545 0.528328 0.170826 1.360744 1.164118 1.534691 1.959252 0.988720 1.825915 0.954587 1.225160 1.067375 0.648538 0.689203 0.574944 0.228763 0.739069 1.338497 1.522466 1.148973 0.666870 0.301196 1.345073 0.515258 0.304323 1.626868 0.573854 0.770224 0.922824 0.986235 0.208474 0.534145 1.448620 0.464703 0.329886 0.435022 1.080056 1.761027 1.393992 0.840270 0.262735 0.545578 0.566577 1.039111 1.013874 0.439128 1.378553 1.474475 0.078150 0.097586 0.430367 1.040096 0.267498 1.407214 0.720580 1.398352 1.906690 1.573703 0.691050 -0.001253 1.087465 0.916375 1.561718 1.104275 -0.024568 1.743167 0.657410 0.043592 -0.071737 1.277783 1.669473 1.445207 1.805207 1.084871 0.357552 0.482975 -0.129299 0.222610 0.964868 1.674946 1.111144 0.811232 1.444958 0.936872 0.630285 0.291784 0.547889 1.274707 0.491720 1.178913 1.597362 1.417560 0.905568 0.064594 -0.006279 0.681924 0.572009 0.510396 0.882066 1.337806 0.824705 0.900296 0.161452 1.480708 0.429205 0.998680 0.862028 0.872584 1.079492 0.049996 -0.061398 0.641068 1.223042 0.895426 0.016166 1.705578 0.370580 1.235064 -0.076644 0.016159 1.553502 0.272781 1.680527 1.735360 1.216306 0.022477 1.458031 0.335270 1.029615 1.390275 -0.072170 0.673519 0.918164 0.172376 1.873272 0.143937 0.143151 1.946490 1.050878 1.389078 1.718545 0.761876 1.584491 0.076813 0.426127 1.157282 1.665873 1.282022 0.297428 1.612887 1.525788 0.109507 0.850433 1.541619 1.906604 1.351349 0.712067 0.032909 1.741764 1.603154 0.331176 1.967791 -0.047457 0.458334 0.650869 1.822431 1.699982 0.392443 0.889921 0.738170 1.855018 1.469024 1.304174 0.145973 0.241900 0.483690 0.610548 0.244614 0.690385 0.625302 1.254416 1.724031 1.813264 0.692617 0.895372 1.588647 1.665977 1.093177 1.780833 0.040080 0.147953 0.452095 1.815039 0.610101 1.499230 0.418529 1.527535 1.809753 1.780717 1.208619 1.087756 0.044489 1.396951 1.008861 1.166751 -0.015608 1.040863 1.011715 -0.389544 1.669576 1.727841 0.409541 1.391926 1.267091 1.816381 1.266583 1.292674 1.538488 0.792896 1.144202 0.190028 1.168753 0.058544 1.008912 -0.033880 0.982838 1.145292 1.408490 1.218427 1.723407 1.907386 0.024240 0.720236 0.415344 1.872643 1.418392 0.399808 1.547256 0.227670 0.450452 1.674352 0.768133 1.757588 0.207193 1.366841 0.954998 0.102805 1.840467 1.672033 0.946903 0.828078 1.755832 0.884133 0.608293 1.688522 1.454057 -0.091730 -0.218085 1.430139 1.876307 1.361689 0.162513 0.428011 0.099895 1.496198 0.017040 1.527240 1.600076 0.702599 1.227307 0.445765 0.991653 0.193662 0.653609 0.032302 -0.082556 -0.076239 1.247906 1.725657 0.098284 0.458830 0.585844 0.788715 0.476530 1.571552 0.062623 1.411266 1.153636 1.113152 0.388102 1.666505 -0.010299 0.608357 0.002597 0.400810 0.236498 1.574672 1.024283 1.142883 0.739700 1.197592 1.569635 1.120229 0.086709 0.760356 1.446372 0.526550 0.983182 0.898425 1.210298 0.777244 1.126512 0.150391 1.780786 0.777891 1.141635 0.546798 1.666439 1.352269 0.900695 1.494562 0.579397 0.725360 0.320734 0.768538 -0.104320 1.309681 1.358290 0.178735 1.223322 0.916266 0.737696 0.608325 -0.024323 0.252577 0.022089 0.625930 1.055275 1.732884 0.450856 1.338871 0.564340 0.408611 1.468491 1.325711 0.758030 0.859666 0.600947 1.793976 0.169648 1.263140 0.822255 0.174901 0.291032 1.213018 1.398540 1.120993 1.022251 -0.023604 1.740733 1.244085 0.970147 0.777177 1.692535 0.188452 1.351635 1.161318 1.256602 1.751087 0.013196 -0.020020 1.265055 1.092603 1.917020 0.602027 0.227003 1.388828 1.812699 0.448303 0.993327 1.552104 0.642990 0.227204 0.536533 -0.171320 -0.037833 0.286305 1.107339 1.082198 1.823262 -0.118176 1.508469 0.574280 0.745998 0.151052 0.343717 0.754622 0.850362 0.188574 1.308237 0.557021 1.622333 0.740050 -0.106173 -0.036187 0.929924 1.028599 0.128394 0.655953 0.554832 0.478155 1.700954 1.480740 0.692557 0.784791 0.538025 1.181506 1.027617 1.061888 0.554753 1.885562 0.427859 0.878171 1.705383 1.731963 1.584336 0.604257 1.269572 1.224752 0.395571 1.377190 0.473402 1.037091 1.321103 0.241379 0.536589 1.212185 0.436461 1.328625 1.400157 1.301094 0.177789 0.219838 -0.214149 1.529232 0.144458 1.192349 1.282177 1.056078 1.550038 -0.173016 0.100030 0.265853 0.645390 0.923329 0.085731 1.043286 1.818031 1.237997 1.530902 0.423281 0.255900 0.058007 1.501958 0.593022 0.868580 1.054524 0.798523 1.892550 1.536475 1.470470 1.466108 0.333749 0.753592 0.381069 0.805574 -0.083849 0.230417 0.524273 1.576543 0.796882 1.326149 1.468547 0.883022 1.145331 1.129588 0.767485 0.714530 -0.051568 0.381323 0.900830 0.938250 1.115005 0.803678 0.478197 0.102689 1.790473 0.186175 1.138002 0.407343 0.081624 -0.078497 1.907566 0.568199 0.206528 0.698892 1.618703 1.116152 1.630912 0.735694 1.657675 -0.029995 0.597313 -0.074403 1.651119 0.671345 0.428239 0.340794 0.303227 1.221853 0.149125 1.845223 0.690593 1.519544 0.570921 0.378247 1.959188 -0.007756 0.533438 1.355284 0.385166 0.748448 0.519275 0.121959 0.127587 1.048075 1.696453 0.957310 1.509362 1.558839 0.717115 0.377524 0.867385 0.483117 1.383031 -0.097048 1.840125 1.664936 1.781564 0.631422 -0.103132 0.403964 1.771127 0.746246 0.918520 1.169435 0.737263 1.212805 1.178431 0.492576 0.605805 0.341944 1.377818 0.931836 0.529464 1.388507 1.052530 0.254824 -0.081377 0.937911 1.308701 1.681287 1.041637 0.101439 0.808291 0.144335 0.199211 0.907294 1.556385 1.606147 0.993618 0.565487 1.805140 0.626057 0.297878 0.108579 0.333362 0.383693 0.664077 0.780133 1.818635 1.485239 1.804957 1.845173 0.759440 0.296443 1.827938 0.708014 1.691701 0.097561 1.790460 0.002644 1.363152 1.554413 0.128835 0.088458 1.075820 1.662939 0.305822 0.097597 0.951771 0.612277 0.927043 1.564098 1.633525 1.149458 0.821430 0.621419 0.295695 -0.035046 0.526376 1.760242 0.054878 0.643260 1.248458 0.803343 1.623275 0.668091 0.657572 1.121589 1.524828 1.183610 1.417931 1.405314 0.536478 0.777992 1.514447 1.406728 1.296213 0.977414 1.302449 0.188034 0.494615 0.604689 1.593324 0.321907 1.433822 0.820379 0.896724 1.841162 0.648542 0.849222 1.488341 1.646264 0.422691 1.202526 1.552600 1.286227 0.205148 0.977204 0.071457 0.072226 0.854723 1.474934 0.490317 0.994710 1.695319 0.149264 1.945845 -0.050080 1.100174 1.428384 0.392919 1.388543 1.470599 1.687390 -0.209425 0.981376 1.820625 1.486939 1.163029 0.254903 1.663587 0.173397 1.158270 0.008252 1.527331 0.957022 1.565874 0.399190 1.405211 1.610452 0.517417 0.017736 1.604007 0.441982 -0.117242 1.540578 1.122133 0.783699 1.475956 0.425079 0.061031 1.809454 0.020958 1.791601 0.082641 1.232839 0.787976 0.330191 1.079316 0.726671 1.154152 0.664516 0.651535 0.733283 0.178061 1.170989 1.021345 1.431385 1.099593 1.694602 0.959398 1.896463 1.048918 0.980361 1.074828 1.193343 0.231910 1.142775 1.514885 0.820666 1.664680 1.082302 1.454204 1.588263 1.689028 1.772394 1.918052 0.740639 0.483110 0.712257 0.069489 0.905804 1.535153 0.363147 1.835617 0.006427 0.899992 0.380714 1.396011 0.685106 1.823151 0.493868 1.604512 0.224912 0.847624 1.141404 1.562281 1.012902 0.067857 0.682509 1.253834 1.124161 0.614664 0.283374 1.613595 1.434018 0.305996 1.201243 1.266871 0.838092 0.076908 1.420109 1.146620 0.622686 1.115452 0.924323 0.974351 0.825545 1.439257 1.047256 0.983947 -0.023433 0.739378 0.058896 1.009265 0.099088 0.208031 0.584839 1.555592 0.199829 1.098928 1.389603 0.203500 1.217365 0.487433 0.522761 1.901220 0.024564 0.335503 1.627773 0.511258 0.181775 1.136641 0.858910 1.135934 1.389248 1.254197 1.570636 0.887318 1.421787 1.619915 1.382710 0.324584 1.154740 1.550762 0.651293 0.306905 1.355501 0.026583 1.261312 0.455843 1.440013 1.036724 1.152275 0.920599 0.682892 0.672700 1.070057 1.453899 1.087117 1.098307 1.315810 1.292233 0.819280 0.701348 0.997834 1.209758 1.168699 0.077635 0.868252 1.083290 1.930890 0.353494 1.250223 0.310608 1.253033 1.727092 -1.975097 0.941442 0.539454 1.355973 1.005988 0.701618 1.813894 1.775295 0.242359 1.510528 0.986700 1.547890 -0.012287 1.356305 1.522370 0.878012 1.294380 0.155478 1.042814 0.348062 1.188096 1.135315 1.520515 0.878021 0.622847 1.073612 0.317276 1.370638 0.685988 0.992102 1.497485 1.458836 1.101655 0.035966 1.192860 0.380699 1.178862 0.618449 0.213396 0.559044 1.830349 1.447613 0.780973 0.149827 0.000783 1.578653 0.246629 0.619069 0.870396 1.009880 0.007773 1.529581 1.531002 1.437893 1.160448 0.240842 0.009787 1.814160 1.271699 0.449839 0.395650 -0.113986 -0.067771 0.643784 0.033350 0.664053 1.167828 1.330358 0.974541 1.039259 1.278764 0.649775 1.807600 1.456944 1.297261 1.733868 0.415873 -0.032983 0.865685 0.984468 1.747983 1.754950 1.624645 0.955834 0.669497 0.707638 0.496434 0.214751 0.573953 1.537258 1.920697 1.147869 0.279585 1.887307 1.463413 0.319350 0.444741 1.008618 1.021958 0.435657 0.185043 1.371241 0.855151 0.505792 0.741886 0.871680 0.370576 1.264162 1.034020 1.020442 -0.032455 0.151317 0.930427 1.250914 0.457365 1.711895 1.622588 1.474334 0.727044 0.158372 0.547219 1.964062 0.960274 -0.043104 1.429620 1.502524 1.799005 1.879995 0.965812 1.601466 -0.115173 1.786859 -0.082629 1.571997 0.151759 0.116636 -0.138644 1.220180 1.544541 0.711250 1.337424 1.122127 1.265975 1.641180 0.369341 0.941194 1.756270 1.554377 0.421053 0.367857 1.468897 0.120653 1.868696 1.648081 0.013217 0.546092 1.094144 0.662116 1.286971 1.508045 0.588153 1.236472 0.589536 0.744566 -0.014088 1.541068 1.703645 1.335776 0.751643 1.645108 1.835447 -0.004121 1.225363 0.415798 1.680503 0.651280 0.657478 1.380731 1.366587 0.360555 1.416929 0.218857 1.003629 0.196413 0.458188 0.219018 0.371207 0.792944 0.732561 1.096142 1.517356 0.544260 0.244358 1.027194 0.914613 -0.264228 1.386405 0.399853 0.192045 -0.056645 0.448320 1.168258 0.216500 1.282546 0.378607 0.437151 0.271768 0.227147 0.947933 1.169574 1.692082 0.352268 1.556365 0.430126 1.874195 1.391513 1.410537 0.937927 -0.099725 1.350224 0.198315 0.235114 1.785468 1.268030 1.467114 1.142498 0.972180 1.325000 0.953697 1.637360 1.870641 0.094691 0.308883 0.051680 0.986847 0.571862 0.079983 1.563896 0.588847 0.287709 0.038406 0.213414 0.278655 1.462399 0.910186 0.949603 0.231716 0.110559 0.750252 1.849528 -0.017336 1.351536 1.030800 0.135700 1.350730 1.752152 1.144277 0.825775 0.482093 0.451732 0.553985 0.050941 1.589921 1.226160 0.121789 1.892118 1.514707 1.947830 1.899008 0.106199 0.095068 1.481495 0.637728 0.793037 1.046402 0.656131 0.981478 1.645677 1.692830 1.201035 1.580738 0.862287 1.857116 0.752617 1.140952 0.535734 1.166873 1.813586 1.358043 1.562120 0.887429 0.453656 0.808900 1.329005 1.880473 1.667600 0.168656 0.082993 0.554744 0.113094 0.184322 1.116499 1.257143 1.463536 0.845188 0.753503 0.545217 0.808865 0.734823 0.010412 0.637141 0.721788 1.206453 1.725305 0.835897 0.641933 0.849589 1.122095 1.122129 0.082734 1.852811 0.736282 0.466664 0.727515 1.164618 0.912293 0.714009 1.682613 0.400246 0.931132 1.423104 0.690233 0.402124 0.519093 0.013658 1.495360 0.513651 1.911956 1.531564 0.638779 1.926638 0.085423 1.244383 1.405098 0.240999 1.024934 0.085108 1.136585 1.354954 0.694244 0.147529 1.114749 0.327110 0.099190 0.519456 1.197549 1.441452 0.985099 0.496182 0.344015 0.311060 0.341567 1.223570 0.104840 1.555720 0.310844 1.427243 0.253303 1.861208 0.751524 1.176798 0.011549 1.520196 0.725046 1.248869 1.766864 1.132848 0.788957 0.794897 0.471681 1.719229 1.386139 1.274509 -0.039519 1.527659 0.844650 1.774762 0.707953 1.216432 1.474809 0.078357 0.551012 1.506891 1.599422 0.243091 0.153408 0.457904 0.924834 1.678234 0.096402 0.949920 1.821400 0.824671 1.452500 1.524634 1.003177 1.464511 1.816518 1.713961 0.863097 0.517152 0.758012 0.136979 0.120142 0.690421 0.223639 1.498008 1.562219 1.678837 1.627798 0.839019 1.132131 1.535145 1.518018 0.297419 0.203623 0.546133 1.052566 0.784445 1.055616 0.148830 1.720326 0.140740 0.266692 1.425404 0.783229 0.124041 1.494743 0.644046 1.644611 0.750264 1.828214 1.787737 0.538946 0.550047 1.183492 1.041592 0.959210 0.270846 -0.035403 1.739175 0.534984 1.624026 1.611428 1.579430 1.022286 0.855608 1.828514 0.038338 1.291444 0.134507 1.254891 0.596733 0.399162 -0.114539 -0.055887 1.938324 1.170327 1.087488 1.697423 0.478833 0.757412 0.171117 1.059573 0.635458 -0.161792 1.015750 1.708417 0.270384 0.660484 1.333092 -0.030724 1.713327 0.151431 -0.174953 -0.041691 0.300599 0.725691 1.065660 0.588839 0.723013 1.086514 1.665008 0.904689 0.943094 1.548079 1.780577 1.098286 1.413405 0.080554 0.679165 0.451513 1.625382 0.791710 0.263149 -0.161505 1.192182 0.992099 0.009485 1.008730 1.535096 1.036929 1.297483 1.822460 0.975063 -0.085459 1.420746 0.376603 0.192391 -0.220597 0.389186 1.323278 0.098973 0.116023 0.308756 0.430429 1.250750 1.912196 0.463174 0.133615 1.184156 0.919106 1.188101 0.221491 0.139415 1.695088 1.043669 0.180492 0.167037 0.186236 1.544480 0.189182 1.816467 0.395217 1.129900 0.056081 1.599691 0.956415 1.935582 1.752012 1.235924 0.567385 1.236629 1.378551 -0.032682 0.967778 1.161775 0.439121 0.146630 0.210634 0.838256 0.256489 1.849426 1.034341 0.180033 0.002728 0.460610 -0.059008 1.026499 0.239384 0.014096 0.253629 1.317847 1.430188 0.739864 1.356334 0.501333 1.570755 0.964145 1.279445 0.064247 0.367146 1.924309 0.038641 1.441898 1.500527 0.252632 0.522914 1.127721 0.149886 0.482652 0.742163 0.866292 0.415201 0.038035 0.581754 1.410195 1.305935 1.399564 -0.002591 1.315112 0.506490 0.634606 0.712693 1.491569 0.763732 1.133934 1.646626 1.199255 1.255783 0.793887 0.463719 1.274033 0.646579 1.299227 0.074139 1.517832 0.680066 0.556593 0.198377 0.731884 1.265722 0.273535 0.174173 1.643091 0.233723 0.835886 0.331656 0.841667 1.950204 1.700806 1.493564 1.992014 1.047484 0.056101 0.246552 1.178977 1.446793 0.909130 0.666524 1.743752 -0.065462 0.647845 1.528075 -0.027380 0.892732 1.060713 0.961817 0.819512 0.522143 0.761281 0.549432 0.374579 0.281346 0.405971 1.961061 0.861053 0.951913 0.894288 0.120547 1.199477 1.578494 0.905148 0.153248 0.867220 0.425392 0.982660 0.841154 1.540130 1.454289 1.585546 1.708407 0.786107 0.741469)
)
))
@@ -2765,42 +2715,42 @@
#(40 9.0681540417544 #(0 1 0 0 0 0 1 0 1 1 1 1 1 1 0 0 0 0 1 1 0 0 0 1 1 0 0 1 1 0 0 1 0 1 1 1 1 1 1 1)
8.9134502410889 #(0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0 1 1 0 1 1 0 1)
- 7.827118 #(0.000000 1.613597 1.692548 1.153605 0.055519 0.425807 0.939430 0.635041 0.281870 1.338748 1.583768 0.568361 1.248582 0.267523 0.670413 1.136711 0.644173 0.407618 1.725789 0.448739 1.677878 0.238821 0.461253 1.858577 1.735457 1.244827 0.603740 0.253067 1.402257 0.560955 0.638190 1.563750 0.585078 1.394709 1.778442 0.630168 1.374287 -0.095995 1.431272 1.452433)
+ 7.811677 #(0.000000 1.606372 1.708650 1.164091 0.070664 0.438284 0.925625 0.653761 0.285719 1.310341 1.566530 0.551547 1.266693 0.294219 0.676875 1.139287 0.658980 0.410301 1.703919 0.461543 1.687469 0.224294 0.449290 1.886059 1.752414 1.267174 0.602352 0.275341 1.397959 0.579675 0.636600 1.552175 0.598055 1.436111 1.770487 0.639434 1.383003 -0.039689 1.433201 1.442039)
)
;;; 41 prime --------------------------------------------------------------------------------
#(41 9.295313835144 #(0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 1 1 1 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0)
9.1567583084106 #(0 1 0 0 0 1 0 1 0 0 0 1 1 0 0 1 0 1 1 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0)
- 7.913574 #(0.000000 0.582867 -0.048931 1.188874 0.423051 0.025211 -0.196928 -0.148778 0.134738 -0.027393 1.471110 0.482945 1.546990 1.905498 1.340968 0.767824 -0.014977 1.468562 1.066262 0.395299 0.494851 0.776716 1.316364 0.501087 1.665138 0.701748 0.572084 0.958106 0.930250 0.800682 1.713498 1.286811 0.559667 0.156840 0.644484 1.526097 0.252581 0.749198 0.357104 1.293671 0.651802)
+ 7.896724 #(0.000000 0.611471 -0.038036 1.228898 0.385347 0.040518 -0.205041 -0.141688 0.136159 -0.044044 1.496521 0.492978 1.520705 1.941823 1.343851 0.777914 0.012500 1.486257 1.079901 0.410520 0.519316 0.764307 1.292590 0.530463 1.697495 0.689827 0.613289 0.973484 0.945034 0.811200 1.709230 1.319255 0.589344 0.205769 0.678197 1.574715 0.274661 0.815107 0.362836 1.351584 0.690213)
)
;;; 42 prime --------------------------------------------------------------------------------
#(42 9.3096771240234 #(0 0 1 0 0 0 1 1 1 0 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 0 0 0 1 1 1 1 1 0 1 1 0 0 0)
9.2193641662598 #(0 0 0 1 1 0 1 1 0 0 1 0 0 0 0 1 1 1 0 1 0 1 1 1 1 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0)
- 8.074306 #(0.000000 -0.274721 -0.024304 1.591206 0.944977 1.220291 1.339865 1.779976 0.337342 1.454159 1.133377 1.203882 0.301937 0.076707 0.784081 0.407246 1.554170 0.476932 1.245772 0.882596 1.908496 1.501848 0.723732 0.252246 0.183722 1.718321 0.476346 1.084051 1.094255 0.770190 1.116986 0.325245 0.153411 0.470882 1.076611 1.256930 0.319624 0.230752 1.328523 0.851696 0.921915 0.714549)
+ 8.016184 #(0.000000 -0.291512 -0.100016 1.534256 0.920647 1.277050 1.312375 1.720782 0.392198 1.456934 1.082943 1.212166 0.294325 0.004793 0.762919 0.516225 1.618765 0.489047 1.228725 0.837576 1.953801 1.540962 0.776034 0.326776 0.251790 1.766810 0.533914 1.043314 1.124539 0.745273 1.176358 0.321088 0.153090 0.527726 1.123364 1.312058 0.328806 0.204066 1.404972 0.911502 0.894116 0.772235)
)
;;; 43 prime --------------------------------------------------------------------------------
#(43 9.4925568571597 #(0 1 1 0 1 0 0 0 0 1 0 1 0 1 0 0 1 1 1 1 0 0 0 1 1 1 0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 1 1)
9.4329051971436 #(0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 0 0 0 1 1)
- 8.214944 #(0.000000 1.902034 0.328291 0.022777 1.244224 0.145196 0.050699 1.753826 0.804359 0.851519 0.959692 1.740267 0.469291 0.387939 1.022726 1.525833 0.057208 1.865484 0.153867 1.558545 1.502682 1.297108 0.106939 1.106431 1.783753 0.092646 1.248071 0.145801 0.121838 0.169589 -0.051906 0.591139 0.912992 1.571375 1.414928 0.300727 1.690564 1.278625 0.908701 -0.009503 1.751728 0.237464 1.413819)
+ 8.117380 #(0.000000 1.842087 0.240000 0.005942 1.205212 0.146893 0.110616 1.679117 0.700643 0.796349 0.948554 1.740978 0.483293 0.385560 1.153672 1.554812 0.060414 1.933818 0.200326 1.493279 1.446128 1.411565 0.092756 1.174802 1.892478 0.087790 1.133558 0.218843 0.029965 0.134713 -0.134121 0.719584 0.768232 1.613737 1.410761 0.297493 1.702758 1.215832 0.830435 0.020807 1.765772 0.226708 1.490764)
)
;;; 44 prime --------------------------------------------------------------------------------
#(44 9.6622378996026 #(0 1 0 1 0 0 1 1 0 1 0 0 1 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0 0 1 1 1 0 1 0 1 1 1 1 1 0 0 0 0)
9.6263332366943 #(0 0 1 0 0 1 1 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 1)
- 8.246146 #(0.000000 1.241343 0.285755 0.804665 0.964949 0.899595 0.521452 0.793533 0.338080 0.771831 0.111857 0.859045 1.816440 0.012885 0.236849 1.862069 1.854708 0.979638 1.389219 0.274729 0.538342 0.164046 1.300032 1.353447 0.662420 0.263826 1.102010 1.277389 0.564970 -0.046589 0.366188 0.002321 0.538546 0.993324 1.305992 1.571470 1.081669 -0.259452 0.270998 1.099478 0.854227 1.551230 0.894965 1.859572)
+ 8.215317 #(0.000000 1.318160 0.197729 0.803473 1.004322 0.886728 0.515874 0.795863 0.293865 0.795663 0.112448 0.806048 1.766879 0.052205 0.210621 1.814594 1.845717 0.972716 1.444914 0.287591 0.558596 0.184601 1.290546 1.309210 0.651282 0.234753 1.110353 1.301404 0.549284 -0.043084 0.372597 -0.011711 0.585949 0.978766 1.300105 1.502709 1.058925 -0.263301 0.235962 1.064019 0.870735 1.508524 0.916606 1.878285)
)
;;; 45 prime --------------------------------------------------------------------------------
#(45 9.8476276594031 #(0 0 1 1 0 0 1 1 1 0 0 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 0 0 1 1 1 1 0 0 1 0 0 0 0 0 1 1)
9.7923860549927 #(0 1 1 0 1 0 1 0 0 1 0 0 0 0 1 0 1 1 1 1 0 1 1 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1)
- 8.438472 #(0.000000 0.623361 0.808816 1.423419 0.330740 0.652581 0.210021 1.578792 1.208531 0.213160 1.387532 1.344099 0.994301 0.808255 0.232064 0.916908 1.329582 1.509035 1.173090 0.166078 1.583605 1.378467 0.490010 1.001894 1.531340 1.783980 0.992825 1.762583 0.700117 1.678357 0.382368 -0.058476 1.211115 1.288355 1.322801 1.534375 -0.017721 1.185537 0.742266 1.411580 0.338746 0.556151 0.738148 -0.086486 0.704072)
+ 8.326119 #(0.000000 0.615534 0.786808 1.463577 0.302019 0.572091 0.243502 1.524952 1.154508 0.327857 1.312145 1.313026 0.949294 0.781999 0.312781 0.886116 1.325416 1.542244 1.265398 0.192906 1.601553 1.432439 0.524971 0.978226 1.459196 1.894745 0.965588 1.805077 0.714599 1.729128 0.478069 0.037499 1.222079 1.346949 1.229158 1.575769 -0.047226 1.222618 0.785747 1.328347 0.458307 0.555124 0.709305 -0.098620 0.742388)
)
;;; 46 prime --------------------------------------------------------------------------------
@@ -2808,14 +2758,14 @@
9.8914480209351 #(0 0 1 0 0 0 0 1 1 0 1 1 0 0 1 0 0 1 1 1 0 0 1 1 1 0 0 0 1 0 1 1 1 1 1 1 0 0 0 1 1 0 1 1 1 0)
9.7220277786255 #(0 0 1 0 0 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 0 0 1 1 1 0 0 1 1 0 1 1 1 1 1 1 0 0 0 1 1 0 1 0 1 0)
- 8.505233 #(0.000000 0.213078 0.079565 1.418347 0.925296 0.699347 0.766329 0.488366 0.047510 1.647406 0.100984 1.416779 1.116936 -0.196828 1.191140 0.666026 0.379635 1.005811 1.670945 0.675411 1.138957 0.255834 0.669541 1.225159 0.956238 0.170123 0.980680 1.517713 1.837101 0.052069 -0.228580 0.525907 1.455303 0.980101 1.052062 0.842513 0.031017 1.562189 0.709410 1.022890 1.179372 1.192821 1.278463 0.571060 0.637482 0.998977)
+ 8.388195 #(0.000000 0.341399 0.073766 1.441221 0.964981 0.723168 0.793927 0.409368 -0.012034 1.722063 0.073566 1.384487 1.221381 -0.209197 1.242466 0.619383 0.404177 1.051852 1.658824 0.621661 1.026108 0.237692 0.647377 1.189008 0.930807 0.163838 0.991847 1.522371 1.886735 0.052868 -0.337804 0.524642 1.369977 0.937413 1.089298 0.852838 0.013817 1.606451 0.689174 1.067406 1.206902 1.163092 1.326614 0.660474 0.602437 1.119066)
)
;;; 47 prime --------------------------------------------------------------------------------
#(47 10.097447395325 #(0 1 0 0 1 1 0 1 1 0 0 0 0 0 1 0 1 1 0 0 1 0 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0)
10.0 #(0 0 1 1 0 0 1 0 1 0 1 1 1 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 0 0 0 0 1 0 0 1 1 0 0)
- 8.553474 #(0.000000 1.166716 0.195470 -0.023789 0.907194 0.104459 1.202854 1.495030 1.110709 1.031198 1.238940 0.649462 -0.328588 0.946604 0.451830 1.834515 1.796150 0.152694 0.968997 0.337170 0.350900 1.664286 1.062074 1.767331 1.529454 1.844969 0.718823 1.367440 0.950699 1.227549 1.388074 1.074988 1.235946 1.290836 1.878394 1.248530 0.042152 1.261004 1.190339 1.220751 -0.115714 1.109205 1.537394 0.262623 0.049032 0.588246 0.217068)
+ 8.496667 #(0.000000 1.151517 0.189498 0.013781 0.945422 0.165356 1.213007 1.579839 1.070307 1.030655 1.286981 0.618317 -0.305344 0.920514 0.375348 1.737515 1.808712 0.165928 1.021635 0.358213 0.410242 1.648572 1.036397 1.774765 1.549977 1.826003 0.623620 1.348277 1.019149 1.205025 1.343082 1.000649 1.208319 1.279188 1.894045 1.245705 0.007883 1.289943 1.181721 1.205084 -0.184564 1.113608 1.470585 0.241726 0.036454 0.580900 0.228296)
)
;;; 48 prime --------------------------------------------------------------------------------
@@ -2823,7 +2773,7 @@
10.248653411865 #(0 1 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 1 0 1 1 1 0 1 0 0 1 1 0 0 1 1 0 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0)
10.073040962219 #(0 0 0 1 1 1 1 1 0 1 0 0 1 1 1 1 1 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 1 0 0 0 1 1 0 1)
- 8.644500 #(0.000000 0.259336 1.704038 1.719647 0.447415 0.533373 0.792414 1.841724 0.036375 0.164310 1.018330 1.020788 0.567292 1.116478 0.768781 0.452529 1.102318 0.523507 1.740204 0.603504 0.030069 0.580523 1.564901 1.210959 1.595662 -0.069217 1.069267 1.345138 1.371639 0.719967 1.662454 1.349785 -0.000973 0.628082 1.797408 0.876519 1.282550 0.783398 0.623057 1.021122 1.461671 1.067936 1.954540 1.150399 0.725245 1.042941 0.376977 -0.168257)
+ 8.604461 #(0.000000 0.306203 1.667769 1.680415 0.428100 0.559237 0.820987 1.781776 -0.001529 0.107037 1.002614 0.977037 0.536281 1.124314 0.776388 0.403581 1.067061 0.469432 1.806294 0.567358 0.004000 0.612561 1.600977 1.219969 1.664782 -0.100684 0.985158 1.276297 1.305389 0.716428 1.608092 1.275434 -0.028608 0.642270 1.748536 0.849084 1.287227 0.773784 0.595312 1.018597 1.388126 1.074577 1.874473 1.172345 0.675567 0.990745 0.329066 -0.172689)
)
;;; 49 prime --------------------------------------------------------------------------------
@@ -2831,20 +2781,20 @@
10.207101821899 #(0 1 1 1 1 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 1 0 0 0 1 0 1 0 1 1 1 0 1 0 0 1 1 0 1 0 0 1 0 0 1 0 0 0 0)
10.209 #(0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 1 1 1 1 0 1 1 1 0 1 0 1 1 0 1 0 1 1 0 0 1 0 1 1 1 0 0 0 0)
- 8.748933 #(0.000000 1.480359 0.303374 0.972640 1.009965 0.270684 0.024712 0.786913 0.822708 1.566403 1.161412 1.619102 1.228231 1.769658 0.342103 1.469617 0.131093 1.749093 0.391944 0.074633 1.113754 1.010129 0.597722 1.768526 1.916882 0.071941 -0.000049 0.458172 1.234815 1.104534 1.595228 1.857716 1.770640 0.028215 1.195856 0.633963 -0.091392 1.762527 1.664053 1.552843 0.750707 1.558412 0.936935 -0.096617 0.245194 0.858616 0.569626 1.744097 1.245960)
+ 8.721727 #(0.000000 1.499026 0.320811 1.012405 0.965354 0.238586 -0.062636 0.816989 0.799934 1.565103 1.180433 1.616783 1.191686 1.753034 0.326889 1.457085 0.129444 1.740509 0.413310 0.047595 1.160271 1.020068 0.609400 1.770818 0.009382 0.128358 -0.009560 0.510302 1.223153 1.135703 1.635406 1.940126 1.813497 0.002140 1.210441 0.688281 -0.121560 1.807460 1.698233 1.538374 0.855067 1.667660 0.945316 -0.069390 0.328337 0.889780 0.563232 1.817766 1.256732)
)
;;; 50 prime --------------------------------------------------------------------------------
#(50 10.669495582581 #(0 0 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 0 1 0 0 1 1 1 1 1 0 1 1 0 1 1 1 0 0 0 1 0 0 1 1 1 0 1 0 0 0 0 1)
10.402973175049 #(0 0 1 0 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 0 0 1 0 0 0 1 1 0 1 0 1 0 0 0 0 1 0 1 1 0 0 0 1 1 1 0 0 1 1 1)
- 8.784894 #(0.000000 1.508392 1.104644 1.035941 1.330974 1.042347 0.545943 1.704089 1.230208 1.204054 1.276020 1.431399 0.792187 1.783226 0.135472 0.786640 -0.174984 0.016427 1.102682 1.891915 1.264346 0.969302 0.933913 0.117349 0.760064 0.449228 0.880649 0.103060 0.832575 0.108355 1.315220 1.198341 1.905520 0.794525 0.423405 -0.123498 0.799097 0.987200 0.115474 1.507626 0.805068 1.277752 0.882245 1.414976 -0.010675 1.565582 0.595322 1.302029 0.006502 1.223203)
+ 8.698816 #(0.000000 1.484777 1.088926 1.020064 1.347675 1.055405 0.560314 1.688912 1.249576 1.209396 1.226523 1.429666 0.837134 1.808991 0.071307 0.700038 -0.100589 0.062265 1.078496 1.917410 1.162420 0.994992 0.947585 0.198830 0.740457 0.446782 0.918367 0.122761 0.837213 0.056895 1.295449 1.238670 1.926003 0.868891 0.442390 -0.213250 0.810476 1.014028 0.114921 1.518697 0.818511 1.330636 0.888278 1.413279 -0.001982 1.586011 0.586157 1.277906 0.034523 1.187727)
)
;;; 51 prime --------------------------------------------------------------------------------
#(51 10.5841327092253 #(0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 1 1 1 1 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1)
- 8.889716 #(0.000000 0.603465 1.523195 0.762413 0.374649 0.027403 1.142512 1.356285 0.861877 0.177353 -0.192160 1.540931 0.703035 -0.153842 1.772451 0.505663 1.202839 0.813160 1.047262 1.068791 -0.024490 1.969392 0.305679 0.855854 0.611571 0.827054 0.345328 1.355829 0.557879 0.442778 0.499423 1.704467 0.476050 0.280428 0.986694 0.428821 0.275430 0.548299 0.829693 0.369373 1.286242 1.169158 1.815713 1.733914 1.779967 1.197367 1.122493 0.664376 0.266322 -0.087900 0.510597)
+ 8.805015 #(0.000000 0.539973 1.555252 0.814573 0.453988 -0.004906 1.087602 1.343043 0.843771 0.098192 -0.265161 1.563033 0.801463 -0.168911 1.833601 0.442514 1.200853 0.877153 0.989126 1.024179 -0.061071 0.011869 0.286293 0.879863 0.602071 0.797164 0.295490 1.396754 0.507117 0.424387 0.410578 1.735741 0.436422 0.246191 1.055064 0.393157 0.246676 0.479976 0.834408 0.328859 1.197324 1.185085 1.910551 1.626711 1.757691 1.204866 1.035406 0.687687 0.204443 -0.083877 0.599236)
)
;;; 52 prime --------------------------------------------------------------------------------
@@ -2852,7 +2802,7 @@
10.737469673157 #(0 0 0 1 0 0 1 0 1 0 0 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 1 1 0 0 1 1 0 0 0 0 1 1 0 1 1 1 1 1 1 0 1)
10.64324760437 #(0 0 0 1 0 0 1 0 1 0 0 1 1 1 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0)
- 9.218913 #(0.000000 0.296394 0.069002 0.354416 1.763827 1.747557 1.798392 0.681705 1.384125 0.750444 0.357827 -0.061580 1.105698 1.622253 -0.027420 0.279372 1.431960 0.401191 1.329870 -0.007401 1.182037 0.474059 -0.122410 1.440707 0.213124 1.322668 0.050234 0.407763 0.818293 0.107439 0.624110 0.709182 1.023238 1.439647 0.685663 1.761672 -0.003967 1.741590 0.992576 1.616230 1.654640 0.834165 0.739185 1.047477 0.294008 1.238321 0.449204 1.443959 0.755605 0.745514 1.122580 1.056116)
+ 9.037908 #(0.000000 0.258676 0.085364 0.269316 1.792440 1.695660 1.754235 0.570365 1.345382 0.685811 0.376499 -0.068359 1.102238 1.628337 0.018979 0.256896 1.399966 0.450366 1.380123 0.058452 1.303262 0.491376 -0.060279 1.471446 0.121811 1.381052 0.065406 0.529831 0.765545 0.256384 0.709690 0.778739 0.998882 1.449813 0.684843 1.760110 0.027686 1.838691 1.056877 1.660123 1.622804 0.865755 0.860272 1.110810 0.290132 1.262879 0.496774 1.492458 0.676634 0.836150 1.137608 1.015006)
)
;;; 53 prime --------------------------------------------------------------------------------
@@ -2863,7 +2813,7 @@
10.848851203918 #(0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 1 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 1 1 1 1 1 0)
10.678050692694 #(0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 1 1 1 1 1 0)
- 9.367379 #(0.000000 0.771277 1.262334 0.344152 0.218872 0.001801 0.875298 1.768170 1.334329 1.686992 1.823372 0.384538 1.491628 -0.135543 0.439125 1.790846 0.654831 0.506608 0.782392 1.776271 0.889760 0.153743 0.592424 -0.225307 1.544840 0.597611 1.254024 1.587492 1.336640 1.083702 0.897955 0.735067 1.534079 0.517776 0.443271 0.844788 0.841050 0.804194 1.682833 1.827937 0.743136 1.505031 0.847911 1.844214 0.056578 1.204133 1.146769 1.047214 1.261437 0.641534 1.298730 0.956259 1.587021)
+ 9.292846 #(0.000000 0.738700 1.231731 0.377708 0.241486 0.025287 0.876478 1.775113 1.305052 1.734757 1.826661 0.399139 1.524510 -0.177252 0.453777 1.760097 0.629257 0.509507 0.770489 1.803168 0.903666 0.187474 0.536689 -0.207488 1.569643 0.541952 1.283905 1.548022 1.328222 1.043297 0.849999 0.700842 1.602833 0.481557 0.384933 0.811873 0.807981 0.731086 1.732606 1.872106 0.794196 1.468475 0.803742 1.862857 0.112874 1.215686 1.111758 1.024789 1.237618 0.613044 1.240303 0.932407 1.617040)
)
;;; 54 prime --------------------------------------------------------------------------------
@@ -2872,14 +2822,14 @@
10.781757504258 #(0 0 1 0 1 0 1 0 0 0 1 1 1 0 1 1 0 0 0 1 1 1 1 1 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 1 1 1 1 1)
10.582709312439 #(0 0 1 1 1 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 1 1 1 1 1 0 0 1 0 0 0 0 1 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 0 1 0 1 1)
- 9.329858 #(0.000000 1.291346 1.653844 1.773765 1.114657 1.093947 0.441640 1.318072 1.104896 1.561661 1.682059 0.299533 1.334738 0.545686 0.672639 1.733683 1.266040 0.658393 0.197445 0.238894 -0.082321 -0.025837 1.460880 0.787243 0.837046 1.618131 0.267023 0.339904 1.126697 0.029268 -0.080749 1.404691 1.442232 1.430650 0.092223 0.925511 1.616718 0.125007 0.547751 1.627194 1.907136 0.372774 1.175195 1.779365 0.935621 1.305067 0.914338 1.561281 1.832107 0.177373 1.051591 1.642273 0.095517 0.351810)
+ 9.215414 #(0.000000 1.358117 1.640818 1.724813 1.142410 1.097880 0.419190 1.313319 1.127393 1.569103 1.715267 0.231328 1.332343 0.564847 0.652586 1.735011 1.266139 0.673952 0.187090 0.230731 -0.038445 -0.015014 1.486649 0.782149 0.819414 1.613686 0.229438 0.327177 1.119806 -0.033707 -0.103160 1.309205 1.367680 1.395692 0.075574 0.854077 1.595090 0.108962 0.599577 1.715162 1.871743 0.361101 1.100268 1.772462 0.928532 1.327810 0.949600 1.487634 1.828513 0.155421 0.989476 1.636329 0.174122 0.301666)
)
;;; 55 prime --------------------------------------------------------------------------------
#(55 11.142364777492 #(0 0 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 1 0 1 0 0 1 0 1 0 1 1 1 0 0 1 0 1 1 1 0 1 0 0 1 0 0 0 0 0 1 0 0 1)
10.806410031758 #(0 0 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 1 0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0)
- 9.511147 #(0.000000 0.961277 1.055957 0.043513 0.720220 0.689426 1.044541 1.376454 0.528653 0.669457 1.420699 0.041837 0.758490 1.683635 1.625089 1.299185 1.369938 0.044028 1.306810 1.065195 0.647654 0.880264 0.411650 -0.063806 1.394736 1.341032 -1.862159 0.390844 0.150030 1.455355 -0.340652 1.207416 1.296774 1.369927 1.219499 0.629774 0.086757 0.645798 1.271836 0.385873 1.395502 0.711143 0.243374 0.132021 1.676175 0.209198 1.222466 1.760384 0.304415 1.652650 1.718666 1.934606 1.847522 0.163032 -0.149140)
+ 9.425589 #(0.000000 0.972564 1.116398 0.006411 0.683938 0.749216 1.010097 1.439661 0.555665 0.636990 1.364710 0.087873 0.741599 1.680054 1.628158 1.265659 1.436288 0.078667 1.303928 1.069673 0.628631 0.846875 0.400093 -0.091694 1.443599 1.268576 -1.761194 0.384707 0.174074 1.415190 -0.378182 1.204791 1.260365 1.326258 1.221515 0.670135 0.102841 0.701767 1.227454 0.438261 1.356978 0.649857 0.236124 0.128726 1.592504 0.125229 1.173637 1.721251 0.263454 1.678769 1.635922 0.014282 1.894135 0.220747 -0.147730)
)
;;; 56 prime --------------------------------------------------------------------------------
@@ -2887,7 +2837,7 @@
11.143131256104 #(0 1 0 1 0 0 1 0 0 1 1 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 0 0 1 1 0 1 1 1 1 1 1 0 1 1 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1)
10.976176261902 #(0 0 1 0 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 1 1 0 1 1 0 1 1 0 1 1 1 0 0 1 1 0 1 0 0 0 1 1 1 0 0 0 0 1 1 1 1 1 1 1)
- 9.573750 #(0.000000 0.098558 0.736721 1.721768 1.181019 0.330902 1.710720 0.390956 1.583200 -0.080852 0.482613 1.244976 1.486966 1.384951 1.666492 1.110798 -0.055329 1.387743 0.059312 1.972375 1.909625 0.332039 0.182078 0.435720 0.562434 1.600241 -0.129350 0.242210 0.527880 0.677708 1.522630 1.614704 -0.000876 1.603964 0.278365 0.627579 1.078596 0.698541 -0.170274 -0.248698 1.433115 0.753936 0.077467 0.272785 1.461531 1.759076 1.080745 0.304385 0.816566 -0.127804 0.024288 0.580228 1.549503 1.348248 1.637863 1.305721)
+ 9.563502 #(0.000000 0.104270 0.700593 1.696738 1.150445 0.306132 1.669051 0.422620 1.598566 -0.108372 0.454200 1.252955 1.507430 1.406894 1.644301 1.113576 -0.045121 1.371545 0.008749 1.947034 1.874701 0.354846 0.187576 0.344692 0.493759 1.624118 -0.099543 0.210134 0.494902 0.682380 1.537911 1.604316 -0.049825 1.593831 0.245257 0.674798 1.063070 0.707970 -0.241590 -0.293127 1.419370 0.750307 0.046415 0.271615 1.476934 1.775006 1.077570 0.279780 0.755331 -0.150835 0.067161 0.525076 1.580263 1.321137 1.580781 1.301531)
)
;;; 57 prime --------------------------------------------------------------------------------
@@ -2895,14 +2845,14 @@
11.352762647901 #(0 0 1 1 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 1 1 0 0 0 1 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 0 0 1 1)
11.247724533081 #(0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 1 0 1 1 0 1 1 0 0 0 1 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 0 0 1 1)
- 9.849948 #(0.000000 -0.019615 1.713714 1.502162 0.138863 1.807112 0.408029 0.842334 1.333512 1.721776 1.559662 0.733808 0.288043 0.012388 1.003354 1.569292 1.090374 -0.079066 1.208030 1.789190 1.324810 1.162607 0.753994 0.684589 1.180350 -0.154124 1.610840 0.744877 1.420768 0.815145 0.346548 1.981788 0.130144 0.268267 -0.062968 1.382433 1.836476 1.324686 0.057118 1.584903 0.514615 0.714104 0.939453 0.396709 1.261694 0.727131 1.654087 0.779666 0.898622 1.184636 1.276922 1.056619 0.539411 1.472423 0.261358 1.493332 1.018186)
+ 9.695760 #(0.000000 -0.060645 1.785143 1.531305 0.025068 1.724167 0.374447 0.769733 1.289691 1.752836 1.644119 0.739838 0.318559 -0.043428 1.011534 1.593575 1.163717 -0.074204 1.201326 1.800316 1.335847 1.177295 0.693277 0.705889 1.186352 -0.118458 1.674789 0.775816 1.360858 0.829366 0.314305 0.087484 0.140580 0.205054 -0.063191 1.414703 1.865168 1.336386 0.061942 1.561372 0.512909 0.735564 0.878027 0.445788 1.216211 0.699679 1.738879 0.669774 0.833224 1.191517 1.342387 1.075674 0.615860 1.445789 0.301327 1.576866 0.974657)
)
;;; 58 prime --------------------------------------------------------------------------------
#(58 11.564489172529 #(0 1 1 0 0 1 0 1 0 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 0 0 1 0 0 1 1 1 1 0 0 0 0 1 1 0 1 1 1 1 0 1 1 0 1 1 1)
11.261419321863 #(0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 0 0 1 0 0 1 1 1 1 0 0 1 0 0 1 0 1 1 1 1 0 1 1 1 0 1 1)
- 9.967587 #(0.000000 1.909048 0.283585 0.392782 0.384059 0.743166 0.074847 0.155517 0.501831 1.697069 1.056953 1.582710 0.713491 0.726613 1.255690 1.253930 0.661584 1.405606 0.540569 1.224841 1.257303 0.967441 0.191639 0.028453 -0.029462 0.166525 0.669097 0.763909 1.726041 0.567427 1.136234 1.340034 1.316626 1.572613 0.656696 1.971350 0.250777 1.242742 0.845087 1.225883 1.949518 0.628792 1.135308 1.392279 0.850054 0.999996 1.688234 0.491695 -0.026827 1.055274 0.135394 1.272083 1.200497 0.267275 0.235807 0.176328 0.567587 1.679465)
+ 9.855235 #(0.000000 1.933222 0.325455 0.423608 0.261309 0.866965 0.031165 0.122504 0.581873 1.679026 1.025402 1.513411 0.679112 0.786381 1.204491 1.203420 0.697415 1.340698 0.444405 1.200858 1.208208 1.042978 0.142443 0.110563 -0.117619 0.157484 0.712883 0.842792 1.621427 0.545252 1.081227 1.320820 1.301107 1.537564 0.672035 0.117009 0.244746 1.214942 0.911267 1.187062 1.914937 0.611871 1.154090 1.340449 0.824697 0.992644 1.712023 0.505795 0.038028 1.015521 0.147263 1.212660 1.158566 0.165421 0.273322 0.166763 0.529011 1.641613)
)
;;; 59 prime --------------------------------------------------------------------------------
@@ -2911,7 +2861,7 @@
11.523194313049 #(0 1 1 0 1 1 1 1 0 1 1 1 1 1 0 1 1 0 0 1 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1 1 0 0 1 1 0 0 0 0 1 0 0 1 1 1 0 0 1 1 1 0 0 1)
11.34253692627 #(0 0 0 1 0 1 0 1 1 1 0 0 1 0 1 1 0 0 1 0 0 0 1 0 1 0 0 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 0 0 1 1)
- 9.843179 #(0.000000 1.141242 1.341964 0.413499 0.855567 0.270506 0.238546 1.653054 1.919386 0.042759 1.312999 0.046050 1.331655 1.174632 0.925790 0.779722 1.363221 -0.155217 1.535082 1.665154 -0.133689 1.634093 0.497686 1.778037 0.834542 0.941611 0.247186 1.477681 1.850226 0.789166 0.989261 1.201186 0.567450 1.225340 1.243274 -0.057218 0.289924 0.825632 1.450587 1.567692 0.568374 0.004270 1.027981 1.125783 0.620972 1.131781 1.654157 0.508582 0.412198 1.794230 0.952331 0.031569 0.459902 1.667401 0.053135 -0.120573 0.007234 0.249492 0.948569)
+ 9.588297 #(0.000000 1.036635 1.252797 0.393709 0.941001 0.289643 0.221427 1.653864 1.898801 0.037244 1.391779 0.013128 1.296783 1.180326 0.928061 0.822326 1.343584 -0.120529 1.590336 1.539808 -0.196635 1.589293 0.475360 1.852687 0.794865 0.908591 0.350835 1.546472 1.908488 0.745148 1.102399 1.103840 0.602980 1.170248 1.294223 -0.084880 0.278291 0.821092 1.412892 1.591251 0.626561 -0.009036 1.045060 1.158156 0.638069 1.133336 1.675645 0.547567 0.369815 1.827912 0.972435 0.075210 0.457357 1.695742 0.139805 0.005764 0.028464 0.399412 0.883274)
)
;;; 60 prime --------------------------------------------------------------------------------
@@ -2927,7 +2877,7 @@
11.915099143982 #(0 1 1 0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 1 0 1 1 0 0 1 0 1 1 1 1 1 1 1 1 0 0 1 0 0 0 1 1 1 0 1 0 1 1 1 0 0 1 1 1 0 1 0 0 0 0)
11.850807189941 #(0 0 1 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 1 1 0 0 1 0 1 1 1 1 1 1 1 1 0 0 1 0 0 0 1 1 1 1 1 0 1 1 0 0 0 1 1 1 0 0 0 0 0 1)
- 10.223866 #(0.000000 0.496373 1.531534 1.281867 1.636174 1.258615 0.211434 1.096893 1.105070 1.166355 0.437459 0.818648 -0.056918 0.718919 1.792751 1.077059 0.584096 -0.021291 0.220660 0.769501 1.280210 0.827742 0.044613 0.990203 0.682133 0.311013 0.154488 1.749394 0.542680 1.423418 1.638177 0.669411 0.028911 0.239765 1.362488 1.046960 1.245851 0.259731 1.077406 0.593261 1.747696 0.113544 0.840932 0.494945 1.643918 1.027271 0.853803 1.123990 -0.115055 1.240922 0.598356 1.315786 1.229547 1.680014 1.756628 0.449938 0.520499 -0.046987 0.896097 1.577227 0.526564)
+ 10.093851 #(0.000000 0.439572 1.556340 1.228997 1.657707 1.219943 0.204623 1.113713 0.996377 1.200979 0.478917 0.788803 0.004344 0.671797 1.750051 1.095895 0.530684 -0.042672 0.217918 0.677640 1.205577 0.790224 0.061761 0.991983 0.793815 0.247220 0.201224 1.897933 0.605791 1.398619 1.588963 0.708249 0.043214 0.194824 1.387510 1.039889 1.228907 0.278349 1.091617 0.594822 1.701476 0.120599 0.871850 0.530007 1.692692 0.971859 0.874623 1.094944 -0.152315 1.211545 0.675216 1.297936 1.265448 1.757916 1.822036 0.519508 0.612398 -0.078465 0.933052 1.682153 0.538893)
)
;;; 62 prime --------------------------------------------------------------------------------
@@ -2935,7 +2885,7 @@
11.929849152918 #(0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 1 0 0 1 1 1 0 1 1 0 0 0 1 1 1 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 1 1 0 0 1 0 1 0)
11.709966659546 #(0 0 0 0 0 1 1 1 1 1 1 1 0 1 0 0 0 1 0 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 0 0 1 0 0 1 1 1 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 1 0 1 0)
- 10.317137 #(0.000000 0.269503 0.301057 0.214423 1.750955 0.017375 1.070394 0.449198 1.725711 0.173302 0.057692 0.427670 0.951841 1.230836 1.006457 1.288249 0.553346 0.046689 0.474612 0.806487 0.368758 1.367879 -0.475932 0.332188 1.536332 -0.244076 0.571835 1.735189 0.502323 1.528644 0.883672 0.163956 1.089373 0.123608 0.131827 0.112211 1.606584 0.734386 1.245579 1.200243 0.240651 1.652537 1.094047 0.696213 1.130531 1.692361 0.987688 0.669639 0.050170 0.786605 0.554565 0.293322 1.937029 0.591405 0.442392 0.020090 0.680960 1.321633 0.606144 1.215299 1.775245 0.084508)
+ 10.151157 #(0.000000 0.275433 0.389948 0.221775 1.784730 0.053486 1.042229 0.475188 1.651999 0.192716 0.023687 0.515597 1.042667 1.194969 1.042262 1.256818 0.511148 0.063043 0.422100 0.779265 0.394290 1.334439 -0.514199 0.342323 1.545625 -0.325018 0.555532 1.682117 0.536119 1.631512 0.922219 0.182103 1.085601 0.129234 0.167626 0.215261 1.622656 0.721452 1.261149 1.168998 0.274058 1.702664 1.136935 0.657845 1.030874 1.643228 1.092581 0.735506 0.049024 0.835669 0.567459 0.365711 1.953481 0.562915 0.579137 0.056177 0.668614 1.382740 0.565309 1.195908 1.849961 0.018970)
)
;;; 63 prime --------------------------------------------------------------------------------
@@ -2943,21 +2893,21 @@
12.000000000004 #(0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 1 0 1 0 1 0 0 0 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0)
11.975765228271 #(0 0 0 1 1 0 0 1 0 1 0 1 1 0 1 1 1 0 0 0 0 0 1 1 0 1 1 0 0 0 1 1 1 1 1 0 1 0 0 0 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0)
- 10.197330 #(0.000000 -0.066235 -0.133272 0.177026 1.580139 0.217335 1.157723 0.697813 1.229515 0.451845 0.782710 -0.003375 0.184871 1.978129 -0.056020 1.252975 0.341815 1.298252 0.949891 0.759059 1.717338 1.444167 1.244121 1.433235 1.669702 0.321857 0.536139 0.759748 0.654410 1.704693 -0.136566 1.918300 0.747661 0.692145 1.438676 1.014391 0.448658 1.395774 1.627343 0.772954 0.814389 0.742559 0.345490 1.830822 0.757594 0.537749 1.322268 0.357147 -0.080276 0.299955 0.403826 1.852005 0.506339 1.553325 0.111777 1.522178 0.202262 0.529279 0.688133 0.151607 0.341080 1.005512 0.426083)
+ 9.936658 #(0.000000 -0.172976 0.053117 0.193207 1.582039 0.279041 1.154298 0.645558 1.180892 0.466938 0.752179 -0.091238 0.242467 0.005372 -0.091444 1.301269 0.218170 1.438113 0.989258 0.756959 1.749924 1.438965 1.263101 1.471579 1.677287 0.336900 0.648660 0.846226 0.598351 1.720861 -0.130696 1.894805 0.612663 0.697210 1.483336 0.948180 0.417612 1.420734 1.619973 0.681741 0.843955 0.678963 0.288608 1.963969 0.802151 0.530457 1.429951 0.417925 -0.190943 0.355155 0.446542 1.791712 0.509038 1.523929 0.040420 1.421476 0.205217 0.565373 0.549874 0.099518 0.264580 1.036675 0.377782)
)
;;; 64 prime --------------------------------------------------------------------------------
#(64 12.176999092102 #(0 0 1 0 0 0 1 1 1 0 1 1 0 0 0 0 0 1 1 0 1 0 1 1 0 0 0 1 0 1 0 1 1 1 1 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 1 1 0 0 1 0 1 1 1 1 0 1 1)
11.932915769505 #(0 0 1 1 0 0 1 1 1 0 1 1 0 0 0 0 0 1 1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1 1 1 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 1 1 1 1 0 1 1)
- 10.461006 #(0.000000 -0.051874 0.195554 1.551448 0.242176 0.616507 0.982665 1.011276 0.379164 1.971390 1.492797 0.542085 0.974927 1.344574 0.390979 0.879234 0.983508 0.368812 -0.007194 0.099669 1.872574 0.398446 0.656708 1.496638 0.163218 0.672606 1.675483 0.541762 1.452178 1.328539 0.223702 0.736320 0.395388 1.245284 0.439166 0.261450 0.497805 1.396625 1.057279 1.210486 1.452272 1.577549 0.385799 0.587456 1.195510 1.583418 0.290799 0.034395 0.138906 1.403600 0.591141 0.643529 -0.122126 1.468052 0.945322 0.811458 0.826453 1.270198 1.560440 1.022292 0.532983 0.754367 0.260503 0.478249)
+ 10.267900 #(0.000000 -0.055464 0.198871 1.543029 0.273897 0.541242 1.037970 0.940072 0.399901 0.008175 1.498673 0.565903 1.018603 1.387812 0.406554 0.840569 0.982692 0.436187 0.026512 -0.015321 1.846961 0.342803 0.737278 1.505152 0.123641 0.646926 1.693673 0.588292 1.550689 1.376816 0.163942 0.733286 0.414648 1.198500 0.352227 0.287012 0.557964 1.409624 0.955079 1.280112 1.351285 1.563695 0.499405 0.551315 1.105607 1.548578 0.378990 -0.137018 0.151584 1.405173 0.603268 0.632565 -0.148703 1.595775 0.941656 0.715958 0.864652 1.216898 1.536642 1.024869 0.563455 0.725519 0.226640 0.491522)
)
;;; 65 prime --------------------------------------------------------------------------------
#(65 12.496994018555 #(0 1 0 1 0 0 1 1 1 1 1 0 1 1 0 1 1 1 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 1 0 1 0 0 0 0 1 0 1 1 1 1 0 0 1 0 1 1 0 1 1 0 1 1 0)
12.264873504639 #(0 0 0 0 1 1 1 1 1 0 0 1 1 0 0 1 0 1 0 1 1 1 1 0 0 0 1 1 1 1 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 1 0 0 1 1 1 1 0 1 0)
- 10.534317 #(0.000000 1.249100 -0.066435 -0.008955 0.306690 0.268317 0.579817 1.847282 -0.009091 1.481655 1.052819 1.636397 1.414982 0.547746 0.118739 1.246131 0.773911 0.060170 0.939940 0.111993 0.254318 0.363447 1.312723 1.162739 1.163961 1.001238 0.680568 1.771005 -0.000059 0.095114 1.238401 1.078048 0.539753 1.936857 1.874152 0.130057 0.572528 0.639004 1.247678 0.845477 1.258575 1.199312 0.186476 1.356956 0.114786 1.499121 0.119138 0.136899 0.193715 0.876516 0.108832 -0.019922 1.454664 1.303831 1.796816 -0.033943 1.463538 0.319854 -0.105152 1.006304 0.143972 1.358415 1.537791 1.830771 0.238531)
+ 10.474157 #(0.000000 1.273082 -0.108748 0.002171 0.221568 0.298934 0.620223 1.795584 0.009754 1.449682 1.110502 1.681545 1.418284 0.589352 0.145387 1.276013 0.728335 0.082043 0.956326 0.079416 0.257929 0.397685 1.325636 1.057434 1.124161 0.969295 0.681901 1.820279 0.064926 0.123739 1.169622 1.044837 0.523695 1.894276 1.861180 0.109117 0.631163 0.642180 1.303103 0.827956 1.333076 1.148451 0.129643 1.437061 0.141904 1.458851 0.150246 0.234687 0.214824 0.871574 0.140300 -0.039724 1.494791 1.298930 1.834425 -0.037572 1.554111 0.323365 -0.158908 1.063261 0.185935 1.420761 1.515474 1.895882 0.194772)
)
;;; 66 prime --------------------------------------------------------------------------------
@@ -2966,14 +2916,14 @@
12.347700119019 #(0 0 0 1 1 1 1 1 0 1 1 1 0 1 0 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 0 1 0 1 1 1 1 0 0 0 0 1 1 0)
12.090668678284 #(0 0 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 1 0 1 1 0 1 1 0 1 0 0 0 0 1 0 1 1 1 0 1 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 0)
- 10.678110 #(0.000000 0.020269 0.468263 1.358774 0.139233 0.396561 1.039670 0.870981 0.367810 0.199683 0.506627 1.150095 1.303626 0.109299 1.249835 1.940997 1.663088 1.165361 -0.234455 0.002437 1.887717 1.174240 0.267986 0.407676 0.847821 0.689871 1.754300 0.232925 0.649186 0.130639 0.368183 0.070690 0.414687 0.903649 0.647546 -0.030118 0.291985 0.635775 1.129231 1.420996 0.764553 1.912223 1.245207 1.090017 0.850121 1.652217 0.667079 1.634992 -0.093965 0.987518 0.498963 1.935948 1.188038 0.567632 1.244727 1.243682 1.186609 0.272212 0.594774 0.114881 0.679538 0.211664 1.408973 0.427253 0.055635 0.370482)
+ 10.556190 #(0.000000 -0.097410 0.466528 1.308208 0.089559 0.411734 1.120474 0.896344 0.382486 0.160205 0.491699 1.107105 1.297836 0.115885 1.221218 1.995276 1.682799 1.126891 -0.240986 0.085971 1.931944 1.169230 0.261608 0.424403 0.869078 0.602102 1.700036 0.236859 0.614581 0.141426 0.284138 0.093545 0.350527 0.910054 0.678764 0.048839 0.277789 0.707343 1.196932 1.405096 0.791701 1.953311 1.198877 1.176208 0.815496 1.679594 0.643402 1.661119 -0.178075 0.973553 0.506388 1.914033 1.162835 0.568432 1.168914 1.270541 1.157177 0.255981 0.624529 0.129369 0.665529 0.244705 1.465881 0.519362 0.023394 0.339325)
)
;;; 67 prime --------------------------------------------------------------------------------
#(67 12.65784740448 #(0 1 0 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 0 0 1 0 1 1 1 1 0 0 0 0 1 1 1 1 0 1 0 1 0 0 0 1 0 0 1 1 1 1 1 0 0 0 1 0 1 0 1 1 1 0 1 1 0 1 1 1)
12.20425496356 #(0 1 0 1 1 0 1 1 1 1 1 0 1 1 0 1 1 0 1 0 0 1 0 1 1 1 1 0 0 0 0 1 1 1 1 0 1 1 1 0 0 0 1 0 0 1 1 1 1 1 0 0 1 1 0 1 0 1 1 1 0 0 1 1 1 1 1)
- 10.663952 #(0.000000 -0.077215 1.299537 1.891284 0.629787 0.085258 1.307161 1.109138 0.014652 0.319882 0.380332 0.639316 0.183551 0.080057 0.728259 0.239130 1.517637 1.493721 1.547703 0.743832 0.844152 1.021677 1.549138 0.990719 0.381707 0.914357 0.672581 0.882660 0.443250 0.724460 1.097210 1.601479 1.377810 0.944792 1.334890 0.819202 0.002028 1.430803 1.681330 0.048768 1.525800 1.077569 0.924189 1.335071 1.058104 1.843823 0.884576 0.550611 0.924975 1.106444 1.350109 0.955927 1.410976 0.425278 0.036776 1.587790 0.663457 0.405246 0.612775 1.589858 1.160724 0.751822 0.212912 -0.081828 0.952348 0.274205 0.654134)
+ 10.548870 #(0.000000 -0.090470 1.285858 1.883442 0.628501 0.073784 1.323940 1.075641 0.049603 0.274005 0.320800 0.667656 0.164957 0.114796 0.756507 0.174762 1.581460 1.561145 1.514403 0.732542 0.872410 0.966478 1.593815 0.938832 0.444737 0.882006 0.648639 0.950035 0.376566 0.690365 1.057734 1.537733 1.430833 0.953945 1.368865 0.849178 0.019499 1.383576 1.700967 0.040155 1.509674 1.112533 0.870563 1.381018 1.059651 1.845667 0.970247 0.577069 0.965240 1.053062 1.367131 0.971382 1.428853 0.422239 0.001277 1.592744 0.691079 0.418683 0.599436 1.560980 1.196877 0.761136 0.232014 -0.089189 0.948608 0.345004 0.601538)
)
;;; 68 prime --------------------------------------------------------------------------------
@@ -2981,7 +2931,7 @@
12.501034736633 #(0 0 1 1 1 1 0 0 0 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 1 0 0 1 0 1 0 0 1 0 1 1 1 0 1 1 1 1 1 0 0 1 1 0 1 1 0 1 0 1 1 0 0 0 0 0 1 0 1 0 0 1 0 1)
12.466281890869 #(0 0 1 1 1 1 0 0 0 0 1 0 0 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 0 1 0 0 1 0 1 1 1 0 1 1 1 1 0 1 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 1 1 0 1 0 0 1 0 1)
- 10.829818 #(0.000000 0.236072 1.704041 -0.015470 1.148461 1.781603 0.128345 0.958951 1.965920 1.178193 -0.115526 1.816136 1.548325 1.887209 0.167715 0.786722 0.413900 1.315267 1.086925 0.238681 0.086070 0.839301 -0.012635 1.456228 1.177125 0.477693 -0.116323 1.253249 1.194293 1.936353 0.005876 -0.075031 0.718530 -0.303481 0.977833 1.320256 1.893129 1.757749 0.671514 0.350442 -0.136843 1.126790 -0.026699 0.328447 1.339809 1.718544 1.782796 1.637695 0.818785 0.847069 1.331111 1.207138 0.812184 0.744886 0.343128 1.913953 1.564315 1.550649 0.457809 0.525116 0.034984 0.654479 0.141835 1.215567 1.582769 1.777390 0.328318 1.547661)
+ 10.692181 #(0.000000 0.160992 1.670151 -0.032752 1.125438 1.816792 0.134967 0.948462 0.004882 1.213856 -0.158463 1.824966 1.525159 1.935532 0.134622 0.791181 0.233909 1.349193 0.979140 0.292243 0.051319 0.836471 0.015026 1.439303 1.082337 0.487288 -0.111585 1.299924 1.260731 1.979344 0.032276 -0.032787 0.653119 -0.369577 1.006835 1.330359 1.931848 1.776156 0.696444 0.432833 -0.182891 1.180915 0.074824 0.258276 1.331393 1.788205 1.781506 1.641605 0.759944 0.940918 1.268084 1.236164 0.813942 0.772363 0.319672 1.861579 1.551981 1.465513 0.541387 0.556417 0.037051 0.668245 0.048594 1.275290 1.530979 1.723000 0.284872 1.482839)
)
;;; 69 prime --------------------------------------------------------------------------------
@@ -2990,7 +2940,7 @@
12.336643218994 #(0 0 1 0 0 1 1 0 1 1 0 1 1 1 1 1 0 1 0 1 1 0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 0 0 0 1 0 1 1 0 0 0 1 0 1 0 1 1 1 1 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1)
12.29846572876 #(0 0 1 0 0 1 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 0 0 1 1 1 1 1 1 0 1 1 0 1 1 0 0 0 1 1 1 1 0 0 0 1 0 1 0 1 1 1 1 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0)
- 10.832485 #(0.000000 1.792498 1.338727 1.322348 1.246233 0.273706 1.655722 1.552964 0.717430 0.575190 1.816176 1.347284 1.155711 0.794080 0.258686 0.372510 0.093078 0.036915 1.454734 0.990393 1.891105 0.336546 0.757768 0.362718 0.377118 0.780091 1.877089 -0.244913 1.787610 1.696378 0.615730 1.825087 1.078482 1.677119 0.538231 0.864177 1.126952 1.495919 1.602711 1.139244 1.668238 1.744972 1.261346 -0.133048 0.809464 0.600632 0.793190 -0.086479 0.016150 0.692325 1.398425 1.056171 0.344371 1.041741 1.238793 1.147386 1.893061 1.087493 0.778940 1.099436 1.125593 0.483691 1.741138 -0.079158 0.861151 0.343938 1.247929 1.262607 0.812979)
+ 10.763634 #(0.000000 1.753520 1.357588 1.349359 1.210221 0.223202 1.616367 1.551867 0.795698 0.663015 1.855602 1.296520 1.111189 0.836249 0.242252 0.311343 0.146391 0.002260 1.429232 0.891762 1.921451 0.270087 0.766162 0.347999 0.440657 0.842536 1.884912 -0.289951 1.825709 1.643856 0.696483 1.776219 1.027783 1.698935 0.462354 0.911005 1.177298 1.522980 1.613608 1.149327 1.612005 1.723442 1.155985 -0.119464 0.831590 0.611851 0.812450 -0.161761 -0.035119 0.717943 1.403965 1.026422 0.295489 1.021151 1.207599 1.201595 1.979504 1.039141 0.816797 1.072647 1.088019 0.486815 1.736794 -0.122594 0.865409 0.359528 1.288615 1.273472 0.770874)
)
;;; 70 prime --------------------------------------------------------------------------------
@@ -3000,7 +2950,7 @@
12.669577598572 #(0 1 0 0 1 0 0 1 1 1 1 0 1 0 0 0 1 1 0 1 1 1 0 1 1 0 0 0 1 1 1 1 1 1 0 1 0 0 1 0 0 1 1 0 1 0 0 1 1 1 1 0 1 0 1 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0)
12.665026664734 #(0 1 0 0 1 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 1 1 0 0 0 1 1 1 1 1 1 0 1 0 0 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 0 1 0 1 0 1 0 0 0 0 1 1 1 1 1 0 0)
- 10.847779 #(0.000000 0.867931 0.053933 -0.060714 0.439537 1.028958 0.253646 1.582567 1.072619 1.567577 0.814378 1.142444 0.961515 0.779669 0.433093 0.156017 -0.001073 0.665535 0.774083 0.483605 1.142910 1.651192 0.993102 0.000238 1.845454 1.708896 1.750180 0.822117 0.948771 1.836256 1.387435 0.331023 0.002312 0.520670 0.123613 -0.019593 1.127303 -0.156983 0.539049 1.779837 1.578083 0.468884 0.364029 0.674988 1.440686 1.263907 1.459939 1.562500 1.326235 1.676369 0.257311 1.560717 0.024469 0.193132 1.114218 -0.089549 1.432370 0.658055 1.297393 0.769233 0.399788 0.853799 1.581639 0.791466 0.100826 1.054751 0.156030 0.910782 0.788459 0.207351)
+ 10.698743 #(0.000000 0.917657 0.123444 -0.097777 0.409283 0.930340 0.256683 1.613682 1.088572 1.577497 0.869528 1.139879 1.003839 0.832060 0.516889 0.190919 0.024640 0.686993 0.802303 0.473356 1.111103 1.660306 0.953037 0.027468 1.873261 1.712852 1.756612 0.779990 1.031228 1.868799 1.363995 0.354652 -0.042712 0.517563 0.176572 0.067269 1.147898 -0.152266 0.463278 1.757448 1.531505 0.505005 0.273214 0.601439 1.433153 1.307425 1.416402 1.626800 1.415407 1.755430 0.283343 1.669748 0.123397 0.161843 1.062569 -0.118134 1.505597 0.660921 1.250885 0.668895 0.436236 0.786729 1.605519 0.854474 0.156990 1.138298 0.102255 0.999860 0.760478 0.166668)
)
;;; 71 prime --------------------------------------------------------------------------------
@@ -3010,7 +2960,7 @@
12.702159881592 #(0 1 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 1 1 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 1 1 1 1 0 0 1 1 0 1 1 0)
12.609085083008 #(0 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 1 0 0 0 0 1 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 1 1 0 1 1 0)
- 10.963222 #(0.000000 0.848563 0.830196 0.999951 1.700648 0.961476 0.741361 1.074878 0.510944 0.827532 0.703333 0.841984 1.600789 0.638360 0.666387 0.475574 1.029956 1.237754 1.265008 1.491846 0.299266 0.252860 0.824934 0.601077 0.670520 1.495636 0.037051 0.275087 0.110142 1.194773 0.849632 1.296828 1.053253 -0.009793 0.452541 1.690815 1.639224 0.952785 0.035370 0.553016 1.140595 0.264110 1.452561 0.667342 0.889299 1.752086 1.315623 0.203901 1.604253 0.957535 0.964751 0.262421 1.024545 0.012983 1.369165 0.220323 1.201527 1.177415 0.260237 0.216396 1.762781 1.060082 1.544518 1.524067 0.352807 0.102370 0.273371 0.812475 0.711072 1.375773 1.412639)
+ 10.884054 #(0.000000 0.700486 0.853924 0.989945 1.689407 0.918740 0.744315 1.057189 0.483826 0.768038 0.761188 0.884357 1.632170 0.673515 0.789651 0.498739 1.014446 1.184214 1.216849 1.423179 0.401067 0.233366 0.798127 0.617673 0.664167 1.522969 0.107288 0.236985 0.074207 1.190683 0.813119 1.326250 1.086336 -0.046935 0.500346 1.719498 1.602767 0.905568 -0.024416 0.605887 1.109109 0.246011 1.414593 0.615444 0.901041 1.772998 1.286792 0.236649 1.611391 0.926675 0.981132 0.273330 1.010399 0.017578 1.305678 0.227278 1.205339 1.137628 0.233969 0.266322 1.861144 1.026408 1.529998 1.514863 0.404514 0.107001 0.310359 0.858560 0.683476 1.420264 1.428305)
)
;;; 72 prime --------------------------------------------------------------------------------
@@ -3019,7 +2969,7 @@
12.841200828552 #(0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 1 1 0 0 0 1 0 1 1 1 0 1 0 0 0 0 1 0 1 1 0 0 1 0 1 1 1 1 0 1 0 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0)
12.708446502686 #(0 0 1 0 0 0 1 1 0 1 1 1 0 0 0 1 0 0 0 1 1 0 1 1 1 0 1 0 1 0 1 1 0 0 0 0 1 1 0 0 0 1 1 0 1 1 1 0 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1)
- 11.116316 #(0.000000 1.431472 0.985861 -0.183408 1.619988 1.012353 1.334995 0.879784 1.453905 1.393778 0.063486 0.070790 1.530867 0.074139 1.525434 1.409642 1.697804 0.332145 1.859743 1.119776 -0.056281 1.700211 1.059090 0.038928 0.548878 0.252682 1.398145 0.193311 0.643375 0.100320 0.513967 1.658267 1.535971 -0.128206 1.696995 1.081027 1.220714 0.171439 1.325012 1.365884 1.424110 -0.077485 1.062986 0.581673 0.978235 0.086923 1.340770 0.579939 0.995416 1.887517 0.714163 1.167463 0.143138 1.622805 0.960227 0.690941 1.669090 0.558160 0.729024 0.748226 0.171451 0.847879 1.149868 0.050272 1.432375 1.310508 1.902946 0.251707 0.235655 0.842496 1.045611 0.127970)
+ 11.036202 #(0.000000 1.555837 1.025791 -0.187849 1.682176 0.956874 1.304511 0.926585 1.500981 1.422966 0.071885 0.038414 1.600046 0.019298 1.593547 1.335251 1.733701 0.347665 1.826757 1.107160 -0.062540 1.807220 1.113454 0.015090 0.575244 0.269891 1.412969 0.180691 0.653291 0.186951 0.556191 1.679837 1.484269 -0.124820 1.793095 1.094361 1.230862 0.269486 1.298574 1.379857 1.440590 -0.049442 1.107503 0.634906 1.016408 0.105408 1.342113 0.599832 1.022758 1.976131 0.720148 1.210875 0.180060 1.717250 0.988749 0.749358 1.654285 0.540438 0.670766 0.750538 0.177837 0.813033 1.194317 0.072315 1.534461 1.358219 1.974172 0.240556 0.224253 0.816651 1.055865 0.158297)
)
;;; 73 prime --------------------------------------------------------------------------------
@@ -3028,7 +2978,7 @@
12.986406962349 #(0 1 0 0 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 0 1 1 1 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 1 1 1 0 1 0 1 0)
12.877750118249 #(0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 1 1 1 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0)
- 11.259140 #(0.000000 0.373944 0.355288 0.714960 1.389007 0.477641 0.881290 1.667815 1.406969 0.380654 0.537267 0.355179 1.374598 0.591670 0.445101 0.413727 1.633643 0.381020 0.222481 0.812118 0.280233 1.492944 1.154518 1.501193 1.367837 0.284450 -0.021125 0.277253 1.655373 1.060901 1.211851 1.559518 1.308162 1.340321 1.509869 1.429651 0.168344 0.036615 0.676068 0.126994 0.619777 0.236177 -0.007955 0.295249 1.044920 0.951490 1.643492 0.603231 1.242451 1.364094 0.383458 1.275726 1.020133 0.328523 0.164607 0.003680 0.891111 1.844078 0.540556 1.011270 1.441211 0.520332 1.924164 0.738153 1.450325 0.518997 1.612430 0.818092 1.568670 0.266730 0.417065 0.232450 1.579288)
+ 11.118679 #(0.000000 0.434501 0.333216 0.719468 1.458550 0.451221 0.939800 1.736607 1.517449 0.423585 0.554421 0.367915 1.426098 0.667101 0.520957 0.289323 1.675424 0.329151 0.266985 0.885520 0.251753 1.517916 1.196999 1.480591 1.369799 0.350043 -0.079333 0.284003 1.710049 1.137288 1.145704 1.494724 1.244751 1.394959 1.506704 1.488724 0.084836 0.057033 0.706312 0.088758 0.608104 0.160927 0.040245 0.242943 1.035648 0.946944 1.543643 0.645944 1.262427 1.252289 0.315223 1.286484 0.997853 0.282003 0.175037 -0.035960 0.936933 1.816070 0.439689 1.047663 1.457949 0.512868 1.886309 0.641958 1.427687 0.612058 1.562598 0.841326 1.613817 0.254045 0.441391 0.200222 1.598683)
)
;;; 74 prime --------------------------------------------------------------------------------
@@ -3037,7 +2987,7 @@
13.261976242065 #(0 1 1 0 0 0 1 0 0 0 1 1 1 0 0 1 1 0 1 1 1 1 0 0 0 0 1 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 1 1 0 1 0 1 0 1 0 0 0 0 1 1)
13.115156173706 #(0 1 1 0 0 0 1 1 0 0 1 1 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 0 0 0 0 1)
- 11.319693 #(0.000000 0.178858 1.289164 0.608330 0.470610 0.207048 0.082908 0.152965 0.682434 1.582342 0.689512 1.115939 0.129529 1.126871 0.958447 0.963834 0.241080 0.857990 -0.180504 1.669825 0.186005 1.064973 1.060056 1.494684 1.866605 1.062342 -0.022585 1.561745 0.038523 1.194959 0.997255 0.195323 0.028595 -0.094511 -0.061103 -0.219603 0.644863 0.217383 1.186304 0.090750 0.195582 -0.007100 -0.145265 1.651799 1.315986 1.201348 1.939770 1.557100 0.210405 0.582860 0.505626 0.997020 1.338835 1.668498 0.841900 1.833719 1.808861 -0.006617 -0.148745 1.182377 0.521219 0.041587 1.631569 1.637407 0.522074 0.725853 1.055464 -0.076129 1.128750 1.059408 -0.039394 1.004806 -0.055785 0.330598)
+ 11.143587 #(0.000000 0.223354 1.297732 0.690294 0.430385 0.263640 -0.000352 0.171266 0.689208 1.537350 0.634841 1.144467 0.184863 1.148024 0.960496 0.930781 0.289972 0.839713 -0.221555 1.705567 0.092382 1.111238 1.119112 1.544807 1.908028 1.134536 -0.092828 1.476457 0.074742 1.142977 1.070901 0.211990 0.096295 -0.038108 -0.035757 -0.208502 0.613663 0.142985 1.212992 0.039257 0.172057 0.009624 -0.084753 1.626470 1.382426 1.139975 1.877900 1.703467 0.176346 0.636074 0.498859 0.902619 1.381147 1.672351 0.888918 1.860899 1.800433 0.017469 -0.109214 1.254427 0.550313 0.119931 1.615840 1.675114 0.536367 0.684312 1.012642 -0.010625 1.136293 1.144114 -0.063852 0.984962 -0.037460 0.325008)
)
;;; 75 prime --------------------------------------------------------------------------------
@@ -3046,14 +2996,14 @@
13.357945520561 #(0 0 0 1 1 1 1 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 1 1 1 1 0 1 0 0 1 1 1 0 1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 0 1 1 1 1 0 0 0 0 0 1 0 0 1 1 0 0 1 1 1 0 1 1)
13.254356384277 #(0 0 0 1 0 1 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 1 1 1 1 1 0 1 0 0 1 1 1 0 1 0 1 0 1 1 0 0 1 0 0 1 1 0 1 0 1 1 1 0 0 0 0 0 0 1 0 0 1 1 0 0 1 1 1 0 1 1)
- 11.379032 #(0.000000 0.373239 1.028072 1.390670 1.346624 1.175502 1.458152 -0.027128 0.876331 1.764086 0.834812 1.419399 1.902112 1.096051 0.070643 1.371793 0.756740 1.099006 1.277915 1.172981 0.593262 1.266994 0.396559 1.667231 1.700707 0.264989 1.318517 0.388141 1.621307 1.336949 0.060979 1.807340 0.664181 0.983292 0.945029 0.854511 1.152989 1.742598 1.306853 1.637047 1.740825 1.332986 1.370231 1.517027 1.645325 0.287859 0.698348 0.851941 1.677573 1.794471 1.681217 0.463193 0.377562 0.523561 1.896266 0.644350 0.707076 0.260106 1.075962 0.988628 0.236179 -0.122431 1.778806 1.070944 0.898989 0.335825 1.781952 1.635227 0.906469 0.871944 1.908447 0.175796 0.951103 0.049658 1.475335)
+ 11.256054 #(0.000000 0.381655 1.033561 1.415017 1.262343 1.145383 1.461399 -0.060049 0.741321 1.771985 0.892627 1.389406 1.944436 1.069766 0.112067 1.378147 0.803500 1.090366 1.191732 1.179956 0.662808 1.195478 0.415344 1.614436 1.658955 0.252101 1.357739 0.248581 1.665508 1.312384 0.042090 1.818294 0.664742 0.981456 0.935826 0.853087 1.228400 1.704388 1.321483 1.684956 1.746245 1.353541 1.427954 1.574369 1.695422 0.245862 0.615121 0.877734 1.656741 1.787665 1.664886 0.482302 0.433966 0.511882 1.921395 0.634727 0.722862 0.218401 1.012773 0.962796 0.263415 -0.125167 1.756777 1.045617 0.925910 0.409731 1.774654 1.571995 0.929924 0.857474 0.033493 0.173762 0.978908 0.029818 1.437907)
)
;;; 76 prime --------------------------------------------------------------------------------
#(76 13.691219362758 #(0 1 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 1 1 0 1 0 0 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 0 1 1 1 1 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1 1 0 1 1 0 0 1 0 0 1 0 0 1 1 1 0)
13.288178191792 #(0 0 0 1 0 1 0 1 0 1 0 1 1 1 1 0 1 1 1 1 0 0 0 0 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 1 0 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1 1 0 1 1 1 0 0 0 0 1 0 0 0 1 0 1)
- 11.472001 #(0.000000 1.274673 1.078696 1.071725 1.836397 0.422363 1.275564 1.269179 0.837688 0.221580 0.970299 0.778572 0.957670 1.597050 0.663703 1.279560 0.321751 -0.204889 0.739782 0.557839 0.395989 0.524114 1.781270 0.223721 0.904172 1.602918 1.187212 0.000459 0.712434 1.798576 0.486924 -0.169704 0.499264 1.104555 1.778326 0.560432 0.867536 1.792071 -0.044970 0.251282 0.434595 0.133467 1.604022 0.856670 1.822621 1.042003 0.598925 0.015902 0.756772 1.576115 1.211211 0.220147 0.365609 0.143725 1.028670 1.105440 1.169763 0.338438 0.769747 1.357225 0.599636 0.626881 1.618193 1.336337 -0.000010 0.894387 1.229534 1.883272 0.567943 0.184888 0.608297 0.385736 -0.045060 1.774897 0.633680 0.633505)
+ 11.299403 #(0.000000 1.241495 0.999479 0.964904 1.838997 0.522125 1.222791 1.279289 0.882294 0.132471 0.977891 0.742621 0.938716 1.611221 0.602686 1.284526 0.392724 -0.171664 0.713380 0.598817 0.518470 0.396219 1.818132 0.187349 0.895660 1.612149 1.236258 -0.045504 0.739878 1.813611 0.440468 -0.245870 0.612876 1.137698 1.827779 0.633777 0.901279 1.807544 0.023310 0.221511 0.430111 0.194415 1.609028 0.853130 1.801377 1.022800 0.532060 0.068653 0.709012 1.539447 1.220525 0.103244 0.410303 0.074064 1.078201 1.115672 1.201014 0.374624 0.815839 1.453531 0.640044 0.629945 1.568741 1.330625 0.048198 0.928694 1.224285 1.891436 0.625319 0.183677 0.585615 0.389148 -0.111707 1.866034 0.702952 0.571396)
)
;;; 77 prime --------------------------------------------------------------------------------
@@ -3062,7 +3012,7 @@
13.330450043717 #(0 1 0 1 0 0 0 1 0 1 0 0 1 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 1 1 0 1 1 1 0 1 0 1 1 1 1 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1 1 0 1 1 0 0 0 0 0 1 0 0 1 1 1 1 1)
13.158900260925 #(0 0 0 1 0 0 0 0 0 1 0 0 1 1 1 0 0 1 1 0 1 1 0 0 1 1 1 1 1 1 0 1 1 1 0 1 1 1 0 1 0 1 1 1 1 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 0 1 0 1 1 1 1 1 1)
- 11.519317 #(0.000000 1.080586 0.842727 1.756089 0.048881 1.661261 1.799693 0.483318 0.959739 0.526766 0.710107 1.210553 1.733339 -0.059945 0.240962 0.104981 1.318921 0.351140 0.491158 0.186092 1.468953 0.514004 1.214047 1.074742 0.303362 1.292590 1.118693 0.557805 1.078822 1.883068 0.818372 0.129878 0.478937 0.393244 0.572795 1.008574 0.374954 -0.058433 0.958724 0.901279 -0.064042 0.030364 0.316966 -0.015988 0.327068 1.524142 0.248466 1.863074 0.592201 0.648580 0.143155 1.651041 0.693407 0.175069 1.749070 1.235089 1.244478 0.770673 0.785297 1.867703 0.698514 0.352735 0.562695 0.616255 1.527875 1.335257 0.114682 1.258026 1.089400 0.377228 1.590509 0.788159 1.338287 1.133873 -0.099357 1.711653 0.049122)
+ 11.239864 #(0.000000 1.109621 0.890720 1.863634 0.134879 1.644549 1.817765 0.480887 0.969833 0.546584 0.713110 1.218674 1.808239 -0.071246 0.280540 0.135188 1.320442 0.275620 0.596746 0.251612 1.443239 0.551624 1.129987 1.096342 0.309075 1.305569 1.150699 0.524859 1.027640 -0.005707 0.848125 0.083280 0.451110 0.402089 0.573143 0.977593 0.391596 -0.086082 0.958365 0.825219 -0.128403 -0.035252 0.320221 0.001786 0.309046 1.509392 0.192510 1.927761 0.561747 0.632578 0.154824 1.672061 0.617582 0.285347 1.718501 1.246786 1.227906 0.851849 0.794182 1.908346 0.672980 0.322095 0.554457 0.637541 1.508116 1.300005 0.136564 1.239918 1.133282 0.396450 1.562246 0.739157 1.281788 1.069054 -0.148058 1.643111 0.030518)
)
;;; 78 prime --------------------------------------------------------------------------------
@@ -3070,7 +3020,7 @@
13.683882347187 #(0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 1 0 1 0 0 0 1 0 1 1 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 1 1 1 0 0 0 1 1 0 0 1)
13.498236182018 #(0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 1 1 1 0 1 0 0 0 1 0 1 1 1 0 1 0 0 1 0 0 0 1 1 1 0 1 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 1 0 0 1 0 0 0 1 1 1 1 0 0 0 1 1 0 0 1)
- 11.747573 #(0.000000 1.382100 1.399551 1.309789 1.608294 1.883510 0.935936 1.547926 0.157727 0.405282 0.834557 1.467197 1.716897 1.066984 0.962402 0.232365 1.970196 1.149771 1.594085 1.568170 0.914565 0.991795 0.474032 1.799040 1.787198 0.431485 1.717521 0.735257 0.109563 0.026952 1.074282 -0.074280 0.007494 0.268711 1.052787 -0.129902 1.587902 1.367480 0.321733 1.106077 0.757989 0.578046 1.644474 1.519602 -0.238452 -0.052081 -0.102276 1.532741 0.139791 0.516278 1.307484 0.065840 0.967432 0.385006 1.348042 0.131786 0.090925 0.125915 -0.076788 1.271336 0.793546 0.003526 0.941472 0.506592 -0.156959 1.532867 0.382147 1.022730 1.120409 -0.207267 0.951306 0.901462 1.441881 1.481367 0.589399 1.808552 1.109504 1.446691)
+ 11.639300 #(0.000000 1.444740 1.330418 1.228692 1.557311 1.886873 0.995250 1.605060 0.146579 0.383570 0.838826 1.385863 1.700528 1.067474 0.939476 0.250724 0.010874 1.095024 1.577274 1.581792 0.900002 0.965555 0.517227 1.776338 1.793449 0.470719 1.762490 0.750045 0.040104 -0.038553 1.061092 -0.171106 -0.005245 0.239462 1.109468 -0.185231 1.657940 1.411404 0.316343 1.038738 0.771111 0.592423 1.587574 1.478494 -0.248962 -0.078133 -0.053091 1.569874 0.094895 0.455466 1.286336 0.154083 0.963308 0.353958 1.415946 0.229199 0.123859 0.095481 -0.102981 1.289160 0.762350 -0.088173 0.866346 0.549633 -0.109149 1.492669 0.382902 1.023349 1.079868 -0.275265 0.951262 0.916281 1.417148 1.504252 0.571734 1.791701 1.117613 1.483546)
)
;;; 79 prime --------------------------------------------------------------------------------
@@ -3078,7 +3028,7 @@
13.77695274353 #(0 1 1 1 1 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1 0 1 0 0 1 0 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 0 1 1 0 0 0 1 0 0 1 1 0 0 1 1 0 0 1 0 0)
13.178678233398 #(0 0 1 0 0 0 1 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 1 0 1 0 0 0 0 1 1 0 0 0 0 1 0 1 0 1 0 1 0 0 1 1 0 0 0 0 0 1 0 0 1 1 1 0 0 0 1 0 1 0 0 0 0 0 1 0 1 1 0 1)
- 11.854345 #(0.000000 1.221715 1.440599 1.209497 0.371229 0.956053 0.847986 1.113825 0.540580 1.673271 1.749866 0.960177 0.595644 1.690621 1.915427 0.400017 1.652103 0.100138 0.630943 1.246091 1.867452 1.391670 0.616423 0.301719 1.149023 1.063630 1.836231 0.335917 0.294985 0.573143 0.924582 1.254589 0.445551 0.957266 1.558214 1.600549 1.554996 0.386738 1.381332 -0.039378 1.480832 1.157654 1.763445 -0.004010 1.419188 0.668397 0.948284 0.517268 0.049939 1.009235 1.515207 1.729531 0.496125 0.093534 0.050661 0.440605 1.116908 0.956039 -0.125268 -0.005420 -0.094144 1.425405 0.222100 1.415677 -0.027194 0.845731 1.898202 0.452634 1.350826 1.422074 1.853296 1.823559 1.530150 1.616663 1.193948 1.652915 1.697381 1.324151 1.065708)
+ 11.822309 #(0.000000 1.287834 1.482178 1.225615 0.377335 0.987336 0.854630 1.119063 0.579927 1.694615 1.696355 0.954657 0.578915 1.699769 1.918381 0.402669 1.692082 0.093979 0.683596 1.265664 1.852374 1.452670 0.605715 0.323950 1.114435 1.077825 1.850615 0.376783 0.249026 0.582006 0.924428 1.263835 0.369729 0.899371 1.573830 1.601979 1.533407 0.475399 1.370329 0.046108 1.473031 1.222650 1.735396 -0.061803 1.413475 0.612188 0.893376 0.535710 0.071805 1.072960 1.591368 1.760374 0.555545 0.172784 0.095049 0.398064 1.084636 0.935731 -0.119359 -0.027653 -0.114990 1.496204 0.198897 1.361297 0.028404 0.834063 1.883012 0.422217 1.381685 1.475074 1.881618 1.812030 1.621278 1.645626 1.160226 1.702831 1.740155 1.376602 1.022833)
)
;;; 80 prime --------------------------------------------------------------------------------
@@ -3087,7 +3037,7 @@
13.563344594765 #(0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 1 0 0 0 1 1 1 1 0 1 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1 0 0 1 0 0 1 0 1 0 0)
13.547472953796 #(0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 1 0 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 1 0 0 0 1 1 1 1 0 1 0 0 0 1 1 0 0 0 0 1 0 1 1 1 1 1 0 0 1 0 0 1 0 1 0 1)
- 11.931717 #(0.000000 1.955647 0.147550 0.155072 0.044701 1.178313 0.568538 0.494629 0.426208 0.525817 1.437439 0.873339 1.389480 1.536673 0.106249 0.193437 -0.060713 0.484669 1.209313 1.706842 0.520552 1.543257 0.687105 1.118651 1.353332 0.959164 0.416630 0.844502 0.287499 -0.031880 1.774212 0.455823 1.140467 1.667314 -0.011174 1.772542 0.419427 1.453505 0.329015 1.861611 0.363175 -0.028234 0.426897 1.167728 1.420112 0.848674 0.175750 1.173496 0.722654 1.285604 0.982947 0.821378 0.269754 1.024652 0.597836 1.062336 0.559366 0.314219 0.664002 1.896598 1.761136 1.355717 1.060646 0.721026 1.291121 0.371053 0.632521 0.078822 1.157668 0.132547 1.236623 0.647888 1.628290 0.962067 1.322196 1.422262 1.243747 1.721369 1.333031 1.714327)
+ 11.850996 #(0.000000 1.923753 0.207464 0.106551 0.052573 1.185030 0.585776 0.530437 0.400860 0.604131 1.402735 0.877646 1.474500 1.459669 0.124363 0.225126 -0.082702 0.470808 1.252222 1.782389 0.573241 1.488777 0.648072 1.098672 1.397661 1.005371 0.482778 0.775387 0.323520 -0.054461 1.787321 0.425380 1.109768 1.720601 0.008270 1.783768 0.462057 1.475670 0.388588 1.856675 0.324432 0.000032 0.401085 1.101134 1.465674 0.811806 0.160773 1.177489 0.702036 1.253724 1.079275 0.789570 0.319269 1.064353 0.568766 1.090129 0.506116 0.246433 0.752833 1.897920 1.751946 1.367062 1.059717 0.627555 1.303947 0.339922 0.648486 0.078103 1.162853 0.125846 1.197362 0.652326 1.581347 0.917897 1.372245 1.382548 1.347964 1.692676 1.401581 1.663786)
)
;;; 81 prime --------------------------------------------------------------------------------
@@ -3095,21 +3045,21 @@
14.256287400004 #(0 1 0 1 0 1 1 1 0 0 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0 1 1 1 1 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 1 1 1 1 1 1 1 0 1 1)
13.652944564819 #(0 0 0 1 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 1 0 0 0 1 1 1 1 0 1 0 0 1 1 0 0 1 1 1 1 0 0 0 0 0 1 1 0 0 1 1 1)
- 11.847951 #(0.000000 0.000231 1.128781 0.069255 -0.009275 1.391880 0.161632 0.160683 0.390543 0.515501 0.151624 0.269822 0.850864 0.310972 0.665152 1.191456 0.405991 0.613165 0.575280 1.756130 -0.010791 1.333432 1.299568 1.671794 1.696847 0.849025 1.420543 -0.008035 1.648803 1.459847 1.036914 0.614361 0.072204 0.622172 1.211552 1.061804 -0.245181 0.241930 1.816969 0.066195 1.715124 0.946680 0.929476 1.981287 1.586469 1.230606 1.538069 -0.000303 0.819819 0.872179 1.419055 0.094735 0.126794 0.504253 -0.095853 0.553369 -0.231056 0.747394 0.680571 0.587883 1.862131 0.140804 1.340366 1.301576 0.077300 0.854082 0.923001 1.382392 -0.176260 1.496997 0.642190 0.620044 0.989502 1.564496 0.281967 0.472389 0.620315 1.335286 0.179386 1.208293 0.489534)
+ 11.685857 #(0.000000 -0.040391 1.131311 0.019069 -0.037458 1.353503 0.148279 0.224472 0.311463 0.524761 0.168723 0.260394 0.791519 0.332435 0.741557 1.238699 0.473804 0.677736 0.568135 1.767246 0.074862 1.364437 1.247670 1.601182 1.752298 0.887626 1.413716 0.060632 1.627882 1.473798 1.035145 0.573759 0.093034 0.630049 1.254752 1.122726 -0.289866 0.164029 1.815696 -0.037242 1.749053 0.895509 0.951675 0.058817 1.597293 1.240331 1.438622 -0.044412 0.777350 0.757925 1.448836 0.102016 0.153065 0.531193 -0.101505 0.537232 -0.137195 0.778521 0.684756 0.540993 1.875908 0.021696 1.286286 1.290897 0.104490 0.883543 0.911221 1.330125 -0.249724 1.479590 0.629937 0.605166 0.948781 1.530031 0.215407 0.452406 0.559695 1.333624 0.104992 1.221576 0.471772)
)
;;; 82 prime --------------------------------------------------------------------------------
#(82 14.492313651671 #(0 1 0 1 1 1 1 0 0 0 1 1 0 0 0 0 1 1 1 0 1 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 1 1 0 1 1 1 1 0 1 0 0)
14.126787045134 #(0 1 0 1 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 1 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 1 0 1 0 0 1 0 1 1 0 1 1 1 1 0 1 0 0)
- 11.933707 #(0.000000 1.145072 -0.158550 1.520115 0.018795 1.322140 0.446736 1.715333 0.838596 0.082777 1.014496 0.352912 1.587920 0.141871 0.199825 1.357196 1.228641 0.994552 0.213651 0.275925 1.894989 0.341364 1.506266 1.915287 0.202196 1.178422 0.411087 1.140143 0.005747 0.390321 1.958084 1.922218 0.664924 0.511853 1.438914 0.108830 0.986089 0.225030 0.183280 0.133059 0.343176 1.172206 0.498139 1.547455 1.485488 0.225061 1.657440 0.348545 0.724076 0.617901 0.147569 0.190891 0.366728 0.005954 0.110308 0.441457 1.253717 1.323199 1.312377 -0.068080 0.928838 1.551726 1.689324 -0.046240 0.620395 1.268268 1.730923 1.352783 0.651450 0.268747 0.928557 1.215127 0.717552 1.682107 0.502392 1.175537 0.832627 0.209435 0.031850 0.579403 0.666004 0.130577)
+ 11.793913 #(0.000000 1.170349 -0.097255 1.488841 0.017345 1.364978 0.461705 1.727372 0.840293 0.054901 0.997486 0.323991 1.551969 0.141358 0.229977 1.365159 1.193638 1.002416 0.156161 0.227249 1.918915 0.252739 1.494449 1.946944 0.107423 1.228288 0.347901 1.092938 0.070295 0.369466 0.036890 0.021648 0.743776 0.503837 1.396482 0.203930 0.913320 0.172275 0.195615 0.116574 0.368468 1.178622 0.517182 1.549983 1.439848 0.172758 1.651794 0.396402 0.720403 0.645746 0.165501 0.171553 0.431707 -0.011481 0.140885 0.475134 1.287334 1.342788 1.305448 -0.049168 0.822490 1.483831 1.714022 -0.063970 0.640560 1.220804 1.731432 1.410055 0.654261 0.302038 1.015069 1.234688 0.697108 1.668639 0.527685 1.136551 0.839111 0.160152 0.026120 0.544483 0.663823 0.085128)
)
;;; 83 prime --------------------------------------------------------------------------------
#(83 14.249828726851 #(0 1 1 0 0 0 1 1 0 1 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 1 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 1 1 0 0 1 0 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 0 1)
14.019070339131 #(0 1 1 0 0 0 1 1 0 1 1 0 1 0 0 1 0 1 0 0 1 0 0 0 1 1 1 0 1 1 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 1 1 0 0 1 0 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 0 1)
- 11.959934 #(0.000000 0.511452 1.367086 0.744433 0.952646 1.695633 1.294030 0.118346 1.355416 1.794394 1.152558 1.695678 1.571511 1.471138 0.375935 1.698182 1.813223 1.536097 0.716581 0.530616 0.125631 1.806276 0.703193 1.414719 0.368262 0.559375 0.090616 0.591926 0.942185 1.322345 -0.150689 1.700527 0.195772 1.753618 0.974721 1.629855 0.764975 1.818782 0.879166 1.342878 1.768240 0.758042 1.032952 0.167209 1.114261 0.534115 1.250752 0.600383 1.556459 0.812787 0.431661 0.269665 0.249874 0.659857 1.500459 1.672553 0.961884 1.460902 1.576820 0.492945 -0.085881 0.747387 0.701652 0.179204 1.891239 0.485288 0.538878 1.465587 1.574928 0.459288 1.760396 0.893486 0.716398 0.514782 1.890332 1.340440 0.233160 1.602795 1.453850 0.137835 0.622969 1.514073 0.287929)
+ 11.781927 #(0.000000 0.530341 1.462561 0.792280 0.894542 1.667883 1.244382 0.182770 1.363983 1.783346 1.218239 1.712844 1.488441 1.507912 0.327828 1.691918 1.871686 1.520428 0.686325 0.485910 0.105318 1.820285 0.676625 1.334245 0.330571 0.586894 0.050602 0.636315 0.942987 1.350991 -0.161344 1.647640 0.213664 1.715449 0.981739 1.633688 0.787265 1.815226 0.909485 1.319231 1.798180 0.703953 1.113935 0.133946 1.066183 0.544998 1.257395 0.559915 1.632454 0.803147 0.286591 0.274266 0.301649 0.618040 1.440041 1.608840 0.918621 1.531779 1.536820 0.481949 -0.082803 0.686537 0.684744 0.181267 1.926122 0.440091 0.393218 1.498843 1.583768 0.440312 1.781636 0.822340 0.745293 0.543583 1.876210 1.259398 0.246035 1.623192 1.482278 0.145790 0.640657 1.435786 0.301700)
)
;;; 84 prime --------------------------------------------------------------------------------
@@ -3118,7 +3068,7 @@
14.264351844788 #(0 0 1 0 0 0 1 1 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 1 1 0 1 1 1 0 1 1 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 1 0 1 1)
14.024940956301 #(0 1 0 1 1 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 1 0 1 0 0 1 1 0 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 1 1 1 0)
- 12.158821 #(0.000000 1.235076 1.193812 1.460503 1.047596 1.325186 0.964800 -0.227580 -0.413099 0.470965 0.798394 0.998415 0.940399 0.680397 0.996027 -0.210388 1.953547 1.274196 0.638525 1.025227 1.232312 1.330018 -0.324173 1.405150 0.532011 0.362260 0.998948 0.434122 0.766339 0.319369 1.088501 0.134269 1.806362 0.760374 0.507878 0.357048 1.307924 0.745341 0.677640 0.812689 0.546530 1.302255 0.156021 1.353494 -0.217503 0.321720 0.935200 0.568594 1.011498 1.301342 0.081543 1.166536 0.002530 1.039495 0.345935 -0.516689 0.732402 0.658065 1.789333 0.397446 1.151558 0.757064 0.497959 1.194021 0.493162 0.983438 -0.399447 1.322511 -0.021908 0.607574 0.830696 0.212488 -0.180262 1.208476 1.430388 0.795373 0.496346 1.251804 0.060260 0.929386 1.547535 0.947269 0.055965 0.601675)
+ 12.004509 #(0.000000 1.277509 1.189592 1.446784 1.053877 1.331731 0.905086 -0.324632 -0.414553 0.466868 0.808486 0.989202 0.871063 0.707718 0.942488 -0.202099 1.911154 1.330897 0.707097 1.079185 1.314532 1.409379 -0.313856 1.410196 0.490850 0.345208 1.059653 0.367735 0.764355 0.269834 1.122760 0.148507 1.796443 0.661215 0.478102 0.328019 1.203103 0.699161 0.614278 0.799993 0.522522 1.333019 0.059328 1.362159 -0.108220 0.288238 0.966131 0.592853 1.073228 1.341413 0.082539 1.136860 -0.048696 1.100377 0.364296 -0.516615 0.656912 0.662283 1.741784 0.470812 1.160452 0.651716 0.538545 1.119000 0.523460 0.980785 -0.367373 1.335729 -0.044907 0.638042 0.865138 0.183679 -0.209664 1.279064 1.428596 0.695890 0.531733 1.198948 0.124891 0.995194 1.537150 0.855236 0.017794 0.679676)
)
;;; 85 prime --------------------------------------------------------------------------------
@@ -3126,7 +3076,7 @@
14.400919537796 #(0 0 1 1 1 0 0 0 1 1 0 1 1 1 1 1 0 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 1)
14.253310943921 #(0 0 1 1 1 0 0 0 1 1 0 0 1 1 1 1 0 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 1 0 1 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 1 0 1 1 1 0 0 1 1 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 1)
- 12.190113 #(0.000000 0.154132 0.144268 1.707250 0.546229 1.610392 1.040097 1.302173 1.048842 1.740154 0.517638 1.706109 0.795717 0.829881 1.082751 -0.116545 1.352180 1.454621 1.334289 1.264307 1.614838 0.753219 0.296255 1.214030 -0.036788 0.116272 0.044977 1.109335 1.047437 1.379629 0.778963 0.376282 0.565741 1.909004 1.167299 1.168133 0.830824 1.054047 0.996059 1.484133 0.657776 0.075638 0.589320 1.541763 0.100606 1.823159 0.104543 1.250167 0.686994 1.563450 1.003563 0.928862 0.091494 0.809776 -0.132707 0.847605 0.249848 1.235141 1.627318 1.746946 1.578438 -0.375282 1.733708 1.428878 1.674810 -0.252762 0.749627 1.730173 1.296401 1.250778 -0.003174 0.793662 0.977080 -0.119804 1.767928 0.362859 -0.143449 0.701796 0.589694 0.202550 1.205903 1.465496 0.592883 -0.125740 -0.143014)
+ 12.039301 #(0.000000 0.149657 0.168518 1.773141 0.538506 1.625616 1.072180 1.321021 1.055680 1.727304 0.540394 1.695622 0.798492 0.770518 1.163725 -0.065875 1.311492 1.390917 1.389698 1.265307 1.586608 0.776281 0.428607 1.238289 0.038149 0.126323 0.046653 1.153154 1.073400 1.400608 0.740725 0.450922 0.614097 1.925040 1.177843 1.209951 0.917891 1.069069 1.105236 1.458497 0.609869 0.102141 0.538918 1.490561 0.193033 1.913814 0.035299 1.312357 0.675572 1.514172 0.931182 0.913987 0.112454 0.838766 -0.069918 0.814992 0.249891 1.253838 1.675524 1.790600 1.558739 -0.379214 1.760864 1.443013 1.677219 -0.390056 0.800589 1.781779 1.295915 1.256057 -0.056767 0.818539 1.000559 -0.026975 1.774770 0.332170 -0.108745 0.752305 0.477748 0.182615 1.194757 1.490663 0.572421 -0.106723 -0.159562)
)
;;; 86 prime --------------------------------------------------------------------------------
@@ -3134,7 +3084,7 @@
14.394402956102 #(0 0 1 0 1 0 1 0 1 0 1 1 1 0 0 1 1 0 1 0 1 1 0 1 1 0 1 1 1 0 1 1 1 0 0 1 0 1 1 1 0 0 1 1 1 1 1 1 1 0 0 0 1 0 0 1 1 1 1 1 0 1 0 1 0 0 0 0 1 0 1 1 1 0 0 1 0 1 1 1 1 0 0 0 0 1)
14.017106967247 #(0 0 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 1 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 1 0 1 1 0 0 1 0 0 1 1 0 0 0 0 1 0 1 1 1)
- 12.084521 #(0.000000 1.230461 0.833077 1.741911 1.001396 1.006405 1.090261 1.015087 1.775373 0.635294 0.277132 0.683866 1.121782 0.267689 0.609530 0.348533 0.510937 1.205078 0.866243 0.466246 0.795210 0.331253 0.021614 1.704837 0.203845 1.649172 0.188780 1.907049 0.473719 1.223074 1.854908 0.377690 1.653097 0.383338 0.187138 1.680628 0.917387 1.202228 0.484910 0.054769 1.508829 1.587614 1.830626 1.590017 1.120007 0.628076 0.594625 0.013385 0.966523 1.025903 0.215420 1.791852 1.332156 0.765398 1.815951 0.729831 0.846705 1.677705 1.368692 0.800281 1.816499 0.600075 1.080173 0.762087 1.537287 1.618488 0.012049 0.501647 0.089424 0.265083 0.926265 1.675574 0.087387 1.342712 0.641862 1.593667 1.734428 0.482947 1.576198 0.730869 0.781417 0.345671 1.208711 1.165702 1.868887 1.410921)
+ 11.840326 #(0.000000 1.245722 0.828003 1.708429 1.063770 1.069235 1.168816 0.968148 1.757909 0.722838 0.259673 0.587983 1.075019 0.244887 0.711027 0.351768 0.547579 1.242458 0.885462 0.363198 0.762477 0.413777 0.102231 1.673876 0.229266 1.573827 0.131656 1.849326 0.442221 1.142077 1.793307 0.358676 1.624291 0.368933 0.260608 1.521706 0.921970 1.227777 0.523225 0.076505 1.513864 1.635909 1.833596 1.644361 1.122009 0.722632 0.590190 -0.119164 0.988147 0.934217 0.148785 1.776617 1.320398 0.797478 1.762137 0.720651 0.834263 1.652184 1.312187 0.821513 1.889830 0.489234 1.017541 0.848079 1.479264 1.503801 -0.079078 0.579380 -0.011220 0.294908 0.801151 1.672624 0.234183 1.377348 0.594402 1.461213 1.836654 0.542457 1.520245 0.732249 0.741348 0.487670 1.197161 1.215874 1.847161 1.441704)
)
;;; 87 prime --------------------------------------------------------------------------------
@@ -3142,7 +3092,7 @@
14.519235937355 #(0 1 1 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 1 1 0 1 1 1 1 1 0 1 0 0 1 0 0 1 1 1 0 0 1 1 1 1 1 0 0 1 0 0 1 1 0 1 1 0 1 1 0 0 0 1 0 1 1 0 0 0 0 0 0 1 1 1 0 1 0 1 1 1 1 1 1 1 1 0 0 0 0)
13.98394199918 #(0 0 0 0 1 0 0 1 0 0 1 1 0 1 0 0 0 0 1 1 0 1 0 1 1 1 0 1 0 0 1 0 0 1 1 1 0 0 1 1 1 1 1 0 0 0 1 0 1 1 0 1 1 0 1 1 1 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 0 1 0 1 1 1 1 1 1 1 1 0 0 0 0)
- 12.476671 #(0.000000 0.523561 1.179506 1.267932 0.039583 1.760994 1.123559 1.458279 1.660473 0.648677 -0.002018 1.298743 0.020814 0.208350 0.503918 0.948029 0.317052 0.185753 1.657604 1.707159 -0.069828 0.284063 0.755010 1.443852 0.938996 1.767871 0.787084 -0.054553 1.116749 0.215295 1.036521 0.054620 1.548488 0.853215 1.351142 0.445576 0.883818 1.840852 0.487909 1.245375 1.292282 0.319789 0.243220 1.145453 0.470466 1.714969 1.124004 0.789065 1.350644 0.716071 1.631674 0.666468 1.640095 1.549624 0.261662 1.926307 0.960618 1.889254 0.557003 1.508636 0.377050 1.270038 1.535400 1.880840 0.346166 1.255737 1.554380 0.931631 1.317534 -0.071602 0.489258 1.660923 1.297671 0.917714 1.660641 1.557791 0.839325 0.339679 1.843520 0.369406 0.804018 1.533785 1.621261 1.309017 1.606287 1.810153 1.658625)
+ 12.278568 #(0.000000 0.412364 1.223406 1.298739 0.006362 1.770656 1.094099 1.408717 1.716793 0.694176 -0.043292 1.288866 -0.087361 0.119449 0.680407 0.992194 0.444975 0.155017 1.650203 1.792642 -0.090438 0.257539 0.893761 1.411144 1.009541 1.789497 0.736787 0.065074 1.110366 0.108902 1.078271 0.038187 1.482789 0.863019 1.387008 0.560131 0.969230 1.865104 0.540981 1.226077 1.214274 0.411539 0.219403 1.117461 0.515727 1.631561 1.097264 0.789113 1.340605 0.702159 1.630237 0.654006 1.730371 1.548904 0.239716 0.015830 0.916299 1.890040 0.455797 1.482705 0.462974 1.210534 1.548630 1.878069 0.425900 1.380459 1.605786 0.842110 1.265157 0.041089 0.502876 1.725587 1.345118 0.849311 1.638318 1.522073 0.846612 0.322261 1.950929 0.367392 0.876150 1.615912 1.594580 1.345836 1.701283 1.854293 1.691318)
)
;;; 88 prime --------------------------------------------------------------------------------
@@ -3152,14 +3102,14 @@
14.837036132812 #(0 1 1 0 1 0 1 1 0 1 1 0 0 1 0 1 0 0 0 0 1 0 1 0 1 1 1 1 1 0 1 1 1 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 1 0 0 1 1 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 1 1 0 1 1 1 1 0 0 1 1 1 1 0 1 1 0)
14.825139803345 #(0 0 0 0 1 0 1 1 0 1 1 0 0 1 0 0 0 0 0 0 1 0 1 0 1 1 1 1 1 0 1 1 1 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 1 1 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 1 1 0 1 1 1 1 0 0 1 1 1 1 0 1 1 0)
- 12.541593 #(0.000000 0.810733 0.653805 1.947255 0.254632 0.360486 0.675257 1.003688 0.551961 0.458930 1.340317 0.850810 1.438049 1.449358 1.092940 0.831515 0.325383 0.676041 0.465944 0.338489 0.430322 1.213100 1.038365 0.799852 0.420850 1.572798 -0.174407 0.011621 0.928014 1.715155 0.774249 0.057772 0.577088 0.411720 0.911577 0.180442 1.304960 0.613578 1.531671 0.129488 0.570397 1.087845 0.583930 0.221430 1.895566 1.631632 1.784067 1.517389 1.682328 1.201626 1.683332 0.896741 1.731489 0.295312 1.233120 1.836898 0.701636 1.241554 0.613461 0.109661 0.968004 0.899360 0.578505 0.319697 1.748517 0.327721 1.723449 1.859687 1.210590 0.172782 0.799329 0.726018 1.081956 -0.365591 1.874625 0.602705 1.066734 1.022257 1.702981 0.732286 1.669031 1.677461 1.260487 0.612871 0.873337 0.405573 1.320376 0.736214)
+ 12.267925 #(0.000000 0.754460 0.652788 -0.033735 0.216378 0.368348 0.713363 0.924529 0.547182 0.524683 1.283563 0.812515 1.390031 1.389931 1.051739 0.796371 0.316181 0.756561 0.446962 0.390794 0.332449 1.186846 1.026512 0.865814 0.311668 1.528157 -0.105637 -0.032159 0.936438 1.732794 0.733784 0.064966 0.487154 0.490956 0.956031 0.105321 1.334677 0.642384 1.552601 0.113089 0.543796 1.179294 0.724583 0.296678 1.864205 1.607135 1.707671 1.557779 1.667891 1.212015 1.656287 0.872714 1.722735 0.302166 1.164200 1.785858 0.746105 1.293976 0.673090 0.164975 0.940912 1.010588 0.563849 0.297045 1.739515 0.364008 1.749362 1.937720 1.196475 0.218009 0.815956 0.778317 1.134642 -0.346215 1.899577 0.745130 1.064204 0.943983 1.710673 0.698309 1.669642 1.750405 1.326278 0.581812 0.893851 0.300904 1.316352 0.740312)
)
;;; 89 prime --------------------------------------------------------------------------------
#(89 15.157893052401 #(0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 0 1 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 1 1 1 1 0 1 0 0 1 1 0 1 0 0 0 1 0 1 1 1 1 0 0 1 0 1 0 0 0 0 1 1 1)
14.69031483888 #(0 1 0 1 1 0 0 1 1 0 1 1 0 0 1 0 0 1 1 0 1 1 1 0 1 0 0 0 0 1 1 0 1 1 1 1 0 0 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0 0 0 0 1 0 1 1 0 0 1 0 1 0 1 1 1 0 0 0 0 1 0 0 0 1 0 1 1 1 0 1 0 1 1 1)
- 12.898563 #(0.000000 0.447468 1.417640 0.072825 0.632576 1.349632 0.905993 1.311816 -0.002105 -0.305467 0.481474 1.589914 1.872163 -0.052903 1.770988 0.247391 0.576901 -0.302745 0.105568 1.199512 1.415510 0.991953 -0.177035 1.248761 0.009897 0.588174 0.967067 1.542901 -1.910103 0.460310 1.648989 1.195231 0.261536 0.965907 0.777792 1.683035 1.078006 0.350977 -0.085510 0.493481 0.107227 1.071137 1.016155 1.173047 1.615965 1.361823 1.590445 1.189285 1.523020 1.555693 0.411052 0.097358 0.332907 1.761421 0.542912 1.759221 0.297929 0.766586 0.165528 1.550335 1.482109 1.519576 1.415509 1.972786 0.178410 1.540765 0.709153 -0.089244 0.005626 1.060061 1.673669 1.569977 -0.354246 0.735584 1.336459 0.895315 1.611103 1.145239 0.431710 1.350338 0.910706 0.504823 0.180847 1.294862 1.405718 0.934726 0.385158 1.669909 0.328726)
+ 12.651973 #(0.000000 0.471939 1.363563 0.108442 0.730890 1.385921 0.996613 1.218010 -0.023093 -0.208802 0.525127 1.645619 1.866316 -0.103319 1.696867 0.293852 0.609618 -0.365048 0.074968 1.171058 1.291555 0.982487 -0.095011 1.235712 0.124715 0.650807 0.969652 1.482253 -1.839298 0.495598 1.635463 1.206163 0.159770 0.913806 0.743779 1.662616 1.121384 0.276599 -0.109640 0.455045 0.323325 1.017570 1.039953 1.144361 1.685230 1.302811 1.560763 1.052119 1.511649 1.626125 0.416173 0.001014 0.337360 1.692176 0.439056 1.808475 0.388513 0.732715 0.073367 1.522512 1.492169 1.601574 1.245074 0.034793 0.183671 1.478965 0.656010 -0.151913 -0.066876 1.134750 1.567692 1.595653 -0.490514 0.831137 1.390058 0.980535 1.620810 1.146107 0.480464 1.409584 0.829325 0.367767 0.067898 1.281604 1.288599 0.866958 0.283750 1.622425 0.255839)
)
;;; 90 prime --------------------------------------------------------------------------------
@@ -3167,7 +3117,7 @@
14.917379556641 #(0 1 1 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 1 1 0 1 1 0 1 0 1 0 0 0 0 1 0 1 1 1 1 0 0 1 1 1 1 0 1 1 1 1 0 0 0 0 1 1 1 1 0 1 0 1 0 0 0 0 1 0 1 1 1 0 0 1 0 1 1 1)
14.831111851861 #(0 1 1 0 1 0 0 0 0 0 1 1 1 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 1 1 0 1 1 0 1 0 1 1 0 0 0 1 0 1 1 0 1 0 0 1 1 1 1 0 1 1 1 1 0 0 0 0 1 1 1 1 0 1 0 1 0 0 0 0 1 0 1 1 1 0 0 1 0 1 1 1)
- 12.734266 #(0.000000 0.391405 1.739360 1.046204 1.226636 0.432012 0.397179 0.645360 0.669358 0.291771 0.449002 -0.100442 0.146115 1.007777 1.795389 1.198863 1.418683 1.556178 0.381730 1.839894 0.155733 1.837709 -0.239448 0.599992 1.499087 1.208958 0.602445 0.083030 0.204308 0.686030 1.525667 1.941382 0.213211 1.388692 0.044282 -0.375694 1.160900 1.638328 1.455782 0.400282 0.060971 1.911022 0.902807 0.980005 0.264460 1.059573 0.094233 0.580569 0.736951 0.996544 -0.248514 0.375164 1.473400 0.414818 1.723347 1.173624 1.376131 -0.034701 0.823474 1.278192 1.474377 1.457489 0.749018 0.123245 1.152250 1.692345 0.319188 1.544897 1.205532 1.219430 0.910269 0.049342 1.476125 0.156384 0.427574 1.373446 0.352042 1.675082 0.382517 0.913454 0.825056 1.081030 -0.059146 -0.240515 1.638874 0.558065 0.676823 -0.212376 1.159108 0.983407)
+ 12.578275 #(0.000000 0.352853 1.776583 1.006669 1.230317 0.463070 0.333844 0.626069 0.645700 0.367359 0.379690 -0.171225 0.144022 0.927449 1.818760 1.174975 1.429937 1.581624 0.414658 1.819385 0.163889 1.853150 -0.272025 0.564434 1.466496 1.124176 0.612306 0.068344 0.249396 0.696224 1.559513 1.967924 0.189973 1.308010 0.018644 -0.393229 1.173932 1.630189 1.389419 0.415176 0.053722 1.840251 0.883656 1.102177 0.248822 1.065762 0.083677 0.596246 0.702770 1.102675 -0.161312 0.497115 1.459369 0.468208 1.658864 1.182907 1.337511 -0.094214 0.809584 1.208696 1.478172 1.502669 0.852172 0.154069 1.195031 1.691869 0.306220 1.565424 1.171824 1.217510 0.921889 0.088021 1.494758 0.225219 0.442189 1.345095 0.331248 1.767593 0.389567 0.923971 0.853385 1.038999 -0.117295 -0.294579 1.673740 0.571394 0.725540 -0.171347 1.178060 1.069325)
)
;;; 91 prime --------------------------------------------------------------------------------
@@ -3175,7 +3125,7 @@
14.775403022766 #(0 1 1 0 1 0 1 0 0 1 1 0 1 1 0 1 0 1 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 1 0 1 1 0 1 1 1 0 1 0 0 0 0 1 1 0 0 0 0 1 1 0)
14.702056847646 #(0 1 1 0 1 1 1 0 0 1 1 0 1 1 0 1 0 1 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 1 1 1 0 0 0 0 1 0 0 0 1 1 0 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0)
- 12.662405 #(0.000000 1.709161 0.694952 0.748756 1.619766 1.187828 -0.049361 1.170979 0.968160 1.826870 1.100183 1.326321 0.830854 1.680762 1.711592 0.889427 1.052755 1.370725 1.844295 -0.060461 1.734632 1.251014 1.545217 0.653044 0.863065 0.641439 1.693595 1.556728 1.534126 1.228775 0.901469 0.379463 0.263276 0.694904 0.301563 1.332693 1.816731 1.811031 0.577125 0.578041 -0.328098 0.021309 0.530798 0.561410 0.833826 0.100844 1.539170 1.098677 0.040260 0.740588 0.915590 0.639904 0.582244 -1.640798 0.808216 1.355099 0.415639 0.533593 1.395568 1.531298 0.539190 0.455531 1.809477 0.088416 -0.074325 1.441314 1.133314 1.721076 0.706941 1.510913 0.284671 1.583279 0.592226 0.733892 0.508211 1.087233 1.471683 0.855229 1.585377 0.588232 -0.048535 1.032696 1.919261 0.351701 0.323370 0.545459 0.660609 0.803524 1.299847 0.033367 0.371950)
+ 12.629576 #(0.000000 1.679240 0.654985 0.776518 1.547019 1.159878 -0.068081 1.172938 1.021768 1.809376 1.141874 1.358206 0.728796 1.768509 1.637295 0.889668 1.068659 1.299650 1.780210 -0.034723 1.744365 1.210389 1.563365 0.610598 0.844614 0.656048 1.724491 1.682362 1.538038 1.266915 0.905536 0.358275 0.304424 0.682976 0.355716 1.314345 1.820261 1.763058 0.591130 0.643209 -0.331434 -0.012008 0.586484 0.541365 0.793949 0.204461 1.566304 1.095366 0.023427 0.699966 0.935116 0.681367 0.664912 -1.674827 0.728626 1.336879 0.404289 0.548549 1.394881 1.631360 0.524503 0.476542 1.712185 0.135718 -0.114241 1.441882 1.096389 1.775230 0.672996 1.443928 0.368348 1.545666 0.590401 0.727335 0.429758 1.014322 1.489869 0.902604 1.552226 0.652601 -0.019285 1.045323 1.807951 0.355588 0.401540 0.581587 0.726943 0.783052 1.308264 -0.010893 0.403544)
)
;;; 92 prime --------------------------------------------------------------------------------
@@ -3184,7 +3134,7 @@
14.9424 #(0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 1 1 0 0 0 0 1 1 0 1 1 0 1 1 1 1 0 0 0 1 1 1 0 1 1 1 1 1 1 1 0 0 0 1 0 1 0 0 1 0 0 1 1 1 0 1 0 0 1 1 0 1 0 0 1 0 0 0 1 0 1 0 0 0)
14.556435035882 #(0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 1 1 0 1 0 1 1 0 1 1 0 1 1 1 1 0 0 0 1 0 1 0 1 1 1 1 1 1 1 0 0 0 1 0 1 0 0 1 0 0 1 1 1 0 1 0 0 1 1 0 1 0 0 1 0 0 0 1 0 1 0 0 0)
- 12.747774 #(0.000000 1.249971 1.270149 1.211472 1.665041 1.278798 0.429993 0.217393 1.358988 0.564812 1.702987 0.426494 0.956013 0.935872 1.424936 0.204015 0.556305 -0.519326 0.032779 0.303569 1.807391 0.400885 0.337743 1.264223 1.691043 0.775934 -0.361781 0.978212 1.489547 0.508804 0.629633 0.750386 1.033395 1.722097 1.127544 1.882996 0.035530 1.090368 0.738675 1.328235 0.484997 0.258554 0.522358 0.029633 1.524217 1.130701 0.811442 1.827348 0.681469 1.224147 1.721174 0.929929 1.643692 1.682197 1.271616 0.045775 1.215398 0.076382 0.080249 0.644358 0.397881 1.080617 1.259729 1.359359 0.915853 1.381839 0.171993 1.476611 1.079296 1.516384 0.755485 1.653312 1.233293 -0.126253 1.471942 1.274068 0.851591 1.741571 1.052733 1.932107 -0.270384 1.201349 1.286098 1.486816 0.548064 0.755857 0.653071 0.580509 0.231282 0.990802 0.665762 1.175731)
+ 12.531982 #(0.000000 1.197630 1.286524 1.134488 1.687179 1.331282 0.423861 0.229597 1.341267 0.641466 1.644844 0.346189 0.931973 0.940738 1.498691 0.162354 0.581651 -0.535354 0.064798 0.250870 1.786906 0.407749 0.302417 1.250585 1.687763 0.769284 -0.419091 0.904445 1.470606 0.441817 0.647582 0.860484 1.045901 1.752163 1.201123 1.924536 0.063187 1.109556 0.669731 1.249843 0.479142 0.224540 0.475146 -0.046664 1.463038 1.156496 0.799478 1.867400 0.601784 1.202337 1.730280 0.809457 1.646588 1.634621 1.339264 0.031345 1.297349 0.079275 0.056181 0.599928 0.485525 1.063617 1.212654 1.359354 0.890919 1.457699 0.184004 1.396460 1.057016 1.480759 0.729965 1.622920 1.273612 -0.133136 1.493449 1.201381 0.873388 1.693488 1.000367 1.975718 -0.289631 1.156916 1.260537 1.502312 0.530260 0.756128 0.694658 0.478037 0.168640 0.999282 0.734376 1.195628)
)
;;; 93 prime --------------------------------------------------------------------------------
@@ -3192,7 +3142,7 @@
15.072628413546 #(0 1 0 0 0 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 0 0 1 1 0 1 0 1 0 0 1 1 1 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 1 1 0 1 0 1 0 0 1 0 1 0 1 1 0 1 1 0 0 1)
14.994668960571 #(0 1 0 1 0 0 1 0 1 1 0 1 1 1 0 0 1 0 0 0 1 0 0 0 1 1 1 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 0 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 1 0 1 0 1 1 0 1 0 1 0 0 0 0 1 1 0 0 1)
- 12.980666 #(0.000000 0.267762 1.324329 0.124370 1.297933 -0.116535 0.142997 1.322846 1.031073 1.471320 -0.387585 0.034295 1.742843 -0.132669 1.748691 0.017315 0.059732 1.807745 -0.052210 1.151490 1.417942 1.289891 0.633316 1.057289 0.710789 1.740389 0.055748 0.444503 0.863278 0.287008 1.821783 1.355101 0.489301 0.034469 1.604965 1.361451 0.827299 -0.161949 1.816069 1.854106 0.895643 1.095058 0.087958 0.453194 1.621492 0.353816 1.046637 -0.295190 0.458725 1.428151 0.519175 0.160109 1.103290 1.338823 1.113778 1.233575 1.386092 0.166484 0.339537 0.314499 0.929956 0.454281 0.847207 0.322051 0.460511 0.699123 1.387821 1.192458 1.269890 0.627199 1.863690 1.661665 0.405467 -0.163896 0.353497 0.485016 0.085385 0.724518 0.140538 1.480016 0.101160 1.079092 1.669333 0.352052 0.370772 0.042638 1.549477 0.621873 0.102836 1.208439 1.502120 0.146163 1.306978)
+ 12.740920 #(0.000000 0.188043 1.250705 -0.000151 1.228016 -0.193061 0.162121 1.280943 1.006184 1.384922 -0.409434 0.098067 1.797771 -0.148143 1.763714 0.086220 0.037436 1.743021 -0.039108 1.051706 1.390078 1.372962 0.674078 1.052485 0.649269 1.756623 0.123223 0.377072 0.831176 0.312538 1.829401 1.413709 0.513972 0.114445 1.619219 1.310546 0.782819 -0.161318 1.823344 1.884581 0.931950 1.118936 0.120509 0.392247 1.584774 0.336701 0.969706 -0.295968 0.407316 1.508201 0.525923 0.147302 1.138294 1.309043 1.176706 1.169358 1.400554 0.272430 0.264573 0.372944 0.887675 0.444991 0.794783 0.347072 0.448518 0.681926 1.421566 1.117338 1.185835 0.616689 1.950590 1.666723 0.377147 -0.194421 0.320546 0.480874 0.042091 0.774658 0.185282 1.458199 0.139066 1.034689 1.737673 0.372517 0.385303 -0.008946 1.597156 0.699801 0.038969 1.129397 1.490356 0.165484 1.258360)
)
;;; 94 prime --------------------------------------------------------------------------------
@@ -3200,7 +3150,7 @@
15.441287870957 #(0 0 0 1 0 0 1 1 0 0 1 1 0 0 0 1 1 1 1 0 0 1 0 1 1 1 0 0 0 1 0 0 0 0 0 1 1 1 1 1 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0)
14.811392756555 #(0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 1 1 1 1 0 0 1 0 1 0 1 1 0 1 1 0 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 1 1 0 0 1 0 1 0 1 1 0 0 1 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0)
- 12.959848 #(0.000000 0.430870 0.926787 0.576903 0.686518 0.202445 0.191215 1.469733 1.355249 0.931068 0.097413 -0.036136 0.485693 1.507169 0.594897 1.163972 0.916821 1.057088 0.995570 0.328166 -0.006152 0.330089 1.469696 1.410371 1.596422 0.024615 0.057336 1.114268 1.571001 1.720027 0.513274 1.813937 0.766257 1.150745 0.407969 1.599908 -0.208543 0.736718 1.785704 0.639011 0.710431 1.140955 0.195758 0.381372 1.419571 1.641766 1.653241 1.252182 1.452556 -0.028661 0.898755 0.938777 0.071540 0.450592 0.714062 1.461478 1.663943 1.257781 1.350665 0.808581 1.625291 1.251121 0.184572 -0.051352 1.424846 0.723409 0.814026 0.417909 0.647207 0.222472 1.709857 0.399513 0.850325 0.819257 1.036669 0.184368 0.560628 0.731967 1.442299 0.461931 1.060970 0.975023 1.876296 0.151146 0.346577 1.055791 1.395354 0.600601 0.316444 1.030083 -0.008270 1.084217 0.761303 1.326049)
+ 12.750939 #(0.000000 0.411806 0.932107 0.620165 0.690812 0.078780 0.207637 1.355914 1.428537 1.008014 0.163175 -0.040811 0.574537 1.489363 0.614312 1.194371 0.935368 1.005805 0.928318 0.370350 -0.065244 0.435006 1.441155 1.395062 1.621190 0.021982 0.013473 1.227189 1.566996 1.720462 0.409641 1.816058 0.717818 1.188239 0.348420 1.488145 -0.204496 0.768563 1.723000 0.656714 0.746940 1.143901 0.283060 0.314007 1.380832 1.686174 1.708777 1.265056 1.438127 0.011357 1.011067 0.933857 0.061587 0.441761 0.692061 1.431374 1.644647 1.236298 1.428838 0.828837 1.716444 1.264772 0.205713 -0.192299 1.315354 0.747254 0.888175 0.332702 0.710146 0.094558 1.628910 0.414220 0.853669 0.773296 1.067344 0.189408 0.529961 0.799169 1.427935 0.528594 1.063577 1.008261 1.850893 0.082046 0.297715 1.142832 1.438558 0.590975 0.337215 0.929215 -0.054223 1.059628 0.837326 1.297742)
)
;;; 95 prime --------------------------------------------------------------------------------
@@ -3208,7 +3158,7 @@
15.616318215916 #(0 1 1 0 0 0 0 0 1 0 1 1 0 0 0 0 1 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 0 1 0 1 1 0 0 1 0 1 1 1 1 0 0 1 1 0 1 1 0 1 0 0 0 1 1 0 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 1 0 0)
15.240 #(0 0 0 1 1 1 1 1 0 0 1 1 1 1 0 0 1 1 0 1 1 1 1 1 0 0 1 0 0 1 1 1 0 0 1 1 0 1 1 0 0 1 1 1 1 0 1 0 0 0 1 0 1 1 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 1)
- 13.213828 #(0.000000 0.468827 0.973327 0.381807 1.284543 1.533990 1.813199 1.646185 1.373856 0.207926 1.216524 -0.237414 1.111695 1.141481 0.833725 0.907348 0.855231 1.637206 1.737816 1.514280 1.154612 0.316130 1.205647 0.101083 0.302848 0.920879 0.234031 0.519986 1.141839 0.402271 0.006381 0.199275 0.373086 0.715400 0.729795 0.195245 1.120009 1.067645 0.652541 0.334407 1.423168 1.812510 1.793779 0.561836 0.391723 0.272555 1.416772 0.244165 0.403991 1.687554 0.464032 0.126339 0.186530 1.046942 1.618932 0.120353 0.848199 0.708633 0.773881 1.359630 0.919254 0.693830 0.609897 0.218094 1.261990 0.309363 1.980513 1.827326 -0.157523 0.503392 -0.202603 0.614561 1.413470 1.153563 1.829873 1.487268 0.603528 0.151306 0.107976 1.947076 0.437025 0.793963 0.579394 1.891658 0.283902 1.326916 0.557687 1.217506 0.312028 0.984013 0.152153 0.579036 -0.217379 1.761472 0.908100)
+ 13.142269 #(0.000000 0.446688 0.943416 0.420303 1.262593 1.481551 1.816759 1.602944 1.335361 0.232664 1.151008 -0.271285 1.095303 1.115766 0.807686 0.853009 0.833502 1.638512 1.799897 1.539482 1.210974 0.251853 1.140131 0.074874 0.330599 0.975283 0.196529 0.497575 1.108776 0.454628 0.099328 0.206635 0.429721 0.767821 0.776883 0.241734 1.086834 1.177070 0.648981 0.385316 1.435368 1.745089 1.820420 0.447206 0.305271 0.314686 1.406340 0.245081 0.379705 1.727534 0.485952 0.138705 0.256316 1.115237 1.593934 0.143114 0.862360 0.700441 0.802048 1.455463 0.924965 0.639165 0.663868 0.248541 1.349485 0.397723 0.076215 1.824268 -0.142783 0.500073 -0.174686 0.657917 1.428001 1.143254 1.721062 1.414540 0.572450 0.100496 0.158099 1.989891 0.400767 0.722835 0.589185 1.822999 0.245200 1.420401 0.615495 1.234701 0.314335 1.000579 0.095663 0.630419 -0.246846 1.810582 0.891630)
)
;;; 96 prime --------------------------------------------------------------------------------
@@ -3217,7 +3167,7 @@
15.281 #(0 1 1 0 1 0 1 1 0 0 1 0 0 0 1 1 1 1 0 0 1 1 0 1 1 0 1 0 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 0 0 1 1 1 0 1 1 1 1 1 1 1 1 0 0 1 0 1 0 1 0 1 1 1 1 1 1 0 0 1 0)
15.135 #(0 1 1 0 1 0 1 1 0 0 0 0 0 0 1 1 1 1 0 0 1 1 0 1 1 0 0 0 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 0 0 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 0 1 0 1 0 1 1 1 1 1 1 0 0 1 0)
- 13.345505 #(0.000000 1.090858 1.309486 1.450291 1.718869 0.069546 1.375943 1.795942 0.682998 0.853467 0.432319 0.824073 0.192558 0.677879 0.014821 1.185810 1.250195 1.007100 0.117203 0.418069 0.259023 1.294352 1.827920 0.611763 1.137831 1.073981 0.300535 0.648248 0.981068 0.431862 0.011330 0.982028 1.116206 1.416313 -0.145706 0.469042 1.337869 1.417645 0.672206 1.449894 0.162586 -0.088696 0.146607 0.877459 1.734357 1.072329 0.538301 0.069172 0.006644 0.831713 1.780816 -0.218659 0.458184 0.102871 1.893106 0.050688 0.381743 1.688258 1.461265 1.478749 1.048546 0.876751 1.120472 0.989190 1.171226 1.677833 1.171366 1.099543 1.368856 1.469570 -0.000739 0.708112 1.415331 1.429896 0.714096 1.842992 1.223737 0.971280 0.630865 1.307747 0.072208 1.498970 0.679827 1.492071 1.323199 1.773103 1.318895 0.806759 0.034669 -0.140423 1.385757 1.306290 -0.073887 1.208508 0.179139 0.741316)
+ 13.204725 #(0.000000 1.076776 1.347926 1.525387 1.703093 0.146409 1.317966 1.859505 0.707164 0.830831 0.443644 0.827604 0.209278 0.749602 0.059328 1.266240 1.293110 1.093154 0.211555 0.428549 0.234880 1.309308 1.849895 0.556242 1.146080 1.112880 0.255098 0.697511 0.976003 0.447974 -0.060853 0.989003 0.981427 1.357143 -0.108507 0.508258 1.350016 1.370815 0.706419 1.417351 0.130302 -0.164616 0.121236 0.899029 1.704503 1.010661 0.546214 0.056403 -0.018220 0.776486 1.737256 -0.288192 0.433604 0.009935 1.911131 -0.011896 0.429002 1.681473 1.443604 1.443566 1.122321 0.851995 1.174060 1.043964 1.121883 1.576569 1.220681 1.062173 1.465088 1.469385 0.007614 0.689833 1.413660 1.426225 0.669850 1.847272 1.185576 0.967159 0.585257 1.342471 0.036719 1.434241 0.611492 1.555664 1.306827 1.708606 1.324519 0.822315 0.043925 -0.223593 1.382941 1.347398 -0.049609 1.255274 0.199951 0.735570)
)
;;; 97 prime --------------------------------------------------------------------------------
@@ -3226,7 +3176,7 @@
15.685384750366 #(0 0 0 1 0 1 0 1 0 1 1 0 1 1 1 1 1 0 0 1 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0 0 0 1 1 1 0 1 0 0 1 0 1 0 0 1 1 1 1 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 1 0 0 1 0 1 1 0 1)
15.404807595571 #(0 0 0 1 0 1 0 1 0 1 1 0 1 1 1 1 1 0 0 1 0 1 0 0 1 1 1 0 1 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 0 1 1 0 0 1 1 0 0 0 0 1 1 1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 0 1 0 1 1 0 1)
- 13.261802 #(0.000000 1.206906 0.159312 0.478694 0.329743 0.835707 0.121441 0.423657 -0.044688 0.586659 1.267814 0.481696 0.452319 0.686906 1.738830 1.228109 1.597109 0.296118 1.559886 1.442215 0.479132 0.981546 0.253075 0.163876 0.876190 0.874730 0.514806 1.537327 0.535927 1.432746 1.174694 0.721110 1.069055 -0.016332 1.616192 1.756662 1.389131 1.542158 0.311716 1.276659 1.530974 -0.209879 0.221949 0.212956 0.777893 1.111917 1.654712 1.830198 0.573996 0.436120 0.325938 0.437639 1.188839 0.437996 0.062039 -0.061862 -0.100424 1.196076 1.414091 0.836658 1.878841 0.664219 1.730532 1.244610 0.641919 1.662899 0.205587 0.296745 0.921045 0.317085 0.445228 -0.083689 1.507319 0.889862 0.029373 1.538941 0.763785 0.059028 0.109378 0.268429 1.258548 -0.140437 0.418110 1.458261 -0.040019 1.265515 1.596520 0.531281 1.756964 0.865885 0.911119 -0.122142 0.285484 1.360927 0.866733 0.814905 1.016219)
+ 13.130301 #(0.000000 1.135539 0.220794 0.501697 0.344944 0.755439 0.145509 0.410232 -0.069275 0.590695 1.315603 0.498558 0.367854 0.758084 1.750221 1.169065 1.563732 0.376182 1.614424 1.432746 0.401221 0.948428 0.164632 0.245083 0.882567 0.851738 0.460102 1.561468 0.587073 1.409750 1.205538 0.791857 1.107094 -0.019229 1.649686 1.725724 1.387495 1.675489 0.316317 1.218656 1.514383 -0.251456 0.140774 0.306294 0.782155 1.061756 1.669052 1.881173 0.577275 0.454949 0.395989 0.432079 1.150703 0.455565 0.073468 -0.034277 -0.116020 1.243542 1.455278 0.818342 1.963380 0.647866 1.701929 1.360171 0.710187 1.751986 0.222756 0.275196 0.862379 0.351462 0.384630 -0.050442 1.402016 0.933288 0.004450 1.443734 0.717086 0.049513 0.145930 0.282718 1.270029 -0.172234 0.514496 1.445399 0.031963 1.327775 1.602313 0.542788 1.757408 0.829093 0.848058 -0.074176 0.289279 1.318336 0.872820 0.817913 1.039671)
)
;;; 98 prime --------------------------------------------------------------------------------
@@ -3234,14 +3184,14 @@
15.695913722267 #(0 0 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 0 1 1 0 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 1 1 1 0 1 1 0 1 0 0 1 0 1 0 0 0 1 1 0 0 1 1 1 0 1 0 0 0 0 0 1 1 1 0)
15.435913738557 #(0 0 0 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 0 1 0 1 0 1 1 0 1 1 1 0 0 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 1 0 0 0 1 1 0 0 1 1 1 0 1 0 1 0 0 0 1 1 1 0)
- 13.391446 #(0.000000 0.751670 0.298250 1.903110 1.040981 1.153591 1.506254 1.170534 0.448454 0.537868 1.355015 1.385401 0.443113 0.225731 1.633500 1.273537 1.636775 -0.042536 0.666377 0.953374 0.512737 1.362210 0.042269 1.874289 0.571465 0.655092 1.736364 0.316763 0.790647 1.674158 0.234090 1.444265 1.158593 1.104650 1.907354 1.319695 0.816730 1.461223 0.690937 1.865959 1.174817 1.437618 0.616181 1.787273 1.506570 0.662365 0.567871 0.457083 0.248348 1.331346 1.544867 1.491983 0.622375 1.354643 0.062366 0.443354 0.722905 0.784235 0.570666 0.515677 1.394282 0.381824 1.584911 0.205612 1.855374 0.803615 0.914334 1.636923 1.553964 1.130417 0.706438 0.480508 0.960364 1.074016 -0.049641 0.006562 -0.311740 1.339272 1.521727 0.468789 1.689441 1.939496 -0.002297 0.047133 1.784988 1.204739 1.401505 1.853601 1.859489 1.328032 1.672683 1.285966 1.522861 1.952772 -0.181499 0.496341 -0.170963 0.782865)
+ 13.248109 #(0.000000 0.806557 0.262881 1.867756 1.016904 1.114474 1.460983 1.144977 0.448064 0.564776 1.309806 1.407660 0.456039 0.241507 1.599983 1.315170 1.685695 -0.046356 0.667947 0.978005 0.565613 1.400774 0.028675 1.910738 0.601055 0.692619 1.788011 0.339211 0.756386 1.704737 0.206648 1.489324 1.126591 1.063848 1.933635 1.364613 0.820200 1.412620 0.711578 1.806407 1.151760 1.451559 0.613411 1.775502 1.528788 0.601964 0.555366 0.404114 0.239432 1.363959 1.526932 1.485087 0.640645 1.353945 0.021482 0.454975 0.710329 0.785540 0.581148 0.546960 1.392598 0.381629 1.529397 0.167858 1.862416 0.867406 0.913261 1.620342 1.571704 1.174026 0.693710 0.486823 0.941496 1.086163 -0.040154 -0.028709 -0.350031 1.360503 1.509944 0.465076 1.731316 1.903022 0.000146 0.055909 1.763235 1.211515 1.381084 1.828342 1.857280 1.390634 1.624002 1.283691 1.528542 1.941368 -0.211128 0.514289 -0.192757 0.769871)
)
;;; 99 prime --------------------------------------------------------------------------------
#(99 16.078 #(0 0 1 0 1 0 0 1 0 0 0 1 1 0 1 1 1 0 1 1 1 0 0 1 0 0 0 0 0 1 1 0 0 1 1 0 0 0 1 0 0 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 0 1 0 0 0 0 0 1 1 1 1 1 0 1 1 0 1 0 0 0 1 0 1 0 1 0 1 1 1 1 1 1 0)
15.391923904419 #(0 0 1 0 1 0 0 1 0 0 0 1 1 0 1 1 1 0 1 1 1 0 0 1 0 0 0 0 0 1 1 0 0 1 1 0 0 0 1 0 0 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 0 0 1 1 1 0 0 0 0 0 1 1 1 1 1 0 1 1 0 1 0 0 0 0 1 1 0 1 0 1 1 1 1 1 1 0)
- 13.559524 #(0.000000 1.564250 0.685334 0.681633 1.780435 1.679998 0.447243 0.025030 1.126786 0.708209 1.128129 0.380348 0.662256 0.771824 0.792097 1.376088 0.631005 1.167334 1.598550 1.531094 1.089321 0.755762 1.172892 0.929120 0.792282 1.884105 -0.010355 0.896922 1.266594 1.001084 1.300292 1.533897 0.284564 -0.030807 0.778427 0.907032 0.955281 0.861158 0.841073 1.081876 -0.074203 1.518647 0.629553 0.916086 1.480331 1.420812 1.232237 0.795273 0.539494 0.162573 1.683733 0.673696 0.548661 1.072811 1.000688 0.031993 1.077904 0.487572 0.906047 0.001925 0.504186 0.424426 0.971574 0.682035 1.914289 1.942969 0.436295 -0.155769 -0.307120 0.644193 1.546217 0.152777 1.103988 0.785663 1.151119 0.092720 1.328255 1.079362 1.485449 0.933937 0.034582 0.365414 1.250290 0.370011 0.356966 1.247826 0.108583 0.662728 0.628416 -0.080657 1.157853 1.810883 0.461213 1.557917 0.816405 1.610360 0.923065 0.531555 1.217470)
+ 13.417088 #(0.000000 1.559945 0.679892 0.674962 1.756398 1.695903 0.401813 0.005080 1.029154 0.671775 1.171238 0.285684 0.630452 0.755517 0.815868 1.357683 0.610223 1.143563 1.614983 1.595505 1.069498 0.796386 1.119027 0.834828 0.740210 1.949991 0.061002 0.953336 1.230924 0.958287 1.371388 1.564298 0.261222 -0.010390 0.773606 0.940706 0.956031 0.810858 0.887419 1.164018 -0.115594 1.559292 0.579724 0.991116 1.439472 1.418994 1.216858 0.729381 0.540029 0.156547 1.728180 0.684488 0.509670 1.038439 1.050519 0.045074 1.132486 0.551763 0.844086 -0.039091 0.477565 0.399046 0.989335 0.707601 1.907892 1.929551 0.370973 -0.067772 -0.350270 0.633308 1.462355 0.124279 1.017802 0.790201 1.200371 0.099750 1.422687 1.061369 1.436887 0.911376 0.081101 0.334191 1.262800 0.349036 0.319207 1.279195 0.066768 0.784048 0.689953 -0.085822 1.130693 1.794484 0.390554 1.520836 0.796991 1.632885 0.940490 0.541288 1.233197)
)
;;; 100 prime --------------------------------------------------------------------------------
@@ -3249,7 +3199,7 @@
15.909478013087 #(0 0 1 1 1 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 0 1 1 0 0 1 1 1 1 0 0 0 0 1 1 0 1 0 1 1 0 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 0 1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0)
15.637986183167 #(0 1 0 1 0 0 0 0 1 1 0 1 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 0 1 0 1 1 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 1 0 0 1 1 0 1 1 1 0 0 1 1 0 0 1 1 0 0 0 1 1 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 0 1 1)
- 13.492454 #(0.000000 1.336766 1.325705 1.548521 1.491487 0.434217 1.492034 0.913784 1.004568 0.525529 0.179002 1.530795 1.247628 0.872580 0.317062 1.561386 0.329104 -0.145429 1.201851 0.005274 1.163888 0.514479 0.352719 0.658266 0.476763 -0.198130 0.071154 0.310268 1.460798 0.476604 0.800520 1.175199 0.039422 1.410779 1.243906 0.043027 1.388636 1.387996 1.205193 0.182537 0.223735 0.304657 0.357607 1.097223 1.568146 0.947901 -0.010573 0.866310 1.348639 0.200102 1.492128 1.657024 0.763251 0.023948 0.633877 1.026665 0.788724 1.831895 1.948755 1.283222 1.717377 1.995081 -0.195682 1.309563 1.614252 1.094657 1.713039 1.232444 0.573659 1.140875 0.136336 1.636963 0.318498 1.577670 1.341377 1.933555 1.050194 1.288192 -0.084184 0.109604 1.445639 0.638361 1.167900 0.570850 1.179775 1.557157 0.510243 0.708835 1.535354 1.832205 0.971578 0.945549 1.874156 1.662865 0.563693 0.439546 0.644353 0.189383 1.497579 1.225358)
+ 13.350323 #(0.000000 1.347291 1.335295 1.559511 1.513041 0.420091 1.446150 0.936304 0.968825 0.471476 0.229477 1.490924 1.146614 0.849935 0.272878 1.543067 0.347814 -0.183964 1.192151 -0.000406 1.244043 0.510242 0.312847 0.704933 0.429063 -0.195030 0.012066 0.364912 1.415345 0.499942 0.823523 1.178868 0.020705 1.397189 1.198130 0.051001 1.467040 1.323921 1.208960 0.128077 0.136646 0.425231 0.308165 1.120807 1.593734 1.046358 -0.090457 0.819613 1.336156 0.159520 1.565179 1.640817 0.820969 0.025706 0.585067 1.097878 0.806226 1.779178 1.936539 1.231978 1.727892 -0.025632 -0.199731 1.298209 1.651621 1.113488 1.644500 1.253673 0.566898 1.212925 0.163316 1.648533 0.338483 1.505009 1.463799 1.930395 1.037162 1.275538 -0.138791 0.123191 1.494724 0.659895 1.078520 0.561220 1.267316 1.542507 0.599513 0.706521 1.538514 1.921392 0.977027 0.964494 1.829239 1.658676 0.623196 0.410435 0.630435 0.208433 1.515059 1.199698)
)
;;; 101 prime --------------------------------------------------------------------------------
@@ -3257,21 +3207,21 @@
15.74836063385 #(0 1 1 0 1 0 0 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 1 1 1 0 0 1 1 1 1 0 0 1 0 0 0 1 0 1 1 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 0 1 1 0 1 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0)
15.735968313601 #(0 1 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 1 1 1 0 0 1 1 1 1 0 0 1 0 0 0 1 0 1 1 0 1 0 0 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 1 0 1 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 1)
- 13.534989 #(0.000000 0.678448 -0.009438 1.581722 0.939411 0.006001 0.399223 1.521602 0.339920 0.096715 0.385628 1.500099 0.406838 1.880321 1.227410 1.517311 -0.135197 1.578838 0.441594 1.087767 0.690084 1.168618 0.255495 1.305382 1.920722 0.135752 0.345891 0.761115 -0.305244 0.100272 0.037931 1.489362 0.963133 1.051219 0.570993 1.115287 1.040624 0.125067 0.546133 0.035487 1.841186 0.194544 1.473325 0.966959 0.560426 0.478111 0.159804 1.540763 1.456187 1.134619 0.458288 1.622686 0.224154 1.359519 0.003595 0.872266 0.285792 0.111641 0.596451 0.898728 0.896082 0.067981 1.275626 0.089557 0.694554 -0.037368 0.751830 -0.112474 0.960209 1.127400 1.266837 -0.052538 1.174983 0.166093 1.653326 0.838420 1.034160 1.286321 0.605352 1.474241 0.734580 0.154556 0.499682 1.277684 0.601255 0.927130 0.223620 0.329368 0.974827 0.660839 0.322954 0.339855 0.785268 0.325876 0.083531 0.213611 1.147901 1.024209 0.156745 0.456350 0.694944)
+ 13.367912 #(0.000000 0.654247 -0.091498 1.529566 0.905510 0.063118 0.360987 1.604033 0.336155 0.141129 0.328458 1.562039 0.273322 1.796364 1.134065 1.496218 -0.147314 1.491008 0.375911 1.079236 0.689347 1.311013 0.300978 1.275996 1.814558 0.081484 0.406729 0.712703 -0.356399 -0.038969 0.024023 1.429284 0.887421 1.037849 0.501236 1.174085 1.046310 0.104379 0.585085 0.083337 1.911528 0.153750 1.390828 1.121544 0.607100 0.513995 0.179122 1.607381 1.463256 1.114189 0.457923 1.704870 0.126489 1.289546 -0.023958 1.001482 0.366164 0.161977 0.543713 0.947266 0.809842 0.062521 1.247137 0.150843 0.714702 -0.062568 0.692229 -0.259662 0.911269 1.122622 1.204335 -0.089709 1.207972 0.102285 1.714895 0.827832 1.052186 1.303130 0.534419 1.551686 0.717385 0.094388 0.534082 1.213040 0.565091 0.858818 0.204472 0.410718 0.986172 0.643377 0.318661 0.346982 0.842806 0.272745 0.132947 0.372491 1.102802 0.886143 0.185439 0.509936 0.596354)
)
;;; 102 prime --------------------------------------------------------------------------------
#(102 16.342473246951 #(0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 1 1 0 0 1 1 1 0 1 0 1 0 0 0 0 1 1 0 0 0 0 1 1 0 1 1 0 0 1 1 1 0 0 1 1 1 0 1 1 0 0 1 0 1 0 0 1 1 0 0 1 1 0 0 0 1)
15.374809992584 #(0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 1 1 0 0 1 0 1 1 1 0 1 1 0 0 1 1 1 1 0 1 0 1 1 0 1 1 0 0 1 1 0 0 0 1 1 1 0 0 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0 0 1)
- 13.997197 #(0.000000 0.331968 1.240417 0.106896 0.511083 1.636382 0.331633 0.595809 0.827679 1.462464 1.654333 0.043068 1.719523 -0.170959 0.494710 1.222896 1.422995 0.176529 0.495687 1.350421 1.137466 -0.002319 1.581700 -1.753598 1.330868 1.154458 0.774255 1.693395 0.022372 1.801326 1.194907 1.433209 0.751303 1.437704 0.271023 1.100597 0.909765 0.235158 0.286811 0.765264 0.472620 0.215691 1.549696 0.835977 1.370762 1.583194 1.446593 0.514278 0.522297 0.840766 1.341124 1.475493 1.656388 1.314254 0.272559 1.718335 1.016406 1.564832 1.508600 1.108908 1.287291 1.068693 1.656825 1.130476 1.636357 0.966147 1.468124 0.123209 1.033717 0.639947 0.548834 1.729841 0.381196 1.253251 0.795852 1.425200 1.437500 0.379389 -0.058244 1.546365 -0.000115 0.503979 0.776057 0.486735 1.773446 0.536869 0.602684 0.550889 0.350644 1.372574 0.828983 1.373752 1.924868 1.385072 1.304245 0.127130 1.252120 0.271903 1.382181 0.841340 -0.164860 1.985012)
+ 13.734776 #(0.000000 0.221877 1.243121 0.124249 0.534786 1.740095 0.309831 0.472160 0.913336 1.586492 1.542612 0.127636 1.695775 -0.249305 0.474613 1.165661 1.540073 0.214973 0.496311 1.279505 1.164011 0.006533 1.566821 -1.776331 1.272407 1.234801 0.842033 1.662228 0.023604 1.862499 1.249007 1.372462 0.763687 1.466331 0.268718 1.112790 0.942525 0.201331 0.255182 0.847207 0.448221 0.205017 1.535718 0.821255 1.392787 1.591272 1.418683 0.550308 0.502008 0.891037 1.292234 1.497745 1.636601 1.314780 0.241229 1.735772 1.046111 1.516883 1.505525 1.125668 1.191540 1.024114 1.722574 1.218940 1.628030 0.993848 1.509907 0.258484 0.875189 0.582090 0.563444 1.700417 0.435370 1.333991 0.876028 1.270626 1.365904 0.451492 -0.076741 1.558101 0.002255 0.605875 0.745534 0.526966 1.785687 0.643974 0.605130 0.715142 0.306563 1.460811 0.757927 1.268627 0.072038 1.421838 1.348002 0.106015 1.197327 0.298970 1.442966 0.917147 -0.204056 -0.006923)
)
;;; 103 prime --------------------------------------------------------------------------------
#(103 16.7018587939366 #(0 0 1 0 1 1 1 0 0 1 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 0 1 1 1 1 1 0 1 1 0 1 0 1 1 1 1 0 0 0 1 0 1 0 1 1 1 0 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 1 1 1 1 1 1)
16.296298498866 #(0 0 1 0 1 1 1 0 0 1 1 1 0 1 0 1 0 1 0 0 0 0 1 1 0 1 1 0 1 1 1 1 1 0 1 1 0 1 0 1 1 1 1 0 0 0 1 0 1 0 1 1 1 0 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 1 0 1 0 0 1 1 0 1 0 0 0 0 0 0 1 1 1 1 1 1 1)
- 13.985002 #(0.000000 0.293363 0.479064 0.320681 0.712543 0.505071 1.522873 1.540552 0.654755 1.522066 0.477339 0.737885 0.289806 0.110501 0.078762 1.625785 0.758616 0.082861 1.644009 0.215964 0.949443 1.124528 -0.074595 0.576008 0.932747 0.195723 0.866558 0.135773 1.420043 1.330611 1.337957 0.590160 0.071660 1.407625 0.431487 1.141225 0.424285 0.150581 1.925813 0.568877 0.018354 1.610273 1.832417 0.565849 0.035692 1.022631 0.395732 0.829468 0.173744 0.680260 0.516942 0.555515 0.867502 1.843933 1.571029 1.249180 1.300093 1.730710 0.290994 0.026207 0.806470 -0.023663 0.593970 0.376078 1.405752 1.491228 0.308211 0.850700 1.399281 0.205309 0.953509 -0.113613 1.879803 1.572172 0.545924 1.341966 1.606595 0.523964 1.018896 0.842649 1.720977 1.410252 0.882060 0.647932 1.190267 0.777817 1.192618 0.919572 0.232098 0.402070 1.562861 1.857234 0.825230 1.644287 0.579757 1.299245 0.312112 1.219907 1.669780 1.265093 0.558117 0.349507 0.942778)
+ 13.772705 #(0.000000 0.238354 0.536558 0.324929 0.704065 0.507699 1.507532 1.517100 0.638503 1.444394 0.431866 0.840836 0.265987 0.223329 -0.020791 1.664785 0.769555 0.180190 1.719330 0.271487 0.974353 1.134294 -0.055623 0.638430 0.946376 0.202208 0.781306 0.139141 1.445604 1.331632 1.326980 0.618119 0.040494 1.345823 0.380539 1.247570 0.485588 0.077155 1.900221 0.559785 0.028733 1.556634 1.873143 0.584114 -0.004187 0.970645 0.481924 0.856825 0.182393 0.681554 0.438141 0.522591 0.830257 1.834920 1.657443 1.318948 1.258636 1.781056 0.372371 -0.068325 0.738084 -0.067199 0.666146 0.378842 1.473734 1.566571 0.336762 1.070138 1.335755 0.258751 0.922542 -0.100712 1.927664 1.600578 0.511452 1.293875 1.594452 0.415793 0.952708 0.779595 1.753124 1.503190 0.875825 0.615630 1.312943 0.645958 1.194518 1.043613 0.195353 0.359734 1.643154 1.907836 0.852858 1.602648 0.618506 1.343838 0.398837 1.157758 1.729708 1.187759 0.597997 0.494442 0.872763)
)
;;; 104 prime --------------------------------------------------------------------------------
@@ -3279,21 +3229,21 @@
16.473171464163 #(0 0 0 1 0 0 0 1 1 1 0 1 0 1 1 1 1 1 1 1 0 1 0 1 0 1 1 1 1 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 1 0 1 0 1 1 1 0 1 1 1 0 1 0 0 1 1 1 0 1 1 1 1 0 0 0 0 1 1 1 1 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 0 1 1 0 0 0 0)
15.919013023376 #(0 1 0 1 1 0 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 1 0 0 0 0 1 0 0 0 1 1 0 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 0 0 0 0 1 0 0 0 1 1 1 0 1 1 0 0 0 0 1 0 1 1 1 1 0 0 1 1 0 1 1 0 1 0 1 0 1 1 1 0 1 0 0 1 1 1 0 0 1 1 0 1 0 0 1)
- 14.188766 #(0.000000 0.161797 1.029490 -0.076001 -0.341784 1.651640 0.158109 1.284335 1.336627 1.092247 1.144171 0.222454 1.980008 1.454793 0.939469 1.362795 1.161383 1.020343 0.968761 0.300198 0.044969 1.732440 0.437181 0.263897 0.750656 0.865018 0.481688 1.236999 0.501548 0.789969 0.656471 0.123426 0.644288 1.558406 1.340237 1.355081 1.444490 1.283982 0.601609 1.323540 0.755366 0.911506 1.633681 0.679272 0.593037 1.393499 1.057071 1.241414 1.585090 0.165993 1.810443 1.758040 1.493319 0.801175 0.965168 0.797925 1.837208 0.334052 1.880361 1.345554 -0.084747 0.380705 1.241200 1.319609 1.485298 -0.112890 1.709958 1.410869 1.163777 -0.067932 1.549834 0.100829 0.743618 0.321921 0.785362 1.455231 1.815963 -0.267376 0.119934 1.359460 1.344191 0.842576 0.306766 0.635444 1.371974 1.517417 0.281044 1.362388 1.075969 1.182213 0.073513 0.317585 0.797571 0.165751 0.227409 1.218260 0.348481 0.807095 1.325516 0.819715 1.459906 0.782443 1.256397 -0.118720)
+ 13.993371 #(0.000000 0.188329 1.111048 -0.100154 -0.376245 1.597602 0.096426 1.249824 1.402639 1.204005 1.010524 0.161963 0.009312 1.478244 0.927302 1.278700 1.149346 0.997963 0.926399 0.364278 0.119416 1.764457 0.410808 0.352700 0.706182 0.878757 0.400477 1.353085 0.528155 0.702960 0.645851 0.085977 0.595468 1.661199 1.285255 1.274286 1.425240 1.377314 0.489061 1.381083 0.598625 0.946450 1.682002 0.658031 0.529033 1.453881 1.106832 1.384738 1.551505 0.133627 1.730866 1.864778 1.503836 0.895453 0.980989 0.773824 1.766372 0.356812 1.848877 1.340434 -0.030271 0.403764 1.267956 1.419167 1.472885 -0.112607 1.670565 1.413276 1.207639 -0.086673 1.620010 0.043714 0.638915 0.359545 0.675379 1.464392 1.899663 -0.356398 0.060074 1.455902 1.243469 0.880923 0.334093 0.547230 1.299365 1.565596 0.377568 1.452280 1.167613 1.196489 0.106466 0.294307 0.927989 0.194348 0.231233 1.092900 0.303840 0.700110 1.259197 0.861940 1.496196 0.790985 1.281275 -0.132162)
)
;;; 105 prime --------------------------------------------------------------------------------
#(105 17.115185731735 #(0 0 0 1 0 1 0 1 1 0 1 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 1 1 0 0 1 0 1 0 1 0 0 1 1 1 1 0 0 1 1 1 0 1 0 1 0 0 0 0 1 1 1 0 0 0 1)
16.038356734428 #(0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 1 1 1 1 1 0 0 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 1 1 1 1 1 1 0 0 0 0 1 1 0 0 1 1 1 0 0 1 1 1 0 0 0 1 1 0 1 1 1 0 1 0 0 0 1 1 1 1 1 1 0 1 0)
- 14.054542 #(0.000000 -0.028376 0.278317 0.207543 0.178090 1.454061 0.549174 0.533460 0.063012 0.855055 0.332357 1.527173 0.596025 0.541345 1.738969 1.673907 1.286769 0.107805 1.416308 0.031254 1.135293 -0.180774 1.573957 1.075325 1.278232 0.231358 1.460618 1.314410 1.260062 1.611687 1.828733 1.362576 0.090666 0.133318 0.804635 1.387339 1.299688 1.520195 0.704236 1.074834 0.484113 -0.015993 0.067526 0.369488 1.416881 1.754008 1.549369 0.307360 -0.117730 0.530630 1.169532 1.249612 -0.026551 0.835181 1.563262 -0.166893 1.459296 1.757475 0.580725 0.822850 1.939006 0.340664 0.290581 1.493560 1.078320 0.763729 -0.081436 0.166295 0.959351 0.004281 0.911336 1.448368 1.326517 -0.053194 1.168255 0.001106 1.753120 0.769650 1.445667 0.445533 0.646048 0.781956 0.955493 0.432235 1.535834 1.841966 1.136186 1.498568 1.486089 1.624344 1.337919 -0.037299 0.007288 1.052067 1.376075 0.086968 0.935470 1.863345 0.484686 1.042032 0.135907 1.805206 0.568476 1.357392 1.818867)
+ 13.733954 #(0.000000 -0.057207 0.202276 0.185274 0.126702 1.487775 0.560354 0.488858 0.081591 0.774343 0.419146 1.541621 0.626389 0.577437 1.705918 1.726068 1.196291 0.123183 1.327598 -0.045578 1.150621 -0.174194 1.592878 1.091598 1.240179 0.131065 1.475428 1.316258 1.197934 1.545057 1.801324 1.347733 0.056423 0.115307 0.847007 1.363723 1.354264 1.498486 0.645884 1.029424 0.523531 -0.033214 0.180910 0.329707 1.466191 1.722143 1.650013 0.316790 -0.161566 0.572711 1.144891 1.283886 -0.041891 0.869680 1.505028 -0.165390 1.363371 1.758632 0.561180 0.853593 1.967762 0.390348 0.298768 1.512178 1.124543 0.800175 -0.187913 0.095403 0.949442 0.124104 0.949703 1.501429 1.387851 -0.086070 1.226796 -0.059413 1.752856 0.787439 1.427513 0.416599 0.652411 0.790945 0.816452 0.432856 1.499300 1.805749 1.136543 1.428011 1.551056 1.666298 1.285181 0.042618 -0.046349 1.093249 1.456235 0.069290 0.885411 1.876144 0.497724 1.131476 0.118694 1.851809 0.657571 1.286536 1.789641)
)
;;; 106 prime --------------------------------------------------------------------------------
#(106 16.130035426315 #(0 0 0 1 1 1 1 0 0 0 1 0 1 0 1 1 1 0 0 0 1 1 0 1 0 1 1 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 1 0 0 1 1 1 1 0 1 0 0 1 0 1 1 1 1 1 1 1 0 0 1 1 1 1 0 0 1 1 0 0 1 0 0 1 0 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 1 1 1 0 1 1 0 1)
15.730461834714 #(0 1 0 1 1 1 1 0 0 0 1 0 1 0 1 1 1 0 0 0 1 1 0 1 0 1 1 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 1 0 0 1 1 1 1 0 1 0 0 1 0 1 1 1 1 1 1 1 0 0 1 1 1 1 0 0 1 1 0 0 1 0 0 1 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1)
- 14.176395 #(0.000000 1.223075 1.683955 0.871004 -0.244879 0.871949 0.087386 1.684425 0.665643 0.477819 0.576996 0.588697 1.367453 1.741924 0.434835 1.485496 1.209054 0.193342 0.881353 1.381687 0.316869 1.800142 1.228150 -0.402837 1.033963 1.487110 1.050944 0.723553 1.862378 1.261928 1.415038 1.830498 0.505200 -0.098406 0.715559 0.993184 1.281960 1.331125 0.418774 1.123254 1.143971 0.620178 1.455453 1.363183 1.326360 0.288588 0.655306 0.082267 1.000648 0.302372 1.063733 0.911236 -0.074474 0.996189 1.136898 1.176642 1.419089 0.383140 0.463246 0.068219 0.180726 1.065357 0.673686 1.650640 0.709935 0.724517 1.115009 0.908985 1.053984 0.558847 1.216202 1.024392 0.442452 0.253228 1.722782 0.726744 0.276493 1.868016 0.409173 0.370221 1.977241 -0.039930 1.256409 0.404325 1.302347 1.464475 1.074196 1.542334 0.960656 0.814527 -0.250142 0.290921 1.077167 1.668408 1.781604 1.819535 0.909250 1.200104 0.092157 0.528434 -0.072709 0.385802 1.305750 0.917858 0.806960 1.024110)
+ 14.044266 #(0.000000 1.168391 1.688412 0.804848 -0.304384 0.906747 0.058327 1.644042 0.624335 0.494527 0.615524 0.622222 1.409697 1.718821 0.350090 1.389658 1.209032 0.180248 0.931190 1.365269 0.343767 1.812733 1.237468 -0.512139 1.118740 1.498549 1.056374 0.761146 1.886816 1.170955 1.402087 1.845065 0.433271 -0.138902 0.762070 1.059789 1.337425 1.329490 0.401868 1.103406 1.162577 0.636318 1.490876 1.313403 1.297553 0.262629 0.635850 0.096304 1.031049 0.294039 1.009510 0.909412 -0.062032 1.017405 1.112563 1.191585 1.517058 0.331334 0.462812 0.001922 0.181448 1.035009 0.663188 1.733732 0.727981 0.679770 1.097288 0.999696 1.115074 0.544753 1.258146 1.004226 0.521647 0.271801 1.681253 0.778102 0.311500 1.911441 0.342980 0.381079 -0.044874 -0.067470 1.286002 0.427334 1.371015 1.419744 0.996442 1.589182 1.047697 0.858619 -0.306462 0.283883 1.146414 1.672801 1.730907 1.769098 0.878023 1.247921 0.092427 0.447693 -0.050116 0.332543 1.335542 0.821866 0.773028 1.070814)
)
;;; 107 prime --------------------------------------------------------------------------------
@@ -3302,7 +3252,7 @@
16.264743804932 #(0 0 1 1 0 0 0 0 1 0 1 0 0 0 1 1 0 1 1 1 1 0 1 0 1 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 1 0 1 0 1 0 1 0 0 1 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0 1 1 0 0 1 1 1 1 0 1 1 0 0 0 0 0 1 1 0 0 1 1 0 1 1 1 0 0 1 1 1)
16.2013 #(0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 1 1 0 1 0 1 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 1 0 1 1 1 1 0 1 1 0 1 0 1 1 1 0 1 1 0 0 1 1 1 1 0 1 1 0 0 0 0 0 1 1 0 0 1 1 0 1 1 1 0 0 1 1 1)
- 14.316096 #(0.000000 0.355269 0.515148 1.185245 0.778486 1.668497 1.078333 1.985265 1.672336 0.170210 1.562305 1.401758 1.508093 0.775204 0.113366 0.754591 0.508331 0.697073 0.473501 0.004322 1.185232 0.950921 0.599032 1.095298 1.855643 0.811527 0.242826 1.477483 0.289526 1.642811 0.374805 0.782958 0.124932 1.007014 1.201161 0.028792 1.154179 0.872615 1.289923 1.137126 0.016876 1.342426 1.471991 1.168646 1.194512 0.836370 1.468058 0.081960 1.480125 1.390543 1.480105 1.703500 0.797785 0.451592 1.540437 0.666655 0.259815 1.309898 0.585693 1.075379 0.790497 0.466796 0.306489 0.499262 1.329909 1.393577 0.506923 0.749881 0.093347 0.138278 0.659124 0.442985 1.912184 0.958728 0.258730 0.595214 0.841732 0.372734 1.065024 1.219033 0.752319 1.667692 0.067343 0.785149 0.338244 0.551989 1.698893 0.641965 1.541227 0.445116 1.750597 1.578152 1.296356 0.798482 0.333264 1.247101 1.010747 0.503445 0.183489 0.164798 0.695661 1.601175 1.220964 1.288045 0.668052 -0.014980 1.150984)
+ 14.118279 #(0.000000 0.309578 0.433032 1.201941 0.702272 1.695979 1.040730 -0.021916 1.688469 0.128463 1.509670 1.460615 1.534028 0.801508 0.194107 0.873256 0.455218 0.689835 0.385046 -0.015583 1.277196 0.930713 0.664839 1.077093 1.870296 0.768058 0.314184 1.584528 0.341102 1.634370 0.402593 0.739632 0.027738 1.006818 1.307907 -0.050412 1.142453 0.876470 1.243777 1.120053 -0.001249 1.331518 1.456581 1.097026 1.225886 0.815335 1.403207 0.120641 1.510594 1.433979 1.525469 1.766478 0.770608 0.353099 1.569449 0.752264 0.301105 1.277781 0.614478 1.051196 0.783966 0.540327 0.280075 0.560022 1.372883 1.373512 0.534535 0.770166 0.124949 0.184874 0.641705 0.429014 1.865665 0.933858 0.212224 0.623596 0.843016 0.341843 0.985754 1.179071 0.844780 1.728357 0.033317 0.842639 0.364646 0.568863 1.660410 0.621760 1.534506 0.481556 1.691609 1.550537 1.223125 0.698850 0.362714 1.164226 1.004211 0.575552 0.226514 0.097768 0.697810 1.563454 1.172327 1.297605 0.621703 -0.068260 1.166413)
)
;;; 108 prime --------------------------------------------------------------------------------
@@ -3310,7 +3260,7 @@
16.664336486859 #(0 1 1 1 0 0 1 1 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 0 0 1 0 0 1 1 1 1 0 1 0 0 1 0 0 1 0 1 1 0 1 0 0 1 1 1 1 0 0 1 1 1 1 1 1 0 0 1 1 1 0 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 1 0 0 0 0 1 0 1 1 1)
16.517358779907 #(0 1 0 0 0 0 0 1 0 1 1 1 1 1 0 1 1 1 1 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 1 0 1 1 1 1 0 0 0 1 0 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 0 1 1 0 0 0 1 0 1 1 0 1 1 0 1 0 1 0 1)
- 14.436806 #(0.000000 0.427346 0.694314 1.310418 0.216974 1.564246 -0.168378 1.476860 1.127246 1.593341 -0.003020 0.102666 1.159909 0.708538 1.805680 0.273605 1.668803 1.738700 1.221657 0.780599 0.755721 0.994810 0.596562 0.994299 1.919279 1.758813 0.287104 0.119881 1.693890 1.815118 0.573678 0.949799 0.203850 0.398517 1.225842 0.684629 0.608422 1.214349 0.102405 0.281237 0.502572 1.094914 0.899025 -0.229612 0.631473 0.195201 0.449765 1.773738 0.532391 1.758513 0.675766 1.804296 1.648486 -0.042196 1.255058 0.075971 0.708235 1.500725 0.707849 1.409797 0.791206 0.458167 0.670104 0.612476 0.453245 0.349357 1.857142 1.350450 0.096541 0.431104 0.843499 0.774005 1.853164 0.749768 0.341127 1.491565 1.704205 0.104699 0.040259 0.652919 1.085750 1.066112 0.163963 1.900753 1.501499 0.089305 0.894888 0.260990 0.291202 0.691917 1.474940 0.445666 0.504911 1.461556 1.097267 0.594300 1.149963 1.604978 0.468227 1.739976 1.447777 1.694309 0.149043 0.003882 1.623855 -0.070424 -0.359550 1.697800)
+ 14.222145 #(0.000000 0.599318 0.638584 1.288517 0.293646 1.540621 -0.178150 1.476100 1.098450 1.640201 -0.015230 0.111038 1.199095 0.664050 1.667587 0.303470 1.744176 1.682686 1.309820 0.745518 0.857420 1.060908 0.537889 0.981349 0.025491 1.766826 0.230263 0.176099 1.629897 1.807307 0.596113 0.968111 0.206805 0.433488 1.214545 0.791476 0.529768 1.272767 0.103127 0.379186 0.512906 1.130058 1.037583 -0.204777 0.670791 0.236406 0.442510 1.744854 0.583293 1.737013 0.648648 1.837082 1.658988 -0.110766 1.254309 0.018486 0.745459 1.607560 0.769936 1.465605 0.801145 0.489387 0.669714 0.599173 0.489382 0.345900 1.804959 1.312825 0.175844 0.276952 0.884274 0.761508 1.873498 0.835047 0.282611 1.452564 1.686154 0.143142 0.037846 0.673694 1.027602 1.066025 0.202472 0.000487 1.522137 0.112020 0.917102 0.279099 0.300973 0.703228 1.494839 0.481807 0.482812 1.503146 0.968238 0.538350 1.074987 1.670845 0.562804 1.840202 1.382023 1.801281 0.215956 0.003567 1.659404 -0.099932 -0.311447 1.693331)
)
;;; 109 prime --------------------------------------------------------------------------------
@@ -3319,7 +3269,7 @@
16.93954489715 #(0 0 1 0 0 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 1 0 0 1 1 0 1 0 1 1 1 0 0 1 0 0 1 0 1 0 0 0 1 0 1 0 1 0 0 1 1 1 1 1 1 0 1 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 0 1 1 1 1 0)
16.726722717285 #(0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 1 1 1 1 0 0 0 1 1 1 0 0 1 0 0 1 0 1 0 1 1 0 0 1 0 1 0 1 1 0 0 1 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 1 1 0 1 1 0 0 0 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 0 1 1 1)
- 14.530305 #(0.000000 1.308412 -0.019139 0.770975 0.728151 0.998392 0.039132 0.252066 0.889998 0.554846 0.420627 1.086372 1.471612 0.249969 1.629483 1.434053 1.500646 1.053946 1.850227 0.373771 0.191287 0.799116 0.087491 1.517272 0.631303 1.334442 -0.042354 1.631204 0.456971 0.935817 0.944885 1.664173 0.798985 0.166123 1.523845 0.913796 1.288153 0.862348 0.943506 1.182828 1.529986 1.550181 0.682959 0.560124 1.297652 -0.023496 1.509311 0.335367 0.975077 -0.006788 1.598287 0.350910 1.368571 0.803370 0.882384 0.266746 0.724732 0.698276 0.918440 1.004593 0.767669 1.554250 0.894513 1.553649 0.437004 0.759224 1.565238 0.961668 1.467049 1.156509 -0.167739 0.891298 0.215562 0.217143 1.302172 0.639331 0.512429 1.404800 0.306890 1.607104 1.125271 1.492275 0.415582 0.456907 0.298836 0.062025 -0.063297 0.839742 1.698666 0.466333 0.601780 0.317766 0.746585 0.056154 1.584686 1.832765 0.400127 0.455118 1.856078 1.488323 0.571259 0.143078 1.247275 1.272180 1.122795 0.784195 0.799505 1.186544 0.331689)
+ 14.419214 #(0.000000 1.300790 -0.006926 0.773327 0.708801 1.015725 0.035532 0.226004 0.945952 0.534916 0.402579 1.073290 1.498778 0.238919 1.619468 1.320496 1.535472 1.053367 1.812064 0.391906 0.180223 0.796572 0.139915 1.539512 0.578652 1.362616 -0.069406 1.593469 0.408819 0.979317 0.890705 1.681394 0.756783 0.210938 1.458372 0.943836 1.251372 0.867572 0.896799 1.216196 1.576241 1.567004 0.739566 0.625992 1.253050 0.032154 1.484322 0.353187 0.889775 -0.048650 1.593411 0.310678 1.308218 0.831486 0.840779 0.241462 0.716517 0.756137 0.891262 0.964786 0.804902 1.545584 0.888058 1.558892 0.454797 0.717132 1.507170 0.938320 1.473778 1.190394 -0.131379 0.932203 0.180487 0.236346 1.344305 0.601074 0.471478 1.421418 0.318443 1.634065 1.168984 1.473262 0.405938 0.455669 0.277548 0.089718 -0.105955 0.766990 1.673855 0.459974 0.539123 0.351769 0.772969 0.029607 1.566211 1.894868 0.434534 0.473609 1.869304 1.490013 0.507535 0.153474 1.266197 1.236000 1.126231 0.766448 0.762158 1.207849 0.416779)
)
;;; 110 prime --------------------------------------------------------------------------------
@@ -3327,7 +3277,7 @@
16.799713998439 #(0 1 1 0 1 1 1 1 1 0 0 0 0 0 0 1 0 1 0 0 0 1 1 1 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 0 1 0 1 0 1 0 0 1 1 0 1 1 0 1 1 0 1 0 0 0 0 0 1 0 0 1 1 1 0 1 0 1 1 1 0 0 1 1 0 1 0 1 0 1 1 0 1 0 1 1 1 0 1 0 1 1 1 1 1)
16.455888332339 #(0 1 1 0 1 1 1 1 1 0 0 1 0 0 0 0 0 1 0 0 0 1 1 1 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 1 0 0 1 1 0 1 0 1 0 1 1 0 1 0 1 1 0 0 1 0 0 1 1 1 1)
- 14.504057 #(0.000000 1.076964 0.532439 1.433119 0.097822 1.004958 0.920186 0.914453 0.244037 0.042034 1.069985 0.003512 1.867403 0.482059 1.670919 0.353879 0.214341 0.670221 0.733219 0.773018 0.204444 0.789900 1.592358 1.178050 1.710257 1.224640 -0.009942 1.316487 1.384228 0.166141 0.529007 1.045824 0.016540 1.013842 1.525652 0.480166 0.145040 1.503717 0.368557 1.739162 1.747853 0.101848 1.130741 0.391858 0.488547 1.454564 0.360193 1.947463 1.696988 0.281024 1.762067 0.721273 0.184715 0.039835 1.712427 -0.052764 1.938423 1.621469 0.681639 1.715470 0.889786 1.395826 0.677258 1.297071 -0.051036 0.385136 0.619583 1.148197 -0.142924 0.404932 1.971283 -0.073151 0.630110 1.618414 -0.102456 1.781483 1.675932 0.826977 -0.121192 1.610618 1.894430 1.486875 0.805988 0.881153 0.164650 1.572169 1.764627 1.361820 1.569871 0.456143 0.785029 -0.076920 1.593561 0.764200 0.580972 1.841694 0.329210 1.254237 -0.020682 0.527295 1.211872 -0.095917 0.168303 0.531425 0.836657 0.483877 0.510579 0.469765 1.591887 0.285991)
+ 14.426873 #(0.000000 1.039166 0.514619 1.450796 0.140005 1.064093 0.944980 0.913520 0.213750 0.095845 1.051913 -0.038085 1.842847 0.522460 1.705237 0.392511 0.249279 0.652200 0.691180 0.727147 0.221881 0.819418 1.615676 1.183390 1.720363 1.197507 -0.004953 1.333453 1.376768 0.132674 0.516867 1.048115 0.004219 1.067702 1.422479 0.459724 0.135972 1.513600 0.409821 1.783523 1.707333 0.086960 1.140839 0.367325 0.444879 1.408237 0.386379 1.926705 1.751398 0.327167 1.768948 0.640168 0.131968 0.092947 1.726434 -0.017572 1.921486 1.620687 0.713713 1.721261 0.978353 1.401084 0.686441 1.364529 -0.001337 0.407102 0.608210 1.206334 -0.152870 0.356790 -0.009919 -0.090009 0.618983 1.639555 -0.128631 1.754325 1.659546 0.826274 -0.152067 1.637028 1.908577 1.491225 0.848067 0.847922 0.199798 1.624607 1.714322 1.382941 1.553981 0.443838 0.744395 -0.070181 1.564362 0.835583 0.621513 1.817217 0.286471 1.282179 -0.003312 0.585323 1.207241 -0.055570 0.191386 0.560983 0.852781 0.471364 0.476339 0.453849 1.587045 0.346710)
)
;;; 111 prime --------------------------------------------------------------------------------
@@ -3335,14 +3285,14 @@
16.783880166046 #(0 1 0 1 0 0 0 1 1 0 0 1 0 0 1 1 0 1 0 1 1 0 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 0 1 1 0 0 0 1 1 0 0 1 0 1 1 0 1 0 0 1 1 0 1 0 1 1 1 1 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 0 1 0 1 0 1 1 1 0 1 0 1 1 0 1 1 0 0 1 1 0 0 0 1 1 0 1 0 0)
16.6662 #(0 1 0 1 0 0 0 1 1 0 0 1 0 0 1 1 0 1 0 1 1 0 0 0 1 1 1 1 1 0 1 1 1 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 1 0 1 1 0 1 0 0 1 1 0 1 0 1 1 1 1 1 1 0 1 1 0 1 0 0 0 0 1 1 1 1 1 0 0 1 0 1 0 1 1 1 0 1 0 1 1 0 1 1 0 0 1 1 0 0 0 1 1 0 1 0 0)
- 14.604999 #(0.000000 0.553985 0.580742 0.677421 -0.002109 1.296751 1.819259 1.186157 1.075045 0.606043 0.158956 0.307196 0.352568 1.159735 1.411731 1.303454 1.059279 0.059616 1.528318 1.162991 0.961459 1.642293 1.340470 0.395090 1.234959 0.046377 0.870481 0.466196 1.436342 1.399328 0.986668 1.020110 1.462257 0.937020 1.799290 0.531330 1.497087 0.666371 0.173448 1.919046 1.662952 0.815175 0.949802 1.699048 0.201937 0.830104 0.696951 1.453724 1.104586 1.975560 1.065943 -0.055410 1.750949 1.074188 0.106759 0.603203 -0.117981 0.291785 1.792895 1.540296 0.082219 0.275864 0.570792 1.670231 1.223977 1.672407 1.847758 1.770572 1.589611 1.053838 0.905620 1.399963 1.104737 1.024070 1.544295 1.108771 0.122493 0.333107 0.526067 0.044710 -0.218748 1.700894 0.793281 0.954941 0.998650 0.067782 0.278207 1.160252 1.108120 1.465892 1.293547 -0.097818 0.303123 -0.196150 1.204670 -0.216019 1.496336 0.141154 -0.029674 0.222943 1.506309 1.443347 0.585629 1.625097 0.855688 0.263756 1.490308 0.039962 -0.068217 0.460383 1.108096)
+ 14.358766 #(0.000000 0.659407 0.547971 0.601549 -0.028974 1.373525 1.798721 1.198662 0.979211 0.662947 0.136636 0.342132 0.325957 1.176519 1.386220 1.347916 0.957115 -0.052670 1.458363 1.168401 1.018063 1.690943 1.300300 0.497557 1.164762 -0.000129 0.856057 0.508065 1.494447 1.393105 0.983196 0.937358 1.434769 0.876672 1.837136 0.562990 1.433507 0.706022 0.129804 1.923902 1.693111 0.839175 0.891579 1.624837 0.186684 0.832938 0.717215 1.558207 1.159672 -0.048943 1.011181 -0.046400 1.762824 1.165196 0.135140 0.655628 -0.132993 0.282647 1.730818 1.624686 0.107364 0.340237 0.557052 1.595467 1.278033 1.713650 1.840910 1.637383 1.589750 1.070182 0.876249 1.416170 1.058428 1.101365 1.542914 1.141893 0.037098 0.314337 0.552063 0.033999 -0.197783 1.674368 0.784119 0.933804 0.958217 0.033527 0.308507 1.150017 1.084754 1.432294 1.174488 -0.130959 0.308899 -0.209192 1.123864 -0.270016 1.557410 0.064706 0.086060 0.152416 1.469301 1.455282 0.684911 1.591490 0.825123 0.306192 1.519915 0.070585 -0.139883 0.415905 1.100580)
)
;;; 112 prime --------------------------------------------------------------------------------
#(112 17.423562009124 #(0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 1 0 1 0 1 1 1 0 0 1 0 1 0 0 0 0 1 0 1 0 1 0 0 0 1 1 1 1 1 1 0 0 1 1 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 1 1 0 1 1 1)
16.697049415765 #(0 0 1 0 1 0 0 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 1 0 1 0 1 1 1 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 0 1 1 0 0 1 1 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 1 1 0 1 1 1)
- 14.739635 #(0.000000 0.909937 1.969106 1.192755 1.721223 0.654178 1.019703 1.379129 0.745208 1.751133 1.079768 0.736370 1.359439 0.719332 0.826737 1.891822 0.149135 0.756836 0.034273 0.523995 0.504482 1.290959 1.187977 1.563562 0.625770 1.556267 1.403699 -0.270330 0.798039 0.048603 1.492440 1.955099 0.034594 1.447564 1.218271 0.648095 1.535647 0.890304 0.313599 1.763508 0.264300 0.016185 1.806447 0.758618 0.400244 0.234144 1.804503 0.868348 0.578335 0.189908 0.190969 0.357870 -0.004920 0.315096 0.979206 1.844395 0.653393 1.201267 0.014442 0.088504 0.708121 1.808248 0.944620 1.256221 1.189886 0.444284 1.796772 1.356214 0.718631 1.850566 0.308099 1.304764 1.221936 1.807987 0.396573 0.874512 1.670715 1.891176 0.293839 1.439390 0.168264 0.568774 0.485375 0.890477 0.666854 0.173444 1.725316 1.184184 0.710905 1.271266 1.894740 1.552960 -0.005067 1.388980 1.077994 0.818777 -0.014968 1.244600 0.509446 0.023446 1.089448 0.757795 0.355868 0.811932 0.744072 0.931897 0.292017 0.541119 0.493106 1.135997 0.030605 0.392102)
+ 14.512239 #(0.000000 0.823904 -0.026523 1.191200 1.738972 0.777179 0.946076 1.347166 0.791446 1.746648 1.170600 0.743502 1.370829 0.626619 0.802756 1.911766 0.191174 0.743365 0.082081 0.609440 0.538666 1.301472 1.192544 1.517308 0.632716 1.434155 1.371011 -0.348053 0.705356 0.034351 1.432956 1.954948 0.002890 1.410013 1.192581 0.613872 1.618336 0.870312 0.270214 1.778357 0.277457 -0.070267 1.753390 0.765589 0.372362 0.266454 1.739881 0.812017 0.529720 0.110219 0.141460 0.351444 -0.031122 0.241114 1.021806 1.913743 0.594823 1.268346 0.094330 0.142220 0.762310 1.769818 0.865720 1.256483 1.201361 0.342471 1.874103 1.390767 0.737992 1.871024 0.285992 1.299653 1.099243 1.782183 0.406719 0.880075 1.744972 1.925984 0.299195 1.450742 0.260394 0.509957 0.596303 0.957482 0.640024 0.108720 1.711047 1.197895 0.633768 1.204059 1.926061 1.519598 0.046797 1.457380 1.114454 0.803559 -0.112607 1.230066 0.586343 0.005752 1.144948 0.815816 0.368985 0.911106 0.726444 0.904422 0.281286 0.533560 0.562610 1.062592 -0.032279 0.343720)
)
;;; 113 prime --------------------------------------------------------------------------------
@@ -3350,7 +3300,7 @@
16.7898 #(0 1 0 1 1 0 1 1 1 1 0 1 1 1 1 1 0 1 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 1 0 0 0 1 0 1 1 1 1 1 1 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 0 1 1 1 1 1 0 0 1 0 1 1 0 1 1 0 1 0 0 1 1 0 1)
16.203890830538 #(0 1 0 1 0 0 1 1 1 1 0 1 1 1 1 1 0 1 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 1 0 1 0 1 0 1 1 0 1 0 1 1 0 0 0 1 0 1 0 1 1 1 1 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 1 1 0 1 1 1 0 1 1 0 0 1 0 1 1 0 1 0 0 1 0 0 0 1 0 1)
- 14.960630 #(0.000000 0.920766 -0.294786 1.191494 1.714790 1.004174 1.445087 0.927750 1.320379 1.571764 0.721699 0.011843 0.579131 0.350877 1.135652 0.747079 1.078062 1.052174 0.246004 0.177326 0.915361 1.775100 1.404389 0.141589 0.622743 0.775288 1.632534 0.368127 0.773816 1.197695 0.442562 0.408741 -0.101648 0.902622 1.761974 1.698861 0.082131 1.363328 1.771976 0.133660 0.693814 1.270389 0.514402 1.413088 1.230919 1.537174 1.298275 0.018686 1.496287 0.459360 0.486756 1.063213 0.340987 1.337268 1.220526 -0.068364 1.245524 -0.079144 1.499481 1.528758 0.040550 -0.128440 0.066885 1.758391 1.015430 0.004824 0.192571 0.755180 -0.067039 1.101776 0.395797 0.587041 1.697725 0.731070 0.218545 0.492593 1.751445 0.336561 0.303009 -0.003343 0.961042 1.006247 1.568418 1.450403 0.223689 1.929744 0.904485 1.279204 0.561916 0.034652 0.040317 0.514619 0.203738 1.120181 0.241085 0.897805 1.265241 0.318455 1.443510 1.763822 1.681063 1.194752 1.066655 0.606853 0.544122 1.784043 1.460216 1.782162 0.686696 1.248866 1.142732 0.931262 0.076252)
+ 14.786014 #(0.000000 0.788373 -0.358172 1.128706 1.623176 1.037114 1.488254 0.899659 1.429510 1.518287 0.698778 -0.131251 0.628924 0.324429 1.157348 0.646091 1.144403 1.057406 0.233292 0.139601 0.996627 1.712925 1.329768 0.154083 0.543528 0.775271 1.674670 0.294816 0.842786 1.183472 0.462813 0.441326 -0.073156 0.931105 1.875955 1.707066 0.124343 1.399632 1.788492 0.149571 0.671145 1.230967 0.589257 1.384336 1.231158 1.501441 1.320324 0.007033 1.500650 0.482075 0.533416 1.011762 0.355345 1.285008 1.214893 0.007796 1.262646 -0.091463 1.528651 1.637271 -0.035028 -0.107942 0.074131 1.809202 1.065455 -0.035082 0.133037 0.765301 -0.022712 1.074905 0.438038 0.655216 1.706208 0.696533 0.278876 0.483443 1.798921 0.271167 0.446037 0.050000 1.106320 1.041730 1.589234 1.504740 0.264765 1.902703 0.855665 1.279842 0.558551 0.103286 -0.007444 0.513057 0.184740 1.129864 0.281098 1.037482 1.241272 0.344156 1.449324 1.817232 1.626209 1.278025 1.041896 0.690845 0.492841 1.850950 1.460211 1.831747 0.689224 1.278534 1.090858 0.968413 0.106950)
)
;;; 114 prime --------------------------------------------------------------------------------
@@ -3358,7 +3308,7 @@
16.769464540605 #(0 0 1 1 0 0 1 1 0 0 0 0 1 1 1 0 1 0 1 1 0 0 0 0 0 0 1 1 1 0 1 1 1 1 1 1 1 1 0 0 1 0 1 1 1 1 1 0 0 0 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 0 1 1 0 1 1 0 1 0 0 1 0 1 0 0 0 1 0 0 1)
16.442732865586 #(0 0 1 1 0 0 1 1 0 0 0 0 1 1 1 0 1 0 1 1 0 0 0 0 0 1 1 1 1 0 1 1 1 1 1 0 1 1 0 0 1 0 1 1 1 1 1 0 0 0 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 0 1 1 0 1 0 0 1 0 1 0 0 0 1 0 0 1)
- 15.031009 #(0.000000 0.947799 0.652941 1.148828 -0.055373 1.819231 1.245061 1.372578 1.352415 1.453647 1.910085 1.558839 0.942052 1.298992 0.255230 1.598988 0.108460 0.859275 1.900380 1.130903 1.364623 0.310259 1.769288 1.326199 1.468789 0.661313 0.257991 1.210809 -0.094776 0.601551 1.081042 1.443551 1.740528 -0.031057 1.591939 0.397295 0.428944 1.349123 1.796552 0.596756 0.931430 1.523117 0.291426 0.545005 0.443494 0.654939 1.695785 0.274126 1.736034 0.399212 0.917339 0.705700 0.324191 0.449941 1.838664 1.809130 1.858029 1.182471 1.665502 1.870757 1.833539 1.408784 1.982209 1.664951 1.322570 0.630712 -0.015447 1.558460 1.358042 0.819564 1.279811 1.332738 1.981485 0.242513 0.570142 1.140870 0.979181 0.433429 0.187923 0.371466 1.337398 -0.064827 0.024416 1.686398 1.064124 0.242041 1.213209 0.777548 0.831965 1.558622 1.379702 1.226896 1.409842 1.902974 0.190424 0.382751 0.183694 -0.132455 1.787905 0.949313 0.970551 0.552837 1.828341 1.095041 1.389149 0.918115 0.006778 0.049258 1.797050 1.250544 1.041495 0.046131 0.356199 0.345302)
+ 14.948891 #(0.000000 0.978978 0.726730 1.128308 -0.147953 1.932326 1.165075 1.257746 1.485226 1.487200 1.904894 1.564821 0.905982 1.393084 0.335668 1.582710 0.079030 0.864439 1.776450 1.115845 1.271879 0.252132 1.799846 1.372890 1.402315 0.757744 0.243702 1.292339 -0.151615 0.648808 1.088920 1.386682 1.674450 -0.071733 1.553538 0.355673 0.432627 1.309699 1.755264 0.623021 0.902501 1.501949 0.220334 0.493978 0.443102 0.641838 1.707412 0.277483 1.804339 0.372677 0.923711 0.712884 0.336069 0.493459 1.847191 1.923149 1.818283 1.185702 1.534563 1.897698 1.843882 1.473773 0.047793 1.662878 1.344406 0.646665 -0.050595 1.500280 1.356185 0.810597 1.259955 1.388231 0.001823 0.189353 0.606286 1.122536 0.942480 0.506064 0.248304 0.437235 1.278690 -0.030877 0.019077 1.653080 1.191210 0.271344 1.257047 0.913483 0.870597 1.502525 1.413387 1.204756 1.454413 1.875837 0.214780 0.352315 0.240268 -0.235823 1.773094 0.935520 1.003721 0.550964 1.815067 1.131293 1.318912 0.993374 -0.001400 0.023449 1.685309 1.309732 1.104725 0.087360 0.351955 0.408322)
)
;;; 115 prime --------------------------------------------------------------------------------
@@ -3366,14 +3316,14 @@
17.1559 #(0 0 1 0 0 0 1 1 1 1 1 0 1 0 1 0 0 1 0 0 0 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 0 1 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 1 1 0 1 0 1 0)
16.774665887963 #(0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 1 1 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 1 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1 0 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 1 1 1 0 0 1 1 0 1 1 0 1 1 1 0 1 0)
- 15.040610 #(0.000000 1.565818 0.422425 1.109335 0.391425 0.740033 0.293440 1.486201 0.514317 0.645398 0.616344 1.290762 1.523001 0.453639 0.227394 0.285255 -0.158057 0.958735 0.826595 1.392793 0.511053 1.064524 0.767175 0.026990 0.766574 0.554550 1.257073 1.473101 0.090045 1.550906 0.762895 0.359504 1.805574 -0.127957 0.559834 1.468516 0.262850 1.610335 -0.461031 0.543865 1.411139 -0.083978 1.613548 0.212194 0.548993 0.491689 1.567936 1.074432 0.020437 1.668927 1.377844 0.521357 -0.088075 0.969760 1.090458 1.352217 0.219852 1.746632 -0.128259 1.660982 1.541047 1.312495 1.228340 1.832268 0.476269 0.601496 1.290583 1.140978 -0.139548 0.090697 0.169872 1.510135 1.151234 0.420967 0.325937 1.517147 1.384837 0.976212 1.855875 0.682971 0.047759 1.532189 0.861621 1.915514 0.742809 1.382059 0.771216 1.503309 1.458104 0.334298 1.706014 0.412109 0.949492 1.974509 0.991385 0.701129 1.723612 1.412900 1.116975 0.244079 1.320592 0.247147 0.244364 1.446695 -0.203023 0.366298 1.299777 1.421656 1.502414 1.740090 1.248184 1.092692 0.134981 0.100078 0.360344)
+ 15.003644 #(0.000000 1.521334 0.324519 1.180852 0.342269 0.799302 0.349376 1.490931 0.461994 0.698235 0.579424 1.296593 1.551890 0.452325 0.217462 0.161273 -0.263563 0.956767 0.750000 1.429229 0.470176 1.026787 0.676033 0.015889 0.669290 0.514550 1.203210 1.474618 0.116623 1.599761 0.832043 0.391929 1.811585 -0.186016 0.596675 1.440842 0.238095 1.569401 -0.423337 0.600943 1.439827 -0.143576 1.625588 0.165713 0.566686 0.533658 1.562619 1.024286 0.034242 1.690241 1.281311 0.484921 -0.036568 0.925811 1.107110 1.281428 0.216351 1.800838 -0.096038 1.733824 1.486645 1.311669 1.257184 1.903842 0.557251 0.576529 1.289752 1.230487 -0.150515 0.081905 0.138898 1.491903 1.176713 0.368194 0.324368 1.579634 1.402010 1.024846 1.811072 0.737444 0.054879 1.462170 0.847652 1.907709 0.716463 1.461904 0.745498 1.491129 1.371845 0.343171 1.726105 0.464200 0.947454 -0.011851 0.982635 0.639355 1.679065 1.269789 1.067392 0.202943 1.476740 0.202140 0.215580 1.430039 -0.209059 0.429796 1.367410 1.450978 1.482926 1.700384 1.312799 1.134148 0.137432 0.038835 0.318001)
)
;;; 116 prime --------------------------------------------------------------------------------
#(116 17.885190963745 #(0 1 1 0 1 0 0 0 1 1 1 0 0 0 0 0 1 0 1 0 0 1 1 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 1 0 1 1 1 0 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 1 1 0 1 0 0 0 0 1 0 1 1 0 0 1 0 0 0 1 1 1 1 0 1 1 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 1 1 1 0 0)
16.812931137234 #(0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 1 0 1 0 0 1 1 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 1 1 1 1 0 0 0 0 1 0 1 1 0 0 1 0 0 0 1 1 1 1 0 1 1 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 1 1 1 0 0)
- 15.046180 #(0.000000 0.895841 1.145760 0.805590 1.795889 1.138991 0.195379 1.210866 0.380192 1.719446 0.089513 0.539397 0.459308 -0.030169 1.355060 1.092770 1.964118 0.570722 1.574134 0.544269 -0.238564 1.952913 0.026855 0.665733 1.666291 1.125173 1.133806 0.831608 0.927332 1.261822 0.676563 0.922660 0.097337 1.490614 1.856676 0.666780 0.365620 0.042633 0.243803 -0.210446 0.762135 1.107112 -0.107282 -0.250583 0.220814 1.058439 0.752648 0.733306 0.258686 1.059060 0.322674 0.345332 0.340335 1.792159 1.718557 0.528184 0.124692 1.162411 0.045833 0.189658 0.407423 0.297665 0.728444 0.950458 1.738233 0.215360 0.549071 0.932145 0.925716 0.456184 0.818357 1.743623 0.528210 -0.183307 0.867129 0.397922 1.876225 0.207915 1.291476 0.811634 0.222606 0.779976 1.584524 1.758541 0.938850 1.234268 1.476480 -0.021077 1.366165 1.613309 0.047668 0.555384 1.199170 1.716364 1.550600 1.467236 0.645550 0.451929 1.610937 -0.090219 0.795930 0.290973 0.504476 0.478073 1.467154 1.498834 1.006624 1.854618 0.814464 1.684282 1.006492 1.385304 1.177263 1.071316 0.260421 0.739904)
+ 15.011954 #(0.000000 0.895324 1.080605 0.871194 1.797176 1.105444 0.141707 1.190261 0.403795 1.729571 0.049956 0.504870 0.545034 -0.101924 1.313643 1.122682 1.939962 0.576047 1.591576 0.535609 -0.274074 1.950945 0.037173 0.708883 1.705509 1.183891 1.092194 0.791868 0.976740 1.179337 0.678557 0.975956 0.069461 1.494859 1.877908 0.693246 0.403791 0.047075 0.283252 -0.260045 0.791025 1.034602 -0.095147 -0.262920 0.184872 1.038335 0.794040 0.782470 0.304109 1.038061 0.305982 0.340481 0.329622 1.880763 1.696321 0.521828 0.116953 1.196068 0.071045 0.174418 0.458747 0.232042 0.699656 0.962657 1.750888 0.309965 0.563911 0.966881 0.849440 0.518210 0.854257 1.721865 0.585776 -0.186606 0.882232 0.423530 1.875517 0.218284 1.325349 0.770654 0.212122 0.808292 1.579496 1.718136 0.917651 1.247202 1.489896 0.001213 1.364685 1.555169 0.087023 0.568778 1.223376 1.743216 1.543960 1.501413 0.566670 0.473943 1.556665 -0.074547 0.874418 0.289601 0.445176 0.445437 1.538487 1.514579 0.999137 1.845443 0.806883 1.711935 1.054836 1.338621 1.240568 1.080716 0.255118 0.746953)
)
;;; 117 prime --------------------------------------------------------------------------------
@@ -3381,14 +3331,14 @@
17.710553146299 #(0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 1 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 1 0 1 0 1 0 0 1 1 1 1 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 0 1 1 1 0 1 1 0 1 0 1 1 0 1 1 0 1 1 1 1 0 0 1)
17.5997 #(0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 1 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 1 0 1 0 1 0 0 1 1 1 1 0 0 0 0 1 0 1 0 1 1 1 1 1 0 1 0 1 0 0 1 0 1 0 1 1 0 1 0 1 1 0 1 1 0 1 1 1 1 0 0 1)
- 15.334243 #(0.000000 0.236690 0.847404 0.104675 1.263776 1.054631 0.320859 1.772436 0.443764 0.577101 0.029283 0.273219 0.205260 1.625840 0.144194 1.412924 1.142695 1.586968 1.394909 1.711827 0.193988 1.277614 1.469182 0.986734 0.427001 0.634866 1.309723 0.146616 0.444270 0.398336 0.644028 0.650734 0.841863 1.567543 1.688212 1.850880 0.048420 0.756928 0.514361 0.306041 1.464814 0.648284 0.311764 1.022744 1.627007 0.537692 0.262163 0.961484 0.944245 0.490165 0.930540 1.233768 0.878233 0.048879 1.099624 1.175374 1.506700 1.659311 1.497705 0.583256 0.826942 0.459373 0.763854 0.513072 1.357512 1.918651 1.512364 0.368368 1.773199 0.127132 -1.829226 0.333319 1.957906 1.908513 0.819284 0.117092 0.439821 0.645498 1.050119 1.548877 1.242488 0.347585 -0.044702 1.695722 1.031407 1.199801 1.498740 1.350281 1.109138 0.396349 0.439851 0.009213 1.281518 1.847751 0.440878 1.123887 0.241093 1.445343 0.160187 0.076686 0.272006 1.148221 1.696646 0.674318 1.498086 0.095685 0.596988 0.012119 0.330566 1.052353 1.629061 0.171717 1.485138 -0.027805 0.635308 1.860030 0.695821)
+ 15.181137 #(0.000000 0.224326 0.902631 0.098790 1.246900 1.132017 0.263523 1.802895 0.410163 0.651502 -0.032932 0.275146 0.231115 1.705593 0.193145 1.394253 1.160095 1.556795 1.409713 1.698549 0.222818 1.224692 1.482602 1.008240 0.447499 0.668317 1.291378 0.125445 0.526746 0.411943 0.661584 0.684465 0.867579 1.542711 1.766719 1.856037 0.034681 0.769718 0.615133 0.270093 1.502362 0.658587 0.351858 1.045320 1.606480 0.503217 0.216940 0.927440 0.951638 0.551856 0.923275 1.233812 0.914086 0.052408 1.082047 1.165229 1.552389 1.657101 1.541823 0.625354 0.821943 0.556658 0.796364 0.453163 1.274677 1.905624 1.496862 0.312540 1.745685 0.090040 -1.808337 0.317480 1.953635 1.873567 0.799413 0.164165 0.439839 0.678006 1.128292 1.582973 1.243713 0.414201 -0.068000 1.713160 1.069002 1.215011 1.501450 1.332542 1.135367 0.379693 0.475116 -0.004746 1.266495 1.808843 0.473021 1.186028 0.294930 1.465918 0.162180 0.067922 0.341282 1.143951 1.647384 0.637389 1.506229 0.104698 0.601344 0.016105 0.317574 1.056534 1.595644 0.169081 1.484584 -0.018875 0.613216 1.870010 0.690378)
)
;;; 118 prime --------------------------------------------------------------------------------
#(118 17.985612869263 #(0 1 1 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 1 1 1 1 0 1 1 0 0 0 1 1 0 0 0 1 0 1 1 1 0 1 1 1 1 0 1 1 0 0 1 0 1 1 1 0 1 1 0 1 0 1 0 0 1 1 0 1 0 0 1 1 0 1 1 0 1 1 1 1 0 0 1 1 1 0 1 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0)
17.181785583496 #(0 0 0 1 0 0 1 1 1 0 0 0 1 0 0 1 0 0 0 1 0 1 1 1 1 1 0 1 1 1 0 1 0 1 0 0 0 0 1 1 0 1 1 1 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 1 1 0 1 0 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 0 0 0 1 1 1 0 1 0 1 0 1 1 0 0 0 1 1 0 0 0 0 1 0 1 1 0 0 1 0 1 0)
- 15.332298 #(0.000000 1.564976 0.706625 1.741648 -0.149936 0.701715 0.405109 1.258592 0.626953 0.772412 0.013333 0.777337 0.281025 1.142807 0.436005 0.831002 1.378276 0.310284 0.903603 1.336332 0.131163 0.314849 0.502534 1.823736 0.707259 0.537414 1.219043 0.923272 0.376832 0.088085 1.641784 0.140440 0.508255 1.102122 -0.140479 1.046143 -0.056587 1.503825 0.378714 1.746204 -0.056561 0.555247 0.623043 0.840159 -0.370784 0.155631 0.915560 1.479624 0.790235 0.944010 0.704429 1.398892 1.589633 0.828112 1.714350 1.410079 0.742484 0.118946 -0.012519 0.735032 0.868052 0.552234 0.658701 1.582970 0.652425 0.343423 0.765144 0.309109 0.058535 -0.031047 0.135787 1.365638 1.150136 1.624375 0.256577 1.121852 0.883534 0.932892 1.289243 1.043394 0.737185 1.667109 0.370972 1.728129 -0.326549 -0.060558 0.259597 1.781698 1.205915 1.791654 1.750067 1.223016 0.729565 0.270101 0.088974 0.917163 1.775412 1.391469 0.624558 1.128831 1.458375 0.236171 0.314462 0.445583 1.666142 0.810422 -0.014229 1.360489 0.316063 0.305536 0.625943 0.107634 0.053324 -0.082187 0.549816 0.813750 1.015517 0.690045)
+ 15.137914 #(0.000000 1.640867 0.780433 1.712049 -0.161474 0.670901 0.482006 1.274545 0.718991 0.776086 0.087845 0.784701 0.310767 1.284980 0.329700 0.902815 1.431718 0.280755 0.937443 1.383084 0.206523 0.249923 0.611057 1.751128 0.601768 0.540698 1.208920 0.885189 0.365543 0.076717 1.678156 0.205674 0.398901 1.038445 -0.239758 1.002600 -0.128405 1.497866 0.348459 1.742440 -0.032207 0.514131 0.594141 0.821487 -0.349981 0.127128 0.898444 1.468461 0.790779 0.963758 0.675344 1.328450 1.633111 0.779342 1.601078 1.436455 0.767272 0.104581 -0.024251 0.738506 0.767227 0.548637 0.638639 1.621830 0.703380 0.343527 0.738198 0.297744 0.016986 -0.062415 0.111411 1.380676 1.165187 1.654255 0.283420 1.215198 0.899737 1.027485 1.246882 0.985765 0.650806 1.656022 0.396593 1.725728 -0.311149 -0.065736 0.223937 1.765199 1.106971 1.715064 1.729307 1.291860 0.646123 0.220546 0.098962 0.882825 1.827312 1.379151 0.628209 1.099082 1.443062 0.296102 0.282024 0.448389 1.639202 0.802788 0.019072 1.267381 0.258817 0.201743 0.559132 0.132762 0.024619 -0.169620 0.491008 0.700473 0.984826 0.652372)
)
;;; 119 prime --------------------------------------------------------------------------------
@@ -3396,7 +3346,7 @@
17.500297546387 #(0 1 0 1 1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 0 1 0 1 0 0 1 1 0 1 1 0 0 1 1 1 1 1 1 0 1 0 0 1 1 1 0 1 1 0 1 1 0 0 0 0 1 0 0 1 1 1 0 1 1 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 1 0 0 1 0 1 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1)
17.167841346875 #(0 1 0 1 1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 0 1 0 0 0 0 1 1 1 0 1 0 0 1 0 1 1 1 1 0 1 0 0 1 1 1 1 1 0 0 1 0 0 1 0 0 0 0 0 1 1 1 0 1 1 0 1 1 1 1 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 1 0 0 1 0 1 1 1 1 1 1 0 0 0 1 1 0 1 1 0 1 1)
- 15.200763 #(0.000000 1.403030 1.038551 1.178998 0.419315 1.006907 0.398655 1.800392 0.032727 1.276408 1.442970 0.646876 0.982064 0.456115 0.277717 0.786316 1.091385 1.753538 0.690511 0.597926 1.334999 0.235564 1.233990 0.536674 0.815665 1.861877 0.700782 0.018401 0.205310 1.202266 1.460626 1.118116 0.200343 1.210778 1.118931 1.351617 0.979603 0.951359 0.056643 0.355770 0.850731 -0.104574 0.777258 0.994537 1.618040 0.351630 1.740980 1.707520 -0.182330 1.079912 0.814330 0.900720 1.193341 1.193463 1.546772 1.597080 1.339837 1.891504 1.311606 1.963558 1.128909 1.160949 1.155584 1.295753 1.670925 1.598095 0.574987 -0.063771 0.708035 0.442669 1.213482 0.804814 0.376944 0.616697 1.735440 0.860133 0.298006 1.265773 0.194318 0.114665 0.799355 0.499483 1.090944 1.676296 0.744760 1.051895 1.705036 1.826825 0.307485 0.519971 1.068400 1.523270 0.420494 0.023310 1.398998 0.953941 1.138089 0.998729 -0.077995 -0.023402 0.400740 1.387998 0.952154 0.643290 0.529771 1.765576 0.749386 0.082383 1.469921 1.680636 0.495736 0.001675 1.958505 -0.001206 0.058493 1.464387 0.907611 1.879753 0.695268)
+ 15.006433 #(0.000000 1.475939 1.123284 1.217534 0.457017 1.038768 0.337429 1.846941 0.008807 1.248583 1.522239 0.765931 1.002081 0.409814 0.253950 0.835367 1.015371 1.751106 0.710231 0.568312 1.319752 0.141815 1.196235 0.639907 0.871170 1.792801 0.730665 0.086541 0.153688 1.247847 1.485341 1.064472 0.186015 1.167339 1.197413 1.395887 0.951346 1.026541 0.092748 0.402047 0.746467 -0.119835 0.755914 0.966587 1.626902 0.355745 1.706765 1.706105 -0.178878 1.107956 0.887626 0.882426 1.114356 1.183371 1.594317 1.563553 1.403894 1.879219 1.301287 1.955893 1.139745 1.117362 1.196405 1.315510 1.707315 1.602587 0.536065 -0.132992 0.701073 0.364695 1.249668 0.735326 0.319717 0.649877 1.765869 0.879341 0.301771 1.268152 0.190542 0.115418 0.747571 0.410138 1.055035 1.737366 0.769813 1.098021 1.675956 1.868067 0.272785 0.575001 1.076302 1.488183 0.429886 -0.065214 1.371255 0.984994 1.160495 1.078925 -0.143781 -0.056876 0.389900 1.389681 0.922026 0.621552 0.601439 1.811232 0.755350 0.015226 1.412040 1.726424 0.560160 -0.017879 1.926528 0.068931 -0.026802 1.450687 0.873770 1.851103 0.659471)
)
;;; 120 prime --------------------------------------------------------------------------------
@@ -3404,21 +3354,21 @@
17.540792728815 #(0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1 0 0 1 1 1 1 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 1 0 0 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 0 1 1 0 1 0 0 1 0 0 1 1 1 1 1 0 0 0 1 1 0 0 0 1 0 0 0 0 1 1 0 0 0 1 1 0 1 1 0 1 0 1 1 0)
17.067 #(0 1 0 1 1 1 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 0 1 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1 0 1 0 1 1 1 0 1 1 0 1 1 0 0 0 0 1 1 1 1 0 0 1 0 1 1 0 1 0 1 1 0 0 1 1 1 1 1 1 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 1 1 0 1 0 0 1 0)
- 15.213421 #(0.000000 1.314559 0.732293 1.307239 0.155531 0.044885 1.263973 0.898346 0.958738 1.107330 0.425811 1.013039 0.922107 0.026335 1.194870 0.911926 0.784909 1.674301 0.063684 0.184452 1.204783 0.348685 0.275112 0.642470 1.053355 0.050920 1.204464 1.832009 1.720005 0.898568 0.897963 1.064863 1.094834 0.854192 0.417209 0.141788 0.074273 1.692463 0.269101 1.516321 0.791541 0.931206 0.553470 0.792768 1.014107 -0.095318 0.334090 0.118374 0.502777 1.274133 1.613080 0.975200 0.468208 0.768421 1.373550 1.473550 1.759566 0.469947 0.477070 1.454974 0.029746 1.445624 0.146273 1.421119 0.577283 0.600573 0.263902 0.197946 1.196691 1.556686 1.377622 0.258109 0.459574 0.488426 1.695740 1.176879 1.327890 1.450407 1.806957 0.973492 -0.207464 0.547740 1.889250 1.444960 0.269158 0.527387 0.108530 0.613708 1.025004 1.482618 1.151411 1.087091 -0.005598 1.143775 0.249113 0.323303 0.747369 0.109888 0.053680 -0.014006 0.716355 1.389602 0.294634 1.310701 0.512244 1.044683 0.564194 1.632673 1.023295 0.957353 0.678118 1.122256 0.520165 0.065596 0.857245 0.696565 0.929646 0.601819 1.580211 -0.042221)
+ 15.084399 #(0.000000 1.349066 0.768199 1.282160 0.151448 0.057492 1.275033 0.868343 0.970863 1.165031 0.355439 1.047473 0.890245 0.004268 1.207689 0.906997 0.687406 1.716710 0.063995 0.164498 1.218806 0.370186 0.229937 0.684438 1.049243 -0.069305 1.225417 1.870263 1.727722 0.855450 0.901835 1.105697 1.095301 0.884888 0.368718 0.133367 0.065377 1.691901 0.288391 1.479203 0.805942 0.969171 0.544722 0.802658 0.975270 -0.116149 0.337768 0.140628 0.517871 1.283843 1.640142 0.916929 0.472678 0.841827 1.346003 1.443199 1.799617 0.548457 0.511672 1.414072 0.024533 1.448374 0.136517 1.461599 0.582979 0.547236 0.244988 0.299588 1.233362 1.599276 1.389252 0.319888 0.484755 0.446634 1.717476 1.218275 1.383662 1.404694 1.752398 0.954416 -0.160690 0.558077 1.913004 1.511770 0.243355 0.515690 0.169042 0.632460 1.004272 1.508841 1.170444 1.093613 0.018730 1.165413 0.222669 0.317562 0.762711 0.058141 0.050477 -0.086056 0.651531 1.417697 0.366672 1.342366 0.536916 1.080350 0.574676 1.636129 0.980795 0.982020 0.669241 1.081458 0.552138 0.096992 0.809534 0.701964 0.940725 0.630392 1.556548 -0.027099)
)
;;; 121 prime --------------------------------------------------------------------------------
#(121 18.236074758398 #(0 0 1 0 1 0 0 1 1 1 0 1 1 0 1 0 0 1 1 1 0 0 1 0 0 0 0 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 1 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0 0 0 0 1 1 1 0 1 0 1 0 0 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0)
17.782977183017 #(0 0 1 0 1 0 0 1 1 1 0 1 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 1 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 0 1 1 1 0 1 1 1 1 0 0 0 0 1 1 1 0 1 0 1 0 0 1 1 0 1 0 0 0 0 0 1 1 0 0 0 1 0 1 0 1 0 0)
- 15.522193 #(0.000000 -0.111012 1.727386 -0.107647 0.226279 1.554581 1.794430 -0.324385 0.149500 0.327752 1.269488 1.719362 1.233763 0.205171 0.425979 0.073535 0.427248 0.160428 1.058272 -0.180298 0.566833 1.303417 1.161405 0.708931 0.440755 0.250949 1.734301 -0.126555 0.017204 0.028891 1.047260 1.279041 0.256120 1.226206 1.062504 0.743756 1.404581 0.546717 0.498309 0.481070 0.623434 1.246960 0.355466 0.868450 0.332589 0.108125 1.702200 1.053426 -0.053016 1.633934 0.195505 1.440328 1.173101 1.289570 0.017516 0.600907 1.495839 -0.093612 1.181111 0.694716 1.447633 0.948617 0.732667 1.675326 1.291016 1.577697 0.479939 0.462102 -0.384668 0.554855 1.138131 1.200369 -0.000614 0.958188 0.941668 -0.035736 1.935911 1.517502 0.699850 -0.035476 1.521498 0.386877 -0.132270 1.549025 0.726477 1.746899 0.162926 0.507753 1.588154 1.433582 0.509294 1.286919 0.179989 0.367887 0.018058 1.359419 1.927234 1.222146 1.802394 0.645259 0.910127 0.970153 0.929904 0.810997 1.286035 1.177734 -0.191769 0.389465 0.608836 0.655027 1.683570 1.040704 0.412741 0.979200 1.675001 -0.064636 1.007344 0.384975 0.058561 1.014698 0.253403)
+ 15.321142 #(0.000000 -0.117048 1.681886 -0.034157 0.225788 1.515039 1.746260 -0.361587 0.271444 0.364637 1.216716 1.740918 1.255047 0.161901 0.377525 0.067654 0.444454 0.089529 1.116581 -0.164087 0.549881 1.296717 1.130027 0.737692 0.420493 0.306057 1.703841 -0.241283 0.014144 -0.042929 1.083474 1.331645 0.456784 1.153886 1.139634 0.719368 1.311440 0.673175 0.572299 0.493146 0.535932 1.267344 0.428965 0.843055 0.236023 0.100384 1.628865 1.069575 -0.114976 1.655901 0.230393 1.406226 1.167086 1.340029 0.023328 0.567314 1.545825 -0.091466 1.100500 0.665367 1.393909 0.955962 0.747700 1.613044 1.414513 1.616236 0.486696 0.472358 -0.362768 0.661889 1.099914 1.260910 -0.062308 0.950824 0.967612 -0.070390 1.832823 1.539255 0.625869 -0.025886 1.441267 0.421970 -0.042297 1.418393 0.743352 1.713872 0.175422 0.393203 1.628652 1.428473 0.482139 1.261226 0.223537 0.335134 -0.033516 1.237988 0.035917 1.133045 1.691934 0.649236 0.849955 0.948864 0.799503 0.773480 1.344895 1.167544 -0.106063 0.368291 0.541651 0.639455 1.666884 1.052653 0.331419 0.987203 1.661517 -0.033688 1.087222 0.390595 0.051978 1.036687 0.290769)
)
;;; 122 prime --------------------------------------------------------------------------------
#(122 18.225525517344 #(0 1 1 1 0 0 1 0 1 0 1 1 0 0 1 1 0 1 1 1 0 1 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 0 1 0 0 1 1 1 1 1 0 0 0 1 0 0 0 1 0 1 0 0 0 1 1 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 1 1 1 0 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 0 1)
17.876078447724 #(0 1 1 1 0 0 1 0 1 0 1 1 0 0 1 1 0 1 1 1 0 1 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 0 1 0 0 0 1 0 1 0 0 0 1 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 1 1 1 0 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 0 1)
- 15.371435 #(0.000000 0.704558 1.822453 1.488242 1.736597 0.854677 0.622329 1.792195 1.821745 1.705273 0.940024 0.408071 -0.234902 1.204630 1.802883 0.157120 0.048383 1.537795 0.863443 0.945807 1.120520 1.236271 0.323512 0.558196 1.478182 0.397501 -0.063254 0.342710 0.392038 1.935174 1.219540 0.195287 1.913634 1.738588 0.300054 0.518245 -0.200808 1.336063 1.711477 0.930327 1.035016 1.058925 1.807196 1.565421 -0.026076 0.788774 0.314861 0.794714 1.602114 1.493637 0.844252 0.063074 0.863403 1.168033 0.082020 0.323590 1.892007 0.916312 0.065422 0.391133 -0.050820 0.668559 0.537671 1.639728 1.264024 1.360706 0.780594 1.127459 0.311494 1.748806 1.152739 0.066708 1.341789 1.554515 0.322509 0.088397 1.646200 1.605053 1.427509 0.419724 1.389911 0.732047 0.794717 1.268881 1.673636 0.411339 1.026537 0.257809 1.053739 0.074206 1.282932 1.605471 0.650638 -0.046570 1.494307 -0.133339 0.044199 0.749761 0.265363 0.272951 1.632520 -0.174238 0.774683 0.241375 1.049440 -0.000488 0.295408 0.140140 1.570839 1.453436 1.886691 1.450639 0.289919 1.834883 0.978967 0.899131 1.419254 -0.001853 1.550458 0.017399 1.032548 1.956643)
+ 15.251945 #(0.000000 0.688640 1.859461 1.521603 1.751725 0.890215 0.607749 1.822219 1.759114 1.753233 1.002949 0.424696 -0.242252 1.240468 1.841921 0.141445 0.029510 1.651913 0.939693 0.925739 1.181659 1.209588 0.383831 0.594499 1.431393 0.421305 -0.116674 0.309796 0.492167 1.817431 1.265813 0.166139 1.896007 1.705249 0.288531 0.559129 -0.320142 1.305505 1.737860 1.044038 1.006098 1.054456 1.813879 1.611474 -0.094076 0.853754 0.317075 0.744886 1.601425 1.482001 0.813213 0.049856 0.964439 1.240553 0.093776 0.228662 -0.016452 0.919376 0.110556 0.386383 -0.041016 0.734648 0.585427 1.723694 1.208069 1.392730 0.806464 1.111013 0.332968 1.764866 1.112561 0.100228 1.309941 1.508438 0.273999 0.017261 1.680330 1.626417 1.469436 0.418360 1.364687 0.766702 0.799923 1.314216 1.632121 0.435944 1.004142 0.236168 1.051523 0.106850 1.298839 1.511274 0.609419 -0.126038 1.435764 -0.093554 0.065428 0.789329 0.264103 0.323049 1.624746 -0.145949 0.735821 0.317636 0.975902 -0.066972 0.328774 0.094732 1.533190 1.437178 1.857223 1.371419 0.337989 1.841120 1.001122 0.884530 1.438326 0.044550 1.523065 0.000571 1.159134 1.898655)
)
;;; 123 prime --------------------------------------------------------------------------------
@@ -3426,35 +3376,35 @@
17.389867782593 #(0 0 0 0 0 0 1 0 1 1 1 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 0 1 0 0 1 0 1 1 0 1 0 1 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 0 0 1 0 0 1 0 1 1 1 0 1 0 1 0 0 1 0 0)
17.273 #(0 0 0 0 0 0 1 0 1 1 1 0 0 0 1 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 0 1 0 0 1 0 1 1 0 1 0 1 1 0 1 0 0 1 1 0 0 0 1 1 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 1 1 1 0 1 0 1 0 0 0 1 0 0 1 0 1 1 1 0 1 0 1 0 0 1 0 0)
- 15.456415 #(0.000000 0.134912 0.565084 1.010706 0.938653 0.446106 0.163275 0.279217 1.791575 0.321671 1.890603 0.370950 -0.033714 1.393832 0.805109 1.632116 1.495001 0.999303 0.516180 0.673517 -0.276553 1.832767 1.534476 0.196308 -0.059874 0.909434 1.310612 1.559927 0.184786 1.481460 1.807540 0.643365 0.619312 0.916299 1.602291 1.695906 0.232056 0.654043 0.871451 0.741166 -0.163426 0.769210 1.178816 0.261192 0.102707 -0.000254 1.233256 0.972641 1.521607 1.116485 1.695821 1.712334 1.409650 1.164089 0.181490 0.358597 1.160690 0.997839 0.781818 1.102122 1.454388 0.770977 0.518980 0.225408 1.472182 0.493722 0.740220 1.419296 1.115260 0.548638 0.717549 0.264091 -0.093385 1.009149 -0.042320 1.107978 0.608201 1.521945 0.199247 0.384332 0.509898 0.485635 -0.102461 0.834924 1.322230 1.661026 1.500235 0.518608 -0.400513 0.929171 0.353429 -0.140425 0.635286 -0.085861 0.574279 0.941154 0.590753 0.977291 0.680677 -0.010470 0.096917 0.941375 0.431649 0.616001 1.146850 0.504432 1.345740 0.901826 0.754394 0.386590 1.083042 1.649027 0.470046 0.985269 1.532480 1.490325 1.806650 0.802218 0.000956 1.697313 1.426473 0.078768 0.511617)
+ 15.220702 #(0.000000 0.076094 0.614190 1.001322 0.947202 0.431033 0.148046 0.299184 1.811943 0.347146 1.879843 0.387433 -0.025914 1.489931 0.836928 1.645797 1.536374 0.958547 0.479540 0.659108 -0.232723 1.843698 1.592907 0.169237 -0.092707 0.970875 1.319865 1.606724 0.267371 1.550300 1.775031 0.525360 0.688239 0.983173 1.473141 1.781249 0.276902 0.663709 0.902158 0.780325 -0.138588 0.750443 1.188222 0.310526 0.132130 0.041814 1.183662 0.955834 1.458813 1.162684 1.689943 1.801563 1.439708 1.245899 0.268778 0.340879 1.023210 1.053583 0.729792 1.114146 1.510925 0.742922 0.525444 0.185928 1.404096 0.462257 0.747687 1.536339 1.105558 0.520130 0.720767 0.248423 -0.130095 1.004970 -0.021858 1.079084 0.565894 1.445069 0.204753 0.421702 0.525875 0.449502 -0.166936 0.900054 1.353947 1.713061 1.406081 0.471150 -0.370299 0.937904 0.323081 -0.138824 0.619482 -0.060088 0.635970 0.908129 0.528311 0.971996 0.700009 -0.047913 0.059198 0.855309 0.415952 0.633834 1.064882 0.445029 1.350947 0.880060 0.821460 0.366689 1.088147 1.574185 0.510625 0.976690 1.549354 1.536031 1.798626 0.761267 -0.040229 1.704702 1.463949 0.078192 0.531566)
)
;;; 124 prime --------------------------------------------------------------------------------
#(124 18.115 #(0 0 0 1 0 0 1 1 0 1 0 1 0 0 0 0 0 1 1 1 1 1 1 0 1 0 0 1 1 1 0 1 1 0 1 1 1 0 1 1 0 1 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 1 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 1 0 1 0 1 0 1 0 0 1 1 0 0 1)
17.868420183527 #(0 0 0 1 0 0 1 1 0 1 0 1 0 0 0 0 0 1 1 1 1 1 1 0 1 0 0 1 1 1 0 1 1 0 1 1 1 0 0 1 0 1 1 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 1 1 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 1 1 0 0 0 1 0 0 0 0 1 1 1 1 0 1 0 0 0 1 0 0 1 1 0 0 1)
- 15.702986 #(0.000000 1.217963 1.118954 1.147164 1.256984 1.938859 1.232322 1.309127 0.484735 0.179970 0.482941 1.240703 0.288318 0.792349 1.323155 1.568599 0.667291 0.055750 1.678403 0.782870 1.390150 0.894867 0.445336 0.025411 1.692521 0.794649 -0.087734 0.605104 -0.090348 1.144654 1.656430 0.658041 1.160969 0.686859 0.787092 1.384130 0.077662 1.243413 0.003029 0.262945 0.801935 1.002087 0.917262 1.486976 0.861289 1.130664 0.620002 0.647309 1.190836 0.173662 1.115670 0.910696 1.620467 1.207339 0.203239 0.120781 1.158106 0.688989 1.420133 -0.021360 1.383349 1.329228 0.961084 1.051937 0.010981 1.616495 0.621065 0.356829 1.595323 0.507941 0.576111 1.289622 1.484691 0.186610 0.596578 0.756062 0.914787 0.519517 0.488597 0.185762 0.737119 1.432969 0.452793 1.477732 1.686826 1.148199 0.607123 1.295447 0.250293 1.690907 1.782530 1.364370 1.723348 1.870606 0.916527 1.688220 0.074526 1.899415 1.063655 1.078385 0.738940 1.352135 1.230547 0.207009 1.354390 0.050383 1.570823 0.857219 0.909123 0.301025 1.006735 1.537197 1.724884 1.876902 1.946849 -0.076219 0.158944 0.678579 1.951252 1.150327 1.138993 1.672321 1.089392 1.262495)
+ 15.540921 #(0.000000 1.217773 1.124594 1.153631 1.262846 1.993591 1.184626 1.358434 0.506087 0.216991 0.529496 1.200283 0.285355 0.801126 1.298075 1.542069 0.646501 0.038164 1.645607 0.795462 1.378977 0.941180 0.445058 0.047249 1.753933 0.778261 -0.067500 0.592220 -0.101055 1.187480 1.637649 0.647380 1.153670 0.670503 0.766928 1.387808 0.057550 1.277009 0.031053 0.264915 0.814008 0.989294 0.944746 1.469497 0.842415 1.131808 0.672533 0.642800 1.142184 0.188330 1.170782 0.879007 1.621705 1.246337 0.174457 0.157587 1.156982 0.675892 1.403630 -0.006232 1.358645 1.312198 0.998303 1.074335 0.009008 1.684835 0.584239 0.379817 1.568883 0.492375 0.521023 1.307598 1.545926 0.162352 0.610210 0.734211 0.936702 0.557030 0.483607 0.178244 0.743423 1.420115 0.451861 1.474427 1.638420 1.166919 0.604636 1.296789 0.264186 1.719628 1.753371 1.346833 1.754733 1.858438 0.958943 1.740664 0.098106 1.941090 1.008534 1.062671 0.704715 1.366384 1.255431 0.184956 1.315287 0.027644 1.576164 0.830199 0.899068 0.333823 0.973688 1.547930 1.728147 1.868548 1.949766 -0.107378 0.109816 0.702031 1.959791 1.102839 1.182144 1.688203 1.098812 1.284315)
)
;;; 125 prime --------------------------------------------------------------------------------
#(125 18.072 #(0 1 0 0 1 0 0 1 1 1 0 0 1 1 0 0 0 1 0 0 1 1 0 0 1 1 1 1 0 1 1 0 0 0 0 1 1 0 0 0 1 1 1 1 0 0 0 0 1 0 1 1 1 1 0 0 1 0 0 0 1 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 1 1 1 1 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1)
17.637776156888 #(0 1 1 0 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0 1 1 0 0 1 1 1 1 0 1 1 0 0 0 0 1 1 0 0 0 1 1 1 1 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 1 1 1 0 1 0 0 0 0 1 0 0 0 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 1 1 1)
- 15.657075 #(0.000000 1.646828 0.747345 0.759615 1.698524 0.669941 0.665620 1.870565 -0.211146 -0.131396 1.118925 0.213232 0.476988 0.642478 0.161912 1.138197 0.600446 0.511110 1.042298 1.234775 0.481716 1.336163 1.183770 0.995227 1.227661 1.160969 0.164221 0.115325 -0.343652 1.133629 0.144621 0.470806 1.008716 -0.216943 0.732645 0.125241 0.146610 1.896303 0.033593 0.324377 0.816079 0.773269 0.253780 -0.089886 1.578622 1.200701 0.784212 0.899497 0.851594 1.822506 0.851861 0.930713 1.296482 0.299969 1.443130 0.375292 1.242588 0.135533 1.933220 1.181156 0.631922 0.658556 0.019579 0.629111 0.313589 0.215096 0.460803 -0.025420 1.183652 1.467016 0.336461 0.239737 1.320827 1.192663 1.255116 1.342611 0.589708 0.576500 -0.059281 0.059411 1.517055 -0.004921 1.549519 0.645162 1.001050 1.618628 0.822688 1.885331 0.710706 0.866488 0.723990 -0.042449 1.205934 1.504721 0.005138 0.553670 0.654703 0.764209 0.121718 0.640877 0.454757 1.004155 0.329950 0.041990 1.240534 0.969025 0.253693 -0.048745 0.184427 1.743149 0.807717 1.400722 1.342905 -0.026356 0.174685 1.021705 0.694361 1.753708 1.158418 0.327273 -0.282382 1.302428 1.465594 0.379317 1.919338)
+ 15.362448 #(0.000000 1.654918 0.720556 0.684643 1.709943 0.652844 0.631424 1.917287 -0.233197 -0.112682 0.988906 0.271155 0.511579 0.658025 0.112073 1.046208 0.660085 0.486493 1.025100 1.192677 0.530423 1.353432 1.197801 1.063185 1.235353 1.180145 0.165405 0.042759 -0.417545 1.119972 0.133205 0.479940 1.037093 -0.225334 0.705207 0.100943 0.209029 1.868183 0.062819 0.351250 0.853666 0.709486 0.176903 -0.114001 1.578748 1.248181 0.747113 0.764470 0.840062 1.803154 0.936251 0.907981 1.269213 0.370148 1.462391 0.405455 1.206449 0.074874 1.939105 1.123635 0.652890 0.679214 0.069371 0.623402 0.295628 0.301653 0.503425 -0.066810 1.152252 1.416505 0.242059 0.091715 1.327333 1.290367 1.310794 1.271543 0.574527 0.649270 0.039244 0.034992 1.451171 -0.029592 1.619078 0.626239 0.963385 1.668878 0.741597 1.867663 0.682986 0.827351 0.704187 -0.040316 1.143270 1.494232 -0.028913 0.540397 0.601378 0.760909 0.172475 0.705596 0.388340 1.046330 0.369936 0.055605 1.208938 0.958396 0.278936 -0.121301 0.200190 1.791690 0.677243 1.418077 1.353727 -0.014837 0.196793 0.935015 0.703204 1.733907 1.184366 0.209569 -0.226600 1.285465 1.457423 0.390204 1.939354)
)
;;; 126 prime --------------------------------------------------------------------------------
#(126 19.269804000854 #(0 0 0 1 0 1 0 1 0 1 1 0 0 0 1 1 0 1 0 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 0 0 1 0 0 1 1 1 0 0 0 0 1 1 0 0 0 1 0 1 1 0 0 1 1 1 0 1 1 1 1 0 1 1 0 0 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1 1 0 1 1 0 1 0 1 0 1 1 1 1 0 0 0 0 1 0 1 1 0 1 1 1 1)
18.284595039843 #(0 0 0 0 1 1 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 1 1 0 1 1 0 0 1 0 0 0 1 0 1 1 1 1 1 0 0 1 1 0 1 0 1 1 1 1 1 1 0 0 1 0 1 0 0 0 0 1 1 0 1 1 0 0 1 0 0 1 1 0 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 1 0 0 1 0 1 1 1 0 1)
- 15.688874 #(0.000000 1.456979 0.584379 0.808358 1.634207 0.236301 0.912754 1.347716 1.580576 1.377610 -0.104224 1.249276 0.051708 1.345713 -0.112049 1.396090 0.723840 0.028924 0.492064 0.379413 0.846538 1.364464 0.203937 -0.390306 -0.070846 1.603775 1.724623 1.846210 0.550139 1.254278 -0.000469 1.606517 1.008398 1.440689 1.583391 0.266917 0.918452 0.644665 1.198725 1.739843 0.831016 1.482899 1.403284 1.585252 0.605670 1.144283 1.302979 0.587010 1.168596 1.728842 0.279932 1.007406 0.668418 0.125810 1.409946 0.201026 0.337153 0.616418 0.534042 0.847306 1.194505 0.258235 0.667984 0.798849 0.904816 0.206896 0.161034 1.184513 1.290409 0.662415 0.451395 1.587239 0.891942 0.498295 1.187475 0.870006 1.507026 0.819097 -0.192422 0.137282 0.661395 1.557492 1.325603 1.409989 0.260046 0.280531 1.372952 1.045050 0.896302 1.467329 1.052309 -0.346519 0.600337 1.611705 1.189880 1.557484 0.469901 0.482631 0.098329 0.470851 0.459449 1.239144 0.961035 1.107225 0.167522 -0.013103 1.392884 0.111758 0.953649 -0.025678 1.457466 0.984954 1.665633 0.863082 0.899430 1.872616 1.110060 -0.038743 -0.087060 1.348794 0.544276 0.278306 1.381008 0.556552 0.752897 0.396164)
+ 15.562902 #(0.000000 1.452951 0.562465 0.794665 1.694170 0.193763 0.924874 1.311239 1.539899 1.322103 -0.135353 1.250313 0.060445 1.306277 -0.079719 1.417374 0.729008 0.008732 0.456884 0.387456 0.836960 1.334906 0.200048 -0.386814 -0.079738 1.612578 1.750339 1.857476 0.551361 1.296512 -0.027290 1.559904 1.019028 1.425303 1.589059 0.198061 0.874416 0.674661 1.210120 1.770154 0.783155 1.433354 1.465431 1.635362 0.652646 1.167792 1.306958 0.625902 1.167803 1.690507 0.288367 1.010229 0.652818 0.142488 1.471464 0.198130 0.348923 0.608272 0.493248 0.859356 1.203010 0.234862 0.691428 0.860691 0.890453 0.184244 0.152823 1.183134 1.290893 0.675100 0.444450 1.603422 0.846537 0.500300 1.193480 0.890163 1.532053 0.836537 -0.166349 0.160545 0.681157 1.575188 1.318708 1.405662 0.316608 0.277469 1.431339 1.112299 0.905450 1.489587 1.052206 -0.336952 0.606503 1.638235 1.178275 1.597753 0.491919 0.485414 0.084265 0.512602 0.464877 1.279072 0.982788 1.055584 0.208709 0.025151 1.470946 0.082988 1.009360 -0.052361 1.433644 1.032805 1.766485 0.882102 0.873660 1.898155 1.077755 -0.081368 -0.018353 1.377518 0.544384 0.224842 1.400411 0.567529 0.816930 0.428663)
)
;;; 127 prime --------------------------------------------------------------------------------
#(127 19.129140790802 #(0 0 0 1 0 0 0 1 1 0 0 0 1 0 1 1 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 1 1 0 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 0 1 0 1 1 1 1 0 1 0 1 0 1 1 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 0 1 0 0 0 0 1 1 0 1 0 1 1 0 0 0 1 1 1 1 1)
18.198689419357 #(0 0 0 1 0 0 1 0 1 0 0 0 1 0 1 1 1 0 0 1 0 1 1 0 1 0 1 0 0 0 0 1 0 1 1 0 1 1 1 1 0 1 0 0 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 0 1 0 1 1 1 1 0 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 1 1 0 0 1 0 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 0 1 0 0 0 0 1 1 0 1 0 1 1 0 0 0 1 1 1 1 1)
- 15.632376 #(0.000000 -0.103211 0.233873 0.643867 0.648848 1.634141 1.825668 1.177414 1.804873 0.123618 0.689321 1.297184 -0.242862 0.473471 0.947671 0.671392 1.813933 0.995363 0.058361 0.841128 1.035689 0.264521 1.100575 0.860001 0.964604 0.382619 0.802709 1.172288 0.757404 1.331116 0.054473 1.269440 0.812369 1.765772 0.466853 0.904599 1.695087 0.806409 1.401379 -0.168864 1.169722 1.820000 0.643650 0.214570 1.811707 0.842598 1.776398 0.357605 0.281486 1.307349 1.222698 1.275729 1.209843 0.813032 1.343627 1.900262 0.734230 0.892033 0.361957 0.908313 0.537221 0.002257 1.029292 0.963181 0.352799 1.777425 0.162475 0.084647 -0.353238 1.902258 0.558800 1.693418 -0.033445 0.943081 0.735734 1.115260 1.546175 1.528861 0.578531 0.579890 0.933859 0.195644 1.159709 0.262165 1.056787 1.312353 1.243871 0.654596 0.339944 1.612839 0.837093 0.068418 1.213050 1.264764 1.286868 0.940504 0.303056 0.679330 1.245689 0.865540 0.210855 0.141260 0.884212 0.057875 1.457222 0.654911 0.285245 1.696167 1.889644 0.876984 0.891608 0.590446 1.567641 1.313589 0.884082 1.806842 0.852334 0.255212 0.407921 0.131776 0.120191 0.417137 0.990226 0.870278 0.796354 1.351527 0.858312)
+ 15.423949 #(0.000000 -0.068229 0.267688 0.575691 0.591258 1.632677 1.777805 1.169958 1.800941 0.107565 0.683242 1.259603 -0.242478 0.425680 0.876706 0.630510 1.865862 0.998362 0.105690 0.807726 1.059385 0.326149 1.101475 0.799923 1.002494 0.413507 0.742211 1.154543 0.714087 1.406898 0.078656 1.268647 0.812276 1.772963 0.408524 0.931640 1.674739 0.805382 1.364353 -0.215538 1.194779 1.798259 0.668526 0.267624 1.757023 0.795779 1.752988 0.407965 0.318453 1.335940 1.262505 1.369480 1.171166 0.782644 1.277960 1.848536 0.788292 0.858543 0.355767 0.991551 0.550350 -0.029673 1.021708 0.992889 0.247588 1.787875 0.216754 0.080255 -0.436436 1.884775 0.639373 1.733017 -0.089457 0.951211 0.762325 1.151384 1.564490 1.546516 0.576219 0.650196 0.972414 0.160430 1.194341 0.264746 1.112508 1.269578 1.198527 0.717220 0.301604 1.627012 0.908117 0.090997 1.251716 1.282557 1.387603 0.963555 0.314566 0.698657 1.243513 0.899135 0.170171 0.112056 0.849981 0.167081 1.467325 0.653224 0.241637 1.719437 1.908013 0.877879 0.941773 0.587039 1.567096 1.213344 0.942158 1.737165 0.840726 0.245156 0.412159 0.203869 0.101863 0.423622 0.965750 0.885603 0.781999 1.336122 0.823527)
)
;;; 128 prime --------------------------------------------------------------------------------
@@ -3462,7 +3412,7 @@
18.306106723228 #(0 0 1 0 1 0 0 0 0 1 0 0 0 1 1 0 1 1 1 1 0 1 1 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 1 1 0 1 1 1 0 1 1 1 0 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 1 0 0 1 0 1 1 1 1 0 1 1 1 0 0 1 0 0 0 0 1 1 1 1 1 1 0 1 0 1 1 0 1 0 0 1)
18.276384353638 #(0 0 1 0 1 0 0 0 0 1 0 0 0 1 1 0 1 1 1 1 0 1 1 1 0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 1 1 0 1 1 1 0 1 1 1 0 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 1 0 0 1 0 1 1 1 1 0 1 1 1 0 0 1 0 0 0 0 1 1 1 1 1 1 0 1 0 1 1 0 1 0 0 1)
- 15.946890 #(0.000000 0.954588 1.457593 1.238520 1.827393 0.184260 1.805461 0.653115 -0.029053 0.184076 1.407257 0.853584 1.431196 -0.047334 0.780814 1.081882 0.933277 1.557126 0.911001 0.721616 1.701098 0.358276 0.856010 1.835392 0.912660 0.897151 1.450998 1.577305 1.291696 1.637461 1.735765 -0.248261 -0.028212 0.109461 0.100816 0.336024 0.185013 1.319937 0.665757 -0.029990 0.566071 1.887662 0.486272 1.766863 0.204762 1.846677 1.437011 0.599535 0.069795 -0.137826 0.402036 1.770590 0.622721 1.220392 -0.143404 1.003774 0.432237 1.529872 1.909492 0.638440 1.360022 1.354323 1.019856 1.348690 1.640353 0.223290 0.421937 1.191368 0.565614 0.143407 0.665061 1.643674 1.660522 1.136786 1.892449 1.347682 1.071066 1.066226 1.684518 -0.093828 0.919709 1.326152 1.884430 1.784368 1.318969 1.483867 0.710101 0.840046 0.026662 -0.023587 0.807055 0.688676 0.728432 1.937933 1.777788 1.332414 0.687375 0.513754 -0.034663 1.140940 0.945292 0.629212 0.477285 1.695727 1.742701 0.904986 1.732955 1.335651 0.374888 1.260794 0.744898 0.648619 0.525410 0.928185 0.756340 1.601692 1.211082 0.343185 1.672759 0.795451 0.810605 0.528776 1.659482 1.187516 0.112192 0.500980 1.203748 0.764760)
+ 15.686779 #(0.000000 0.979651 1.537016 1.181726 1.862616 0.174626 1.819718 0.733293 -0.095941 0.216225 1.363778 0.865687 1.435754 -0.075491 0.899025 1.109137 0.947837 1.495148 0.926234 0.701109 1.735827 0.370019 0.878408 1.821532 0.885518 0.909199 1.488364 1.581318 1.336424 1.673582 1.850812 -0.257866 -0.016581 0.020435 0.093834 0.331827 0.174171 1.391198 0.544307 -0.016343 0.657815 1.833354 0.425262 1.761253 0.309422 1.931132 1.532811 0.633160 0.202740 -0.131869 0.348352 1.764851 0.643102 1.210746 -0.178354 1.034409 0.335541 1.550093 1.915689 0.635516 1.332592 1.325235 0.989694 1.308152 1.599277 0.251584 0.416791 1.069196 0.547375 0.148300 0.666663 1.686635 1.786636 1.153302 1.952982 1.374036 1.081645 1.042714 1.633467 -0.229743 0.917544 1.284479 1.900045 1.717268 1.283712 1.441808 0.618335 0.849974 -0.019614 -0.074100 0.861441 0.684155 0.626783 1.989703 1.817180 1.284678 0.683762 0.410896 -0.067566 1.147659 0.994150 0.590098 0.447205 1.697644 1.765019 0.891012 1.840350 1.385415 0.409455 1.214262 0.770241 0.687793 0.528441 0.897142 0.794231 1.512882 1.201444 0.356692 1.650858 0.804883 0.729351 0.568769 1.642450 1.152032 0.092117 0.519293 1.182557 0.774254)
)
;;; 256 prime --------------------------------------------------------------------------------
@@ -3696,7 +3646,7 @@
5.5380347270104 #(0 0 1 1 0 1 0 0 1 1 1 1 1 1 0 1 1 1 0 0)
5.5266017913818 #(0 0 1 1 1 0 0 0 1 0 1 1 0 1 1 1 1 1 1 0)
- 4.842571 #(0.000000 0.880549 0.093261 0.007086 1.282487 0.252791 1.396182 1.682849 0.562144 1.011358 0.966237 1.632099 0.631560 0.249225 0.238235 0.313735 0.987007 0.740116 0.713176 0.455712)
+ 4.842022 #(0.000000 0.880438 0.094011 0.012555 1.290672 0.260211 1.398268 1.692418 0.569025 1.027076 0.978605 1.653166 0.657977 0.257879 0.266409 0.337783 1.006325 0.778445 0.733318 0.482322)
)
;;; 21 even --------------------------------------------------------------------------------
@@ -3704,7 +3654,7 @@
5.6852540969849 #(0 1 1 1 0 0 1 1 1 0 1 1 0 0 1 0 1 1 1 1 1)
5.6849967470046 #(0 0 0 0 1 1 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0)
- 4.923800 #(0.000000 -0.023256 1.366566 1.482142 -0.156755 1.914351 0.289104 0.179957 0.037376 0.891634 1.259962 0.073873 0.412982 1.753742 1.513207 1.342434 -0.023035 1.214939 0.697760 1.246509 0.509985)
+ 4.922699 #(0.000000 -0.020598 1.372173 1.492361 -0.144105 1.929499 0.309237 0.204322 0.060591 0.921874 1.291623 0.107719 0.449883 1.796212 1.557990 1.389575 0.027282 1.270341 0.755873 1.306777 0.572787)
)
;;; 22 even --------------------------------------------------------------------------------
@@ -3712,7 +3662,7 @@
5.9259635937391 #(0 0 1 1 0 1 0 1 0 1 1 1 1 1 1 0 0 1 1 1 0 0)
5.8572781078687 #(0 1 0 0 1 1 0 1 0 1 0 0 1 1 1 0 0 0 0 0 0 0)
- 5.058255 #(0.000000 -1.549051 1.847501 0.906297 0.965556 0.687834 1.404677 0.149027 1.248016 1.036516 1.268429 1.572010 -1.843144 1.444900 -0.028855 -0.043367 1.247749 1.170861 0.950165 1.368581 1.331052 0.558054)
+ 5.057765 #(0.000000 -1.549096 1.844119 0.904838 0.957902 0.684066 1.396884 0.141430 1.239137 1.024342 1.257995 1.557552 -1.856374 1.427669 -0.047958 -0.059989 1.227439 1.148829 0.927725 1.346260 1.305311 0.530017)
)
;;; 23 even --------------------------------------------------------------------------------
@@ -3720,7 +3670,7 @@
5.9548940658569 #(0 0 1 1 1 0 0 1 0 0 0 1 1 1 1 0 1 1 1 1 1 0 1)
5.9208135892745 #(0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 1 1 1 0 0 0 0)
- 5.153740 #(0.000000 0.504008 0.624846 0.373109 -0.193750 1.126822 0.633118 0.905715 1.394047 0.902076 0.690039 0.978333 0.661385 -0.149027 0.368277 1.439946 1.696627 0.450371 0.212237 0.628625 0.313347 1.172970 1.528664)
+ 5.150476 #(0.000000 0.494055 0.622046 0.393576 -0.208997 1.148525 0.645226 0.901268 1.414219 0.896916 0.694732 0.958951 0.631768 -0.159969 0.379238 1.409568 1.676228 0.448366 0.177242 0.590175 0.304410 1.136939 1.504600)
)
;;; 24 even --------------------------------------------------------------------------------
@@ -3729,7 +3679,7 @@
6.0318420391191 #(0 0 1 1 0 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1)
6.0318420391191 #(0 1 0 0 1 1 1 0 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 0)
- 5.255926 #(0.000000 0.043364 0.638005 -0.210920 0.263667 1.223019 0.906437 0.207263 1.481013 1.351866 0.853988 0.394320 0.591540 0.585192 0.055261 1.038217 1.644422 1.610904 0.019437 0.227622 1.386640 0.020746 -0.072767 0.143730)
+ 5.255682 #(0.000000 0.045474 0.639735 -0.206951 0.266882 1.229094 0.912231 0.212812 1.489192 1.359872 0.864819 0.404719 0.603383 0.597438 0.068739 1.051236 1.659277 1.626118 0.036193 0.246242 1.406697 0.040503 -0.053562 0.164493)
)
;;; 25 even --------------------------------------------------------------------------------
@@ -3738,7 +3688,7 @@
6.152729668872 #(0 1 0 1 0 1 1 1 1 0 0 0 1 1 1 0 1 1 0 0 1 0 0 0 0)
6.1513186981755 #(0 0 1 0 1 0 0 0 0 1 1 1 0 0 0 1 0 0 1 1 0 1 1 1 1)
- 5.411185 #(0.000000 -0.035568 1.858427 1.357271 1.331599 0.340806 0.359119 0.036329 0.213424 1.171000 1.764964 0.263870 1.056206 0.892434 0.695717 0.209657 0.751348 0.739708 0.388431 1.494998 0.477197 1.766681 0.252991 0.208721 0.667077)
+ 5.410572 #(0.000000 -0.036511 1.865082 1.366973 1.335652 0.343170 0.364185 0.050489 0.231027 1.182611 1.766570 0.279845 1.073465 0.910359 0.713920 0.228840 0.756520 0.764387 0.412887 1.514013 0.493499 1.782948 0.284103 0.239200 0.696694)
)
;;; 26 even --------------------------------------------------------------------------------
@@ -3747,7 +3697,7 @@
6.2921685546228 #(0 1 0 1 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 0 1 1 0 0 1 1)
6.2921685546205 #(0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 1 1 0 0)
- 5.455707 #(0.000000 0.052208 0.203003 1.808390 0.409599 -0.018326 0.114971 0.407064 0.826103 0.625506 0.640791 0.068375 0.847341 0.576196 -0.124426 -0.088747 1.704911 0.550223 0.987489 1.264365 0.636398 1.787103 1.308118 1.816667 0.669836 0.995076)
+ 5.455566 #(0.000000 0.049333 0.203864 1.807172 0.408349 -0.018558 0.116122 0.405900 0.824767 0.622806 0.639469 0.065203 0.841104 0.569276 -0.129447 -0.091832 1.700407 0.543854 0.985350 1.257693 0.628432 1.780486 1.304288 1.811636 0.659471 0.986816)
)
;;; 27 even --------------------------------------------------------------------------------
@@ -3755,7 +3705,7 @@
6.243681443715 #(0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 1)
6.2436904245852 #(0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 1)
- 5.624584 #(0.000000 -0.017817 0.526879 0.364865 0.866793 1.334860 -0.200385 1.690217 0.035362 1.786454 0.585638 1.628026 0.366780 1.119343 1.400945 1.247528 1.125803 0.864270 0.910852 0.175659 -0.291969 1.264524 1.096369 -0.258599 1.590296 0.986015 1.628162)
+ 5.624115 #(0.000000 -0.021475 0.518858 0.370205 0.863124 1.334309 -0.208998 1.686477 0.032046 1.773516 0.572388 1.617851 0.355158 1.094361 1.391516 1.237455 1.112496 0.851174 0.890006 0.158948 -0.311912 1.250039 1.079939 -0.273837 1.564160 0.964775 1.599071)
)
;;; 28 even --------------------------------------------------------------------------------
@@ -3763,7 +3713,7 @@
6.6145820617676 #(0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 1 0 0 1 0 0 0)
6.5361909866333 #(0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 1 1 1 1 1 1)
- 5.738742 #(0.000000 1.442687 1.395902 0.780584 1.317664 1.474024 1.537417 1.783108 1.004515 0.681395 0.614397 1.264550 1.396668 0.186085 0.820548 1.288434 0.569442 1.806548 -0.111544 1.369667 -0.176515 1.775956 0.168291 1.318489 0.803799 0.250782 0.827892 0.134420)
+ 5.735312 #(0.000000 1.446564 1.395795 0.794943 1.296122 1.464047 1.535520 1.775478 1.012087 0.704121 0.624490 1.243648 1.360898 0.181612 0.804675 1.270828 0.567656 1.780076 -0.124407 1.351868 -0.223622 1.763371 0.154008 1.296854 0.775406 0.203491 0.802273 0.102755)
)
;;; 29 even --------------------------------------------------------------------------------
@@ -3771,7 +3721,7 @@
6.7148699760437 #(0 1 0 1 0 1 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 0)
6.6767044067383 #(0 1 0 0 0 1 0 1 0 1 1 1 0 0 1 0 0 1 0 1 1 1 1 0 0 1 1 1 1)
- 5.778562 #(0.000000 1.749774 1.822302 1.124043 0.697353 0.643064 0.519761 -0.011685 0.196477 1.400082 1.462158 1.066944 1.766958 1.641540 0.366872 0.793426 0.336010 1.069128 0.946249 0.942617 0.429145 0.883003 0.970587 0.173330 0.940528 0.655024 1.269713 1.537909 0.417222)
+ 5.770226 #(0.000000 1.752583 1.827320 1.103585 0.682546 0.650877 0.531929 0.078102 0.175544 1.355580 1.450164 1.046064 1.724627 1.604828 0.350175 0.848881 0.374945 1.131460 1.003712 0.972516 0.411587 0.914857 1.010043 0.192283 0.966189 0.663343 1.289531 1.532023 0.429197)
)
;;; 30 even --------------------------------------------------------------------------------
@@ -3780,7 +3730,7 @@
6.799307346344 #(0 0 1 0 1 0 0 0 1 1 0 1 1 1 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0)
6.6998701095581 #(0 0 0 1 0 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1 1 0 1 1 1 0 1 1 1 0)
- 5.913370 #(0.000000 0.907526 1.365134 1.272202 -0.176723 0.098342 0.327647 0.133788 0.406258 0.945189 1.421649 0.560966 0.654935 1.259525 0.053033 -0.063152 1.922454 1.754371 1.442339 1.946703 1.620783 1.112471 0.416502 1.626493 1.724759 1.082659 0.105099 0.774454 -0.021169 1.879626)
+ 5.910618 #(0.000000 0.908807 1.373286 1.277087 -0.177124 0.095893 0.332228 0.128921 0.398841 0.946104 1.403293 0.557346 0.656008 1.276507 0.062453 -0.049983 1.902438 1.755902 1.437139 1.947315 1.608205 1.117016 0.415452 1.614229 1.733504 1.087788 0.099823 0.781893 -0.003344 1.852877)
)
;;; 31 even --------------------------------------------------------------------------------
@@ -3790,7 +3740,7 @@
6.8986349105835 #(0 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 1 1 0 1 1 0 0 0 1 0 0 0 0 0)
6.8660564422607 #(0 1 0 0 1 1 0 1 1 1 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 1 1 1 0 0 0)
- 5.995750 #(0.000000 1.299827 1.371632 1.148822 1.130549 1.016196 1.461990 1.314310 1.549314 1.145719 1.407974 0.293237 0.080313 -0.101052 1.610723 0.367475 1.259670 0.753110 0.078224 1.348747 0.924481 0.013098 0.330730 1.787896 0.343251 0.677594 1.314373 1.515885 1.307705 0.276631 0.788157)
+ 5.992815 #(0.000000 1.293783 1.379022 1.143829 1.135741 1.019892 1.459032 1.314965 1.555035 1.132522 1.418570 0.292060 0.082445 -0.115027 1.603457 0.372302 1.253507 0.740645 0.072731 1.350178 0.905866 -0.000657 0.321101 1.780225 0.345608 0.664883 1.304660 1.497643 1.294693 0.259015 0.782220)
)
;;; 32 even --------------------------------------------------------------------------------
@@ -3810,7 +3760,7 @@
7.0670447349548 #(0 1 0 0 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0)
6.978609085083 #(0 0 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 1 0 1 1 0)
- 6.168911 #(0.000000 -0.097741 -0.407771 1.392920 -0.303370 0.375781 0.332859 0.374362 0.132517 0.156631 1.355201 0.225262 0.254473 0.234830 1.421506 1.673529 1.231847 1.665758 1.653262 0.464718 0.682388 0.915641 0.338903 1.866735 1.310044 0.589551 1.376267 1.790296 0.394823 0.751801 0.147493 0.871344 0.063155)
+ 6.167745 #(0.000000 -0.096128 -0.403532 1.394302 -0.306153 0.366725 0.336897 0.377486 0.129520 0.155758 1.349437 0.237012 0.252758 0.242534 1.430701 1.663672 1.235952 1.670554 1.653037 0.461736 0.694770 0.916622 0.353714 1.885227 1.308226 0.583336 1.382051 1.789584 0.399779 0.760162 0.153822 0.882572 0.072583)
)
;;; 34 even --------------------------------------------------------------------------------
@@ -3823,7 +3773,7 @@
7.2649097442627 #(0 0 0 0 1 0 1 1 0 0 1 0 1 1 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0)
7.2615523338318 #(0 1 0 0 1 0 1 1 0 1 0 1 1 1 0 0 0 1 0 1 1 1 0 0 1 1 1 1 1 1 1 1 0 0)
- 6.238098 #(0.000000 -0.019636 0.078086 0.529042 0.836843 0.616746 0.741939 1.932313 0.005547 0.132207 0.318512 1.390356 -0.024766 0.921404 1.218958 0.406496 0.578878 -0.037625 1.836698 0.329514 0.204339 0.689013 0.396841 -0.157711 0.905184 0.636849 1.231716 1.537595 1.169073 0.227933 1.154919 1.642061 1.117729 0.535562)
+ 6.235343 #(0.000000 -0.018140 0.077494 0.538238 0.842802 0.613454 0.734542 1.946931 -0.004809 0.125718 0.330824 1.398311 0.001654 0.926185 1.220802 0.408620 0.579810 -0.015051 1.833689 0.348282 0.235466 0.707029 0.415530 -0.166524 0.922384 0.666891 1.253986 1.552238 1.199834 0.237016 1.162694 1.649622 1.133161 0.524927)
)
;;; 35 even --------------------------------------------------------------------------------
@@ -3836,7 +3786,7 @@
7.3109955787659 #(0 1 1 1 0 0 1 0 1 0 0 1 1 1 1 1 0 1 0 0 1 1 1 1 1 1 0 1 1 1 0 1 0 0 0)
7.2921919822693 #(0 0 0 0 0 1 0 1 1 1 0 0 0 1 0 0 1 1 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0)
- 6.416568 #(0.000000 0.085659 1.619768 0.238982 0.227326 1.086995 0.240812 0.892392 1.484933 1.488536 0.746611 1.668646 0.030176 1.245665 0.227435 1.285962 0.765518 0.718309 1.739042 1.136498 1.425135 1.040631 0.642599 1.640093 1.404114 -0.599091 1.401938 1.514166 1.430128 0.642677 0.676403 0.945900 -0.153088 -0.068367 0.560371)
+ 6.411952 #(0.000000 0.097810 1.617353 0.241502 0.228375 1.089252 0.255980 0.903796 1.499963 1.500795 0.743232 1.680083 0.030319 1.269842 0.236862 1.303089 0.791997 0.732614 1.763204 1.145714 1.446501 1.063484 0.665361 1.668105 1.441494 -0.566861 1.429760 1.543149 1.473950 0.676327 0.711366 0.980740 -0.136938 -0.037668 0.604086)
)
;;; 36 even --------------------------------------------------------------------------------
@@ -3849,7 +3799,7 @@
7.4214091300964 #(0 0 1 0 1 0 1 0 0 0 1 1 0 1 1 1 1 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0)
7.3326554298401 #(0 0 1 0 1 0 1 1 0 0 1 1 1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 0 0 0 0 0)
- 6.451281 #(0.000000 -0.018766 0.082559 1.404787 0.881457 1.457539 0.141995 1.654556 1.499002 1.480234 0.955209 1.300789 1.251300 1.399115 0.159933 1.046407 0.662792 1.411916 1.097396 0.108773 0.317465 1.800926 1.471168 0.837404 1.692852 1.028472 1.220143 0.163792 -0.146079 0.157976 -0.023332 0.360135 0.690494 1.598106 0.559681 0.844604)
+ 6.438683 #(0.000000 -0.000663 0.085342 1.390935 0.895289 1.456985 0.134438 1.652149 1.521340 1.471428 0.949099 1.323850 1.241929 1.393876 0.149843 1.065492 0.650713 1.425468 1.092598 0.098877 0.330326 1.799877 1.465528 0.855939 1.695544 1.033459 1.247555 0.178985 -0.136282 0.151040 -0.011660 0.393820 0.724683 1.607890 0.580472 0.842110)
)
;;; 37 even --------------------------------------------------------------------------------
@@ -3862,7 +3812,7 @@
7.5687103271484 #(0 0 1 0 1 0 1 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0)
7.4919209480286 #(0 1 1 0 0 1 1 1 0 0 0 1 0 0 1 0 1 1 0 1 0 0 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0)
- 6.597524 #(0.000000 0.033738 1.045985 0.690747 0.181270 0.832549 0.812581 0.173796 1.854602 0.658847 0.267455 0.243636 0.223201 1.574607 -0.039641 0.214327 1.779147 -0.292766 0.558643 0.968341 0.828732 0.077223 -0.025289 0.238884 1.364528 1.082043 0.216176 0.570927 0.678917 1.027048 0.757603 1.097579 1.629349 0.731384 1.734843 0.397509 1.510150)
+ 6.593893 #(0.000000 0.040224 1.051066 0.684624 0.166997 0.838955 0.804954 0.155389 1.851701 0.669463 0.276556 0.239327 0.204091 1.586073 -0.042185 0.195017 1.742025 -0.312364 0.548015 0.942497 0.818953 0.067878 -0.038496 0.217782 1.356894 1.054357 0.200604 0.558007 0.666773 1.010743 0.754534 1.070732 1.620642 0.652027 1.711035 0.383791 1.445963)
)
;;; 38 even --------------------------------------------------------------------------------
@@ -3873,7 +3823,7 @@
7.735631942749 #(0 0 1 0 0 1 1 1 0 0 1 1 0 0 1 1 0 1 0 0 1 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0)
7.669114112854 #(0 1 1 1 0 1 1 0 0 1 0 1 0 0 0 1 1 0 1 1 0 1 1 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0)
- 6.561288 #(0.000000 -0.000976 1.387026 1.757367 0.250044 1.787088 1.826788 1.069637 1.339978 0.287550 0.361630 1.746740 1.587486 0.364207 0.323744 -0.063300 0.218029 0.941593 1.587218 1.373534 0.688885 0.395779 1.296566 0.076631 1.912095 0.291743 0.375686 1.516704 0.612783 -0.008831 0.274918 1.796850 0.381903 1.617860 1.106376 1.293010 1.372187 1.776987)
+ 6.555810 #(0.000000 -0.005554 1.386599 1.791648 0.260854 1.756765 1.787041 1.062452 1.292266 0.285662 0.321288 1.752740 1.565826 0.400663 0.312901 -0.080602 0.218816 0.960867 1.602373 1.381556 0.676262 0.385129 1.313441 0.102214 1.946061 0.283203 0.410672 1.512395 0.594163 -0.004538 0.260279 1.810120 0.413743 1.580411 1.104615 1.308884 1.421250 1.764536)
)
;;; 39 even --------------------------------------------------------------------------------
@@ -3882,7 +3832,7 @@
8.0486888885498 #(0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 1 1 0 0)
8.0062685830938 #(0 0 0 1 1 0 1 0 1 0 1 1 1 0 1 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 1 1 0 0 0 0)
- 6.716381 #(0.000000 1.057587 0.349954 0.347265 1.774495 1.550753 0.263856 1.525210 0.307268 0.300723 1.707587 0.442606 0.622085 0.732636 0.331629 0.994652 0.617642 0.499044 1.700712 0.266896 -0.198699 0.339924 -0.084331 -0.131462 0.528832 1.023580 -0.051464 1.255708 0.781459 1.270541 0.052659 0.482741 0.449701 1.267150 1.271832 1.374695 1.402135 0.605724 0.618916)
+ 6.708857 #(0.000000 1.043790 0.318745 0.352801 1.749655 1.555527 0.270749 1.536451 0.324075 0.285573 1.718273 0.448299 0.626260 0.723032 0.327818 0.999297 0.625207 0.520342 1.728038 0.264186 -0.199597 0.323930 -0.102048 -0.119447 0.556376 1.039447 -0.009660 1.272605 0.812274 1.275307 0.047934 0.498914 0.470279 1.303780 1.253757 1.404482 1.406919 0.628733 0.597727)
)
;;; 40 even --------------------------------------------------------------------------------
@@ -3890,35 +3840,35 @@
8.0884717473459 #(0 1 1 0 1 1 1 0 1 1 1 1 1 1 1 0 1 0 0 1 0 0 1 1 1 1 1 1 0 1 0 0 1 1 1 0 0 0 1 1)
8.0304555793911 #(0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 1 0 1 1 0 0 0 1 0 1 1 0 0 0 1)
- 6.772687 #(0.000000 0.014812 0.020294 0.143638 1.618369 1.179862 0.764525 -0.134043 0.527002 0.584110 -0.104961 -0.082316 0.202422 0.569405 1.021527 1.760506 1.940272 1.331333 -0.029475 1.491547 1.158874 0.916801 1.609499 1.669308 1.481430 0.906042 0.136985 0.577467 1.530285 0.068565 1.390539 0.758776 -0.200621 1.327953 1.570067 1.531271 0.226732 1.512278 0.129138 0.413806)
+ 6.768945 #(0.000000 -0.000458 -0.002953 0.143751 1.626501 1.196526 0.778397 -0.136967 0.533004 0.574866 -0.074373 -0.078045 0.190651 0.592240 1.041259 1.775473 1.951470 1.323417 -0.023211 1.515545 1.165635 0.923385 1.631725 1.692272 1.488127 0.913951 0.158965 0.592009 1.537154 0.080731 1.411718 0.781793 -0.200389 1.331565 1.560216 1.538179 0.246053 1.540418 0.150773 0.451687)
)
;;; 41 even --------------------------------------------------------------------------------
#(41 8.3439186011904 #(0 0 1 0 0 0 1 1 0 1 0 0 0 1 1 1 1 1 1 0 1 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 1)
8.2169809341431 #(0 1 1 1 0 1 0 1 1 1 1 0 0 0 1 0 1 1 1 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 0 0 1 0 0 1 0)
- 6.939853 #(0.000000 0.200554 0.444773 0.089715 0.613548 -0.213042 0.344648 -0.228431 -0.079139 1.486771 1.304965 1.089330 1.057506 0.201484 0.096278 -0.241337 -0.372197 1.284787 -0.166632 0.137563 1.739187 0.664078 0.681764 1.024221 1.461950 -0.679828 1.423754 0.315779 1.578867 1.461145 0.531836 -0.227313 1.312774 0.421223 1.368443 1.837464 0.063916 0.678181 1.616675 1.503118 0.261717)
+ 6.899908 #(0.000000 0.183665 0.457827 0.033303 0.631253 -0.262471 0.363385 -0.287403 -0.107804 1.420228 1.260542 1.048251 1.043651 0.182690 0.076336 -0.230791 -0.377775 1.352751 -0.213226 0.048053 1.724634 0.646796 0.623944 1.036967 1.431424 -0.712435 1.407012 0.305267 1.512776 1.451521 0.556324 -0.246534 1.235583 0.394353 1.301844 1.793377 0.116750 0.685473 1.624096 1.440532 0.263173)
)
;;; 42 even --------------------------------------------------------------------------------
#(42 8.3791161021838 #(0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 1 0 1 1 1 1 0 0 1 0 0 0 1 0 1 0 0 1 1)
8.3605623245239 #(0 1 1 1 0 1 0 0 0 1 0 0 1 1 1 0 0 0 1 0 1 1 0 1 0 1 1 1 1 0 0 1 0 0 0 1 0 0 0 0 0 1)
- 7.041615 #(0.000000 -0.070849 1.212308 1.759213 -0.291421 1.190381 1.053106 0.526536 0.518182 1.443609 1.957340 0.365471 0.229020 -1.921092 1.877426 1.643558 1.146927 0.636929 1.687641 0.394556 0.571813 1.250798 0.442367 -0.030272 0.773636 0.519784 0.550611 0.780528 0.927851 1.148074 -0.014037 0.970209 1.668585 0.696558 0.164919 0.112799 0.197567 0.864997 0.116111 1.451780 0.221052 0.433777)
+ 7.002749 #(0.000000 -0.062045 1.223201 1.752977 -0.282378 1.183570 1.042052 0.560047 0.568202 1.436165 1.986823 0.356858 0.254391 -1.856478 1.951268 1.675305 1.157917 0.657319 1.698164 0.358307 0.589314 1.186077 0.510113 -0.025544 0.797365 0.523371 0.518219 0.736052 0.921434 1.164987 -0.038902 0.986985 1.646265 0.689506 0.172764 0.134811 0.176103 0.871762 0.143289 1.392015 0.249343 0.464946)
)
;;; 43 even --------------------------------------------------------------------------------
#(43 8.4720001220703 #(0 0 1 1 0 0 1 0 1 1 0 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 1 0 1 0 1 0 0 0 0 0 1 1 1 0)
8.3471550144283 #(0 1 0 1 0 1 0 0 0 1 1 1 1 1 1 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 1 0 0)
- 7.156661 #(0.000000 0.121894 1.712124 1.660902 1.853738 1.475066 1.583762 0.053070 0.058454 1.623951 0.188528 1.778551 1.000549 0.802369 0.289977 0.697294 0.876438 1.821580 -0.095913 1.238560 1.565864 0.336063 1.817835 1.460461 1.149969 0.629761 0.446347 0.808716 1.240126 1.620431 0.815722 1.554690 0.726476 1.651082 0.686773 0.653324 0.838259 1.023663 1.826946 0.064249 0.572180 -0.069654 0.799908)
+ 7.093235 #(0.000000 0.111255 1.679400 1.606171 1.806051 1.586474 1.449708 0.122291 0.048284 1.721336 0.173292 1.763434 0.964685 0.854771 0.338228 0.820943 0.773828 1.846803 -0.093142 1.252346 1.587685 0.305729 1.851357 1.433028 1.131454 0.565038 0.405277 0.894110 1.319078 1.618619 0.836313 1.559276 0.807049 1.787030 0.867875 0.656194 0.946465 0.971435 1.767417 0.219139 0.621515 0.095753 0.844353)
)
;;; 44 even --------------------------------------------------------------------------------
#(44 8.6881771087646 #(0 0 1 0 1 1 1 1 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 1 1 0)
8.4271850585938 #(0 0 1 0 0 1 1 0 1 0 1 0 0 0 1 0 1 0 1 1 0 0 0 1 0 0 1 1 1 0 0 0 0 1 1 0 0 0 1 1 1 1 1 1)
- 7.150468 #(0.000000 -0.022934 1.109537 1.579426 1.122200 0.722253 0.678812 1.042966 0.400337 0.241466 1.389259 0.732199 0.419583 0.178941 0.063079 0.083863 0.470412 1.867640 1.421746 0.384917 0.033438 0.705686 0.156146 0.536528 0.179801 0.592017 0.427828 1.225250 0.946197 1.770808 0.138085 1.091691 1.332418 1.399289 0.466108 1.825659 0.166205 0.937399 0.231816 0.693345 1.353761 1.467757 -0.271224 0.785760)
+ 7.120623 #(0.000000 -0.031600 1.099993 1.587600 1.119577 0.700259 0.679747 1.065611 0.400704 0.307687 1.429572 0.694076 0.468053 0.180015 0.140600 0.163541 0.505528 1.915372 1.416238 0.504059 0.059161 0.755693 0.230230 0.610389 0.201867 0.606764 0.541635 1.262218 1.000836 1.781667 0.109630 1.128108 1.327194 1.441906 0.510364 1.834206 0.104674 0.913224 0.270086 0.658886 1.431532 1.447722 -0.229492 0.856714)
)
;;; 45 even --------------------------------------------------------------------------------
@@ -3933,7 +3883,7 @@
#(46 8.9638475105267 #(0 1 1 1 0 0 0 0 1 0 1 1 1 0 0 0 0 1 0 0 1 1 1 1 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 1)
8.7939519711145 #(0 1 0 1 1 1 0 1 0 1 1 0 1 0 1 1 1 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 0 0 1 0 1 1 1 1 1 1 1 0)
- 7.361256 #(0.000000 -0.023475 1.033750 -0.139317 -0.281209 1.339080 0.131391 0.556127 0.882268 1.322188 -0.140500 1.288050 -0.035254 1.854659 0.887139 1.894247 0.160742 0.326296 0.334360 1.227595 0.634401 1.312926 0.135296 0.007365 0.662022 -0.045768 -0.243289 0.010502 0.828995 1.600678 0.315260 0.052437 -0.162600 1.246695 1.625297 1.147591 1.141931 1.090247 -0.073648 1.331804 1.003830 0.597690 -0.157208 1.923114 1.494822 1.991541)
+ 7.301666 #(0.000000 -0.078290 1.018077 -0.093872 -0.264731 1.296156 0.184257 0.556896 0.840200 1.405914 -0.196430 1.235265 -0.011783 1.871625 0.819222 1.925584 0.179544 0.269347 0.317358 1.224059 0.660701 1.307205 0.105987 -0.035839 0.640352 -0.107702 -0.376400 0.007307 0.940574 1.517230 0.285295 -0.032081 -0.235077 1.165800 1.607017 1.159136 1.173988 1.079593 -0.088633 1.272254 0.904764 0.515336 -0.112407 1.945577 1.479496 -0.023313)
)
;;; 47 even --------------------------------------------------------------------------------
@@ -3941,42 +3891,42 @@
8.8477687835693 #(0 0 0 1 1 1 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0 1 1 1 0 1 1 1 1 1 1 1 0 1 0 1 0 0 0 1 1 1 1 0 1 0 0)
8.7835607528687 #(0 0 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 1 1 0 1 0 1 1 1 0 0 1 0 0 1 0 0 0 1 1 1 1 1 1)
- 7.341522 #(0.000000 -0.046069 1.450452 1.044853 1.937836 0.582539 0.115474 0.052245 0.195493 1.142758 0.819478 0.145241 1.550156 0.461724 0.973577 1.061980 0.926049 0.370664 1.893165 1.798339 0.103778 0.790779 1.422103 1.333083 0.533651 0.703036 0.095329 0.768685 1.278881 0.914303 1.879547 1.497165 1.255421 1.813340 1.551110 -0.040633 0.944463 1.366063 1.115827 1.332311 1.451824 0.938896 1.224089 -0.126595 0.628998 0.166235 1.007212)
+ 7.308638 #(0.000000 -0.036363 1.465416 1.072079 1.932261 0.578193 0.103873 0.082541 0.176956 1.138095 0.798619 0.136615 1.531192 0.444094 0.950225 1.056050 0.898805 0.351104 1.858828 1.793505 0.071728 0.785691 1.392814 1.274372 0.502612 0.665638 0.036531 0.730420 1.230036 0.887784 1.842329 1.479271 1.209199 1.777250 1.535245 -0.100985 0.879913 1.304103 1.091120 1.270420 1.418841 0.882601 1.157236 -0.180350 0.587336 0.086652 0.936676)
)
;;; 48 even --------------------------------------------------------------------------------
#(48 9.12184715271 #(0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 1 0 0 1 0 0 1 0 1 1 1 0 1 0 0 1 1 1 0 0 0 1 0 0 1 1 1 1 1 0 0 1 1)
8.9965600967407 #(0 1 1 0 1 0 0 0 0 0 0 0 0 1 1 1 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 1 0 0 0 1 1 1 0 1 0 1 1)
- 7.492839 #(0.000000 0.048515 1.083617 1.164362 0.852169 0.429412 -0.089404 0.923183 0.725753 1.678425 0.402632 1.388887 0.351929 1.096545 1.810414 0.678636 1.411618 1.014409 1.126087 1.207937 1.393240 -0.137425 1.799547 0.255905 0.519635 0.561503 1.479263 0.457968 0.126456 0.042499 1.539286 1.179010 1.444866 1.205994 0.869089 0.103782 1.299884 1.343766 1.669780 0.841531 1.258089 1.475588 1.753296 0.804888 1.365934 0.887427 0.304254 1.410703)
+ 7.477154 #(0.000000 0.071222 1.070290 1.155110 0.848403 0.446888 -0.108590 0.922276 0.710102 1.669665 0.402707 1.405910 0.367817 1.107745 1.810488 0.694816 1.385102 1.017868 1.127425 1.206073 1.369307 -0.151064 1.776914 0.260351 0.497043 0.568549 1.488529 0.429149 0.102264 0.027520 1.545137 1.145726 1.440713 1.213955 0.833666 0.108603 1.302074 1.354239 1.647873 0.841383 1.243590 1.469841 1.755726 0.804024 1.359504 0.846152 0.300921 1.382896)
)
;;; 49 even --------------------------------------------------------------------------------
#(49 9.2634744644165 #(0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 1 0 1 0 0 1 1 1 1 0 1 1 0 1 1 1 0 0 0 1 1 0 1 1 1 1 1 1 0 0 1)
9.1650037765503 #(0 1 0 1 0 0 1 1 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 1 1 1 1 1 0 1 0 0 0)
- 7.655759 #(0.000000 0.020829 0.699319 1.137126 1.004358 1.057574 0.659301 1.516335 1.201115 0.647460 1.829625 1.562398 0.003320 0.342441 1.525381 0.401831 0.184237 1.433554 1.636099 0.830158 0.467912 1.096479 -0.288505 1.805559 0.528910 0.550753 0.852804 -0.107718 1.272906 0.022004 0.478823 1.487264 0.532384 1.037975 1.110820 1.222655 1.002281 0.923445 0.397795 0.057243 0.853334 1.297388 1.127003 0.811839 1.204950 0.692112 0.763466 1.763429 0.483694)
+ 7.624426 #(0.000000 0.072467 0.679382 1.130752 0.999663 1.090979 0.686912 1.560179 1.229435 0.619252 1.822562 1.532700 0.048516 0.291137 1.461883 0.418119 0.173456 1.409109 1.620734 0.844327 0.469234 0.997896 -0.248800 1.743523 0.505339 0.495653 0.796185 -0.094661 1.270677 0.004467 0.424261 1.458005 0.572304 0.991931 1.104343 1.246929 0.952104 0.967053 0.403006 0.065664 0.780539 1.198838 1.156874 0.840079 1.125331 0.620287 0.760493 1.741313 0.399267)
)
;;; 50 even --------------------------------------------------------------------------------
#(50 9.348 #(0 0 1 1 0 1 1 1 0 0 1 1 0 1 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 1 0 1 1 1 1 0 0 1 1 0 0 0 0 0 0 1 0 1 0) ; symmetric??
9.1582123370176 #(0 1 0 0 1 0 0 0 1 1 0 0 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 0 1 0 0 0 0 1 0 0 0 1 0 1 1 1 1 0 0 0 1)
- 7.750136 #(0.000000 -0.017887 1.227715 1.628000 -0.070761 1.076956 0.795064 0.717670 1.528181 0.205852 0.130618 1.459880 1.035491 0.789105 1.412118 -0.119194 -0.095526 0.517163 1.124794 1.320736 0.770699 0.369602 1.234501 1.342680 0.617035 0.484902 1.206891 1.583539 -0.649686 1.440007 0.508479 0.377545 0.827766 0.384837 0.689928 0.384455 1.442466 1.890074 1.166168 1.754589 1.711008 1.058124 1.631187 1.004403 -0.051742 1.363687 -0.395340 -0.256531 1.469333 0.155195)
+ 7.704594 #(0.000000 -0.008528 1.263788 1.640167 -0.124489 1.009901 0.798211 0.658257 1.519506 0.178685 0.191389 1.465722 1.047236 0.770645 1.409083 -0.131425 -0.139561 0.401654 1.089484 1.310894 0.716437 0.360577 1.233112 1.366292 0.703685 0.440351 1.142192 1.576298 -0.581973 1.392245 0.457732 0.300609 0.820858 0.312539 0.641625 0.418166 1.489511 1.825436 1.192217 1.711489 1.651152 1.038070 1.663897 0.981113 -0.099363 1.282637 -0.402315 -0.294962 1.477548 0.048177)
)
;;; 51 even --------------------------------------------------------------------------------
#(51 9.5728101730347 #(0 1 0 1 0 1 0 1 1 1 0 1 0 0 0 0 1 1 1 1 0 1 0 1 0 0 0 0 1 1 0 0 1 1 1 1 0 1 1 0 1 1 1 1 0 1 1 1 1 1 0)
9.3615226745605 #(0 0 0 1 1 1 1 0 1 0 1 1 0 1 0 0 0 1 1 0 0 1 1 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 0 1 0 0 1 1 0)
- 7.812739 #(0.000000 -0.003265 1.556112 0.699198 1.264514 0.043609 1.497327 0.334652 1.579562 1.053050 1.044807 0.920171 1.102425 -0.048851 0.884172 0.736257 1.503135 -0.022988 -0.246235 0.861337 1.051378 1.309223 0.730539 0.738903 0.348411 0.824428 0.657526 0.786886 0.311141 1.392110 1.471564 0.980503 -0.109249 0.138466 1.347294 -0.206198 1.301772 1.416524 0.322048 1.351370 0.928163 -0.074189 1.559589 1.381837 1.573335 0.326115 0.532924 0.102121 0.328192 0.869531 1.523245)
+ 7.763575 #(0.000000 -0.020051 1.600310 0.729815 1.197824 -0.045661 1.547941 0.250401 1.525450 1.073629 1.051011 0.889879 1.252075 -0.193005 0.812266 0.669802 1.569012 -0.184542 -0.272040 0.910195 1.101138 1.314540 0.756151 0.828398 0.391791 0.774787 0.753821 0.876995 0.313953 1.262017 1.518730 1.052481 -0.063394 0.271942 1.313353 -0.200816 1.386425 1.326987 0.295639 1.405812 0.888174 -0.181436 1.513816 1.372647 1.530293 0.281010 0.550940 0.169930 0.206352 0.908819 1.509008)
)
;;; 52 even --------------------------------------------------------------------------------
#(52 9.5426025390625 #(0 1 0 0 0 0 0 0 1 1 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 1 1 0 1 1 0 1 0 0 0 1 0 1 0 1 0 0 0 0)
9.449512348335 #(0 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 0 1 0 0 1 0 1 1 1 0 0 1 1 0 1 0 0 0 1 0 1 0 0 0 1 1 1 1 0 1 1 1 1 0 1 1)
- 7.917558 #(0.000000 0.014784 1.317153 1.429852 1.646030 0.263903 0.852620 0.170416 0.542904 0.584020 1.657201 1.635580 0.183238 0.504845 1.626309 0.721632 1.302583 0.616015 1.102308 0.669625 0.583301 0.624861 0.508269 1.571819 1.796395 1.812838 1.949303 -0.076565 0.715900 1.958921 0.067288 -0.015897 0.608781 1.724819 1.612279 1.652952 0.438221 0.312850 1.308517 0.992324 0.287820 1.321465 -0.005172 1.886229 1.041219 0.197151 0.524758 0.193452 0.083956 0.970058 1.189340 0.436350)
+ 7.873199 #(0.000000 0.130243 1.346989 1.392975 1.640595 0.184634 0.845074 0.096024 0.588215 0.585760 1.610165 1.606238 0.157142 0.512789 1.614131 0.781365 1.293844 0.662489 1.117062 0.701600 0.657931 0.594196 0.491069 1.659476 1.745534 1.786145 1.952172 -0.142791 0.654029 1.833364 0.057620 -0.092076 0.582567 1.742011 1.590243 1.690759 0.362673 0.286216 1.401648 0.934734 0.185388 1.367174 -0.081103 1.895847 1.045942 0.127415 0.422341 0.108149 0.069988 0.928479 1.179567 0.407223)
)
;;; 53 even --------------------------------------------------------------------------------
@@ -3984,7 +3934,7 @@
9.627 #(0 1 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 0 1 0 1 0 1 1 1 0 0 0 1 0 0 1 1 0 1 1 0)
9.6159172058105 #(0 1 0 1 1 1 1 1 1 1 1 0 0 0 1 1 0 0 0 0 0 1 1 1 1 0 1 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 1 1 0 0 1 0)
- 7.848802 #(0.000000 0.046389 0.638297 1.405602 1.495632 0.125741 1.351375 0.543614 0.504880 1.768297 0.376020 1.799646 0.477138 1.351916 1.280273 1.326137 1.111465 0.922256 1.527291 0.495714 0.287451 0.492636 1.073992 -0.093423 0.268930 0.396640 1.266808 1.808383 1.157274 1.752321 -0.103563 0.168326 1.047066 0.534440 1.176207 0.269010 -0.122791 1.247969 0.895230 0.937257 0.685135 0.704822 1.097022 1.328969 1.091698 1.301954 0.389678 1.452232 0.794727 0.539382 1.408472 1.258778 0.819095)
+ 7.814024 #(0.000000 0.023252 0.586700 1.419152 1.521968 0.157253 1.371174 0.543077 0.469164 1.792127 0.380411 1.774076 0.550876 1.385428 1.261474 1.330375 1.018934 0.964546 1.605700 0.502722 0.298943 0.470506 1.058547 -0.085114 0.285170 0.362710 1.257906 1.806523 1.155199 1.709578 -0.164718 0.161542 1.074308 0.564546 1.204779 0.254662 -0.150295 1.233985 0.861863 0.843811 0.736324 0.693701 1.069908 1.371151 1.043293 1.311272 0.391119 1.484206 0.826466 0.561503 1.394063 1.226910 0.792921)
)
;;; 54 even --------------------------------------------------------------------------------
@@ -3992,7 +3942,7 @@
9.748743057251 #(0 0 1 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 0 1 1 0 0 0 1 1 1 1 1 1 0 1 0 1 1 1 0 1 0)
9.5190944671631 #(0 1 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 1 0 1 1 1 0 0 0 0 1 1 0 0 0 1 1 1 1 0 1 1 1 0 1 0 1 0 1 1)
- 7.924067 #(0.000000 0.036341 0.627219 0.822213 1.612308 1.162108 1.689431 0.527997 -0.047114 0.286946 0.288088 1.021114 1.353884 1.077168 1.723296 1.586184 0.146587 0.929657 -0.387309 0.845528 1.652420 0.765253 1.006115 0.872691 0.329705 0.216174 0.914406 1.736189 0.898887 0.001865 0.083435 0.235484 1.648277 0.268466 1.894902 1.430812 1.088582 0.689242 0.379542 1.379062 1.865736 0.560346 1.412569 1.761799 1.625373 1.691734 -0.091994 1.640000 0.863016 0.164890 1.810924 0.322449 0.056545 1.702589)
+ 7.875425 #(0.000000 0.053251 0.634577 0.840993 1.597955 1.160157 1.695763 0.509785 -0.046684 0.314036 0.288490 1.006763 1.347230 1.062780 1.719676 1.613183 0.132715 0.938585 -0.398012 0.842141 1.632538 0.795910 1.016289 0.862234 0.303610 0.191101 0.875952 1.731389 0.871491 -0.015975 0.082265 0.214047 1.637886 0.261903 1.882800 1.432039 1.089644 0.690902 0.378269 1.386159 1.860133 0.538066 1.398096 1.768496 1.627614 1.660151 -0.109489 1.656475 0.848155 0.154543 1.803957 0.281999 0.072052 1.698672)
)
;;; 55 even --------------------------------------------------------------------------------
@@ -4001,7 +3951,7 @@
9.7848987579346 #(0 1 0 0 1 0 1 0 0 0 1 0 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1)
9.6719217300415 #(0 1 0 0 1 0 1 1 0 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 1)
- 8.158943 #(0.000000 -0.021793 1.511979 -0.022124 1.532999 0.225280 1.131398 0.019503 0.234811 0.780626 1.987178 1.855922 0.072912 0.099541 0.738620 0.104550 0.508868 1.590964 0.115774 0.512587 0.657324 1.126480 0.188639 0.019130 0.231707 1.134620 -0.035585 1.612275 1.187621 0.750184 1.506940 1.394828 0.647949 1.673378 0.904634 0.614737 0.547275 0.431317 0.087594 1.075163 0.031986 0.324334 0.711162 0.851733 0.492371 1.124768 1.589127 1.300820 0.233893 0.000638 0.155021 1.469031 0.994126 0.280075 0.502311)
+ 8.134624 #(0.000000 -0.019441 1.592883 -0.100145 1.536060 0.251204 1.155048 -0.005090 0.207887 0.767727 -0.042372 1.859046 0.083542 0.094020 0.774918 0.104957 0.596000 1.562265 0.092270 0.515501 0.715503 1.196948 0.231951 0.041198 0.190238 1.113803 -0.059637 1.561122 1.188694 0.684658 1.462106 1.366183 0.720608 1.655502 0.884120 0.602700 0.540474 0.432627 0.115067 1.088747 0.064469 0.340800 0.700760 0.894688 0.474205 1.169360 1.603412 1.289563 0.212052 -0.002584 0.227526 1.438438 0.988621 0.286598 0.529233)
)
;;; 56 even --------------------------------------------------------------------------------
@@ -4010,7 +3960,7 @@
9.7564358364052 #(0 1 1 1 1 0 1 1 0 1 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 1 1 0 1 0 1 0 1 1)
9.6809562784664 #(0 0 0 1 0 0 1 0 0 1 1 0 0 1 1 1 1 1 0 0 0 1 1 0 0 0 1 0 0 0 0 1 1 1 1 1 1 0 1 0 1 1 1 0 1 1 1 1 1 0 1 1 0 1 0 1)
- 8.170723 #(0.000000 -0.070005 1.004048 0.461117 1.761123 1.115619 1.114239 -0.259730 1.177416 1.129781 1.634284 0.466624 0.654740 1.578972 1.268923 1.246510 1.004878 1.640311 1.754247 -0.203945 1.524384 1.720713 0.800376 0.650447 1.202794 0.369435 0.458124 1.369385 -0.128171 1.351586 -0.183395 1.102964 1.213510 1.419089 0.619191 1.350933 0.496249 1.745167 0.407907 0.347992 0.089892 0.907365 0.439075 0.431363 0.019988 1.748591 0.682101 0.333055 1.232995 1.745719 -0.186468 0.016049 0.767122 1.089390 0.669877 1.628081)
+ 8.134927 #(0.000000 -0.072171 0.940266 0.441880 1.746736 1.095764 1.145135 -0.319662 1.212160 1.110243 1.652964 0.406360 0.737845 1.503419 1.253485 1.249901 1.041126 1.609230 1.623363 -0.195998 1.531524 1.745961 0.779525 0.674710 1.168416 0.412784 0.472524 1.347501 -0.087717 1.407032 -0.117434 1.135568 1.218492 1.456308 0.603126 1.376957 0.474320 1.724609 0.397314 0.348416 0.027744 0.936022 0.474173 0.399701 -0.037218 1.707725 0.687901 0.381697 1.281638 1.754765 -0.267166 -0.029596 0.805262 1.128427 0.620561 1.647118)
)
;;; 57 even --------------------------------------------------------------------------------
@@ -4019,7 +3969,7 @@
9.9813938140869 #(0 1 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 1 1 0 1 0 0 0 0 1 0 0 0 1 1 1 1 1 0 1 0 1 0 1 0 0 1 1 0 0 1)
9.8992366790771 #(0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 1 0 1 0 0 1 1 0 0 1)
- 8.212182 #(0.000000 0.010551 1.609488 1.624826 -0.208195 1.309437 0.341831 1.176080 1.412341 0.198709 1.783809 0.027036 0.383923 0.134104 1.609758 1.532284 0.369247 0.227010 1.206182 0.214519 0.036744 1.291818 0.055228 1.276862 0.999285 1.577495 1.652528 0.537482 0.796224 1.052251 1.434424 1.035221 1.218843 1.672439 1.528339 0.022444 0.549369 1.732067 1.278593 0.631421 0.507791 0.729300 0.417281 1.031808 0.053436 0.801810 -0.224209 1.659620 0.543264 1.270469 0.227048 1.546292 1.493685 1.231921 0.396790 0.778926 -1.847923)
+ 8.188781 #(0.000000 -0.038838 1.594874 1.627327 -0.199656 1.347122 0.307252 1.132466 1.334532 0.202358 1.773975 -0.011662 0.328351 0.109709 1.572099 1.546131 0.376109 0.313745 1.206728 0.193453 0.022952 1.220215 0.070756 1.300038 1.008310 1.572825 1.672520 0.546813 0.762715 1.028349 1.421354 1.047045 1.251393 1.660416 1.444665 0.012752 0.539133 1.678379 1.239913 0.623099 0.521729 0.758801 0.407972 0.928058 0.060267 0.714236 -0.292439 1.587140 0.543199 1.237931 0.122317 1.546386 1.538882 1.155092 0.414321 0.781109 -1.848355)
)
;;; 58 even --------------------------------------------------------------------------------
@@ -4028,7 +3978,7 @@
10.040289878845 #(0 1 1 1 1 1 0 0 0 1 1 1 0 1 1 1 1 0 1 1 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 0 1 0 1)
9.8761510848999 #(0 1 1 1 1 1 0 0 0 1 0 0 0 1 1 1 1 0 1 1 0 0 0 1 1 0 1 0 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 0 1 0 0 1 1 0 1 0 0 0 1)
- 8.218119 #(0.000000 0.032661 0.430988 0.856860 0.861952 1.691231 0.196585 0.389487 0.123235 1.791228 1.251635 1.023443 1.033741 0.220412 0.671796 1.523876 1.292509 1.830235 0.070143 1.533894 1.574020 0.113393 0.263720 0.165973 1.412400 0.482284 0.785191 1.695368 1.127871 1.171924 1.405458 1.742642 0.869593 1.025656 1.316947 0.830946 0.651870 1.678263 0.475488 1.571340 1.631759 0.983394 1.775019 1.507892 0.336138 1.379954 0.604305 1.387149 1.379496 0.202802 1.629981 0.112180 0.860420 0.244939 1.592931 1.257658 1.472126 1.478202)
+ 8.203010 #(0.000000 0.069827 0.408935 0.771695 0.844827 1.685164 0.234131 0.383531 0.128000 1.812442 1.228405 1.080293 1.044640 0.257822 0.724617 1.497554 1.311941 1.824638 0.026836 1.557362 1.582184 0.095741 0.301797 0.097586 1.399420 0.456986 0.719293 1.703503 1.137475 1.173006 1.478351 1.744100 0.915105 1.057491 1.356142 0.804177 0.590666 1.599345 0.496048 1.572976 1.578065 1.005785 1.799260 1.515839 0.369227 1.308267 0.569480 1.332755 1.430893 0.193002 1.570086 0.119578 0.834367 0.261330 1.626012 1.280670 1.462948 1.477761)
)
;;; 59 even --------------------------------------------------------------------------------
@@ -4037,14 +3987,14 @@
10.237511634827 #(0 1 1 0 1 0 1 1 1 0 0 1 1 0 0 1 1 1 1 0 0 0 1 1 1 1 1 0 0 1 1 0 1 0 1 0 1 1 0 1 1 0 1 0 0 1 0 0 1 1 0 0 1 1 1 1 1 1 1)
10.094394683838 #(0 1 1 0 1 0 1 0 0 0 1 1 1 0 0 1 1 1 1 0 0 0 0 0 1 0 1 1 0 1 1 0 1 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1)
- 8.417264 #(0.000000 0.028307 1.163488 1.373311 0.719822 0.418544 0.273557 0.112164 0.160551 1.199369 1.306532 0.249932 1.039770 1.648364 -0.180622 0.885425 1.684401 0.800985 1.754561 1.366513 1.005402 1.258464 0.559897 1.109135 0.613264 0.201234 0.739242 1.179935 -0.233698 0.043855 -0.003603 0.263333 -0.031901 1.746481 0.965385 1.207836 -0.152490 1.893904 0.107815 0.131915 1.798261 0.043120 0.392857 0.157308 0.896650 0.223436 0.179466 1.516416 0.757812 1.398889 0.757842 -0.070582 1.901226 0.929791 0.230244 1.552111 1.502116 1.628668 0.333500)
+ 8.286965 #(0.000000 0.184714 1.182364 1.339206 0.725515 0.426699 0.319302 0.068126 0.088550 1.198794 1.391896 0.228997 1.002125 1.576526 -0.168643 0.844015 1.680514 0.735440 1.741130 1.319351 1.037555 1.263896 0.566583 1.173688 0.617076 0.152863 0.817258 1.257302 -0.182706 0.099050 0.178154 0.366049 -0.003311 1.804395 1.096246 1.304664 -0.199713 1.788013 0.166016 0.033439 1.935535 0.174723 0.382141 0.183401 0.961422 0.235186 0.177361 1.536614 0.753995 1.462008 0.788289 -0.129464 1.869114 0.931802 0.234269 1.478170 1.533597 1.657211 0.336114)
)
;;; 60 even --------------------------------------------------------------------------------
#(60 10.491376876831 #(0 0 0 1 0 1 1 1 1 0 1 1 0 1 1 0 1 1 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1 0 1 0 0 0 0 1 0 0 0 0 1 1 0 1 1 0 0)
10.333255371943 #(0 0 0 1 0 1 1 1 1 0 1 1 0 0 1 0 0 1 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0)
- 8.399082 #(0.000000 -0.021458 0.029918 0.405903 1.382311 1.471928 0.230273 1.008665 0.685368 1.505162 0.245033 1.175197 -0.376481 -0.113798 1.514816 0.199059 1.264650 0.122320 0.639855 0.265401 0.262468 0.063840 0.676090 0.999673 1.190787 0.476880 0.631195 0.907952 0.460083 1.368882 1.096144 0.553856 0.229192 0.655548 1.318644 0.546911 1.537713 0.896892 0.534046 0.835099 0.536409 -1.771464 1.641839 0.232083 0.473463 0.199506 1.756723 1.271374 1.356640 0.183027 1.504279 1.736690 0.285641 0.703771 0.753875 0.482288 1.191163 1.805487 1.385196 0.471779)
+ 8.369020 #(0.000000 -0.009399 0.047653 0.351478 1.376819 1.466353 0.241588 0.958516 0.686732 1.532609 0.236686 1.195149 -0.399863 -0.118220 1.513213 0.163687 1.215352 0.129098 0.631466 0.254647 0.281177 0.044550 0.678702 0.988722 1.214794 0.499783 0.633226 0.883891 0.438186 1.371095 1.172335 0.636985 0.271327 0.608032 1.290126 0.511261 1.522466 0.876628 0.531673 0.792001 0.534885 -1.764305 1.683266 0.156082 0.429618 0.173268 1.727508 1.238376 1.306770 0.195246 1.483938 1.726844 0.268647 0.703193 0.694527 0.482846 1.073617 1.854838 1.343990 0.401305)
)
;;; 61 even --------------------------------------------------------------------------------
@@ -4053,7 +4003,7 @@
10.209 #(0 0 1 0 1 1 1 1 0 1 1 1 1 0 0 0 0 1 0 1 0 1 0 0 0 1 0 1 1 0 1 1 1 1 0 1 1 1 1 1 0 1 1 0 0 0 1 1 1 1 1 1 0 0 1 1 0 0 1 0 0)
10.120587847566 #(0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 1 1 0 0 0 1 1 1 1 1 0 0 1 1)
- 8.584129 #(0.000000 1.151414 -0.147272 -0.390755 1.680514 1.230376 0.105240 -0.089371 1.662037 1.014533 0.587853 0.494425 0.160393 1.700435 1.086905 1.753516 0.065778 0.751124 1.309545 0.413982 0.444952 0.328436 0.712438 1.818997 0.020691 1.209104 0.180184 0.813223 0.401315 0.914379 0.231922 1.641916 1.424166 1.097783 0.259662 -0.181028 0.335822 0.033029 0.543489 1.247369 1.516516 0.081227 0.111248 1.089556 0.333344 1.267174 1.302436 0.294239 0.547999 0.234278 0.507283 0.308813 1.141678 0.507840 1.677307 1.685519 0.081386 1.635123 1.568991 1.765009 0.025524)
+ 8.541416 #(0.000000 1.195802 -0.164370 -0.381350 1.696546 1.201751 0.128018 -0.110978 1.671353 1.050103 0.555049 0.426533 0.144978 1.635617 1.074365 1.723651 0.076766 0.758070 1.333819 0.342452 0.401048 0.319632 0.775678 1.745684 0.043523 1.201119 0.172825 0.814315 0.404989 0.895172 0.216510 1.681450 1.400530 1.162025 0.186340 -0.227594 0.369841 0.074458 0.531865 1.266840 1.481480 0.112403 0.126902 1.067795 0.247707 1.334653 1.316919 0.324496 0.593756 0.240509 0.511057 0.368607 1.195881 0.446393 1.685968 1.731247 0.082728 1.655931 1.556984 1.774184 -0.036429)
)
;;; 62 even --------------------------------------------------------------------------------
@@ -4061,7 +4011,7 @@
10.501984943687 #(0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 1 1 1 1 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 1 1 0 1 1 1 1 1 0 1 1 0 1 1 0 0 1 1 1 0 1 1)
10.318392753601 #(0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 0 0 0 0 1 0 1 1 0 1 1 0 1 1 1 1 1 0 0 1 0 1 1 0 0 1 1 0 0 1 1)
- 8.628854 #(0.000000 0.774047 0.006915 0.448488 0.117558 0.124481 0.301107 0.027998 1.836618 1.522737 1.420715 0.904760 1.085204 -0.305190 0.595562 1.859805 1.516104 0.874961 1.930639 1.230131 0.467780 0.966984 0.750874 0.888117 0.146519 0.834149 0.925942 -0.360344 1.023276 1.467829 0.824581 1.229582 0.660789 1.809286 1.538199 0.715422 0.953613 0.441867 0.012855 0.028780 0.929117 1.566305 0.466047 0.587547 1.182079 0.313688 0.447995 0.592464 0.726531 1.150770 1.308645 1.571998 0.391190 -0.109448 0.480848 0.627859 1.010639 1.543542 0.847851 0.632005 0.006285 1.474358)
+ 8.546542 #(0.000000 0.762984 0.052914 0.466385 0.138470 0.171607 0.338434 0.033671 1.874961 1.496165 1.418048 0.955244 1.066067 -0.388427 0.565179 1.828411 1.557599 0.836796 1.942989 1.229730 0.357170 0.896264 0.802361 0.955980 0.083067 0.845887 0.934698 -0.384799 1.120389 1.521875 0.856421 1.260228 0.724457 1.887015 1.589371 0.672021 1.048064 0.411376 0.061581 0.007290 0.973277 1.564848 0.545493 0.602972 1.173844 0.361831 0.476201 0.574121 0.754719 1.138696 1.317302 1.592705 0.465425 -0.079818 0.516074 0.706439 1.024116 1.550741 0.883711 0.679682 0.077044 1.565664)
)
;;; 63 even --------------------------------------------------------------------------------
@@ -4070,7 +4020,7 @@
10.562 #(0 0 1 0 0 1 0 1 1 0 0 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1 1 0 0 0 0 0 0 1 1 0)
10.45694065094 #(0 0 1 0 0 1 0 1 1 0 0 1 1 1 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 1 0 0 1 1 1 0 0 0 0 0 1 1 1 0)
- 8.581134 #(0.000000 0.033154 0.667401 1.681128 0.221147 1.648727 1.410250 1.844968 0.962429 1.988245 0.562939 1.836491 1.317246 1.372742 -0.060520 1.671824 0.089770 1.023559 0.009403 1.100090 1.218309 0.649974 0.576561 0.020849 1.691085 0.063650 1.112460 0.391283 0.283978 0.669287 0.481030 0.265559 1.560713 1.564812 1.717529 0.277978 1.569666 1.032671 0.732879 1.326311 1.407239 0.071002 0.812796 1.247112 1.227091 0.484617 1.670845 1.486740 1.688565 1.761009 0.612580 1.678436 1.628757 0.775056 0.773717 0.915543 1.032731 0.149942 1.189713 0.859155 0.740264 1.299563 1.505652)
+ 8.569052 #(0.000000 0.007804 0.657415 1.672178 0.230781 1.653020 1.381210 1.834603 0.984966 0.008931 0.594524 1.858524 1.338639 1.375396 -0.067174 1.699070 0.109351 1.030111 0.009888 1.049360 1.194252 0.653018 0.559578 0.078555 1.691330 0.059689 1.104476 0.414354 0.301515 0.679526 0.519834 0.249561 1.614982 1.526942 1.711718 0.244187 1.629187 1.064114 0.747242 1.287943 1.404657 0.076359 0.845091 1.211841 1.280823 0.515560 1.679202 1.486000 1.655055 1.753353 0.627576 1.732051 1.618572 0.766142 0.760035 0.921180 1.063618 0.198910 1.183496 0.873865 0.714769 1.280774 1.465771)
)
;;; 64 even --------------------------------------------------------------------------------
@@ -4078,7 +4028,7 @@
10.532917976379 #(0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 0 0 0 1 1 0 1 0 1 0 0 0 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 1)
10.487 #(0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 1 1 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 1)
- 8.646482 #(0.000000 0.015110 0.146198 0.146797 0.543850 1.545692 0.281293 -0.259066 1.324556 0.132723 0.195149 1.533192 0.005679 1.762301 1.112023 1.905626 0.340672 1.207060 0.848369 1.506974 1.273185 0.105199 1.803738 0.966518 0.939337 1.177012 0.985381 1.258535 1.194886 0.305382 0.999657 0.150887 1.824276 1.441858 1.313333 -0.048241 1.400267 1.623623 1.247646 1.283942 0.292935 0.885172 1.819982 1.470855 0.180148 1.567970 0.325237 0.700128 0.439882 0.021855 1.548197 1.162706 1.013980 0.111103 0.985536 1.365198 -0.145116 -0.138192 -0.021200 1.006323 1.706696 0.095312 0.643581 0.560102)
+ 8.566477 #(0.000000 -0.094737 0.139344 0.132937 0.525564 1.631062 0.331402 -0.363917 1.433873 0.105402 0.171064 1.569173 0.085494 1.742604 1.094472 -0.063008 0.242228 1.213409 0.935621 1.459419 1.211991 0.231778 1.770962 0.971655 1.022113 1.220150 1.022475 1.216931 1.195104 0.326649 1.001827 0.152433 1.799308 1.389467 1.402694 -0.118225 1.390475 1.588601 1.100416 1.342606 0.392212 0.797305 1.764644 1.402527 0.265236 1.542155 0.327475 0.776537 0.424868 0.007754 1.496837 1.196519 0.962830 0.108162 1.078065 1.453512 -0.152428 -0.063226 -0.036033 0.998102 1.782051 0.218430 0.610000 0.609797)
)
;;; 65 even --------------------------------------------------------------------------------
@@ -4086,7 +4036,7 @@
10.842938423157 #(0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 1 0 1 1 1 1 1 0 1 1 0 1 1 1 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0)
10.593795776367 #(0 1 1 1 1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 1 1 0 1 1 1 1 1 0 1 1 1 1 0 0 0 0 1 0 0 1 1 1 0 1 1 1 0 1 0 1 0 1 1 1 1 1 1 0 1 1 0 1 0)
- 8.839143 #(0.000000 0.087921 1.999721 0.061274 1.872966 0.452984 1.574169 1.371244 0.426585 0.338345 1.063355 1.255388 -0.157131 1.383676 1.338382 0.190983 -0.130721 1.577716 1.188768 1.816887 0.813024 0.624621 1.794653 0.427433 0.641248 1.268551 1.345485 -1.817564 1.620753 0.648274 0.984976 1.390354 0.141227 -0.096989 1.591602 1.786186 1.573909 1.303666 1.066365 0.265435 -1.812234 -0.057246 1.031984 0.328142 0.276064 0.671845 1.395595 0.712426 1.528892 1.852158 0.276412 1.174685 0.690424 1.098814 0.845653 1.246995 1.174557 0.993635 0.034985 0.922800 0.203378 0.992359 1.755296 0.866673 0.954435)
+ 8.766805 #(0.000000 0.089859 0.017947 0.060442 1.854890 0.437077 1.610080 1.436011 0.394568 0.377083 1.011197 1.294092 -0.171722 1.430233 1.352005 0.189292 -0.133062 1.617016 1.255717 1.859203 0.791678 0.637465 1.760426 0.511300 0.627250 1.276925 1.387783 -1.819387 1.643395 0.707911 0.963364 1.404711 0.174883 -0.116983 1.586581 1.801864 1.522973 1.288474 1.102180 0.259477 -1.850693 -0.027148 1.060180 0.417040 0.301247 0.736174 1.415197 0.732096 1.567589 1.854916 0.371561 1.187696 0.683173 1.155514 0.893032 1.272031 1.182663 0.982373 0.074087 0.978079 0.252132 1.002202 1.812947 0.915646 0.981961)
)
;;; 66 even --------------------------------------------------------------------------------
@@ -4107,7 +4057,7 @@
#(68 11.328473091125 #(0 1 0 0 0 1 0 0 1 1 0 1 1 1 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 1 0)
10.834321813096 #(0 1 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 1 1 1 1 1 1 0 0 0 0 1 1 1 0 0 1 0 0 1 1 1 1 0 1 1 0 0 0 0 1 0 1 0)
- 9.035695 #(0.000000 -0.062127 0.768200 1.481331 0.958729 1.976130 0.929389 1.701733 1.061871 0.149080 1.581285 0.279696 -0.014360 1.782516 0.900832 0.756562 0.473455 1.191470 1.006173 1.143026 1.541453 0.954009 1.859850 1.681815 1.663928 -0.303317 1.563495 0.676900 1.378112 1.173828 0.071308 0.506824 -0.197549 -0.186902 -0.019190 0.071397 1.176856 0.259945 -0.182310 1.394411 0.010924 1.098755 1.352952 1.428512 1.703918 0.596471 1.037016 0.977263 1.120640 -0.063142 1.329184 0.613330 0.406621 0.617920 0.999233 1.348194 0.613259 1.811086 0.196974 0.920246 1.631415 0.330438 1.029233 1.236769 0.962931 0.635823 0.086165 1.700184)
+ 8.950404 #(0.000000 -0.096055 0.733273 1.560606 0.959319 -0.033699 1.014907 1.682183 1.058976 0.137795 1.626538 0.239789 -0.038141 1.717377 0.942346 0.790964 0.489519 1.256066 1.036095 1.170150 1.486568 0.960262 1.874706 1.777263 1.664683 -0.264088 1.600132 0.715109 1.397825 1.261681 0.098440 0.530847 -0.238946 -0.185935 0.005217 0.059878 1.212451 0.266865 -0.187901 1.355566 0.006272 1.075885 1.358700 1.471104 1.714667 0.544941 1.008275 0.972000 1.123991 -0.028799 1.364059 0.597357 0.379604 0.599477 0.916200 1.373898 0.599834 1.866086 0.141354 0.915974 1.637186 0.403630 1.029366 1.236851 0.932749 0.633333 0.075988 1.776928)
)
;;; 69 even --------------------------------------------------------------------------------
@@ -4123,7 +4073,7 @@
11.405939102173 #(0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 1 1 1 0 1 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 0 1 0 0 1)
11.188811302185 #(0 1 1 1 0 0 1 0 0 1 0 1 0 1 0 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 1 0 1 1 1 1 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 0 1 0 1 1)
- 9.180313 #(0.000000 0.068792 0.571396 0.105714 -0.261006 0.601265 1.722146 0.685285 0.049859 1.504591 0.885854 -0.376186 1.439192 0.745202 0.571546 1.131052 0.449594 0.283273 0.937649 0.567513 0.071481 1.123662 1.592486 0.223434 0.407222 0.927665 0.097911 1.573982 0.442578 1.130993 1.505752 1.415313 1.039718 0.456632 0.549618 0.561729 -0.005141 1.903886 1.049529 0.204619 0.696876 1.281426 0.987081 1.747476 0.057414 0.429185 0.515161 0.187998 0.480215 1.342532 -0.001137 -0.437482 1.849276 0.605284 -0.056860 1.407921 1.524663 0.725150 0.476462 1.708890 0.454912 1.249209 0.439507 0.921708 0.926771 1.026019 1.132603 1.310060 1.348071 1.127292)
+ 9.061038 #(0.000000 0.118483 0.577159 0.155288 -0.238408 0.568124 1.722791 0.685871 0.073556 1.421980 0.856625 -0.409940 1.359616 0.689386 0.511800 1.152276 0.449724 0.283276 0.890560 0.512741 -0.032763 1.166386 1.630114 0.272941 0.367826 0.827909 0.135009 1.588148 0.418124 1.130685 1.444029 1.519623 1.023440 0.352645 0.559845 0.528834 -0.041999 1.843385 1.005845 0.183956 0.643287 1.339928 0.963298 1.734822 0.106770 0.318904 0.529964 0.185119 0.454338 1.334056 0.020447 -0.443901 1.865142 0.559731 -0.028977 1.456396 1.531305 0.624476 0.519732 1.755969 0.460122 1.246291 0.460817 0.931413 0.891563 1.064077 1.112329 1.323084 1.248928 1.143999)
)
;;; 71 even --------------------------------------------------------------------------------
@@ -4131,7 +4081,7 @@
11.28450554254 #(0 1 1 1 0 1 0 1 1 1 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 1 1 1 1 0 0 1 1 0)
11.146488189697 #(0 1 1 1 0 1 0 1 0 1 0 0 0 1 0 0 1 0 1 1 0 0 1 0 0 0 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 1 0 1 0 0 0 0 1 1 1 1 0 0 0 1 1 0)
- 9.277113 #(0.000000 -0.002735 0.560210 1.250388 0.515872 1.120476 1.087078 0.926004 1.289760 1.412584 1.878188 0.870314 1.629709 0.519387 1.115444 1.164886 1.240470 1.096752 1.819179 1.144677 -0.072233 0.339936 1.300682 1.707111 0.849716 0.207316 0.279594 0.704746 -0.039690 0.171159 0.155938 0.352214 1.391704 0.259327 1.653353 0.413291 1.601673 1.089791 0.001359 1.636854 1.694502 1.426192 0.160367 0.600893 0.712194 0.592407 0.039303 0.292744 0.171384 0.115717 1.293857 1.052052 1.894165 -0.205602 0.589064 1.467182 0.595473 0.574445 1.581673 1.431357 0.577295 0.143886 1.656920 0.138056 -0.167518 1.127594 1.141907 0.627444 0.290112 0.103129 1.181152)
+ 9.251329 #(0.000000 -0.003707 0.526929 1.271705 0.488328 1.116213 1.082920 0.908236 1.332907 1.459259 1.923917 0.790972 1.638871 0.487797 1.102180 1.124966 1.247238 1.043644 1.743226 1.120238 -0.074197 0.356105 1.329912 1.684571 0.768237 0.274913 0.267657 0.747832 -0.000299 0.208901 0.150719 0.325889 1.415937 0.256720 1.635298 0.392991 1.576121 1.110532 0.038532 1.673717 1.721167 1.451672 0.082954 0.579260 0.744931 0.598319 0.042390 0.256182 0.176550 0.168325 1.267808 1.039976 1.924839 -0.235380 0.582919 1.424210 0.609077 0.590554 1.573992 1.431968 0.601242 0.134917 1.693255 0.101337 -0.102760 1.144171 1.100571 0.626316 0.325222 0.127867 1.104193)
)
;;; 72 even --------------------------------------------------------------------------------
@@ -4139,7 +4089,7 @@
11.492732978803 #(0 0 0 1 1 1 1 0 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 0 0 1 0 0 0 0 1 1 0 1 1 1 0 0 1 0 1 1 1 0 1 0 1 1 1 1 0 1 0 1)
11.323646371629 #(0 0 1 0 1 0 1 1 0 1 0 1 1 1 1 1 0 1 1 0 0 0 1 0 1 1 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 1 1 1 0 1 1 1 0 1 0 1 0 0 1 1 0 0 0 0 1 1 1 1 1 0)
- 9.256676 #(0.000000 0.004181 0.214818 -0.101445 1.267656 0.073481 0.092951 1.236528 1.371459 0.017527 1.478177 0.365351 1.096298 -0.190239 0.809621 0.498472 0.959574 0.982041 0.884510 0.732057 0.578622 0.742735 0.424755 0.461908 1.096154 0.453947 1.179659 1.078669 1.056516 1.202369 0.734881 -0.395326 0.516498 0.836236 0.347111 0.045148 1.681660 -0.070614 0.748921 0.992580 -0.045219 1.253270 -0.005851 0.677320 0.400789 1.727107 1.287832 0.809865 0.000830 0.898905 1.114540 1.528321 1.867075 -0.059115 1.327500 -0.076148 0.433394 0.885318 0.934252 0.384751 0.151019 1.537202 0.218536 0.804681 1.062788 0.916117 0.079376 1.676713 0.285742 1.530715 0.581237 0.237698)
+ 9.174099 #(0.000000 -0.020247 0.219094 -0.107632 1.302600 0.078111 0.104832 1.106920 1.365511 0.075704 1.470591 0.378565 1.098693 -0.136112 0.742807 0.478675 0.989949 1.012481 0.863452 0.711677 0.629390 0.799247 0.416945 0.528383 1.096675 0.478973 1.234307 1.070505 0.980364 1.142745 0.726658 -0.412709 0.456051 0.697362 0.376914 0.045524 1.601257 -0.038029 0.766705 0.996850 -0.138521 1.215559 0.012770 0.678917 0.363895 1.589406 1.272451 0.759547 0.002731 0.849484 1.108274 1.458126 1.784347 -0.106963 1.416831 0.021335 0.345541 0.905091 0.992883 0.332053 0.195083 1.503742 0.193240 0.836308 1.020063 0.845594 0.099397 1.566354 0.161166 1.518107 0.534783 0.254324)
)
;;; 73 even --------------------------------------------------------------------------------
@@ -4147,7 +4097,7 @@
11.567651928526 #(0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 1 1 0 1 1 1 0 0 0 0 0 0 1 1 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 0 1 1 0 0 0 0)
11.416394233704 #(0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 1 1 1 0 0 0 1 1 0 1 1 0 1 1 1 0 0 0 0 0 0 1 1 0 1 0 1 0 1 0 1 1 0 0 0 1 0 1 0 1 1 0 0 0 0)
- 9.400689 #(0.000000 0.023617 1.871312 0.889601 0.672270 1.970132 1.168071 -0.082896 0.552578 0.654006 1.397566 1.615338 1.210207 1.201183 0.294256 0.426792 1.616302 0.159658 1.035322 0.356327 1.431542 1.067306 1.366713 0.008561 0.167807 0.034582 0.421641 0.412024 0.851027 0.635985 0.283181 0.114182 0.660980 0.731270 0.710022 0.923779 0.434467 1.755835 1.503073 0.060085 1.235899 1.183774 1.062017 0.351052 0.625785 0.122835 0.623752 0.205992 0.669818 1.639695 -0.274713 0.264060 1.410123 1.466521 0.294572 0.373470 1.696471 1.162785 1.789268 1.075632 0.551144 1.779721 1.143927 1.760184 0.139805 0.860919 1.338189 0.765276 1.593651 0.399953 1.043939 0.233759 -0.064299)
+ 9.343930 #(0.000000 0.030023 1.859585 0.921279 0.749539 1.966493 1.194768 -0.050976 0.603417 0.688085 1.378993 1.551294 1.188695 1.178090 0.314225 0.391163 1.625614 0.168627 0.988581 0.333478 1.488878 1.066644 1.458981 -0.017543 0.145340 0.081376 0.359041 0.404694 0.832945 0.673976 0.259686 0.130402 0.651272 0.651718 0.715966 0.898760 0.391064 1.761113 1.465501 -0.001788 1.204135 1.253178 1.007402 0.343732 0.658974 0.124648 0.655351 0.199737 0.666756 1.637577 -0.269774 0.218835 1.398038 1.472349 0.246564 0.376951 1.707605 1.260560 1.747671 1.110634 0.591104 1.717582 1.179640 1.734926 -0.018583 0.886878 1.326412 0.677459 1.604416 0.421828 1.071022 0.172196 -0.062154)
)
;;; 74 even --------------------------------------------------------------------------------
@@ -4155,7 +4105,7 @@
11.749699425492 #(0 0 0 1 0 0 1 0 1 1 0 0 1 1 0 1 1 1 0 0 0 1 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 1 0 0 0 0 1 1 1 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 1 1 1)
11.47264289856 #(0 0 0 1 0 0 0 0 1 1 0 0 1 1 0 1 1 1 0 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 0 0 0 1 0 0 1 1 1 1 1 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 1 1)
- 9.405938 #(0.000000 -0.038561 -1.940875 1.859567 1.408162 0.828333 0.846904 0.755391 0.125474 1.242328 0.046926 1.129660 -0.260147 1.037851 0.949685 1.237510 1.813550 1.291670 -1.771302 0.191401 0.725060 1.786232 1.100659 -0.181050 1.865931 0.245140 1.568923 0.881987 1.111790 1.285692 1.688975 0.254380 0.060623 1.869445 1.697703 0.247162 0.492732 1.753705 1.239526 0.697241 0.881044 1.406670 -0.193061 0.325247 -0.046784 1.781713 0.009633 0.169653 1.487765 0.150648 1.588931 1.872477 1.655524 0.396930 1.289696 1.654006 0.444017 1.199177 0.796325 0.672721 1.518084 1.131578 0.692799 0.603770 1.188245 1.651810 -0.367640 0.966365 0.152553 1.172135 1.701887 0.169201 1.372243 0.557597)
+ 9.367169 #(0.000000 -0.009479 -1.910055 1.864213 1.431284 0.834323 0.910822 0.761689 0.139649 1.221207 0.036842 1.155664 -0.223192 1.060699 0.931927 1.183770 1.839630 1.262342 -1.757181 0.129386 0.733316 1.831612 1.150593 -0.178386 1.900365 0.186511 1.619926 0.889365 1.084572 1.323319 1.660575 0.272210 0.024303 1.861027 1.691645 0.216763 0.524379 1.777760 1.256748 0.690903 0.896055 1.392270 -0.214052 0.389222 -0.040554 1.789647 -0.037623 0.151794 1.496518 0.175257 1.570394 1.880200 1.690510 0.433905 1.342845 1.593096 0.463677 1.173822 0.851733 0.662940 1.518379 1.191064 0.707412 0.589789 1.147381 1.619668 -0.369012 0.981287 0.139304 1.116771 1.691219 0.208599 1.356233 0.504562)
)
;;; 75 even --------------------------------------------------------------------------------
@@ -4164,14 +4114,14 @@
11.599789619446 #(0 0 1 0 1 1 0 1 0 0 1 0 0 0 1 0 1 0 1 1 1 0 1 1 1 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 0 0 0 1 0 1 1 0 1 0 1 1 1 0 1 1 1 1 1 1 0 1 1 1 0 0 1 0 0 0 0 1 1)
11.479255355845 #(0 0 1 1 0 0 1 1 1 1 1 0 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 1 1 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1)
- 9.363209 #(0.000000 0.066175 1.262848 0.223328 1.694080 1.043645 0.073971 1.092104 0.728766 0.080545 0.872529 0.098978 0.771914 1.814567 0.074261 1.258518 0.199968 1.006348 1.501152 0.044120 0.648831 1.438680 0.041536 0.017618 1.176403 1.262716 -0.234668 0.894048 0.846087 0.155385 1.485409 0.548180 -0.538362 1.799501 1.643591 -0.018452 -0.055550 1.369742 -0.114202 1.390328 0.259074 0.042994 1.686489 1.577929 1.101747 0.910738 1.275033 1.551448 -0.470543 0.270915 0.967255 1.258183 0.779206 -0.048391 0.059919 0.230327 0.613426 -0.093254 0.060220 1.270844 0.903327 0.749882 0.969563 -0.205982 0.438719 -0.055810 0.794898 0.381864 0.712273 1.285002 1.109601 -0.194358 -0.312420 1.444899 1.358767)
+ 9.331672 #(0.000000 0.079756 1.274123 0.242748 1.653992 1.010298 0.069124 1.105608 0.712649 0.147069 0.881231 0.118029 0.750546 1.788014 0.027830 1.272708 0.165339 1.010800 1.540642 0.056164 0.631203 1.425483 0.074709 0.020221 1.222679 1.258267 -0.213263 0.942716 0.842913 0.153516 1.541938 0.569439 -0.609481 1.775851 1.661559 -0.036923 -0.056544 1.360357 -0.139257 1.421746 0.236697 0.038033 1.735510 1.591847 1.155343 0.935029 1.251635 1.551146 -0.517170 0.323206 0.983086 1.267628 0.816641 -0.067421 0.069521 0.253905 0.636971 -0.033337 0.095910 1.245672 0.932525 0.769237 0.994180 -0.196626 0.441370 -0.029695 0.780619 0.362924 0.724959 1.336212 1.118087 -0.122612 -0.314523 1.459563 1.388041)
)
;;; 76 even --------------------------------------------------------------------------------
#(76 11.890932162956 #(0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 1 1 1 0 1 1 1 0 0 1 1 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 0 1 0 1 1 1 1 1 1 1 0 1 1 0 0 1 0 1 1 1)
11.477294510597 #(0 0 1 0 1 0 1 0 0 1 0 0 1 1 0 0 0 0 0 1 1 1 0 1 0 1 0 0 1 0 1 1 1 0 1 1 1 0 0 1 1 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 1 0 1 1 0 0 0 0 1 1 1)
- 9.578259 #(0.000000 -0.027717 1.788509 1.293022 1.311529 0.281777 1.041454 1.019635 0.147581 0.050480 1.377104 1.095074 1.203270 1.626190 0.310764 0.423869 1.714763 1.599530 0.843904 1.925257 1.258389 1.235081 1.263847 1.326312 1.064083 1.458363 1.368306 0.779322 0.753608 0.330012 0.992675 1.273525 0.419492 0.173309 1.234342 1.475901 0.410715 0.858465 1.807939 0.512056 0.465176 0.566722 1.027961 1.298536 0.478387 1.033616 0.293065 1.303065 1.520858 1.492545 1.553009 1.600716 0.031413 1.244548 0.100396 1.224864 0.597514 -0.091834 1.500762 0.101032 1.452770 0.695338 0.587197 0.611462 1.365870 1.623946 0.027822 -0.123219 0.212298 1.714179 0.862685 1.360933 0.284003 0.928386 0.649130 1.668310)
+ 9.518462 #(0.000000 0.007102 1.766520 1.283039 1.306320 0.300694 0.991906 1.015442 0.159895 0.073256 1.389553 1.112314 1.217850 1.634051 0.318110 0.447371 1.732770 1.585281 0.806959 1.941316 1.221489 1.226185 1.264870 1.353289 1.004354 1.417651 1.341778 0.795065 0.738722 0.366548 0.979199 1.268732 0.452506 0.191636 1.204872 1.448517 0.411603 0.872182 1.798406 0.548831 0.486894 0.580940 1.042247 1.273895 0.504459 1.022454 0.322789 1.300186 1.523315 1.479912 1.553911 1.574697 0.024794 1.222326 0.067579 1.184078 0.605982 -0.101076 1.486789 0.060260 1.474799 0.695232 0.605497 0.638685 1.374242 1.620993 0.041158 -0.178994 0.221755 1.688517 0.851815 1.330989 0.267702 0.939803 0.678228 1.667414)
)
;;; 77 even --------------------------------------------------------------------------------
@@ -4179,20 +4129,20 @@
11.875939332637 #(0 1 0 1 1 0 0 1 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 1 1 1 0 1 1 0 0 0 0 0 0 1 1 1 0 1 1 0 1 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1)
11.594018936157 #(0 1 0 1 1 1 1 1 0 1 0 0 1 1 1 0 0 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 1 1 0 1 0 1 1 0 1 1 0 0 1 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1)
- 9.694956 #(0.000000 -0.026141 -0.082255 -0.062883 1.467720 1.266145 0.400644 0.656486 1.328805 0.658760 1.486041 1.063040 -0.152009 1.232600 1.638047 0.247123 0.369306 1.471948 0.710551 1.133949 0.896170 1.572979 0.431588 1.426144 1.880495 1.432925 0.802058 0.708086 0.997021 0.650048 1.424225 -0.031892 0.669430 1.385691 -0.010699 1.063565 0.836589 0.864712 0.289197 0.253090 0.577955 0.978779 0.025323 0.656774 0.027348 1.009380 0.680008 1.127730 1.844640 0.234076 0.033043 1.698279 1.157017 0.069341 1.932719 0.362854 1.807824 1.107396 0.765046 1.005565 0.981635 0.944022 0.794472 0.351739 0.832915 0.919715 0.465552 1.370159 1.212753 1.733064 1.689638 0.922747 0.716748 1.170472 1.773798 1.395038 1.046694)
+ 9.598760 #(0.000000 0.046960 -0.182835 -0.107367 1.480998 1.391242 0.440437 0.728090 1.361320 0.604484 1.479508 1.037636 -0.139197 1.258498 1.637566 0.251309 0.378003 1.409983 0.731732 1.088315 0.944246 1.528908 0.426313 1.414074 1.874133 1.379768 0.753274 0.672628 1.059918 0.617643 1.347060 -0.103095 0.754082 1.400135 0.035930 0.995454 0.794050 0.861832 0.115411 0.150362 0.550954 0.995591 0.007776 0.645418 0.134706 0.892224 0.617985 1.136845 1.899598 0.296746 -0.024275 1.716298 1.161528 0.137743 1.863751 0.242811 1.872154 1.056635 0.679792 0.871383 0.900868 0.907828 0.793173 0.290093 0.733098 0.943544 0.421332 1.245560 1.245722 1.857776 1.711673 0.851528 0.686790 1.246957 1.831229 1.356360 0.982182)
)
;;; 78 even --------------------------------------------------------------------------------
#(78 11.940728787203 #(0 1 0 0 1 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 0 1 0 1 0 0 0 0 1 1 1 0 1 0 0 1 1 0 1 0 0 1 1 1 0 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 0 1 0 1 1 1 1 1 0 0)
- 9.805343 #(0.000000 0.033965 0.314955 0.633817 0.578538 1.138410 1.713246 0.390319 0.213126 0.765913 0.575369 0.415567 0.371693 1.039166 0.362642 0.409704 0.672395 1.449498 1.325213 0.562693 1.859755 -0.142620 0.423124 0.283962 -0.113845 0.605119 0.284875 -0.170462 0.861396 0.934827 1.520977 0.874649 1.336816 -0.210180 1.374398 0.529904 1.809739 -0.121240 1.347594 1.219329 0.759611 1.833400 1.098251 0.777328 0.208967 0.550432 -0.083015 1.810261 0.411162 0.615042 1.227983 0.568890 1.257938 0.863356 0.001444 0.467300 0.445471 0.619626 1.196780 0.435162 0.877411 1.603490 1.517293 1.762862 1.774492 0.864910 1.213284 0.438211 -0.423990 1.820282 1.153563 1.106543 0.279767 0.517852 0.239614 1.470719 0.058059 1.349132)
+ 9.750453 #(0.000000 0.022585 0.257946 0.581877 0.629681 1.203180 1.731545 0.314370 0.265769 0.775409 0.609865 0.373630 0.327048 1.051737 0.332970 0.376272 0.730926 1.433757 1.441404 0.543335 1.826312 -0.112779 0.456126 0.235878 -0.085646 0.571253 0.183066 -0.150475 0.795366 0.992141 1.607371 0.891145 1.325713 -0.189825 1.489484 0.642944 1.849847 -0.117540 1.321661 1.278841 0.689219 1.847781 1.042849 0.823395 0.316609 0.499896 -0.010696 1.843007 0.445837 0.541895 1.213511 0.566450 1.316061 0.790850 -0.099139 0.413973 0.402614 0.571072 1.275164 0.508760 0.984314 1.630897 1.445224 1.724888 1.772104 0.898984 1.224472 0.515000 -0.367237 1.869528 1.084993 1.119551 0.288870 0.487783 0.183913 1.506064 0.013136 1.397293)
)
;;; 79 even --------------------------------------------------------------------------------
#(79 12.421415328979 #(0 0 1 1 1 1 1 0 1 0 0 1 1 0 1 0 0 1 1 1 0 0 1 0 1 1 0 0 1 0 1 0 0 0 1 1 0 0 1 0 0 1 1 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 1 0 0 1 0 0 0 0 1 1 1)
11.878196632448 #(0 0 1 1 0 1 0 0 1 0 0 1 1 0 1 0 0 1 1 1 0 0 1 1 1 1 0 0 1 0 1 0 0 0 1 1 0 1 0 0 0 1 1 1 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 1 0 0 0 0 1 1 1)
- 9.803774 #(0.000000 -0.032842 1.057255 1.358141 -0.043921 0.415540 1.705804 0.177264 1.809710 1.288618 -0.261403 1.579379 1.712153 1.083358 0.912438 0.394570 1.170323 0.872646 1.599855 0.429149 0.387359 0.911933 1.431258 0.678967 1.386722 0.752964 0.371688 1.643592 0.383472 1.093651 1.665838 0.979890 1.708019 1.588513 1.140682 1.221291 0.778144 1.150750 1.626484 0.849089 0.273284 1.056527 1.166064 1.958492 0.768768 0.686386 1.194186 1.894654 1.202881 1.221332 0.596108 0.770130 1.466692 1.090306 1.489693 0.643622 0.061912 0.527095 -0.046138 1.853882 1.479588 1.730054 1.199700 0.156412 -0.106956 -0.024832 0.317422 0.245188 1.037478 0.979943 0.807104 1.392689 1.414777 0.294616 -0.106349 1.639247 1.665077 1.502767 0.614742)
+ 9.773977 #(0.000000 -0.030330 1.016307 1.377138 -0.136163 0.412956 1.687642 0.220395 1.752596 1.287147 -0.239274 1.593566 1.735116 1.094851 0.927759 0.327713 1.145125 0.825432 1.629397 0.384544 0.406674 0.912155 1.405906 0.712555 1.397803 0.725942 0.389657 1.658404 0.396725 1.171783 1.699428 0.943369 1.700436 1.561234 1.152590 1.139015 0.772205 1.123463 1.558736 0.870278 0.275875 1.038405 1.169070 1.963582 0.709605 0.681756 1.259106 1.927134 1.222270 1.173359 0.614838 0.753454 1.505548 1.114908 1.494095 0.589210 0.015241 0.526358 -0.076067 1.829160 1.483122 1.718381 1.180971 0.114314 -0.053756 -0.089693 0.313860 0.208722 0.995704 1.013772 0.815097 1.417878 1.369272 0.323256 -0.079417 1.607511 1.651896 1.548503 0.591535)
)
;;; 80 even --------------------------------------------------------------------------------
@@ -4201,7 +4151,7 @@
12.095606803894 #(0 1 0 1 1 1 0 1 1 0 1 0 0 1 1 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 1 0 1 1 0 1 0 1 0 0 0 1 0 0 0 1 1 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 1 0 0 0)
11.989325523376 #(0 1 0 0 1 0 0 1 1 0 1 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 0 0 1 1 0 0 1 1 1 1 0 1 1 0 1 0 1 1 0 0 0 0)
- 9.859509 #(0.000000 0.044311 0.906934 1.246474 1.376053 0.755323 0.517558 1.416484 1.731716 0.164641 0.630834 0.118758 0.030723 0.157535 0.958556 0.777635 1.715377 0.254599 0.005190 0.938164 0.890515 0.379679 0.040484 0.896746 0.347891 0.862595 0.146552 1.340089 0.590827 1.970437 0.388628 0.133448 0.514977 0.759462 0.685018 0.534297 1.289707 1.117834 0.318848 1.762761 1.473898 1.575056 0.024056 1.560262 0.777773 -0.020456 1.616821 1.872405 1.422095 1.222947 0.529200 1.582757 0.539467 0.640693 1.118304 1.682600 1.224739 -0.102970 0.356727 0.982768 0.946549 0.787071 1.002608 0.046442 0.081618 1.540582 1.544412 1.590455 0.953113 1.556143 0.386367 1.173457 0.172999 1.492639 0.247354 0.807548 1.815030 0.418877 1.535326 1.692794)
+ 9.794468 #(0.000000 0.080293 1.081196 1.285011 1.316422 0.729124 0.529908 1.417138 1.769282 0.204183 0.703112 0.119959 0.047449 0.120381 0.911049 0.778823 1.782657 0.277672 0.040349 0.967776 0.868929 0.402093 0.094496 0.881338 0.369149 0.981006 0.110667 1.260356 0.651909 1.953645 0.378542 0.202656 0.521020 0.714556 0.705593 0.540473 1.252527 1.091780 0.318776 1.750833 1.418582 1.618091 -0.027051 1.636355 0.702202 -0.014224 1.644060 1.903649 1.421139 1.250015 0.453353 1.510764 0.574579 0.623550 1.121192 1.647203 1.203559 -0.084481 0.383212 0.975431 0.958642 0.847726 1.040614 0.011726 0.068107 1.581414 1.546093 1.580465 0.928070 1.524723 0.394443 1.129467 0.140645 1.532327 0.248585 0.778553 1.848814 0.429336 1.493088 1.608107)
)
;;; 81 even --------------------------------------------------------------------------------
@@ -4209,7 +4159,7 @@
12.039585160315 #(0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 1 1 1 1 0 1 0 1 1 1 1 0 1 1 0 0 1 0 0 1 1 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 1 0 0 0 1 1 1 1 1 0)
11.979215621948 #(0 0 1 0 1 0 1 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 1 1 1 1 1 1 0 1 1 1 1 1 0 1 0 0 1 0 0 1 1 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 1 0 0 0 1 1 1 1 1 0)
- 10.023885 #(0.000000 -0.012679 0.722166 0.666127 0.555601 1.014385 1.674830 1.874319 1.878772 1.570135 1.361855 0.838148 0.131277 0.531922 0.461248 0.217502 0.325306 1.120324 0.616078 1.483640 1.212521 -0.002438 0.445437 0.501817 0.929777 0.477908 1.503718 1.815372 0.079806 0.490328 0.086052 1.606512 0.177859 1.758599 1.246072 0.822487 -0.143037 0.916183 0.489735 0.588316 0.854265 0.673267 1.512358 -0.034317 1.161919 -0.015218 0.355229 1.322647 0.090751 0.868960 1.356347 0.760889 0.332675 0.860280 0.904117 1.695990 0.391809 0.676379 0.997633 0.953370 0.596012 0.344474 0.657816 1.490705 1.831876 1.394602 0.878742 0.034840 0.122983 1.358809 1.586271 0.883887 0.154112 1.522211 1.903966 0.500835 1.922369 1.784420 1.814586 0.807994 0.171080)
+ 9.909988 #(0.000000 -0.027044 0.670925 0.672287 0.556422 0.959061 1.660404 1.827490 1.905204 1.572938 1.373745 0.831711 0.128112 0.570430 0.434295 0.195583 0.358256 1.146370 0.628086 1.483182 1.214550 -0.065975 0.458916 0.501501 0.929542 0.491767 1.503491 1.754954 0.111944 0.504737 0.092861 1.544656 0.164190 1.755634 1.221889 0.787583 -0.143678 0.905795 0.441179 0.584480 0.876410 0.663568 1.537778 -0.028267 1.158967 -0.048259 0.437283 1.306139 0.048632 0.836907 1.320011 0.768327 0.367308 0.809095 0.904707 1.604869 0.430890 0.663938 0.954948 0.951226 0.568565 0.312704 0.653386 1.519386 1.820067 1.378419 0.869714 0.026266 0.117129 1.358608 1.578943 0.853699 0.160601 1.528143 1.910946 0.431626 1.950106 1.853442 1.792735 0.765719 0.185923)
)
;;; 82 even --------------------------------------------------------------------------------
@@ -4217,14 +4167,14 @@
12.071621513807 #(0 0 0 0 0 0 1 1 1 0 0 1 1 0 1 1 0 0 1 0 1 1 1 1 1 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 1 1 1 1 1 0 1 0 1 1 0 1 1 1 0 0 1 1 1 1 0 1 0 0 1 0 1 0 0 1 1 1 0 0 0 1 1 0 1 1 1 0)
11.74796962738 #(0 0 0 0 0 0 1 1 1 0 0 1 1 0 1 1 0 0 1 0 1 1 1 1 1 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 1 1 1 1 0 0 0 0 1 1 0 1 1 1 0 0 1 1 1 1 0 1 1 1 1 0 1 0 0 1 1 1 0 0 0 1 1 0 1 0 1 0)
- 10.025480 #(0.000000 0.009820 0.852566 0.759292 0.411086 0.662404 1.061988 0.754319 1.699080 1.357576 1.545065 0.568581 0.121577 1.104651 0.168721 1.254174 1.690788 1.208437 1.031665 1.127216 0.036096 1.619719 0.201562 1.847260 0.110413 0.776287 0.986461 1.330565 1.520536 1.009572 0.132642 1.050508 1.120266 0.598731 1.614282 1.817091 0.936395 1.658593 0.533421 0.675044 1.777257 0.957724 1.773161 0.004290 1.923696 0.877927 1.741873 0.323672 0.321282 0.750133 0.848808 -0.062697 0.529411 0.481248 -0.001642 -0.035251 1.031388 -0.251242 1.906287 1.843142 1.415698 1.123774 0.277840 1.898144 0.368964 1.236813 1.094107 0.592328 0.054175 0.385303 0.322825 1.027041 1.731223 1.131643 0.495589 -0.125705 0.001435 0.309786 1.704919 0.117625 0.132701 0.014392)
+ 9.953382 #(0.000000 0.031724 0.774798 0.819065 0.377089 0.601165 1.067129 0.770933 1.698988 1.378818 1.586951 0.566029 0.143986 1.089170 0.117735 1.283480 1.713189 1.227818 1.010148 1.137157 0.009792 1.611301 0.192520 1.919930 0.029990 0.776433 0.928614 1.362185 1.510224 1.076957 0.127597 1.036743 1.119141 0.552164 1.573451 1.824573 0.896945 1.667904 0.567853 0.739766 1.805630 0.981931 1.783220 0.022938 1.925154 0.872141 1.736890 0.332363 0.331462 0.751444 0.842916 -0.089203 0.523260 0.461897 0.002728 -0.057606 1.001044 -0.273052 1.909397 1.837304 1.409374 1.095532 0.275452 1.922395 0.370000 1.240969 1.089930 0.572214 0.017414 0.420815 0.334495 1.067155 1.755048 1.122590 0.563590 -0.127624 -0.005391 0.266569 1.732019 0.135590 0.137654 -0.054731)
)
;;; 83 even --------------------------------------------------------------------------------
#(83 12.587569236755 #(0 1 1 0 0 1 1 0 0 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 0 0 0 1 0 1 1 1 0 1 0 0 1 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 0 0 0 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 0 0 1)
11.931811297539 #(0 0 1 1 0 1 1 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 1 1 1 1 1 1 1 0 0 0 0 1 1 1 0 0 1 0 1 1 0 0 0 1 1 0 0 0 1 0 1 0 1 1 0 0 1)
- 10.137362 #(0.000000 -0.003097 1.588015 0.057568 0.989143 0.453251 1.750062 0.768937 -0.016450 1.220067 0.483072 0.504928 0.372297 -0.307105 1.805936 1.044981 0.289736 1.302421 -0.082188 1.350289 1.034812 0.490330 1.600227 0.426372 1.789523 0.346390 0.375585 1.147511 1.665630 0.318275 0.229615 0.858681 1.210183 1.822327 0.885159 0.058640 0.078296 0.122738 1.517926 1.249504 0.517334 1.612432 1.598756 0.099560 0.378423 0.231337 1.088674 1.608521 0.361670 1.916309 -0.154142 1.210859 1.430733 1.521556 0.697114 1.603715 -0.101829 0.353292 1.476903 1.675952 1.004465 0.329601 0.882636 0.821543 0.373905 1.843240 0.572776 0.869296 1.519777 0.700234 0.791857 0.158540 -1.868607 0.568641 0.447638 0.536975 1.143000 1.146640 0.900765 1.422445 1.096636 1.644871 0.386038)
+ 10.012830 #(0.000000 0.007150 1.660733 0.026705 0.988634 0.519698 1.748216 0.724642 -0.002065 1.203459 0.542521 0.552236 0.355051 -0.280811 1.860850 1.077444 0.289999 1.367899 -0.007245 1.441041 1.042429 0.384293 1.668592 0.362450 1.913394 0.311991 0.390492 1.123208 1.742283 0.339805 0.337553 0.828425 1.173919 1.859982 0.916690 0.121431 0.033054 0.068777 1.483981 1.360370 0.541507 1.677331 1.620391 0.106849 0.379898 0.194163 1.101152 1.701842 0.354788 1.976951 -0.104254 1.306452 1.419026 1.639418 0.643505 1.580059 -0.085660 0.266992 1.468804 1.673858 0.941494 0.340224 0.870292 0.874394 0.376971 1.808311 0.556260 0.797119 1.586757 0.760885 0.716577 0.130548 -1.846039 0.496570 0.350160 0.463769 1.204343 1.241721 0.996244 1.549869 1.164389 1.673839 0.353222)
)
;;; 84 even --------------------------------------------------------------------------------
@@ -4232,7 +4182,7 @@
12.50866273996 #(0 0 0 1 1 0 1 0 1 0 1 1 1 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 0 0 0 1 1 1 0 1 1 0 0 1 1 1 1 1 0 0 0 1 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 0 1 1 1)
12.426499838032 #(0 0 1 1 0 0 0 0 0 1 0 1 1 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 0 1 1 0 0 1 1 1 0 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 1 0 0)
- 10.107738 #(0.000000 0.024855 0.682924 -0.115844 0.845806 0.073710 1.264549 0.449148 1.248443 1.809680 1.794173 1.480799 1.000833 1.358917 0.028552 1.242629 0.339192 1.723725 1.875857 1.788098 -0.277978 1.681815 0.515973 1.050923 1.586056 -0.045723 -0.086961 1.857348 0.619516 0.823185 0.806127 1.102039 0.949470 0.702692 0.228264 0.231154 0.385350 0.909106 0.108936 0.227152 0.943997 0.501548 1.641300 1.737211 0.422615 0.104070 -0.000682 1.378195 1.132469 0.224397 0.823457 0.594186 1.636973 0.617023 0.377053 0.404357 1.361785 1.906784 1.115755 0.442781 1.305937 1.902134 1.563230 1.253583 0.046062 0.206932 0.194718 0.424284 -0.002146 0.153623 1.295791 1.224471 0.783602 1.579975 1.826211 0.913695 1.436386 1.237342 0.483778 -0.073797 1.858078 0.246466 1.097631 1.433013)
+ 10.018504 #(0.000000 0.119518 0.606469 -0.043205 0.817387 0.150761 1.206328 0.449346 1.180413 1.825479 1.740866 1.554035 1.038826 1.302541 -0.030335 1.287086 0.359924 1.722793 1.958151 1.683567 -0.096277 1.686388 0.540869 1.017052 1.644857 -0.027568 -0.068629 1.821238 0.596774 0.691068 0.777683 0.902126 0.804412 0.619737 0.387764 0.208787 0.367037 0.947937 0.058637 0.216251 0.938014 0.406097 1.583232 1.714970 0.508920 0.186500 0.019015 1.464283 1.064502 0.200257 0.755686 0.667344 1.574391 0.666893 0.311064 0.403709 1.475717 1.885105 1.097705 0.383570 1.264012 1.971464 1.664902 1.259576 -0.005707 0.082771 0.212402 0.422972 -0.059125 0.065237 1.213934 1.275630 0.808903 1.651020 1.729258 0.763021 1.357311 1.330528 0.463044 0.024367 1.940574 0.171948 0.962987 1.432487)
)
;;; 85 even --------------------------------------------------------------------------------
@@ -4240,14 +4190,14 @@
12.624737923152 #(0 0 1 0 1 1 0 1 0 0 0 1 0 1 1 1 0 0 1 0 1 0 0 0 1 1 0 1 0 1 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 1)
12.270205061432 #(0 0 1 0 1 1 1 1 0 0 0 1 1 1 1 1 0 0 1 0 1 1 0 0 1 1 0 1 0 1 1 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1)
- 10.237215 #(0.000000 -0.063573 0.153699 -0.069408 0.232006 1.314677 0.555513 0.381220 1.263636 1.506054 -0.054729 0.342569 0.343900 1.713505 1.179621 1.482547 1.024175 1.480087 1.153779 0.596213 1.395172 0.121827 0.788193 0.448427 1.921431 0.227259 -0.134305 1.526015 1.748152 0.018224 0.943533 0.955684 1.349455 -0.087096 0.427555 -0.334010 -0.189184 1.209673 0.946126 1.457404 1.532709 0.078280 -0.034654 0.647517 1.744738 1.115105 0.294949 0.112608 0.994228 0.584566 0.798213 0.492623 1.194578 1.032586 0.846716 0.698631 1.459748 0.810491 0.965384 0.733369 1.178775 -0.117873 0.167046 1.519714 0.772299 0.561052 1.353592 1.476163 0.674084 1.007175 1.245553 0.257311 1.694005 -0.144805 1.206553 0.212420 0.952009 -0.183982 0.683106 0.582900 1.607607 1.090042 1.010742 1.431048 0.667252)
+ 10.127317 #(0.000000 -0.041805 0.120356 -0.083557 0.177751 1.302281 0.492622 0.473796 1.302482 1.590107 -0.028274 0.354559 0.382129 1.698721 1.099875 1.409064 0.986860 1.405758 1.115035 0.629812 1.239969 0.087300 0.721986 0.394629 1.964934 0.238084 -0.137640 1.537040 1.799422 0.106740 0.970654 1.010967 1.258286 -0.098043 0.529818 -0.309289 -0.267927 1.143887 0.937214 1.346722 1.438142 0.116109 -0.087787 0.763043 1.697753 1.160671 0.294813 0.155053 0.985862 0.540904 0.845727 0.433121 1.053940 0.931849 0.855485 0.717733 1.564658 0.754398 0.817470 0.723965 1.063343 -0.097961 0.158401 1.489244 0.842003 0.577032 1.293703 1.452398 0.743091 1.060263 1.350744 0.216955 1.685943 -0.292803 1.195102 0.168301 0.827721 -0.186110 0.699107 0.565472 1.557379 1.123744 0.965258 1.431928 0.513028)
)
;;; 86 even --------------------------------------------------------------------------------
#(86 13.114136440046 #(0 0 1 1 0 0 1 0 1 1 1 0 1 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 0 1 0 1 1 0 1 0 0 1 0 0 1 1 0 0 0 1 0 0 0 1 1 1 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 1 1 1 0 0)
12.791990425787 #(0 0 1 1 0 0 1 0 1 1 1 0 1 1 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 1 0 0 0 1 0 0 0 1 1 1 1 1 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 1 1 1 0 0)
- 10.129535 #(0.000000 0.029820 0.279382 -0.021510 1.524908 0.545600 1.306797 0.907885 -0.096270 -0.281174 0.718305 1.387518 1.682673 0.532222 1.384134 0.647622 1.714370 1.507143 0.495800 0.793223 0.382938 0.337168 0.990849 1.052825 1.799494 -0.099931 0.498434 0.834926 -0.152214 1.846996 1.848463 1.147249 0.063678 1.635307 0.521741 0.478115 0.766249 0.549736 1.645604 1.522263 0.446748 0.953939 1.305837 0.988784 0.474648 1.152053 0.200393 0.304483 0.286581 1.845227 0.128466 0.638597 1.654316 0.626804 0.820774 0.614062 1.382528 1.096241 1.439290 0.301695 0.905842 0.591694 0.698266 0.878066 1.176280 0.727384 1.476222 0.996990 1.075376 0.276612 1.613686 1.357068 0.624856 1.146534 0.620013 1.265961 -0.070049 0.752883 0.381121 0.086094 0.273692 -0.026213 1.590495 0.622243 0.643753 0.126377)
+ 10.041675 #(0.000000 0.112103 0.317771 0.005112 1.532171 0.585805 1.332101 0.950402 -0.087351 -0.289302 0.726863 1.385797 1.698763 0.465161 1.348953 0.617193 1.759126 1.514938 0.417638 0.774824 0.408721 0.357751 1.012052 1.023860 1.786553 -0.054863 0.490374 0.948081 -0.113774 1.782919 1.788938 1.199212 0.070892 1.574350 0.493308 0.457365 0.793946 0.575572 1.671337 1.489789 0.449252 0.994558 1.335453 1.034148 0.489141 1.174185 0.271978 0.357430 0.343206 1.776009 0.146154 0.657341 1.628403 0.669748 0.811691 0.659678 1.421771 1.161627 1.352316 0.311754 0.821306 0.614966 0.694564 0.801004 1.121973 0.742996 1.478235 1.010668 1.117066 0.257915 1.606296 1.407133 0.604530 1.093920 0.579647 1.300207 -0.057475 0.730878 0.342553 0.064756 0.251045 -0.077083 1.590027 0.661095 0.670198 0.180184)
)
;;; 87 even --------------------------------------------------------------------------------
@@ -4256,7 +4206,7 @@
12.669403362513 #(0 0 1 1 0 0 1 0 0 0 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 1 0 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0 1 1 1 0 0 1 0 1 0 0 1)
12.625063286678 #(0 0 0 1 1 1 1 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 0 1 1 1 1 1 1 0 0 1 1 1 0 1 1 0 1 1 0 0 1 0 1 1 1 0 1 1 0 1 1 1 0 1 0 0 0 0 1 0 1 1 1 0 0 1 1 0 0 0 0 1 0 0 1 0 1 1 0)
- 10.385551 #(0.000000 -0.030498 -0.126442 0.868173 -0.017026 1.177264 -0.000621 1.049933 0.100224 1.545084 1.057932 0.319867 0.359229 1.564077 0.551235 1.684254 1.033463 0.894296 0.934235 1.039962 1.027546 1.533197 1.516918 1.745280 1.449917 1.695291 0.767011 1.537954 0.701832 0.942111 -0.041080 0.770315 0.867560 0.874002 0.852755 0.076002 1.726796 1.000651 1.514858 0.819311 1.259892 0.524225 0.752482 1.614079 1.663586 0.430418 0.301938 0.802895 0.884519 1.265261 1.552452 0.110414 0.551278 0.377604 1.461436 0.910688 0.666819 0.924163 0.587748 -0.107182 1.215600 -0.182575 0.671358 1.660577 0.494486 0.593997 1.328840 1.292938 0.305658 1.553540 -0.330185 1.491824 1.149207 1.505270 1.449275 1.362443 1.150097 0.692342 0.182218 1.878266 0.993650 1.302222 0.191117 0.303527 0.978350 -0.171420 0.074262)
+ 10.264978 #(0.000000 0.051891 -0.164469 0.830478 -0.105042 1.127566 -0.007959 1.035173 0.068693 1.589855 1.120202 0.315159 0.396288 1.590240 0.606863 1.733099 1.071084 0.751715 0.966379 0.951791 1.052113 1.598836 1.430976 1.763276 1.404652 1.761820 0.733045 1.595471 0.712894 0.957319 -0.089674 0.805228 0.945378 0.827432 0.887536 0.114063 1.650002 1.024850 1.462484 0.855451 1.206438 0.583971 0.793531 1.644378 1.662925 0.393919 0.376607 0.730079 0.830976 1.324809 1.585549 0.095969 0.567894 0.397160 1.438897 0.926323 0.686034 0.839673 0.611646 -0.076673 1.137080 -0.043120 0.688238 1.682374 0.456258 0.647858 1.327196 1.333603 0.336229 1.558979 -0.477428 1.504312 1.102083 1.526490 1.312932 1.405275 1.122630 0.623585 0.220971 1.887127 0.990744 1.354669 0.101387 0.240228 0.967652 -0.104090 0.127372)
)
;;; 88 even --------------------------------------------------------------------------------
@@ -4265,7 +4215,7 @@
12.675436588537 #(0 0 0 1 1 0 0 1 0 0 1 0 0 1 1 0 0 0 1 1 1 0 0 1 1 1 1 1 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 0 0 1 1 1 0 1 1 1 0 1 0 1 0)
12.661032846106 #(0 0 0 1 1 1 1 1 0 0 1 0 1 0 1 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 1 0 1 0 0 0 0 0 1 0 1 0 1 1 1 0 1 1 0 1 0 0 1 0 1 1 0 0 1 1 1 0 0 0 1 1 0 1 1 1 0 1 0 0 0 0 0 1 1 1)
- 10.351218 #(0.000000 -0.000605 0.856571 -0.187533 0.460364 -0.064377 0.458978 1.812989 0.092469 0.344183 0.280568 0.572733 1.381950 0.434737 1.189374 0.215382 0.797851 0.218451 0.580893 0.945973 1.511683 0.188987 1.472178 0.919816 0.056464 1.542190 1.177863 1.056557 0.236267 1.040000 -0.051123 -0.065607 0.947241 0.001675 0.497817 0.693191 -0.099608 0.618777 1.318530 1.010960 1.035685 0.611054 1.852629 1.369986 0.041765 -0.019736 1.355258 1.480465 1.212245 1.156365 0.321381 0.275930 0.673530 1.001180 0.392657 1.033441 1.582937 1.479015 -0.007042 0.399990 -0.050427 1.686219 -0.079753 0.565993 -0.142705 1.230730 0.496020 1.436081 1.224891 0.505391 0.450450 0.763318 1.735470 0.873277 0.300162 0.640105 0.608478 0.898060 1.382437 0.187598 1.136712 0.737181 0.282045 0.236383 0.432849 0.574539 1.060149 1.632654)
+ 10.282719 #(0.000000 -0.031704 0.889865 -0.226772 0.496647 -0.125229 0.538839 1.851924 0.073534 0.334529 0.292350 0.601520 1.333533 0.487612 1.205420 0.246225 0.743154 0.167831 0.588410 1.038134 1.448823 0.193430 1.502985 0.831812 0.096762 1.659110 1.290299 1.085871 0.269578 1.001295 -0.057549 -0.050691 0.982967 -0.070971 0.554784 0.658756 -0.109152 0.712969 1.278170 0.973843 1.081003 0.624607 1.886031 1.360370 0.025529 0.009082 1.282720 1.492047 1.208241 1.151094 0.327256 0.345925 0.681538 0.913478 0.388362 1.049536 1.592503 1.537300 0.000251 0.414487 -0.102227 1.748582 -0.103873 0.511229 -0.173498 1.222481 0.499513 1.400485 1.181083 0.476376 0.449619 0.845202 1.682705 0.745095 0.254032 0.711540 0.655790 0.882233 1.455250 0.232369 1.172324 0.777896 0.313053 0.279497 0.501294 0.502430 1.084290 1.640203)
)
;;; 89 even --------------------------------------------------------------------------------
@@ -4274,7 +4224,7 @@
12.707793861614 #(0 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 1 1 0 1 1 1 0 0 1 1 0 1 0 1 1 1 0 1 0 1 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 0 0 0 1 1 1 0 0 0 1 1)
12.335865540187 #(0 0 1 1 0 1 1 1 1 0 0 1 1 1 1 0 0 0 1 1 1 0 1 1 1 0 0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 0 1 0 1 1 0 1 0 0 0 0 1 1 1 0 1 0 1 0 1 0 0 1 0 0 1 1 0 0 1 1 1 1 1 1)
- 10.435103 #(0.000000 -0.025846 0.791149 0.387498 1.362243 0.723846 1.660116 0.182914 0.383577 0.376102 1.419932 0.826200 1.606480 1.151738 1.526313 1.845816 1.371676 -0.009951 0.567132 0.188067 0.606019 0.212127 1.202112 0.364401 0.187430 0.446097 0.121911 0.411273 1.578419 -0.250644 1.669235 0.191252 0.337826 1.289285 0.901409 0.735413 0.710196 0.774915 1.308400 -0.008319 0.101964 0.825309 0.714085 0.150482 0.539140 1.675912 0.887892 0.623637 1.640076 0.990464 1.636915 1.114091 0.237131 0.470527 -0.189489 1.342718 -0.250467 0.218915 1.464439 1.307398 0.990995 1.083919 0.221186 0.987139 1.829610 1.722776 1.209975 1.229258 1.278270 1.472096 1.084234 0.041033 0.187205 1.043165 0.937429 0.043940 0.781694 0.206506 0.476272 1.658043 0.461159 1.182784 1.117313 0.597256 0.562076 1.402239 1.642187 0.658987 1.392897)
+ 10.334022 #(0.000000 -0.046014 0.890218 0.450388 1.383211 0.791112 1.682012 0.180701 0.362912 0.282793 1.386290 0.821845 1.674976 1.204454 1.501012 1.789130 1.436887 -0.012769 0.623634 0.237637 0.500667 0.225786 1.147959 0.400359 0.181689 0.461401 0.096052 0.400440 1.587519 -0.266601 1.633685 0.183320 0.255031 1.319538 0.873188 0.786970 0.663868 0.738194 1.332695 -0.059020 0.127079 0.778379 0.730305 0.166714 0.445025 1.725378 0.841470 0.592531 1.697210 0.889599 1.620103 1.191317 0.228902 0.469308 -0.196060 1.364573 -0.340279 0.189413 1.488514 1.366696 0.952757 1.031173 0.211830 1.080290 1.848063 1.800477 1.266131 1.176829 1.241313 1.441199 1.121646 0.037503 0.135851 1.000317 0.876323 -0.044357 0.773957 0.204180 0.489944 1.758511 0.480086 1.152184 1.083510 0.544989 0.633650 1.437441 1.664974 0.632729 1.384724)
)
;;; 90 even --------------------------------------------------------------------------------
@@ -4283,7 +4233,7 @@
12.781593429563 #(0 1 1 1 0 0 1 0 1 1 1 1 1 1 0 1 1 0 0 1 0 1 1 1 0 1 1 1 1 0 0 0 1 0 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 0 1 0 0 1 1 0 0 0 1 0 1 1 1 0 1 1 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0)
12.716424196959 #(0 1 1 0 1 1 0 0 0 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 0 0 1 1 1 1 0 0 0 0 0 0 1 1 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 0 1 1 0 1 0 0 1 1 0 0 1 1 0 1 0 1 0 0 0 1 0 0 0 1 1 1 1 1 0)
- 10.548621 #(0.000000 -0.016911 0.046387 0.990785 0.978203 0.263290 0.094020 0.411256 0.381250 1.207805 0.455460 0.430161 0.859282 0.941664 0.603360 1.783896 0.328806 0.422427 1.428348 0.237116 0.359924 -0.072018 0.035642 0.372793 -0.066936 0.666559 0.732283 1.129938 0.707667 1.452997 0.565328 -0.125625 -0.050817 1.728299 1.226825 1.303589 1.286633 0.774680 0.657464 0.291708 0.816684 0.559868 1.517220 0.982380 0.535295 -0.008068 0.444426 1.226361 0.690748 0.658266 1.385595 1.027535 1.074633 -0.464763 1.107742 1.301175 0.853633 0.170960 0.129168 1.640821 0.594853 0.048013 0.960789 0.066834 1.848981 1.674735 -0.124927 0.297427 1.251020 0.250396 0.758357 -0.225743 1.210824 0.120142 0.798476 1.292438 1.824510 -1.615339 0.406752 1.095641 0.379550 1.443076 1.281492 -0.387994 0.217162 0.534489 0.220730 1.329627 1.688156 0.799239)
+ 10.457141 #(0.000000 -0.090554 0.014493 1.030226 0.964118 0.299821 0.093258 0.497005 0.393480 1.054770 0.512340 0.419226 0.894158 1.001334 0.620050 1.809104 0.288408 0.377720 1.549455 0.185641 0.281462 -0.109751 -0.007781 0.337830 -0.094447 0.701386 0.805799 1.210952 0.654615 1.512482 0.542518 -0.165351 -0.075754 1.743042 1.144130 1.232884 1.229129 0.750059 0.627711 0.300553 0.796123 0.559842 1.540811 0.982711 0.581939 0.007619 0.447799 1.232335 0.662519 0.692186 1.334198 1.046566 1.104606 -0.406035 1.146592 1.224199 0.946645 0.200629 0.107390 1.686323 0.604227 0.018753 0.995716 0.025733 1.906104 1.692688 -0.123286 0.330734 1.255288 0.281028 0.740748 -0.215042 1.305837 0.192857 0.796715 1.246367 1.796455 -1.604726 0.450332 1.084529 0.506041 1.496010 1.309888 -0.366489 0.255275 0.636622 0.245417 1.236313 1.793392 0.824661)
)
;;; 91 even --------------------------------------------------------------------------------
@@ -4291,14 +4241,14 @@
13.263186228373 #(0 0 0 1 1 1 0 1 1 0 1 1 1 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 1 0 0 1 1 0 1 1 0 0 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 1 1 1 0 0 1 0 1 1 0 1 0 1 1 1 1 1 0 1 1 1 0 1 0 1 1 0 0 1)
12.853587071592 #(0 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 1 0 1 0 0 1 1 1 0 1 0 1 1 1 1 1 0 0 1 0 1 1 1 1 0 0 1 0 1 0 0 1 1 1 0 0 1 0 0 1 1 1 1 1 0 1 1 1 0 1 1 1 0 1 0 1 1 1 0 0)
- 10.486707 #(0.000000 -0.052834 0.758306 1.013642 0.256383 0.285942 1.276201 1.083557 0.113624 1.106661 -1.827079 0.240534 1.480023 1.558156 1.334098 0.205647 1.911176 1.386276 1.490391 -0.134960 0.857079 0.601790 1.201790 -0.100648 0.394647 0.462161 1.074288 1.784273 0.416487 -0.227701 0.128565 1.453629 -0.114995 0.343100 1.198614 0.103647 0.308118 1.121383 0.064541 0.663613 0.384593 0.859972 1.111664 1.139763 0.890722 1.519531 1.172848 1.105557 0.746448 1.175806 0.165568 1.183876 0.339536 1.931285 0.701275 0.502440 1.915492 0.702209 0.874815 1.887377 1.268827 0.023587 0.632085 0.698373 0.645140 1.850536 1.590292 0.509100 0.477163 0.539411 1.005020 0.325533 -0.111065 1.734003 1.899748 1.556337 0.795130 -0.158725 0.642726 0.410168 0.586050 0.255224 1.445787 1.610467 1.247243 0.353988 0.161425 0.513910 0.762355 0.738148 0.511260)
+ 10.380563 #(0.000000 -0.025220 0.717179 1.038896 0.222251 0.228013 1.268641 1.107199 0.059274 1.069428 -1.911652 0.215186 1.531780 1.564889 1.393102 0.194759 1.962076 1.425188 1.560073 -0.197878 0.869191 0.597826 1.205900 -0.082029 0.426296 0.419385 1.124000 1.780651 0.387222 -0.187434 0.095464 1.458009 -0.158482 0.270656 1.189661 0.114817 0.288698 1.080431 0.171579 0.725196 0.374645 0.902051 1.086157 1.006901 0.914548 1.525010 1.115648 1.008996 0.672905 1.141174 0.180683 1.058557 0.280367 -0.030350 0.744896 0.486991 1.950976 0.774076 0.865040 1.876111 1.260296 -0.104271 0.648250 0.691702 0.643723 1.817530 1.581477 0.533446 0.497745 0.613490 0.949473 0.386614 -0.188869 1.674296 1.878428 1.584146 0.791229 -0.196388 0.687172 0.411692 0.655098 0.267738 1.503309 1.658178 1.232374 0.286656 0.212378 0.510696 0.814616 0.710138 0.464455)
)
;;; 92 even --------------------------------------------------------------------------------
#(92 13.355320111641 #(0 1 1 1 1 0 1 1 0 1 1 0 1 1 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 1 1 0 1 0 1 1 0 1 1 1 0 1 1 1 0 1 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 1 1 0 0 0 1 0 0 1 1 1 1 1 0 0 0 0 0 1 0 0 1 1 1 0)
12.754180011349 #(0 1 1 1 0 0 1 1 0 1 1 0 1 1 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 1 1 0 0 0 1 0 0 0 0 1 0 0 1 1 1 1 1 1 1 0 0 0 1 1 0 1 1 1 0)
- 10.586437 #(0.000000 -0.040403 0.333239 1.854506 1.520831 0.785233 1.363176 1.720408 1.164736 0.662148 1.041557 0.762334 1.908860 0.856882 1.421692 0.522077 1.177119 1.122354 0.327321 -0.075277 1.767213 1.693611 0.180452 0.368353 1.409294 0.141445 0.674801 0.538310 0.599526 1.408912 0.508519 1.594216 0.069305 1.585704 1.750736 0.071406 0.115015 1.325875 0.665376 0.576265 -0.008050 0.672576 1.845792 1.616643 0.372231 1.161138 1.958887 0.721788 -0.042210 0.881851 0.477813 1.632692 0.551805 0.792021 1.708884 0.245927 0.441443 -0.297908 1.769623 -0.144478 0.895601 1.477401 0.252797 0.091723 0.192148 0.877022 1.158111 1.319001 1.285193 0.584004 1.489028 0.802581 0.978422 0.765047 0.554751 1.358852 1.214412 1.758580 1.952792 0.057110 1.314603 0.640172 -0.073747 1.365034 -0.093069 1.449450 1.129080 0.813120 0.081443 1.598753 1.808977 0.739851)
+ 10.511820 #(0.000000 -0.105506 0.291495 1.852505 1.585054 0.811097 1.393110 1.723895 1.189683 0.686843 1.055781 0.822005 1.828075 0.830184 1.427743 0.448988 1.131443 1.094548 0.414856 -0.115631 1.738385 1.708345 0.190900 0.389683 1.349921 0.190257 0.667806 0.598121 0.628108 1.362797 0.439471 1.542675 0.072998 1.656392 1.723448 0.059500 0.134628 1.288274 0.800218 0.487443 0.065395 0.676806 1.844822 1.642819 0.319920 1.188294 -0.025549 0.726852 -0.051818 0.931928 0.516016 1.580203 0.502042 0.814580 1.661990 0.218665 0.448468 -0.289113 1.809635 -0.176204 0.905899 1.497113 0.182788 0.117034 0.198510 0.851627 1.112991 1.334223 1.261274 0.549689 1.460357 0.857568 0.946196 0.728539 0.552800 1.286292 1.179435 1.706620 1.925744 0.040745 1.291314 0.636392 -0.068970 1.392593 -0.083182 1.470525 1.158193 0.831414 0.098897 1.598731 1.751177 0.774915)
)
;;; 93 even --------------------------------------------------------------------------------
@@ -4306,21 +4256,21 @@
13.143995954461 #(0 0 0 1 1 0 0 0 0 1 0 1 1 1 1 1 0 1 0 1 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 1 1 0 0 1 1 0 1 0 1 0 1 1 1 0 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0)
12.876626968384 #(0 0 0 1 1 0 0 0 0 1 0 1 1 1 1 1 0 1 0 1 0 0 0 0 0 1 0 1 1 1 0 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 0 1 0 0 1 0 0 0 0 1 1 0 0 1 1 0 1 0 1 0 1 1 1 0 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0)
- 10.695657 #(0.000000 0.058016 0.048333 0.510920 -0.240846 0.071462 0.133250 -0.011111 1.477724 1.118531 1.876189 0.917004 0.426698 0.513698 0.956976 0.875749 0.492855 0.996977 0.577985 1.811368 0.802609 0.363234 0.749653 0.729565 0.022757 1.853687 1.799472 -0.163975 0.357102 1.669251 0.949441 0.018901 1.272171 0.776862 1.723803 0.374565 1.850281 -0.191327 -0.036482 1.491416 1.496351 0.871170 1.014848 0.476305 0.927968 1.436770 0.225862 0.434411 1.107221 0.788168 0.464581 0.785031 1.124262 1.048682 1.159655 1.336553 0.983871 1.764444 1.856847 1.041627 1.102996 0.302454 0.215490 0.478646 1.133344 1.077087 -0.136589 1.321405 1.447675 0.868544 0.758380 -0.242187 1.787389 1.298916 0.462943 1.901811 0.682646 1.282184 0.101154 1.770693 0.340717 1.028200 1.784678 1.061575 1.484591 0.526404 0.070056 0.541072 0.039131 1.697492 0.629397 1.113282 0.007439)
+ 10.537937 #(0.000000 0.081111 0.039254 0.464928 -0.278235 0.064151 0.163359 -0.083450 1.416419 1.177440 1.899474 0.852702 0.408484 0.550934 0.946393 0.962298 0.602108 1.010031 0.525723 1.838782 0.707955 0.384561 0.663509 0.739828 0.021819 1.837396 1.709276 -0.169481 0.277168 1.764146 0.908488 0.004963 1.202294 0.822203 1.702546 0.438266 1.865124 -0.164628 0.000841 1.413671 1.403081 0.898435 0.967115 0.421919 0.900343 1.403911 0.276272 0.359914 1.130749 0.858593 0.354166 0.717159 1.069698 0.998641 1.145734 1.305065 0.976941 1.786710 1.852160 1.137628 1.000094 0.425779 0.120537 0.496960 1.166076 1.069564 -0.182962 1.337144 1.333523 0.871924 0.829627 -0.384909 1.879915 1.364411 0.393568 0.004506 0.717224 1.218897 0.062212 1.753348 0.312202 1.042653 1.893363 0.990268 1.535533 0.547706 -0.009406 0.606499 -0.016205 1.711032 0.696068 1.133334 -0.003386)
)
;;; 94 even --------------------------------------------------------------------------------
#(94 13.381710407562 #(0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 0 1 1 1 0 0 1 1 1 1 1 1 0 1 0 0 1 1 0 1 0 1 0 0 0 0 1 0 1 0 0 1 1 0 1 1 1 1 0 1 1 1 0 1 0 1 1 1 1 1 1 0 0 1 0 1 1 1 0 1 1 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 1 0)
12.991560374803 #(0 0 1 0 0 0 0 1 0 1 0 1 1 1 0 1 0 0 0 1 1 1 0 1 1 1 1 0 1 0 0 1 0 1 0 0 1 1 0 0 1 0 1 1 0 1 1 1 0 1 0 1 0 1 1 1 1 0 0 0 1 0 0 1 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 1 0 0 1 0 0 1 1 0 1 1 1 1 1 1)
- 10.738238 #(0.000000 -0.042721 1.592224 1.564721 1.721235 -0.112232 0.477257 0.511185 -0.120035 1.758780 1.486845 0.242251 1.054796 1.651872 0.880609 0.925342 1.467910 1.687890 0.928396 1.112334 1.258905 0.425631 0.640310 0.440765 0.654452 0.154359 0.418608 1.231899 0.026631 0.193006 -0.166417 0.330531 1.820224 0.105501 1.248000 0.843987 0.451564 0.128967 1.791626 1.210977 0.552944 0.592265 1.050165 1.598671 1.789840 1.715326 1.370577 1.697637 1.209591 1.543643 -0.122339 0.848879 0.715517 1.527811 0.010083 1.649582 -0.233573 1.546813 1.401940 0.198352 1.000826 0.193205 0.637340 0.296507 -0.175960 1.245160 1.569527 0.140142 1.524805 0.802386 -0.151662 1.551807 0.131333 0.546037 1.360136 0.616473 0.535174 1.433556 1.097411 1.601380 1.296204 0.122463 0.121217 1.015728 1.380295 1.021854 0.266813 1.681040 1.586926 0.448611 1.505194 0.598564 1.565508 0.751425)
+ 10.616942 #(0.000000 0.008338 1.593438 1.632124 1.787262 -0.058932 0.486704 0.481232 -0.164775 1.731477 1.355102 0.249692 1.086322 1.657582 0.885854 0.940868 1.462212 1.702122 1.017887 1.186735 1.223766 0.421780 0.633425 0.449376 0.669074 0.156206 0.460871 1.208000 0.064752 0.194073 -0.156680 0.369808 1.910191 0.057649 1.226629 0.822274 0.461989 0.136026 1.840173 1.182037 0.590383 0.695666 1.030860 1.583039 1.788283 1.705499 1.379240 1.663714 1.272107 1.635634 -0.131833 0.842721 0.703516 1.515195 -0.062017 1.629453 -0.328401 1.495408 1.374437 0.167178 1.023756 0.315236 0.663666 0.227222 -0.185061 1.242610 1.620365 0.179572 1.498321 0.767413 -0.112441 1.508521 0.181296 0.612143 1.318291 0.598782 0.553407 1.450983 1.109092 1.613673 1.318656 0.082692 0.128815 1.060657 1.398972 1.009888 0.232638 1.622534 1.614947 0.353498 1.460716 0.703605 1.641185 0.761192)
)
;;; 95 even --------------------------------------------------------------------------------
#(95 13.458537482645 #(0 0 0 1 1 1 1 0 1 1 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 1 1 1 0 1 1 0 0 0 0 1 0 1 0 1 0 0 1 1 1 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 1 1 0 1 1 1 0 1 1 0 0 1 0)
12.939489078295 #(0 0 1 1 1 1 1 0 1 1 1 1 0 1 1 1 0 0 0 0 1 0 0 0 0 1 1 0 1 0 1 0 1 0 1 1 0 1 1 1 0 0 0 1 0 1 0 0 0 0 1 1 1 1 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 0 0 1 0 0 1 1 0 0 1 1 0 1 1 0 0 1 0)
- 10.969197 #(0.000000 0.048529 0.257281 0.971460 0.752726 0.036510 0.901226 0.929073 0.143716 1.197846 1.080890 0.083711 0.472711 0.614364 0.878803 0.077575 0.211451 1.633824 0.731148 0.998436 0.488462 1.012404 0.591723 0.304569 1.023689 0.870954 0.734736 1.002587 0.310026 1.816410 -0.000158 1.002652 0.440030 1.568952 1.044729 -0.123519 1.414506 0.704324 1.666375 0.476562 0.073260 1.819079 1.360520 1.886361 1.011228 1.552101 1.268154 1.226999 0.247809 1.701975 0.998689 1.112236 1.077057 -0.009068 0.121768 0.079685 0.415485 0.200150 1.651610 0.222322 1.058101 1.029368 1.311316 0.257067 1.622207 1.544573 1.941667 0.216428 0.975156 1.326530 0.824013 0.781837 0.607070 0.990466 1.549470 1.136590 0.620195 1.253904 1.714255 1.348408 0.077378 1.147902 0.944427 0.364798 0.654276 1.639025 0.161674 1.497872 -0.017472 0.477641 0.762340 1.130846 1.060845 0.735060 -0.113573)
+ 10.884804 #(0.000000 0.019872 0.217087 1.011005 0.794836 0.021670 0.943164 0.894333 0.105269 1.212732 1.091582 0.098277 0.403133 0.537625 0.917812 0.051252 0.192227 1.598897 0.769513 0.955321 0.550073 1.034958 0.639753 0.363966 0.977332 0.817672 0.745884 1.009879 0.281629 1.844487 -0.014989 1.036092 0.459402 1.508494 1.050823 -0.084528 1.400813 0.718703 1.625479 0.479765 0.031806 1.868645 1.359794 1.871925 1.021129 1.510038 1.267676 1.224348 0.238530 1.687323 0.967703 1.145492 1.082445 -0.017089 0.155456 0.065801 0.382212 0.245177 1.634582 0.171898 1.056867 0.989647 1.246200 0.183036 1.674680 1.440597 1.917590 0.206053 0.955538 1.251709 0.864948 0.767659 0.593925 1.004665 1.550376 1.194656 0.569433 1.241431 1.621855 1.388316 0.087684 1.104207 0.911845 0.402190 0.689061 1.609416 0.175448 1.429797 0.030371 0.524868 0.747423 1.110971 0.961259 0.698066 -0.094767)
)
;;; 96 even --------------------------------------------------------------------------------
@@ -4328,14 +4278,14 @@
13.179516746745 #(0 1 1 1 1 1 0 1 0 0 1 0 0 0 0 1 0 1 0 1 0 0 1 1 1 1 0 1 0 0 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 1 0 1 1 1 1 0 0 1 1 1 0 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 1 1 0)
13.077001047978 #(0 0 1 0 1 0 0 0 0 1 0 1 0 0 1 1 0 0 1 1 1 1 0 0 1 0 1 1 0 1 0 0 1 1 1 1 0 0 1 0 0 1 1 1 0 0 1 0 1 1 0 0 1 1 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 1 1 1 0 1 1 0 1 1 1 0 1 0 1 0 0 0 1 1)
- 11.139003 #(0.000000 0.040425 1.485661 0.984855 1.249910 0.841518 0.445772 0.095245 1.134907 0.753039 0.037035 1.433996 -0.025600 0.137929 1.849601 1.206524 1.484937 1.022890 0.074813 0.727813 1.197916 0.436543 1.929619 0.903973 0.878980 0.458675 1.743509 1.241610 0.902359 1.605434 1.655738 1.349816 1.264189 1.123988 0.657664 1.711260 0.094909 0.705061 0.737774 1.588137 1.522953 0.513507 0.556718 0.895962 0.818721 0.652757 1.439014 0.127433 0.407270 1.064470 0.077178 0.558603 -0.065077 -0.031176 1.669980 0.800149 1.958016 0.984285 0.090255 1.565310 0.851984 1.483923 1.680313 1.723866 0.688158 1.408443 0.241873 0.501892 1.366330 0.668337 1.280849 0.828153 0.730831 1.067028 -0.005345 1.539422 1.596320 1.482821 1.487718 0.017230 1.135621 0.701146 1.246481 1.229102 1.750334 1.304782 1.559292 -0.042592 1.625756 0.143872 1.381976 0.773023 1.026038 -0.025756 0.160309 1.797359)
+ 10.880895 #(0.000000 0.039753 1.509441 0.997782 1.162244 0.885571 0.591838 0.146675 1.178286 0.802191 -0.014310 1.502441 -0.117733 0.140139 1.866221 1.277025 1.520403 0.905782 -0.025465 0.720568 1.168828 0.359567 1.944983 0.949916 0.767525 0.427197 1.687494 1.296684 0.811660 1.689962 1.690081 1.337674 1.395991 1.156900 0.593972 1.715650 0.107797 0.731145 0.843559 1.442574 1.414090 0.471220 0.434451 0.756116 0.861721 0.798954 1.387850 0.122520 0.516046 1.054646 0.065161 0.517391 -0.109028 -0.122891 1.823668 0.706257 0.031883 1.047897 -0.003323 1.492116 0.865617 1.681300 1.700984 1.853253 0.648483 1.463161 0.098148 0.537975 1.458776 0.721955 1.232276 0.857336 0.727485 0.910937 -0.028398 1.516907 1.597348 1.402330 1.498028 -0.105604 1.133340 0.523691 1.201046 1.140768 1.722128 1.379676 1.593214 -0.096528 1.587413 0.028671 1.360664 0.742790 1.040487 -0.105822 0.187324 1.823281)
)
;;; 97 even --------------------------------------------------------------------------------
#(97 13.449318349909 #(0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 1 1 0 1 1 0 1 0 0 1 1 1 1 0 0 0 1 1 0 0 0 0 0 0 1 1 0 1 0 1 0 1 0 1 1 1 1 0 1 1 0 0 1 1 0 0 0 0 0 1 1 0)
12.969611395004 #(0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 1 1 1 1 0 0 1 0 0 0 0 1 1 0 1 1 0 1 0 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 1 1 0 1 0 1 0 1 0 1 1 1 1 0 1 1 0 0 1 1 0 0 0 0 0 1 1 0)
- 10.984875 #(0.000000 0.012805 1.666114 0.171956 0.092114 0.139417 1.656292 1.551072 1.427673 1.663899 0.688976 0.794141 1.665913 0.002720 -0.303187 -0.159219 -0.097561 -0.154954 0.529310 1.516822 1.449257 1.654688 1.012846 0.933481 0.448375 0.074415 1.558943 -0.374992 0.641771 0.722719 1.064348 0.462685 0.514472 0.002185 0.939623 1.624137 1.254136 1.278933 0.365839 0.549659 -0.515455 0.673340 0.631907 1.780373 1.626843 0.427590 1.116048 0.909771 1.193254 0.135043 1.692893 1.304106 0.717081 1.406956 -0.388196 1.349923 -0.272518 0.838073 1.912419 1.554606 0.040364 0.472963 0.896372 0.150466 0.332509 0.698953 1.709618 0.826803 1.159729 -0.027705 1.223572 0.018136 1.523267 1.209411 0.928408 1.873770 1.284322 1.043332 1.297519 0.790730 -0.089609 0.154416 0.763363 0.652152 1.584360 1.403914 0.261416 1.371925 -0.017450 -0.185568 0.152755 0.323320 0.956797 0.012979 1.335615 0.842893 1.485598)
+ 10.851524 #(0.000000 0.178639 1.724374 0.228457 0.090597 0.088027 1.632977 1.562559 1.478540 1.759697 0.790911 0.796776 1.734605 0.099055 -0.254169 -0.107999 -0.110211 -0.100930 0.597680 1.581365 1.509348 1.697939 1.004927 0.911675 0.534805 0.012534 1.530761 -0.445120 0.625211 0.759551 1.046493 0.456943 0.474650 0.033724 0.959630 1.685837 1.198537 1.273226 0.371439 0.552583 -0.566262 0.612103 0.659884 1.765378 1.519425 0.406006 1.106208 0.840292 1.097167 -0.042269 1.649868 1.352499 0.725117 1.419427 -0.432557 1.349700 -0.338622 0.924329 1.920201 1.565997 0.014886 0.426841 0.971726 0.186645 0.277694 0.776120 1.769584 0.695976 1.062616 -0.122611 1.165197 0.013142 1.529112 1.285803 0.933276 1.842674 1.311877 0.989778 1.280361 0.857671 -0.129011 0.182042 0.803342 0.691873 1.601803 1.291098 0.254989 1.371197 0.012463 -0.212837 0.150503 0.310159 0.929972 -0.007777 1.191685 1.004627 1.565612)
)
;;; 98 even --------------------------------------------------------------------------------
@@ -4343,7 +4293,7 @@
13.490633234777 #(0 1 1 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 1 0 1 1 0 1 0 0 0 0 1 1 1 0 1 1 0 1 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 1 1 1 1 0 1 1 0 0 0 1 1 0 1 0 1 1 0 1 1 1 0 1 1 1)
13.468658765207 #(0 0 1 0 1 1 1 0 0 0 0 1 0 1 0 0 0 1 1 0 1 0 0 1 0 0 0 1 1 1 1 0 0 1 1 1 1 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 1 0 1 1 0 0 1 1 0 0 1 0 0 0 1 1 1 1 1 0 1 0 0 0 1 1 1 0 1 1 0 1)
- 11.025201 #(0.000000 0.015196 1.589773 0.840811 1.798192 1.513137 1.511013 1.588550 0.880039 0.829870 1.138887 0.423500 1.908100 1.236602 0.726259 0.071071 1.443613 1.873742 -0.245095 0.034014 0.167200 0.334272 0.909280 1.590384 0.125046 1.574640 0.815516 1.240590 1.088660 1.453685 0.841697 1.040995 0.181470 1.132296 0.624290 0.449116 1.431569 1.755295 1.600058 1.319445 1.548963 0.754583 1.623285 0.068256 1.564796 1.442444 0.579588 -0.092260 1.939232 -0.085951 0.839892 0.266112 -0.312688 0.143105 1.869635 1.115339 1.681636 1.106005 0.519101 -1.857258 1.754667 1.842584 -0.100880 1.447685 0.718241 1.420593 1.086735 1.189707 1.940750 1.774129 0.502458 0.735469 0.751283 1.341053 0.493163 0.929510 1.350417 0.164782 1.221413 1.202326 0.404050 0.249335 1.006353 1.455565 0.241876 0.934153 0.212562 0.483538 0.179215 0.539391 0.589055 1.495336 0.910107 1.268741 0.751076 1.778006 0.602237 1.164486)
+ 10.947023 #(0.000000 0.051693 1.574683 0.880312 1.802587 1.491156 1.540249 1.578318 0.878770 0.823566 1.081032 0.381528 1.881810 1.291172 0.698562 0.090906 1.407535 1.887301 -0.178797 -0.023155 0.177257 0.343988 0.857907 1.611839 0.231664 1.581090 0.798472 1.231254 1.110417 1.535079 0.849500 1.035012 0.185305 1.132385 0.613639 0.447763 1.395049 1.729979 1.525764 1.415880 1.532503 0.775445 1.498554 0.032903 1.534423 1.445458 0.560355 -0.105572 1.890559 -0.018323 0.808535 0.281255 -0.325585 0.177015 1.873178 1.128237 1.670142 1.089429 0.568426 -1.847635 1.764546 1.820257 -0.088333 1.455451 0.736099 1.482171 1.119403 1.237227 1.944920 1.814945 0.420033 0.728697 0.818359 1.301920 0.547612 0.915697 1.383299 0.177082 1.213167 1.108614 0.467333 0.222857 1.048370 1.449014 0.306427 0.943104 0.212700 0.501945 0.213137 0.515875 0.611469 1.570998 0.886015 1.245458 0.783794 1.757007 0.591449 1.067301)
)
;;; 99 even --------------------------------------------------------------------------------
@@ -4359,7 +4309,7 @@
13.694382146343 #(0 1 0 1 1 0 1 1 0 1 1 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 1 1 1 0 1 1 1 0 1 1 1 0 0 0 0 0 1 0 1 1 0 1 1 0 1 1 1 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 1 1 0 1 1 1 0 1 0 0 1 0 1 0 1 1 1 1 1 1 0 0 0 1 1 0 0 0 0 0 0)
13.512077331543 #(0 1 0 1 1 0 1 1 0 1 1 1 0 1 1 1 0 1 0 1 0 1 1 0 1 1 1 1 1 0 1 1 1 0 1 1 1 1 0 0 0 0 1 0 1 1 0 1 1 0 1 1 1 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 1 1 0 1 1 1 0 1 0 0 1 0 1 0 1 1 1 1 1 1 0 0 0 1 1 0 0 0 0 0 0)
- 10.966711 #(0.000000 0.025359 0.551342 1.212510 0.001707 1.506879 0.206313 1.135209 1.576662 1.585052 1.157097 0.608726 0.679615 -0.108139 0.301398 0.654467 1.435113 -0.336506 -0.005192 1.597888 1.630187 1.174197 0.179170 0.435435 1.642503 0.282158 1.507753 -0.200830 1.487900 1.472326 0.966807 1.339124 1.656842 1.246884 0.465145 1.232745 0.590852 0.612211 0.478352 1.312278 0.175389 1.973204 -0.211572 0.585129 0.585137 1.485804 -0.241990 1.721653 1.713628 0.451254 0.453420 0.076072 1.532931 0.742516 1.074026 -0.037117 0.152630 0.036517 1.797301 0.083157 -0.077418 0.089078 0.366976 1.196844 0.947965 0.052093 1.477031 0.151185 0.108880 0.737602 -0.287181 0.636951 0.335822 1.666449 0.678593 1.350628 0.982777 0.956487 1.755537 0.695637 1.010739 1.634267 -0.387137 1.576183 1.138628 0.475022 0.064340 1.505322 1.895965 0.228036 1.886691 0.971855 1.703146 0.909282 0.521122 1.312699 0.797390 1.137374 1.657716 1.305393)
+ 10.897144 #(0.000000 0.032874 0.602059 1.166542 0.051662 1.578582 0.266973 1.104007 1.558627 1.571457 1.155411 0.680506 0.726613 -0.143936 0.326319 0.695853 1.500453 -0.364289 -0.026432 1.639147 1.659014 1.150897 0.095404 0.469505 1.597148 0.341660 1.567821 -0.102096 1.530237 1.450345 0.907639 1.323232 1.643685 1.236204 0.471760 1.236486 0.582460 0.624045 0.470632 1.254809 0.212883 1.981963 -0.231020 0.654317 0.583820 1.530528 -0.202129 1.726588 1.723179 0.403708 0.472403 0.102752 1.496215 0.812143 1.108729 -0.017027 0.120695 0.000783 1.779271 0.080276 -0.024624 0.152511 0.361893 1.215072 0.961505 0.083138 1.501723 0.141387 0.133099 0.674936 -0.274587 0.683296 0.342609 1.752172 0.544554 1.332712 0.963659 0.978605 1.738707 0.679671 0.948077 1.615021 -0.355243 1.618737 1.149501 0.490130 0.078966 1.510275 1.902412 0.202786 1.829120 0.997049 1.689402 0.985335 0.551908 1.355760 0.795485 1.136012 1.572404 1.264864)
)
;;; 101 even --------------------------------------------------------------------------------
@@ -4367,7 +4317,7 @@
14.20509180893 #(0 1 1 1 1 0 0 0 1 1 0 1 1 0 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 1 0 0 0 1 0 0 1 0 1 1 0 1 1 0 0 1 1 1 0 1 0 1 0 0 1 1 1 1 1 0 0 1 1 0 1 0 1 1 1 0 0 0 1 1 0 1 1 1 1 0 1 1 1 0 1 1 0 0 0 0 0 1 1 0 0 0 1 0 1)
13.916260357992 #(0 1 1 1 1 0 0 0 1 1 0 1 1 0 1 1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 0 1 0 0 0 1 0 0 1 0 1 1 0 0 1 0 0 1 1 1 0 1 0 1 0 0 1 1 1 1 1 1 0 1 1 0 1 0 1 1 0 0 0 0 1 1 0 1 1 1 1 0 1 1 1 0 1 1 0 0 0 0 0 1 1 0 0 0 1 0 1)
- 11.224206 #(0.000000 -0.014329 1.887234 1.145557 1.843292 1.343847 1.177404 0.302486 1.363538 0.094140 1.316700 0.076819 0.251430 1.513982 -0.315754 1.015063 0.330262 1.588190 0.474504 0.734342 0.686338 0.665130 0.904544 1.537495 -0.114141 1.349246 0.004206 1.718562 0.081932 0.447167 -0.087175 1.635094 1.488618 1.713822 0.931897 -0.027480 1.404271 0.677882 1.076617 0.396979 1.186951 1.169471 0.708500 1.480762 1.922234 -0.046571 1.812354 0.014506 0.304969 1.388346 0.095543 0.528293 1.693333 1.439052 0.017550 0.453421 0.812364 1.937630 0.177821 0.106836 1.702542 1.090672 0.583887 0.212259 1.070696 1.219681 0.618397 0.649474 -0.067691 0.111626 -0.013645 1.504259 1.292997 0.108902 1.296704 0.394423 0.924242 1.665721 1.554615 0.354418 1.121104 0.837895 1.482531 0.145874 1.706029 1.411826 1.176400 1.098408 1.465842 1.582265 1.021186 0.043175 0.967432 0.800068 1.338453 1.405061 0.969754 -0.064055 0.713120 0.681593 1.607334)
+ 11.110536 #(0.000000 -0.064627 1.938015 1.231088 1.869087 1.333171 1.071043 0.293041 1.371541 0.086229 1.311261 0.112921 0.331394 1.597507 -0.319240 1.019041 0.402060 1.668795 0.530790 0.664542 0.764839 0.596290 0.925463 1.421818 -0.190900 1.325939 0.016987 1.805851 0.081778 0.458724 -0.232835 1.636363 1.419113 1.682076 0.993073 -0.055775 1.432522 0.736324 1.017875 0.449504 1.291730 1.257648 0.707335 1.482908 1.873121 -0.002948 1.853642 0.073655 0.255568 1.498031 0.073302 0.582546 1.774054 1.441901 0.112043 0.453365 0.757002 1.892475 0.157881 0.146419 1.878050 1.105344 0.613535 0.153439 1.025810 1.279807 0.596002 0.798695 0.009941 0.042915 0.029663 1.472359 1.264253 0.043468 1.383116 0.368239 0.892087 1.673795 1.523340 0.420572 1.092077 0.820405 1.480837 0.178280 1.705286 1.430908 1.201520 0.975261 1.421850 1.613073 0.986910 0.218350 0.914955 0.851341 1.279049 1.435586 0.938516 0.039153 0.726386 0.705206 1.600621)
)
;;; 102 even --------------------------------------------------------------------------------
@@ -4375,7 +4325,7 @@
13.955191612177 #(0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 1 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 1 0 0 1 0 1 0 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1 0 1 1 1 0 1 1 0 0 1 1 1 0 0 0 1 1 1 0 1 1)
13.554303556646 #(0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 0 1 1 1 0 1 0 0 1 1 0 1 1 1 0 0 0 1 0 0 1 0 1 1 1 0 1 0 0 1 0 0 1 0 1 0 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1 0 1 1 1 0 1 1 0 0 1 1 1 0 0 0 1 1 1 0 1 0)
- 11.114352 #(0.000000 0.031746 1.387127 0.211059 0.079623 1.718846 1.485798 1.253501 0.311707 0.263725 0.199063 -0.266279 0.552495 1.533450 0.964086 0.883814 0.123684 1.693606 0.119354 1.485296 -0.424972 0.805063 1.577931 0.940118 0.524122 0.202062 1.664063 0.694092 1.508628 0.643853 0.159971 0.956521 1.372626 0.532967 0.794006 0.940357 0.575256 1.485435 1.232430 -0.057031 0.110540 0.004938 1.934373 0.496562 0.035473 1.439779 1.151966 1.704593 0.237449 0.332740 -0.339430 0.471770 0.495322 0.808520 1.666391 1.823704 1.126294 1.313593 0.345043 -0.445529 1.556020 1.066210 0.159505 1.147493 1.748441 0.646326 1.661214 1.109067 0.697280 0.062558 0.673305 1.728245 1.768140 1.515915 1.475045 1.731537 1.282150 1.439942 0.518540 0.834749 1.239193 0.692142 1.076919 1.289336 1.052564 1.648880 0.950204 1.276714 1.078805 -0.006595 1.397176 0.147520 -0.004968 0.459607 1.122707 1.366572 1.661413 1.787787 0.469391 0.821119 1.658062 -0.173007)
+ 11.061930 #(0.000000 0.040915 1.397249 0.197838 0.041132 1.694959 1.487683 1.266011 0.255718 0.278011 0.213819 -0.269140 0.549138 1.556841 0.912879 0.850252 0.087585 1.723102 0.075846 1.475771 -0.393831 0.807061 1.592137 0.888075 0.548552 0.234473 1.675849 0.667328 1.463094 0.681714 0.090297 0.972403 1.325480 0.494304 0.793540 0.948917 0.515384 1.499027 1.291986 -0.089911 0.044071 0.054018 1.962635 0.481709 -0.010607 1.447264 1.120775 1.737603 0.290833 0.343233 -0.313810 0.451817 0.494983 0.790716 1.642875 1.852490 1.190956 1.243340 0.332114 -0.393731 1.563451 1.076782 0.144114 1.175380 1.768084 0.653468 1.730961 1.113197 0.700346 0.061820 0.671904 1.762826 1.780324 1.569490 1.453209 1.717854 1.219129 1.395630 0.477021 0.801393 1.209229 0.730030 1.108141 1.223775 1.007550 1.670408 0.955324 1.285619 1.051181 -0.006633 1.434164 0.129752 0.061414 0.444161 1.076229 1.343029 1.665461 1.764193 0.473024 0.807162 1.619069 -0.162178)
)
;;; 103 even --------------------------------------------------------------------------------
@@ -4383,14 +4333,14 @@
14.260 #(0 1 0 1 1 1 0 1 1 0 0 1 0 0 1 1 1 1 0 1 1 0 0 1 0 0 0 0 0 0 1 1 1 0 0 1 0 0 1 1 0 1 0 1 0 1 0 0 1 0 0 0 0 1 0 1 0 0 1 1 1 1 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 0 1 1 0 0 0 0 1 1 1 1 1 0 0 0 1 1 0 1 0)
13.923377530893 #(0 1 0 1 1 1 0 1 1 0 0 1 0 0 1 1 1 1 0 1 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 0 1 1 0 0 0 0 1 0 1 0 0 1 1 0 1 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 0 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 1 0)
- 11.448018 #(0.000000 0.019817 0.102731 0.566545 0.392125 0.775734 0.901139 0.044237 0.112450 0.274285 1.702740 1.552868 1.323821 0.444252 0.508761 0.684472 0.500838 1.582741 0.266706 0.560922 -0.473290 0.473013 1.435238 1.389630 0.572131 1.683666 1.623026 0.710979 0.279573 0.426329 1.714254 1.606640 0.596723 1.540401 1.195363 0.901078 -0.197950 0.022790 1.779600 0.572165 -0.118931 0.960486 0.639159 0.325595 0.594720 0.323422 0.415659 1.155871 1.783356 0.469617 -0.124176 0.679655 0.163083 1.704996 0.128639 0.603162 1.176968 1.821525 1.599821 0.944719 0.945588 0.705349 0.291623 -0.099068 1.514469 0.788473 -0.247590 0.835370 1.791329 0.218714 0.049833 0.333490 0.393328 0.840710 0.254287 0.240372 0.667342 1.759557 0.626559 0.182658 1.096019 1.881258 0.798721 -0.058704 0.952775 1.114734 0.716704 1.486378 1.542352 -0.285327 0.215237 0.813200 -0.056825 0.221932 1.090586 1.231167 1.273271 0.192868 1.192820 1.114694 0.937440 0.787619 1.653516)
+ 11.389921 #(0.000000 0.018267 0.130632 0.624771 0.414198 0.768889 0.917696 0.022089 0.083823 0.254899 1.701321 1.539571 1.369689 0.496247 0.513518 0.732086 0.456915 1.625488 0.299594 0.536573 -0.488763 0.474203 1.430928 1.377060 0.517628 1.668442 1.636974 0.672904 0.235994 0.425802 1.701363 1.650040 0.606638 1.545714 1.258132 0.916095 -0.186379 -0.052007 1.749806 0.565157 -0.150838 0.956511 0.618181 0.317944 0.513330 0.331654 0.446860 1.110531 1.772937 0.466295 -0.168225 0.630301 0.166712 1.684094 0.120209 0.653572 1.219875 1.713637 1.580433 0.969109 0.956805 0.630525 0.276004 -0.077616 1.469069 0.743513 -0.230331 0.849571 1.812293 0.169198 0.033809 0.287266 0.439144 0.794569 0.267718 0.293825 0.667527 1.760226 0.544389 0.235477 1.102184 1.823860 0.737404 -0.046269 0.886312 1.182457 0.676330 1.561681 1.560524 -0.312920 0.204737 0.811433 -0.069793 0.273130 1.092738 1.168377 1.226218 0.202274 1.160434 1.094463 0.968867 0.806441 1.689483)
)
;;; 104 even --------------------------------------------------------------------------------
#(104 14.290776635081 #(0 0 0 1 0 0 1 1 1 0 1 1 0 1 0 1 0 0 1 1 0 0 1 1 1 1 0 1 1 0 1 0 1 1 1 0 0 1 1 1 1 0 1 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 0 1 0 1 1 0 0 1 1 1 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 1 1 1 1 1 1)
14.080453047533 #(0 0 0 1 0 0 1 1 1 0 1 1 0 1 0 0 1 0 1 1 0 0 1 1 1 0 0 1 1 0 1 0 1 1 1 0 0 1 1 1 1 0 1 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 0 1 0 1 1 0 0 1 1 1 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1)
- 11.566876 #(0.000000 0.033449 0.658310 0.611956 0.507161 0.157358 0.030341 0.867099 1.493177 0.486827 0.952945 0.272055 0.694865 0.203482 0.138591 0.266903 1.840011 1.772804 1.203954 1.734570 1.971632 -0.212904 1.689330 0.678073 1.635492 1.328540 -0.007749 0.584845 1.254683 1.295649 1.541507 0.285838 0.690296 1.179870 0.980144 0.636269 0.188387 -0.219405 1.139765 0.954530 1.184723 0.212067 -0.214493 0.661810 0.809735 1.352286 0.697440 1.860205 1.271463 0.071178 1.635132 1.319464 1.361424 1.692507 1.199756 -0.092092 0.944542 1.381366 0.298216 0.944638 0.128711 1.576084 0.517280 1.344717 1.652338 1.400734 1.145728 1.882959 0.912582 0.058551 1.572592 0.840000 1.580772 -0.082824 1.605418 0.614552 0.079344 0.103692 0.732978 0.210231 1.571679 0.761935 -0.254728 1.948453 0.184133 0.863769 0.580111 0.635622 0.696774 1.279049 1.449552 1.265732 1.352458 0.446414 1.740514 1.090537 1.305657 0.206380 0.113910 0.721935 0.308017 0.342678 1.254440 1.420150)
+ 11.448987 #(0.000000 0.005575 0.547536 0.669575 0.615626 0.134717 -0.040003 0.861154 1.481593 0.352699 0.923277 0.281178 0.802145 0.223832 0.142883 0.256326 1.800012 1.819190 1.117747 1.661518 1.907982 -0.226288 1.726672 0.696439 1.596437 1.255075 -0.093378 0.580250 1.205633 1.343814 1.529908 0.283902 0.722556 1.214978 0.933666 0.591738 0.205891 -0.240889 1.180528 1.049593 1.208954 0.231211 -0.293985 0.580320 0.852384 1.336333 0.798203 1.899163 1.284749 0.109033 1.511595 1.311940 1.339182 1.649557 1.148773 -0.059375 1.036698 1.481194 0.386386 0.907547 0.040503 1.603564 0.522515 1.297545 1.553267 1.441025 0.984566 1.712420 0.805861 0.027297 1.503374 0.884992 1.571925 -0.136491 1.527246 0.549142 0.050927 -0.001352 0.770097 0.050686 1.527505 0.692662 -0.225567 0.009973 0.161837 0.836674 0.598895 0.653023 0.695355 1.293395 1.441232 1.299803 1.315649 0.395982 1.591525 1.019380 1.244338 0.127782 0.139940 0.794029 0.214629 0.568637 1.303618 1.390168)
)
;;; 105 even --------------------------------------------------------------------------------
@@ -4398,7 +4348,7 @@
14.062 #(0 1 1 1 0 0 0 0 1 1 1 1 1 0 1 1 0 0 0 0 1 1 1 0 1 1 1 1 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 1 0 1 1 1 0 1 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 1 1 0 0 0 1 1 0 1 1 1 0 0)
14.023490699521 #(0 1 1 1 0 1 0 0 1 1 1 1 1 0 1 1 0 0 0 0 1 1 1 0 1 1 1 1 1 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 1 0 1 1 1 0 1 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 1 1 1 0 0)
- 11.457177 #(0.000000 -0.101226 1.404412 1.832680 0.918891 1.521909 1.120429 0.388344 1.283418 1.627727 0.738153 1.379659 -0.004074 0.857537 1.049518 1.026206 0.116610 0.896246 0.414661 0.234456 0.975727 1.614390 0.714183 1.542709 0.748263 0.220588 0.353301 1.561999 -0.116966 0.764741 0.281275 0.614532 0.156806 1.727560 0.182395 0.702811 0.377681 -0.025077 1.585959 1.462170 0.530501 1.130934 1.907609 0.757925 0.167272 -0.163324 0.748531 -0.044788 0.625159 1.640804 -0.067268 1.546562 0.816680 0.622347 1.093080 0.334579 0.346124 0.554856 1.517320 1.625517 1.550231 0.110416 0.940316 0.519878 1.843970 0.399525 -0.064255 1.703605 1.267179 0.075501 0.000473 -0.000007 1.446017 1.251738 0.622583 1.126155 1.362137 0.993406 1.012904 1.673561 1.797694 0.420945 0.403330 1.138139 0.080207 0.285697 1.436241 1.750011 -0.450600 0.354162 1.588237 1.553672 -0.237686 -0.116461 1.911350 0.036643 0.466096 0.661775 0.778010 0.088466 1.284198 0.412296 0.153408 1.282681 0.716687)
+ 11.172970 #(0.000000 -0.105475 1.416701 1.765772 1.019089 1.527665 1.091141 0.324267 1.290901 1.629591 0.685604 1.380452 -0.103579 0.890001 1.124623 1.000378 0.046322 0.814097 0.422329 0.187985 0.937432 1.619707 0.664143 1.571282 0.827999 0.243569 0.397894 1.739477 -0.206910 0.790752 0.340200 0.579340 0.055034 1.794934 0.206107 0.782444 0.410947 -0.089536 1.618502 1.485585 0.516757 1.144054 1.874310 0.777695 -0.014186 -0.110536 0.768709 0.016630 0.529941 1.532723 -0.042444 1.658070 0.741354 0.612616 1.058470 0.321643 0.395432 0.507215 1.531518 1.600356 1.552061 0.097941 1.031498 0.435684 1.910298 0.426102 -0.016090 1.793380 1.255928 0.025109 0.082250 0.195953 1.422623 1.276184 0.766627 1.120788 1.382004 0.923535 1.021663 1.615751 1.751667 0.424133 0.332328 1.161001 0.103675 0.275926 1.464503 1.821434 -0.414955 0.350513 1.566273 1.603014 -0.289168 -0.079711 1.946891 0.087385 0.538356 0.741977 0.817884 0.059511 1.366148 0.360646 0.260692 1.331413 0.691143)
)
;;; 106 even --------------------------------------------------------------------------------
@@ -4406,14 +4356,14 @@
14.160224278203 #(0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 1 1 1 1 0 1 0 1 1 1 0 1 1 1 0 0 1 1 0 0 0 1 1 1 1 1 0 0 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 0 0 0 0 1 1 1 0 0 1 1 0 1 0 0 1 1 0 1 0 0 0 0 1 0 1 0 1 0 0 1 1 0 1 0 0 1 1 1 0 1 1)
14.077123010357 #(0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 1 1 1 1 1 1 0 1 0 1 1 1 0 1 1 1 1 0 1 1 0 0 0 1 1 1 1 1 0 0 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 0 0 0 0 1 1 1 0 0 1 1 0 1 0 0 1 1 0 1 0 0 0 0 1 0 1 0 1 0 0 1 1 0 0 0 0 1 1 1 0 1 1)
- 11.362139 #(0.000000 -0.020377 0.716504 0.355335 1.238216 1.387972 -0.191644 0.374660 0.675255 0.316907 0.815915 -0.177544 -0.072651 1.281165 1.656583 1.010375 1.406365 0.036077 0.942652 -0.007518 1.839684 1.502033 0.924920 0.457701 1.470286 0.149911 -0.071739 0.162555 0.511192 1.227580 1.163126 1.129702 1.256648 1.064607 1.786222 1.337208 1.609566 0.508522 1.495714 1.897624 1.361070 0.060811 1.568873 1.307346 0.993817 0.668755 0.394493 1.127339 0.604268 0.714944 1.511496 0.512666 1.348532 1.304516 0.291398 0.114227 0.550282 0.659472 0.839293 0.653131 -0.038735 1.422532 1.385736 0.442833 0.360531 1.569581 1.692892 1.773533 1.503913 0.315659 0.186084 1.281697 1.517197 1.263521 0.836990 1.080202 0.167783 -0.161414 0.140692 0.214803 0.714037 0.081574 0.673535 0.572284 0.150474 1.622995 0.453891 0.109164 0.456909 -0.316769 0.756286 0.112584 0.959798 1.081686 1.924090 0.586731 0.645858 0.974496 -0.048662 0.614074 0.050047 1.666029 0.271579 0.584537 1.864776 1.314546)
+ 11.305462 #(0.000000 -0.093440 0.700311 0.317131 1.274937 1.366473 -0.241020 0.325183 0.625379 0.330528 0.886250 -0.150587 -0.088562 1.321636 1.699392 1.099515 1.473825 0.004910 0.943365 -0.012812 1.911572 1.504751 0.913387 0.404435 1.437321 0.167412 -0.078837 0.225048 0.418767 1.176382 1.201967 1.157704 1.225795 1.011004 1.848155 1.284615 1.590629 0.438469 1.477772 1.894756 1.411694 0.022640 1.566212 1.297811 0.965331 0.653701 0.395602 1.138938 0.554031 0.752114 1.463127 0.534051 1.357492 1.283680 0.282287 0.097278 0.531492 0.662437 0.826965 0.665761 -0.019210 1.431284 1.354971 0.360342 0.385846 1.602894 1.633330 1.735757 1.505127 0.253383 0.211922 1.217600 1.535433 1.292698 0.804028 1.125520 0.143662 -0.184998 0.126633 0.247007 0.785789 -0.006783 0.621602 0.535307 0.116743 1.667926 0.411014 0.142590 0.425676 -0.303603 0.743574 0.177209 0.939346 1.068157 1.954909 0.674287 0.621620 0.938227 -0.047363 0.638405 0.045258 1.684155 0.259424 0.603335 1.862329 1.363617)
)
;;; 107 even --------------------------------------------------------------------------------
#(107 14.355038210217 #(0 0 0 1 0 1 0 0 1 0 0 0 1 1 0 1 1 0 0 1 0 1 0 0 1 0 1 0 1 1 0 0 1 0 1 1 1 0 1 0 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 1 1 0 1 1 0 1 1 0 0 1 1 1 1 1 1 0 0 1 1 0 1 1 0 0 0 0 1 1 0 1)
13.979104817741 #(0 0 0 1 0 1 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 1 1 1 0 1 0 1 1 1 1 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 1 0 1 1 1 0 0 1 0 0 0 0 0 1 1 0 0 1 0 1 1 0 0 1 1 1 1 1 1 0 0 1 1 0 1 1 0 0 0 0 0 1 0 1)
- 11.537978 #(0.000000 -0.020104 0.117450 0.384678 1.330576 1.019977 0.818682 0.014488 0.618907 0.818731 1.130881 1.420858 1.035845 1.240821 0.060327 0.230836 -0.134743 1.278632 0.789481 0.437135 0.098571 0.414728 0.635312 1.516253 1.864020 0.789497 0.222481 0.582624 0.212391 1.416965 1.018585 0.145412 0.324091 1.297096 -0.002462 1.135006 0.394327 0.173226 0.929015 -0.185939 0.129461 1.350305 0.768786 1.624764 0.927488 1.317637 -0.007309 1.064437 0.260867 1.450339 0.281997 1.481284 0.795838 0.793017 0.839522 0.627563 0.630422 1.151387 1.657110 0.620306 1.340936 0.414004 0.959408 1.157469 1.497168 1.157370 0.148755 1.484251 0.950845 0.304034 0.585441 -0.041258 1.785665 0.019969 -0.288405 0.360009 0.005754 -0.276958 1.239332 -0.004192 0.086695 1.722090 1.352950 0.835257 1.102042 0.940668 -0.156784 0.168805 -0.000764 0.093386 0.460560 1.945261 0.344684 1.205307 0.563997 1.388471 1.876995 0.299097 0.460199 1.641119 -0.097698 0.392266 1.533660 1.594608 1.239102 -0.071818 1.279859)
+ 11.409225 #(0.000000 -0.013313 0.045594 0.280333 1.380937 1.052447 0.856637 0.066445 0.597180 0.773993 1.093889 1.412042 0.995227 1.265756 0.094147 0.209584 -0.249647 1.303063 0.928459 0.464591 0.022415 0.316051 0.620375 1.554995 1.892822 0.753846 0.290689 0.528982 0.152451 1.395708 1.017518 0.165668 0.382181 1.261792 -0.003426 1.073646 0.444177 0.150865 0.947113 -0.178628 0.050531 1.317113 0.769247 1.599069 0.837214 1.342792 0.006854 1.152025 0.272604 1.445152 0.239263 1.437648 0.784520 0.717392 0.729606 0.620702 0.623120 1.110632 1.628461 0.665509 1.308117 0.330392 0.932835 1.153735 1.465781 1.229673 0.187526 1.390387 0.902165 0.224776 0.517437 0.018814 1.767387 0.006993 -0.320698 0.368537 0.123806 -0.332814 1.175490 -0.034808 0.123526 1.675193 1.350601 0.763044 1.199008 0.958238 -0.208115 0.001044 -0.109550 0.174377 0.381171 1.885993 0.294167 1.061088 0.588206 1.353428 1.928827 0.328848 0.429446 1.590331 -0.099297 0.273406 1.535952 1.559373 1.257151 -0.168471 1.262939)
)
;;; 108 even --------------------------------------------------------------------------------
@@ -4422,14 +4372,14 @@
14.247987286758 #(0 1 0 1 1 0 1 1 0 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 1 1 1 1 0 0 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 0 0 1 1 1 1 1 0 1 1 0 1 1 0 1 0 0 1 1 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 1 1 1)
14.201394892821 #(0 0 1 0 1 1 1 0 0 1 1 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 1 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 1 1 0 1 1 0 0 1 1 0 1 0 1 1 0 0 1 0 1 0 0 0 1 1 1 0 1 0 1 1 0 1 1 1 1 1 1 0 1 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1)
- 11.637253 #(0.000000 0.015936 1.314632 0.624960 1.758407 1.760792 0.372245 0.149189 0.655234 1.519162 0.737385 0.696780 0.234029 0.541402 1.357058 1.401260 0.574802 1.092175 0.070169 0.193227 1.009194 -0.097362 1.764287 1.130799 0.291409 0.097305 1.540405 1.348881 1.752965 0.551793 0.141763 0.490211 1.922888 1.547792 0.134635 1.391820 0.975432 -0.013232 0.922882 0.099869 0.714585 1.283949 0.198231 -0.026459 0.258427 1.480364 1.462171 1.724427 0.349132 0.193878 0.904375 0.771728 1.187692 1.357046 1.675521 1.179128 0.542005 0.828931 1.313732 0.966521 1.285982 0.125217 1.227771 1.412952 0.282639 1.950649 1.380929 1.570179 1.273725 1.558601 1.302510 0.514560 1.435433 1.113706 1.335852 0.520275 1.382843 0.011917 0.006467 0.721658 0.466850 0.018143 1.917875 0.265007 1.134931 0.828564 0.677149 -0.027825 1.322966 1.692528 0.084256 1.791312 1.598188 1.375458 0.133800 0.455668 1.063719 -0.232334 1.718365 1.413567 1.717515 1.577497 0.806321 0.089447 1.186398 0.373375 0.833174 1.663501)
+ 11.460894 #(0.000000 0.038161 1.198130 0.608491 1.814016 1.787498 0.403159 0.086593 0.662660 1.605315 0.696542 0.569464 0.173808 0.493614 1.294885 1.331433 0.630489 1.103261 0.099590 0.240497 0.991334 -0.088838 1.718425 1.159330 0.308769 0.003346 1.584343 1.316384 1.710332 0.553343 0.132742 0.490728 1.925848 1.553655 0.168406 1.425197 1.066180 -0.100206 0.885391 0.072116 0.791840 1.316580 0.239058 -0.044177 0.249298 1.522455 1.572966 1.789817 0.276541 0.221416 1.008965 0.716337 1.063386 1.294883 1.658341 1.090302 0.578843 0.829731 1.333770 0.931386 1.389008 0.116268 1.190646 1.448012 0.209410 1.824291 1.350253 1.552236 1.288064 1.492421 1.285274 0.502352 1.314918 1.095651 1.340779 0.568621 1.414768 0.029722 -0.024608 0.760345 0.441508 0.028560 1.863392 0.151069 1.146183 0.825666 0.579746 -0.008478 1.410421 1.696209 0.024222 1.811706 1.593352 1.480985 0.097000 0.449722 0.997189 -0.233247 1.736991 1.413023 1.713123 1.508852 0.757830 0.047894 1.153695 0.363220 0.777378 1.630901)
)
;;; 109 even --------------------------------------------------------------------------------
#(109 14.988188773557 #(0 1 0 1 0 1 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 1 0 0 1 1 1 1 1 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 0 0 1 0 1 1 0 0 1 0 0 0 1 1 0 0 1 1 1 0 1 1 0 1 0 0 1 1 1 1 0 1 1 0)
14.476561866583 #(0 1 0 1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 1 1 1 0 0 1 0 1 1 1 0 0 1 0 1 0 0 1 1 1 1 1 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 0 0 1 0 1 1 0 0 1 0 0 0 1 1 0 0 1 1 1 0 1 1 0 1 0 0 1 1 1 1 0 1 1 1)
- 11.625525 #(0.000000 -0.024298 1.240245 0.438747 1.710034 1.217955 1.003703 1.384892 1.626308 0.280065 1.553542 1.022063 0.257509 0.515703 0.003208 0.400848 0.292519 0.663347 0.656922 0.873664 -0.244829 1.357526 1.511444 0.659348 0.070431 0.770456 0.866559 0.008177 -0.222296 0.739003 0.336786 0.910760 1.281025 0.843452 1.109124 1.526356 1.089499 1.842270 -0.103045 0.547236 0.677597 0.928793 1.651044 0.470090 0.866944 1.620599 0.723575 1.721856 0.085884 0.714364 0.030329 0.414862 0.460790 1.299721 1.016913 0.305256 1.746068 0.000720 1.682509 0.982508 1.291679 0.980133 0.471343 0.737743 1.145639 1.226145 0.909621 0.124691 0.659774 0.298546 0.909678 0.124312 1.652185 1.470334 0.149585 0.154070 0.770493 1.152284 0.449587 -0.076699 0.659565 0.998821 1.013112 0.292077 0.644169 1.233535 1.478991 0.546322 1.399309 1.778745 0.888865 0.099651 1.747986 1.691695 1.589548 1.239999 -0.013499 1.492402 -0.203330 1.095808 0.281326 0.661576 -0.108150 1.697358 1.426759 1.529891 0.960006 1.392460 0.882821)
+ 11.520288 #(0.000000 0.036651 1.310725 0.462056 1.738955 1.249770 0.991659 1.454845 1.647110 0.394572 1.523182 1.073991 0.189649 0.452661 0.054637 0.406436 0.206596 0.605383 0.656442 0.919196 -0.285007 1.350464 1.534579 0.628974 0.060653 0.728583 0.925995 -0.082600 -0.211285 0.688543 0.321565 0.869543 1.246095 0.849149 1.115336 1.438790 1.008035 1.773380 -0.120139 0.552725 0.656942 0.816472 1.725827 0.531780 0.876508 1.649949 0.834930 1.709715 0.092742 0.742068 -0.032840 0.377951 0.392385 1.377931 1.085732 0.270313 1.693028 0.059205 1.676247 1.006890 1.366374 0.964534 0.583266 0.716626 1.190054 1.156716 0.953642 0.147198 0.589608 0.233789 0.995186 0.024077 1.649619 1.407985 0.009143 0.137641 0.675299 1.263580 0.424767 -0.109451 0.552395 0.948448 0.972974 0.270654 0.563735 1.263796 1.452121 0.538206 1.419639 1.732733 0.998602 0.184600 1.785904 1.680164 1.582063 1.242445 -0.184525 1.481954 -0.248878 1.173700 0.351297 0.703163 -0.129151 1.790013 1.450909 1.415024 0.979133 1.357392 0.811594)
)
;;; 110 even --------------------------------------------------------------------------------
@@ -4437,7 +4387,7 @@
14.401108392424 #(0 1 0 0 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 1 0 0 1 1 1 1 1 0 1 0 0 0 1 0 0 1 0 1 1 0 1 1 0 0 1 1 0 1 1 1 0 0 1 0 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 1 1 1 1 0 0 1 0 0 0 0 1 1 0 1 0 1 1 1 1 1 1 1 0)
14.141825477743 #(0 0 0 0 1 0 1 0 1 1 0 1 0 0 1 0 0 1 1 1 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 0 1 1 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 1 1 1 0 1 1 1 0 0 1 1 1 0 0 1 0 1 0 0 0 1 0 1 1 1 0 1 1 0 1 1 1 1 0 0 0 0)
- 11.802522 #(0.000000 0.001926 0.310768 0.420518 0.177478 1.044994 0.130494 1.211008 -0.016573 0.045909 1.634270 1.158641 -0.013597 1.425633 1.753297 1.836246 1.758119 -0.149238 1.013184 0.213775 0.393014 1.100067 1.552821 1.256048 1.291492 -0.147242 1.615453 1.663435 0.477078 1.043951 0.936591 1.534876 1.019092 1.854520 -0.216977 1.680885 1.213030 0.738762 0.284173 0.119583 1.586363 -0.024312 1.312040 0.417949 1.403297 1.741168 1.399910 1.537977 0.790049 0.048436 0.903947 0.544581 1.121609 0.154930 1.615727 1.054141 0.970482 0.531252 1.299605 1.738654 0.077969 0.086105 1.668551 1.354777 0.019832 0.385498 0.787373 1.645929 0.180468 1.962895 0.998509 1.254688 0.455741 0.818660 0.997410 0.171408 1.786138 0.002999 0.304733 0.689804 1.254186 0.671338 0.395715 0.740458 0.723644 0.668755 0.826745 0.002752 1.627808 0.346209 0.901534 1.323692 1.818298 1.073986 1.086807 1.331371 0.696284 1.196180 0.303273 0.476536 1.141098 0.088878 1.372421 0.271567 0.046453 1.523597 0.843498 0.026191 0.127041 1.360896)
+ 11.613897 #(0.000000 -0.046765 0.335756 0.461232 0.181752 1.083056 0.076242 1.284199 -0.032183 -0.045531 1.608645 1.177475 -0.033190 1.460527 1.785591 1.789516 1.725438 -0.129418 1.016036 0.265788 0.275860 1.178704 1.408053 1.291890 1.316462 -0.295808 1.679812 1.613553 0.511261 1.016861 0.960706 1.436708 1.153968 1.830865 -0.206442 1.758405 1.307112 0.734872 0.296582 0.239682 1.614239 -0.121838 1.352125 0.389307 1.385459 1.608675 1.490207 1.598006 0.902439 -0.016627 0.944096 0.514382 1.181654 0.136534 1.484988 1.070956 0.922481 0.533758 1.291810 1.738064 0.047366 0.081182 1.730709 1.428856 -0.008844 0.355584 0.860233 1.629438 0.253854 1.893474 0.950493 1.167427 0.422337 0.773445 0.984967 0.089882 1.734207 -0.151214 0.294149 0.707494 1.272953 0.728656 0.442964 0.716373 0.760955 0.641666 0.872202 -0.033741 1.578240 0.300449 0.947169 1.328878 1.859043 1.143296 0.976880 1.400574 0.711701 1.239797 0.202750 0.455854 1.220470 0.106712 1.377598 0.257362 0.039086 1.524363 0.893671 0.019068 0.076068 1.339217)
)
;;; 111 even --------------------------------------------------------------------------------
@@ -4445,14 +4395,14 @@
14.470418444168 #(0 1 1 0 0 1 1 1 0 0 1 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0 1 0 0 1 1 1 0 0 0 1 1 1 0 1 0 1 0 1 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 1 0 0 0 1 1 1 1 0 1 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 0 1)
14.043108609984 #(0 1 1 0 0 1 1 1 0 0 1 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 1 0 0 0 1 0 0 1 1 1 0 0 0 1 1 1 0 1 0 1 0 1 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 0 0 1 0 0 1 1 1 1 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 1 1 1 1 1 0 1 1 1 1 0 1)
- 11.847542 #(0.000000 -0.015942 1.293204 -0.133995 0.642181 0.056839 0.238541 1.353577 1.500539 0.609529 1.483758 0.231117 1.609213 -0.128845 1.500734 0.403483 0.756346 1.248320 0.945799 1.232995 0.062137 0.808125 1.068232 0.919494 0.531397 0.386233 1.020488 0.952318 1.233112 1.020870 1.058127 0.177613 0.572957 0.822037 0.300493 1.752902 0.023717 0.892644 0.581127 0.962572 0.099654 1.781205 0.170432 1.187214 0.444225 0.451226 1.261904 1.494099 0.775310 1.773103 0.316647 0.586619 0.709359 0.210801 -0.046191 0.518495 0.963600 1.394723 1.754906 0.887699 1.153271 0.715266 1.270793 1.200650 0.918228 1.166147 0.847117 1.827698 1.414574 0.215194 0.335723 1.697907 -0.138289 1.899101 1.252606 1.285730 0.589829 0.963672 0.313378 1.385825 0.950127 1.482323 1.339544 1.373145 0.107061 0.344029 1.739320 0.621348 1.229865 0.902764 -0.079962 1.318050 0.026108 1.804141 0.481394 -0.230383 1.566682 -0.038684 0.078768 1.212530 0.409351 0.713690 0.540819 1.251393 0.372032 1.672893 1.110420 0.746919 1.850233 1.284396 0.559801)
+ 11.719959 #(0.000000 0.062897 1.271787 -0.112122 0.638976 0.033552 0.126045 1.359440 1.451759 0.672296 1.487836 0.256002 1.615027 -0.052483 1.494388 0.336011 0.763023 1.286941 0.990165 1.302976 0.073162 0.850806 1.030280 0.938684 0.497140 0.408122 0.955324 0.941417 1.251476 1.002297 1.088214 0.166042 0.631461 0.863598 0.300095 1.774055 0.041766 0.952278 0.467879 0.923556 0.041190 1.828080 0.167786 1.185768 0.442211 0.461871 1.309572 1.572937 0.817416 1.716626 0.249352 0.587901 0.732979 0.165084 -0.045907 0.534841 0.980935 1.465724 1.754558 1.024558 1.108706 0.765282 1.293940 1.241754 0.900112 1.111958 0.815937 1.799225 1.448712 0.232110 0.440814 1.659948 -0.161874 1.914184 1.219425 1.297021 0.567662 0.968199 0.352472 1.368611 1.010374 1.488140 1.277693 1.321309 0.049820 0.258279 1.821691 0.570558 1.314850 0.867205 -0.133927 1.225912 0.077378 1.856418 0.512700 -0.226136 1.530069 0.021849 0.032595 1.278594 0.484536 0.732581 0.534658 1.288416 0.350324 1.718683 1.084804 0.820526 1.934837 1.284490 0.560042)
)
;;; 112 even --------------------------------------------------------------------------------
#(112 14.939 #(0 0 1 0 1 1 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 1 1 0 0 1 1 1 1 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 1 1 1 1 0 1 0 1 1 0 1 0 1 0 0 1 1 1 1 1 0 0 1 1 1 0 0 1 0 0 1 0 0 1 1 1 1 1 0 1 1 0 0 0 1 0 1 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0)
14.53456401825 #(0 0 0 1 0 0 0 1 1 0 0 0 1 0 1 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 1 0 1 1 1 1 1 1 0 1 0 0 1 1 1 0 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 0 1 0 0 0 0 0 1 1 1 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 1 1 0 0 1)
- 11.737837 #(0.000000 0.041566 1.371933 1.013849 -0.135181 1.774054 0.192632 1.721677 1.470095 0.351071 1.535374 -0.207569 1.261543 0.117172 1.211457 1.216508 0.144615 1.284335 0.606515 0.420828 0.011842 0.385481 0.714466 1.030041 1.413102 0.018109 0.034870 0.968932 0.083006 0.843600 1.282689 -0.226668 0.774365 1.495612 0.792785 1.481445 1.418182 1.347629 0.951623 0.493125 1.183078 -0.103410 0.406924 0.852565 1.305660 1.373517 1.500982 0.112757 0.450835 -0.131610 1.327984 1.120092 1.357824 1.394444 0.927975 0.183987 0.597304 1.570745 0.045966 1.613092 1.131685 1.295544 0.805977 1.010030 0.890000 0.779796 0.404495 1.311375 0.879484 0.969742 1.521616 1.500507 -0.048665 0.826654 0.929289 1.544322 0.650865 1.922817 0.139178 -0.168035 0.325746 1.945030 0.209550 0.713269 0.172098 0.279348 1.471393 1.158490 0.986311 1.637680 1.937215 1.842756 1.197829 1.770130 0.682153 0.447301 1.706666 0.359296 1.526851 1.642999 0.977137 0.322756 1.365661 -0.307877 1.561507 0.702908 0.342922 1.482269 0.235710 0.328964 0.562688 0.182876)
+ 11.589713 #(0.000000 0.005509 1.332133 0.907166 -0.139652 1.875616 0.113078 1.744494 1.498157 0.289734 1.515234 -0.234693 1.224281 0.130454 1.184381 1.236455 0.112317 1.269643 0.521065 0.466972 0.068143 0.408268 0.647114 1.014993 1.423345 0.116611 0.039507 0.993919 0.095396 0.820140 1.251702 -0.224160 0.891423 1.523699 0.788034 1.424896 1.400249 1.336758 0.957032 0.479486 1.202276 -0.206962 0.471477 0.895079 1.317063 1.391270 1.415246 0.012540 0.488078 -0.162462 1.223346 1.103980 1.207047 1.385586 0.985930 0.182599 0.515611 1.708520 -0.043551 1.579271 1.136336 1.334504 0.741553 0.926677 0.946492 0.722713 0.287719 1.311094 0.853309 0.978845 1.504343 1.470545 -0.025510 0.745525 0.891199 1.517566 0.720540 1.896716 0.105316 -0.171826 0.341119 1.941214 0.212067 0.592464 0.146192 0.229424 1.526553 1.097388 0.893154 1.634523 1.862815 1.886959 1.196644 1.640235 0.634525 0.460126 1.641051 0.362685 1.505665 1.534851 0.895678 0.322572 1.300558 -0.335940 1.558645 0.609378 0.227722 1.396649 0.249162 0.255791 0.626343 0.185769)
)
;;; 113 even --------------------------------------------------------------------------------
@@ -4460,7 +4410,7 @@
14.840950350147 #(0 0 1 0 0 1 0 0 0 1 0 0 1 1 0 0 1 1 1 0 0 1 0 1 1 1 1 0 0 1 0 0 1 1 0 1 0 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0 1 1 0 1 1 1 0 1 0 1 1 1 0 1 1 1 0 0 1 0 1 1 1 0 1 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 1 1 1 0 0 1 1 1 1 0 0 1)
14.699631659332 #(0 0 1 1 0 1 1 0 0 1 1 0 0 1 0 0 1 1 1 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 0 1 1 1 0 1 1 1 0 1 0 1 1 1 1 0 1 1 1 0 0 1 0 0 1 1 1 1 0 0 1 0 1 1 0 1 0 0 1 1 0 0 0 1 0 0 0 0 1 0 1 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0)
- 11.850464 #(0.000000 -0.018264 -0.178364 1.339903 1.009462 0.496358 1.121500 0.950013 0.763548 1.128039 0.350572 -0.169942 0.945903 0.222047 1.509133 1.218822 0.816517 1.056768 0.865426 0.347973 1.914621 1.746742 0.226503 0.494469 0.628431 0.752535 0.637587 1.308494 0.460367 0.220331 0.731915 1.866242 1.911522 0.732599 0.376710 0.276080 0.346458 0.765336 0.161705 1.657694 1.415150 1.602862 0.060836 0.615470 1.560970 1.616252 1.938105 0.292878 0.385495 0.474322 0.446033 0.814913 1.876485 0.022285 -0.141785 0.525860 0.783139 1.566705 -0.173389 0.568027 0.899574 0.970335 -0.216101 0.362205 0.991859 0.602609 0.694447 0.720948 0.354461 -0.007649 1.642616 1.443306 1.226473 -0.017501 1.800613 0.323289 1.146851 -0.222635 0.382935 1.177899 1.788116 0.635146 1.328474 0.483636 1.295012 1.113363 1.482016 1.138405 0.442900 0.404492 -0.062789 1.276708 0.180816 0.820871 1.791698 1.016174 0.189759 0.164453 0.925479 0.559274 0.740286 1.808702 0.737940 -0.085738 0.909172 1.520950 1.320112 1.133685 1.423288 1.377661 0.189768 1.416098 0.560524)
+ 11.675518 #(0.000000 -0.027379 -0.179174 1.361025 1.026564 0.510223 1.094027 0.853968 0.788353 1.110306 0.337543 -0.144175 1.010482 0.313485 1.468157 1.106544 0.806024 1.124825 0.900641 0.373511 -0.046187 1.812463 0.268573 0.489168 0.589224 0.808521 0.651721 1.372191 0.348204 0.222797 0.697735 1.798831 1.832950 0.724815 0.286778 0.213575 0.342666 0.706464 0.180275 1.703652 1.446984 1.547030 -0.012049 0.524125 1.523010 1.684484 1.964426 0.353463 0.364702 0.471501 0.412290 0.848824 1.974537 -0.033388 -0.197901 0.518142 0.737355 1.579267 -0.132769 0.549731 0.906427 0.901319 -0.272657 0.380363 0.990473 0.630148 0.744289 0.702344 0.360492 0.041303 1.635424 1.465438 1.200280 0.046268 1.824315 0.350773 1.137834 -0.237465 0.240484 1.215825 1.816758 0.661490 1.286593 0.471485 1.354771 1.155369 1.450792 1.045738 0.435700 0.432015 -0.007732 1.335051 0.248528 0.852009 1.791256 1.007528 0.289537 0.260554 1.023558 0.620446 0.800001 1.807068 0.675926 -0.078843 0.914117 1.435214 1.296426 1.142699 1.355828 1.354953 0.124406 1.405773 0.614904)
)
;;; 114 even --------------------------------------------------------------------------------
@@ -4468,21 +4418,21 @@
14.794 #(0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 0 1 1 1 0 1 1 0 1 0 0 0 1 0 1 1 0 1 0 0 0 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 1 1 0 0 1 0 1 0 1 1 1 0 1 1 1 0 0 1 1 0 1 1 0 0 0 1 1 0 0 0 0 1 0 0 1 1 1 1 0 0 0 0 0 0 1)
14.492 #(0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 1 1 0 1 1 0 0 1 1 0 1 1 0 0 1 0 1 1 0 1 0 0 0 1 0 1 1 1 0 0 0 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 0 0 1 1 0 1 1 0 0 0 1 1 0 0 0 0 1 0 1 1 0 1 0 1 0 0 0 0 0 1)
- 12.077424 #(0.000000 0.035590 0.892636 0.953717 0.085890 0.362464 0.808443 1.225096 1.620082 -0.063681 0.364883 1.355996 1.224633 0.200908 0.362522 0.391998 0.342908 1.898702 1.026322 1.748541 1.320288 0.046933 1.834354 0.451903 0.590155 0.131503 -0.610026 0.780574 0.456408 1.623797 0.392738 0.041553 1.535172 0.588230 1.498244 1.509966 0.737675 0.625548 0.574814 0.470607 1.708376 1.647635 -0.053164 1.355028 0.523130 0.418702 1.005147 0.443658 0.341036 1.074779 1.514982 0.876169 0.227341 -0.167015 0.981407 1.268195 -0.175500 0.064957 -0.105232 1.775681 0.425242 0.775614 0.121948 1.058419 -0.146487 0.500938 1.868476 0.720878 0.348910 0.483919 1.462212 0.914025 1.341435 0.846955 1.260399 0.085700 1.347562 -0.037510 1.736632 0.733166 0.956934 1.297496 0.090870 0.999311 0.081612 1.037073 0.852532 0.527235 -0.226268 1.366356 0.911239 1.452426 0.439317 0.828849 0.794522 0.168927 0.656523 0.516521 0.112951 0.879435 1.502395 0.472114 0.241679 0.050313 1.338952 1.453117 0.893763 1.364555 1.614173 0.839923 1.373463 0.996797 1.070879 0.701763)
+ 11.910578 #(0.000000 0.038499 0.881095 0.945379 0.067449 0.369861 0.782951 1.227606 1.615931 -0.119057 0.328262 1.341300 1.299014 0.202500 0.394971 0.369668 0.331431 1.862653 1.110229 1.774415 1.293631 0.016168 1.899037 0.461438 0.540475 0.059632 -0.764641 0.758450 0.433187 1.724822 0.400066 0.110585 1.494024 0.629832 1.560138 1.422998 0.743465 0.690580 0.538921 0.554683 1.844907 1.593787 -0.013329 1.384126 0.482492 0.386248 1.053743 0.467841 0.327370 1.137377 1.599034 0.830879 0.325362 -0.143572 1.021385 1.227502 -0.209421 0.079175 -0.168361 1.833453 0.419591 0.764025 -0.033725 1.065018 -0.139508 0.497569 1.880102 0.746368 0.399336 0.455452 1.451002 0.938409 1.276687 0.918387 1.254356 0.100879 1.328457 -0.083304 1.728355 0.805724 0.885421 1.290972 0.130897 1.020889 0.073575 1.023545 0.833057 0.473812 -0.222169 1.397347 0.878855 1.491025 0.478934 0.867496 0.867736 0.164486 0.614011 0.525708 0.063946 0.922016 1.578865 0.399762 0.248812 -0.022465 1.410110 1.459981 0.942922 1.414269 1.657117 0.896420 1.424085 1.024162 1.021447 0.768270)
)
;;; 115 even --------------------------------------------------------------------------------
#(115 14.597 #(0 0 0 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 1 0 0 1 1 1 1 0 1 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1 1 1 0 1 0 0 1 1 1 0 1 1 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 1 0 1 0 0 1 1 1)
14.568 #(0 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 1 0 0 1 1 1 1 0 1 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 0 1 0 0 1 1 1 0 1 1 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 1 0 1 0 0 1 1 1)
- 11.850143 #(0.000000 0.052256 0.596007 0.911049 0.816277 1.014667 0.235200 1.630260 0.928949 1.623028 1.208743 -0.767815 0.181837 0.060723 1.218083 -0.266920 0.462746 1.634442 1.791492 1.630892 -0.588229 0.285021 0.910750 0.689342 0.320298 0.657862 1.301933 0.567847 0.945252 1.473340 0.924940 0.560298 0.952932 0.238679 1.671203 1.904441 0.126989 0.093722 0.122190 -0.269102 1.530544 0.889825 -0.155195 1.090229 1.225026 1.369395 1.579918 1.007311 -0.123079 1.452089 1.241182 1.647047 0.667342 1.148399 0.559961 0.557508 1.282380 1.474243 1.071909 0.169674 1.733239 1.747684 1.545192 0.763459 0.808700 1.132504 1.065863 0.358436 1.094297 1.218021 0.126070 0.862559 0.626269 -0.021782 0.341790 0.912790 1.475188 1.272031 1.124307 0.324662 1.289700 0.870764 1.090711 -0.026870 0.592829 0.970123 -0.343013 1.437556 0.876293 1.871231 -0.368867 1.774723 1.057589 -0.295935 1.630134 1.446624 0.574194 0.565835 0.719648 1.567346 -0.159699 1.494619 0.106075 1.176356 0.462130 0.104860 0.987728 -0.032614 1.421913 0.041669 0.299822 0.840663 0.331353 1.081792 -0.232473)
+ 11.719069 #(0.000000 0.045539 0.612691 0.842173 0.839284 0.909923 0.230050 1.643903 1.009600 1.573203 1.181259 -0.763996 0.149163 0.062796 1.090058 -0.223102 0.306972 1.653046 1.766320 1.679954 -0.557922 0.233834 0.972084 0.721095 0.393055 0.598331 1.321971 0.546271 1.080017 1.487667 0.946916 0.443613 0.872398 0.326043 1.658823 1.950293 0.132116 0.098310 0.206183 -0.192748 1.535158 0.932686 -0.170324 1.119273 1.220178 1.437193 1.607466 0.963192 -0.062455 1.508891 1.271442 1.727290 0.675086 1.180337 0.639549 0.475284 1.207704 1.487268 1.011091 0.256433 1.676463 1.745459 1.485253 0.687378 0.769450 1.100120 1.079692 0.485204 1.058338 1.165343 0.083054 0.803361 0.653647 -0.092987 0.479346 1.005672 1.362268 1.248309 1.072899 0.369957 1.272307 0.947964 1.069390 0.021244 0.592535 1.012380 -0.415814 1.400403 0.836171 1.918049 -0.404480 1.790002 0.978437 -0.261188 1.560546 1.417767 0.657600 0.526852 0.683181 1.560814 -0.299402 1.486736 0.128048 1.111752 0.399274 0.076662 1.029122 -0.033320 1.343502 0.025124 0.411626 0.864894 0.333325 1.208564 -0.205688)
)
;;; 116 even --------------------------------------------------------------------------------
#(116 15.190026349904 #(0 0 0 1 1 0 0 1 1 1 0 1 0 0 0 0 1 1 1 1 1 0 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 0 1 1 1 0 0 1 0 0 0 1 0 1 0 0 1 1 0 1 1 1 0 1 1 1 0 1 0 1 0 1 0 0 1 0 1 1 0 1 1 0 1 1 1 0 0 0 0 1 1 1 0 0 0 1 0 0 1 1 0 1 1 0 0 1 1 1)
15.016979484255 #(0 0 0 1 1 0 0 1 1 1 0 1 0 0 0 0 1 1 1 1 1 0 1 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 0 1 0 1 0 0 1 0 0 0 1 0 1 0 0 1 1 0 1 1 1 0 1 1 1 0 1 0 1 0 1 0 0 1 0 1 1 0 1 1 0 1 1 1 0 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 1 0 0 1 1 1)
- 12.022239 #(0.000000 -0.002959 0.199977 0.319382 1.017086 -0.168217 1.638822 0.234283 0.432900 1.385113 1.663810 0.543448 -0.219496 0.989700 1.187563 0.102878 0.709915 0.385795 1.103249 -0.166072 1.231536 0.100598 0.899175 0.571886 1.197649 1.360863 1.060458 -0.005556 1.603423 -0.120496 0.738364 1.418883 0.731683 0.044637 0.760831 1.298823 0.089661 0.160946 0.564008 0.766873 -0.024817 0.284139 0.957758 1.810284 1.547978 1.118136 1.409383 1.363893 1.464650 0.673609 1.636707 0.283974 1.578359 1.384142 0.473378 1.489275 0.188416 0.736237 0.427840 0.241427 1.105726 1.577330 0.303861 -0.050259 0.215311 0.349397 1.111706 1.442517 0.843543 0.153060 0.121550 0.036802 1.609576 -0.109951 1.347114 0.682882 0.540376 0.782789 0.977728 -0.210201 1.066292 0.867383 0.948839 1.468375 0.913593 0.308596 1.706767 0.531263 0.289948 1.138587 0.072420 1.438885 1.229627 0.360013 1.078735 0.686622 1.892497 0.620785 0.813776 0.195484 0.272503 1.972406 0.290507 0.157443 0.663095 0.644176 0.249621 0.828038 1.097995 0.554706 0.516900 -0.168073 1.585867 0.525631 0.213122 0.263176)
+ 11.849157 #(0.000000 0.019151 0.158562 0.270388 1.062687 -0.204964 1.641827 0.294473 0.387090 1.410620 1.671196 0.512329 -0.229256 1.088771 1.135311 0.126883 0.671577 0.446258 1.044080 -0.091492 1.222133 0.125732 0.889568 0.563579 1.174489 1.287203 1.088589 0.004276 1.652731 -0.160177 0.745087 1.410477 0.790589 0.076878 0.737652 1.398523 0.059036 0.169022 0.546974 0.767520 -0.036054 0.328724 0.934557 1.729593 1.521411 1.215472 1.362785 1.286030 1.551530 0.635450 1.600990 0.211042 1.540617 1.392041 0.555536 1.434246 0.156928 0.703901 0.437112 0.259078 1.079431 1.615636 0.315559 -0.015631 0.234385 0.248664 1.042197 1.390028 0.770734 0.112428 0.083973 0.085159 1.606603 -0.057642 1.366201 0.653968 0.489176 0.789852 1.024633 -0.230041 1.016578 0.844196 0.884097 1.593991 0.916012 0.275958 1.677800 0.566480 0.240958 1.127867 0.072067 1.433274 1.240495 0.416520 1.113531 0.744977 1.972331 0.668556 0.814377 0.174829 0.381814 0.048584 0.231983 0.215476 0.689750 0.658253 0.226227 0.791514 1.021195 0.577707 0.491635 -0.169447 1.638329 0.535971 0.216206 0.213350)
)
;;; 117 even --------------------------------------------------------------------------------
@@ -4490,7 +4440,7 @@
15.070538411179 #(0 0 1 1 1 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 1 1 1 0 1 1 0 1 0 1 0 0 1 0 0 1 1 1 0 0 0 0 0 0 1 0 1 0 1 1 1 0 1 0 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 1 1 1 0 1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 1 1 0 0 0 1 0 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1 0)
14.875072951405 #(0 0 0 1 1 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 0 1 1 1 0 1 1 0 0 0 1 0 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 1 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 1 0 1 1 1 1 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 1 1 0 0 0 1 0 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1 0)
- 11.965477 #(0.000000 0.012203 0.766599 0.154209 1.131893 0.412011 1.562286 1.547342 0.944015 0.031619 0.832778 1.019940 0.068655 1.469759 1.021935 0.469931 1.257308 0.088341 0.610879 1.330207 1.876250 1.781970 1.037342 1.849866 0.914344 0.318597 0.327388 0.908064 0.369005 0.326763 1.212854 1.148308 1.617466 0.349961 0.105132 0.748031 0.315206 0.003531 1.182550 -0.327795 1.048346 0.281292 1.101456 0.879996 0.241081 1.266344 -0.311263 1.387290 1.479311 1.611110 0.083074 1.677821 0.034623 1.147490 1.364035 1.383877 1.216620 -0.063411 1.808629 1.460919 0.707217 0.763031 0.132293 1.347099 1.793808 1.494192 0.156941 1.174118 0.906129 1.621826 0.189309 1.448470 0.637030 0.810040 0.972216 1.097397 -0.008235 1.334218 1.128749 0.353004 1.618883 1.635268 1.309793 0.366156 1.033425 1.762058 1.645982 0.961793 0.447966 0.879844 0.415614 0.490682 1.789743 -0.058187 0.317855 1.289928 1.392328 1.558981 0.576819 1.317887 0.095590 1.467045 1.400514 -0.085677 1.406606 -0.573319 -0.107296 0.005070 0.851082 0.945928 0.580121 0.333841 0.436973 0.687330 0.896516 -0.035103 0.338795)
+ 11.863838 #(0.000000 0.030201 0.848866 0.066831 1.186675 0.484774 1.518717 1.576273 0.903351 -0.004397 0.810097 1.028512 0.067687 1.513322 1.092308 0.511683 1.342608 0.076165 0.655865 1.322135 1.830698 1.726900 1.033785 1.875242 1.007988 0.249910 0.353751 0.928944 0.448199 0.310752 1.265110 1.073063 1.638504 0.388720 0.113882 0.847666 0.303294 -0.018710 1.181141 -0.378501 1.027528 0.324772 1.130583 0.858511 0.246522 1.216488 -0.367889 1.392751 1.491994 1.637530 0.151719 1.667390 0.021348 1.148942 1.388759 1.364477 1.183148 -0.120729 1.805156 1.538241 0.693069 0.869253 0.148337 1.436742 1.716356 1.491201 0.143814 1.206189 0.992027 1.574338 0.182441 1.503902 0.610981 0.764451 0.937740 1.085486 -0.020445 1.312196 1.143776 0.334235 1.596475 1.710018 1.402591 0.430910 0.964642 1.774692 1.617876 1.014954 0.476234 0.891428 0.452320 0.442300 1.919740 -0.071483 0.308591 1.270216 1.354367 1.534496 0.643594 1.344250 0.019520 1.513173 1.388971 -0.106566 1.398822 -0.491439 -0.194548 0.048819 0.909022 0.962673 0.653597 0.340718 0.457201 0.720823 0.838333 -0.069111 0.289876)
)
;;; 118 even --------------------------------------------------------------------------------
@@ -4498,14 +4448,14 @@
14.841081077183 #(0 1 1 1 1 0 0 1 1 1 1 0 1 1 0 0 0 0 1 1 0 1 0 0 1 0 0 1 1 0 1 1 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 1 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 1 0 1 0 1 1 1 1 1 0 0 1 1 0 0 0 1 0 1 1 0 1 1 1 1)
14.774983755641 #(0 1 1 1 1 0 0 1 1 1 1 0 1 1 0 0 0 0 1 1 0 1 0 0 1 0 0 1 1 0 1 1 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1 1 1 1 1 1 1 0 0 0 1 1 0 1 0 1 0 1 1 1 1 1 0 0 1 1 0 0 0 1 0 1 1 0 0 1 1 1)
- 12.298573 #(0.000000 -0.031997 1.464323 0.934201 1.655876 0.035759 1.600136 1.462550 -0.464876 -0.054993 0.725057 -0.052049 -0.227853 0.315809 1.734021 0.309114 1.354816 1.583236 0.317736 0.216590 0.839168 -0.058819 1.340730 1.168865 1.851647 -0.172165 0.912345 1.633543 1.168373 0.857630 1.411000 -0.223009 0.126598 1.488090 0.877403 -0.140707 1.426309 0.126156 0.527696 0.531654 0.284664 0.072651 0.158133 1.775948 1.542335 1.840822 0.274565 1.291424 0.558688 0.208814 1.704871 1.188785 1.205227 1.639134 0.059579 1.021761 0.580205 0.538707 0.027092 1.576970 0.845331 -0.265453 1.900395 0.106627 1.187442 0.071975 1.299060 0.486140 1.686243 1.107377 1.036072 0.603022 0.740295 1.663980 0.410199 1.528101 1.527246 1.300327 1.221399 1.592859 0.532702 1.568432 1.088125 1.702394 0.803958 0.031199 1.780586 0.243871 1.600048 1.511383 0.866840 0.757921 1.120735 1.350127 1.431268 -0.011519 0.968537 0.011301 1.883892 0.654921 0.133461 0.874637 0.981673 0.816392 1.689034 0.482475 0.842611 0.810730 1.618569 0.046431 1.310719 0.512181 0.479317 0.024223 0.728337 1.348605 0.163471 0.927979)
+ 12.162715 #(0.000000 -0.097028 1.533963 1.020200 1.574459 0.116402 1.632465 1.485072 -0.421402 -0.049930 0.800257 -0.056847 -0.216494 0.292705 1.905910 0.296668 1.400303 1.594879 0.299457 0.210582 0.811565 -0.003618 1.385829 1.132808 1.834009 -0.208284 0.883142 1.604376 1.212355 0.881872 1.404766 -0.187065 0.174891 1.448124 0.860020 -0.085118 1.520419 0.172500 0.532466 0.579532 0.176969 0.194250 0.122361 1.781990 1.391054 1.801083 0.235334 1.269846 0.614754 0.205743 1.611988 1.141003 1.283989 1.552799 0.170148 0.911011 0.642255 0.565875 -0.034254 1.590912 0.895196 -0.222312 1.858960 0.095418 1.172462 0.044273 1.276020 0.479053 1.730192 1.084303 1.030640 0.651981 0.777266 1.647837 0.364657 1.667663 1.587998 1.315748 1.245056 1.763571 0.382228 1.686831 1.132282 1.730385 0.765969 0.012528 1.787348 0.299852 1.642778 1.543438 0.951838 0.879274 1.173225 1.301715 1.352241 0.026591 0.973127 -0.026557 1.905105 0.646444 0.081945 0.864899 1.001077 0.825668 1.639758 0.471083 0.922909 0.788318 1.604836 0.075835 1.276082 0.573186 0.461895 0.072046 0.761427 1.381674 0.276312 0.997279)
)
;;; 119 even --------------------------------------------------------------------------------
#(119 15.519069915733 #(0 1 1 0 0 1 1 1 0 0 0 1 1 0 1 0 1 1 0 1 1 0 1 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 0 1 0 0 1 0 0 1 1 0 0 0 0 1 1 0 0 0 1 0 1 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 1 1 1 1 1 0 0 1)
14.971 #(0 1 0 0 1 0 1 0 0 1 1 1 0 1 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 1 0 1 0 1 1 1 1 0 1 0 0 1 1 1 1 1 1 0 1 1 1 0 1 0 1 1 0 0 0 1 1 0 0 1 0 1 0 1 0 1 1 1 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 1 0 1 0 0 0 1 1 1 1 0 0 0 0 1 0 0 1 1 0 1 0 1 1)
- 12.357366 #(0.000000 0.052856 -0.174492 0.001506 0.117888 0.019405 0.816400 0.026228 1.844815 0.391140 1.276108 0.816507 1.835023 0.679441 0.239200 1.147907 0.849018 0.196961 0.474931 1.670011 -0.408306 1.279154 0.147814 0.871900 0.545994 1.874523 1.706033 1.565623 1.274952 0.554950 1.717709 1.696162 -0.120889 0.734182 0.240114 0.212921 0.475851 0.936491 0.255248 0.349958 1.839342 1.345768 1.237926 1.577410 -0.583036 1.075483 -0.126065 1.040112 0.711862 1.188478 0.242516 1.647959 1.167798 1.143027 1.080301 1.319459 0.269858 0.975174 0.979610 0.303293 1.001764 0.677674 0.695168 0.976199 0.713608 -0.004534 1.198727 0.996046 0.039347 1.758759 1.001354 1.062541 0.869984 0.149424 0.694069 0.914613 0.716378 -0.333516 0.833115 1.367462 0.037716 0.942630 0.903971 1.670842 1.629961 1.698411 1.046899 1.561564 1.565522 1.049940 1.557789 0.660823 1.533976 0.007324 0.426205 -0.169174 0.414861 1.095164 1.000476 1.213393 0.335169 1.357934 0.090823 0.519867 -0.018417 0.704406 0.484739 1.105970 -0.312824 1.826360 0.295700 0.861558 0.884997 0.410099 0.939577 1.382231 0.109535 1.088076 1.144412)
+ 12.270532 #(0.000000 0.080273 -0.227668 -0.046028 0.102480 0.083215 0.796371 -0.036476 1.871364 0.393604 1.188958 0.822170 1.893579 0.628340 0.273938 1.126947 0.882779 0.301799 0.430502 1.652656 -0.419228 1.214893 0.231075 0.844563 0.573675 1.872153 1.664557 1.598580 1.267609 0.599919 1.694070 1.656474 -0.097729 0.686981 0.249868 0.249378 0.562412 0.954952 0.212875 0.369060 1.865184 1.317518 1.271481 1.577874 -0.586897 1.103908 -0.114838 1.072263 0.758688 1.270505 0.242345 1.603449 1.213161 1.136929 1.080276 1.328862 0.233075 0.983854 0.964627 0.330598 1.048031 0.723329 0.710401 0.936411 0.735171 0.004046 1.342440 1.020083 0.044311 1.739548 0.969934 1.069271 0.888928 0.181865 0.760874 0.990382 0.705623 -0.330549 0.878530 1.409147 0.057405 0.898336 0.901415 1.671592 1.605132 1.700060 1.070918 1.623598 1.590309 1.130116 1.569986 0.689442 1.553089 0.017637 0.371946 -0.150707 0.422462 1.095800 1.004757 1.253948 0.315140 1.339074 0.184161 0.584542 -0.107451 0.698302 0.380565 1.113955 -0.277026 1.896636 0.212738 0.834559 0.837425 0.369034 0.887886 1.413352 0.133557 1.152521 1.174742)
)
;;; 120 even --------------------------------------------------------------------------------
@@ -4513,7 +4463,7 @@
15.350 #(0 0 1 1 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 1 0 0 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 1 1 1 1 0 1 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 1 1 1 1 1 1 0 0 1 1 1 0 1 1 0 1 1 1 0 1 0 0 0 0 0 1 1 1 0)
15.153992567168 #(0 0 1 1 0 0 1 0 1 0 0 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 0 0 1 1 1 0 0 1 1 1 0 0 0 0 1 0 0 1 0 0 1 0 1 1 1 1 1 1 1 0 1 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 1 1 1 1 1 1 0 0 1 1 1 0 1 1 0 1 1 1 0 1 0 0 0 0 0 1 1 1 0)
- 12.334522 #(0.000000 0.057471 0.811026 0.957517 1.315369 0.269830 1.685194 0.292255 1.673466 0.861717 1.600185 0.867004 0.560255 0.847007 1.551313 1.723229 0.579289 0.120248 0.328222 0.563266 0.373782 1.769072 -0.600028 1.267554 0.315461 -0.329607 1.961417 0.714961 1.012492 0.033031 1.390357 0.008191 0.252557 0.656202 0.776598 0.278795 0.405046 1.241793 0.445046 1.725387 1.878856 0.958086 0.853270 0.820104 1.061668 -0.208277 0.345705 0.014842 0.472635 1.679143 0.503208 -0.159084 0.346725 -0.106470 1.841794 1.047844 1.638986 1.347398 0.225618 0.325371 1.354277 1.355515 0.230889 0.990802 0.670195 0.859932 0.733608 0.291474 0.428810 1.169784 -0.174497 1.521697 0.916799 0.041565 0.392023 0.483178 1.651379 0.753608 0.101094 -0.223038 0.202475 1.681188 1.498567 1.959537 0.759764 0.243731 0.219469 0.536646 0.693775 1.836534 0.319184 0.126534 0.817595 0.024582 0.237828 1.852135 0.016620 1.139991 0.780445 0.840772 1.259801 1.278214 0.884399 -0.097465 -0.033124 0.950919 1.770582 1.393189 1.552548 0.421315 1.027843 0.664163 0.356313 1.534639 0.887219 1.120693 -0.088762 0.998049 1.167475 1.558269)
+ 12.208088 #(0.000000 0.007386 0.735120 0.953439 1.286335 0.312131 1.612264 0.270910 1.663860 0.868551 1.536511 0.905170 0.549778 0.922074 1.580183 1.739999 0.497137 0.100101 0.239494 0.538690 0.370511 1.763625 -0.593969 1.174633 0.276057 -0.340479 -0.034532 0.763228 1.106846 -0.019067 1.405063 -0.107930 0.125824 0.645837 0.848004 0.236812 0.362943 1.179783 0.384768 1.716743 1.906310 0.914309 0.840396 0.765557 1.024273 -0.167457 0.354016 0.111743 0.533886 1.692693 0.474738 -0.090959 0.469594 -0.087858 1.793821 1.147370 1.685925 1.393560 0.259879 0.282410 1.383883 1.350888 0.378273 0.991445 0.659781 0.779950 0.848240 0.281549 0.382403 1.147188 -0.160214 1.478727 0.915289 0.068065 0.377120 0.439145 1.740106 0.727169 0.082876 -0.171459 0.147434 1.595260 1.631652 1.933611 0.756470 0.200316 0.291156 0.414615 0.632997 1.927475 0.277406 0.059012 0.813211 0.035658 0.230145 1.871852 -0.033482 1.113287 0.807037 0.832429 1.211134 1.290601 0.881355 -0.171130 -0.047519 0.949298 1.742905 1.346213 1.560250 0.448661 0.933969 0.734525 0.311990 1.567045 0.871222 1.084408 -0.056984 0.969004 1.085695 1.527823)
)
;;; 121 even --------------------------------------------------------------------------------
@@ -4521,7 +4471,7 @@
15.168510014453 #(0 0 0 1 0 0 1 1 0 1 1 1 0 1 0 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 1 1 1 0 1 1 0 0 1 1 1 0 1 0 1 0 0 0 0 0 1 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 1 1 0 0 1 0 1 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0 1)
14.652157793709 #(0 0 1 1 0 0 1 0 0 1 1 0 0 1 0 1 1 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 1 1 1 0 1 1 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 0 0 0 1 1 0 0 1 0 1 0 0 0 1 1 1 0 0 0 1 0 1 1 1 0 0 0 1)
- 12.261022 #(0.000000 -0.029280 1.707928 1.147946 0.636196 0.170713 0.830668 1.385724 0.491647 0.209044 1.782987 0.814676 0.331453 1.941611 1.822622 0.200221 0.586359 1.571184 0.165247 0.370639 1.255410 0.181149 0.455998 -0.123764 -0.331158 0.452858 1.431398 -0.142793 0.291922 -0.402857 1.834328 0.738976 0.959060 1.538017 1.188037 1.320397 0.373323 1.259821 0.078100 0.593101 0.008946 -0.107220 1.292181 0.087846 1.637915 0.344303 -0.291786 1.548068 1.496414 1.280487 0.456937 1.855932 -0.211773 1.976518 0.402800 1.622388 0.271198 1.293108 0.741086 1.268183 0.720783 0.354605 0.446262 -0.045374 0.977087 0.299926 0.387525 0.982484 0.200462 -0.110871 1.227862 1.056640 1.147982 0.276517 0.802383 1.621989 -0.388825 -0.073329 0.760665 0.006555 1.292344 0.257294 -0.320878 1.477804 1.716809 1.601992 1.181808 0.205325 0.467906 1.469151 0.691722 1.539874 0.694539 0.942939 1.353707 1.015105 1.077489 1.300513 0.170211 -0.098308 0.058677 1.646172 0.875726 1.634838 1.608254 0.075443 0.453682 0.745271 -0.111191 0.029394 0.186371 0.650593 1.086241 0.923145 -0.108989 1.440186 0.009543 0.109509 -0.081826 0.337609 1.741963)
+ 12.181349 #(0.000000 0.062581 1.635201 1.161090 0.621346 0.110770 0.875598 1.327203 0.540390 0.098431 1.872368 0.761773 0.273647 1.913321 1.848041 0.229015 0.719641 1.514928 0.144445 0.372942 1.270374 0.168872 0.477978 -0.180104 -0.204080 0.399926 1.480183 -0.166979 0.256019 -0.338670 1.724627 0.785175 0.919181 1.523609 1.215019 1.353696 0.343101 1.296663 0.199967 0.690405 0.050979 -0.018004 1.246257 0.124616 1.601750 0.410294 -0.318141 1.525946 1.516194 1.317808 0.500545 1.767778 -0.151141 1.958825 0.502555 1.563439 0.279366 1.290884 0.673544 1.225763 0.688471 0.378954 0.413547 -0.033083 1.031126 0.287836 0.432190 0.959889 0.230359 -0.041100 1.234938 1.095574 1.119965 0.324974 0.765895 1.711888 -0.358549 -0.056335 0.744353 -0.033343 1.367185 0.361886 -0.347878 1.559223 1.832524 1.596382 1.153498 0.321050 0.473521 1.515407 0.761814 1.557676 0.616374 0.897872 1.351816 1.024941 1.048830 1.351793 0.130797 -0.059831 0.037108 1.568842 0.887935 1.646251 1.526930 0.142921 0.345516 0.698385 -0.015532 0.073959 0.171036 0.598049 1.089161 1.028931 -0.066288 1.394194 0.032250 0.112859 -0.100897 0.306873 1.750642)
)
;;; 122 even --------------------------------------------------------------------------------
@@ -4529,7 +4479,7 @@
15.305 #(0 0 1 1 0 0 0 0 1 0 0 1 0 1 1 0 0 1 0 0 1 1 0 0 1 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 1 1 1 1 1 1 0 0 1 0 1 1 0 0 1 0 1 1 1 1 0 1 1 1 1 1 1 0 1 0 1 1 1 1 0 1 1 0 0 1 0 0 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 1 1 0 0 0 1 1 0 1 1 1 1)
15.057187309653 #(0 0 1 0 1 0 1 1 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 1 0 0 0 1 1 0 1 0 1 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 1 0 0 1 0 1 1 0 1 1 1 1 1 1 1 0 1 0 1 1 0 1 1 0 1 1 1 0 0 0 1 0 1 1 1 0 1 0 0 0 1 0 0 0 1 1 0 1 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 1 1 1 1 1)
- 12.423989 #(0.000000 -0.007538 1.129676 1.261124 0.666637 0.498869 0.283082 0.659320 1.380435 0.959667 1.919874 1.609689 1.500387 0.398588 1.245799 1.392977 0.467372 1.566924 1.344657 0.368021 1.862062 1.264866 0.693515 0.247304 0.693214 0.186809 1.826986 1.522809 0.540721 -0.005641 1.643690 1.098499 1.401720 0.360978 1.344876 1.290958 0.837458 0.444913 0.150694 0.377322 0.729187 1.285039 0.436422 1.305453 1.691203 0.019316 1.979550 1.705429 0.830482 0.607282 1.073634 1.479605 1.580060 0.288818 1.531675 1.381731 0.541768 1.082035 0.158496 -0.034092 1.800981 -0.313565 1.482804 0.303653 0.549110 0.582672 0.150564 0.403062 0.350647 0.099389 0.750308 0.870659 1.081486 1.030031 1.847056 0.574423 0.892565 -0.069289 0.944257 0.065740 1.688038 0.514297 1.702086 0.977448 0.077045 1.068038 1.330591 0.719810 0.793694 1.021710 1.511821 0.870626 -0.020207 0.493312 1.187631 0.818100 1.843875 0.783987 0.782205 1.141661 1.604218 1.016246 0.940356 0.648460 1.719587 0.266778 0.541739 1.216449 0.797683 0.617534 1.040611 1.680421 0.907006 0.414484 0.599901 -0.038275 0.138022 0.037068 0.144207 0.914050 0.259363 0.562597)
+ 12.310349 #(0.000000 0.012723 1.133793 1.225249 0.651969 0.460879 0.328863 0.676572 1.241382 1.005473 1.926524 1.569414 1.540793 0.399477 1.220058 1.341996 0.435519 1.544750 1.373593 0.428403 1.871360 1.200755 0.702107 0.244549 0.691709 0.146237 1.816794 1.498548 0.536709 -0.062704 1.699018 1.107899 1.434719 0.396414 1.321667 1.261157 0.865970 0.399915 0.129481 0.414328 0.710666 1.302598 0.414021 1.285793 1.674278 0.031574 0.004900 1.776253 0.840537 0.570943 1.129058 1.462228 1.557058 0.272883 1.515687 1.406072 0.544957 1.111516 0.112061 -0.037467 1.839602 -0.302946 1.451021 0.334404 0.575774 0.582248 0.200163 0.409741 0.301837 0.092206 0.702513 0.891971 1.090664 1.048963 1.897733 0.568759 0.901539 -0.050878 0.879234 0.135860 1.750046 0.560798 1.740672 0.973016 0.070230 1.104491 1.324300 0.707263 0.814664 0.960611 1.514765 0.851825 -0.063266 0.567436 1.153202 0.856833 1.864802 0.833290 0.741363 1.101304 1.599991 1.016757 1.004149 0.647463 1.753768 0.285767 0.645186 1.272755 0.829270 0.616469 1.016873 1.725655 0.976140 0.398702 0.591325 -0.036746 0.129641 0.042284 0.153348 0.886558 0.335197 0.542861)
)
;;; 123 even --------------------------------------------------------------------------------
@@ -4538,7 +4488,7 @@
15.332496766406 #(0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 0 1 1 1 1 1 0 0 1 1 1 0 1 0 1 0 1 1 1 0 1 1 0 1 0 0 1 0 1 0 0 1 0 1 1 0 1 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 1 1 1 0)
15.156582832336 #(0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 1 0 1 1 1 1 0 0 0 1 1 1 1 1 0 1 0 1 1 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 1 1 0 0 1 0 1 1 1 0 0 1 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 1 1 0)
- 12.301021 #(0.000000 0.020073 1.925412 -0.026631 0.899641 1.168602 1.197023 -0.240457 0.343527 1.120134 1.543981 0.579444 1.383899 1.780987 0.265195 0.949516 1.100912 1.464717 1.503172 1.104628 1.500715 1.761148 0.794684 0.280699 1.353100 0.052904 1.321384 0.730017 0.440205 1.047487 1.648363 1.401363 0.571719 0.734277 0.355254 1.298087 0.742120 0.386928 0.344189 1.067133 0.592157 1.282864 0.321142 0.865589 1.413808 0.483816 1.154429 0.258908 1.554376 1.600909 -0.254592 0.646698 1.748852 -0.002127 0.904806 0.359661 0.796429 1.722942 1.804701 1.762874 0.930592 0.378824 -0.153237 1.218659 0.065486 0.378812 0.697142 1.047873 1.192893 1.294112 0.841687 1.219296 1.002506 1.674430 0.275722 1.089819 0.630773 0.288076 0.349269 1.394468 0.476298 1.123105 0.591912 0.172727 1.071849 1.768374 0.447230 1.348441 1.213004 1.602870 1.746530 1.335361 1.184310 1.043457 1.199719 1.078983 0.560113 -0.299563 0.187347 0.098525 0.456595 1.080728 1.623519 1.519250 1.468010 -0.288894 -0.598025 0.105527 0.258855 0.030260 1.669459 1.388563 0.544131 1.869785 0.746666 0.198393 -0.074357 1.492490 -0.461459 0.849087 -0.219507 1.147856 0.931288)
+ 12.186101 #(0.000000 0.031795 1.973174 -0.010039 0.870379 1.191485 1.246378 -0.202219 0.387095 1.137520 1.496035 0.565259 1.359155 1.677205 0.275203 1.040110 1.089033 1.446440 1.522452 1.017388 1.452173 1.771070 0.790325 0.297967 1.427572 0.108599 1.349998 0.795996 0.472991 0.996078 1.630274 1.436571 0.589441 0.781351 0.406050 1.258440 0.732979 0.369329 0.330843 1.088452 0.598384 1.243669 0.369244 0.868904 1.401584 0.383983 1.113220 0.200384 1.520508 1.685717 -0.220808 0.606937 1.610500 -0.036976 0.990323 0.406415 0.860883 1.753175 1.853970 1.759489 0.926500 0.408353 -0.160834 1.262513 0.126409 0.288247 0.761314 1.075724 1.207587 1.296517 0.872251 1.305848 1.069134 1.664269 0.198099 1.063499 0.619276 0.372902 0.316011 1.311829 0.552595 1.038504 0.537344 0.144670 0.961367 1.747357 0.438500 1.320932 1.284596 1.534875 1.714990 1.378686 1.125321 1.008303 1.181038 1.136051 0.629730 -0.289294 0.222728 0.071136 0.570645 1.101763 1.643756 1.460465 1.410058 -0.334447 -0.757217 0.116614 0.229039 0.077907 1.673712 1.428083 0.641095 1.880532 0.825517 0.162189 -0.145617 1.555600 -0.500638 0.782417 -0.231003 1.097807 0.955139)
)
;;; 124 even --------------------------------------------------------------------------------
@@ -4546,7 +4496,7 @@
15.402028019163 #(0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 1 0 1 1 0 1 1 0 1 1 1 0 0 1 0 1 0 1 0 0 0 1 1 1 1 0 1 1 0 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 1 1 1 0 0 1 0 1 1 1 1 1 0 1 1 1 0 1 0 0 1 0 1 0 0 1 0)
15.192802705519 #(0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 1 0 1 0 0 1 1 0 1 1 0 0 0 1 0 1 0 1 0 0 0 1 1 1 1 0 1 1 0 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 0 1 0 1 1 1 1 0 0 1 0 0 1 1 1 1 1 0 0 0 1 0 0 0 0 1 1 1 0 0 1 0 1 1 1 1 1 0 1 1 1 0 1 0 0 1 0 1 0 0 1 0)
- 12.362981 #(0.000000 -0.024688 -0.062906 0.269857 0.845063 1.338423 -0.195161 -0.018349 1.303934 0.723975 -0.329214 1.138536 0.092727 0.229321 0.176017 1.208539 1.811578 1.161511 1.198624 1.099150 1.847156 0.023951 0.140141 0.587715 1.135483 0.095174 -0.075028 1.235422 0.981236 0.758197 -0.424037 -0.266430 -0.129365 1.641631 0.942872 1.255213 0.221103 0.585567 1.833085 0.034671 0.450044 1.676070 1.463236 0.711424 -0.218355 1.599004 0.686155 0.856997 -0.001806 -0.209253 1.113990 0.822123 1.014958 1.729792 0.016333 1.042766 0.725027 1.787305 0.175281 0.799406 0.281299 0.055246 1.257756 1.273357 0.024200 1.573284 0.286561 0.160613 0.485808 0.282050 -0.074838 -0.176418 0.154265 1.096404 0.277155 -0.127857 1.707359 1.237388 1.633333 1.136904 1.126563 -0.035909 1.156212 1.845664 -0.028345 1.189959 0.014872 1.348365 0.405986 0.642269 -0.010947 1.618417 0.448748 0.272305 0.453420 0.205961 0.732685 1.700558 1.241118 0.408324 0.238614 0.971856 0.025680 0.952606 1.347615 1.359217 1.370211 0.508920 1.400112 0.815576 0.184300 0.785167 1.696488 0.783425 -0.147318 0.061568 0.846149 1.382917 1.184132 1.294153 1.372715 1.421983 -0.159382 -0.269311)
+ 12.247167 #(0.000000 -0.034072 -0.029458 0.300521 0.832136 1.244254 -0.149686 0.015257 1.213019 0.744696 -0.410130 1.009753 0.110509 0.294307 0.198090 1.269626 1.810634 1.222739 1.208547 1.087967 1.796114 -0.064408 0.190163 0.574321 1.060300 0.088975 0.052440 1.130432 0.955315 0.667891 -0.430293 -0.200405 -0.142660 1.642748 0.972918 1.151988 0.227751 0.542126 1.910809 -0.050892 0.444192 1.653385 1.420325 0.780394 -0.209690 1.602961 0.730733 0.866721 0.011628 -0.093211 1.086323 0.770216 1.080480 1.768033 0.052392 0.987047 0.627837 1.723230 0.150413 0.843827 0.283713 -0.018820 1.328859 1.357161 0.051110 1.524253 0.278084 0.166632 0.513679 0.315779 -0.019296 -0.142818 0.167844 1.041806 0.245803 -0.102123 1.678862 1.231608 1.644943 1.152045 1.116864 -0.112938 1.085400 1.721584 -0.052828 1.235107 0.017544 1.315851 0.451102 0.678590 -0.033555 1.667100 0.407550 0.256878 0.492287 0.273387 0.756422 1.704692 1.239302 0.441943 0.138625 0.937735 -0.013767 1.023373 1.316854 1.330139 1.299256 0.591484 1.352547 0.828757 0.234974 0.756539 1.683051 0.758193 -0.157633 -0.031995 0.809720 1.444354 1.182472 1.286697 1.311532 1.489315 -0.109475 -0.234387)
)
;;; 125 even --------------------------------------------------------------------------------
@@ -4554,7 +4504,7 @@
15.743360519409 #(0 1 0 0 1 1 1 0 1 1 1 1 0 1 1 1 1 0 0 1 1 1 1 1 1 0 1 0 1 0 1 1 0 0 0 1 1 1 1 1 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 1 0 0 1 0 1 0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 1 1 0 1 1 0 0 0 0 1 1 1 1 0 1 1 0 0 0 1 0 1 0 0 0 0 0)
15.340427254326 #(0 1 0 0 1 1 1 0 1 1 1 1 0 1 1 1 1 0 0 1 1 1 1 1 1 0 1 0 1 1 0 1 0 0 0 1 1 1 1 1 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 1 1 1 1 0 1 1 0 0 0 1 0 1 0 1 0 0 0)
- 12.617370 #(0.000000 0.023791 0.097078 1.663899 0.808492 1.066687 0.769260 0.351042 0.317357 1.658580 0.166179 0.264034 0.367710 -0.134331 1.260085 1.051255 0.341164 0.318900 0.964947 1.479624 0.825322 0.065984 1.293263 0.202975 1.834736 0.916003 0.459492 1.233464 0.823606 1.521917 -0.408500 1.478206 0.814173 0.404129 0.391059 0.298118 1.364723 -0.209853 1.173335 1.041465 1.473111 0.528272 0.595108 0.367315 0.382123 0.822810 0.794067 0.553887 0.434448 1.425244 0.370403 1.399350 1.229655 1.012845 -0.076161 0.943798 1.811399 0.180540 0.344478 0.402878 0.697181 1.422343 0.956661 1.701115 1.355084 0.097434 0.248019 -0.239277 1.461199 -0.018052 1.838221 0.583052 0.921667 1.847829 0.924435 1.145471 0.630694 1.203535 0.539994 0.846386 -0.428693 1.343938 1.532805 1.196022 0.754574 1.463117 1.775636 -0.551874 -0.327140 0.721482 1.504250 1.596901 0.717363 1.077614 1.750899 0.428597 -0.088206 1.063442 0.490150 1.176614 1.464681 0.348697 0.927839 0.518310 1.155076 1.933587 0.039182 0.272492 1.604854 0.583548 0.171662 -0.278896 1.089096 0.477686 0.230641 0.919807 1.530316 0.749224 0.684275 0.956269 1.268485 0.657916 0.933037 0.544503 0.603319)
+ 12.386096 #(0.000000 0.054739 0.012892 1.688327 0.789395 0.981358 0.862527 0.408208 0.316177 1.628577 0.197713 0.306954 0.278102 -0.239310 1.200342 0.996729 0.229385 0.386238 0.894720 1.415604 0.746053 0.085743 1.334814 0.152947 1.851968 0.965205 0.517025 1.305767 0.768367 1.502607 -0.439520 1.568698 0.828151 0.452022 0.389502 0.287459 1.370112 -0.243132 1.265621 1.034322 1.382053 0.522442 0.630268 0.396135 0.303565 0.900931 0.828295 0.533791 0.365059 1.414439 0.487598 1.381135 1.263346 1.001979 -0.036287 1.025283 1.788721 0.173188 0.237578 0.451985 0.700755 1.443394 0.940783 1.690945 1.339648 0.024376 0.245695 -0.323319 1.497662 0.055550 1.807189 0.686010 0.960866 1.928215 0.883593 1.207528 0.502838 1.316193 0.604309 0.921405 -0.424218 1.455962 1.541861 1.281418 0.753854 1.464012 1.783105 -0.544766 -0.359917 0.753354 1.527821 1.761744 0.706061 0.968775 1.821280 0.460476 -0.152227 1.049870 0.502190 1.146481 1.439398 0.407361 0.768270 0.541609 1.103655 0.004963 0.092195 0.354839 1.630701 0.500344 0.242661 -0.347036 1.070707 0.508870 0.186052 0.879290 1.445509 0.794648 0.804425 0.982265 1.248281 0.764743 0.907348 0.616622 0.643530)
)
;;; 126 even --------------------------------------------------------------------------------
@@ -4562,7 +4512,7 @@
15.680 #(0 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 1 0 1 0 1 0 0 1 1 1 0 1 0 0 1 1 1 1 0 1 1 1 0 1 0 0 0 1 0 0 1 1 1 1 1 0 0 0 1 1 1 1 0 0 1 1 1 0 1 0 1 1 0 0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1 0 1 1 1 1 0 0 1 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 0 1 1 0 0 0 0 1 1)
15.28212621738 #(0 1 0 1 1 0 1 1 0 1 1 1 1 0 1 1 1 1 1 0 1 1 0 0 0 1 0 1 1 1 0 0 1 1 1 0 1 0 0 1 1 1 1 0 1 1 0 0 1 0 0 0 1 0 0 1 1 1 1 1 0 0 0 1 1 1 1 0 0 1 1 1 0 1 0 1 1 0 0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1 0 1 1 1 1 0 0 1 1 1 0 1 1 0 1 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 1 1)
- 12.752879 #(0.000000 0.037389 1.343562 1.360777 1.393009 0.561884 -0.079987 0.607719 0.350800 0.662529 0.962766 1.112705 1.842955 1.392105 0.710685 1.531212 0.983043 1.502347 1.616610 1.466217 0.513200 -0.820551 0.835441 -0.164627 0.843212 0.240523 1.721848 0.093276 1.578852 0.027823 0.017441 0.225743 0.251580 0.404096 0.131771 0.026162 1.195889 -0.214460 1.443285 0.887069 1.569245 0.027496 0.786690 0.180558 1.854832 1.882489 0.217306 0.330232 1.410072 0.799474 1.212560 1.551738 1.453611 1.695964 1.040308 0.890924 0.765642 0.043106 0.578654 1.239119 0.486392 -0.321491 0.025845 0.208215 0.134630 1.182793 0.629646 0.668671 0.520115 0.948772 1.263315 1.296334 0.794874 0.245302 1.348400 0.710548 0.073702 1.284891 1.319743 1.463593 0.429675 0.843847 1.086586 -0.018996 0.469050 -0.101459 1.018737 0.094459 1.545442 1.953836 1.033276 1.206417 1.801475 0.480545 0.715608 -0.503020 0.745395 0.782801 1.827249 0.300104 1.024816 1.087924 0.904824 0.192065 0.257365 0.360410 1.534351 0.066969 1.339058 1.831067 0.708006 1.551499 0.540329 -0.097008 1.415007 0.919517 -0.116641 0.547289 1.121775 1.097886 0.918987 1.698409 1.564078 1.327145 0.645617 0.637669)
+ 12.551475 #(0.000000 0.041787 1.215879 1.355435 1.417018 0.539138 -0.010274 0.621145 0.330374 0.644706 0.980760 1.023144 1.852029 1.443162 0.837863 1.552826 0.895880 1.560032 1.636237 1.534707 0.456610 -0.872864 0.853244 -0.125299 0.823384 0.173047 1.760532 0.140000 1.633963 0.017436 0.120819 0.341219 0.148747 0.445523 0.158371 0.128151 1.176649 -0.184117 1.436107 0.981981 1.567899 0.052421 0.758386 0.207190 1.811266 1.821690 0.258839 0.324607 1.365374 0.863289 1.212024 1.582120 1.417654 1.659612 1.059967 0.849218 0.818185 0.087991 0.620887 1.250151 0.485602 -0.350615 0.061942 0.172401 0.217530 1.125150 0.681808 0.759757 0.570255 0.895957 1.263087 1.389004 0.784122 0.291789 1.334849 0.779550 0.100985 1.274992 1.394202 1.515328 0.466819 0.780076 1.091897 0.013635 0.477834 -0.203964 0.993723 0.127678 1.517740 1.873026 1.058643 1.252225 1.810056 0.473177 0.704841 -0.607395 0.818483 0.781511 1.777893 0.282301 1.037362 1.040706 0.964374 0.172399 0.335650 0.405950 1.620714 0.021816 1.366118 1.744235 0.798880 1.571316 0.510290 -0.163014 1.426742 0.890250 -0.051982 0.564260 1.134092 1.043560 0.949004 1.642200 1.641499 1.270084 0.686520 0.602744)
)
;;; 127 even --------------------------------------------------------------------------------
@@ -4570,7 +4520,7 @@
15.609939955803 #(0 0 1 1 0 0 1 1 1 1 1 0 1 0 1 1 1 0 1 1 0 1 1 1 0 0 0 1 0 0 1 1 1 0 1 1 1 1 0 1 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 1 0 0 1 1 1 0 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 0 0 1 1 0 1 0 1 0 1 0 0 0 1 1 1 1 0 0 1 0 0 1 0 1)
15.237931718393 #(0 0 0 1 0 0 0 0 1 1 0 1 1 1 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 0 1 0 0 1 1 1 1 1 0 1 1 0 0 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 0 0 1 1 0 0 0 0 1 0 0 1 1 0 1 0 1 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 1 0 1 1 0 0 1 0 0 1 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0)
- 12.519055 #(0.000000 -0.001497 0.763955 0.481179 1.221015 0.807185 1.200153 1.703704 1.757778 1.740373 0.663616 0.086980 1.785339 0.415622 0.662681 -0.160438 0.122919 0.967552 0.931790 1.270165 0.515504 1.416745 0.571184 0.770359 0.355702 0.416929 0.889212 0.752766 0.137504 -0.073903 1.826152 0.480639 1.600702 1.374853 1.021978 0.957945 0.794004 0.732935 0.351938 1.069004 1.049042 0.174176 0.926920 0.729637 1.054576 0.918677 0.575507 1.292482 1.104074 0.210726 1.116774 0.511474 0.000017 1.021375 0.313927 0.412740 1.420234 1.687054 1.249982 1.107296 0.534439 1.483214 0.886843 1.235125 0.614276 1.607532 1.204922 1.314568 1.222725 0.269149 0.461604 0.347341 0.462635 1.671122 -0.048346 0.869434 0.013824 0.059828 0.532719 0.744503 0.245035 0.513113 0.840105 0.273139 0.497535 1.330401 1.695229 0.252850 0.203410 1.135725 0.987218 -0.029459 1.890128 1.676216 0.177654 1.164682 1.591630 0.991178 1.607960 1.658791 -0.463328 0.268491 1.716260 0.262811 -0.139901 0.911894 1.028079 0.745922 -0.032840 0.738651 0.059219 1.448918 0.442098 0.970914 -0.066687 0.651296 1.175073 -0.259408 1.605296 0.686270 0.715879 1.043672 0.167354 -0.126280 0.249115 0.994567 0.757850)
+ 12.470774 #(0.000000 -0.046014 0.754971 0.459977 1.267986 0.784386 1.107225 1.686580 1.745497 1.727652 0.668896 0.079694 1.775906 0.417268 0.692548 -0.126121 0.129575 0.959337 0.901648 1.276576 0.551414 1.467538 0.535755 0.753957 0.332679 0.454533 0.892969 0.734157 0.174050 -0.057822 1.866047 0.446284 1.608878 1.382076 1.063972 0.947780 0.828799 0.709709 0.376380 1.070772 1.011876 0.182146 0.900865 0.658385 1.066923 0.940270 0.598547 1.284130 1.091277 0.240462 1.140722 0.515113 0.027935 1.003829 0.235264 0.401073 1.447335 1.616187 1.266629 1.026647 0.561673 1.455459 0.883083 1.215363 0.589007 1.631651 1.257810 1.372841 1.225546 0.185387 0.448119 0.301543 0.480924 1.665502 -0.042790 0.878436 -0.033492 0.037543 0.492506 0.732399 0.177634 0.477891 0.823241 0.268739 0.534320 1.381864 1.686548 0.223155 0.306451 1.136684 0.956191 -0.044029 1.931783 1.681057 0.181847 1.100727 1.645730 1.067448 1.598285 1.598939 -0.489426 0.277043 1.708372 0.192127 -0.119306 0.906362 0.977060 0.798624 -0.054888 0.784087 0.111141 1.438506 0.414715 1.081989 -0.082170 0.682069 1.113992 -0.241027 1.525611 0.696096 0.706396 1.009824 0.248798 -0.083571 0.164096 0.982076 0.741274)
)
;;; 128 even --------------------------------------------------------------------------------
@@ -4578,7 +4528,7 @@
15.889096531102 #(0 1 0 0 1 0 0 0 1 1 0 1 1 1 1 1 0 1 0 1 0 0 0 0 0 1 1 0 0 0 1 1 0 1 0 1 1 0 0 0 1 0 0 1 0 1 1 1 1 1 1 0 1 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0 0 0 0 1 1 1 0 1 0 0 1 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 0 0 1 1 1 1 0 1 0 0 1 0 1 1 1 0 0)
15.651492555885 #(0 0 0 1 0 0 1 0 0 1 1 1 0 1 1 1 1 0 1 1 1 1 0 0 1 1 0 0 0 1 0 1 1 0 1 0 1 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 0 1 1 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 0 0 0 0 1 0 1 0 1 1 0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 1 1 0)
- 12.818894 #(0.000000 -0.046296 0.980597 1.215020 0.164517 1.167114 0.404233 1.713523 0.187413 1.508411 1.437082 0.022436 1.792755 1.385015 1.584036 1.019673 -0.158920 0.112351 1.476638 0.127188 1.644863 1.287514 1.704576 1.387875 0.489377 0.577164 0.155475 0.501558 -0.008034 -0.041862 1.251620 0.258042 0.774749 -0.098942 1.430094 0.157622 1.756218 0.835232 0.185469 0.631840 1.428167 0.022859 0.699239 1.714206 1.291601 0.682731 0.515619 0.356933 1.800060 0.953352 1.254110 0.960941 0.200328 0.960441 1.614463 0.930152 1.729847 0.193673 0.595460 0.526221 1.363755 1.070460 1.231204 0.258309 -0.001179 1.634579 1.092790 1.855839 0.039511 -0.172667 0.643032 0.572573 1.258810 0.513238 0.678534 0.547889 0.542832 0.128516 0.072435 0.783312 0.102874 0.238893 1.489764 1.703797 0.072854 0.293244 0.213659 0.210948 0.866790 0.816182 1.121219 0.987547 1.387042 0.098551 0.115767 0.598108 1.782485 1.517589 1.632921 1.301840 0.325809 -0.065628 1.557044 0.584811 0.069615 1.352715 0.746512 1.644232 0.164009 0.494158 0.930595 1.655495 0.557573 0.697481 1.231574 1.154693 1.651726 0.724633 0.739617 -0.081701 1.886416 0.222672 1.723647 0.382139 1.618864 1.694377 0.539111 1.573513)
+ 12.560098 #(0.000000 -0.075742 0.938635 1.164859 0.227244 1.227254 0.447677 1.719708 0.207096 1.442500 1.260375 -0.090748 1.742942 1.455411 1.512201 1.074987 -0.287398 0.143050 1.373780 0.094570 1.601130 1.367704 1.566756 1.362088 0.502675 0.592757 0.274793 0.399734 -0.001943 -0.055926 1.152786 0.196389 0.607848 -0.096571 1.450546 0.152545 1.791441 0.841483 0.130655 0.617046 1.312397 0.056554 0.715443 1.745988 1.367229 0.755254 0.539329 0.240878 1.808054 0.982658 1.320107 0.953216 0.211380 0.965663 1.781093 0.968662 1.770715 0.167840 0.509005 0.675631 1.385156 1.097630 1.254177 0.250013 0.048868 1.716122 1.035490 1.904448 -0.029372 -0.257595 0.671212 0.553105 1.292109 0.461032 0.627372 0.634687 0.532507 0.229989 0.050741 0.791746 0.024580 0.210174 1.605171 1.749923 0.085656 0.333022 0.225670 0.273567 0.980670 0.750835 1.034058 0.995875 1.348674 0.083555 0.129309 0.620216 1.741470 1.451974 1.634111 1.334614 0.349472 -0.002192 1.569629 0.700872 -0.017241 1.313802 0.733982 1.640906 0.080260 0.510143 0.939985 1.681568 0.564187 0.727221 1.288790 1.282279 1.542423 0.669075 0.684490 -0.112128 1.902814 0.221799 1.722072 0.396055 1.572890 1.609621 0.459702 1.636039)
)
;;; 256 even --------------------------------------------------------------------------------
@@ -4602,7 +4552,7 @@
;;; 2048 even --------------------------------------------------------------------------------
#(2048 87.471149563312 #(0 0 1 0 1 1 0 0 0 0 1 0 1 1 1 1 0 1 0 1 1 1 1 0 1 0 0 0 0 0 1 0 1 1 1 1 1 0 0 0 1 1 1 0 0 1 0 0 0 1 1 1 1 1 1 0 1 1 0 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 1 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 1 1 0 1 1 1 0 0 1 1 1 1 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 0 1 1 1 0 0 1 1 0 1 1 0 0 0 0 1 1 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 1 1 1 0 1 1 1 0 1 0 0 1 1 1 1 1 1 0 1 1 1 0 1 0 0 0 0 0 0 1 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 1 1 0 1 0 0 0 1 1 1 1 0 1 0 0 0 1 1 1 0 0 0 1 1 1 1 0 0 1 0 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 0 0 0 1 0 1 1 0 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 0 1 1 1 1 0 0 0 1 1 1 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 1 0 0 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 0 0 1 0 0 1 0 0 0 1 1 0 1 0 1 1 1 0 0 0 1 0 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0 0 1 0 1 0 0 1 1 1 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 1 1 1 0 1 1 0 0 1 0 1 0 1 0 0 1 0 1 0 0 0 1 1 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 1 1 1 1 0 1 1 0 0 0 0 1 1 0 0 1 0 1 1 1 0 1 1 1 1 0 0 1 0 0 0 0 1 1 1 0 0 0 1 0 0 1 1 1 1 1 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 1 1 1 1 1 1 0 0 1 0 1 1 1 1 1 0 1 0 1 1 1 0 1 1 1 1 0 1 0 1 1 0 0 1 1 1 0 0 0 1 1 1 0 1 0 1 1 1 0 0 0 0 1 0 0 1 1 1 1 1 1 0 1 1 1 0 0 0 0 0 1 1 1 0 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 1 1 1 0 0 1 0 1 0 0 0 0 1 1 0 0 1 1 1 0 1 1 0 1 0 1 1 0 1 0 1 1 1 0 0 0 1 1 0 0 0 1 1 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 0 1 0 1 1 0 0 1 1 1 0 0 1 0 0 1 0 1 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 1 1 0 1 0 1 0 0 0 1 0 1 0 1 1 1 0 1 1 0 0 1 1 1 0 1 1 0 1 1 1 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 1 1 1 0 0 1 0 0 1 1 1 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1 0 1 0 1 0 0 0 1 0 1 1 1 0 0 1 1 1 0 0 1 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 1 1 0 1 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 1 0 1 0 0 0 1 1 1 1 1 1 0 1 1 0 1 0 0 0 0 1 1 1 1 1 0 1 1 1 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 1 0 0 1 0 1 1 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 0 1 1 1 0 1 0 0 1 1 0 0 0 1 0 0 0 0 1 0 1 1 0 1 1 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 1 1 1 0 0 0 1 0 1 1 1 1 1 0 0 1 0 1 1 0 0 0 0 1 1 1 0 1 1 1 0 1 1 0 0 0 1 0 1 1 1 0 1 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1 0 0 1 1 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 1 0 0 1 0 0 1 1 1 1 0 1 0 0 1 0 0 1 1 1 0 0 1 0 0 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 0 1 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 1 1 1 0 1 0 1 1 0 0 1 0 1 1 1 0 1 0 1 0 1 1 0 1 0 0 0 0 1 0 1 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 1 1 0 1 0 1 1 0 0 0 1 1 0 0 1 1 0 0 1 0 1 1 1 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 1 0 1 0 0 0 0 1 0 1 0 0 1 1 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 1 1 1 1 1 0 1 1 0 0 1 1 1 0 0 0 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 1 0 1 1 1 0 0 1 0 1 1 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 0 1 0 0 0 1 1 1 0 1 1 0 0 1 0 0 1 1 0 1 0 0 0 1 0 0 1 1 1 1 1 1 0 0 1 1 1 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 1 1 1 1 1 1 0 1 1 0 0 1 1 0 1 0 1 1 0 1 0 1 1 0 1 0 0 0 1 0 0 1 1 1 1 1 0 1 1 0 0 1 1 1 1 0 1 1 1 0 1 1 1 0 0 0 0 0 0 1 1 0 0 1 1 0 0 1 0 0 0 1 1 0 1 1 1 1 0 1 1 0 1 1 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 1 1 1 0 1 0 1 1 0 0 0 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 0 0 0 1 0 1 1 0 1 0 0 1 1 0 1 1 1 1 0 0 0 1 0 0 0 1 1 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 1 0 0 0 0 0 1 1 1 1 1 1 1 0 0 1 1 0 1 1 1 1 0 0 1 1 0 0 0 1 1 0 1 0 0 1 0 1 0 1 1 1 0 1 1 1 1 0 0 1 1 1 1 1 0 1 0 0 0 1 0 1 1 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 1 0 0 0 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 1 0 1 0 1 0 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 1 0 1 0 0 1 1 0 1 1 0 1 1 0 1 0 0 1 0 1 0 1 1 0 0 0 1 1 0 1 0 0 1 0 1 1 0 0 0 0 1 0 0 1 0 1 1 0 0 0 1 1 0 0 1 0 0 0 0 1 1 1 0 1 1 1 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 1 0 0 1 1 1 0 1 1 0 0 1 1 1 1 0 1 0 1 1 1 1 0 0 1 1 1 1 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 1 0 0 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 0 1 1 1 0 1 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 1 1 1 1 0 1 0 0 1 1)
- 79.180513 #(0.000000 1.036746 -0.051131 0.329082 0.635176 1.146731 1.099812 1.510407 0.080809 1.331224 0.065323 -0.084834 0.797314 1.773104 0.448395 0.247044 1.390714 0.181436 1.645766 0.931722 0.340292 1.348828 0.179565 0.900137 1.691978 1.682174 1.760200 0.423339 0.182811 1.744923 1.899286 0.621631 1.290065 1.765683 0.150003 1.811442 0.282875 -0.055828 1.503486 0.164324 1.254357 0.093533 0.938400 1.751764 0.333327 0.485579 1.501771 1.293265 1.260298 0.467132 0.758092 1.689466 1.059247 1.731966 0.462079 0.808953 1.155408 -0.016520 0.219801 0.076264 1.742799 0.711637 0.107010 0.734406 1.136145 1.538275 1.837836 1.713103 0.861922 1.303075 1.313425 1.013158 0.236232 1.655135 1.676783 1.711127 -0.032101 1.896636 0.065530 1.245150 1.792953 0.521565 0.078850 0.917220 0.277893 0.366893 0.300126 1.420641 1.305550 1.939976 1.468909 1.031580 1.847912 0.806103 0.589471 0.845775 0.271559 1.174805 1.921086 1.102223 1.658707 1.776378 1.781031 0.628512 0.457752 0.251802 0.488367 0.535863 1.493428 0.940686 1.801866 0.938693 0.290371 1.426402 0.416174 0.062463 0.690754 1.934640 1.756373 0.627350 1.631442 -0.059694 1.371530 0.860727 1.471451 1.402051 0.343753 0.790847 1.335184 0.493656 0.223357 0.156507 0.702238 0.428333 -0.016579 0.882576 1.722780 0.435168 0.265928 1.354992 0.164169 1.355401 1.247253 1.745756 0.171854 0.370112 1.457056 0.901647 0.207830 0.132106 0.353888 0.559380 1.573062 1.068208 1.402094 1.319562 0.220906 0.860262 1.179307 1.498123 1.291853 0.810952 0.245713 1.892284 1.482644 0.063217 0.642581 0.105088 0.678851 0.913168 0.701913 0.108828 1.829216 0.028982 0.218284 0.434790 0.311357 0.823963 1.800954 0.463442 0.873262 1.635884 1.586685 1.727156 0.775121 0.113918 1.546459 -0.023286 1.198600 0.702058 -0.019881 1.166316 0.327441 0.591450 1.437692 1.008877 0.297979 1.711312 1.725373 1.690698 0.517011 1.705189 0.248526 1.123173 0.050227 1.182141 0.832068 0.699818 -0.009388 1.114658 1.665807 0.864230 1.658303 0.646040 0.828795 0.053357 -0.194376 1.463750 1.880545 0.122959 0.602534 0.236441 0.436498 1.305175 1.254439 0.253767 1.561268 0.230567 0.809487 0.519666 1.552828 1.571512 1.251771 -0.074318 1.675167 1.086717 0.035780 1.055228 0.614425 1.178348 1.829519 0.797563 0.382422 1.231945 1.393388 0.740045 0.902949 1.186522 1.216571 0.939967 1.681821 0.366592 1.312116 0.047978 1.744357 1.448178 1.456784 0.619753 1.512217 1.419532 1.623892 0.478892 0.840962 -0.076905 0.709013 1.147979 0.916043 1.809281 1.382472 0.403506 0.189721 0.730402 0.334698 0.821240 -0.027490 1.614917 0.198891 0.311610 0.057730 1.752927 0.651753 1.203761 1.454044 0.596166 1.699607 0.504316 0.953535 0.394738 1.176530 0.798433 1.890607 1.606895 1.121068 1.144711 1.563892 0.182627 1.308272 1.560621 0.492270 1.670411 1.177432 1.188098 0.875037 0.224589 1.651949 0.556700 1.829103 0.586150 -0.200945 0.334736 1.896079 0.520359 1.028041 1.280867 1.331593 0.447497 0.111462 0.460885 0.118861 0.252474 1.214367 1.401760 1.264096 1.259102 0.576536 1.696721 0.500899 1.764665 1.118124 0.129503 0.584406 0.815706 1.453897 -0.002552 -0.045667 0.952611 1.035309 -0.070342 0.149029 0.052407 1.833559 0.717542 0.938552 0.279443 1.284880 0.398068 0.168181 1.066396 1.174609 1.241658 0.575223 1.602361 0.406006 0.688503 1.480744 0.187291 1.778472 1.369459 1.252508 1.200925 0.206917 0.371605 0.169613 1.494756 1.790148 -0.218914 0.663688 0.562256 1.716190 0.640909 0.157380 1.533473 1.490459 1.834391 1.093910 0.302530 1.939443 0.386189 1.617456 0.312124 0.243757 1.720036 0.756515 0.474043 0.295964 1.154736 1.007454 1.288621 0.815923 0.907612 1.906744 0.805617 1.194874 -0.019956 1.582123 1.767284 0.753802 1.644945 1.103541 0.907878 0.297140 0.383244 0.437681 1.755096 1.629213 1.297043 1.678915 0.412671 0.611777 0.218801 1.968823 0.556590 1.679967 1.183583 1.403194 0.832814 1.426849 1.506268 0.007579 0.406647 0.532560 1.109321 1.303253 0.750531 0.268315 1.460601 1.556022 1.040304 0.302233 1.841018 1.611878 -0.006020 0.561451 0.949112 1.735697 0.432522 1.289686 1.238095 0.769561 0.001033 0.827810 0.348877 1.638924 0.523841 0.323849 1.004343 1.335974 0.942369 -0.113888 0.530811 0.862332 1.788166 -0.189100 1.658626 1.521120 0.258068 0.746590 1.042843 1.059272 1.486583 1.562896 1.757953 0.238625 0.251845 0.323488 0.216479 -0.127171 0.005497 1.684908 1.050642 1.070917 1.200173 1.171834 1.710160 1.030836 1.120116 0.960619 1.345544 0.452703 1.233448 1.153546 1.232830 0.445080 1.206121 1.577501 0.055618 0.119213 0.671275 1.608652 1.444155 0.664502 1.175862 0.181128 1.774449 0.827625 1.460738 0.663698 0.665983 0.001344 0.367382 1.772452 1.810947 0.557650 0.260606 0.745125 0.076091 0.854684 1.812183 0.480128 1.041956 1.439904 1.008756 0.984939 0.715056 0.712231 1.201287 0.920433 0.440276 0.621340 1.313157 1.157838 1.392490 0.018265 1.279025 0.190089 0.210698 0.723201 0.236154 0.578150 0.997828 0.040273 1.725382 1.157568 1.687142 0.938244 1.825347 0.905443 1.403891 1.221939 1.102672 0.049664 0.164579 1.612609 1.215462 1.522381 1.840657 -0.235508 1.485376 1.159558 1.877011 1.688480 0.015868 -0.094995 0.173055 0.012773 1.581321 1.623520 1.327383 1.025589 1.496547 0.816809 0.386580 1.245197 0.986734 1.398305 0.502654 0.411066 0.894410 0.298692 0.340153 0.572415 0.719459 1.467180 0.499214 0.434797 1.881943 1.364521 1.555906 0.975913 1.626619 1.797860 1.368967 0.926051 0.112647 0.281754 1.693199 0.336651 0.367559 0.494267 1.101438 0.365815 0.091417 0.441476 1.834674 0.180650 -0.032791 -0.117321 0.103640 1.189063 0.404416 0.142787 0.200281 1.080709 0.156603 0.849051 0.867453 0.321585 0.450401 0.152067 0.179118 0.099752 0.146594 0.449259 0.588217 0.310997 0.892146 1.152758 1.901778 0.933937 0.991730 1.678406 0.819257 1.272313 0.005355 0.277947 0.266067 1.174227 0.660834 1.168557 1.785186 0.914089 -0.051096 0.790432 0.255791 1.564328 1.886117 1.371789 1.623475 1.675570 1.858421 1.352148 1.765270 1.151609 0.119873 0.039107 1.103351 0.678488 0.371757 1.415282 1.469559 1.159490 0.546939 0.967420 0.645213 1.804381 1.609085 1.015214 1.489312 1.875452 1.684734 1.698747 0.695061 1.557693 1.076820 0.824040 1.683592 0.688580 0.263958 0.157455 0.177137 0.802201 0.189150 1.282297 1.159637 0.899242 1.707853 0.934885 1.971205 0.379195 1.485052 0.116995 1.401183 0.538056 0.479973 0.207243 0.795961 1.275047 0.542066 1.061576 0.955368 1.248948 0.066438 0.445193 0.681869 1.478517 1.526866 0.647208 1.840560 -0.060589 1.421520 1.295125 0.178168 0.137929 0.264208 0.579287 1.316233 1.234792 0.665907 0.740178 1.201242 1.231273 0.129539 0.475058 1.351907 1.741707 0.396109 1.709550 1.004741 0.523101 1.060120 1.828094 0.974448 0.049986 0.572706 1.811679 1.176420 1.224541 1.576871 -0.159386 0.271525 1.532829 0.521744 0.828202 0.948704 1.672721 0.285378 1.237501 1.942041 0.606480 0.264222 1.789903 0.486604 1.044063 -0.059749 0.082237 1.244714 1.145909 -0.057001 1.544281 0.427860 0.813935 1.098967 0.220534 1.036888 1.628633 1.565450 1.059644 0.145288 0.903593 0.135907 -0.064226 1.108003 0.485604 0.633196 0.846756 0.063445 1.732640 1.823296 0.131912 1.139552 0.976316 1.534633 0.074916 0.563508 0.894989 0.767968 0.576159 1.180548 0.655031 1.546581 1.316315 0.466787 0.780752 1.011362 0.529210 0.215499 1.146005 1.720805 1.516495 0.452243 1.419290 1.693446 1.151800 1.203491 1.545764 1.237170 1.179786 0.351241 1.517836 -0.034311 1.344750 1.005674 -0.093527 0.742958 0.651145 -0.090000 0.860531 0.572657 1.680672 0.325253 1.140842 1.184468 0.552150 1.486305 -0.085234 0.724337 1.394573 1.207908 0.387392 0.740576 0.453654 0.953022 1.208851 1.154046 1.020914 1.096338 0.206654 1.137329 1.614356 1.784585 0.336208 1.604530 1.830641 0.673112 1.328847 0.951808 1.393233 0.791160 1.214431 1.069330 1.188707 1.684571 1.167165 1.964703 -0.056274 0.840555 1.211087 1.372587 0.761732 1.239545 0.970146 1.730601 1.647287 0.357231 0.246471 1.623744 1.483045 1.021539 0.567723 0.075859 1.075807 0.702787 1.235311 1.051981 1.841776 1.248621 0.049291 -0.114991 0.357304 0.503563 -0.000719 0.920272 0.003076 0.868291 0.816373 -0.037671 1.472180 1.043156 0.324013 0.595452 1.673927 0.188781 1.413518 0.911235 1.495794 1.448849 1.650748 1.343656 1.004888 0.101046 0.623507 0.468342 0.991201 1.455005 0.890261 0.428824 1.692095 0.688586 0.633188 0.509164 1.112507 0.383576 1.704514 1.160460 0.090417 0.292608 0.759603 1.502693 1.521429 0.447296 0.161222 0.725842 1.378204 1.656417 0.598857 0.059341 0.539936 1.160696 1.317036 1.574273 0.672056 1.265833 0.493150 1.265061 1.571246 1.456478 0.535454 0.471421 1.677790 1.105198 0.227380 1.691692 0.779127 0.875817 1.605022 1.745973 0.203587 0.572823 1.612132 0.435811 0.257772 1.921712 0.938010 1.339594 0.539886 0.112077 0.778995 1.980803 1.663720 1.520268 1.109017 0.120917 0.013761 0.477980 1.424697 1.791461 0.483982 1.446830 0.446084 0.174320 1.742463 1.332192 0.057079 1.633514 1.226145 1.604327 0.983811 1.212021 1.236384 0.029779 1.335949 0.585547 0.178832 1.241468 1.125933 1.734056 1.665631 0.266057 1.607736 0.157990 0.340047 0.891043 -0.076226 0.089814 0.940987 0.095646 0.754578 0.877254 1.931535 1.551413 1.827288 0.380414 1.436951 0.270878 1.373297 1.467073 0.555483 0.355911 0.367727 0.416972 1.558113 1.122650 0.768305 1.681943 0.208604 0.040339 -0.012142 1.632216 1.737613 1.884963 1.720747 1.343332 1.717246 0.585872 0.825531 0.306008 0.084482 0.412559 1.420722 1.006218 1.418050 0.383966 1.320060 0.960060 0.679089 1.569584 1.726314 0.252093 1.096534 1.159807 0.136727 0.849067 1.042532 0.448937 1.296532 1.590605 0.658820 0.828523 1.496967 0.265819 1.230264 0.317315 1.166851 0.715203 0.603931 1.042527 1.842829 0.446217 1.098211 1.008784 1.750525 1.261177 0.801014 0.803123 0.070672 0.983421 1.394658 0.772326 0.266129 0.018442 0.399640 1.162014 0.677609 0.825887 0.692734 1.475797 0.061054 0.139099 0.961328 1.040288 1.441185 0.938060 0.050932 1.435812 0.170453 0.932816 1.289644 0.711273 0.200051 1.379339 0.479029 1.128726 0.025409 1.477339 1.701425 0.736979 0.114421 1.802551 0.222055 0.338399 1.291458 1.853801 0.589995 0.670239 1.653282 1.309573 0.388676 0.119060 0.032273 0.636145 0.393880 0.889012 1.639466 1.143573 0.958309 0.448533 1.175509 1.435195 1.029976 1.517908 0.271243 1.136462 1.114824 0.667024 -0.094581 1.322404 1.187319 1.365396 0.111423 1.537422 0.458475 1.614180 0.797034 0.195668 0.291706 -0.056207 0.426859 1.887188 1.042691 -0.009617 1.171454 0.908853 0.969054 0.732499 -0.145359 -0.095412 1.995944 0.066024 0.989472 0.325007 0.370215 0.354024 0.158176 1.911362 1.932714 1.942981 1.560023 0.706205 0.152048 0.019150 1.329791 1.231424 0.534461 1.806209 1.627895 0.226580 1.713475 0.625252 0.645093 1.453045 1.355365 1.097112 0.216975 0.787359 0.688693 1.890603 1.363322 1.047915 1.964733 0.455335 0.514396 0.751910 1.319747 1.441582 1.442575 1.523970 0.928177 -0.252332 0.762613 0.923560 0.499192 1.115129 1.660385 0.121325 1.781662 1.676949 0.047215 0.443215 0.317270 1.629264 0.584881 0.307609 1.410428 0.615625 0.754575 0.603094 1.296177 1.686351 1.007882 0.711337 1.228968 0.216176 0.885402 1.244821 1.669283 0.225702 1.409116 1.229843 0.535172 0.488665 1.354827 1.036777 1.103081 0.070003 1.430737 1.575015 1.309138 0.192257 0.930051 1.688617 0.355135 1.152597 1.675222 0.596080 0.894036 1.282024 1.863254 0.609343 1.123074 1.258696 0.327431 1.114349 0.482483 0.712406 0.768454 0.728365 0.488896 1.675939 0.182526 0.477806 1.482289 0.176250 0.446771 0.206927 1.232385 0.268537 0.158561 0.918463 1.437560 1.889386 0.456721 0.544307 1.221980 1.304858 1.059505 0.680703 1.174200 0.680396 1.378541 0.501970 1.768020 1.313475 0.091014 1.703759 1.383239 0.440948 0.359018 0.608816 0.970820 0.469250 1.743435 0.614454 1.731307 1.726531 0.634514 0.567703 1.050581 0.058783 0.523298 0.259636 0.686533 1.805481 1.230672 1.339644 0.586070 0.779500 1.825082 0.861420 1.823026 1.353494 0.294264 0.341178 0.137603 0.092482 0.917707 1.235396 -0.104681 0.403843 1.480390 1.530195 0.943069 0.949334 0.867432 0.409792 0.814177 0.406048 1.614946 0.461661 1.070614 1.487911 0.223142 0.389460 0.160884 0.478685 0.242005 0.679760 1.220964 1.368706 0.489837 1.675626 0.762668 1.131059 1.838027 0.348955 0.038231 1.684477 0.676393 0.710151 1.804383 1.105732 1.181457 1.701061 0.241759 1.594850 0.714307 1.047474 0.086297 1.632197 1.603684 0.073656 0.369826 0.451795 1.035394 1.349735 0.385227 1.416611 1.210542 1.151027 1.657189 1.253794 1.235810 1.050396 0.007259 1.029919 0.606898 0.666861 1.911014 0.666215 0.208105 0.449235 1.091381 1.473526 1.810229 0.773223 1.567079 0.464052 0.500158 1.001761 1.357567 0.536089 -0.024836 0.882510 -0.021124 1.737192 1.398887 1.587704 0.743618 1.498947 1.340330 0.411610 1.162569 -0.008903 1.035988 0.628766 1.457490 0.972924 -0.157375 1.722133 -0.031890 1.407814 1.634175 0.507054 1.481635 0.493815 1.358875 0.585876 1.471153 0.524615 1.608234 1.827501 1.066810 -0.081123 1.282827 -0.058614 1.929570 0.293900 0.114130 1.028682 -0.085213 0.004200 1.124978 1.383956 1.848633 1.648160 0.146675 0.596447 0.872241 0.760895 1.632362 0.759988 0.026043 1.821493 0.161572 0.163095 1.534749 1.435851 0.798340 -0.085446 0.458758 0.839089 0.310030 0.293299 0.556074 0.797288 1.166415 0.710423 1.830202 0.747449 1.752377 0.503790 1.734727 0.015821 1.315301 1.688001 0.401212 0.928775 0.705904 0.976545 0.772292 0.896054 0.918897 0.944341 1.560835 1.168187 1.582160 0.263425 0.595907 1.677872 0.694921 1.941551 0.998985 1.278033 1.286904 1.210876 0.497918 1.416266 1.586113 0.960074 1.682397 1.544094 1.716997 0.930420 1.166108 1.647876 0.569740 0.284953 0.632931 1.098364 1.476111 0.511260 1.454481 1.013788 1.605056 0.951582 1.686602 0.953212 -0.058494 0.000016 1.158803 0.583220 1.149432 1.812279 0.858877 1.806607 1.462520 1.662835 1.845871 0.979946 0.857805 0.533456 0.806286 0.499873 -0.032487 1.618243 0.051199 0.624329 1.817811 0.262781 0.158247 0.105414 -0.019279 1.830261 1.310852 1.756086 1.192548 1.349151 0.094920 1.506201 0.364717 1.560108 1.671929 0.816979 1.246348 0.439817 1.052056 0.845101 1.024505 0.957736 1.466529 1.301728 0.291241 1.201181 0.720281 0.265810 1.719951 1.095074 0.234739 1.107571 1.013767 0.446704 0.603854 0.760832 -0.004017 0.534439 1.722956 0.611258 1.143488 1.109982 0.874868 0.935426 0.131865 0.967433 0.972387 1.350161 0.316699 1.168245 1.121615 1.923856 1.470019 0.859118 0.938701 0.707868 0.789533 1.205694 0.861981 0.141131 0.474779 1.052920 0.449935 0.580799 1.538728 0.592240 0.361557 1.574496 1.752514 0.848464 1.912296 1.556730 1.011948 0.831501 1.785796 1.154144 -0.051158 1.495697 1.749531 0.867153 0.219959 0.784951 0.008405 1.146589 1.702196 0.230772 1.095756 1.498612 0.903150 1.503355 0.153221 1.387013 -0.237570 0.291543 1.608176 0.466591 0.027360 0.250997 1.086928 0.994022 1.127654 0.061412 1.429392 1.539778 1.996483 1.874510 1.297452 1.036123 0.158315 0.081395 0.880323 1.094281 1.341930 -0.084559 0.045194 -0.053000 1.262038 0.979328 0.256570 0.860357 0.799300 0.420657 1.733071 0.096986 0.344813 0.425786 1.066412 -0.006969 1.434822 1.858382 1.303263 0.265476 1.679290 1.289352 0.280868 1.403933 0.875004 1.634309 1.596941 0.887476 0.066534 1.048235 1.462803 0.781692 0.216320 0.207071 1.158966 0.025693 0.055861 1.594219 1.695067 1.590000 0.025637 0.968172 0.752252 0.815645 1.704633 1.475850 1.285590 1.881750 0.144791 0.416498 0.299141 0.853622 0.507915 0.611424 -0.108389 1.221477 1.584053 0.918700 1.820178 1.508020 1.184871 0.259919 0.642810 0.936578 1.008001 0.650751 1.031329 1.420925 0.260109 0.223268 -0.102085 -0.165234 0.958689 0.412174 1.543821 0.371386 1.064142 1.318409 1.096765 0.755785 1.068812 0.346952 1.624663 0.212569 0.478582 0.611660 0.534282 0.081522 1.716383 0.851235 0.460631 1.062657 0.098831 1.861458 1.023332 1.706232 1.218730 1.749407 0.589747 0.166716 1.864044 1.174317 1.010884 0.417770 1.083716 0.588477 0.700041 1.525793 -0.144945 0.900858 1.033702 1.604949 1.553379 1.281041 1.466348 1.394805 0.081862 0.163780 1.028401 1.502246 1.364703 1.205589 -0.308570 1.093046 0.471550 0.471437 0.064151 1.625050 0.588867 0.933733 0.528957 0.764435 1.410846 1.789201 0.868711 1.569629 0.507456 0.922198 0.742286 0.465196 0.688291 0.040119 0.659788 -0.144112 1.395004 0.226870 1.565429 1.786813 0.546193 1.638969 0.881005 0.112189 1.149971 0.400722 0.696967 0.197661 0.109195 1.122700 0.035720 1.244715 0.170671 1.596169 1.347569 0.846583 1.912558 0.717657 0.581574 -0.099189 0.322232 0.594664 0.013655 1.526031 0.771953 0.701337 1.257214 0.043285 0.796578 1.237366 0.921104 1.256237 1.816805 1.770211 1.638197 1.461258 1.857332 1.019817 1.340356 1.093174 1.790441 0.223717 1.573015 0.214175 1.054677 1.772288 1.706080 1.718727 0.726243 1.540878 0.791977 0.073471 1.617447 0.594575 0.755608 0.945692 1.454455 0.083511 0.711134 0.740400 1.745726 1.119552 1.758129 1.645517 1.214890 0.607307 1.295119 0.181299 0.721338 0.383310 1.060469 1.506216 1.168252 1.289932 1.944041 1.409557 0.106043 -0.203294 0.635709 0.339329 1.150512 0.309066 -0.230214 1.571177 1.293599 0.474210 0.310463 1.022977 1.031441 0.345081 0.577694 1.839242 0.721046 0.182553 0.148898 0.269567 1.506932 0.205785 1.360047 0.229863 1.821756 0.204709 0.342170 0.359375 1.325440 1.122104 0.378227 -0.228768 1.090833 0.278063 0.602423 0.303937 1.479441 0.684874 1.832064 0.472907 1.790644 1.227102 1.388853 0.502733 1.008134 0.588465 0.185105 1.394660 0.619325 0.691393 1.938008 0.918863 0.339680 1.459758 1.189909 0.810442 0.175437 0.358152 0.869495 1.057578 0.173306 -0.003274 0.902456 1.280197 1.959900 1.438170 1.060026 1.699028 0.642310 1.275212 1.299042 0.443598 0.918946 1.192369 1.209267 0.158783 1.002312 0.613268 0.641243 1.084986 0.561730 0.594007 1.768657 0.164599 0.503530 0.754738 0.272548 0.073787 0.949348 0.962046 0.749923 0.821795 1.031202 1.515462 1.109269 1.904429 0.614060 1.667919 1.680420 -0.161310 0.207705 1.475951 0.415689 0.548916 1.131951 0.434103 1.252860 1.410842 0.900561 0.512214 1.799266 0.683392 -0.117290 1.523431 0.861207 1.790905 0.906681 1.252303 1.775844 1.129321 0.471102 0.141029 0.203533 1.616072 1.185988 1.267091 1.512558 1.092241 0.121110 0.596210 0.940476 0.699670 1.745779 1.050895 0.380511 0.201833 1.115700 0.985407 1.118715 0.093150 1.146838 0.550522 1.677173 1.557422 0.129751 1.652175 0.665423 0.121568 1.900719 1.870188 0.333362 0.313481 1.781637 1.696035 1.832277 0.251448 -0.047358 0.552496 0.376376 1.238155 0.326348 0.951150 1.644092 0.514335 1.082091 0.739008 1.497259 0.053428 0.657549 0.020482 0.156495 0.327606 0.292631 0.799795 1.728601 -0.000979 0.162411 0.351969 0.886176 1.577660 1.841624 0.059820 0.588402 1.586812 -0.104573 1.443386 0.082434 1.552790 1.126146 1.593530 1.178727 0.521036 0.623159 0.483910 1.899747 0.900167 1.141558 0.328857 1.294608 0.374158 0.376694 0.352299 1.176148 0.719229 1.316184 1.326727)
+ 78.079325 #(0.000000 1.036212 -0.043685 0.331976 0.639530 1.127516 1.095152 1.508236 0.077934 1.337557 0.072113 -0.092944 0.796909 1.784824 0.440076 0.246196 1.387524 0.190896 1.640182 0.925143 0.346541 1.367537 0.178172 0.900392 1.703536 1.678208 1.753849 0.425105 0.187619 1.751892 1.898170 0.616148 1.276449 1.748534 0.146310 1.804887 0.286781 -0.064076 1.520935 0.166848 1.246710 0.087250 0.943537 1.755401 0.334485 0.490353 1.501725 1.277784 1.245080 0.471353 0.764254 1.697034 1.056331 1.736214 0.463227 0.796303 1.150866 -0.021932 0.234603 0.080694 1.745115 0.716674 0.093762 0.744119 1.143077 1.540437 1.841607 1.711093 0.867517 1.296036 1.315314 1.006884 0.239668 1.666083 1.671147 1.716928 -0.027459 1.906723 0.073560 1.255469 1.796692 0.526703 0.076840 0.934228 0.293278 0.367456 0.305891 1.422085 1.299849 1.951249 1.462008 1.040367 1.853366 0.810937 0.603550 0.848743 0.268307 1.173776 1.919876 1.102197 1.660214 1.762553 1.781211 0.633437 0.456915 0.254253 0.486765 0.536153 1.493176 0.945749 1.791455 0.934973 0.284784 1.433744 0.425334 0.064742 0.690643 1.925513 1.755950 0.618329 1.632172 -0.059593 1.375330 0.869966 1.487228 1.414963 0.333672 0.780241 1.330677 0.484533 0.218933 0.162630 0.710074 0.419557 -0.032680 0.883965 1.717277 0.430915 0.263252 1.360127 0.169506 1.343179 1.234460 1.750884 0.164361 0.378299 1.460882 0.897871 0.213904 0.128719 0.360447 0.555828 1.579900 1.051631 1.398250 1.313610 0.220306 0.871110 1.178519 1.513441 1.303728 0.802201 0.242388 1.900778 1.477677 0.067540 0.652996 0.103896 0.687602 0.914043 0.697581 0.105317 1.825200 0.024458 0.235192 0.433521 0.312835 0.809192 1.808814 0.468703 0.865854 1.628971 1.590464 1.720208 0.790391 0.109924 1.554973 -0.023990 1.192392 0.712254 -0.008308 1.166932 0.323937 0.599507 1.428804 1.009547 0.297463 1.703546 1.729917 1.681205 0.524857 1.697748 0.256667 1.120927 0.047187 1.189398 0.820638 0.699302 0.002442 1.121649 1.667851 0.869163 1.641192 0.656529 0.841409 0.057676 -0.196215 1.453792 1.886624 0.125107 0.602688 0.239635 0.436713 1.300259 1.239844 0.261666 1.553825 0.240232 0.801341 0.507041 1.560623 1.566831 1.253461 -0.062284 1.669509 1.095250 0.027748 1.068831 0.602783 1.174264 1.815938 0.796036 0.386048 1.233720 1.401215 0.759974 0.913111 1.179032 1.213203 0.938878 1.696577 0.360595 1.305400 0.044128 1.743675 1.440756 1.459247 0.623194 1.508843 1.421417 1.629960 0.477983 0.835293 -0.070334 0.708287 1.142955 0.932387 1.813043 1.382192 0.381127 0.190410 0.729845 0.321732 0.824558 -0.020023 1.607442 0.200267 0.318647 0.044651 1.768240 0.643757 1.206201 1.468765 0.601437 1.706259 0.495261 0.956913 0.394710 1.176569 0.800067 1.886558 1.605179 1.122676 1.144265 1.561625 0.181947 1.309849 1.577300 0.495188 1.655610 1.180832 1.194001 0.875913 0.228611 1.639141 0.550083 1.839287 0.580971 -0.197365 0.327613 1.901067 0.522438 1.020637 1.267341 1.342859 0.445176 0.112095 0.457659 0.120276 0.250883 1.204237 1.402798 1.271260 1.255292 0.578618 1.686129 0.490946 1.771289 1.121957 0.127348 0.581481 0.812819 1.448200 -0.003892 -0.044962 0.952367 1.033247 -0.085086 0.150310 0.057854 1.842500 0.716853 0.935519 0.269127 1.299626 0.388259 0.164338 1.057650 1.178504 1.241059 0.565924 1.615325 0.390452 0.686889 1.489199 0.183366 1.767188 1.365040 1.248231 1.196393 0.220573 0.358798 0.163202 1.499695 1.793435 -0.212597 0.677471 0.562186 1.706417 0.638842 0.138384 1.541313 1.495553 1.825920 1.099565 0.289989 1.936921 0.388891 1.617689 0.315048 0.242499 1.724502 0.758918 0.479832 0.306301 1.154626 1.015534 1.286300 0.819723 0.897789 1.897385 0.811133 1.198870 -0.023538 1.581550 1.752737 0.752872 1.653243 1.098279 0.913859 0.290667 0.391090 0.448864 1.747363 1.628653 1.296395 1.685456 0.410609 0.613612 0.229500 1.978170 0.563390 1.684018 1.175413 1.421149 0.835252 1.423949 1.519247 0.020578 0.410433 0.532037 1.105479 1.305389 0.747326 0.273148 1.468421 1.561328 1.045465 0.300840 1.851806 1.623959 -0.020047 0.551127 0.952587 1.750489 0.425896 1.297055 1.252366 0.774082 0.008302 0.830022 0.354751 1.630433 0.527393 0.320074 0.992472 1.329100 0.937461 -0.124987 0.528489 0.860443 1.777412 -0.179698 1.649835 1.523675 0.255615 0.752546 1.044250 1.061394 1.473542 1.559139 1.750843 0.228407 0.244978 0.318506 0.214338 -0.127687 0.016065 1.683527 1.059087 1.084321 1.209844 1.162599 1.700206 1.028836 1.111259 0.965422 1.349098 0.449160 1.236238 1.152610 1.241247 0.441411 1.200500 1.575948 0.056337 0.109621 0.678763 1.605571 1.462870 0.670350 1.160814 0.178948 1.776617 0.814727 1.471143 0.666341 0.666497 0.003085 0.367263 1.764549 1.817682 0.565043 0.256262 0.744401 0.069362 0.856509 1.798907 0.484543 1.036560 1.448462 1.009617 0.983445 0.719152 0.713983 1.197878 0.928722 0.442562 0.632379 1.311255 1.163303 1.389071 0.013803 1.283658 0.183551 0.216748 0.742490 0.246195 0.580366 1.004491 0.032852 1.729133 1.159382 1.701779 0.944042 1.827589 0.917849 1.400392 1.223004 1.113159 0.052572 0.168081 1.615230 1.221824 1.526728 1.850771 -0.240328 1.487522 1.159816 1.866293 1.698164 0.013835 -0.093167 0.180008 0.018965 1.603158 1.613742 1.313466 1.035280 1.492647 0.815996 0.391557 1.242014 0.993247 1.401424 0.488225 0.393455 0.894952 0.309407 0.321448 0.558471 0.718740 1.467551 0.500281 0.439320 1.869730 1.364530 1.553036 0.969732 1.636285 1.798396 1.363995 0.920638 0.126592 0.286258 1.696296 0.331371 0.356812 0.490460 1.101761 0.373647 0.097306 0.453078 1.827015 0.179707 -0.019918 -0.106312 0.084833 1.193623 0.408083 0.143266 0.206533 1.082562 0.158416 0.854906 0.878107 0.339914 0.457130 0.154799 0.176600 0.085438 0.131041 0.453107 0.593969 0.303633 0.916178 1.161798 1.896318 0.930094 0.986481 1.688216 0.819416 1.265892 0.011344 0.265144 0.267354 1.189048 0.659992 1.171202 1.786897 0.902370 -0.041938 0.785186 0.246222 1.558295 1.890657 1.369584 1.616357 1.670144 1.849685 1.342838 1.757000 1.172827 0.103451 0.032886 1.109693 0.659929 0.371860 1.404352 1.477883 1.155474 0.555608 0.969331 0.650971 1.813202 1.603915 0.999884 1.494172 1.882922 1.689689 1.690194 0.705259 1.560645 1.081311 0.825846 1.685601 0.689103 0.269731 0.147349 0.167554 0.803327 0.198449 1.282138 1.170132 0.901085 1.709183 0.934868 1.972921 0.385259 1.488122 0.118213 1.387825 0.546603 0.472410 0.223942 0.792440 1.272964 0.539143 1.056110 0.965279 1.256909 0.069278 0.438772 0.688522 1.474529 1.518833 0.647516 1.850584 -0.061940 1.420599 1.301753 0.184502 0.147262 0.261775 0.575331 1.308330 1.224554 0.672189 0.758277 1.191895 1.228368 0.130276 0.482407 1.350231 1.750711 0.397622 1.713381 1.011249 0.522822 1.072918 1.821285 0.965512 0.063639 0.566385 1.807346 1.175784 1.223074 1.591887 -0.168041 0.271021 1.529439 0.521842 0.823001 0.940921 1.684294 0.286489 1.242930 1.937690 0.607200 0.275302 1.790606 0.491021 1.035487 -0.045868 0.085148 1.238065 1.129382 -0.053312 1.545108 0.434470 0.810550 1.100562 0.221267 1.037507 1.624758 1.555603 1.062386 0.144378 0.886916 0.149410 -0.066826 1.113563 0.490079 0.634885 0.842660 0.061321 1.725263 1.823881 0.115290 1.146242 0.979557 1.530480 0.067327 0.568197 0.897626 0.771983 0.563170 1.194766 0.655189 1.549104 1.322518 0.483177 0.760693 1.010138 0.534980 0.223935 1.152460 1.731132 1.519096 0.446488 1.420973 1.696386 1.157486 1.211136 1.546897 1.232762 1.175520 0.355595 1.525833 -0.042267 1.352048 0.992497 -0.093673 0.742530 0.634885 -0.089066 0.868194 0.573537 1.674126 0.329153 1.158907 1.178480 0.551158 1.486852 -0.071558 0.725909 1.395015 1.209212 0.379942 0.747225 0.444854 0.946742 1.211242 1.139390 1.010957 1.097783 0.203142 1.127162 1.614090 1.772287 0.331896 1.598023 1.816077 0.662803 1.330979 0.944114 1.383701 0.797215 1.196402 1.084443 1.184444 1.682543 1.168272 1.958979 -0.058496 0.841894 1.219141 1.365510 0.769766 1.232995 0.960628 1.742029 1.659964 0.361424 0.247996 1.622047 1.491439 1.012850 0.556413 0.070470 1.055118 0.709469 1.227676 1.050289 1.817507 1.250045 0.044881 -0.105998 0.360108 0.510639 -0.000754 0.913624 0.014253 0.869683 0.815496 -0.043945 1.463465 1.037174 0.323537 0.584260 1.687824 0.186494 1.408948 0.905638 1.501561 1.450375 1.647727 1.343515 0.997551 0.097973 0.620795 0.473197 0.975124 1.453483 0.888388 0.452833 1.689714 0.696728 0.633683 0.509294 1.106199 0.373384 1.699003 1.169996 0.082561 0.289835 0.757159 1.514061 1.528786 0.435419 0.161517 0.726914 1.380867 1.654754 0.604942 0.070114 0.541874 1.167294 1.310511 1.570194 0.673809 1.267196 0.489289 1.272471 1.573227 1.458789 0.530304 0.456318 1.679920 1.109017 0.240982 1.697797 0.777016 0.870109 1.599744 1.746059 0.193197 0.572600 1.617885 0.423393 0.264299 1.931463 0.929567 1.333438 0.553075 0.123102 0.783267 1.986789 1.667679 1.525086 1.102518 0.117178 0.013899 0.476557 1.428021 1.781881 0.479378 1.440749 0.433516 0.176847 1.747379 1.328355 0.058455 1.628266 1.215447 1.600718 0.965239 1.219616 1.227710 0.034900 1.335400 0.576945 0.169250 1.234608 1.110724 1.740429 1.656377 0.259109 1.608270 0.156542 0.335333 0.895697 -0.078619 0.093744 0.937474 0.090269 0.752748 0.885184 1.935435 1.556700 1.833155 0.379459 1.439350 0.281834 1.377687 1.469181 0.560304 0.350829 0.370361 0.413143 1.546821 1.107825 0.763796 1.687563 0.219324 0.055037 -0.020128 1.641061 1.731840 1.877911 1.717828 1.356597 1.730658 0.588868 0.835297 0.297291 0.088419 0.412212 1.415406 1.017343 1.423175 0.375775 1.302219 0.953702 0.678804 1.572374 1.727477 0.254556 1.094641 1.162163 0.143319 0.854688 1.063038 0.441476 1.282254 1.589355 0.648429 0.822071 1.490818 0.276396 1.213776 0.318534 1.167492 0.713979 0.593799 1.038818 1.843043 0.450884 1.098196 1.002340 1.751110 1.258344 0.802075 0.796882 0.068028 0.990778 1.404822 0.767441 0.258966 0.014912 0.397819 1.169281 0.671758 0.828982 0.684022 1.483627 0.060148 0.140681 0.965311 1.046164 1.448760 0.937335 0.043049 1.426389 0.175311 0.942467 1.289194 0.705897 0.195736 1.367220 0.481110 1.117710 0.026294 1.480040 1.701576 0.741539 0.129438 1.793396 0.216626 0.338432 1.293825 1.852766 0.567380 0.675267 1.660257 1.295361 0.379806 0.115345 0.037783 0.635233 0.390593 0.891898 1.623418 1.141114 0.967319 0.436616 1.163548 1.438313 1.028606 1.507879 0.276194 1.126750 1.086763 0.657033 -0.091488 1.327256 1.184128 1.357378 0.116523 1.532550 0.455893 1.613945 0.808970 0.183575 0.288911 -0.057175 0.416408 1.883558 1.036690 -0.004024 1.155543 0.908210 0.958228 0.735059 -0.149409 -0.109242 1.993416 0.061976 0.994397 0.312822 0.358556 0.357396 0.166228 1.906441 1.936369 1.954589 1.571014 0.719233 0.153949 0.028336 1.320995 1.240948 0.545995 1.805452 1.619213 0.231489 1.707803 0.618275 0.642514 1.471382 1.348917 1.095451 0.221991 0.792513 0.689445 1.882995 1.365514 1.063222 1.950163 0.465549 0.519653 0.736476 1.311946 1.452773 1.442715 1.517899 0.924450 -0.258534 0.766737 0.924843 0.502570 1.115330 1.657088 0.120016 1.780444 1.686548 0.035927 0.449644 0.309346 1.622740 0.581408 0.299807 1.408994 0.611973 0.764394 0.604130 1.299785 1.686040 1.006944 0.701090 1.243781 0.213973 0.887207 1.233295 1.666529 0.235283 1.402144 1.228392 0.531790 0.502582 1.344011 1.047300 1.113632 0.075538 1.422393 1.570034 1.313722 0.186419 0.938804 1.688331 0.356313 1.160071 1.677615 0.597077 0.892649 1.278418 1.866713 0.634605 1.131045 1.247527 0.323580 1.122900 0.478811 0.712857 0.778489 0.733910 0.492143 1.681476 0.182306 0.475863 1.491278 0.187728 0.437657 0.198048 1.236439 0.268664 0.149327 0.934080 1.438262 1.896760 0.457386 0.548858 1.210218 1.289090 1.057745 0.668857 1.173530 0.693912 1.373334 0.504490 1.774419 1.309479 0.081305 1.710946 1.383983 0.433639 0.367597 0.598191 0.968980 0.477561 1.759027 0.625170 1.727969 1.718828 0.634164 0.574901 1.059254 0.056017 0.516804 0.253417 0.694276 1.806842 1.251926 1.330344 0.582436 0.789520 1.835852 0.867891 1.822064 1.359273 0.296168 0.365411 0.131864 0.093576 0.901545 1.224841 -0.103847 0.409143 1.472189 1.522564 0.937037 0.936778 0.858129 0.405727 0.803283 0.405592 1.621314 0.477697 1.071232 1.490250 0.210905 0.388916 0.148961 0.484107 0.248858 0.677626 1.216797 1.366933 0.495657 1.673293 0.762780 1.143691 1.830348 0.353612 0.038958 1.687620 0.671154 0.712933 1.807885 1.122232 1.188992 1.701760 0.242220 1.603391 0.699724 1.054033 0.076868 1.632921 1.612600 0.087130 0.365903 0.458822 1.024159 1.354588 0.392699 1.423641 1.204423 1.164681 1.649578 1.256031 1.243822 1.042854 0.005560 1.024514 0.604398 0.680137 1.912453 0.670310 0.213643 0.446770 1.090682 1.474974 1.806865 0.764624 1.563431 0.473634 0.510617 1.001005 1.364194 0.537668 -0.014680 0.885588 -0.005747 1.738242 1.410596 1.602084 0.734862 1.493989 1.349989 0.406916 1.170482 -0.017990 1.034213 0.634019 1.456131 0.974789 -0.144669 1.737158 -0.037172 1.400515 1.623550 0.499450 1.479595 0.507050 1.358218 0.582744 1.475859 0.513808 1.600273 1.836597 1.059912 -0.072725 1.290524 -0.073595 1.937918 0.300206 0.119306 1.027133 -0.093444 0.011477 1.127890 1.399417 1.853798 1.657887 0.145866 0.588742 0.873359 0.762305 1.639168 0.778598 0.019634 1.817733 0.156595 0.169164 1.530459 1.438248 0.803585 -0.094272 0.468694 0.847016 0.311870 0.299559 0.551763 0.793044 1.160950 0.697742 1.837771 0.754430 1.758952 0.505686 1.737258 0.020417 1.293145 1.675271 0.394950 0.929538 0.720083 0.978614 0.784199 0.905034 0.921702 0.937761 1.562150 1.166453 1.603212 0.260741 0.602140 1.673881 0.673664 1.946860 1.010728 1.288978 1.297659 1.198620 0.504487 1.420515 1.576870 0.975311 1.683510 1.543454 1.716402 0.940588 1.162463 1.651787 0.589731 0.285012 0.638073 1.089187 1.489366 0.491525 1.435921 1.014411 1.601370 0.949407 1.694644 0.959875 -0.062780 -0.004119 1.163389 0.589582 1.149178 1.817933 0.849953 1.802695 1.461496 1.665429 1.837845 0.976053 0.862346 0.530923 0.811633 0.503788 -0.027013 1.611602 0.057407 0.611054 1.824034 0.259920 0.148035 0.105941 -0.021158 1.835611 1.319838 1.754236 1.193537 1.357026 0.094401 1.491186 0.366416 1.555586 1.669437 0.823707 1.243186 0.432020 1.052515 0.858115 1.022105 0.954847 1.455406 1.318994 0.283690 1.211015 0.710161 0.270613 1.714336 1.101135 0.235311 1.092475 1.008566 0.447003 0.602655 0.757184 0.009064 0.530056 1.724465 0.607925 1.121575 1.099024 0.882158 0.934761 0.125447 0.972944 0.967420 1.343086 0.315752 1.165505 1.109567 1.918061 1.478347 0.850704 0.940172 0.696083 0.793045 1.211155 0.866708 0.135821 0.480730 1.058685 0.463469 0.583533 1.522858 0.588384 0.353159 1.576867 1.754930 0.850029 1.919190 1.543405 0.995776 0.821301 1.793940 1.151072 -0.047846 1.508846 1.746284 0.877808 0.214307 0.787802 -0.003151 1.141139 1.698635 0.232169 1.093325 1.515191 0.901564 1.506350 0.135967 1.384636 -0.242650 0.302616 1.608186 0.459148 0.023364 0.249132 1.086552 0.992569 1.132819 0.061330 1.433907 1.539244 0.001712 1.876374 1.299743 1.030055 0.164439 0.092647 0.881217 1.088556 1.351722 -0.088421 0.062334 -0.051555 1.260415 0.983686 0.258617 0.860731 0.793959 0.416831 1.721077 0.095305 0.351122 0.421061 1.074247 -0.008811 1.438063 1.858745 1.305784 0.273960 1.682787 1.279785 0.274409 1.389220 0.882641 1.632991 1.590305 0.893791 0.055411 1.041678 1.451974 0.782716 0.213219 0.208404 1.139321 0.013312 0.073161 1.595535 1.686000 1.590328 0.023294 0.960934 0.758890 0.838775 1.710621 1.483697 1.281650 1.870804 0.139547 0.420537 0.308122 0.843944 0.520105 0.603303 -0.123864 1.234056 1.586800 0.927689 1.817960 1.506645 1.174470 0.276079 0.650528 0.932391 1.014056 0.664840 1.016866 1.426511 0.276789 0.219182 -0.115031 -0.164867 0.961712 0.416951 1.540063 0.375102 1.075987 1.313615 1.096641 0.764154 1.064504 0.355545 1.636517 0.212986 0.487153 0.606986 0.525136 0.094256 1.722629 0.854306 0.459009 1.050404 0.099495 1.863554 1.019865 1.702596 1.229915 1.749507 0.590639 0.164343 1.868513 1.170840 1.017598 0.404087 1.088319 0.595386 0.693810 1.531079 -0.137773 0.882791 1.035974 1.610308 1.572178 1.281505 1.448052 1.385965 0.085841 0.156089 1.020082 1.499413 1.367482 1.202166 -0.310324 1.093902 0.466865 0.481107 0.055940 1.626791 0.579934 0.932207 0.524863 0.771645 1.410464 1.781815 0.875062 1.565260 0.492144 0.931433 0.731301 0.464124 0.688570 0.033927 0.659049 -0.144339 1.390582 0.216364 1.564810 1.784761 0.542130 1.644616 0.892364 0.103014 1.151370 0.406893 0.685594 0.203695 0.116843 1.116841 0.017775 1.255535 0.180776 1.604852 1.357176 0.844518 1.917543 0.710840 0.586218 -0.084711 0.326304 0.583894 0.000981 1.527582 0.764193 0.691981 1.254365 0.042940 0.799959 1.234613 0.912676 1.261576 1.804612 1.772885 1.638278 1.452687 1.856363 1.017673 1.335012 1.093288 1.791716 0.240760 1.583614 0.215117 1.054497 1.759230 1.720795 1.725051 0.719870 1.536084 0.793019 0.072407 1.612325 0.603805 0.749790 0.930307 1.444787 0.076331 0.716031 0.751130 1.730048 1.119736 1.740692 1.642864 1.211815 0.613767 1.280443 0.196315 0.724783 0.377146 1.066938 1.497331 1.166708 1.287064 1.948271 1.408327 0.113842 -0.199587 0.630400 0.343945 1.153303 0.303357 -0.235653 1.575467 1.304018 0.481724 0.321926 1.036142 1.030288 0.337553 0.573686 1.834042 0.718673 0.182114 0.139978 0.253556 1.503381 0.215937 1.358417 0.238777 1.828073 0.206519 0.338254 0.358048 1.340274 1.144155 0.382861 -0.237688 1.081990 0.287210 0.604778 0.308728 1.486981 0.684669 1.827156 0.478181 1.795964 1.220849 1.367205 0.507990 0.995111 0.581857 0.196941 1.401782 0.618658 0.678201 1.941176 0.922033 0.346514 1.451221 1.191571 0.812039 0.176868 0.358644 0.856782 1.053754 0.172649 -0.008915 0.891004 1.275467 1.965871 1.446554 1.059213 1.698536 0.639863 1.290197 1.301277 0.460338 0.904108 1.206822 1.204141 0.172712 1.004515 0.611142 0.640455 1.099407 0.564655 0.577778 1.778285 0.167018 0.507458 0.762661 0.259884 0.066707 0.947613 0.965715 0.752844 0.822051 1.036867 1.496747 1.109711 1.909353 0.600886 1.668852 1.668992 -0.160977 0.189295 1.475624 0.412875 0.557318 1.130005 0.439886 1.255571 1.411751 0.901388 0.499673 1.791033 0.684314 -0.123345 1.518751 0.858235 1.779307 0.897544 1.242344 1.789823 1.117474 0.471404 0.148429 0.200067 1.627870 1.184473 1.258861 1.514572 1.105948 0.122797 0.601905 0.937069 0.692200 1.745527 1.038032 0.377653 0.204106 1.113841 0.997556 1.126370 0.095557 1.147967 0.559979 1.673772 1.556295 0.142426 1.654656 0.686755 0.114523 1.891052 1.870233 0.340505 0.325592 1.788001 1.691946 1.832371 0.254110 -0.056957 0.552635 0.359382 1.244098 0.331889 0.956126 1.636252 0.526733 1.070660 0.740225 1.503924 0.042864 0.662653 0.013249 0.159303 0.325720 0.297550 0.820869 1.730514 0.000052 0.161939 0.357257 0.877505 1.576861 1.847738 0.044951 0.597694 1.584933 -0.105788 1.430351 0.083180 1.563544 1.130148 1.599446 1.171509 0.524299 0.631284 0.480371 1.906399 0.915214 1.139324 0.334117 1.299283 0.373882 0.383787 0.345985 1.171992 0.720625 1.314793 1.338926)
)
))
@@ -5164,12 +5114,12 @@
;; 1 Dec 4541.710, 0.535
;; (10)
;; 1 Jan 4360.644, 0.527
+;; 1 Feb 4292.451, 0.524
-; all 0.4861 (20) to 0.5167 (124), dist: 33.4484
-; odd 0.4821 (11) to 0.5181 (108), dist: 36.1338
-; even 0.5172 (38) to 0.5323 (114), dist: 111.3512
-; prime 0.5449 (24) to 0.5736 (117), dist: 303.3266
-
+; all 0.4861 (20) to 0.5109 (95), dist: 18.4286
+; odd 0.4821 (11) to 0.5107 (125), dist: 17.6787
+; even 0.5169 (47) to 0.5255 (104), dist: 92.4213
+; prime 0.5449 (24) to 0.5712 (117), dist: 288.4718
;(test-all-phases) in test-phases.scm
;all peaks... Fri 25-Dec-2009 02:51
diff --git a/pix/snd-ls.png b/pix/snd-ls.png
deleted file mode 100644
index 6d912a7..0000000
--- a/pix/snd-ls.png
+++ /dev/null
Binary files differ
diff --git a/pix/stochastic.png b/pix/stochastic.png
deleted file mode 100644
index a9ba905..0000000
--- a/pix/stochastic.png
+++ /dev/null
Binary files differ
diff --git a/po/ChangeLog b/po/ChangeLog
deleted file mode 100644
index 77593fc..0000000
--- a/po/ChangeLog
+++ /dev/null
@@ -1,22 +0,0 @@
-2005-07-19 gettextize <bug-gnu-gettext@gnu.org>
-
- * Makefile.in.in: New file, from gettext-0.14.2.
- * boldquot.sed: New file, from gettext-0.14.2.
- * en@boldquot.header: New file, from gettext-0.14.2.
- * en@quot.header: New file, from gettext-0.14.2.
- * insert-header.sin: New file, from gettext-0.14.2.
- * quot.sed: New file, from gettext-0.14.2.
- * remove-potcdate.sin: New file, from gettext-0.14.2.
- * Rules-quot: New file, from gettext-0.14.2.
-
-2003-01-28 gettextize <bug-gnu-gettext@gnu.org>
-
- * Makefile.in.in: New file, from gettext-0.11.4.
- * boldquot.sed: New file, from gettext-0.11.4.
- * en@boldquot.header: New file, from gettext-0.11.4.
- * en@quot.header: New file, from gettext-0.11.4.
- * insert-header.sin: New file, from gettext-0.11.4.
- * quot.sed: New file, from gettext-0.11.4.
- * remove-potcdate.sin: New file, from gettext-0.11.4.
- * Rules-quot: New file, from gettext-0.11.4.
-
diff --git a/po/LINGUAS b/po/LINGUAS
deleted file mode 100644
index cb3d592..0000000
--- a/po/LINGUAS
+++ /dev/null
@@ -1,2 +0,0 @@
-# Set of available languages.
-de \ No newline at end of file
diff --git a/po/Makefile.in b/po/Makefile.in
deleted file mode 100644
index 3e5c03b..0000000
--- a/po/Makefile.in
+++ /dev/null
@@ -1,317 +0,0 @@
-# Makefile for PO directory in any package using GNU gettext.
-# Copyright (C) 1995-1997, 2000-2002 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
-#
-# This file can be copied and used freely without restrictions. It can
-# be used in projects which are not available under the GNU General Public
-# License but which still want to provide support for the GNU gettext
-# functionality.
-# Please note that the actual code of GNU gettext is covered by the GNU
-# General Public License and is *not* in the public domain.
-
-PACKAGE = snd
-VERSION = 7.13
-
-SHELL = /bin/sh
-
-
-srcdir = .
-top_srcdir = ..
-
-
-prefix = /usr/local
-exec_prefix = ${prefix}
-datadir = ${prefix}/share
-localedir = $(datadir)/locale
-gettextsrcdir = $(datadir)/gettext/po
-
-INSTALL = /usr/bin/install -c
-INSTALL_DATA = ${INSTALL} -m 644
-MKINSTALLDIRS = ./mkinstalldirs
-mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac`
-
-GMSGFMT = /usr/local/bin/msgfmt
-MSGFMT = /usr/local/bin/msgfmt
-XGETTEXT = /usr/local/bin/xgettext
-MSGMERGE = msgmerge
-MSGMERGE_UPDATE = /usr/local/bin/msgmerge --update
-MSGINIT = msginit
-MSGCONV = msgconv
-MSGFILTER = msgfilter
-
-POFILES = @POFILES@
-GMOFILES = @GMOFILES@
-UPDATEPOFILES = @UPDATEPOFILES@
-DUMMYPOFILES = @DUMMYPOFILES@
-DISTFILES.common = Makefile.in.in Makevars remove-potcdate.sin \
-$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
-DISTFILES = $(DISTFILES.common) POTFILES.in $(DOMAIN).pot \
-$(POFILES) $(GMOFILES) \
-$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
-
-POTFILES = \
-
-CATALOGS = @CATALOGS@
-
-# Makevars gets inserted here. (Don't remove this line!)
-
-.SUFFIXES:
-.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-update
-
-.po.mo:
- @echo "$(MSGFMT) -c -o $@ $<"; \
- $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
-
-.po.gmo:
- @lang=`echo $* | sed -e 's,.*/,,'`; \
- test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
- echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \
- cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
-
-.sin.sed:
- sed -e '/^#/d' $< > t-$@
- mv t-$@ $@
-
-
-all: all-yes
-
-all-yes: $(CATALOGS)
-all-no:
-
-# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
-# otherwise packages like GCC can not be built if only parts of the source
-# have been downloaded.
-
-$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
- $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
- --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
- --files-from=$(srcdir)/POTFILES.in \
- --copyright-holder='$(COPYRIGHT_HOLDER)'
- test ! -f $(DOMAIN).po || { \
- if test -f $(srcdir)/$(DOMAIN).pot; then \
- sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
- sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
- if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
- rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
- else \
- rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
- mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
- fi; \
- else \
- mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
- fi; \
- }
-
-$(srcdir)/$(DOMAIN).pot:
- $(MAKE) $(DOMAIN).pot-update
-
-$(POFILES): $(srcdir)/$(DOMAIN).pot
- @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
- test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
- echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \
- cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot
-
-
-install: install-exec install-data
-install-exec:
-install-data: install-data-yes
- if test "$(PACKAGE)" = "gettext"; then \
- $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
- for file in $(DISTFILES.common); do \
- $(INSTALL_DATA) $(srcdir)/$$file \
- $(DESTDIR)$(gettextsrcdir)/$$file; \
- done; \
- else \
- : ; \
- fi
-install-data-no: all
-install-data-yes: all
- $(mkinstalldirs) $(DESTDIR)$(datadir)
- @catalogs='$(CATALOGS)'; \
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
- lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
- dir=$(localedir)/$$lang/LC_MESSAGES; \
- $(mkinstalldirs) $(DESTDIR)$$dir; \
- if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
- $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
- echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
- for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
- if test -n "$$lc"; then \
- if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
- link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
- mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
- mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
- (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
- for file in *; do \
- if test -f $$file; then \
- ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
- fi; \
- done); \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
- else \
- if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
- :; \
- else \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
- mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
- fi; \
- fi; \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
- ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
- ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
- cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
- echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
- fi; \
- done; \
- done
-
-install-strip: install
-
-installdirs: installdirs-exec installdirs-data
-installdirs-exec:
-installdirs-data: installdirs-data-yes
- if test "$(PACKAGE)" = "gettext"; then \
- $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
- else \
- : ; \
- fi
-installdirs-data-no:
-installdirs-data-yes:
- $(mkinstalldirs) $(DESTDIR)$(datadir)
- @catalogs='$(CATALOGS)'; \
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
- lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
- dir=$(localedir)/$$lang/LC_MESSAGES; \
- $(mkinstalldirs) $(DESTDIR)$$dir; \
- for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
- if test -n "$$lc"; then \
- if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
- link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
- mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
- mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
- (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
- for file in *; do \
- if test -f $$file; then \
- ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
- fi; \
- done); \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
- else \
- if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
- :; \
- else \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
- mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
- fi; \
- fi; \
- fi; \
- done; \
- done
-
-# Define this as empty until I found a useful application.
-installcheck:
-
-uninstall: uninstall-exec uninstall-data
-uninstall-exec:
-uninstall-data: uninstall-data-yes
- if test "$(PACKAGE)" = "gettext"; then \
- for file in $(DISTFILES.common); do \
- rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
- done; \
- else \
- : ; \
- fi
-uninstall-data-no:
-uninstall-data-yes:
- catalogs='$(CATALOGS)'; \
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
- lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
- for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
- done; \
- done
-
-check: all
-
-dvi info tags TAGS ID:
-
-mostlyclean:
- rm -f remove-potcdate.sed
- rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
- rm -fr *.o
-
-clean: mostlyclean
-
-distclean: clean
- rm -f Makefile Makefile.in POTFILES *.mo
-
-maintainer-clean: distclean
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
- rm -f $(GMOFILES)
-
-distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-dist distdir:
- $(MAKE) update-po
- @$(MAKE) dist2
-# This is a separate target because 'update-po' must be executed before.
-dist2: $(DISTFILES)
- dists="$(DISTFILES)"; \
- if test -f $(srcdir)/ChangeLog; then dists="$$dists ChangeLog"; fi; \
- if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
- for file in $$dists; do \
- if test -f $$file; then \
- cp -p $$file $(distdir); \
- else \
- cp -p $(srcdir)/$$file $(distdir); \
- fi; \
- done
-
-update-po: Makefile
- $(MAKE) $(DOMAIN).pot-update
- $(MAKE) $(UPDATEPOFILES)
- $(MAKE) update-gmo
-
-# General rule for updating PO files.
-
-.nop.po-update:
- @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
- if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \
- tmpdir=`pwd`; \
- echo "$$lang:"; \
- test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
- echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
- cd $(srcdir); \
- if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \
- if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
- rm -f $$tmpdir/$$lang.new.po; \
- else \
- if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
- :; \
- else \
- echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
- exit 1; \
- fi; \
- fi; \
- else \
- echo "msgmerge for $$lang.po failed!" 1>&2; \
- rm -f $$tmpdir/$$lang.new.po; \
- fi
-
-$(DUMMYPOFILES):
-
-update-gmo: Makefile $(GMOFILES)
- @:
-
-Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \
- $(SHELL) ./config.status
-
-force:
-
-# Tell versions [3.59,3.63) of GNU make not to export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
deleted file mode 100644
index 9092886..0000000
--- a/po/Makefile.in.in
+++ /dev/null
@@ -1,375 +0,0 @@
-# Makefile for PO directory in any package using GNU gettext.
-# Copyright (C) 1995-1997, 2000-2005 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
-#
-# This file can be copied and used freely without restrictions. It can
-# be used in projects which are not available under the GNU General Public
-# License but which still want to provide support for the GNU gettext
-# functionality.
-# Please note that the actual code of GNU gettext is covered by the GNU
-# General Public License and is *not* in the public domain.
-#
-# Origin: gettext-0.14.2
-
-PACKAGE = @PACKAGE_NAME@
-VERSION = @PACKAGE_VERSION@
-PACKAGE_NAME = @PACKAGE_NAME@
-VERSION_NAME = @PACKAGE_VERSION@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-
-SHELL = /bin/sh
-@SET_MAKE@
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-datarootdir = @datarootdir@
-datadir = @datadir@
-localedir = $(datadir)/locale
-gettextsrcdir = $(datadir)/gettext/po
-
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-MKINSTALLDIRS = @MKINSTALLDIRS@
-mkinstalldirs = $(SHELL) $(MKINSTALLDIRS)
-
-GMSGFMT = @GMSGFMT@
-MSGFMT = @MSGFMT@
-XGETTEXT = @XGETTEXT@
-MSGMERGE = msgmerge
-MSGMERGE_UPDATE = @MSGMERGE@ --update
-MSGINIT = msginit
-MSGCONV = msgconv
-MSGFILTER = msgfilter
-
-POFILES = @POFILES@
-GMOFILES = @GMOFILES@
-UPDATEPOFILES = @UPDATEPOFILES@
-DUMMYPOFILES = @DUMMYPOFILES@
-DISTFILES.common = Makefile.in.in remove-potcdate.sin \
-$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
-DISTFILES = $(DISTFILES.common) Makevars POTFILES.in $(DOMAIN).pot stamp-po \
-$(POFILES) $(GMOFILES) \
-$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
-
-POTFILES = \
-
-CATALOGS = @CATALOGS@
-
-# Makevars gets inserted here. (Don't remove this line!)
-
-.SUFFIXES:
-.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
-
-.po.mo:
- @echo "$(MSGFMT) -c -o $@ $<"; \
- $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
-
-.po.gmo:
- @lang=`echo $* | sed -e 's,.*/,,'`; \
- test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
- echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \
- cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
-
-.sin.sed:
- sed -e '/^#/d' $< > t-$@
- mv t-$@ $@
-
-
-all: all-@USE_NLS@
-
-all-yes: stamp-po
-all-no:
-
-# stamp-po is a timestamp denoting the last time at which the CATALOGS have
-# been loosely updated. Its purpose is that when a developer or translator
-# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
-# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
-# invocations of "make" will do nothing. This timestamp would not be necessary
-# if updating the $(CATALOGS) would always touch them; however, the rule for
-# $(POFILES) has been designed to not touch files that don't need to be
-# changed.
-stamp-po: $(srcdir)/$(DOMAIN).pot
- test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
- @echo "touch stamp-po"
- @echo timestamp > stamp-poT
- @mv stamp-poT stamp-po
-
-# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
-# otherwise packages like GCC can not be built if only parts of the source
-# have been downloaded.
-
-# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
-# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
-$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
- if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
- msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
- else \
- msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
- fi; \
- $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
- --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
- --files-from=$(srcdir)/POTFILES.in \
- --copyright-holder='$(COPYRIGHT_HOLDER)' \
- --msgid-bugs-address="$$msgid_bugs_address"
- test ! -f $(DOMAIN).po || { \
- if test -f $(srcdir)/$(DOMAIN).pot; then \
- sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
- sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
- if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
- rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
- else \
- rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
- mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
- fi; \
- else \
- mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
- fi; \
- }
-
-# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
-# every "make" invocation, only create it when it is missing.
-# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
-$(srcdir)/$(DOMAIN).pot:
- $(MAKE) $(DOMAIN).pot-update
-
-# This target rebuilds a PO file if $(DOMAIN).pot has changed.
-# Note that a PO file is not touched if it doesn't need to be changed.
-$(POFILES): $(srcdir)/$(DOMAIN).pot
- @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
- if test -f "$(srcdir)/$${lang}.po"; then \
- test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
- echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \
- cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \
- else \
- $(MAKE) $${lang}.po-create; \
- fi
-
-
-install: install-exec install-data
-install-exec:
-install-data: install-data-@USE_NLS@
- if test "$(PACKAGE)" = "gettext-tools"; then \
- $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
- for file in $(DISTFILES.common) Makevars.template; do \
- $(INSTALL_DATA) $(srcdir)/$$file \
- $(DESTDIR)$(gettextsrcdir)/$$file; \
- done; \
- for file in Makevars; do \
- rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
- done; \
- else \
- : ; \
- fi
-install-data-no: all
-install-data-yes: all
- $(mkinstalldirs) $(DESTDIR)$(datadir)
- @catalogs='$(CATALOGS)'; \
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
- lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
- dir=$(localedir)/$$lang/LC_MESSAGES; \
- $(mkinstalldirs) $(DESTDIR)$$dir; \
- if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
- $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
- echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
- for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
- if test -n "$$lc"; then \
- if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
- link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
- mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
- mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
- (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
- for file in *; do \
- if test -f $$file; then \
- ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
- fi; \
- done); \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
- else \
- if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
- :; \
- else \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
- mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
- fi; \
- fi; \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
- ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
- ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
- cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
- echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
- fi; \
- done; \
- done
-
-install-strip: install
-
-installdirs: installdirs-exec installdirs-data
-installdirs-exec:
-installdirs-data: installdirs-data-@USE_NLS@
- if test "$(PACKAGE)" = "gettext-tools"; then \
- $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
- else \
- : ; \
- fi
-installdirs-data-no:
-installdirs-data-yes:
- $(mkinstalldirs) $(DESTDIR)$(datadir)
- @catalogs='$(CATALOGS)'; \
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
- lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
- dir=$(localedir)/$$lang/LC_MESSAGES; \
- $(mkinstalldirs) $(DESTDIR)$$dir; \
- for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
- if test -n "$$lc"; then \
- if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
- link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
- mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
- mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
- (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
- for file in *; do \
- if test -f $$file; then \
- ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
- fi; \
- done); \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
- else \
- if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
- :; \
- else \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
- mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
- fi; \
- fi; \
- fi; \
- done; \
- done
-
-# Define this as empty until I found a useful application.
-installcheck:
-
-uninstall: uninstall-exec uninstall-data
-uninstall-exec:
-uninstall-data: uninstall-data-@USE_NLS@
- if test "$(PACKAGE)" = "gettext-tools"; then \
- for file in $(DISTFILES.common) Makevars.template; do \
- rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
- done; \
- else \
- : ; \
- fi
-uninstall-data-no:
-uninstall-data-yes:
- catalogs='$(CATALOGS)'; \
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
- lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
- for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
- done; \
- done
-
-check: all
-
-info dvi ps pdf html tags TAGS ctags CTAGS ID:
-
-mostlyclean:
- rm -f remove-potcdate.sed
- rm -f stamp-poT
- rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
- rm -fr *.o
-
-clean: mostlyclean
-
-distclean: clean
- rm -f Makefile Makefile.in POTFILES *.mo
-
-maintainer-clean: distclean
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
- rm -f stamp-po $(GMOFILES)
-
-distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-dist distdir:
- $(MAKE) update-po
- @$(MAKE) dist2
-# This is a separate target because 'update-po' must be executed before.
-dist2: $(DISTFILES)
- dists="$(DISTFILES)"; \
- if test "$(PACKAGE)" = "gettext-tools"; then \
- dists="$$dists Makevars.template"; \
- fi; \
- if test -f $(srcdir)/ChangeLog; then \
- dists="$$dists ChangeLog"; \
- fi; \
- for i in 0 1 2 3 4 5 6 7 8 9; do \
- if test -f $(srcdir)/ChangeLog.$$i; then \
- dists="$$dists ChangeLog.$$i"; \
- fi; \
- done; \
- if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
- for file in $$dists; do \
- if test -f $$file; then \
- cp -p $$file $(distdir); \
- else \
- cp -p $(srcdir)/$$file $(distdir); \
- fi; \
- done
-
-update-po: Makefile
- $(MAKE) $(DOMAIN).pot-update
- test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
- $(MAKE) update-gmo
-
-# General rule for creating PO files.
-
-.nop.po-create:
- @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
- echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
- exit 1
-
-# General rule for updating PO files.
-
-.nop.po-update:
- @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
- if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
- tmpdir=`pwd`; \
- echo "$$lang:"; \
- test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
- echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
- cd $(srcdir); \
- if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \
- if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
- rm -f $$tmpdir/$$lang.new.po; \
- else \
- if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
- :; \
- else \
- echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
- exit 1; \
- fi; \
- fi; \
- else \
- echo "msgmerge for $$lang.po failed!" 1>&2; \
- rm -f $$tmpdir/$$lang.new.po; \
- fi
-
-$(DUMMYPOFILES):
-
-update-gmo: Makefile $(GMOFILES)
- @:
-
-Makefile: Makefile.in.in $(top_builddir)/config.status @POMAKEFILEDEPS@
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \
- $(SHELL) ./config.status
-
-force:
-
-# Tell versions [3.59,3.63) of GNU make not to export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/po/Makevars b/po/Makevars
deleted file mode 100644
index 32692ab..0000000
--- a/po/Makevars
+++ /dev/null
@@ -1,41 +0,0 @@
-# Makefile variables for PO directory in any package using GNU gettext.
-
-# Usually the message domain is the same as the package name.
-DOMAIN = $(PACKAGE)
-
-# These two variables depend on the location of this directory.
-subdir = po
-top_builddir = ..
-
-# These options get passed to xgettext.
-XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
-
-# This is the copyright holder that gets inserted into the header of the
-# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
-# package. (Note that the msgstr strings, extracted from the package's
-# sources, belong to the copyright holder of the package.) Translators are
-# expected to transfer the copyright for their translations to this person
-# or entity, or to disclaim their copyright. The empty string stands for
-# the public domain; in this case the translators are expected to disclaim
-# their copyright.
-COPYRIGHT_HOLDER = Free Software Foundation, Inc.
-
-# This is the email address or URL to which the translators shall report
-# bugs in the untranslated strings:
-# - Strings which are not entire sentences, see the maintainer guidelines
-# in the GNU gettext documentation, section 'Preparing Strings'.
-# - Strings which use unclear terms or require additional context to be
-# understood.
-# - Strings which make invalid assumptions about notation of date, time or
-# money.
-# - Pluralisation problems.
-# - Incorrect English spelling.
-# - Incorrect formatting.
-# It can be your email address, or a mailing list address where translators
-# can write to without being subscribed, or the URL of a web page through
-# which the translators can contact you.
-MSGID_BUGS_ADDRESS =
-
-# This is the list of locale categories, beyond LC_MESSAGES, for which the
-# message catalogs shall be used. It is usually empty.
-EXTRA_LOCALE_CATEGORIES =
diff --git a/po/Makevars.template b/po/Makevars.template
deleted file mode 100644
index 32692ab..0000000
--- a/po/Makevars.template
+++ /dev/null
@@ -1,41 +0,0 @@
-# Makefile variables for PO directory in any package using GNU gettext.
-
-# Usually the message domain is the same as the package name.
-DOMAIN = $(PACKAGE)
-
-# These two variables depend on the location of this directory.
-subdir = po
-top_builddir = ..
-
-# These options get passed to xgettext.
-XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
-
-# This is the copyright holder that gets inserted into the header of the
-# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
-# package. (Note that the msgstr strings, extracted from the package's
-# sources, belong to the copyright holder of the package.) Translators are
-# expected to transfer the copyright for their translations to this person
-# or entity, or to disclaim their copyright. The empty string stands for
-# the public domain; in this case the translators are expected to disclaim
-# their copyright.
-COPYRIGHT_HOLDER = Free Software Foundation, Inc.
-
-# This is the email address or URL to which the translators shall report
-# bugs in the untranslated strings:
-# - Strings which are not entire sentences, see the maintainer guidelines
-# in the GNU gettext documentation, section 'Preparing Strings'.
-# - Strings which use unclear terms or require additional context to be
-# understood.
-# - Strings which make invalid assumptions about notation of date, time or
-# money.
-# - Pluralisation problems.
-# - Incorrect English spelling.
-# - Incorrect formatting.
-# It can be your email address, or a mailing list address where translators
-# can write to without being subscribed, or the URL of a web page through
-# which the translators can contact you.
-MSGID_BUGS_ADDRESS =
-
-# This is the list of locale categories, beyond LC_MESSAGES, for which the
-# message catalogs shall be used. It is usually empty.
-EXTRA_LOCALE_CATEGORIES =
diff --git a/po/POTFILES.in b/po/POTFILES.in
deleted file mode 100644
index 20dcd78..0000000
--- a/po/POTFILES.in
+++ /dev/null
@@ -1,84 +0,0 @@
-# audio.c
-# clm.c
-# clm2xen.c
-# gl.c
-# headers.c
-# io.c
-# midi.c
-# snd-axis.c
-snd-chn.c
-# snd-completion.c
-snd-dac.c
-snd-data.c
-# snd-draw.c
-snd-edits.c
-snd-env.c
-# snd-error.c
-snd-fft.c
-snd-file.c
-snd-find.c
-snd-gchn.c
-snd-gdraw.c
-# snd-gdrop.c
-snd-genv.c
-snd-gfft.c
-snd-gfile.c
-# snd-gfind.c
-snd-ghelp.c
-snd-glistener.c
-snd-gmain.c
-snd-gmenu.c
-snd-gmix.c
-snd-gprefs.c
-snd-gprint.c
-snd-grec.c
-snd-gregion.c
-snd-gsnd.c
-# snd-gutils.c
-# snd-gxbitmaps.c
-snd-gxcolormaps.c
-# snd-gxutils.c
-snd-help.c
-snd-io.c
-snd-kbd.c
-snd-ladspa.c
-# snd-listener.c
-snd-main.c
-# snd-marks.c
-snd-menu.c
-# snd-mix.c
-snd-nogui.c
-snd-print.c
-snd-region.c
-# run.c
-snd-select.c
-snd-sig.c
-snd-snd.c
-snd-trans.c
-snd-utils.c
-snd-xchn.c
-snd-xdraw.c
-# snd-xdrop.c
-snd-xen.c
-snd-xenv.c
-snd-xfft.c
-snd-xfile.c
-snd-xfind.c
-snd-xhelp.c
-# snd-xlistener.c
-snd-xmain.c
-snd-xmenu.c
-snd-xmix.c
-snd-xprefs.c
-snd-xprint.c
-snd-xrec.c
-snd-xregion.c
-snd-xsnd.c
-# snd-xutils.c
-snd.c
-# sndlib2xen.c
-# sound.c
-# vct.c
-# xen.c
-# xg.c
-# xm.c
diff --git a/po/POTFILES.in~ b/po/POTFILES.in~
deleted file mode 100644
index 9776e63..0000000
--- a/po/POTFILES.in~
+++ /dev/null
@@ -1,83 +0,0 @@
-# audio.c
-# clm.c
-# clm2xen.c
-# gl.c
-# headers.c
-# io.c
-# midi.c
-snd-axis.c
-snd-chn.c
-snd-completion.c
-snd-dac.c
-snd-data.c
-snd-draw.c
-snd-edits.c
-snd-env.c
-snd-error.c
-snd-fft.c
-snd-file.c
-snd-find.c
-snd-gchn.c
-snd-gdraw.c
-snd-gdrop.c
-snd-genv.c
-snd-gfft.c
-snd-gfile.c
-snd-gfind.c
-snd-ghelp.c
-snd-glistener.c
-snd-gmain.c
-snd-gmenu.c
-snd-gmix.c
-snd-gprint.c
-snd-grec.c
-snd-gregion.c
-snd-gsnd.c
-snd-gutils.c
-snd-gxbitmaps.c
-snd-gxcolormaps.c
-snd-gxen.c
-snd-gxutils.c
-snd-help.c
-snd-io.c
-snd-kbd.c
-snd-ladspa.c
-snd-listener.c
-snd-main.c
-snd-marks.c
-snd-menu.c
-snd-mix.c
-snd-nogui.c
-snd-print.c
-snd-region.c
-snd-select.c
-snd-sig.c
-snd-snd.c
-snd-trans.c
-snd-utils.c
-snd-xchn.c
-snd-xdraw.c
-snd-xdrop.c
-snd-xen.c
-snd-xenv.c
-snd-xfft.c
-snd-xfile.c
-snd-xfind.c
-snd-xhelp.c
-snd-xlistener.c
-snd-xmain.c
-snd-xmenu.c
-snd-xmix.c
-snd-xprint.c
-snd-xrec.c
-snd-xregion.c
-snd-xsnd.c
-snd-xutils.c
-snd-xxen.c
-snd.c
-# sndlib2xen.c
-# sound.c
-# vct.c
-# xen.c
-# xg.c
-# xm.c
diff --git a/po/Rules-quot b/po/Rules-quot
deleted file mode 100644
index 9c2a995..0000000
--- a/po/Rules-quot
+++ /dev/null
@@ -1,47 +0,0 @@
-# Special Makefile rules for English message catalogs with quotation marks.
-
-DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot
-
-.SUFFIXES: .insert-header .po-update-en
-
-en@quot.po-create:
- $(MAKE) en@quot.po-update
-en@boldquot.po-create:
- $(MAKE) en@boldquot.po-update
-
-en@quot.po-update: en@quot.po-update-en
-en@boldquot.po-update: en@boldquot.po-update-en
-
-.insert-header.po-update-en:
- @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \
- if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
- tmpdir=`pwd`; \
- echo "$$lang:"; \
- ll=`echo $$lang | sed -e 's/@.*//'`; \
- LC_ALL=C; export LC_ALL; \
- cd $(srcdir); \
- if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \
- if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
- rm -f $$tmpdir/$$lang.new.po; \
- else \
- if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
- :; \
- else \
- echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
- exit 1; \
- fi; \
- fi; \
- else \
- echo "creation of $$lang.po failed!" 1>&2; \
- rm -f $$tmpdir/$$lang.new.po; \
- fi
-
-en@quot.insert-header: insert-header.sin
- sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header
-
-en@boldquot.insert-header: insert-header.sin
- sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header
-
-mostlyclean: mostlyclean-quot
-mostlyclean-quot:
- rm -f *.insert-header
diff --git a/po/boldquot.sed b/po/boldquot.sed
deleted file mode 100644
index 4b937aa..0000000
--- a/po/boldquot.sed
+++ /dev/null
@@ -1,10 +0,0 @@
-s/"\([^"]*\)"/“\1â€/g
-s/`\([^`']*\)'/‘\1’/g
-s/ '\([^`']*\)' / ‘\1’ /g
-s/ '\([^`']*\)'$/ ‘\1’/g
-s/^'\([^`']*\)' /‘\1’ /g
-s/“â€/""/g
-s/“/“/g
-s/â€/â€/g
-s/‘/‘/g
-s/’/’/g
diff --git a/po/de.gmo b/po/de.gmo
deleted file mode 100644
index 98d09cc..0000000
--- a/po/de.gmo
+++ /dev/null
Binary files differ
diff --git a/po/de.po b/po/de.po
deleted file mode 100644
index a181cce..0000000
--- a/po/de.po
+++ /dev/null
@@ -1,2698 +0,0 @@
-# German translations for snd package
-# German messages for snd.
-# Copyright (C) 1996-2006 Stanford University
-# This file is distributed under the same license as the snd package.
-# Michael Scholz <scholz-micha@gmx.de>, 2003--2006.
-#
-# These are thoughts and proposals only. Any additions and
-# corrections are welcome.
-#
-# apply - übernehmen (besser als verwenden?)
-# chan - Kan
-# chans - Kanäle
-# controls - Regler
-# env - Hüllk.
-# envelope - Hüllkurve
-# hit error - mit Fehler
-# peak(s) - Spitze(n)
-# region - Region
-# sample - Sampel
-# selection - Ausschnitt
-# speed style - Geschwindigkeitsart
-# topic - Thema
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: snd 8.6\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-04-10 07:18-0700\n"
-"PO-Revision-Date: 2006-11-03 23:59+0100\n"
-"Last-Translator: Michael Scholz <scholz-micha@gmx.de>\n"
-"Language-Team: German (no team)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-1\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: snd-chn.c:548 snd-chn.c:6459
-msgid "time (beats)"
-msgstr "Zeit (Beats)"
-
-#: snd-chn.c:549 snd-chn.c:6460
-msgid "time (measures)"
-msgstr "Zeit (Takte)"
-
-#: snd-chn.c:550 snd-chn.c:6461
-msgid "time (samples)"
-msgstr "Zeit (Sampels)"
-
-#: snd-chn.c:551 snd-chn.c:6462
-msgid "time (percent)"
-msgstr "Zeit (Prozent)"
-
-#: snd-chn.c:552 snd-chn.c:2411 snd-chn.c:6463 snd-edits.c:273 snd-fft.c:741
-#: snd-fft.c:759
-msgid "time"
-msgstr "Zeit"
-
-#: snd-chn.c:613 snd-edits.c:268
-msgid "(no data)"
-msgstr "(keine Daten)"
-
-#: snd-chn.c:1146
-msgid "(len: <PRId64>/<PRId64>)"
-msgstr "(Länge: <PRId64>/<PRId64>)"
-
-#: snd-chn.c:2065 snd-chn.c:2504 snd-chn.c:2561 snd-mix.c:3231 snd-mix.c:7955
-#: snd-xsnd.c:3019 snd-xsnd.c:3020
-msgid "stopped"
-msgstr "angehalten"
-
-#: snd-chn.c:2349
-msgid "can't print openGL graphics yet"
-msgstr "kann OpenGL-Graphik nicht drucken"
-
-#: snd-chn.c:3596
-#, c-format
-msgid "cursor at %s (sample <PRId64>) = %s"
-msgstr "Cursor bei %s (Sampel <PRId64>) = %s"
-
-#: snd-chn.c:3603
-#, c-format
-msgid "chan %d, cursor at %s (sample <PRId64>) = %s"
-msgstr "Kanal %d, Cursor bei %s (Sampel <PRId64>) = %s"
-
-#: snd-chn.c:3612
-#, c-format
-msgid "cursor at %s (sample <PRId64>): %s"
-msgstr "Cursor bei %s (Sampel <PRId64>): %s"
-
-#: snd-chn.c:3749
-#, c-format
-msgid "(%.1f%s, transform val: %.3f%s (raw: %.3f)"
-msgstr "(%.1f%s, Transformationswert: %.3f%s (raw: %.3f)"
-
-#: snd-chn.c:3751
-msgid " samps"
-msgstr " Sampels"
-
-#: snd-chn.c:3751
-msgid " Hz"
-msgstr " Hz"
-
-#: snd-chn.c:3753 snd-chn.c:3786 snd-genv.c:1017 snd-gfft.c:480 snd-gmix.c:866
-#: snd-gmix.c:1822 snd-gsnd.c:1721 snd-xenv.c:1047 snd-xfft.c:805
-#: snd-xmix.c:953 snd-xmix.c:2117 snd-xsnd.c:2481
-msgid "dB"
-msgstr "dB"
-
-#: snd-chn.c:3783
-#, c-format
-msgid "(time: %.2f, freq: %.1f, val: %.3f%s (raw: %.3f))"
-msgstr "(Zeit: %.2f, Freq: %.1f, Wert: %.3f%s (raw: %.3f))"
-
-#: snd-chn.c:4136
-#, c-format
-msgid "mark %d at sample <PRId64>"
-msgstr "Markierung %d bei Sampel <PRId64>"
-
-#: snd-chn.c:4155
-#, c-format
-msgid "mix %d "
-msgstr "Mix %d "
-
-#: snd-chn.c:6593
-#, c-format
-msgid ""
-"Snd: fft peaks (%s)\n"
-"\n"
-msgstr ""
-"Snd: FFT Spitzen (%s)\n"
-"\n"
-
-#: snd-chn.c:6638
-#, c-format
-msgid ": chan %d"
-msgstr ": Kanal %d"
-
-#: snd-chn.c:6639
-#, c-format
-msgid ""
-", fft %d points beginning at sample <PRId64> (%.3f secs), %s\n"
-"\n"
-msgstr ", FFT %d Punkte beginnen bei Sampel <PRId64> (%.3fs), %s\n"
-
-#: snd-dac.c:1608
-#, c-format
-msgid "can't play %s: %s"
-msgstr "kann %s nicht spielen: %s"
-
-#: snd-dac.c:1860 snd-dac.c:1980 snd-dac.c:2063
-#, c-format
-msgid "folding %d chans into %d "
-msgstr "verbinde %d Kanäle zu %d "
-
-#: snd-dac.c:2021
-#, c-format
-msgid "can't get audio output chans? (%d) "
-msgstr "kann Audioausgabekanäle nicht finden? (%d) "
-
-#: snd-data.c:914
-msgid ""
-"\n"
-"max amp: "
-msgstr ""
-"\n"
-"max Amp: "
-
-#: snd-data.c:950
-#, c-format
-msgid ""
-"srate: %d\n"
-"chans: %d\n"
-"length: %.3f (<PRId64> %s)\n"
-"type: %s\n"
-"format: %s\n"
-"written: %s%s%s%s\n"
-msgstr ""
-" Srate: %d\n"
-"Kanäle: %d\n"
-" Länge: %.3f (<PRId64> %s)\n"
-" Typ: %s\n"
-"Format: %s\n"
-"geschr: %s%s%s%s\n"
-
-#: snd-data.c:955 snd-gmenu.c:635 snd-gmenu.c:636 snd-xmenu.c:495
-msgid "samples"
-msgstr "Sampels"
-
-#: snd-data.c:955
-msgid "frames"
-msgstr "Frames"
-
-#: snd-data.c:960
-msgid ""
-"\n"
-"comment: "
-msgstr ""
-"\n"
-"Kommentar: "
-
-#: snd-edits.c:4426 snd-edits.c:4461
-msgid "file save cancelled by C-g"
-msgstr "Datei speichern abgebrochen durch C-g"
-
-#: snd-edits.c:4498
-#, c-format
-msgid "no such edit: %s[%d]: %d (this channel has %d edit%s"
-msgstr "kein solcher Edit: %s[%d]: %d (dieser Kanal hat %d Edit%s"
-
-#: snd-edits.c:5838
-#, c-format
-msgid "%s has no data"
-msgstr "%s hat keine Daten"
-
-#: snd-edits.c:5865
-#, c-format
-msgid "can't read %s"
-msgstr "kann %s nicht lesen"
-
-#: snd-edits.c:6859 snd-file.c:1148 snd-file.c:1860
-#, c-format
-msgid "%s no longer exists!"
-msgstr "%s existiert nicht mehr!"
-
-#: snd-edits.c:6862 snd-xsnd.c:1586
-#, c-format
-msgid "%s has changed since we last read it!"
-msgstr "%s ist geändert seitdem es zuletzt gelesen wurde!"
-
-#: snd-edits.c:7454
-#, c-format
-msgid "can't save channel as %s (%s is write-protected)"
-msgstr "kann Kanal nicht als %s speichern (%s ist schreibgeschützt)"
-
-#: snd-edits.c:7512
-#, c-format
-msgid "can't save edits; %s has disappeared!"
-msgstr "kann Edits nicht speichern; %s ist verschwunden!"
-
-#: snd-edits.c:8539
-msgid "maxamp check interrupted..."
-msgstr "Maxamp-Test unterbrochen..."
-
-#: snd-env.c:1441
-#, c-format
-msgid "x axis points not increasing: %s"
-msgstr "X-Achsenpunkte nehmen nicht zu: %s"
-
-#: snd-env.c:1443 snd-env.c:1482
-#, c-format
-msgid "odd length envelope? %s"
-msgstr "ungerade Hüllkurvenlänge? %s"
-
-#: snd-env.c:1445
-#, c-format
-msgid "%s is not a list"
-msgstr "%s ist keine Liste"
-
-#: snd-fft.c:683 snd-fft.c:740 snd-fft.c:744
-msgid "frequency"
-msgstr "Frequenz"
-
-#: snd-fft.c:687
-msgid "Haar spectrum"
-msgstr "Haarspektrum"
-
-#: snd-fft.c:690
-msgid "Lag time"
-msgstr "Lag-Zeit"
-
-#: snd-fft.c:742
-msgid "wavelength?"
-msgstr "Wavelänge?"
-
-#: snd-fft.c:743
-msgid "reversed time?"
-msgstr "umgekehrte Zeit?"
-
-#: snd-fft.c:1677
-#, c-format
-msgid "not enough memory for convolve of %s (filter size: %d, fft size: %d)"
-msgstr ""
-"nicht genug Speicher für Convolve von %s (Filtergröße: %d, FFT-Größe: %d)"
-
-#: snd-fft.c:1727
-#, c-format
-msgid "convolve: can't close temp file %s!"
-msgstr "Convolve: kann temporäre Datei nicht schließen %s!"
-
-#: snd-file.c:418 snd-file.c:454 snd-file.c:503
-#, c-format
-msgid "closedir %s failed (%s)!"
-msgstr "Verzeichnis %s schließen fehlgeschlagen (%s)!"
-
-#: snd-file.c:851
-#, c-format
-msgid "can't write translation temp file! (%s)"
-msgstr "kann temporäre Übersetzungsdatei nicht schreiben (%s)"
-
-#: snd-file.c:957
-#, c-format
-msgid "No header found for %s"
-msgstr "kein Header für %s gefunden"
-
-#: snd-file.c:1061
-#, c-format
-msgid "%s does not seem to be a sound file?"
-msgstr "%s sieht nicht wie eine Sounddatei aus?"
-
-#: snd-file.c:1063
-#, c-format
-msgid "can't find file %s: %s"
-msgstr "kann Datei %s nicht finden: %s"
-
-#: snd-file.c:1125
-#, c-format
-msgid "%s is read-protected!"
-msgstr "%s ist lesegeschützt!"
-
-#: snd-file.c:1479
-#, c-format
-msgid "can't close file %s: %s"
-msgstr "kann Datei %s nicht schließen: %s"
-
-#: snd-file.c:2384 snd-file.c:2391 snd-xfile.c:4114
-#, c-format
-msgid "%s is write-protected"
-msgstr "%s ist schreibgeschützt"
-
-#: snd-file.c:3578
-#, c-format
-msgid "%s mixed in at "
-msgstr "%s hinzugemixt bei "
-
-#: snd-file.c:3579
-msgid "selected files mixed in at "
-msgstr "ausgewählte Dateien hinzugemixt bei "
-
-#: snd-file.c:3655
-#, c-format
-msgid "%s inserted at "
-msgstr "%s eingefügt bei "
-
-#: snd-file.c:3656
-msgid "selected files inserted at "
-msgstr "ausgewählte Dateien eingefügt bei "
-
-#: snd-file.c:4366
-msgid "sound is write-protected"
-msgstr "Sound ist schreibgeschützt"
-
-#: snd-file.c:4420
-#, c-format
-msgid "changing %s's header from %s to aifc to accommodate loop info"
-msgstr "ändere %ss Header von %s zu AIFC um Platz zu erhalten für Loop-Info"
-
-#: snd-find.c:127
-msgid "search in progress"
-msgstr "Suche läuft"
-
-#: snd-find.c:202
-msgid "search stopped"
-msgstr "Suche angehalten"
-
-#: snd-find.c:206
-#, c-format
-msgid "%s: not found"
-msgstr "%s: nicht gefunden"
-
-#: snd-find.c:252 snd-find.c:346 snd-find.c:446
-msgid "search already in progress"
-msgstr "Suche läuft schon"
-
-#: snd-gchn.c:738 snd-xchn.c:909
-msgid "f"
-msgstr "F"
-
-#: snd-gchn.c:745 snd-xchn.c:914
-msgid "w"
-msgstr "W"
-
-#: snd-gdraw.c:703 snd-gfft.c:409 snd-gmenu.c:511 snd-gmenu.c:512
-#: snd-xdraw.c:778 snd-xdraw.c:788 snd-xfft.c:560 snd-xmenu.c:421
-msgid "Color"
-msgstr "Farbe"
-
-#: snd-gdraw.c:745 snd-xdraw.c:877
-msgid "light"
-msgstr "hell"
-
-#: snd-gdraw.c:749 snd-xdraw.c:887
-msgid "dark"
-msgstr "dunkel"
-
-#: snd-gdraw.c:774 snd-xdraw.c:901
-msgid "data cutoff"
-msgstr "Daten abschneiden"
-
-#: snd-gdraw.c:782 snd-xdraw.c:918
-msgid "invert"
-msgstr "vertauschen"
-
-#: snd-gdraw.c:1076 snd-xdraw.c:1242
-msgid "Spectrogram Orientation"
-msgstr "Spektrogramm-Ausrichtung"
-
-#: snd-gdraw.c:1125 snd-xdraw.c:1302
-msgid "x angle"
-msgstr "X-Winkel"
-
-#: snd-gdraw.c:1150 snd-xdraw.c:1315
-msgid "y angle"
-msgstr "Y-Winkel"
-
-#: snd-gdraw.c:1175 snd-xdraw.c:1328
-msgid "z angle"
-msgstr "Z-Winkel"
-
-#: snd-gdraw.c:1200 snd-xdraw.c:1341
-msgid "hop"
-msgstr "Hop"
-
-#: snd-gdraw.c:1225 snd-xdraw.c:1355
-msgid "x scale"
-msgstr "X-Skala"
-
-#: snd-gdraw.c:1250 snd-xdraw.c:1369
-msgid "y scale"
-msgstr "Y-Skala"
-
-#: snd-gdraw.c:1275 snd-xdraw.c:1383
-msgid "z scale"
-msgstr "Z-Skala"
-
-#: snd-gdraw.c:1299
-msgid "portion of spectrum"
-msgstr "Teil des Spektrums"
-
-#: snd-gdraw.c:1309 snd-xdraw.c:1413
-msgid "use OpenGL"
-msgstr "verwende OpenGL"
-
-#: snd-genv.c:14 snd-genv.c:988 snd-xenv.c:12 snd-xenv.c:1013
-msgid "amp env:"
-msgstr "Amp-Hüll:"
-
-#: snd-genv.c:14 snd-xenv.c:12
-msgid "flt env:"
-msgstr "Flt-Hüll:"
-
-#: snd-genv.c:14 snd-xenv.c:12
-msgid "src env:"
-msgstr "Src-Hüll:"
-
-#: snd-genv.c:151 snd-gfind.c:114 snd-gmenu.c:46 snd-gprint.c:83
-#: snd-xenv.c:163 snd-xfind.c:112 snd-xmenu.c:49 snd-xprint.c:105
-msgid "Stop"
-msgstr "Halt"
-
-#: snd-genv.c:219 snd-gfind.c:118 snd-gfind.c:144 snd-xdraw.c:776
-#: snd-xdraw.c:1239 snd-xenv.c:229 snd-xenv.c:850 snd-xfft.c:525
-#: snd-xfile.c:1135 snd-xfile.c:5492 snd-xfind.c:118 snd-xfind.c:160
-#: snd-xhelp.c:330 snd-xmix.c:610 snd-xmix.c:1726 snd-xprint.c:194
-#: snd-xrec.c:2954 snd-xregion.c:401
-msgid "Dismiss"
-msgstr "Verlassen"
-
-#: snd-genv.c:235 snd-xenv.c:245
-msgid "noname"
-msgstr "Noname"
-
-#: snd-genv.c:321 snd-xenv.c:379
-msgid "unnamed"
-msgstr "unbenannt"
-
-#: snd-genv.c:365 snd-genv.c:513 snd-genv.c:861 snd-xenv.c:434 snd-xenv.c:557
-#: snd-xenv.c:1149
-msgid "view envs"
-msgstr "Ansicht Hüllk."
-
-#: snd-genv.c:513 snd-xenv.c:557
-msgid "edit env"
-msgstr "Hüllk. bearbeiten"
-
-#: snd-genv.c:781 snd-gmenu.c:432 snd-gmenu.c:433 snd-xenv.c:852
-#: snd-xmenu.c:378
-msgid "Edit Envelope"
-msgstr "Hüllkurve bearbeiten"
-
-#: snd-genv.c:813 snd-xenv.c:887
-msgid "Undo&Apply"
-msgstr "Rück&Übern"
-
-#: snd-genv.c:816 snd-gfile.c:3221 snd-gfile.c:3506 snd-gfile.c:4864
-#: snd-grec.c:1555 snd-grec.c:1665 snd-grec.c:1695 snd-grec.c:1722
-#: snd-grec.c:1942 snd-grec.c:1944 snd-xdraw.c:1241 snd-xenv.c:894
-#: snd-xfile.c:3589 snd-xfile.c:4348 snd-xfile.c:5516 snd-xrec.c:2485
-#: snd-xrec.c:2486 snd-xrec.c:2633 snd-xrec.c:2668 snd-xrec.c:2701
-#: snd-xrec.c:2956
-msgid "Reset"
-msgstr "Zurücksetzen"
-
-#: snd-genv.c:872
-msgid " save "
-msgstr " speichern "
-
-#: snd-genv.c:879
-msgid " print "
-msgstr " drucken "
-
-#: snd-genv.c:890
-msgid "revert "
-msgstr "rückgängig "
-
-#: snd-genv.c:897 snd-xenv.c:1231
-msgid "delete"
-msgstr "löschen"
-
-#: snd-genv.c:908
-msgid " undo "
-msgstr " rückgängig "
-
-#: snd-genv.c:915
-msgid " redo "
-msgstr " wiederholen "
-
-#: snd-genv.c:926 snd-xenv.c:1248
-msgid "amp"
-msgstr "Amp"
-
-#: snd-genv.c:933 snd-xenv.c:1261
-msgid "flt"
-msgstr "Flt"
-
-#: snd-genv.c:940 snd-xenv.c:1273
-msgid "src"
-msgstr "Src"
-
-#: snd-genv.c:951 snd-xenv.c:1290
-msgid "lin"
-msgstr "Lin"
-
-#: snd-genv.c:958 snd-xenv.c:1303
-msgid "exp"
-msgstr "Exp"
-
-#: snd-genv.c:969 snd-gfft.c:498 snd-xenv.c:1318 snd-xfft.c:898
-msgid "selection"
-msgstr "Ausschnitt"
-
-#: snd-genv.c:976 snd-xenv.c:1345
-msgid "envs:"
-msgstr "Hüllk.:"
-
-#: snd-genv.c:1007 snd-gmix.c:856 snd-gmix.c:1812 snd-xenv.c:1073
-#: snd-xmix.c:946 snd-xmix.c:2110
-msgid "clip"
-msgstr "Klipp"
-
-#: snd-genv.c:1012 snd-gmix.c:861 snd-gmix.c:1817 snd-xenv.c:1060
-#: snd-xmix.c:950 snd-xmix.c:2114
-msgid "wave"
-msgstr "Wave"
-
-#: snd-genv.c:1022 snd-xenv.c:925
-msgid "exp:"
-msgstr "Exp:"
-
-#: snd-gfft.c:397 snd-gmenu.c:717 snd-gmenu.c:718 snd-xfft.c:527
-#: snd-xfft.c:540 snd-xmenu.c:548
-msgid "Transform Options"
-msgstr "Transformations-Optionen"
-
-#: snd-gfft.c:412 snd-gmenu.c:518 snd-gmenu.c:519 snd-xdraw.c:1254
-#: snd-xfft.c:528 snd-xmenu.c:424
-msgid "Orientation"
-msgstr "Ausrichtung"
-
-#: snd-gfft.c:444 snd-xfft.c:664
-msgid "size"
-msgstr "Größe"
-
-#: snd-gfft.c:448 snd-xfft.c:713
-msgid "display"
-msgstr "Anzeige"
-
-#: snd-gfft.c:456 snd-xfft.c:718
-msgid "single transform"
-msgstr "Einzelne Umwandlung"
-
-#: snd-gfft.c:462 snd-xfft.c:734
-msgid "sonogram"
-msgstr "Sonogramm"
-
-#: snd-gfft.c:468 snd-xfft.c:750
-msgid "spectrogram"
-msgstr "Spektrogramm"
-
-#: snd-gfft.c:474 snd-xfft.c:766
-msgid "peaks"
-msgstr "Spitzen"
-
-#: snd-gfft.c:486 snd-xfft.c:844
-msgid "log freq"
-msgstr "Log-Frequenz"
-
-#: snd-gfft.c:492 snd-xfft.c:883
-msgid "normalize"
-msgstr "normalisieren"
-
-#: snd-gfft.c:508
-msgid "max peaks:"
-msgstr "max Spitzen:"
-
-#: snd-gfft.c:521
-msgid "min dB:"
-msgstr "min dB:"
-
-#: snd-gfft.c:534
-msgid "log freq start:"
-msgstr "Log-Frequenz Anfang:"
-
-#: snd-gfft.c:553 snd-xfft.c:937
-msgid "wavelet"
-msgstr "Wavelet"
-
-#: snd-gfft.c:559 snd-xfft.c:1017 snd-xfft.c:1068
-msgid "window"
-msgstr "Fenster"
-
-#: snd-gfft.c:851 snd-xfft.c:623
-msgid "type"
-msgstr "Typ"
-
-#: snd-gfile.c:315 snd-xfile.c:1437 snd-xfile.c:3140
-msgid "Mkdir"
-msgstr "Mkdir"
-
-#: snd-gfile.c:320 snd-xfile.c:3128
-msgid "Extract"
-msgstr "Extrakt"
-
-#: snd-gfile.c:1266 snd-xfile.c:839
-msgid "sound files only"
-msgstr "nur Sound-Dateien"
-
-#: snd-gfile.c:1272 snd-xfile.c:843
-msgid "play selected sound"
-msgstr "spiele gewählten Sound"
-
-#: snd-gfile.c:1390 snd-gfile.c:1537 snd-gfile.c:1629 snd-xfile.c:1338
-#: snd-xfile.c:1486 snd-xfile.c:1585
-msgid "no filename given"
-msgstr "kein Dateiname angegeben"
-
-#: snd-gfile.c:1424 snd-gfile.c:1571 snd-gfile.c:1666 snd-xfile.c:1375
-#: snd-xfile.c:1524 snd-xfile.c:1625
-#, c-format
-msgid "%s is a directory"
-msgstr "%s ist ein Verzeichnis"
-
-#: snd-gfile.c:1464 snd-gfile.c:2714 snd-xfile.c:1392 snd-xfile.c:2957
-#, c-format
-msgid "can't make %s: %s"
-msgstr "kann %s nicht erzeugen: %s"
-
-#: snd-gfile.c:1484 snd-gfile.c:1498 snd-gmenu.c:303 snd-gmenu.c:304
-#: snd-gmenu.c:453 snd-gmenu.c:454 snd-xfile.c:1416 snd-xmenu.c:309
-#: snd-xmenu.c:395
-msgid "View"
-msgstr "Ansicht"
-
-#: snd-gfile.c:1484 snd-gfile.c:1498 snd-gmenu.c:222 snd-gmenu.c:223
-#: snd-xfile.c:1421 snd-xfile.c:5614 snd-xmenu.c:173 snd-xmenu.c:270
-msgid "Open"
-msgstr "Öffnen"
-
-#: snd-gfile.c:1485
-msgid "view:"
-msgstr "Ansicht:"
-
-#: snd-gfile.c:1485 snd-xfile.c:1422
-msgid "open:"
-msgstr "öffnen:"
-
-#: snd-gfile.c:1564 snd-kbd.c:934 snd-xfile.c:1516
-#, c-format
-msgid "%s mixed in at cursor"
-msgstr "%s hinzugemixt bei Cursor"
-
-#: snd-gfile.c:1582 snd-gfile.c:5084 snd-gmenu.c:261 snd-gmenu.c:262
-#: snd-gmenu.c:837 snd-gmenu.c:838 snd-gregion.c:410 snd-xfile.c:5675
-#: snd-xmenu.c:175 snd-xmenu.c:290 snd-xmenu.c:618 snd-xregion.c:426
-msgid "Mix"
-msgstr "Mix"
-
-#: snd-gfile.c:1582 snd-gmix.c:685 snd-xmix.c:691
-msgid "mix:"
-msgstr "Mix:"
-
-#: snd-gfile.c:1659 snd-kbd.c:947 snd-xfile.c:1617
-#, c-format
-msgid "%s inserted at cursor"
-msgstr "%s eingefügt bei Cursor"
-
-#: snd-gfile.c:1677 snd-gfile.c:5085 snd-gmenu.c:269 snd-gmenu.c:270
-#: snd-gmenu.c:885 snd-gmenu.c:886 snd-gregion.c:407 snd-xfile.c:5689
-#: snd-xmenu.c:176 snd-xmenu.c:294 snd-xmenu.c:642 snd-xregion.c:403
-msgid "Insert"
-msgstr "Einfügen"
-
-#: snd-gfile.c:1677 snd-xfile.c:1644
-msgid "insert:"
-msgstr "einfügen:"
-
-#: snd-gfile.c:2149
-msgid "header:"
-msgstr "Header:"
-
-#: snd-gfile.c:2156
-msgid "data format:"
-msgstr "Datenformat:"
-
-#: snd-gfile.c:2172
-msgid " srate:"
-msgstr " Srate:"
-
-#: snd-gfile.c:2223
-msgid " channels:"
-msgstr " Kanäle:"
-
-#: snd-gfile.c:2223
-msgid " extract channel:"
-msgstr " extrahiere Kanal:"
-
-#: snd-gfile.c:2238
-msgid "location:"
-msgstr "Stelle:"
-
-#: snd-gfile.c:2250 snd-xfile.c:2370
-msgid "samples:"
-msgstr "Sampels:"
-
-#: snd-gfile.c:2275 snd-xfile.c:2432
-msgid "comment:"
-msgstr "Kommentar:"
-
-#: snd-gfile.c:2359 snd-gmenu.c:237 snd-gmenu.c:238 snd-gmenu.c:831
-#: snd-gmenu.c:832 snd-gmenu.c:1056 snd-gmenu.c:1057 snd-xfile.c:2557
-#: snd-xfile.c:3013 snd-xfile.c:3974 snd-xmenu.c:174 snd-xmenu.c:278
-#: snd-xmenu.c:615 snd-xmenu.c:770
-msgid "Save"
-msgstr "Speichern"
-
-#: snd-gfile.c:2424 snd-kbd.c:838 snd-xfile.c:2622
-msgid "no selection to save"
-msgstr "kein Ausschnitt zum Speichern"
-
-#: snd-gfile.c:2425 snd-xfile.c:2623
-msgid "can't extract: no selection"
-msgstr "kann nicht extrahieren: kein Ausschnitt"
-
-#: snd-gfile.c:2435 snd-xfile.c:2633
-msgid "no region to save"
-msgstr "kein Region zum Speichern"
-
-#: snd-gfile.c:2444 snd-xfile.c:2642
-msgid "nothing to save"
-msgstr "nichts zu Speichern"
-
-#: snd-gfile.c:2445 snd-xfile.c:2643
-msgid "nothing to extract"
-msgstr "nichts zum Extrahieren"
-
-#: snd-gfile.c:2456 snd-xfile.c:2654
-msgid "can't save: no file name given"
-msgstr "kann nicht speichern: kein Dateiname angegeben"
-
-#: snd-gfile.c:2457 snd-xfile.c:2655
-msgid "can't extract: no file name given"
-msgstr "kann nicht extrahieren: kein Dateiname angegeben"
-
-#: snd-gfile.c:2516 snd-xfile.c:2716
-#, c-format
-msgid "%s cancelled by %s"
-msgstr "%s abgebrochen durch %s"
-
-#: snd-gfile.c:2533 snd-xfile.c:2734
-#, c-format
-msgid "can't overwrite %s (it is write-protected)"
-msgstr "kann %s nicht überschreiben (schreibgeschützt)"
-
-#: snd-gfile.c:2555
-#, c-format
-msgid "%s exists%s. To overwrite it, click '%s'"
-msgstr "%s existiert%s. Überschreiben mit '%s'"
-
-#: snd-gfile.c:2563 snd-gfile.c:3394 snd-xfile.c:2764 snd-xfile.c:3453
-msgid "DoIt"
-msgstr "DoIt"
-
-#: snd-gfile.c:2726 snd-gfile.c:2753 snd-gfile.c:2756 snd-xfile.c:2938
-#: snd-xfile.c:2941 snd-xfile.c:3010
-msgid "save as:"
-msgstr "speichern unter:"
-
-#: snd-gfile.c:2744 snd-xfile.c:2929
-msgid "save as (file write-protected?):"
-msgstr "speichern unter (%s ist schreibgeschützt?):"
-
-#: snd-gfile.c:2747 snd-xfile.c:2932
-msgid "save as (overwriting):"
-msgstr "speicher unter (überschreiben):"
-
-#: snd-gfile.c:2752 snd-xfile.c:2937
-msgid "save as (no such directory?):"
-msgstr "speichern unter (Verzeichnis existiert nicht?):"
-
-#: snd-gfile.c:2793 snd-xfile.c:3017 snd-xfile.c:3168
-#, c-format
-msgid "save %s"
-msgstr "speichere %s"
-
-#: snd-gfile.c:2895 snd-xfile.c:3222
-msgid "current selection"
-msgstr "aktueller Ausschnitt"
-
-#: snd-gfile.c:2923
-msgid "current region"
-msgstr "aktuelle Region"
-
-#: snd-gfile.c:3208 snd-xfile.c:4318
-msgid "No header on file"
-msgstr "Datei hat keinen Header"
-
-#: snd-gfile.c:3325 snd-gfile.c:3503 snd-xfile.c:3375 snd-xfile.c:3564
-#: snd-xfile.c:4316
-msgid "Ok"
-msgstr "Okay"
-
-#: snd-gfile.c:3369 snd-xfile.c:3425
-msgid "new sound needs a file name ('New file:' field is empty)"
-msgstr "neuer Sound benötigt einen Dateinamen ('Neue Datei:'-Feld ist leer)"
-
-#: snd-gfile.c:3392 snd-xfile.c:3449
-#, c-format
-msgid "%s exists. If you want to overwrite it, click 'DoIt'"
-msgstr ""
-"%s existiert. Wenn Sie diese überschreiben möchten, drücken Sie 'DoIt'"
-
-#: snd-gfile.c:3448 snd-xfile.c:3519
-#, c-format
-msgid "new-%d.%s"
-msgstr "neu-%d.%s"
-
-#: snd-gfile.c:3491 snd-xfile.c:3561
-msgid "New file"
-msgstr "Neue Datei"
-
-#: snd-gfile.c:3518 snd-xfile.c:3602
-msgid "New file:"
-msgstr "Neue Datei:"
-
-#: snd-gfile.c:3649 snd-xfile.c:3756
-#, c-format
-msgid "Add header to (write-protected) %s"
-msgstr "Füge Header zur (schreibgeschützten) Datei %s"
-
-#: snd-gfile.c:3650 snd-xfile.c:3757
-#, c-format
-msgid "Edit header of (write-protected) %s"
-msgstr "Editiere Header der (schreibgeschützten) Datei %s"
-
-#: snd-gfile.c:3657 snd-xfile.c:3764
-#, c-format
-msgid "Add header to %s"
-msgstr "Füge Header zu %s"
-
-#: snd-gfile.c:3658 snd-xfile.c:3765
-#, c-format
-msgid "Edit header of %s"
-msgstr "Header von %s bearbeiten"
-
-#: snd-gfile.c:3860 snd-gmenu.c:439 snd-gmenu.c:440 snd-menu.c:64
-#: snd-xfile.c:3975 snd-xmenu.c:382
-msgid "Edit Header"
-msgstr "Header bearbeiten"
-
-#: snd-gfile.c:3956 snd-gmenu.c:1064 snd-gmenu.c:1065 snd-xmenu.c:778
-msgid "Info"
-msgstr "Info"
-
-#: snd-gfile.c:4849 snd-gmenu.c:500 snd-gmenu.c:501 snd-xfile.c:5494
-#: snd-xmenu.c:417
-msgid "Files"
-msgstr "Dateien"
-
-#: snd-gfile.c:4911 snd-xfile.c:6074
-msgid "files"
-msgstr "Dateien"
-
-#: snd-gfile.c:4924 snd-gregion.c:454 snd-gsnd.c:1467 snd-xfile.c:6095
-#: snd-xregion.c:479 snd-xsnd.c:1851
-msgid "play"
-msgstr "spielen"
-
-#: snd-gfile.c:4933 snd-xfile.c:6124
-msgid "a..z"
-msgstr "a..z"
-
-#: snd-gfile.c:4934 snd-xfile.c:6125
-msgid "z..a"
-msgstr "z..a"
-
-#: snd-gfile.c:4935 snd-xfile.c:6126
-msgid "new..old"
-msgstr "new..alt"
-
-#: snd-gfile.c:4936 snd-xfile.c:6127
-msgid "old..new"
-msgstr "alt..neu"
-
-#: snd-gfile.c:4937 snd-xfile.c:6128
-msgid "small..big"
-msgstr "klein..groß"
-
-#: snd-gfile.c:4938 snd-xfile.c:6129
-msgid "big..small"
-msgstr "groß..klein"
-
-#: snd-gfile.c:4962 snd-xfile.c:6120
-msgid "sort"
-msgstr "sortieren"
-
-#: snd-gfile.c:5016 snd-xfile.c:5984
-msgid "add:"
-msgstr "hinzufügen:"
-
-#: snd-gfile.c:5029
-msgid "(no files selected)"
-msgstr "(keine Dateien ausgewählt)"
-
-#: snd-gfile.c:5056 snd-xfile.c:5629
-msgid "Unlist"
-msgstr "Unlist"
-
-#: snd-gfile.c:5096 snd-xfile.c:5695
-msgid "at cursor"
-msgstr "am Cursor"
-
-#: snd-gfile.c:5102 snd-xfile.c:5712
-msgid "at end"
-msgstr "am Ende"
-
-#: snd-gfile.c:5108 snd-xfile.c:5728
-msgid "at beginning"
-msgstr "am Anfang"
-
-#: snd-gfile.c:5126 snd-xfile.c:5744
-msgid "at sample"
-msgstr "am Sampel"
-
-#: snd-gfile.c:5135 snd-xfile.c:5778
-msgid "at mark"
-msgstr "am Mark"
-
-#: snd-gfile.c:5156 snd-gmix.c:1777 snd-gsnd.c:1509 snd-xfile.c:5824
-#: snd-xmix.c:1092 snd-xmix.c:2022 snd-xsnd.c:1922
-msgid "amp:"
-msgstr "Amp:"
-
-#: snd-gfile.c:5184 snd-gmix.c:767 snd-gmix.c:1714 snd-gsnd.c:1537
-#: snd-xfile.c:5877 snd-xmix.c:786 snd-xmix.c:1912 snd-xsnd.c:1976
-msgid "speed:"
-msgstr "Geschwindigkeit:"
-
-#: snd-gfind.c:94 snd-gfind.c:106 snd-xfind.c:91 snd-xfind.c:103
-#, c-format
-msgid "find: %s"
-msgstr "Suche: %s"
-
-#: snd-gfind.c:135 snd-gmenu.c:359 snd-gmenu.c:360 snd-xfind.c:162
-#: snd-xmenu.c:192 snd-xmenu.c:346
-msgid "Find"
-msgstr "Suche"
-
-#: snd-gfind.c:171 snd-xfind.c:196
-msgid "find:"
-msgstr "Suche:"
-
-#: snd-gfind.c:178
-msgid "global search"
-msgstr "globale Suche"
-
-#: snd-ghelp.c:265 snd-gmenu.c:785 snd-gmenu.c:786 snd-xdraw.c:777
-#: snd-xdraw.c:1240 snd-xenv.c:851 snd-xfft.c:526 snd-xfile.c:3562
-#: snd-xfile.c:3973 snd-xfile.c:4315 snd-xfile.c:5493 snd-xhelp.c:328
-#: snd-xmenu.c:594 snd-xmix.c:612 snd-xmix.c:1728 snd-xprint.c:193
-#: snd-xrec.c:2955 snd-xregion.c:402
-msgid "Help"
-msgstr "Hilfe"
-
-#: snd-ghelp.c:298
-msgid "related topics"
-msgstr "ähnliche Themen"
-
-#: snd-ghelp.c:305 snd-xhelp.c:428
-msgid "help topic:"
-msgstr "Hilfethemen"
-
-#: snd-glistener.c:60 snd-xlistener.c:143
-msgid "Completions"
-msgstr "Vervollständigen"
-
-#: snd-gmain.c:493
-#, c-format
-msgid "can't get %s -- will use white\n"
-msgstr "kann Farbe %s nicht finden -- benutze Weiß\n"
-
-#: snd-gmain.c:498
-#, c-format
-msgid "can't get %s -- will use black\n"
-msgstr "kann Farbe %s nicht finden -- benutze Schwarz\n"
-
-#: snd-gmain.c:644
-#, c-format
-msgid "can't find tiny font: %s"
-msgstr "kann Tiny Font nicht finden: %s"
-
-#: snd-gmain.c:648
-#, c-format
-msgid "can't find axis label font: %s"
-msgstr "kann Font für Axenlabel nicht finden: %s"
-
-#: snd-gmain.c:652
-#, c-format
-msgid "can't find axis numbers font: %s"
-msgstr "kann Font für Axennummern nicht finden: %s"
-
-#: snd-gmain.c:656
-#, c-format
-msgid "can't find peaks font: %s"
-msgstr "kann Font für Peaks nicht finden: %s"
-
-#: snd-gmain.c:660
-#, c-format
-msgid "can't find bold peaks font: %s"
-msgstr "kann Font für Bold Peaks nicht finden: %s"
-
-#: snd-gmain.c:663
-#, c-format
-msgid "can't find listener font: %s"
-msgstr "kann Font für Listener nicht finden: %s"
-
-#: snd-gmain.c:969 snd-nogui.c:730 snd-xmain.c:1116
-msgid "Caught seg fault (will try to continue):\n"
-msgstr "Segmentation-Fehler (versuche fortzufahren):\n"
-
-#: snd-gmain.c:972 snd-nogui.c:733 snd-xmain.c:1119
-msgid "Caught seg fault while trying to exit.\n"
-msgstr "Segmentation-Fehler beim Beenden des Programms.\n"
-
-#: snd-gmain.c:980 snd-nogui.c:741 snd-xmain.c:1127
-msgid "Caught top level error (will try to continue):\n"
-msgstr "Toplevel-Fehler (versuche fortzufahren):\n"
-
-#: snd-gmenu.c:54 snd-gmenu.c:398 snd-gmenu.c:399 snd-xmenu.c:57
-#: snd-xmenu.c:185 snd-xmenu.c:365
-msgid "Play Selection"
-msgstr "Ausschnitt spielen"
-
-#: snd-gmenu.c:213 snd-gmenu.c:214 snd-xmenu.c:268
-msgid "File"
-msgstr "Datei"
-
-#: snd-gmenu.c:229 snd-gmenu.c:230 snd-xmenu.c:182 snd-xmenu.c:274
-msgid "Close"
-msgstr "Schließen"
-
-#: snd-gmenu.c:245 snd-gmenu.c:246 snd-xmenu.c:282 snd-xregion.c:421
-msgid "Save as"
-msgstr "Speichern unter"
-
-#: snd-gmenu.c:253 snd-gmenu.c:254 snd-xmenu.c:286
-msgid "Revert"
-msgstr "Rückgängig"
-
-#: snd-gmenu.c:277 snd-gmenu.c:278 snd-xfile.c:6032 snd-xmenu.c:298
-msgid "Update"
-msgstr "Aktualisieren"
-
-#: snd-gmenu.c:285 snd-gmenu.c:286 snd-xmenu.c:302
-msgid "New"
-msgstr "Neu"
-
-#: snd-gmenu.c:292 snd-gmenu.c:293 snd-gmenu.c:819 snd-gmenu.c:820
-#: snd-grec.c:639 snd-grec.c:1667 snd-grec.c:1723 snd-grec.c:1930
-#: snd-grec.c:1949 snd-grec.c:1951 snd-xmenu.c:306 snd-xmenu.c:609
-#: snd-xrec.c:917 snd-xrec.c:2636 snd-xrec.c:2704 snd-xrec.c:2957
-#: snd-xrec.c:2970
-msgid "Record"
-msgstr "Aufnehmen"
-
-#: snd-gmenu.c:310 snd-gmenu.c:311 snd-gprint.c:138 snd-gprint.c:154
-#: snd-gprint.c:166 snd-xmenu.c:313 snd-xprint.c:166 snd-xprint.c:192
-#: snd-xprint.c:195
-msgid "Print"
-msgstr "Drucken"
-
-#: snd-gmenu.c:324 snd-gmenu.c:325 snd-xmenu.c:322
-msgid "Exit"
-msgstr "Ende"
-
-#: snd-gmenu.c:333 snd-gmenu.c:334 snd-xmenu.c:335
-msgid "Edit"
-msgstr "Bearbeiten"
-
-#: snd-gmenu.c:342 snd-gmenu.c:343 snd-gmenu.c:1040 snd-gmenu.c:1041
-#: snd-xmenu.c:177 snd-xmenu.c:337 snd-xmenu.c:762
-msgid "Undo"
-msgstr "Rückgängig"
-
-#: snd-gmenu.c:350 snd-gmenu.c:351 snd-gmenu.c:1048 snd-gmenu.c:1049
-#: snd-xmenu.c:178 snd-xmenu.c:341 snd-xmenu.c:766
-msgid "Redo"
-msgstr "Wiederholen"
-
-#: snd-gmenu.c:374 snd-gmenu.c:375 snd-xmenu.c:353
-msgid "Delete Selection"
-msgstr "Ausschnitt löschen"
-
-#: snd-gmenu.c:382 snd-gmenu.c:383 snd-xmenu.c:183 snd-xmenu.c:357
-msgid "Insert Selection"
-msgstr "Ausschnitt einfügen"
-
-#: snd-gmenu.c:390 snd-gmenu.c:391 snd-xmenu.c:184 snd-xmenu.c:361
-msgid "Mix Selection"
-msgstr "Ausschnitt mixen"
-
-#: snd-gmenu.c:410 snd-gmenu.c:411 snd-xmenu.c:186 snd-xmenu.c:369
-msgid "Save Selection"
-msgstr "Ausschnitt speichern"
-
-#: snd-gmenu.c:418 snd-gmenu.c:419 snd-xmenu.c:373
-msgid "Select all"
-msgstr "Alles wählen"
-
-#: snd-gmenu.c:462 snd-gmenu.c:463 snd-menu.c:111 snd-xmenu.c:397
-msgid "Show controls"
-msgstr "Regler zeigen"
-
-#: snd-gmenu.c:470 snd-gmenu.c:471 snd-xmenu.c:402
-msgid "Open listener"
-msgstr "Listener öffnen"
-
-#: snd-gmenu.c:478 snd-gmenu.c:479 snd-gmix.c:619 snd-xmenu.c:407
-#: snd-xmix.c:613 snd-xmix.c:625
-msgid "Mixes"
-msgstr "Mixe"
-
-#: snd-gmenu.c:485 snd-gmenu.c:486 snd-gmix.c:1592 snd-xmenu.c:410
-#: snd-xmix.c:1729 snd-xmix.c:1742
-msgid "Tracks"
-msgstr "Spuren"
-
-#: snd-gmenu.c:492 snd-gmenu.c:493 snd-gregion.c:395 snd-xmenu.c:413
-#: snd-xregion.c:404 snd-xregion.c:416
-msgid "Regions"
-msgstr "Regionen"
-
-#: snd-gmenu.c:532 snd-gmenu.c:533 snd-xmenu.c:434
-msgid "Graph style"
-msgstr "Graph-Art"
-
-#: snd-gmenu.c:541 snd-gmenu.c:542 snd-xmenu.c:436
-msgid "lines"
-msgstr "Linien"
-
-#: snd-gmenu.c:548 snd-gmenu.c:549 snd-xmenu.c:440
-msgid "dots"
-msgstr "Punktiert"
-
-#: snd-gmenu.c:555 snd-gmenu.c:556 snd-xmenu.c:444
-msgid "filled"
-msgstr "Ausgefüllt"
-
-#: snd-gmenu.c:562 snd-gmenu.c:563 snd-xmenu.c:448
-msgid "dots and lines"
-msgstr "Punkte und Linien"
-
-#: snd-gmenu.c:569 snd-gmenu.c:570 snd-xmenu.c:452
-msgid "lollipops"
-msgstr "Lollipops"
-
-#: snd-gmenu.c:576 snd-gmenu.c:577 snd-menu.c:95 snd-xmenu.c:456
-msgid "Verbose cursor"
-msgstr "Verbose Cursor"
-
-#: snd-gmenu.c:583 snd-gmenu.c:584 snd-xmenu.c:463
-msgid "Channel style"
-msgstr "Kanalart"
-
-#: snd-gmenu.c:591 snd-gmenu.c:592 snd-xmenu.c:465
-msgid "separate"
-msgstr "separat"
-
-#: snd-gmenu.c:598 snd-gmenu.c:599 snd-xmenu.c:469
-msgid "combined"
-msgstr "verbunden"
-
-#: snd-gmenu.c:605 snd-gmenu.c:606 snd-xmenu.c:473
-msgid "superimposed"
-msgstr "überlagert"
-
-#: snd-gmenu.c:613 snd-gmenu.c:614 snd-menu.c:92 snd-xmenu.c:481
-msgid "Show Y = 0"
-msgstr "Zeige Y = 0"
-
-#: snd-gmenu.c:619 snd-gmenu.c:620 snd-xmenu.c:489
-msgid "X axis units"
-msgstr "X-Achsen Einheiten"
-
-#: snd-gmenu.c:628 snd-gmenu.c:629 snd-xmenu.c:491
-msgid "seconds"
-msgstr "Sekunden"
-
-#: snd-gmenu.c:641 snd-gmenu.c:642 snd-xmenu.c:498
-msgid "clock"
-msgstr "Clock"
-
-#: snd-gmenu.c:647 snd-gmenu.c:648 snd-xmenu.c:501
-msgid "percentage"
-msgstr "Prozent"
-
-#: snd-gmenu.c:653 snd-gmenu.c:654 snd-xmenu.c:504
-msgid "beats"
-msgstr "Beats"
-
-#: snd-gmenu.c:659 snd-gmenu.c:660 snd-xmenu.c:507
-msgid "measures"
-msgstr "Takte"
-
-#: snd-gmenu.c:666 snd-gmenu.c:667 snd-xmenu.c:515
-msgid "Axes"
-msgstr "Achsen"
-
-#: snd-gmenu.c:675 snd-gmenu.c:676 snd-xmenu.c:517
-msgid "no axes"
-msgstr "keine Achsen"
-
-#: snd-gmenu.c:681 snd-gmenu.c:682 snd-xmenu.c:521
-msgid "both axes"
-msgstr "beide Achsen"
-
-#: snd-gmenu.c:687 snd-gmenu.c:688 snd-xmenu.c:525
-msgid "just x axis"
-msgstr "nur X-Achse"
-
-#: snd-gmenu.c:693 snd-gmenu.c:694 snd-xmenu.c:529
-msgid "both axes, no labels"
-msgstr "beide Achsen, kein Label"
-
-#: snd-gmenu.c:699 snd-gmenu.c:700 snd-xmenu.c:533
-msgid "just x axis, no label"
-msgstr "nur X-Achse, kein Label"
-
-#: snd-gmenu.c:708 snd-gmenu.c:709 snd-xmenu.c:546
-msgid "Options"
-msgstr "Optionen"
-
-#: snd-gmenu.c:723 snd-gmenu.c:724 snd-xmenu.c:557
-msgid "Zoom focus"
-msgstr "Zoom-Fokus"
-
-#: snd-gmenu.c:732 snd-gmenu.c:733 snd-xmenu.c:559
-msgid "window left edge"
-msgstr "Linke Fensterecke"
-
-#: snd-gmenu.c:738 snd-gmenu.c:739 snd-xmenu.c:562
-msgid "window right edge"
-msgstr "Rechte Fensterecke"
-
-#: snd-gmenu.c:744 snd-gmenu.c:745 snd-xmenu.c:565
-msgid "window midpoint"
-msgstr "Fenstermitte"
-
-#: snd-gmenu.c:750 snd-gmenu.c:751 snd-xmenu.c:568
-msgid "cursor or selection"
-msgstr "Cursor oder Ausschnitt"
-
-#: snd-gmenu.c:757 snd-gmenu.c:758 snd-xmenu.c:572
-msgid "Save options"
-msgstr "Optionen speichern"
-
-#: snd-gmenu.c:763 snd-gmenu.c:764 snd-xmenu.c:576
-msgid "Save session"
-msgstr "Session speichern"
-
-#: snd-gmenu.c:776 snd-gmenu.c:777 snd-xmenu.c:582
-msgid "Preferences"
-msgstr "Präferenzen"
-
-#: snd-gmenu.c:795 snd-gmenu.c:796 snd-xmenu.c:596
-msgid "About Snd"
-msgstr "Über Snd"
-
-#: snd-gmenu.c:801 snd-gmenu.c:802 snd-xmenu.c:600
-msgid "Customization"
-msgstr "Konfigurieren"
-
-#: snd-gmenu.c:807 snd-gmenu.c:808 snd-xmenu.c:603
-msgid "Control Panel"
-msgstr "Regler"
-
-#: snd-gmenu.c:813 snd-gmenu.c:814 snd-xmenu.c:606
-msgid "Key bindings"
-msgstr "Tastaturbelegung"
-
-#: snd-gmenu.c:825 snd-gmenu.c:826 snd-gmenu.c:949 snd-gmenu.c:968
-#: snd-gmenu.c:1028 snd-gmenu.c:1029 snd-xmenu.c:612 snd-xmenu.c:693
-#: snd-xmenu.c:711 snd-xmenu.c:758
-msgid "Play"
-msgstr "Spielen"
-
-#: snd-gmenu.c:843 snd-gmenu.c:844 snd-xmenu.c:621
-msgid "Track"
-msgstr "Spur"
-
-#: snd-gmenu.c:849 snd-gmenu.c:850 snd-xmenu.c:624
-msgid "Resample"
-msgstr "Resampel"
-
-#: snd-gmenu.c:855 snd-gmenu.c:856 snd-xmenu.c:627
-msgid "FFT"
-msgstr "FFT"
-
-#: snd-gmenu.c:861 snd-gmenu.c:862 snd-xmenu.c:630
-msgid "Filter"
-msgstr "Filter"
-
-#: snd-gmenu.c:867 snd-gmenu.c:868 snd-xmenu.c:633
-msgid "Reverb"
-msgstr "Reverb"
-
-#: snd-gmenu.c:873 snd-gmenu.c:874 snd-xmenu.c:636
-msgid "Envelope"
-msgstr "Hüllkurve"
-
-#: snd-gmenu.c:879 snd-gmenu.c:880 snd-xmenu.c:639
-msgid "Mark"
-msgstr "Markierung"
-
-#: snd-gmenu.c:891 snd-gmenu.c:892 snd-xmenu.c:645
-msgid "Delete"
-msgstr "Löschen"
-
-#: snd-gmenu.c:897 snd-gmenu.c:898 snd-xmenu.c:648
-msgid "Undo and redo"
-msgstr "Rückgängig"
-
-#: snd-gmenu.c:903 snd-gmenu.c:904 snd-xmenu.c:651
-msgid "Search"
-msgstr "Suche"
-
-#: snd-gmenu.c:909 snd-gmenu.c:910 snd-xmenu.c:654
-msgid "Sync"
-msgstr "Sync."
-
-#: snd-gmenu.c:915 snd-gmenu.c:916 snd-xmenu.c:657
-msgid "Headers and Data"
-msgstr "Headers und Daten"
-
-#: snd-gmenu.c:921 snd-gmenu.c:922 snd-xmenu.c:660
-msgid "Debugging"
-msgstr "Debuggen"
-
-#: snd-gmenu.c:958 snd-xmenu.c:702
-msgid "Stop playing"
-msgstr "Spielen beenden"
-
-#: snd-gmenu.c:1072 snd-gmenu.c:1073 snd-xmenu.c:782
-msgid "Apply controls"
-msgstr "Regler übernehmen"
-
-#: snd-gmenu.c:1080 snd-gmenu.c:1081 snd-xmenu.c:786
-msgid "Reset controls"
-msgstr "Regler zurücksetzen"
-
-#: snd-gmix.c:245 snd-gmix.c:252 snd-xmix.c:213 snd-xmix.c:220
-msgid "mix env"
-msgstr "Hüllk. mixen"
-
-#: snd-gmix.c:642 snd-gmix.c:1615 snd-xmix.c:611 snd-xmix.c:1727
-msgid "Apply Env"
-msgstr "Hüllk. übern."
-
-#: snd-gmix.c:720 snd-gmix.c:1657 snd-gmix.c:1691 snd-xmix.c:743
-#: snd-xmix.c:1810 snd-xmix.c:1861
-msgid "track:"
-msgstr "Spur:"
-
-#: snd-gmix.c:815 snd-xmix.c:853 snd-xmix.c:1093
-#, c-format
-msgid "amp %d:"
-msgstr "Amp %d:"
-
-#: snd-gmix.c:1240 snd-gmix.c:1246 snd-xmix.c:1347 snd-xmix.c:1353
-msgid "track env"
-msgstr "Spur-Hüll:"
-
-#: snd-gmix.c:1357 snd-xmix.c:1500
-msgid "no such track"
-msgstr "keine Spur"
-
-#: snd-gmix.c:1392 snd-xmix.c:1534 snd-xmix.c:2228
-msgid "no mixes in track"
-msgstr "kein Mix in der Spur"
-
-#: snd-gmix.c:1422 snd-xmix.c:1565
-msgid "no mixes in track, so begin time ignored"
-msgstr "kein Mix in der Spur, daher wird die Startzeit ignoriert"
-
-#: snd-gmix.c:1447 snd-xmix.c:1459
-msgid "circular track chain"
-msgstr "zirkuläre Spurenkette"
-
-#: snd-gmix.c:1750 snd-xmix.c:1970
-msgid "tempo:"
-msgstr "Tempo:"
-
-#: snd-gmix.c:1906 snd-xmix.c:2237
-msgid "no active track"
-msgstr "keine aktive Spur"
-
-#: snd-gprint.c:85 snd-xprint.c:107
-#, c-format
-msgid "printing %s"
-msgstr "%s drucken"
-
-#: snd-gprint.c:112 snd-xprint.c:140
-msgid "can't print!"
-msgstr "kann nicht drucken!"
-
-#: snd-gprint.c:139 snd-gprint.c:212 snd-xprint.c:167 snd-xprint.c:313
-#, c-format
-msgid "print %s"
-msgstr "Drucke %s"
-
-#: snd-gprint.c:187 snd-kbd.c:1697 snd-xprint.c:207 snd-xprint.c:226
-msgid "eps file:"
-msgstr "EPS-Datei:"
-
-#: snd-gprint.c:194 snd-xprint.c:243
-msgid "direct to printer"
-msgstr "Direkt zum Drucker"
-
-#: snd-gprint.c:214 snd-xprint.c:316
-msgid "print env"
-msgstr "Hüllk. drucken"
-
-#: snd-grec.c:639 snd-grec.c:1667 snd-grec.c:1723 snd-xrec.c:917
-#: snd-xrec.c:2636 snd-xrec.c:2704
-msgid "Triggered Record"
-msgstr "Getriggerte Aufnahme"
-
-#: snd-grec.c:742 snd-xrec.c:1045
-msgid "open output"
-msgstr "Ausgang öffnen"
-
-#: snd-grec.c:822 snd-kbd.c:1712 snd-kbd.c:1768 snd-kbd.c:2049 snd-xrec.c:1118
-msgid "file:"
-msgstr "Datei:"
-
-#: snd-grec.c:856 snd-xrec.c:1191
-msgid "duration:"
-msgstr "Dauer:"
-
-#: snd-grec.c:864 snd-xrec.c:1219
-msgid "buf:"
-msgstr "Puffer:"
-
-#: snd-grec.c:880 snd-xrec.c:1256
-msgid "trigger:"
-msgstr "Trigger:"
-
-#: snd-grec.c:917 snd-xrec.c:1320
-msgid "Autoload Recording"
-msgstr "Automatisches Laden der Aufnahme"
-
-#: snd-grec.c:950 snd-xrec.c:1356
-msgid "Restart"
-msgstr "Neustart"
-
-#: snd-grec.c:1144 snd-xrec.c:1732
-msgid "out"
-msgstr "Ausgang"
-
-#: snd-grec.c:1148 snd-xrec.c:1748
-msgid "i"
-msgstr "I"
-
-#: snd-grec.c:1152 snd-xrec.c:1764
-msgid "n"
-msgstr "N"
-
-#: snd-grec.c:1444 snd-xrec.c:2210
-msgid "ton"
-msgstr "Ton"
-
-#: snd-grec.c:1671 snd-xrec.c:2645
-msgid " recording cancelled"
-msgstr " Aufnahme abgebrochen"
-
-#: snd-grec.c:1732 snd-xrec.c:2723
-#, c-format
-msgid ""
-"recorded %s:\n"
-" duration: %.2f\n"
-" srate: %d, chans: %d\n"
-" type: %s, format: %s"
-msgstr ""
-"Aufgenommen %s:\n"
-" Dauer: %.2f\n"
-" Srate: %d, Kanäle: %d\n"
-" Typ: %s, Format: %s"
-
-#: snd-grec.c:1794 snd-xrec.c:2787
-msgid "can't record: you screwed up the output channel number!"
-msgstr "kann nicht aufnehmen: die Anzahl der Ausgabekanäle wurden verändert!"
-
-#: snd-grec.c:1808 snd-xrec.c:2798
-#, c-format
-msgid "chans field (%d) doesn't match file out panel (%d channel%s active)"
-msgstr ""
-"Kanalfeld (%d) stimmt nicht überein mit den Ausgabekanälen (%d channel%s "
-"active)"
-
-#: snd-grec.c:1828 snd-xrec.c:2820
-msgid "can't record: no inputs enabled"
-msgstr "kann nicht aufnehmen: keine Eingabequelle angegeben"
-
-#: snd-grec.c:1861 snd-xrec.c:2854
-msgid "can't record: no output file name supplied"
-msgstr "kann nicht aufnehmen: kein Ausgabedateiname angegeben"
-
-#: snd-grec.c:1869 snd-xfile.c:1442 snd-xfile.c:3025 snd-xfile.c:3563
-#: snd-xfile.c:3972 snd-xfile.c:4314 snd-xrec.c:2874 snd-xrec.c:2987
-msgid "Cancel"
-msgstr "Abbrechen"
-
-#: snd-grec.c:1870 snd-xrec.c:2877
-msgid "Done"
-msgstr "Fertig"
-
-#: snd-gregion.c:110 snd-xregion.c:110
-#, c-format
-msgid "srate: %d"
-msgstr "Srate: %d"
-
-#: snd-gregion.c:112 snd-xregion.c:112
-#, c-format
-msgid "chans: %d"
-msgstr "Kanäle: %d"
-
-#: snd-gregion.c:114 snd-xregion.c:114
-#, c-format
-msgid "length: %.3f"
-msgstr "Länge: %.3f"
-
-#: snd-gregion.c:116 snd-xregion.c:116
-#, c-format
-msgid "maxamp: %.3f"
-msgstr "MaxAmp: %.3f"
-
-#: snd-gregion.c:506 snd-xfile.c:2254 snd-xfile.c:2262 snd-xregion.c:532
-msgid "srate:"
-msgstr "Srate:"
-
-#: snd-gregion.c:511 snd-xregion.c:543
-msgid "chans:"
-msgstr "Kanäle:"
-
-#: snd-gregion.c:516 snd-xregion.c:554
-msgid "length:"
-msgstr "Länge:"
-
-#: snd-gregion.c:521 snd-xregion.c:565
-msgid "maxamp:"
-msgstr "Maxamp:"
-
-#: snd-gregion.c:526 snd-xregion.c:592
-msgid "edit"
-msgstr "bearbeiten"
-
-#: snd-gregion.c:533 snd-xenv.c:1175 snd-xregion.c:598
-msgid "print"
-msgstr "drucken"
-
-#: snd-gregion.c:540 snd-xregion.c:604
-msgid "unlist"
-msgstr "unlist"
-
-#: snd-gsnd.c:1063 snd-xsnd.c:745
-msgid "frequency response"
-msgstr "Frequency Response"
-
-#: snd-gsnd.c:1473 snd-xsnd.c:1866
-msgid "sync"
-msgstr "sync"
-
-#: snd-gsnd.c:1479 snd-xsnd.c:1883
-msgid "unite"
-msgstr "verb"
-
-#: snd-gsnd.c:1583 snd-xsnd.c:2069
-msgid "expand:"
-msgstr "Erweitern:"
-
-#: snd-gsnd.c:1616 snd-xsnd.c:2148
-msgid "contrast:"
-msgstr "Kontrast:"
-
-#: snd-gsnd.c:1649 snd-xsnd.c:2227
-msgid "reverb:"
-msgstr "Reverb:"
-
-#: snd-gsnd.c:1669 snd-xsnd.c:2308
-msgid "len:"
-msgstr "Länge:"
-
-#: snd-gsnd.c:1700 snd-xsnd.c:2367
-msgid "filter:"
-msgstr "Filter:"
-
-#: snd-gsnd.c:1716 snd-xsnd.c:2463
-msgid "hz"
-msgstr "Hz"
-
-#: snd-gsnd.c:1788 snd-xsnd.c:2614
-#, c-format
-msgid "(translated %s)"
-msgstr "(übersetzt %s)"
-
-#: snd-gxcolormaps.c:660
-msgid "black-and-white"
-msgstr "Schwarz-und-Weiß"
-
-#: snd-gxcolormaps.c:661
-msgid "gray"
-msgstr "Grau"
-
-#: snd-gxcolormaps.c:662
-msgid "autumn"
-msgstr "Herbst"
-
-#: snd-gxcolormaps.c:663
-msgid "spring"
-msgstr "Frühling"
-
-#: snd-gxcolormaps.c:664
-msgid "winter"
-msgstr "Winter"
-
-#: snd-gxcolormaps.c:665
-msgid "summer"
-msgstr "Sommer"
-
-#: snd-gxcolormaps.c:666
-msgid "cool"
-msgstr "Kalt"
-
-#: snd-gxcolormaps.c:667
-msgid "copper"
-msgstr "Kupfer"
-
-#: snd-gxcolormaps.c:668
-msgid "flag"
-msgstr "Flagge"
-
-#: snd-gxcolormaps.c:669
-msgid "prism"
-msgstr "Prisma"
-
-#: snd-gxcolormaps.c:670
-msgid "bone"
-msgstr "Elfenbein"
-
-#: snd-gxcolormaps.c:671
-msgid "hot"
-msgstr "Heiß"
-
-#: snd-gxcolormaps.c:672
-msgid "jet"
-msgstr "Jet"
-
-#: snd-gxcolormaps.c:673
-msgid "pink"
-msgstr "Pink"
-
-#: snd-gxcolormaps.c:674
-msgid "rainbow"
-msgstr "Rainbow"
-
-#: snd-help.c:333
-msgid "This is Snd version "
-msgstr "Das ist Snd Version "
-
-#: snd-help.c:345
-msgid " samples"
-msgstr " Sampels"
-
-#: snd-help.c:348
-msgid ", with modules"
-msgstr ", mit Modul"
-
-#: snd-help.c:409
-msgid ""
-"\n"
-" without any graphics system"
-msgstr ""
-"\n"
-" ohne Graphiksystem"
-
-#: snd-help.c:438
-msgid ""
-"\n"
-" compiled as a widget"
-msgstr ""
-"\n"
-" kompiliert als Widget"
-
-#: snd-help.c:441
-msgid ""
-"\n"
-" with large file support"
-msgstr ""
-"\n"
-" mit Large-File Unterstützung"
-
-#: snd-help.c:444
-msgid ""
-"\n"
-" with gettext: "
-msgstr ""
-"\n"
-" mit Gettext: "
-
-#: snd-io.c:199
-#, c-format
-msgid "%s is unreadable: %s?"
-msgstr "%s ist nicht lesbar: %s?"
-
-#: snd-kbd.c:575
-msgid "env:"
-msgstr "Hüll:"
-
-#: snd-kbd.c:584 snd-kbd.c:2010
-msgid "mark:"
-msgstr "Mark:"
-
-#: snd-kbd.c:683 snd-xfind.c:170
-msgid "find"
-msgstr "suchen"
-
-#: snd-kbd.c:708
-#, c-format
-msgid "%s placed at sample <PRId64>"
-msgstr "%s bei Sampel <PRId64> placiert"
-
-#: snd-kbd.c:711
-msgid "There is already a mark at sample <PRId64>"
-msgstr "Es existiert schon eine Markierung bei Sampel <PRId64>"
-
-#: snd-kbd.c:793
-msgid "selection not saved"
-msgstr "Ausschnitt nicht gespeichert"
-
-#: snd-kbd.c:814 snd-kbd.c:874
-#, c-format
-msgid "%s exists: overwrite?"
-msgstr "%s existiert: überschreiben?"
-
-#: snd-kbd.c:854 snd-kbd.c:892
-msgid "channel not saved"
-msgstr "Kanal nicht gespeichert"
-
-#: snd-kbd.c:889
-#, c-format
-msgid "channel %d saved as %s"
-msgstr "Kanal %d gespeichert unter %s"
-
-#: snd-kbd.c:916
-#, c-format
-msgid "can't access %s! temp dir is unchanged"
-msgstr "kann nicht auf %s zugreifen! Das temporäre Verzeichnis ist unverändert"
-
-#: snd-kbd.c:958
-msgid "no previous macro"
-msgstr "kein vorheriges Makro"
-
-#: snd-kbd.c:1240
-msgid "file has changed; overwrite anyway?"
-msgstr "Datei wurde geändert; trotzdem überschreiben?"
-
-#: snd-kbd.c:1289 snd-kbd.c:1481 snd-kbd.c:1982
-msgid "no such mark"
-msgstr "keine solche Markierung"
-
-#: snd-kbd.c:1504 snd-kbd.c:1529
-msgid "no mark at sample <PRId64>"
-msgstr "keine Markierung bei Sampel <PRId64>"
-
-#: snd-kbd.c:1631
-msgid "selection starts at <PRId64>"
-msgstr "Ausschnitt beginnt bei <PRId64>"
-
-#: snd-kbd.c:1675
-#, c-format
-msgid "C-%s undefined"
-msgstr "C-%s undefiniert"
-
-#: snd-kbd.c:1703
-msgid "no macro active?"
-msgstr "kein Makro aktiv?"
-
-#: snd-kbd.c:1706
-msgid "macro name:"
-msgstr "Makroname:"
-
-#: snd-kbd.c:1720
-msgid "insert file:"
-msgstr "Datei einfügen:"
-
-#: snd-kbd.c:1729
-msgid "load:"
-msgstr "laden:"
-
-#: snd-kbd.c:1747
-msgid "mix file:"
-msgstr "Mix-Datei:"
-
-#: snd-kbd.c:1789
-#, c-format
-msgid "C-x C-%s undefined"
-msgstr "C-x C-%s undefiniert"
-
-#: snd-kbd.c:1950
-#, c-format
-msgid "key %s%s undefined"
-msgstr "Taste %s%s undefiniert"
-
-#: snd-kbd.c:1974 snd-kbd.c:2021 snd-kbd.c:2046 snd-kbd.c:2056
-msgid "no active selection"
-msgstr "kein aktivierter Ausschnitt"
-
-#: snd-kbd.c:1985
-msgid "temp dir:"
-msgstr "Temporäres Verzeichnis:"
-
-#: snd-kbd.c:1992
-msgid "can't call macro while it's being defined"
-msgstr "kann Makro während der Definition nicht aufrufen"
-
-#: snd-kbd.c:2080
-msgid "macro definition already in progress"
-msgstr "Makrodefinition ist schon aktiv"
-
-#: snd-kbd.c:2084
-msgid "defining macro..."
-msgstr "definiere Makro..."
-
-#: snd-kbd.c:2103
-#, c-format
-msgid "C-x %s undefined"
-msgstr "C-x %s undefiniert"
-
-#: snd-kbd.c:2109
-#, c-format
-msgid "C-x M-%s undefined"
-msgstr "C-x M-%s undefiniert"
-
-#: snd-kbd.c:2219
-#, c-format
-msgid " function arg should take either zero or one args, not %d"
-msgstr " Funktion sollte entweder kein oder ein Argument benötigen, nicht %d"
-
-#: snd-ladspa.c:254
-msgid "Warning: You have not set "
-msgstr "Warnung: Nicht gesetzt "
-
-#: snd-ladspa.c:254
-msgid " or the environment variable LADSPA_PATH."
-msgstr " oder die Umgebungsvariable LADSPA_PATH."
-
-#: snd-ladspa.c:369 snd-ladspa.c:377
-msgid "Plugins"
-msgstr "Plugins"
-
-#: snd-ladspa.c:607
-msgid "Snd plugins must have at least 1 output"
-msgstr "Snd-Plugins müssen wenigstens eine Ausgabe haben"
-
-#: snd-ladspa.c:611
-#, c-format
-msgid "Ladspa %s required inputs (%d) != sample-readers (%d)"
-msgstr "Ladspa %s erwartete Eingabe (%d) != sample-readers (%d)"
-
-#: snd-ladspa.c:840
-msgid " interrupted"
-msgstr " unterbrochen"
-
-#: snd-main.c:639
-#, c-format
-msgid "%s end of snd options\n"
-msgstr "%s Ende der Snd-Optionen\n"
-
-#: snd-main.c:1121 snd-main.c:1243
-#, c-format
-msgid "can't write %s: %s"
-msgstr "kann %s nicht schreiben: %s"
-
-#: snd-main.c:1342
-#, c-format
-msgid "%s but no directory to add?"
-msgstr "%s aber kein Verzeichnis zum Hinzufügen?"
-
-#: snd-main.c:1365
-#, c-format
-msgid "%s but no file to load?"
-msgstr "%s aber keine Datei zum Laden?"
-
-#: snd-main.c:1387
-#, c-format
-msgid "%s but no form to evaluate?"
-msgstr "%s aber keine Form zum Berechnen?"
-
-#: snd-main.c:1405
-msgid "-title but no title?"
-msgstr "-title aber kein Titel?"
-
-#: snd-main.c:1416
-msgid "-I but no path?"
-msgstr "-I aber kein Pfad?"
-
-#: snd-menu.c:64
-msgid "Add Header"
-msgstr "Header hinzufügen"
-
-#: snd-menu.c:92
-msgid "Hide Y = 0"
-msgstr "Verberge Y = 0"
-
-#: snd-menu.c:95
-msgid "Silent cursor"
-msgstr "Silent Cursor"
-
-#: snd-menu.c:110
-msgid "Hide listener"
-msgstr "Listener verbergen"
-
-#: snd-menu.c:110
-msgid "Show listener"
-msgstr "Listener zeigen"
-
-#: snd-menu.c:111
-msgid "Hide controls"
-msgstr "Regler verbergen"
-
-#: snd-menu.c:244
-#, c-format
-msgid "saved options in %s"
-msgstr "Optionen in %s gespeichert"
-
-#: snd-menu.c:266
-#, c-format
-msgid "saved state in %s"
-msgstr "Status in %s gespeichert"
-
-#: snd-menu.c:271
-msgid "can't save state: save-state-file is null"
-msgstr "kann Save-State nicht speichern: save-state-file ist Null"
-
-#: snd-mix.c:513
-#, c-format
-msgid "mix reader can't find file %s: %s"
-msgstr "Mix-Reader Kann Datei %s nicht finden: %s"
-
-#: snd-mix.c:997
-#, c-format
-msgid "mix save temp: can't close %s: %s!"
-msgstr "kann temporäre Mix-Datei %s nicht schließen: %s!"
-
-#: snd-mix.c:1120
-#, c-format
-msgid "%s mix temp file %s: %s"
-msgstr "%s temporäre Mix-Datei %s: %s"
-
-#: snd-mix.c:1538
-#, c-format
-msgid "%s mix temp file %s: %s\n"
-msgstr "%s temporäre Mix-Datei %s nicht schreiben: %s\n"
-
-#: snd-mix.c:3181 snd-mix.c:7894
-msgid "can't get basic soundcard info!"
-msgstr "kann grundlegende Soundkarteninformationen nicht erhalten!"
-
-#: snd-mix.c:3189 snd-mix.c:7902
-#, c-format
-msgid "samples per channel is %d?"
-msgstr "Samples pro Kanal ist %d?"
-
-#: snd-nogui.c:299
-#, c-format
-msgid "%s has %d channels? "
-msgstr "%s hat %d Kanäle?"
-
-#: snd-nogui.c:301 snd-nogui.c:303
-#, c-format
-msgid "byte swap problem: chans should be %d"
-msgstr "Byte-Swap-Problem: es sollte %d Kanäle sein"
-
-#: snd-print.c:94
-msgid "eps file"
-msgstr "EPS-Datei"
-
-#: snd-print.c:471
-msgid "nothing to print?"
-msgstr "nichts zu drucken?"
-
-#: snd-print.c:500
-#, c-format
-msgid "print %s failed: %s"
-msgstr "drucken von %s fehlgeschlagen: %s"
-
-#: snd-print.c:505
-msgid "print sound: eps file name needed"
-msgstr "Sound drucken: EPS-Dateiname benötigt"
-
-#: snd-print.c:532
-#, c-format
-msgid "print region %s failed: %s"
-msgstr "Region %s drucken fehlgeschlagen: %s"
-
-#: snd-print.c:534
-msgid "print region: eps file name needed"
-msgstr "Region drucken: EPS-Dateiname benötigt"
-
-#: snd-print.c:550
-#, c-format
-msgid "print env %s failed: %s"
-msgstr "Hüllk. %s drucken fehlgeschlagen: %s"
-
-#: snd-print.c:552
-msgid "print envelope: eps file name needed"
-msgstr "Hüllkurve drucken: EPS-Dateiname benötigt"
-
-#: snd-rec.c:116
-msgid "Digital Out"
-msgstr "Digital Out"
-
-#: snd-rec.c:117
-msgid "Line Out"
-msgstr "Line Out"
-
-#: snd-rec.c:119
-msgid "Output"
-msgstr "Ausgang"
-
-#: snd-rec.c:121
-msgid "Speakers"
-msgstr "Lautsprecher"
-
-#: snd-rec.c:122
-msgid "Adat In"
-msgstr "Adat In"
-
-#: snd-rec.c:123
-msgid "Aes In"
-msgstr "Aes In"
-
-#: snd-rec.c:125
-msgid "Analog In"
-msgstr "Analog In"
-
-#: snd-rec.c:127
-msgid "Line In"
-msgstr "Line In"
-
-#: snd-rec.c:129
-msgid "Microphone"
-msgstr "Mikrophon"
-
-#: snd-rec.c:130
-msgid "Digital In"
-msgstr "Digital In"
-
-#: snd-rec.c:131
-msgid "Adat Out"
-msgstr "Adat Out"
-
-#: snd-rec.c:132
-msgid "Aes Out"
-msgstr "Aes Out"
-
-#: snd-rec.c:133
-msgid "Tone"
-msgstr "Ton"
-
-#: snd-rec.c:134
-msgid "Mixer"
-msgstr "Mixer"
-
-#: snd-rec.c:135
-msgid "Aux Input"
-msgstr "Aux Eingang"
-
-#: snd-rec.c:136
-msgid "CD"
-msgstr "CD"
-
-#: snd-rec.c:137
-msgid "Aux Output"
-msgstr "Aux Ausgang"
-
-#: snd-rec.c:138
-msgid "S/PDIF In"
-msgstr "S/PDIF In"
-
-#: snd-rec.c:139
-msgid "S/PDIF Out"
-msgstr "S/PDIF Out"
-
-#: snd-rec.c:190
-#, c-format
-msgid "unknown audio device: %d"
-msgstr "unbekanntes Audiogerät: %d"
-
-#: snd-rec.c:558 snd-rec.c:576
-#, c-format
-msgid "gain (slider) number too high: %d > %d"
-msgstr "Gain-(Slider)-Nummer zu hoch: %d > %d"
-
-#: snd-rec.c:606
-msgid "set input source: "
-msgstr "setzte die Eingangsquelle: "
-
-#: snd-rec.c:802 snd-rec.c:914 snd-rec.c:1060
-msgid "no inputs?: "
-msgstr "keine Eingänge?: "
-
-#: snd-rec.c:824 snd-rec.c:921 snd-rec.c:1093
-msgid "open device: "
-msgstr "Gerät öffnen: "
-
-#: snd-rec.c:884 snd-rec.c:927 snd-rec.c:1106
-msgid "open output: "
-msgstr "Ausgang öffnen: "
-
-#: snd-rec.c:1540
-msgid "no audio devices available"
-msgstr "kein Audiogerät vorhanden"
-
-#: snd-rec.c:1558
-msgid "no audio input devices available"
-msgstr "kein Audioeingangsgerät vorhanden"
-
-#: snd-region.c:406
-msgid "can't read region file!!"
-msgstr "kann Region-Datei nicht lesen!!"
-
-#: snd-region.c:769
-#, c-format
-msgid "can't write region temp file %s: %s"
-msgstr "kann temporäre Region-Datei %s nicht schreiben: %s"
-
-#: snd-region.c:775
-#, c-format
-msgid "can't read region's original sound? %s: %s"
-msgstr "kann den originalen Sound der Region nicht lesen? %s: %s"
-
-#: snd-region.c:820
-#, c-format
-msgid "%s region temp file %s: %s"
-msgstr "%s temporäre Region-Datei %s: %s"
-
-#: snd-region.c:891
-#, c-format
-msgid "sequestering region %d..."
-msgstr "Abtrennen der Region %d..."
-
-#: snd-region.c:1026
-#, c-format
-msgid "region %d already being edited"
-msgstr "Region %d ist schon bearbeitet"
-
-#: snd-region.c:1048
-#, c-format
-msgid "edit region: can't open region %d temp sound %s: %s!"
-msgstr ""
-"Region bearbeiten: kann für Region %d die temporäre Datei %s nicht öffnen: %"
-"s!"
-
-#: snd-region.c:1052
-#, c-format
-msgid "edit region: can't save region %d in temp file (%s: %s)"
-msgstr ""
-"Region bearbeiten: kann Region %d nicht in temporärer Datei speichern (%s: %"
-"s)"
-
-#: snd-region.c:1057
-#, c-format
-msgid "edit region: no region at position %d!"
-msgstr "Region bearbeiten: keine Region bei Position %d!"
-
-#: snd-region.c:1103
-#, c-format
-msgid "can't find edited region temp file (%s: %s)"
-msgstr "kann editierte temporäre Region-Datei nicht finden (%s: %s)"
-
-#: snd-region.c:1104
-#, c-format
-msgid "can't make region temp file (%s: %s)"
-msgstr "kann für Region keine temporäre Datei erzeugen (%s: %s)"
-
-#: snd-region.c:1153
-msgid "not enough space to save region? -- need <PRId64> bytes"
-msgstr "nicht genug Platz, um Region zu speichern? -- benötige <PRId64> Bytes"
-
-#: snd-select.c:870
-msgid "save selection stopped"
-msgstr "Speichern des Ausschnitts angehalten"
-
-#: snd-select.c:1189 snd-snd.c:3482
-msgid "can't write this header type:"
-msgstr "kann diesen Headertyp nicht schreiben:"
-
-#: snd-select.c:1194 snd-snd.c:3495 snd-snd.c:4874
-msgid "can't write this combination of header type and data format:"
-msgstr "kann Kombination von Headertyp und Datenformat nicht schreiben:"
-
-#: snd-select.c:1200 snd-snd.c:3458
-msgid "srate can't be <= 0"
-msgstr "Srate kann nicht <= 0 sein"
-
-#: snd-sig.c:156 snd-sig.c:206
-msgid "no selection"
-msgstr "kein Ausschnitt"
-
-#: snd-sig.c:245
-#, c-format
-msgid "convolve: impulse response file %s chans: %d"
-msgstr "Convolve: Impulse-Response-Datei %s mit %d Kanälen"
-
-#: snd-sig.c:248
-#, c-format
-msgid "convolve: impulse response file %s is empty"
-msgstr "Convolve: Impulse-Response-Datei %s ist leer"
-
-#: snd-sig.c:295
-#, c-format
-msgid "convolve: save chan (%s[%d]) in %s hit error: %s\n"
-msgstr "Convolve: speichern des Kanals (%s[%d]) in %s mit Fehler: %s\n"
-
-#: snd-sig.c:308
-#, c-format
-msgid "convolve: open saved chan (%s[%d]) file %s hit error: %s\n"
-msgstr ""
-"Convolve: öffnen des gespeicherten Kanals (%s[%d]) von Datei %s mit Fehler: %"
-"s\n"
-
-#: snd-sig.c:328
-#, c-format
-msgid "convolve: open filter file %s hit error: %s\n"
-msgstr "Convolve: öffnen der Filterdatei %s mit Fehler: %s\n"
-
-#: snd-sig.c:362
-#, c-format
-msgid "convolve: close filter file %s hit error: %s\n"
-msgstr "Convolve: schließen der Filterdatei %s mit Fehler: %s\n"
-
-#: snd-sig.c:372
-#, c-format
-msgid "convolve: close saved chan (%s[%d]) file %s hit error: %s\n"
-msgstr ""
-"Convolve: schließen des gespeicherten Kanals (%s[%d]) von Datei %s mit "
-"Fehler: %s\n"
-
-#: snd-sig.c:646 snd-sig.c:664
-#, c-format
-msgid "%s "
-msgstr "%s "
-
-#: snd-sig.c:646 snd-sig.c:664
-#, c-format
-msgid " temp file %s: %s\n"
-msgstr "temporäre Datei %s: %s\n"
-
-#: snd-sig.c:727
-msgid "swap interrupted"
-msgstr "swap wurde unterbrochen"
-
-#: snd-sig.c:844 snd-sig.c:1279 snd-sig.c:1386 snd-sig.c:1567 snd-sig.c:1819
-#: snd-sig.c:2265 snd-sig.c:2628 snd-sig.c:3115
-#, c-format
-msgid "%s %s temp file %s: %s\n"
-msgstr "%s %s temporäre Datei %s: %s\n"
-
-#: snd-sig.c:1077
-msgid "src interrupted"
-msgstr "Src unterbrochen"
-
-#: snd-sig.c:1266
-#, c-format
-msgid "%s can't read %s[%d] channel data!"
-msgstr "%s kann %s[%d] Kanal-Daten nicht lesen!"
-
-#: snd-sig.c:1445
-msgid "filter interrupted"
-msgstr "Filter unterbrochen"
-
-#: snd-sig.c:2060
-#, c-format
-msgid "%s: can't handle %s generators"
-msgstr "%s: kann nicht %s Generatoren verwenden"
-
-#: snd-sig.c:2208
-msgid "filter stopped"
-msgstr "Filter angehalten"
-
-#: snd-sig.c:2400
-msgid "reverse stopped"
-msgstr "Reverse angehalten"
-
-#: snd-sig.c:3102
-#, c-format
-msgid "%s: can't read %s[%d] channel data!"
-msgstr "%s: kann %s[%d] Kanaldaten nicht lesen!"
-
-#: snd-sig.c:3225
-#, c-format
-msgid "%s temp file %s: %s\n"
-msgstr "%s temporäre Datei %s: %s\n"
-
-#: snd-sig.c:3890 snd-sig.c:4041
-#, c-format
-msgid "%s stopped at sample <PRId64>"
-msgstr "%s bei Sampel <PRId64> angehalten"
-
-#: snd-snd.c:16
-#, c-format
-msgid "%s %s: %s"
-msgstr "%s %s: %s"
-
-#: snd-snd.c:41
-#, c-format
-msgid "%s: can't write %s header with %s data format"
-msgstr "%s: kann %s Header nicht mit %s Datenformat schreiben"
-
-#: snd-snd.c:1639
-msgid "apply controls: no changes to apply!"
-msgstr "Regler übernehmen: keine Änderungen!"
-
-#: snd-snd.c:1746
-#, c-format
-msgid "%s apply temp file %s: %s\n"
-msgstr "%s: verwenden der temporären Datei %s: %s\n"
-
-#: snd-snd.c:3225
-#, c-format
-msgid "%s (index %d) is write-protected"
-msgstr "%s (Index %d) ist schreibgeschützt"
-
-#: snd-trans.c:37
-#, c-format
-msgid "no space left on device: %s"
-msgstr "kein Platz übrig auf Platte: %s"
-
-#: snd-trans.c:44
-#, c-format
-msgid "only <PRId64> bytes left on device (we need %d bytes)"
-msgstr ""
-"es verbleiben nur <PRId64> Bytes auf der Platte (%d Bytes werden benötigt)"
-
-#: snd-trans.c:52
-#, c-format
-msgid "write error (wrote %d of requested %d bytes): %s"
-msgstr "Schreibfehler (%d der geforderten %d Bytes geschrieben): %s"
-
-#: snd-trans.c:420
-#, c-format
-msgid ""
-"read_mus10: can't translate Mus10 file %s:\n"
-" mode = %d\n"
-msgstr ""
-"read_mus10: kann nicht Mus10-Datei %s übersetzen:\n"
-" Modus = %d\n"
-
-#: snd-trans.c:866
-#, c-format
-msgid ""
-"read_dvi_adpcm: can't translate DVI ADPCM file %s: chans: %d and bits: %d\n"
-msgstr ""
-"read_dvi_adpcm: kann DVI-ADPCM-Datei %s nicht übersetzen: Kanäle: %d und "
-"Bits: %d\n"
-
-#: snd-trans.c:944
-#, c-format
-msgid "read_oki_adpcm: can't translate Oki ADPCM file %s: chans: %d\n"
-msgstr "read_oki_adpcm: kann Oki-ADOCM-Datei %s nicht übersetzen: Kanäle: %d\n"
-
-#: snd-trans.c:1316
-#, c-format
-msgid "read_g72x_adpcm: can't translate G72x file %s: chans: %d\n"
-msgstr "read_g72x_adpcm: kann G72x-Datei %s nicht übersetzen: Kanäle: %d\n"
-
-#: snd-trans.c:1484
-#, c-format
-msgid ""
-"can't translate %s\n"
-" (%s header: %s (0x%x) data format)\n"
-msgstr ""
-"kann nicht %s übersetzen\n"
-" (%s Header: %s (0x%x) Datenformat)\n"
-
-#: snd-utils.c:330
-#, c-format
-msgid "can't access %s: %s"
-msgstr "kann auf %s nicht zugreifen: %s"
-
-#: snd-utils.c:336
-msgid "not enough space left on disk: only <PRId64> kbytes available"
-msgstr "nicht genug Platz auf der Platte: nur <PRId64> KBytes vorhanden"
-
-#: snd-xdraw.c:594
-msgid "can't even allocate black?!?"
-msgstr "kann nicht mal Schwarz allocieren?!?"
-
-#: snd-xdraw.c:1397
-msgid "percent of spectrum"
-msgstr "Prozent des Spektrums"
-
-#: snd-xen.c:633 snd-xen.c:665
-#, c-format
-msgid "%s function (%s arg %d) should take %d args, not %d"
-msgstr "%s Funktion (%s arg %d) sollte %d args bekommen, nicht %d"
-
-#: snd-xen.c:652
-#, c-format
-msgid ""
-"%s function (%s arg %d) should take %d argument%s, but instead requires %d"
-msgstr ""
-"%s Funktion (%s arg %d) sollte %d arg%s bekommen, doch statt dessen benötigt "
-"sie %d"
-
-#: snd-xen.c:655
-#, c-format
-msgid ""
-"%s function (%s arg %d) should accept at least %d argument%s, but instead "
-"accepts only %d"
-msgstr ""
-"%s Funktion (%s arg %d) sollte wenigstens %d arg%s akzeptieren, doch statt "
-"dessen akzeptiert sie nur %d"
-
-#: snd-xen.c:659
-#, c-format
-msgid "%s function (%s arg %d) should take no args, not %d"
-msgstr "%s Funktion (%s arg %d) sollte keine args bekommen, nicht %d"
-
-#: snd-xen.c:1174
-#, c-format
-msgid "can't load %s: %s"
-msgstr "kann %s nicht laden: %s"
-
-#: snd-xen.c:1478
-#, c-format
-msgid "%s: directory %s is not writable: %s"
-msgstr "%s: Verzeichnis %s ist nicht beschreibbar: %s"
-
-#: snd-xen.c:2012 snd-xen.c:2026
-#, c-format
-msgid "%s: %.3f is invalid"
-msgstr "%s: %.3f ist ungültig"
-
-#: snd-xen.c:2015 snd-xen.c:2022
-#, c-format
-msgid "%s is not a number"
-msgstr "%s ist keine Zahl"
-
-#: snd-xen.c:2043 snd-xen.c:2057
-#, c-format
-msgid "%s: %d is invalid"
-msgstr "%s: %d ist ungülgig"
-
-#: snd-xen.c:2046 snd-xen.c:2053 snd-xen.c:2077 snd-xen.c:2084
-#, c-format
-msgid "%s: %s is not a number"
-msgstr "%s: %s ist keine Zahl"
-
-#: snd-xen.c:2074 snd-xen.c:2088
-#, c-format
-msgid "%s: <PRId64> is invalid"
-msgstr "%s: <PRId64> ist ungültig"
-
-#: snd-xenv.c:853
-msgid "Apply"
-msgstr "Übernehmen"
-
-#: snd-xenv.c:866
-msgid "envelope editor"
-msgstr "Hüllkurveneditor"
-
-#: snd-xenv.c:1163
-msgid "save"
-msgstr "speichern"
-
-#: snd-xenv.c:1191
-msgid "undo"
-msgstr "rückgängig"
-
-#: snd-xenv.c:1203
-msgid "redo"
-msgstr "wiederholen"
-
-#: snd-xenv.c:1219
-msgid "revert"
-msgstr "wiederherstellen"
-
-#: snd-xfile.c:1134 snd-xfile.c:3022
-msgid "files listed:"
-msgstr "Dateien gelistet:"
-
-#: snd-xfile.c:1417
-msgid "open read-only:"
-msgstr "öffnen zum Nurlesen"
-
-#: snd-xfile.c:1555
-msgid "Mix Sound"
-msgstr "Mix Sound"
-
-#: snd-xfile.c:1555
-msgid "mix in:"
-msgstr "Mix in:"
-
-#: snd-xfile.c:1644
-msgid "Insert Sound"
-msgstr "Sound einfügen"
-
-#: snd-xfile.c:2140
-msgid "header"
-msgstr "Header"
-
-#: snd-xfile.c:2194
-msgid "data"
-msgstr "Daten"
-
-#: snd-xfile.c:2294 snd-xfile.c:2303
-msgid "channels:"
-msgstr "Kanäle:"
-
-#: snd-xfile.c:2294 snd-xfile.c:2303
-msgid "extract channel:"
-msgstr "extra Kanal:"
-
-#: snd-xfile.c:2344
-msgid "data location:"
-msgstr "Datenposition:"
-
-#: snd-xfile.c:2758
-#, c-format
-msgid "%s exists%s. To overwrite it, click 'DoIt'"
-msgstr "%s, existiert%s. Überschreiben mit 'DoIt'"
-
-#: snd-xfile.c:3251
-msgid "selected region"
-msgstr "ausgewählte Region"
-
-#: snd-xfile.c:5373
-msgid "amp env"
-msgstr "Amp-Hüll:"
-
-#: snd-xfile.c:5495
-msgid "New Viewer"
-msgstr "Neue Ansicht"
-
-#: snd-xfile.c:6048
-msgid "Clear"
-msgstr "Leeren"
-
-#: snd-xfind.c:161 snd-xmix.c:630 snd-xmix.c:1748
-msgid "Previous"
-msgstr "Vorher"
-
-#: snd-xfind.c:186 snd-xmix.c:639 snd-xmix.c:1758
-msgid "Next"
-msgstr "Nächste"
-
-#: snd-xhelp.c:329
-msgid "Forward"
-msgstr "Forwärts"
-
-#: snd-xhelp.c:357
-msgid "Back"
-msgstr "Zurück"
-
-#: snd-xhelp.c:457
-msgid "related topics:"
-msgstr "ähnliche Themen"
-
-#: snd-xmain.c:622
-#, c-format
-msgid "can't get color %s -- will use white\n"
-msgstr "kann Farbe %s nicht finden -- benutze Weiß\n"
-
-#: snd-xmain.c:627
-#, c-format
-msgid "can't get color %s -- will use black\n"
-msgstr "kann Farbe %s nicht finden -- benutze Schwarz\n"
-
-#: snd-xmain.c:860
-#, c-format
-msgid "no RGB visual with desired depth\n"
-msgstr "kein RGB-Visual mit der gewünschten Tiefe\n"
-
-#: snd-xmain.c:866
-#, c-format
-msgid "could not create rendering context\n"
-msgstr "konnte nicht den Rendering-Kontext erzeugen\n"
-
-#: snd-xmain.c:926
-#, c-format
-msgid "can't find peaks font %s"
-msgstr "kann Peaks Font %s nicht finden"
-
-#: snd-xmain.c:930
-#, c-format
-msgid "can't find tiny font %s"
-msgstr "kann Tiny Font %s nicht finden"
-
-#: snd-xmain.c:935
-#, c-format
-msgid "can't find bold peaks font %s"
-msgstr "kann Font für Bold Peaks %s nicht finden"
-
-#: snd-xmain.c:940
-#, c-format
-msgid "can't find axis label font %s"
-msgstr "kann Font für Achsenlabel %s nicht finden"
-
-#: snd-xmain.c:945
-#, c-format
-msgid "can't find axis numbers font %s"
-msgstr "kann Font für Achsennummerierung %s nicht finden"
-
-#: snd-xmain.c:949
-#, c-format
-msgid "can't find listener font %s"
-msgstr "kann Font für Listener %s nicht finden"
-
-#: snd-xmenu.c:477 snd-xmenu.c:774
-msgid "Equalize Panes"
-msgstr "Panes abgleichen"
-
-#: snd-xmix.c:1080
-msgid "no active mixes"
-msgstr "kein Mix aktiv"
-
-#: snd-xrec.c:898
-#, c-format
-msgid "trigger: %.3f"
-msgstr "Trigger: %.3f"
-
-#: snd-xrec.c:2261
-msgid "mon"
-msgstr "Monitor"
-
-#: snd-xrec.c:2640
-#, c-format
-msgid "Record Reset: can't close %s: %s!"
-msgstr "Aufnahme zurücksetzen: kann %s nicht schließen: %s!"
-
-#: snd-xrec.c:2709
-#, c-format
-msgid "Record Done: can't close %s: %s (%d)!"
-msgstr "Aufnahme fertig: kann %s nicht schließen: %s (%d)!"
-
-#: snd-xregion.c:301
-msgid "region"
-msgstr "Region"
-
-#: snd-xsnd.c:2662
-msgid "none"
-msgstr "nichts"
-
-#: snd.c:381
-#, c-format
-msgid "Snd is a sound editor; see http://ccrma.stanford.edu/software/snd/.\n"
-msgstr ""
-"Snd ist ein Soundeditor; siehe http://www-ccrma.stanford.edu/software/snd/.\n"
diff --git a/po/en@boldquot.header b/po/en@boldquot.header
deleted file mode 100644
index fedb6a0..0000000
--- a/po/en@boldquot.header
+++ /dev/null
@@ -1,25 +0,0 @@
-# All this catalog "translates" are quotation characters.
-# The msgids must be ASCII and therefore cannot contain real quotation
-# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
-# and double quote (0x22). These substitutes look strange; see
-# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
-#
-# This catalog translates grave accent (0x60) and apostrophe (0x27) to
-# left single quotation mark (U+2018) and right single quotation mark (U+2019).
-# It also translates pairs of apostrophe (0x27) to
-# left single quotation mark (U+2018) and right single quotation mark (U+2019)
-# and pairs of quotation mark (0x22) to
-# left double quotation mark (U+201C) and right double quotation mark (U+201D).
-#
-# When output to an UTF-8 terminal, the quotation characters appear perfectly.
-# When output to an ISO-8859-1 terminal, the single quotation marks are
-# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
-# grave/acute accent (by libiconv), and the double quotation marks are
-# transliterated to 0x22.
-# When output to an ASCII terminal, the single quotation marks are
-# transliterated to apostrophes, and the double quotation marks are
-# transliterated to 0x22.
-#
-# This catalog furthermore displays the text between the quotation marks in
-# bold face, assuming the VT100/XTerm escape sequences.
-#
diff --git a/po/en@quot.header b/po/en@quot.header
deleted file mode 100644
index a9647fc..0000000
--- a/po/en@quot.header
+++ /dev/null
@@ -1,22 +0,0 @@
-# All this catalog "translates" are quotation characters.
-# The msgids must be ASCII and therefore cannot contain real quotation
-# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
-# and double quote (0x22). These substitutes look strange; see
-# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
-#
-# This catalog translates grave accent (0x60) and apostrophe (0x27) to
-# left single quotation mark (U+2018) and right single quotation mark (U+2019).
-# It also translates pairs of apostrophe (0x27) to
-# left single quotation mark (U+2018) and right single quotation mark (U+2019)
-# and pairs of quotation mark (0x22) to
-# left double quotation mark (U+201C) and right double quotation mark (U+201D).
-#
-# When output to an UTF-8 terminal, the quotation characters appear perfectly.
-# When output to an ISO-8859-1 terminal, the single quotation marks are
-# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
-# grave/acute accent (by libiconv), and the double quotation marks are
-# transliterated to 0x22.
-# When output to an ASCII terminal, the single quotation marks are
-# transliterated to apostrophes, and the double quotation marks are
-# transliterated to 0x22.
-#
diff --git a/po/insert-header.sin b/po/insert-header.sin
deleted file mode 100644
index b26de01..0000000
--- a/po/insert-header.sin
+++ /dev/null
@@ -1,23 +0,0 @@
-# Sed script that inserts the file called HEADER before the header entry.
-#
-# At each occurrence of a line starting with "msgid ", we execute the following
-# commands. At the first occurrence, insert the file. At the following
-# occurrences, do nothing. The distinction between the first and the following
-# occurrences is achieved by looking at the hold space.
-/^msgid /{
-x
-# Test if the hold space is empty.
-s/m/m/
-ta
-# Yes it was empty. First occurrence. Read the file.
-r HEADER
-# Output the file's contents by reading the next line. But don't lose the
-# current line while doing this.
-g
-N
-bb
-:a
-# The hold space was nonempty. Following occurrences. Do nothing.
-x
-:b
-}
diff --git a/po/quot.sed b/po/quot.sed
deleted file mode 100644
index 0122c46..0000000
--- a/po/quot.sed
+++ /dev/null
@@ -1,6 +0,0 @@
-s/"\([^"]*\)"/“\1â€/g
-s/`\([^`']*\)'/‘\1’/g
-s/ '\([^`']*\)' / ‘\1’ /g
-s/ '\([^`']*\)'$/ ‘\1’/g
-s/^'\([^`']*\)' /‘\1’ /g
-s/“â€/""/g
diff --git a/po/remove-potcdate.sin b/po/remove-potcdate.sin
deleted file mode 100644
index 2436c49..0000000
--- a/po/remove-potcdate.sin
+++ /dev/null
@@ -1,19 +0,0 @@
-# Sed script that remove the POT-Creation-Date line in the header entry
-# from a POT file.
-#
-# The distinction between the first and the following occurrences of the
-# pattern is achieved by looking at the hold space.
-/^"POT-Creation-Date: .*"$/{
-x
-# Test if the hold space is empty.
-s/P/P/
-ta
-# Yes it was empty. First occurrence. Remove the line.
-g
-d
-bb
-:a
-# The hold space was nonempty. Following occurrences. Do nothing.
-x
-:b
-}
diff --git a/po/snd.pot b/po/snd.pot
deleted file mode 100644
index 3791971..0000000
--- a/po/snd.pot
+++ /dev/null
@@ -1,2382 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-04 10:31-0800\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: snd-chn.c:638 snd-chn.c:8265
-msgid "time (beats)"
-msgstr ""
-
-#: snd-chn.c:639 snd-chn.c:8266
-msgid "time (measures)"
-msgstr ""
-
-#: snd-chn.c:640 snd-chn.c:8267
-msgid "time (samples)"
-msgstr ""
-
-#: snd-chn.c:641 snd-chn.c:8268
-msgid "time (percent)"
-msgstr ""
-
-#: snd-chn.c:642 snd-chn.c:2974 snd-chn.c:8269 snd-edits.c:265 snd-fft.c:679
-#: snd-fft.c:696
-msgid "time"
-msgstr ""
-
-#: snd-chn.c:735 snd-edits.c:260
-msgid "(no data)"
-msgstr ""
-
-#: snd-chn.c:1349
-msgid "(len: "
-msgstr ""
-
-#: snd-chn.c:2617 snd-chn.c:3141
-msgid "stopped"
-msgstr ""
-
-#: snd-chn.c:4475 snd-chn.c:4491
-#, c-format
-msgid "cursor at %s (sample "
-msgstr ""
-
-#: snd-chn.c:4482
-#, c-format
-msgid "chan %d, cursor at %s (sample "
-msgstr ""
-
-#: snd-chn.c:4746
-#, c-format
-msgid "(%.1f Hz: %.*f%s, %.*f radians (unscaled: %.*f)"
-msgstr ""
-
-#: snd-chn.c:4750 snd-chn.c:4761 snd-chn.c:4792 snd-genv.c:1144 snd-gfft.c:953
-#: snd-gmix.c:914 snd-grec.c:371 snd-gsnd.c:2060 snd-xenv.c:1156
-#: snd-xfft.c:1626 snd-xmix.c:951 snd-xrec.c:392 snd-xsnd.c:2767
-msgid "dB"
-msgstr ""
-
-#: snd-chn.c:4756
-#, c-format
-msgid "(%.1f%s: %.*f%s (unscaled: %.*f)"
-msgstr ""
-
-#: snd-chn.c:4758
-msgid " samps"
-msgstr ""
-
-#: snd-chn.c:4758
-msgid " Hz"
-msgstr ""
-
-#: snd-chn.c:4788
-#, c-format
-msgid "(time: %.2f, freq: %.1f, val: %.*f%s (raw: %.*f))"
-msgstr ""
-
-#: snd-chn.c:5213 snd-chn.c:5219
-#, c-format
-msgid "mark %d at sample "
-msgstr ""
-
-#: snd-chn.c:8416
-#, c-format
-msgid ""
-"Snd: fft peaks (%s)\n"
-"\n"
-msgstr ""
-
-#: snd-chn.c:8473
-#, c-format
-msgid ": chan %d"
-msgstr ""
-
-#: snd-chn.c:8474
-#, c-format
-msgid ", fft "
-msgstr ""
-
-#: snd-dac.c:1878
-#, c-format
-msgid "can't play %s: %s"
-msgstr ""
-
-#: snd-dac.c:2108 snd-dac.c:2206 snd-dac.c:2249
-#, c-format
-msgid "folding %d chans into %d "
-msgstr ""
-
-#: snd-data.c:1078
-msgid ""
-"\n"
-"max amp: "
-msgstr ""
-
-#: snd-data.c:1115
-#, c-format
-msgid ""
-"srate: %d\n"
-"chans: %d\n"
-"length: %.3f ("
-msgstr ""
-
-#: snd-data.c:1120 snd-gmenu.c:831 snd-gmenu.c:832 snd-xmenu.c:713
-msgid "samples"
-msgstr ""
-
-#: snd-data.c:1120
-msgid "frames"
-msgstr ""
-
-#: snd-data.c:1125
-msgid ""
-"\n"
-"comment: "
-msgstr ""
-
-#: snd-edits.c:2837
-#, c-format
-msgid "no such edit: %s[%d]: %d (this channel has %d edit%s"
-msgstr ""
-
-#: snd-edits.c:2890
-#, c-format
-msgid "can't save channel %d as %s (%s is write-protected)"
-msgstr ""
-
-#: snd-edits.c:4742
-#, c-format
-msgid "%s has no data"
-msgstr ""
-
-#: snd-edits.c:4769
-#, c-format
-msgid "can't read %s"
-msgstr ""
-
-#: snd-edits.c:6114 snd-file.c:1348 snd-file.c:1999 snd-snd.c:348
-#, c-format
-msgid "%s no longer exists!"
-msgstr ""
-
-#: snd-edits.c:6123 snd-xsnd.c:1814
-#, c-format
-msgid "%s has changed since we last read it!"
-msgstr ""
-
-#: snd-edits.c:6733
-#, c-format
-msgid "can't save channel as %s (%s is write-protected)"
-msgstr ""
-
-#: snd-edits.c:6791
-#, c-format
-msgid "can't save edits; %s has disappeared!"
-msgstr ""
-
-#: snd-edits.c:8565
-msgid "maxamp check interrupted..."
-msgstr ""
-
-#: snd-env.c:1298
-#, c-format
-msgid "x axis points not increasing: %s"
-msgstr ""
-
-#: snd-env.c:1300 snd-env.c:1339
-#, c-format
-msgid "odd length envelope? %s"
-msgstr ""
-
-#: snd-env.c:1302
-#, c-format
-msgid "%s is not a list"
-msgstr ""
-
-#: snd-fft.c:628 snd-fft.c:678 snd-fft.c:682
-msgid "frequency"
-msgstr ""
-
-#: snd-fft.c:632
-msgid "Haar spectrum"
-msgstr ""
-
-#: snd-fft.c:635
-msgid "Lag time"
-msgstr ""
-
-#: snd-fft.c:680
-msgid "wavelength?"
-msgstr ""
-
-#: snd-fft.c:681
-msgid "reversed time?"
-msgstr ""
-
-#: snd-fft.c:1772
-#, c-format
-msgid "can't open convolution temp file %s: %s"
-msgstr ""
-
-#: snd-fft.c:1795
-#, c-format
-msgid "not enough memory for convolve of %s (filter size: "
-msgstr ""
-
-#: snd-fft.c:1862
-#, c-format
-msgid "convolve: can't close temp file %s!"
-msgstr ""
-
-#: snd-file.c:559 snd-file.c:592 snd-file.c:640
-#, c-format
-msgid "closedir %s failed (%s)!"
-msgstr ""
-
-#: snd-file.c:1022
-#, c-format
-msgid "can't write translation temp file! (%s)"
-msgstr ""
-
-#: snd-file.c:1148 snd-file.c:1152
-#, c-format
-msgid "No header found for %s"
-msgstr ""
-
-#: snd-file.c:1257
-#, c-format
-msgid "%s does not seem to be a sound file?"
-msgstr ""
-
-#: snd-file.c:1259
-#, c-format
-msgid "can't find file %s: %s"
-msgstr ""
-
-#: snd-file.c:1320
-#, c-format
-msgid "%s is read-protected!"
-msgstr ""
-
-#: snd-file.c:2755 snd-file.c:2762
-#, c-format
-msgid "%s is write-protected"
-msgstr ""
-
-#: snd-file.c:4146
-#, c-format
-msgid "%s mixed in at "
-msgstr ""
-
-#: snd-file.c:4147
-msgid "selected files mixed in at "
-msgstr ""
-
-#: snd-file.c:4230
-#, c-format
-msgid "%s inserted at "
-msgstr ""
-
-#: snd-file.c:4231
-msgid "selected files inserted at "
-msgstr ""
-
-#: snd-file.c:5014
-msgid "sound is write-protected"
-msgstr ""
-
-#: snd-file.c:5070
-#, c-format
-msgid "changing %s's header from %s to aifc to accommodate loop info"
-msgstr ""
-
-#: snd-find.c:131
-msgid "search in progress"
-msgstr ""
-
-#: snd-find.c:201
-msgid "search stopped"
-msgstr ""
-
-#: snd-find.c:205
-#, c-format
-msgid "%s: not found"
-msgstr ""
-
-#: snd-find.c:254 snd-find.c:349 snd-find.c:450
-msgid "search already in progress"
-msgstr ""
-
-#: snd-gchn.c:835 snd-xchn.c:1026
-msgid "f"
-msgstr ""
-
-#: snd-gchn.c:842 snd-xchn.c:1031
-msgid "w"
-msgstr ""
-
-#: snd-gdraw.c:1111
-msgid "Color"
-msgstr ""
-
-#: snd-gdraw.c:1122 snd-genv.c:265 snd-gfft.c:870 snd-gfile.c:404
-#: snd-gfile.c:3449 snd-gfile.c:3753 snd-gfile.c:4131 snd-gfile.c:5253
-#: snd-ghelp.c:291 snd-glistener.c:63 snd-gmix.c:726 snd-gprefs.c:1638
-#: snd-gprint.c:289 snd-grec.c:334 snd-gregion.c:452 snd-xdraw.c:959
-#: snd-xenv.c:256 snd-xenv.c:958 snd-xfft.c:1024 snd-xfile.c:1269
-#: snd-xfile.c:1606 snd-xfile.c:3222 snd-xfile.c:3794 snd-xfile.c:4230
-#: snd-xfile.c:4557 snd-xfile.c:5826 snd-xfind.c:121 snd-xfind.c:181
-#: snd-xhelp.c:355 snd-xmix.c:667 snd-xprefs.c:1797 snd-xprint.c:202
-#: snd-xrec.c:303 snd-xregion.c:444
-msgid "Go Away"
-msgstr ""
-
-#: snd-gdraw.c:1183 snd-xdraw.c:1114
-msgid "light"
-msgstr ""
-
-#: snd-gdraw.c:1188 snd-xdraw.c:1124
-msgid "dark"
-msgstr ""
-
-#: snd-gdraw.c:1223
-msgid "data cutoff:"
-msgstr ""
-
-#: snd-gdraw.c:1238 snd-xdraw.c:1174
-msgid "invert"
-msgstr ""
-
-#: snd-gdraw.c:1280
-msgid "x angle:"
-msgstr ""
-
-#: snd-gdraw.c:1301
-msgid "y angle:"
-msgstr ""
-
-#: snd-gdraw.c:1322
-msgid "z angle:"
-msgstr ""
-
-#: snd-gdraw.c:1349
-msgid "x scale:"
-msgstr ""
-
-#: snd-gdraw.c:1370
-msgid "y scale:"
-msgstr ""
-
-#: snd-gdraw.c:1392
-msgid "z scale:"
-msgstr ""
-
-#: snd-gdraw.c:1419
-msgid "hop: "
-msgstr ""
-
-#: snd-genv.c:15 snd-genv.c:1110 snd-xenv.c:13 snd-xenv.c:1120
-msgid "amp env:"
-msgstr ""
-
-#: snd-genv.c:15 snd-xenv.c:13
-msgid "flt env:"
-msgstr ""
-
-#: snd-genv.c:15 snd-xenv.c:13
-msgid "src env:"
-msgstr ""
-
-#: snd-genv.c:197 snd-gmenu.c:135 snd-gprint.c:206 snd-xenv.c:189
-#: snd-xfind.c:115 snd-xmenu.c:151 snd-xprint.c:112
-msgid "Stop"
-msgstr ""
-
-#: snd-genv.c:282 snd-xenv.c:274
-msgid "noname"
-msgstr ""
-
-#: snd-genv.c:410 snd-xenv.c:458
-msgid "unnamed"
-msgstr ""
-
-#: snd-genv.c:458 snd-genv.c:608 snd-genv.c:996 snd-xenv.c:501 snd-xenv.c:623
-#: snd-xenv.c:1258
-msgid "view envs"
-msgstr ""
-
-#: snd-genv.c:608 snd-xenv.c:623
-msgid "edit env"
-msgstr ""
-
-#: snd-genv.c:916 snd-gmenu.c:635 snd-gmenu.c:636 snd-xenv.c:960
-#: snd-xmenu.c:604
-msgid "Edit Envelope"
-msgstr ""
-
-#: snd-genv.c:948 snd-xenv.c:995
-msgid "Undo&Apply"
-msgstr ""
-
-#: snd-genv.c:951 snd-gfile.c:3451 snd-gfile.c:3758 snd-gfile.c:5255
-#: snd-xdraw.c:961 snd-xenv.c:1002 snd-xfile.c:3820 snd-xfile.c:4591
-#: snd-xfile.c:5856
-msgid "Reset"
-msgstr ""
-
-#: snd-genv.c:1006
-msgid " save "
-msgstr ""
-
-#: snd-genv.c:1012
-msgid " print "
-msgstr ""
-
-#: snd-genv.c:1022
-msgid "revert "
-msgstr ""
-
-#: snd-genv.c:1028 snd-xenv.c:1340
-msgid "delete"
-msgstr ""
-
-#: snd-genv.c:1038
-msgid " undo "
-msgstr ""
-
-#: snd-genv.c:1044
-msgid " redo "
-msgstr ""
-
-#: snd-genv.c:1054 snd-xenv.c:1357
-msgid "amp"
-msgstr ""
-
-#: snd-genv.c:1060 snd-xenv.c:1370
-msgid "flt"
-msgstr ""
-
-#: snd-genv.c:1066 snd-xenv.c:1382
-msgid "src"
-msgstr ""
-
-#: snd-genv.c:1076 snd-xenv.c:1399
-msgid "lin"
-msgstr ""
-
-#: snd-genv.c:1082 snd-xenv.c:1412
-msgid "exp"
-msgstr ""
-
-#: snd-genv.c:1092 snd-gfft.c:968 snd-xenv.c:1427 snd-xfft.c:1719
-msgid "selection"
-msgstr ""
-
-#: snd-genv.c:1098 snd-xenv.c:1454
-msgid "envs:"
-msgstr ""
-
-#: snd-genv.c:1134 snd-gmix.c:904 snd-xenv.c:1182 snd-xmix.c:944
-msgid "clip"
-msgstr ""
-
-#: snd-genv.c:1139 snd-gmix.c:909 snd-xenv.c:1169 snd-xmix.c:948
-msgid "wave"
-msgstr ""
-
-#: snd-genv.c:1149 snd-xenv.c:1033
-msgid "exp:"
-msgstr ""
-
-#: snd-gfft.c:308 snd-xfft.c:1438
-msgid "type"
-msgstr ""
-
-#: snd-gfft.c:859 snd-gmenu.c:953 snd-gmenu.c:954 snd-xfft.c:1026
-#: snd-xfft.c:1039 snd-xmenu.c:788
-msgid "Transform Options"
-msgstr ""
-
-#: snd-gfft.c:872 snd-gmenu.c:707 snd-gmenu.c:708 snd-xfft.c:1027
-#: snd-xmenu.c:644
-msgid "Color/Orientation"
-msgstr ""
-
-#: snd-gfft.c:904 snd-xfft.c:1482
-msgid "size"
-msgstr ""
-
-#: snd-gfft.c:933 snd-xfft.c:1539
-msgid "single transform"
-msgstr ""
-
-#: snd-gfft.c:938 snd-xfft.c:1555
-msgid "sonogram"
-msgstr ""
-
-#: snd-gfft.c:943 snd-xfft.c:1571
-msgid "spectrogram"
-msgstr ""
-
-#: snd-gfft.c:948 snd-xfft.c:1587
-msgid "peaks"
-msgstr ""
-
-#: snd-gfft.c:958 snd-xfft.c:1665
-msgid "log freq"
-msgstr ""
-
-#: snd-gfft.c:963 snd-xfft.c:1704
-msgid "normalize"
-msgstr ""
-
-#: snd-gfft.c:973 snd-xfft.c:1735
-msgid "with phases"
-msgstr ""
-
-#: snd-gfft.c:982
-msgid "max peaks:"
-msgstr ""
-
-#: snd-gfft.c:999
-msgid "min dB:"
-msgstr ""
-
-#: snd-gfft.c:1016
-msgid "log freq start:"
-msgstr ""
-
-#: snd-gfft.c:1037 snd-xfft.c:1329 snd-xfft.c:1774
-msgid "window"
-msgstr ""
-
-#: snd-gfft.c:1042 snd-xfft.c:1385
-msgid "wavelet"
-msgstr ""
-
-#: snd-gfile.c:406 snd-xfile.c:1601 snd-xfile.c:3340
-msgid "Mkdir"
-msgstr ""
-
-#: snd-gfile.c:411 snd-xfile.c:3328
-msgid "Extract"
-msgstr ""
-
-#: snd-gfile.c:1377 snd-xfile.c:934
-msgid "sound files only"
-msgstr ""
-
-#: snd-gfile.c:1383 snd-xfile.c:938
-msgid "play selected sound"
-msgstr ""
-
-#: snd-gfile.c:1520 snd-gfile.c:1680 snd-gfile.c:1778 snd-xfile.c:1497
-#: snd-xfile.c:1652 snd-xfile.c:1751
-msgid "no filename given"
-msgstr ""
-
-#: snd-gfile.c:1554 snd-gfile.c:1714 snd-gfile.c:1815 snd-xfile.c:1534
-#: snd-xfile.c:1690 snd-xfile.c:1791
-#, c-format
-msgid "%s is a directory"
-msgstr ""
-
-#: snd-gfile.c:1598 snd-gfile.c:2922 snd-xfile.c:1552 snd-xfile.c:3151
-#, c-format
-msgid "can't make %s: %s"
-msgstr ""
-
-#: snd-gfile.c:1620 snd-gfile.c:1636 snd-gfile.c:1637 snd-gmenu.c:502
-#: snd-gmenu.c:503 snd-gmenu.c:656 snd-gmenu.c:657 snd-xfile.c:1577
-#: snd-xmenu.c:535 snd-xmenu.c:621
-msgid "View"
-msgstr ""
-
-#: snd-gfile.c:1620 snd-gfile.c:1636 snd-gfile.c:1637 snd-gmenu.c:401
-#: snd-gmenu.c:402 snd-xfile.c:1582 snd-xfile.c:5955 snd-xmenu.c:392
-#: snd-xmenu.c:493
-msgid "Open"
-msgstr ""
-
-#: snd-gfile.c:1621
-msgid "view:"
-msgstr ""
-
-#: snd-gfile.c:1621 snd-xfile.c:1583
-msgid "open:"
-msgstr ""
-
-#: snd-gfile.c:1707 snd-kbd.c:954 snd-xfile.c:1682
-#, c-format
-msgid "%s mixed in at cursor"
-msgstr ""
-
-#: snd-gfile.c:1727 snd-gfile.c:5491 snd-gmenu.c:460 snd-gmenu.c:461
-#: snd-gmenu.c:1042 snd-gmenu.c:1043 snd-gregion.c:457 snd-xfile.c:6016
-#: snd-xmenu.c:394 snd-xmenu.c:516 snd-xmenu.c:842 snd-xregion.c:469
-msgid "Mix"
-msgstr ""
-
-#: snd-gfile.c:1727 snd-gmix.c:769 snd-xmix.c:737
-msgid "mix:"
-msgstr ""
-
-#: snd-gfile.c:1808 snd-kbd.c:967 snd-xfile.c:1783
-#, c-format
-msgid "%s inserted at cursor"
-msgstr ""
-
-#: snd-gfile.c:1827 snd-gfile.c:5492 snd-gmenu.c:468 snd-gmenu.c:469
-#: snd-gmenu.c:1084 snd-gmenu.c:1085 snd-gregion.c:454 snd-xfile.c:6030
-#: snd-xmenu.c:395 snd-xmenu.c:520 snd-xmenu.c:863 snd-xregion.c:446
-msgid "Insert"
-msgstr ""
-
-#: snd-gfile.c:1827 snd-xfile.c:1812
-msgid "insert:"
-msgstr ""
-
-#: snd-gfile.c:2331
-msgid "header:"
-msgstr ""
-
-#: snd-gfile.c:2338
-msgid "data format:"
-msgstr ""
-
-#: snd-gfile.c:2354
-msgid " srate:"
-msgstr ""
-
-#: snd-gfile.c:2405
-msgid " channels:"
-msgstr ""
-
-#: snd-gfile.c:2405
-msgid " extract channel:"
-msgstr ""
-
-#: snd-gfile.c:2420
-msgid "location:"
-msgstr ""
-
-#: snd-gfile.c:2432 snd-xfile.c:2560
-msgid "samples:"
-msgstr ""
-
-#: snd-gfile.c:2461 snd-xfile.c:2616
-msgid "comment:"
-msgstr ""
-
-#: snd-gfile.c:2549 snd-gmenu.c:436 snd-gmenu.c:437 snd-gmenu.c:1036
-#: snd-gmenu.c:1037 snd-gmenu.c:1284 snd-gmenu.c:1285 snd-xfile.c:2736
-#: snd-xfile.c:3210 snd-xfile.c:4232 snd-xmenu.c:393 snd-xmenu.c:504
-#: snd-xmenu.c:839 snd-xmenu.c:1005 snd-xprefs.c:1796
-msgid "Save"
-msgstr ""
-
-#: snd-gfile.c:2620 snd-kbd.c:857 snd-xfile.c:2805
-msgid "no selection to save"
-msgstr ""
-
-#: snd-gfile.c:2621 snd-xfile.c:2806
-msgid "can't extract: no selection"
-msgstr ""
-
-#: snd-gfile.c:2631 snd-xfile.c:2816
-msgid "no region to save"
-msgstr ""
-
-#: snd-gfile.c:2640 snd-xfile.c:2825
-msgid "nothing to save"
-msgstr ""
-
-#: snd-gfile.c:2641 snd-xfile.c:2826
-msgid "nothing to extract"
-msgstr ""
-
-#: snd-gfile.c:2652 snd-xfile.c:2837
-msgid "can't save: no file name given"
-msgstr ""
-
-#: snd-gfile.c:2653 snd-xfile.c:2838
-msgid "can't extract: no file name given"
-msgstr ""
-
-#: snd-gfile.c:2714 snd-xfile.c:2903
-#, c-format
-msgid "%s cancelled by %s"
-msgstr ""
-
-#: snd-gfile.c:2731 snd-xfile.c:2921
-#, c-format
-msgid "can't overwrite %s (it is write-protected)"
-msgstr ""
-
-#: snd-gfile.c:2753
-#, c-format
-msgid "%s exists%s. To overwrite it, click '%s'"
-msgstr ""
-
-#: snd-gfile.c:2761 snd-gfile.c:3629 snd-xfile.c:2951 snd-xfile.c:3669
-msgid "DoIt"
-msgstr ""
-
-#: snd-gfile.c:2934 snd-gfile.c:2962 snd-gfile.c:2965 snd-gfile.c:3011
-#: snd-xfile.c:3131 snd-xfile.c:3134 snd-xfile.c:3207
-msgid "save as:"
-msgstr ""
-
-#: snd-gfile.c:2953 snd-xfile.c:3122
-msgid "save as (file write-protected?):"
-msgstr ""
-
-#: snd-gfile.c:2956 snd-xfile.c:3125
-msgid "save as (overwriting):"
-msgstr ""
-
-#: snd-gfile.c:2961 snd-xfile.c:3130
-msgid "save as (no such directory?):"
-msgstr ""
-
-#: snd-gfile.c:3005 snd-xfile.c:3214 snd-xfile.c:3368
-#, c-format
-msgid "save %s"
-msgstr ""
-
-#: snd-gfile.c:3011 snd-gmenu.c:444 snd-gmenu.c:445 snd-xmenu.c:508
-#: snd-xregion.c:464
-msgid "Save as"
-msgstr ""
-
-#: snd-gfile.c:3112 snd-xfile.c:3431
-msgid "current selection"
-msgstr ""
-
-#: snd-gfile.c:3141
-msgid "current region"
-msgstr ""
-
-#: snd-gfile.c:3437 snd-xfile.c:4561
-msgid "No header on file"
-msgstr ""
-
-#: snd-gfile.c:3556 snd-gfile.c:3755 snd-xfile.c:3587 snd-xfile.c:3795
-#: snd-xfile.c:4559
-msgid "Ok"
-msgstr ""
-
-#: snd-gfile.c:3604 snd-xfile.c:3641
-msgid "new sound needs a file name ('New file:' field is empty)"
-msgstr ""
-
-#: snd-gfile.c:3627 snd-xfile.c:3665
-#, c-format
-msgid "%s exists. If you want to overwrite it, click 'DoIt'"
-msgstr ""
-
-#: snd-gfile.c:3676 snd-xfile.c:3728
-#, c-format
-msgid "new-%d.%s"
-msgstr ""
-
-#: snd-gfile.c:3742 snd-xfile.c:3792
-msgid "New file"
-msgstr ""
-
-#: snd-gfile.c:3770 snd-xfile.c:3833
-msgid "New file:"
-msgstr ""
-
-#: snd-gfile.c:3917 snd-xfile.c:4004
-#, c-format
-msgid "Add header to (write-protected) %s"
-msgstr ""
-
-#: snd-gfile.c:3918 snd-xfile.c:4005
-#, c-format
-msgid "Edit header of (write-protected) %s"
-msgstr ""
-
-#: snd-gfile.c:3925 snd-xfile.c:4012
-#, c-format
-msgid "Add header to %s"
-msgstr ""
-
-#: snd-gfile.c:3926 snd-xfile.c:4013
-#, c-format
-msgid "Edit header of %s"
-msgstr ""
-
-#: snd-gfile.c:4140 snd-gmenu.c:642 snd-gmenu.c:643 snd-menu.c:59
-#: snd-xfile.c:4233 snd-xmenu.c:608
-msgid "Edit Header"
-msgstr ""
-
-#: snd-gfile.c:4237 snd-gmenu.c:1292 snd-gmenu.c:1293 snd-xmenu.c:1009
-msgid "Info"
-msgstr ""
-
-#: snd-gfile.c:5235 snd-gmenu.c:681 snd-gmenu.c:682 snd-xfile.c:5832
-#: snd-xmenu.c:273 snd-xmenu.c:633
-msgid "Files"
-msgstr ""
-
-#: snd-gfile.c:5248 snd-xfile.c:5828
-msgid "New Viewer"
-msgstr ""
-
-#: snd-gfile.c:5302 snd-xfile.c:6415
-msgid "files"
-msgstr ""
-
-#: snd-gfile.c:5315 snd-gregion.c:501 snd-gsnd.c:1803 snd-xfile.c:6436
-#: snd-xregion.c:523 snd-xsnd.c:2142
-msgid "play"
-msgstr ""
-
-#: snd-gfile.c:5324 snd-xfile.c:6465
-msgid "a..z"
-msgstr ""
-
-#: snd-gfile.c:5325 snd-xfile.c:6466
-msgid "z..a"
-msgstr ""
-
-#: snd-gfile.c:5326 snd-xfile.c:6467
-msgid "new..old"
-msgstr ""
-
-#: snd-gfile.c:5327 snd-xfile.c:6468
-msgid "old..new"
-msgstr ""
-
-#: snd-gfile.c:5328 snd-xfile.c:6469
-msgid "small..big"
-msgstr ""
-
-#: snd-gfile.c:5329 snd-xfile.c:6470
-msgid "big..small"
-msgstr ""
-
-#: snd-gfile.c:5353 snd-xfile.c:6461
-msgid "sort"
-msgstr ""
-
-#: snd-gfile.c:5407 snd-xfile.c:6325
-msgid "add:"
-msgstr ""
-
-#: snd-gfile.c:5420
-msgid "(no files selected)"
-msgstr ""
-
-#: snd-gfile.c:5454 snd-xfile.c:5970
-msgid "Unlist"
-msgstr ""
-
-#: snd-gfile.c:5506 snd-xfile.c:6036
-msgid "at cursor"
-msgstr ""
-
-#: snd-gfile.c:5512 snd-xfile.c:6053
-msgid "at end"
-msgstr ""
-
-#: snd-gfile.c:5518 snd-xfile.c:6069
-msgid "at beginning"
-msgstr ""
-
-#: snd-gfile.c:5536 snd-xfile.c:6085
-msgid "at sample"
-msgstr ""
-
-#: snd-gfile.c:5545 snd-xfile.c:6119
-msgid "at mark"
-msgstr ""
-
-#: snd-gfile.c:5566 snd-gmix.c:867 snd-gsnd.c:1845 snd-xfile.c:6165
-#: snd-xmix.c:856 snd-xsnd.c:2212
-msgid "amp:"
-msgstr ""
-
-#: snd-gfile.c:5594 snd-gmix.c:828 snd-gsnd.c:1873 snd-xfile.c:6218
-#: snd-xmix.c:800 snd-xsnd.c:2266
-msgid "speed:"
-msgstr ""
-
-#: snd-ghelp.c:280 snd-gmenu.c:988 snd-gmenu.c:989 snd-xdraw.c:960
-#: snd-xenv.c:959 snd-xfft.c:1025 snd-xfile.c:3793 snd-xfile.c:4231
-#: snd-xfile.c:4558 snd-xfile.c:5827 snd-xhelp.c:353 snd-xmenu.c:816
-#: snd-xmix.c:669 snd-xprefs.c:1793 snd-xprint.c:201 snd-xrec.c:304
-#: snd-xregion.c:445
-msgid "Help"
-msgstr ""
-
-#: snd-ghelp.c:314
-msgid "related topics"
-msgstr ""
-
-#: snd-ghelp.c:321 snd-xhelp.c:453
-msgid "help topic:"
-msgstr ""
-
-#: snd-glistener.c:52
-msgid "Completions"
-msgstr ""
-
-#: snd-gmain.c:567
-#, c-format
-msgid "can't get %s -- will use white\n"
-msgstr ""
-
-#: snd-gmain.c:572
-#, c-format
-msgid "can't get %s -- will use black\n"
-msgstr ""
-
-#: snd-gmain.c:748
-#, c-format
-msgid "can't find tiny font: %s"
-msgstr ""
-
-#: snd-gmain.c:752
-#, c-format
-msgid "can't find axis label font: %s"
-msgstr ""
-
-#: snd-gmain.c:756
-#, c-format
-msgid "can't find axis numbers font: %s"
-msgstr ""
-
-#: snd-gmain.c:760
-#, c-format
-msgid "can't find peaks font: %s"
-msgstr ""
-
-#: snd-gmain.c:764
-#, c-format
-msgid "can't find bold peaks font: %s"
-msgstr ""
-
-#: snd-gmain.c:767
-#, c-format
-msgid "can't find listener font: %s"
-msgstr ""
-
-#: snd-gmain.c:1086 snd-nogui.c:746 snd-xmain.c:1152
-msgid "Caught seg fault (will try to continue):\n"
-msgstr ""
-
-#: snd-gmain.c:1089 snd-nogui.c:749 snd-xmain.c:1155
-msgid "Caught seg fault while trying to exit.\n"
-msgstr ""
-
-#: snd-gmain.c:1097 snd-nogui.c:757 snd-xmain.c:1164
-msgid "Caught top level error (will try to continue):\n"
-msgstr ""
-
-#: snd-gmenu.c:144 snd-gmenu.c:597 snd-gmenu.c:598 snd-xmenu.c:160
-#: snd-xmenu.c:404 snd-xmenu.c:591
-msgid "Play Selection"
-msgstr ""
-
-#: snd-gmenu.c:174 snd-gmenu.c:195 snd-xmenu.c:193 snd-xmenu.c:218
-msgid "new viewer"
-msgstr ""
-
-#: snd-gmenu.c:392 snd-gmenu.c:393 snd-xmenu.c:491
-msgid "File"
-msgstr ""
-
-#: snd-gmenu.c:409 snd-gmenu.c:410 snd-xmenu.c:87
-msgid "Open recent"
-msgstr ""
-
-#: snd-gmenu.c:421 snd-gmenu.c:422 snd-xmenu.c:401 snd-xmenu.c:497
-msgid "Close"
-msgstr ""
-
-#: snd-gmenu.c:429 snd-gmenu.c:430 snd-xmenu.c:501
-msgid "Close all"
-msgstr ""
-
-#: snd-gmenu.c:452 snd-gmenu.c:453 snd-xmenu.c:512 snd-xprefs.c:1794
-#: snd-xprefs.c:1822
-msgid "Revert"
-msgstr ""
-
-#: snd-gmenu.c:476 snd-gmenu.c:477 snd-xfile.c:6373 snd-xmenu.c:524
-msgid "Update"
-msgstr ""
-
-#: snd-gmenu.c:484 snd-gmenu.c:485 snd-xmenu.c:528
-msgid "New"
-msgstr ""
-
-#: snd-gmenu.c:491 snd-gmenu.c:492 snd-gmenu.c:1024 snd-gmenu.c:1025
-#: snd-grec.c:65 snd-grec.c:324 snd-grec.c:337 snd-grec.c:339 snd-xmenu.c:532
-#: snd-xmenu.c:833 snd-xrec.c:73 snd-xrec.c:305 snd-xrec.c:306 snd-xrec.c:320
-msgid "Record"
-msgstr ""
-
-#: snd-gmenu.c:509 snd-gmenu.c:510 snd-gprint.c:261 snd-gprint.c:278
-#: snd-gprint.c:291 snd-xmenu.c:539 snd-xprint.c:173 snd-xprint.c:200
-#: snd-xprint.c:203
-msgid "Print"
-msgstr ""
-
-#: snd-gmenu.c:523 snd-gmenu.c:524 snd-xmenu.c:548
-msgid "Exit"
-msgstr ""
-
-#: snd-gmenu.c:532 snd-gmenu.c:533 snd-xmenu.c:561
-msgid "Edit"
-msgstr ""
-
-#: snd-gmenu.c:541 snd-gmenu.c:542 snd-gmenu.c:1268 snd-gmenu.c:1269
-#: snd-xmenu.c:396 snd-xmenu.c:563 snd-xmenu.c:997
-msgid "Undo"
-msgstr ""
-
-#: snd-gmenu.c:549 snd-gmenu.c:550 snd-gmenu.c:1276 snd-gmenu.c:1277
-#: snd-xmenu.c:397 snd-xmenu.c:567 snd-xmenu.c:1001
-msgid "Redo"
-msgstr ""
-
-#: snd-gmenu.c:558 snd-gmenu.c:559 snd-xfind.c:183 snd-xmenu.c:411
-#: snd-xmenu.c:572
-msgid "Find"
-msgstr ""
-
-#: snd-gmenu.c:573 snd-gmenu.c:574 snd-xmenu.c:579
-msgid "Delete Selection"
-msgstr ""
-
-#: snd-gmenu.c:581 snd-gmenu.c:582 snd-xmenu.c:402 snd-xmenu.c:583
-msgid "Insert Selection"
-msgstr ""
-
-#: snd-gmenu.c:589 snd-gmenu.c:590 snd-xmenu.c:403 snd-xmenu.c:587
-msgid "Mix Selection"
-msgstr ""
-
-#: snd-gmenu.c:609 snd-gmenu.c:610 snd-xmenu.c:405 snd-xmenu.c:595
-msgid "Save Selection"
-msgstr ""
-
-#: snd-gmenu.c:617 snd-gmenu.c:618 snd-xmenu.c:599
-msgid "Select all"
-msgstr ""
-
-#: snd-gmenu.c:665 snd-gmenu.c:666 snd-menu.c:115 snd-xmenu.c:623
-msgid "Show controls"
-msgstr ""
-
-#: snd-gmenu.c:673 snd-gmenu.c:674 snd-xmenu.c:628
-msgid "Open listener"
-msgstr ""
-
-#: snd-gmenu.c:692 snd-gmenu.c:693 snd-gmix.c:715 snd-xmenu.c:637
-#: snd-xmix.c:670 snd-xmix.c:682
-msgid "Mixes"
-msgstr ""
-
-#: snd-gmenu.c:699 snd-gmenu.c:700 snd-gmenu.c:1128 snd-gmenu.c:1129
-#: snd-gregion.c:441 snd-xmenu.c:640 snd-xmenu.c:886 snd-xregion.c:447
-#: snd-xregion.c:459
-msgid "Regions"
-msgstr ""
-
-#: snd-gmenu.c:721 snd-gmenu.c:722 snd-xmenu.c:653
-msgid "Graph style"
-msgstr ""
-
-#: snd-gmenu.c:730 snd-gmenu.c:731 snd-xmenu.c:655
-msgid "lines"
-msgstr ""
-
-#: snd-gmenu.c:737 snd-gmenu.c:738 snd-xmenu.c:659
-msgid "dots"
-msgstr ""
-
-#: snd-gmenu.c:744 snd-gmenu.c:745 snd-xmenu.c:663
-msgid "filled"
-msgstr ""
-
-#: snd-gmenu.c:751 snd-gmenu.c:752 snd-xmenu.c:667
-msgid "dots and lines"
-msgstr ""
-
-#: snd-gmenu.c:758 snd-gmenu.c:759 snd-xmenu.c:671
-msgid "lollipops"
-msgstr ""
-
-#: snd-gmenu.c:765 snd-gmenu.c:766 snd-menu.c:95 snd-xmenu.c:675
-msgid "Verbose cursor"
-msgstr ""
-
-#: snd-gmenu.c:771 snd-gmenu.c:772 snd-menu.c:98 snd-xmenu.c:678
-msgid "With inset graph"
-msgstr ""
-
-#: snd-gmenu.c:778 snd-gmenu.c:779 snd-xmenu.c:685
-msgid "Channel style"
-msgstr ""
-
-#: snd-gmenu.c:787 snd-gmenu.c:788 snd-xmenu.c:687
-msgid "separate"
-msgstr ""
-
-#: snd-gmenu.c:794 snd-gmenu.c:795 snd-xmenu.c:691
-msgid "combined"
-msgstr ""
-
-#: snd-gmenu.c:801 snd-gmenu.c:802 snd-xmenu.c:695
-msgid "superimposed"
-msgstr ""
-
-#: snd-gmenu.c:809 snd-gmenu.c:810 snd-menu.c:92 snd-xmenu.c:699
-msgid "Show Y = 0"
-msgstr ""
-
-#: snd-gmenu.c:815 snd-gmenu.c:816 snd-xmenu.c:707
-msgid "X axis units"
-msgstr ""
-
-#: snd-gmenu.c:824 snd-gmenu.c:825 snd-xmenu.c:709
-msgid "seconds"
-msgstr ""
-
-#: snd-gmenu.c:837 snd-gmenu.c:838 snd-xmenu.c:716
-msgid "clock"
-msgstr ""
-
-#: snd-gmenu.c:843 snd-gmenu.c:844 snd-xmenu.c:719
-msgid "percentage"
-msgstr ""
-
-#: snd-gmenu.c:849 snd-gmenu.c:850 snd-xmenu.c:722
-msgid "beats"
-msgstr ""
-
-#: snd-gmenu.c:855 snd-gmenu.c:856 snd-xmenu.c:725
-msgid "measures"
-msgstr ""
-
-#: snd-gmenu.c:862 snd-gmenu.c:863 snd-xmenu.c:733
-msgid "Axes"
-msgstr ""
-
-#: snd-gmenu.c:871 snd-gmenu.c:872 snd-xmenu.c:735
-msgid "no axes"
-msgstr ""
-
-#: snd-gmenu.c:877 snd-gmenu.c:878 snd-xmenu.c:739
-msgid "both axes"
-msgstr ""
-
-#: snd-gmenu.c:883 snd-gmenu.c:884 snd-xmenu.c:743
-msgid "just x axis"
-msgstr ""
-
-#: snd-gmenu.c:889 snd-gmenu.c:890 snd-xmenu.c:747
-msgid "both axes, no labels"
-msgstr ""
-
-#: snd-gmenu.c:895 snd-gmenu.c:896 snd-xmenu.c:751
-msgid "just x axis, no label"
-msgstr ""
-
-#: snd-gmenu.c:901 snd-xmenu.c:755
-msgid "bare x axis"
-msgstr ""
-
-#: snd-gmenu.c:902
-msgid "base x axis"
-msgstr ""
-
-#: snd-gmenu.c:907 snd-gmenu.c:908 snd-xmenu.c:763
-msgid "Zoom focus"
-msgstr ""
-
-#: snd-gmenu.c:917 snd-gmenu.c:918 snd-xmenu.c:765
-msgid "window left edge"
-msgstr ""
-
-#: snd-gmenu.c:923 snd-gmenu.c:924 snd-xmenu.c:768
-msgid "window right edge"
-msgstr ""
-
-#: snd-gmenu.c:929 snd-gmenu.c:930 snd-xmenu.c:771
-msgid "window midpoint"
-msgstr ""
-
-#: snd-gmenu.c:935 snd-gmenu.c:936 snd-xmenu.c:774
-msgid "cursor or selection"
-msgstr ""
-
-#: snd-gmenu.c:944 snd-gmenu.c:945 snd-xmenu.c:786
-msgid "Options"
-msgstr ""
-
-#: snd-gmenu.c:960 snd-gmenu.c:961 snd-xmenu.c:794
-msgid "Save options"
-msgstr ""
-
-#: snd-gmenu.c:966 snd-gmenu.c:967 snd-xmenu.c:798
-msgid "Save session"
-msgstr ""
-
-#: snd-gmenu.c:979 snd-gmenu.c:980 snd-gprefs.c:1615 snd-xmenu.c:804
-#: snd-xprefs.c:1792
-msgid "Preferences"
-msgstr ""
-
-#: snd-gmenu.c:998 snd-gmenu.c:999 snd-xmenu.c:818
-msgid "About Snd"
-msgstr ""
-
-#: snd-gmenu.c:1005 snd-gmenu.c:1006 snd-xmenu.c:823
-msgid "Customization"
-msgstr ""
-
-#: snd-gmenu.c:1012 snd-gmenu.c:1013 snd-xmenu.c:827
-msgid "Control Panel"
-msgstr ""
-
-#: snd-gmenu.c:1018 snd-gmenu.c:1019 snd-xmenu.c:830
-msgid "Key bindings"
-msgstr ""
-
-#: snd-gmenu.c:1030 snd-gmenu.c:1031 snd-gmenu.c:1169 snd-gmenu.c:1189
-#: snd-gmenu.c:1256 snd-gmenu.c:1257 snd-xmenu.c:836 snd-xmenu.c:925
-#: snd-xmenu.c:944 snd-xmenu.c:993
-msgid "Play"
-msgstr ""
-
-#: snd-gmenu.c:1048 snd-gmenu.c:1049 snd-xmenu.c:845
-msgid "Resample"
-msgstr ""
-
-#: snd-gmenu.c:1054 snd-gmenu.c:1055 snd-xmenu.c:848
-msgid "FFT"
-msgstr ""
-
-#: snd-gmenu.c:1060 snd-gmenu.c:1061 snd-xmenu.c:851
-msgid "Filter"
-msgstr ""
-
-#: snd-gmenu.c:1066 snd-gmenu.c:1067 snd-xmenu.c:854
-msgid "Reverb"
-msgstr ""
-
-#: snd-gmenu.c:1072 snd-gmenu.c:1073 snd-xmenu.c:857
-msgid "Envelope"
-msgstr ""
-
-#: snd-gmenu.c:1078 snd-gmenu.c:1079 snd-xmenu.c:860
-msgid "Mark"
-msgstr ""
-
-#: snd-gmenu.c:1090 snd-gmenu.c:1091 snd-xmenu.c:866
-msgid "Delete"
-msgstr ""
-
-#: snd-gmenu.c:1096 snd-gmenu.c:1097 snd-xmenu.c:869
-msgid "Undo and redo"
-msgstr ""
-
-#: snd-gmenu.c:1103 snd-gmenu.c:1104 snd-xmenu.c:873
-msgid "Search"
-msgstr ""
-
-#: snd-gmenu.c:1110 snd-gmenu.c:1111 snd-xmenu.c:877
-msgid "Sync and Unite"
-msgstr ""
-
-#: snd-gmenu.c:1116 snd-gmenu.c:1117 snd-xmenu.c:880
-msgid "Headers and Data"
-msgstr ""
-
-#: snd-gmenu.c:1122 snd-gmenu.c:1123 snd-xmenu.c:883
-msgid "Debugging"
-msgstr ""
-
-#: snd-gmenu.c:1134 snd-gmenu.c:1135 snd-xmenu.c:889
-msgid "Selections"
-msgstr ""
-
-#: snd-gmenu.c:1140 snd-gmenu.c:1141 snd-xmenu.c:892
-msgid "Colors"
-msgstr ""
-
-#: snd-gmenu.c:1178 snd-xmenu.c:934
-msgid "Stop playing"
-msgstr ""
-
-#: snd-gmenu.c:1300 snd-gmenu.c:1301 snd-xmenu.c:1013
-msgid "Apply controls"
-msgstr ""
-
-#: snd-gmenu.c:1308 snd-gmenu.c:1309 snd-xmenu.c:1017
-msgid "Reset controls"
-msgstr ""
-
-#: snd-gmix.c:321 snd-xmix.c:283
-msgid "mix env"
-msgstr ""
-
-#: snd-gmix.c:728
-msgid "Apply Env"
-msgstr ""
-
-#: snd-gmix.c:734 snd-xmix.c:668
-msgid "Copy mix"
-msgstr ""
-
-#: snd-gmix.c:809 snd-xfind.c:207 snd-xmix.c:778
-msgid "Next"
-msgstr ""
-
-#: snd-gmix.c:816 snd-xfind.c:182 snd-xmix.c:770
-msgid "Previous"
-msgstr ""
-
-#: snd-gmix.c:919 snd-gsnd.c:1809 snd-xmix.c:956 snd-xsnd.c:2157
-msgid "sync"
-msgstr ""
-
-#: snd-gprint.c:208 snd-xprint.c:114
-#, c-format
-msgid "printing %s"
-msgstr ""
-
-#: snd-gprint.c:235 snd-xprint.c:147
-msgid "can't print!"
-msgstr ""
-
-#: snd-gprint.c:262 snd-gprint.c:338 snd-xprint.c:174 snd-xprint.c:327
-#, c-format
-msgid "print %s"
-msgstr ""
-
-#: snd-gprint.c:312 snd-kbd.c:1788 snd-xprint.c:215 snd-xprint.c:238
-msgid "eps file:"
-msgstr ""
-
-#: snd-gprint.c:319 snd-xprint.c:255
-msgid "direct to printer"
-msgstr ""
-
-#: snd-gprint.c:340 snd-xprint.c:330
-msgid "print env"
-msgstr ""
-
-#: snd-grec.c:199 snd-xrec.c:176
-msgid "Done"
-msgstr ""
-
-#: snd-grec.c:363 snd-kbd.c:1805 snd-kbd.c:1875 snd-kbd.c:2189 snd-xrec.c:401
-msgid "file:"
-msgstr ""
-
-#: snd-gregion.c:118 snd-xregion.c:115
-#, c-format
-msgid "srate: %d"
-msgstr ""
-
-#: snd-gregion.c:120 snd-xregion.c:117
-#, c-format
-msgid "chans: %d"
-msgstr ""
-
-#: snd-gregion.c:122 snd-xregion.c:119
-#, c-format
-msgid "length: %.3f"
-msgstr ""
-
-#: snd-gregion.c:124 snd-xregion.c:121
-#, c-format
-msgid "maxamp: %.3f"
-msgstr ""
-
-#: snd-gregion.c:553 snd-xfile.c:2443 snd-xfile.c:2451 snd-xregion.c:577
-msgid "srate:"
-msgstr ""
-
-#: snd-gregion.c:558 snd-xregion.c:588
-msgid "chans:"
-msgstr ""
-
-#: snd-gregion.c:563 snd-xregion.c:599
-msgid "length:"
-msgstr ""
-
-#: snd-gregion.c:568 snd-xregion.c:610
-msgid "maxamp:"
-msgstr ""
-
-#: snd-gregion.c:573 snd-xregion.c:637
-msgid "edit"
-msgstr ""
-
-#: snd-gregion.c:579 snd-xenv.c:1284 snd-xregion.c:643
-msgid "print"
-msgstr ""
-
-#: snd-gregion.c:585 snd-xregion.c:649
-msgid "unlist"
-msgstr ""
-
-#: snd-gsnd.c:1314 snd-xsnd.c:861
-msgid "frequency response"
-msgstr ""
-
-#: snd-gsnd.c:1815 snd-xsnd.c:2174
-msgid "unite"
-msgstr ""
-
-#: snd-gsnd.c:1922 snd-xsnd.c:2359
-msgid "expand:"
-msgstr ""
-
-#: snd-gsnd.c:1955 snd-xsnd.c:2438
-msgid "contrast:"
-msgstr ""
-
-#: snd-gsnd.c:1988 snd-xsnd.c:2517
-msgid "reverb:"
-msgstr ""
-
-#: snd-gsnd.c:2008 snd-xsnd.c:2598
-msgid "len:"
-msgstr ""
-
-#: snd-gsnd.c:2039 snd-xsnd.c:2657
-msgid "filter:"
-msgstr ""
-
-#: snd-gsnd.c:2055 snd-xsnd.c:2749
-msgid "hz"
-msgstr ""
-
-#: snd-gsnd.c:2152 snd-xsnd.c:2924
-#, c-format
-msgid "(translated %s)"
-msgstr ""
-
-#: snd-gxcolormaps.c:1230
-msgid "black-and-white"
-msgstr ""
-
-#: snd-gxcolormaps.c:1231
-msgid "gray"
-msgstr ""
-
-#: snd-gxcolormaps.c:1232
-msgid "autumn"
-msgstr ""
-
-#: snd-gxcolormaps.c:1233
-msgid "spring"
-msgstr ""
-
-#: snd-gxcolormaps.c:1234
-msgid "winter"
-msgstr ""
-
-#: snd-gxcolormaps.c:1235
-msgid "summer"
-msgstr ""
-
-#: snd-gxcolormaps.c:1236
-msgid "cool"
-msgstr ""
-
-#: snd-gxcolormaps.c:1237
-msgid "copper"
-msgstr ""
-
-#: snd-gxcolormaps.c:1238
-msgid "flag"
-msgstr ""
-
-#: snd-gxcolormaps.c:1239
-msgid "prism"
-msgstr ""
-
-#: snd-gxcolormaps.c:1240
-msgid "bone"
-msgstr ""
-
-#: snd-gxcolormaps.c:1241
-msgid "hot"
-msgstr ""
-
-#: snd-gxcolormaps.c:1242
-msgid "jet"
-msgstr ""
-
-#: snd-gxcolormaps.c:1243
-msgid "pink"
-msgstr ""
-
-#: snd-gxcolormaps.c:1244
-msgid "rainbow"
-msgstr ""
-
-#: snd-gxcolormaps.c:1245
-msgid "phases"
-msgstr ""
-
-#: snd-help.c:336
-msgid "This is Snd version "
-msgstr ""
-
-#: snd-help.c:349
-msgid " samples"
-msgstr ""
-
-#: snd-help.c:402
-msgid ""
-"\n"
-" without any graphics system"
-msgstr ""
-
-#: snd-help.c:430
-msgid ""
-"\n"
-" compiled as a widget"
-msgstr ""
-
-#: snd-help.c:433
-msgid ""
-"\n"
-" with gettext: "
-msgstr ""
-
-#: snd-io.c:242
-#, c-format
-msgid "%s is unreadable: %s?"
-msgstr ""
-
-#: snd-io.c:839
-#, c-format
-msgid "can't close file %s: %s"
-msgstr ""
-
-#: snd-kbd.c:598
-msgid "env:"
-msgstr ""
-
-#: snd-kbd.c:608 snd-kbd.c:2124
-msgid "mark:"
-msgstr ""
-
-#: snd-kbd.c:694 snd-xfind.c:191
-msgid "find"
-msgstr ""
-
-#: snd-kbd.c:726
-#, c-format
-msgid "%s placed at sample "
-msgstr ""
-
-#: snd-kbd.c:729
-msgid "There is already a mark at sample "
-msgstr ""
-
-#: snd-kbd.c:811
-msgid "selection not saved"
-msgstr ""
-
-#: snd-kbd.c:833 snd-kbd.c:894
-#, c-format
-msgid "%s exists: overwrite?"
-msgstr ""
-
-#: snd-kbd.c:873 snd-kbd.c:912
-msgid "channel not saved"
-msgstr ""
-
-#: snd-kbd.c:909
-#, c-format
-msgid "channel %d saved as %s"
-msgstr ""
-
-#: snd-kbd.c:936
-#, c-format
-msgid "can't access %s! temp dir is unchanged"
-msgstr ""
-
-#: snd-kbd.c:978
-msgid "no previous macro"
-msgstr ""
-
-#: snd-kbd.c:1265
-msgid "file has changed; overwrite anyway?"
-msgstr ""
-
-#: snd-kbd.c:1315 snd-kbd.c:1557 snd-kbd.c:2091
-msgid "no such mark"
-msgstr ""
-
-#: snd-kbd.c:1583 snd-kbd.c:1608
-msgid "no mark at sample "
-msgstr ""
-
-#: snd-kbd.c:1729
-msgid "selection starts at "
-msgstr ""
-
-#: snd-kbd.c:1763
-#, c-format
-msgid "C-%s undefined"
-msgstr ""
-
-#: snd-kbd.c:1795
-msgid "no macro active?"
-msgstr ""
-
-#: snd-kbd.c:1798
-msgid "macro name:"
-msgstr ""
-
-#: snd-kbd.c:1815
-msgid "insert file:"
-msgstr ""
-
-#: snd-kbd.c:1826
-msgid "load:"
-msgstr ""
-
-#: snd-kbd.c:1848
-msgid "mix file:"
-msgstr ""
-
-#: snd-kbd.c:1902
-#, c-format
-msgid "C-x C-%s undefined"
-msgstr ""
-
-#: snd-kbd.c:2057
-#, c-format
-msgid "key %s%s undefined"
-msgstr ""
-
-#: snd-kbd.c:2081 snd-kbd.c:2137 snd-kbd.c:2184 snd-kbd.c:2197
-msgid "no active selection"
-msgstr ""
-
-#: snd-kbd.c:2095
-msgid "temp dir:"
-msgstr ""
-
-#: snd-kbd.c:2103
-msgid "can't call macro while it's being defined"
-msgstr ""
-
-#: snd-kbd.c:2228
-msgid "macro definition already in progress"
-msgstr ""
-
-#: snd-kbd.c:2232
-msgid "defining macro..."
-msgstr ""
-
-#: snd-kbd.c:2254
-#, c-format
-msgid "C-x %s undefined"
-msgstr ""
-
-#: snd-kbd.c:2260
-#, c-format
-msgid "C-x M-%s undefined"
-msgstr ""
-
-#: snd-kbd.c:2387
-#, c-format
-msgid " function arg should take either zero or one args, not %d"
-msgstr ""
-
-#: snd-ladspa.c:274
-msgid "Warning: You have not set "
-msgstr ""
-
-#: snd-ladspa.c:393 snd-ladspa.c:401
-msgid "Plugins"
-msgstr ""
-
-#: snd-ladspa.c:643
-msgid "Snd plugins must have at least 1 output"
-msgstr ""
-
-#: snd-ladspa.c:647
-#, c-format
-msgid "Ladspa %s required inputs (%d) != samplers (%d)"
-msgstr ""
-
-#: snd-ladspa.c:887
-msgid " interrupted"
-msgstr ""
-
-#: snd-main.c:650
-#, c-format
-msgid "%s end of snd options\n"
-msgstr ""
-
-#: snd-main.c:1231 snd-main.c:1372
-#, c-format
-msgid "can't write %s: %s"
-msgstr ""
-
-#: snd-main.c:1481
-#, c-format
-msgid "%s but no directory to add?"
-msgstr ""
-
-#: snd-main.c:1503
-#, c-format
-msgid "%s but no file to load?"
-msgstr ""
-
-#: snd-main.c:1526
-#, c-format
-msgid "%s but no form to evaluate?"
-msgstr ""
-
-#: snd-main.c:1544
-msgid "-title but no title?"
-msgstr ""
-
-#: snd-main.c:1555
-msgid "-I but no path?"
-msgstr ""
-
-#: snd-main.c:1648
-#, c-format
-msgid "%s: directory %s is not writable: %s"
-msgstr ""
-
-#: snd-menu.c:59
-msgid "Add Header"
-msgstr ""
-
-#: snd-menu.c:92
-msgid "Hide Y = 0"
-msgstr ""
-
-#: snd-menu.c:95
-msgid "Silent cursor"
-msgstr ""
-
-#: snd-menu.c:98
-msgid "Without inset graph"
-msgstr ""
-
-#: snd-menu.c:114
-msgid "Hide listener"
-msgstr ""
-
-#: snd-menu.c:114
-msgid "Show listener"
-msgstr ""
-
-#: snd-menu.c:115
-msgid "Hide controls"
-msgstr ""
-
-#: snd-menu.c:252
-#, c-format
-msgid "saved options in %s"
-msgstr ""
-
-#: snd-menu.c:277
-#, c-format
-msgid "saved state in %s"
-msgstr ""
-
-#: snd-menu.c:282
-msgid "can't save state: save-state-file is null"
-msgstr ""
-
-#: snd-nogui.c:287
-#, c-format
-msgid "%s has %d channels? "
-msgstr ""
-
-#: snd-nogui.c:289 snd-nogui.c:291
-#, c-format
-msgid "byte swap problem: chans should be %d"
-msgstr ""
-
-#: snd-print.c:102
-msgid "eps file"
-msgstr ""
-
-#: snd-print.c:540
-msgid "nothing to print?"
-msgstr ""
-
-#: snd-print.c:569
-#, c-format
-msgid "print %s failed: %s"
-msgstr ""
-
-#: snd-print.c:574
-msgid "print sound: eps file name needed"
-msgstr ""
-
-#: snd-print.c:603
-#, c-format
-msgid "print region %s failed: %s"
-msgstr ""
-
-#: snd-print.c:605
-msgid "print region: eps file name needed"
-msgstr ""
-
-#: snd-print.c:622
-#, c-format
-msgid "print env %s failed: %s"
-msgstr ""
-
-#: snd-print.c:624
-msgid "print envelope: eps file name needed"
-msgstr ""
-
-#: snd-region.c:441
-msgid "can't read region file!!"
-msgstr ""
-
-#: snd-region.c:857
-#, c-format
-msgid "can't write region temp file %s: %s"
-msgstr ""
-
-#: snd-region.c:866
-#, c-format
-msgid "can't read region's original sound? %s: %s"
-msgstr ""
-
-#: snd-region.c:926
-#, c-format
-msgid "%s region temp file %s: %s"
-msgstr ""
-
-#: snd-region.c:999
-#, c-format
-msgid "sequestering region %d..."
-msgstr ""
-
-#: snd-region.c:1141
-#, c-format
-msgid "region %d already being edited"
-msgstr ""
-
-#: snd-region.c:1163
-#, c-format
-msgid "edit region: can't open region %d temp sound %s: %s!"
-msgstr ""
-
-#: snd-region.c:1167
-#, c-format
-msgid "edit region: can't save region %d in temp file (%s: %s)"
-msgstr ""
-
-#: snd-region.c:1172
-#, c-format
-msgid "edit region: no region at position %d!"
-msgstr ""
-
-#: snd-region.c:1225
-#, c-format
-msgid "can't find edited region temp file (%s: %s)"
-msgstr ""
-
-#: snd-region.c:1226
-#, c-format
-msgid "can't make region temp file (%s: %s)"
-msgstr ""
-
-#: snd-region.c:1285
-msgid "not enough space to save region? -- need "
-msgstr ""
-
-#: snd-select.c:1198
-msgid "save selection stopped"
-msgstr ""
-
-#: snd-select.c:1631 snd-snd.c:4488
-msgid "can't write this header type:"
-msgstr ""
-
-#: snd-select.c:1637 snd-snd.c:4527
-msgid "can't write this combination of header type and data format:"
-msgstr ""
-
-#: snd-select.c:1644 snd-snd.c:4459
-msgid "srate can't be <= 0"
-msgstr ""
-
-#: snd-sig.c:176 snd-sig.c:234
-msgid "no selection"
-msgstr ""
-
-#: snd-sig.c:276
-#, c-format
-msgid "convolve: impulse response file %s chans: %d"
-msgstr ""
-
-#: snd-sig.c:280
-#, c-format
-msgid "convolve: impulse response file %s is empty"
-msgstr ""
-
-#: snd-sig.c:322
-#, c-format
-msgid "convolve: save chan (%s[%d]) in %s hit error: %s\n"
-msgstr ""
-
-#: snd-sig.c:334
-#, c-format
-msgid "convolve: open saved chan (%s[%d]) file %s hit error: %s\n"
-msgstr ""
-
-#: snd-sig.c:353
-#, c-format
-msgid "convolve: open filter file %s hit error: %s\n"
-msgstr ""
-
-#: snd-sig.c:386
-#, c-format
-msgid "convolve: close filter file %s hit error: %s\n"
-msgstr ""
-
-#: snd-sig.c:395
-#, c-format
-msgid "convolve: close saved chan (%s[%d]) file %s hit error: %s\n"
-msgstr ""
-
-#: snd-sig.c:681 snd-sig.c:697
-#, c-format
-msgid "%s "
-msgstr ""
-
-#: snd-sig.c:763
-msgid "swap interrupted"
-msgstr ""
-
-#: snd-sig.c:906 snd-sig.c:1389 snd-sig.c:1496 snd-sig.c:1657 snd-sig.c:2068
-#: snd-sig.c:2452 snd-sig.c:2961
-#, c-format
-msgid "%s %s temp file %s: %s\n"
-msgstr ""
-
-#: snd-sig.c:1178
-msgid "src interrupted"
-msgstr ""
-
-#: snd-sig.c:1377
-#, c-format
-msgid "%s can't read %s[%d] channel data!"
-msgstr ""
-
-#: snd-sig.c:1562
-msgid "filter interrupted"
-msgstr ""
-
-#: snd-sig.c:1603
-msgid "can't write data?"
-msgstr ""
-
-#: snd-sig.c:1909
-#, c-format
-msgid "%s: can't handle %s generators"
-msgstr ""
-
-#: snd-sig.c:2008
-msgid "filter stopped"
-msgstr ""
-
-#: snd-sig.c:2210
-msgid "reverse stopped"
-msgstr ""
-
-#: snd-sig.c:2948
-#, c-format
-msgid "%s: can't read %s[%d] channel data!"
-msgstr ""
-
-#: snd-sig.c:3079
-#, c-format
-msgid "%s temp file %s: %s\n"
-msgstr ""
-
-#: snd-sig.c:3847
-#, c-format
-msgid "%s stopped at sample "
-msgstr ""
-
-#: snd-snd.c:37
-#, c-format
-msgid "%s %s: %s"
-msgstr ""
-
-#: snd-snd.c:65
-#, c-format
-msgid "%s: can't write %s header with %s data format"
-msgstr ""
-
-#: snd-snd.c:1956
-msgid "apply controls: no changes to apply!"
-msgstr ""
-
-#: snd-snd.c:2073
-#, c-format
-msgid "%s apply temp file %s: %s\n"
-msgstr ""
-
-#: snd-snd.c:4173
-#, c-format
-msgid "%s (index %d) is write-protected"
-msgstr ""
-
-#: snd-trans.c:46
-#, c-format
-msgid "no space left on device: %s"
-msgstr ""
-
-#: snd-trans.c:53
-msgid "only "
-msgstr ""
-
-#: snd-trans.c:61
-msgid "write error (wrote "
-msgstr ""
-
-#: snd-trans.c:439
-#, c-format
-msgid ""
-"read_mus10: can't translate Mus10 file %s:\n"
-" mode = %d\n"
-msgstr ""
-
-#: snd-trans.c:899
-#, c-format
-msgid ""
-"read_dvi_adpcm: can't translate DVI ADPCM file %s: chans: %d and bits: %d\n"
-msgstr ""
-
-#: snd-trans.c:981
-#, c-format
-msgid "read_oki_adpcm: can't translate Oki ADPCM file %s: chans: %d\n"
-msgstr ""
-
-#: snd-trans.c:1370
-#, c-format
-msgid "read_g72x_adpcm: can't translate G72x file %s: chans: %d\n"
-msgstr ""
-
-#: snd-trans.c:1575
-#, c-format
-msgid ""
-"can't translate %s\n"
-" (%s header: %s (0x%x) data format)\n"
-msgstr ""
-
-#: snd-utils.c:255
-#, c-format
-msgid "can't access %s: %s"
-msgstr ""
-
-#: snd-utils.c:261
-msgid "not enough space left on disk: only "
-msgstr ""
-
-#: snd-xdraw.c:342
-msgid "can't even allocate black?!?"
-msgstr ""
-
-#: snd-xdraw.c:962 snd-xdraw.c:974
-msgid "Color and Orientation"
-msgstr ""
-
-#: snd-xdraw.c:1027
-msgid "colors"
-msgstr ""
-
-#: snd-xdraw.c:1208
-msgid "orientation"
-msgstr ""
-
-#: snd-xdraw.c:1390
-msgid "use OpenGL"
-msgstr ""
-
-#: snd-xen.c:516 snd-xen.c:549
-#, c-format
-msgid "%s function (%s arg %d) should take %d args, not %d"
-msgstr ""
-
-#: snd-xen.c:532
-#, c-format
-msgid ""
-"%s function (%s arg %d) should take %d argument%s, but instead requires %d"
-msgstr ""
-
-#: snd-xen.c:536
-#, c-format
-msgid ""
-"%s function (%s arg %d) should accept at least %d argument%s, but instead "
-"accepts only %d"
-msgstr ""
-
-#: snd-xen.c:541
-#, c-format
-msgid "%s function (%s arg %d) should take no args, not %d"
-msgstr ""
-
-#: snd-xen.c:995
-#, c-format
-msgid "can't load %s: %s"
-msgstr ""
-
-#: snd-xen.c:1109 snd-xen.c:1123
-#, c-format
-msgid "%s: %.3f is invalid"
-msgstr ""
-
-#: snd-xen.c:1112 snd-xen.c:1119
-#, c-format
-msgid "%s is not a number"
-msgstr ""
-
-#: snd-xen.c:1141 snd-xen.c:1155
-#, c-format
-msgid "%s: %d is invalid"
-msgstr ""
-
-#: snd-xen.c:1144 snd-xen.c:1151 snd-xen.c:1177 snd-xen.c:1184
-#, c-format
-msgid "%s: %s is not a number"
-msgstr ""
-
-#: snd-xen.c:1174 snd-xen.c:1188
-#, c-format
-msgid "%s: "
-msgstr ""
-
-#: snd-xenv.c:961
-msgid "Apply"
-msgstr ""
-
-#: snd-xenv.c:974
-msgid "envelope editor"
-msgstr ""
-
-#: snd-xenv.c:1272
-msgid "save"
-msgstr ""
-
-#: snd-xenv.c:1300
-msgid "undo"
-msgstr ""
-
-#: snd-xenv.c:1312
-msgid "redo"
-msgstr ""
-
-#: snd-xenv.c:1328
-msgid "revert"
-msgstr ""
-
-#: snd-xfft.c:1117
-msgid "spectrum start/end"
-msgstr ""
-
-#: snd-xfft.c:1131
-msgid "start:0.0 "
-msgstr ""
-
-#: snd-xfft.c:1163
-msgid "end: 1.0 "
-msgstr ""
-
-#: snd-xfft.c:1222
-msgid "window parameter"
-msgstr ""
-
-#: snd-xfft.c:1236
-msgid "alpha:0.0 "
-msgstr ""
-
-#: snd-xfft.c:1270
-msgid "beta: 0.0 "
-msgstr ""
-
-#: snd-xfft.c:1534
-msgid "display"
-msgstr ""
-
-#: snd-xfile.c:1268 snd-xfile.c:3219
-msgid "files listed:"
-msgstr ""
-
-#: snd-xfile.c:1578
-msgid "open read-only:"
-msgstr ""
-
-#: snd-xfile.c:1721
-msgid "Mix Sound"
-msgstr ""
-
-#: snd-xfile.c:1721
-msgid "mix in:"
-msgstr ""
-
-#: snd-xfile.c:1812
-msgid "Insert Sound"
-msgstr ""
-
-#: snd-xfile.c:2329
-msgid "header"
-msgstr ""
-
-#: snd-xfile.c:2383
-msgid "data"
-msgstr ""
-
-#: snd-xfile.c:2483 snd-xfile.c:2492
-msgid "channels:"
-msgstr ""
-
-#: snd-xfile.c:2483 snd-xfile.c:2492
-msgid "extract channel:"
-msgstr ""
-
-#: snd-xfile.c:2534
-msgid "data location:"
-msgstr ""
-
-#: snd-xfile.c:2945
-#, c-format
-msgid "%s exists%s. To overwrite it, click 'DoIt'"
-msgstr ""
-
-#: snd-xfile.c:3461
-msgid "selected region"
-msgstr ""
-
-#: snd-xfile.c:5696
-msgid "amp env"
-msgstr ""
-
-#: snd-xfile.c:6389 snd-xprefs.c:1795 snd-xprefs.c:1827
-msgid "Clear"
-msgstr ""
-
-#: snd-xfind.c:90 snd-xfind.c:103
-#, c-format
-msgid "find: %s"
-msgstr ""
-
-#: snd-xfind.c:217
-msgid "find:"
-msgstr ""
-
-#: snd-xhelp.c:354
-msgid "Forward"
-msgstr ""
-
-#: snd-xhelp.c:382
-msgid "Back"
-msgstr ""
-
-#: snd-xhelp.c:482
-msgid "related topics:"
-msgstr ""
-
-#: snd-xmain.c:627
-#, c-format
-msgid "can't get color %s -- will use white\n"
-msgstr ""
-
-#: snd-xmain.c:632
-#, c-format
-msgid "can't get color %s -- will use black\n"
-msgstr ""
-
-#: snd-xmain.c:872
-msgid "no RGB visual with desired depth\n"
-msgstr ""
-
-#: snd-xmain.c:878
-msgid "could not create rendering context\n"
-msgstr ""
-
-#: snd-xmain.c:955
-#, c-format
-msgid "can't find peaks font %s"
-msgstr ""
-
-#: snd-xmain.c:959
-#, c-format
-msgid "can't find tiny font %s"
-msgstr ""
-
-#: snd-xmain.c:964
-#, c-format
-msgid "can't find bold peaks font %s"
-msgstr ""
-
-#: snd-xmain.c:969
-#, c-format
-msgid "can't find axis label font %s"
-msgstr ""
-
-#: snd-xmain.c:974
-#, c-format
-msgid "can't find axis numbers font %s"
-msgstr ""
-
-#: snd-xmain.c:978
-#, c-format
-msgid "can't find listener font %s"
-msgstr ""
-
-#: snd-xmix.c:703
-msgid "Apply env"
-msgstr ""
-
-#: snd-xmix.c:1087
-msgid "no active mixes"
-msgstr ""
-
-#: snd-xregion.c:325
-msgid "region"
-msgstr ""
-
-#: snd-xsnd.c:2969
-msgid "none"
-msgstr ""
-
-#: snd.c:458
-msgid "Snd is a sound editor; see http://ccrma.stanford.edu/software/snd/.\n"
-msgstr ""
diff --git a/popup.fs b/popup.fs
index 79aadcf..7c7479e 100644
--- a/popup.fs
+++ b/popup.fs
@@ -3,7 +3,7 @@
\ Translator/Author: Michael Scholz <mi-scholz@users.sourceforge.net>
\ Created: Fri Dec 23 00:28:28 CET 2005
-\ Changed: Sat Dec 19 02:35:00 CET 2009
+\ Changed: Tue Jan 12 02:10:31 CET 2010
\ Commentary:
@@ -256,7 +256,7 @@ hide
: sel-crop <{ w c info -- }>
selection-members each ( sel ) as-one-edit-thunk "" as-one-edit drop end-each
;
-: sel-save-as <{ w c info -- val }> save-selection-dialog ;
+: sel-save-as <{ w c info -- val }> #t save-selection-dialog ;
: sel-copy <{ w c info -- }>
snd-tempnam { new-file-name }
new-file-name save-selection drop
@@ -274,8 +274,8 @@ hide
select 1 array-ref { chn }
snd chn selection-position { pos }
snd chn selection-frames 1- { len }
- pos snd chn add-mark drop
- pos len + snd chn add-mark drop
+ pos snd chn #f 0 add-mark drop
+ pos len d+ snd chn #f 0 add-mark drop
end-each
;
: sel-info <{ w c info -- val }>
@@ -390,7 +390,7 @@ let: ( -- menu )
: prev-cb <{ w c info -- val }> graph-popup-snd revert-sound ;
: popen-cb <{ w c info -- val }> #t open-file-dialog ;
: psave-cb <{ w c info -- val }> graph-popup-snd save-sound ;
-: psaveas-cb <{ w c info -- val }> graph-popup-snd select-sound drop save-sound-dialog ;
+: psaveas-cb <{ w c info -- val }> graph-popup-snd select-sound drop #t save-sound-dialog ;
: pupdate-cb <{ w c info -- val }> graph-popup-snd update-sound ;
: pclose-cb <{ w c info -- val }> graph-popup-snd close-sound-extend #f ;
: pmixsel-cb <{ w c info -- val }>
@@ -471,8 +471,8 @@ let: ( -- menu )
snd file-name $" info" $+ str info-dialog
;
: paddmrk-cb <{ w c info -- val }>
- graph-popup-snd graph-popup-chn #f cursor
- graph-popup-snd graph-popup-chn add-mark
+ graph-popup-snd graph-popup-chn #f cursor ( samp )
+ graph-popup-snd graph-popup-chn #f ( name ) 0 ( sync ) add-mark
;
: pdelmrk-cb <{ w c info -- val }>
graph-popup-snd graph-popup-chn #f marks { ms }
@@ -766,7 +766,7 @@ value fft-trn-transform
graph-popup-snd graph-popup-chn wavelet-type { tp }
lst each ( child ) i tp <> FXtSetSensitive drop end-each
;
-: fft-color <{ w c info -- val }> color-orientation-dialog ;
+: fft-color <{ w c info -- val }> #t color-orientation-dialog ;
let: ( -- menu )
$" fft-popup" main-widgets 2 array-ref
@@ -1150,7 +1150,7 @@ hide
let: ( -- )
main-widgets 4 array-ref dup unless
drop
- #t show-listener drop
+ #t set-show-listener drop
#f set-show-listener drop
main-widgets 4 array-ref
then { parent }
diff --git a/popup.rb b/popup.rb
index 9e667be..f4c5dbf 100644
--- a/popup.rb
+++ b/popup.rb
@@ -2,13 +2,13 @@
# Author: Michael Scholz <mi-scholz@users.sourceforge.net>
# Created: Thu Sep 05 22:28:49 CEST 2002
-# Changed: Thu Nov 26 22:26:17 CET 2009
+# Changed: Sat Feb 06 13:55:21 CET 2010
# Commentary:
#
-# Requires --with-motif or --with-gtk and module libxm.so or --with-static-xm!
-#
-# Tested with Snd 11, Motif 2.2.3, Gtk+ 2.16.6, Ruby 1.8.7 and 1.9.1.
+# Requires --with-motif|gtk and module libxm.so|libxg.so or --with-static-xm|xg!
+#
+# Tested with Snd 11, Motif 2.2.3, Gtk+ 2.18.6, Ruby 1.8.7.
#
# $info_comment_hook: lambda do |file, info_string| ...; new_info_string; end
# $edhist_save_hook: lambda do |prc| ... end
@@ -250,12 +250,14 @@ If it returns non-nil or non-false, the menu will be posted.")
instance_eval(&body) if block_given?
case @target
when :channels, :edhist
- if provided?(:xm) or (provided?(:xg) and @target == :edhist)
+ if provided?(:xm)
Snd.sounds.each do |snd| set_channel_popup(snd) end
hook_name = format("%s-popup", (@label or "channels").downcase.tr(" ", "-"))
$after_open_hook.add_hook!(hook_name) do |snd| set_channel_popup(snd) end
else # gtk :channels
- set_gtk_channel_popup
+ unless @target == :edhist
+ set_gtk_channel_popup
+ end
end
when :widget
set_widget_popup
@@ -269,29 +271,16 @@ If it returns non-nil or non-false, the menu will be posted.")
unless @popups.detect do |c| c == [snd, chn] end
@popups.push([snd, chn])
if @target == :edhist
- if provided? :xm
- RXtAddCallback(channel_widgets(snd, chn)[Edhist],
- RXmNpopupHandlerCallback,
- lambda do |w, c, i|
- if Rtype(Revent(i)) == RButtonPress
- @before_popup_hook.call(snd, chn, w)
- Rset_menuToPost(i, @menu)
- end
- end)
- else
- add_event_handler(channel_widgets(snd, chn)[Edhist], "button_press_event") do |w, e, d|
- if Rbutton(b = RGDK_EVENT_BUTTON(e)) == 3
- @before_popup_hook.call(snd, chn, w)
- Rgtk_widget_show(@menu)
- Rgtk_menu_popup(RGTK_MENU(@menu), false, false, false, false, Rbutton(b), Rtime(b))
- true
- else
- false
- end
- end
- end
+ RXtAddCallback(channel_widgets(snd, chn)[Edhist],
+ RXmNpopupHandlerCallback,
+ lambda do |w, c, i|
+ if Rtype(Revent(i)) == RButtonPress
+ @before_popup_hook.call(snd, chn, w)
+ Rset_menuToPost(i, @menu)
+ end
+ end)
end
- if @target == :channels and provided? :xm
+ if @target == :channels
RXtAddCallback(channel_widgets(snd, chn)[Graph],
RXmNpopupHandlerCallback,
lambda do |w, c, i|
@@ -332,21 +321,25 @@ If it returns non-nil or non-false, the menu will be posted.")
def set_gtk_channel_popup
$gtk_popup_hook.add_hook!("popup-rb-hook") do |widget, event, data, snd, chn|
if snd
- b = RGDK_EVENT_BUTTON(event)
+ e = RGDK_EVENT(event)
+ time = Rgdk_event_get_time(e)
if @before_popup_hook.empty?
Rgtk_widget_show(@menu)
- Rgtk_menu_popup(RGTK_MENU(@menu), false, false, false, false, Rbutton(b), Rtime(b))
+ Rgtk_menu_popup(RGTK_MENU(@menu), false, false, false, false, 2, time)
else
+ coords = Rgdk_event_get_coords(e)
+ x = coords[1]
+ y = coords[2]
if channel_style(snd) == Channels_combined
- chn = if (cn = (0...channels(snd)).detect do |cc| Ry(b) < axis_info(snd, cc)[14] end)
+ chn = if (cn = (0...channels(snd)).detect do |cc| y < axis_info(snd, cc)[14] end)
cn - 1
else
channels(snd) - 1
end
end
- if @before_popup_hook.run_hook_bool(snd, chn, Rx(b))
+ if @before_popup_hook.run_hook_bool(snd, chn, x)
Rgtk_widget_show(@menu)
- Rgtk_menu_popup(RGTK_MENU(@menu), false, false, false, false, Rbutton(b), Rtime(b))
+ Rgtk_menu_popup(RGTK_MENU(@menu), false, false, false, false, 2, time)
end
end
true
@@ -1104,7 +1097,7 @@ all saved edit lists.",
:parent, if widget?(ww = main_widgets[Listener_pane])
ww
else
- show_listener
+ set_show_listener(true)
set_show_listener(false)
main_widgets[Listener_pane]
end) do
diff --git a/popup.scm b/popup.scm
index 494c99b..8438624 100644
--- a/popup.scm
+++ b/popup.scm
@@ -885,7 +885,7 @@ color name, an xm Pixel, a snd color, or a list of rgb values (as in Snd's make-
(define (add-listener-popup)
(let* ((listener (or (list-ref (main-widgets) 4)
(begin
- (show-listener)
+ (set! (show-listener) #t) ; create it?
(set! (show-listener) #f)
(list-ref (main-widgets) 4))))
(every-menu (list XmNbackground (highlight-color)))
diff --git a/quick.html b/quick.html
index 5deae7d..a030597 100644
--- a/quick.html
+++ b/quick.html
@@ -333,7 +333,7 @@ define selection via marks: <a href="sndscm.html#defineselectionviamarks">define
force dragged mark to land on a beat: <a href="sndscm.html#snapmarktobeat">snap-mark-to-beat</a><br>
loop continuously between the two specified marks: <a href="sndscm.html#loopbetweenmarks">loop-between-marks</a><br>
split sound into separate files based on mark placement: <a href="sndscm.html#markexplode">mark-explode</a><br>
-mark property lists: <a href="sndscm.html#markproperty">mark-property</a><br>
+mark property lists: <a href="extsnd.html#markproperty">mark-property</a><br>
save mark properties in saved state file: <a href="sndscm.html#savemarkproperties">save-mark-properties</a><br>
show mark properties upon click: <a href="sndscm.html#markclickinfo">mark-click-info</a><br>
</small></blockquote>
@@ -374,7 +374,7 @@ read mix samples: <a href="extsnd.html#makemixsampler">make-mix-sampler</a><br>
mix data maxamp: <a href="sndscm.html#mixmaxamp">mix-maxamp</a><br>
mix data to vct: <a href="sndscm.html#mixtovct">mix-&gt;vct</a><br>
save mix data in file: <a href="extsnd.html#savemix">save-mix</a><br>
-mix property list: <a href="sndscm.html#mixproperty">mix-property</a> in mix.scm<br>
+mix property list: <a href="extsnd.html#mixproperty">mix-property</a> in mix.scm<br>
pan mono sound into stereo: see <a href="sndscm.html#placesound">place-sound</a> in examp.scm<br>
move a mixed sound via dlocsig: <a href="extsnd.html#mixmovesound">mix-move-sound</a><br>
the mix dialog: <a href="snd.html#mixdialog">Mix Dialog</a><br>
diff --git a/rt-DotEmacs b/rt-DotEmacs
deleted file mode 100644
index 1811331..0000000
--- a/rt-DotEmacs
+++ /dev/null
@@ -1,394 +0,0 @@
-;;
-;; Various snd-rt stuff for emacs. My ~/.emacs has this line:
-;; (load "/home/kjetil/snd-run/rt-DotEmacs")
-;;
-;; -Kjetil. Last updated 7.3.2008
-
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(definstrument\\|run\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 (cond ((match-beginning 1) font-lock-function-name-face)
- ((match-beginning 2) font-lock-variable-name-face)
- (t font-lock-type-face))
- nil t))))
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(def-method\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 (cond ((match-beginning 1) font-lock-function-name-face)
- ((match-beginning 2) font-lock-variable-name-face)
- (t font-lock-type-face))
- nil t))))
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(define-rt\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 (cond ((match-beginning 1) font-lock-function-name-face)
- ((match-beginning 2) font-lock-variable-name-face)
- (t font-lock-type-face))
- nil t))))
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(define-stalin\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 (cond ((match-beginning 1) font-lock-function-name-face)
- ((match-beginning 2) font-lock-variable-name-face)
- (t font-lock-type-face))
- nil t))))
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(define-stalin-ec\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 font-lock-type-face)
- (3 (cond ((match-beginning 1) font-lock-function-name-face)
- ((match-beginning 2) font-lock-variable-name-face)
- ((match-beginning 3) font-lock-function-name-face)
- (t font-lock-type-face))
- nil t))))
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(define-rt-ec\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 font-lock-type-face)
- (3 (cond ((match-beginning 1) font-lock-function-name-face)
- ((match-beginning 2) font-lock-variable-name-face)
- ((match-beginning 3) font-lock-function-name-face)
- (t font-lock-type-face))
- nil t))))
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(range\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 (cond ((match-beginning 1) font-lock-function-name-face)
- ((match-beginning 2) font-lock-variable-name-face)
- (t font-lock-type-face))
- nil t))))
-(put 'range 'scheme-indent-function 'defun)
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(c-define\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 (cond ((match-beginning 1) font-lock-function-name-face)
- ((match-beginning 2) font-lock-variable-name-face)
- (t font-lock-type-face))
- nil t))))
-(put 'c-define 'scheme-indent-function 'defun)
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(delafina\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 (cond ((match-beginning 1) font-lock-function-name-face)
- ((match-beginning 2) font-lock-variable-name-face)
- (t font-lock-type-face))
- nil t))))
-(put 'delafina 'scheme-indent-function 'defun)
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(labamba\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 nil
- nil t))))
-(put 'labamba 'scheme-indent-function 1)
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(c-define*\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 (cond ((match-beginning 1) font-lock-function-name-face)
- ((match-beginning 2) font-lock-variable-name-face)
- (t font-lock-type-face))
- nil t))))
-(put 'c-define* 'scheme-indent-function 'defun)
-
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(define*2\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 (cond ((match-beginning 1) font-lock-function-name-face)
- ((match-beginning 2) font-lock-variable-name-face)
- (t font-lock-type-face))
- nil t))))
-(put 'define*2 'scheme-indent-function 'defun)
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(while\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 (cond ((match-beginning 1) font-lock-function-name-face)
- ((match-beginning 2) font-lock-variable-name-face)
- (t font-lock-type-face))
- nil t))))
-(put 'while 'scheme-indent-function 1)
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(when\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 (cond ((match-beginning 1) font-lock-function-name-face)
- ((match-beginning 2) font-lock-variable-name-face)
- (t font-lock-type-face))
- nil t))))
-(put 'when 'scheme-indent-function 1)
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(spawn\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 (cond ;((match-beginning 1) font-lock-variable-name-face)
- ((match-beginning 2) font-lock-builtin-face)
- ;(t font-lock-type-face)
- )
- nil t))))
-(put 'spawn 'scheme-indent-function 'defun)
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(wait\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 (cond ;((match-beginning 1) font-lock-variable-name-face)
- ((match-beginning 2) font-lock-builtin-face)
- ;(t font-lock-type-face)
- )
- nil t))))
-(put 'wait 'scheme-indent-function 'defun)
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(yield\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 (cond ;((match-beginning 1) font-lock-variable-name-face)
- ((match-beginning 2) font-lock-builtin-face)
- ;(t font-lock-type-face)
- )
- nil t))))
-(put 'yield 'scheme-indent-function 'defun)
-
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(sound\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 (cond ;((match-beginning 1) font-lock-variable-name-face)
- ((match-beginning 2) font-lock-builtin-face)
- ;(t font-lock-type-face)
- )
- nil t))))
-(put 'sound 'scheme-indent-function 'defun)
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(block\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 (cond ;((match-beginning 1) font-lock-variable-name-face)
- ((match-beginning 2) font-lock-builtin-face)
- ;(t font-lock-type-face)
- )
- nil t))))
-(put 'block 'scheme-indent-function 'defun)
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(spawn-block\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 (cond ;((match-beginning 1) font-lock-variable-name-face)
- ((match-beginning 2) font-lock-builtin-face)
- ;(t font-lock-type-face)
- )
- nil t))))
-(put 'spawn-block 'scheme-indent-function 'defun)
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(wait-midi\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 (cond ((match-beginning 1) font-lock-function-name-face)
- ((match-beginning 2) font-lock-variable-name-face)
- (t font-lock-type-face))
- nil t))))
-(put 'wait-midi 'scheme-indent-function 'defun)
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(define-c-macro\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 font-lock-builtin-face
- nil t))))
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(define-faust-macro\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 font-lock-builtin-face
- nil t))))
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(define-c/faust-macro\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 font-lock-builtin-face
- nil t))))
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(define-stalin-macro\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 font-lock-builtin-face
- nil t))))
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(c-define-macro\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 font-lock-constant-face
- nil t))))
-(put 'c-define-macro 'scheme-indent-function 1)
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(define-rt-macro\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 font-lock-constant-face
- nil t))))
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(define-rt+-macro\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 font-lock-constant-face
- nil t))))
-
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(def-class\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 font-lock-type-face
- nil t))))
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(c-load-from-path\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 font-lock-type-face
- nil t))))
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(c-import\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 font-lock-type-face
- nil t))))
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(def-var\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 font-lock-variable-name-face
- nil t))))
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(out\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face
- nil t))))
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(in\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face
- nil t))))
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(where\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face
- nil t))))
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(compose\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face
- nil t))))
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(send\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face
- nil t))))
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(new\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face
- nil t))))
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(public\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face
- nil t))))
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(extern\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-function-name-face
- nil t))))
-
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(def-constructor\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 font-lock-type-face
- nil t))))
-
-(font-lock-add-keywords
- 'snd-guile-mode
- '(("(\\(definstrument\\|run\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 (cond ((match-beginning 1) font-lock-function-name-face)
- ((match-beginning 2) font-lock-variable-name-face)
- (t font-lock-type-face))
- nil t))))
-
-(font-lock-add-keywords
- 'lisp-mode
- '(("(\\(def[p]?instrument\\|def-optkey-fun\\|run\\|let\\*?\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 (cond ((match-beginning 1) font-lock-function-name-face)
- ((match-beginning 2) font-lock-variable-name-face)
- (t font-lock-type-face))
- nil t))))
-
-(put 'letrec* 'scheme-indent-function 1)
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(letrec[*]\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 font-lock-variable-name-face
- nil t))))
-
-
-;; Press C-return to stop sound.
-;;
-(defun rte-silence! ()
- (interactive)
- (comint-send-string (scheme-proc) "(rte-silence!)\n"))
-
-(global-set-key (kbd "<C-return>") 'rte-silence!)
-
-(defun rte-info ()
- (interactive)
- (comint-send-string (scheme-proc) "(rte-info)\n"))
-
-(global-set-key (kbd "<C-S-return>") 'rte-info)
-
-;;(get-buffer "auai")
-;(comint-send-string (scheme-proc) (concat "(c-display \"" (x-get-selection) "\")\n"))
-
-;(concat " " " ")
-
diff --git a/rt-clm-ins.scm b/rt-clm-ins.scm
deleted file mode 100644
index ead3eaa..0000000
--- a/rt-clm-ins.scm
+++ /dev/null
@@ -1,2930 +0,0 @@
-;;; CLM Snd/Scheme instruments translated to run in realtime using the realtime extension.
-;;;
-
-
-(use-modules (ice-9 optargs))
-
-(provide 'snd-clm-ins.scm)
-
-(if (not (provided? 'snd-ws.scm)) (load-from-path "ws.scm"))
-(if (not (provided? 'snd-env.scm)) (load-from-path "env.scm"))
-
-
-(define *rt-num-channels* 2)
-
-
-;;; -------- pluck
-;;;
-;;; The Karplus-Strong algorithm as extended by David Jaffe and Julius Smith -- see
-;;; Jaffe and Smith, "Extensions of the Karplus-Strong Plucked-String Algorithm"
-;;; CMJ vol 7 no 2 Summer 1983, reprinted in "The Music Machine".
-;;; translated from CLM's pluck.ins
-
-(definstrument (pluck start dur freq amp-1 :key (weighting .5) (lossfact .9))
- "(pluck start dur freq amp weighting lossfact) implements the Jaffe-Smith plucked string physical model.
-'weighting' is the ratio of the once-delayed to the twice-delayed samples. It defaults to .5=shortest decay.
-Anything other than .5 = longer decay. Must be between 0 and less than 1.0.
-'lossfact' can be used to shorten decays. Most useful values are between .8 and 1.0. (pluck 0 1 330 .3 .95 .95)"
-
- (let ((amp amp-1)) ; make new Guile happy
-
- (define (getOptimumC S o p)
- (let* ((pa (* (/ 1.0 o) (atan (* S (sin o)) (+ (- 1.0 S) (* S (cos o))))))
- (tmpInt (inexact->exact (floor (- p pa))))
- (pc (- p pa tmpInt)))
- (if (< pc .1)
- (do ()
- ((>= pc .1))
- (set! tmpInt (- tmpInt 1))
- (set! pc (+ pc 1.0))))
- (list tmpInt (/ (- (sin o) (sin (* o pc))) (sin (+ o (* o pc)))))))
-
- (define (tuneIt f s1)
- (let* ((p (/ (mus-srate) f)) ;period as float
- (s (if (= s1 0.0) 0.5 s1))
- (o (hz->radians f))
- (vals (getOptimumC s o p))
- (T1 (car vals))
- (C1 (cadr vals))
- (vals1 (getOptimumC (- 1.0 s) o p))
- (T2 (car vals1))
- (C2 (cadr vals1)))
- (if (and (not (= s .5))
- (< (abs C1) (abs C2)))
- (list (- 1.0 s) C1 T1)
- (list s C2 T2))))
-
- (let* ((vals (tuneIt freq weighting))
- (wt0 (car vals))
- (c (cadr vals))
- (dlen (caddr vals))
- ;(amp amp-1)
- (beg (inexact->exact (floor (* start (mus-srate)))))
- (end (+ beg (inexact->exact (floor (* dur (mus-srate))))))
- (lf (if (= lossfact 0.0) 1.0 (min 1.0 lossfact)))
- (wt (if (= wt0 0.0) 0.5 (min 1.0 wt0)))
- (tab (make-vct dlen))
- ;; get initial waveform in "tab" -- here we can introduce 0's to simulate different pick
- ;; positions, and so on -- see the CMJ article for numerous extensions. The normal case
- ;; is to load it with white noise (between -1 and 1).
- (allp (make-one-zero (* lf (- 1.0 wt)) (* lf wt)))
- (feedb (make-one-zero c 1.0)) ;or (feedb (make-one-zero 1.0 c))
- (ctr 0))
-
- (do ((i 0 (1+ i)))
- ((= i dlen))
- (vct-set! tab i (- 1.0 (random 2.0))))
- (ws-interrupt?)
- (<rt-play> start dur
- (lambda ()
- (let ((val (vct-ref tab ctr))) ;current output value
- (vct-set! tab ctr (* (- 1.0 c)
- (one-zero feedb
- (one-zero allp val))))
- (set! ctr (+ ctr 1))
- (if (>= ctr dlen) (set! ctr 0))
- (out (* amp val))))))))
-
-#!
-(define (between min max) (+ min (random (- max min))))
-(c-for 0 < 60 (between 0.1 1.2)
- (lambda (i)
- (pluck i 5 (between 50 400) 0.5 :weighting 0.3 :lossfact 0.99)))
-!#
-
-;;; -------- mlbvoi
-;;;
-;;; translation from MUS10 of Marc LeBrun's waveshaping voice instrument (using FM here)
-;;; this version translated (and simplified slightly) from CLM's mlbvoi.ins
-
-(definstrument (vox beg dur freq amp ampfun freqfun freqscl phonemes formant-amps formant-indices :key (vibscl .1) (deg 0) (pcrev 0))
- (let ((formants
- '((I 390 1990 2550) (E 530 1840 2480) (AE 660 1720 2410)
- (UH 520 1190 2390) (A 730 1090 2440) (OW 570 840 2410)
- (U 440 1020 2240) (OO 300 870 2240) (ER 490 1350 1690)
- (W 300 610 2200) (LL 380 880 2575) (R 420 1300 1600)
- (Y 300 2200 3065) (EE 260 3500 3800) (LH 280 1450 1600)
- (L 300 1300 3000) (I2 350 2300 3340) (B 200 800 1750)
- (D 300 1700 2600) (G 250 1350 2000) (M 280 900 2200)
- (N 280 1700 2600) (NG 280 2300 2750) (P 300 800 1750)
- (T 200 1700 2600) (K 350 1350 2000) (F 175 900 4400)
- (TH 200 1400 2200) (S 200 1300 2500) (SH 200 1800 2000)
- (V 175 1100 2400) (THE 200 1600 2200)(Z 200 1300 2500)
- (ZH 175 1800 2000) (ZZ 900 2400 3800) (VV 565 1045 2400))))
- ;;formant center frequencies for a male speaker
-
- (define (find-phoneme phoneme forms)
- (if (eq? phoneme (car (car forms)))
- (cdr (car forms))
- (find-phoneme phoneme (cdr forms))))
-
- (define (vox-fun phons which)
- (let ((f1 '())
- (len (length phons)))
- (do ((i 0 (+ i 2)))
- ((>= i len))
- (set! f1 (cons (list-ref phons i) f1))
- (set! f1 (cons (list-ref (find-phoneme (list-ref phons (+ i 1)) formants) which) f1)))
- (reverse f1)))
-
- (let* ((start (inexact->exact (floor (* (mus-srate) beg))))
- (end (+ start (inexact->exact (floor (* (mus-srate) dur)))))
- (car-os (make-oscil :frequency 0))
- (fs (length formant-amps))
- (evens (make-vector fs))
- (odds (make-vector fs))
- (amps (make-vct fs))
- (indices (make-vct fs))
- (frmfs (make-vector fs))
- (ampf (make-env ampfun :scaler amp :duration dur))
- (freqf (make-env freqfun :duration dur :scaler (* freqscl freq) :offset freq))
- (frq 0.0)
- (carrier 0.0)
- (frm 0.0)
- (frm-int 0)
- (frm0 0.0)
- (even-amp 0.0)
- (odd-amp 0.0)
- (even-freq 0.0)
- (odd-freq 0.0)
- (sum 0.0)
- (loc (make-locsig deg 1.0 pcrev *output* *reverb* *rt-num-channels*));;(mus-channels *output*)))
- (per-vib (make-triangle-wave :frequency 6 :amplitude (* freq vibscl)))
- (ran-vib (make-rand-interp :frequency 20 :amplitude (* freq .5 vibscl))))
- (do ((i 0 (1+ i)))
- ((= i fs))
- (let ((amp (list-ref formant-amps i))
- (index (list-ref formant-indices i)))
- (vector-set! evens i (make-oscil :frequency 0))
- (vector-set! odds i (make-oscil :frequency 0))
- (vct-set! amps i amp)
- (vct-set! indices i index)
- (vector-set! frmfs i (make-env :envelope (vox-fun phonemes i) :duration dur))))
- (<rt-play> beg dur
- (lambda ()
- (declare (<int> frm-int))
- (set! frq (+ (env freqf) (triangle-wave per-vib) (rand-interp ran-vib)))
- (set! carrier (oscil car-os (hz->radians frq)))
- (set! sum 0.0)
- (do ((k 0 (1+ k))) ((= k fs))
- (set! frm (env (vector-ref frmfs k)))
- (set! frm0 (/ frm frq))
- (set! frm-int (inexact->exact (floor frm0)))
- (if (even? frm-int)
- (begin
- (set! even-freq (hz->radians (* frm-int frq)))
- (set! odd-freq (hz->radians (* (+ frm-int 1) frq)))
- (set! odd-amp (- frm0 frm-int))
- (set! even-amp (- 1.0 odd-amp)))
- (begin
- (set! odd-freq (hz->radians (* frm-int frq)))
- (set! even-freq (hz->radians (* (+ frm-int 1) frq)))
- (set! even-amp (- frm0 frm-int))
- (set! odd-amp (- 1.0 even-amp))))
- (set! sum (+ sum
- (* (vct-ref amps k)
- (+ (* even-amp (oscil (vector-ref evens k)
- (+ even-freq (* (vct-ref indices k) carrier))))
- (* odd-amp (oscil (vector-ref odds k)
- (+ odd-freq (* (vct-ref indices k) carrier)))))))))
- (locsig loc (* (env ampf) sum)))))))
-
-#!
-(define-macro (either . rest)
- (define i -1)
- (define sel (gensym))
- `(let ((,sel (random ,(length rest))))
- (cond ,@(map (lambda (b)
- (set! i (1+ i))
- `((= ,i ,sel)
- ,b))
- rest))))
-
-(c-for 0 < 10 (between 0.5 3.2)
- (lambda (i)
- (either
- (vox i 2 170 .4 '(0 0 25 1 75 1 100 0) '(0 0 5 .5 10 0 100 1) .1
- '(0 E 25 AE 35 ER 65 ER 75 I 100 UH) '(.8 .15 .05) '(.005 .0125 .025) .05 .1 :deg (between 0 90))
- (vox i 2 170 .4 '(0 0 25 1 75 1 100 0) '(0 0 5 .5 10 0 100 1) .1
- '(0 E 25 AE 35 ER 65 ER 75 I 100 UH) '(.8 .15 .05) '(.005 .0125 .025) .05 .1 :deg (between 0 90))
- (vox i 2 300 .4 '(0 0 25 1 75 1 100 0) '(0 0 5 .5 10 0 100 1) .1
- '(0 I 5 OW 10 I 50 AE 100 OO) '(.8 .15 .05) '(.05 .0125 .025) .02 .1 :deg (between 0 90))
- (vox i 5 600 .4 '(0 0 25 1 75 1 100 0) '(0 0 5 .5 10 0 100 1) .1
- '(0 I 5 OW 10 I 50 AE 100 OO) '(.8 .16 .04) '(.01 .01 .1) .01 .1 :deg (between 0 90))
- )))
-(rte-info)
-!#
-
-
-
-;;; -------- FOF example
-
-(definstrument (fofins beg dur frq amp vib f0 a0 f1 a1 f2 a2 :key (ae '(0 0 25 1 75 1 100 0)) ve)
- "(fofins beg dur frq amp vib f0 a0 f1 a1 f2 a2 :optional (ampenv '(0 0 25 1 75 1 100 0)) vibenv) produces FOF
-synthesis: (fofins 0 1 270 .2 .001 730 .6 1090 .3 2440 .1)"
- (let* ((two-pi (* 2 pi))
- (start (inexact->exact (floor (* beg (mus-srate)))))
- (len (inexact->exact (floor (* dur (mus-srate)))))
- (end (+ start len))
- (ampf (make-env :envelope ae :scaler amp :duration dur))
- (vibf (make-env :envelope (or ve (list 0 1 100 1)) :scaler vib :duration dur))
- (frq0 (hz->radians f0))
- (frq1 (hz->radians f1))
- (frq2 (hz->radians f2))
- (foflen (if (= (mus-srate) 22050) 100 200))
- (vibr (make-oscil :frequency 6))
- (win-freq (/ two-pi foflen))
- (wt0 (make-wave-train :size foflen :frequency frq))
- (foftab (mus-data wt0)))
- (do ((i 0 (1+ i)))
- ((= i foflen))
- (vct-set! foftab i (* (+ (* a0 (sin (* i frq0)))
- (* a1 (sin (* i frq1)))
- (* a2 (sin (* i frq2))))
- .5 (- 1.0 (cos (* i win-freq))))))
- (ws-interrupt?)
- (<rt-play> beg dur
- (lambda ()
- (out (* (env ampf)
- (wave-train wt0 (* (env vibf)
- (oscil vibr)))) )))))
-
-#!
-(fofins 0 1 270 .2 .001 730 .6 1090 .3 2440 .1)
-!#
-
-
-;;; FM TRUMPET ---------------------------------------------------
-;;; Dexter Morrill's FM-trumpet:
-;;; from CMJ feb 77 p51
-
-(definstrument (fm-trumpet startime dur
- :key (frq1 250.0)
- (frq2 1500.0)
- (amp1 0.5)
- (amp2 0.1)
- (ampatt1 0.03)
- (ampdec1 0.35)
- (ampatt2 0.03)
- (ampdec2 0.3)
- (modfrq1 250.0)
- (modind11 0.0)
- (modind12 2.66)
- (modfrq2 250.0)
- (modind21 0.0)
- (modind22 1.8)
- (rvibamp 0.007)
- (rvibfrq 125.0)
- (vibamp 0.007)
- (vibfrq 7.0)
- (vibatt 0.6)
- (vibdec 0.2)
- (frqskw 0.03)
- (frqatt 0.06)
- (ampenv1 '(0 0 25 1 75 .9 100 0))
- (ampenv2 '(0 0 25 1 75 .9 100 0))
- (indenv1 '(0 0 25 1 75 .9 100 0))
- (indenv2 '(0 0 25 1 75 .9 100 0))
- (degree 0.0)
- (distance 1.0)
- (reverb-amount 0.005))
- (let* ((beg (inexact->exact (floor (* startime (mus-srate)))))
- (end (+ beg (inexact->exact (floor (* dur (mus-srate))))))
- (loc (make-locsig degree distance reverb-amount *output* *reverb* *rt-num-channels*));;(mus-channels *output*)))
- (per-vib-f (make-env :envelope (stretch-envelope '(0 1 25 .1 75 0 100 0)
- 25 (min (* 100 (/ vibatt dur)) 45)
- 75 (max (* 100 (- 1.0 (/ vibdec dur))) 55))
- :scaler vibamp :duration dur))
- (ran-vib (make-rand-interp :frequency rvibfrq :amplitude rvibamp))
- (per-vib (make-oscil :frequency vibfrq))
- (dec-01 (max 75 (* 100 (- 1.0 (/ .01 dur)))))
- (frq-f (make-env :envelope (stretch-envelope '(0 0 25 1 75 1 100 0)
- 25 (min 25 (* 100 (/ frqatt dur)))
- 75 dec-01)
- :scaler frqskw :duration dur))
- (ampattpt1 (min 25 (* 100 (/ ampatt1 dur))))
- (ampdecpt1 (max 75 (* 100 (- 1.0 (/ ampdec1 dur)))))
- (ampattpt2 (min 25 (* 100 (/ ampatt2 dur))))
- (ampdecpt2 (max 75 (* 100 (- 1.0 (/ ampdec2 dur)))))
-
- (mod1-f (make-env :envelope (stretch-envelope indenv1 25 ampattpt1 75 dec-01)
- :scaler (* modfrq1 (- modind12 modind11)) :duration dur))
- (mod1 (make-oscil :frequency 0.0))
- (car1 (make-oscil :frequency 0.0))
- ;; set frequency to zero here because it is handled multiplicatively below
- (car1-f (make-env :envelope (stretch-envelope ampenv1 25 ampattpt1 75 ampdecpt1)
- :scaler amp1 :duration dur))
-
- (mod2-f (make-env :envelope (stretch-envelope indenv2 25 ampattpt2 75 dec-01)
- :scaler (* modfrq2 (- modind22 modind21)) :duration dur))
- (mod2 (make-oscil :frequency 0.0))
- (car2 (make-oscil :frequency 0.0))
- (car2-f (make-env :envelope (stretch-envelope ampenv2 25 ampattpt2 75 ampdecpt2)
- :scaler amp2 :duration dur)))
- (ws-interrupt?)
- (<rt-play> startime dur
- (lambda ()
- (let ((frq-change (hz->radians (* (+ 1.0 (rand-interp ran-vib))
- (+ 1.0 (* (env per-vib-f) (oscil per-vib)))
- (+ 1.0 (env frq-f))))))
- (locsig loc (+ (* (env car1-f)
- (oscil car1 (* frq-change
- (+ frq1 (* (env mod1-f)
- (oscil mod1 (* modfrq1 frq-change)))))))
- (* (env car2-f)
- (oscil car2 (* frq-change
- (+ frq2 (* (env mod2-f)
- (oscil mod2 (* modfrq2 frq-change))))))))))))))
-
-#!
-(fm-trumpet 0 2)
-!#
-
-
-;;; -------- PQWVOX
-;;; translation of CLM pqwvox.ins (itself translated from MUS10 of MLB's waveshaping voice instrument (using phase quadrature waveshaping))
-
-(definstrument (pqw-vox beg dur freq spacing-freq amp ampfun freqfun freqscl phonemes formant-amps formant-shapes)
- "(pqw-vox beg dur freq spacing-freq amp ampfun freqfun freqscl phonemes formant-amps formant-shapes) produces
-vocal sounds using phase quadrature waveshaping"
-
- (define formants
- '((I 390 1990 2550) (E 530 1840 2480) (AE 660 1720 2410)
- (UH 520 1190 2390) (A 730 1090 2440) (OW 570 840 2410)
- (U 440 1020 2240) (OO 300 870 2240) (ER 490 1350 1690)
- (W 300 610 2200) (LL 380 880 2575) (R 420 1300 1600)
- (Y 300 2200 3065) (EE 260 3500 3800) (LH 280 1450 1600)
- (L 300 1300 3000) (I2 350 2300 3340) (B 200 800 1750)
- (D 300 1700 2600) (G 250 1350 2000) (M 280 900 2200)
- (N 280 1700 2600) (NG 280 2300 2750) (P 300 800 1750)
- (T 200 1700 2600) (K 350 1350 2000) (F 175 900 4400)
- (TH 200 1400 2200) (S 200 1300 2500) (SH 200 1800 2000)
- (V 175 1100 2400) (THE 200 1600 2200)(Z 200 1300 2500)
- (ZH 175 1800 2000) (ZZ 900 2400 3800) (VV 565 1045 2400)))
- ;;formant center frequencies for a male speaker
-
- (define (find-phoneme phoneme form)
- (if (eq? (car (car form)) phoneme)
- (cdr (car form))
- (find-phoneme phoneme (cdr form))))
-
- (define (vox-fun phons which newenv)
- ;; make an envelope from which-th entry of phoneme data referred to by phons
- (if (null? phons)
- newenv
- (vox-fun (cddr phons) which
- (append newenv
- (list (car phons)
- (list-ref (find-phoneme (cadr phons) formants) which))))))
- (let* ((start (inexact->exact (floor (* (mus-srate) beg))))
- (samps (inexact->exact (floor (* (mus-srate) dur))))
- (end (+ start samps))
- (car-sin (make-oscil :frequency 0))
- (car-cos (make-oscil :frequency 0 :initial-phase (/ pi 2.0)))
- (frq-ratio (/ spacing-freq freq))
- (fs (length formant-amps))
- (sin-evens (make-vector fs))
- (cos-evens (make-vector fs))
- (sin-odds (make-vector fs))
- (cos-odds (make-vector fs))
- (amps (make-vector fs))
- (frmfs (make-vector fs))
- (sin-coeffs (make-vector fs))
- (cos-coeffs (make-vector fs))
- (ampf (make-env :envelope ampfun :scaler amp :duration dur))
- (freqf (make-env :envelope freqfun :duration dur :scaler (* freqscl freq) :offset freq))
- (per-vib (make-triangle-wave :frequency 6.0 :amplitude (* freq .1)))
- (ran-vib (make-rand-interp :frequency 20.0 :amplitude (* freq .05))))
- (do ((i 0 (1+ i)))
- ((= i fs))
- (let* ((amp (list-ref formant-amps i))
- (fshape (list-ref formant-shapes i))
- (shape (normalize-partials fshape)))
- (vector-set! sin-evens i (make-oscil :frequency 0))
- (vector-set! sin-odds i (make-oscil :frequency 0))
- (vector-set! cos-evens i (make-oscil :frequency 0 :initial-phase (/ pi 2.0)))
- (vector-set! cos-odds i (make-oscil :frequency 0 :initial-phase (/ pi 2.0)))
- (vector-set! amps i amp)
- (vector-set! cos-coeffs i (partials->polynomial shape mus-chebyshev-first-kind))
- (vector-set! sin-coeffs i (partials->polynomial shape mus-chebyshev-second-kind))
- (vector-set! frmfs i (make-env :envelope (vox-fun phonemes i '()) :duration dur))))
- (ws-interrupt?)
- (<rt-play> beg dur
- (lambda ()
- (let* ((frq (+ (env freqf) (triangle-wave per-vib) (rand-interp ran-vib)))
- (frqscl (hz->radians (* frq frq-ratio)))
- (carsin (oscil car-sin frqscl))
- (carcos (oscil car-cos frqscl))
- (even-amp 0.0)
- (odd-amp 0.0)
- (even-freq 0.0)
- (odd-freq 0.0)
- (sum 0.0))
- (do ((k 0 (1+ k)))
- ((= k fs))
- (let* ((frm (env (vector-ref frmfs k)))
- (frm0 (/ frm frq))
- (frm-int (inexact->exact (floor frm0))))
- (if (even? frm-int)
- (begin
- (set! even-freq (hz->radians (* frm-int frq)))
- (set! odd-freq (hz->radians (* (+ frm-int 1) frq)))
- (set! odd-amp (- frm0 frm-int))
- (set! even-amp (- 1.0 odd-amp)))
- (begin
- (set! odd-freq (hz->radians (* frm-int frq)))
- (set! even-freq (hz->radians (* (+ frm-int 1) frq)))
- (set! even-amp (- frm0 frm-int))
- (set! odd-amp (- 1.0 even-amp))))
- (let* ((fax (polynomial (vector-ref cos-coeffs k) carcos))
- (yfax (* carsin (polynomial (vector-ref sin-coeffs k) carcos))))
- (set! sum (+ sum (* (vector-ref amps k)
- (+ (* even-amp (- (* yfax (oscil (vector-ref sin-evens k) even-freq))
- (* fax (oscil (vector-ref cos-evens k) even-freq))))
- (* odd-amp (- (* yfax (oscil (vector-ref sin-odds k) odd-freq))
- (* fax (oscil (vector-ref cos-odds k) odd-freq)))))))))))
- (out (* (env ampf) sum)))))))
-
-#!
-(pqw-vox 0 1 300 300 .1 '(0 0 50 1 100 0) '(0 0 100 0) 0 '(0 L 100 L) '(.33 .33 .33) '((1 1 2 .5) (1 .5 2 .5 3 1) (1 1 4 .5)))
-(a test to see if the cancellation is working -- sounds like a mosquito)
-
-(pqw-vox 0 2 200 200 .1 '(0 0 50 1 100 0) '(0 0 100 1) .1 '(0 UH 100 ER) '(.8 .15 .05) '((1 1 2 .5) (1 1 2 .5 3 .2 4 .1) (1 1 3 .1 4 .5)))
-(pqw-vox 0 2 100 314 .1 '(0 0 50 1 100 0) '(0 0 100 1) .1 '(0 UH 100 ER) '(.8 .15 .05) '((1 1 2 .5) (1 1 2 .5 3 .2 4 .1) (1 1 3 .1 4 .5)))
-(pqw-vox 0 2 200 314 .1 '(0 0 50 1 100 0) '(0 0 100 1) .01 '(0 UH 100 ER) '(.8 .15 .05) '((1 1 2 .5) (1 1 4 .1) (1 1 2 .1 4 .05)))
-(pqw-vox 0 2 100 414 .2 '(0 0 50 1 100 0) '(0 0 100 1) .01 '(0 OW 50 E 100 ER) '(.8 .15 .05) '((1 1 2 .5 3 .1 4 .01) (1 1 4 .1) (1 1 2 .1 4 .05)))
-!#
-
-
-
-;;; -------- STEREO-FLUTE
-(definstrument (stereo-flute start dur freq flow
- :key
- (flow-envelope '(0 1 100 1))
- (decay 0.01) ; additional time for instrument to decay
- (noise 0.0356)
- (embouchure-size 0.5)
- (fbk-scl1 0.5) ; these two are crucial for good results
- (fbk-scl2 0.55)
- (offset-pos 0.764264) ; from 0.0 to 1.0 along the bore
- (out-scl 1.0)
- (a0 0.7) (b1 -0.3) ; filter coefficients
- (vib-rate 5) (vib-amount 0.03)
- (ran-rate 5) (ran-amount 0.03))
- "(stereo-flute dur freq flow
- :key (flow-envelope '(0 1 100 1)) (decay 0.01)
- (noise 0.0356) (embouchure-size 0.5) (fbk-scl1 0.5)
- (fbk-scl2 0.55) (offset-pos 0.764264) (out-scl 1.0)
- (a0 0.7) (b1 -0.3) (vib-rate 5) (vib-amount 0.03)
- (ran-rate 5) (ran-amount 0.03))
-is a physical model of a flute:
- (stereo-flute 0 1 440 .55 :flow-envelope '(0 0 1 1 2 1 3 0))"
-
- (let* ((current-excitation 0.0)
- (current-difference 0.0)
- (current-flow 0.0)
- (out-sig 0.0)
- (tap-sig 0.0)
- (previous-out-sig 0.0)
- (previous-tap-sig 0.0)
- (dc-blocked-a 0.0)
- (dc-blocked-b 0.0)
- (previous-dc-blocked-a 0.0)
- (previous-dc-blocked-b 0.0)
- (delay-sig 0.0)
- (emb-sig 0.0)
- (beg (inexact->exact (floor (* start (mus-srate)))))
- (len (inexact->exact (floor (* dur (mus-srate)))))
- (end (+ beg len))
- (chns *rt-num-channels*);;(mus-channels *output*))
- (flowf (make-env :envelope flow-envelope
- :scaler flow
- :duration (- dur decay)))
- (periodic-vibrato (make-oscil :frequency vib-rate))
- (random-vibrato (make-rand-interp :frequency ran-rate))
- (breath (make-rand :frequency (/ (mus-srate) 2) :amplitude 1))
- (period-samples (inexact->exact (floor (/ (mus-srate) freq))))
- (embouchure-samples (inexact->exact (floor (* embouchure-size period-samples))))
- (embouchure (make-delay embouchure-samples :initial-element 0.0))
- (bore (make-delay period-samples))
- (offset (inexact->exact (floor (* period-samples offset-pos))))
- (reflection-lowpass-filter (make-one-pole a0 b1)))
- (ws-interrupt?)
- (<rt-play> start dur
- (lambda ()
- (set! delay-sig (delay bore out-sig))
- (set! emb-sig (delay embouchure current-difference))
- (set! current-flow (+ (* vib-amount (oscil periodic-vibrato))
- (* ran-amount (rand-interp random-vibrato))
- (env flowf)))
- (set! current-difference
- (+ (+ current-flow (* noise (* current-flow (rand breath))))
- (* fbk-scl1 delay-sig)))
- ;(set! current-excitation (cubic-polynomial emb-sig))
- (set! current-excitation (- emb-sig (* emb-sig emb-sig emb-sig)))
- (set! out-sig (one-pole reflection-lowpass-filter
- (+ current-excitation (* fbk-scl2 delay-sig))))
- (set! tap-sig (tap bore offset))
- ;; NB the DC blocker is not in the cicuit. It is applied to the out-sig
- ;; but the result is not fed back into the system.
- (set! dc-blocked-a (+ (- out-sig previous-out-sig) (* 0.995 previous-dc-blocked-a)))
- (set! dc-blocked-b (+ (- tap-sig previous-tap-sig) (* 0.995 previous-dc-blocked-b)))
- (out 0 (* out-scl dc-blocked-a))
- (if (> chns 1)
- (out 1 (* out-scl dc-blocked-b) *output*))
- (set! previous-out-sig out-sig)
- (set! previous-dc-blocked-a dc-blocked-a)
- (set! previous-tap-sig tap-sig)
- (set! previous-dc-blocked-b dc-blocked-b)))))
-
-#!
-(stereo-flute 0 1 440 .55 :flow-envelope '(0 0 1 1 2 1 3 0))
-!#
-
-
-;;; -------- FM-BELL
-(definstrument (fm-bell startime dur frequency amplitude :key amp-env index-env index)
- "(fm-bell startime dur frequency amplitude :optional amp-env index-env index) mixes in one fm bell note"
- (let* ((beg (inexact->exact (floor (* startime (mus-srate)))))
- (len (inexact->exact (floor (* dur (mus-srate)))))
- (end (+ beg len))
- (fmInd1 (hz->radians (* 32.0 frequency)))
- (fmInd2 (hz->radians (* 4.0 (- 8.0 (/ frequency 50.0)))))
- (fmInd3 (* fmInd2 0.705 (- 1.4 (/ frequency 250.0))))
- (fmInd4 (hz->radians (* 32.0 (- 20 (/ frequency 20)))))
- (mod1 (make-oscil :frequency (* frequency 2)))
- (mod2 (make-oscil :frequency (* frequency 1.41)))
- (mod3 (make-oscil :frequency (* frequency 2.82)))
- (mod4 (make-oscil :frequency (* frequency 2.4)))
- (car1 (make-oscil :frequency frequency))
- (car2 (make-oscil :frequency frequency))
- (car3 (make-oscil :frequency (* frequency 2.4)))
- (indf (make-env (or index-env
- (list 0 1 2 1.1 25 .75 75 .5 100 .2))
- (or index 1.0) dur))
- (ampf (make-env (or amp-env
- (list 0 0 .1 1 10 .6 25 .3 50 .15 90 .1 100 0))
- amplitude dur)))
- (ws-interrupt?)
- (<rt-play> startime dur
- (lambda ()
- (let ((fmenv (env indf)))
- (out (* (env ampf)
- (+ (oscil car1 (* fmenv fmInd1 (oscil mod1)))
- (* .15 (oscil car2 (* fmenv
- (+ (* fmInd2 (oscil mod2))
- (* fmInd3
- (oscil mod3))))))
- (* .15 (oscil car3 (* fmenv
- fmInd4
- (oscil mod4))))))))))))
-
-
-#!
-(define fbell '(0 1 2 1.1000 25 .7500 75 .5000 100 .2000 ))
-(define abell '(0 0 .1000 1 10 .6000 25 .3000 50 .1500 90 .1000 100 0 ))
-(fm-bell 0.0 1.0 220.0 .5 abell fbell 1.0)
-!#
-
-
-;;; -------- FM_INSECT
-(definstrument (fm-insect startime dur frequency amplitude amp-env
- mod-freq mod-skew mod-freq-env mod-index mod-index-env
- fm-index fm-ratio
- :key (degree 45.0)
- (distance 1.0)
- (reverb-amount 0.005))
- (let* ((beg (inexact->exact (floor (* startime (mus-srate)))))
- (end (+ beg (inexact->exact (floor (* dur (mus-srate))))))
- (loc (make-locsig degree distance reverb-amount *output* *reverb* *rt-num-channels*));;(mus-channels *output*)))
- (carrier (make-oscil :frequency frequency))
- (fm1-osc (make-oscil :frequency mod-freq))
- (fm2-osc (make-oscil :frequency (* fm-ratio frequency)))
- (ampf (make-env :envelope amp-env :scaler amplitude :duration dur))
- (indf (make-env :envelope mod-index-env :scaler (hz->radians mod-index) :duration dur))
- (modfrqf (make-env :envelope mod-freq-env :scaler (hz->radians mod-skew) :duration dur))
- (fm2-amp (hz->radians (* fm-index fm-ratio frequency))))
- (ws-interrupt?)
- (<rt-play> startime dur
- (lambda ()
- (let* ((garble-in (* (env indf)
- (oscil fm1-osc (env modfrqf))))
- (garble-out (* fm2-amp (oscil fm2-osc garble-in))))
- (locsig loc (* (env ampf)
- (oscil carrier (+ garble-out garble-in)))))))))
-
-#|
-(let ((locust '(0 0 40 1 95 1 100 .5))
- (bug_hi '(0 1 25 .7 75 .78 100 1))
- (amp '(0 0 25 1 75 .7 100 0)))
- (fm-insect 0 1.699 4142.627 .015 amp 60 -16.707 locust 500.866 bug_hi .346 .500)
- (fm-insect 0.195 .233 4126.284 .030 amp 60 -12.142 locust 649.490 bug_hi .407 .500)
- (fm-insect 0.217 2.057 3930.258 .045 amp 60 -3.011 locust 562.087 bug_hi .591 .500)
- (fm-insect 2.100 1.500 900.627 .06 amp 40 -16.707 locust 300.866 bug_hi .346 .500)
- (fm-insect 3.000 1.500 900.627 .06 amp 40 -16.707 locust 300.866 bug_hi .046 .500)
- (fm-insect 3.450 1.500 900.627 .09 amp 40 -16.707 locust 300.866 bug_hi .006 .500)
- (fm-insect 3.950 1.500 900.627 .12 amp 40 -10.707 locust 300.866 bug_hi .346 .500)
- (fm-insect 4.300 1.500 900.627 .09 amp 40 -20.707 locust 300.866 bug_hi .246 .500))
-
-|#
-
-
-;;; -------- FM-DRUM
-;;; Jan Mattox's fm drum:
-
-(definstrument (fm-drum start-time duration frequency amplitude index
- :key (high #f) (degree 0.0) (distance 1.0) (reverb-amount 0.01))
- (let* ((beg (inexact->exact (floor (* start-time (mus-srate)))))
- (end (+ beg (inexact->exact (floor (* duration (mus-srate))))))
- ;; many of the following variables were originally passed as arguments
- (casrat (if high 8.525 3.515))
- (fmrat (if high 3.414 1.414))
- (glsfun '(0 0 25 0 75 1 100 1))
- (glsf (make-env :envelope glsfun :scaler (if high (hz->radians 66) 0.0) :duration duration))
- (ampfun '(0 0 3 .05 5 .2 7 .8 8 .95 10 1.0 12 .95 20 .3 30 .1 100 0))
- (atdrpt (* 100 (/ (if high .01 .015) duration)))
- (ampf (make-env :envelope (stretch-envelope ampfun
- 10 atdrpt
- 15 (max (+ atdrpt 1)
- (- 100 (* 100 (/ (- duration .2) duration)))))
- :scaler amplitude :duration duration))
- (indxfun '(0 0 5 .014 10 .033 15 .061 20 .099
- 25 .153 30 .228 35 .332 40 .477
- 45 .681 50 .964 55 .681 60 .478 65 .332
- 70 .228 75 .153 80 .099 85 .061
- 90 .033 95 .0141 100 0))
- (indxpt (- 100 (* 100 (/ (- duration .1) duration))))
- (divindxf (stretch-envelope indxfun 50 atdrpt 65 indxpt))
- (indxf (make-env :envelope divindxf :scaler (min (hz->radians (* index fmrat frequency)) pi) :duration duration))
- (mindxf (make-env :envelope divindxf :scaler (min (hz->radians (* index casrat frequency)) pi) :duration duration))
- (devf (make-env :envelope (stretch-envelope ampfun
- 10 atdrpt
- 90 (max (+ atdrpt 1)
- (- 100 (* 100 (/ (- duration .05) duration)))))
- :scaler (min pi (hz->radians 7000)) :duration duration))
- (loc (make-locsig degree distance reverb-amount *output* *reverb* *rt-num-channels*))
- (rn (make-rand :frequency 7000 :amplitude 1.0))
- (carrier (make-oscil :frequency frequency))
- (fmosc (make-oscil :frequency (* frequency fmrat)))
- (cascade (make-oscil :frequency (* frequency casrat))))
- (ws-interrupt?)
- (<rt-play> start-time duration
- (lambda ()
- (let ((gls (env glsf)))
- (locsig loc (* (env ampf)
- (oscil carrier
- (+ gls
- (* (env indxf)
- (oscil fmosc
- (+ (* gls fmrat)
- (* (env mindxf)
- (oscil cascade
- (+ (* gls casrat)
- (* (env devf) (rand rn)))))))))))))))))
-
-#|
-(begin
- (fm-drum 0 1.5 55 .3 5 #f)
- (fm-drum 2 1.5 66 .3 4 #t))
-|#
-
-
-;;; -------- FM-GONG
-;;; Paul Weineke's gong.
-
-(definstrument (gong start-time duration frequency amplitude
- :key (degree 0.0) (distance 1.0) (reverb-amount 0.005))
- (let* ((mfq1 (* frequency 1.16))
- (mfq2 (* frequency 3.14))
- (mfq3 (* frequency 1.005))
- (indx01 (hz->radians (* .01 mfq1)))
- (indx11 (hz->radians (* .30 mfq1)))
- (indx02 (hz->radians (* .01 mfq2)))
- (indx12 (hz->radians (* .38 mfq2)))
- (indx03 (hz->radians (* .01 mfq3)))
- (indx13 (hz->radians (* .50 mfq3)))
- (atpt 5)
- (atdur (* 100 (/ .002 duration)))
- (expf '(0 0 3 1 15 .5 27 .25 50 .1 100 0))
- (rise '(0 0 15 .3 30 1.0 75 .5 100 0))
- (fmup '(0 0 75 1.0 98 1.0 100 0))
- (fmdwn '(0 0 2 1.0 100 0))
- (ampfun (make-env :envelope (stretch-envelope expf atpt atdur)
- :scaler amplitude :duration duration))
- (indxfun1 (make-env :envelope fmup :duration duration
- :scaler (- indx11 indx01) :offset indx01))
- (indxfun2 (make-env :envelope fmdwn :duration duration
- :scaler (- indx12 indx02) :offset indx02))
- (indxfun3 (make-env :envelope rise :duration duration
- :scaler (- indx13 indx03) :offset indx03))
- (loc (make-locsig degree distance reverb-amount *output* *reverb* *rt-num-channels*))
- (carrier (make-oscil :frequency frequency))
- (mod1 (make-oscil :frequency mfq1))
- (mod2 (make-oscil :frequency mfq2))
- (mod3 (make-oscil :frequency mfq3))
- (beg (inexact->exact (floor (* start-time (mus-srate)))))
- (end (+ beg (inexact->exact (floor (* duration (mus-srate)))))))
- (ws-interrupt?)
- (<rt-play> start-time duration
- (lambda ()
- (locsig loc (* (env ampfun)
- (oscil carrier (+ (* (env indxfun1) (oscil mod1))
- (* (env indxfun2) (oscil mod2))
- (* (env indxfun3) (oscil mod3))))))))))
-
-#!
-(gong 0 3 261.61 .6))
-!#
-
-
-(definstrument (attract beg dur amp c-1) ;c from 1 to 10 or so
- ;; by James McCartney, from CMJ vol 21 no 3 p 6
- (let* ((st (inexact->exact (floor (* beg (mus-srate)))))
- (nd (+ st (inexact->exact (floor (* dur (mus-srate))))))
- (c c-1) (a .2) (b .2) (dt .04)
- (scale (/ (* .5 amp) c))
- (x -1.0) (y 0.0) (z 0.0))
- (ws-interrupt?)
- (<rt-play> beg dur
- (lambda ()
- (let ((x1 (- x (* dt (+ y z)))))
- (set! y (+ y (* dt (+ x (* a y)))))
- (set! z (+ z (* dt (- (+ b (* x z)) (* c z)))))
- (set! x x1)
- (out (* scale x)))))))
-#!
-(c-for 0.9 <= 15 (between 0.1 2)
- (lambda (i)
- (attract i 2 0.5 i)))
-!#
-
-
-;;; -------- PQW
-(definstrument (pqw start dur spacing-freq carrier-freq amplitude ampfun indexfun partials
- :key (degree 0.0)
- (distance 1.0)
- (reverb-amount 0.005))
- ;; phase-quadrature waveshaping used to create asymmetric (i.e. single side-band) spectra.
- ;; The basic idea here is a variant of sin x sin y - cos x cos y = cos (x + y)
- (let* ((normalized-partials (normalize-partials partials))
- (spacing-cos (make-oscil :frequency spacing-freq :initial-phase (/ pi 2.0)))
- (spacing-sin (make-oscil :frequency spacing-freq))
- (carrier-cos (make-oscil :frequency carrier-freq :initial-phase (/ pi 2.0)))
- (carrier-sin (make-oscil :frequency carrier-freq))
- (sin-coeffs (partials->polynomial normalized-partials mus-chebyshev-second-kind))
- (cos-coeffs (partials->polynomial normalized-partials mus-chebyshev-first-kind))
- (amp-env (make-env :envelope ampfun :scaler amplitude :duration dur))
- (ind-env (make-env :envelope indexfun :duration dur))
- (loc (make-locsig degree distance reverb-amount *output* *reverb* *rt-num-channels*))
- (r (/ carrier-freq spacing-freq))
- (tr (make-triangle-wave :frequency 5 :amplitude (hz->radians (* .005 spacing-freq))))
- (rn (make-rand-interp :frequency 12 :amplitude (hz->radians (* .005 spacing-freq))))
- (beg (inexact->exact (floor (* start (mus-srate)))))
- (end (+ beg (inexact->exact (floor (* dur (mus-srate)))))))
- (ws-interrupt?)
- (<rt-play> start dur
- (lambda ()
- (let* ((vib (+ (triangle-wave tr) (rand-interp rn)))
- (ax (* (min 1.0 (env ind-env)) (oscil spacing-cos vib)))
- (fax (polynomial cos-coeffs ax))
- (yfax (* (oscil spacing-sin vib) (polynomial sin-coeffs ax))))
- (locsig loc (* (env amp-env)
- (- (* (oscil carrier-sin (* vib r)) yfax)
- (* (oscil carrier-cos (* vib r)) fax)))))))))
-
-#!
-(pqw 0 .5 200 1000 .2 '(0 0 25 1 100 0) '(0 1 100 0) '(2 .1 3 .3 6 .5))
-!#
-; to see the asymmetric spectrum most clearly, set the index function above to '(0 1 100 1)
-
-
-;;; taken from Perry Cook's stkv1.tar.Z (Synthesis Toolkit), but I was
-;;; in a bit of a hurry and may not have made slavishly accurate translations.
-;;; Please let me (bil@ccrma.stanford.edu) know of any serious (non-envelope) errors.
-
-(definstrument (tubebell beg dur freq amp :key (base 32.0))
- ;; from Perry Cook's TubeBell.cpp
- (let* ((osc0 (make-oscil (* freq 0.995)))
- (osc1 (make-oscil (* freq 1.414 0.995)))
- (osc2 (make-oscil (* freq 1.005)))
- (osc3 (make-oscil (* freq 1.414)))
- (ampenv1 (make-env (list 0 0 .005 1 dur 0) :base base :duration dur))
- (ampenv2 (make-env (list 0 0 .001 1 dur 0) :base (* 2 base) :duration dur))
- (ampmod (make-oscil 2.0))
- (g0 (* .5 amp .707))
- (g1 .203)
- (g2 (* .5 amp 1.0))
- (g3 .144)
- (st (inexact->exact (floor (* beg (mus-srate)))))
- (nd (+ st (inexact->exact (floor (* dur (mus-srate)))))))
- (ws-interrupt?)
- (<rt-play> beg dur
- (lambda ()
- (out (* (+ (* .007 (oscil ampmod)) .993)
- (+ (* g0 (env ampenv1) (oscil osc0 (* g1 (oscil osc1))))
- (* g2 (env ampenv2) (oscil osc2 (* g3 (oscil osc3)))))))))))
-
-#!
-(tubebell 0 2 200 0.5)
-!#
-
-
-(definstrument (wurley beg dur freq amp)
- ;; from Perry Cook's Wurley.cpp
- (let* ((osc0 (make-oscil freq))
- (osc1 (make-oscil (* freq 4.0)))
- (osc2 (make-oscil 510.0))
- (osc3 (make-oscil 510.0))
- (ampmod (make-oscil 8.0))
- (g0 (* .5 amp))
- (g1 .307)
- (g2 (* .5 amp .307))
- (g3 .117)
- (ampenv (make-env '(0 0 1 1 9 1 10 0) :duration dur))
- (indenv (make-env (list 0 0 .001 1 .15 0 (max dur .16) 0) :duration dur))
- (resenv (make-env (list 0 0 .001 1 .25 0 (max dur .26) 0) :duration dur))
- (st (inexact->exact (floor (* beg (mus-srate)))))
- (nd (+ st (inexact->exact (floor (* dur (mus-srate)))))))
- (ws-interrupt?)
- (<rt-play> beg dur
- (lambda ()
- (out (* (env ampenv)
- (+ 1.0 (* .007 (oscil ampmod)))
- (+ (* g0 (oscil osc0 (* g1 (oscil osc1))))
- (* (env resenv) g2 (oscil osc2 (* g3 (env indenv) (oscil osc3)))))))))))
-
-#!
-(wurley 0 2 200 0.5)
-!#
-
-
-(definstrument (rhodey beg dur freq amp :key (base .5))
- ;; from Perry Cook's Rhodey.cpp
- (let* ((osc0 (make-oscil freq))
- (osc1 (make-oscil (* freq 0.5)))
- (osc2 (make-oscil freq))
- (osc3 (make-oscil (* freq 15.0)))
- (ampenv1 (make-env (list 0 0 .005 1 dur 0) :base base :duration dur))
- (ampenv2 (make-env (list 0 0 .001 1 dur 0) :base (* base 1.5) :duration dur))
- (ampenv3 (make-env (list 0 0 .001 1 .25 0 (max dur .26) 0) :base (* base 4) :duration dur))
- (g0 (* .5 amp))
- (g1 .535)
- (g2 (* .5 amp))
- (g3 .109)
- (st (inexact->exact (floor (* beg (mus-srate)))))
- (nd (+ st (inexact->exact (floor (* dur (mus-srate)))))))
- (ws-interrupt?)
- (<rt-play> beg dur
- (lambda ()
- (out (+ (* g0 (env ampenv1) (oscil osc0 (* g1 (oscil osc1))))
- (* g2 (env ampenv2) (oscil osc2 (* (env ampenv3) g3 (oscil osc3))))))))))
-
-#!
-(rhodey 0 2 200 0.5)
-!#
-
-
-(definstrument (hammondoid beg dur freq amp)
- ;; from Perry Cook's BeeThree.cpp
- (let* ((osc0 (make-oscil (* freq 0.999)))
- (osc1 (make-oscil (* freq 1.997)))
- (osc2 (make-oscil (* freq 3.006)))
- (osc3 (make-oscil (* freq 6.009)))
- (ampenv1 (make-env (list 0 0 .005 1 (- dur .008) 1 dur 0) :duration dur))
- (ampenv2 (make-env (list 0 0 .005 1 dur 0) :duration dur))
- (g0 (* .25 .75 amp))
- (g1 (* .25 .75 amp))
- (g2 (* .5 amp))
- (g3 (* .5 .75 amp))
- (st (inexact->exact (floor (* beg (mus-srate)))))
- (nd (+ st (inexact->exact (floor (* dur (mus-srate)))))))
- (ws-interrupt?)
- (<rt-play> beg dur
- (lambda ()
- (out (+ (* (env ampenv1)
- (+ (* g0 (oscil osc0))
- (* g1 (oscil osc1))
- (* g2 (oscil osc2))))
- (* (env ampenv2) g3 (oscil osc3))))))))
-
-
-#!
-(hammondoid 0 2 200 0.5)
-!#
-
-
-(definstrument (metal beg dur freq amp)
- ;; from Perry Cook's HeavyMtl.cpp
- (let* ((osc0 (make-oscil freq))
- (osc1 (make-oscil (* freq 4.0 0.999)))
- (osc2 (make-oscil (* freq 3.0 1.001)))
- (osc3 (make-oscil (* freq 0.50 1.002)))
- (ampenv0 (make-env (list 0 0 .001 1 (- dur .002) 1 dur 0) :duration dur))
- (ampenv1 (make-env (list 0 0 .001 1 (- dur .011) 1 dur 0) :duration dur))
- (ampenv2 (make-env (list 0 0 .01 1 (- dur .015) 1 dur 0) :duration dur))
- (ampenv3 (make-env (list 0 0 .03 1 (- dur .040) 1 dur 0) :duration dur))
- (g0 (* .615 amp))
- (g1 .202)
- (g2 .574)
- (g3 .116)
- (st (inexact->exact (floor (* beg (mus-srate)))))
- (nd (+ st (inexact->exact (floor (* dur (mus-srate)))))))
- (ws-interrupt?)
- (<rt-play> beg dur
- (lambda ()
- (out (* g0 (env ampenv0)
- (oscil osc0
- (+ (* g1 (env ampenv1)
- (oscil osc1
- (* g2 (env ampenv2)
- (oscil osc2))))
- (* g3 (env ampenv3)
- (oscil osc3))))))))))
-
-#!
-(begin
- (metal 0 0.5 200 0.5)
- (metal 0 0.5 333 0.5)
- (metal 0.5 2 225 0.5)
- (metal 0.5 2 375 0.5))
-
-(metal 0 2 225 0.5)
-
-(c-for 0 < 10 (between 0.1 0.3)
- (lambda (i)
- (metal i 2 (between 100 400) 0.25)))
-
-!#
-
-
-(definstrument (drone startime dur frequency amp-1 ampfun synth ampat ampdc amtrev deg dis rvibamt rvibfreq)
- (let* ((beg (inexact->exact (floor (* startime (mus-srate)))))
- (end (+ beg (inexact->exact (floor (* dur (mus-srate))))))
- (waveform (partials->wave synth))
- (amplitude (* amp-1 .25))
- (freq (hz->radians frequency))
- (s (make-table-lookup :frequency frequency :wave waveform))
- (amp-env (make-env :envelope (stretch-envelope ampfun 25 (* 100 (/ ampat dur)) 75 (- 100 (* 100 (/ ampdc dur))))
- :scaler amplitude :duration dur))
- (ran-vib (make-rand :frequency rvibfreq
- :amplitude (* rvibamt freq)))
- (loc (make-locsig deg dis amtrev *output* *reverb* *rt-num-channels*)))
- (ws-interrupt?)
- (<rt-play> startime dur
- (lambda ()
- (locsig loc (* (env amp-env) (table-lookup s (+ (rand ran-vib)))))))))
-
-#!
-?
-!#
-
-(definstrument (canter beg dur pitch amp-1 deg dis pcrev ampfun ranfun skewfun
- skewpc ranpc ranfreq indexfun atdr dcdr
- ampfun1 indfun1 fmtfun1
- ampfun2 indfun2 fmtfun2
- ampfun3 indfun3 fmtfun3
- ampfun4 indfun4 fmtfun4)
- (let* ((start (inexact->exact (floor (* beg (mus-srate)))))
- (end (+ start (inexact->exact (floor (* dur (mus-srate))))))
- (amp (* amp-1 .25)) ;pvc's amplitudes in bag.clm are very high (overflows)
- (rangetop 910.0)
- (rangebot 400.0)
- (k (inexact->exact (floor (* 100 (/ (log (/ pitch rangebot)) (log (/ rangetop rangebot)))))))
- (mfq pitch)
- (atpt (* 100 (/ atdr dur)))
- (dcpt (- 100 (* 100 (/ dcdr dur))))
- (lfmt1 (envelope-interp k fmtfun1))
- (harm1 (inexact->exact (floor (+ .5 (/ lfmt1 pitch)))))
- (dev11 (hz->radians (* (envelope-interp k indfun1) mfq)))
- (dev01 (* dev11 .5))
- (lamp1 (* (envelope-interp k ampfun1) amp (- 1 (abs (- harm1 (/ lfmt1 pitch))))))
- (lfmt2 (envelope-interp k fmtfun2))
- (harm2 (inexact->exact (floor (+ .5 (/ lfmt2 pitch)))))
- (dev12 (hz->radians (* (envelope-interp k indfun2) mfq)))
- (dev02 (* dev12 .5))
- (lamp2 (* (envelope-interp k ampfun2) amp (- 1 (abs (- harm2 (/ lfmt2 pitch))))))
- (lfmt3 (envelope-interp k fmtfun3))
- (harm3 (inexact->exact (floor (+ .5 (/ lfmt3 pitch)))))
- (dev13 (hz->radians (* (envelope-interp k indfun3) mfq)))
- (dev03 (* dev13 .5))
- (lamp3 (* (envelope-interp k ampfun3) amp (- 1 (abs (- harm3 (/ lfmt3 pitch))))))
- (lfmt4 (envelope-interp k fmtfun4))
- (harm4 (inexact->exact (floor (+ .5 (/ lfmt4 pitch)))))
- (dev14 (hz->radians (* (envelope-interp k indfun4) mfq)))
- (dev04 (* dev14 .5))
- (lamp4 (* (envelope-interp k ampfun4) amp (- 1 (abs (- harm4 (/ lfmt4 pitch))))))
- (tampfun (make-env :envelope (stretch-envelope ampfun 25 atpt 75 dcpt) :duration dur))
- (tskwfun (make-env :envelope (stretch-envelope skewfun 25 atpt 75 dcpt) :scaler (hz->radians (* pitch skewpc)) :duration dur))
- (tranfun (make-env :envelope (stretch-envelope ranfun 25 atpt 75 dcpt) :duration dur))
- (tidxfun (make-env :envelope (stretch-envelope indexfun 25 atpt 75 dcpt) :duration dur))
- (modgen (make-oscil :frequency pitch))
- (gen1 (make-oscil :frequency (* pitch harm1)))
- (gen2 (make-oscil :frequency (* pitch harm2)))
- (gen3 (make-oscil :frequency (* pitch harm3)))
- (gen4 (make-oscil :frequency (* pitch harm4)))
- (ranvib (make-rand :frequency ranfreq :amplitude (hz->radians (* ranpc pitch))))
- (loc (make-locsig deg dis pcrev *output* *reverb* *rt-num-channels*)))
- (ws-interrupt?)
- (<rt-play> beg dur
- (lambda ()
- (let* ((frqval (+ (env tskwfun) (* (env tranfun) (rand ranvib))))
- (modval (oscil modgen frqval))
- (ampval (env tampfun))
- (indval (env tidxfun)))
- (locsig loc
- (+ (* lamp1 ampval (oscil gen1 (* (+ (* (+ dev01 (* indval dev11)) modval) frqval) harm1)))
- (* lamp2 ampval (oscil gen2 (* (+ (* (+ dev02 (* indval dev12)) modval) frqval) harm2)))
- (* lamp3 ampval (oscil gen3 (* (+ (* (+ dev03 (* indval dev13)) modval) frqval) harm3)))
- (* lamp4 ampval (oscil gen4 (* (+ (* (+ dev04 (* indval dev14)) modval) frqval) harm4))))))))))
-
-;;; NREV (the most popular Samson box reverb)
-
-(definstrument (nrev :key (reverb-factor 1.09) (lp-coeff 0.7) (volume-1 1.0) (das-length 256))
- ;; reverb-factor controls the length of the decay -- it should not exceed (/ 1.0 .823)
- ;; lp-coeff controls the strength of the low pass filter inserted in the feedback loop
- ;; output-scale can be used to boost the reverb output
- (define (prime? val)
- (or (= val 2)
- (and (odd? val)
- (do ((i 3 (+ i 2))
- (lim (sqrt val)))
- ((or (= 0 (modulo val i)) (> i lim))
- (> i lim))))))
- (define (next-prime val)
- (if (prime? val)
- val
- (next-prime (+ val 2))))
-
- (let* ((srscale (/ (mus-srate) 25641))
- (val 0)
- (dly-len (list 1433 1601 1867 2053 2251 2399 347 113 37 59 53 43 37 29 19)))
- (do ((i 0 (1+ i)))
- ((= i 15))
- (let ((val (inexact->exact (floor (* srscale (list-ref dly-len i))))))
- (if (even? val) (set! val (1+ val)))
- (list-set! dly-len i (next-prime val))))
-
- (let* ((volume volume-1)
- (len (+ (mus-srate) das-length)) ;;(mus-length *reverb*)))
- (comb1 (make-comb (* .822 reverb-factor) (list-ref dly-len 0)))
- (comb2 (make-comb (* .802 reverb-factor) (list-ref dly-len 1)))
- (comb3 (make-comb (* .773 reverb-factor) (list-ref dly-len 2)))
- (comb4 (make-comb (* .753 reverb-factor) (list-ref dly-len 3)))
- (comb5 (make-comb (* .753 reverb-factor) (list-ref dly-len 4)))
- (comb6 (make-comb (* .733 reverb-factor) (list-ref dly-len 5)))
- (low (make-one-pole lp-coeff (- lp-coeff 1.0)))
- (chan2 (> *rt-num-channels* 1))
- (chan4 (= *rt-num-channels* 4))
- (allpass1 (make-all-pass -0.700 0.700 (list-ref dly-len 6)))
- (allpass2 (make-all-pass -0.700 0.700 (list-ref dly-len 7)))
- (allpass3 (make-all-pass -0.700 0.700 (list-ref dly-len 8)))
- (allpass4 (make-all-pass -0.700 0.700 (list-ref dly-len 9))) ; 10 for quad
- (allpass5 (make-all-pass -0.700 0.700 (list-ref dly-len 11)))
- (allpass6 (make-all-pass -0.700 0.700 (list-ref dly-len 12)))
- (allpass7 (make-all-pass -0.700 0.700 (list-ref dly-len 13)))
- (allpass8 (make-all-pass -0.700 0.700 (list-ref dly-len 14))))
- (ws-interrupt?)
- (<rt-play>
- (lambda ()
- (let* ((rev (* volume (in 0)))
- (outrev (all-pass allpass4
- (one-pole low
- (all-pass allpass3
- (all-pass allpass2
- (all-pass allpass1
- (+ (comb comb1 rev)
- (comb comb2 rev)
- (comb comb3 rev)
- (comb comb4 rev)
- (comb comb5 rev)
- (comb comb6 rev)))))))))
- (out 0 (all-pass allpass5 outrev))
- (if chan2 (out 1 (all-pass allpass6 outrev)))
- (if chan4 (out 2 (all-pass allpass7 outrev)))
- (if chan4 (out 3 (all-pass allpass8 outrev)))))))))
-
-#!
-(define bus (make-bus))
-(nrev :in-bus bus)
-(metal 0 0.1 225 0.2 :out-bus bus)
-(metal 0 0.2 425 0.2 :out-bus bus)
-(rte-silence!)
-!#
-
-
-(definstrument (reson startime dur pitch amp numformants indxfun skewfun pcskew skewat skewdc
- vibfreq vibpc ranvibfreq ranvibpc degree distance reverb-amount data)
- ;; data is a list of lists of form '(ampf resonfrq resonamp ampat ampdc dev0 dev1 indxat indxdc)
- (let* ((beg (inexact->exact (floor (* startime (mus-srate)))))
- (end (+ beg (inexact->exact (floor (* dur (mus-srate))))))
- (carriers (make-vector numformants))
- (modulator (make-oscil :frequency pitch))
- (ampfs (make-vector numformants))
- (indfs (make-vector numformants))
- (c-rats (make-vector numformants))
- (frqf (make-env :envelope (stretch-envelope skewfun 25 (* 100 (/ skewat dur)) 75 (- 100 (* 100 (/ skewdc dur))))
- :scaler (hz->radians (* pcskew pitch)) :duration dur))
- (totalamp 0.0)
- (loc (make-locsig degree distance reverb-amount *output* *reverb* *rt-num-channels*))
- (pervib (make-triangle-wave :frequency vibfreq
- :amplitude (hz->radians (* vibpc pitch))))
- (ranvib (make-rand-interp :frequency ranvibfreq
- :amplitude (hz->radians (* ranvibpc pitch)))))
- ;; initialize the "formant" generators
- (do ((i 0 (1+ i)))
- ((= i numformants))
- (set! totalamp (+ totalamp (list-ref (list-ref data i) 2))))
- (do ((i 0 (1+ i)))
- ((= i numformants))
- (let* ((frmdat (list-ref data i))
- (freq (cadr frmdat))
- (ampf (car frmdat))
- (rfamp (list-ref frmdat 2))
- (ampat (* 100 (/ (list-ref frmdat 3) dur)))
- (ampdc (- 100 (* 100 (/ (list-ref frmdat 4) dur))))
- (dev0 (hz->radians (* (list-ref frmdat 5) freq)))
- (dev1 (hz->radians (* (list-ref frmdat 6) freq)))
- (indxat (* 100 (/ (list-ref frmdat 7) dur)))
- (indxdc (- 100 (* 100 (/ (list-ref frmdat 8) dur))))
- (harm (inexact->exact (round (/ freq pitch))))
- (rsamp (- 1.0 (abs (- harm (/ freq pitch)))))
- (cfq (* pitch harm)))
- (if (zero? ampat) (set! ampat 25))
- (if (zero? ampdc) (set! ampdc 75))
- (if (zero? indxat) (set! indxat 25))
- (if (zero? indxdc) (set! indxdc 75))
- (vector-set! indfs i (make-env :envelope (stretch-envelope indxfun 25 indxat 75 indxdc) :duration dur
- :scaler (- dev1 dev0) :offset dev0))
- (vector-set! ampfs i (make-env :envelope (stretch-envelope ampf 25 ampat 75 ampdc) :duration dur
- :scaler (* rsamp amp (/ rfamp totalamp))))
- (vector-set! c-rats i harm)
- (vector-set! carriers i (make-oscil :frequency cfq))))
- (ws-interrupt?)
- (<rt-play> startime dur
- (lambda ()
- (let* ((outsum 0.0)
- (vib (+ (triangle-wave pervib) (rand-interp ranvib) (env frqf)))
- (modsig (oscil modulator vib)))
- (do ((k 0 (1+ k)))
- ((= k numformants))
- (set! outsum (+ outsum
- (* (env (vector-ref ampfs k))
- (oscil (vector-ref carriers k)
- (+ (* vib (vector-ref c-rats k))
- (* (env (vector-ref indfs k)) modsig)))))))
- (locsig loc outsum))))))
-
-
-;;; STK's feedback-fm instrument named CelloN in Sambox-land
-
-(definstrument (cellon beg dur pitch0 amp ampfun betafun
- beta0 beta1 betaat betadc ampat ampdc dis pcrev deg
- pitch1 glissfun glissat glissdc
- pvibfreq pvibpc pvibfun pvibat pvibdc
- rvibfreq rvibpc rvibfun)
- (let* ((st (inexact->exact (floor (* beg (mus-srate)))))
- (nd (+ st (inexact->exact (floor (* dur (mus-srate))))))
- (pit1 (if (zero? pitch1) pitch0 pitch1))
- (loc (make-locsig deg dis pcrev *output* *reverb* *rt-num-channels*))
- (car (make-oscil :frequency pitch0))
- (low (make-one-zero .5 -.5))
- (fm 0.0)
- (fmosc (make-oscil :frequency pitch0))
- (pvib (make-triangle-wave :frequency pvibfreq :amplitude 1.0))
- (rvib (make-rand-interp :frequency rvibfreq :amplitude 1.0))
- (ampap (if (> ampat 0.0) (* 100 (/ ampat dur)) 25))
- (ampdp (if (> ampdc 0.0) (* 100 (- 1.0 (/ ampdc dur))) 75))
- (glsap (if (> glissat 0.0) (* 100 (/ glissat dur)) 25))
- (glsdp (if (> glissdc 0.0) (* 100 (- 1.0 (/ glissdc dur))) 75))
- (betap (if (> betaat 0.0) (* 100 (/ betaat dur)) 25))
- (betdp (if (> betadc 0.0) (* 100 (- 1.0 (/ betadc dur))) 75))
- (pvbap (if (> pvibat 0.0) (* 100 (/ pvibat dur)) 25))
- (pvbdp (if (> pvibdc 0.0) (* 100 (- 1.0 (/ pvibdc dur))) 75))
- (pvibenv (make-env :envelope (stretch-envelope (or pvibfun '(0 1 100 1)) 25 pvbap 75 pvbdp) :duration dur
- :scaler (hz->radians (* pvibpc pitch0))))
- (rvibenv (make-env :envelope (or rvibfun '(0 1 100 1)) :duration dur
- :scaler (hz->radians (* rvibpc pitch0))))
- (glisenv (make-env :envelope (stretch-envelope (or glissfun '(0 0 100 0)) 25 glsap 75 glsdp) :duration dur
- :scaler (hz->radians (- pit1 pitch0))))
- (amplenv (make-env :envelope (stretch-envelope ampfun 25 ampap 75 ampdp) :scaler amp :duration dur))
- (betaenv (make-env :envelope (stretch-envelope betafun 25 betap 75 betdp) :duration dur
- :scaler (- beta1 beta0) :offset beta0)))
- (ws-interrupt?)
- (<rt-play> beg dur
- (lambda ()
- (let* ((vib (+ (* (env pvibenv) (triangle-wave pvib))
- (* (env rvibenv) (rand-interp rvib))
- (env glisenv))))
- (set! fm (one-zero low (* (env betaenv) (oscil fmosc (+ fm vib)))))
- (locsig loc (* (env amplenv)
- (oscil car (+ fm vib)))))))))
-
-(definstrument (jl-reverb :key (decay 3.0) (das-length 256))
- (let* ((allpass1 (make-all-pass -0.700 0.700 2111))
- (allpass2 (make-all-pass -0.700 0.700 673))
- (allpass3 (make-all-pass -0.700 0.700 223))
- (comb1 (make-comb 0.742 9601))
- (comb2 (make-comb 0.733 10007))
- (comb3 (make-comb 0.715 10799))
- (comb4 (make-comb 0.697 11597))
- (chns *rt-num-channels*)
- (outdel1 (make-delay (inexact->exact (round (* .013 (mus-srate))))))
- (outdel2 (make-delay (inexact->exact (round (* .011 (mus-srate))))))
- (comb-sum 0.0)
- (comb-sum-1 0.0)
- (comb-sum-2 0.0)
- (all-sums 0.0)
- (delA 0.0)
- (delB 0.0)
- (decay-dur (* decay (mus-srate)))
- (len (+ decay-dur das-length)))
- (ws-interrupt?)
- (<rt-play>
- (lambda ()
- (let ((allpass-sum (all-pass allpass3 (all-pass allpass2 (all-pass allpass1 (in 0))))))
- (set! comb-sum
- (+ (comb comb1 allpass-sum)
- (comb comb2 allpass-sum)
- (comb comb3 allpass-sum)
- (comb comb4 allpass-sum)))
- (out 0 (delay outdel1 comb-sum))
- (if (> chns 1) (out 1 (delay outdel2 comb-sum))))))))
-
-
-#!
-(define bus (make-bus))
-(jl-reverb :in-bus bus)
-(metal 0 0.1 225 0.2 :out-bus bus)
-(metal 0 0.2 425 0.2 :out-bus bus)
-(rte-silence!)
-(rte-info)
-!#
-
-
-(definstrument (gran-synth start-time duration audio-freq grain-dur grain-interval amp)
- (let* ((beg (inexact->exact (floor (* start-time (mus-srate)))))
- (end (+ beg (inexact->exact (floor (* duration (mus-srate))))))
- (grain-env (make-env :envelope '(0 0 25 1 75 1 100 0) :duration grain-dur))
- (carrier (make-oscil :frequency audio-freq))
- (grain-size (inexact->exact (ceiling (* (max grain-dur grain-interval) (mus-srate)))))
- (grains (make-wave-train :size grain-size :frequency (/ 1.0 grain-interval)))
- (grain (mus-data grains)))
- (do ((i 0 (1+ i)))
- ((= i grain-size))
- (vct-set! grain i (* (env grain-env) (oscil carrier))))
- (ws-interrupt?)
- (<rt-play> start-time duration
- (lambda ()
- (out (* amp (wave-train grains)))))))
-
-#!
-(gran-synth 0 2 100 .0189 .02 .4)
-(gran-synth 0 2 400 .0189 .02 0.4)
-!#
-
-
-(definstrument (touch-tone start telephone-number)
- (let ((touch-tab-1 '(0 697 697 697 770 770 770 852 852 852 941 941 941))
- (touch-tab-2 '(0 1209 1336 1477 1209 1336 1477 1209 1336 1477 1209 1336 1477)))
- (do ((i 0 (1+ i)))
- ((= i (length telephone-number)))
- (let* ((k (list-ref telephone-number i))
- (beg (inexact->exact (floor (* (+ start (* i .4)) (mus-srate)))))
- (end (inexact->exact (floor (+ beg (* .3 (mus-srate))))))
- (i (if (number? k)
- (if (not (= 0 k))
- k
- 11)
- (if (eq? k '*)
- 10
- 12)))
- (frq1 (make-oscil :frequency (list-ref touch-tab-1 i)))
- (frq2 (make-oscil :frequency (list-ref touch-tab-2 i))))
- (ws-interrupt?)
- (c-display beg)
- (<rt-play> (/ beg (mus-srate)) (/ (- end beg) (mus-srate))
- (lambda ()
- (out (* 0.1 (+ (oscil frq1) (oscil frq2))))))))))
-
-#!
-(touch-tone 0.0 '(7 2 3 4 9 7 1))
-!#
-;;; (with-sound () (touch-tone 0.0 '(7 2 3 4 9 7 1))
-;;; I think the dial tone is 350 + 440
-;;; http://www.hackfaq.org/telephony/telephone-tone-frequencies.shtml
-
-(definstrument (spectra start-time duration frequency amplitude
- :key (partials '(1 1 2 0.5))
- (amp-envelope '(0 0 50 1 100 0))
- (vibrato-amplitude 0.005)
- (vibrato-speed 5.0)
- (degree 0.0)
- (distance 1.0)
- (reverb-amount 0.005))
- (let* ((beg (inexact->exact (floor (* start-time (mus-srate)))))
- (end (+ beg (inexact->exact (floor (* duration (mus-srate))))))
- (waveform (partials->wave partials))
- (freq (hz->radians frequency))
- (s (make-table-lookup :frequency frequency :wave waveform))
- (amp-env (make-env :envelope amp-envelope :scaler amplitude :duration duration))
- (per-vib (make-triangle-wave :frequency vibrato-speed
- :amplitude (* vibrato-amplitude freq)))
- (loc (make-locsig degree distance reverb-amount *output* *reverb* *rt-num-channels*))
- (ran-vib (make-rand-interp :frequency (+ vibrato-speed 1.0)
- :amplitude (* vibrato-amplitude freq))))
- (ws-interrupt?)
- (<rt-play> start-time duration
- (lambda ()
- (locsig loc (* (env amp-env)
- (table-lookup s (+ (triangle-wave per-vib)
- (rand-interp ran-vib)))))))))
-
-#!
-(spectra 0 1 440.0 .8 '(1.0 .4 2.0 .2 3.0 .2 4.0 .1 6.0 .1)
- '(0.0 0.0 1.0 1.0 5.0 0.9 12.0 0.5 25.0 0.25 100.0 0.0))
-!#
-
-
-;;; interpolate between two waveforms (this could be extended to implement all the various
-;;; wavetable-based synthesis techniques).
-
-(definstrument (two-tab start-time duration frequency amplitude
- :key (partial-1 '(1.0 1.0 2.0 0.5))
- (partial-2 '(1.0 0.0 3.0 1.0))
- (amp-envelope '(0 0 50 1 100 0))
- (interp-func '(0 1 100 0))
- (vibrato-amplitude 0.005)
- (vibrato-speed 5.0)
- (degree 0.0)
- (distance 1.0)
- (reverb-amount 0.005))
- (let* ((beg (inexact->exact (floor (* start-time (mus-srate)))))
- (end (+ beg (inexact->exact (floor (* duration (mus-srate))))))
- (waveform-1 (partials->wave partial-1))
- (waveform-2 (partials->wave partial-2))
- (freq (hz->radians frequency))
- (s-1 (make-table-lookup :frequency frequency :wave waveform-1))
- (s-2 (make-table-lookup :frequency frequency :wave waveform-2))
- (amp-env (make-env :envelope amp-envelope :scaler amplitude :duration duration))
- (interp-env (make-env :envelope interp-func :duration duration))
- (loc (make-locsig degree distance reverb-amount *output* *reverb* *rt-num-channels*))
- (per-vib (make-triangle-wave :frequency vibrato-speed
- :amplitude (* vibrato-amplitude freq)))
- (ran-vib (make-rand-interp :frequency (+ vibrato-speed 1.0)
- :amplitude (* vibrato-amplitude freq))))
- (ws-interrupt?)
- (<rt-play> start-time duration
- (lambda ()
- (let ((vib (+ (triangle-wave per-vib)
- (rand-interp ran-vib)))
- (intrp (env interp-env)))
- (locsig loc (* (env amp-env)
- (+ (* intrp (table-lookup s-1 vib))
- (* (- 1.0 intrp)
- (table-lookup s-2 vib))))))))))
-
-#!
-(two-tab 0 2 225 0.7)
-!#
-
-
-
-(definstrument (lbj-piano begin-time duration frequency amplitude :key (pfreq frequency)
- (degree 45) (reverb-amount 0) (distance 1))
- (let ((piano-spectra (list
-
- (list 1.97 .0326 2.99 .0086 3.95 .0163 4.97 .0178 5.98 .0177 6.95 .0315 8.02 .0001
- 8.94 .0076 9.96 .0134 10.99 .0284 11.98 .0229 13.02 .0229 13.89 .0010 15.06 .0090 16.00 .0003
- 17.08 .0078 18.16 .0064 19.18 .0129 20.21 .0085 21.27 .0225 22.32 .0061 23.41 .0102 24.48 .0005
- 25.56 .0016 26.64 .0018 27.70 .0113 28.80 .0111 29.91 .0158 31.06 .0093 32.17 .0017 33.32 .0002
- 34.42 .0018 35.59 .0027 36.74 .0055 37.90 .0037 39.06 .0064 40.25 .0033 41.47 .0014 42.53 .0004
- 43.89 .0010 45.12 .0039 46.33 .0039 47.64 .0009 48.88 .0016 50.13 .0006 51.37 .0010 52.70 .0002
- 54.00 .0004 55.30 .0008 56.60 .0025 57.96 .0010 59.30 .0012 60.67 .0011 61.99 .0003 62.86 .0001
- 64.36 .0005 64.86 .0001 66.26 .0004 67.70 .0006 68.94 .0002 70.10 .0001 70.58 .0002 72.01 .0007
- 73.53 .0006 75.00 .0002 77.03 .0005 78.00 .0002 79.57 .0006 81.16 .0005 82.70 .0005 84.22 .0003
- 85.41 .0002 87.46 .0001 90.30 .0001 94.02 .0001 95.26 .0002 109.39 .0003)
-
- (list 1.98 .0194 2.99 .0210 3.97 .0276 4.96 .0297 5.96 .0158 6.99 .0207 8.01 .0009
- 9.00 .0101 10.00 .0297 11.01 .0289 12.02 .0211 13.04 .0127 14.07 .0061 15.08 .0174 16.13 .0009
- 17.12 .0093 18.16 .0117 19.21 .0122 20.29 .0108 21.30 .0077 22.38 .0132 23.46 .0073 24.14 .0002
- 25.58 .0026 26.69 .0035 27.77 .0053 28.88 .0024 30.08 .0027 31.13 .0075 32.24 .0027 33.36 .0004
- 34.42 .0004 35.64 .0019 36.78 .0037 38.10 .0009 39.11 .0027 40.32 .0010 41.51 .0013 42.66 .0019
- 43.87 .0007 45.13 .0017 46.35 .0019 47.65 .0021 48.89 .0014 50.18 .0023 51.42 .0015 52.73 .0002
- 54.00 .0005 55.34 .0006 56.60 .0010 57.96 .0016 58.86 .0005 59.30 .0004 60.75 .0005 62.22 .0003
- 63.55 .0005 64.82 .0003 66.24 .0003 67.63 .0011 69.09 .0007 70.52 .0004 72.00 .0005 73.50 .0008
- 74.95 .0003 77.13 .0013 78.02 .0002 79.48 .0004 82.59 .0004 84.10 .0003)
-
- (list 2.00 .0313 2.99 .0109 4.00 .0215 5.00 .0242 5.98 .0355 7.01 .0132 8.01 .0009
- 9.01 .0071 10.00 .0258 11.03 .0221 12.02 .0056 13.06 .0196 14.05 .0160 15.11 .0107 16.11 .0003
- 17.14 .0111 18.21 .0085 19.23 .0010 20.28 .0048 21.31 .0128 22.36 .0051 23.41 .0041 24.05 .0006
- 25.54 .0019 26.62 .0028 27.72 .0034 28.82 .0062 29.89 .0039 30.98 .0058 32.08 .0011 33.21 .0002
- 34.37 .0008 35.46 .0018 36.62 .0036 37.77 .0018 38.92 .0042 40.07 .0037 41.23 .0011 42.67 .0003
- 43.65 .0018 44.68 .0025 45.99 .0044 47.21 .0051 48.40 .0044 49.67 .0005 50.88 .0019 52.15 .0003
- 53.42 .0008 54.69 .0010 55.98 .0005 57.26 .0013 58.53 .0027 59.83 .0011 61.21 .0027 62.54 .0003
- 63.78 .0003 65.20 .0001 66.60 .0006 67.98 .0008 69.37 .0019 70.73 .0007 72.14 .0004 73.62 .0002
- 74.40 .0003 76.52 .0006 77.97 .0002 79.49 .0004 80.77 .0003 81.00 .0001 82.47 .0005 83.97 .0001
- 87.27 .0002)
-
- (list 2.00 .0257 2.99 .0142 3.97 .0202 4.95 .0148 5.95 .0420 6.95 .0037 7.94 .0004
- 8.94 .0172 9.95 .0191 10.96 .0115 11.97 .0059 12.98 .0140 14.00 .0178 15.03 .0121 16.09 .0002
- 17.07 .0066 18.08 .0033 19.15 .0022 20.18 .0057 21.22 .0077 22.29 .0037 23.33 .0066 24.97 .0002
- 25.49 .0019 26.55 .0042 27.61 .0043 28.73 .0038 29.81 .0084 30.91 .0040 32.03 .0025 33.14 .0005
- 34.26 .0003 35.38 .0019 36.56 .0037 37.68 .0049 38.86 .0036 40.11 .0011 41.28 .0008 42.50 .0004
- 43.60 .0002 44.74 .0022 45.99 .0050 47.20 .0009 48.40 .0036 49.68 .0004 50.92 .0009 52.17 .0005
- 53.46 .0007 54.76 .0006 56.06 .0005 57.34 .0011 58.67 .0005 59.95 .0015 61.37 .0008 62.72 .0004
- 65.42 .0009 66.96 .0003 68.18 .0003 69.78 .0003 71.21 .0004 72.45 .0002 74.22 .0003 75.44 .0001
- 76.53 .0003 78.31 .0004 79.83 .0003 80.16 .0001 81.33 .0003 82.44 .0001 83.17 .0002 84.81 .0003
- 85.97 .0003 89.08 .0001 90.70 .0002 92.30 .0002 95.59 .0002 97.22 .0003 98.86 .0001 108.37 .0001
- 125.54 .0001)
-
- (list 1.99 .0650 3.03 .0040 4.03 .0059 5.02 .0090 5.97 .0227 6.98 .0050 8.04 .0020
- 9.00 .0082 9.96 .0078 11.01 .0056 12.01 .0095 13.02 .0050 14.04 .0093 15.08 .0064 16.14 .0017
- 17.06 .0020 18.10 .0025 19.14 .0023 20.18 .0015 21.24 .0032 22.29 .0029 23.32 .0014 24.37 .0005
- 25.43 .0030 26.50 .0022 27.60 .0027 28.64 .0024 29.76 .0035 30.81 .0136 31.96 .0025 33.02 .0003
- 34.13 .0005 35.25 .0007 36.40 .0014 37.51 .0020 38.64 .0012 39.80 .0019 40.97 .0004 42.09 .0003
- 43.24 .0003 44.48 .0002 45.65 .0024 46.86 .0005 48.07 .0013 49.27 .0008 50.49 .0006 52.95 .0001
- 54.23 .0005 55.45 .0004 56.73 .0001 58.03 .0003 59.29 .0002 60.59 .0003 62.04 .0002 65.89 .0002
- 67.23 .0002 68.61 .0002 69.97 .0004 71.36 .0005 85.42 .0001)
-
- (list 1.98 .0256 2.96 .0158 3.95 .0310 4.94 .0411 5.95 .0238 6.94 .0152 7.93 .0011
- 8.95 .0185 9.92 .0166 10.93 .0306 11.94 .0258 12.96 .0202 13.97 .0403 14.95 .0228 15.93 .0005
- 17.01 .0072 18.02 .0034 19.06 .0028 20.08 .0124 21.13 .0137 22.16 .0102 23.19 .0058 23.90 .0013
- 25.30 .0039 26.36 .0039 27.41 .0025 28.47 .0071 29.64 .0031 30.60 .0027 31.71 .0021 32.84 .0003
- 33.82 .0002 35.07 .0019 36.09 .0054 37.20 .0038 38.33 .0024 39.47 .0055 40.55 .0016 41.77 .0006
- 42.95 .0002 43.27 .0018 44.03 .0006 45.25 .0019 46.36 .0033 47.50 .0024 48.87 .0012 50.03 .0016
- 51.09 .0004 53.52 .0017 54.74 .0012 56.17 .0003 57.40 .0011 58.42 .0020 59.70 .0007 61.29 .0008
- 62.56 .0003 63.48 .0002 64.83 .0002 66.12 .0012 67.46 .0017 68.81 .0003 69.13 .0003 70.53 .0002
- 71.84 .0001 73.28 .0002 75.52 .0010 76.96 .0005 77.93 .0003 78.32 .0003 79.73 .0003 81.69 .0002
- 82.52 .0001 84.01 .0001 84.61 .0002 86.88 .0001 88.36 .0002 89.85 .0002 91.35 .0003 92.86 .0002
- 93.40 .0001 105.28 .0002 106.22 .0002 107.45 .0001 108.70 .0003 122.08 .0002)
-
- (list 1.97 .0264 2.97 .0211 3.98 .0234 4.98 .0307 5.96 .0085 6.94 .0140 7.93 .0005
- 8.96 .0112 9.96 .0209 10.98 .0194 11.98 .0154 12.99 .0274 13.99 .0127 15.01 .0101 15.99 .0002
- 17.04 .0011 18.08 .0032 19.14 .0028 20.12 .0054 21.20 .0053 22.13 .0028 23.22 .0030 24.32 .0006
- 25.24 .0004 26.43 .0028 27.53 .0048 28.52 .0039 29.54 .0047 30.73 .0044 31.82 .0007 32.94 .0008
- 34.04 .0012 35.13 .0018 36.29 .0007 37.35 .0075 38.51 .0045 39.66 .0014 40.90 .0004 41.90 .0002
- 43.08 .0002 44.24 .0017 45.36 .0013 46.68 .0020 47.79 .0015 48.98 .0010 50.21 .0012 51.34 .0001
- 53.82 .0003 55.09 .0004 56.23 .0005 57.53 .0004 58.79 .0005 59.30 .0002 60.03 .0002 61.40 .0003
- 62.84 .0001 66.64 .0001 67.97 .0001 69.33 .0001 70.68 .0001 73.57 .0002 75.76 .0002 76.45 .0001
- 79.27 .0001 80.44 .0002 81.87 .0002)
-
- (list 2.00 .0311 2.99 .0086 3.99 .0266 4.97 .0123 5.98 .0235 6.97 .0161 7.97 .0008
- 8.96 .0088 9.96 .0621 10.99 .0080 11.99 .0034 12.99 .0300 14.03 .0228 15.04 .0105 16.03 .0004
- 17.06 .0036 18.09 .0094 18.95 .0009 20.17 .0071 21.21 .0161 22.25 .0106 23.28 .0104 24.33 .0008
- 25.38 .0030 26.46 .0035 27.50 .0026 28.59 .0028 29.66 .0128 30.75 .0139 31.81 .0038 32.93 .0006
- 34.04 .0004 35.16 .0005 36.25 .0023 37.35 .0012 38.46 .0021 39.59 .0035 40.71 .0006 41.86 .0007
- 42.42 .0001 43.46 .0003 44.17 .0032 45.29 .0013 46.57 .0004 47.72 .0011 48.79 .0005 50.11 .0005
- 51.29 .0003 52.47 .0002 53.68 .0004 55.02 .0005 56.18 .0003 57.41 .0003 58.75 .0007 59.33 .0009
- 60.00 .0004 61.34 .0001 64.97 .0003 65.20 .0002 66.48 .0002 67.83 .0002 68.90 .0003 70.25 .0003
- 71.59 .0002 73.68 .0001 75.92 .0001 77.08 .0002 78.45 .0002 81.56 .0002 82.99 .0001 88.39 .0001)
-
- (list .97 .0059 1.98 .0212 2.99 .0153 3.99 .0227 4.96 .0215 5.97 .0153 6.98 .0085
- 7.98 .0007 8.97 .0179 9.98 .0512 10.98 .0322 12.00 .0098 13.02 .0186 14.00 .0099 15.05 .0109
- 15.88 .0011 17.07 .0076 18.11 .0071 19.12 .0045 20.16 .0038 21.23 .0213 22.27 .0332 23.34 .0082
- 24.34 .0014 25.42 .0024 26.47 .0012 27.54 .0014 28.60 .0024 29.72 .0026 30.10 .0008 31.91 .0021
- 32.13 .0011 33.02 .0007 34.09 .0014 35.17 .0007 36.27 .0024 37.39 .0029 38.58 .0014 39.65 .0017
- 40.95 .0012 41.97 .0004 42.43 .0002 43.49 .0001 44.31 .0012 45.42 .0031 46.62 .0017 47.82 .0013
- 49.14 .0013 50.18 .0010 51.54 .0003 53.90 .0006 55.06 .0010 56.31 .0003 57.63 .0001 59.02 .0003
- 60.09 .0004 60.35 .0004 61.62 .0009 63.97 .0001 65.19 .0001 65.54 .0002 66.92 .0002 67.94 .0002
- 69.17 .0003 69.60 .0004 70.88 .0002 72.24 .0002 76.12 .0001 78.94 .0001 81.75 .0001 82.06 .0001
- 83.53 .0001 90.29 .0002 91.75 .0001 92.09 .0002 93.28 .0001 97.07 .0001)
-
- (list 1.98 .0159 2.98 .1008 3.98 .0365 4.98 .0133 5.97 .0101 6.97 .0115 7.97 .0007
- 8.99 .0349 10.01 .0342 11.01 .0236 12.00 .0041 13.02 .0114 14.05 .0137 15.06 .0100 16.05 .0007
- 17.04 .0009 18.12 .0077 19.15 .0023 20.12 .0017 21.24 .0113 22.26 .0126 23.30 .0093 24.36 .0007
- 25.43 .0007 26.47 .0009 27.55 .0013 28.59 .0025 29.61 .0010 30.77 .0021 31.86 .0023 32.96 .0003
- 34.03 .0007 35.06 .0005 36.20 .0006 37.34 .0006 38.36 .0009 39.60 .0016 40.69 .0005 41.77 .0002
- 42.92 .0002 44.02 .0003 45.24 .0006 46.33 .0004 47.50 .0007 48.71 .0007 49.87 .0002 51.27 .0002
- 53.42 .0003 55.88 .0003 57.10 .0004 58.34 .0002 59.86 .0003 61.13 .0003 67.18 .0001 68.50 .0001
- 71.17 .0001 83.91 .0001 90.55 .0001)
-
- (list .98 .0099 2.00 .0181 2.99 .0353 3.98 .0285 4.97 .0514 5.96 .0402 6.96 .0015
- 7.98 .0012 8.98 .0175 9.98 .0264 10.98 .0392 11.98 .0236 13.00 .0153 14.04 .0049 15.00 .0089
- 16.01 .0001 17.03 .0106 18.03 .0028 19.05 .0024 20.08 .0040 21.11 .0103 22.12 .0104 23.20 .0017
- 24.19 .0008 25.20 .0007 26.24 .0011 27.36 .0009 27.97 .0030 29.40 .0044 30.37 .0019 31.59 .0017
- 32.65 .0008 33.59 .0005 34.79 .0009 35.75 .0027 36.88 .0035 37.93 .0039 39.00 .0031 40.08 .0025
- 41.16 .0010 43.25 .0004 44.52 .0012 45.62 .0023 45.85 .0012 47.00 .0006 47.87 .0008 48.99 .0003
- 50.48 .0003 51.62 .0001 52.43 .0001 53.56 .0002 54.76 .0002 56.04 .0002 56.68 .0006 57.10 .0003
- 58.28 .0005 59.47 .0003 59.96 .0002 60.67 .0001 63.08 .0002 64.29 .0002 66.72 .0001 67.97 .0001
- 68.65 .0001 70.43 .0001 79.38 .0001 80.39 .0001 82.39 .0001)
-
- (list 1.00 .0765 1.99 .0151 2.99 .0500 3.99 .0197 5.00 .0260 6.00 .0145 6.98 .0128
- 7.97 .0004 8.98 .0158 9.99 .0265 11.02 .0290 12.02 .0053 13.03 .0242 14.03 .0103 15.06 .0054
- 16.04 .0006 17.08 .0008 18.10 .0058 19.16 .0011 20.16 .0055 21.18 .0040 22.20 .0019 23.22 .0014
- 24.05 .0005 25.31 .0019 26.38 .0018 27.44 .0022 28.45 .0024 29.57 .0073 30.58 .0032 31.66 .0071
- 32.73 .0015 33.85 .0005 34.96 .0003 36.00 .0020 37.11 .0018 38.18 .0055 39.23 .0006 40.33 .0004
- 41.52 .0003 43.41 .0028 45.05 .0003 45.99 .0002 47.07 .0003 48.52 .0002 49.48 .0003 50.63 .0003
- 51.81 .0002 54.05 .0002 55.24 .0001 56.62 .0001 57.81 .0004 59.16 .0013 60.23 .0003 66.44 .0001
- 68.99 .0004 75.49 .0001 87.56 .0004)
-
- (list .98 .0629 1.99 .0232 2.98 .0217 4.00 .0396 4.98 .0171 5.97 .0098 6.99 .0167
- 7.99 .0003 8.98 .0192 9.98 .0266 10.99 .0256 12.01 .0061 13.02 .0135 14.02 .0062 15.05 .0158
- 16.06 .0018 17.08 .0101 18.09 .0053 19.11 .0074 20.13 .0020 21.17 .0052 22.22 .0077 23.24 .0035
- 24.00 .0009 25.32 .0016 26.40 .0022 27.43 .0005 28.55 .0026 29.60 .0026 30.65 .0010 31.67 .0019
- 32.77 .0008 33.81 .0003 34.91 .0003 36.01 .0005 37.11 .0010 38.20 .0014 39.29 .0039 40.43 .0012
- 41.50 .0006 43.38 .0017 43.75 .0002 44.94 .0005 46.13 .0002 47.11 .0003 48.28 .0005 48.42 .0005
- 49.44 .0003 50.76 .0004 51.93 .0002 54.15 .0003 55.31 .0005 55.50 .0003 56.98 .0003 57.90 .0004
- 60.33 .0002 61.39 .0001 61.59 .0001 65.09 .0002 66.34 .0001 68.85 .0001 70.42 .0002 71.72 .0001
- 73.05 .0003 79.65 .0001 85.28 .0002 93.52 .0001)
-
- (list 1.02 .0185 1.99 .0525 2.98 .0613 3.99 .0415 4.98 .0109 5.97 .0248 6.99 .0102
- 7.98 .0005 8.98 .0124 9.99 .0103 10.99 .0124 12.00 .0016 13.01 .0029 14.03 .0211 15.04 .0128
- 16.07 .0021 17.09 .0009 18.09 .0043 19.14 .0022 20.13 .0016 21.20 .0045 22.21 .0088 23.26 .0046
- 24.29 .0013 25.35 .0009 26.39 .0028 27.49 .0009 28.51 .0006 29.58 .0012 30.70 .0010 31.74 .0019
- 32.75 .0002 33.85 .0001 34.95 .0005 36.02 .0003 37.16 .0009 38.25 .0018 39.35 .0008 40.54 .0004
- 41.61 .0002 43.40 .0004 43.74 .0003 45.05 .0001 46.11 .0003 47.40 .0002 48.36 .0004 49.55 .0004
- 50.72 .0002 52.00 .0001 55.58 .0002 57.02 .0001 57.98 .0002 59.13 .0003 61.56 .0001 66.56 .0001
- 87.65 .0002)
-
- (list 1.00 .0473 1.99 .0506 2.99 .0982 3.99 .0654 5.00 .0196 5.99 .0094 6.99 .0118
- 7.93 .0001 8.99 .0057 10.01 .0285 11.01 .0142 12.03 .0032 13.03 .0056 14.06 .0064 15.06 .0059
- 16.11 .0005 17.09 .0033 18.14 .0027 19.15 .0014 20.17 .0010 21.21 .0059 22.26 .0043 23.31 .0031
- 24.31 .0018 25.33 .0009 26.41 .0005 27.47 .0015 28.53 .0015 29.58 .0041 30.65 .0025 31.73 .0011
- 32.83 .0010 34.98 .0003 36.07 .0009 37.23 .0001 38.26 .0020 39.41 .0014 40.53 .0005 41.40 .0003
- 42.80 .0002 43.48 .0028 43.93 .0001 45.03 .0003 46.18 .0007 47.41 .0001 48.57 .0002 49.67 .0001
- 50.83 .0002 54.39 .0001 55.58 .0002 57.97 .0005 58.11 .0002 59.21 .0001 60.42 .0002 61.66 .0001)
-
- (list 1.00 .0503 2.00 .0963 2.99 .1304 3.99 .0218 4.98 .0041 5.98 .0292 6.98 .0482
- 7.99 .0005 8.99 .0280 10.00 .0237 11.00 .0152 12.02 .0036 12.95 .0022 14.06 .0111 15.07 .0196
- 16.08 .0016 17.11 .0044 18.13 .0073 19.17 .0055 20.19 .0028 21.20 .0012 22.27 .0068 23.30 .0036
- 24.35 .0012 25.35 .0002 26.46 .0005 27.47 .0005 28.59 .0009 29.65 .0021 30.70 .0020 31.78 .0012
- 32.89 .0010 35.06 .0005 36.16 .0008 37.27 .0010 38.36 .0010 39.47 .0014 40.58 .0004 41.43 .0007
- 41.82 .0003 43.48 .0008 44.53 .0001 45.25 .0003 46.43 .0002 47.46 .0002 48.76 .0005 49.95 .0004
- 50.96 .0002 51.12 .0002 52.33 .0001 54.75 .0001 55.75 .0002 56.90 .0002 58.17 .0002 59.40 .0004
- 60.62 .0002 65.65 .0001 66.91 .0002 69.91 .0001 71.25 .0002)
-
- (list 1.00 .1243 1.98 .1611 3.00 .0698 3.98 .0390 5.00 .0138 5.99 .0154 7.01 .0287
- 8.01 .0014 9.01 .0049 10.00 .0144 11.01 .0055 12.05 .0052 13.01 .0011 14.05 .0118 15.07 .0154
- 16.12 .0028 17.14 .0061 18.25 .0007 19.22 .0020 20.24 .0011 21.27 .0029 22.30 .0046 23.34 .0049
- 24.35 .0004 25.45 .0003 26.47 .0007 27.59 .0008 28.16 .0009 29.12 .0002 29.81 .0006 30.81 .0009
- 31.95 .0004 33.00 .0011 34.12 .0005 35.18 .0003 36.30 .0008 37.38 .0003 38.55 .0003 39.64 .0006
- 40.77 .0007 41.52 .0006 41.89 .0006 43.04 .0011 43.60 .0009 44.31 .0002 45.68 .0002 46.56 .0003
- 47.60 .0001 48.83 .0006 50.01 .0003 51.27 .0003 56.04 .0005 57.21 .0003 58.56 .0004 59.83 .0003
- 61.05 .0001 62.20 .0001 67.37 .0002 76.53 .0001)
-
- (list .99 .0222 1.99 .0678 2.99 .0683 4.00 .0191 5.00 .0119 6.01 .0232 6.98 .0336
- 7.99 .0082 9.01 .0201 10.01 .0189 11.01 .0041 12.01 .0053 13.05 .0154 14.04 .0159 15.06 .0092
- 16.11 .0038 17.12 .0014 18.15 .0091 19.16 .0006 20.30 .0012 21.25 .0061 22.28 .0099 23.34 .0028
- 24.38 .0012 25.43 .0016 26.49 .0048 27.55 .0025 28.62 .0015 29.71 .0032 30.78 .0077 31.88 .0011
- 32.97 .0007 34.08 .0006 35.16 .0008 36.28 .0004 37.41 .0006 38.54 .0005 39.62 .0002 40.80 .0003
- 41.93 .0001 43.06 .0002 44.21 .0003 45.38 .0002 46.54 .0007 47.78 .0003 48.95 .0004 50.10 .0003
- 51.37 .0002 53.79 .0003 56.20 .0001 58.71 .0002 66.47 .0003)
-
- (list 1.01 .0241 1.99 .1011 2.98 .0938 3.98 .0081 4.99 .0062 5.99 .0291 6.99 .0676
- 7.59 .0004 8.98 .0127 9.99 .0112 10.99 .0142 12.00 .0029 13.02 .0071 14.02 .0184 15.03 .0064
- 16.07 .0010 17.09 .0011 18.11 .0010 19.15 .0060 20.19 .0019 21.24 .0025 22.29 .0013 23.31 .0050
- 25.41 .0030 26.50 .0018 27.53 .0006 28.63 .0012 29.66 .0013 30.77 .0020 31.84 .0006 34.04 .0001
- 35.14 .0001 36.32 .0004 37.41 .0007 38.53 .0007 39.67 .0009 40.85 .0003 45.49 .0002 46.65 .0001
- 47.81 .0004 49.01 .0002 53.91 .0002 55.14 .0002 57.69 .0002)
-
- (list 1.00 .0326 2.00 .1066 2.99 .1015 4.00 .0210 4.97 .0170 5.99 .0813 6.98 .0820
- 7.96 .0011 8.99 .0248 10.03 .0107 11.01 .0126 12.01 .0027 13.01 .0233 14.04 .0151 15.05 .0071
- 16.04 .0002 17.10 .0061 18.12 .0059 19.15 .0087 20.23 .0005 21.25 .0040 22.30 .0032 23.35 .0004
- 24.40 .0001 25.45 .0030 26.54 .0022 27.60 .0003 28.70 .0009 29.80 .0029 30.85 .0006 31.97 .0006
- 34.19 .0004 35.30 .0003 36.43 .0007 37.56 .0005 38.68 .0019 39.88 .0013 41.00 .0003 43.35 .0003
- 44.51 .0002 45.68 .0006 46.93 .0010 48.11 .0006 49.29 .0003 55.58 .0002)
-
- (list .98 .0113 1.99 .0967 3.00 .0719 3.98 .0345 4.98 .0121 6.00 .0621 7.00 .0137
- 7.98 .0006 9.01 .0314 10.01 .0171 11.02 .0060 12.03 .0024 13.05 .0077 14.07 .0040 15.12 .0032
- 16.13 .0004 17.15 .0011 18.20 .0028 19.18 .0003 20.26 .0003 21.31 .0025 22.35 .0021 23.39 .0005
- 25.55 .0002 26.62 .0014 27.70 .0003 28.78 .0005 29.90 .0030 31.01 .0011 32.12 .0005 34.31 .0001
- 35.50 .0002 36.62 .0002 37.76 .0005 38.85 .0002 40.09 .0004 43.60 .0001 44.73 .0002 46.02 .0002
- 47.25 .0004 48.44 .0004)
-
- (list .99 .0156 1.98 .0846 2.98 .0178 3.98 .0367 4.98 .0448 5.98 .0113 6.99 .0189
- 8.00 .0011 9.01 .0247 10.02 .0089 11.01 .0184 12.03 .0105 13.00 .0039 14.07 .0116 15.09 .0078
- 16.13 .0008 17.14 .0064 18.19 .0029 19.22 .0028 20.25 .0017 21.32 .0043 22.37 .0055 23.42 .0034
- 24.48 .0004 25.54 .0002 26.61 .0017 27.70 .0011 28.80 .0002 29.89 .0019 30.97 .0028 32.09 .0007
- 34.30 .0002 35.44 .0003 36.55 .0001 37.69 .0004 38.93 .0002 40.05 .0005 41.20 .0005 42.37 .0002
- 43.54 .0003 44.73 .0001 45.95 .0002 47.16 .0001 48.43 .0005 49.65 .0004 55.90 .0002 59.81 .0004)
-
- (list 1.01 .0280 2.00 .0708 2.99 .0182 3.99 .0248 4.98 .0245 5.98 .0279 6.98 .0437
- 7.99 .0065 8.99 .0299 10.00 .0073 10.99 .0011 12.03 .0122 13.03 .0028 14.08 .0044 15.11 .0097
- 16.15 .0010 17.17 .0025 18.19 .0017 19.24 .0008 20.28 .0040 21.32 .0024 22.38 .0008 23.46 .0032
- 24.52 .0010 25.59 .0008 26.68 .0009 27.76 .0012 28.88 .0003 29.95 .0005 31.05 .0017 32.14 .0002
- 33.29 .0003 37.88 .0002 39.03 .0002 40.19 .0004 41.37 .0003 43.74 .0002 46.20 .0001 48.68 .0001
- 49.93 .0001 51.19 .0002)
-
- (list 1.00 .0225 1.99 .0921 2.98 .0933 3.99 .0365 4.99 .0100 5.98 .0213 6.98 .0049
- 7.98 .0041 8.98 .0090 9.99 .0068 11.01 .0040 12.03 .0086 13.02 .0015 14.04 .0071 15.09 .0082
- 16.14 .0011 17.15 .0014 18.18 .0010 19.26 .0013 20.26 .0005 21.33 .0006 22.36 .0011 23.46 .0016
- 24.52 .0004 25.59 .0002 26.70 .0006 27.78 .0007 28.87 .0002 30.03 .0008 31.14 .0010 32.24 .0006
- 33.37 .0002 35.67 .0003 37.99 .0004 39.17 .0004 40.35 .0005 41.53 .0001 46.42 .0001)
-
- (list 1.00 .0465 1.99 .0976 2.98 .0678 4.00 .0727 4.99 .0305 5.98 .0210 6.98 .0227
- 8.00 .0085 9.01 .0183 10.02 .0258 11.05 .0003 12.06 .0061 13.05 .0021 14.10 .0089 15.12 .0077
- 16.16 .0016 17.21 .0061 18.23 .0011 19.29 .0031 20.36 .0031 21.41 .0007 22.48 .0013 23.55 .0020
- 24.64 .0004 25.74 .0005 26.81 .0006 27.95 .0006 29.03 .0001 30.22 .0010 31.30 .0004 32.48 .0001
- 33.60 .0002 38.30 .0003)
-
- (list 1.00 .0674 1.99 .0841 2.98 .0920 3.99 .0328 4.99 .0368 5.98 .0206 6.99 .0246
- 8.01 .0048 9.01 .0218 10.03 .0155 11.05 .0048 12.06 .0077 13.00 .0020 14.10 .0083 15.15 .0084
- 16.18 .0015 17.22 .0039 18.27 .0032 19.34 .0026 20.40 .0012 21.47 .0009 22.54 .0008 23.62 .0016
- 24.71 .0005 25.82 .0004 26.91 .0002 28.03 .0008 29.17 .0002 30.32 .0028 31.45 .0004 32.61 .0005
- 33.77 .0001 36.14 .0003 37.32 .0002 38.54 .0005 39.75 .0002 42.23 .0002 48.65 .0001)
-
- (list 1.01 .0423 1.99 .0240 2.98 .0517 4.00 .0493 5.00 .0324 6.00 .0094 6.99 .0449
- 7.99 .0050 9.00 .0197 10.03 .0132 11.03 .0009 12.07 .0017 13.08 .0023 14.12 .0094 15.16 .0071
- 16.21 .0020 17.25 .0005 18.30 .0027 19.04 .0004 20.43 .0022 21.51 .0002 22.59 .0006 23.72 .0018
- 24.80 .0002 25.88 .0002 27.03 .0002 28.09 .0006 29.31 .0002 30.46 .0004 31.61 .0007 32.78 .0005
- 33.95 .0001 36.34 .0002 37.56 .0001 38.80 .0001 40.02 .0001 44.14 .0001)
-
- (list 1.00 .0669 1.99 .0909 2.99 .0410 3.98 .0292 4.98 .0259 5.98 .0148 6.98 .0319
- 7.99 .0076 9.01 .0056 10.02 .0206 11.04 .0032 12.05 .0085 13.08 .0040 14.12 .0037 15.16 .0030
- 16.20 .0013 17.24 .0021 18.30 .0010 19.36 .0015 20.44 .0013 21.50 .0009 22.60 .0015 23.69 .0014
- 24.80 .0006 25.87 .0002 27.02 .0006 28.12 .0002 29.28 .0003 30.43 .0002 31.59 .0007 32.79 .0001
- 35.14 .0001 37.57 .0001 40.03 .0002 41.28 .0004 44.10 .0001)
-
- (list .99 .0421 1.99 .1541 2.98 .0596 3.98 .0309 4.98 .0301 5.99 .0103 7.00 .0240
- 8.01 .0073 9.01 .0222 10.04 .0140 11.05 .0033 12.08 .0045 13.13 .0009 14.13 .0015 15.21 .0026
- 16.24 .0003 17.30 .0004 18.35 .0010 19.39 .0003 20.50 .0015 21.57 .0003 22.68 .0011 23.80 .0005
- 24.90 .0008 26.02 .0002 27.16 .0001 28.30 .0006 29.48 .0002 31.81 .0005 33.00 .0003 34.21 .0001
- 37.89 .0001)
-
- (list .99 .0389 2.00 .2095 3.00 .0835 3.99 .0289 5.00 .0578 5.99 .0363 7.01 .0387
- 8.01 .0056 9.04 .0173 10.05 .0175 11.08 .0053 12.10 .0056 13.15 .0064 14.19 .0036 15.22 .0019
- 16.29 .0010 17.36 .0017 18.43 .0018 19.51 .0004 20.60 .0011 21.70 .0003 22.82 .0003 23.95 .0001
- 25.05 .0004 26.17 .0001 28.50 .0003 29.68 .0001 32.07 .0003 33.28 .0004 34.52 .0001)
-
- (list 1.00 .1238 1.99 .2270 3.00 .0102 3.99 .0181 4.98 .0415 6.00 .0165 7.01 .0314
- 8.02 .0148 9.04 .0203 10.05 .0088 11.07 .0062 12.11 .0070 13.14 .0054 14.19 .0028 15.24 .0044
- 16.30 .0029 17.38 .0009 18.45 .0026 19.56 .0003 20.65 .0025 21.74 .0014 22.87 .0013 23.99 .0007
- 25.15 .0002 27.46 .0004 28.39 .0006 28.65 .0004 29.85 .0001 31.05 .0002 32.27 .0003 33.52 .0002
- 34.76 .0003)
-
- (list 1.00 .1054 2.00 .2598 2.99 .0369 3.98 .0523 4.99 .0020 5.99 .0051 7.00 .0268
- 8.01 .0027 9.04 .0029 10.05 .0081 11.08 .0047 12.12 .0051 13.16 .0091 14.19 .0015 15.27 .0030
- 16.34 .0017 17.42 .0006 18.51 .0003 19.61 .0007 20.72 .0003 21.84 .0001 22.99 .0010 24.13 .0001
- 28.44 .0001 30.09 .0001)
-
- (list .99 .0919 2.00 .0418 2.99 .0498 3.99 .0135 4.99 .0026 6.00 .0155 7.01 .0340
- 8.02 .0033 9.04 .0218 10.08 .0084 11.11 .0057 12.15 .0051 13.21 .0043 14.25 .0015 15.31 .0023
- 16.40 .0008 17.48 .0004 18.59 .0016 19.71 .0010 20.84 .0018 21.98 .0002 23.11 .0013 24.26 .0003
- 26.67 .0002 29.12 .0002 30.37 .0002 31.62 .0003 32.92 .0001)
-
- (list .99 .1174 1.99 .1126 2.99 .0370 3.99 .0159 5.01 .0472 6.01 .0091 7.03 .0211
- 8.05 .0015 9.07 .0098 10.11 .0038 11.15 .0042 12.20 .0018 13.24 .0041 14.32 .0033 15.41 .0052
- 16.49 .0001 17.61 .0004 18.71 .0004 19.84 .0004 20.99 .0002 22.14 .0006 23.31 .0006 24.50 .0004
- 25.70 .0002 28.09 .0002 28.66 .0002 32.00 .0001)
-
- (list 1.00 .1085 2.00 .1400 2.99 .0173 3.99 .0229 5.00 .0272 6.02 .0077 7.03 .0069
- 8.04 .0017 9.08 .0045 10.10 .0030 11.15 .0040 12.20 .0007 13.25 .0019 14.32 .0008 15.42 .0024
- 16.50 .0002 17.59 .0005 18.71 .0003 19.83 .0002 20.98 .0005 23.29 .0008)
-
- (list 1.00 .0985 2.00 .1440 2.99 .0364 3.99 .0425 5.00 .0190 6.01 .0089 7.03 .0278
- 8.04 .0006 9.07 .0083 10.10 .0021 11.14 .0050 12.18 .0005 13.26 .0036 14.33 .0005 15.41 .0026
- 17.62 .0004 18.75 .0004 19.89 .0003 21.04 .0012 22.21 .0002 23.38 .0004 27.04 .0001)
-
- (list .99 .1273 2.00 .1311 2.99 .0120 4.00 .0099 5.00 .0235 6.02 .0068 7.03 .0162
- 8.06 .0009 9.08 .0083 10.12 .0014 11.17 .0050 12.24 .0010 13.29 .0013 14.39 .0022 15.48 .0011
- 16.59 .0002 17.70 .0003 18.84 .0010 20.00 .0003 21.17 .0003 23.56 .0004 28.79 .0003)
-
- (list 1.00 .1018 2.00 .1486 3.00 .0165 4.00 .0186 5.01 .0194 6.02 .0045 7.04 .0083
- 8.06 .0012 9.10 .0066 10.15 .0009 11.19 .0008 12.26 .0011 13.34 .0028 14.45 .0006 15.53 .0009
- 16.66 .0002 17.79 .0006 18.94 .0005 20.11 .0003 21.29 .0005 22.49 .0003 23.73 .0005 26.22 .0001
- 27.52 .0001 28.88 .0002)
-
- (list 1.00 .1889 1.99 .1822 3.00 .0363 4.00 .0047 5.01 .0202 6.03 .0053 7.05 .0114
- 8.01 .0002 9.13 .0048 10.17 .0010 11.23 .0033 12.30 .0010 13.38 .0006 14.50 .0002 15.62 .0010
- 20.27 .0001 21.47 .0001)
-
- (list 1.00 .0522 1.99 .0763 2.99 .0404 4.00 .0139 5.01 .0185 6.01 .0021 7.06 .0045
- 8.09 .0002 9.11 .0003 10.17 .0006 11.25 .0004 12.32 .0005 13.40 .0003 14.53 .0003 15.65 .0007
- 16.80 .0001 17.95 .0002 19.14 .0006 20.34 .0002 21.56 .0003)
-
- (list .99 .1821 1.99 .0773 3.00 .0125 4.01 .0065 5.01 .0202 6.03 .0071 7.05 .0090
- 8.08 .0006 9.13 .0008 10.18 .0013 11.25 .0010 12.33 .0012 13.42 .0006 14.54 .0005 15.65 .0004
- 17.97 .0002 19.15 .0001)
-
- (list 1.00 .1868 2.00 .0951 3.00 .0147 4.01 .0134 5.02 .0184 6.04 .0132 7.06 .0011
- 8.11 .0008 9.15 .0010 10.22 .0012 11.30 .0011 12.40 .0003 13.11 .0004 13.49 .0002 14.62 .0003
- 15.77 .0001)
-
- (list 1.00 .1933 2.00 .0714 3.00 .0373 4.00 .0108 5.02 .0094 6.02 .0010 7.07 .0022
- 8.11 .0002 9.16 .0065 10.23 .0015 11.31 .0023 12.40 .0003 13.53 .0014 14.66 .0002 15.81 .0011
- 18.20 .0002 19.41 .0001)
-
- (list .99 .2113 1.99 .0877 3.00 .0492 4.01 .0094 5.02 .0144 6.04 .0103 7.07 .0117
- 8.12 .0006 9.19 .0019 10.25 .0007 11.35 .0017 12.45 .0010 13.58 .0003 14.74 .0003 15.91 .0003
- 19.57 .0002)
-
- (list .99 .2455 1.99 .0161 3.00 .0215 4.01 .0036 5.03 .0049 6.04 .0012 7.09 .0036
- 8.14 .0011 9.21 .0009 10.30 .0001 11.40 .0012 12.50 .0001 13.66 .0005 14.84 .0001)
-
- (list 1.00 .1132 2.00 .0252 3.00 .0292 4.01 .0136 5.03 .0045 6.06 .0022 7.11 .0101
- 8.17 .0004 9.23 .0010 10.33 .0012 11.44 .0013 12.58 .0011 13.75 .0002 14.93 .0005 16.14 .0002)
-
- (list 1.00 .1655 2.00 .0445 3.00 .0120 4.00 .0038 5.02 .0015 6.07 .0038 7.11 .0003
- 8.19 .0002 9.25 .0010 10.36 .0011 11.48 .0005 12.63 .0002 13.79 .0003 16.24 .0002)
-
- (list .99 .3637 1.99 .0259 3.01 .0038 4.01 .0057 5.03 .0040 6.07 .0067 7.12 .0014
- 8.19 .0004 9.27 .0003 10.38 .0002 12.67 .0001)
-
- (list 1.00 .1193 2.00 .0230 3.00 .0104 4.01 .0084 5.04 .0047 6.08 .0035 7.13 .0041
- 8.20 .0002 9.29 .0005 10.40 .0005 11.53 .0003 12.70 .0002 13.91 .0002)
-
- (list 1.00 .0752 2.00 .0497 3.00 .0074 4.02 .0076 5.05 .0053 6.09 .0043 7.15 .0024
- 8.22 .0001 9.32 .0006 10.45 .0002 11.58 .0001 12.78 .0001 15.22 .0001)
-
- (list 1.00 .2388 2.00 .0629 3.01 .0159 4.04 .0063 5.07 .0051 6.12 .0045 7.19 .0026
- 8.29 .0015 9.43 .0001 11.75 .0002)
-
- (list 1.00 .1919 2.01 .0116 3.01 .0031 4.03 .0090 5.07 .0061 6.13 .0036 7.19 .0013
- 8.30 .0016 9.13 .0001 10.59 .0002 11.78 .0002)
-
- (list 1.00 .1296 2.00 .0135 3.01 .0041 4.04 .0045 5.09 .0028 6.14 .0046 7.23 .0007
- 8.32 .0007 9.50 .0001)
-
- (list 1.00 .0692 2.00 .0209 3.02 .0025 4.05 .0030 5.09 .0047 6.17 .0022 7.25 .0015
- 8.36 .0015 9.53 .0010 10.69 .0001 13.40 .0001)
-
- (list 1.00 .1715 2.00 .0142 3.01 .0024 4.03 .0015 5.07 .0017 6.13 .0018 7.22 .0009
- 8.33 .0014 9.51 .0007 10.69 .0002)
-
- (list 1.00 .1555 2.01 .0148 3.02 .0007 4.06 .0006 5.10 .0005 6.16 .0008 7.26 .0009
- 8.39 .0008 9.58 .0002)
-
- (list 1.00 .1357 2.00 .0116 3.02 .0026 4.04 .0009 5.09 .0004 6.17 .0005 7.27 .0002
- 8.40 .0001)
-
- (list 1.00 .2185 2.01 .0087 3.03 .0018 4.06 .0025 5.11 .0020 6.20 .0012 7.32 .0005
- 8.46 .0001 9.66 .0003)
-
- (list 1.00 .2735 2.00 .0038 3.02 .0008 4.06 .0012 5.12 .0008 6.22 .0011 7.35 .0003
- 8.50 .0002)
-
- (list 1.00 .1441 1.99 .0062 3.01 .0023 4.05 .0011 5.11 .0012 6.20 .0003 7.33 .0004
- 8.50 .0001)
-
- (list 1.00 .0726 2.01 .0293 3.03 .0022 5.14 .0005 6.26 .0011 7.41 .0002 8.63 .0002)
-
- (list 1.00 .0516 2.00 .0104 3.02 .0029 5.15 .0002 6.27 .0001)
-
- (list 1.00 .0329 2.00 .0033 3.03 .0013 4.10 .0005 5.19 .0004 6.32 .0002)
-
- (list 1.00 .0179 1.99 .0012 3.04 .0005 4.10 .0017 5.20 .0005 6.35 .0001)
-
- (list 1.00 .0334 2.01 .0033 3.04 .0011 4.13 .0003 5.22 .0003)
-
- (list .99 .0161 2.01 .0100 3.04 .0020 4.13 .0003)
-
- (list 1.00 .0475 1.99 .0045 3.03 .0035 4.12 .0011)
-
- (list 1.00 .0593 2.00 .0014 4.17 .0002)
-
- (list 1.00 .0249 2.01 .0016)
-
- (list 1.00 .0242 2.00 .0038 4.19 .0002)
-
- (list 1.00 .0170 2.02 .0030)
-
- (list 1.00 .0381 2.00 .0017 3.09 .0002)
-
- (list 1.00 .0141 2.03 .0005 3.11 .0003 4.26 .0001)
-
- (list 1.00 .0122 2.03 .0024)
-
- (list 1.00 .0107 2.07 .0007 3.12 .0004)
-
- (list 1.00 .0250 2.02 .0026 3.15 .0002)
-
- (list 1.01 .0092)
-
- (list 1.01 .0102 2.09 .0005)
-
- (list 1.00 .0080 2.00 .0005 3.19 .0001)
-
- (list 1.01 .0298 2.01 .0005)))
-
- (*piano-attack-duration* .04)
- (*piano-release-duration* .2)
- (*db-drop-per-second* -10.0))
-
- (define (get-piano-partials freq)
- (let ((pitch (inexact->exact (round (* 12 (/ (log (/ freq 32.703)) (log 2)))))))
- (list-ref piano-spectra pitch)))
-
- (define (make-piano-ampfun dur)
- (let* ((releaseAmp (db->linear (* *db-drop-per-second* dur)))
- (attackTime (/ (* *piano-attack-duration* 100) dur)))
- (list 0 0 (/ attackTime 4) 1.0 attackTime 1.0 100 releaseAmp)))
-
- ;; This thing sounds pretty good down low, below middle c or so.
- ;; Unfortunately, there are some tens of partials down there and we're using
- ;; exponential envelopes. You're going to wait for a long long time just to
- ;; hear a single low note. The high notes sound pretty rotten--they just don't
- ;; sparkle; I have a feeling that this is due to the low amplitude of the
- ;; original data, and the lack of mechanical noise.
- ;;
- ;; The only thing you can do to alter the sound of a piano note is to set the
- ;; pfreq parameter. Pfreq is used to look up the partials. By default, it's
- ;; set to the requested frequency. Setting it to a neighboring freq is useful
- ;; when you're repeating notes. Note that there's no nyquist detection;
- ;; a high freq with a low pfreq, will give you fold over (hmmm...maybe
- ;; I can get those high notes to sparkle after all).
-
- (let* ((partials (normalize-partials (get-piano-partials pfreq)))
- (beg (inexact->exact (floor (* begin-time (mus-srate)))))
- (newdur (+ duration *piano-attack-duration* *piano-release-duration*))
- (end (+ beg (inexact->exact (floor (* newdur (mus-srate))))))
- (env1dur (- newdur *piano-release-duration*))
- (env1samples (inexact->exact (floor (* env1dur (mus-srate)))))
- (siz (inexact->exact (floor (/ (vct-length partials) 2))))
- (oscils (make-vector siz))
- (alist (make-vct siz))
- (locs (make-locsig degree distance reverb-amount *output* *reverb* *rt-num-channels*))
- (ampfun1 (make-piano-ampfun env1dur))
- (ampenv1 (make-env :envelope ampfun1
- :scaler amplitude
- :duration env1dur
- :base 10000.0))
- (releaseamp (list-ref ampfun1 (1- (length ampfun1))))
- (ampenv2 (make-env :envelope '(0 1 100 0)
- :scaler (* amplitude releaseamp)
- :duration env1dur
- :base 1.0))
- (sktr 0))
-
- (do ((i 0 (+ i 2))
- (j 0 (1+ j)))
- ((= i (vct-length partials)))
- (vct-set! alist j (vct-ref partials (+ i 1)))
- (vector-set! oscils j (make-oscil :frequency (* (vct-ref partials i) frequency))))
- (ws-interrupt?)
- (<rt-play> begin-time duration
- (lambda ()
- (set! sktr (1+ sktr))
- (let ((sum 0.0))
- (do ((k 0 (1+ k)))
- ((= k siz))
- (set! sum (+ sum (* (vct-ref alist k)
- (oscil (vector-ref oscils k))))))
- (locsig locs (* sum
- (if (> sktr env1samples)
- (env ampenv2)
- (env ampenv1))))))))))
-
-
-#!
-(lbj-piano 0 9 525 0.8)
-(rte-info)
-!#
-
-
-(definstrument (resflt start dur driver
- ranfreq noiamp noifun cosamp cosfreq1 cosfreq0 cosnum
- ampcosfun freqcosfun
- frq1 r1 g1-1 frq2 r2 g2-1 frq3 r3 g3-1
- :key (degree 0.0)
- (distance 1.0)
- (reverb-amount 0.005))
- ;; driver=0 -- use sum of cosines to drive the filter,
- ;; driver=1 -- use white noise
- ;; if noise used, ranfreq=frequency of random number generator,
- ;; noiamp=amplitude thereof,
- ;; noifun=amplitude envelope on white noise
- ;; if sum-of-cosines (i.e. a band-limited pulse train),
- ;; cosamp=amplitude of pulse train,
- ;; cosfreq1=top frequency (given freqcosfun) (i.e. pulse frequency)
- ;; cosfreq0=bottom frequency,
- ;; cosnum=number of cosines in the pulse,
- ;; ampcosfun=amplitude envelope on pulse train
- ;; freqcosfun=frequency envelope on pulse train
- ;; There are then 3 resonators, centered at frq1, frq2, frq3,
- ;; with pole-radius r1, r2, and r3 respectively, and
- ;; with gains of g1, g2, and g3.
- (c-display cosfreq0 cosnum (= driver 1) noifun ampcosfun)
- (let* ((beg (inexact->exact (floor (* start (mus-srate)))))
- (end (+ beg (inexact->exact (floor (* dur (mus-srate))))))
- (f1 (make-two-pole :radius r1 :frequency frq1))
- (f2 (make-two-pole :radius r2 :frequency frq2))
- (f3 (make-two-pole :radius r3 :frequency frq3))
- (g1 g1-1) (g2 g2-1) (g3 g3-1)
- (with-noise (= driver 1))
- (loc (make-locsig degree distance reverb-amount *output* *reverb* *rt-num-channels*))
- (frqf (make-env :envelope (if (not freqcosfun) '(0 0 1 1) freqcosfun) :duration dur
- :scaler (hz->radians (- cosfreq1 cosfreq0))))
- (ampf (if with-noise
- (make-env :envelope noifun :scaler noiamp :duration dur)
- (make-env :envelope ampcosfun :scaler cosamp :duration dur)))
- (rn (make-rand :frequency ranfreq))
- (cn (make-sum-of-cosines :frequency cosfreq0 :cosines (max 1 cosnum))))
- (ws-interrupt?)
- (<rt-play> start dur
- (lambda ()
- (let ((input1 (if with-noise
- (* (env ampf) (rand rn))
- (* (env ampf) (sum-of-cosines cn (env frqf))))))
- (locsig loc (+ (two-pole f1 (* input1 g1))
- (two-pole f2 (* input1 g2))
- (two-pole f3 (* input1 g3)))))))))
-
-#!
-(resflt 0 1.0 0 0 0 #f .1 200 230 10 '(0 0 50 1 100 0) '(0 0 100 1) 500 .995 .1 1000 .995 .1 2000 .995 .1)
-(resflt 0 1.0 1 10000 .01 '(0 0 50 1 100 0) 0 0 0 0 #f #f 500 .995 .1 1000 .995 .1 2000 .995 .1)
-!#
-
-#!
-BUG IN COMPILER
-
-(definstrument (scratch start file src-ratio turnaroundlist)
- (let* ((f (make-readin file)) ;;(make-file->sample file))
- (beg (inexact->exact (round (* (mus-srate) start))))
- (turntable (list->vct turnaroundlist))
- (turn-i 1)
- (turns (length turnaroundlist))
- (cur-sample (inexact->exact (floor (* (mus-srate) (vct-ref turntable 0)))))
- (turn-sample (inexact->exact (floor (* (mus-srate) (vct-ref turntable turn-i)))))
- (turning 0)
- (last-val 0.0)
- (last-val2 0.0)
- (rd (make-src :srate src-ratio))
- (forwards (> src-ratio 0.0)))
- (if (and forwards (< turn-sample cur-sample))
- (set! (mus-increment rd) (- src-ratio)))
- (ws-interrupt?)
- (<rt-play> start
- (lambda ()
- (declare (<float> last-val))
- (let ((val (src rd 0.0
- (lambda (dir)
- (set! (mus-location f) cur-sample)
- (let ((inval (readin f)))
- (set! cur-sample (+ cur-sample dir))
- inval)))))
- (if (= turning 0)
- (if (and forwards (>= cur-sample turn-sample)) ;; we past turn point going forwards
- (set! turning 1)
- (if (and (not forwards) (<= cur-sample turn-sample)) ;; we past turn point going backwards
- (set! turning -1)))
- ;; wait for an inflection...
- (if (or (and (<= last-val2 last-val) (>= last-val val))
- (and (>= last-val2 last-val) (<= last-val val)))
- (begin
- (set! turn-i (1+ turn-i))
- (if (< turn-i turns)
- (begin
- (set! turn-sample (inexact->exact (floor (* (mus-srate) (vct-ref turntable turn-i)))))
- (set! forwards (not forwards))
- (set! (mus-increment rd) (- (mus-increment rd)))))
- (set! turning 0))))
- (set! last-val2 last-val)
- (set! last-val val)
- (out val)
- (if (>= turn-i turns)
- (remove-me)))))))
-!#
-
-#!
-(define filename "/gammelhd/home/kjetil/flute2.wav")
-(define filename "/hom/kjetism/Blub_mono16.wav")
-(scratch 0.0 filename 1.5 '(0.0 .5 .25 1.0))
-!#
-
-(define-rt (file->sample reader pos)
- (set! (mus-location reader) pos)
- (readin reader))
-
-
-;;; spectral modeling (SMS)
-
-(definstrument (pins beg dur file amp-1
- :key (transposition 1.0) ; this can be used to transpose the sound
- (time-scaler 1.0) ; this can make things happen faster (< 1.0)/slower (> 1.0) in the output
- (fftsize 256) ; should be a power of 2
- ;; at 22050 srate, this is ok for sounds above 300Hz or so, below that you need 512 or 1024,
- ;; at 44100, probably best to double these sizes -- it takes some searching sometimes.
- (highest-bin 128) ; how high in fft data should we search for peaks
- (max-peaks 16) ; how many spectral peaks to track at the maximum
- attack) ; whether to use original attack via time domain splice
- ;; do the sliding fft shuffle, translate to polar coordinates, find spectral peaks,
- ;; match with current, do some interesting transformation, resynthesize using oscils
- ;; All the envelopes are created on the fly. max-peaks is how many of these peaks
- ;; we are willing to track at any given time.
- (let* ((max-peaks-1 max-peaks)
- (fftsize-1 fftsize)
- (highest-bin-1 highest-bin)
- (amp amp-1)
- (start (inexact->exact (floor (* beg (mus-srate)))))
- (end (+ start (inexact->exact (floor (* dur (mus-srate))))))
- (fil (make-readin file))
- (file-duration (mus-sound-duration file))
- (fdr (make-vct fftsize-1))
- (fdi (make-vct fftsize-1))
- (window (make-fft-window blackman2-window fftsize-1))
- (fftamps (make-vct fftsize-1))
- (max-oscils (* 2 max-peaks-1))
- (current-peak-freqs (make-vct max-oscils))
- (last-peak-freqs (make-vct max-oscils))
- (current-peak-amps (make-vct max-oscils))
- (last-peak-amps (make-vct max-oscils))
- (peak-amps (make-vct max-peaks-1))
- (peak-freqs (make-vct max-peaks-1))
- (resynth-oscils (make-vector max-oscils))
- (amps (make-vct max-oscils)) ;run-time generated amplitude and frequency envelopes
- (rates (make-vct max-oscils))
- (freqs (make-vct max-oscils))
- (sweeps (make-vct max-oscils))
- (lowest-magnitude .001)
- (hop (inexact->exact (floor (/ fftsize-1 4))))
- (outhop (inexact->exact (floor (* time-scaler hop))))
- (ifreq (/ 1.0 outhop))
- (ihifreq (hz->radians ifreq))
- (fftscale (/ 1.0 (* fftsize-1 .42323))) ;integrate Blackman-Harris window = .42323*window width and shift by fftsize-1
- (fft-mag (/ (mus-srate) fftsize-1))
- (furthest-away-accepted .1)
- (filptr 0)
- (trigger 0)
- (sum 0.0)
- (log10 (log 10.0))
- (cur-oscils max-oscils)
- (ramped (or attack 0))
- (splice-attack (number? attack))
- (attack-size (or attack 1))
- (ramp-ind 0)
- (ramped-attack (make-vct attack-size)))
- (if (> (/ dur time-scaler) file-duration)
- (snd-print (format #f "~A is ~1,3F seconds long, but we'll need ~1,3F seconds of data for this note"
- file file-duration (/ dur time-scaler))))
- (do ((i 0 (1+ i)))
- ((= i max-oscils))
- (vector-set! resynth-oscils i (make-oscil :frequency 0)))
- (set! trigger outhop)
- (vct-scale! window fftscale)
- (ws-interrupt?)
- (<rt-play> beg dur
- (lambda ()
- (if splice-attack
- (let ((ramp (/ 1.0 attack-size)))
- ;; my experience in translating SMS, and rumor via Greg Sandell leads me to believe that
- ;; there is in fact no way to model some attacks successfully in this manner, so this block
- ;; simply splices the original attack on to the rest of the note. "attack" is the number
- ;; of samples to include bodily.
- (out (* amp (file->sample fil filptr)))
- (set! filptr (1+ filptr))
- (if (> filptr attack-size)
- (let ((mult 1.0))
- (do ((k 0 (1+ k)))
- ((= k attack-size))
- (vct-set! ramped-attack k (* mult (file->sample fil (+ filptr k))))
- (set! mult (- mult ramp)))
- (set! splice-attack #f))))
- (begin
- (if (>= trigger outhop)
- (let ((peaks 0))
- ;; get next block of data and apply window to it
- (set! trigger 0)
- (do ((k 0 (1+ k)))
- ((= k fftsize-1))
- (vct-set! fdr k (* (vct-ref window k) (file->sample fil filptr)))
- (set! filptr (1+ filptr)))
- (vct-fill! fdi 0.0)
- (set! filptr (- filptr (- fftsize-1 hop)))
- ;; get the fft
- (fft fdr fdi fftsize-1 1)
- ;; change to polar coordinates (ignoring phases)
- (do ((k 0 (1+ k)))
- ((= k highest-bin-1)) ;no need to paw through the upper half (so (<= highest-bin-1 (floor fft-size 2)))
- (let ((x (vct-ref fdr k))
- (y (vct-ref fdi k)))
- (vct-set! fftamps k (* 2 (sqrt (+ (* x x) (* y y)))))))
- (do ((k 0 (1+ k)))
- ((= k max-oscils))
- (vct-set! last-peak-freqs k (vct-ref current-peak-freqs k))
- (vct-set! last-peak-amps k (vct-ref current-peak-amps k))
- (vct-set! current-peak-amps k 0.0))
- (vct-fill! peak-amps 0.0)
- (let ((ra (vct-ref fftamps 0))
- (la 0.0)
- (ca 0.0))
- ;; search for current peaks following Xavier Serra's recommendations in
- ;; "A System for Sound Analysis/Transformation/Synthesis
- ;; Based on a Deterministic Plus Stochastic Decomposition"
- (do ((k 0 (1+ k)))
- ((= k highest-bin-1))
- (set! la ca)
- (set! ca ra)
- (set! ra (vct-ref fftamps k))
- (if (and (> ca lowest-magnitude)
- (> ca ra)
- (> ca la))
- ;; found a local maximum above the current threshold (its bin number is k-1)
- (let* ((logla (/ (log la) log10))
- (logca (/ (log ca) log10))
- (logra (/ (log ra) log10))
- (offset (/ (* .5 (- logla logra)) (+ logla (* -2 logca) logra)))
- (amp (expt 10.0 (- logca (* .25 (- logla logra) offset))))
- (freq (* fft-mag (+ k offset -1))))
- (if (= peaks max-peaks-1)
- ;; gotta either flush this peak, or find current lowest and flush him
- (let ((minp 0)
- (minpeak (vct-ref peak-amps 0)))
- (do ((j 1 (1+ j)))
- ((= j max-peaks-1))
- (if (< (vct-ref peak-amps j) minpeak)
- (begin
- (set! minp j)
- (set! minpeak (vct-ref peak-amps j)))))
- (if (> amp minpeak)
- (begin
- (vct-set! peak-freqs minp freq)
- (vct-set! peak-amps minp amp))))
- (begin
- (vct-set! peak-freqs peaks freq)
- (vct-set! peak-amps peaks amp)
- (set! peaks (1+ peaks))))))))
- ;; now we have the current peaks -- match them to the previous set and do something interesting with the result
- ;; the end results are reflected in the updated values in the rates and sweeps arrays.
- ;; search for fits between last and current, set rates/sweeps for those found
- ;; try to go by largest amp first
- (do ((k 0 (1+ k)))
- ((= k peaks))
- (let ((maxp 0)
- (maxpk (vct-ref peak-amps 0)))
- (do ((j 1 (1+ j)))
- ((= j max-peaks-1))
- (if (> (vct-ref peak-amps j) maxpk)
- (begin
- (set! maxp j)
- (set! maxpk (vct-ref peak-amps j)))))
- ;; now maxp points to next largest unmatched peak
- (if (> maxpk 0.0)
- (let* ((closestp -1)
- (closestamp 10.0)
- (current-freq (vct-ref peak-freqs maxp))
- (icf (/ 1.0 current-freq)))
- (do ((j 0 (1+ j)))
- ((= j max-peaks-1))
- (if (> (vct-ref last-peak-amps j) 0.0)
- (let ((closeness (* icf (abs (- (vct-ref last-peak-freqs j) current-freq)))))
- (if (< closeness closestamp)
- (begin
- (set! closestamp closeness)
- (set! closestp j))))))
- (if (< closestamp furthest-away-accepted)
- (begin
- ;; peak-amp is transferred to appropriate current-amp and zeroed,
- (vct-set! current-peak-amps closestp (vct-ref peak-amps maxp))
- (vct-set! peak-amps maxp 0.0)
- (vct-set! current-peak-freqs closestp current-freq)))))))
- (do ((k 0 (1+ k)))
- ((= k max-peaks-1))
- (if (> (vct-ref peak-amps k) 0.0)
- ;; find a place for a new oscil and start it up
- (let ((new-place -1))
- (do ((j 0 (1+ j)))
- ((or (not (= new-place -1))
- (= j max-oscils)))
- (if (and (= (vct-ref last-peak-amps j) 0.0)
- (= (vct-ref current-peak-amps j) 0.0))
- (set! new-place j)))
- (vct-set! current-peak-amps new-place (vct-ref peak-amps k))
- (vct-set! peak-amps k 0.0)
- (vct-set! current-peak-freqs new-place (vct-ref peak-freqs k))
- (vct-set! last-peak-freqs new-place (vct-ref peak-freqs k))
- (set! (mus-frequency (vector-ref resynth-oscils new-place)) (* transposition (vct-ref peak-freqs k))))))
- (set! cur-oscils 0)
- (do ((k 0 (1+ k)))
- ((= k max-oscils))
- (vct-set! rates k (* ifreq (- (vct-ref current-peak-amps k) (vct-ref last-peak-amps k))))
- (if (or (not (= (vct-ref current-peak-amps k) 0.0))
- (not (= (vct-ref last-peak-amps k) 0.0)))
- (set! cur-oscils k))
- (vct-set! sweeps k (* ihifreq transposition (- (vct-ref current-peak-freqs k) (vct-ref last-peak-freqs k)))))
- (set! cur-oscils (1+ cur-oscils))
- ))
- ;; run oscils, update envelopes
- (set! trigger (1+ trigger))
- (if (= ramped 0)
- (set! sum 0.0)
- (begin
- (set! sum (vct-ref ramped-attack ramp-ind))
- (set! ramp-ind (1+ ramp-ind))
- (if (= ramp-ind ramped) (set! ramped 0))))
- (do ((k 0 (1+ k)))
- ((= k cur-oscils))
- (if (or (not (= (vct-ref amps k) 0.0))
- (not (= (vct-ref rates k) 0.0)))
- (begin
- (set! sum (+ sum (* (vct-ref amps k) (oscil (vector-ref resynth-oscils k) (vct-ref freqs k)))))
- (vct-set! amps k (+ (vct-ref amps k) (vct-ref rates k)))
- (vct-set! freqs k (+ (vct-ref freqs k) (vct-ref sweeps k))))))
- (out (* amp sum) )))))))
-
-#!
-(define filename "/gammelhd/home/kjetil/flute2.wav")
-(pins 0 2 filename 0.5 :time-scaler 16.2)
-!#
-
-
-(definstrument (zc time dur freq amp-1 length1 length2 feedback)
- (let* ((beg (inexact->exact (floor (* (mus-srate) time))))
- (end (+ beg (inexact->exact (floor (* (mus-srate) dur)))))
- (amp amp-1)
- (s (make-pulse-train :frequency freq))
- (d0 (make-comb :size length1 :max-size (1+ (max length1 length2)) :scaler feedback))
- (zenv (make-env :envelope '(0 0 1 1) :scaler (- length2 length1) :duration dur)))
- (ws-interrupt?)
- (<rt-play> time dur
- (lambda ()
- (out (comb d0 (* amp (pulse-train s)) (env zenv)))))))
-
-#!
-(zc 0 3 100 .6 20 100 .95) (zc 3.5 3 100 .1 100 20 .95)
-!#
-
-
-(definstrument (zn time dur freq amp-1 length1 length2 feedforward)
- ;; notches are spaced at srate/len, feedforward sets depth thereof
- ;; so sweep of len from 20 to 100 sweeps the notches down from 1000 Hz to ca 200 Hz
- ;; so we hear our downward glissando beneath the pulses.
- (let* ((beg (inexact->exact (floor (* (mus-srate) time))))
- (end (+ beg (inexact->exact (floor (* (mus-srate) dur)))))
- (amp amp-1)
- (s (make-pulse-train :frequency freq))
- (d0 (make-notch :size length1 :max-size (1+ (max length1 length2)) :scaler feedforward))
- (zenv (make-env :envelope '(0 0 1 1) :scaler (- length2 length1) :duration dur)))
- (ws-interrupt?)
- (<rt-play> time dur
- (lambda ()
- (out (notch d0 (* amp (pulse-train s)) (env zenv)))))))
-
-#!
-(begin
- (zn 0 1 100 .6 20 100 .995)
- (zn 1.5 1 100 .6 100 20 .995))
-(rte-info)
-!#
-
-
-(definstrument (za time dur freq amp-1 length1 length2 feedback feedforward)
- (let* ((beg (inexact->exact (floor (* (mus-srate) time))))
- (end (+ beg (inexact->exact (floor (* (mus-srate) dur)))))
- (amp amp-1)
- (s (make-pulse-train :frequency freq))
- (d0 (make-all-pass feedback feedforward :size length1 :max-size (1+ (max length1 length2))))
- (zenv (make-env :envelope '(0 0 1 1) :scaler (- length2 length1) :duration dur)))
- (ws-interrupt?)
- (<rt-play> time dur
- (lambda ()
- (out (all-pass d0 (* amp (pulse-train s)) (env zenv)))))))
-
-#!
-(begin
- (za 0 1 100 .6 20 100 .95 .95)
- (za 1.5 1 100 .6 100 20 .95 .95))
-!#
-
-
-(definstrument (clm-expsrc beg dur input-file exp-ratio src-ratio amp-1 :key rev start-in-file)
- (let* ((st (inexact->exact (floor (* beg (mus-srate)))))
- (stf (inexact->exact (floor (* (or start-in-file 0) (mus-sound-srate input-file)))))
- (fdA (make-readin input-file :channel 0 :start stf))
- (exA (make-granulate :expansion exp-ratio))
- (two-chans (and (= (mus-sound-chans input-file) 2) (= *rt-num-channels* 2)))
- (fdB (make-readin input-file :channel (if two-chans 1 0) :start stf))
- (exB (make-granulate :expansion exp-ratio))
- (srcA (make-src :srate src-ratio))
- (srcB (make-src :srate src-ratio))
- (revit (and *reverb* rev))
- (rev-amp (if revit (if two-chans (* rev .5) rev) 0.0))
- (amp amp-1)
- (nd (+ st (inexact->exact (floor (* (mus-srate) dur))))))
- (<rt-play> beg dur
- (lambda ()
- (let ((valA (* amp (src srcA 0.0 (lambda (dir) (granulate exA (lambda (dir) (readin fdA)))))))
- (valB (if two-chans (* amp (src srcB 0.0 (lambda (dir) (granulate exB (lambda (dir) (readin fdB)))))) 0.0)))
- (out 0 valA)
- (if two-chans (out 1 valB)))))))
- ;;;(if revit (out-any i (* rev-amp (+ valA valB)) 0 *reverb*))))))))
-
-#!
-(clm-expsrc 0 2 filename 5.5 0.5 0.9)
-!#
-
-
-#!
-BUG IN COMPILER
-
-(definstrument (exp-snd file beg dur amp :key (exp-amt 1.0) (ramp .4) (seglen .15) (sr 1.0) (hop .05) ampenv)
- ;; granulate with envelopes on the expansion amount, segment envelope shape,
- ;; segment length, hop length, and input file resampling rate
- (let* ((st (inexact->exact (floor (* beg (mus-srate)))))
- (nd (+ st (inexact->exact (floor (* dur (mus-srate))))))
- (f0 (make-readin file 0))
- (expenv (make-env :envelope (if (list? exp-amt)
- (or exp-amt (list 0 1 1 1))
- (list 0 exp-amt 1 exp-amt))
- :duration dur))
- (lenenv (make-env :envelope (if (list? seglen)
- (or seglen (list 0 .15 1 .15))
- (list 0 seglen 1 seglen))
- :duration dur))
- (max-seg-len (if seglen (if (list? seglen) (max-envelope seglen) seglen) .15))
- (initial-seg-len (if seglen (if (list? seglen) (cadr seglen) seglen) .15))
- (scaler-amp (if (> max-seg-len .15) (/ (* 0.6 .15) max-seg-len) 0.6))
- (srenv (make-env :envelope (if (list? sr)
- (or sr (list 0 1 1 1))
- (list 0 sr 1 sr))
- :duration dur))
- (rampdata (if (list? ramp)
- (or ramp (list 0 .4 1 .4))
- (list 0 ramp 1 ramp)))
- (rampenv (make-env :envelope rampdata :duration dur))
- (initial-ramp-time (if ramp (if (list? ramp) (cadr ramp) ramp) .4))
- (hopenv (make-env :envelope (if (list? hop)
- (or hop (list 0 .05 1 .05))
- (list 0 hop 1 hop))
- :duration dur))
- (max-out-hop (if hop (if (list? hop) (max-envelope hop) hop) .05))
- (initial-out-hop (if hop (if (list? hop) (cadr hop) hop) .05))
- (min-exp-amt (if exp-amt (if (list? exp-amt) (min-envelope exp-amt) exp-amt) 1.0))
- (initial-exp-amt (if exp-amt (if (list? exp-amt) (cadr exp-amt) exp-amt) 1.0))
- (max-in-hop (/ max-out-hop min-exp-amt))
- (max-len (inexact->exact (ceiling (* (mus-srate) (+ (max max-out-hop max-in-hop) max-seg-len)))))
- (ampe (make-env :envelope (or ampenv (list 0 0 .5 1 1 0)) :scaler amp :duration dur))
- (exA (make-granulate :expansion initial-exp-amt
- :max-size max-len
- :ramp initial-ramp-time
- :hop initial-out-hop
- :length initial-seg-len
- :scaler scaler-amp))
- (ex-samp 0.0)
- (next-samp 0.0)
- (vol (env ampe))
- (valA0 (* vol (granulate exA (lambda (dir) (readin f0)))))
- (valA1 (* vol (granulate exA (lambda (dir) (readin f0))))))
- (ws-interrupt?)
- (if (or (<= (min-envelope rampdata) 0.0)
- (>= (max-envelope rampdata) 0.5))
- (snd-warning (format #f "ramp argument to expsnd must always be between 0.0 and 0.5: ~A" ramp))
- (<rt-play> beg dur
- (lambda ()
- (declare (<float> valA0 valA1))
- ;;(if (c-g?) (set! i (1- nd)))
- (let* ((expa (env expenv)) ;current expansion amount
- (segl (env lenenv)) ;current segment length
- (resa (env srenv)) ;current resampling increment
- (rmpl (env rampenv)) ;current ramp length (0 to .5)
- (hp (env hopenv)) ;current hop size
- ;; now we set the granulate generator internal state to reflect all these envelopes
- (sl (inexact->exact (floor (* segl (mus-srate)))))
- (rl (inexact->exact (floor (* rmpl sl)))))
- (set! vol (env ampe))
- (set! (mus-length exA) sl)
- (set! (mus-ramp exA) rl)
- (set! (mus-frequency exA) hp)
- (set! (mus-increment exA) expa)
- (set! next-samp (+ next-samp resa))
- (if (> next-samp (1+ ex-samp))
- (let ((samps (inexact->exact (floor (- next-samp ex-samp)))))
- (do ((k 0 (1+ k)))
- ((= k samps))
- (set! valA0 valA1)
- (set! valA1 (* vol (granulate exA (lambda (dir) (readin f0)))))
- (set! ex-samp (1+ ex-samp)))))
- (if (= next-samp ex-samp)
- (out 0 valA0)
- (out 0 (+ valA0 (* (- next-samp ex-samp) (- valA1 valA0)))))))))))
-!#
-
-
-;;; (with-sound () (exp-snd "fyow.snd" 0 3 1 '(0 1 1 3) 0.4 .15 '(0 2 1 .5) 0.05))
-;;; (with-sound () (exp-snd "oboe.snd" 0 3 1 '(0 1 1 3) 0.4 .15 '(0 2 1 .5) 0.2))
-
-
-#!
-BUG IN COMPILER
-
-(define-rt-vct-struct grn
- :rampval
- :rampinc
- :loc
- :segctr
- :whichseg
- :ramplen
- :steadylen
- :trigger)
-
-
-(definstrument (expfil start duration hopsecs rampsecs steadysecs file1 file2)
- (let* ((fil1 (make-file->sample file1))
- (fil2 (make-file->sample file2))
- (hop (inexact->exact (floor (* hopsecs (mus-srate)))))
- (ramplen (inexact->exact (floor (* rampsecs (mus-srate)))))
- (steadylen (inexact->exact (floor (* steadysecs (mus-srate)))))
- (grn1 (make-grn :rampval 0.0 :rampinc (/ 1.0 ramplen) :loc 0 :segctr 0 :whichseg 0 :ramplen ramplen :steadylen steadylen :trigger 0))
- (grn2 (make-grn :rampval 0.0 :rampinc (/ 1.0 ramplen) :loc 0 :segctr 0 :whichseg 0 :ramplen ramplen :steadylen steadylen :trigger 0))
- (beg (inexact->exact (floor (* start (mus-srate)))))
- (end (+ beg (inexact->exact (floor (* duration (mus-srate))))))
- (out1 beg)
- (out2 (+ hop beg)))
- (ws-interrupt?)
- (<rt-play> start duration
- (lambda ()
- (let ((val 0.0))
- (if (= i out1)
- (let* ((grn grn1)
- (inval (in (=> grn :loc) fil1)))
- (set! (=> grn :loc) (1+ (=> grn :loc)))
- (if (= (=> grn :whichseg) 0) ;ramp-up
- (begin
- (set! inval (* inval (=> grn :rampval)))
- (set! (=> grn :rampval) (+ (=> grn :rampval) (=> grn :rampinc)))
- (set! (=> grn :segctr) (1+ (=> grn :segctr)))
- (if (= (=> grn :segctr) (=> grn :ramplen))
- (begin
- (set! (=> grn :segctr) 0)
- (set! (=> grn :whichseg) (1+ (=> grn :whichseg))))))
- (if (= (=> grn :whichseg) 1) ;steady-state
- (begin
- (set! (=> grn :segctr) (1+ (=> grn :segctr)))
- (if (= (=> grn :segctr) (=> grn :steadylen))
- (begin
- (set! (=> grn :segctr) 0)
- (set! (=> grn :whichseg) (1+ (=> grn :whichseg))))))
- (begin ;ramp-down
- (set! inval (* inval (=> grn :rampval)))
- (set! (=> grn :segctr) (1+ (=> grn :segctr)))
- (set! (=> grn :rampval) (- (=> grn :rampval) (=> grn :rampinc)))
- (if (= (=> grn :segctr) (=> grn :ramplen))
- (begin
- (set! (=> grn :segctr) 0)
- (set! (=> grn :trigger) 1)
- (set! (=> grn :whichseg) 0)
- (set! (=> grn :rampval) 0.0))))))
- (set! val inval)
- (set! out1 (1+ out1))
- (if (= (=> grn :trigger) 1)
- (begin
- (set! (=> grn :trigger) 0)
- (set! out1 (+ out1 hop))))))
- (if (= i out2)
- (let* ((grn grn2)
- (inval (in (=> grn :loc) fil2)))
- (set! (=> grn :loc) (1+ (=> grn :loc)))
- (if (= (=> grn :whichseg) 0) ;ramp-up
- (begin
- (set! inval (* inval (=> grn :rampval)))
- (set! (=> grn :rampval) (+ (=> grn :rampval) (=> grn :rampinc)))
- (set! (=> grn :segctr) (1+ (=> grn :segctr)))
- (if (= (=> grn :segctr) (=> grn :ramplen))
- (begin
- (set! (=> grn :segctr) 0)
- (set! (=> grn :whichseg) (1+ (=> grn :whichseg))))))
- (if (= (=> grn :whichseg) 1) ;steady-state
- (begin
- (set! (=> grn :segctr) (1+ (=> grn :segctr)))
- (if (= (=> grn :segctr) (=> grn :steadylen))
- (begin
- (set! (=> grn :segctr) 0)
- (set! (=> grn :whichseg) (1+ (=> grn :whichseg))))))
- (begin ;ramp-down
- (set! inval (* inval (=> grn :rampval)))
- (set! (=> grn :segctr) (1+ (=> grn :segctr)))
- (set! (=> grn :rampval) (- (=> grn :rampval) (=> grn :rampinc)))
- (if (= (=> grn :segctr) (=> grn :ramplen))
- (begin
- (set! (=> grn :segctr) 0)
- (set! (=> grn :trigger) 1)
- (set! (=> grn :whichseg) 0)
- (set! (=> grn :rampval) 0.0))))))
- (set! val (+ val inval))
- (set! out2 (1+ out2))
- (if (= (=> grn :trigger) 1)
- (begin
- (set! (=> grn :trigger) 0)
- (set! out2 (+ out2 hop))))))
- (out val)))))))
-
-#!
-
-;;; (with-sound () (expfil 0 2 .2 .01 .1 "oboe.snd" "fyow.snd"))
-
-
-
-#!
-From: Marco Trevisani <marco@ccrma.Stanford.EDU>
-
-This should work like a Graphic Equalizer....
-Very easy to use. Just some note:
-
-"amp" & "amp-env" apply an enveloppe to the final result of the
-filtering.
-
-"dur" as ""standard"" in my instruments, when dur = 0 it will take the length of the
-sndfile input, otherwise the duration in seconds.
-
-"gain-freq-list" is a list of gains and frequencies to
-filter --in this order gain and frequencies--. There is no limit to
-the size of the list. Gain can be a number or an
-envelope. Unfortunatelly in this version they cant alternate, one
-should chose, all envelopes or all numbers i.e.:
-case 1 -> '( .1 440.0 .3 1500.0 .2 330.0 ...etc) or
-case 2 -> '((0 .1 1 .5) 440.0 (0 1 1 .01) 1500 (0 .3 1 .5) 330.0 ...etc)
-'( .1 440.0 (0 1 1 .01) 1500 ..etc) <<< again, this is not allowed ..
-
-"offset-gain" This apply to all the gains if case 1. It adds or
-subtracts an offset to all the gains in the list. This number can be positive or
-negative. In case the result is a negative number --let's say offset =
--.4 and, like in case 1, the first gain is .1, the result would be
--.3 -- the instrument will pass a gain equal to 0.
-
-"filt-gain-scale" & "filt-gain-base" will apply to the elements of the
-envelopes if we are in case 2, gains are envelopes.
-
-"stats" if #t --default-- prints the number of seconds processed, if
-nil doesnt print anything, which will speed up a bit the process.
-!#
-
-(definstrument (graphEq file :key (beg 0) (dur 0) (or-beg 0) (amp 1) (amp-env '(0 1 .8 1 1 0)) (amp-base 1)
- (offset-gain 0)
- (gain-freq-list '((0 1 1 0) 440 (0 0 1 1) 660))
- (filt-gain-scale 1)
- (filt-gain-base 1)
- (a1 .99)
- (stats #t))
- (let* ((st (inexact->exact (floor (* beg (mus-srate)))))
- (durata (if (= 0 dur) (mus-sound-duration file) dur))
- (nd (+ st (inexact->exact (floor (* (mus-srate) durata)))))
- (or-start (inexact->exact (round (* or-beg (mus-sound-srate file)))))
- (RdA (make-readin :file file :start or-start))
- (half-list (/ (length gain-freq-list) 2))
- (ampenv (make-env :envelope amp-env :scaler amp :duration durata :base amp-base))
- (gain-list (let ((lst '())
- (len (length gain-freq-list)))
- (do ((i (- len 2) (- i 2)))
- ((< i 0))
- (set! lst (cons (list-ref gain-freq-list i) lst)))
- lst))
- (freq-list (let ((lst '())
- (len (length gain-freq-list)))
- (do ((i (- len 1) (- i 2)))
- ((<= i 0))
- (set! lst (cons (list-ref gain-freq-list i) lst)))
- lst))
- (env-size (if (list? (car gain-list))
- (make-vector (length freq-list))
- #f))
- (if-list-in-gain (list? (car gain-list)))
- (frm-size (make-vector (length freq-list)))
- (gains (make-vct (length freq-list)))
- (samp -1))
-
- (do ((k 0 (1+ k)))
- ((= k half-list))
- (let ((gval (list-ref gain-list k))
- (fval (list-ref freq-list k)))
- (if (list? gval)
- (begin
- (vector-set! env-size k (make-env :envelope gval
- :scaler filt-gain-scale
- :duration durata :base filt-gain-base))
- (vector-set! frm-size k (make-formant fval a1)))
- (vector-set! frm-size k (make-formant fval a1))
- (vct-set! gains k (if (< (+ offset-gain gval) 0)
- 0
- (+ offset-gain gval))))))
- (ws-interrupt?)
-
- (<rt-play> st (- nd st)
- (lambda ()
- (if stats
- (begin
- (set! samp (1+ samp))
- (if (= samp (mus-srate))
- (begin
- ;;(snd-print (format #f "~% ~F" (/ i (mus-srate))))
- (set! samp 0)))))
- (let ((outval 0.0)
- (inval (readin RdA)))
- (do ((k 0 (1+ k)))
- ((= k half-list))
- (if if-list-in-gain
- (set! (mus-xcoeff (vector-ref frm-size k) 0) (* (env (vector-ref env-size k)) (- 1.0 a1))))
- (set! outval (+ outval (* (vct-ref gains k)
- (formant (vector-ref frm-size k) inval)))))
- (out (* (env ampenv) outval)))))))
-
-#!
-(define filename "/hom/kjetism/Blub_mono16.wav")
-(graphEq filename)
-!#
-
-
-
-(definstrument (anoi infile start dur :key (fftsize 128) (amp-scaler 1.0) (r (* 2.0 pi)))
- ;; a kind of noise reduction -- on-going average spectrum is squelched to some extent
- ;; obviously aimed at intermittent signal in background noise
- ;; this is based on Perry Cook's Scrubber.m
- (let* ((freq-inc (inexact->exact (floor (/ fftsize 2))))
- (fdi (make-vct fftsize))
- (fdr (make-vct fftsize))
- (spectr (make-vct freq-inc 1.0))
- (scales (make-vct freq-inc 1.0))
- (diffs (make-vct freq-inc))
- (win (make-fft-window blackman2-window fftsize))
- (k 0)
- (amp 0.0)
- (incr (/ (* amp-scaler 4) (mus-srate)))
- (beg (inexact->exact (floor (* start (mus-srate)))))
- (end (+ beg (inexact->exact (floor (* dur (mus-srate))))))
- (file (make-readin infile))
- (radius (- 1.0 (/ r fftsize)))
- (bin (/ (mus-srate) fftsize))
- (fs (make-vector freq-inc))
- (samp 0))
- (do ((ctr 0 (1+ ctr)))
- ((= ctr freq-inc))
- (vector-set! fs ctr (make-formant (* ctr bin) radius)))
- (ws-interrupt?)
- (<rt-play> start dur
- (lambda ()
- (let ((inval (file->sample file samp)))
- (set! samp (1+ samp))
- (vct-set! fdr k inval)
- (set! k (1+ k))
- (if (< amp amp-scaler) (set! amp (+ amp incr)))
- (if (>= k fftsize)
- (begin
- (set! k 0)
- (spectrum fdr fdi win 1)
- (do ((ctr 0 (1+ ctr)))
- ((= ctr freq-inc))
- (vct-set! spectr ctr (+ (* .9 (vct-ref spectr ctr)) (* .1 (vct-ref fdr ctr))))
- (if (>= (vct-ref spectr ctr) (vct-ref fdr ctr))
- (vct-set! diffs ctr
- (/ (vct-ref scales ctr) (- fftsize)))
- (vct-set! diffs ctr
- (/ (- (/ (- (vct-ref fdr ctr) (vct-ref spectr ctr))
- (vct-ref fdr ctr))
- (vct-ref scales ctr))
- fftsize))))))
- (let ((outval 0.0))
- (do ((ctr 1 (1+ ctr)))
- ((= ctr freq-inc))
- (let ((cur-scale (vct-ref scales ctr)))
- (set! outval (+ outval (* cur-scale (formant (vector-ref fs ctr) inval))))
- (vct-set! scales ctr (+ (vct-ref scales ctr) (vct-ref diffs ctr)))))
- (out (* amp outval))))))))
-
-
-#!
-(define filename "/hom/kjetism/Blub_mono16.wav")
-(anoi filename 0 2)
-!#
-
-
-
-#|
-Date: Fri, 25 Sep 1998 09:56:41 +0300
-From: Matti Koskinen <mjkoskin@sci.fi>
-To: linux-audio-dev@ginette.musique.umontreal.ca
-Subject: [linux-audio-dev] Announce: alpha version of denoising
-[...]
- I wrote a simple denoiser called anoi after it's parent
- clm-instrument anoi.ins.
-
- anoi tries to remove white noise like tape hiss from wav-
- files. Removing of noise succeeds ok, but depending of the
- original sound, some distortion can be audible.
-
- If someone is interested, http://www.sci.fi/~mjkoskin
- contains tarred and gzipped file.
-
- Now only monophonic wav-files can be denoised, but adding
- others isn't too difficult.
-
--matti
-mjkoskin@sci.fi
-|#
-
-#!
-No frame-set! function.
-
-(definstrument (fullmix in-file :optional beg outdur inbeg matrix srate reverb-amount)
- ;; "matrix" can be a simple amplitude or a list of lists
- ;; each inner list represents one input channel's amps into one output channel
- ;; each element of the list can be a number, a list (turned into an env) or an env
- (let* ((st (inexact->exact (floor (* (mus-srate) (or beg 0.0)))))
- (dur (or outdur
- (/ (- (mus-sound-duration in-file) (or inbeg 0.0))
- (or (and srate (abs srate)) 1.0))))
- (samps (inexact->exact (floor (* (mus-srate) dur))))
- (nd (+ st samps))
- (in-chans (mus-sound-chans in-file))
- (inloc (inexact->exact (floor (* (or inbeg 0.0) (mus-sound-srate in-file)))))
- (file (if (not srate)
- (make-file->frame in-file)
- (let ((vect (make-vector in-chans)))
- (do ((i 0 (1+ i)))
- ((= i in-chans))
- (vector-set! vect i (make-readin in-file i inloc)))
- vect)))
- (out-chans *rt-num-channels*)
- (mx (if matrix
- (make-mixer (max in-chans out-chans))
- (make-scalar-mixer (max in-chans out-chans) 1.0)))
- (rev-mx (if (and *reverb* reverb-amount (> reverb-amount 0.0))
- (let ((rmx (make-mixer in-chans)))
- (do ((i 0 (1+ i)))
- ((= i in-chans))
- (mixer-set! rmx i 0 reverb-amount)) ; 0->assume 1 chan reverb stream, I think
- rmx)
- #f))
- (revframe (if rev-mx (make-frame 1) #f))
- (envs #f))
- (if matrix
- (begin
- (if (list? matrix) ; matrix is list of scalers, envelopes (lists), or env gens
- (do ((inp 0 (1+ inp)))
- ((= inp in-chans))
- (let ((inlist (list-ref matrix inp)))
- (do ((outp 0 (1+ outp)))
- ((= outp out-chans))
- (let ((outn (list-ref inlist outp)))
- (if outn
- (if (number? outn)
- (mixer-set! mx inp outp outn)
- (if (or (env? outn)
- (list? outn))
- (begin
- (if (not envs)
- (begin
- (set! envs (make-vector in-chans))
- (do ((i 0 (1+ i)))
- ((= i in-chans))
- (vector-set! envs i (make-vector out-chans #f)))))
- (if (env? outn)
- (vector-set! (vector-ref envs inp) outp outn)
- (vector-set! (vector-ref envs inp) outp (make-env outn :duration dur))))
- (snd-warning (format #f "unknown element in matrix: ~A" outn)))))))))
- (do ((inp 0 (1+ inp))) ; matrix is a number in this case (a global scaler)
- ((= inp in-chans))
- (if (< inp out-chans)
- (mixer-set! mx inp inp matrix))))))
- (if (not srate)
- ;; no src
- (begin
- (mus-mix *output* file st samps inloc mx envs)
- (if rev-mx (mus-mix *reverb* revframe st samps inloc rev-mx #f)))
- ;; with src
- (let* ((inframe (make-frame in-chans))
- (outframe (make-frame out-chans))
- (srcs (make-vector in-chans #f)))
- (do ((inp 0 (1+ inp)))
- ((= inp in-chans))
- (vector-set! srcs inp (make-src :srate srate)))
- ;; can't use run here yet because 2-dim vect and #f elements
- (if envs
- (run
- (lambda ()
- (do ((i st (1+ i)))
- ((= i nd))
- (do ((inp 0 (1+ inp)))
- ((= inp in-chans))
- (do ((outp 0 (1+ outp)))
- ((= outp out-chans))
- (if (and (vector-ref envs inp)
- (env? (vector-ref (vector-ref envs inp) outp)))
- (mixer-set! mx inp outp (env (vector-ref (vector-ref envs inp) outp)))))))
- (do ((inp 0 (1+ inp)))
- ((= inp in-chans))
- (frame-set! inframe inp (src (vector-ref srcs inp) 0.0 (lambda (dir) (readin (vector-ref file inp))))))
- (frame->file *output* i (frame->frame inframe mx outframe))
- (if rev-mx (frame->file *reverb* i (frame->frame inframe rev-mx revframe)))))
- ;; no envs
- (run
- (lambda ()
- (do ((i st (1+ i)))
- ((= i nd))
- (do ((inp 0 (1+ inp)))
- ((= inp in-chans))
- (frame-set! inframe inp (src (vector-ref srcs inp) 0.0 (lambda (dir) (readin (vector-ref file inp))))))
- (frame->file *output* i (frame->frame inframe mx outframe))
- (if rev-mx (frame->file *reverb* i (frame->frame inframe rev-mx revframe)))))))))))
-
-!#
-
-#|
- (with-sound (:channels 2 :statistics #t)
- (fullmix "pistol.snd")
- (fullmix "oboe.snd" 1 2 0 (list (list .1 (make-env '(0 0 1 1) :duration 2 :scaler .5)))))
-|#
-
-
-;;; bes-fm -- can also use bes-j0 here as in earlier versions
-
-
-(rt-renamefunc bes-j1 j1 <double> (<double>))
-
-
-(definstrument (bes-fm beg dur freq amp ratio index)
- "(bes-fm beg dur freq amp ratio index) produces J1(J1) imitating FM"
- (let* ((st (inexact->exact (floor (* beg (mus-srate)))))
- (nd (+ st (inexact->exact (floor (* dur (mus-srate))))))
- (car-ph 0.0)
- (mod-ph 0.0)
- (car-incr (hz->radians freq))
- (mod-incr (* ratio car-incr))
- (ampenv (make-env :envelope '(0 0 25 1 75 1 100 0) :scaler amp :duration dur)))
- (<rt-play> beg dur
- (lambda ()
- (out (* (env ampenv) (bes-j1 car-ph)))
- (set! car-ph (+ car-ph (+ car-incr (* index (bes-j1 mod-ph)))))
- (set! mod-ph (+ mod-ph mod-incr))))))
-
-#!
-(bes-fm 0 1 440 10.0 1.0 4.0)
-!#
-
-
-;;; ssb-fm
-;;; this might be better named "quasi-ssb-fm" -- cancellations are not perfect
-
-(def-clm-struct sbfm
- (am0 #f :type clm) (am1 #f :type clm)
- (car0 #f :type clm) (car1 #f :type clm)
- (mod0 #f :type clm) (mod1 #f :type clm))
-
-(define (make-ssb-fm freq)
- "(make-ssb-fm freq) makes an ssb-fm generator"
- (make-sbfm :am0 (make-oscil freq 0)
- :am1 (make-oscil freq (* 0.5 pi))
- :car0 (make-oscil 0 0)
- :car1 (make-oscil 0 (* 0.5 pi))
- :mod0 (make-hilbert-transform 40)
- :mod1 (make-delay 40)))
-
-(define (ssb-fm gen modsig)
- "(ssb-fm gen modsig) runs an ssb-fm generator"
- (+ (* (oscil (sbfm-am0 gen))
- (oscil (sbfm-car0 gen) (hilbert-transform (sbfm-mod0 gen) modsig)))
- (* (oscil (sbfm-am1 gen))
- (oscil (sbfm-car1 gen) (delay (sbfm-mod1 gen) modsig)))))
-
-
-;;; if all we want are asymmetric fm-generated spectra, we can just add 2 fm oscil pairs:
-
-(define (make-fm2 f1 f2 f3 f4 p1 p2 p3 p4)
- "(make-fm2 f1 f2 f3 f4 p1 p2 p3 p4) makes two FM paired oscils"
- ;; (make-fm2 1000 100 1000 100 0 0 (* 0.5 pi) (* 0.5 pi))
- ;; (make-fm2 1000 100 1000 100 0 0 0 (* 0.5 pi))
- (list (make-oscil f1 p1)
- (make-oscil f2 p2)
- (make-oscil f3 p3)
- (make-oscil f4 p4)))
-
-(define (fm2 gen index)
- "(fm2 gen index) runs an fm2 generator"
- (* .25 (+ (oscil (list-ref gen 0) (* index (oscil (list-ref gen 1))))
- (oscil (list-ref gen 2) (* index (oscil (list-ref gen 3)))))))
-
-
-;;; rms gain balance
-;;; This is a translation of the rmsgain code provided by Fabio Furlanete.
-
-(def-clm-struct rmsg
- (c1 0.0 :type float)
- (c2 0.0 :type float)
- (q 0.0 :type float)
- (r 0.0 :type float)
- (avg 0.0 :type float)
- (avgc 0 :type int))
-
-(define* (make-rmsgain :optional (hp 10.0))
- "(make-rmsgain :optional (hp 10.0)) makes an RMS gain generator"
- (let* ((b (- 2.0 (cos (* hp (/ (* 2.0 pi) (mus-srate))))))
- (c2 (- b (sqrt (- (* b b) 1.0))))
- (c1 (- 1.0 c2)))
- (make-rmsg :c1 c1 :c2 c2)))
-
-(define (rms gen sig)
- "(rms gen sig) runs an RMS gain generator"
- (set! (rmsg-q gen) (+ (* (rmsg-c1 gen) sig sig)
- (* (rmsg-c2 gen) (rmsg-q gen))))
- (sqrt (rmsg-q gen)))
-
-
-(define (gain gen sig rmsval)
- "(gain gen sig rmsval) returns the current RMS gain"
- (set! (rmsg-r gen) (+ (* (rmsg-c1 gen) sig sig)
- (* (rmsg-c2 gen) (rmsg-r gen))))
- (let ((this-gain (if (zero? (rmsg-r gen))
- rmsval
- (/ rmsval (sqrt (rmsg-r gen))))))
- (set! (rmsg-avg gen) (+ (rmsg-avg gen) this-gain))
- (set! (rmsg-avgc gen) (+ (rmsg-avgc gen) 1))
- (* sig this-gain)))
-
-(define (balance gen signal compare)
- "(balance gen signal compare) scales a signal based on a RMS gain"
- (gain gen signal (rms gen compare)))
-
-(define (gain-avg gen)
- "(gain-avg gen) is part of the RMS gain stuff"
- (/ (rmsg-avg gen) (rmsg-avgc gen)))
-
-(define (balance-avg gen)
- "(balance-avg gen) is part of the RM gain stuff"
- (rmsg-avg gen))
diff --git a/rt-compiler.scm b/rt-compiler.scm
deleted file mode 100644
index dd05185..0000000
--- a/rt-compiler.scm
+++ /dev/null
@@ -1,9864 +0,0 @@
-#!
-
-rt-compiler.scm
--Kjetil S. Matheussen/Notam, 2005
-
-rt-compiler.scm is developed with support from Notam/Oslo [1]
-and the Arts Council Norway [2].
-
-Oops! API might still change. This file is currently under
-heavy development.
-
-Jack must be running before loading this file!
-
-
-For documentation, check out
-http://www.notam02.no/arkiv/doc/snd-rt/
-
-
-*****
-Short
-*****
-rt-compiler provides various functions and macros to compile[3]
-and run simple lisp[4] functions.
-
-
-
-[1] http://www.notam02.no
-[2] http://www.kulturradet.no
-[3] I guess "translator" would be a more accurate word to use for
- what does the thing, rather than "compiler".
-[4] Since creating lists are not possible, calling the functions for "lisp functions"
- probably isn't correct. (?)
-
-
-
-!#
-
-(provide 'snd-rt-compiler.scm)
-
-
-
-(define *tar-atomic-heap-size* (* 4 1024 1024))
-(define *tar-nonatomic-heap-size* (* 1 256 1024))
-(define *tar-max-mem-size* (* 512 1024))
-;;(define *tar-roots-size* (* 1024 1024))
-
-
-
-;;(use-modules (srfi srfi-1))
-
-(if (or (not (defined? 'srfi-loaded))
- (not srfi-loaded))
- (use-modules (srfi srfi-1)))
-(define srfi-loaded #t)
-
-
-;;; Implementation detail: map must run its arguments in order. There must be no
-;;; difference between map-in-order and map. (stupid map, luckily guile maps in proper order)
-;;; In case guile change this nice behaviour of map, do: (define map map-in-order)
-
-
-(if (not (provided? 'snd-oo.scm)) (load-from-path "oo.scm"))
-
-(c-load-from-path eval-c)
-
-;; Check if jack is loaded.
-(if (not (defined? 'MUS_JACK_API))
- (eval-c (string-append "-I" snd-header-files-path)
- "#include <_sndlib.h>"
- (proto->public "int mus_audio_api(void)")
- (variables->public
- (<int> MUS_JACK_API))))
-
-(if (not (= (mus_audio_api) (MUS_JACK_API)))
- (throw 'jack-not-running))
-
-
-
-;; general functions and macros
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(eval-c (string-append "-I" snd-header-files-path)
- "#include <clm.h>"
- "#include <xen.h>"
- "#include <clm2xen.h>"
- "#include <vct.h>"
-
- "extern mus_any *g_get_mus_any(XEN os);"
- (<SCM> rt_set_float (lambda ((<SCM> das_float) (<SCM> newval))
- (set! (SCM_REAL_VALUE das_float) (GET_FLOAT newval))
- (return SCM_UNDEFINED)))
- (<SCM> gakk (lambda ((<SCM> scm))
- (return (MAKE_POINTER (XEN_TO_MUS_ANY scm)))))
- ;;(return (MAKE_POINTER (g_get_mus_any scm)))))
- ;;(printf (string "ai: %d %d %d %d\\n") (cast <int> scm) (XEN_TO_MUS_XEN scm) (XEN_OBJECT_REF scm) (g_get_mus_any scm))
- ;;(return SCM_UNDEFINED)))
- ;; (return (MAKE_POINTER (XEN_TO_MUS_ANY scm)))))
- (<SCM> gakk15 (lambda ((<SCM> scm))
- (return (MAKE_POINTER (SCM_SMOB_DATA scm)))))
- (<SCM> gakk2 (lambda ((<SCM> sym) (<SCM> toplevel))
- (return (scm_sym2var sym toplevel SCM_BOOL_F))))
- (<SCM> gakk3 (lambda ((<SCM> scm))
- (return (MAKE_POINTER (XEN_TO_VCT scm)))))
- (run-now
- (scm_c_define_gsubr (string "rt-set-float!") 2 0 0 rt_set_float)
- (scm_c_define_gsubr (string "XEN_TO_MUS_ANY") 1 0 0 gakk)
- (scm_c_define_gsubr (string "SCM_SMOB_DATA") 1 0 0 gakk15)
- (scm_c_define_gsubr (string "XEN_TO_VCT") 1 0 0 gakk3)
- (scm_c_define_gsubr (string "c-global-symbol") 2 0 0 gakk2)))
-
-
-
-;; Get the address of a guile SCM variable.
-(define-macro (c-get-cell-address varname)
- (let ((findfunc (string->symbol (eval-c-get-unique-name))))
- `(let ((,findfunc (procedure->macro (lambda (x env)
- (define (findit env)
- (call-with-current-continuation
- (lambda (return)
- ;;(c-display "env" env)
- (cond ((not (list? env)) (return #f))
- ((= 1 (length env)) (return (let ((varname2 ,varname))
- `(c-global-symbol ,varname2 ,(car env)))))
- ;;((= 1 (length env)) (return `(c-global-symbol 'ai2 (standard-interface-eval-closure (current-module)))))
- ((= 1 (length env)) (return (car env)))
- (else
- (let ((names (car (car env)))
- (vals (cdr (car env))))
- (if (not (list? names))
- (if (eq? ,varname names)
- (return vals))
- (for-each (lambda (name val)
- (if (eq? ,varname name)
- (return val)))
- names
- vals)))
- (findit (cdr env)))))))
- (findit env)))))
- (,findfunc))))
-;;(c-display (,findfunc))
-
-
-
-
-
-#!
-(define ai2 90.0)
-(let ((ai9 50))
- (c-get-cell-address ai9))
-(c-global-symbol 'ai2 (interaction-environment))
-(c-global-symbol 'ai2 (standard-interface-eval-closure (current-module)))
-(c-global-symbol 'ai2 (standard-interface-eval-closure (current-module)))
-!#
-
-
-
-
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;; Start the engine ;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(c-load-from-path rt-engine)
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;; Variables ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(if (not (defined? '*use-alsa-midi*))
- (define-toplevel '*use-alsa-midi* #t))
-
-(if (not (defined? '*rt-midi-alsaname*))
- (define-toplevel '*rt-midi-alsaname* "rt-midi"))
-
-(define rt-defining-macros-clears-cache #t)
-(define rt-verbose #f)
-(define rt-very-verbose #f)
-
-(define rt-operators '(+ - * / = < > <= >=))
-
-(define rt-unknown-ret-type-ops '(+ rt--/- rt--/minusoneargument * rt-min/MIN rt-max/MAX 1+ 1-))
-
-(define rt-very-special-forms '(if begin let*))
-;;(define rt-very-special-forms '(if begin let* rt-while/while))
-(define rt-very-special-forms2 (cons 'lambda rt-very-special-forms))
-
-(define rt-macro-prefix 'rt-macro-)
-
-(define rt-globalstructname '<struct-RT_Globals>)
-(define rt-globalvarname 'rt_globals)
-(define rt-globalvardecl (list rt-globalstructname (symbol-append '* rt-globalvarname)))
-
-
-;;; Various functions
-
-(define (rt-symbol-starts-with? sym s)
- (let* ((das-string1 (symbol->string sym))
- (das-string2 (symbol->string s))
- (len (min (string-length das-string1) (string-length das-string2))))
- (string= das-string1 das-string2 0 len 0 len)))
-
-#!
-(symbol-starts-with? 'abwe4wei 'aiai)
-!#
-
-(define rt-safety
- (let ((safety 1))
- (make-procedure-with-setter
- (lambda ()
- safety)
- (lambda (n)
- (set! safety n)))))
-
-(define (rt-is-safety?)
- (not (= 0 (rt-safety))))
-
-(define (rt-print . rest)
- (if rt-verbose
- (apply c-display rest)))
-
-(define (rt-print2 . rest)
- (if rt-very-verbose
- (apply c-display rest)))
-
-(define rt-gensym-num 0)
-(define (rt-gensym-reset)
- (set! rt-gensym-num 0))
-(define* (rt-gensym :optional (name ""))
- (set! rt-gensym-num (1+ rt-gensym-num))
- (string->symbol (<-> "rt_gen_" name (number->string rt-gensym-num))))
-(define rt-gensym-num2 0)
-(define (rt-gensym2)
- (set! rt-gensym-num2 (1+ rt-gensym-num2))
- (string->symbol (<-> "rt_genb" (number->string rt-gensym-num2))))
-
-;; An immediate is something that is not a function-call.
-
-(define rt-immediates (make-hash-table 219))
-(define (rt-add-immediate funcname)
- (hashq-set! rt-immediates funcname #t))
-
-(define (rt-immediate? . rest)
- (if (null? rest)
- #t
- (and (or (not (list? (car rest)))
- (and (not (null? (car rest))) ;; In case, there is most probably an error, but I'm not sure.
- (hashq-ref rt-immediates (car (car rest)))))
- (apply rt-immediate? (cdr rest)))))
-
-(rt-add-immediate 'is-type?)
-
-
-;; Dummy, redefined later.
-(define (rt-clear-cache!)
- #t)
-
-
-;; Need pi.
-(if (not (defined? 'pi))
- (define-toplevel 'pi 3.14159265358979))
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;; Conversion "scheme"->eval-c ;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-(define (rt-is-number? type)
- (or (eq? type '<float>)
- (eq? type '<int>)
- (eq? type '<double>)
- (and (symbol? type)
- (let ((type (eval-c-get-known-type type)))
- (or (eq? type '<float>)
- (eq? type '<int>)
- (eq? type '<double>))))))
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Last Hacks, last step before code is completely evalycified.
-;;
-;; -Change the order of type and variable name for lambda-args. eval-c requires the opposite order of rt:
-;; (lambda ((a <int>)(b <float>))...) -> (lambda ((<int> a)(<float> b))...)
-;; -Remove variable names for function types:
-;; (let* ((b (<int> ((c <float>))) 0))...) -> (let* ((b (<int> (<float>))))...)
-;; -Surround strings with the eval-c macro "string".
-;; "gakk" -> (string "gakk")
-;; -Remove all rt-dummy/dummy calls completely.
-;; -Replace all '<undefined> types with <SCM>s, but give warnings.
-;; -Replace all rt type-names with their C-type names.
-;; -Insert <struct-RT_Globals> *rt_globals as the first argument for all functions.
-;; -Insert rt_globals as the first argument in function-calls where required.
-;; -Transform global variable names: gakk -> rt_globals->gakk
-;;
-(define (rt-last-hacks term)
-
- (define (make-proper-type t name) ;; Name is only used for warning-message.
- (cond ((eq? '<undefined> t)
- (begin
- (c-display "\n\n\nWarning, had to set undefined variable name \"" name "\" to SCM:" term ".\n\n\n")
- '<SCM>))
- ((list? t)
- (list (make-proper-type (car t) name)
- (cons '<struct-RT_Globals-*> (map (lambda (t2)
- (make-proper-type (cadr t2) name))
- (cadr t)))))
- (else
- (let ()
- (define type (hashq-ref rt-types t))
- (if (not type)
- (error "Unknown type" t))
- (-> type c-type)))))
-
- (define globals (cadr term))
-
- ;;(define localfuncs '())
-
- (define (last-hacks term)
- (define (map2 term)
- (delete '(rt-dummy/dummy) (map last-hacks term)))
-
- (cond ((string? term) `(string ,term))
- ((symbol? term)
- (if (assq term globals)
- (symbol-append 'rt_globals-> term)
- term))
- ((not (list? term)) term)
- ((null? term) term)
- ((eq? 'let* (car term))
- (let ((vardecls (map (lambda (vardecl)
- (if (and (= 3 (length vardecl))
- (list? (caddr vardecl))) ;; Ie. a lambda-funcion.
- (begin
- ;;(set! localfuncs (cons (car vardecl) localfuncs))
- (list (car vardecl)
- (make-proper-type (cadr vardecl) (car vardecl))
- (last-hacks (caddr vardecl))))
- (if (and (= 3 (length vardecl))
- (not (number? (caddr vardecl))))
- (list (car vardecl)
- (make-proper-type (cadr vardecl) (car vardecl))
- (last-hacks (caddr vardecl)))
- (list (car vardecl)
- (make-proper-type (cadr vardecl) (car vardecl))))))
- (cadr term))))
- `(let* ,vardecls
- ,@(map last-hacks (cddr term)))))
-
- ((or (eq? 'lambda (car term))
- (eq? 'lambda-decl (car term)))
- (let ((vardecl (map (lambda (t)
- (list (make-proper-type (cadr t) (car t))
- (car t)))
- (cadr term))))
- (push! rt-globalvardecl vardecl)
- (if (eq? 'lambda (car term))
- `(lambda ,vardecl
- ,@(map2 (cddr term)))
- `(lambda-decl ,vardecl))))
-
- ((or (eq? 'rt-if (car term))
- (eq? 'return (car term))
- (eq? 'while (car term))
- (eq? 'begin (car term))
- (eq? 'the (car term))
- (eq? 'rt-begin (car term))
- (eq? 'if (car term)))
- (map2 term))
-
- ;((member (car term) localfuncs)
-; (map last-hacks
-; (append (list (car term) 'rt_globals) (cdr term))))
-
- (else
- (let ((func (hashq-ref rt-funcs (car term))))
- (if (or (not func)
- (-> func needs-rt-globals))
- (map last-hacks
- (append (list (car term) 'rt_globals) (cdr term)))
- (map2 term))))))
-
- ;;(c-display "term" term)
- ;;(c-display "caddr term" (cadr (caddr term)))
- (for-each (lambda (vardecl)
- (if (or (= 2 (length vardecl))
- (not (list? (caddr vardecl))))
- (push! vardecl globals)))
- (cadr (caddr term)))
-
- (last-hacks term))
-
-#!
-(rt-last-hacks '(lambda ((freq__1 <float>))
- (let* ()
- (return (* freq__1 (rt-/// 6.28318530717959 (mus-srate)))))))
-
-!#
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Insert return calls and fix begin and if blocks
-;;
-;;
-
-(define (rt-insert-returns term returntype)
-
- (call-with-current-continuation
- (lambda (return)
-
- (define (check-failed . args)
- (newline)
- (apply c-display (cons "rt-compiler.scm/rt-insert-returns:" args))
- (return #f))
-
-
- (define (insert term returntype)
- (define (default-behaviour)
- (if (eq? '<void> returntype)
- term
- `(return ,term)))
-
- (cond ((not (list? term)) (default-behaviour))
- ((null? term) (default-behaviour))
-
- ;; Can not happen
- ((eq? 'lambda-decl (car term))
- (check-failed "Somethings wrong"))
- ;;term)
-
- ((eq? 'lambda (car term))
- (let ((body (cddr term)))
- `(lambda ,(cadr term)
- ,@(map (lambda (t)
- (insert t '<void>))
- (c-butlast body))
- ,(insert (last body) returntype))))
-
- ((or (eq? 'begin (car term))
- (eq? 'rt-begin (car term)))
- (let ((body (cdr term)))
- `(begin
- ,@(map (lambda (t)
- (insert t '<void>))
- (c-butlast body))
- ,(insert (last body) returntype))))
-
- ((eq? 'let* (car term))
- (let* ((body (cddr term))
- (vardecls (map (lambda (vardecl)
- (if (and (= 3 (length vardecl))
- (list? (caddr vardecl))
- (eq? 'lambda (car (caddr vardecl))))
- `(,(car vardecl) ,(cadr vardecl) ,(insert (caddr vardecl) (cadr vardecl)))
- (list-copy vardecl)))
- (cadr term))))
- `(let* ,vardecls
- ,@(map (lambda (t)
- (insert t '<void>))
- (c-butlast body))
- ,(insert (last body) returntype))))
-
- ;; ifs are translated to rt-if (a?b:c) by the if-macro, but normal ifs can still be generated in the compiling-processs.
- ((eq? 'if (car term))
- (if (= 4 (length term))
- `(if ,(cadr term)
- ,(insert (caddr term) returntype)
- ,(insert (cadddr term) returntype))
- (if (eq? '<void> returntype)
- `(if ,(cadr term)
- ,(insert (caddr term) returntype))
- (begin
- (c-display "Undefined return value in some function because of missing else-block in non-void-returning if sentence.")
- (check-failed "The error is not supposed to show up here. Please send your code to k.s.matheussen@notam02.no ")))))
-
- ((and (eq? 'rt-if (car term))
- (eq? '<void> returntype))
- (insert `(if ,@(cdr term)) returntype))
-
-
- ((eq? 'begin (car term))
- (let ((body (cdr term)))
- `(begin
- ,@(map (lambda (t)
- (insert t '<void>))
- (body)))))
-
- ;;((eq? 'rt-begin (car term))
- ;;((and (eq? 'rt-begin (car term))
- ;; (eq? '<void> returntype))
- ;; (c-display "jepp")
- ;; (insert `(begin ,@(cdr term)) returntype))
-
- (else
- (default-behaviour))))
-
- (insert term returntype))))
-
-#!
-
-(rt-insert-returns '(lambda ((v_u2 <vct-*>))
- (let* ()
- (let* ((rt_gen674_u1 <int> 0)
- (rt_gen675_u3 <int> 0)
- (i_u4 <int> 0)
- (_rt_breakcontsig_u5 <jmp_buf> 0))
- (rt-begin
- (set! rt_gen674_u1 (rt-vct-length/vct-length v_u2))
- (set! rt_gen675_u3 (rt-if (rt-> rt_gen674_u1 0)
- 1
- -1))
- (set! i_u4 0)
- (rt-dummy/dummy)
- (rt-begin
- (rt-while (not (rt-= i_u4 rt_gen674_u1))
- (rt-vct-set!/vct-set! v_u2 i_u4 (* (rt-vct-ref/vct-ref v_u2 i_u4) 2))
- (set! i_u4 (+ i_u4 rt_gen675_u3))))))))
- '<void>)
-
-(rt-insert-returns '(lambda ()
- (rt-if (rt-= 0 b)
- 3
- 4))
- '<int>)
-(rt-insert-returns '(lambda ()
- (+ 2 35))
- '<int>)
-
-(rt-insert-returns '(lambda ()
- (let* ((a <void> (lambda ((<int> b))
- 2
- (set! a 9))))
- (set! a 9)))
- '<void>)
-
-
-(rt-insert-returns '(lambda ((_rt_local_f <int>))
- (let* ((rt_gen300 <int> 0)
- (c <int>)
- (a <int> 0)
- (f <int>)
- (d <int> (lambda ()
- (+ c f 2)))
- (b <int> (lambda-decl ((c <int>))))
- (rt_gen298 <int> (lambda ((_rt_local_c <int>))
- (set! c _rt_local_c)
- (rt-begin
- (set! a (d)))))
- (b <int> (lambda ((_rt_local_c <int>))
- (if rt_gen300
- (let* ((rt_gen299 <int> c)
- (_rt_ret <int> (rt_gen298 _rt_local_c)))
- (set! <int> rt_gen299)
- _rt_ret)
- (let* ((_rt_ret <int>))
- (set! rt_gen300 1)
- (set! _rt_ret (rt_gen298 _rt_local_c))
- (set! rt_gen300 0)
- _rt_ret)))))
- (set! f _rt_local_f)
- (rt-begin
- (set! a 3)
- (b e))))
- '<int>)
-
-!#
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; rt-lambda-lifter lifts up all lambda-functions so they
-;; are not inside another lambda function anymore.
-;;
-;; This is strictly
-;; not necesarry because gcc support local (nested) functions, but it
-;; speeds up the access to local functions a lot. For example,
-;; I think mus_src can run 2-3 times as fast...
-;;
-;; The function puts all local functions and variables that need to be global into the top-level.
-;;
-;; (lambda ()
-;; (let* ((a <int> 0)
-;; (b <int> (lambda ((c <int>))
-;; (let* ((d <int> (lambda ()
-;; (+ c 2)))))
-;; (set! a (d))))
-;; (e <int> 0))
-;; (set! a 3)
-;; (set! e 9)
-;; (b e)))
-;;
-;; ->
-;;
-;;(lambda ()
-;; (let* ((a <int> 0)
-;; (c <int> 0)
-;; (d <int> (lambda ()
-;; (+ c 2)))
-;; (b <int> (lambda ((_rt_local_c <int>))
-;; (set! c _rt_local_c)
-;; (set! a (d)))))
-;; (let* ((e <int> 0))
-;; (set! a 3)
-;; (set! e 9)
-;; (b e))))
-;;
-;; Explanation for the above transformation:
-;;;; The first let*-block contains global variables and functions. The rest is the main-function.
-;;;; (note that all global variables are put into its own struct later, so they are not really global variables though.)
-;;;; (note (again) that because the rt-language needs to support callbacks from c-code, it can't do the traditional lambda-lifting, (note to myself, insert references ([])),
-;;;; (by adding extra arguments to the inner function when necessary), but the speed-penalty is probably very low because of this.
-;;;; Supporting both traditional lambda-lifting and the variant above is possible though (by letting the variant below call the traditional version),
-;;;; but that has not been implemented yet. I also
-;;;; need to do some benchmarks to see if traditional lambda-lifting really is faster. Perhaps it isn't...)
-;;
-;;
-;; rt-remove-unused++ must have been called on the term before calling. (So that the unused variables can be catched more easely, I think.)
-;;
-
-(define (rt-lambda-lifter term)
-
- (define globals '()) ;; Just the names: (varname1 varname2)
- (define globals2 '()) ;; With type: ((varname1 <int>)(varname2 <float))
- (define globalfuncs '())
-
- (define (add-global var)
- (if (not (memq var globals))
- (push! var globals)))
-
- (define (find-globals varlist term)
- (cond ((symbol? term)
- (if (not (memq term varlist))
- (add-global term)))
-
- ((not (list? term)) #t)
- ((null? term) #t)
-
- ((eq? 'lambda (car term))
- (let ((newvarlist (map car (cadr term))))
- (for-each (lambda (t)
- (find-globals newvarlist t))
- (cddr term))))
-
- ((eq? 'let* (car term))
- (let* ((newvarlist varlist))
- (for-each (lambda (vardecl)
- (if (and (= 3 (length vardecl))
- (list? (caddr vardecl)))
- (find-globals '() (caddr vardecl))
- (push! (car vardecl) newvarlist)))
- (cadr term))
- (for-each (lambda (t)
- (find-globals newvarlist t))
- (cddr term))))
-
- ((eq? 'is-type? (car term))
- #t)
-
- (else
- (for-each (lambda (t)
- (find-globals varlist t))
- (cdr term)))))
-
- (define* (lambdalifter name type term #:optional dontcapsulate)
- (let* ((globsets '()) ;; Bunch of set!-commands.
- (globvars-here '()) ;; Global variables handled in this spesific lambda function.
- (vars (map (lambda (var)
- (if (and (not dontcapsulate)
- (memq (car var) globals))
- (let ((tempname (symbol-append '_rt_local_ (car var))))
- (push! `(set! ,(car var) ,tempname) globsets)
- (push! var globals2)
- (push! var globvars-here)
- (list tempname (cadr var)))
- var))
- (cadr term)))
-
- (das-func #f)
-
- (body (map lifter (cddr term)))
-
- (is-first-let*? (and (list? (car body))
- (eq? 'let* (car (car body))))))
-
-
- ;;(if (not (list? (car body)))
- ;; (set! body `(rt-begin
- ;; ,@body)))
-
- ;; Find any global variables defined in the let*-block in the function.
- (if is-first-let*?
- (for-each (lambda (var)
- (if (memq (car var) globals)
- (push! var globvars-here)))
- (cadr (car body))))
-
- (set! das-func (if is-first-let*?
- `(lambda ,vars
- (let* ,(cadr (car body))
- ,@(reverse! globsets)
- ,@(cddr (car body))))
- `(lambda ,vars
- ,@(reverse! globsets)
- ,@body)))
-
- ;;(c-display "lambdalifter globs/term" globvars-here term)
- ;;(c-display "das-func" das-func)
- ;;(c-display dontcapsulate)
- ;;(newline)
-
- (if (or (null? globvars-here)
- dontcapsulate) ;; For some reason, we know that its safe not to put global accessible local variables on the stack. (Ie. its the main function. :-) )
- (begin
- das-func)
- (let* ((realfuncname (rt-gensym))
- (letbody (map (lambda (name)
- (cons (rt-gensym) (reverse name)))
- globvars-here))
- (funccall `(,realfuncname ,@(map car vars)))
- (capspart #f))
-
- (push! `(,name ,type (lambda-decl ,(cadr term)))
- globalfuncs)
- (push! `(,realfuncname ,type ,das-func)
- globalfuncs)
-
-
- (set! capspart `(let* ,(if (eq? '<void> type)
- letbody
- (append letbody
- (list (list '_rt_ret type funccall))))
- ,@(if (eq? '<void> type)
- (cons funccall
- (map (lambda (letb)
- `(set! ,(caddr letb) ,(car letb)))
- letbody))
- (append (map (lambda (letb)
- `(set! ,(caddr letb) ,(car letb)))
- letbody)
- (list '_rt_ret)))))
-
-
- (if (< (length globvars-here) 5) ;; Performance is dependent on this number. Perhaps 5 is a good value. Haven't done any benchmark.
- `(lambda ,vars ;; It should be set quite high, because of larger amount of code, and branching, in the second version.
- ,capspart) ;; On the other hand, stacking up these variables are probably usually unnecesarry (but has to be done),
- (let ((recnum (rt-gensym))) ;; so the program counter usually jumps into the second version. Hard to say whats best...
- (push! (list recnum '<int> 0) globals2)
- `(lambda ,vars
- (if ,recnum
- ,capspart
- ,(if (eq? '<void> type)
- `(begin
- (set! ,recnum 1)
- ,funccall
- (set! ,recnum 0))
- `(let* ((_rt_ret ,type))
- (set! ,recnum 1)
- (set! _rt_ret ,funccall)
- (set! ,recnum 0)
- _rt_ret))))))))))
-
-
-
-
- (define (lifter term)
- (cond ((not (list? term)) term)
- ((null? term) term)
-
- ((eq? 'let* (car term))
- (let* ((vardecls '()))
- (for-each (lambda (var)
- (if (and (= 3 (length var))
- (list? (caddr var)))
- (if (eq? 'lambda-decl (car (caddr var)))
- (push! var globalfuncs)
- (push! (list (car var) (cadr var) (apply lambdalifter var))
- globalfuncs))
- (if (memq (car var) globals)
- (push! var globals2)
- (push! var vardecls))))
- (cadr term))
- (set! vardecls (reverse! vardecls))
- (if (null? vardecls)
- `(rt-begin
- ,@(cddr term))
- `(let* ,vardecls
- ,@(cddr term)))))
-
- (else
- (map lifter term))))
-
-
- (find-globals '() term)
-
- (let ((res (lambdalifter 'nameignored '<doesntmatter> term #t)))
- `(lambda ,(cadr res)
- (let* ,(append globals2 (reverse! globalfuncs))
- ,@(cddr res)))))
-
-
-#!
-
-(rt-lambda-lifter '(lambda ((src5 <float>))
- (let* ((func <float> (lambda ()
- (+ 2 src5))))
- func)))
-
-
-(rt-lambda-lifter '(lambda ((f <int>))
- (let* ((a <int> 0)
- (b <int> 0)
- (c <int> (lambda ()
- (+ f b))))
- (set! b 9)
- (c))))
-
-(rt-lambda-lifter '(lambda ((f <int>))
- (let* ((a <int> 0)
- (b <int> (lambda ((c <int>))
- (let* ((d <int> (lambda ()
- (+ c f 2))))
- (set! a (d)))))
- ;;(e <int> 0)
- )
- (set! a 3)
- ;;(set! e 9)
- (b e))))
-->
-(lambda ((_rt_local_f <int>))
- (let* ((rt_gen300 <int> 0)
- (c <int>)
- (a <int> 0)
- (f <int>)
- (d <int> (lambda ()
- (+ c f 2)))
- (b <int> (lambda-decl ((c <int>))))
- (rt_gen298 <int> (lambda ((_rt_local_c <int>))
- (set! c _rt_local_c)
- (rt-begin
- (set! a (d)))))
- (b <int> (lambda ((_rt_local_c <int>))
- (if rt_gen300
- (let* ((rt_gen299 <int> c)
- (_rt_ret <int> (rt_gen298 _rt_local_c)))
- (set! <int> rt_gen299)
- _rt_ret)
- (let* ((_rt_ret <int>))
- (set! rt_gen300 1)
- (set! _rt_ret (rt_gen298 _rt_local_c))
- (set! rt_gen300 0)
- _rt_ret)))))
- (set! f _rt_local_f)
- (rt-begin
- (set! a 3)
- (b e))))
-
-
-(lambda ((_rt_local_f <int>))
- (let* ((c <int>)
- (a <int> 0)
- (f <int>)
- (d <int> (lambda ()
- (+ c f 2)))
- (b <int> (lambda ((_rt_local_c <int>))
- (set! c _rt_local_c)
- (rt-begin
- (set! a (d))))))
- (set! f _rt_local_f)
- (let* ((e <int> 0))
- (set! a 3)
- (set! e 9)
- (b e))))
-
-(lambda () (let* ((b_u3 <float>)
- (a_u1 <float> (lambda-decl ()))
- (c_u2 <float> (lambda-decl ((b_u3 <float>))))
- (inner_u4 <void> (lambda ((n_u5 <int>))
- (set! b_u3 n_u5)))
- (c_u2 <float> (lambda-decl ((b_u3 <float>))))
- (rt_gen350 <float> (lambda ((_rt_local_b_u3 <float>))
- (set! b_u3 _rt_local_b_u3)
- (rt-begin
- (rt-begin
- (rt-if (rt-=/== 0 b_u3)
- (c_u2 1)
- (inner_u4 2))
- b_u3))))
- (c_u2 <float> (lambda ((_rt_local_b_u3 <float>))
- (let* ((rt_gen351 <float> b_u3)
- (_rt_ret <float> (rt_gen350 _rt_local_b_u3)))
- (set! <float> rt_gen351)
- _rt_ret)))
- (a_u1 <float> (lambda ()
- (rt-begin
- (rt-begin
- (c_u2 0))))))
- (rt-begin
- (rt-begin
- (a_u1)))))
-
-
-!#
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; rt-remove-unused++ removes unused variables and numbers.
-;;
-;; + evaluate is-type?, returning either 0 or 1.
-;;
-;; rt-check-calls must have been called on the term before calling
-;;
-;; (begin 2 4) -> (begin 4)
-;; (if (not 0) some thing) -> some
-;; (if 0 some thing) -> thing
-;;
-(define (rt-remove-unused++ term)
-
- (call-with-current-continuation
- (lambda (return)
-
- (define (check-failed . args)
- (newline)
- (apply c-display (cons "rt-compiler.scm/rt-remove-unused++:" args))
- (return #f))
-
- (define vars (make-hash-table 219))
-
- (define (das-remove t)
- (cond ((null? t) t)
- ((= (length t) 1) (list (remove++ (car t))))
- ((not (list? (car t))) ;; Removed here.
- (das-remove (cdr t)))
- (else
- (cons (remove++ (car t))
- (das-remove (cdr t))))))
-
- (define (remove++ term)
- (rt-print2 "remove++" term)
- (cond ((not (list? term)) term)
- ((null? term) term)
-
- ;; begin
- ((eq? 'rt-begin (car term))
- `(rt-begin ,@(das-remove (cdr term))))
-
- ;; is-type?
- ((eq? 'is-type? (car term))
- (if (list? (caddr term))
- (let ((func (hashq-ref rt-funcs (car (caddr term)))))
- (if (not func)
- (check-failed (caddr term) "not found in term (1)" term)
- (if (eq? (cadr term) (-> func return-type))
- 1
- 0)))
- (let ((type (hashq-ref vars (caddr term))))
- (if (not type)
- (check-failed (caddr term) "not found in term (2)" term)
- (if (eq? type (cadr term))
- 1
- 0)))))
-
- ;; let*
- ((eq? 'let* (car term))
- (for-each (lambda (var)
- (if (and (= 3 (length var))
- (list? (caddr var))
- (or (eq? 'lambda (car (caddr var)))
- (eq? 'lambda-decl (car (caddr var)))))
- (hashq-set! vars (car var) (list (cadr var)
- (map car (cadr (caddr var)))))
- (hashq-set! vars (car var) (cadr var))))
- (cadr term))
- (let ((vardecl (map (lambda (var)
- (list (car var) (cadr var) (remove++ (caddr var))))
- (cadr term))))
- `(let* ,vardecl
- ,@(das-remove (cddr term)))))
-
- ;; not
- ((eq? 'not (car term))
- (let ((a (remove++ (cadr term)))) ;; This can be a is-type? test.
- (if (number? a)
- (if (= 0 a)
- 1
- 0)
- `(not ,a))))
-
- ;; if
- ((eq? 'rt-if (car term))
- (let ((a (remove++ (cadr term)))) ;; This can be a is-type? test.
- (if (number? a)
- (if (= 0 a)
- (remove++ (cadddr term))
- (remove++ (caddr term)))
- `(rt-if ,a
- ,(remove++ (caddr term))
- ,(remove++ (cadddr term))))))
-
- ;; lambda-decl
- ((eq? 'lambda-decl (car term))
- (for-each (lambda (var)
- (hashq-set! vars (cadr var) (car var)))
- (cadr term))
- term)
-
- ;; lambda
- ((eq? 'lambda (car term))
- (for-each (lambda (var)
- (hashq-set! vars (car var) (cadr var)))
- (cadr term))
- `(lambda ,(cadr term)
- ,@(das-remove (cddr term))))
-
- (else
- (map remove++ term))))
-
- (remove++ term))))
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; rt-replace-define-with-letrecs replaces all defines with
-;; letrecs. (function copied from snd-hobbit.scm (and sligthly modified))
-;;
-(define (rt-replace-define-with-letrecs term)
-
- (call-with-current-continuation
- (lambda (return)
-
- (define (check-failed . args)
- (apply c-display (cons "rt-compiler.scm/rt-replace-define-with-letrecs:" args))
- (return #f))
-
- (define (replace term)
- (cond
- ((not (list? term)) term)
- ((null? term) term)
-
- (else
- (map replace
- (call-with-values (lambda () (break (lambda (t) (and (pair? t)
- (eq? 'define (car t))))
- term))
- (lambda (beforedefines definestart)
- (if (null? definestart)
- term
- (call-with-values (lambda () (span (lambda (t) (and (pair? t)
- (eq? 'define (car t))))
- definestart))
- (lambda (defines afterdefines)
- (append beforedefines
- (list (append (list 'letrec
- (map (lambda (t)
- (if (list? (cadr t))
- (list (car (cadr t)) `(lambda ,(cdadr t)
- ,@(cddr t)))
- (list (cadr t) (caddr t))))
- defines))
- afterdefines))))))))))))
-
- (replace term))))
-
-
-#!
-(rt-replace-define-with-letrecs '(lambda ()
- (define (a b)
- c)
- (a)))
-
-(rt-replace-define-with-letrecs '(begin
- (+ 1 2)
- (define a 3)
- (- 4 5)
- (define b (lambda ()
- (define d 8)
- d))
- (define c 7)
- (* a (b) c)
- ))
-(begin
- (+ 1 2)
- (letrec ((a <float> 3))
- (- 4 5)
- (letrec ((b <float> (lambda ()
- (letrec ((d <float> 8))
- d)))
- (c <float> 7))
- (* a (b) c))))
-
-!#
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; rt-let*-lifter does:
-;; -Lift all let* variable declarations (and non-named lambdas)
-;; up to the closest lambda().
-;;
-;; Example:
-;;
-;; (lambda ()
-;; (+ 2 (let* ((a 9))
-;; a)
-;; 5)))
-;; -> (lambda ()
-;; (let* ((a 0))
-;; (+ 2 (begin
-;; (set! a 9)
-;; a)
-;; 5)))
-;;
-;; This is much better, because begin can be used inside function-calls, let* can't:
-;; scheme: (begin (set! a 9) a)
-;; c: (a=9,a).
-;;
-;; (However, in many situations, where the let*-lifting
-;; hadn't been necesarry, I guess there can be a minor speed-penalty by
-;; clustering all variable-declarations at the top of each lambda-block.
-;; But I'm not so sure its a very big point to identify those situations...)
-;;
-;; -rt-fix-various must have been called on the term before calling.
-;; (The variable-names need to be unique to avoid name-clash)
-
-
-(define (rt-let*-lifter term)
- (define (lifter term)
- (cond ((null? term) (values '() term))
- ((not (list? term)) (values '() term))
-
- ((eq? 'lambda (car term))
- (call-with-values (lambda ()
- (lifter (cddr term)))
- (lambda (letlist new-term)
- (let ((form (if (not (null? letlist))
- `(lambda ,(cadr term)
- (let* ,letlist
- ,@new-term))
- `(lambda ,(cadr term)
- ,@new-term))))
- (values '()
- form)))))
-
- ((eq? 'let* (car term))
- (let ((lets (cadr term))
- (values-letlist '()))
- ;; Run lifter for the values (b's in ((a <int> b)))
- (for-each (lambda (l)
- (call-with-values (lambda ()
- (lifter (cadr l)))
- (lambda (letlist term)
- (set! values-letlist (append! values-letlist letlist))
- (set-car! (cdr l) term))))
- lets)
- ;; Run lifter for let-*body
- (call-with-values (lambda ()
- (lifter (cddr term)))
- (lambda (letlist term)
- (values (append (map (lambda (l)
- (if (and (list? (cadr l))
- (or (eq? 'lambda (car (cadr l)))
- (eq? 'lambda-decl (car (cadr l)))))
- l
- (list (car l) (cond ((rt-symbol-starts-with? '_rt_breakcontsig (car l))
- '<jmp_buf>)
-
- ((and (number? (cadr l)) ;; Quick way to determine type. Type doesn't need to be determined here, but it
- (exact? (cadr l))) ;; can speed up things if its possible to know type already at this stage.
- '<int>) ;; The type does not need to be correct either, but a number must be
- ;; a number, etc.
- ((number? (cadr l))
- '<float>)
- ((string? (cadr l))
- '<char-*>)
- ((not (list? (cadr l)))
- '<undefined>)
- ((memq (car (cadr l)) rt-unknown-ret-type-ops)
- '<undefined>)
- (else
- (let ((func (hashq-ref rt-funcs (car (cadr l)))))
- (if func
- (-> func return-type)
- '<undefined>)))))))
-
- lets)
- values-letlist
- letlist)
- `(rt-begin ,@(map (lambda (l)
- `(rt-set*! ,(car l) ,(cadr l)))
- (remove (lambda (l)
- (or (and (list? (cadr l))
- (or (eq? 'lambda (car (cadr l)))
- (eq? 'lambda-decl (car (cadr l)))))
- (rt-symbol-starts-with? '_rt_breakcontsig (car l))))
- lets))
- ,@term))))))
- (else
- (let ((new-letlist '())
- (new-term '()))
- (for-each (lambda (t)
- (call-with-values (lambda ()
- (lifter t))
- (lambda (letlist term)
- (set! new-letlist (append! new-letlist letlist))
- (set! new-term (cons term new-term)))))
- term)
- (values new-letlist
- (reverse! new-term))))))
-
- (call-with-values (lambda ()
- (lifter term))
- (lambda (letlist term)
- term)))
-
-#!
-(rt-let*-lifter '(lambda ()
- (gakk (+ 2 3) (lambda (a)
- (+ a 9)))))
-(rt-let*-lifter '(lambda ()
- (+ 2 (let* ((a (let* ((b 10))
- b)))
- a))
- 5))
-!#
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; S-expression transformer (for rt-macros)
-
-(define rt-transformers '())
-(define (add-rt-transformer-do ev func)
- (push! (cons func ev) rt-transformers))
-(define (remove-rt-transformer func)
- (set! rt-transformers (remove (lambda (transformer)
- (equal? func ((cdr transformer))))
- rt-transformers)))
-
-(define-macro (add-rt-transformer func)
- (define expr (gensym))
- (define ev (gensym))
- (if (pair? func)
- `(let ((,ev ,func))
- (add-rt-transformer-do (lambda ()
- ,ev)
- (lambda (,expr)
- (,ev ,expr))))
- `(add-rt-transformer-do (lambda ()
- ,func)
- (lambda (,expr)
- (,func ,expr)))))
-
-
-(define (rt-transform expr)
- (call-with-current-continuation
- (lambda (return)
- (for-each (lambda (transformer)
- (let ((res (transformer expr)))
- (if (not (equal? expr res))
- (return (rt-transform res))
- (set! expr res))))
- (map car rt-transformers))
- expr)))
-
-
-
-#|
-(define (reverse-term term)
- (if (and (pair? term)
- (number? (car term))
- (not (= 5 (car term)))
- (not (number? (last term))))
- (reverse term)
- term))
-
-(add-rt-transformer reverse-term)
-(rt-macroexpand '(6 23 aiai a))
-(rt-macroexpand '(5 23 aiai a))
-(remove-rt-transformer reverse-term)
-|#
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; rt-macroexpand . First thing to do.
-;;
-;; + setter handling
-;; (set! (asetter 5) 2) -> (setter!-asetter 5 2)
-;;
-;; + infix handler:
-;; (+ 2:-ms a:-s b :-s (c):-ms) -> (+ (infix-ms 2) (infix-s a) (infix-s b) (infix-ms (c)))
-;;
-(define (rt-macroexpand-1 term)
- (call-with-current-continuation
- (lambda (return)
-
- (define (check-failed . args)
- (newline)
- (apply c-display (cons "rt-compiler.scm/rt-macroexpand-1:" args))
- (return #f))
-
- (define (expand term)
- (cond ((null? term) term)
- ((not (list? term)) term)
- ((and (eq? 'set! (car term))
- (list? (cadr term)))
- (let ((newcadr (cadr term)));;(expand (cadr term))))
- (expand `(,(symbol-append 'setter!- (car newcadr)) ,@(cdr newcadr) ,@(cddr term)))))
- ((list? (car term))
- term)
- (else
- (if (not (symbol? (car term)))
- (check-failed "Illegal function call:" term ".")
- (begin
- (let* ((args (cdr term))
- (orgterm (cons (symbol-append rt-macro-prefix (car term)) args))
- (newterm (catch #t
- (lambda ()
- (macroexpand-1 orgterm))
- (lambda (key . args)
- (c-display "Error while macroexpanding" term key args)
- (throw 'macroexpanderror)))))
- (if (not newterm)
- (return #f)
- (if (not (equal? orgterm newterm))
- newterm
- term))))))))
- (expand term))))
-
-
-(define (rt-macroexpand-expand term)
- (let ((res (call-with-current-continuation
- (lambda (return)
-
- (define (check-failed . args)
- (newline)
- (apply c-display (cons "rt-compiler.scm/rt-macroexpand:" args))
- (return #f))
-
- (define (expand term)
- ;;(c-display "term" term)
- (cond ((null? term) term)
- ((not (list? term)) term)
- ((and (eq? 'set! (car term))
- (list? (cadr term)))
- (let ((newcadr (cadr term)));;(expand (cadr term))))
- (expand `(,(symbol-append 'setter!- (car newcadr)) ,@(cdr newcadr) ,@(cddr term)))))
- ((list? (car term))
- (map expand term))
- ((eq? 'lambda (car term))
- `(lambda ,(cadr term)
- ,@(map expand (cddr term))))
- ((or (eq? 'rt-let/let* (car term))
- (eq? 'let* (car term))
- (eq? 'letrec (car term))
- (eq? 'letrec* (car term)))
- ;; @#$T#$T#$%!!!
- (let ((daslets (map (lambda (letvar)
- `(,(car letvar) ,@(map expand (cdr letvar))))
- (cadr term))))
- `(,(car term) ,daslets
- ,@(map expand (cddr term)))))
- ((not (symbol? (car term)))
- term)
- (else
- (if (not (symbol? (car term)))
- (check-failed "Illegal function call:" term ".")
- (begin
- (let* ((funcname (car term))
- (args (cdr term))
- (orgterm (cons (symbol-append rt-macro-prefix funcname) args))
- (newterm (catch #t
- (lambda ()
- (macroexpand-1 orgterm))
- (lambda (key . args)
- (c-display "\n\nError while macroexpanding" term "\n\n" key "\n\n" args "\n\n")
- (throw 'macroexpanderror)))))
- (if (not newterm)
- (return #f)
- (if (not (equal? orgterm newterm))
- (expand newterm)
- (cons funcname
- (map expand args))))))))))
-
- (expand term)))))
- (if (not res)
- (throw 'compilation-error))
- res))
-
-
-;; (+ 2:-ms a:-s) -> (+ (infix-ms 2) (infix-s a))
-(define* (rt-fix-infix2 code :key (macroexpander rt-macroexpand))
- (let loop ((code code))
- (cond ((null? code) '())
- ((symbol? code)
- (let ((sym code))
- (define first '())
- (let loop ((string (string->list (symbol->string sym))))
- (cond ((null? string)
- sym)
- ((and (char=? #\: (car string))
- (char=? #\- (cadr string)))
- (macroexpander
- `(,(string->symbol (<-> "infix-" (list->string (cddr string))))
- ,(let ((string (list->string (reverse! first))))
- (or (string->number string)
- (string->symbol string))))))
- (else
- (push! (car string) first)
- (loop (cdr string)))))))
- ((not (pair? code))
- code)
- (else
- (map loop code)))))
-
-;; (+ b :-s (c):-ms) -> (+ (infix-s b) (infix-ms (c)))
-(define (rt-fix-infix code)
- (cond ((null? code) '())
- ((not (pair? code)) code)
- (else
- (let ()
- (define first '())
- (let loop ((term code))
- (cond ((null? term)
- (map rt-fix-infix code))
- ((and (not (null? first))
- (not (null? (cdr first)))
- (keyword? (car term))
- (char=? #\- (car (string->list (symbol->string (keyword->symbol (car term)))))))
- (rt-fix-infix
- `(,@(c-butlast first)
- (,(<_> 'infix (keyword->symbol (car term)))
- ,(last first))
- ,@(cdr term))))
- (else
- (set! first (append first (list (car term))))
- (loop (cdr term)))))))))
-#!
-(rt-fix-infix '(block :duration (between 200 1000):-:ms aiai more and more))
-(rt-fix-infix '(block :duration (between 200 1000):-m))
-!#
-
-(define (rt-fix-infix-nonrt code)
- (rt-fix-infix2
- (macroexpand
- (rt-fix-infix code))
- :macroexpander rt-fix-infix-nonrt))
-
-#!
-(rt-fix-infix-nonrt '(<rt-out> :dur 0 3:-s (oscil)))
-!#
-
-;; add-rt-transformer stuff is not used.
-(add-rt-transformer rt-macroexpand-expand)
-(add-rt-transformer rt-fix-infix)
-
-
-
-;; Not quite working yet. Full rewrite of the macrosystem is probably needed.
-;;(define rt-macroexpand (lambda (expr)
-;; (rt-transform expr)))
-
-(define (rt-macroexpand term)
- (rt-fix-infix2
- (rt-macroexpand-expand
- (rt-fix-infix term))))
-
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; rt-fix-various does various things.
-;;
-;; -makes all internal variable names unique,
-;; -makes all variable-names legal c-names
-;; -transforms all lisp let/let*/letrec/letrec*s into the eval-c version of let*.
-;; -returns an assoc-list of the renamed global variable names. All variables,
-;; both local and global needs to be uniqified to avoid name-clash with c-functions,
-;; types, variables, etc.
-;; -names starting with _rt_ is not uniqified. (unless it must be legalized...)
-;;
-;; (let* ((a 5)) ...) -> (let* ((a <float> 5)) ...)
-;; (let* ((<int> a 5)) ...) -> (let* ((a <int> 5)) ...)
-;; (define (a b c) d e) -> (define a (lambda (b c) d e))
-;; (lambda (a b)...) -> (lambda ((<float> a)(<float> b))...)
-;;
-;; -locate functions that returns SCM's
-;; (vector-ref, car, cdr, etc.), and insert code to convert
-;; the SCM's to whats expected.
-;; (+ 2 (vector-ref vec 3)) -> (+ 2 (rt-scm-to-float (vector-ref vec 3)))
-;;
-;; + more, check code.
-;;
-;; rt-replace-define-with-letrecs must have been called on the term before calling.
-;;
-(define (rt-fix-various term)
- (call-with-current-continuation
- (lambda (return)
-
- (define all-renamed-variables (make-hash-table 997))
-
- (define (check-failed . args)
- (newline)
- (apply c-display (cons "rt-compiler.scm/rt-fix-various:" args))
- (return #f))
-
- (define renamed-guile-vars '())
-
- (define get-unique-name
- (let ((n 0))
- (lambda (orgname)
- (set! n (1+ n))
- (let ((das-string (symbol->string orgname)))
- (if (and (> (string-length das-string) 7) ;; Very special situation. Don't rename internal rt-variables (starting with "_rt_dr_")
- (string= "_rt_rn_" das-string 0 7 0 7))
- orgname
- (string->symbol (string-append das-string "__" (number->string n))))))))
-
-
- (define* (get-new-name name #:optional is-guile-var)
-
- (define* (legalize-c-name scheme-name)
- (let ((charlist (string->list (symbol->string scheme-name))))
- (string->symbol
- (list->string (map (lambda (char)
- (if (and (not (char-alphabetic? char))
- (not (char=? char #\_))
- (not (char-numeric? char)))
- #\_
- char))
- (if (char-numeric? (car charlist))
- (cons #\_ charlist)
- charlist))))))
-
- (let ((newname (get-unique-name (legalize-c-name name))))
- (if is-guile-var
- (push! (list name newname) renamed-guile-vars))
- (if (and rt-verbose is-guile-var)
- (c-display "Variable" name "renamed as" newname))
- (hashq-set! all-renamed-variables newname #t)
- newname))
-
- ;; letrec has this stupid(?) rule... (Check out 4.2.2 in R5RS) (The handling here is overstrict though.)
- (define illegal-vars (make-hash-table 151))
- (define (add-illegal-vars . vars)
- (for-each (lambda (var) (hashq-set! illegal-vars var #t)) vars))
- (define (remove-illegal-vars . vars)
- (for-each (lambda (var) (hashq-remove! illegal-vars var)) vars))
-
-
- (define* (fix varlist term #:optional isnamed) ;; If isnamed is #t, don't letify lambdas.
- ;;(c-display "fixing" term)
- (cond ((null? term) term)
- ((string? term) term)
- ((number? term) term)
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; A variable
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ((symbol? term)
-
- (let ((var (let ((var (hashq-ref all-renamed-variables term))) ;; In case the variable is already a renamed version. Can happen with macros.
- (if var
- term
- (let ((var (assq term varlist)))
- (if var
- (cadr var)
- (let ((var (assq term renamed-guile-vars)))
- (if var
- (cadr var)
- #f))))))))
- (if var
- (let ((illegal-var (hashq-ref illegal-vars var)))
- (if illegal-var
- (check-failed "The variable name \"" term "\" can not be accessed here, because it is"
- "a reference to another variable defined in the same letrec-block.")
- var))
- (begin
- (get-new-name term #t)))))
-
-
-
- ((not term) ;; term=#f
- 0)
- ((eq? #t term) ;; term=#t
- 1)
-
- ((not (list? term))
- (check-failed "Don't know how to handle" term))
-
- ((eq? 'lambda (car term))
- (if isnamed
- (let* ((args (cadr term))
- (varnames (map (lambda (t)
- (list t
- (get-new-name t)))
- args))
- (lambdaargs (map cadr varnames)))
- `(lambda ,lambdaargs
- ,@(map (lambda (t)
- (fix (append varnames varlist) t))
- (cddr term))))
- (let ((funcname (rt-gensym)))
- (fix varlist
- `(rt-let/let* ((,funcname ,term))
- ,funcname)))))
-
- ;; ((lambda () 5)) -> (let ((u23 (lambda () 5))) (u23))
- ((list? (car term))
- (let ((funcname (rt-gensym)))
- (fix varlist
- `(rt-let/let* ((,funcname ,(car term)))
- (,funcname ,@(cdr term))))))
-
-
- ((eq? 'rt-begin (car term))
- `(rt-begin ,@(map (lambda (t)
- (fix varlist t))
- (cdr term))))
-
- ((eq? 'rt-if (car term))
- `(rt-if ,@(map (lambda (t)
- (fix varlist t))
- (cdr term))))
-
- ((eq? 'is-type? (car term))
- `(is-type? ,(cadr term) ,(fix varlist (caddr term))))
-
- ((eq? 'the (car term))
- `(the ,(cadr term) ,(fix varlist (caddr term))))
-
- ;; Convert let/let*/letrec/letrec* to the eval-c version of let*
- ((or (eq? 'rt-let/let* (car term))
- (eq? 'let* (car term))
- (eq? 'letrec (car term))
- (eq? 'letrec* (car term)))
- (if (< (length term) 3)
- (check-failed "Bad" (car term) "-form: " term ".")
- (if (not (list? (cadr term)))
- (check-failed "First argument to" (car term) "must be a list of variables:" term ".")
- (begin
- (let ((das-vardecls (map (lambda (var)
- (cond ((not (list? var))
- (check-failed "\"" var "\" is not a list in expression " term "."))
- ((not (symbol? (car var)))
- (check-failed "Illegal variable name: " (car var) " in expression " term "."))
- ((= 1 (length var))
- (check-failed "Variable \""
- (car var) "\" in expression " term " does not have a value assigned."))
- (else
- var)))
- (cadr term))))
-
- (cond ((eq? 'rt-let/let* (car term))
- (let* ((newvarlist varlist)
- (vardecls (map (lambda (vardecl)
- (let* ((uname (get-new-name (car vardecl)))
- (ret `(,uname ,(fix varlist (cadr vardecl) #t))))
- (push! (list (car vardecl) uname) newvarlist)
- ret))
- das-vardecls)))
- `(let* ,vardecls
- ,@(map (lambda (t)
- (fix newvarlist t))
- (cddr term)))))
-
- ((eq? 'let* (car term))
- (let* ((body (cddr term))
- (vardecls (map (lambda (vardecl)
- (let* ((uname (get-new-name (car vardecl)))
- (ret `(,uname ,(fix varlist (cadr vardecl) #t))))
- (push! (list (car vardecl) uname) varlist)
- ret))
- das-vardecls)))
- `(let* ,vardecls
- ,@(map (lambda (t)
- (fix varlist t))
- body))))
-
- ((eq? 'letrec (car term))
- (let* ((newvarlist varlist)
- (funclist '())
- (das-das-vardecls (map (lambda (vardecl)
- (let ((uname (get-new-name (car vardecl))))
- (add-illegal-vars uname)
- (push! (list (car vardecl) uname) newvarlist)
- (cons uname (cdr vardecl))))
- das-vardecls))
- (vardecls (map (lambda (vardecl)
- (let ((uname (car vardecl)))
- (if (and (list? (cadr vardecl))
- (eq? 'lambda (car (cadr vardecl))))
- (begin
- (push! (list uname (cadr vardecl))
- funclist)
- `(,uname (lambda-decl ,(cadr (cadr vardecl)))))
- `(,uname ,(fix newvarlist (cadr vardecl))))))
-
- das-das-vardecls)))
- (apply remove-illegal-vars (map car das-das-vardecls))
- `(let* ,(append vardecls (map (lambda (funcdecl)
- `(,(car funcdecl) ,(fix newvarlist (cadr funcdecl) #t)))
- (reverse! funclist)))
- ,@(map (lambda (t)
- (fix newvarlist t))
- (cddr term)))))
-
- ((eq? 'letrec* (car term))
- (let* ((newvarlist varlist)
- (funclist '())
- (vardecls (map (lambda (vardecl)
- ;;(c-display "vardecl" vardecl)
- (let* ((uname (get-new-name (car vardecl))))
- (push! (list (car vardecl) uname) newvarlist)
- (if (and (list? (cadr vardecl))
- (eq? 'lambda (car (cadr vardecl))))
- (begin
- (push! (list uname (cadr vardecl))
- funclist)
- `(,uname (lambda-decl ,(cadr (cadr vardecl)))))
- `(,uname ,(fix newvarlist (cadr vardecl))))))
- das-vardecls)))
- `(let* ,(append vardecls (map (lambda (funcdecl)
- `(,(car funcdecl) ,(fix newvarlist (cadr funcdecl) #t)))
- (reverse! funclist)))
- ,@(map (lambda (t)
- (fix newvarlist t))
- (cddr term)))))))))))
-
-
- (else
- (if (not (symbol? (car term)))
- (check-failed "Illegal function call:" term ".")
- (let* ((funcname (let ((var (assq (car term) varlist)))
- (if var
- (cadr var)
- (car term))))
- (args (map (lambda (t)
- (fix varlist t))
- (cdr term))))
-
- (cons funcname args))))))
-
- ;;(c-display "fix-term:" term)
- (let ((ret (fix '() term #t)))
- ;;(c-display "fixed term" ret)
- ;;(rt-print2 "renamed:" renamed-guile-vars)
- (list (map (lambda (var)
- (list (cadr var) (car var)))
- renamed-guile-vars)
- ret)))))
-
-
-#!
-(rt-fix-various '(lambda ()
- (letrec ((a (lambda (b)
- b)))
- (a 2))))
-
-(rt-fix-various '(lambda ()
- (gakk (+ 2 3) (lambda ((<int> a))
- (+ a 9)))))
-
-(rt-let*-lifter (rt-fix-various '(lambda ()
- (gakk (+ 2 3) (lambda ((<int> a))
- (+ a 9))))))
-
-(car (rt-fix-various '(lambda ()
- (locsig loc 0.2))))
-
-(rt-fix-various '(lambda (x)
- (if 1
- (let* ((y (* x x)))
- y)
- 0)))
-
-(rt-fix-various '(- 2))
-(rt-fix-various '(min 4 (max 5)))
-(rt-fix-various '(and (+ 5 a)))
-(rt-fix-various '(let* ((a 5)) (and (+ 5 a) (- 2 3) 4 5)))
-(rt-fix-various '(begin (define (a b c) d e)))
-(rt-fix-various '(begin (define (a (<int> b) c) d e)))
-(rt-check-calls '(lambda ()
- (let* ((a <int> 5))
- (+ 2 3))))
-
-
-(rt-3.5 '(lambda (a b c)
- (or a (and a))))
-
-(rt-3 '(lambda (a b c)
- (and a b c
- (or a b c)
- (and a b c c c c b)
- (or a (and b (or c a))
- (and c)))))
-
-(rt-3 '(lambda ()
- (let* ((u5 (if a a 0)))
- (if u5
- u5
- 0))))
-
-(rt-3 '(lambda (a b c)
- (if a
- (let* ((u254 2))
- (if u254
- u254
- 0))
- 0)))
-(rt-3 '(lambda (a)
- (begin
- (+ a 2)
- (- a 5))))
-
-(macroexpand-1 '(rt-macro-and a (or a)))
-(macroexpand-1 '(rt-macro-or a))
-(macroexpand-1 '(rt-macro-oscil 2 3))
-
-
-(rt-3 '(lambda ()
- (let* ((unique_name_72 (+ 5 a)))
- (if unique_name_72
- 5))))
-
-
-!#
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; rt-insert-types insert types for let* and lambda
-;;
-;; Note that at this stage of compilation, all let/let*/letrec/letrec*s have been converted to let*s,
-;; and all variable-names are unique.
-;;
-;; (let* ((a 0)) (set! a 5)) -> (let* ((a <int> 0)) (set! a 5))
-;; (let* ((a 0)) (set! a 5.0)) -> (let* ((a <float> 0)) (set! a 5.0))
-;; (let* ((a 0)) (set! a (inexact->exact 5.0))) -> (let* ((a <int> 0)) (set! a (inexact->exact 5.0)))
-;;
-;; rt-let-lifter* must have been called on the term before calling.
-;;
-;; (Warning, ugly ugly ugly code)
-;;
-;; Note, during the insert-type-process, lambdas look like this: (lambda ((a <int>) (b <float>)...)...),
-;; not like this: (lambda ((<int> a)(<float> b)...)...), which is the case everywhere else.
-;;
-(define (rt-insert-types term renamed-vars)
- (call-with-current-continuation
- (lambda (return)
-
- (define (debug . rest)
- (if #f
- (apply c-display rest)))
-
- (define (check-failed . args)
- (newline)
- (apply c-display (cons "rt-compiler.scm/rt-insert-types:" args))
- (return #f))
-
-
- ;; The type for let*-variables are just determinded once by checking the value of its type. However, some special care
- ;; has been taken for values where the type can not be determined right away. (I have a feeling the scheme is a bit too intelligent though...)
- ;; This hash-table contains all let*-variables as keys and theire type as value.
- (define let*-variables (make-hash-table 251))
-
- ;; This hash-table contains declared variables as keys, and theire type as value.
- (define declared-variables (make-hash-table 251))
-
- (define external-vars '())
-
-
- (define (merge-types type1 type2 term) ;; Term is only used to display understandable error-message.
- (debug "merge-types" type1 type2 term)
- (cond ((eq? type1 type2)
- type1)
- ((eq? type1 '<undefined>)
- type2)
- ((eq? type2 '<undefined>)
- type1)
-
- ((or (eq? type1 '<void>)
- (eq? type2 '<void>))
- '<void>)
-
- ((or (list? type1)
- (list? type2))
- (if (or (not (list? type1))
- (not (list? type2))
- (not (equal? (list (car type1)
- (map (lambda (t)
- (if (list? t)
- (cadr t)
- t))
- (cadr type1)))
- (list (car type2)
- (map (lambda (t)
- (if (list? t)
- (cadr t)
- t))
- (cadr type2))))))
- (check-failed type1 "and" type2 "are not compatible types. in term" term)
- type1))
-
- ((and (rt-is-number? type1)
- (rt-is-number? type2))
- (if (or (eq? type1 '<double>)
- (eq? type2 '<double>))
- '<double>
- (if (or (eq? type1 '<float>)
- (eq? type2 '<float>))
- '<float>
- '<int>)))
- (else
- (if (or (not (symbol? type1))
- (not (symbol? type2)))
- (check-failed "Very error in rt-insert-types/merge-types" type1 type2 "term: " term))
- (let ((rt-type1 (hashq-ref rt-types type1))
- (rt-type2 (hashq-ref rt-types type2)))
- (if (not rt-type1)
- (check-failed type1 "is not a legal type(1):" term "(" rt-types ")"))
- (if (not rt-type2)
- (check-failed type2 "is not a legal type(2):" term))
- (if (-> rt-type1 type-ok? type2)
- (-> (-> rt-type1 get-most-spesific-type type2) rt-type)
- (if (-> rt-type2 type-ok? type1)
- (-> (-> rt-type2 get-most-spesific-type type1) rt-type)
- (check-failed "Incompatitble types for \"" type1 "\" and \"" type2 "\" in term \"" term "\".")))))))
-
- (define (check-compatible-types type1 type2 term)
- (merge-types type1 type2 term))
-
-
-
- ;; (set! a b) -> a and b have equal types, and are store in the hash-table below.
- ;; (set! a b) will make an empty hash-table that looks like this if a and b are undefined:
- ;; ((#:key a #:val (list (list 'b) '<undefined>))
- ;; (#:key b #:val (list (list 'a) '<undefined>)))
- (define equal-typed-variables (make-hash-table 251))
-
- (define (add-equal-variables! name1 name2 type1 type2 term) ;; Term is only used for error-output
- (let* ((equal1 (hashq-ref equal-typed-variables name1))
- (equal2 (hashq-ref equal-typed-variables name2))
- (merged-type (merge-types type1 type2 term)))
-
- (if (not equal1)
- (begin
- (set! equal1 (list (list name2) merged-type))
- (hashq-set! equal-typed-variables name1 equal1)))
-
- (if (not equal2)
- (begin
- (set! equal2 (list (list name1) merged-type))
- (hashq-set! equal-typed-variables name2 equal2)))
-
- (for-each (lambda (e)
- (let ((equal (hashq-ref equal-typed-variables e)))
- (set-car! equal (cons name2 (cons name1 (car equal))))
- (set-car! (cdr equal) merged-type)))
- (append (car equal1) (car equal2)))))
-
-
- (define (set-equal-type! name newtype term)
- (let* ((equal (hashq-ref equal-typed-variables name)))
- (if equal
- (let ((merged-type (merge-types newtype (cadr equal) term)))
- (for-each (lambda (e)
- (let ((equal (hashq-ref equal-typed-variables e)))
- (set-car! (cdr equal) merged-type)))
- (car equal))
- merged-type)
- newtype)))
-
-
-
- (define* (add-external-var varname type #:optional iswriting)
- (let ((old (assq varname external-vars)))
- (if old
- (if (eq? type '<undefined>)
- (-> (cadr old) rt-type)
- (let ((rt-type (cadr old)))
- (if (not (-> rt-type type-ok? type))
- (set-car! (cdr old)
- (hashq-ref rt-types (merge-types type (-> rt-type rt-type)
- (format #f " Different types for guile variable \"~A\": \"~A\"/\"~A\"."
- varname type (-> rt-type rt-type) ))))
- (set-car! (cdr old) (-> rt-type get-most-spesific-type type)))
- (set-car! (cddr old) (or iswriting (caddr old)))
- (if (not (cadr old))
- (c-display "Error. Something is wrong with the variable" old "in function rt-insert-types."))
- (-> (cadr old) rt-type)))
- (let ((rt-type (hashq-ref rt-types type)))
- (if (not rt-type)
- (check-failed "Unknown type " type ".")
- (push! (list varname rt-type iswriting (let ((orgname (assq varname renamed-vars)))
- (if orgname
- (cadr orgname)
- varname)))
- external-vars))
- type))))
-
-
- ;; The types for lambda-blocks and let*-blocks must be inserted before get-returntype is called.
- ;;
- ;; follow-variable is a variable that always has the same type as term.
- ;; In "(let* ((a (lambda (b) b))))", "a" is the follow-variable for the term "(lambda (b) b)".
- ;; follow-variable is only used in case the returntype can not be determined now ('<undefined>), which in case its added to the equal-variables hash-table.
- ;;
- (define* (get-returntype varlist term #:optional follow-variable)
- (debug "get-returntype for " term "varlist:" varlist)
- (let ((ret (cond ((symbol? term)
- (let ((avar (assq term varlist)))
- (if avar
- (if (and (= 3 (length avar))
- (list? (caddr avar))
- (eq? 'lambda (car (caddr avar))))
- (list (cadr avar) (map list-copy (cadr (caddr avar)))) ;; Return-type is a lambda-function.
- (begin
- (if (and follow-variable
- (eq? '<undefined> (cadr avar)))
- (begin
- (debug "follow-equal for" follow-variable (car avar) (cadr avar))
- (add-equal-variables! follow-variable (car avar) '<undefined> '<undefined> term)
- ))
- (cadr avar)))
- (begin (debug "gakk" term)
- (add-external-var term '<undefined>)))))
-
- ((number? term)
- (if (exact? term)
- '<int>
- '<float>))
-
- ((string? term)
- '<char-*>)
-
- ((or (not (list? term)) (null? term))
- (check-failed "Unable to determine type for \"" term "\"."))
-
- ((memq (car term) rt-unknown-ret-type-ops)
- (let ((ret '<undefined>))
- (for-each (lambda (t)
- (set! ret (merge-types ret
- (get-returntype varlist t follow-variable)
- term)))
- (cdr term))
- ret))
-
- ;; let*
- ((eq? 'let* (car term))
- (get-returntype (append (cadr term) varlist)
- (last (cddr term))))
-
- ;; lambda
- ((eq? 'lambda (car term))
- ;;(c-display "hmm" (cadr term) (last (cddr term)))
- (get-returntype (append (cadr term) varlist)
- (last (cddr term))
- follow-variable))
-
- ;; begin
- ((eq? 'rt-begin (car term))
- (get-returntype varlist (last term)))
-
- ;; while
- ((eq? 'rt-while (car term))
- '<void>)
-
- ;; if
- ((eq? 'rt-if (car term))
- (merge-types (get-returntype varlist (caddr term) follow-variable)
- (get-returntype varlist (cadddr term) follow-variable)
- term))
-
- ;; is-type?
- ((eq? 'is-type? (car term))
- '<int>)
-
- ;; the
- ((eq? 'the (car term))
- (check-compatible-types (cadr term)
- (get-returntype varlist (caddr term) follow-variable)
- term)
- (cadr term))
-
- (else
- (let ((func (assq (car term) varlist)))
- (rt-print2 "got func for " (car term) ":" func)
- (if func
- (if (and (list? (cadr func))
- (or (= 2 (length func))
- (not (list? (caddr func)))))
- (car (cadr func))
- (cadr func))
- (let ((func (hashq-ref rt-funcs (car term))))
- (if func
- (-> func return-type)
- (check-failed "Unknown function(2) \"" (car term) "\": " term)))))))))
-
- (debug "Get returntype was " ret " for term" term)
- ret))
-
-
-
- ;; This one also returns the type.
- (define (set-type-in-! var type term)
- (debug "set-type-in-!" var type term)
-
- (let* ((varname (car var))
- (vartype (cadr var))
- (let*-variable (hashq-ref let*-variables varname)))
-
- (if (and let*-variable
- (not (eq? '<undefined> let*-variable)))
- (begin
- (set! type let*-variable)
- (set! vartype let*-variable)))
-
- (cond ((hashq-ref declared-variables var)
- (hashq-ref declared-variables var)) ;; Nothing can overo the declared type of a variable. This is the type.
-
- (else
- (let ((vartype (if (and (= 3 (length var))
- (list? (caddr var))) ;; A lambda function.
- (list vartype (map list-copy (cadr (caddr var))))
- vartype)))
- (let ((ret (merge-types vartype
- type
- term)))
- (set-car! (cdr var) ret)
-
- (if let*-variable
- (hashq-set! let*-variables varname ret))
- (debug "set to" ret)
- ret))))))
-
- ;; Set the type for a lambda*-variable. (I'm not sure this works properly, or what is supposed to work at all.)
- (define (set-type-in-lambda! var type term) ;; Term is only used to make understandable error-output
- (debug "in lambda" var type term)
- (set-type-in-! var type term))
-
- (define* (set-type! varlist name type term #:optional iswriting) ;; Term is only used to make understandable error-output
- ;; Set the type for a variable in a varlist
- (define (set-type-in-varlist! var type term) ;; Term is only used to make understandable error-output
- ;;(debug "set-type-in-varlist" var type term) ;; (Hmmm, this function is equal to set-type-in-lambda!...)
- (set-type-in-! var type term))
-
- ;;(debug "set-type! name/type/term" name type term)
- (let ((merged-type (set-equal-type! name type term)))
- (let ((var (assq name varlist)))
- (if (not var)
- (add-external-var name type iswriting)
- (set-type-in-varlist! var merged-type term)))))
-
-
-
- ;; Check-call checks correct types for function-call.
- ;; This is actually the else-block for the cond-block in the insert function.
- (define (check-call varlist term)
- (debug "check-call" term)
- (let ((funcname (car term)))
- (if (not (symbol? funcname))
- (check-failed "Illegal term: " term)
-
- (let ((func (assq (car term) varlist)))
-
-
- (if (and func (= 2 (length func)))
- (check-failed (<-> "Snd-rt does not normally support function names as arguments.\n"
- "Either use the body of the function as argument instead, or tranform\n"
- "the function into a macro. (please let me know if you need\n"
- "to use function names as arguments, -Kjetil.)")
- func))
-
- (if func
-
- ;; Local function
- (let ((name (car func))
- (functype (if (list? (caddr func))
- ;;(list (cadr func) (map list-copy (cadr (caddr func))))
- (list (cadr func) (cadr (caddr func)))
- (cadr func)))
- (returntype #f)
- (args #f))
-
- ;;(debug "functype " functype)
-
- (if (or (not (list? functype))
- (= 1 (length functype)))
- (check-failed "Local variable \"" funcname "\" is not a function:" term ". func:" func))
-
- (set! returntype (car functype))
- (set! args (cadr functype))
-
- (if (not (= (length args)
- (- (length term) 1)))
- (check-failed "Illegal number of argumentes to local function \"" funcname "\":" term))
-
- ;; Then check arg-types.
- (let ((ret (map (lambda (t)
- (insert varlist t))
- term)))
-
- (cons (car ret) (map (lambda (t funcarg)
- (let ((argtype (cadr funcarg))
- (ret-type (get-returntype varlist t)))
- (if (and (eq? '<SCM> ret-type)
- (not (eq? '<SCM> argtype)))
- (begin
- `(,(-> (hashq-ref rt-types argtype) c-transformfunc) ,t))
- (begin
- (set-type-in-lambda! funcarg ret-type term)
- (debug "after lambda-set:" funcarg varlist)
- (if (symbol? t)
- (begin
- (set-type! varlist t argtype term)))
- t))))
- (cdr term)
- args))))
-
-
- ;; Global function
- (let ((func (hashq-ref rt-funcs funcname)))
- (if (not func)
- (check-failed "Unknown function \"" funcname "\": " term)
- (if (not (-> func legal-number-of-arguments? term))
- (return #f)
- (let ((ret (map (lambda (t)
- (insert varlist t))
- term)))
- (cons (car ret) (map (lambda (t argtype)
- (let ((ret-type (get-returntype varlist t)))
- ;;(debug "ret-type" ret-type)
- (if (and (eq? '<SCM> ret-type)
- (not (eq? '<SCM> argtype))
- (not (eq? '<SCM> (-> (hashq-ref rt-types argtype) supertype))))
- `(,(-> (hashq-ref rt-types argtype) c-transformfunc) ,t)
- (begin
- (check-compatible-types argtype ret-type term)
- (if (symbol? t)
- (set-type! varlist t argtype term))
- t))))
- (cdr ret)
- (list-tabulate (length (cdr term))
- (lambda (i)
- (-> func arg-type i))))))))))))))
-
- (define (get-external-varlist)
- (map (lambda (v) (list (car v)
- (-> (cadr v) rt-type)))
- external-vars))
-
- (define (insert varlist term)
- (debug "insert" term " - " varlist)
- (cond ((not (list? term)) term)
- ((null? term) term)
-
-
- ;;; LET*
- ;;;;;;;;;;;;;;;;;;;;;;
- ((eq? 'let* (car term))
- (let* ((newvarlist varlist)
- (lambda_decls '())
- (vardecls (map (lambda (var)
- (let ((ret (if (list? (cadr var))
- (if (eq? 'lambda-decl (car (cadr var)))
- ;; A lambda declaration. (as the result of a letrec function)
- (let ((ret (list (car var) '<undefined>
- (append (list (car (cadr var)))
- (list (map (lambda (t)
- (list t '<undefined>))
- (car (cdr (cadr var)))))))))
- (push! ret lambda_decls)
- ret)
-
- ;; A lambda function
- (let* ((name (car var))
- (body (cadr var))
- (type #f)
- (decl (cadr body))
- (ifdecl (assq name lambda_decls))) ;; Check if there is a lambda declaration
- (if ifdecl
- (begin
- ;; Fill in types from the declaration.
- (set! decl (map (lambda (v1 v2)
- (list v1 (cadr v2)))
- decl
- (cadr (caddr ifdecl))))))
- (set! body (insert newvarlist `(lambda ,decl ,@(cddr body))))
- (set! type (get-returntype newvarlist body))
- (list name type body)))
- (if (rt-symbol-starts-with? (car var) '_rt_breakcontsig)
- (begin
- (list (car var) '<jmp_buf> 0)
- )
- (list (car var) (cadr var) 0)))))
- (push! ret newvarlist)
- ret))
- (cadr term)))
- (body (map (lambda (t)
- (insert newvarlist t))
- (cddr term))))
-
- (debug "1vardecls" vardecls)
- (debug "1newvarlist" newvarlist)
-
- ;; Fix up equal typed and declared variables.
- (set! vardecls (map (lambda (var)
- (let ((decl (hashq-ref declared-variables (car var))))
- (if decl
- (list (car var) decl (if (= 3 (length var))
- (caddr var)
- 0))
- (let ((equal (hashq-ref equal-typed-variables (car var))))
- (if equal
- (let* ((name (car var))
- (def (cadr equal)))
- (if (and (list? (cadr equal))
- (list? (caddr var)))
- (let* ((ret-type (car def))
- (arg-types (map cadr (cadr def))))
- `(,name ,ret-type (lambda ,(map (lambda (v1 v2)
- (list (car v2) v1))
- arg-types
- (cadr (caddr var)))
- ,@(cddr (caddr var)))))
- (list (car var) (cadr equal) (if (= 3 (length var))
- (caddr var)
- 0))))
- var)))))
- vardecls))
-
- ;; Make another attempt to determine return-type for lambda-functions. A function like this: "(lambda (a) a)" can sometimes
- ;; not determine its return-type right away because the type for a is not always known at the evaluation time for the function.
- (set! vardecls
- (let ((newvarlist varlist))
- (map (lambda (var)
- (let ((ret (if (and (eq? '<undefined> (cadr var))
- (list? (caddr var))
- (eq? 'lambda (car (caddr var))))
- (let ((type (get-returntype newvarlist (caddr var))))
- (if (eq? '<undefined> type)
- (check-failed "Unable to determine return-type for function" (car var)
- ". (Perhaps you need to use the \"the\" operator?)"))
- (list (car var) type (caddr var)))
- var)))
- (push! ret newvarlist)
- ret))
- vardecls)))
-
- ;; Fill in lambda-decls types
- (set! vardecls (map (lambda (var)
- (let ((decl (assq (car var) lambda_decls)))
- (if decl
- (let ((real (assq (car var) (reverse vardecls))))
- (set! lambda_decls (delete decl lambda_decls))
- ;;(debug "var/real" (car var) real (reverse vardecls))
- `(,(car var) ,(cadr real) (lambda-decl ,(cadr (caddr real)))))
- var)))
- vardecls))
-
- (let ((vardecls (remove (lambda (var)
- (eq? (cadr var) '<undefined>))
- vardecls)))
- (rt-print2 "vardecls" vardecls)
- (rt-print2 "newvarlist" newvarlist)
- (if (null? vardecls)
- `(rt-begin
- ,@body)
- `(let* ,vardecls
- ,@body)))))
-
-
- ;; LAMBDA
- ;;;;;;;;;;;;;;;;;;;;;;
- ((eq? 'lambda (car term))
- (let* ((vardecls (map (lambda (var)
- (if (list? var)
- var
- (list var '<undefined>)))
- (cadr term)))
- (body (map (lambda (t)
- (insert (append vardecls varlist) t))
- (cddr term))))
-
- ;; Set correct type for equal typed and declared variables.
- (set! vardecls (map (lambda (var)
- (let ((decl (hashq-ref declared-variables (car var))))
- (if decl
- (list (car var) decl)
- (let ((equal (hashq-ref equal-typed-variables (car var))))
- (if equal
- (list (car var) (cadr equal))
- var)))))
- vardecls))
-
- `(lambda ,vardecls
- ,@body)))
-
-
- ;; SET! and RT-SET*! (rt-set*! is the result of let*-lifting and needs special treatment, because the type can't change when rt-set*!).
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ((or (eq? 'set! (car term))
- (eq? 'rt-set*! (car term)))
- (let* ((ret-term (insert varlist (caddr term)))
- (type (get-returntype varlist ret-term))
- (newtype (if (eq? 'rt-set*! (car term))
- type
- (get-returntype varlist (cadr term)))))
-
- (if (eq? 'rt-set*! (car term))
- (hashq-set! let*-variables (cadr term) type))
-
- (if (and (eq? '<SCM> type)
- (not (or (eq? '<SCM> newtype)
- (eq? '<undefined> newtype))))
- (begin
- `(set! ,(cadr term) (,(-> (hashq-ref rt-types newtype) c-transformfunc) ,ret-term)))
- (begin
- (set-type! varlist (cadr term) type term #t)
- (if (symbol? (caddr term))
- (begin
- (add-equal-variables! (cadr term) (caddr term) newtype type term)
- ;;(debug "setting type for" (caddr term) "to" newtype)
- (set-type! varlist (caddr term) newtype term)))
- `(set! ,(cadr term) ,ret-term)))))
-
-
-
- ;; DECLARE
- ;;;;;;;;;;;;;;;;;;;;;;
- ((eq? 'declare (car term))
- (for-each (lambda (decl)
- (let* ((type (if (eq? (car decl) 'type) (cadr decl) (car decl)))
- (vars (if (eq? (car decl) 'type) (cddr decl) (cdr decl)))
- (rt-type (hashq-ref rt-types type)))
- (if (not rt-type)
- (check-failed type "is not a known type in expression" term))
- (for-each (lambda (var)
- (hashq-set! declared-variables var type)
- (set-type! varlist var type term)
- )
- vars)
- ))
- (cdr term))
- '(rt-dummy/dummy))
-
-
- ;; THE
- ;;;;;;;;;;;;;;;;;;;;;;
- ((eq? 'the (car term))
- (if (symbol? (caddr term))
- (set-type! varlist (caddr term) (cadr term) term))
- (let* ((c (insert varlist (caddr term)))
- (ret-type (get-returntype varlist c)))
- ;;(c-display "the" term c ret-type)
- (if (and (eq? '<SCM> ret-type)
- (not (eq? '<SCM> (cadr term))))
- `(the ,(cadr term) (,(-> (hashq-ref rt-types (cadr term)) c-transformfunc) ,c))
- `(the ,(cadr term) ,c))))
-
-
- ;; IS-TYPE?
- ;;;;;;;;;;;;;;;;;;;;;;
- ((eq? 'is-type? (car term))
- term)
-
- ;; BEGIN
- ;;;;;;;;;;;;;;;;;;;;;;
- ((eq? 'rt-begin (car term))
- `(rt-begin ,@(map (lambda (t)
- (insert varlist t))
- (cdr term))))
-
-
- ;; (EVERYTHING) ELSE
- ;;;;;;;;;;;;;;;;;;;;;;
- (else
- (check-call varlist term))))
-
-
- (let ((ret (insert '() term)))
-
-
- (for-each (lambda (var)
- (let ((decl (hashq-ref declared-variables (car var))))
- (if decl
- (set-car! (cdr var) (hashq-ref rt-types decl))
- (let ((equal (hashq-ref equal-typed-variables (car var))))
- (if equal
- (set-car! (cdr var) (hashq-ref rt-types (cadr equal))))))))
- external-vars)
-
- (let ((extnumbers '())
- (extpointers '())
- (extnumbers-writing '())
- (returntype (get-returntype '() ret)))
- (for-each (lambda (extvar)
- (if (caddr extvar)
- (push! extvar extnumbers-writing)
- (if (rt-is-number? (-> (cadr extvar) rt-type))
- (push! extvar extnumbers)
- (push! extvar extpointers))))
- external-vars)
- (debug "wrting:" extnumbers-writing)
- (debug "renamed-vars" renamed-vars)
- (list ret
- returntype
- extnumbers extpointers extnumbers-writing))))))
-
-
-
-(define (rt-insert-types2 term)
- (let ((ret (rt-insert-types term '())))
- (if ret
- (list (car ret)
- (cadr ret)
- (map (lambda (v) (list (car v)
- (-> (cadr v) rt-type)))
- (append (caddr ret) (cadddr ret) (cadr (cdddr ret))))))))
-
-
-#!
-(pretty-print
- (rt-insert-types2 '(lambda ()
- (lambda ()
- (let* ((rt_gen498__1 <float>)
- (rt_gen500__2 <undefined>)
- (rt_gen499__4 <void-*>)
- (rt_gen501__6 (lambda (dir__7)
- (let* ((rt_gen502__8 (lambda (dire__9)
- 0.2)))
- (declare (<int> dir__7))
- (the <float>
- (rt-begin
- (rt_gen502__8 dir__7)))))))
- (rt-begin
- (rt-set*! rt_gen498__1 0.0)
- (rt-set*! rt_gen500__2 sr__3)
- (rt-set*! rt_gen499__4 (rt-mus-environ/mus_environ rt_gen500__2))
- (setter!-mus-environ/mus_set_environ rt_gen500__2 (rt-get-environ))
- (set! rt_gen498__1 (rt-mus-src/mus_src rt_gen500__2 renamed_var__5 (rt-begin rt_gen501__6)))
- (setter!-mus-environ/mus_set_environ rt_gen500__2 rt_gen499__4) rt_gen498__1)))))
- )
-
-
-
-(-> (hashq-ref rt-funcs 'rt-mus-src/mus_src) arg-type 1)
-
-
-(rt-2 '(lambda ()
- (src sr das-src (lambda (dire)
- 0.2))))
-
-(rt-insert-types2 '(lambda ()
- (let* ((a (lambda (func)
- ;;(declare ((<void> (<int>)) func))
- (func 5))))
- (a (lambda (b)
- b)))))
-
-(rt-insert-types2 '(lambda ()
- (rt-/// (the <float> a) b)))
-
-(rt-insert-types2 '(lambda ()
- (let* ((a (lambda ()
- 9))
- (b <undefined>))
- (rt-set*! b a)
- (b))))
-
-
-(rt-insert-types2 '(lambda ()
- (let* ((ai (lambda (a)
- 5)))
- (ai 2))))
-
-(rt-insert-types2 '(lambda ()
- (let* ((a <float>))
- (rt-set*! a 5.2)
- (declare (<int> a))
- a)))
-
-(define a (rt-2 '(lambda ()
- (let ((a 2))
- (let ((gakk (lambda ()
- (if (< a 10)
- (set! a (1+ a))))))
- (gakk))
- a))))
-
-
-(rt-insert-types2 '(lambda ()
- (let* ((a 0))
- (rt-set*! a 9)
- (< a 7))))
-(rt-insert-types2 '(lambda (a b)
- (rt-if 1
- (set! a 9)
- (set! a 3.9))
- (set! b 2.3)
- (+ a b)))
-
-(rt-insert-types2 '(lambda (n1)
- (let* ((fib (lambda-decl (n2)))
- (fib (lambda (n2)
- (rt-if (< n2 2)
- n2
- (+ (fib (rt--/- n2 1))
- (fib (rt--/- n2 2)))))))
- (fib n1))))
-
-(rt-2 '(lambda (n1)
- (letrec ((fib (lambda (n2)
- (rt-if (< n2 2)
- (+ a n2)
- (+ (fib (rt--/- n2 1))
- (fib (rt--/- n2 2)))))))
- (fib n1))))
-
-(lambda ((<float> n1_u1))
- (let* ((fib_u3 <float> (lambda ((<float> n2_u4))
- (return
- (rt-if (< n2_u4 2)
- n2_u4
- (+ (fib_u2 (rt--/- n2_u4 1))
- (fib_u2 (rt--/- n2_u4 2))))))))
- (return
- (rt-begin
- (fib_u3 n1_u1)))))
-
-(rt-insert-types2 '(lambda ()
- (let* ((a (lambda ()
- (rt-if 1
- (* 2 3)
- (+ 2 3)))))
- (a))))
-
-(define a (rt-2 '(lambda ()
- (let* ((a (lambda (c)
- ;;(declare (<int> c))
- (the <char-*> "adsf")))
- (d (lambda (e)
- ;;(declare (<double> e))
- "gakk"))
- (b a))
- (set! b d)
- (b 7)
- (+ 5 9)
- ))))
-(rt-funcall a)
-
-(lambda (n)
- (letrec ((fib (lambda (n)
- (rt-if (< n 2)
- n
- (+ (fib (rt--/- n 1))
- (fib (rt--/- n 2)))))))
- (fib n)))
-
-
-
-
-(rt-insert-types2 '(lambda ()
- (let* ((a (lambda (c)
- ;;(declare (<int> c))
- (the <char-*> "adsf")))
- (d (lambda (e)
- ;;(declare (<double> e))
- "gakk"))
- (b 0))
- (set! b a)
- (set! b d)
- (b 7)
- (+ 5 9)
- )))
-
-(rt-insert-types '(lambda ()
- (let* ((fib (lambda-decl (n)))
- (ai (lambda (g)
- (declare (<double> g))
- (fib 6)
- (set! g 9)
- ;;(set! g (fib 3))
- (set! a 9)))
- (fib (lambda (n)
- (declare (<int> n))
- (the <double>
- (rt-if (< n 2)
- n
- (+ (fib (rt--/- n 1))
- (fib (rt--/- n 2)))))))
- )
- (ai 3)
- ;;(fib 5)
- ))
- '())
-
-(rt-insert-types '(lambda ()
- (let* ((a 0))
- (set! a (+ a 3))))
- '())
-
-(rt-insert-types '(lambda (a b)
- (let* ((c 0)
- (d 0))
- (declare (<double> a b c f))
- (+ a b c f)))
- '())
-
-(rt-insert-types '(lambda ()
- (let* ((a 0))
- ;;(+ a (rt-vector-ref/vector-ref vec 3))
- (set! a (rt-vector-ref/vector-ref vec 4))
- (+ a 9)
- (set! b a)
- ))
-
- '())
-
-(rt-insert-types '(lambda ()
- (let* ((a (lambda (b)
- (+ 1 b))))
- (+ 2 (a (rt-vector-ref/vector-ref vec 2)))))
- '())
-
-(rt-insert-types '(lambda ()
- (let* ((d 0)
- ;;(a_u1 (lambda-decl (b_u3)))
- (a_u1 (lambda (b_u2)
- c_u2)))
- (a_u1 (+ c_u2 2.9))
- ))
- '())
-
-(rt-insert-types '(lambda ()
- (let* ((a 0)
- ;;(f 0)
- (b (lambda (r2 r3)
- ;;(set! r2 a)
- ;;(+ a 2)
- ;;(+ r2 6)
- (rt-mus-channels/mus_channels r2)
- (rt-oscil/mus_oscil r2 3 4)
- )))
- (set! f (rt-vector-ref/vector-ref vec 9))
- (set! a (b d 9))
- (set! a 9)))
- '())
-
-(rt-insert-types '(lambda ()
- (let* ((a (lambda (b)
- ;;8
- ;;(+ b 4)
- b
- )))
- (+ 1 (a 9))
- ))
- '())
-!#
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; rt-check-syntax does the following:
-;; *various checks that that the term is a legal expression.
-;;
-;; rt-macroexpand must have been called on the term before calling.
-;;
-(define (rt-check-syntax term)
-
- (call-with-current-continuation
- (lambda (return)
-
- (define (check-failed . args)
- (newline)
- (apply c-display (cons "rt-compiler.scm/rt-check-calls:" args))
- (return #f))
-
-
- (define (check-calls term)
- ;;(c-display "check-calls varlist/term" varlist term)
- (cond ((not (list? term)) #t)
- ((null? term) #t)
-
- ;; RT_WHILE/WHILE
- ;((eq? 'rt-while (car term))
- ; (check-calls varlist (cadr term))
- ; (check-calls varlist (caddr term)))
-
- ;; RT-LAMBDA_DECL/LAMBDA_DECL
- ((eq? 'lambda-decl (car term))
- #t)
-
- ;; LAMBDA
- ((eq? 'lambda (car term))
- (if (< (length term) 3)
- (check-failed "Bad lambda-form: " term ".")
- (if (not (list? (cadr term)))
- (check-failed "Second argument for lambda is not a list: " term ".")
- (if (not (= (length (cadr term))
- (length (delete-duplicates (cadr term)))))
- (check-failed "Same argument name for lambda function used more than once: " term ".")
- (begin
- (for-each (lambda (varname)
- (if (not (symbol? varname))
- (check-failed "Illegal variable \"" varname "\" in lambda-form: " term ".")))
- (cadr term))
- (for-each check-calls (cddr term)))))))
-
- ;; SET!
- ((eq? 'set! (car term))
- (if (not (symbol? (cadr term)))
- (check-failed "Illegal set!(2) term: " term)
- (if (not (= 3 (length term)))
- (check-failed "Illegal set!(3) term: " term))))
-
- ;; BEGIN
- ((eq? 'rt-begin (car term))
- (if (null? (cdr term))
- (check-failed "begin needs a body: " term ".")
- (for-each check-calls (cdr term))))
-
- ;; LET*
- ((eq? 'let* (car term))
- (for-each (lambda (var)
- (if (not (symbol? (cadr var)))
- (check-calls (cadr var))))
- (cadr term))
- (for-each check-calls (cddr term)))
-
- ;; IF
- ((eq? 'rt-if (car term))
- (if (< (length term) 3)
- (check-failed "To few arguments for if:" term ".")
- (if (> (length term) 4)
- (check-failed "To many arguments for if:" term ".")))
- (check-calls (cadr term))
- (check-calls (caddr term))
- (if (= (length term) 4)
- (check-calls (cadddr term))))
-
- (else
- (for-each check-calls term))))
-
- (if (not (eq? 'lambda (car term)))
- (check-failed "This is not a lambda function: " term))
-
- (rt-print2)
- (rt-print2 "check-calls term" term)
- (rt-print2)
-
- (check-calls term))))
-
-
-#!
-((<float> c (lambda ((<float> d)) (+ a b)))
- (<float> b 5)
- (<float> a))
-
-(rt-check-calls '(lambda ()
- (rt-if a
- a
- a))
- '((a ai)))
-
-(rt-check-calls '(lambda ()
- ;;(oscil osc2)
- (set! setfloat-2 (sin osc))
- (sin (* 0.2 (sin osc) (sin osc2))))
- '((setfloat-2 gakkgakk)))
-
-(+ 2 3)
-
-(rt-check-calls '(lambda ()
- (set! osc 9)
- (rt-oscil/mus_oscil_0 osc)))
-
-(map car (caddr
- (rt-check-calls '(lambda ((<float> a))
- (let* ((b <float> 5)
- (c <float> (lambda ((<float> d))
- (+ 2 a b))))
-
- (c (c d))
- (rt-oscil/mus_oscil_0 anosc)
- (set! anosc 5)
- (set! extw 9)
- (+ ext1 ext2))))
- ))
-
-!#
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;; Types ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define rt-types (make-hash-table 251))
-
-;; rt-type -> Name used in rt
-;; checkfunc -> Guile-function to check if type is correct.
-;; c-transformfunc -> Name of a rt-ec-function (or macro) that converts an SCM version of the type to something that can be used in rt.
-;; (For example when using vector-ref, list-ref, car, cdr, etc.)
-;; This function must call rt-error if the variable can not be converted to a compatible type.
-;; transformfunc -> A Guile function that is run on the variable before putting it to rt. Type is already checked with checkfunc.
-;; error-message -> ???
-;; c-type -> Name of the type on the c-side. Usually the same as rt-type.
-;; suptype-of -> This type can be used for all situation which the type for "subtype-of" is compatible with.
-
-(def-class (<rt-type> rt-type checkfunc c-transformfunc #:key transformfunc error-message (c-type rt-type) subtype-of)
- (def-method (rt-type)
- rt-type)
- (def-method (c-type)
- c-type)
- (def-method (supertype)
- subtype-of)
- (def-method (c-transformfunc)
- c-transformfunc)
- (def-method (check type)
- (if checkfunc
- (checkfunc type)
- (eq? type rt-name)))
-
- (define compatible-types '())
- (def-method (add-compatible-type type)
- (push! type compatible-types))
-
- (def-method (type-ok? type)
- ;;(c-display "type/rt-typ/compatibele-types" type rt-type compatible-types)
- (or (member type (cons rt-type compatible-types))
- (and subtype-of
- (-> (hashq-ref rt-types subtype-of) type-ok?
- type))))
-
- ;; Don't use.
- (def-method (get-most-compatible-type othertype)
- (let ((other ((hashq-ref rt-types othertype))))
- (if (eq? this othertype)
- this
- #f)))
-
- ;; We assume rt-type and type are compabible.
- (def-method (get-most-spesific-type type)
- (if (eq? type rt-type)
- this
- (if (eq? subtype-of type)
- this
- (hashq-ref rt-types type))))
-
- (def-method (transform var varname #:optional das-add-extra-gc-var-func)
- (let ((ret (if (not (this->check var))
- (begin
- (c-display "rt-compiler/<rt-type>. Wrong type. \"" varname "\" with value \"" var "\" is not a" rt-type ".")
- (if (eq? '<mus_any-*> rt-type)
- (c-display "(this usually means that only a clm method is used on the variable, and\n"
- " therefore it was impossible to figure out its real type.\n"
- " [for example only (mus-location envelope), but no (env envelope).])\n"))
- (throw 'wrong-type))
- (if transformfunc
- (begin
- (transformfunc var)
- )
- var))))
- (if (and (list? ret)
- (eq? 'extra-gc-var (car ret)))
- (begin
- ;;(c-display "Warning, extra-gc-var is returned in the tranform method in the <rt-types> class. That is not supposed to happen....")
- (if das-add-extra-gc-var-func
- (das-add-extra-gc-var-func (cadr ret)))
- (caddr ret))
- ret)))
-
- (hashq-set! rt-types rt-type this)
-
- (if subtype-of
- (-> (hashq-ref rt-types subtype-of) add-compatible-type
- rt-type))
-
- )
-
-;; Never called!
-(define (c-nevercalled-true? . something)
- (c-display "Error. What the? c-nevercalled-true? is never supposed to be called. Arguments:" something)
- #f)
-
-
-(define-c-macro (rt-mus-any?/mus_xen_p scm)
- (if (rt-is-safety?)
- `(?kolon (mus_xen_p ,scm)
- (XEN_TO_MUS_ANY ,scm)
- (begin_p
- (rt_error rt_globals (string "Variable is not a CLM generator."))
- NULL))
- `(XEN_TO_MUS_ANY ,scm)))
-
-(define (rt-number-2-rt scm)
- (cond ((not scm) 0)
- ((number? scm) scm)
- ((eq? #t scm) 1)
- (else
- (c-display "Error. Wrong type for variable with value " scm ". It is not a number")
- #f)))
-(define (rt-number-2-rt? scm)
- (or (number? scm)
- (eq? #f scm)
- (eq? #t scm)))
-
-(begin
- (<rt-type> '<double> rt-number-2-rt? 'rt_scm_to_double #:transformfunc rt-number-2-rt)
- (<rt-type> '<float> rt-number-2-rt? 'rt_scm_to_float #:transformfunc rt-number-2-rt) ;; #:subtype-of <double>)
- (<rt-type> '<int> rt-number-2-rt? 'rt_scm_to_int #:transformfunc rt-number-2-rt) ;; #:subtype-of <float>)
- (<rt-type> '<char-*> string? 'rt_scm_to_error) ;; Function does not exist
- (<rt-type> '<vct-*> vct? 'rt_scm_to_vct #:transformfunc XEN_TO_VCT)
- ;;(<rt-type> '<vector> vector? #f #:c-type '<SCM>)
-;; (<rt-type> '<mus_any-*> c-nevercalled-true? 'rt-mus-any?/mus_xen_p)
- (<rt-type> '<mus_any-*> c-nevercalled-true? 'rt_scm_to_mus_any)
- (<rt-type> '<void-*> c-nevercalled-true? #f)
- (<rt-type> '<undefined> (lambda x
- (c-display "Warning, unused variable with value:" x)
- #t)
- #f #:c-type '<SCM>)
- (<rt-type> '<void> c-nevercalled-true? #f)
- (<rt-type> '<SCM> (lambda (t) #t) #f)
- (<rt-type> '<jmp_buf> c-nevercalled-true? #f)
- ;;(<rt-type> '<pair> pair? #f #:c-type '<SCM> #:subtype-of '<SCM>) ;; Some checking is needed here. I don't think this is safe.
- )
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;; Functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-(define rt-funcs (make-hash-table 251))
-
-
-(def-class (<rt-func> name returntype args #:key min-arguments max-arguments is-immediate needs-rt-globals)
- (define last-type (if (null? args)
- #f
- (last args)))
-
- (def-method (legal-number-of-arguments? term)
- (if (and max-arguments
- (>= (1- (length term)) max-arguments))
- (begin
- (c-display "rt-compiler.scm/<rt-func>: Wrong number of arguments in \"" term "\". Expected maximum"
- max-arguments "arguments for" (car term) ". Found" (- (length term) 1) ".")
- #f)
- (if (and min-arguments
- (< (1- (length term)) min-arguments))
- (begin
- (c-display "rt-compiler.scm/<rt-func>: Wrong number of arguments in \"" term "\". Expected minimum"
- min-arguments "arguments for" (car term) ". Found" (- (length term) 1) ".")
- #f)
- (if (and (not min-arguments)
- (not max-arguments)
- (not (= (1- (length term)) (length args))))
- (begin
- (c-display "rt-compiler.scm/<rt-func>: Wrong number of arguments in \"" term "\". Expected"
- (length args) "arguments for" (car term) ". Found" (- (length term) 1) ".")
- #f)
- #t))))
-
- (def-method (needs-rt-globals)
- needs-rt-globals)
-
- (def-method (return-type)
- returntype)
-
- (def-method (arg-type argnum)
- (if (>= argnum (length args))
- last-type
- (list-ref args argnum)))
-
- ;(if (not min-arguments)
- ; (set! min-arguments (length args)))
-
- ;(if (not max-arguments)
- ; (set! max-arguments (length args)))
-
- (if is-immediate
- (rt-add-immediate name))
-
- (hashq-set! rt-funcs name this)
-
- )
-
-(begin
-
- ;; Functions defined directly. (Note that most functions are defined indirectly using the rt-renamefunc macro.)
-
- ;; Basic
- (<rt-func> '+ '<float> '(<float>) #:min-arguments 1)
- (<rt-func> 'rt--/- '<float> '(<float>) #:min-arguments 2)
- (<rt-func> 'rt--/minusoneargument '<float> '(<float>))
- (<rt-func> '* '<float> '(<float>) #:min-arguments 2)
- (<rt-func> 'rt-/// '<double> '(<float>) #:min-arguments 2)
-
- (<rt-func> '1+ '<float> '(<float>))
- (<rt-func> '1- '<float> '(<float>))
-
- (<rt-func> 'rt-min/MIN '<float> '(<float> <float>))
- (<rt-func> 'rt-max/MAX '<float> '(<float> <float>))
-
- (<rt-func> 'set! '<void> '(<float> <float>))
-
- (<rt-func> 'not '<int> '(<float>))
-
-
- ;; mus_float_t operations
- (for-each (lambda (func)
- (primitive-eval `(<rt-func> ',func '<float> '(<float>))))
- `(sin cos tan acos asin atan exp log log10 sqrt
- asinh acosh atanh cosh sinh tanh))
-
- (<rt-func> 'atan2 '<float> '(<float> <float>))
- (<rt-func> 'hypot '<float> '(<float> <float>))
-
- ;; Bitwise operations
- (<rt-func> 'rt-ash/<< '<int> '(<int> <int>))
- (<rt-func> 'rt-ash/>> '<int> '(<int> <int>))
-
- ;; Various
- (<rt-func> 'rt-if '<float> '(<int> <float> <float>)) ;; Special form, only return-type is checked
- (<rt-func> 'rt-begin '<float> '(<float>) #:min-arguments 1) ;; Special form, only return-type is checked
- (<rt-func> 'lambda-decl '<float> '()) ;; ???
- (<rt-func> 'rt-while '<void> '(<int> <float>) #:min-arguments 1)
- (<rt-func> 'rt-break/break '<void> '(<int>))
- (<rt-func> 'rt-break/return '<void> '(<float>))
- (<rt-func> 'rt-contbreakvar/jmp_buf '<void> '())
- (<rt-func> 'rt-setjmp/setjmp '<int> '(<jmp_buf>))
- (<rt-func> 'rt-break/longjmp '<void> '(<jmp_buf>))
- (<rt-func> 'rt-continue/longjmp '<void> '(<jmp_buf>))
-
- (<rt-func> 'rt-mus-any?/mus_xen_p '<mus_any-*> '(<SCM>) #:needs-rt-globals #t)
-
-
-
-
- )
-
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;; Macros ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-(define-macro (define-rt-macro def . body)
- (define (is-expand varname)
- (let ((s (symbol->string varname)))
- (if (and (> (string-length s) 7)
- (string= "expand/" s 0 7 0 7))
- (string->symbol (string-drop s 7))
- #f)))
-
- (if rt-defining-macros-clears-cache
- (rt-clear-cache!))
- (cond ((not (pair? def))
- `(define-macro ,(symbol-append rt-macro-prefix def)
- ,@body))
- ((dotted-list? def)
- (let* ((das-last (cdr (last-pair def)))
- (exp (is-expand das-last)))
- (if exp
- `(define-macro ,(cons (symbol-append rt-macro-prefix (car def)) (cdr def))
- (let ((,exp (map rt-macroexpand ,das-last)))
- ,@body))
- `(define-macro ,(cons (symbol-append rt-macro-prefix (car def)) (cdr def))
- ,@body))))
- ((find keyword? (cdr def))
- `(define-macro ,(symbol-append rt-macro-prefix (car def))
- (labamba ,(cdr def)
- ,@body)))
- (else
- (let* ((name (car def))
- (new-name (symbol-append rt-macro-prefix name))
- (expand-args '())
- (args (cdr def))
- (clean-args '())
- (optionals '())
- (rest (rt-gensym))
- (min-args (rt-gensym))
- (max-args (rt-gensym))
- (return (rt-gensym)))
- (for-each (lambda (arg)
- (if (list? arg)
- (set! optionals (append! optionals (list (list (car arg) (keyword->symbol (car arg)) (cadr arg)))))
- (let ((exp (is-expand arg)))
- (if exp
- (set! expand-args (append! expand-args (list exp))))))
- (set! clean-args (append! clean-args (list (if (list? arg) (keyword->symbol (car arg)) arg)))))
- args)
- `(define-macro ,(cons new-name rest)
- (call-with-current-continuation
- (lambda (,return)
- (let ((,min-args ,(- (length clean-args) (length optionals)))
- (,max-args ,(length args))
- ,@(map (lambda (varname)
- (list varname '(quote rt-undefined)))
- clean-args)
- ,@(map (lambda (expvarname)
- (list expvarname '(quote rt-undefined)))
- expand-args))
- (define (set-key-args ,rest)
- (cond ((null? ,rest) #t)
- ,@(map (lambda (optarg)
- `((eq? (car ,rest) ,(car optarg))
- (set! ,(cadr optarg) (cadr ,rest))
- (set-key-args (cddr ,rest))))
- optionals)
- (else
- (if (not (keyword? (car ,rest)))
- (c-display "Unknown argument \"" (car ,rest) "\" for rt-macro \"" ',name "\":" ,rest)
- (c-display "Unknown key-word argument \"" (car ,rest) "\" for rt-macro \"" ',name "\":" ,rest))
- (,return #f))))
-
- (if (< (length ,rest) ,min-args)
- (begin
- (c-display "To few arguments for rt-macro \"" ',name "\". Expected at least" ,min-args ", found " (length ,rest) ":" ,rest)
- (,return #f)))
-
- (if (> (length ,rest) (+ ,min-args (* ,(length optionals) 2)))
- (begin
- (c-display "To many arguments for rt-macro \"" ',name "\". Expected at most" ,max-args ", found:" ,rest)
- (,return #f)))
-
- ;;(c-display "rest" ,rest)
- ;;(c-display "ai" ,(list-ref clean-args 4) (list-ref ,rest 4))
-
- ,@(map (lambda (name n)
- `(set! ,name (list-ref ,rest ,n)))
- clean-args
- (iota (- (length clean-args) (length optionals))))
-
- (set-key-args (list-tail ,rest ,min-args))
-
-
- ,@(map (lambda (optarg)
- `(if (eq? 'rt-undefined ,(cadr optarg))
- (set! ,(cadr optarg) ,(caddr optarg))))
- optionals)
-
- (let ,(map (lambda (expvarname)
- `(,expvarname (rt-macroexpand ,(symbol-append 'expand/ expvarname))))
- expand-args)
- ,@body)))))))))
-
-#!
-(define-rt-macro (add . args)
- `(+ ,@args))
-
-(rt-funcall (rt-compile (lambda (a b c)
- (add a b c)))
- 2 3 4)
-=> 9
-
-(define-rt-macro (add a1 a2 (#:a3 3) (#:a4 4) (#:a5 5))
- `(+ ,a1 ,a2 ,a3 ,a4 ,a5))
-
-(rt-funcall (rt-compile (lambda ()
- (add 1 2 #:a4 9))))
-=> 20
-(rt-macroexpand '(add 1 2 :a4 9))
-(+ 1 2 3 9 5)
-!#
-
-
-
-(define-macro (define-rt+-macro . rest)
- `(begin
- (define-rt-macro ,@rest)
- (define-macro ,@rest)))
-
-(define-macro (define-rt/stalin-macro . rest)
- `(begin
- (define-rt-macro ,@rest)
- (define-stalin-macro ,@rest)))
-
-
-(define-macro (rt-renamefunc rt-name c-name returntype . args)
- (rt-clear-cache!)
- (let ((funcname (symbol-append 'rt- rt-name '/ c-name)))
- (apply <rt-func> (append (list funcname returntype) args))
- (primitive-eval `(define-c-macro ,(cons funcname 'rest )
- `(,',c-name ,@rest)))
- `(define-rt-macro ,(cons rt-name 'rest)
- `(,',funcname ,@rest))))
-
-
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;; define-rt ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define rt-functions (make-hash-table 219))
-
-(define-macro (define-rt def . body)
- (rt-clear-cache!)
- (hashq-set! rt-functions
- (car def)
- `(define ,def
- ,@body))
- #t) ;; hashq-set! actually returns the value...
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;; rt-ec-functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;;rt-ec-functions are eval-c functions which are inserted into the compiled functions
-;;when needed.
-
-;; (rt-find-all-funcs '(lambda () (+ (- (aiai 90)))) -> '(+ - aiai)
-(define (rt-find-all-funcs term)
- (define ret '())
- (define (find term)
- (cond ((not (list? term)) #f)
- ((null? term) #f)
- ((eq? 'let* (car term))
- (for-each (lambda (vardecl)
- (find (cdr vardecl)))
- (cadr term))
- (find (cddr term)))
- ((eq? 'lambda (car term))
- (find (cddr term)))
- ((symbol? (car term))
- (push! (car term) ret)
- (for-each find (cdr term)))
- (else
- (for-each find term))))
- (find term)
- ret)
-
-
-(define rt-ec-functions '())
-
-(define (rt-get-ec-function name)
- (assq name rt-ec-functions))
-
-(define-macro (rt-ec-private-function ret-type name body)
- (define def (map (lambda (arg)
- (fix-defines
- (define type (car arg))
- (define name (cadr arg))
- (define rt-type (hashq-ref rt-types type))
- ;;(c-display "type/rt-type: " type rt-type)
- (if rt-type
- `(,(-> rt-type c-type) ,name)
- arg)))
- (cadr body)))
- (if (hashq-ref rt-types ret-type)
- (set! ret-type (-> (hashq-ref rt-types ret-type) c-type)))
-
- (set! body `(,(car body) ,def ,@(cddr body)))
- (rt-clear-cache!)
- (let ((dependents (rt-find-all-funcs body))
- (old (assq name rt-ec-functions)))
- (if old
- `(set-cdr! (assq ',name rt-ec-functions) (list '(,@dependents)
- '(,ret-type ,name ,body)))
- `(set! rt-ec-functions (append! rt-ec-functions
- (list (list ',name
- '(,@dependents)
- '(,ret-type ,name ,body))))))))
-(define-macro (define-rt-ec ret-type name body)
- (fix-defines
- (when (not (eq? 'lambda (car body)))
- (c-display "Illegal body for define-rt-ec: " body)
- (throw 'anerror))
- (define def (cadr body))
- (cond ((null? def)
- `(begin
- (rt-ec-private-function ,ret-type ,name ,body)
- (<rt-func> ',name ',ret-type '() :needs-rt-globals #f)))
- ((or (equal? '(unquote rt-globalvardecl) (car def))
- (equal? '(<struct-RT_Globals-*> rt_globals) (car def)))
- `(begin
- (rt-ec-private-function ,ret-type ,name ,body)
- (<rt-func> ',name ',ret-type ',(map car (cdr def)) :needs-rt-globals #t)))
- (else
- `(begin
- (rt-ec-private-function ,ret-type ,name ,body)
- (<rt-func> ',name ',ret-type ',(map car def) :needs-rt-globals #f))))))
-
-
-#!
-(pretty-print
- (macroexpand '(rt-ec-private-function <nonstatic-void> rt_error (lambda (,rt-globalvardecl (<char-*> msg))
- (fprintf stderr (string "RT RUNTIME ERROR: %s. (Removing instrument)\\n") msg)
- (set! rt_globals->remove_me 1)
- ,(if (rt-is-safety?)
- '(longjmp rt_globals->engine->error_jmp 5)
- "/* */")))))
-
-
-(pretty-print
- (macroexpand '(rt-ec-private-function <void> hello1 (lambda ((<bus> ai))
- #t))))
-(pretty-print
- (macroexpand '(define-rt-ec <void> hello1 (lambda (,rt-globalvardecl)
- #t))))
-(pretty-print
- (macroexpand '(define-rt-ec <void> hello1 (lambda (,rt-globalvardecl (<void> gakk))
- #t))))
-!#
-
-
-
-
-(begin
-
- (rt-ec-private-function <nonstatic-void> rt_error (lambda (,rt-globalvardecl (<char-*> msg))
- (rt_debug (string "RT RUNTIME ERROR: %s. (Removing instrument)\\n") msg)
- (set! rt_globals->remove_me 1)
- ,(if (rt-is-safety?)
- '(longjmp rt_globals->engine->error_jmp 5)
- "/* */")))
- (<rt-func> 'rt_error '<void> '(<char-*>) #:needs-rt-globals #t)
- (define-rt-macro (rt-error . rest)
- `(rt_error ,@rest))
-
- ;; scm_to_double
- (define-rt-ec <double> rt_scm_to_double (lambda (,rt-globalvardecl (<SCM> name))
- (if (SCM_INUMP name)
- (return (SCM_INUM name))
- (if (SCM_REALP name)
- (return (SCM_REAL_VALUE name))
- (begin
- (rt_error rt_globals (string "Variable is not a number (to_double)"))
- (return 0))))))
-
-
- ;;; scm_to_float
- (define-rt-ec <float> rt_scm_to_float (lambda (,rt-globalvardecl (<SCM> name))
- (if (SCM_INUMP name)
- (return (SCM_INUM name))
- (if (SCM_REALP name)
- (return (SCM_REAL_VALUE name))
- (begin
- (rt_error rt_globals (string "Variable is not a number (to_float)"))
- (return 0))))))
-
-
- ;; scm_to_int
- (define-rt-ec <int> rt_scm_to_int (lambda (,rt-globalvardecl (<SCM> name))
- (if (SCM_INUMP name)
- (return (SCM_INUM name))
- (if (SCM_REALP name)
- (return (SCM_REAL_VALUE name))
- (begin
- (rt_error rt_globals (string "Variable is not a number (to_int)"))
- (return 0))))))
-
-
- ;; scm_to_mus_any
- (define-rt-ec <mus_any-*> rt_scm_to_mus_any (lambda (,rt-globalvardecl (<SCM> name))
- (if (mus_xen_p name)
- (return (cast <void-*> (XEN_TO_MUS_ANY name)))
- (if (not (SCM_SMOB_PREDICATE rt_readin_tag name))
- (begin
- (rt_error rt_globals (string "Variable is not a CLM generator or rt-readin generator"))
- (return NULL))
- (return (cast <void-*> (SCM_SMOB_DATA name)))))))
-
-
-
- ;; create-thread
- (define-rt-ec <void> rt_create_thread (lambda ((<ThreadFunc> func))
- "pthread_t _rt_thread={0}"
- (<int> isrunning 0)
- (<void-*> threadfunc (lambda ((<void-*> arg))
- (<ThreadFunc> dasfunc arg)
- (set! isrunning 1)
- (dasfunc)
- (return NULL)))
- (pthread_create &_rt_thread NULL threadfunc func)
- (while (not isrunning) ;; I'm not quite sure why...
- (usleep 50))
- ))
- (define-rt-macro (create-thread thunk)
- `(rt_create_thread ,thunk))
-
-
- (rt-ec-private-function <void-*> rt_alloc_old (lambda (,rt-globalvardecl (<int> size))
- (let* ((ret <void-*> rt_globals->allocplace)
- (alignment <int> (sizeof <long>))
- (new <char-*> (+= rt_globals->allocplace size)))
- "new = (char *) (((unsigned long) new + alignment - 1) & - alignment)"
- (set! rt_globals->allocplace new)
- ,(if (rt-is-safety?)
- `(if (>= rt_globals->allocplace rt_globals->allocplace_end)
- (rt_error rt_globals (string "Out of memory when calling rt_alloc.")))
- "/* */")
- (return ret))))
-
- (rt-ec-private-function <void*> rt_alloc (lambda (,rt-globalvardecl
- (<int> size))
- (return (tar_alloc rt_globals->heap size))))
-
- (rt-ec-private-function <void*> rt_alloc_atomic (lambda (,rt-globalvardecl
- (<int> size))
- (return (tar_alloc_atomic rt_globals->heap size))))
-
- (rt-ec-private-function <void-*> rt_alloc_zero (lambda (,rt-globalvardecl (<int> size))
- (let* ((ret <void-*> (rt_alloc_atomic rt_globals size)))
- ;;(memset ret 0 size)
- (return ret))))
-
- )
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;; Structs ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-(define-macro (=> object das-method . rest)
- (define method (keyword->symbol das-method))
- (define object-decomposed (map string->symbol (string-split (symbol->string object) #\:)))
- (let ()
- (define struct-name (car object-decomposed))
- (define object-name (if (null? (cdr object-decomposed))
- (car object-decomposed)
- (cadr object-decomposed)))
- `(,(append-various 'access- struct-name ":" method) ,object-name ,@rest)))
-
-
-(define-rt-macro (setter!-=> object das-method . rest)
- (define method (keyword->symbol das-method))
- (define object-decomposed (map string->symbol (string-split (symbol->string object) #\:)))
- (let ()
- (define struct-name (car object-decomposed))
- (define object-name (if (null? (cdr object-decomposed))
- (car object-decomposed)
- (cadr object-decomposed)))
- `(,(append-various 'setter!- struct-name ":" method) ,object-name ,@rest)))
-
-(define-rt-macro (=> object das-method)
- (if (or (not (symbol? object))
- (not (keyword? das-method)))
- (begin
- (c-display "Syntax error" `(=> ,object ,das-method))
- (throw 'syntax-error)))
- (let ()
- (define method (keyword->symbol das-method))
- (define object-decomposed (map string->symbol (string-split (symbol->string object) #\:)))
- (let ()
- (define struct-name (car object-decomposed))
- (define object-name (if (null? (cdr object-decomposed))
- (car object-decomposed)
- (cadr object-decomposed)))
- `(,(append-various 'getter- struct-name ":" method) ,object-name))))
-
-
-(define-macro (define-rt-something-struct something name . das-slots)
- (define name-name (rt-gensym))
- (define val-name (rt-gensym))
- (define slots '())
-
- (for-each (lambda (slot)
- (if (keyword? slot)
- (push-back! (list (append-various slot) 0) slots)
- (set-cdr! (last slots) (list slot))))
- das-slots)
-
- (let ((slot-names (map car slots)))
- `(begin
-
- ;; guile
- (define* (,(symbol-append 'make- name) :key ,@slots)
- (,something ,@slot-names))
- ,@(let ((i -1))
- (map-in-order (lambda (slot)
- (set! i (1+ i))
- `(define ,(append-various 'access- name ":" slot)
- (make-procedure-with-setter
- (lambda (,name-name)
- (,(symbol-append something '-ref) ,name-name ,i))
- (lambda (,name-name ,val-name)
- (,(symbol-append something '-set!) ,name-name ,i ,val-name)))))
- slot-names))
-
- ;; rt
- (define ,(rt-gensym)
- (list
- ,@(let ((i -1))
- (map-in-order (lambda (slot)
- (set! i (1+ i))
- `(define-rt (,(append-various 'setter!- name ":" slot) ,name-name ,val-name)
- (declare (<float> ,val-name))
- (,(symbol-append something '-set!) ,name-name ,i ,val-name)))
- slot-names))
- ,@(let ((i -1))
- (map-in-order (lambda (slot)
- (set! i (1+ i))
- `(define-rt (,(append-various 'getter- name ":" slot) ,name-name)
- (,(symbol-append something '-ref) ,name-name ,i)))
- slot-names)))))))
-
-(define-macro (define-rt-vct-struct name . das-slots)
- `(define-rt-something-struct vct ,name ,@das-slots))
-
-(define-macro (define-rt-vector-struct name . das-slots)
- `(define-rt-something-struct vector ,name ,@das-slots))
-
-
-#!
-(define-rt-vct-struct str
- :a 1
- :b)
-(set! (=> str:str) 200)
-(set! (=> str :b) 200)
-(=> str:str)
-(=> str :b)
-
-(macroexpand '(=> str:str :b))
-(macroexpand '(=> str :b))
-(rt-macroexpand '(=> str :b))
-(rt-macroexpand '(set! (=> str :b) 200))
-!#
-
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;; Various Macros and functions ;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define-rt-macro (inc! var how-much)
- `(begin
- (set! ,var (+ ,how-much ,var))
- ,var))
-
-(define-c-macro (the type somethingmore)
- (let ((c-type (hashq-ref rt-types type)))
- (if c-type
- `(cast ,(-> c-type c-type) ,somethingmore)
- `(cast ,type ,somethingmore))))
-
-(define-rt-macro (inexact->exact z)
- `(the <int> ,z))
-
-(define-rt-macro (exact->inexact z)
- `(the <float> ,z))
-
-(define-rt-macro (exact? expand/var)
- (cond ((number? var) (if (exact? var)
- 1
- 0))
- ((rt-immediate? var)
- `(is-type? <int> ,var))
- (else
- (let ((s (rt-gensym)))
- `(let ((,s ,var))
- (is-type? <int> ,s))))))
-
-(define-rt-macro (inexact? var)
- `(not (exact? ,var)))
-
-(define-rt-macro (number? var)
- (cond ((number? var) 1)
- ((rt-immediate? var)
- `(or (is-type? <int> ,var)
- (is-type? <float> ,var)
- (is-type? <double> ,var)))
- (else
- (let ((s (rt-gensym)))
- `(let ((,s ,var))
- (or (is-type? <int> ,s)
- (is-type? <float> ,s)
- (is-type? <double> ,s)))))))
-
-(define-rt-macro (string? var)
- (cond ((stringr? var) 1)
- ((rt-immediate? var)
- `(is-type? <char-*> ,var))
- (else
- (let ((s (rt-gensym)))
- `(let ((,s ,var))
- (is-type? <char-*> ,s))))))
-
-(define-rt-macro (- firstarg . rest)
- (if (null? rest)
- `(rt--/minusoneargument ,firstarg)
- `(rt--/- ,firstarg ,@rest)))
-(define-c-macro (rt--/minusoneargument a)
- `(- ,a))
-(define-c-macro (rt--/- . rest)
- `(- ,@rest))
-
-
-(rt-renamefunc expt pow <float> (<float> <float>))
-(rt-renamefunc abs fabsf <float> (<float>))
-
-(rt-renamefunc floor floorf <float> (<float>))
-(rt-renamefunc ceiling ceilf <float> (<float>))
-
-(rt-renamefunc logand & <int> (<int> <int>))
-(rt-renamefunc logior | <int> (<int> <int>))
-(rt-renamefunc lognot ~ <int> (<int>))
-
-(rt-renamefunc remainder % <int> (<int> <int>))
-
-
-;; < > <= >= =
-(for-each (lambda (op)
- (let ((rt-op (symbol-append 'rt- op))
- (rt-op2 (symbol-append 'rt-2 op))
- (rt-op3 (symbol-append 'rt-3 op)))
- (<rt-func> rt-op '<int> '(<float> <float>))
- (primitive-eval `(define-c-macro ,(cons rt-op 'rest)
- `(,',op ,@rest)))
- (primitive-eval `(define-rt-macro (,rt-op2 expand/a expand/b)
- (if (and (number? a)
- (number? b))
- (if (,op a b)
- 1
- 0)
- `(,',rt-op ,a ,b))))
- (primitive-eval `(define-rt-macro (,rt-op3 . rest)
- (let ((newvars '())
- (usevars '())
- (body #f))
- (for-each (lambda (var)
- (if (rt-immediate? var)
- (push! var usevars)
- (let ((newvarname (rt-gensym)))
- (push! (list newvarname var) newvars)
- (push! newvarname usevars))))
- rest)
- (set! body `(and ,@(map (lambda (first second)
- `(,',rt-op2 ,first ,second))
- (reverse (cdr usevars))
- (cdr (reverse usevars)))))
- (if (not (null? newvars))
- `(let ,(reverse newvars)
- ,body)
- body))))
-
- (primitive-eval `(define-rt-macro (,op . rest)
- (if (<= (length rest) 1)
- 1
- (if (= (length rest) 2)
- `(,',rt-op2 ,@rest)
- `(,',rt-op3 ,@rest)))))))
-
- '(< > <= >= =))
-
-(define-c-macro (rt-= a b)
- `(== ,a ,b))
-
-
-(define-rt-macro (zero? expand/z)
- (if (number? z)
- (if (= 0 z) 1 0)
- `(= 0 ,z)))
-
-(define-rt-macro (positive? expand/z)
- (if (number? z)
- (if (> z 0) 1 0)
- `(> ,z 0)))
-
-(define-rt-macro (negative? expand/z)
- (if (number? z)
- (if (< z 0) 1 0)
- `(< ,z 0)))
-
-
-
-;; modulo-logic picked up from snd-run.c
-(define-rt-macro (modulo a b)
- (let ((x (rt-gensym))
- (y (rt-gensym))
- (z (rt-gensym)))
- `(let* ((,x (the <int> ,a))
- (,y (the <int> ,b))
- (,z (the <int> (remainder ,x ,y))))
- (if (or (and (negative? ,y)
- (positive? ,z))
- (and (positive? ,y)
- (negative? ,z)))
- (+ ,z ,y)
- ,z))))
-#!
-(define-rt-macro (modulo a b)
- (let ((x (rt-gensym))
- (y (rt-gensym))
- (z (rt-gensym)))
- `(let* ((,x ,a)
- (,y ,b)
- (,z (remainder ,x ,y)))
- (if (or (and (negative? ,y)
- (positive? ,z))
- (and (positive? ,y)
- (negative? ,z)))
- (+ ,z ,y)
- ,z))))
-!#
-
-(define-c-macro (rt-/// . rest)
- `(/ ,@rest))
-(define-rt-macro (quotient a b)
- `(rt-/// (the <int> ,a) (the <int> ,b)))
-(define-rt-macro (/% a b)
- `(quotient ,a ,b))
-(define-rt-macro (/ a . b)
- (cond ((null? b)
- `(rt-/// 1.0 (the <float> ,a)))
- ((not (null? (cdr b)))
- `(/ (rt-/// (the <float> ,a) (the <float> ,(car b))) ,@(cdr b)))
- (else
- `(rt-/// (the <float> ,a) (the <float> ,(car b))))))
-
-#!
-(define-rt-macro (/ a . b)
- (cond ((null? b)
- `(rt-/// 1.0 (the <double> ,a)))
- ((not (null? (cdr b)))
- `(/ (rt-/// (the <double> ,a) (the <double> ,(car b))) ,@(cdr b)))
- (else
- `(rt-/// (the <double> ,a) (the <double> ,(car b))))))
-!#
-
-
-(define-rt-macro (odd? n)
- `(remainder ,n 2))
-(define-rt-macro (even? n)
- `(not (odd? ,n)))
-
-
-
-;; truncate-logic picked up from snd-run.c
-(define-rt-macro (truncate expand/a)
- (if (rt-immediate? a)
- `(if (negative? ,a)
- (- (floor (- ,a)))
- (floor ,a))
- (let ((x (rt-gensym)) )
- `(let ((,x ,a))
- (if (negative? ,x)
- (- (floor (- ,x)))
- (floor ,x))))))
-
-;; round-logic picked up from snd-run.c (I'm not sure this one works correctly, because of the "/"-casting)
-(define-rt-macro (round a)
- (let ((plus_half (rt-gensym))
- (result (rt-gensym)))
- `(let* ((,plus_half (+ ,a 0.5))
- (,result (floor ,plus_half)))
- (if (and (= ,plus_half ,result)
- (not (= (/ ,plus_half 2) (floor (/ ,plus_half 2)))))
- (- ,result 1)
- ,result))))
-
-
-;;logxor-logic picked up from snd-run.c
-(define-rt-macro (logxor expand/x expand/y)
- (if (and (number? x)
- (number? y))
- (logxor x y)
- (if (rt-immediate? x y)
- `(logand (lognot (logand ,x ,y))
- (logior ,x ,y))
- (let ((a (rt-gensym))
- (b (rt-gensym)))
- `(let* ((,a ,x)
- (,b ,y))
- (logand (lognot (logand ,a ,b))
- (logior ,a ,b)))))))
-
-
-;;ash-logic picked up from snd-run.c
-(define-rt-macro (ash expand/a expand/b)
- (if (and (number? a)
- (number? b))
- (ash a b)
- (if (rt-immediate? a b)
- `(if (>= ,b 0)
- (rt-ash/<< ,a ,b)
- (rt-ash/>> ,a ,(if (number? b)
- (- b)
- `(- ,b))))
- (let ((arg1 (rt-gensym))
- (arg2 (rt-gensym)))
- `(let* ((,arg1 ,a)
- (,arg2 ,b))
- (if (>= ,arg2 0)
- (rt-ash/<< ,arg1 ,arg2)
- (rt-ash/>> ,arg1 (- ,arg2))))))))
-(define-c-macro (rt-ash/<< a b)
- `(<< ,a ,b))
-(define-c-macro (rt-ash/>> a b)
- `(>> ,a ,b))
-
-(rt-renamefunc mus-random mus_random <float> (<float>))
-(rt-renamefunc random mus_frandom <float> (<float>))
-(rt-renamefunc random mus_irandom <float> (<float>))
-(define-rt-macro (random expand/val)
- `(if (exact? ,val)
- (rt-random/mus_irandom ,val)
- (rt-random/mus_frandom ,val)))
-
-
-(define-rt-macro (max . expand/rest)
- (define (expand rest)
- (if (= 1 (length rest))
- (car rest)
- `(rt-max/MAX ,(expand (cdr rest)) ,(car rest))))
- (if (null? rest)
- (begin
- (c-display "Error. \"max\" expect at least one argument: (max).")
- #f)
- (if (= 1 (length rest))
- (car rest)
- (let ((number-args '())
- (rest-args '())
- (new-args '())
- (varnames '()))
- (for-each (lambda (arg)
- (if (rt-immediate? arg)
- (begin
- (push! arg number-args )
- (push! arg new-args))
- (begin
- (push! arg rest-args)
- (push! (rt-gensym) varnames)
- (push! (car varnames) new-args))))
- rest)
- (set! number-args (reverse! number-args))
- (set! rest-args (reverse! rest-args))
- (set! new-args (reverse! new-args))
- (set! varnames (reverse! varnames))
- (if (null? rest-args)
- (expand number-args)
- `(let* ,(map list
- varnames
- rest-args)
- ,(expand new-args)))))))
-(define-c-macro (rt-max/MAX a b)
- `(MAX ,a ,b))
-
-(define-rt-macro (min . expand/rest)
- (define (expand rest)
- (if (= 1 (length rest))
- (car rest)
- `(rt-min/MIN ,(expand (cdr rest)) ,(car rest))))
- (if (null? rest)
- (begin
- (c-display "Error. \"min\" expect at least one argument: (min)")
- #f)
- (if (= 1 (length rest))
- (car rest)
- (let ((number-args '())
- (rest-args '())
- (new-args '())
- (varnames '()))
- (for-each (lambda (arg)
- (if (rt-immediate? arg)
- (begin
- (push! arg number-args )
- (push! arg new-args))
- (begin
- (push! arg rest-args)
- (push! (rt-gensym) varnames)
- (push! (car varnames) new-args))))
- rest)
- (set! number-args (reverse! number-args))
- (set! rest-args (reverse! rest-args))
- (set! new-args (reverse! new-args))
- (set! varnames (reverse! varnames))
- (if (null? rest-args)
- (expand number-args)
- `(let* ,(map list
- varnames
- rest-args)
- ,(expand new-args)))))))
-
-(define-c-macro (rt-min/MIN a b)
- `(MIN ,a ,b))
-
-
-(define-rt-macro (and . expand/rest)
- (define (expand ret rest)
- (if (null? rest)
- ret
- (let ((var (car rest)))
- (if (number? var)
- (if (= 0 var)
- 0
- (expand var (cdr rest)))
- (if (rt-immediate? var)
- `(if ,var
- ,(expand var (cdr rest))
- 0)
- (let ((varname (rt-gensym)))
- `(let* ((,varname ,var))
- (if ,varname
- ,(expand varname (cdr rest))
- 0))))))))
-
- (expand 1 rest))
-
-
-(define-rt-macro (or . expand/rest)
- (define (expand rest)
- (if (null? rest)
- 0
- (let ((var (car rest)))
- (if (number? var)
- (if (= 0 var)
- (expand (cdr rest))
- var)
- (if (rt-immediate? var)
- `(if ,var
- ,var
- ,(expand (cdr rest)))
- (let ((varname (rt-gensym)))
- `(let ((,varname ,var))
- (if ,varname
- ,varname
- ,(expand (cdr rest))))))))))
-
- (expand rest))
-
-
-
-
-(<rt-func> 'rt-or/|| '<int> '(<float>) #:min-arguments 1)
-(define-c-macro (rt-or/|| . rest)
- (if (null? (cdr rest))
- (car rest)
- `(|| ,@rest)))
-
-(<rt-func> 'rt-and/&& '<int> '(<float>) #:min-arguments 1)
-(define-c-macro (rt-and/&& . rest)
- (if (null? (cdr rest))
- (car rest)
- `(&& ,@rest)))
-
-;; if is a macro, rt-if is a special form
-(define-rt-macro (if a b . c)
- (if (> (length c) 1)
- (begin
- (apply c-display (append (list "Too many arguments for if:" a b) c))
- #f)
- (let ((ae (rt-macroexpand a)))
- (if (number? ae)
- (if (= 0 ae)
- (if (null? c)
- '(rt-dummy/dummy)
- (car c))
- b)
- (begin
- (if (list? a)
- (cond ((eq? 'or (car a))
- (set! ae (cons 'rt-or/|| (cdr a))))
- ((eq? 'and (car a))
- (set! ae (cons 'rt-and/&& (cdr a))))))
- (if (null? c)
- `(rt-if ,ae ,b (rt-dummy/dummy))
- `(rt-if ,ae ,b ,(car c))))))))
-
-(define-c-macro (rt-if . rest)
- `(?kolon ,@rest))
-
-(define-rt-macro (when a . b)
- `(if ,a
- (begin
- ,@b)))
-
-(define (rt-cond->if terms)
- (let ((term (car terms)))
- (if (and (symbol? (car term))
- (eq? 'else (car term)))
- (cons 'begin_p (cdr term))
- (if (not (null? (cdr terms)))
- (list 'if (car term)
- (append (list 'begin_p) (cdr term))
- (rt-cond->if (cdr terms)))
- (list 'if (car term)
- (append (list 'begin_p) (cdr term)))))))
-
-(define-rt-macro (cond . terms)
- (rt-cond->if terms))
-
-
-;; Note the 'else hack here. Unless the case block has an else, '(else 0) is added at the end. (@$#@! static typing)
-(define-rt-macro (case key . terms)
- (let ((das-key (rt-gensym)))
- `(let ((,das-key ,key))
- (cond ,@(map (lambda (term)
- (let ((datums (car term))
- (expr (cdr term)))
- (if (eq? 'else datums)
- term
- `((or ,@(map (lambda (datum)
- `(= ,das-key ,datum))
- datums))
- ,@expr))))
- (if (eq? 'else (car (last terms)))
- terms
- (append terms (list '(else 0)))))))))
-
-;; begin and begin_p are macros, while rt-begin is a special form
-(define-rt-macro (begin . rest)
- `(begin_p ,@rest))
-
-(define-rt-macro (begin_p . rest)
- `(rt-begin ,@rest))
-
-(define-c-macro (rt-begin . rest)
- `(begin_p ,@rest))
-
-
-
-#|
-(define-rt-macro (while test . body)
- (let ((whilefunc (rt-gensym))
- (dasfunc (rt-gensym)))
- `(let* ((,whilefunc (lambda ()
- (let* ((_rt_breakcontsig 0)
- (,dasfunc (lambda ()
- (rt-while ,test
- (begin
- ,@body)))))
- (if (< (rt-setjmp/setjmp _rt_breakcontsig) 2)
- (,dasfunc))))))
- (,whilefunc))))
-
-
-(define-rt-macro (while test . body)
- `(let loop ()
- (if ,test
- (begin
- ,@body
- (loop)))))
-;; `(rt-while ,test ,@body))
-
-(define-rt-macro (while test . body)
- `(let ((bodyfunc (lambda ()
- ,@body)))
- (rt-while ,test
- (bodyfunc))))
-
-; (begin
-; ,@body))
-
-|#
-
-
-(define-rt-macro (while test . body)
- (let ((whilefunc (rt-gensym)))
- `(let ((,whilefunc (lambda ()
- (rt-while ,test
- (begin
- ,@body)))))
- (,whilefunc))))
-
-
-
-
-
-
-
-#|
-(define-rt-macro (while test . body)
- (define (rec-search term)
- (call-with-current-continuation
- (lambda (return)
- (define (search term)
- (cond ((eq? '_rt_breakcontsig term)
- (return #t))
- ((list? term)
- (for-each search term))))
- (search term)
- #f)))
- (let ((test (rt-macroexpand test))
- (body (map rt-macroexpand body)))
- (if (rec-search (cons test body))
- `(let* ((_rt_breakcontsig 0))
- (if (< (rt-setjmp/setjmp _rt_breakcontsig) 2)
- (rt-while ,test
- ,@body)))
- `(rt-while ,test
- ,@body))))
-|#
-
-(define-c-macro (rt-while test . body)
- `(while ,test ,@body))
-(define-c-macro (rt-setjmp/setjmp das-sig)
- `(setjmp ,das-sig))
-
-(rt-renamefunc rt-longjmp longjmp <void> (<jmp_buf> <int>))
-
-(define-rt-macro (catch throw-name code . throw-code)
- (set! throw-name (<_> '_rt_breakcontsig throw-name))
- `(let ((,throw-name 0))
- (if (= 0 (rt-setjmp/setjmp ,throw-name))
- (,code)
- ,@(if (or (null? throw-code)
- (not (car throw-code)))
- '()
- `((,(car throw-code)))))))
-
-(define-rt-macro (throw throw-name)
- (set! throw-name (<_> '_rt_breakcontsig throw-name))
- `(rt-longjmp ,throw-name 1))
-
-#!
-(<rt-play> (lambda ()
- (catch aiai
- (lambda ()
- (printf "gakk gakk\\n")
- (throw aiai)
- (printf "gakk gakk2\\n")))
- (printf "Yes, I got here.\\n")
- (remove-me)))
-(<rt-play> (lambda ()
- (catch aiai
- (lambda ()
- (printf "gakk gakk\\n")
- (throw aiai)
- (printf "gakk gakk2\\n"))
- #f)
- (printf "Yes, I got here.\\n")
- (remove-me)))
-(<rt-play> (lambda ()
- (catch aiai
- (lambda ()
- (printf "gakk gakk\\n")
- (throw aiai)
- (printf "gakk gakk2\\n"))
- (lambda ()
- (printf "Yes, I got here. Certainly no gakk gakk2.\\n")))
- (remove-me)))
-!#
-
-#|
-;; Implementaions for these are just hacks.
-(define-rt-macro (break)
- `(rt-break/longjmp _rt_breakcontsig))
-(define-c-macro (rt-break/longjmp das-sig)
- `(longjmp ,das-sig 2))
-(define-rt-macro (continue)
- `(rt-continue/longjmp _rt_breakcontsig))
-(define-c-macro (rt-continue/longjmp das-sig)
- `(longjmp ,das-sig 1))
-|#
-
-
-(define-rt-macro (do variables test . commands)
- `(let ,(map (lambda (variable) (list (car variable) (cadr variable)))
- variables)
- (while (not ,(car test))
- ,@commands
- ,@(map (lambda (variable)
- `(set! ,(car variable) ,(caddr variable)))
- (remove (lambda (var) (null? (caddr var)))
- variables)))
- ,@(cdr test)))
-
-(<rt-func> 'rt-add-int! '<int> '(<int> <int>))
-(define-c-macro (rt-add-int! var inc)
- (<-> (eval-c-parse var)
- (if (number? inc)
- (if (= 1 inc)
- "++"
- (if (= -1 inc)
- "--"
- (<-> "+=" (eval-c-parse inc))))
- (<-> "+=" (eval-c-parse inc)))))
-
-(define-rt-macro (range varname start end . body)
- (let ((das-end (rt-gensym))
- (das-add (rt-gensym))
- (whilefunc (rt-gensym)))
- (if (list? varname)
- (begin
- (set! das-add (cadr varname))
- (set! varname (car varname))))
- (if (or (number? das-add)
- (and (number? start)
- (number? end)))
- (let ((das-add (if (number? das-add)
- das-add
- (if (> end start) 1 -1))))
- `(let* ((,whilefunc (lambda (,varname ,das-end)
- (declare (<int> ,varname ,das-end))
- (rt-while (not (= ,varname ,das-end))
- ,@body
- (rt-add-int! ,varname ,das-add)))))
- (,whilefunc ,start ,end)))
- `(let* ((,das-end ,end)
- (,varname ,start))
- (declare (<int> ,das-end ,varname))
- (if (> ,das-end ,start)
- (while (not (= ,varname ,das-end))
- ,@body
- (rt-add-int! ,varname 1))
- (while (not (= ,varname ,das-end))
- ,@body
- (rt-add-int! ,varname -1)))))))
-
-(define-rt-macro (rt-range2 varname start end inc . body)
- `(range ,(list varname inc) ,start ,end ,@body))
-
-
-#!
-(rt-funcall (rt-2 '(lambda (s)
- (range i -2 0
- (printf "%f\\n" (+ s i)))
- (range i 5 10
- (printf "%f\\n" (+ s i)))))
- 5)
-
-!#
-
-#|
-;; This is bad. Return-values from continuations shouldn't be limited to floats only. (Type is set immediately for let-variables)
-;; void-returning functions aren't supported.
-(define-rt-macro (call-with-current-continuation func)
- (let ((res (rt-gensym))
- (thunk (rt-gensym)))
- `(let* ((_rt_breakcontsig 0)
- (,res 0.0)
- (,(caadr func) (lambda (retval)
- (set! ,res retval)
- (break)))
- (,thunk (lambda ()
- ,@(cddr func))))
- (if (= (rt-setjmp/setjmp _rt_breakcontsig) 0)
- (set! ,res (,thunk)))
- ,res)))
-|#
-
-
-
-(define-rt-macro (printf string . rest)
- `(begin
- (debug "Warning: printf might cause snd-rt to crash. Use \"debug\" instead.")
- (rt-printf/fprintf ,string ,@rest)))
-(define-c-macro (rt-printf/fprintf string . rest)
-;; `(listener_append ,string))
- `(fprintf stderr ,string ,@rest))
-(<rt-func> 'rt-printf/fprintf '<int> '(<char-*> <float>) #:min-arguments 1)
-
-
-(define-rt-macro (infix-f t)
- t)
-(define-rt-macro (infix-b t)
- `(* ,*rt-block-size* ,t))
-(define-rt-macro (infix-ms t)
- `(inexact->exact (floor (/ (* ,t ,(rte-samplerate))
- 1000))))
-(define-rt-macro (infix-s t)
- `(* ,(inexact->exact (rte-samplerate)) ,t))
-(define-rt-macro (infix-m t)
- `(* ,(* 60 (inexact->exact (rte-samplerate))) ,t))
-(define-rt-macro (infix-h t)
- `(* ,(* 60 60 (inexact->exact (rte-samplerate))) ,t))
-
-
-(define-macro (infix-f t)
- `(/ t (rte-samplerate)))
-(define-macro (infix-b t)
- `(/ (* ,*rt-block-size* ,t) (rte-samplerate)))
-(define-macro (infix-ms t)
- `(/ ,t 1000))
-(define-macro (infix-s t)
- t)
-(define-macro (infix-m t)
- `(* 60 ,t))
-(define-macro (infix-h t)
- `(* 60 60 ,t))
-
-
-
-;; let is implemented as a macro to easier be able to support named let. The real name for non-named let is rt-let/let*
-(define-rt-macro (let a b . c)
- (if (not (symbol? a))
- `(rt-let/let* ,a ,b ,@c)
- `(letrec ((,a (lambda ,(map car b) ;; Named let
- ,@c)))
- (,a ,@(map cadr b)))))
-
-
-(<rt-func> 'rt-dummy/dummy '<void> '())
-(define-c-macro (rt-dummy/dummy)
- "/* */")
-
-(define-c-macro (rt-remove-me)
- "rt_globals->remove_me=1")
-(rt-renamefunc remove-me rt-remove-me <void> ())
-
-(define-rt (scale x x1 x2 y1 y2)
- (declare (<float> x x1 x2 y1 y2))
- (+ y1 (/ (* (- x x1)
- (- y2 y1))
- (- x2 x1))))
-
-
-;; Oh, horror. This implemenation is ugly...
-;; '(a b c) -> '( (a b c) (a c) (a b) (a) (b c) (b) (c) ())
-(define (permutate alist)
- (cond ((null? alist)
- (list '()))
- ((<= (length alist) 1)
- (list alist '()))
- (else
- (let ((ret (list (list (car alist))))
- (alist2 (list (list (last alist)))))
- (for-each (lambda (s)
- (push! (cons s (car alist2))
- alist2))
- (cdr (reverse (cdr alist))))
- ;;(set! alist2 (append! alist2 (list '())))
- (for-each (lambda (s rest)
- (set! ret (append ret (permutate rest)))
- (for-each (lambda (r)
- (push! (cons s r) ret))
- (permutate rest)))
- alist
- alist2)
- (delete-duplicates! ret)))))
-
-
-#!
-(begin
- (define a-val a)
- (define b-val b)
- (cond ((and (rt-immidiate? a)
- (rt-immidiate? b))
- (let ((a (gensym))
- (b (gensym)))
- ...))
- ((and (rt-immidiate? a)
- (not (rt-immidiate? b)))
- (let ((a (gensym)))
- ...))
- ((and (not (rt-immidiate? a))
- (rt-immidiate? b))
- (let ((b (gensym)))
- ...))
- (else
- (begin
- ...))))
-!#
-
-(define-macro (rt-automate-immediate . rest)
- (let* ((vars (c-butlast rest))
- (tempvars (map (lambda (var)
- (cons var (rt-gensym)))
- vars))
- (body (last rest))
- (perm (permutate vars)))
- (c-display "vars/body" vars body perm)
- `(cond ,@(map (lambda (immediates)
- (if (null? immediates)
- `(else ,body)
- `( (and ,@(map (lambda (var)
- (if (member var immediates)
- `(rt-immediate? ,var)
- `(not (rt-immediate? ,var))))
- vars))
- (let ,(append (map (lambda (im)
- `(list ,(cdr (assq im tempvars)) ,im))
- immediates)
- (map (lambda (im)
- `(list ,im `(rt-gensym)))
- immediates))
- `(let ,(map (lambda (im)
- (c-display "tempvars:" ,tempvars)
- (let ((n (cdr (assq im ,tempvars))))
- (list im n)))
- ',immediates)
- ,,body)))))
- perm))))
-
-#!
-(define-macro (ai a b)
- (rt-automate-immediate a
- `(+ ,a ,b)))
-
-(macroexpand '(ai 9 3))
-
-(macroexpand '(rt-automate-immediate a
- `(+ 2 5)))
-(begin `,`(+ 2 3))
-
-(cond ((and (rt-immediate? a))
- (let ((rt_gen45 a)
- (a (rt-gensym)))
- (quasiquote (let (unquote (map (lambda (im)
- (let ((n (cdr (assq im ((a . rt_gen45))))))
- (quasiquote (list (unquote im) (unquote n)))))
- (quote (a))))
- (unquote (quasiquote (+ 2 5)))))))
- (else
- (quasiquote (+ 2 5))))
-
-
-(cond ((and (rt-immediate? a))
- (let ((rt_gen24 a)
- (a (rt-gensym))
- (varnames (map (lambda (im)
- (let ((n (cdr (assq im tempvars))))
- (list im n)))
- (a))))
- (quasiquote (let (unquote (map (lambda (s) (list (car s) (cadr s))) varnames)) (unquote (quasiquote (+ (unquote a) 5))))))) (else (quasiquote (+ (unquote a) 5))))
-
-(let ((newbody `(+ ,a 5)))
- (cond ((and (rt-immediate? a))
- (let ((rt_gen152 a)
- (a (rt-gensym))
- (varnames ((a rt_gen152))))
- `(let ,(map (lambda (s)
- (list (car s) (cadr s)))
- varnames)
- ,newbody)))
- (else
- `(+ ,a 5))))
-!#
-
-
-#!
-
-(define-rt-macro (vector-ref expand/vec expand/pos)
- (if (rt-is-safety?)
- (rt-automate-immediate vec pos
- `(begin
- (if (not (vector? ,vec))
- (rt-error "ai" "Operation vector-ref failed because first argument is not a vector."))
- (if (>= ,pos (vector-length ,vec))
- (rt-error "Operation vector-ref failed because the length of the vector is to small"))
- (rt-vector-ref/vector-ref ,vec (rt-castint/castint ,pos))))
- `(rt-vector-ref/vector-ref ,vec (rt-castint/castint ,pos))))
-!#
-
-
-;; VECTORS
-
-(rt-renamefunc vector? SCM_VECTORP <int> (<SCM>))
-(rt-renamefunc vector-length SCM_VECTOR_LENGTH <int> (<SCM>))
-
-(define-rt-macro (vector-ref expand/vec expand/pos)
- (if (rt-is-safety?)
- (if (not (rt-immediate? vec pos))
- (let ((das-vec (rt-gensym))
- (das-pos (rt-gensym)))
- `(let ((,das-vec ,vec)
- (,das-pos ,pos))
- (if (not (vector? ,das-vec))
- (rt-error ,(<-> "Operation vector-ref failed because first argument is not a vector. " (format #f "vector name: ~A pos: ~A" vec pos))))
- (if (>= ,das-pos (vector-length ,das-vec))
- (rt-error "Operation vector-ref failed because the length of the vector is to small"))
- (rt-vector-ref/vector-ref ,das-vec (rt-castint/castint ,das-pos))))
- `(begin
- (if (not (vector? ,vec))
- (rt-error ,(<-> "Operation vector-ref failed because first argument is not a vector. " (format #f "vector name: ~A pos: ~A" vec pos))))
- (if (>= ,pos (vector-length ,vec))
- (rt-error "Operation vector-ref failed because the length of the vector is to small"))
- (rt-vector-ref/vector-ref ,vec (rt-castint/castint ,pos))))
- `(rt-vector-ref/vector-ref ,vec (rt-castint/castint ,pos))))
-
-(define-c-macro (rt-vector-ref/vector-ref vec pos)
- `(SCM_VECTOR_REF ,vec ,pos))
-(<rt-func> 'rt-vector-ref/vector-ref '<SCM> '(<SCM> <int>))
-
-
-
-
-;; PAIRS and LISTS
-
-(rt-renamefunc rt-car SCM_CELL_OBJECT_0 <SCM> (<SCM>))
-(rt-renamefunc rt-cdr SCM_CELL_OBJECT_1 <SCM> (<SCM>))
-
-(rt-renamefunc pair? SCM_CONSP <int> (<SCM>))
-(rt-renamefunc null? SCM_NULLP <int> (<SCM>))
-
-
-(define-rt-macro (car expand/p)
- (if (not (rt-is-safety?))
- `(rt-car ,p)
- (if (rt-immediate? p)
- `(begin
- (if (not (pair? ,p))
- (rt-error "Operation CAR failed because p is not a pair. (1)"))
- (rt-car ,p))
- (let ((s (rt-gensym)))
- `(let ((,s ,p))
- (if (not (pair? ,s))
- (rt-error "Operation CAR failed because p is not a pair. (2)"))
- (rt-car ,s))))))
-
-(define-rt-macro (cdr expand/p)
- (if (not (rt-is-safety?))
- `(rt-cdr ,p)
- (if (rt-immediate? p)
- `(begin
- (if (not (pair? ,p))
- (rt-error "Operation CDR failed because p is not a pair. (1)"))
- (rt-cdr ,p))
- (let ((s (rt-gensym)))
- `(let ((,s ,p))
- (if (not (pair? ,s))
- (rt-error "Operation CDR failed because p is not a pair. (2)"))
- (rt-cdr ,s))))))
-
-(define-rt-macro (cadr p)
- `(car (cdr ,p)))
-(define-rt-macro (caddr p)
- `(car (cdr (cdr ,p))))
-(define-rt-macro (cadddr p)
- `(car (cdr (cdr (cdr ,p)))))
-(define-rt-macro (caddddr p)
- `(car (cdr (cdr (cdr (cdr ,p))))))
-(define-rt-macro (cddr p)
- `(cdr (cdr ,p)))
-(define-rt-macro (cdddr p)
- `(cdr (cdr (cdr ,p))))
-(define-rt-macro (cddddr p)
- `(cdr (cdr (cdr (cdr ,p)))))
-(define-rt-macro (cdddddr p)
- `(cdr (cdr (cdr (cdr (cdr ,p))))))
-(define-rt-macro (cdadr p)
- `(cdr (car (cdr ,p))))
-(define-rt-macro (cdaddr p)
- `(cdr (car (cdr (cdr ,p)))))
-(define-rt-macro (cdadddr p)
- `(cdr (car (cdr (cdr (cdr ,p))))))
-(define-rt-macro (caar p)
- `(car (car ,p)))
-(define-rt-macro (caadr p)
- `(car (car (cdr ,p))))
-(define-rt-macro (caaddr p)
- `(car (car (cdr (cdr ,p)))))
-(define-rt-macro (caadddr p)
- `(car (car (cdr (cdr (cdr ,p))))))
-
-#!
-(define-rt (rt_length das-list n)
- (if (null? das-list)
- n
- (rt_length das-list (1+ n))))
-!#
-(define-rt (rt_length das-list n)
- (declare (<int> n))
- (while (not (null? das-list))
- (set! n (1+ n))
- (set! das-list (cdr das-list)))
- n)
-
-(define-rt-macro (length das-list)
- `(rt_length ,das-list 0))
-
-(define-rt (rt_list_ref das-list n)
- (while (> n 0)
- (set! das-list (cdr das-list))
- (set! n (1- n)))
- (car das-list))
-
-
-
-(define-rt-macro (list-ref das-list n)
- (define (help n)
- (if (= 0 n)
- das-list
- `(cdr ,(help (1- n)))))
- (if (and (number? n)
- (< number 8)
- (>= number 0))
- `(car ,(help n))
- `(rt_list_ref ,das-list ,n)))
-
-
-;; rt-insert-types is not designed correctly, therefore the declares of the lists and the ,funcname stuff. Shouldn't have been necesarry.
-(define-rt-macro (for-each func . lists)
- (let ((lnames (map (lambda (n) (rt-gensym)) (iota (length lists))))
- (funcname (rt-gensym)))
- `(let ((,funcname (lambda ,(cadr func)
- ,@(map (lambda (llist)
- `(declare (<SCM> ,llist)))
- (cadr func))
- ,@(cddr func)))
- ,@(map (lambda (lname llist)
- (list lname llist))
- lnames
- lists))
- ,@(map (lambda (llist)
- `(declare (<SCM> ,llist)))
- lists)
- (while (and ,@(map (lambda (lname)
- `(not (null? ,lname)))
- lnames))
- (,funcname ,@(map (lambda (lname)
- `(car ,lname))
- lnames))
- ,@(map (lambda (lname)
- `(set! ,lname (cdr ,lname)))
- lnames)))))
-
-
-#!
-(define l '(1 2 3 4))
-(define a (rt-2 '(lambda ()
- (for-each (lambda (n)
- (printf "%f\\n" (+ 100 n)))
- l))))
-(rt-funcall a)
-!#
-
-
-;; Beware that caching happens before macroexpanding!
-(define-rt-macro (unquote something)
- (local-eval something *rt-local-code-environment*))
-
-(define-rt-macro (include-guile-func name)
- (procedure-source (local-eval name *rt-local-code-environment*)))
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;; debug ;''''';;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-(define-rt-macro (debug string . rest)
- `(rt-debug ,string ,@rest))
-(define-c-macro (rt-debug string . rest)
- ;; `(listener_append ,string))
- `(rt_debug ,string ,@rest))
-(<rt-func> 'rt-debug '<void> '(<char-*> <float>) #:min-arguments 1)
-
-#!
-(<rt-play> (lambda ()
- (debug "hello2 %d %feee!" 50 60.0)))
-
-(eval-c ""
- (run-now
- (printf (string "len: %d\\n") (strlen (string "1234")))))
-!#
-
-;;define-rt-ec <void> debug
-;;(lambda (,rt-globalvardecl
-;; (<char-*> string))
-
-(eval-c ""
- "#include <stdarg.h>"
- "#include <jack/ringbuffer.h>"
- "#define MAXSTRING 4096"
-
- (<jack_ringbuffer_t*> rb)
- (run-now
- (set! rb (jack_ringbuffer_create 1024*64)))
-
- (<char> schemestring[MAXSTRING] "{0}")
-
- (public
- (<void> debug_scheme_thread (lambda ()
- (if (not (== 0 schemestring[0]))
- (scm_eval_string (MAKE_STRING schemestring)))))
- (<void> debug_scheme_reset_string (lambda ()
- (set! schemestring[0] 0))))
-
- (<void*> debug_thread (lambda ((<void*> arg))
- (<int> size 0)
- (<char> string[MAXSTRING])
- (while 1
- (while (>= (jack_ringbuffer_read_space rb) (sizeof <int>))
- (jack_ringbuffer_read rb (cast <void*> &size) (sizeof <int>))
- (while (< (jack_ringbuffer_read_space rb) size)
- (usleep 200))
- (jack_ringbuffer_read rb (cast <void*> string) size)
- (set! string[size] 0)
- (fprintf stderr (string "%s\\n") string))
- (usleep 1000000/4))
- (return NULL)))
-
- (<pthread_t> thread "{0}")
- (run-now
- (pthread_create &thread NULL debug_thread NULL))
-
- (<char> string[MAXSTRING]) ;; Can not put this one on a coroutine stack.
- (<nonstatic-void> rt_debug (lambda ((<const-char*> fmt)
- (<NOTHING> ...))
- (<int> size)
- (<va_list> argp)
- ;;(fprintf stderr fmt)
- (if (> (strlen fmt) (- MAXSTRING 256))
- (begin
- (fprintf stderr (string
- "Error. Debug string too large. Can not show string. First three letters: %c%c%c\\n")
- fmt[0] fmt[1] fmt[2])
- return))
-
- (va_start argp fmt)
- (vsprintf string fmt argp)
- (va_end argp)
- (set! size (strlen string))
-
- (when (not (strncmp (string "\\n/tmp/file") string (strlen (string "\\n/tmp/file"))))
- (sprintf schemestring (string "(display-stalin-error \\\"%s\\\")") string+1))
- (when (not (strncmp (string "/tmp/file") string (strlen (string "/tmp/file"))))
- ;;(fprintf stderr (string "(display-stalin-error \\\"%s\\\")") string)
- (sprintf schemestring (string "(display-stalin-error \\\"%s\\\")") string))
-
- (if (< (jack_ringbuffer_write_space rb) (+ (sizeof <int>) size))
- (begin
- (fprintf stderr (string
- "Error. Debug buffer is full. snd-rt might crash because of this (%s)\\n")
- string)
- return))
-
- (jack_ringbuffer_write rb (cast <void*> &size) (sizeof <int>))
- (jack_ringbuffer_write rb string size)))
-
- (public
- (<void> test-rt-debugger (lambda ()
- (rt_debug (string "/tmp/fileTYkBns.scm:18:462:"))
- (rt_debug (string "hello %d %f\\n") 50 2.3f)))))
-
-
-(let debug_scheme_loop ()
- (in 1000
- (lambda ()
- (catch #t
- (lambda ()
- (debug_scheme_thread))
- (lambda x
- (c-display "Error: " x)))
- (debug_scheme_reset_string)
- (debug_scheme_loop))))
-
-#!
-(test-rt-debugger)
-
-!#
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;; Output and Input ;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-(define-c-macro (rt-cast-float val)
- `(cast <float> ,val))
-(<rt-func> 'rt-cast-float '<float> '(<void>) #:min-arguments 1 #:is-immediate #t)
-(define-c-macro (rt-cast-vct val)
- `(cast <vct-*> ,val))
-(<rt-func> 'rt-cast-vct '<vct-*> '(<void>) #:min-arguments 1 #:is-immediate #t)
-
-
-
-(define-rt-macro (out . rest)
- (let* ((org-channels (c-butlast rest))
- (channels org-channels)
- (val (last rest)))
-
- (if (null? channels)
- (set! channels '(0 1)))
-
- (cond ((and (list? val)
- (or (eq? 'vct-scale! (car val))
- (eq? 'vct-offset! (car val))
- (eq? 'vct-fill! (car val))))
- `(out ,@org-channels ,(rt-macroexpand-1 val)))
-
- ((and (list? val)
- (eq? 'vct (car val)))
- (let ((ch (1- (car channels))))
- `(begin
- ,@(map (lambda (something)
- (set! ch (1+ ch))
- `(rt_write_bus out-bus ,ch ,something))
- (cdr val)))))
- ((not (symbol? val))
- (let ((new-val (rt-gensym)))
- `(let ((,new-val ,val))
- (out ,@org-channels ,new-val))))
- ((= 1 (length channels))
- `(if (is-type? <vct-*> ,val)
- (rt_write_bus_vct out-bus (rt-cast-vct ,val))
- (rt_write_bus out-bus ,(car channels) (rt-cast-float ,val))))
- ((= 0 (length org-channels))
- `(if (is-type? <vct-*> ,val)
- (rt_write_bus_vct out-bus (rt-cast-vct ,val))
- (begin
- (rt_write_bus out-bus 0 (rt-cast-float ,val))
- (rt_write_bus out-bus 1 (rt-cast-float ,val)))))
- (else
- `(begin
- ,@(map (lambda (ch)
- `(rt_write_bus out-bus ,ch ,val))
- channels))))))
-
-(define-rt-macro (in . channels)
- (if (null? channels)
- (set! channels '(0 1)))
- (if (= 1 (length channels))
- `(rt_read_bus in-bus ,(car channels))
- `(+ ,@(map (lambda (ch)
- `(rt_read_bus in-bus ,(car channels)))
- channels))))
-
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;; CLM/etc. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-;;;;;; CLM Generators ;;;;;;;;;;;;;;;
-
-;; This expressions is generated from code commented out in rt-stalin.scm
-;; This struct is hopefully just going to be a temporary solution.
-(define clm-constructor-protos
-'((make-all-pass
- #:feedback
- #:feedforward
- #:size
- #:initial-contents
- ;;(#:initial-element 0.0)
- #:max-size
- (#:type mus-interp-linear))
- (make-asymmetric-fm
- (#:frequency *clm-default-frequency*)
- (#:initial-phase 0.0)
- (#:r 1.0)
- (#:ratio 1.0))
- (make-comb
- #:scaler
- #:size
- #:initial-contents
- ;;(#:initial-element 0.0)
- #:max-size
- (#:type mus-interp-linear))
- (make-convolve #:input #:filter #:fft-size)
- (make-delay
- #:size
- #:initial-contents
- (#:initial-element 0.0)
- (#:max-size)
- (#:type mus-interp-linear))
- (make-env
- #:envelope
- (#:scaler 1.0)
- #:duration
- (#:offset 0.0)
- (#:base 1.0)
- #:end
- #:length)
- (make-fft-window
- type
- size
- #:optional
- (beta 0.0)
- (alpha 0.0))
- (make-file->frame
- filename
- #:optional
- buffer-size)
- (make-file->sample
- filename
- #:optional
- buffer-size)
- (make-filter #:order #:xcoeffs #:ycoeffs)
- (make-filtered-comb
- #:scaler
- #:size
- #:initial-contents
- (#:initial-element 0.0)
- #:max-size
- (#:type mus-interp-linear)
- #:filter)
- (make-fir-coeffs order v)
- (make-fir-filter #:order #:xcoeffs)
- (make-firmant #:frequency #:radius)
- (make-formant #:frequency #:radius)
- (make-frame chans val0 val1 ...)
- (make-frame->file
- filename
- #:optional
- chans
- data-format
- header-type
- comment)
- (make-granulate
- #:input
- (#:expansion 1.0)
- (#:length 0.15)
- (#:scaler 0.6)
- (#:hop 0.05)
- (#:ramp 0.4)
- (#:jitter 1.0)
- #:max-size
- #:edit)
- (make-iir-filter #:order #:ycoeffs)
- (make-locsig
- (#:degree 0.0)
- (#:distance 1.0)
- (#:reverb 0.0)
- (#:output *output*)
- (#:revout *reverb*)
- (#:channels 2) ;(mus-channels *output*))
- (#:type mus-interp-linear))
- (make-mixer chans val0 val1 ...)
- (make-move-sound
- dloc-list
- #:optional
- (out *output*)
- (rev *reverb*))
- (make-moving-average
- #:size
- #:initial-contents
- (#:initial-element 0.0))
- (make-ncos
- (#:frequency *clm-default-frequency*)
- (#:n 1))
- (make-notch
- #:scaler
- #:size
- #:initial-contents
- (#:initial-element 0.0)
- #:max-size
- (#:type mus-interp-linear))
- (make-nrxycos
- (#:frequency *clm-default-frequency*)
- (#:ratio 1.0)
- (#:n 1)
- (#:r 0.5))
- (make-nrxysin
- (#:frequency *clm-default-frequency*)
- (#:ratio 1.0)
- (#:n 1)
- (#:r 0.5))
- (make-nsin
- (#:frequency *clm-default-frequency*)
- (#:n 1))
- (make-one-pole #:a0 #:b1)
- (make-one-zero #:a0 #:a1)
- (make-oscil
- (#:frequency *clm-default-frequency*)
- (#:initial-phase 0.0))
- (make-phase-vocoder
- #:input
- #:fft-size
- #:overlap
- #:interp
- #:pitch
- #:analyze
- #:edit
- #:synthesize)
- (make-polyshape
- (#:frequency *clm-default-frequency*)
- (#:initial-phase 0.0)
- #:coeffs
- (#:partials (quote (1 1)))
- (#:kind mus-chebyshev-first-kind))
- (make-polywave
- (#:frequency *clm-default-frequency*)
- (#:partials (quote (1 1)))
- (#:type mus-chebyshev-first-kind))
- (make-pulse-train
- (#:frequency *clm-default-frequency*)
- (#:amplitude 1.0)
- (#:initial-phase 0.0))
- (make-rand
- (#:frequency *clm-default-frequency*)
- (#:amplitude 1.0)
- #:envelope
- #:distribution
- #:size)
- (make-rand-interp
- (#:frequency *clm-default-frequency*)
- (#:amplitude 1.0)
- #:envelope
- #:distribution
- #:size)
- (make-readin
- #:file
- (#:channel 0)
- (#:start 0)
- (#:direction 1)
- #:size)
- (make-sample->file
- filename
- #:optional
- chans
- data-format
- header-type
- comment)
- (make-sawtooth-wave
- (#:frequency *clm-default-frequency*)
- (#:amplitude 1.0)
- (#:initial-phase 0.0))
- (make-scalar-mixer chans value)
- (make-sine-summation
- (#:frequency *clm-default-frequency*)
- (#:initial-phase 0.0)
- (#:n 1)
- (#:a 0.5)
- (#:ratio 1.0))
- (make-square-wave
- (#:frequency *clm-default-frequency*)
- (#:amplitude 1.0)
- (#:initial-phase 0.0))
- (make-src #:input (#:srate 1.0) (#:width 10))
- (make-ssb-am
- (#:frequency *clm-default-frequency*)
- (#:order 40))
- (make-sum-of-cosines
- (#:cosines 1)
- (#:frequency *clm-default-frequency*)
- (#:initial-phase 0.0))
- (make-sum-of-sines
- (#:sines 1)
- (#:frequency *clm-default-frequency*)
- (#:initial-phase 0.0))
- (make-table-lookup
- (#:frequency *clm-default-frequency*)
- (#:initial-phase 0.0)
- #:wave
- (#:size (clm-table-size))
- #:type)
- (make-triangle-wave
- (#:frequency *clm-default-frequency*)
- (#:amplitude 1.0)
- (#:initial-phase 0.0))
- (make-two-pole
- #:a0
- #:b1
- #:b2
- or
- #:frequency
- #:radius)
- (make-two-zero
- #:a0
- #:a1
- #:a2
- or
- #:frequency
- #:radius)
- (make-wave-train
- (#:frequency *clm-default-frequency*)
- (#:initial-phase 0.0)
- #:wave
- (#:size (clm-table-size))
- #:type)
- (make-waveshape
- (#:frequency *clm-default-frequency*)
- (#:partials (quote (1 1)))
- (#:size (clm-table-size))
- #:wave)))
-
-
-;; clm constructors
-;;
-;; This is just a _very_ quick get-up-and-running implementation. More work is needed.
-(for-each (lambda (clm-def)
- ;;(c-display "clm-def" clm-def)
- (let* ((name (car clm-def)) ;; make-oscil
- (gen-name (string->symbol (substring (symbol->string name) 5 (string-length (symbol->string name))))) ;; oscil
- (args (cdr clm-def))
- (argnames (map (lambda x (rt-gensym)) (iota (length args))))
- (fixed-args-list (map (lambda (arg)
- (let ((def 0)
- (n #f))
- (if (pair? arg)
- (begin
- (set! n (car arg))
- (if (not (null? (cdr arg)))
- (set! def (primitive-eval (cadr arg)))))
- (set! n arg))
- (if (keyword? n)
- (set! n (keyword->symbol n)))
- (list n def)))
- args))
- )
-
- (supereval
- (lambda (out)
-
- (out "(define-rt-ec <mus_any-*> make_" gen-name "_ (lambda (")
- (for-each (lambda (arg)
- (out `(<float> ,arg)))
- argnames)
- (out ")(return (mus_make_" gen-name " ")
- (for-each (lambda (arg)
- (out " " arg))
- argnames)
- (out "))))\n")
-
- (out "(define-rt-macro " name)
- (out " (labamba (:optkey")
- (for-each (lambda (arg)
- (out arg " "))
- fixed-args-list)
- (out ")\n")
- (out " `(" 'make_ gen-name "_ ")
- (for-each (lambda (arg)
- (out "," (car arg) " "))
- fixed-args-list)
- (out ")))\n")))))
- clm-constructor-protos)
-
-#!
-(define-rt-ec <mus_any-*> make_oscil_
- (lambda ((<float> a)
- (<float> b))
- (return (mus_make_oscil a b))))
-
-(define-rt-macro (make-oscil :optkey
- (frequency *clm-default-frequency*)
- (initial-phase 0.0)
- freq)
- `(make_oscil_ ,(or freq frequency) ,initial-phase))
-!#
-
-(define rt-clm-generators `((all-pass (input (pm 0)))
- (asymmetric-fm (index (fm 0)))
- (comb (input (pm 0)))
- (convolve (input-function)) ;; redefined later
- (delay (input (pm 0)))
- (env ())
- (filter (input))
- (filtered-comb (input (pm 0)))
- (fir-filter (input))
- (formant (input))
- (granulate (input-function (edit-function 0))) ;; redefined later
- (iir-filter (input))
- ;;(in-any (
- (locsig (input)) ;; redefined later to use out instead of out-any
- ;;(move-sound (input)) ;; Lots of work to support.
- (moving-average (input))
- ,@(if (defined? 'ncos?) ;; Snd-ls uses an older version of Snd.
- '((ncos ((fm 0)))
- (nsin ((nsin 0)))
- (nrxysin ((fm 0)))
- (nrxycos ((fm 0)))
- ;(sine-summation ((fm 0)))
- (polywave ((index 1) (fm 0)))
- )
- '())
- (notch (input (pm 0)))
- (one-pole (input))
- (one-zero (input))
- (oscil ((fm 0) (pm 0)))
- ;;(out-any (
- (polyshape ((index 1) (fm 0)))
- (phase-vocoder (input-function analyze-function edit-function synthesize-function)) ;; redefined later
- (pulse-train ((fm 0)))
- (rand ((sweep 0)))
- (rand-interp ((sweep 0)))
- (readin ()) ;; Lots of things redefined later
- (sawtooth-wave ((fm 0)))
- (sine-summation ((fm 0)))
- (square-wave ((fm 0)))
- (src (sr-change input-function)) ;; redefined later
- (ssb-am ((insig 0) (fm 0)))
- (sum-of-cosines ((fm 0)))
- (sum-of-sines ((fm 0)))
- (table-lookup ((fm 0)))
- (tap ((offset 0)) delay)
- (triangle-wave ((fm 0)))
- (two-pole (input))
- (two-zero (input))
- (wave-train ((fm 0)))
- (waveshape ((index 1) (fm 0)))))
-
-(for-each (lambda (clm-generator)
- (let* ((name (car clm-generator)) ;; -> all-pass
- (name2 (symbol-append name '-internal)) ;; -> all-pass-internal
- (args (cadr clm-generator)) ;; (input (fm 0))
- (args1 (remove list? args)) ;; (input)
- (args2 (filter-org list? args)) ;; ((fm 0))
- (belongsto-name (if (= 3 (length clm-generator)) ;; all-pass (Third optional argument, Example: 'delay, because tap belongs to 'delay and not to 'tap.)
- (caddr clm-generator)
- name))
- (c-name (string->symbol ;; all_pass
- (list->string (map (lambda (c)
- (if (equal? #\- c) #\_ c))
- (string->list (symbol->string name))))))
- (c-belongsto-name (string->symbol ;; all_pass
- (list->string (map (lambda (c)
- (if (equal? #\- c) #\_ c))
- (string->list (symbol->string belongsto-name))))))
- (etype (symbol-append ;; -> <mus_all-pass-*>
- '<mus_ belongsto-name '-*>))
- (testfunc (primitive-eval ;; all-pass?
- (symbol-append belongsto-name '?)))
- (c-func (symbol-append 'mus_ c-name)) ;; mus_all_pass
- (macroname (symbol-append ;; -> rt-all-pass/mus_all_pass
- 'rt- name '/ c-func))
-
- (macro-belongsto-name (symbol-append ;; -> rt-all-pass/mus_all_pass
- 'rt- belongsto-name '/ c-func))
-
- (c-transformfuncname (symbol-append macro-belongsto-name '?)) ;; -> rt-all-pass/mus_all_pass?
- (c-transformfuncname2 (symbol-append 'mus_ c-belongsto-name '_p)) ;; -> all_pass_p
-
- )
-
- (if (eq? belongsto-name name)
- (<rt-type> etype testfunc c-transformfuncname #:c-type '<mus_any-*> #:transformfunc XEN_TO_MUS_ANY #:subtype-of '<mus_any-*>))
- (<rt-func> macroname '<float> (cons etype (map (lambda (a) '<float>) args)))
- (primitive-eval `(define-rt-macro (,name2 osc ,@args1 . rest)
- (if (> (length rest) ,(length args2))
- (begin
- (c-display "rt-macro, too many arguments for " ',name ":" rest)
- #f)
- (let ((n -1))
- (append (list ',macroname osc)
- (list ,@args1)
- (map (lambda (arg)
- (set! n (1+ n))
- (if (> (length rest) n)
- (list-ref rest n)
- arg))
- (list ,@(map cadr args2))))))))
- (primitive-eval `(define-rt-macro (,name . rest)
- (let ((args '())
- (make-extern-anyway #f))
- (define constructor-args
- (let loop ((rest rest))
- (cond ((null? rest) '())
- ((keyword? (car rest))
- (if (eqv? :extern (car rest))
- (begin
- (set! make-extern-anyway #t)
- (loop (cdr rest)))
- `(,(car rest) ,(cadr rest)
- ,@(loop (cddr rest)))))
- (else
- (set! args rest)
- '()))))
- ;;(c-display "constr/args" constructor-args args)
- (if (or (null? rest)
- make-extern-anyway
- (not (null? constructor-args)))
- `(,',name2 (extern (,(symbol-append 'make- ',name) ,@constructor-args))
- ,@args)
- `(,',name2 ,@rest)))))
-
- (primitive-eval `(define-c-macro (,macroname osc . rest)
- `(,',c-func ,osc ,@rest)))
- (if (eq? belongsto-name name)
- (begin
- (primitive-eval `(define-c-macro (,c-transformfuncname scm)
- (if (rt-is-safety?)
- `(?kolon (&& (mus_xen_p ,scm)
- (,',c-transformfuncname2 (XEN_TO_MUS_ANY ,scm)))
- (XEN_TO_MUS_ANY ,scm)
- (begin_p
- (rt_error rt_globals (string "Variable is not a CLM generator (2)"))
- NULL))
- `(XEN_TO_MUS_ANY ,scm))))
- (<rt-func> c-transformfuncname etype '(<SCM>))
-
- ))))
-
- rt-clm-generators)
-
-
-(for-each (lambda (generator)
- (fix-defines
- (define basename (car generator))
- (define new-name (<_> basename '*))
- (define args (cadr generator))
- (define first-arg (and (not (null? args))
- (nth 0 args)))
- (when (equal? first-arg '(fm 0))
- (let ((makename (<_> 'make- basename)))
- (primitive-eval `(define ,makename ;; Set default frequency back to 440.
- (let ((old ,makename))
- (lambda rest
- (cond ((null? rest)
- (old :frequency 440))
- ((eqv? :freq (car rest))
- (apply old (cons :frequency (cdr rest))))
- (else
- (apply old rest))))))))
- (supereval (lambda (out)
- (out "(define-rt-macro " new-name)
- (out " (labamba (:optkey (frequency 440))")
- (out " (if (number? frequency)")
- (out " `(" basename " :frequency ,frequency)")
- (out " `(" basename " :frequency 0")
- (out " (hz->radians ,frequency)))))"))))))
- rt-clm-generators)
-
-
-#!
-(<rt-out> (oscil* (<slider> "freq" 0 200 5000 :log #t)))
-(<rt-out> (pulse-train* (<slider> "freq" 0 200 5000 :log #t)))
-(<rt-out> (sawtooth-wave* (<slider> "freq" 0 200 5000 :log #t)))
-(<rt-out> (sine-summation* (<slider> "freq" 0 200 5000 :log #t)))
-(<rt-out> (square-wave* (<slider> "freq" 0 200 5000 :log #t)))
-(<rt-out> (sum-of-cosines* (<slider> "freq" 0 200 5000 :log #t)))
-(<rt-out> (sum-of-sines* (<slider> "freq" 0 200 5000 :log #t)))
-(<rt-out> (triangle-wave* (<slider> "freq" 0 200 5000 :log #t)))
-(<rt-out> (table-lookup* (<slider> "freq" 0 200 5000 :log #t)))
-(<rt-out> (wave-train* (<slider> "freq" 0 200 5000 :log #t)))
-
-(<rt-out> (let* ((sos (extern (make-sum-of-sines :sines n)))
- (new-n (<slider> "num_cosines" 1 10 100 :scale 1)))
- (when (not (= (extern n 10) new-n))
- (set! n new-n)
- (set! (mus-length sos) n)
- (mus-reset sos))
- (sum-of-sines sos (hz->radians (<slider> "freq" 0 200 5000 :log #t)))))
-
-(define sos (make-sum-of-sines :sines 10))
-(mus-length sos)
-(set! (mus-length sos) 11)
-!#
-
-
-;;A more efficient implementation of oscil*:
-(define-rt-macro osci*
- (lambda* (:optional (frequency 440))
- (define phase (rt-gensym))
- (define ret (rt-gensym))
- (cond ((number? frequency)
- (let ((phaseinc (hz->radians frequency)))
- `(begin
- (declare (<double> ,phase))
- (set! ,phase (+ (extern ,phase (- ,phaseinc))
- ,phaseinc))
- (sin ,phase))))
- (else
- `(let ((,ret (sin (extern ,phase 0))))
- (declare (<double> ,phase))
- (set! ,phase (+ ,phase (hz->radians ,frequency)))
- ,ret)))))
-
-#!
-(hz->radians 20000)
-(rt-macroexpand '(osci))
-(<rt-out> (oscil* 900))
-(<rt-out> (oscil* (<slider> "freq" 0 400 1500 :log #t)))
-!#
-
-
-;;;;;; CLM Methods ;;;;;;;;;;;;;;;
-
-(for-each (lambda (descr)
- (let* ((returntype (car descr))
- (name (cadr descr))
- (args (cons '<mus_any-*> (caddr descr)))
- (n -1)
- (argnames (cons 'gen (map (lambda (arg)
- (set! n (1+ n))
- (symbol-append 'arg_ (string->symbol (number->string n))))
- (caddr descr))))
- (is-setter (and (> (length descr) 3) (cadddr descr)))
- (rt-name (if is-setter
- (symbol-append 'setter!-mus- (string->symbol (substring (symbol->string name) 4)))
- (symbol-append 'mus- name)))
- (c-name (symbol-append 'mus_ name))
- (funcname (if is-setter
- (symbol-append rt-name '/ c-name)
- (symbol-append 'rt- rt-name '/ c-name))))
- (<rt-func> funcname returntype args)
- (if (or (eq? name 'set_xcoeff)
- (eq? name 'xcoeff))
- (begin
- (rt-print "c-name" c-name)
- (rt-print "funcname" funcname)
- (rt-print "rt-name" rt-name)))
- (primitive-eval `(define-c-macro ,(cons funcname 'rest )
- `(,',c-name ,@rest)))
- (primitive-eval `(define-rt-macro ,(cons rt-name 'rest)
- `(,',funcname ,@rest)))))
- '((<int> release ())
- (<char-*> describe ())
- (<int> equalp (<mus_any-*>))
- (<float-*> data ())
- (<float-*> set_data (<float-*>) #t)
- (<int> length ())
- (<int> set_length (<int>) #t)
- (<float> frequency ())
- (<float> set_frequency (<float>) #t)
- (<float> phase ())
- (<float> set_phase (<float>) #t)
- (<float> scaler ())
- (<float> set_scaler (<float>) #t)
- (<float> increment ())
- (<float> set_increment (<float>) #t)
- (<float> run (<float> <float>))
- (<void-*> environ ())
- (<void-*> set_environ (<void-*>) #t)
- (<int> channels ())
- (<float> offset ())
- (<float> set_offset (<float>) #t)
- (<float> width ())
- (<float> set_width (<float>) #t)
- (<float> xcoeff (<int>))
- (<float> set_xcoeff (<int> <float>) #t)
- (<int> hop ())
- (<int> set_hop (<int>) #t)
- (<int> ramp ())
- (<int> set_ramp (<int>) #t)
- ;;(<int> read_sample (<int> <int>))
- ;;(<float> write_sample (<int> <int> <float>))
- (<char-*> file_name ())
- (<int> end ())
- (<int> location ())
- (<int> set_location (<int>) #t)
- (<int> channel ())
- (<float> ycoeff (<int>))
- (<float> set_ycoeff (<int> <float>) #t)
- (<float-*> xcoeffs ())
- (<float-*> ycoeffs ())
- ;;(<void-*> wrapper ())
- (<void> reset ())
- ))
-
-
-;; Remember to remove this when snd-ls is up to date with snd.
-;;(define old-make-env make-env)
-;;(define (make-env . rest)
-;; (if (pair? (car rest))
-;; (apply old-make-env (cons (flatten (car rest))
-;; (cdr rest)))
-;; (apply old-make-env rest)))
-
-;; mus-feedback
-(define-rt-macro (mus-feedback ins)
- `(mus-increment ,ins))
-(define-rt-macro (setter!-mus-feedback ins val)
- `(setter!-mus-increment ,ins ,val))
-
-;; mus-feedforward
-(define-rt-macro (mus-feedforward ins)
- `(mus-scaler ,ins))
-(define-rt-macro (setter!-mus-feedforward ins val)
- `(setter!-mus-scaler ,ins ,val))
-
-
-
-;; restart-env
-(rt-renamefunc restart-env mus_restart_env <void> (<mus_env-*>))
-;; env-interp
-(rt-renamefunc env-interp mus_env_interp <float> (<float> <mus_env-*>))
-
-
-;; polynomial
-(<rt-func> 'rt-polynomial/mus_polynomial '<float> '(<vct-*> <float>))
-(define-rt-macro (polynomial coeffs x)
- `(rt-polynomial/mus_polynomial ,coeffs ,x))
-(define-c-macro (rt-polynomial/mus_polynomial v x)
- (<-> "mus_polynomial(" (eval-c-parse v) "->data," (eval-c-parse x) "," (eval-c-parse v) "->length)"))
-
-;; fft
-(<rt-func> 'rt-mus-fft/mus_fft '<void> '(<vct-*> <vct-*> <int> <int>))
-(define-rt-macro (fft v1 v2 i1 i2)
- `(rt-mus-fft/mus_fft ,v1 ,v2 ,i1 ,i2))
-(define-c-macro (rt-mus-fft/mus_fft v1 v2 i1 i2)
- (<-> "mus_fft(" (eval-c-parse v1) "->data," (eval-c-parse v2) "->data," (eval-c-parse i1) "," (eval-c-parse i2) ")"))
-
-;; spectrum
-(<rt-func> 'rt-spectrum/mus_spectrum '<void> '(<vct-*> <vct-*> <vct-*> <int> <int>))
-(define-rt (spectrum v1 v2 v3 i1)
- (let ((n (max (vct-length v1)
- (vct-length v2)
- (vct-length v3))))
- (if (not (= 0 (logand (1- n) n)))
- (let* ((nf (/ (log n) 2.0))
- (np (the <int> nf)))
- (set! n (the <int> (expt 2.0 np)))))
- (rt-spectrum/mus_spectrum v1 v2 v3 i1 n)))
-
-(define-c-macro (rt-spectrum/mus_spectrum v1 v2 v3 i1 i2)
- (<-> "mus_spectrum(" (eval-c-parse v1) "->data," (eval-c-parse v2) "->data," (eval-c-parse v3) "->data," (eval-c-parse i1) "," (eval-c-parse i2) ")"))
-
-
-;; hz->radians
-;;;;;;;;;;;;;;
-;; Can't use this one, because mus-srate might differ:
-;; (rt-renamefunc hz->radians mus_hz_to_radians <float> (<float>))
-;; But this one should be fine: (Should probably compute w_rate and put it somewhere though.)
-(define-rt-macro (hz->radians hz)
- (if (number? hz)
- (* hz (/ (* pi 2) (-> *rt-engine* samplerate)))
- `(* ,hz ,(/ (* pi 2) (-> *rt-engine* samplerate)))))
-
-;; mus-srate
-;(<rt-func> 'mus-srate '<float> '() #:is-immediate #t)
-;(define-c-macro (mus-srate)
-; "rt_globals->samplerate")
-
-(define-rt-macro (mus-srate)
- (-> *rt-engine* samplerate))
-
-
-;; move-locsig
-(rt-renamefunc move-locsig mus_move_locsig <void> (<mus_locsig-*> <float> <float>))
-
-;; locsig-set!
-(rt-renamefunc locsig-set! mus_locsig_set <float> (<mus_locsig-*> <int> <float>))
-
-;; locsig-reverb-set!
-(rt-renamefunc locsig-reverb-set! mus_locsig_reverb_set <float> (<mus_locsig-*> <int> <float>))
-
-
-
-;, Locsig, or at least an attempt. I think its okey, but theres no reverb.
-(define-rt-macro (locsig loc val)
- (let ((dasval (rt-gensym))
- (i (rt-gensym)))
- `(let ((,dasval ,val))
- (range ,i 0 (mus-channels ,loc)
- (rt-set-locvals ,loc ,i ,dasval))
- (range ,i 0 (mus-channels (rt-get-loc-outf ,loc))
- (out ,i (rt-get-float-val (mus-data (rt-get-loc-outf ,loc)) ,i))))))
-
-(<rt-func> 'rt-set-locvals '<void> '(<mus_locsig-*> <int> <float>))
-(<rt-func> 'rt-set-loc-rev-vals '<void> '(<mus_locsig-*> <int> <float>))
-(define-c-macro (rt-set-locvals loc i val)
- (<-> "((locs*)" (eval-c-parse loc) ")->outf->vals[" (eval-c-parse i) "]=" (eval-c-parse val) "* ((locs*)" (eval-c-parse loc) ")->outn[" (eval-c-parse i) "]"))
-(define-c-macro (rt-set-loc-rev-vals loc i val)
- (<-> "((locs*)" (eval-c-parse loc) ")->revf->vals[" (eval-c-parse i) "]=" (eval-c-parse val) "* ((locs*)" (eval-c-parse loc) ")->revn[" (eval-c-parse i) "]"))
-
-(<rt-func> 'rt-get-float-val '<float> '(<float-*> <int>))
-(define-c-macro (rt-get-float-val float* place)
- (<-> (eval-c-parse float*) "[" (eval-c-parse place) "]"))
-
-(<rt-func> 'rt-get-loc-revf '<mus_any-*> '(<mus_locsig-*>))
-(define-c-macro (rt-get-loc-revf loc)
- (<-> "((locs*)" (eval-c-parse loc) ")->revf"))
-
-(<rt-func> 'rt-get-loc-outf '<mus_any-*> '(<mus_locsig-*>))
-(define-c-macro (rt-get-loc-outf loc)
- (<-> "(mus_any*)((locs*)" (eval-c-parse loc) ")->outf"))
-
-(<rt-func> 'rt-get-loc-rev-channels '<int> '(<mus_locsig-*>))
-(define-c-macro (rt-get-loc-rev-channels loc)
- (<-> (eval-c-parse loc) "->rev_chans"))
-
-(<rt-func> 'rt-get-environ '<void-*> '() #:is-immediate #t)
-(define-c-macro (rt-get-environ)
- "(void*)rt_globals")
-
-;; The marcros below aren't quite hygienic. Must fix.
-(begin
- ;; Src needs special treatment as well.
- (define-rt-macro (src gen sr-change input-function)
- (let ((ret (rt-gensym))
- (oldenv (rt-gensym))
- (das-gen (rt-gensym)))
- `(let* ((,ret 0.0)
- (,das-gen ,gen)
- (,oldenv (mus-environ ,das-gen)))
- ;;(declare (<mus_any-*> ,das-gen))
- (set! (mus-environ ,das-gen) (rt-get-environ))
- (set! ,ret (rt-mus-src/mus_src ,das-gen ,sr-change (lambda (dir)
- (declare (<int> dir))
- (the <float> (,input-function dir)))))
- (set! (mus-environ ,das-gen) ,oldenv)
- ,ret)))
- (<rt-func> 'rt-mus-src/mus_src '<float> '(<mus_src-*> <float> (<float> (<int>))))
- (define-c-macro (rt-mus-src/mus_src gen sr-change input-function)
- (<-> "mus_src(" (eval-c-parse gen) "," (eval-c-parse sr-change) ", (void*)" (eval-c-parse input-function) ")"))
-
- ;; Same for convolve
- (define-rt-macro (convolve gen input-function)
- (let ((ret (rt-gensym))
- (oldenv (rt-gensym))
- (das-gen (rt-gensym)))
- `(let* ((,ret 0.0)
- (,das-gen ,gen)
- (,oldenv (mus-environ ,das-gen)))
- (set! (mus-environ ,das-gen) (rt-get-environ))
- (set! ,ret `(rt-mus-convolve/mus_convolve ,das-gen (lambda (direction2)
- (declare (<int> direction2))
- (the <float> (,input-function direction2)))))
- (set! (mus-environ ,das-gen) ,oldenv)
- ,ret)))
-
- (<rt-func> 'rt-mus-convolve/mus_convolve '<float> '(<mus_convolve-*> (<float> (<int>))))
- (define-c-macro (rt-mus-convolve/mus_convolve gen input-function)
- (<-> "mus_convolve(" (eval-c-parse gen) ",(void*)" (eval-c-parse input-function) ")"))
-
-
- ;; And granulate
- (define-rt-macro (granulate gen input-function . rest)
- (let ((ret (rt-gensym))
- (oldenv (rt-gensym))
- (das-gen (rt-gensym)))
- `(let* ((,ret 0.0)
- (,das-gen ,gen)
- (,oldenv (mus-environ ,das-gen)))
- (set! (mus-environ ,das-gen) (rt-get-environ))
-
- ,(if (null? rest)
- `(set! ,ret (rt-mus-granulate/mus_granulate ,das-gen
- (lambda (arg2 direction2)
- (declare (<int> direction2)
- (<void-*> arg2))
- (the <float> (,input-function direction2)))))
- `(set! ,ret (rt-mus-granulate/mus_granulate_with_editor ,das-gen
- (lambda (direction2)
- (declare (<int> direction2))
- (the <float> (,input-function direction2)))
- (lambda ()
- (the <int> (,(car rest)))))))
- (set! (mus-environ ,das-gen) ,oldenv)
- ,ret)))
-
- (<rt-func> 'rt-mus-granulate/mus_granulate '<float> '(<mus_granulate-*> (<float> (<void-*> <int>))))
- (define-c-macro (rt-mus-granulate/mus_granulate gen input-function)
- (<-> "mus_granulate(" (eval-c-parse gen) ",(void*)" (eval-c-parse input-function) ")"))
- (<rt-func> 'rt-mus-granulate/mus_granulate_with_editor '<float> '(<mus_granulate-*> (<float> (<int>)) (<int> (<mus_any-*>))))
- (define-c-macro (rt-mus-granulate/mus_granulate_with_editor gen input-function edit-function)
- (<-> "mus_granulate_with_editor(" (eval-c-parse gen) ",(void*)" (eval-c-parse input-function) ",(void*)" (eval-c-parse edit-function) ")"))
-
-
- ;; And even phase-vocoder
- (define-rt-macro (phase-vocoder gen input-function (#:edit-function #f) (#:synthesize-function #f))
- (let ((ret (rt-gensym))
- (oldenv (rt-gensym))
- (das-gen (rt-gensym)))
- `(let* ((,ret 0.0)
- (,das-gen ,gen)
- (,oldenv (mus-environ ,das-gen)))
- (set! (mus-environ ,das-gen) (rt-get-environ))
- (set! ,ret (rt-mus-phase-vocoder/mus_phase_vocoder ,das-gen
- (lambda (dir2)
- (declare (<int> dir2))
- (the <float> (,input-function dir2)))
- ,(if edit-function
- `(lambda ()
- (the <int> (,edit-function)))
- `(rt-mus-pv/NULL1))
- ,(if synthesize-function
- `(lambda ()
- (the <float> (,synthesize-function)))
- `(rt-mus-pv/NULL2))))
- (set! (mus-environ ,das-gen) ,oldenv)
- ,ret)))
-
- (<rt-func> 'rt-mus-phase-vocoder/mus_phase_vocoder '<float> '(<mus_phase-vocoder-*> (<float> (<int>)) (<int> ()) (<float> ())))
- (define-c-macro (rt-mus-phase-vocoder/mus_phase_vocoder gen input-function edit-function synthesize-function)
- (<-> "mus_phase_vocoder_with_editors(" (eval-c-parse gen) ",(void*)" (eval-c-parse input-function)
- ",NULL,(void*)" (eval-c-parse edit-function) ",(void*)" (eval-c-parse synthesize-function) ")"))
- (<rt-func> 'rt-mus-pv/NULL1 '(<int>) '() #:is-immediate #t)
- (define-c-macro (rt-mus-pv/NULL1)
- "NULL")
- (<rt-func> 'rt-mus-pv/NULL2 '(<float> ()) '() #:is-immediate #t)
- (define-c-macro (rt-mus-pv/NULL2)
- "NULL")
-
- )
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Readin
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define-ec-struct <mus_rt_readin>
- <mus_any_class-*> core
- <void-*> readin_func ;; Pointer to the function rt_readin
- <void-*> buffer ;; Pointer to struct buffer.
- <int> channel
- <int> channels
- <mus_long_t> location
- <float> increment
- <mus_long_t> length
- <mus_any-*> readin
- <SCM> scm_readin)
-
-
-(eval-c (<-> "-I" snd-header-files-path " " (string #\`) "pkg-config --libs sndfile" (string #\`) )
- "#include <clm.h>"
- "#include <xen.h>"
- "#include <clm2xen.h>"
- "#include <sndfile.h>"
-
- (shared-struct <mus_rt_readin>)
-
- (define-struct <buffer>
- <void-*> buffer
- <struct-buffer-*> next
- <int> num_frames
- <int> num_visitors
- <void-*> readin_raw_func
- <int> channel
- <char> filename[500])
-
-
- ;;;;;; Buffer handling.
- ;;;;;; A buffer is only freed if no one is using it. Perhaps it should never be freed at all?
- (<struct-buffer-*> buffers NULL)
-
- (<struct-buffer-*> find_buffer (lambda ((<char-*> filename)
- (<int> channel))
- (let* ((buffer <struct-buffer-*> buffers))
- (while (not (== NULL buffer))
- (if (and (== buffer->channel channel)
- (not (strncmp buffer->filename filename 499)))
- (begin
- buffer->num_visitors++
- (return buffer)))
- (set! buffer buffer->next))
- (set! buffer (calloc 1 (sizeof <struct-buffer>)))
- (strncpy buffer->filename filename 499)
- (set! buffer->channel channel)
- (set! buffer->num_visitors 1)
- (set! buffer->next buffers)
- (set! buffers buffer)
- (return buffer))))
-
- (<void> free_buffer (lambda ((<struct-buffer-*> buffer))
- buffer->num_visitors--
- (if (== 0 buffer->num_visitors)
- (begin
- (free buffer->buffer)
- (set! buffer->buffer NULL)))))
-
-
- ;;;;;;; rt-readin
- "typedef float (*Callback)(void *,int pos)"
-
- (<float> get_byte (lambda ((<char-*> data)(<int> pos))
- (return (/ data[pos] 128.0f))))
- (<float> get_short (lambda ((<short-*> data)(<int> pos))
- (return (/ data[pos] 32768.0f))))
- (<float> get_float (lambda ((<float-*> data)(<int> pos))
- (return data[pos])))
-
- (<nonstatic-float> rt_readin (lambda ((<struct-mus_rt_readin-*> readin))
- (let* ((buffer <struct-buffer-*> readin->buffer)
- (callback <Callback> buffer->readin_raw_func)
- (ret <float> (?kolon (or (< readin->location 0)
- (>= readin->location readin->length))
- 0.0f
- (callback buffer->buffer readin->location))))
- ;;(fprintf stderr (string "dir: %d, pos: %d ret: %f\\n") dir pos ret)
- ;;(fprintf stderr (string "gakk2\\n"))
- (+= readin->location readin->increment)
- (return ret))))
-
- (public
- (<float> rt-readin (lambda ((<SCM> rt_readin_smob))
- (let* ((readin <struct-mus_rt_readin-*> (cast <void-*> (SCM_SMOB_DATA rt_readin_smob))))
- ;;(fprintf stderr (string "gakk\\n"))
- (return (rt_readin readin))))))
-
-
- ;;;;;;; Das SMOB
-
- (<scm_t_bits> rt_readin_tag)
- (<nonstatic-scm_t_bits> get_rt_readin_tag (lambda ()
- (return rt_readin_tag)))
-
- (public
- (<SCM> rt-readin-p (lambda ((<SCM> rt_readin_smob))
- (if (SCM_SMOB_PREDICATE rt_readin_tag rt_readin_smob)
- (return SCM_BOOL_T)
- (return SCM_BOOL_F)))))
-
- (<SCM> mark_rt_readin (lambda ((<SCM> rt_readin_smob))
- (let* ((rt_readin <struct-mus_rt_readin-*> (cast <void-*> (SCM_SMOB_DATA rt_readin_smob))))
- (return rt_readin->scm_readin))))
- (<size_t> free_rt_readin (lambda ((<SCM> rt_readin_smob))
- (let* ((rt_readin <struct-mus_rt_readin-*> (cast <void-*> (SCM_SMOB_DATA rt_readin_smob))))
- (free_buffer rt_readin->buffer)
- (free rt_readin->core)
- (free rt_readin)
- (return 0))))
- (<int> print_rt_readin (lambda ((<SCM> rt_readin_smob) (<SCM> port) (<scm_print_state-*> pstate))
- (scm_puts (string "#<rt_readin ... > ") port)
- (return 1)))
-
- (public
-
- ;;;;;;; CLM methods for rt-readin
- (<int> rt-readin-channels (lambda ((<SCM> rt_readin_smob))
- (if (SCM_SMOB_PREDICATE rt_readin_tag rt_readin_smob)
- (let* ((readin <struct-mus_rt_readin-*> (cast <void-*> (SCM_SMOB_DATA rt_readin_smob))))
- (return readin->channels))
- (return 0))))
- (<int> rt-readin-channel (lambda ((<SCM> rt_readin_smob))
- (if (SCM_SMOB_PREDICATE rt_readin_tag rt_readin_smob)
- (let* ((readin <struct-mus_rt_readin-*> (cast <void-*> (SCM_SMOB_DATA rt_readin_smob))))
- (return readin->channel))
- (return 0))))
- (<float> rt-readin-increment (lambda ((<SCM> rt_readin_smob))
- (if (SCM_SMOB_PREDICATE rt_readin_tag rt_readin_smob)
- (let* ((readin <struct-mus_rt_readin-*> (cast <void-*> (SCM_SMOB_DATA rt_readin_smob))))
- (return readin->increment)))
- (return 0)))
- (<float> rt-readin-set_increment (lambda ((<SCM> rt_readin_smob)
- (<float> val))
- (if (SCM_SMOB_PREDICATE rt_readin_tag rt_readin_smob)
- (let* ((readin <struct-mus_rt_readin-*> (cast <void-*> (SCM_SMOB_DATA rt_readin_smob))))
- (set! readin->increment val)
- (return val)))
- (return 0)))
- (<int> rt-readin-length (lambda ((<SCM> rt_readin_smob))
- (if (SCM_SMOB_PREDICATE rt_readin_tag rt_readin_smob)
- (let* ((readin <struct-mus_rt_readin-*> (cast <void-*> (SCM_SMOB_DATA rt_readin_smob))))
- (return readin->length)))
- (return 0)))
- (<char-*> rt-readin-file-name (lambda ((<SCM> rt_readin_smob))
- (if (SCM_SMOB_PREDICATE rt_readin_tag rt_readin_smob)
- (let* ((readin <struct-mus_rt_readin-*> (cast <void-*> (SCM_SMOB_DATA rt_readin_smob))))
- (return (mus_file_name "((struct mus_rt_readin *) readin)->readin"))))
- (return NULL)))
- (<int> rt-readin-location (lambda ((<SCM> rt_readin_smob))
- (if (SCM_SMOB_PREDICATE rt_readin_tag rt_readin_smob)
- (let* ((readin <struct-mus_rt_readin-*> (cast <void-*> (SCM_SMOB_DATA rt_readin_smob))))
- (return readin->location)))
- (return 0)))
- (<int> rt-readin-set_location (lambda ((<SCM> rt_readin_smob)
- (<int> loc))
- (if (SCM_SMOB_PREDICATE rt_readin_tag rt_readin_smob)
- (let* ((readin <struct-mus_rt_readin-*> (cast <void-*> (SCM_SMOB_DATA rt_readin_smob))))
- (set! readin->location loc)
- (return loc)))
- (return 0)))
-
- (<SCM> make-rt-readin2 (lambda ((<SCM> scm_readin))
- (let* ((readin <mus_any-*> (XEN_TO_MUS_ANY scm_readin))
- (ret <struct-mus_rt_readin-*> (calloc 1 (sizeof <struct-mus_rt_readin>)))
- (scmret <SCM>)
- (filename <char-*> (mus_file_name readin))
- (channel <int> (mus_channel readin))
- (buffer <struct-buffer-*> (find_buffer filename channel)))
-
- ;;(fprintf stderr (string "readin (make): %x\\n") ret)
-
- (set! ret->readin readin)
- (set! ret->scm_readin scm_readin)
- (set! ret->readin_func rt_readin)
-
- (set! ret->buffer buffer)
- ;;(fprintf stderr (string "readin (make), buffer: %x\\n") buffer)
-
- (if (== NULL buffer->buffer)
- (let* ((sfinfo <SF_INFO> {0})
- (sndfile <SNDFILE-*> (sf_open filename SFM_READ &sfinfo))
- (framesize <int> 4)
- (format <int> (& SF_FORMAT_SUBMASK sfinfo.format)))
-
- ;;(SCM_ASSERT (!= NULL sndfile) scm_readin 0 (string "make-rt-readin: Could not open file."))
- (if (== NULL sndfile)
- (begin
- (printf (string "libsndfile could not open file: "))
- (printf filename)
- (printf (string "\\n"))
- (return SCM_BOOL_F)))
-
- (cond ((== format SF_FORMAT_PCM_S8)
- (set! framesize 1)
- (set! buffer->readin_raw_func get_byte))
- ((== format SF_FORMAT_PCM_U8)
- (set! framesize 1)
- (set! buffer->readin_raw_func get_byte))
- ((== format SF_FORMAT_PCM_16)
- (set! framesize 2)
- (set! buffer->readin_raw_func get_short))
- (else
- (set! buffer->readin_raw_func get_float)))
-
- (set! buffer->buffer (malloc (* framesize sfinfo.frames)))
- (set! buffer->num_frames sfinfo.frames)
- ;;(fprintf stderr (string "framesize: %d format: %d frames: %d\\n") framesize format buffer->num_frames)
- (for-each 0 sfinfo.frames
- (lambda (i)
- (cond ((== framesize 1)
- (if (== sfinfo.format SF_FORMAT_PCM_S8)
- (let* ((new[sfinfo.channels] <char>))
- (sf_read_raw sndfile new 1)
- (set! "((char *)buffer->buffer)[i]" new[channel]))
- (let* ((new[sfinfo.channels] <short>))
- (sf_readf_short sndfile new 1)
- (set! "((char *)buffer->buffer)[i]" (/ new[channel] 128)))))
- ((== framesize 2)
- (let* ((new[sfinfo.channels] <short>))
- (sf_readf_short sndfile new 1)
- (set! "((short *)buffer->buffer)[i]" new[channel])))
- (else
- (let* ((new[sfinfo.channels] <float>))
- (sf_readf_float sndfile new 1)
- (set! "((float *) buffer->buffer)[i]" new[channel]))))))
- (sf_close sndfile)))
-
-
- (set! ret->channels (mus_channels readin))
- (set! ret->channel channel)
- (set! ret->location 0)
- (set! ret->increment (mus_increment readin))
- (set! ret->length (mus_length readin))
-
- (SCM_NEWSMOB scmret rt_readin_tag ret)
- (return scmret)))))
-
- (run-now
- (set! rt_readin_tag (scm_make_smob_type (string "rt_readin") (sizeof <struct-mus_rt_readin>)))
- (scm_set_smob_mark rt_readin_tag mark_rt_readin)
- (scm_set_smob_free rt_readin_tag free_rt_readin)
- (scm_set_smob_print rt_readin_tag print_rt_readin)))
-
-
-(define (make-rt-readin areadin)
- (let ((ret (if (string? areadin)
- (make-rt-readin2 (make-readin areadin))
- (make-rt-readin2 areadin))))
- (if (not ret)
- (begin
- (c-display "Could not make rt-readin for" areadin)
- (throw 'could-not-make-rt-readin))
- ret)))
-
-#!
-(make-rt-readin "/home/kjetil/flute2.wav")
-!#
-
-;;(<rt-type> '<rt-readin> rt-readin-p 'rt_scm_to_rt_readin #:transformfunc SCM_SMOB_DATA #:c-type '<struct-mus_rt_readin-*> #:subtype-of '<mus_any-*>)
-(<rt-type> '<rt-readin>
- (lambda (readin)
- (or (readin? readin)
- (rt-readin-p readin)))
- 'rt_scm_to_rt_readin
- #:transformfunc (lambda (readin)
- (if (rt-readin-p readin)
- (SCM_SMOB_DATA readin)
- (let ((rt-readin (make-rt-readin readin)))
- (list 'extra-gc-var
- rt-readin
- (SCM_SMOB_DATA rt-readin)))))
- #:c-type '<struct-mus_rt_readin-*>
- #:subtype-of '<mus_any-*>
- )
-
-
-(define-rt-ec <struct-mus_rt_readin-*> rt_scm_to_rt_readin
- (lambda (,rt-globalvardecl (<SCM> name))
- ,(if (rt-is-safety?)
- `(if (not (SCM_SMOB_PREDICATE rt_readin_tag name))
- (begin
- (rt_error rt_globals (string "Variable is not an rt-readin generator"))
- (return NULL))
- (return (cast <void-*> (SCM_SMOB_DATA name))))
- `(return (cast <void-*> (SCM_SMOB_DATA name))))))
-
-
-;;(<rt-func> 'rt_readin '<float> '(<rt-readin>))
-(rt-renamefunc readin rt_readin <float> (<rt-readin>))
-
-;(rt-renamefunc readin rt-c-dasreadin <float> (<rt-readin>))
-;(define-c-macro (rt-c-dasreadin readin)
-; (<-> "((ReadinFunc) ( ((struct mus_rt_readin *)" (eval-c-parse readin) ")->readin_func)) ((struct mus_rt_readin *)" (eval-c-parse readin) ")"))
-
-
-(for-each (lambda (gen)
- (let* ((funcname (car gen))
- (rettype (cadr gen))
- (elname (if (= 3 (length gen))
- (caddr gen)
- funcname)))
- (primitive-eval `(define-rt-macro (,(symbol-append 'mus- funcname) expand/gen)
- (if (rt-immediate? gen)
- `(if (is-type? <rt-readin> ,gen)
- (,',(symbol-append 'rt-readin- funcname) ,gen)
- (,',(symbol-append 'rt-mus- funcname '/mus_ funcname) ,gen))
- (let ((g (rt-gensym)))
- `(let ((,g ,gen))
- (if (is-type? <rt-readin> ,g)
- (,',(symbol-append 'rt-readin- funcname) ,g)
- (,',(symbol-append 'rt-mus- funcname '/mus_ funcname) ,g)))))))
-
- ;;(<rt-func> (symbol-append 'rt-readin- funcname) rettype '(<rt-readin>) #:is-immediate #t)
- (<rt-func> (symbol-append 'rt-readin- funcname) rettype '(<mus_any-*>) #:is-immediate #t)
- (primitive-eval `(define-c-macro (,(symbol-append 'rt-readin- funcname) agen2)
- (<-> (symbol->string ,'agen2) "->" ,(symbol->string elname))))))
- '((channels <int>)
- (channel <int>)
- (increment <float>)
- (length <int>)
- (file-name <char-*> file_name)
- (location <int>)))
-
-
-(define-rt-macro (setter!-mus-location expand/gen expand/val)
- (if (rt-immediate? gen val)
- `(if (is-type? <rt-readin> ,gen)
- (rt-readin-set_location ,gen ,val)
- (setter!-mus-location/mus_set_location ,gen ,val))
- (let ((g (rt-gensym))
- (g2 (rt-gensym)))
- `(let ((,g ,gen)
- (,g2 ,val))
- (if (is-type? <rt-readin> ,g)
- (rt-readin-set_location ,g ,g2)
- (setter!-mus-location/mus_set_location ,g ,g2))))))
-(<rt-func> 'rt-readin-set_location '<void> '(<rt-readin> <int>) #:is-immediate #t)
-(define-c-macro (rt-readin-set_location gen val)
- (<-> (symbol->string gen) "->location=" (eval-c-parse val)))
-
-
-(define-rt-macro (setter!-mus-increment expand/gen expand/val)
- (if (rt-immediate? gen val)
- `(if (is-type? <rt-readin> ,gen)
- (rt-readin-set_increment ,gen ,val)
- (setter!-mus-increment/mus_set_increment ,gen ,val))
- (let ((g (rt-gensym))
- (g2 (rt-gensym)))
- `(let ((,g ,gen)
- (,g2 ,val))
- (if (is-type? <rt-readin> ,g)
- (rt-readin-set_increment ,g ,g2)
- (setter!-mus-increment/mus_set_increment ,g ,g2))))))
-(<rt-func> 'rt-readin-set_increment '<void> '(<rt-readin> <int>) #:is-immediate #t)
-(define-c-macro (rt-readin-set_increment gen val)
- (<-> (symbol->string gen) "->increment=" (eval-c-parse val)))
-
-
-
-
-
-
-
-
-#!
-
-(define file (make-readin "/home/kjetil/t1.wav"))
-(mus-file-name file)
-(set! (mus-file-name file) "gakkgakk")
-(define rt-file (make-rt-readin file))
-(rt-readin rt-file)
-(set! (mus-increment file) 1)
-(set! (mus-location file) 5470)
-(mus-channel file)
-
-(define a (rt-2 '(lambda ()
- (out (readin rt-file)))))
-setter!-rt-mus-set_location/mus_set_location
-setter!-rt-mus-location/mus_location
-
-(rt-2 '(lambda ()
- (set! (mus-location rt_file) 0)))
-(macroexpand-1 '(rt-macro-setter!-mus-location ai))
-
-
-(define file (make-readin "/home/kjetil/t1.wav"))
-
-(define rt-file (make-rt-readin file))
-
-(rt-run 0 100
- (lambda ()
- (if (>= (mus-location file) (mus-length file))
- (set! (mus-location file) 200))
- (out (readin file))))
-(mus-length file)
-(mus-location file)
-(set! (mus-location file) 2000)
-(-> *rt-engine* start)
-(-> *rt-engine* stop)
-(rt-funcall a)
-
-
-(let ((rs (make-readin "/home/kjetil/t1.wav")))
- (-> (rt (lambda ()
- (if (>= (mus-location rs) (mus-length rs))
- (set! (mus-location rs) 0))
- (out (readin rs))))
- play))
-
-
-(define osc (make-oscil #:frequency 440))
-(define i (rt (lambda ()
- (oscil osc))))
-(-> i play)
-(-> i stop)
-(rt-clear-cache!)
-(-> *rt-engine* start)
-
-(define osc (make-oscil #:frequency 440))
-(define vol 0.4)
-(define instrument (rt (lambda ()
- (out (* vol (oscil osc))))))
-(-> instrument play)
-(-> instrument stop)
-
-!#
-
-
-
-#!
-
-(define osc (make-oscil #:frequency 440))
-(define loc (make-locsig :degree 80 :distance 1 :channels 2))
-(rt-2 '(lambda ()
- (mus-frequency (vector-ref a b))))
-
- (set! (mus-frequency (vector-ref a b)) 200)
- ;;(* transposition (vct-ref peak-freqs k)))))
- (locsig loc (* (oscil osc) 0.5))
-!#
-
-
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;; ALSA-MIDI. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-(define *rt-midi* #f)
-
-
-(define rt-alsa-midi-parser-func
- '(<void> receive_midi (lambda ((<struct-RT_Globals-*> rt_globals)
- (<snd_seq_t-*> seq)
- ((<void> (<struct-RT_Globals-*> <int> <int> <int>)) func))
- (<snd_seq_event_t-*> event)
- (if (snd_seq_event_input_pending seq 1)
- "ai:
- snd_seq_event_input(seq,&event);
- switch(event->type){
- case SND_SEQ_EVENT_NOTEON:
- //printf(\"Noteon, channel: %d note: %d vol: %d\\n\",event->data.note.channel,event->data.note.note,event->data.note.velocity);
- func(rt_globals,0x90+event->data.note.channel,event->data.note.note,event->data.note.velocity);
- break;
- case SND_SEQ_EVENT_NOTEOFF:
- //printf(\"Noteoff, channel: %d note: %d vol: %d\\n\",event->data.note.channel,event->data.note.note,event->data.note.velocity);
- func(rt_globals,0x90+event->data.note.channel,event->data.note.note,0);
- break;
- case SND_SEQ_EVENT_KEYPRESS:
- //printf(\"Keypress, channel: %d note: %d vol: %d\\n\",event->data.note.channel,event->data.note.note,event->data.note.velocity);
- func(rt_globals,0xa0+event->data.note.channel,event->data.note.note,event->data.note.velocity);
- break;
- case SND_SEQ_EVENT_CONTROLLER:
- //printf(\"Control: %d %d %d\\n\",event->data.control.channel,event->data.control.param,event->data.control.value);
- func(rt_globals,0xb0+event->data.control.channel,event->data.control.param,event->data.control.value);
- break;
- case SND_SEQ_EVENT_PITCHBEND:
- //printf(\"Pitch: %d %d %d\\n\",event->data.control.channel,event->data.control.param,event->data.control.value);
- {
-int val=event->data.control.value + 0x2000;
-func(rt_globals,0xe0+event->data.control.channel,val&127,val>>7);
- }
- break;
- case SND_SEQ_EVENT_CHANPRESS:
- //printf(\"chanpress: %d %d %d\\n\",event->data.control.channel,event->data.control.param,event->data.control.value);
- func(rt_globals,0xc0+event->data.control.channel,event->data.control.value,0);
- break;
- case SND_SEQ_EVENT_PGMCHANGE:
- // printf(\"pgmchange: %d %d %d\\n\",event->data.control.channel,event->data.control.param,event->data.control.value);
- func(rt_globals,0xc0+event->data.control.channel,event->data.control.value,0);
- break;
- case SND_SEQ_EVENT_START:
- func(rt_globals,0xfa,0,0);
- break;
- case SND_SEQ_EVENT_CONTINUE:
- func(rt_globals,0xfb,0,0);
- break;
- case SND_SEQ_EVENT_STOP:
- func(rt_globals,0xfc,0,0);
- break;
- //case SND_SEQ_EVENT_SETPOS_TICK:
- //func(rt_globals,0xf,0,0);
- //break;
- //case SND_SEQ_EVENT_SETPOS_TIME:
- //func(rt_globals,0xf,0,0);
- //break;
- //case SND_SEQ_EVENT_TEMPO:
- //func(rt_globals,0xf,0,0);
- //break;
- //case SND_SEQ_EVENT_CLOCK:
- //func(rt_globals,0xf,0,0);
- //break;
- //case SND_SEQ_EVENT_TICK:
- //func(rt_globals,0xf,0,0);
- //break;
- case SND_SEQ_EVENT_RESET:
- func(rt_globals,0xff,0,0);
- break;
- case SND_SEQ_EVENT_SENSING:
- func(rt_globals,0xfe,0,0);
- break;
- default:
- break;
- }
- if (snd_seq_event_input_pending (seq, 0))
- goto ai;
-"))))
-
-
-
-(if *use-alsa-midi*
- (eval-c "-lasound"
- "#include <stdio.h>"
- "#include <alsa/asoundlib.h>"
- (public
- (<snd_seq_t-*> create_alsa_seq (lambda ((<char-*> client_name)
- (<int> isinput))
- (<snd_seq_t-*> seq)
- (<int> err)
- (set! err (snd_seq_open &seq (string "default") SND_SEQ_OPEN_DUPLEX 0))
- (if err
- (begin
- (fprintf stderr (string ,(<-> "Could not open ALSA sequencer, aborting\\n\\n%s\\n\\n"
- "Make sure you have configure ALSA properly and that\\n"
- "/proc/asound/seq/clients exists and contains relevant\\n"
- "devices.\\n"))
- (snd_strerror err))
- (return NULL)))
- (snd_seq_set_client_name seq client_name)
- (set! err (snd_seq_create_simple_port seq
- "isinput?\"Input\":\"Output\""
- "(isinput?SND_SEQ_PORT_CAP_WRITE:SND_SEQ_PORT_CAP_READ)|SND_SEQ_PORT_CAP_SUBS_READ|SND_SEQ_PORT_CAP_SUBS_WRITE"
- SND_SEQ_PORT_TYPE_APPLICATION|SND_SEQ_PORT_TYPE_SPECIFIC))
- (if err
- (begin
- (fprintf stderr (string "Could not create ALSA port (%s)\\n") (snd_strerror err))
- (snd_seq_close seq)
- (return NULL)))
- (return seq))))
-
- "struct RT_Globals{int *controls;int *data1s;int *data2s;int num_events;SCM ret;};"
-
- ,rt-alsa-midi-parser-func
-
-
- (<void> receiver (lambda ((<struct-RT_Globals-*> globals)
- (<int> control)
- (<int> data1)
- (<int> data2))
- (if (== globals->num_events 500)
- return)
- (set! globals->controls[globals->num_events] control)
- (set! globals->data1s[globals->num_events] data1)
- (set! globals->data2s[globals->num_events] data2)
- globals->num_events++))
- (<nonstatic-void> rt_receive_midi (lambda ((<void-*> data)
- (<int> block_time)
- (<snd_seq_t-*> seq)
- ((<void> (<void-*> <int> <int> <int>)) func))
- (<static-int> controls[500])
- (<static-int> data1s[500])
- (<static-int> data2s[500])
- (<static-int> num_events 0)
- (<static-int> last_read_time 0)
- (if (!= block_time last_read_time)
- (begin
- (<struct-RT_Globals> globals)
- (set! globals.controls controls)
- (set! globals.data1s data1s)
- (set! globals.data2s data2s)
- (set! globals.num_events 0)
- (receive_midi &globals seq receiver)
- (set! num_events globals.num_events)
- (set! last_read_time block_time)))
- (for-each 0 num_events
- (lambda (n)
- (func data controls[n] data1s[n] data2s[n])))))
-
- (<void> receiver2 (lambda ((<struct-RT_Globals-*> globals)
- (<int> data1)
- (<int> data2)
- (<int> data3))
- (set! globals->ret (scm_cons (scm_cons (MAKE_INTEGER data1)
- (scm_cons (MAKE_INTEGER data2)
- (scm_cons (MAKE_INTEGER data3)
- SCM_EOL)))
- globals->ret))))
- (public
- (<SCM> rt-receive-midi (lambda ((<snd_seq_t-*> seq))
- (<struct-RT_Globals> globals)
- (set! globals.ret SCM_EOL)
- (receive_midi &globals seq receiver2)
- (return globals.ret))))
- (run-now
- (printf (string "Alsa library loaded.\\n")))))
-
-
-
-
-
-
-(if *use-alsa-midi*
- (set! *rt-midi* (create_alsa_seq *rt-midi-alsaname* 1)))
-
-
-(<rt-func> 'rt_receive_midi '<void> '(<int>
- <snd_seq_t-*>
- (<void> (<int> <int> <int>)))
- #:needs-rt-globals #t)
-
-(<rt-type> '<snd_seq_t-*>
- (lambda (seq)
- (and (list? seq)
- (= 2 (length seq))
- (string? (car seq))
- (string=? (car seq) "A_POINTER")
- (number? (cadr seq))))
- #f)
-
-
-;;(define-c-macro (rt-get-framenum)
-;; "rt_globals->framenum")
-;;(<rt-func> 'rt-get-framenum '<int> '() #:is-immediate #t)
-;;(define-rt-macro (first-frame?)
-;; `(= 0 (rt-get-framenum)))
-
-(define-c-macro (get-time)
- "rt_globals->time")
-;; "(rt_globals->time+rt_globals->framenum)")
-(<rt-func> 'get-time '<int> '() #:is-immediate #t)
-
-;; No, this is not good. Should return frames not seconds. Must fix.
-;;(define-rt-macro (get-time)
-;; `(/ (rt-get-exact-time) (mus-srate)))
-
-
-(define-c-macro (rt-get-block-time)
- "rt_globals->block_time")
-(<rt-func> 'rt-get-block-time '<int> '() #:is-immediate #t)
-(define-c-macro (rt-midi-read)
- "rt_globals->is_midi_read")
-(<rt-func> 'rt-midi-read '<int> '() #:is-immediate #t)
-(define-c-macro (rt-midi-is-read!)
- "rt_globals->is_midi_read=1")
-(<rt-func> 'rt-midi-is-read! '<void> '() #:is-immediate #t)
-
-(define-rt-macro (receive-midi func)
- `(if (not (rt-midi-read))
- (begin
- (rt_receive_midi (rt-get-block-time) *rt-midi* (lambda ,(cadr func)
- (declare (<int> ,@(cadr func)))
- ,@(c-butlast (cddr func))
- (the <void> ,(last (cddr func)))))
- (rt-midi-is-read!))))
-
-
-;; Logic partly taken from pd by Miller Puckette.
-(define-rt-macro (midi-to-freq f)
- (define freq (rt-gensym))
- `(let ((,freq ,f))
- (cond ((<= ,freq 0) 0)
- ((> ,freq 135) 20000)
- (else
- (* 8.17579891564 (exp (* .0577622650 ,freq)))))))
-
-(define (midi-to-freq f)
- (* 8.17579891564 (exp (* .0577622650 f))))
-
-#!
-(caddr (assq 'receive_midi rt-ec-functions))
-!#
-
-
-
-
-(define all-midi-receivers '())
-(define midi-receivers-running #f)
-(define *midi-poll-freq* 500)
-
-(define (receive-midi func)
- (letrec ((poll-freq (/ 1000 *midi-poll-freq* ))
- (das-loop (lambda ()
- (if (not midi-receivers-running)
- (set! all-midi-receivers '())
- (begin
- (for-each (lambda (ai)
- (for-each (lambda (func)
- (catch #t
- (lambda ()
- (apply func ai))
- (lambda (key . args)
- (c-display "Error: key/args" key args))))
- all-midi-receivers))
- (reverse! (rt-receive-midi *rt-midi*)))
- (in poll-freq das-loop)))))
- (add-it (lambda ()
- (if (and (not midi-receivers-running)
- (not (null? all-midi-receivers)))
- (in 50 add-it)
- (begin
- (set! midi-receivers-running #t)
- (push! func all-midi-receivers)
- (if (= 1 (length all-midi-receivers))
- (das-loop)))))))
- (add-it)))
-
-
-(define (stop-receiving-midi!)
- (set! midi-receivers-running #f))
-
-#!
-(receive-midi (lambda (data1 data2 data3)
- (if (not (= data1 254))
- (c-display data1 data2 data3))))
-(stop-receiving-midi!)
-!#
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;; Time macros. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define-rt-macro (^f t)
- t)
-(define-rt-macro (^b t)
- (* 1024 ,t)) ;;FIX
-(define-rt-macro (^ms t)
- `(* ,(/ (rte-samplerate) 1000) ,t))
-(define-rt-macro (^s t)
- `(* ,(rte-samplerate) ,t))
-(define-rt-macro (^m t)
- `(* ,(* 60 (rte-samplerate)) ,t))
-(define-rt-macro (^h t)
- `(* ,(* 60 60 (rte-samplerate)) ,t))
-
-
-#!
-(^s 1) = 1 second
-(^ms 1) = 1 millisecond
-(^f 1) = 1 frame
-(^b 1) = 1 block (not sure how this one to work exactly)
-(^m 1) = 1 minute
-!#
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;; Wait. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;; (wait w 50 thunk) waits 50 samples
-
-
-
-#!
-old syntax: (not very nice)
-(define (make-wait)
- (vct 0 0 0))
-
-(define-rt-macro (wait_old w len thunk)
- `(begin
- (if (not (vct-ref ,w 2))
- (begin
- (vct-set! ,w 0 ,len)
- (vct-set! ,w 1 ,len)
- (vct-set! ,w 2 1))
- (if (> (vct-ref ,w 0) 1)
- (vct-set! ,w 0 (1- (vct-ref ,w 0)))
- (if (< (vct-ref ,w 2) 2)
- (begin
- (vct-set! ,w 2 2)
- (,thunk)))))))
-!#
-
-
-(define-rt-macro (wait_old len thunk)
- (define counter (rt-gensym))
- `(when (< (extern ,counter 0) ,len)
- (declare (<int> ,counter))
- (set! ,counter (1+ ,counter))
- (when (= ,len ,counter)
- (set! ,counter 0)
- (,thunk))))
-
-#!
-(<rt-play> (lambda ()
- (wait (* 1 (mus-srate))
- (lambda ()
- (printf "1\\n")
- (remove-me)))))
-!#
-
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;; LADSPA. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define-ec-struct <mus_rt_ladspa>
- <LADSPA_Descriptor-*> descriptor
- <LADSPA_Handle> handle
- <float-*> controls
- <float-**> ins
- <float-**> outs
-
- <float-*> controls_mins
- <float-*> controls_defaults
- <float-*> controls_maxs
-
- <int> num_controls_in
- <int> num_controls_out
- <int> num_audio_outs
- <int> num_audio_ins
-
- <int-*> audioin_port_nums
- <int-*> audioout_port_nums
- <int-*> controlin_port_nums
- <int-*> controlout_port_nums
-
- <float-*> controls_out
-
- <vct-*> output
-
- <SCM> scm_output
- <SCM> scm_descriptor
- <SCM> scm_handle
- <SCM> scm_ladspa
- )
-
-
-(eval-c (<-> "-I" snd-header-files-path " ")
- "#include <ladspa.h>"
- "#include <clm.h>"
- "#include <xen.h>"
- "#include <vct.h>"
- ;;;;;;; Das SMOB
-
- (shared-struct <mus_rt_ladspa>)
-
- (<scm_t_bits> rt_ladspa_tag)
- (<nonstatic-scm_t_bits> get_rt_ladspa_tag (lambda ()
- (return rt_ladspa_tag)))
-
- (public
- (<SCM> rt-ladspa-p (lambda ((<SCM> rt_ladspa_smob))
- (if (SCM_SMOB_PREDICATE rt_ladspa_tag rt_ladspa_smob)
- (return SCM_BOOL_T)
- (return SCM_BOOL_F))))
- (<void> ladspa-set2 (lambda ((<SCM> rt_ladspa_smob)
- (<int> controlnum)
- (<float> val))
- (if (not (SCM_SMOB_PREDICATE rt_ladspa_tag rt_ladspa_smob))
- (fprintf stderr (string "Not a ladspa object\\n"))
- (let* ((ladspa <struct-mus_rt_ladspa-*> (cast <void-*> (SCM_SMOB_DATA rt_ladspa_smob))))
- (if (< controlnum ladspa->num_controls_in)
- (set! ladspa->controls[controlnum] val))))))
-
- (<SCM> make-ladspa2 (lambda ((<struct-mus_rt_ladspa-*> ladspa))
-
- (<SCM> scmret)
-
- (set! ladspa->ins (calloc (sizeof <float-*>) ladspa->num_audio_ins))
- (for-each 0 ladspa->num_audio_ins
- (lambda (n)
- (set! ladspa->ins[n] (calloc (sizeof <float>) ,rt-max-frame-size))
- (ladspa->descriptor->connect_port ladspa->handle
- ladspa->audioin_port_nums[n]
- ladspa->ins[n])))
-
- (set! ladspa->outs (calloc (sizeof <float-*>) ladspa->num_audio_outs))
- (for-each 0 ladspa->num_audio_outs
- (lambda (n)
- (set! ladspa->outs[n] (calloc (sizeof <float>) ,rt-max-frame-size))
- (ladspa->descriptor->connect_port ladspa->handle
- ladspa->audioout_port_nums[n]
- ladspa->outs[n])))
-
- ;;(set! ladspa->controls (calloc (sizeof <float>) ladspa->num_controls_in))
- (for-each 0 ladspa->num_controls_in
- (lambda (n)
- (ladspa->descriptor->connect_port ladspa->handle
- ladspa->controlin_port_nums[n]
- &ladspa->controls[n])))
-
- (set! ladspa->controls_out (calloc (sizeof <float>) ladspa->num_controls_out))
- (for-each 0 ladspa->num_controls_out
- (lambda (n)
- (ladspa->descriptor->connect_port ladspa->handle
- ladspa->controlout_port_nums[n]
- &ladspa->controls_out[n])))
-
- (if ladspa->descriptor->activate
- (ladspa->descriptor->activate ladspa->handle))
-
- (SCM_NEWSMOB scmret rt_ladspa_tag ladspa)
- (set! ladspa->scm_ladspa scmret)
-
- (return scmret))))
-
- (<SCM> mark_rt_ladspa (lambda ((<SCM> rt_ladspa_smob))
- (let* ((rt_ladspa <struct-mus_rt_ladspa-*> (cast <void-*> (SCM_SMOB_DATA rt_ladspa_smob))))
- ;;(fprintf stderr (string "scm_output: %p, scm_descriptor: %p\\n") rt_ladspa->scm_output rt_ladspa->scm_descriptor)
- (scm_gc_mark rt_ladspa->scm_output)
- (scm_gc_mark rt_ladspa->scm_descriptor)
- (scm_gc_mark rt_ladspa->scm_handle)
- (return rt_ladspa->scm_ladspa))))
-
- (<size_t> free_rt_ladspa (lambda ((<SCM> rt_ladspa_smob))
- (let* ((ladspa <struct-mus_rt_ladspa-*> (cast <void-*> (SCM_SMOB_DATA rt_ladspa_smob))))
-
- ;;(fprintf stderr (string "starint to free\\n"))
- (if ladspa->descriptor->deactivate
- (ladspa->descriptor->deactivate ladspa->handle))
- (if ladspa->descriptor->cleanup
- (ladspa->descriptor->cleanup ladspa->handle))
-
- (free ladspa->controls)
- (free ladspa->controls_out)
-
- (for-each 0 ladspa->num_audio_ins
- (lambda (n)
- (free ladspa->ins[n])))
- (free ladspa->ins)
- (for-each 0 ladspa->num_audio_outs
- (lambda (n)
- (free ladspa->outs[n])))
- (free ladspa->outs)
- (free ladspa->audioin_port_nums)
- (free ladspa->audioout_port_nums)
- (free ladspa->controlin_port_nums)
- (free ladspa->controlout_port_nums)
-
- (free ladspa)
- ;;(fprintf stderr (string "freed\\n"))
- (return 0))))
-
- (<int> print_rt_ladspa (lambda ((<SCM> rt_ladspa_smob) (<SCM> port) (<scm_print_state-*> pstate))
- (scm_puts (string "#<rt_ladspa ... > ") port)
- (return 1)))
-
- (run-now
- (set! rt_ladspa_tag (scm_make_smob_type (string "rt_ladspa") (sizeof <struct-mus_rt_ladspa>)))
- (scm_set_smob_mark rt_ladspa_tag mark_rt_ladspa)
- (scm_set_smob_free rt_ladspa_tag free_rt_ladspa)
- (scm_set_smob_print rt_ladspa_tag print_rt_ladspa)))
-
-
-(define-macro (ladspa-set! l c v)
- `(ladspa-set2 (cadr ,l) ,c ,v))
-
-(define (ladspa-get-min ladspa control-num)
- (list-ref (-> (car ladspa) controls_mins) control-num))
-(define (ladspa-get-default ladspa control-num)
- (list-ref (-> (car ladspa) controls_defaults) control-num))
-(define (ladspa-get ladspa control-num)
- (list-ref (-> (car ladspa) controls) control-num))
-(define (ladspa-get-max ladspa control-num)
- (list-ref (-> (car ladspa) controls_maxs) control-num))
-
-(define (make-ladspa-gui das-ladspa)
- (letrec* ((ladspa (car das-ladspa))
- (descriptor (caddr das-ladspa))
- (name (.Name descriptor))
- (libraryname (cadddr das-ladspa))
- (effectname (cadr (cdddr das-ladspa)))
- (author (.Maker descriptor))
- (lisense (.Copyright descriptor))
- (exit (lambda () (-> dialog hide)))
- (Help (lambda ()
- (let ((dashelp (assoc (string-append libraryname effectname) ladspa-help-assoclist)))
- (help-dialog author
- (string-append (if dashelp
- (caddr dashelp)
- lisense)
- (string #\newline #\newline)
- "Processing can be stopped by pressing C-g")))))
- (Reset (lambda ()
- (for-each (lambda (c v)
- (ladspa-set! das-ladspa c v))
- (iota (-> ladspa num_controls_in))
- (-> ladspa controls_defaults))
- (-> dialog hide)
- (make-ladspa-gui das-ladspa)))
- (toggles #f)
- (dialog (<dialog> name exit
- "Close" exit
- "Reset" Reset
- "Print" (lambda () (print-ladspa das-ladspa))
- (if (assoc (string-append libraryname effectname) ladspa-help-assoclist)
- "Help"
- "Not much help")
- Help)))
-
- (define (get-hint portnum)
- (car (list-ref (.PortRangeHints descriptor) portnum)))
-
- (define (ishint dashint dashint2)
- (not (= (logand dashint dashint2 ) 0)))
-
- (define (stupid->nonstupid stupid)
- (let ((gakk (-> ladspa controlin_port_nums)))
- (- (length gakk) (length (member stupid gakk)))))
- (define (s->n stupid)
- (stupid->nonstupid stupid))
-
- (if (> (-> ladspa num_controls_in) 0)
- (dialog 'add-sliders
- (map (lambda (portnum)
- (let* ((lo (ladspa-get-min das-ladspa (s->n portnum)))
- (init (ladspa-get das-ladspa (s->n portnum)))
- (hi (ladspa-get-max das-ladspa (s->n portnum)))
- (hint (get-hint portnum))
- (scale (if (ishint hint LADSPA_HINT_INTEGER)
- 1
- (if use-gtk 1000.0 100.0)))
- (name (list-ref (.PortNames descriptor) portnum)))
- (list name
- lo
- init
- hi
- (lambda (val)
- (ladspa-set! das-ladspa (s->n portnum) val))
- scale)))
- (remove (lambda (portnum) (ishint (car (list-ref (.PortRangeHints descriptor) portnum)) LADSPA_HINT_TOGGLED))
- (-> ladspa controlin_port_nums)))))
-
-
- ;; Add toggle buttons.
- (set! toggles (map (lambda (portnum)
- (let* ((hint (get-hint portnum))
- (hi (ladspa-get-max das-ladspa (s->n portnum)))
- (lo (ladspa-get-min das-ladspa (s->n portnum)))
- (portname (list-ref (.PortNames descriptor) portnum))
- (ison (> (ladspa-get das-ladspa (s->n portnum)) 0)))
- (<checkbutton> dialog
- portname
- (lambda (on)
- (ladspa-set! das-ladspa (s->n portnum) (if on hi lo)))
- ison)))
- (filter-org (lambda (portnum) (ishint (car (list-ref (.PortRangeHints descriptor) portnum)) LADSPA_HINT_TOGGLED))
- (-> ladspa controlin_port_nums))))
-
- (-> dialog show)
- dialog))
-
-
-(define (print-ladspa das-ladspa)
- (let ((ladspa (car das-ladspa)))
- (define (stupid->nonstupid stupid)
- (let ((gakk (-> ladspa controlin_port_nums)))
- (- (length gakk) (length (member stupid gakk)))))
- (define (s->n stupid)
- (stupid->nonstupid stupid))
- (if (> (-> ladspa num_controls_in) 0)
- (begin
- (c-display "\n(let ((plugin l))")
- (for-each (lambda (portnum)
- (c-display " (ladspa-set! plugin" (s->n portnum) (ladspa-get das-ladspa (s->n portnum)) ")"))
- (-> ladspa controlin_port_nums))
- (c-display ")")))))
-
-
-(define (make-ladspa libname pluginname)
- (let* ((descriptor #f)
- (ladspa #f)
- (handle #f)
- (input-controls '())
- (output-controls '())
- (input-audios '())
- (output-audios '())
- (output-vct #f)
- (smob #f))
-
- (define (get-hint portnum)
- (car (list-ref (.PortRangeHints descriptor) portnum)))
-
- (define (ishint portnum dashint)
- (not (= (logand (get-hint portnum) dashint) 0)))
-
- (define (get-lo portnum)
- (* (if (ishint portnum LADSPA_HINT_SAMPLE_RATE)
- (srate)
- 1)
- (if (not (ishint portnum LADSPA_HINT_BOUNDED_BELOW))
- 0 ;The value Ardour use.
- (cadr (list-ref (.PortRangeHints descriptor) portnum)))))
-
- (define (get-hi portnum)
- (* (if (ishint portnum LADSPA_HINT_SAMPLE_RATE)
- (srate)
- 1)
- (if (not (ishint portnum LADSPA_HINT_BOUNDED_ABOVE))
- (if (not (ishint portnum LADSPA_HINT_TOGGLED))
- 4 ;The value Ardour use.
- 1)
- (caddr (list-ref (.PortRangeHints descriptor) portnum)))))
-
-
- (set! descriptor (ladspa-descriptor libname pluginname))
- (if (not descriptor)
- (throw (symbol-append 'ladspa-plugin-not-found- (string->symbol libname) '- (string->symbol pluginname))))
-
- (set! ladspa (<mus_rt_ladspa> #:descriptor (list "A_POINTER" (cadr descriptor))))
-
- (set! handle (ladspa-instantiate descriptor (c-integer (mus-srate))))
- (-> ladspa handle (list "A_POINTER" (cadr handle)))
- (-> ladspa scm_handle handle)
-
- (c-for-each (lambda (n x)
- (if (> (logand x LADSPA_PORT_CONTROL) 0)
- (if (> (logand x LADSPA_PORT_INPUT) 0)
- (set! input-controls (append input-controls (list n)))
- (set! output-controls (append output-controls (list n))))
- (if (> (logand x LADSPA_PORT_INPUT) 0)
- (set! input-audios (append input-audios (list n)))
- (set! output-audios (append output-audios (list n))))))
- (.PortDescriptors descriptor))
-
- (-> ladspa controlin_port_nums input-controls)
- (-> ladspa controlout_port_nums output-controls)
- (-> ladspa audioin_port_nums input-audios)
- (-> ladspa audioout_port_nums output-audios)
-
- (-> ladspa num_controls_in (length input-controls))
- (-> ladspa num_controls_out (length output-controls))
- (-> ladspa num_audio_outs (length output-audios))
- (-> ladspa num_audio_ins (length input-audios))
-
- (set! output-vct (make-vct (-> ladspa num_audio_outs)))
- (-> ladspa scm_output output-vct)
- (-> ladspa output (XEN_TO_VCT output-vct))
-
- (-> ladspa scm_descriptor descriptor)
-
- (-> ladspa controls_maxs (map get-hi input-controls))
- (-> ladspa controls_mins (map get-lo input-controls))
-
- (-> ladspa controls_defaults (map (lambda (x)
- (let ((hint (car (x 1)))
- (lo (cadr (x 1)))
- (hi (caddr (x 1))))
- (define (ishint dashint)
- (= (logand hint LADSPA_HINT_DEFAULT_MASK) dashint))
- (define (ishint_notdefault dashint)
- (not (= (logand hint dashint ) 0)))
-
- (cond ;;((and def-vals (assoc (x 0) def-vals )) (cdr (assoc (x 0) def-vals)))
- ((ishint LADSPA_HINT_DEFAULT_0) 0)
- ((ishint LADSPA_HINT_DEFAULT_MINIMUM) lo)
- ((ishint LADSPA_HINT_DEFAULT_LOW) (if (ishint_notdefault LADSPA_HINT_LOGARITHMIC)
- (exp (+ (* 0.75 (log lo)) (* 0.25 (log hi))))
- (+ (* 0.75 lo) (* 0.25 hi))))
- ((ishint LADSPA_HINT_DEFAULT_1) 1)
- ((ishint LADSPA_HINT_DEFAULT_MAXIMUM) hi)
- ((ishint LADSPA_HINT_DEFAULT_HIGH) (if (ishint_notdefault LADSPA_HINT_LOGARITHMIC)
- (exp (+ (* 0.75 (log hi)) (* 0.25 (log lo))))
- (+ (* 0.75 hi) (* 0.25 lo))))
- ((ishint LADSPA_HINT_DEFAULT_MIDDLE) (if (ishint_notdefault LADSPA_HINT_LOGARITHMIC)
- (exp (+ (* 0.5 (log hi)) (* 0.5 (log lo))))
- (+ (* 0.5 hi) (* 0.5 lo))))
- ((ishint LADSPA_HINT_DEFAULT_100) 100)
- ((ishint LADSPA_HINT_DEFAULT_440) 440)
- ((ishint LADSPA_HINT_SAMPLE_RATE) (srate))
- (else
- (/ (+ lo hi) 2)))))
-
- (map (lambda (x) (<array> x
- (list-ref (.PortRangeHints descriptor) x)))
- input-controls)))
-
- (-> ladspa controls (-> ladspa controls_defaults))
-
- (set! smob (make-ladspa2 (-> ladspa get-c-object)))
-
- (list ladspa
- smob
- descriptor
- libname
- pluginname
- )))
-
-
-;; SCM->ladspa converter
-(define-rt-ec <struct-mus_rt_readin-*> rt_scm_to_rt_ladspa
- (lambda (,rt-globalvardecl (<SCM> name))
- (<SCM> ladspa (SCM_CAR (SCM_CDR name)))
- ,(if (rt-is-safety?)
- `(if (not (SCM_SMOB_PREDICATE rt_ladspa_tag ladspa))
- (begin
- (rt_error rt_globals (string "Variable is not an rt-ladspa object"))
- (return NULL))
- (return (cast <void-*> (SCM_SMOB_DATA ladspa))))
- `(return (cast <void-*> (SCM_SMOB_DATA ladspa))))))
-
-
-;; The ladspa type
-(<rt-type> '<ladspa>
- (lambda (l)
- (and (list? l)
- (rt-ladspa-p (cadr l))))
- 'rt_scm_to_rt_ladspa
- #:transformfunc (lambda (l) (SCM_SMOB_DATA (cadr l)))
- #:c-type '<struct-mus_rt_ladspa-*>)
-
-
-;; The ladspa-run function, ladspa-run calls rt_ladspa_run which replace data in the vct.
-;; (Yes, some kind of general buffer mechanism should be implemented. This is inefficient.)
-(define-rt-ec <vct-*> rt_ladspa_run
- (lambda ((<ladspa> ladspa)
- (<vct-*> input))
- (let* ((minin <int> (MIN ladspa->num_audio_ins input->length)))
- (for-each 0 minin
- (lambda (n)
- (set! ladspa->ins[n][0] input->data[n])))
- (ladspa->descriptor->run ladspa->handle 1)
- (for-each 0 ladspa->num_audio_outs
- (lambda (n)
- (set! ladspa->output->data[n] ladspa->outs[n][0])))
-
- (return ladspa->output))))
-
-(define-rt-macro (ladspa-run ladspa input)
- `(rt_ladspa_run ,ladspa ,input))
-
-
-;; The ladspa-set function
-(define-rt-ec <void> rt_ladspa_set
- (lambda ((<ladspa> ladspa)
- (<int> controlnum)
- (<float> val))
- (if (< controlnum ladspa->num_controls_in)
- (set! ladspa->controls[controlnum] val))))
-
-(define-rt-macro (ladspa-set! ladspa controlnum val)
- `(rt_ladspa_set ,ladspa ,controlnum ,val))
-
-
-
-
-
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;; Stalin ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(c-load-from-path rt-stalin)
-
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;; Faust ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(c-load-from-path rt-faust)
-
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;; Ringbuffer. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-#!
-(define-ec-struct <rt_ringbuffer_b>
- <SCM> scm_b
- <vct-*> b
- <int> s
- <int> e)
-
-(define-ec-struct <rt_ringbuffer>
- <struct-rt_ringbuffer_b-*> b0
- <struct-rt_ringbuffer_b-*> b1
- <struct-rt_ringbuffer_b-*> b2
- <int> position
- <SCM> callback
- <int> size)
-
-
-(define *rt-request-ringbuffer* (jack_ringbuffer_create 8192))
-(define *rt-ringbuffer-poll-freq* (/ 1000 500))
-(define *rt-rb-overlap* 10) ;; 10% overlap
-
-(eval-c (<-> "-I" snd-header-files-path " -ffast-math ")
- "#include <clm.h>"
- "#include <xen.h>"
- "#include <vct.h>"
- "#include <jack/ringbuffer.h>"
- (shared-struct <rt_ringbuffer_b>)
- (shared-struct <rt_ringbuffer>)
- (public
- (<void> rt_rb_set_start_endp (lambda ((<struct-rt_ringbuffer-*> rb)
- (<int> w1)
- (<int> startpos)
- (<int> endpos))
- (let* ((temp <struct-rt_ringbuffer_b-*> NULL))
- (cond ((== w1 0)
- (set! temp rb->b0))
- ((== w1 1)
- (set! temp rb->b1))
- ((== w1 2)
- (set! temp rb->b2)))
- (set! temp->s startpos)
- (set! temp->e endpos))))
-
-
- (<void> rt_rb_swap (lambda ((<struct-rt_ringbuffer-*> rb)
- (<int> w1)
- (<int> w2))
- (let* ((temp1 <struct-rt_ringbuffer_b-*> NULL)
- (temp2 <struct-rt_ringbuffer_b-*> NULL))
-
- (cond ((== w1 0)
- (set! temp1 rb->b0))
- ((== w1 1)
- (set! temp1 rb->b1))
- ((== w1 2)
- (set! temp1 rb->b2)))
- (cond ((== w2 0)
- (set! temp2 rb->b0)
- (set! rb->b0 temp1))
- ((== w2 1)
- (set! temp2 rb->b1)
- (set! rb->b1 temp1))
- ((== w2 2)
- (set! temp2 rb->b2)
- (set! rb->b2 temp1)))
- (cond ((== w1 0)
- (set! rb->b0 temp2))
- ((== w1 1)
- (set! rb->b1 temp2))
- ((== w1 2)
- (set! rb->b2 temp2))))))
-
-
- (<void> rt_check_rb_request (lambda ((<jack_ringbuffer_t-*> req_ringbuffer)
- (<SCM> func))
- (while (>= (jack_ringbuffer_read_space req_ringbuffer)
- (sizeof <struct-rt_ringbuffer-*>))
- (let* ((rb <struct-rt_ringbuffer-*> NULL))
- (jack_ringbuffer_read req_ringbuffer (cast <char-*> rb) (sizeof <struct-rt_ringbuffer-*>))
- (scm_apply func
- (MAKE_POINTER rb)
- (scm_list_4 (MAKE_INTEGER rb->position)
- (MAKE_INTEGER rb->size)
- rb->callback
- (scm_list_3 (scm_list_3 rb->b0->scm_b
- (MAKE_INTEGER rb->b0->s)
- (MAKE_INTEGER rb->b0->e))
- (scm_list_3 rb->b1->scm_b
- (MAKE_INTEGER rb->b1->s)
- (MAKE_INTEGER rb->b1->e))
- (scm_list_3 rb->b2->scm_b
- (MAKE_INTEGER rb->b2->s)
- (MAKE_INTEGER rb->b2->e)))))))))))
-
-
-
-
-(define (rt-ringbuffer-callback rb position size callback poss)
- (define (start-pos which)
- (cadr (list-ref poss which)))
- (define (end-pos which)
- (caddr (list-ref poss which)))
- (define (inside? pos which)
- (let ((whichwhich (list-ref poss which)))
- (and (>= pos (cadr whichwhich))
- (<= pos (caddr whichwhich)))))
- (define (read which startpos endpos)
- (call-with-values (lambda ()
- (callback (car (list-ref poss which)) startpos endpos))
- (lambda (startpos endpos)
- (rt_rb_set_start_endp rb which startpos endpos))))
-
- (if (not (inside? position 1))
- (cond ((inside? position 0)
- (rt_rb_swap rb 0 1)
- (rt_rb_swap rb 2 0)
- (read 0 (- (start-pos 0)) (size)) (start-pos 0))
- ((inside? position 2)
- (rt_rb_swap rb 1 2)
- (rt_rb swap rb 0 2)
- (read 2 (1+ (end-pos 2) (+ 1 (size) (end-pos 2))))))))
-
-
-
-(define (rt_request_check)
- (rt_check_rb_request)
- (in *rt-ringbuffer-poll-freq* rt_request_check))
-(rt_request_check)
-
-(rt_check_rb_request *rt-request-ringbuffer*)
-
-(define (make-ringbuffer-location bytes callback)
- (<rt_ringbuffer> #:b0 (-> (<rt_ringbuffer_b> #:scm_b (make-vct bytes)) get-c-object)
- #:b1 (-> (<rt_ringbuffer_b> #:scm_b (make-vct bytes)) get-c-object)
- #:b2 (-> (<rt_ringbuffer_b> #:scm_b (make-vct bytes)) get-c-object)
- #:callback callback
- #:size bytes))
-
-(define r (make-ringbuffer-location 4096 #f))
-
-
-!#
-
-#!
-(define file (file->sample "/home/kjetil/t1.wav"))
-(define rb (make-ringbuffer-location (* 8192 256)
- (lambda (location)
- (file->sample file location))))
-(define position 0)
-(<rt-play> 0 100
- (lambda ()
- (out (* 0.8 (ringbuffer-location rb position))) ;; If data is not available, a value from the buffer is returned instead. Might produce less clicks than zero.
- (set! position (1+ position))))
-
-
-;;To delay playing until data is available:
-(<rt-play> 0 100
- (lambda ()
- (if (ringbuffer-location? rb position) ;; ringbuffer-location? whether data at the position is available. If \#f, a request is sent.
- (begin
- (out (* 0.8 (ringbuffer-location rb position)))
- (set! position (1+ position))))))
-!#
-
-
-
-
-
-
-;; rt -> snd
-
-(define-rt-vct-struct rt-rb
- :read
- :write
- :unread
- :isrunning)
-
-(define rt-rb-header-size (vct-length (make-rt-rb)))
-
-(define rt-running-ringbuffers '())
-
-(define (make-ringbuffer size)
- (let ((ret (make-vct (+ rt-rb-header-size size))))
- ret))
-
-(define* (ringbuffer-get rt-rb func #:optional (interval 2))
- (letrec ((ai (lambda ()
- (if (= 0 (=> rt-rb :isrunning))
- (begin
- (set! rt-running-ringbuffers (remove (lambda (x) (eq? x rt-rb)) rt-running-ringbuffers)))
- (begin
- (while (> (c-integer (=> rt-rb :unread)) 0)
- (let ((read-pos (c-integer (=> rt-rb :read))))
- (func (vct-ref rt-rb (+ rt-rb-header-size read-pos)))
- (set! (=> rt-rb :read) (if (>= read-pos (- (vct-length rt-rb) rt-rb-header-size 1))
- 0
- (1+ read-pos))))
- (set! (=> rt-rb :unread) (1- (=> rt-rb :unread))))
- (in interval ai))))))
- (set! (=> rt-rb :isrunning) 1)
- (push! rt-rb rt-running-ringbuffers)
- (ai)))
-
-(define-rt (get-ringbuffer rt-rb bufferempty)
- ;;(vct-set! rb ,rt-rb-isrunning 1)
- (let ((unread (the <int> (=> rt-rb :unread))))
- (if (> unread 0)
- (let* ((read-pos (the <int> (=> rt-rb :read)))
- (ret (vct-ref rt-rb (+ ,rt-rb-header-size read-pos))))
- (set! (=> rt-rb :read) (if (>= read-pos (- (vct-length rt-rb) ,rt-rb-header-size 1))
- 0
- (1+ read-pos)))
- (set! (=> rt-rb :unread) (1- unread))
- ret)
- bufferempty)))
-
-(define (ringbuffer-stop rt-rb)
- (set! (=> rt-rb :isrunning) 0))
-(define-rt (ringbuffer-stop rt-rb)
- (set! (=> rt-rb :isrunning) 0))
-(define (ringbuffer-stop-all)
- (for-each ringbuffer-stop rt-running-ringbuffers))
-
-(define-rt (put-ringbuffer rt-rb val)
- ;; (if (= 0 (vct-ref rb ,rt-rb-isrunning))
- ;; #t
- (let ((write-pos (=> rt-rb :write))
- (unread (=> rt-rb :unread)))
- (declare (<int> write-pos unread))
- (if (>= unread (- (vct-length rt-rb) ,rt-rb-header-size))
- (begin
- (debug "Ringbuffer full\\n")
- #f)
- (begin
- (vct-set! rt-rb (+ write-pos ,rt-rb-header-size) val)
- (set! (=> rt-rb :write) (if (>= write-pos (- (vct-length rt-rb) ,rt-rb-header-size 1))
- 0
- (1+ write-pos)))
- (set! (=> rt-rb :unread) (1+ unread))
- #t))))
-
-
-(define-rt (clear-ringbuffer rt-rb)
- (set! (=> rt-rb :unread) 0)
- (set! (=> rt-rb :read) 0)
- (set! (=> rt-rb :write) 0))
-
-
-#!
-(define rb (make-ringbuffer 2000))
-(<rt-play> 0 1
- (lambda ()
- (put-ringbuffer rb (in 0))))
-(ringbuffer-get rb
- (lambda (val)
- (c-display "got:" val)))
-
-(ringbuffer-stop rb)
-(rte-silence!)
-
-(length rt-running-ringbuffers)
-(set! rt-running-ringbuffers '())
-(ringbuffer-stop-all)
-
-!#
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;; BUS. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-#!
-(define-rt-ec <struct-mus_rt_readin-*> rt_scm_to_rt_bus
- (lambda (,rt-globalvardecl (<SCM> name))
- ,(if (rt-is-safety?)
- `(if (not (SCM_SMOB_PREDICATE rt_bus_tag name))
- (begin
- (rt_error rt_globals (string "Variable is not an rt-bus object"))
- (return NULL))
- (return (cast <void-*> (SCM_SMOB_DATA name))))
- `(return (cast <void-*> (SCM_SMOB_DATA name))))))
-!#
-
-
-(<rt-type> '<bus>
- rt-bus-p
- #f ;;'rt_scm_to_rt_bus (The engine needs to know which buses are used by the instances. It can't know that if its hidden in an <SCM>.
- #:transformfunc (lambda (scmbus)
- (SCM_SMOB_DATA scmbus))
- #:c-type '<struct-rt_bus-*>)
-
-
-(define-c-macro (bus-length bus)
- (<-> (eval-c-parse bus) "->num_channels"))
-(<rt-func> 'bus-length '<int> '(<bus>) #:is-immediate #t)
-
-
-
-(define (rt-clean-write-bus val)
- `(begin
- (if (< data->last_written_to block_time)
- (set! data->val ,val)
- (+= data->val ,val))
- (set! data->last_written_to block_time)))
-
-(define-rt-ec <void> rt_write_bus (lambda (,rt-globalvardecl (<bus> bus) (<int> ch) (<float> val))
- ,(if (rt-is-safety?)
- '(if (< ch 0)
- (rt_error rt_globals (string "Channel number for write-bus less than zero")))
- "/* */")
-
- (if (>= ch bus->num_channels)
- return)
- (let* ((block_time <int> rt_globals->block_time)
- (framenum <int> (- rt_globals->time block_time))
- (data <struct-rt_bus_data-*> "&bus->data[(bus->num_channels*framenum)+ch]"))
- ,(rt-clean-write-bus 'val)
- )))
-#!
-(-> (hashq-ref rt-types '<bus>) c-type)
-!#
-
-(define-rt-ec <void> rt_write_bus_vct (lambda (,rt-globalvardecl (<bus> bus) (<vct-*> vct))
- (<float-*> vctdata vct->data)
- (<int> num_channels (EC_MIN vct->length bus->num_channels))
- (<int> block_time rt_globals->block_time)
- (<int> framenum (- rt_globals->time block_time))
- (<int> base (* bus->num_channels framenum))
- (for-each 0 num_channels
- (lambda (ch)
- (let* ((data <struct-rt_bus_data-*> "&bus->data[base++]"))
- ,(rt-clean-write-bus 'vctdata[ch]))))))
-
-
-(define-rt-ec <float> rt_read_bus (lambda (,rt-globalvardecl (<bus> bus) (<int> ch))
- ,(if (rt-is-safety?)
- '(if (< ch 0)
- (rt_error rt_globals (string "Channel number for read-bus less than zero")))
- "/* */")
- (if (>= ch bus->num_channels)
- (return 0))
-
- (let* ((time <int> rt_globals->prev_block_time)
- (framenum <int> (- rt_globals->time rt_globals->block_time))
- (data <struct-rt_bus_data-*> "&bus->data[(bus->num_channels*framenum)+ch]"))
- (return (?kolon (< data->last_written_to time)
- 0
- data->val)))))
-
-(define-rt-ec <vct-*> rt_read_bus_vct (lambda (,rt-globalvardecl (<bus> bus))
- (let* ((vct <vct-*> (rt_alloc_vct rt_globals bus->num_channels))
- (vctdata <float-*> vct->data)
- (time <int> rt_globals->prev_block_time)
- (framenum <int> (- rt_globals->time rt_globals->block_time))
- (base <int> (* bus->num_channels framenum)))
- (for-each 0 bus->num_channels
- (lambda (ch)
- (let* ((data <struct-rt_bus_data-*> "&bus->data[base++]"))
- (set! vctdata[ch]
- (?kolon (< data->last_written_to time)
- 0
- data->val)))))
- (return vct))))
-
-
-
-
-
-;;(write-bus bus 0.2) -> (rt_write_bus bus 0 0.2)
-;;(write-bus bus 0 0.2) -> (rt_write_bus bus 0 0.2)
-;;(write-bus bus 1 0.2) -> (rt_write_bus bus 1 0.2)
-;;(write-bus bus vct) -> (rt_write_bus_vct bus vct)
-;;(write-bus bus (vct 0.2 0.5 0.6)) -> (let ((,das-vct (vct 0.2 0.5 0.6)))
-;; (rt_write_bus_vct bus ,das-vct))
-(define-rt-macro (write-bus bus . rest)
- (cond ((and (= 1 (length rest))
- (number? (car rest)))
- `(rt_write_bus ,bus 0 ,(car rest)))
- ((> (length rest) 2)
- (c-display "Error. write-bus. Too many arguments.")
- #f)
- ((= (length rest) 2)
- `(rt_write_bus ,bus ,@rest))
- (else
- `(if (is-type? <vct-*> ,(car rest))
- (rt_write_bus_vct ,bus (rt-cast-vct ,(car rest)))
- (rt_write_bus ,bus 0 (rt-cast-float ,(car rest)))))))
-
-
-
-
-;;(read-bus bus 0) -> (rt_read_bus bus 0) ;; returns float
-;;(read-bus bus 1) -> (rt_read_bus bus 1) ;; returns float
-;;(read-bus bus) -> (rt_read_bus_vct bus) ;; returns vct
-;;(read-bus bus 0 1) -> (vct (rt_read_bus bus 0) ;; returns vct
-;; (rt_read_bus bus 1))
-;;
-(define-rt-macro (read-bus bus . rest)
- (cond ((null? rest)
- `(rt_read_bus_vct ,bus))
- ((= 1 (length rest))
- `(rt_read_bus ,bus ,(car rest)))
- ((not (rt-immediate? bus))
- (let ((das-bus (rt-gensym)))
- `(let ((,das-bus ,bus))
- (read-bus ,das-bus ,@rest))))
- (else
- `(vct ,@(map (lambda (ch)
- `(rt_read_bus ,bus ,ch))
- rest)))))
-
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;; VAR. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define* (make-var #:optional (val 0))
- (make-vct 1 val))
-(define (read-var var)
- (vct-ref var 0))
-(define (write-var var val)
- (vct-set! var 0 val))
-(define-rt-macro (read-var var)
- `(rt-vct-ref/vct-ref ,var 0))
-(define-rt-macro (write-var var val)
- `(rt-vct-set!/vct-set! ,var 0 ,val))
-
-
-(define (make-glide-var default-val maximum-change)
- (vct default-val default-val maximum-change maximum-change))
-
-(define (write-glide-var var val)
- (vct-set! var 2
- (if (> val (vct-ref var 0))
- (vct-ref var 3)
- (- (vct-ref var 3))))
- (vct-set! var 1 val))
-
-(define (read-glide-var var)
- (let ((a (vct-ref var 0))
- (b (vct-ref var 1)))
- (if (= a b)
- a
- (let ((ret (if (> (abs (- a b))
- (vct-ref var 3))
- (+ a (vct-ref var 2))
- b)))
- (vct-set! var 0 ret)
- ret))))
-
-(define-rt (write-glide-var var val)
- ,(cons 'begin (cddr (procedure-source write-glide-var))))
-
-(define-rt (read-glide-var var)
- ,(cons 'begin (cddr (procedure-source read-glide-var))))
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;; VCT. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;; scm_to_vct
-(define-rt-ec <vct-*> rt_scm_to_vct (lambda (,rt-globalvardecl (<SCM> name))
- ,(if (rt-is-safety?)
- `(if (mus_vct_p name)
- (return (XEN_TO_VCT name))
- (begin
- (rt_error rt_globals (string "Variable is not a VCT."))
- (return NULL)))
- `(return (XEN_TO_VCT name)))))
-
-#!
-(define-rt-ec <vct-*> rt_alloc_vct (lambda (,rt-globalvardecl (<int> length))
- (let* ((ret <vct-*> (rt_alloc rt_globals (sizeof <vct>)))
- (floats <float-*> (rt_alloc_atomic rt_globals (* (sizeof <float>) length))))
- (set! ret->length length)
- (set! ret->data floats)
- (return ret))))
-!#
-
-(define-rt-ec <vct-*> rt_alloc_vct (lambda (,rt-globalvardecl (<int> length))
- (let* ((ret <vct-*> (rt_alloc_atomic rt_globals
- (+ (sizeof <vct>)
- (* (sizeof <float>) length))))
- (floats <float-*> (cast <float-*> (+ ret 1))))
- (set! ret->length length)
- (set! ret->data floats)
- (return ret))))
-
-
-(define-rt-ec <vct-*> rt_vct_scale (lambda ((<vct-*> vct) (<float> scl))
- (<int> lokke)
- "for(lokke=0;lokke<vct->length;lokke++){"
- (*= vct->data[lokke] scl)
- "}"
- (return vct)))
-
-
-(define-rt-ec <vct-*> rt_vct_offset (lambda ((<vct-*> vct) (<float> scl))
- (<int> lokke)
- "for(lokke=0;lokke<vct->length;lokke++){"
- (+= vct->data[lokke] scl)
- "}"
- (return vct)))
-
-
-(define-rt-ec <vct-*> rt_vct_fill (lambda ((<vct-*> vct) (<float> scl))
- (<int> lokke)
- "for(lokke=0;lokke<vct->length;lokke++){"
- (set! vct->data[lokke] scl)
- "}"
- (return vct)))
-
-
-
-(define-rt-macro (vct-length vct)
- `(rt-vct-length/vct-length ,vct))
-
-(define-rt-macro (rt-vct-legal-pos das-vct pos2 funcname body)
- (if (rt-is-safety?)
- `(begin (if (< ,pos2 0)
- (rt-error ,(format #f "Illegal second argument for ~A pos: pos<0. (Body: ~A)" funcname body)))
- (if (>= ,pos2 (vct-length ,das-vct))
- (rt-error ,(format #f "Illegal second argument for ~A vct-legal-pos: pos>=length. (Body: ~A)" funcname body)))
- ,body)
- body))
-
-
-(define-rt-macro (vct-set! das-vct expand/pos val)
- (define das-das-vct (rt-gensym))
- (if (and (rt-immediate? pos)
- (rt-immediate? das-vct))
- `(rt-vct-legal-pos ,das-vct ,pos "vct-set!"
- (rt-vct-set!/vct-set! ,das-vct (rt-castint/castint ,pos) ,val))
- (let ((x (rt-gensym)))
- `(let ((,das-das-vct ,das-vct)
- (,x ,pos))
- (rt-vct-legal-pos ,das-das-vct ,x "vct-set!"
- (rt-vct-set!/vct-set! ,das-das-vct (rt-castint/castint ,x) ,val))))))
-
-(define-rt-macro (vct-ref das-vct pos)
- (define das-das-vct (rt-gensym))
- (define x (rt-gensym))
- (if (and (rt-immediate? pos)
- (rt-immediate? das-vct))
- `(rt-vct-legal-pos ,das-vct ,pos "vct-ref"
- (rt-vct-ref/vct-ref ,das-vct (rt-castint/castint ,pos)))
- `(let ((,das-das-vct ,das-vct)
- (,x ,pos))
- (rt-vct-legal-pos ,das-das-vct ,x "vct-ref"
- (rt-vct-ref/vct-ref ,das-das-vct (rt-castint/castint ,x))))))
-
-#!
-(rt-macroexpand '(vct-ref positions1 i))
-!#
-
-(define-rt-macro (vct . rest)
- (let ((ret (rt-gensym))
- (n -1))
- `(let ((,ret (rt_alloc_vct ,(length rest))))
- ,@(map (lambda (something)
- (set! n (1+ n))
- `(rt-vct-set!/vct-set! ,ret ,n ,something))
- rest)
- ,ret)))
-
-(define-rt-macro (make-vct len . initial-element)
- (if (null? initial-element)
- `(rt_vct_fill (rt_alloc_vct ,len) 0.0)
- `(rt_vct_fill (rt_alloc_vct ,len) ,(car initial-element))))
-
-
-
-(define-rt-macro (vct-scale! vct scl)
- (if (and (list? vct)
- (rt-immediate? scl)
- (eq? 'vct (car vct)))
- `(vct ,@(map (lambda (val)
- `(* ,scl ,val))
- (cdr vct)))
- `(rt_vct_scale ,vct ,scl)))
-(define-rt-macro (vct-offset! vct scl)
- (if (and (list? vct)
- (rt-immediate? scl)
- (eq? 'vct (car vct)))
- `(vct ,@(map (lambda (val)
- `(+ ,scl ,val))
- (cdr vct)))
- `(rt_vct_offset ,vct ,scl)))
-(define-rt-macro (vct-fill! vct scl)
- (if (and (list? vct)
- (rt-immediate? scl)
- (eq? 'vct (car vct)))
- `(vct ,@(map (lambda (val)
- ,scl)
- (cdr vct)))
- `(rt_vct_fill ,vct ,scl)))
-
-(define-rt-macro (vct-map! vct thunk)
- (let ((das-vct (rt-gensym))
- (i (rt-gensym)))
- `(let ((,das-vct (the <vct-*> ,vct)))
- (rt-range2 ,i 0 (vct-length ,das-vct) 1
- (rt-vct-set!/vct-set! ,das-vct ,i (begin
- ,@(cddr thunk)))))))
-
-(define-c-macro (rt-castint/castint val)
- `(cast <int> ,val))
-(<rt-func> 'rt-castint/castint '<int> '(<int>))
-
-(define-c-macro (rt-vct-data/vct-data vct)
- (<-> (eval-c-parse vct) "->data"))
-(define-c-macro (rt-vct-ref/vct-ref vct pos)
- (<-> (eval-c-parse vct) "->data[" (eval-c-parse pos) "]"))
-(<rt-func> 'rt-vct-ref/vct-ref '<float> '(<vct-*> <int>))
-
-(define-c-macro (rt-vct-set!/vct-set! vct pos val)
- (<-> (eval-c-parse vct) "->data[" (eval-c-parse pos) "]=" (eval-c-parse val)))
-(<rt-func> 'rt-vct-set!/vct-set! '<void> '(<vct-*> <int> <float>))
-
-(define-c-macro (rt-vct-length/vct-length vct)
- (<-> (eval-c-parse vct) "->length"))
-(<rt-func> 'rt-vct-length/vct-length '<int> '(<vct-*>))
-
-
-#!
-(define v (vct 2 3 4))
-(begin v)
-(define a (rt-2 '(lambda ()
- (vct-scale! v 2)
- 5)))
-(rt-funcall a)
-(define a (rt-2 '(lambda ()
- (vct-set! v 0 5))))
-
-!#
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Realtime pool handling
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define *max-num-pools* 100)
-(define *rt-pools* '())
-
-(define-ec-struct <rt_pool>
- <struct-rt_pool*> next
- <void*> reset_func
- <void*> element)
-
-
-(eval-c ""
- "#include <pthread.h>"
- (shared-struct <rt_pool>)
-
- (<struct-rt_pool**> pools NULL)
- (<struct-rt_pool*> empty_pools NULL)
- ;;(<nonstatic-void*> rt_get_pool (lambda-decl ((<int> poolnum))))
- (run-now
- (set! pools (calloc (sizeof <struct-rt_pool*>) ,*max-num-pools*)))
-
- ;; push and get must/should be made threadsafe.
- (<pthread_mutex_t> mutex PTHREAD_MUTEX_INITIALIZER)
-
- (<nonstatic-void> rt_push_to_pool (lambda ((<void*> element)
- (<void*> reset_func)
- (<int> poolnum))
- ;;(pthread_mutex_lock &mutex)
- (<struct-rt_pool*> pool empty_pools)
- (set! empty_pools pool->next)
- (set! pool->element element)
- (set! pool->reset_func reset_func)
- (set! pool->next pools[poolnum])
- (set! pools[poolnum] pool)
- ;;(pthread_mutex_unlock &mutex)
- ))
-
- (<nonstatic-void*> rt_get_pool_element (lambda ((<int> poolnum))
- ;;(pthread_mutex_lock &mutex)
- (<struct-rt_pool*> pool pools[poolnum])
- (if (== NULL pool)
- (begin
- ;;(pthread_mutex_unlock &mutex)
- (return NULL)))
- (set! pools[poolnum] pool->next)
- (set! pool->next empty_pools)
- (set! empty_pools pool)
- (let* ((reset_func (<void> (<void*>)) pool->reset_func)
- (ret <void*> pool->element))
- (if reset_func
- (reset_func ret))
- ;;(pthread_mutex_unlock &mutex)
- (return ret))))
- (public
- ;; Note, not safe to call when any rt instances are running.
- (<void> rt-init-pool (lambda ((<SCM> elements) ;; a vector of pointers
- (<int> poolnum)
- ((<void> (<void*>)) reset_func))
- (<int> num_elements (SCM_VECTOR_LENGTH elements))
- (for-each 0 num_elements
- (lambda (i)
- (<struct-rt_pool*> pool (malloc (sizeof <struct-rt_pool>)))
- (set! pool->next empty_pools)
- (set! empty_pools pool)))
- ;;(fprintf stderr (string "numel num_el: %d poolnum: %d %p\\n") num_elements poolnum empty_pools)
- (for-each 0 num_elements
- (lambda (i)
- (<void*> element (GET_POINTER (SCM_VECTOR_REF elements i)))
- (rt_push_to_pool element reset_func poolnum))))))
- )
-
-
-(define-rt-vector-struct rt-pool
- :name
- :num
- :reset_func)
-
-(define next-pool-num 0)
-
-(define* (get-rt-pool name :optional (throw-error #t))
- (call/cc (lambda (return)
- (for-each (lambda (rt-pool)
- (if (eq? name (=> rt-pool :name))
- (return rt-pool)))
- *rt-pools*)
- (if throw-error
- (throw (symbol-append 'unknown-pool- name))
- #f))))
-(define (get-rt-pool-num name)
- (let ((rt-pool (get-rt-pool name #f)))
- (and rt-pool
- (=> rt-pool :num))))
-
-(define* (new-rt-pool name :key reset_func)
- (define pool-num (or (get-rt-pool-num name) ;; Will only happen during development. (memory leak)
- next-pool-num))
- (inc! next-pool-num 1)
- (push! (make-rt-pool :name name
- :num pool-num
- :reset_func reset_func)
- *rt-pools*))
-
-(define* (init-rt-pool name create_func :key (num-elements 100))
- (define pool-num (get-rt-pool-num name))
- (let ((rt-pool (get-rt-pool name)))
- (define reset_func (=> rt-pool :reset_func))
- (rt-init-pool (list->vector (map (lambda (n) (create_func)) (iota num-elements))) pool-num reset_func)))
-
-
-
-
-
-#!
-
-(add-rt-pool 'testpool (lambda ()
- (XEN_TO_MUS_ANY (make-oscil))))
-
-(eval-c ""
- (get-proto rt_get_pool_element)
- (public
- (<void> test2 (lambda ((<int> poolnum))
- (printf (string "aisann: %p\\n") (rt_get_pool_element poolnum))))
- (<void*> testing (lambda ()
- (return (rt_get_pool_element 0))))))
-
-
-(<rt> (lambda ()
- (define coroutine (rt_get_pool 1))
- (spawn coroutine
- (lambda ()
- ...))
- ...))
-->
-(begin
- (add-pool 'coroutine *rt-coroutine-pool-size*)
- (<rt> (lambda ()
- (define coroutine (rt_make_coroutine))
- ...)))
-
-
-(eval-c (<-> "-I" snd-header-files-path " -ffast-math ") ;; "-ffast-math") ;; " -Werror "
- "#include <clm.h>"
- (public
- (<int> get-mus-object-size (lambda ()
- (return (sizeof mus_any_class))))))
-!#
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Coroutine handling
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define-rt-ec <void> rt_return_void
- (lambda ()
- (rt-dummy/dummy)
- ))
-
-
-(c-load-from-path rt-coroutines)
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Extern variables
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define rt-extern-variables '())
-(define (add-extern-rt-variable name var)
- (push-back! (list name var) rt-extern-variables))
-(define (get-extern-rt-variable name)
- (cadr (assq name rt-extern-variables)))
-(define (rt-extern-defined? name)
- (assq name rt-extern-variables))
-
-#!
-(add-extern-rt-variable 'a (make-oscil))
-(rt-extern-reset)
-!#
-(define-rt/stalin-macro (extern . rest)
- (fix-defines
- (cond ((null? (cdr rest))
- (define varname (rt-gensym))
- (add-extern-rt-variable varname (car rest))
- varname)
- ((null? (cddr rest))
- (add-extern-rt-variable (car rest) (cadr rest))
- (car rest))
- (else
- (add-extern-rt-variable (car rest) (cadr rest))
- `(extern ,@(cddr rest))))))
-(define-rt-macro (external . rest)
- `(extern ,@rest))
-
-#!
-(rte-silence!)
-(rt-gensym)
-(rt-gensym-reset)
-(rt-macroexpand '(extern ai (make-oscil) b 2 c 3))
-(begin rt-extern-rt-variables)
-(rt-extern-reset)
-(<rt-out> :len 2 (oscil))
-(<rt-out> :len 2 (oscil))
-!#
-(define (rt-extern-reset)
- (set! rt-extern-variables '()))
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; GUI
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define* (default-rt-dialog get-rt :key (show #t) (close-button #t) (stop-button #t) (start-button #t))
- (define rt-dialog #f)
- (let ((dialog (cond ((and get-rt
- (defined? 'rt-dialog-unique-name *rt-local-code-environment*))
- (let ((dialog (local-eval 'rt-dialog-unique-name *rt-local-code-environment*)))
- (set-car! dialog (cons get-rt (car dialog)))
- (cadr dialog)))
- ((and get-rt
- (rt-extern-defined? 'rt-standard-dialog))
- (get-extern-rt-variable 'rt-standard-dialog))
- (else
- (letrec* ((for-each-instrument (lambda (func)
- (for-each (lambda (instrument)
- (func (force instrument)))
- (if get-rt
- (list get-rt)
- (delete-duplicates (car rt-dialog))))))
- (dialog (<dialog> "dialog" (lambda ()
- (for-each-instrument (lambda (instrument)
- (-> instrument stop)))
- (-> dialog hide)))))
- (for-each (lambda (args)
- (if (car args)
- (<button> dialog (cadr args) (caddr args))))
- `((,close-button "Close" ,(lambda ()
- (for-each-instrument (lambda (instrument)
- (-> instrument stop)))
- (-> dialog hide)))
- (,stop-button "Stop" ,(lambda ()
- (for-each-instrument (lambda (instrument)
- (-> instrument stop)))))
- (,start-button "Start" ,(lambda ()
- (for-each-instrument (lambda (instrument)
- (-> instrument play)))))))
- (add-extern-rt-variable 'rt-standard-dialog dialog)
- (set! rt-dialog (list '() dialog (make-hash-table 19)))
- dialog)))))
- (if show
- (-> dialog show))
- (if get-rt
- dialog
- rt-dialog)))
-
-(define-macro define-multi-instrument-rt-dialog
- (lambda x
- `(define rt-dialog-unique-name (default-rt-dialog #f ,@x))))
-
-(define-macro (get-multi-instrument-rt-dialog)
- '(cadr rt-dialog-unique-name))
-
-
-#!
-(let ()
- (define-multi-instrument-rt-dialog)
- (<rt-out> (* (<slider> "oscil" 0 0.5 1)
- (<slider> "vol2" 0 1 2)
- (oscil)))
- (<rt-out> (* (<slider> "square" 0 0.5 2)
- (<slider> "vol2" 0 1 2)
- (square-wave))))
-
-(macroexpand '(define-multi-instrument-rt-dialog :show #t))
-
-(let ()
- (define ai 0.2)
- (<rt-out> (* (extern ai) (oscil))))
-
-!#
-
-(define-rt-macro (<slider> name min curr max (:glide #t) (:log #f) (:scale #f))
- (fix-defines
- (define v (gensym))
- (define v2 (rt-gensym))
- (define min2 (gensym))
- (define max2 (gensym))
- (define glide2 (gensym))
-
- (define dialog (gensym))
- (define slider (gensym))
- (define ret (gensym))
- (define topmost (gensym))
-
- (define extern-name (gensym))
-
- (if (eq? glide #t)
- (set! glide -1))
-
- (if glide
- `(read-glide-var
- (extern (let ((,extern-name (string->symbol (<-> "rt-internal-<slider>-" ,name)))
- (,dialog (and (defined? 'rt-dialog-unique-name *rt-local-code-environment*)
- (local-eval 'rt-dialog-unique-name *rt-local-code-environment*))))
- (define ,topmost #f)
- ;;(c-display "extern-name" ,extern-name *rt-local-code-environment*)
- (let* ((,min2 ,min)
- (,max2 ,max)
- (,glide2 ,glide)
- (,v (make-glide-var ,curr (if (= -1 ,glide2)
- (/ (- ,max2 ,min2) (/ (mus-srate) 3))
- ,glide2)))
- (,slider (if (and ,dialog
- (hashq-ref (nth 2 ,dialog) ,extern-name))
- (hashq-ref (nth 2 ,dialog) ,extern-name)
- (let* ((,slider (<slider> (default-rt-dialog (%delay rt-current-rt))
- ,name ,min2 (read-glide-var ,v)
- ,max2
- (lambda (val)
- (if ,topmost
- (for-each (lambda (v)
- (write-glide-var v val))
- (car ,topmost))
- (write-glide-var ,v val)))
- (or ,scale
- (max 100 (/ 1000 (- ,max2 ,min2))))
- #f
- ,log)))
- (define ,ret (list '() ,slider))
- (when ,dialog
- (hashq-set! (nth 2 ,dialog) ,extern-name ,ret)
- (set! ,topmost ,ret))
- ,ret))))
- (set-car! ,slider (cons ,v (car ,slider)))
- ,v))))
- `(extern ,v2 (let ((,extern-name (string->symbol (<-> "rt-internal-<slider>-" ,name)))
- (dialog (and (defined? 'rt-dialog-unique-name *rt-local-code-environment*)
- (local-eval 'rt-dialog-unique-name *rt-local-code-environment*))))
- (if (and dialog
- (hashq-ref (nth 2 dialog) ,extern-name))
- (hashq-ref (nth 2 dialog) ,extern-name)
- (let* ((,min2 ,min)
- (,max2 ,max)
- (,v ,curr)
- (slider (<slider> (default-rt-dialog (%delay rt-current-rt))
- ,name ,min2 ,v
- ,max2
- (lambda (val)
- (set! (-> rt-current-rt ,v2) val))
- (or ,scale
- (max 100 (/ 1000 (- ,max2 ,min2))))
- #f
- ,log)))
- (if dialog
- (hashq-set! (nth 2 dialog) ,extern-name ,v))
- ,v)))))))
-
-#!
-
-(rt-macroexpand '(<slider> "545test" 0 0.5 1 :glide #f))
-(<rt-out> (* (<slider> "vol" 0 0.2 1 :glide #t)
- (<slider> "vol2" 0 0.2 1 :glide #t)
- (oscil :extern (hz->radians 40))))
-
-!#
-
-(define-rt-macro (<checkbutton> name on-or-off (:glide #t) (:togglebutton #f))
- (define v (gensym))
- (define v2 (rt-gensym))
- (define val (gensym))
- (define glide2 (gensym))
-
- (define extern-name (gensym))
-
- (c-display "checkbutton")
-
- (if (eq? glide #t)
- (set! glide -1))
-
- `(begin
- (extern ,v2 (let ((,extern-name (string->symbol (<-> "rt-internal-" (if ,togglebutton "<togglebutton>-" "<checkbutton>-") ,name)))
- (dialog (and (defined? 'rt-dialog-unique-name *rt-local-code-environment*)
- (local-eval 'rt-dialog-unique-name *rt-local-code-environment*))))
- (if (and dialog
- (hashq-ref (nth 2 dialog) ,extern-name))
- (hashq-ref (nth 2 dialog) ,extern-name)
- (let* ((,val (cond ((eq? #t ,on-or-off) 1)
- ((eq? #f ,on-or-off) 0)
- ((number? ,on-or-off)
- (if (= 0 ,on-or-off)
- 0
- 1))
- (else 1)))
- (,v ,(if glide
- `(make-glide-var ,val (let ((,glide2 ,glide))
- (if (= ,glide2 -1)
- (/ 50 (mus-srate))
- ,glide2)))
- val)))
- ((if ,togglebutton
- <togglebutton>
- <checkbutton>)
- (default-rt-dialog (%delay rt-current-rt))
- ,name (lambda (val)
- ,(if glide
- `(write-glide-var ,v (if val 1 0))
- `(set! (-> rt-current-rt ,v2) (if val 1 0))))
- (if (= 0 ,val)
- #f
- #t))
- (if dialog
- (hashq-set! (nth 2 dialog) ,extern-name ,v))
- ,v))))
- ,(if glide
- `(read-glide-var ,v2)
- `(begin
- (declare (<float> ,v2)) ;; This is horrible. The type inference routine is really
- ;; bad when its not even able to figure out a float, the
- ;; default type.
- ,v2))))
-
-(define-rt-macro (<togglebutton> name on-or-off (:glide #t))
- `(<checkbutton> ,name ,on-or-off :glide ,glide :togglebutton #t))
-
-
-
-#!
-(rt-macroexpand '(<checkbutton> "on/off" #f :glide #t))
-(rt-macroexpand '(<togglebutton> "on/off" #f :glide #f))
-(<rt-out> (* (<slider> "vol" 0 0.2 1)
- (<slider> "vol2" 0 0.2 1 :glide #f)
- (<checkbutton> "on/off" #t :glide #t)
- (<togglebutton> "on/off" #t :glide #f)
- (oscil :frequency 0
- (hz->radians (<slider> "freq" 50 200 1000 :log #t)))))
-(oscil :frequency 0
- (hz->radians (<slider> "freq" 50 200 1000 :log #t)))
-
-(rt-macroexpand '(oscil :frequency 0 2 3))
-
-(<rt-out> (let ((outval (* (<checkbutton> "on/off" #t)
- (oscil (extern (make-oscil 0))
- (hz->radians (<slider> "freq" 50 200 8000 :log #t))))))
- (vct (* (<slider> "left" 0 0.2 1) outval)
- (* (<slider> "right" 0 0.2 1) outval))))
-!#
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;; <realtime>/rt-compile/rt/rt-run/rt-funcall/etc.;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; There are certain limitations in the optional/keyword handling in guile.
-
-(def-class (<realtime> func
- arg
- toprotect
- #:key (engine *rt-engine*))
-
- ;;(define procfunc (<RT_Procfunc> #:func func #:arg arg))
- (define procfunc (rt_make_procfunc func arg toprotect))
- (define procfunc-data (rt_get_procfunc_data procfunc))
-
- (def-method (stop-abs #:optional (end (-> engine get-time)))
- (-> engine add-event
- (-> engine get-frame-time end)
- (rt_remove_procfunc)
- procfunc-data))
-
- (define (play-abs-do start duration position)
- (cond ((and duration (<= duration 0))
- (c-display "Error. <realtime> -> play, duration<=0 (play-now " start duration ")"))
- ((and (not (eq? position 'first)) (not (eq? position 'last)))
- (c-display "Error. <realtime> -> play, position must be first or last, not" position))
- (else
- ;;(c-display "play, now/start/end" (-> engine get-time) start end)
- (rt_protect_var procfunc) ;; Unprotection happens in the rt_non_check_non_rt function.
- (-> engine add-event
- (-> engine get-frame-time start)
- (if (eq? position 'first)
- (rt_insert_procfunc)
- (rt_append_procfunc))
- procfunc-data)
- (if duration
- (this->stop-abs (+ start duration))))))
-
- (def-method (play-abs . rest) ;;#:optional (start (-> engine get-time)) duration key-ignore (position 'first))
- (let* ((args (take-while (lambda (x) (not (keyword? x)))
- rest))
- (keyargs (find-tail keyword? rest))
- (arglength (length args)))
- (play-abs-do (if (>= arglength 1)
- (car args)
- (-> engine get-time))
- (if (>= arglength 2)
- (cadr args)
- #f)
- (if (not keyargs)
- 'first
- (cadr keyargs)))))
-
- (def-method (stop #:optional (end 0))
- (this->stop-abs (+ (-> engine get-time) end)))
-
- (define (play-do start duration keyargs)
- (if (and duration (<= duration 0))
- (c-display "Error. <realtime> -> play, duration<=0 (play-now " start duration ")")
- (let ((start-time (-> engine get-time)))
- (apply this->play-abs (append (list (+ start-time start)
- (if duration
- duration
- #f))
- keyargs)))))
- (def-method (play . rest)
- (let* ((args (take-while (lambda (x) (not (keyword? x)))
- rest))
- (keyargs (let ((ret (find-tail keyword? rest))) (if (not ret) '() ret)))
- (arglength (length args)))
- (play-do (if (>= arglength 1)
- (car args)
- 0)
- (if (>= arglength 2)
- (cadr args)
- #f)
- keyargs))))
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-(define (rt-4 term)
-
- (call-with-current-continuation
- (lambda (return)
-
- (let ((uniqify-res #f)
- (renamed-vars #f)
- (external-vars #f)
- (insert-types-res #f)
- (orgargs #f)
- (returntype #f)
- (extnumbers #f)
- (extpointers #f)
- (extnumbers-writing #f))
-
- (rt-print "*RT: Expanding macros")
- (set! term (rt-macroexpand term))
-
- (if (not term)
- (return #f))
-
- ;; Inserted used functions
- (let ((function-names '())
- (functions '()))
- (define (add-func funcname)
- (if (not (member funcname function-names))
- (let ((func (hashq-ref rt-functions funcname)))
- (if func
- (let ((expanded-func (rt-macroexpand func)))
- (push! funcname function-names) ;; Add function-name to the list of included function
- (for-each add-func (rt-find-all-funcs expanded-func))
- (push! expanded-func functions)))))) ;; Add function-body to be included.
- (for-each add-func (rt-find-all-funcs term))
- (set! term `(,(car term) ,(cadr term)
- ,@(reverse! functions)
- ,@(cddr term))))
-
-
- (rt-print "*RT: Checking syntax")
-
- (if (not (rt-check-syntax term))
- (return #f))
-
- (rt-print "*RT: Replacing defines with letrecs")
-
- (set! term (rt-replace-define-with-letrecs term))
- (if (not term)
- (return #f))
-
- (rt-print "*RT: Fixing various")
-
- (set! uniqify-res (rt-fix-various term))
- (if (not uniqify-res)
- (return #f))
-
-
- (set! renamed-vars (car uniqify-res))
- (set! term (cadr uniqify-res))
-
- (rt-print "*RT: Let*-lifter" term)
-
- (set! term (rt-let*-lifter term))
- (if (not term)
- (return #f))
-
- (rt-print "*RT: Inserting types" term)
-
- (set! insert-types-res (rt-insert-types term renamed-vars))
- (if (not insert-types-res)
- (return #f))
-
-
- (set! orgargs (map (lambda (org new)
- (rt-print2 "org/new" org new)
- (list org (-> (hashq-ref rt-types (cadr new)) c-type)))
- (cadr term)
- (cadr (car insert-types-res))))
-
- (set! term (car insert-types-res))
- (set! returntype (cadr insert-types-res))
- (set! extnumbers (caddr insert-types-res))
- (set! extpointers (cadddr insert-types-res))
- (set! extnumbers-writing (car (cdr (cdddr insert-types-res))))
-
- (rt-print2 "before" (cadr term))
- (set-car! (cdr term)
- (append (map (lambda (var)
- (list (car var)
- (-> (cadr var) rt-type)))
- (append extnumbers-writing extpointers extnumbers))
- orgargs))
- (rt-print2 "after" (cadr term))
-
- (rt-print "*RT: Removing unused stuff" term orgargs (map (lambda (a) (-> (cadr a) rt-type)) extpointers))
-
- (set! term (rt-remove-unused++ term))
- (if (not term)
- (return #f))
-
- (rt-print "*RT: Lifting lambdas.")
-
- (set! term (rt-lambda-lifter term))
- (if (not term)
- (return #f))
-
- (rt-print "*RT: Inserting returns" term)
- (set! term (rt-insert-returns term returntype))
- (if (not term)
- (return #f))
-
- (rt-print "*RT: Performing last hacks" term)
- (set! term (rt-last-hacks term))
- (if (not term)
- (return #f))
-
- (rt-print "RT: Final term:" term)
- (list extnumbers
- extpointers
- extnumbers-writing
- orgargs
- returntype
- term)))))
-
-
-
-(define (rt-3.5 term)
- (let ((t (rt-4 term)))
- (if t
- (caddr (cdddr t)))))
-
-
-
-;; NOTE! "setternames" is an extremely confusing name. Its used for all variables which must be
-;; transformed in Guile before the c function is called, and not at all for all variables which
-;; may be setted. (must fix this)
-
-(define (rt-3 term)
- (let ((rt-4-result (rt-4 term)))
- (if (not rt-4-result)
- #f
- (let* ((extnumbers (append (caddr rt-4-result) (car rt-4-result)))
- (extpointers (cadr rt-4-result))
- ;;(extnumbers-writing (caddr rt-4-result))
- (extnumbers-writing '())
- (orgargs (cadddr rt-4-result))
- (returntype (cadr (cdddr rt-4-result)))
- (term (caddr (cdddr rt-4-result)))
- (mainfuncargs (cadr term))
-
- (funcname (rt-gensym2))
- (das-funcname (rt-gensym2))
- (rt-innerfuncname (rt-gensym2))
- (rt-faustsetvarfuncname (rt-gensym2))
- (rt-funcname (rt-gensym2))
-
- (make-globals-func (rt-gensym2))
- (free-globals-func (rt-gensym2))
-
- (funcarg (rt-gensym2))
-
- (globalvars (map reverse (remove (lambda (vardecl)
- (= 3 (length vardecl)))
- (cadr (caddr term)))))
-
- (publicargs (append (map (lambda (extvar)
- (rt-print2 "extvar1" extvar)
- `(<SCM> ,(symbol-append '_rt_scm_ (car extvar))))
- extnumbers-writing)
- (map (lambda (extvar)
- (rt-print2 "extvar2" extvar)
- (list (-> (cadr extvar) c-type) (car extvar)))
- (append extpointers extnumbers))
- (map (lambda (a)
- (list (cadr a) (car a)))
- orgargs)))
-
- ;; The names of the first getternames must be the same as the first setternames
- (getternames (map (lambda (extvar)
- (list (rt-gensym2) extvar))
- (append extnumbers-writing extnumbers))) ;;extpointers
- (setternames (map (lambda (extvar)
- (list (rt-gensym2) extvar))
- (remove (lambda (vardecl)
- (eq? '<struct-rt_bus-*> (-> (cadr vardecl) c-type)))
- (append extnumbers-writing extnumbers extpointers))))
-
- ;; Not a good name for this variable
- (busnames (map (lambda (extvar)
- (list (-> (cadr extvar) c-type)
- (car extvar)
- (symbol-append (car extvar) '_mirror)
- (cadddr extvar)
- (rt-gensym2)))
- (remove (lambda (vardecl)
- (not (eq? '<struct-rt_bus-*> (-> (cadr vardecl) c-type))))
- extpointers)))
-
- (inbusdef (member 'in-bus busnames (lambda (a b)
- (eq? a (nth 3 b)))))
- (outbusdef (member 'out-bus busnames (lambda (a b)
- (eq? a (nth 3 b)))))
-
-
- (i 0)
-
- (types (map (lambda (var)
- (rt-print2 "var" var)
- (list (eval-c-to-scm
- (string-trim-right
- (eval-c-get-propertype
- (car var))))
- (cadr var)))
- publicargs)))
-
- ;;(c-display "busnames" busnames)
- ;;(rt-print "publicargs" publicargs)
- ;;(rt-print "orgargs" orgargs)
- ;;(rt-print "mainfuncargs" mainfuncargs)
- ;;(rt-print "types" types)
-
- ;;(c-display "extnumbers-writing" extnumbers-writing)
- ;;(c-display "extpointers" extpointers)
- ;;(c-display "extnumbers" extnumbers)
- ;;(c-display "orgargs" orgargs)
- ;;(c-display "publicargs" publicargs)
- ;;(c-display "globalvars" globalvars)
-
- ;;(rt-print2 "term" term)
- (newline)
-
- (list funcname ; 0
- rt-faustsetvarfuncname ; 1
- rt-funcname ; 2
- extnumbers-writing ; 3
- extpointers ; 4
- extnumbers ; 5
-
- make-globals-func ; 6
-
- getternames ; 7
- setternames ; 8
- busnames ; 9
-
- `( ;;(define-struct <func_args>
- ;; <int> num_outs
- ;; <float-*> outs
- ;; <int> num_ins
- ;; <float-*> ins
- ;; <float> time
- ;; <float> samplerate
- ;; <float> res
- ;; <char-*> error
- ;; <SCM> errorvariable
- ;; <int> errorvarnum)
-
- "#include <rollendurchmesserzeitsammler.h>"
- "#include <ucontext.h>"
-
- "#include <rt-various.h>"
-
- "#include <jack/ringbuffer.h>"
- ,(if *use-alsa-midi*
- "#include <alsa/asoundlib.h>"
- "/* */")
-
- (shared-struct <RT_Event>)
- (shared-struct <RT_Procfunc>)
- (shared-struct <RT_Engine>)
-
- (shared-struct <mus_rt_readin>)
- (shared-struct <mus_rt_ladspa>)
- (shared-struct <mus_rt_faust>)
- (shared-struct <rt_coroutine>)
-
- ,bus-struct
-
- "#ifdef __GNUC__"
- "#define RT_NORETURN __attribute__ ((noreturn))"
- "#else"
- "#define RT_NORETURN"
- "#endif"
-
- (define-struct <RT_Globals>
- <void*> freefunc
- ,@rt_coroutine_elements_in_rt_globals
-
- ;; Global/Guile variables
- ,@(apply append publicargs)
-
- ;; Arguments for the main-function and variables made global because of nested functions.
- ,@(apply append globalvars)
-
- <int> is_midi_read
- ;;<int> num_outs
- ;;<float-**> outs
- ;;<int> num_ins
- ;;<float-**> ins
-
- <char-*> allocplace
- <char-*> allocplace_end
-
- ;; Adding bus-mirrors.
- ,@(apply append (map (lambda (vardecl)
- (list (car vardecl) (caddr vardecl)))
- busnames))
-
- <struct-RT_Engine*> engine
-
- ;;<struct-rt_coroutine*> coroutines
- <struct-mus_rt_faust*> faust
-
- ;; for the GC
- <tar_heap_t*> heap
- )
-
-
- ,(if (rt-is-safety?)
- "void rt_error (struct RT_Globals *rt_globals, char *msg) RT_NORETURN"
- "/* */")
-
-
- ;; Setters and getters for the RT_Globals struct
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- (public
-
- ,@(map (lambda (getter)
- (let ((funcname (car getter))
- (varname (car (cadr getter)))
- (type (-> (cadr (cadr getter)) c-type)))
- `(,type ,funcname (lambda ((<struct-RT_Globals-*> rt_globals))
- (return ,(symbol-append 'rt_globals-> varname))))))
- getternames)
- ,@(map (lambda (setter)
- (let ((funcname (car setter))
- (varname (car (cadr setter)))
- (type (-> (cadr (cadr setter)) c-type)))
- `(<void> ,funcname (lambda ((<struct-RT_Globals-*> rt_globals) (,type das_var))
- (set! ,(symbol-append 'rt_globals-> varname) das_var)))))
- setternames)
-
- ;; Setter for the buses
- ,@(map (lambda (setter)
- (let ((type (car setter))
- (funcname (cadr (cdddr setter)))
- (varname (caddr setter)))
- `(<void> ,funcname (lambda ((<struct-RT_Globals-*> rt_globals) (,type das_var))
- (set! ,(symbol-append 'rt_globals-> varname) das_var)))))
- busnames)
- )
-
-
- ;;(get-proto copyheap)
-
- (get-proto get_rt_readin_tag)
- (get-proto get_rt_bus_tag)
- (get-proto get_rt_ladspa_tag)
-
- (<scm_t_bits> rt_readin_tag)
- (<scm_t_bits> rt_bus_tag)
- (<scm_t_bits> rt_ladspa_tag)
-
- (run-now
- (set! rt_readin_tag (get_rt_readin_tag))
- (set! rt_bus_tag (get_rt_bus_tag))
- (set! rt_ladspa_tag (get_rt_ladspa_tag)))
-
- (get-proto rt_debug)
- (get-proto rt_readin)
- (get-proto rt_receive_midi)
- (get-proto rt_get_pool_element)
-
- ;;(get-proto coroutine_entry)
- (get-proto rt_set_stack_low_value)
-
-
- "typedef float (*ThreadFunc)(void)"
- "typedef float (*ReadinFunc)(struct mus_rt_readin*)"
- "typedef void (*FaustComputeFunc)(void* self,int len,float** inputs,float** outputs)"
-
- (<struct-rt_coroutine> dummy_coroutine)
-
-
- (<char*> start_dyn)
- (<char*> end_dyn)
-
- (run-now
- (if (== 0 (tar_get_dynamic_roots_for (cast <char*> &dummy_coroutine)
- &start_dyn
- &end_dyn))
- (printf (string "Error. Could not find dynamic start and end. Not good.\\n"))))
-
- ;; Preserve the values of local variables made global because of nested functions.
- (<void> rt_switch_to_coroutine (lambda (,rt-globalvardecl
- (<struct-rt_coroutine*> coroutine))
- ,@(map (lambda (globalvar)
- `(,(car globalvar) ,(cadr globalvar) ,(<_> 'rt_globals-> (cadr globalvar))))
- globalvars)
- (rt_set_stack_low_value rt_globals->current_coroutine)
- (set! rt_globals->current_coroutine coroutine)
- (set! rt_globals->time coroutine->time)
- (co_call coroutine->co)
- ,@(map (lambda (globalvar)
- `(set! ,(<_> 'rt_globals-> (cadr globalvar)) ,(cadr globalvar)))
- globalvars)))
-
- ;; Finding needed define-rt-ecs to include in this file.
- ,@(let ((function-names '())
- (functions '()))
-
- (define (add-func funcname)
- (if (not (member funcname function-names))
- (let ((func (rt-get-ec-function funcname)))
- (if func
- (begin
- (push! funcname function-names) ;; Add function-name to the list of included function
- (for-each add-func (nth 1 func)) ;; Add functions used by the function
- (push! (nth 2 func) functions)))))) ;; Add function-body to be included.
-
- ;;(c-display "all-funcs:" (rt-find-all-funcs (cdr term)))
- (for-each add-func (append '(rt_error rt_insert_coroutine_in_queue
- rt_spawn rt_run_scheduler)
- (rt-find-all-funcs (cdr term))))
- (reverse! functions))
-
-
- ;; Inserting all inner functions. All global variables have been put into the rt_global struct, and is therefore not used here.
- ,@(map (lambda (vardecl)
- (cond ((and (= 3 (length vardecl))
- (eq? 'lambda (car (caddr vardecl)))
- (let ((das-string (symbol->string (car vardecl))))
- (and (> (string-length das-string) 7)
- (string= "_rt_rn_" das-string 0 7 0 7)))
- `(functions->public
- (,(cadr vardecl) ,(car vardecl) ,(caddr vardecl))))) ;; Public available function (ie. a spawn)
- ((= 3 (length vardecl))
- (list (cadr vardecl) (car vardecl) (caddr vardecl))) ;; Function or function declaration
- (else
- "/* */"))) ;; Variable
- ;;(list (cadr vardecl) (car vardecl))))
- (cadr (caddr term)))
-
-
- ;;(,returntype ,rt-innerfuncname (lambda ,(cadr term)
- (,returntype ,rt-innerfuncname (lambda ,(cons rt-globalvardecl '()) ;; (map (lambda (t) (list (cadr t) (car t)))
- ;; orgargs)) ;;,mainfuncargs ;;,publicargs
- ,@(cddr (caddr term))))
-
- (<void> realtime_innercall (lambda (,rt-globalvardecl)
- (,rt-innerfuncname rt_globals)))
-
- ;; (Not used in realtime.)
- (<void> ,das-funcname (lambda ,(cons rt-globalvardecl '())
- (if (> (setjmp rt_globals->engine->error_jmp) 0)
- return)
-
- ,(if (rt-is-number? returntype)
- `(set! rt_globals->engine->res (,rt-innerfuncname rt_globals ));;,@(map car orgargs)))
- `(,rt-innerfuncname rt_globals )) ;;,@(map car orgargs)))
-
- ))
-
-
- (<int> rt_faustprocess (lambda (,rt-globalvardecl
- (<int> startframe)
- (<int> endframe))
-
- (<int> num_frames (- endframe startframe))
-
- (<struct-mus_rt_faust*> faust rt_globals->faust)
- (<FaustComputeFunc> compute faust->compute_func)
-
- ;; In
- ,(if inbusdef
- `(begin
- ;; bus=rt_engine->in_bus_3_mirror
- (<int> block_time rt_globals->engine->time)
- (<struct-rt_bus-*> bus ,(symbol-append 'rt_globals->
- (nth 2 (car inbusdef))))
- (<int> num_channels (EC_MIN faust->num_inputs bus->num_channels))
- (<int> channels_diff (- bus->num_channels num_channels))
- (<int> base 0)
-
- (for-each 0 num_frames
- (lambda (n)
- (for-each 0 num_channels
- (lambda (ch)
- (let* ((data <struct-rt_bus_data-*> "&bus->data[base++]"))
- (set! faust->ins[ch][n]
- (?kolon (< data->last_written_to block_time)
- 0
- data->val)))))
- (+= base channels_diff))))
- "/* No inbus */")
-
- ;; Compute
- (compute faust->dsp num_frames faust->ins faust->outs)
-
- ;; Out
- ,(if outbusdef
- `(begin
- (<int> block_time rt_globals->engine->time)
- ;; bus=rt_engine->out_bus_4_mirror
- (<struct-rt_bus-*> bus ,(symbol-append 'rt_globals->
- (nth 2 (car outbusdef))))
- (<int> num_channels (EC_MIN faust->num_outputs bus->num_channels))
- (<int> channels_diff (- bus->num_channels num_channels))
- (<int> base 0)
-
- (for-each 0 num_frames
- (lambda (n)
- ;;(<int> base (* bus->num_channels n))
- (for-each 0 num_channels
- (lambda (ch)
- (let* ((data <struct-rt_bus_data-*> "&bus->data[base++]"))
- ,(rt-clean-write-bus 'faust->outs[ch][n]))))
- (+= base channels_diff))))
- "/* No outbus */")
-
- (return 0)))
-
- (<void> free_globals_func (lambda ((<struct-RT_Globals-*> rt_globals)
- (<int> do_I_free_questionmark)) ;; free_globals_func is called two times. if do_I_free_questionmark is 0, it is called from the relatime thread immediately after being removed from the list of instruments.
- (if do_I_free_questionmark
- (begin
- (fprintf stderr (string "hepp, deleting rt_globals: %p, heap: %p, coroutine: %p\\n")
- rt_globals rt_globals->heap rt_globals->main_coroutine.co)
- (free rt_globals->queue)
- (free rt_globals->block_queue)
- (scm_gc_unregister_collectable_memory rt_globals->heap ,(+ (* *tar-nonatomic-heap-size* 2) (* *tar-max-mem-size* 4)) (string "rollendurch/stalin heap"))
- (tar_delete_heap rt_globals->heap true) ;; tar_init_block is always called!
- ;(if (> rt_globals->engine->num_procfuncs 0)
- ; (tar_delete_heap rt_globals->heap true)
- ; (tar_delete_heap rt_globals->heap false))
- (free rt_globals)
- )
- (begin ;; In case the scheduler in rt_engine has removed us, the coroutines will be freed here. (this can be quite heavy...)
- ;; rescheduling everything to mininmize number of context switches.
- (<struct-rt_coroutine*> coroutines NULL)
- (while (or (> rt_globals->queue_size 0)
- (> rt_globals->block_queue_size 0))
- (begin
- (<struct-rt_coroutine*> coroutine (rt_get_first_coroutine_in_queue rt_globals))
- (if (!= coroutine &rt_globals->main_coroutine)
- (begin
- (set! coroutine->next coroutines)
- (set! coroutines coroutine)
- (set! coroutine->stop_me 1)))))
- (while (!= NULL coroutines)
- (rt_insert_coroutine_in_queue rt_globals coroutines 0 0)
- (set! coroutines coroutines->next))
- (rt_insert_coroutine_in_queue rt_globals &rt_globals->main_coroutine 1 0) ;; This one last.
- (rt_run_scheduler rt_globals)))))
-
- (public
-
- (<void-*> ,make-globals-func (lambda ((<struct-RT_Engine-*> engine))
- (let* ((rt_globals <struct-RT_Globals-*> (calloc 1 (sizeof <struct-RT_Globals>))))
- (set! rt_globals->freefunc free_globals_func)
- (set! rt_globals->engine engine)
-
- ;; INT_MAX __MUST__ be set to INT64_MAX when switching to 64 bit.
- (set! rt_globals->next_scheduled_time INT_MAX)
-
- (set! rt_globals->current_coroutine &rt_globals->main_coroutine)
- (begin
- (set! rt_globals->queue (calloc ,queue-max-size (sizeof <struct-rt_coroutine*>)))
- (set! rt_globals->block_queue (calloc ,queue-max-size (sizeof <struct-rt_coroutine*>)))
- (set! dummy_coroutine.time 0)
- (for-each 0 ,queue-max-size
- (lambda (i)
- (set! rt_globals->queue[i] &dummy_coroutine)
- (set! rt_globals->block_queue[i] &dummy_coroutine))))
-
- ;;(fprintf stderr (string "new heap start %p\\n") &dummy_coroutine)
- (set! rt_globals->heap (tar_create_heap))
- (scm_gc_register_collectable_memory rt_globals->heap ,(+ (* *tar-nonatomic-heap-size* 2) (* *tar-max-mem-size* 4)) (string "rollendurch heap"))
- ;;(fprintf stderr (string "new heap end %p %p\\n") start_dyn end_dyn)
-
- (return rt_globals))))
-
-
- (<void*> ,rt-faustsetvarfuncname (lambda ((<struct-RT_Globals*> rt_globals)
- (<struct-mus_rt_faust*> faust))
- (if (== NULL faust)
- (return rt_globals->faust))
- (set! rt_globals->faust faust)
- (return faust))))
-
-
-
- (<void> myerror (lambda ((<char*> string))
- (rt_debug (string "Error: %s.") string)))
-
- (functions->public
-
- (<int> ,rt-funcname (lambda (,rt-globalvardecl
- (<int> startframe)
- (<int> endframe))
-
- ,(if (null? orgargs)
- `(begin
- ;;(fprintf stderr (string "jepp %u\\n") rt_globals->engine)
- (<struct-RT_Engine-*> engine rt_globals->engine)
- (<tar_heap_t*> heap rt_globals->heap)
-
- (if (not (== 0 rt_globals->remove_me))
- (return 1))
-
- (if (!= NULL rt_globals->faust)
- (return (rt_faustprocess rt_globals startframe endframe)))
-
- (tar_before_using_heap heap)
-
- (set! rt_globals->prev_block_time engine->prev_block_time)
- (set! rt_globals->block_time engine->block_time)
- (set! rt_globals->time (+ engine->block_time
- startframe))
-
- (set! rt_globals->allocplace_end engine->allocplace_end)
-
- (set! rt_globals->is_midi_read 0)
-
- ;;((<struct-rt_bus-*> renamed_var__3 renamed_var__3_mirror out-bus rt_gen529))
- ;; Copying buses
- ,@(map (lambda (busdecl)
- `(set! ,(symbol-append 'rt_globals-> (nth 1 busdecl)) ;; busname
- ,(symbol-append 'rt_globals-> (nth 2 busdecl)))) ;; busname_mirror
- busnames)
-
- (if (and (== 0 rt_globals->queue_size)
- (== 0 rt_globals->block_queue_size))
- (rt_spawn rt_globals realtime_innercall 0))
-
- ;; Note that current_coroutine points to main_coroutine here.
- (set! rt_globals->main_coroutine.co (co_current))
- (rt_insert_coroutine_in_queue rt_globals
- rt_globals->current_coroutine
- (+ rt_globals->block_time
- endframe)
- 0)
- (let* ((old_heap <tar_heap_t*> (clm_set_tar_heap heap))
- (old_ef <error_func_t> (clm_set_error_func myerror)))
- (rt_run_scheduler rt_globals)
- (clm_set_error_func old_ef)
- (clm_set_tar_heap old_heap))
-
- (if (and (== 0 rt_globals->queue_size)
- (== 0 rt_globals->block_queue_size))
- (set! rt_globals->remove_me 1))
-
-
- (if (== (tar_after_using_heap heap) true)
- (when (== 0 rt_globals->remove_me)
- ;;(rt_debug (string "data: %d, stack: %d %d %d, used mem: %d, used atomic mem: %d")
- ;; (abs (- end_dyn start_dyn))
- ;; -1 -1 -1
- ;; ;;(abs (- stack_top stack_bot))
- ;; ;;stack_bot
- ;; ;;stack_top
- ;; (tar_get_used_mem heap)
- ;; (tar_get_used_atomic_mem heap)
- ;; )
-
- (tar_add_root_concurrently heap start_dyn end_dyn) ; static data
- (for-each 0 rt_globals->queue_size
- (lambda (i)
- (<struct-rt_coroutine*> coroutine rt_globals->queue[i+1])
- (tar_add_root_concurrently heap coroutine->stack_low coroutine->stack_high) ;stacks
- (tar_add_root_concurrently heap coroutine->co (+ (cast <char*> coroutine->co) ;registerss
- (EC_MAX (sizeof <ucontext_t>)
- (sizeof <jmp_buf>))))))
- (for-each 0 rt_globals->block_queue_size
- (lambda (i)
- (<struct-rt_coroutine*> coroutine rt_globals->block_queue[i+1])
- (tar_add_root_concurrently heap coroutine->stack_low coroutine->stack_high) ;stacks
- (tar_add_root_concurrently heap coroutine->co (+ (cast <char*> coroutine->co) ;registerss
- (EC_MAX (sizeof <ucontext_t>)
- (sizeof <jmp_buf>))))))
- (tar_add_root_concurrently heap rt_globals (+ (cast <char*> rt_globals) (sizeof <struct-RT_Globals>))) ;; dynamic data
- (tar_start_gc heap)
-
- ))
-
- (return rt_globals->remove_me))
-
- `(begin
- (rt_error rt_globals (string "Main function can not take any arguments."))
- (return 1))))))
-
- (public
- (<float> ,funcname (lambda ((<SCM> argvect))
- (<struct-RT_Engine> temp2 {0})
- (<struct-RT_Engine-*> engine &temp2)
-
- (,rt-globalstructname temp {0} )
- ,(append rt-globalvardecl '(&temp))
-
- (set! rt_globals->engine engine)
-
- ;;(<struct-func_args> ,funcarg "{0}")
-
- (SCM_ASSERT (== ,(length publicargs) (SCM_VECTOR_LENGTH argvect))
- argvect
- 0
- (string "Wrong number of arguments."))
-
- ,@(map (lambda (n name)
- `(<SCM> ,(cadr name) (SCM_VECTOR_REF argvect ,n)))
- (iota (length publicargs))
- publicargs)
-
- ,@(map (lambda (das-type)
- (let* ((type (car das-type))
- (name (cadr das-type)))
- (cond ((string=? "UNSPECIFIED" type)
- (c-display "\n\nError! rt-compiler.scm/eval-c.scm/eval-c-gen-public-func: Strange type for " das-type "\n\n"))
- ((string=? "SCM" type) "/* */")
- (else
- `(SCM_ASSERT ,(cond ((string=? "STRING" type) `(|| (scm_is_false ,name) (XEN_STRING_P ,name)))
- ((string=? "POINTER" type) `(POINTER_P ,name))
- ((string=? "INTEGER" type) `(== SCM_BOOL_T (scm_number_p ,name)))
- ((string=? "FLOAT" type) `(== SCM_BOOL_T (scm_number_p ,name)))
- ((string=? "DOUBLE" type) `(== SCM_BOOL_T (scm_number_p ,name)))
- (else (c-display "\n\nError! eval.cscm/eval-c-gen-public-func: What?\n\n")))
- ,name
- ,(let ((ret i)) (set! i (1+ i)) ret)
- (string ,type))))))
- types)
-
- ,@(map (lambda (type)
- `(set! ,(symbol-append 'rt_globals-> (cadr type)) ,(list (string->symbol (<-> "GET_" (car type)))
- (cadr type))))
- types)
-
- (,das-funcname rt_globals)
-
- (SCM_ASSERT (== NULL rt_globals->engine->error)
- rt_globals->engine->errorvariable
- rt_globals->engine->errorvarnum
- rt_globals->engine->error)
- ;;(SCM_ASSERT (== NULL ,(symbol-append funcarg '.error))
- ;; ,(symbol-append funcarg '.errorvariable)
- ;; ,(symbol-append funcarg '.errorvarnum)
- ;; ,(symbol-append funcarg '.error))
- (return rt_globals->engine->res))))))))))
-
-
-
-#!
-
-(do ((i 0 (1+ i)))
- ((= i 10))
- (display i)
- (newline))
-
-(macroexpand-1 '(rt-macro-do ((i 0 (1+ i)))
- ((= i 10))
- (printf "%f\\n" i)))
-(macroexpand-1 '(rt-macro-while (not (= i 10))
- (printf "%f\\n" i)
- (set! i (1+ i))))
-
-(define a (rt-2 '(lambda ()
- (do ((i 0 (1+ i)))
- ((= i 10) (+ 2 5))
- (printf "%d\\n" i)))))
-(define a (rt-2 '(lambda ()
- (let* ((a 0))
- a)
- 3)))
-(rt-funcall a 8)
-
-(define a (rt-2 '(lambda (a)
- (begin
- (printf "sdf")))))
-
-(begin a)
-
-(define c 6)
-(define b 9)
-(let ((d 5.2))
- (c-display "res" (rt-funcall a 2))
- (c-display "c" c))
-(begin c)
-
-(rt (lambda ()
- (sin 50)))
-
-
-(define (tak x y z)
- (if (not (< y x))
- z
- (tak (tak (- x 1) y z)
- (tak (- y 1) z x)
- (tak (- z 1) x y))))
-
-(define-rt2 (tak-rt x y z)
- (declare (<int> x y z))
- (if (not (< y x))
- z
- (tak-rt (tak-rt (- x 1) y z)
- (tak-rt (- y 1) z x)
- (tak-rt (- z 1) x y))))
-
-(tak-rt 30 13 6)
-(tak 30 13 6)
-
-
-(define (hanoi n)
- (letrec ((move-them
- (lambda (n from to helper)
- (if (> n 1)
- (begin
- (move-them (- n 1) from helper to)
- (move-them (- n 1) helper to from))))))
- (move-them n 0 1 2)))
-(define-rt2 (hanoi-rt n)
- (letrec ((move-them (lambda (n from to helper)
- (declare (<int> n))
- (if (> n 1)
- (begin
- (move-them (- n 1) from helper to)
- (move-them (- n 1) helper to from))))))
- (move-them n 0 1 2)))
-
-(hanoi 19)
-(hanoi-rt 19)
-
-!#
-
-
-
-(define* (rt-2 term #:key (engine *rt-engine*))
- (let ((rt-3-result (rt-3 term))
- (orgterm term)
- (orgargs (cadr term)))
- ;;(c-display (nth 3 rt-3-result) (nth 5 rt-3-result))
- (if (not rt-3-result)
- (throw 'compilation-failed)
- (let* ((funcname (nth 0 rt-3-result))
- (rt-faustsetvarfuncname (nth 1 rt-3-result))
- (rt-funcname (nth 2 rt-3-result))
- ;;(extnumbers-writing (caddr rt-3-result))
- (extnumbers-writing '()) ;; Numbers are not writable anymore. See two lines down.
- (extpointers (nth 4 rt-3-result))
- (extnumbers (append (nth 3 rt-3-result) (nth 5 rt-3-result))) ;; extnumbers-writing trasfered here.
- (make-globals-func (nth 6 rt-3-result))
- (getternames (nth 7 rt-3-result))
- (setternames (nth 8 rt-3-result))
- (busnames (nth 9 rt-3-result))
- (term (nth 10 rt-3-result))
- (callmacro (procedure->macro
- (lambda (x env)
- (if (null? extnumbers-writing)
- `(,funcname (vector ,@(map (lambda (extvar)
- (let ((name (cadddr extvar))
- (type (cadr extvar)))
- `(->2 ,type transform ,name ',name)))
- (append extnumbers-writing extpointers extnumbers))
- ,@(cdr x)))
- `(begin
- ;;,@(map (lambda (extvar)
- ;; `(if (number? ,(cadddr extvar))
- ;; (set! ,(cadddr extvar) (exact->inexact ,(car extvar)))))
- ;; extnumbers-writing)
- (,funcname (vector ,@(map (lambda (extvar)
- (let ((name (cadddr extvar))
- (type (cadr extvar)))
- `(->2 ,type transform ,name ',name)))
- (append extnumbers-writing extpointers extnumbers))
- ,@(cdr x))))))))
- (externs (list-copy rt-extern-variables))
- (rt-callmacro (procedure->macro
- (lambda (x env)
- (let ((isoutdefined? (defined? 'out-bus env))
- (isindefined? (defined? 'in-bus env)))
- `(begin
- (set! *rt-local-code-environment* (the-environment))
- (letrec* ((rt-current-rt #f)
- ,@externs)
- (let* ((extra-gc-vars (make-hash-table 19))
- (buses (make-hash-table 19))
- (rt-globals (,make-globals-func (-> *rt-engine* engine-c)))
- ;;(isoutdefined? (defined? 'out-bus env))
- (ret (<realtime> (,rt-funcname)
- rt-globals
- ;; This variable is gc-marked manually in the funcall smob.
- (list extra-gc-vars ,@(map (lambda (p)
- (let ((ret (cadddr p)))
- (if (eq? 'out-bus ret)
- (if isoutdefined?
- 'out-bus
- '*out-bus*)
- (if (eq? 'in-bus ret)
- (if isindefined?
- 'in-bus
- '*in-bus*)
- ret))))
- extpointers))
- ,engine)))
-
- ;; Make sure these never dissapear.
- (if ,isoutdefined?
- (hashq-set! extra-gc-vars (gensym) out-bus))
- (if ,isindefined?
- (hashq-set! extra-gc-vars (gensym) in-bus))
-
- ;; Setting all Guile variables (tranforming vars Guile->RT)
- ,@(map (lambda (setter)
- (let* ((funcname (car setter))
- (extvar (cadr setter))
- (name (cadddr extvar))
- (type (cadr extvar)))
- `(begin
- (,funcname rt-globals
- (->2 ,type transform
- ,name
- ',name
- (lambda (var)
- (hashq-set! extra-gc-vars (gensym) var)))))))
- setternames)
-
- ;; Setting all Guile bus variables (tranforming vars Guile->RT)
- ;;((<struct-rt_bus-*> renamed_var__3 renamed_var__3_mirror out-bus rt_gen529))
- ,@(map (lambda (busname)
- ;;(c-display "gakk?" isoutdefined?)
- (let ((type (hashq-ref rt-types '<bus>))
- (name (cadddr busname))
- (funcname (cadr (cdddr busname))))
- ;;(c-display type name funcname)
- (if (eq? 'out-bus name)
- (if isoutdefined?
- `(,funcname rt-globals
- (->2 ,type transform
- out-bus
- 'out-bus
- (lambda (var)
- (hashq-set! extra-gc-vars (gensym) var))))
- `(,funcname rt-globals
- (->2 ,type transform
- *out-bus*
- '*out-bus*
- (lambda (var)
- (hashq-set! extra-gc-vars (gensym) var)))))
- (if (eq? 'in-bus name)
- (if isindefined?
- `(,funcname rt-globals
- (->2 ,type transform
- in-bus
- 'in-bus
- (lambda (var)
- (hashq-set! extra-gc-vars (gensym) var))))
- `(,funcname rt-globals
- (->2 ,type transform
- *in-bus*
- '*in-bus*
- (lambda (var)
- (hashq-set! extra-gc-vars (gensym) var)))))
- `(,funcname rt-globals
- (->2 ,type transform
- ,name
- ',name
- (lambda (var)
- (hashq-set! extra-gc-vars (gensym) var))))))))
- busnames)
-
- ;; Adding setters for number-variables.
- ,@(map (lambda (getter setter)
- (let* ((setterfuncname (car setter))
- (extvar (cadr setter))
- (name (cadddr extvar))
- (type (cadr extvar)))
- `(->2 ret add-method ',name (make-procedure-with-setter
- (lambda ()
- (,(car getter) rt-globals))
- (lambda (newval)
- (,setterfuncname rt-globals (rt-number-2-rt newval)))))))
- getternames
- setternames)
-
- (->2 ret add-method 'faust
- (let ((faust #f))
- (lambda arg
- (cond ((null? arg)
- faust)
- ((not (and (object? (car arg))
- (eq? '<mus_rt_faust> (-> (car arg) class-name))))
- (c-display "Error." (car arg) "is not a faust object."))
- (else
- (set! faust (car arg))
- (,rt-faustsetvarfuncname rt-globals (-> faust get-c-object)))))))
-
- ;; Adding "getter" for the pointers.
- ,@(map (lambda (pointer)
- `(->2 ret add-method ',pointer (lambda ()
- ,pointer)))
- (map cadddr extpointers))
-
-
- ;; Adding setters for buses
- ;;((<struct-rt_bus-*> renamed_var__3 renamed_var__3_mirror out-bus rt_gen529))
- ,@(map (lambda (busname)
- (let ((type (car busname))
- (name (cadddr busname))
- (func (cadr (cdddr busname))))
- `(->2 ret add-method ',name (make-procedure-with-setter
- (lambda ()
- ,name)
- (lambda (newval)
- (if (not (rt-bus-p newval))
- (c-display "Error." newval "is not a bus.")
- (begin
- ;; There is a memory-leak here. Should (gensym) be exchanged with ,name?
- (hashq-set! extra-gc-vars (gensym) newval)
- (,func rt-globals (SCM_SMOB_DATA newval)))))))))
- busnames)
-
- ;; Adding "getter" for in-bus and out-bus (TODO, setter as well, that would be very cool.)
- ;(if ,isoutdefined?
- ; (->2 ret add-method 'out-bus (lambda ()
- ; out-bus))
- ; (->2 ret add-method 'out-bus (lambda ()
- ; *out-bus*)))
- ;(if ,isindefined?
- ; (->2 ret add-method 'in-bus (lambda ()
- ; in-bus))
- ; (->2 ret add-method 'in-bus (lambda ()
- ; *in-bus*)))
- (set! rt-current-rt ret)
- ret))))))))
-
- (apply eval-c-non-macro (append (list (<-> "-I" snd-header-files-path " -ffast-math ") ;; "-ffast-math") ;; " -Werror "
- #f
- "#include <math.h>"
- "#include <clm.h>"
- "#include <xen.h>"
- "#include <vct.h>"
- "#include <clm2xen.h>"
- "#include <ladspa.h>"
- "#include <pcl.h>"
-
- (if (provided? 'snd-pd-external)
- "#include <m_pd.h>"
- "")
- (if (provided? 'snd-pd-external)
- "#include <snd_pd_external.h>"
- "")
- "typedef struct {
- mus_any_class *core;
- int chans;
- mus_float_t *vals;
- bool data_allocated;
- } mus_frame"
-
- "typedef struct {
- mus_any_class *core;
- mus_any *outn_writer;
- mus_any *revn_writer;
- mus_frame *outf, *revf;
- mus_float_t *outn;
- mus_float_t *revn;
- int chans, rev_chans;
- mus_interp_t type;
- mus_float_t reverb;
- } locs;"
-
- )
-
-
- term))
-
- (list 'rt-rt
- callmacro
- rt-callmacro
- (primitive-eval funcname)
- (primitive-eval rt-funcname))))))
-
-
-
-;; Yepp, has to redefine set!
-(define rt-old-set! set!)
-(define-macro (set! var val)
- (if (and (list? var)
- (eq? '-> (car var)))
- `((setter (<- ,@(cdr var))) ,val)
- `(,rt-old-set! ,var ,val)))
-
-
-;; rt-1 + compiled code cache handling.
-(define *rt-cached-funcs* (make-hash-table 997))
-(define* (rt-1 term #:key (engine *rt-engine*))
- (rt-gensym-reset)
- (rt-extern-reset)
-
- ;;(c-display "term after:" term)
-
- (let* ((key (list term
- (rt-safety) ;; Everything that can change the compiled output must be in the key.
- (-> engine samplerate))) ;; If saving to disk, the result of (version) and (snd-version) must be added as well. (and probably some more)
- (cached (hash-ref *rt-cached-funcs* key)))
- ;;(c-display "term/cached" term cached)
- (or cached
- (let ((new-rt (rt-2 (deep-list-copy term)))) ;; <- Hmm. Thats really bad. Seems like a set-car! is performed
- (hash-set! *rt-cached-funcs* key new-rt) ;; on term somewhere. Fix it with a deep-list-copy for now.
- new-rt))))
-(define (rt-clear-cache!)
- (set! *rt-cached-funcs* (make-hash-table 997)))
-
-;;(define (rt-1 term)
-;; (rt-2 term))
-
-(define *rt-local-code-environment* (the-environment))
-
-;; rt
-(define-macro (rt-compile term)
- `(begin
- ;;(set! *rt-local-code-environment* (the-environment)) ;; *rt-local-etc.* must be placed directly in the macro for hygenic reasons.
- ;; For example, if placed in rt-1, "term" willl be in the environment.
- ;; No, this one belongs in the procedure->macro block in rt-2.
- (rt-1 ',term)))
-(define-macro (rt-c term)
- `(rt-compile ,term))
-
-(define-macro (rt-func term)
- (let ((das-rt (rt-1 term)))
- (if (not das-rt)
- #f
- `(lambda ,(cadr term)
- (set! *rt-local-code-environment* (the-environment)) ;; Should probably be moved into rt-2...
- (,(cadr das-rt) ,@(cadr term))))))
-
-(define-macro (define-rt2 def . body)
- `(define ,(car def) (rt-func (lambda ,(cdr def)
- (define ,def
- ,@body)
- (,(car def) ,@(cdr def))))))
-
-(define-macro (rt-funcall rt-func . args)
- `(begin
- (set! *rt-local-code-environment* (the-environment)) ;; Should probably be moved into rt-2...
- (cadr ,rt-func) ,@args))
-
-(define *rt* #f)
-(define *rt1* #f)
-(define *rt2* #f)
-(define *rt3* #f)
-(define *rt4* #f)
-(define-macro (<rt> rt-func)
- `(begin
- (let ((ret ((caddr (rt-compile ,rt-func)))))
- (set! *rt4* *rt3*)
- (set! *rt3* *rt2*)
- (set! *rt2* *rt1*)
- (set! *rt1* *rt*)
- (set! *rt* ret)
- ret)))
-
-
-(define-macro (<rt-block> code)
- `(<rt> (lambda ()
- (block
- ,@(cddr code)))))
-
-(define-macro (rt-play-macro play-type eval-type rest)
- (let ((start #f)
- (dur #f)
- (func (last eval-type))
- (instrument (rt-gensym2))
- (start2 (rt-gensym2))
- (keyargs (let ((ret (find-tail keyword? rest))) (if (not ret) '() ret)))
- (args (take-while (lambda (x) (not (keyword? x)))
- rest)))
- (cond ((= 2 (length args))
- `(let ((,instrument ,eval-type))
- (-> ,instrument ,play-type ,(car rest) ,(cadr rest) ,@keyargs)
- ,instrument))
- ((= 1 (length args))
- `(let ((,instrument ,eval-type))
- (-> ,instrument ,play-type ,(car rest) ,@keyargs)
- ,instrument))
- ((= 0 (length args))
- `(let ((,instrument ,eval-type))
- (-> ,instrument ,play-type ,@keyargs)
- ,instrument))
- (else
- (throw 'wrong-number-of-arguments-to-<rt-play>)))))
-
-
-(define*2 (<rt-play-do> play-type :key (out-bus #f) (in-bus #f) :allow-other-keys :rest rest)
- `(let (,@(if in-bus `((in-bus ,in-bus)) '())
- ,@(if out-bus `((out-bus ,out-bus)) '()))
- (rt-play-macro ,play-type
- (<rt-block> ,(last rest))
- ,(rt-fix-infix-nonrt (c-butlast rest)))))
-#!
-(<rt-play-do> 'play :out-bus #f :gakk 9 2 3 4)
-!#
-
-(define-macro (<rt-play> . rest)
- (apply <rt-play-do> (cons 'play rest)))
-
-(define-macro (<rt-play-abs> . rest)
- (apply <rt-play-do> (cons 'play-abs rest)))
-
-
-(define-macro (<rt-run> . rest)
- (define instrument (gensym))
- (define wait #f)
- (define code rest)
- (when (equal? (car rest) :wait)
- (set! code (cddr rest))
- (set! wait (cadr rest)))
- (if wait
- `(let ((,instrument (<rt> (lambda ()
- ,@code
- (rt_return_void)))))
- (-> ,instrument play ,wait))
- `(let ((,instrument (<rt> (lambda ()
- ,@code
- (rt_return_void)))))
- (-> ,instrument play))))
-
-;; `(rt-play-macro play-abs (<rt> ,(last rest)) ,(c-butlast rest)))
-
-
-(define-macro (definstrument def . body)
- ;; First compile up any rt-code.
- ;;(c-display "Oh yeah")
- (let ((rt-funcs '()))
-
- (define (add-rt-func code)
- (let ((name (rt-gensym2)))
- (push! (list name code)
- rt-funcs)
- name))
-
- (define (find-rt term)
- (cond ((null? term) term)
- ((not (list? term)) term)
-
- ;((eq? 'rt-compile (car term))
- ; (let ((func (add-rt-func (cadr term))))
- ; `((cadr ,func))))
-
- ((eq? '<rt> (car term))
- ;;(find-rt (macroexpand-1 term)))
- (let ((func (add-rt-func (cadr term))))
- `((caddr ,func))))
-
- ((eq? '<rt-block> (car term))
- (find-rt (macroexpand-1 term)))
-
- ((eq? '<rt-run> (car term))
- (find-rt (macroexpand-1 term)))
-
- ((eq? '<rt-out> (car term))
- (find-rt (macroexpand-1 term)))
-
- ((eq? '<rt-play> (car term))
- (find-rt (macroexpand-1 term)))
-
- ((eq? '<rt-play-abs> (car term))
- (find-rt (macroexpand-1 term)))
-
- (else
- (map find-rt term))))
-
- (if (or (member #:optional def)
- (member #:rest def))
- (begin
- (c-display "Rest or optional argument is not possible with definstrument :-(")
- (throw 'gakk)))
-
- (let ((keymember (member #:key def)))
- (if keymember
- (set-cdr! keymember (append (list '(out-bus *out-bus*) '(in-bus *in-bus*)) (cdr keymember)))
- (set! def (append def (list #:key '(out-bus *out-bus*) '(in-bus *in-bus*))))))
-
- (let ((newbody (find-rt body)))
- (if (not (null? rt-funcs))
- (if (string? (car body))
- `(define ,(car def)
- (let ,(map (lambda (def)
- `(,(car def) (rt-compile ,(cadr def))))
- rt-funcs)
- (lambda* ,(cdr def)
- ,@(cdr newbody))))
- `(define ,(car def)
- (let ,(map (lambda (def)
- `(,(car def) (rt-compile ,(cadr def))))
- rt-funcs)
- (lambda* ,(cdr def)
- ,@newbody))))
- `(define* ,def
- ,@body)))))
-
-
-#!
-(define (a b c)
- 2 3 4)
-(define a
- (let ((asdfa asdfadsf))
- (lambda (b c)
- 2 3 4)))
-
-(<rt-play> start dur
- (lambda ()
- (out (* (env amp-env)))))
-!#
-
-(define-macro (<rt-out> . body)
- (define start #f)
- (define len #f)
- (define in-bus #f)
- (define out-bus #f)
- (let loop ((body body))
- (cond ((keyword? (car body))
- (cond ((eqv? :start (car body))
- (set! start (cadr body))
- (loop (cddr body)))
- ((eqv? :in-bus (car body))
- (set! in-bus (cadr body))
- (loop (cddr body)))
- ((eqv? :out-bus (car body))
- (set! out-bus (cadr body))
- (loop (cddr body)))
- ((or (eqv? :len (car body))
- (eqv? :length (car body)))
- (set! len (cadr body))
- (loop (cddr body)))
- ((eqv? :dur (car body))
- (set! start (cadr body))
- (set! len (caddr body))
- (loop (cdddr body)))
- (else
- (error (list "Unknown keyword" (car body) " for <rt-out>. Legal keywords are start/len/dur.")))))
- ((and start len)
- ;;(c-display "start/len" start len in-bus out-bus)
- `(<rt-play> :in-bus ,in-bus :out-bus ,out-bus ,start ,len (lambda () (out ,@body))))
- (start
- `(<rt-play> :in-bus ,in-bus :out-bus ,out-bus ,start (lambda () (out ,@body))))
- (len
- `(<rt-play> :in-bus ,in-bus :out-bus ,out-bus 0 ,len (lambda () (out ,@body))))
- (else
- `(<rt-play> :in-bus ,in-bus :out-bus ,out-bus (lambda () (out ,@body)))))))
-#!
-(<rt-out> :start 3 :len 1 (oscil (extern (make-oscil))))
-(<rt-out> :dur 3 1 (oscil (extern (make-oscil))))
-!#
-
-
-(c-display "#:RT-Compiler loaded successfully...")
-
-
-
-#!
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;; Drodle ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(rt-2 '(lambda ()
- (+ 2 a 35)))
-
-(rt-2 '(lambda ()
- (call-with-current-continuation
- (lambda (return)
- (return 2)))))
-
-
-(define a (rt-2 '(lambda ()
- (call-with-current-continuation
- (lambda (return)
- (return 2)
- 5)))))
-(rt-funcall a)
-
-(define a (rt-2 '(lambda ()
- (let* ((a (lambda ()
- 9))
- (b a))
- (b)))))
-
-(define a (rt-2 '(lambda ()
- (let ((a (lambda ()
- 5)))
- a))))
-
-(define a (rt-2 '(lambda ()
- (((lambda ()
- (lambda ()
- 5)))))))
-
-
-(define a (rt-2 '(lambda ()
- (let ((a (let ((b (lambda ()
- 9)))
- b)))
- (a)))))
-
-(rt-funcall a)
-
-
-
-;; Closure: (is not supposed to work)
-(define a (rt-2 '(lambda ()
- (let* ((a (lambda (b)
- (lambda ()
- (the <int> b))
- )))
- ((a 50))))))
-;; Wrong result:
-(rt-funcall a)
-(rte-frames)
-(-> *rt-engine* dir)
-
-(lambda ((<struct-RT_Globals> *rt_globals))
- (let* ((b__2 <int>)
- (rt_gen413__3 <int> (lambda ((<struct-RT_Globals> *rt_globals))
- (return (the <int> rt_globals->b__2))))
- (a__1 (<int> (<struct-RT_Globals-*>)) (lambda-decl ((<struct-RT_Globals> *rt_globals) (<int> b__2))))
- (rt_gen415 (<int> (<struct-RT_Globals-*>)) (lambda ((<struct-RT_Globals> *rt_globals)
- (<int> _rt_local_b__2))
- (set! rt_globals->b__2 _rt_local_b__2)
- (begin
- (begin
- (return rt_gen413__3)))))
- (a__1 (<int> (<struct-RT_Globals-*>)) (lambda ((<struct-RT_Globals> *rt_globals)
- (<int> _rt_local_b__2))
- (let* ((rt_gen416 <int> rt_globals->b__2)
- (_rt_ret (<int> (<struct-RT_Globals-*>)) (rt_gen415 rt_globals _rt_local_b__2)))
- (set! rt_globals->b__2 rt_gen416)
- (return _rt_ret)))))
- (let* ((rt_gen414__4 (<int> (<struct-RT_Globals-*>))))
- (begin
- (begin
- (set! rt_gen414__4 (a__1 rt_globals 50))
- (return (rt_gen414__4 rt_globals)))))))
-
-
-(rt-2 '(lambda ()
- (begin
- (range i 0 (mus-channels loc)
- (rt-set-locvals loc i 5))
- (range i 0 (mus-channels (rt-get-loc-outf loc))
- (out i (rt-get-float-val (mus-data (rt-get-loc-outf loc)) i))))))
-
-(rt-2 '(lambda ()
- (begin
- (range i 0 (mus-channels locs)
- (rt-set-locvals locs i 5))
- (range i 0 (mus-channels (rt-get-loc-outf locs))
- (out i (rt-get-float-val (mus-data (rt-get-loc-outf locs)) i))))))
-
-(macroexpand-1 '(rt-macro-locsig locs 5))
-
-(define a (rt-2 '(lambda ()
- (letrec ((das_func (lambda ()
- (let ((a 2))
- (while (< a 10)
- (printf "ai: %d\\n" a)
- (if (>= a 5)
- (break))
- (set! a (1+ a))
- (let ((ai (lambda ()
- (if (odd? a)
- (continue)))))
- (ai))
- (set! a (1+ a))
- ;;(das_func)
- ;;(break)
- )
- a))))
- (das_func)))))
-(rt-funcall a)
-
-(define a (rt-2 '(lambda ()
- (let ((ai (lambda (a)
- 5)))
- (ai 2)))))
-
-(define a (rt-2 '(lambda ()
- (let loop ((a 5)
- (b 6)
- (c 7))
- (if (< (+ a b c) 100)
- (loop (1+ a) (1+ b) (1+ c))
- (+ a b c))))))
-
-(define a (rt-2 '(lambda ()
- (range i 0 5
- (printf "%d " i)))))
-
-(rt-funcall a)
-
-
-;; Error:
-(define a (rt-2 '(lambda ()
- (let ((a 1))
- (letrec ((a 2)
- (b (let ((c (lambda ()
- a)))
- (c))))
- b)))))
-
-(rt-funcall a)
-
-
-(provided? 'snd-pd-external)
-
-(rt-macroexpand '(< a 3))
-
-!#
-
-
-
diff --git a/rt-coroutines.scm b/rt-coroutines.scm
deleted file mode 100644
index be5c3d5..0000000
--- a/rt-coroutines.scm
+++ /dev/null
@@ -1,793 +0,0 @@
-
-(define *coroutine-stacksize* 4096)
-
-
-(define-ec-struct <rt_coroutine>
- <int64> time
- ;;<rt_coroutine> next
- <void*> func
- <jmp_buf> remove_me
- <int> stop_me
- <int> run_scheduler_when_removed
- <struct-rt_coroutine*> next
- <void*> stack_high
- <void*> stack_low
- <coroutine_t> co
- <struct-RT_Globals*> rt_globals)
-
-
-(define rt_coroutine_elements_in_rt_globals
- (flatten '((<struct-rt_coroutine-*> current_coroutine)
- (<struct-rt_coroutine-**> queue)
- (<struct-rt_coroutine-**> block_queue)
- (<struct-rt_coroutine> main_coroutine)
- (<int> remove_me)
- (<int> queue_size)
- (<int> block_queue_size)
- (<int64> time)
- (<int64> block_time)
- (<int64> prev_block_time)
- (<int> next_scheduled_time))))
-
-
-
-(<rt-type> '<coroutine>
- (lambda (coroutine)
- (and (object? coroutine)
- (eq? '<rt_coroutine> (-> coroutine class-name))))
- #f
- :transformfunc
- (lambda (coroutine)
- (-> coroutine get-c-object))
- :c-type '<struct-rt_coroutine-*>)
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;; Scheduler
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;; priority queue (using the common binary heap type implementation)
-(define queue-max-size 1024)
-;;(define queue (make-array queue-max-size :initial-element NULL))
-;;(define queue-size 0)
-
-
-
-
-;; get_first_coroutine_in_queue
-;; ****************************
-;;
-;; Returns the first in queue, and deletes it from queue. (O(log n) efficiency)
-;; Note that its an error to call this function in case the queue is empty.
-(rt-ec-private-function <struct-rt_coroutine*> rt_get_first_coroutine_in_queue
- (lambda (,rt-globalvardecl)
- (<int> which_queue (or (== 0 rt_globals->block_queue_size)
- (and (> rt_globals->queue_size 0)
- (< rt_globals->queue[1]->time ;; shouldn't this be <= ?
- rt_globals->block_queue[1]->time))))
- (<struct-rt_coroutine**> queue (?kolon which_queue
- rt_globals->queue
- rt_globals->block_queue))
- (<struct-rt_coroutine*> ret queue[1])
- (<int> size (?kolon which_queue
- (- rt_globals->queue_size 1)
- (- rt_globals->block_queue_size 1)))
- (<struct-rt_coroutine*> last queue[size+1])
- (<int64> last_time last->time)
- (<int> i 1)
- (<int> child)
-
-; (fprintf stderr (string "which: %d %d %d, %d %d\\n")
-; (cast <int> which_queue)
-; (== 0 rt_globals->block_queue_size)
-; (cast <int> rt_globals->queue[1]->time)
-; (cast <int> rt_globals->block_queue[1]->time))
-
- (if which_queue
- rt_globals->queue_size--
- rt_globals->block_queue_size--)
-
- ;; Code below is a common binary heap "delete min" operation.
- (while (<= (* i 2) size)
- (set! child (* i 2))
- (if (and (!= child size)
- (< queue[child+1]->time queue[child]->time))
- child++)
- (if (> last_time queue[child]->time)
- (begin
- (set! queue[i] queue[child])
- (set! i child))
- break))
-
- (set! queue[i] last)
-
- (if which_queue
- (set! rt_globals->next_scheduled_time (/ queue[1]->time 4)))
-
- ;; Remove priority info from the time attribute.
- ;;(set! ret->time (& ret->time ~(4-1)))
- (set! ret->time (/ ret->time 4))
-
- (return ret)))
-
-
-
-;; insert_coroutine_in_queue
-;; *************************
-;;
-;; Returns 0 in case the priority queue is full. (O(log n) efficiency)
-(define-rt-ec <int> rt_insert_coroutine_in_queue
- (lambda (,rt-globalvardecl
- (<coroutine> coroutine)
- (<int> time)
- (<int> priority))
-
- (<struct-rt_coroutine-**> queue rt_globals->queue)
-
- (if (>= rt_globals->queue_size
- ,(- queue-max-size 2))
- (return 0))
-
- rt_globals->queue_size++
-
- ;; Not too sure about this one. Maybe it can cover up bugs.
- ;;(if (< time 0)
- ;; (set! time 0))
-
- (if (or (== 1 rt_globals->queue_size)
- (< time rt_globals->next_scheduled_time))
- (set! rt_globals->next_scheduled_time time))
-
- ;; Add priority info to the time attribute. ("priority" is a 2 bit integer)
- (set! time (* time 4))
- (set! time (+ time priority))
-
- (set! coroutine->time time)
-
- ;; Code below is a common binary heap "insert" operation.
- (let* ((i <int> rt_globals->queue_size)
- (newi <int> (/ i 2)))
- (while (> queue[newi]->time time)
- (set! queue[i] queue[newi])
- (set! i newi)
- (set! newi (/ newi 2)))
- ;;(fprintf stderr (string "Inserting at pos: %d (queu-size: %d)\\n") i rt_globals->queue_size)
- (set! queue[i] coroutine))
-
- (return 1)))
-
-
-(define-rt-ec <int> rt_insert_coroutine_in_block_queue
- (lambda (,rt-globalvardecl
- (<coroutine> coroutine)
- (<int> time)
- (<int> priority))
-
- (<struct-rt_coroutine-**> queue rt_globals->block_queue)
-
- (if (>= rt_globals->block_queue_size
- ,(- queue-max-size 2))
- (return 0))
-
- rt_globals->block_queue_size++
-
- ;; Not too sure about this one. Maybe it can cover up bugs.
- ;;(if (< time 0)
- ;; (set! time 0))
-
- ;; Add priority info to the time attribute. ("priority" is a 2 bit integer)
- (set! time (* time 4))
- (set! time (+ time priority))
-
- (set! coroutine->time time)
-
- ;; Code below is a common binary heap "insert" operation.
- (let* ((i <int> rt_globals->block_queue_size)
- (newi <int> (/ i 2)))
- (while (> queue[newi]->time time)
- (set! queue[i] queue[newi])
- (set! i newi)
- (set! newi (/ newi 2)))
- ;;(fprintf stderr (string "Inserting at pos: %d (queu-size: %d)\\n") i rt_globals->queue_size)
- (set! queue[i] coroutine))
-
- (return 1)))
-
-
-(define-c-macro (rt_current_coroutine)
- "(rt_globals->current_coroutine)")
-(<rt-func> 'rt_current_coroutine '<coroutine> '() :is-immediate #t)
-
-;; current_time
-;; ************
-;;
-(define-c-macro (rt_inc_current_time n)
- (<-> "(rt_globals->time+=" (eval-c-parse n) ")"))
-(<rt-func> 'rt_inc_current_time '<void> '(<int>))
-
-(define-c-macro (rt_set_current_time n)
- (<-> "(rt_globals->time=" (eval-c-parse n) ")"))
-(<rt-func> 'rt_set_current_time '<void> '(<int>))
-
-
-
-
-;; get_next_scheduled_time_in_queue
-;; *********************************
-;;
-(define-c-macro (rt_get_next_scheduled_time)
- "(rt_globals->next_scheduled_time)")
-(<rt-func> 'rt_get_next_scheduled_time '<int> '() :is-immediate #t)
-
-
-
-
-;; set_stack_low_value
-;; *******************
-;;
-;; Sets the low stack pointer so that the garbage collector doesn't have to
-;; scan the whole stack. (Note that this
-;; will also work in case the stack grows instead of shrinks, but then the
-;; name of the function is of course a bit wrong since it actually sets the
-;; high value and not the low value.)
-(eval-c ""
- "#include <pcl.h>"
- (shared-struct <rt_coroutine>)
- (<nonstatic-void> rt_set_stack_low_value (lambda ((<struct-rt_coroutine*> coroutine))
- (<int> dummy)
- (set! coroutine->stack_low &dummy))))
-;;(<rt-func> 'rt_set_stack_low_value '<void> '(<coroutine) rt-readin> <int>)
-
-
-
-;; switch_to_coroutine
-;; *******************
-;(rt-ec-private-function <void> rt_switch_to_coroutine
-; (lambda (,rt-globalvardecl
-; (<struct-rt_coroutine*> coroutine))
-; ;;(fprintf stderr (string "Warning, nested function variables not preserved before coroutine switch.\\n"))
-; (rt_set_stack_low_value rt_globals->current_coroutine)
-; (set! rt_globals->current_coroutine coroutine)
-; (set! rt_globals->time coroutine->time)
-; (co_call coroutine->co)))
-
-
-
-;; rt_switch_to_coroutine should only be called in run_scheduler and free_globals_func
-;;
-;; run_scheduler
-;; *************
-(define-rt-ec <void> rt_run_scheduler
- (lambda (,rt-globalvardecl)
- (<struct-rt_coroutine*> next (rt_get_first_coroutine_in_queue rt_globals))
- (if (!= next rt_globals->current_coroutine)
- (rt_switch_to_coroutine rt_globals next)
- (set! rt_globals->time next->time))
- (let* ((coroutine <struct-rt_coroutine*> rt_globals->current_coroutine))
- (cond ((and (== &rt_globals->main_coroutine coroutine)
- (== 1 rt_globals->remove_me))
- (rt_debug (string "happ")))
- ((== 1 coroutine->stop_me)
- (begin
- (set! coroutine->stop_me 0)
- (longjmp coroutine->remove_me 1)))))))
-
-
-
-
-;; yield
-;; *****
-(define-rt (yield)
- (rt_insert_coroutine_in_queue (rt_current_coroutine)
- (get-time)
- 2)
- (rt_run_scheduler))
-
-
-
-;; wait
-;; ****
-(define-rt (wait n)
- (define new-time (+ (get-time) n))
- (declare (<int> n new-time))
- (cond ((< new-time
- (rt_get_next_scheduled_time)) ;; What if there's a block scheduled before that?
- (rt_set_current_time new-time)) ;; No need to schedule, just increase time.
- (else
- (rt_insert_coroutine_in_queue (rt_current_coroutine)
- new-time
- 1)
- (rt_run_scheduler))))
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;; Block (inner loop)
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;; block
-;; *****
-(define-rt-macro (block
- :key dur duration
- :rest code)
- (define das-duration (rt-gensym))
-
- ;;(c-display "HEPP")
-
- (set! duration (or dur duration))
-
- (if duration
- `(let ((,das-duration ,duration))
- (declare (<int> ,das-duration))
- (while (> ,das-duration 0)
- (while (and (< (get-time)
- (rt_get_next_scheduled_time))
- (> ,das-duration 0))
- ,@code
- (rt_inc_current_time 1)
- (set! ,das-duration (- ,das-duration 1)))
-
- ;; Now do an extra-low-priority yield:
- (rt_insert_coroutine_in_block_queue (rt_current_coroutine)
- (get-time)
- 3)
- (rt_run_scheduler)))
- `(while #t
- (while (and (< (get-time)
- (rt_get_next_scheduled_time)))
- ,@code
- (rt_inc_current_time 1))
- ;; Now do an extra-low-priority yield:
- (rt_insert_coroutine_in_block_queue (rt_current_coroutine)
- (get-time)
- 3)
- (rt_run_scheduler))))
-
-
-
-
-;; spawn-block
-;; ***********
-(define-rt-macro (spawn-block . rest)
- (define start 0)
- (define duration #f)
- (define code rest)
- (when (equal? :dur (car rest))
- (set! start (nth 1 rest))
- (set! duration (- (nth 2 rest) start))
- (set! code (nth-cdr 3 rest)))
- `(spawn :wait ,start
- (block :duration ,duration
- ,@code)))
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;; Coroutine pool / starting and stopping coroutines
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-;; pool/lowlevel coroutine access
-;; We don't want to call make-low-level-coroutine in the realtime thread, since its a quite
-;; heavy operation involving two context switches. (or something like that). Therefore a pool.
-
-
-(new-rt-pool 'coroutine)
-
-;; Important. This one needs to be recompiled whenever rt_get..,rt_swi, etc. is changed. (very inconvenient)
-(eval-c "-lpcl"
- "#include <pcl.h>"
-
- "struct RT_Globals"
-
- (shared-struct <rt_coroutine>)
-
- ,`(define-struct <RT_Globals>
- <void*> freefunc
- ,@rt_coroutine_elements_in_rt_globals
- )
-
- (get-proto rt_push_to_pool)
- (get-proto rt_set_stack_low_value)
- (get-proto rt_debug)
-
- (<void> rt_switch_to_coroutine
- (lambda (,rt-globalvardecl
- (<struct-rt_coroutine*> coroutine))
- (rt_set_stack_low_value rt_globals->current_coroutine)
- (set! rt_globals->current_coroutine coroutine)
- (set! rt_globals->time coroutine->time)
- (co_call coroutine->co)))
-
- ,(nth 2 (rt-get-ec-function 'rt_get_first_coroutine_in_queue))
- ;;,(nth 2 (rt-get-ec-function 'rt_switch_to_coroutine))
- ,(nth 2 (rt-get-ec-function 'rt_run_scheduler))
-
-;; (<nonstatic-void> coroutine_entry (lambda ((<volatile-void*> arg))
-;; (<volatile-struct-rt_coroutine*> coroutine arg)
- (<nonstatic-void> coroutine_entry (lambda ((<struct-rt_coroutine*> coroutine))
- (if (== 0 (setjmp coroutine->remove_me))
- (co_resume)
- (begin ;;throw thunk
- ;;(rt_debug (string "ai1 %p") coroutine)
- (rt_push_to_pool coroutine NULL ,(get-rt-pool-num 'coroutine))
- ;;(rt_debug (string "ai2 %p %d %d %d")
- ;; coroutine
- ;; coroutine->run_scheduler_when_removed
- ;; coroutine->rt_globals->queue_size
- ;; coroutine->rt_globals->block_queue_size)
- (if coroutine->run_scheduler_when_removed
- (rt_run_scheduler coroutine->rt_globals)
- (co_resume))))
- ;;(rt_debug (string "ai3 %p") coroutine)
- (set! coroutine->run_scheduler_when_removed 1)
- (while 1
- ;;(fprintf stderr (string "top while %p\\n") (co_current))
- ((<int> (<void*>)) func coroutine->func)
- ;;(rt_debug (string "ai4 %p %p") coroutine func)
- (set! coroutine->stack_high &func)
- (func coroutine->rt_globals)
- (rt_push_to_pool coroutine NULL ,(get-rt-pool-num 'coroutine))
- (rt_run_scheduler coroutine->rt_globals)
- )))
- (public
- (<void> init_coroutine (lambda ((<struct-rt_coroutine*> coroutine)
- (<int> stacksize))
- (set! coroutine->co (co_create coroutine_entry coroutine NULL stacksize))
- (if (== NULL coroutine->co)
- (begin
- (fprintf stderr (string "ERROR! Creating coroutine pool failed.\\n"))
- (exit 0)))
- (co_call coroutine->co)
- ))))
-
-(define* (make-coroutine :key (stacksize *coroutine-stacksize*))
- (define coroutine (<rt_coroutine>))
- (init_coroutine (-> coroutine get-c-object) stacksize)
- coroutine)
-
-(init-rt-pool 'coroutine
- (lambda ()
- (-> (make-coroutine) get-c-object))
- :num-elements 1000)
-
-
-(<rt-type> '<coroutine>
- (lambda (coroutine)
- (and (object? coroutine)
- (eq? '<rt_coroutine> (-> coroutine class-name))))
- #f
- :transformfunc
- (lambda (coroutine)
- (-> coroutine get-c-object))
- :c-type '<struct-rt_coroutine-*>)
-
-(rt-ec-private-function <coroutine> rt_make_coroutine
- (lambda (,rt-globalvardecl
- ((<void> (<struct-RT_Globals-*>)) thunk))
- (<struct-rt_coroutine*> coroutine (rt_get_pool_element ,(get-rt-pool-num 'coroutine)))
- ;;(<struct-rt_coroutine*> coroutine (calloc 1 (sizeof <struct-rt_coroutine)))
- ;;(set! coroutine->co (co_create coroutine_entry coroutine NULL 4096))
- ;;(fprintf stderr (string "Made coroutine: %p\\n") coroutine)
- (if (== NULL coroutine)
- (exit 10))
- (set! coroutine->func thunk)
- (set! coroutine->rt_globals rt_globals)
- (return coroutine)))
-(<rt-func> 'rt_make_coroutine '<coroutine> '((<void> ())) :needs-rt-globals #t)
-
-(rt-ec-private-function <struct-rt_coroutine-*> rt_spawn
- (lambda (,rt-globalvardecl
- ((<void> (<struct-RT_Globals-*>)) thunk)
- (<int> wait))
- (<struct-rt_coroutine-*> coroutine (rt_make_coroutine rt_globals thunk))
- (rt_insert_coroutine_in_queue rt_globals
- coroutine
- (+ rt_globals->time wait)
- 1)
- (return coroutine)))
-(<rt-func> 'rt_spawn '<coroutine> '((<void> ()) <int>) :needs-rt-globals #t)
-
-;; spawn
-;; *****
-(define-rt-macro (spawn . rest)
- (define coroutine (rt-gensym))
- (define wait 0)
- (define code rest)
- (when (equal? :wait (car rest))
- (set! wait (cadr rest))
- (set! code (cddr rest)))
- `(rt_spawn (lambda ()
- ,@code
- (rt_return_void))
- ,wait))
-
-(define-rt-ec <int> rt_get_stop_me
- (lambda (,rt-globalvardecl)
- (return rt_globals->current_coroutine->stop_me)))
-
-(define-rt-ec <void> rt_stop
- (lambda ((<coroutine> coroutine))
- (set! coroutine->stop_me 1)))
-
-(define-rt-ec <void> rt_stop_me
- (lambda (,rt-globalvardecl)
- (set! rt_globals->current_coroutine->stop_me 0) ;; In case another coroutine have sat it.
- (longjmp rt_globals->current_coroutine->remove_me 1)))
-
-(define-rt-macro (stop . coroutine)
- (if (null? coroutine)
- `(rt_stop_me)
- `(rt_stop ,(car coroutine))))
-
-;; remove-me
-;; *********
-;(define-rt (remove-me)
-; (throw (=> current-coroutine :remove-me)))
-
-#!
-(gc)
-;; usleep probably mess with signals...
-(define-rt-ec <void> my_usleep (lambda ((<int> n))
- (usleep n)))
-(while #t
- (usleep 500)
- (if (< (nth 4 (rte-info)) 2)
- (<rt-play> (lambda ()
- ;;(spawn (printf "hello\\n"))
- ;;(yield)
- ;;(wait 44100)
- ;;(printf "hello2\\n")
- ;;(my_usleep 10000)
- (remove-me)))))
-
-(<rt-play> (lambda ()
- ;;(printf "hello2\\n")
- (my_usleep 10000)
- ;;(remove-me)
- ))
-
-
-
-(<rt-play> (lambda ()
- ;(block :duration 3
- ; (printf "time: %d\\n" (the <int> (get-time))))
- (define phase 0.0)
- (block :duration 44100
- (out (sin phase))
- (set! phase (+ phase (hz->radians 440))))
- (spawn
- (debug "hello0\\n")
- (wait 88200)
- (debug "hello3\\n"))
- (spawn
- (debug "hello4\\n"))
- (yield)
- (debug "hello-1\\n")
- (wait 44100)
- (debug "hello2\\n")))
-
-
-(<rt-play> (lambda ()
- (spawn
- (out 0.2))
- (out 0.3)))
-
-(<rt-play> (lambda ()
- (out 0.3)))
-
-(<rt-play> (lambda ()
- (block; :duration 44100
- (out (* 0.1 (oscil))))))
-(rte-info)
-(<rt-play> (lambda ()
- (spawn
- (block :duration 44100
- (out (* 0.1 (oscil)))))
- ;; Keep "wait" below makes it crash.
- (wait 144100)))
-
-(<rt-play> (lambda ()
- (spawn-block :dur 44100 200000
- (out (* 0.1 (oscil* 200))))
- (block :duration 100000
- (out (* 0.1 (oscil))))
- (debug "finished\\n")))
-
-
-(<rt-play> (lambda ()
- (block :duration 44100
- (out (* 0.2 (oscil* 200))))
- (block :duration 44100
- (out (* 0.2 (oscil* 300))))
-
- (spawn
- (block :duration 44100
- (out (* 0.2 (oscil* 200))))
- (debug "hello2\\n"))
-
- (debug "hello\\n")
- (wait 100000)))
-
-(<rt-play> (lambda ()
- (range i 1 10
- (spawn-block :dur 44100 200000
- (out (* 0.3 (oscil* (* 1 500))))))
- (wait (+ 44100 200000))))
-
-(define initphase 0.0)
-(<rt-play> (lambda ()
- (range i 1 100
- (spawn
- (let ((phase initphase)
- (phaseinc (* i 0.004)))
- (declare (<float> phase initphase))
- (block ;:duration 200000
- (out (* 0.02 (sin phase)))
- (set! phase (+ phase phaseinc)))))
- (yield))))
-
-(<rt-play> (lambda ()
- (range i 1 100
- (spawn
- (let ((i i))
- (yield)
- (let* ((phase 0.0)
- (phaseinc (* i 0.004)))
- (declare (<double> phase phaseinc))
- (declare (<int> i))
- (block ;:duration 200000
- (out (* 0.02 (sin phase)))
- (set! phase (+ phase phaseinc))))))
- (yield))))
-
-
-;; Merkelig: (ikke forandr!)
-(<rt-play> (lambda ()
- (define u 1)
- (range iy 1 100
- (spawn
- (define freq (hz->radians (* (inc! u 1) 100)))
- (debug "debug %f" (the <float> freq))
- (define phase 0.0)
- (declare (<double> freq phase))
- (block
- ;;(out (oscil* 200))
- (out (* 0.1 (sin phase)))
- (set! phase (+ phase freq)))))))
-
-(<rt-run>
- (define osc (spawn-block (out (* 0.1 (oscil)))))
- (wait (^s 2))
- (stop osc)
- (debug "got it"))
-
-(<rt-run>
- (spawn
- (stop)))
-
-(<rt-run>
- (spawn
- (block (out (* 0.1 (oscil* 440))))))
-
-
-(<rt-run>
- (spawn
- (block (out (* 0.1 (oscil* 440)))))
- (spawn
- (block (out (* 0.1 (oscil* 220)))))
- (spawn
- (block (out (* 0.1 (oscil* 660))))))
-
-
-
-
-
-
-(rt-clear-cache!)
-
-(<rt-run> :wait 2
- (debug "hello!")
- (out (oscil*)))
-
-
-(macroexpand '(<rt-play> (lambda () 1)))
-
-(rt-macroexpand '(spawn (printf "hello\\n")))
-(load-from-path "rt-coroutines.scm")
-
-(eval-c ""
- (run-now
- (<int64> basebase 12342344)
- (<int64> base (+ basebase 1024))
- (<int64> base2 (+ basebase 44100))
- (<int64> a (+ (<< base 2) 0))
- (<int64> b (+ (<< base2 2) 1))
- (printf (string "hepp: %d\\n") (> b a))))
-
-
-
-!#
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;; Signal/event handling
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-#!
-;; "event" works like a cons cell. But the "cons" function is not available in the target language yet
-;; (because the language is statically typed and only recently got a garbage collector), so we need
-;; a custom structure instead:
-(define-struct event
- :next
- :coroutine)
-
-(define (wait-event event)
- (define new-event (make-event :coroutine current-coroutine))
- (set-finalizer! new-event
- (lambda (event)
- (define coroutine (=> event :coroutine))
- (when coroutine
- (set! (=> coroutine :run-scheduler-when-removed) #f)
- (set! current-coroutine coroutine)
- (low-level-coroutine-switch-to (=> coroutine :low-level-coroutine)))))
- (set! (=> event :next) new-event)
- (run-scheduler)
- (if (not (=> current-coroutine :run-scheduler-when-removed))
- (throw (=> current-coroutine :remove-me)))) ;; the current coroutine was never signaled.
-
-
-;; This is a first in, first out. Is that good? (does it matter?)
-(define (signal-event event)
- (define next-event (=> event :next))
- (when next-event
- (set! (=> event :next (=> next-event :next)))
- (let ((coroutine (=> next-event :coroutine)))
- (set! (=> next-event :coroutine) #f) ;; To avoid finalizing
- (set! (=> coroutine :time) (current-time))
- (insert-coroutine-in-queue! :coroutine coroutine
- :priority 1) ;; The yielded coroutine has priority 2, so this one will run before the current coroutine.
- (yield))))
-
-;; This is also a first in, first out. Is that good? (does it matter?)
-(define (broadcast-event event)
- (define temp (=> event :next))
- (when temp
- (while temp
- (let ((coroutine (=> temp :coroutine)))
- (set! (=> temp :coroutine) #f) ;; To avoid finalizing
- (set! (=> coroutine :time) (current-time))
- (insert-coroutine-in-queue! :coroutine coroutine
- :priority 1))
- (set! temp (=> temp :next)))
- (set! (=> event :next) #f)
- (yield)))
-
-!#
-
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;; Main
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-#!
-(define (init-audio-thread main-func)
- (spawn-do main-func))
-
-;; The audio block function. If it returns #f, it will not be called again at next audio block.
-(define (audio_thread blocksize)
- (inc! (current-time) blocksize)
- (insert-coroutine-in-queue! :priority 0) ;; Highest priority to avoid any coroutines sending
- ;; sound to the soundcard before its sent out its previous buffer.
- (run-scheduler) ;; init-audio-thread must be called first, so there is allways at least one coroutine waiting here.
- (> queue-size 0))
-
-;; Some modifications, see rt-compiler.scm.
-!#
-
-
-
diff --git a/rt-engine.scm b/rt-engine.scm
deleted file mode 100644
index 7319f64..0000000
--- a/rt-engine.scm
+++ /dev/null
@@ -1,1845 +0,0 @@
-
-#!
-
-rt-engine.scm
--Kjetil S. Matheussen/Notam, 2005
-
-rt-engine.scm is developed with support from Notam/Oslo [1]
-and the Arts Council Norway [2].
-
-rt-engine creates a realtime engine that should be suitable for hard real
-time signal processing.
-
-This file is normally loaded from "rt-compiler.scm".
-
-For documentation, check out
-http://www.notam02.no/arkiv/doc/snd-rt/
-
-
-[1] http://www.notam02.no
-[2] http://www.kulturradet.no
-
-!#
-
-
-(if (not (provided? 'snd-rt-compiler.scm))
- (throw 'rt-compiler-not-loaded))
-
-(if (provided? 'snd-rt-engine.scm)
- (throw 'rt-engine-already-loaded))
-(provide 'snd-rt-engine.scm)
-
-(if (not (provided? 'snd-oo.scm)) (load-from-path "oo.scm"))
-
-
-
-
-;; Various general functions and macros
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;; Variables ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define rt-pointer-size (ec-sizeof-pointer))
-
-(define rt-to-ringbuffer-size (* rt-pointer-size 8192))
-(define rt-from-ringbuffer-size (* 1024 1024))
-
-(define rt-allocmem-size (* 1024 1024 8))
-
-(define rt-max-frame-size 4096)
-(define *rt-block-size* 0) ;; set later.
-
-(if (not (defined? '*rt-num-input-ports*))
- (primitive-eval `(define *rt-num-input-ports*
- ,(if (getenv "SNDLIB_NUM_JACK_CHANNELS")
- (max 1 (string->number (getenv "SNDLIB_NUM_JACK_CHANNELS")))
- 8))))
-(if (not (defined? '*rt-num-output-ports*))
- (primitive-eval `(define *rt-num-output-ports*
- ,(if (getenv "SNDLIB_NUM_JACK_CHANNELS")
- (max 1 (string->number (getenv "SNDLIB_NUM_JACK_CHANNELS")))
- 8))))
-
-(if (not (defined? '*rt-jackname-prefix*))
- (primitive-eval `(define *rt-jackname-prefix* "snd-rt")))
-
-(define rt-max-cpu-usage 80)
-
-(define *out-bus* #f)
-(define *in-bus* #f)
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;; BUS. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-#!
-Behavior logic for reading and writing:
-
-Reading: bus[n]
-Reading one period later[1][2]: bus[n]
-Reading two periods later[1]: 0
-
-writing: bus[n]+=v
-writing one period later[1]: bus[n]=v
-
-[1] than the frame was last written to.
-[2] This behaviour seems to be different from Supercollider. According to the
- file order-of-execution.rtf, in.ar "zeros any data from the previous
- cycle", which I guess means this behaviour: (ret=bus[n],bus[n]=0,ret).
-
-!#
-
-
-(define bus-struct (<-> "struct rt_bus_data{"
- " int64 last_written_to;"
- " float val;"
- "};"
- "struct rt_bus{"
- " int num_channels;"
- " struct rt_bus_data data[];"
- "}"))
-
-(eval-c ""
- ;;;;;;; Das SMOB
-
- ,bus-struct
-
- (<scm_t_bits> rt_bus_tag)
- (<nonstatic-scm_t_bits> get_rt_bus_tag (lambda ()
- (return rt_bus_tag)))
-
- (public
- (<SCM> rt-bus-p (lambda ((<SCM> rt_bus_smob))
- (if (SCM_SMOB_PREDICATE rt_bus_tag rt_bus_smob)
- (return SCM_BOOL_T)
- (return SCM_BOOL_F))))
- (<SCM> make-bus2 (lambda ((<int> num_channels))
- (let* ((ret <struct-rt_bus-*> (calloc 1 (+ (sizeof <struct-rt_bus>)
- (* (sizeof <struct-rt_bus_data>)
- ,rt-max-frame-size
- num_channels))))
- (scmret <SCM>))
-
- (set! ret->num_channels num_channels)
-
- ;(for-each 0 num_channels
- ; (lambda (ch)
- ; (set! ret->data[ch] (calloc (sizeof <float>) ,rt-max-frame-size))))
-
- (SCM_NEWSMOB scmret rt_bus_tag ret)
- (return scmret)))))
-
- ;;(<SCM> mark_rt_bus (lambda ((<SCM> rt_bus_smob))
- ;; (let* ((rt_bus <struct-mus_rt_bus-*> (cast <void-*> (SCM_SMOB_DATA rt_bus_smob))))
- ;; (return rt_bus->scm_bus))))
- (<size_t> free_rt_bus (lambda ((<SCM> rt_bus_smob))
- (let* ((rt_bus <struct-rt_bus-*> (cast <void-*> (SCM_SMOB_DATA rt_bus_smob))))
- ;(for-each 0 rt_bus->num_channels
- ; (lambda (ch)
- ; (free rt_bus->data[ch])))
- (free rt_bus)
- (return 0))))
-
- (<int> print_rt_bus (lambda ((<SCM> rt_bus_smob) (<SCM> port) (<scm_print_state-*> pstate))
- (scm_puts (string "#<rt_bus ... > ") port)
- (return 1)))
-
- (run-now
- (set! rt_bus_tag (scm_make_smob_type (string "rt_bus") (sizeof <struct-rt_bus>)))
- ;;(scm_set_smob_mark rt_bus_tag mark_rt_bus)
- (scm_set_smob_free rt_bus_tag free_rt_bus)
- (scm_set_smob_print rt_bus_tag print_rt_bus)))
-
-(define-macro (make-bus . rest)
- (if (null? rest)
- `(make-bus2 1)
- `(make-bus2 ,(car rest))))
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;; Garbage collector ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define *tar-is-started* (defined? '*tar-is-started*))
-
-(define (start-rollendurchmesserzeitsammler client)
- (when (not *tar-is-started*)
- (primitive-eval `(eval-c (<-> "-I" snd-header-files-path)
- "#include <rt-various.h>"
- (run-now
- (init_rollendurchmesserzeitsammler ,*tar-atomic-heap-size*
- ,*tar-nonatomic-heap-size*
- ,*tar-max-mem-size*
- ,(jack_client_real_time_priority client)
- (cast <float> 1.0)))))
- (set! *tar-is-started* #t)))
-
-(eval-c ""
- (proto->public "void tar_bench_print(tar_heap_t *heap)")
- (proto->public "void tar_touch_heaps(tar_heap_t *heap)")
- )
-
-
-
-
-
-
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;; Jack ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(begin
- (eval-c-add-int-type "jack_nframes_t")
- (eval-c-add-int-type "jack_port_id_t")
- (eval-c-add-int-type "jack_options_t")
- (eval-c-add-float-type "jack_default_audio_sample_t")
-
- (eval-c "-ljack"
-
- "#include <jack/jack.h>"
- "#include <jack/ringbuffer.h>"
- "#include <jack/thread.h>"
-
- (proto->public
- "
-jack_client_t *jack_client_open (const char *client_name,
- jack_options_t options,
- jack_status_t *status, void* lastarg);
-jack_client_t *jack_client_new (const char *client_name);
-int jack_client_close (jack_client_t *client);
-int jack_client_name_size(void);
-int jack_internal_client_new (const char *client_name, const char *so_name,
- const char *so_data);
-void jack_internal_client_close (const char *client_name);
-int jack_is_realtime (jack_client_t *client);
-void jack_on_shutdown (jack_client_t *client, void (*function)(void *arg), void *arg);
-int jack_set_process_callback (jack_client_t *client,
- JackProcessCallback process_callback,
- void *arg);
-int jack_set_thread_init_callback (jack_client_t *client,
- JackThreadInitCallback thread_init_callback,
- void *arg);
-int jack_set_freewheel_callback (jack_client_t *client,
- JackFreewheelCallback freewheel_callback,
- void *arg);
-int jack_set_freewheel(jack_client_t* client, int onoff);
-int jack_set_buffer_size (jack_client_t *client, jack_nframes_t nframes);
-int jack_set_buffer_size_callback (jack_client_t *client,
- JackBufferSizeCallback bufsize_callback,
- void *arg);
-int jack_set_sample_rate_callback (jack_client_t *client,
- JackSampleRateCallback srate_callback,
- void *arg);
-int jack_set_port_registration_callback (jack_client_t *,
- JackPortRegistrationCallback
- registration_callback, void *arg);
-
-int jack_set_graph_order_callback (jack_client_t *, JackGraphOrderCallback graph_callback, void *);
-
-int jack_set_xrun_callback (jack_client_t *, JackXRunCallback xrun_callback, void *arg);
-int jack_activate (jack_client_t *client);
-int jack_deactivate (jack_client_t *client);
-jack_port_t *jack_port_register (jack_client_t *client,
- const char *port_name,
- const char *port_type,
- unsigned long flags,
- unsigned long buffer_size);
-
-int jack_port_unregister (jack_client_t *, jack_port_t *);
-void *jack_port_get_buffer (jack_port_t *, jack_nframes_t);
-const char *jack_port_name (const jack_port_t *port);
-const char *jack_port_short_name (const jack_port_t *port);
-int jack_port_flags (const jack_port_t *port);
-const char *jack_port_type (const jack_port_t *port);
-int jack_port_is_mine (const jack_client_t *, const jack_port_t *port);
-int jack_port_connected (const jack_port_t *port);
-int jack_port_connected_to (const jack_port_t *port,
- const char *port_name);
-
-const char **jack_port_get_connections (const jack_port_t *port);
-const char **jack_port_get_all_connections (const jack_client_t *client,
- const jack_port_t *port);
-int jack_port_tie (jack_port_t *src, jack_port_t *dst);
-int jack_port_untie (jack_port_t *port);
-"
-
-;;int jack_port_lock (jack_client_t *, jack_port_t *);
-;;int jack_port_unlock (jack_client_t *, jack_port_t *);
-
-"
-jack_nframes_t jack_port_get_latency (jack_port_t *port);
-jack_nframes_t jack_port_get_total_latency (jack_client_t *,
- jack_port_t *port);
-void jack_port_set_latency (jack_port_t *, jack_nframes_t);
-int jack_port_set_name (jack_port_t *port, const char *port_name);
-
-int jack_port_request_monitor (jack_port_t *port, int onoff);
-int jack_port_request_monitor_by_name (jack_client_t *client,
- const char *port_name, int onoff);
-"
-;;int jack_port_ensure_monitor (jack_port_t *port, int onoff);
-"
-int jack_port_monitoring_input (jack_port_t *port);
-int jack_connect (jack_client_t *,
- const char *source_port,
- const char *destination_port);
-int jack_disconnect (jack_client_t *,
- const char *source_port,
- const char *destination_port);
-"
-;;int jack_port_connect (jack_client_t *, jack_port_t *src, jack_port_t *dst);
-"
-int jack_port_disconnect (jack_client_t *, jack_port_t *);
-int jack_port_name_size(void);
-int jack_port_type_size(void);
-jack_nframes_t jack_get_sample_rate (jack_client_t *);
-jack_nframes_t jack_get_buffer_size (jack_client_t *);
-const char **jack_get_ports (jack_client_t *,
- const char *port_name_pattern,
- const char *type_name_pattern,
- unsigned long flags);
-jack_port_t *jack_port_by_name (jack_client_t *, const char *port_name);
-jack_port_t *jack_port_by_id (const jack_client_t *client,
- jack_port_id_t port_id);
-int jack_engine_takeover_timebase (jack_client_t *);
-jack_nframes_t jack_frames_since_cycle_start (const jack_client_t *);
-jack_nframes_t jack_frame_time (const jack_client_t *);
-float jack_cpu_load (jack_client_t *client);
-pthread_t jack_client_thread_id (jack_client_t *);
-"
-;;extern void (*jack_error_callback)(const char *msg);
-"void jack_set_error_function (void (*func)(const char *));")
-
-
-
- (set!-string-is-pointer-#t)
-
- (proto->public
- "jack_ringbuffer_t *jack_ringbuffer_create(size_t sz);
-
-void jack_ringbuffer_free(jack_ringbuffer_t *rb);
-void jack_ringbuffer_get_read_vector(const jack_ringbuffer_t *rb,
- jack_ringbuffer_data_t *vec);
-void jack_ringbuffer_get_write_vector(const jack_ringbuffer_t *rb,
- jack_ringbuffer_data_t *vec);
-size_t jack_ringbuffer_read(jack_ringbuffer_t *rb, char *dest, size_t cnt);
-size_t jack_ringbuffer_peek(jack_ringbuffer_t *rb, char *dest, size_t cnt);
-void jack_ringbuffer_read_advance(jack_ringbuffer_t *rb, size_t cnt);
-size_t jack_ringbuffer_read_space(const jack_ringbuffer_t *rb);
-int jack_ringbuffer_mlock(jack_ringbuffer_t *rb);
-void jack_ringbuffer_reset(jack_ringbuffer_t *rb);
-size_t jack_ringbuffer_write(jack_ringbuffer_t *rb, const char *src,
- size_t cnt);
-void jack_ringbuffer_write_advance(jack_ringbuffer_t *rb, size_t cnt);
-size_t jack_ringbuffer_write_space(const jack_ringbuffer_t *rb);
-
-")
-
- (set!-string-is-pointer-#f)
-
- (proto->public
- "int jack_client_real_time_priority (jack_client_t*);")
-
- (variables->public
- (<int> JackPortIsInput
- JackPortIsOutput
- JackPortIsPhysical
- JackPortCanMonitor
- JackPortIsTerminal
- JackNullOption
- JackNoStartServer
- JackUseExactName
- JackServerName
- JackLoadName
- JackLoadInit
- )
- (<char*> JACK_DEFAULT_AUDIO_TYPE))
-
- ))
-
-
-
-(define-ec-struct <Jack_Arg>
- <int64> frames
- <int> is_running
-
- <void-*> rt_callback
-
- <jack_client_t-*> client
-
- <int> num_inports
- <jack_port_t**> input_ports
-
- <int> num_outports
- <jack_port_t**> output_ports
-
- <struct-rt_bus-*> out_bus
- <struct-rt_bus-*> in_bus
-
- <void-*> rt_arg
-
- <float> samplerate
-
- )
-
-
-
-
-(def-class (<jack> name process-func jack-arg num-inports num-outports #:key (autoconnect #t))
-
- (Super jack-arg)
-
- (define client #f)
-
- (def-var in-bus #f)
- (def-var out-bus #f)
-
- (def-method (get-client)
- client)
-
- (def-method (get-arg)
- jack-arg)
-
- (def-method (get-samplerate)
- (jack_get_sample_rate client))
-
- (define (clean-up)
- (-> jack-arg destructor))
-
- ;; Destructor (works as a)
- (def-method (close)
- (if client
- (begin
- (jack_client_close client)
- (set! client #f)
- (clean-up))))
-
- ;; Constructor
- (if (not (call-with-current-continuation
- (lambda (return)
-
- (if (not (ec-pointer? process-func))
- (begin
- (c-display "\n\nError. <jack>/constructor: process-func is not an ec-pointer.\n\n")
- (return #f)))
-
- (set! client (jack_client_open name (JackNoStartServer) #f #f))
-
- (if (not client)
- (begin
- (c-display "Could not create jack client with name \"" name "\".")
- (return #f)))
-
- (start-rollendurchmesserzeitsammler client)
-
- (set! *rt-block-size* (jack_get_buffer_size client))
-
- (-> jack-arg client client)
-
- ;; Note to myself, why the if???
- (if num-inports
- (-> jack-arg num_inports num-inports))
- (if num-outports
- (-> jack-arg num_outports num-outports))
-
- (c-display "num-inports:" num-inports)
- (set! in-bus (make-bus num-inports))
- (set! out-bus (make-bus num-outports))
- (-> jack-arg in_bus (SCM_SMOB_DATA in-bus))
- (-> jack-arg out_bus (SCM_SMOB_DATA out-bus))
-
- (jack_set_process_callback client process-func (-> jack-arg get-c-object))
-
- (-> jack-arg input_ports (map (lambda (n)
- (jack_port_register client (format #f "input~A" n) (JACK_DEFAULT_AUDIO_TYPE) (JackPortIsInput) 0))
- (iota num-inports)))
- (-> jack-arg output_ports (map (lambda (n)
- (jack_port_register client (format #f "output~A" n) (JACK_DEFAULT_AUDIO_TYPE) (JackPortIsOutput) 0))
- (iota num-outports)))
- (if (not (= 0 (jack_activate client)))
- (begin
- (c-display "Cannot activate client")
- (return #f)))
-
- (if autoconnect
- (let ((portnames (jack_get_ports client #f #f (logior (JackPortIsPhysical) (JackPortIsOutput)))))
- (if (not portnames)
- (c-display "No Output physical jack ports found")
- (for-each (lambda (portname port)
- (jack_connect client portname (jack_port_name port)))
- (ec-get-strings portnames)
- (-> jack-arg input_ports)))))
-
- (if autoconnect
- (let ((portnames (jack_get_ports client #f #f (logior (JackPortIsPhysical) (JackPortIsInput)))))
- (if (not portnames)
- (c-display "No Output physical jack ports found")
- (for-each (lambda (portname port)
- (jack_connect client (jack_port_name port) portname))
- (ec-get-strings portnames)
- (-> jack-arg output_ports)))))
-
- (return #t)
- )))
- (begin
- (this->close)
- (set! this #f)))
-
-
- )
-
-(define rt-callback-type "typedef void (*Callback)(void *arg,jack_client_t *client,int is_running,int num_frames,int64 base_time,float samplerate)")
-
-(eval-c ""
- "#include <jack/jack.h>"
-
- ,bus-struct
-
- (shared-struct <Jack_Arg>)
-
- ,rt-callback-type
-
- (functions->public
- (<int> jack_rt_process_dummy (lambda ((<jack_nframes_t> nframes)
- (<void*> arg))
- (return 0)))
-
- (<int> jack_rt_process (lambda ((<jack_nframes_t> nframes)
- (<void-*> arg))
-
-
- (let* ((jack_arg <struct-Jack_Arg-*>
- arg)
- (callback <Callback> jack_arg->rt_callback)
-
- (out[jack_arg->num_outports] <float-*>)
- (in[jack_arg->num_inports] <float-*>)
-
- (lokke <int>)
- )
-
- (for-each 0 jack_arg->num_outports
- (lambda (ch)
- (set! out[ch] (jack_port_get_buffer jack_arg->output_ports[ch] nframes))))
- (for-each 0 jack_arg->num_inports
- (lambda (ch)
- (set! in[ch] (jack_port_get_buffer jack_arg->input_ports[ch] nframes))))
-
- (set! lokke 0)
- (for-each 0 nframes
- (lambda (n)
- (for-each 0 jack_arg->num_inports
- (lambda (ch)
- (set! jack_arg->in_bus->data[lokke].val
- in[ch][n])
- (set! jack_arg->in_bus->data[lokke].last_written_to
- jack_arg->frames)
- lokke++))))
-
- (for-each 0 (* nframes jack_arg->num_outports)
- (lambda (n)
- (set! jack_arg->out_bus->data[n].val 0.0f)
- (set! jack_arg->out_bus->data[n].last_written_to
- jack_arg->frames)))
-
- (callback jack_arg->rt_arg
- jack_arg->client
- jack_arg->is_running
- nframes
- jack_arg->frames
- jack_arg->samplerate)
-
- (set! lokke 0)
- (for-each 0 nframes
- (lambda (n)
- (for-each 0 jack_arg->num_outports
- (lambda (ch)
- (set! out[ch][n]
- jack_arg->out_bus->data[lokke].val)
- lokke++))))
-
- (if jack_arg->is_running
- (+= jack_arg->frames nframes))
-
- (return 0))))))
-
-
-
-(def-class (<jack-rt-driver> num-inputs num-outputs rt_callback rt_arg #:key (autoconnect (not (getenv "SNDLIB_JACK_DONT_AUTOCONNECT"))))
-
- (Super (<jack> *rt-jackname-prefix*
- (jack_rt_process)
- (<Jack_Arg> #:rt_callback rt_callback #:rt_arg rt_arg)
- num-inputs
- num-outputs
- :autoconnect autoconnect))
-
- (-> super samplerate (-> super get-samplerate))
- (set! (mus-srate) (-> super get-samplerate))
-
- (def-var num-inputs)
- (def-var num-outputs)
-
- (define jack-arg #f)
-
- (define jack #f)
-
- (def-method (get-frame-time time)
- (* time (-> jack-arg samplerate)))
-
- (def-method (get-time)
- (/ (-> jack-arg frames) (-> jack-arg samplerate)))
-
- (def-method (set-input-args args)
- (-> jack-arg rt_input_args args))
-
- (def-method (set-output-args args)
- (-> jack-arg rt_output_args args))
-
- (def-method (start)
- (c-display "<jack-rt-driver>: starting!")
- (-> jack-arg frames 0)
- (-> jack-arg is_running 1))
-
- (def-method (stop)
- (c-display "<jack-rt-driver>: stop.")
- (-> jack-arg frames 0)
- (-> jack-arg is_running 0))
-
- (def-method (pause)
- (c-display "<jack-rt-driver>: pause.")
- (-> jack-arg is_running 0))
-
- (def-method (continue)
- (c-display "<jack-rt-driver>: continue.")
- (-> jack-arg is_running 1))
-
- (def-method (destructor)
- (c-display "<jack-rt-driver> -> destructor")
- (-> jack close))
-
-
- (if super
- (begin
- (set! jack super)
- (set! jack-arg (-> jack get-arg)))
- (set! this #f))
-
- )
-
-
-
-
-#!
-
-(define jack-arg (<Jack_Arg>))
-(define jack (<jack> "snd-rt" (jack_rt_process_dummy) jack-arg 2 3))
-(-> jack close)
-
-
-(define obj (Jack_Arg_new))
-(begin (jack_rt_process))
-(Jack_Arg_set_rt_callback obj (jack_rt_process) 0)
-
-(define jack-arg (<Jack_Arg>))
-(-> jack-arg get-c-object)
-(Jack_Arg_set_rt_callback (-> jack-arg get-c-object) (jack_rt_process) 0)
-(-> jack-arg rt_callback (jack_rt_process))
-
-(define jack-arg (<Jack_Arg> #:rt_callback (jack_rt_process)))
-
-(define jack-driver (<jack-driver> 5 6))
-(-> jack-driver destructor)
-
-(begin (jack_rt_process))
-
-
-(define hobbit-path "/usr/local/share/guile-hobbit")
-
-(set! %load-path (cons hobbit-path %load-path))
-(use-modules (slib defmacroexpand) (slib generic-write))
-(use-modules (slib generic-write))
-
-(generic-write jack-arg
- #f
- 200
- display)
-(begin <Jack_Arg>)
-
-
-(define a (<RT_Event>))
-(begin (-> a get-c-object))
-(ec-pointer-to-pointer (-> a get-c-object))
-
-!#
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;; PD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;(define-ec-struct <PD_Arg>
-; <void-*> rt_callback
-; )
-
-(if (provided? 'snd-pd-external)
- (eval-c ""
-
- "#include <jack/jack.h>"
-
- ,rt-callback-type
- ,bus-struct
- "extern float sys_getsr(void)"
-
- (<int64> base_time 0)
- (<void-*> engine)
- (<Callback> callback)
-
- (public
- (<void> pd_rt_init (lambda ((<void-*> das_engine)
- (<Callback> das_callback))
- (set! engine das_engine)
- (set! callback das_callback)))
- (<float> pd_rt_get_samplerate (lambda ()
- (return (sys_getsr))))
- (<int64> pd_rt_get_time (lambda ()
- (return base_time))))
-
-
- (functions->public
- ;; Run the engine.
- (<void> pd_rt_run (lambda ((<int> nframes))
- (callback engine
- NULL
- 1
- nframes
- base_time
- (sys_getsr))
- (+= base_time nframes)))
-
-
- ;; Copy pd-buffers in and out of "*out-bus*" and "*in-bus*".
- ;; Theres a unique "*out-bus*" bus and "*in-bus*" bus for each pd-object.
- (<void> pd_rt_process (lambda ((<int> num_ins)
- (<float**> ins)
- (<int> num_outs)
- (<float**> outs)
- (<void*> das_inbus)
- (<void*> das_outbus)
- (<int> nframes))
- (<int> lokke 0)
- (<struct-rt_bus-*> in_bus das_inbus)
- (<struct-rt_bus-*> out_bus das_outbus)
-
- ;; pd-inlets -> "*in-bus*"
- (for-each 0 nframes
- (lambda (n)
- (for-each 0 num_ins
- (lambda (ch)
- (set! in_bus->data[lokke].val
- ins[ch][n])
- (set! in_bus->data[lokke].last_written_to
- base_time)
- lokke++))))
-
- ;; "*out-bus*" -> pd-outlets
- (set! lokke 0)
- (for-each 0 nframes
- (lambda (n)
- (for-each 0 num_outs
- (lambda (ch)
- (set! outs[ch][n] out_bus->data[lokke].val)
- lokke++))))
- ;; 0 -> "*out-bus*"
- (for-each 0 (* nframes num_outs)
- (lambda (n)
- (set! out_bus->data[n].val 0.0f)
- (set! out_bus->data[n].last_written_to base_time))))))
-
- "typedef void (*PD_RT_RUN)(int nframes)"
- "typedef void (*PD_RT_PROCESS)(int num_ins,float **ins,int num_outs,float **outs,int nframes)"
- "extern void snd_pd_set_rt_funcs(PD_RT_RUN r,PD_RT_PROCESS p)"
- (proto->public
- "void snd_pd_set_rt_funcs(PD_RT_RUN r,PD_RT_PROCESS p);")))
-
-
-
-(def-class (<pd-rt-driver> rt_callback c-engine)
- (def-var frames 0)
-
- (def-method (start)
- (c-display "<pd-rt-driver>: starting!"))
-
- (def-method (stop)
- (c-display "<pd-rt-driver>: stop."))
-
- (def-method (pause)
- (c-display "<pd-rt-driver>: pause."))
-
- (def-method (continue)
- (c-display "<pd-rt-driver>: continue."))
-
- (def-method (destructor)
- (c-display "<pd-rt-driver> ending"))
-
- (def-method (get-frame-time time)
- (* time (pd_rt_get_samplerate)))
- (def-method (get-time)
- (/ (pd_rt_get_time) (pd_rt_get_samplerate)))
-
- ;;(set! (-> c-engine samplerate) (pd_rt_get_samplerate))
- )
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;; General priority queue implementation ;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; insert and delete-min logic below taken from "Data Structures and Agloritm Analysis second edition" by Mark Allen Weiss.
-;; (note that this doesn't mean Mark Allen Weiss invented the binary heap priority queue used below, only that he is to blame for any
-;; bugs in the code ;-) )
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-(define (gen-priority-queue-insert funcname <holder-struct*> <event-struct*>)
- (define <event-struct**> (symbol-append (string->symbol (list->string (reverse (cdr (reverse (string->list (symbol->string <event-struct*>)))))))
- '*>))
- `(<bool> ,funcname (lambda ((,<holder-struct*> holder)
- (,<event-struct*> event))
- (if (>= holder->queue_size (- holder->queue_fullsize 2)) ;; Can 2 be changed to 1 or 0?
- (begin
- holder->num_events--
- holder->num_lost_events++
- (return false)))
-
- holder->queue_size++
-
- (if (< event->time 0)
- (set! event->time 0))
-
- (let* ((queue ,<event-struct**> holder->queue)
- (time <int64> event->time)
- (i <int> holder->queue_size)
- (newi <int> (>> i 1)))
- ;;(fprintf stderr (string "insert, i: %d newi: %d\\n") i newi)
- (while (> queue[newi]->time time)
- (set! queue[i] queue[newi])
- (set! i newi)
- (set! newi (>> newi 1)))
- ;;(fprintf stderr (string "insert2 %u size: %d, i: %d newi: %d\\n") event->arg holder->queue_size i newi)
- (set! queue[i] event))
- (return true))))
-#!
-(pretty-print (gen-priority-queue-insert 'rt_insert_event '<struct-RT_Engine-*> '<struct-RT_Event-*>))
-!#
-
-(define (gen-priority-queue-delete-min funcname <holder-struct*> <event-struct*>)
- (define <event-struct**> (symbol-append (string->symbol (list->string (reverse (cdr (reverse (string->list (symbol->string <event-struct*>)))))))
- '*>))
- `(<void> ,funcname (lambda ((,<holder-struct*> holder))
-
- ;;This check must be done before calling.
- ;;(if (== holder->queue_size 0)
- ;; (return NULL))
-
- ;;(<struct-RT_Event-*> event holder->queue[1])
- holder->num_events--
- holder->queue_size--
-
- (let* ((queue ,<event-struct**> holder->queue)
- (size <int> holder->queue_size)
- (last ,<event-struct*> queue[size+1])
- (last_time <int64> last->time)
- (i <int> 1)
- (child <int>))
- ;;(fprintf stderr (string "remove, i: %d child %d, size: %d, last: %u\\n") i child size last)
- (while (<= (<< i 1) size)
- (set! child (<< i 1))
- (if (and (!= child size)
- (< queue[child+1]->time queue[child]->time))
- child++)
- (if (> last_time queue[child]->time)
- (begin
- (set! queue[i] queue[child])
- (set! i child))
- break))
- ;;(set! child (<< i 1)))
- ;;(fprintf stderr (string "remove2, %u size: %d, i: %d child %d\\n") event->arg size i child)
- ;;(set! queue[size] NULL)
- (set! queue[i] last)))))
-
-#!
-(pretty-print (gen-priority-queue-delete-min 'rt_delete_event '<struct-RT_Engine-*> '<struct-RT_Event-*>))
-!#
-
-
-(define (gen-priority-queue-find-min funcname <holder-struct*> <event-struct*>)
- `(,<event-struct*> rt_findmin_event (lambda ((,<holder-struct*> holder))
- (return holder->queue_size==0?NULL:holder->queue[1]))))
-
-(define (gen-priority-queue-init-code holder <event-struct*> dummy)
- `(begin
- (set! ,(<_> holder '->queue) (calloc (sizeof ,<event-struct*>) ,(<_> holder '->queue_fullsize)))
- (set! ,(<_> dummy '.time) 0)
- ;;(set! engine->queue_size 1)
- (for-each 0 ,(<_> holder '->queue_fullsize)
- (lambda (i)
- (set! ,(<_> holder '->queue[i]) ,(<_> '& dummy))))))
-
-
-(define-macro (define-ec-struct-with-priority-queue name . rest)
- `(define-ec-struct ,name
- ,@(call-with-values (lambda () (break (lambda (a) (eq? a 'priority-queue))
- rest))
- (lambda (before after)
- (append before
- `(<int> num_lost_events ;; Number of events lost because queue was full.
- <int> num_events ;; Number of events waiting to be run
- <int> queue_fullsize
- <int> queue_size
- ,(cadr after) queue) ;; A priority queue with room for queue_fullsize number of events
- (cddr after))))))
-
-#!
-(pretty-print (macroexpand-1 '(define-ec-struct-with-priority-queue <RT_Engine>
- <int> one
- priority-queue <void*>
- <int> two)))
-!#
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;; Engine ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-#!
-;;Simple sorting scheme for running procfuncs: (too simple?)
-
-struct procfuncs *sorted=procfuncs.pop(0)
-struct procfuncs *unsorted=procfuncs
-struct procfuncs *next
-
-while(unsorted):
- next=unsorted.next
- while(sorted):
- when any of the write-buses in unserted = any of the read-buses in sorted:
- unsorted.put_before(sorted)
- goto is_sorted
- sorted=sorted.next
- unsorted.put_at_tail(sorted)
- is_sorted:
- unsorted=next
-
-procfuncs=sorted
-
-;;Can this be done more efficiently? And in case, is it necessary?
-!#
-
-
-(define-ec-struct <RT_Event>
- <int64> time
- <struct-RT_Event-*> next
- <void-*> func
- <void-*> arg
- )
-
-;; (The double linked-list operations on procfunc can be optimized. (no point regarding cpu-use, but perhaps for readability...))
-(define-ec-struct <RT_Procfunc>
- <struct-RT_Procfunc-*> next
- <struct-RT_Procfunc-*> prev
-
- ;; <int> num_read_buses
- ;; <struct-rt_bus-**> read_buses
- ;; <int> num_write_buses
- ;; <struct-rt_bus-**> write_buses
-
- <int> visitors
- <void-*> func
- <void-*> arg
- <SCM> toprotect
- <SCM> smob
- )
-
-
-#!
-;; signed int provides 12-13 hours of timing. Not enough, and doesn't even wrap around. (used now)
-(/ (/ (/ (expt 2 29)
- 48000.0)
- 60)
- 60)
-
-;; unsigned long long provides over 12 million years of timing. Should be enough.
-;; (signed long long should be enough as well, by the way.)
-(/ (/ (/ (/ (/ (/ (expt 2 63)
- 48000.0)
- 60)
- 60)
- 24)
- 365)
- 1000000)
-!#
-
-
-(define-ec-struct-with-priority-queue <RT_Engine>
- <jack_ringbuffer_t-*> ringbuffer_to_rt
- <jack_ringbuffer_t-*> ringbuffer_from_rt
-
- priority-queue <struct-RT_Event-**>
-
- ;;<struct-RT_Event-*> events_rt ;; Sorted events to be scheduled.
- <int64> next_switchtime ;; The next time events_noninserted2 becomes events_noninserted1
- <int64> next_next_switchtime ;; The next time after that again that events_noninserted2 becomes events_noninserted1
- <struct-RT_Event-*> events_noninserted1 ;; Events that is scheduled 0.0 or more seconds into the future. (unsorted)
- <struct-RT_Event-*> events_noninserted2 ;; Events that is scheduled 0.1 or more seconds into the future. (unsorted)
- <struct-RT_Event-*> events_non_rt
-
- <int> num_procfuncs
- <struct-RT_Procfunc-*> procfuncs
-
- <char-*> allocplace
- <char-*> allocplace_end
-
- ;; Time must be unsigned! (wrap-around) (nope, using 64 bit instead.)
- <int64> time
- <int64> block_time
- <int64> prev_block_time ;; What is this?
- <float> samplerate
- <float> res
- <char-*> error
- <SCM> errorvariable
- <int> errorvarnum
- <jmp_buf> error_jmp
-
- <int> max_cpu_usage
- <int> num_max_cpu_interrupts
- <struct-RT_Procfunc-*> skip_this_procfunc_next_cycle ;; If going past max_cpu_usage after the last instance have run, skip this procfunc on the next cycle.
- <int> accumulated_cpu_usage ;; Remember cpu usage from last cycle and add it to the next, etc. To avoid hanging if one procfunc use more than 200% cpu.
- ;;<int> temp
-
- )
-
-
-
-(eval-c "" ;;(<-> "-I" snd-header-files-path)
- "#include <stdbool.h>"
- "#include <jack/ringbuffer.h>"
- "#include <jack/jack.h>"
- "#define __USE_XOPEN2K"
- "#include <semaphore.h>"
- "#include <jack/thread.h>"
- "#include <errno.h>"
- "#include <rollendurchmesserzeitsammler.h>"
-
- ;;"#include <rt-various.h>"
-
- ,bus-struct
-
- (shared-struct <RT_Event>)
- (shared-struct <RT_Procfunc>)
- (shared-struct <RT_Engine>)
-
-
- ;; Procfunc SMOB
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- (<scm_t_bits> procfunc_tag)
-
- (public
- (<void-*> rt_get_procfunc_data (lambda ((<SCM> procfunc_smob))
- (let* ((procfunc <struct-RT_Procfunc-*> (cast <void-*> (SCM_SMOB_DATA procfunc_smob))))
- (return procfunc))))
-
- (<SCM> rt_make_procfunc (lambda ((<void-*> func)(<void-*> arg)(<SCM> toprotect))
- (let* ((procfunc <struct-RT_Procfunc-*> (calloc 1 (sizeof <struct-RT_Procfunc>)))
- (smob <SCM>))
- (set! procfunc->func func)
- (set! procfunc->arg arg)
- (set! procfunc->toprotect toprotect)
- (SCM_NEWSMOB smob procfunc_tag procfunc)
- (set! procfunc->smob smob)
- (return smob)))))
-
- (<SCM> mark_procfunc (lambda ((<SCM> procfunc_smob))
- (let* ((procfunc <struct-RT_Procfunc-*> (cast <void-*> (SCM_SMOB_DATA procfunc_smob))))
- (return procfunc->toprotect))))
-
- "typedef void (*voidfreetypedef)(void*,int do_I_free_questionmark)"
- "struct first_arg_is_freefunc{voidfreetypedef ai;}"
-
- (<size_t> free_procfunc (lambda ((<SCM> procfunc_smob))
- (let* ((procfunc <struct-RT_Procfunc-*> (cast <void-*> (SCM_SMOB_DATA procfunc_smob))))
- (fprintf stderr (string "Freeing procfunc smob: %p\\n") procfunc)
- (if procfunc->arg
- (begin
- (<struct-first_arg_is_freefunc*> faif procfunc->arg)
- (if faif->ai
- (faif->ai procfunc->arg 1) ;; Call to free_globals_func
- ;;(free procfunc->arg) ;; This is where rt_globals is freed.
- )))
- (free procfunc)
- (return 0))))
- (<int> print_procfunc (lambda ((<SCM> procfunc_smob) (<SCM> port) (<scm_print_state-*> pstate))
- ;;(<struct-RT_Procfunc-*> procfunc (cast <void-*> (SCM_SMOB_DATA procfunc_smob)))
- (scm_puts (string "#<procfunc ... > ") port)
- (return 1)))
- (run-now
- (set! procfunc_tag (scm_make_smob_type (string "RT_Procfunc") (sizeof <struct-RT_Procfunc>)))
- (scm_set_smob_mark procfunc_tag mark_procfunc)
- (scm_set_smob_free procfunc_tag free_procfunc)
- (scm_set_smob_print procfunc_tag print_procfunc))
-
-
-
-
- ;; Code running in hard realtime thread (or can be)
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- "typedef int (*Callback)(void *arg,int startframes, int endframe)" ;; startframes and endframe do not need to be 64 bit.
- "typedef void (*Callback2)(struct RT_Engine *,struct RT_Event*)"
-
-
- ;; The data-type that is sent back to guile thru the ringbuffer_from_rt ringbuffer.
-
- ;; Types:
- "#define RT_DATABACK_EVENT 0"
- "#define RT_DATABACK_UNPROTECT_PROCFUNC 1"
-
- (define-struct <RT_databack>
- <int> type
- <void-*> data)
-
- (<void> rt_send_data_back (lambda ((<struct-RT_Engine-*> engine)
- (<int> type)
- (<void-*> data))
- (if (< (jack_ringbuffer_write_space engine->ringbuffer_from_rt) (sizeof <struct-RT_databack>))
- (fprintf stderr
- (string "Error. from_rt-ringbuffer full. This should be rare, but please report it to me, k.s.matheussen@notam02.no\\n"))
- (let* ((databack <struct-RT_databack>))
- (set! databack.type type)
- (set! databack.data data)
- (jack_ringbuffer_write engine->ringbuffer_from_rt
- (cast <char-*> &databack)
- (sizeof <struct-RT_databack>))))))
-
- (<void> rt_unprotect_procfunc (lambda ((<struct-RT_Engine-*> engine)
- (<struct-RT_Procfunc-*> toremove))
- (rt_send_data_back engine RT_DATABACK_UNPROTECT_PROCFUNC
- toremove)))
-
- (<int> rt_remove_procfunc_do (lambda ((<struct-RT_Engine-*> engine)
- (<struct-RT_Procfunc-*> toremove))
- (fprintf stderr (string "Yes, remove_procfunc_do %d %p %p\\n") toremove->visitors engine toremove)
- toremove->visitors--
-
- (if (== 0 toremove->visitors)
- (begin
- engine->num_procfuncs--
-
- (if toremove->arg
- (begin
- (<struct-first_arg_is_freefunc*> faif toremove->arg)
- (if faif->ai
- (faif->ai toremove->arg 0) ;; Call to release coroutines etc.
- )))
-
- (rt_unprotect_procfunc engine toremove)
-
- (if (== toremove->prev NULL)
- (begin
- (set! engine->procfuncs toremove->next)
- (if (!= NULL engine->procfuncs)
- (set! engine->procfuncs->prev NULL)))
- (begin
- (set! toremove->prev->next toremove->next)
- (if (!= toremove->next NULL)
- (set! toremove->next->prev toremove->prev))))
- (return 1))
- (return 0))))
-
- (<void> rt_insert_procfunc_do (lambda ((<struct-RT_Engine-*> engine)
- (<struct-RT_Procfunc-*> toinsert)
- (<int> wheretoinsert)) ;; 0=first, 1=last
-
- ;;(fprintf stderr (string "inserting: %u, visitors:%d\\n") event toinsert->visitors)
-
- toinsert->visitors++
-
- (if (== 1 toinsert->visitors)
- (begin
- engine->num_procfuncs++
-
- (cond ((== NULL engine->procfuncs)
- (set! toinsert->prev NULL)
- (set! toinsert->next NULL)
- (set! engine->procfuncs toinsert))
- ((== 0 wheretoinsert)
- (begin
- (set! toinsert->prev NULL)
- (set! engine->procfuncs->prev toinsert)
- (set! toinsert->next engine->procfuncs)
- (set! engine->procfuncs toinsert)))
- (else
- (let* ((procfuncs <struct-RT_Procfunc-*> engine->procfuncs))
- (while (!= NULL procfuncs->next)
- (set! procfuncs procfuncs->next))
- (set! procfuncs->next toinsert)
- (set! toinsert->prev procfuncs)
- (set! toinsert->next NULL)))))
-
-
- ;; A procfunc is always protected before being sent here, but since it was already playing, it needs to be unprotected
- ;; because protection/unprotection are nested functions.
- (rt_unprotect_procfunc engine toinsert))))
-
-
- (functions->public
-
- (<void> rt_insert_procfunc (lambda ((<struct-RT_Engine-*> engine)
- (<struct-RT_Event-*> event))
- ;;(printf (string "Putting first\\n"))
- (let* ((toinsert <struct-RT_Procfunc-*> event->arg))
- ;;(fprintf stderr (string "inserting: %u, visitors:%d\\n") event toinsert->visitors)
- (rt_insert_procfunc_do engine toinsert 0))))
- (<void> rt_append_procfunc (lambda ((<struct-RT_Engine-*> engine)
- (<struct-RT_Event-*> event))
- ;;(printf (string "Putting last\\n"))
- (let* ((toinsert <struct-RT_Procfunc-*> event->arg))
- ;;(fprintf stderr (string "inserting: %u, visitors:%d\\n") event toinsert->visitors)
- (rt_insert_procfunc_do engine toinsert 1))))
-
- (<void> rt_remove_procfunc (lambda ((<struct-RT_Engine-*> engine)
- (<struct-RT_Event-*> event))
- (let* ((toremove <struct-RT_Procfunc-*> event->arg))
- (rt_remove_procfunc_do engine toremove))))
-
- (<void> rt_remove_all_procfuncs (lambda ((<struct-RT_Engine-*> engine)
- (<struct-RT_Event-*> event))
- (let* ((procfunc <struct-RT_Procfunc-*> engine->procfuncs)
- (next <struct-RT_Procfunc-*>))
- (while procfunc
- (set! next procfunc->next)
- (rt_remove_procfunc_do engine procfunc)
- (set! procfunc next))))))
-
-
-
- ;; Priority queue code
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (<struct-RT_Event> rt_event_dummy)
-
- ,(gen-priority-queue-insert 'rt_insert_event '<struct-RT_Engine-*> '<struct-RT_Event-*>)
-
-
- ,(gen-priority-queue-delete-min 'rt_deletemin_event '<struct-RT_Engine-*> '<struct-RT_Event-*>)
-
-
- ;;(<int> rt_is_queue_not_empty (lambda ((<struct-RT_Engine-*> engine))
- ;; (return engine->queue_size)))
-
- ,(gen-priority-queue-find-min 'rt_findmin_event '<struct-RT_Engine-*> '<struct-RT_Event-*>)
-
-
- ;; Decide whether to insert now or later.
- (<void> rt_queue_event (lambda ((<struct-RT_Engine-*> engine)
- (<struct-RT_Event-*> event))
-
- (if (>= event->time engine->next_switchtime)
- (if (>= event->time engine->next_next_switchtime)
- (begin
- (set! event->next engine->events_noninserted2)
- (set! engine->events_noninserted2 event))
- (begin
- (set! event->next engine->events_noninserted1)
- (set! engine->events_noninserted1 event)))
- (rt_insert_event engine event))))
-
-
- ;; Run queued events
- (<void> rt_run_queued_events (lambda ((<struct-RT_Engine-*> engine)
- (<int64> time))
- (let* ((event <struct-RT_Event-*> (rt_findmin_event engine)))
- (while (and (!= event NULL)
- (>= time event->time))
- (let* ((callback <Callback2> event->func))
- (set! event->next engine->events_non_rt)
- (set! engine->events_non_rt event)
- ;;(fprintf stderr (string "while1, is_running: %d\\n") is_running)
- ;;(fprintf stderr (string "Running callback for event\\n"))
- (callback engine event)
- (rt_deletemin_event engine)
- (set! event (rt_findmin_event engine)))))))
-
- (<unsigned-int> rt_get_num_cycles (lambda ((<jack_client_t-*> client))
- (<unsigned-int> ret)
- (if (== NULL client)
- (return 0))
- (set! ret (jack_frames_since_cycle_start client))
- (if (> ret 64000)
- (return 0)
- (return ret))))
-
- (<void> rt_callback_do (lambda ((<struct-RT_Engine-*> engine)
- (<jack_client_t-*> client)
- (<int> is_running)
- (<int> nframes)
- (<int64> block_time)
- (<float> samplerate))
-
- (tar_init_block (/ (cast <float> nframes) samplerate))
-
- (<int> max_cycle_usage (/ (* nframes engine->max_cpu_usage) 100))
-
- (<int64> next_block_time (+ block_time nframes))
-
- (if (> nframes ,rt-max-frame-size)
- (begin
- (fprintf stderr (string "Framesize too high.\\n"))
- return))
-
- ;; Check ringbuffer for new events.
- (if (>= (jack_ringbuffer_read_space engine->ringbuffer_to_rt) (sizeof <void-*>))
- (while (>= (jack_ringbuffer_read_space engine->ringbuffer_to_rt) (sizeof <void-*>))
- (let* ((event <struct-RT_Event-*> NULL))
- (jack_ringbuffer_read engine->ringbuffer_to_rt (cast <char-*> &event) (sizeof <struct-RT_Event-*>))
- ;;(fprintf stderr (string "got: %u at %f\\n") event event->time)
-
- ;; If event->time is less or equal to the current time, we can't just run the event, because there
- ;; might be events with even less time-value later in the ringbuffer or in the queue.
- ;; So, queue it:
- engine->num_events++
- (rt_queue_event engine event)))
-
- ;; one=some_function(numbers_remaining,next_switchtime)/nframes
- ;; Check for one noninserted events.
- (if (!= NULL engine->events_noninserted1)
- (let* ((event <struct-RT_Event-*> engine->events_noninserted1))
- (set! engine->events_noninserted1 event->next)
- (rt_insert_event engine event))
- (if (!= NULL engine->events_noninserted2)
- (let* ((event <struct-RT_Event-*> engine->events_noninserted2))
- (set! engine->events_noninserted2 event->next)
- (rt_insert_event engine event)))))
-
- ;; Put events placed in the to-be-queued list into the priority queue and switch the two lists.
- (if (>= next_block_time engine->next_switchtime)
- (let* ((left <struct-RT_Event-*> engine->events_noninserted1))
- (set! engine->events_noninserted1 engine->events_noninserted2)
- (set! engine->events_noninserted2 NULL)
- (set! engine->next_switchtime engine->next_next_switchtime)
- (set! engine->next_next_switchtime (+ (* 1024 nframes) engine->next_next_switchtime))
- ;;(fprintf stderr (string "frames: %d\\n") nframes)
- ;; queue remaining noninserted1 events.
- (while (!= NULL left)
- (let* ((event <struct-RT_Event-*> left))
- (set! left event->next)
- (rt_queue_event engine event)))))
-
- ;;(fprintf stderr (string "engine: %u\\n") engine)
-
- (set! engine->samplerate samplerate)
-
- (rt_run_queued_events engine block_time)
-
- (set! engine->prev_block_time engine->block_time)
- (set! engine->block_time block_time)
-
- (if (== (setjmp engine->error_jmp) 0)
- (let* ((time <int64> block_time)
- (next_stop <int64>)
- (event <struct-RT_Event-*>))
-
-
- (while (< time next_block_time)
- (set! event (rt_findmin_event engine))
- (if event
- (set! next_stop (MIN next_block_time event->time))
- (set! next_stop next_block_time))
-
- ;; Make some noise
- (if is_running
- (if (> engine->accumulated_cpu_usage max_cycle_usage)
- (if (== NULL engine->procfuncs)
- (set! engine->accumulated_cpu_usage 0)
- (begin
- (set! engine->accumulated_cpu_usage
- (- engine->accumulated_cpu_usage (MIN engine->accumulated_cpu_usage
- max_cycle_usage)))
- engine->num_max_cpu_interrupts++))
- (let* ((procfunc <struct-RT_Procfunc-*> engine->procfuncs))
- (set! engine->time time)
- (while (!= NULL procfunc)
- (let* ((callback <Callback> procfunc->func)
- (next <struct-RT_Procfunc-*> procfunc->next))
-
-
- ;; Run a <realtime> instance function.
- (if (!= engine->skip_this_procfunc_next_cycle procfunc)
- (if (== 1 (callback procfunc->arg
- (- time block_time)
- (- next_stop block_time)))
- (rt_remove_procfunc_do engine procfunc)))
- (if (== NULL next)
- (set! engine->skip_this_procfunc_next_cycle NULL))
-
- ;; Check if too many cpu-cycles are used.
- (if (> (rt_get_num_cycles client)
- max_cycle_usage)
- (begin
- (set! engine->accumulated_cpu_usage (+ engine->accumulated_cpu_usage
- (- (jack_frames_since_cycle_start client)
- max_cycle_usage)))
- (if (== NULL next)
- (set! engine->skip_this_procfunc_next_cycle procfunc))
- engine->num_max_cpu_interrupts++
- break))
-
- (set! procfunc next))))))
-
- (set! time next_stop)
- (rt_run_queued_events engine time))))
-
-
- ;; Just to be sure (no, it can be set to non-NULL while initializing stalin)
- ;;(if (!= NULL (clm_set_tar_heap NULL))
- ;; (fprintf stderr (string "Error! The clm heap was not NULL while leaving the realtime block...\\n")))
-
- ;;(set! engine->temp (jack_frames_since_cycle_start client))
-
- ;; Put events-to-be-freed into freing-ringbuffer.
- (while (and (!= engine->events_non_rt NULL)
- ;; Be lazy. No rush to fill up the ringbuffer here.
- (>= (jack_ringbuffer_write_space engine->ringbuffer_from_rt) (/ ,rt-from-ringbuffer-size 2)))
- (let* ((next <struct-RT_Event-*> engine->events_non_rt->next))
- (rt_send_data_back engine RT_DATABACK_EVENT
- engine->events_non_rt)
- (set! engine->events_non_rt next)))))
-
-
- (<struct-RT_Engine-*> gl_engine)
- (<jack_client_t-*> gl_client)
- (<int> gl_is_running)
- (<int> gl_nframes)
- (<int64> gl_base_time)
- (<float> gl_samplerate)
-
- (<sem_t> cb_ready_sem)
- (<sem_t> cb_finished_sem)
- (run-now
- (sem_init &cb_ready_sem 0 0)
- (sem_init &cb_finished_sem 0 0))
- (<int> cb_working 0)
-
- (<void*> callback_thread_func
- (lambda ((<void*> arg))
- (while 1
- (set! cb_working 0)
- (sem_wait &cb_ready_sem)
- (set! cb_working 1)
- (rt_callback_do gl_engine
- gl_client
- gl_is_running
- gl_nframes
- gl_base_time
- gl_samplerate)
- (sem_post &cb_finished_sem))
- (return NULL)))
-
- (<pthread_t> callback_thread "{0}")
- (run-now
- (pthread_create &callback_thread NULL callback_thread_func NULL)
- ;;(jack_acquire_real_time_scheduling callback_thread 60)
- )
-
- (functions->public
- (<void> rt_callback (lambda ((<struct-RT_Engine-*> engine)
- (<jack_client_t-*> client)
- (<int> is_running)
- (<int> nframes)
- (<int64> base_time)
- (<float> samplerate))
- (<static-int> not_finished_last_time 0)
- (if 1
- (rt_callback_do engine
- client
- is_running
- nframes
- base_time
- samplerate)
- (begin
- (if (== 1 cb_working)
- (begin
- (fprintf stderr (string "Still not finished...\\n"))
- return))
- (if (== 1 not_finished_last_time)
- (sem_wait &cb_finished_sem))
-
- (set! gl_engine engine)
- (set! gl_client client)
- (set! gl_is_running is_running)
- (set! gl_nframes nframes)
- (set! gl_base_time base_time)
- (set! gl_samplerate samplerate)
-
- (sem_post &cb_ready_sem)
-
- (<struct-timespec> timespec)
- (set! timespec.tv_sec 0)
- (set! timespec.tv_nsec 999999999/300)
- ;;(sem_wait &cb_finished_sem))))))
- (if (== -1 (sem_timedwait &cb_finished_sem &timespec))
- (begin
- (set! not_finished_last_time 1)
- (fprintf stderr (string "sem_wait failed: %d, (%d %d %d %d)\\n") errno EINTR EAGAIN EINVAL ETIMEDOUT))
- (set! not_finished_last_time 0)))))))
-
-
- (public
-
- (<void> rt_init_engine (lambda ((<struct-RT_Engine-*> engine))
- (set! engine->allocplace (malloc ,rt-allocmem-size))
- (set! engine->allocplace_end (+ engine->allocplace ,rt-allocmem-size))
-
- ,(gen-priority-queue-init-code 'engine '<struct-RT_Event-*> 'rt_event_dummy))))
-
-
- ;; Freeing events, protecting and unprotecting procfunc-smobs.
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- (public
-
- ;; (scm_gc_protect_object/scm_gc_unprotect_object are nested functions.)
- (<void> rt_protect_var (lambda ((<SCM> var))
- (scm_gc_protect_object var)
- "/* */"
- ))
- (<void> rt_unprotect_var (lambda ((<SCM> var))
- (scm_gc_unprotect_object var)
- "/* */"
- ))
-
- (<void> rt_non_check_non_rt (lambda ((<struct-RT_Engine-*> engine))
- (while (>= (jack_ringbuffer_read_space engine->ringbuffer_from_rt)
- (sizeof <struct-RT_databack>))
- (let* ((databack <struct-RT_databack>))
- (jack_ringbuffer_read engine->ringbuffer_from_rt (cast <char-*> &databack) (sizeof <struct-RT_databack>))
-
- (cond ((== RT_DATABACK_UNPROTECT_PROCFUNC databack.type)
- (let* ((procfunc <struct-RT_Procfunc-*> databack.data))
- (rt_unprotect_var procfunc->smob)))
-
- ((== RT_DATABACK_EVENT databack.type)
- (let* ((event <struct-RT_Event-*> databack.data))
- (free event))))))))
-
- ;; Dont use.
- (<void> rt_reset_engine (lambda ((<struct-RT_Engine-*> engine))
-
- (<struct-RT_Event-*> temp)
-
- ;; First wait for the ringbuffers to be empty.
- (while (or (>= (jack_ringbuffer_read_space engine->ringbuffer_to_rt) 0)
- (>= (jack_ringbuffer_read_space engine->ringbuffer_from_rt) 0))
- (rt_non_check_non_rt engine)
- ;;(usleep 50)
- )
-
- (free engine->queue)
-
- (set! temp engine->events_noninserted1)
-
- )))
-
-
-
-
- )
-
-(define num-events 0)
-(def-class (<rt-engine> initdriver)
-
- (define engine (<RT_Engine> #:ringbuffer_to_rt (jack_ringbuffer_create rt-to-ringbuffer-size)
- #:ringbuffer_from_rt (jack_ringbuffer_create rt-from-ringbuffer-size)
- #:max_cpu_usage rt-max-cpu-usage
- #:queue_fullsize 65536))
-
- (def-var engine-c (-> engine get-c-object))
-
- (rt_init_engine engine-c)
-
- (define driver (initdriver engine-c))
-
- (def-method (add-event frame-time func arg #:key after-run-func)
- (set! num-events (1+ num-events))
- ;; Write to realtime thread.
- ;; (This function should be written in C with signalling from the rt-thread to avoid usleeping...
- ;; (ec-pointer-to-pointer isn't thread-safe either...))
- (let ((event (<RT_Event> #:time frame-time #:func func #:arg arg)))
- (while (< (jack_ringbuffer_write_space (-> engine ringbuffer_to_rt)) rt-pointer-size)
- (c-display "sleeping")
- (usleep 50))
- ;;(c-display "sending" (-> event get-c-object))
- (jack_ringbuffer_write (-> engine ringbuffer_to_rt)
- (ec-pointer-to-pointer (-> event get-c-object))
- rt-pointer-size)
-
- ;; Read from realtime thread
- ;;(c-display "non1")
- (rt_non_check_non_rt engine-c)
- ;;(c-display "non2")
- )
- )
-
- (def-method (start)
- (-> engine next_switchtime 4096) ;; These numbers doesn't matter much as they'll
- ;; adjust themself automatically, but next_next needs
- ;; to be larger than next.
- (-> engine next_next_switchtime 8192)
- (-> driver start))
-
-
- (add-super! engine)
-
- (if (not driver)
- (set! this #f)
- (add-super! driver))
-
- )
-
-
-(define *rt-jack-engine* (<rt-engine> (lambda (rt-arg)
- (<jack-rt-driver> *rt-num-input-ports* *rt-num-output-ports* (rt_callback) rt-arg))))
-
-(define *rt-pd-engine* (if (provided? 'snd-pd-external)
- (let ((res (<rt-engine> (lambda (c-engine)
- (pd_rt_init c-engine (rt_callback))
- (<pd-rt-driver> (rt_callback) c-engine)))))
- (snd_pd_set_rt_funcs (pd_rt_run) (pd_rt_process))
- (-> res samplerate (pd_rt_get_samplerate))
- res)
- #f))
-
-
-(define *rt-engine* *rt-jack-engine*)
-
-(add-hook! exit-hook (lambda args
- (-> *rt-jack-engine* destructor)))
-(if (provided? 'snd-pd-external)
- (add-hook! exit-hook (lambda args
- (-> *rt-pd-engine* destructor))))
-
-
-(set! *out-bus* (-> *rt-jack-engine* out-bus))
-(set! *in-bus* (-> *rt-jack-engine* in-bus))
-
-(-> *rt-engine* start)
-
-
-#!
-(-> *rt-engine* destructor)
-!#
-
-
-#!
-(-> rt-jackdriver destructor)
-
-(define RT (<RT_Engine> #:wef 5))
-(-> rt-jackdriver num-outputs)
-(-> *rt-engine* playback-engines)
-
-(define b (<Jack_Arg>))
-(define a (list (<RT_Engine>) (<RT_Engine>)))
-
-(-> b rt_input_args (map (lambda (a) (-> a get-c-object)) a))
-(-> b rt_input_args a)
-(-> b rt_input_args)
-
-(begin (-> (car a) get-c-object))
-
-(define a (rt_make_procfunc (rt_insert_procfunc) (vector 0 1 2 3)))
-(gc)
-!#
-
-
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;; Interface ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-(define* (rte-restart #:key (num-input-ports *rt-num-input-ports*) (num-output-ports *rt-num-output-ports*))
- (set! *rt-num-input-ports* num-input-ports)
- (set! *rt-num-output-ports* num-output-ports)
- (begin
- (-> *rt-engine* destructor)
- (let ((new-engine (<rt-engine> (lambda (rt-arg)
- (<jack-rt-driver> num-input-ports num-output-ports (rt_callback) rt-arg)))))
- (set! *out-bus* (-> new-engine out-bus))
- (set! *in-bus* (-> new-engine in-bus))
- (set! *rt-engine* new-engine)
- (set! *rt-jack-engine* new-engine)
- (-> *rt-engine* start))))
-
-(define (rte-silence!)
- (-> *rt-engine* add-event
- (rte-frames)
- (rt_remove_all_procfuncs)
- #f))
-
-(define rte-max-cpu-usage
- (make-procedure-with-setter
- (lambda ()
- (-> *rt-engine* max_cpu_usage))
- (lambda (n)
- (-> *rt-engine* max_cpu_usage n))))
-
-(define (rte-pause)
- (-> *rt-engine* pause))
-(define (rte-continue)
- (-> *rt-engine* continue))
-(define (rte-time)
- (-> *rt-engine* get-time))
-(define (rte-frames)
- (-> *rt-engine* frames))
-(define (rte-samplerate)
- (-> *rt-engine* get-samplerate))
-(define (rte-is-running?)
- (not (= 0 (-> *rt-engine* is_running))))
-(define (rte-info)
- (list (-> *rt-engine* queue_size)
- (-> *rt-engine* queue_fullsize)
- (-> *rt-engine* num_lost_events)
- (-> *rt-engine* num_events)
- (-> *rt-engine* num_procfuncs)
- (jack_cpu_load (-> *rt-jack-engine* get-client))
- (-> *rt-engine* num_max_cpu_interrupts)))
-
-
-
-
-#!
-
-;;(def-class (<realtime> rt-rt #:key (engine *rt-engine*))
-;; (Super (<realtime-2> (car rt-rt) (cadr rt-rt) engine))
-;; )
-
-
-(eval-c ""
- (functions->public
- ;;(callback procfunc->arg num_outs outs num_ins ins time))
- (<void> test_generator (lambda ((<SCM> arg)
- (<int> num_outs) (<float> *outs)
- (<int> num_ins) (<float> *ins)
- (<int> time))
- ;;return)))
- (let* ((val <float> (/ (cast <float> (random)) RAND_MAX)))
- (set! outs[0] val)
- (set! outs[1] val)))))
-
- (public
- (<float> test_generator2 (lambda ()
- (return (/ (cast <float> (random)) RAND_MAX))))))
-
-
-
-
-
-
-(define osc (make-oscil #:frequency 440))
-(define instrument-rt (rt-rt (rt-2 '(lambda ()
- (out (* 0.4 (oscil osc)))))))
-
-(rt-run 2 2
- (lambda ()
- (out (* 0.4 (oscil osc)))))
-
-(define instrument (<realtime> instrument-rt))
-(-> *rt-engine* start)
-(-> instrument play)
-(-> instrument stop)
-(set! (mus-frequency osc) 200)
-
-(define d (<dialog> "gakk" #f))
-(<slider> d "slider2" 50 100 1200 (lambda (val)
- (set! (mus-frequency osc) val))
- 1)
-(-> d show)
-(-> d hide)
-
-(-> *rt-engine* get-time)
-
-(define instrument (<realtime-2> (test_generator)))
-(-> *rt-engine* start)
-(-> instrument play-now 2)
-(-> instrument play (+ (-> *rt-engine* get-time) 1))
-(-> instrument play-now 1 3)
-(-> instrument play)
-(-> instrument stop)
-(-> instrument stop (+ (-> *rt-engine* get-time) 2))
-
-(-> *rt-engine* get-time)
-
-
-(let* ((amp 0.2)
- (osc (make-oscil :frequency 440))
- (instrument (<realtime> (oscil osc))))
- (-> instrument play-now 10))
-~=
-(let* ((amp 0.2)
- (osc (make-oscil :frequency 440))
- (instrument (<realtime> (oscil osc))))
- (-> instrument play 0 10)
- (-> instrument start))
-
-(test_generator2)
-(> 8 5)
-
-(let ((a 10))
- (while (> a 0)
- (break)
- (set! a (1- a)))
- (c-display a))
-
-!#
-
-
diff --git a/rt-examples.scm b/rt-examples.scm
deleted file mode 100644
index a29d085..0000000
--- a/rt-examples.scm
+++ /dev/null
@@ -1,809 +0,0 @@
-
-
-;; Instructions:
-;; 1. Start the jack sound server.
-;; 2. Start snd.
-;; 3. Evaluate (load-from-path "rt-compiler.scm")
-;; 4. Evaluate (load-from-path "rt-examples.scm")
-;; 5. Browse this file and evaluate commented blocks.
-;;
-;; In case of stuck sounds, evaluate (rte-silence!)
-;;
-;; K.Matheussen 2005.
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Oscilator
-
-
-(definstrument (oscillator start duration)
- (let ((osc (make-oscil))
- (vol 2/3))
- (<rt-out> :dur start duration
- (* (oscil osc)
- vol))))
-
-#!
-(define i (oscillator 0 10))
-(set! (-> i vol) 0.3)
-(set! (mus-frequency (-> i osc)) 200)
-(-> i stop)
-(rte-silence!)
-!#
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Realtime version of bird.scm.
-
-(load-from-path "bird.scm")
-
-(define bigbird-org bigbird)
-(definstrument (bigbird-new start dur frequency freqskew amplitude freq-envelope amp-envelope partials)
- "(bigbird start dur frequency freqskew amplitude freq-envelope amp-envelope partials)"
-
- (let* ((gls-env (make-env freq-envelope (hz->radians freqskew) dur))
- (os (make-polyshape frequency :coeffs (partials->polynomial (normalize-partials partials))))
- (amp-env (make-env amp-envelope amplitude dur))
- (beg (inexact->exact (round (* (mus-srate) start))))
- (len (inexact->exact (round (* (mus-srate) dur))))
- (end (+ beg len)))
- (ws-interrupt?)
- (<rt-out> :dur start dur
- (* (env amp-env)
- (polyshape os 1.0 (env gls-env))))))
-
-(define bird-org bird)
-(definstrument (bird-new start dur frequency freqskew amplitude freq-envelope amp-envelope)
- "(bird start dur frequency freqskew amplitude freq-envelope amp-envelope)"
- (let* ((gls-env (make-env freq-envelope (hz->radians freqskew) dur))
- (os (make-oscil :frequency frequency))
- (amp-env (make-env amp-envelope amplitude dur))
- (len (inexact->exact (round (* (mus-srate) dur))))
- (beg (inexact->exact (round (* (mus-srate) start))))
- (end (+ beg len)))
- (ws-interrupt?)
- (<rt-out> :dur start dur
- (* (env amp-env)
- (oscil os (env gls-env))))))
-
-
-(define with-sound-org with-sound)
-(defmacro with-sound-new (args . body)
- `(begin
- ,@body))
-
-(define (make-rt-birds)
- (set! bird bird-new)
- (set! bigbird bigbird-new)
- (set! with-sound with-sound-new)
-
- (make-birds)
-
- (set! with-sound with-sound-org)
- (set! bird bird-org)
- (set! bigbird bigbird-org))
-
-
-
-#!
-(make-rt-birds)
-(rte-info)
-(rte-silence!)
-(rte-restart)
-!#
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; GUI examples
-
-(definstrument (make-osc-gui)
- (letrec* ((osc (make-oscil #:frequency 0))
- (freq (make-glide-var 440 1))
- (das-vol 0.4)
- (vol (make-glide-var das-vol 0.001))
- (instrument (<rt-out>
- (* (read-glide-var vol)
- (oscil osc (hz->radians (read-glide-var freq))))))
- (exit (lambda ()
- (-> instrument stop)
- (-> d hide)))
- (d (<dialog> "Hard Realtime Common Lisp Music!" exit
- "Close" exit
- "Stop" (<- instrument stop)
- "Start" (<- instrument play))))
- (<slider> d "Frequency" 50 440 20000 (lambda (val)
- (write-glide-var freq val))
- 1)
- (<slider> d "Amplitude" 0 das-vol 2.0 (lambda (val)
- (write-glide-var vol val))
- 1000)
- (-> d show)))
-
-
-(definstrument (make-fm-gui freq)
- (letrec* ((amp 0.6)
- (mc-ratio 2)
- (index 4)
-
- (fm (make-oscil (* freq mc-ratio) :initial-phase (/ 3.14159 2.0)))
- (carrier (make-oscil freq))
- (fm_index (* (hz->radians freq) mc-ratio index))
-
- (instrument (<rt-out> (* amp
- (oscil carrier (* fm_index
- (oscil fm))))))
- (exit (lambda ()
- (-> instrument stop)
- (-> d hide)))
-
- (d (<dialog> "Hard Realtime Common Lisp Music!" exit
- "Close" exit
- "Stop" (<- instrument stop)
- "Start" (<- instrument play))))
-
- (<slider> d "Fm Frequency"
- 2 (mus-frequency fm) 1200
- (lambda (val)
- (set! (mus-frequency fm) (* mc-ratio val)))
- 10)
-
- (<slider> d "Carrier Frequency"
- 50 (mus-frequency carrier) 1200
- (lambda (val)
- (set! (mus-frequency carrier) val))
- 10)
-
- (<slider> d "Index"
- 0 (-> instrument fm_index) 50.0
- (lambda (val)
- (set! (-> instrument fm_index) (* (hz->radians freq) mc-ratio val)))
- 100)
-
- (<slider> d "Amplitude"
- 0 (-> instrument amp) 1.0
- (lambda (val)
- (set! (-> instrument amp) val))
- 1000)
-
- (-> d show)))
-
-
-#!
-;; gui.scm requires gtk:
-;;(c-load-from-path gui)
-
-(make-osc-gui)
-(make-fm-gui 200)
-!#
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Fileplayers
-
-(definstrument (play-once filename)
- (let* ((rs (make-readin filename)))
- (<rt-play> (lambda ()
- (if (>= (mus-location rs) (mus-length rs))
- (remove-me)
- (out (readin rs)))))))
-
-(definstrument (loopplay filename)
- (let* ((rs (make-readin filename)))
- (<rt-play> (lambda ()
- (if (>= (mus-location rs) (mus-length rs))
- (set! (mus-location rs) 0))
- (out (readin rs))))))
-
-(definstrument (backandforth-stereo filename pan)
- (let* ((read0 (make-readin filename #:channel 0))
- (read1 (make-readin filename #:channel 1)))
- (<rt-play> (lambda ()
- (let ((readfunc (lambda (read)
- (if (>= (mus-location read) (mus-length read))
- (set! (mus-increment read) -1)
- (if (<= (mus-location read) 0)
- (set! (mus-increment read) 1)))
- (readin read))))
- ;; (Very stupid panner)
- (out (vct (* (readfunc read0)
- (if (< pan 0)
- 1
- (- 1 pan)))
- (* (readfunc read1)
- (if (> pan 0)
- 1
- (+ 1 pan))))))))))
-
-
-(definstrument (play-once-st filename)
- (let* ((rs-A (make-readin #:file filename #:channel 0))
- (rs-B (make-readin #:file filename #:channel 1)))
- (<rt-play> (lambda ()
- (if (>= (mus-location rs-A) (mus-length rs-A))
- (remove-me)
- (out (vct (readin rs-A)
- (readin rs-B))))))))
-
-
-#!
-(define filename "/gammelhd/home/kjetil/cemb2.wav")
-
-(play-once filename)
-
-(define p (loopplay filename))
-(-> p stop)
-
-(define p (backandforth-stereo filename 0))
-(set! (-> p pan) -1)
-(set! (-> p pan) 0)
-(set! (-> p pan) 1)
-(-> p stop)
-
-(define p (play-once-st filename))
-(rte-silence!)
-
-!#
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Extremely Simple delay.
-;;
-
-(definstrument (extremely-simple-delay latency mix #:key (max-latency-in-seconds 2))
- (let* ((das-vct-length (c-integer (* (rte-samplerate) max-latency-in-seconds)))
- (das-vct (make-vct das-vct-length))
- (pos 0))
- (<rt-play> (lambda ()
- (declare (<int> pos))
-
- (let* ((frame-latency (the <int> (* (mus-srate) latency)))
- (write-pos (remainder (+ pos frame-latency)
- das-vct-length))
- (read-pos pos)
- (next-pos (remainder (1+ pos)
- das-vct-length))
- (sample (in 0))
- (delayed-sample (vct-ref das-vct read-pos)))
-
- (vct-set! das-vct write-pos sample)
- (out (+ sample (* mix delayed-sample)))
- (set! pos next-pos))))))
-
-
-#!
-
-(define bus (make-bus 2))
-(loopplay filename #:out-bus bus)
-(define p (extremely-simple-delay 1 0.5 #:in-bus bus))
-
-(set! (-> p mix) 1)
-(set! (-> p latency) 1.5)
-(rte-info)
-(rte-silence!)
-!#
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; The fm violin.
-;;
-;; Copied from v.scm.
-
-(definstrument (fm-violin startime dur frequency amplitude #:key
- (fm-index 1.0)
- (amp-env '(0 0 25 1 75 1 100 0))
- (periodic-vibrato-rate 5.0)
- (random-vibrato-rate 16.0)
- (periodic-vibrato-amplitude 0.0025)
- (random-vibrato-amplitude 0.005)
- (noise-amount 0.0)
- (noise-freq 1000.0)
- (ind-noise-freq 10.0)
- (ind-noise-amount 0.0)
- (amp-noise-freq 20.0)
- (amp-noise-amount 0.0)
- (gliss-env '(0 0 100 0))
- (glissando-amount 0.0)
- (fm1-env '(0 1 25 .4 75 .6 100 0))
- (fm2-env '(0 1 25 .4 75 .6 100 0))
- (fm3-env '(0 1 25 .4 75 .6 100 0))
- (fm1-rat 1.0)
- (fm2-rat 3.0)
- (fm3-rat 4.0)
- (fm1-index #f)
- (fm2-index #f)
- (fm3-index #f)
- (degree 0)
- (distance 1.0)
- (reverb-amount 0.01)
- (base 1.0)
- #:allow-other-keys)
-
- "(fm-violin startime dur frequency amplitude #:key
- (fm-index 1.0) (amp-env '(0 0 25 1 75 1 100 0))
- (periodic-vibrato-rate 5.0) (random-vibrato-rate 16.0)
- (periodic-vibrato-amplitude 0.0025) (random-vibrato-amplitude 0.005)
- (noise-amount 0.0) (noise-freq 1000.0) (ind-noise-freq 10.0)
- (ind-noise-amount 0.0) (amp-noise-freq 20.0)
- (amp-noise-amount 0.0) (gliss-env '(0 0 100 0))
- (glissando-amount 0.0) (fm1-env '(0 1 25 .4 75 .6 100 0))
- (fm2-env '(0 1 25 .4 75 .6 100 0)) (fm3-rat 4.0)
- (fm3-env '(0 1 25 .4 75 .6 100 0)) (fm1-rat 1.0)
- (fm2-rat 3.0) (fm1-index #f) (fm2-index #f)
- (fm3-index #f) (degree 0) (distance 1.0)
- (reverb-amount 0.01) (base 1.0))
-This version of the fm-violin assumes it is running within with-sound (where *output* and *reverb* are defined).
- (with-sound () (fm-violin 0 1 440 .1))"
-
- (let* ((pi 3.141592653589793)
- (beg (inexact->exact (floor (* startime (mus-srate)))))
- (len (inexact->exact (floor (* dur (mus-srate)))))
- (end (+ beg len))
- (frq-scl (hz->radians frequency))
- (modulate (not (zero? fm-index)))
- (maxdev (* frq-scl fm-index))
- (logfreq (log frequency))
- (sqrtfreq (sqrt frequency))
- (index1 (or fm1-index (min pi (* maxdev (/ 5.0 logfreq)))))
- (index2 (or fm2-index (min pi (* maxdev 3.0 (/ (- 8.5 logfreq) (+ 3.0 (* frequency .001)))))))
- (index3 (or fm3-index (min pi (* maxdev (/ 4.0 sqrtfreq)))))
- (easy-case (and (zero? noise-amount)
- (equal? fm1-env fm2-env)
- (equal? fm1-env fm3-env)
- (= fm1-rat (floor fm1-rat))
- (= fm2-rat (floor fm2-rat))
- (= fm3-rat (floor fm3-rat))
- (integer? (inexact->exact (/ fm2-rat fm1-rat))) ; might be 2=2 but 1=3 or whatever
- (integer? (inexact->exact (/ fm3-rat fm1-rat)))))
- (norm (or (and easy-case modulate 1.0) index1))
- (carrier (make-oscil frequency))
- (poly-fmosc1 (if modulate
- (if easy-case
- (make-polyshape :frequency (* fm1-rat frequency)
- :coeffs (partials->polynomial (list (inexact->exact fm1-rat) index1
- (inexact->exact (floor (/ fm2-rat fm1-rat))) index2
- (inexact->exact (floor (/ fm3-rat fm1-rat))) index3)))
- (make-polyshape))
- (make-polyshape)))
- (fmosc1 (if modulate
- (if easy-case
- #f
- (make-oscil (* fm1-rat frequency)))
- #f))
- (fmosc2 (and modulate (or easy-case (make-oscil (* fm2-rat frequency)))))
- (fmosc3 (and modulate (or easy-case (make-oscil (* fm3-rat frequency)))))
- (ampf (make-env amp-env :scaler amplitude :base base :duration dur))
- (indf1 (and modulate (make-env fm1-env norm :duration dur)))
- (indf2 (and modulate (or easy-case (make-env fm2-env index2 :duration dur))))
- (indf3 (and modulate (or easy-case (make-env fm3-env index3 :duration dur))))
- (frqf (make-env gliss-env (* glissando-amount frq-scl) :duration dur))
- (pervib (make-triangle-wave periodic-vibrato-rate (* periodic-vibrato-amplitude frq-scl)))
- (ranvib (make-rand-interp random-vibrato-rate (* random-vibrato-amplitude frq-scl)))
- (fm-noi (if (not (= 0.0 noise-amount))
- (make-rand noise-freq (* pi noise-amount))
- #f))
- (ind-noi (if (and (not (= 0.0 ind-noise-amount)) (not (= 0.0 ind-noise-freq)))
- (make-rand-interp ind-noise-freq ind-noise-amount)
- #f))
- (amp-noi (if (and (not (= 0.0 amp-noise-amount)) (not (= 0.0 amp-noise-freq)))
- (make-rand-interp amp-noise-freq amp-noise-amount)
- #f))
- (ind-noi? (if ind-noi #t #f))
- (amp-noi? (if amp-noi #t #f))
-
- ;;(locs (make-locsig degree distance reverb-amount *output* *reverb* (mus-channels *output*)))
- (locs (make-locsig degree distance reverb-amount *output* *reverb* 2))
- (vib 0.0)
- (modulation 0.0)
- (fuzz 0.0)
- (ind-fuzz 1.0)
- (amp-fuzz 1.0))
-
- (ws-interrupt?)
-
- (if (not ind-noi)
- (set! ind-noi (make-rand-interp)))
- (if (not amp-noi)
- (set! amp-noi (make-rand-interp)))
- (if (not fm-noi)
- (set! fm-noi (make-rand)))
- (if (not (oscil? fmosc1))
- (set! fmosc1 (make-oscil)))
- (if (not (oscil? fmosc2))
- (set! fmosc2 (make-oscil)))
- (if (not (oscil? fmosc3))
- (set! fmosc3 (make-oscil)))
- (if (not (env? indf1))
- (set! indf1 (make-env '(0 2) )))
- (if (not (env? indf2))
- (set! indf2 (make-env '(0 2))))
- (if (not (env? indf3))
- (set! indf3 (make-env '(0 2))))
-
-
- (if (or (not easy-case) ind-noi amp-noi (> noise-amount 0.0) (not modulate))
- (<rt-play> startime dur
- (lambda ()
- (if (not (= 0.0 noise-amount))
- (set! fuzz (rand fm-noi)))
- (set! vib (+ (env frqf) (triangle-wave pervib) (rand-interp ranvib)))
- (if ind-noi? (set! ind-fuzz (+ 1.0 (rand-interp ind-noi))))
- (if amp-noi? (set! amp-fuzz (+ 1.0 (rand-interp amp-noi))))
- (if modulate
- (if easy-case
- (set! modulation
- (* (env indf1)
- (polyshape poly-fmosc1 1.0 vib)))
- (set! modulation
- (+ (* (env indf1) (oscil fmosc1 (+ (* fm1-rat vib) fuzz)))
- (* (env indf2) (oscil fmosc2 (+ (* fm2-rat vib) fuzz)))
- (* (env indf3) (oscil fmosc3 (+ (* fm3-rat vib) fuzz)))))))
- (locsig locs (* (env ampf) amp-fuzz
- (oscil carrier (+ vib (* ind-fuzz modulation)))))))
- (<rt-play> startime dur
- (lambda ()
- (let* ((vib (+ (env frqf) (triangle-wave pervib) (rand-interp ranvib))))
- (locsig locs (* (env ampf)
- (oscil carrier (+ vib (* (env indf1)
- (polyshape fmosc1 1.0 vib))))))))))))
-
-
-#!
-(c-for 0 < 60 1
- (lambda (i)
- (c-display i)
- (fm-violin i (max 0.5 (random 15))
- (1+ (random (1+ (* i 20))))
- (max 0.02 (random .3))
- :degree (random 90)
- :noise-amount (* (random 8) (random 0.4))
- :fm-index (+ i 1))))
-(rte-info)
-(rte-silence!)
-(rte-restart)
-
-!#
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Ladspa
-
-(definstrument (ladspatest)
- (let ((am-pitchshift (make-ladspa "am_pitchshift_1433" "amPitchshift")))
- (<rt-play> (lambda ()
- (out (ladspa-run am-pitchshift (vct (in 0))))))))
-
-(definstrument (ladspatest-st)
- (let ((am-pitchshift (make-ladspa "mbeq_1197" "mbeq"))
- (am-pitchshift2 (make-ladspa "mbeq_1197" "mbeq")))
- (<rt-play> (lambda ()
- (out (vct (vct-ref (ladspa-run am-pitchshift
- (vct (in 0)))
- 0)
- (vct-ref (ladspa-run am-pitchshift2
- (vct (in 1)))
- 0)))))))
-
-
-
-#!
-(define l (ladspatest))
-(ladspa-set! (-> l am-pitchshift) 0 1.5)
-(make-ladspa-gui (-> l am-pitchshift))
-;;(make-ladspa-gui (-> l am-pitchshift2))
-(-> l stop)
-(rte-info)
-(rte-silence!)
-(rte-restart)
-!#
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Shepard tones
-
-(definstrument (risset startpitch endpitch num-oscs loop-duration)
- (define starttime (+ 1 (rte-time))) ;; Ensure all starts simultaniously by scheduling one second into the future.
- (for-each (lambda (n)
- (let ((osc (make-oscil #:frequency 0))
- (e-p (make-env `(0 ,startpitch 1 ,endpitch) #:duration loop-duration #:base (expt 2 num-oscs)))
- (e-a (make-env `(0 0 1 0.25 2 0) #:duration loop-duration #:base 100)) ;; Linear amplitude-change didn't sound very nice.
- (start-location (* (/ (* (mus-srate) loop-duration)
- num-oscs)
- n)))
- (set! (mus-location e-p) start-location)
- (set! (mus-location e-a) start-location)
- (<rt-play-abs> starttime
- (lambda ()
- (if (>= (mus-location e-p) (mus-length e-p))
- (begin
- (set! (mus-location e-p) 0)
- (set! (mus-location e-a) 0)))
- (out (* (env e-a)
- (oscil osc (hz->radians (env e-p)))))))))
- (iota num-oscs)))
-
-
-#!
-;; When evaluating the three following lines simulatniously, There are some occasional pops. Why?
-(risset 50 800 4 50)
-(risset 800 50 4 50)
-(risset 150 200 4 10)
-
-(rte-silence!)
-(rte-restart)
-(rte-info)
-!#
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; A hyper-simple alsa midi softsynth.
-;; (Lack of list-creation functions makes it a bit unelegant and hard to extend...)
-
-(definstrument (midisoftsynth num-voices)
- (let* ((num-playing 0)
- (freqs (make-vct (1+ num-voices)))
- (amps (make-vct (1+ num-voices)))
- (oscs (apply vector (map (lambda (i) (make-oscil #:frequency 0)) (iota (1+ num-voices))))))
- (<rt-play> (lambda ()
- (receive-midi (lambda (control data1 data2)
- (set! control (logand #xf0 control))
- ;;(printf "gakk! %x %x %x\\n" control data1 data2)
- (if (and (< num-playing num-voices)
- (= control #x90)
- (> data2 0))
- (begin
- (vct-set! freqs num-playing data1)
- (vct-set! amps num-playing (/ data2 #x7f))
- (set! (mus-phase (vector-ref oscs num-playing)) 0)
- (set! num-playing (1+ num-playing)))
- (if (or (= control #x80)
- (and (= control #x90)
- (= data2 0)))
- (let ((foundit 0))
- (range i 0 num-playing
- (if (and (not foundit)
- (= (vct-ref freqs i) data1))
- (begin
- (set! foundit 1)
- (set! num-playing (1- num-playing))))
- (if foundit
- (begin
- (set! (mus-phase (vector-ref oscs i))
- (mus-phase (vector-ref oscs (1+ i))))
- (vct-set! freqs i (vct-ref freqs (1+ i)))
- (vct-set! amps i (vct-ref amps (1+ i)))))))))))
- (range i 0 num-playing
- (out (* (oscil (vector-ref oscs i)
- (hz->radians (midi-to-freq (vct-ref freqs i))))
- (vct-ref amps i))))))))
-
-
-#!
-(define i (midisoftsynth 128))
-
-(rte-info)
-(rte-silence!)
-!#
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Another midi sofsynth, using samples. This one is a bit more advanced. Actually, it
-;; sounds very nice. However, it uses Guile for reading midi, and Guile is not allways
-;; able to keep up (turning off the garbage collector might help, but that is dangerous!),
-;; sometimes making the sounds lag.
-
-(definstrument (midisoftsampler filename srcval vol)
- (let* ((read (make-readin filename))
- (sr (make-src #:srate srcval #:width 5))
- (attack (make-env `(0 0 0.7 ,(* 1.9 vol) 1.0 ,vol) #:duration 0.1))
- (release (make-env `(0 ,vol 1 0) #:duration 0.5))
- (is-attacking #t)
- (is-releasing #f))
- (<rt-play> (lambda ()
- (if (>= (mus-location read) (mus-length read))
- (set! (mus-increment read) -1)
- (if (<= (mus-location read) 0)
- (set! (mus-increment read) 1)))
- (let ((outval (src sr 0.0 (lambda (direction)
- (readin read)))))
- (cond ((and is-releasing
- (not is-attacking))
- (out (* (env release) outval))
- (if (>= (mus-location release) (mus-length release))
- (remove-me)))
- (is-attacking
- (out (* (env attack) outval))
- (if (>= (mus-location attack) (mus-length attack))
- (set! is-attacking #f)))
- (else
- (out (* vol outval)))))))))
-
-
-(define (start-synth filename middlenote)
- (define synths '())
- (define (play note vol)
- (let ((middlenote (midi-to-freq middlenote))
- (srcval (midi-to-freq note)))
- (set! srcval (- srcval middlenote))
- (set! srcval (/ srcval middlenote))
- (set! srcval (1+ srcval))
- (set! synths (cons (list note
- (midisoftsampler filename srcval (/ vol 256)))
- synths))))
- (define (stop note)
- (let ((synth (any (lambda (s)
- (if (= note (car s))
- s
- #f))
- synths)))
- (if (not synth)
- (c-display "Error, unable to remove" note)
- (begin
- (set! (-> (cadr synth) is-releasing) #t)
- (set! synths (delete! synth synths eq?))))))
- (receive-midi (lambda (control data1 data2)
- (set! control (logand #xf0 control))
- (cond ((and (= #x90 control)
- (not (= 0 data2)))
- (play data1 data2))
- ((or (= control #x80)
- (and (= control #x90)
- (= data2 0)))
- (stop data1))))))
-
-#!
-(define filename "/gammelhd/home/kjetil/flute2.wav")
-(start-synth filename 60)
-(start-synth filename 68)
-(start-synth filename 78)
-(start-synth filename 90)
-
-(begin
- (stop-receiving-midi!)
- (rte-silence!))
-
-#!
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Same midisoftsynth as the one above. But now properly
-;;; made, reading midi inside the realtime thread.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-(define-rt-vct-struct status
- :is-playing
- :note 1 ;;??
- :is-attacking
- :is-releasing
- :src-val
- :vol)
-
-(define-rt-vector-struct synth
- :status (make-status)
- :read
- :sr
- :attack-env
- :release-env)
-
-(definstrument (midisoftsampler filename middlenote #:key (attack 1.5) (release 0.5) (src-width 5))
- (let* ((num-synths 16)
- (num-playing 0)
- (synths (apply vector (map (lambda (n)
- (make-synth :read (make-rt-readin filename)
- :sr (make-src #:srate 0 #:width src-width)
- :attack-env (make-env `(0 0 0.7 1.9 1.0 1.0) #:duration attack)
- :release-env (make-env `(0 1 1 0) #:duration release)))
- (iota num-synths)))))
- (<rt-play> (lambda ()
- (receive-midi (lambda (control data1 data2)
- (set! control (logand #xf0 control))
- (if (and (< num-playing num-synths)
- (= control #x90)
- (> data2 0))
- (let loop ((i 0))
- (let* ((synth (vector-ref synths i))
- (status (=> synth :status)))
- (if (not (=> status :is-playing))
- (begin
- (set! (mus-location (the <rt-readin> (=> synth :read))) 0)
- (mus-reset (=> synth :sr))
- (mus-reset (=> synth :attack-env))
- (mus-reset (=> synth :release-env))
- ;;(set! status :is-playing #t)
- (set! (=> status :is-playing) #t)
- (set! (=> status :is-playing) #t)
- (set! (=> status :is-playing) #t)
- (set! (=> status :note) data1)
- (set! (=> status :is-attacking) #t)
- (set! (=> status :is-releasing) #f)
- (set! (=> status :src-val) ((lambda (middlenote srcval)
- (set! srcval (- srcval middlenote))
- (set! srcval (/ srcval middlenote))
- (1+ srcval))
- (midi-to-freq middlenote)
- (midi-to-freq data1)))
- (set! (=> status :vol) (/ data2 256))
- (set! num-playing (1+ num-playing)))
- (if (< i (1- num-synths))
- (loop (1+ i))))))
- (if (or (= control #x80)
- (and (= control #x90)
- (= data2 0)))
- (let loop ((i 0))
- (let* ((synth (vector-ref synths i))
- (status (=> synth :status)))
- (if (and (= (the <int> (=> status :note))
- data1)
- (=> status :is-playing)
- (not (=> status :is-releasing)))
- (begin
- (set! (=> status :is-releasing) #t))
- (if (< i (1- num-synths))
- (loop (1+ i))))))))))
- (range i 0 num-synths
- (let* ((synth (vector-ref synths i))
- (status (=> synth :status)))
- (if (=> status :is-playing)
- (let ((read (the <rt-readin> (=> synth :read)))
- (sr (=> synth :sr))
- (attack (=> synth :attack-env))
- (release (=> synth :release-env))
- (is-attacking (=> status :is-attacking))
- (is-releasing (=> status :is-releasing))
- (src-val (=> status :src-val))
- (vol (=> status :vol)))
- (if (>= (mus-location read) (mus-length read))
- (set! (mus-increment read) -1)
- (if (<= (mus-location read) 0)
- (set! (mus-increment read) 1)))
- (let ((outval (src sr src-val (lambda (direction)
- (readin read)))))
- (cond ((and is-releasing
- (not is-attacking))
- (out (* vol (env release) outval))
- (if (>= (mus-location release) (mus-length release))
- (begin
- (set! (=> status :is-playing) #f)
- (set! num-playing (1- num-playing)))))
- (is-attacking
- (out (* vol (env attack) outval))
- (if (>= (mus-location attack) (mus-length attack))
- (set! (=> status :is-attacking) #f)))
- (else
- (out (* vol outval)))))))))))))
-
-
-#!
-(define filename "/gammelhd/home/kjetil/flute2.wav")
-(define filename "/hom/kjetism/Blub_mono16.wav")
-(define filename "/home/kjetil/Blub_mono16.wav")
-(midisoftsampler filename 60)
-(midisoftsampler filename 68)
-(midisoftsampler filename 78)
-(midisoftsampler filename 90)
-(rte-silence!)
-(rte-info)
-!#
-
-
diff --git a/rt-faust.scm b/rt-faust.scm
deleted file mode 100644
index 408eb6b..0000000
--- a/rt-faust.scm
+++ /dev/null
@@ -1,786 +0,0 @@
-
-;; This file is loaded by rt-compiler.scm
-
-
-
-(define *rt-local-faust-code-environment* (the-environment))
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;; Main struct ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define-ec-struct <mus_rt_faust>
- <void*> dsp
- <void*> compute_func
- <float-**> ins
- <float-**> outs
- <int> num_inputs
- <int> num_outputs
- <void*> newDsp
- <void*> init
- <void*> handle
- <void*> conclude
- <void*> deleteDsp)
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;; Caching ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define faust-cache '())
-(define (add-faust-cache source handle)
- (push! (list source handle) faust-cache))
-(define (find-faust-cache source)
- (call/cc
- (lambda (return)
- (for-each (lambda (cache)
- (call/cc
- (lambda (next)
- (define cache-source (car cache))
- (if (not (= (length source)
- (length cache-source)))
- (next #f))
- (for-each (lambda (s1 s2)
- (if (not (or (eq? s1 s2)
- (string=? s1 s2)))
- (next #f)))
- source
- cache-source)
- (return (cadr cache)))))
- faust-cache)
- #f)))
-(define* (display-faust-source :optional (faust (-> *rt* faust)))
- (define handle (-> faust handle))
- (call/cc
- (lambda (return)
- (for-each (lambda (cache)
- (when (equal? (cadr cache)
- handle)
- (for-each c-display (car cache))
- (return #t)));(car cache))))
- faust-cache)
- #f)))
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;; Compiling ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define has-compiled-faust-gui #f)
-
-;; Don't reset this one. (Dynamic linking of c++ files seems to be very dynamic.)
-;; (removed, only necessary when linking with RTLD_GLOBAL)
-;;(define num-compiled-faust-files -1)
-
-(define* (compile-faust source :key (make-gui #t))
- (define file (generate-faust-source-file source))
-
- (c-display (<-> "compiling " file ".dsp"))
-
- (system (<-> "faust -a snd-rt-gtk.cpp -o " file ".cpp " file ".dsp"))
-
- ;; Uncomment line below if linking with RTLD_GLOBAL
- ;;(system (<-> "sed -i -e 's/mydsp/mydsp" (number->string (inc! num-compiled-faust-files 1)) "/g' " file ".cpp"))
- (system (<-> "g++ -O3 -ffast-math -I" snd-header-files-path
- " " (if make-gui "-DMAKE_GUI" "")
- " " (or (getenv "CFLAGS") "") " "
- " " *eval-c-CFLAGS* " "
- (if make-gui
- (<-> (string-append (string #\`) "pkg-config --cflags --libs gtk+-2.0" (string #\`)) " ")
- " ")
- " " (or (getenv "LDFLAGS") "") " "
- file ".cpp -shared -fPIC -o " file ".so"))
-
- (for-each delete-at-exit
- (list (<-> file ".dsp")
- (<-> file ".cpp")
- (<-> file ".so")))
-
- (let ((handle (c-dynamic-handle (<-> file ".so") :flags (RTLD_LOCAL))))
- (cond ((not handle)
- (c-display "Unable to dynamically link " (<-> file ".so"))
- #f)
- (else
- (set! has-compiled-faust-gui #t)
- (add-faust-cache source handle)
- handle))))
-
-
-
-
-#!
-(define test (make-faust-object "/home/kjetil/snd-run/osc"))
-!#
-
-
-
-
-;; Faust gui
-
-;;(compile-faust "/home/kjetil/snd-run/dummy" :make-gui #t)
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;; Eval-C code to connect snd-rt and faust ;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-
-;; Faust dsp
-
-(eval-c ""
- "#include <dlfcn.h>"
- "#include <unistd.h>"
-
- (shared-struct <mus_rt_faust>)
-
- (<void> cleanup (lambda ((<struct-mus_rt_faust-*> faust)
- ((<void> (<void*>)) conclude)
- ((<void> (<void*>)) deleteDsp))
- (printf (string "Cleaning up old faust object %p\\n") faust)
-
- (conclude faust->dsp)
- (deleteDsp faust->dsp)
-
- (for-each 0 faust->num_inputs
- (lambda (n)
- (free faust->ins[n])))
- (for-each 0 faust->num_outputs
- (lambda (n)
- (free faust->outs[n])))
- (free faust->ins)
- (free faust->outs)
-
- ;; faust->handle is cached and can be reused.
- ;;(dlclose faust->handle)
-
- (free faust)))
-
- (public
- (<void*> faust-get-gui (lambda ((<struct-mus_rt_faust-*> faust)
- ((<void*> (<char*> <void*>)) newGTKUI)
- (<void*> window)
- ((<void> (<void*> <void*>)) buildUserInterface))
- (<void*> gtkui (newGTKUI (string "testing") window))
- (buildUserInterface faust->dsp gtkui)
- (return gtkui)))
-
- (<void> c-cleanup-faust-object (lambda ((<struct-mus_rt_faust-*> faust))
- (cleanup faust faust->conclude faust->deleteDsp)))
-
- (<void> start-faust-gui (lambda (
- (<struct-mus_rt_faust-*> faust)
- (<void*> gtkui)
- ((<void> (<void*>)) runGTKUI)
- )
- ;;(printf (string "ui: %p\\n") gtkui)
- (runGTKUI gtkui)
- return
- ))
-
- ;; (-> faust init-gui) must have been called before calling faust-contains-ui?
- (<SCM> faust-contains-ui? (lambda (
- (<struct-mus_rt_faust-*> faust)
- ((<int> (<void*>)) containsUI)
- (<void*> gtkui)
- )
- (printf (string "contains? %d\\n" ) (containsUI gtkui))
- (if (containsUI gtkui)
- (return SCM_BOOL_T)
- (return SCM_BOOL_F))))
-
- (<SCM> init-faust-c-object (lambda (
- (<struct-mus_rt_faust-*> faust)
- ((<void*> (<void>)) newDsp)
- ((<int> (<void*>)) getNumInputs)
- ((<int> (<void*>)) getNumOutputs)
- ((<void> (<void*> <int>)) init)
- ;((<void*> (<char*>)) newGTKUI)
- ;((<void> (<void*> <void*>)) buildUserInterface)
- ;((<void> (<void*>)) runGTKUI)
- )
- ;;(printf (string "ai %p\\n") newDsp);faust)
- (set! faust->dsp (newDsp))
- (if (== NULL faust->dsp)
- (return SCM_BOOL_F))
-
- (init faust->dsp ,(rte-samplerate))
-
- (set! faust->num_inputs (getNumInputs faust->dsp))
- (set! faust->num_outputs (getNumOutputs faust->dsp))
-
- (set! faust->ins (calloc (sizeof <float-*>) faust->num_inputs))
- (set! faust->outs (calloc (sizeof <float-*>) faust->num_outputs))
-
- (for-each 0 faust->num_inputs
- (lambda (n)
- (set! faust->ins[n] (calloc (sizeof <float>) ,rt-max-frame-size))))
- (for-each 0 faust->num_outputs
- (lambda (n)
- (set! faust->outs[n] (calloc (sizeof <float>) ,rt-max-frame-size))))
-
- (return SCM_BOOL_T)))))
-
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;; Create faust object ;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-(define (cleanup-faust-object faust)
- (c-display " TRYING TO CLEANUP (never seen this message, something is not wrong if this message is snown, which it is not.")
- )
-;; (c-cleanup-faust-object faust))
-
-(define faust-gui-faust #f)
-
-(define (make-faust-object source)
-
- (define handle (find-faust-cache source))
- (define first-one? (not has-compiled-faust-gui))
-
- (if (not handle)
- (set! handle (compile-faust source :make-gui first-one?)))
-
- (let ((faust (<mus_rt_faust>))
- ;;(handle (c-dynamic-handle (<-> file ".so") :flags (RTLD_LOCAL)))
- )
- (if first-one?
- (set! faust-gui-faust faust))
-
- (-> faust handle handle)
-
- (cond ((not handle)
- #f)
- ((not (init-faust-c-object (-> faust get-c-object)
- (c-dlsym handle "newDsp")
- (c-dlsym handle "getNumInputs")
- (c-dlsym handle "getNumOutputs")
- (c-dlsym handle "init")
- ))
- (c-display "Unable to create new Faust Dsp object.")
- #f)
- (else
- (-> faust compute_func (c-dlsym handle "compute"))
- (-> faust add-method 'display-source
- (lambda ()
- (display-faust-source faust)))
- (-> faust add-method 'init-gui
- (lambda (dialog)
- (let ((gtkui (faust-get-gui (-> faust get-c-object)
- (c-dlsym (-> faust-gui-faust handle) "newGTKUI")
- (-> dialog dialog)
- (c-dlsym handle "buildUserInterface"))))
- (-> faust add-method 'gtkui (lambda ()
- gtkui)))))
-
- (-> faust add-method 'contains-ui? (lambda ()
- ;;(-> faust init-gui)
- (faust-contains-ui? (-> faust get-c-object)
- (c-dlsym (-> faust-gui-faust handle) "containsUI")
- (-> faust gtkui))))
- (-> faust add-method 'open-gui
- (lambda (dialog)
- ;;(define d (<dialog> "hello" #f))
- ;(define d (-> dialog dialog))
- ;(set-car! d "POINTER")
- ;(c-display "dalog: " d)
- (start-faust-gui (-> faust get-c-object)
- (-> faust gtkui)
- (c-dlsym (-> faust-gui-faust handle) "runGTKUI"))))
-
- (-> faust newDsp (c-dlsym (-> faust handle) "newDsp"))
- (-> faust init (c-dlsym (-> faust handle) "init"))
- (-> faust conclude (c-dlsym (-> faust handle) "conclude"))
- (-> faust deleteDsp (c-dlsym (-> faust handle) "deleteDsp"))
- (add-finalizer (-> faust get-c-object) cleanup-faust-object)
- ;;(add-finalizer faust cleanup-faust-object)
- faust))))
-
-
-
-#!
-(define test (make-faust-object "/home/kjetil/snd-run-old4/osc"))
-(-> test get-c-object)
-(-> test dir)
-(-> test compute_func)
-(-> test dsp)
-(-> test num_inputs)
-(-> test num_outputs)
-(-> test ins)
-
-!#
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;; Generate faust code ;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define (eval-faust-parse term)
- (set! *eval-macro-prefix* eval-faust-macro-prefix)
- (eval-parse term))
-
-(define-faust-macro (= a b)
- (<-> (eval-faust-parse a) "= " (eval-faust-parse b) ";"))
-
-(define-faust-macro (import something)
- (<-> "import(" (eval-parse `(string ,something)) ");"))
-
-(define-faust-macro (out . rest)
- `(= process ,@rest))
-
-(define-faust-macro (unquote something)
- (local-eval something *rt-local-faust-code-environment*)
- (primitive-eval something))
-
-(define-faust-macro (unquote-splicing something)
- (apply <-> (map eval-parse (local-eval something *rt-local-faust-code-environment*))))
-
-
-
-
-;; Guile doesn't like "(: etc. etc.)"
-;; moved into the general infix fixer in eval-c
-;;(define-faust-macro (colon . rest)
-;; (define first #t)
-;; (apply <-> (map (lambda (res)
-;; (if first
-;; (begin
-;; (set! first #f)
-;; (eval-parse res) )
-;; (<-> ": " (eval-parse res))))
-;; rest)))
-
-;; Automatically add (string) around second argument for the gui objects.
-(for-each (lambda (funcname)
- (primitive-eval `(define-faust-macro (,funcname a . rest)
- (<-> ,(symbol->string funcname)
- "("
- (eval-parse `(string ,a))
- (apply <-> (map (lambda (s)
- (<-> ", " s))
- (map eval-parse rest)))
- ")"))))
-
- '(button checkbox hslider vslider nentry vgroup hgroup tgroup vbargraph hbargraph))
-
-;; More faust translation stuff added to eval-c.scm
-
-
-(define (generate-faust-source-file sourcelines)
- (fix-defines
- (define basename (tmpnam))
- (define sourcefile (<-> basename ".dsp"))
- (define fd (open-file sourcefile "w"))
- ;;(c-display "hepp" sourcelines)
- (for-each (lambda (code)
- (write-line (<-> code "") fd))
- sourcelines)
- (close fd)
- basename))
-
-
-(define*2 (generate-faust-source :key
- (autoimport-libs #t)
- :rest terms)
- (c-display "terms" terms)
- (set! terms (map eval-faust-parse terms))
- (when autoimport-libs
- (set! terms (cons "import(\"music.lib\");" terms))
- ;;(write-line "import(\"effect.lib\");" fd)
- ;;(write-line "import(\"filter.lib\");" fd)
- ;;(write-line "import(\"math.lib\");" fd)
- )
- terms)
-
-
-#!
-(generate-faust-source '(import "ai"))
-
-(generate-faust-source #:autoimport-libs #f
- "process = osc(500);")
-(generate-faust-source "process = osc(500);")
-(generate-faust-source "process = osc(500);")
-!#
-
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;; <faust> and <faust-vct> in Snd-rt ;;;;;;;;
-;;;;;;;; (frame by frame processing) ;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(<rt-type> '<faust>
- (lambda (faust)
- (and (object? faust)
- (eq? '<mus_rt_faust> (-> faust class-name))))
- #f
- :transformfunc
- (lambda (faust)
- (-> faust get-c-object))
- :c-type '<struct-mus_rt_faust-*>)
-
-(define-rt-ec <vct-*> rt_faust_compute
- (lambda (,rt-globalvardecl
- (<faust> faust)
- (<vct-*> input))
- (<FaustComputeFunc> compute faust->compute_func)
- (<vct-*> output (rt_alloc_vct rt_globals faust->num_outputs))
- ;;(printf (string "faust->compute_func: %p %p\\n") compute faust->dsp)
- (let* ((minin <int> (MIN faust->num_inputs input->length)))
- (for-each 0 minin
- (lambda (n)
- (set! faust->ins[n][0] input->data[n])))
- (compute faust->dsp 1 faust->ins faust->outs)
- (for-each 0 faust->num_outputs
- (lambda (n)
- (set! output->data[n] faust->outs[n][0])))
- (return output))))
-
-
-(define-rt-macro (faust-compute faust-object input)
- `(rt_faust_compute ,faust-object ,input))
-
-
-(define-macro (start-faust-gui-if-necessary faust)
- `(let ((dialog (default-rt-dialog (%delay rt-current-rt) :show #f)))
- (-> ,faust init-gui dialog)
- ;;(c-display "contains?" (-> faust contains-ui?))
- (when (-> ,faust contains-ui?)
- (-> ,faust open-gui dialog)
- (-> dialog show))))
-
-
-(define*2 (rt-<faust>-do :key
- (in '(vct))
- :rest code)
- ;;(c-display "input:" input)
- ;;(set! code (map eval-faust-parse code))
- (set! code (apply generate-faust-source code))
- (c-display "code" code)
- `(faust-compute (extern (let ((faust (make-faust-object ',code)))
- (start-faust-gui-if-necessary faust)
- faust))
- ,in))
-
-
-(define-rt-macro (<faust-vct> . rest)
- (apply rt-<faust>-do rest))
-
-(define-rt-macro <faust>
- (labamba (:key (in '(vct)) :rest rest)
- (if (and (null? (cdr rest))
- (symbol? (car rest)))
- `(vct-ref (faust-compute ,(car rest) ,in) 0)
- `(vct-ref (<faust-vct> :in ,in ,@rest) 0))))
-
-;;(define-rt-macro (<faust> . rest)
-;; `(vct-ref (<faust-vct> ,@rest) 0))
-
-
-#!
-(<rt-out> (vct-scale! (<faust-vct> "process=osc(400),osc(500);")
- (<slider> "vol" 0.0 0.1 1.0)))
-
-(<rt-out> (* (<faust> "freq = vslider(\"freq\", 600, 0, 2400, 0.1);"
- "process = vgroup(\"ai\",osc(freq));")
- (<slider> "vol" 0.0 0.1 1.0)))
-
-(<rt-out> (* (<faust> (= freq (vslider "freq" 600 0 2400 0.1))
- (= process (vgroup "ai" (osc freq))))
- (<slider> "vol" 0.0 0.1 1.0)))
-
-(<rt-out> (<faust> :in (vct (oscil))
- "process=*(0.3);"))
-
-!#
-
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;; <rt-faust> in Guile ;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;; (block processing) ;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define*2 (<rt-faust-do> :key
- (in-bus #f)
- (out-bus #f)
- :allow-other-keys
- :rest code)
- (define faust (rt-gensym))
- (define rt (rt-gensym))
-
- (set! code (apply generate-faust-source code))
-
- ;;(c-display "in-bus/out-bus:" in-bus out-bus)
-
- `(begin
- (set! *rt-local-faust-code-environment* (the-environment))
- (let* ((,faust (make-faust-object ',code))
- ,@(if in-bus `((in-bus ,in-bus)) '())
- ,@(if out-bus `((out-bus ,out-bus)) '())
- (,rt (<rt> (lambda () (out (in))))))
- (-> ,rt faust ,faust)
- (-> ,rt play)
- (let ((rt-current-rt ,rt))
- (start-faust-gui-if-necessary ,faust))
- ,rt)))
-
-(define-macro (<rt-faust> . code)
- (apply <rt-faust-do> code))
-
-(define-macro (<rt-faust-url> url)
- `(<rt-faust> (url ,url)))
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;; Allocating faust instances in RT ;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-(define-rt-ec <faust> rt_faust_make_faust
- (lambda (,rt-globalvardecl
- (<faust> faust))
- (<struct-mus_rt_faust-*> copy (tar_alloc rt_globals->heap (sizeof <struct-mus_rt_faust>)))
- ((<void*> (<void>)) newDsp faust->newDsp)
- ((<void> (<void*> int)) init faust->init)
- (memcpy copy faust (sizeof <struct-mus_rt_faust>))
- (set! copy->dsp (newDsp))
- (init copy->dsp ,(rte-samplerate))
- (return copy)
- ))
-
-(define-rt-macro (make-faust . code)
- (set! code (apply generate-faust-source code))
- `(rt_faust_make_faust (extern (let ((faust (make-faust-object ',code)))
- (start-faust-gui-if-necessary faust)
- (c-display "addr" (cadr (-> faust get-c-object)))
- faust))))
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;; <faust> in Stalin '';;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-(define-stalin-ec <void-*> rt_faust_compute
- (lambda ((<void*> vfaust)
- (<void*> vinput))
- (<vct-*> input (cast <vct*> vinput))
- (<struct-mus_rt_faust-*> faust (cast <struct-mus_rt_faust-*> vfaust))
- (<FaustComputeFunc> compute faust->compute_func)
- (<vct-*> output (rt_alloc_vct faust->num_outputs))
- ;;(printf (string "faust->compute_func: %p %p\\n") compute faust->dsp)
- (let* ((minin <int> (MIN faust->num_inputs input->length)))
- (for-each 0 minin
- (lambda (n)
- (set! faust->ins[n][0] input->data[n])))
- (compute faust->dsp 1 faust->ins faust->outs)
- (for-each 0 faust->num_outputs
- (lambda (n)
- (set! output->data[n] faust->outs[n][0])))
- (return output))))
-
-(define-stalin-macro (faust-compute faust-object input)
- `(rt_faust_compute ,faust-object ,input))
-
-
-(define-stalin-ec <void*> rt_faust_make_faust
- (lambda ((<void*> vfaust))
- (<struct-mus_rt_faust-*> faust (cast <struct-mus_rt_faust-*> vfaust))
- (<struct-mus_rt_faust-*> copy (tar_alloc heap (sizeof <struct-mus_rt_faust>)))
- ((<void*> (<void>)) newDsp faust->newDsp) ;;(cast ((<void*> (<void>)) newDsp)
- ((<void> (<void*> int)) init faust->init) ;;(cast ((<void*> (<void>)) newDsp)
- (memcpy copy faust (sizeof <struct-mus_rt_faust>))
- (set! copy->dsp (newDsp))
- (init copy->dsp ,(rte-samplerate))
- (return copy)
- ))
-
-(define-stalin-macro (make-faust . code)
- (set! code (apply generate-faust-source code))
- (let ((faust (make-faust-object code)))
- (start-faust-gui-if-necessary faust)
- (c-display "addr" (cadr (-> faust get-c-object)))
- `(rt_faust_make_faust (ulong_to_void_ ,(cadr (-> faust get-c-object))))))
-
-(define-stalin-macro (<faust-vct> :key
- (in '(vct))
- :rest code)
- (set! code (apply generate-faust-source code))
- (c-display "code" code)
- `(faust-compute (ulong_to_void_ ,(let ((faust (make-faust-object code)))
- (start-faust-gui-if-necessary faust)
- (cadr (-> faust get-c-object))))
- ,in))
-
-(define-stalin-macro (<faust> :key (in '(vct)) :rest rest)
- (if (and (null? (cdr rest))
- (symbol? (car rest)))
- `(vct-ref (faust-compute ,(car rest) ,in) 0)
- `(vct-ref (<faust-vct> :in ,in ,@rest) 0)))
-
-
-#!
-(define test (make-faust-object (generate-faust-source '(include "/home/kjetil/snd-run-old4/osc.dsp"))))
-(-> test get-c-object)
-(-> test dsp)
-(-> test dir)
-(-> test compute_func)
-(-> test num_inputs)
-(-> test num_outputs)
-(-> test ins)
-
-(<rt-stalin>
- (define faust-oscillator ,(cadr (-> test get-c-object)))
- (block
- (out (<faust> faust-oscillator))))
-
-
-(<rt-stalin>
- (define osc (make-faust (out (* 0.29 (osc (vslider "freq" 600 0 2400 0.1))))))
- (block
- (out (<faust> osc))))
-
-(<rt-stalin>
- (while #t
- (define osc (make-faust "process = osc(500)*0.22;"))
- (block :dur 1:-s
- (out (<faust> osc)))
- (wait 0.5:-s)))
-
-(<rt-stalin>
- (block
- (out (<faust> "process = osc(500)*0.3;"))))
-
-
-(let ((code ("import(\"music.lib\");" "process = osc(500)*0.2; ")))
- (let ((faust (make-faust-object ',code)))
- (start-faust-gui-if-necessary faust)
- (cadr (-> faust c-object))
- ))
-
-
-!#
-
-
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;; Testing ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-#!
-(<rt-faust> "freq = hslider(\"freq\", 600, 0, 2400, 0.1);"
- "process = vgroup(\"ai\",osc(freq));")
-
-(<rt-faust> "process = osc(500)*0.2;")
-
-(<rt-faust> "process=osc(400);")
-(<rt-faust> (out (osc 400)))
-
-(<rt-faust> (import "math.lib")
- (= (smooth c) (colon "*(1-c)" "+~*(c)"))
- (= vol (colon (hslider "volume (db)" 0 -96 0 0.1)
- db2linear
- (smooth 0.99)))
- (= freq (hslider "freq" 1000 0 24000 0.1))
- (out (vgroup "Osc" (* (osci freq) vol))))
-(display-faust-source)
-
-
-(let ((in-bus *out-bus*))
- (<rt-faust> "vmeter(x) = attach(x, envelop(x) : vbargraph(\"dB\", -96, 10));
- hmeter(x) = attach(x, envelop(x) : hbargraph(\"dB\", -96, 10));
- envelop = abs : max(db2linear(-96)) : linear2db : min(10) : max ~ -(96.0/SR);
- process = vmeter;")
- (<rt-faust> "freq = vslider(\"freq\", 600, 0, 2400, 0.1);"
- (= vol (|:| (hslider "volume (db)" 0 -96 0 0.1) db2linear))
- "process = vgroup(\"ai\",osc(freq)*vol);"))
-(<rt-faust> :in-bus *out-bus*
- "vmeter(x) = attach(x, envelop(x) : vbargraph(\"dB\", -96, 10));
- hmeter(x) = attach(x, envelop(x) : hbargraph(\"dB\", -96, 10));
- envelop = abs : max(db2linear(-96)) : linear2db : min(10) : max ~ -(96.0/SR);
- process = vmeter;")
-
-
-(eval-faust-parse '(= vol (colon (hslider "volume (db)" 0 -96 0 0.1) db2linear)))
-(eval-faust-parse '(= vol (|:| (hslider "volume (db)" 0 -96 0 0.1) db2linear)))
-(eval-faust-parse '(= vol (seq (hslider "volume (db)" 0 -96 0 0.1) db2linear)))
-
-
-;; To try the next one, go to the faust software catalog at http://faust.grame.fr/catalog.php ,
-;; open the code of a program, mark the code, and evaluate expression below.
-;; (requires the "xsel" commandline program)
-(<rt-faust> :autoimport-libs #f
- (x11-selection))
-
-(<rt-faust> :autoimport-libs #f
- (url (x11-selection)))
-
-(<rt-faust> (url "http://faudiostream.cvs.sourceforge.net/*checkout*/faudiostream/faust/examples/tapiir.dsp"))
-(<rt-faust-url> "http://faudiostream.cvs.sourceforge.net/*checkout*/faudiostream/faust/examples/karplus32.dsp")
-(<rt-faust-url> "http://faudiostream.cvs.sourceforge.net/*checkout*/faudiostream/faust/tools/faust2pd-1.0.2/examples/seqdemo/organ.dsp")
-
-(<rt-faust> (include "/home/kjetil/snd-run/osc.dsp"))
-
-(let ((abus (make-bus)))
- (<rt-faust> "smooth(c) = *(1-c) : +~*(c);"
- "gain = vslider(\" dB \", 0, -96, 4, 0.1) : db2linear : smooth(0.999);"
- "process = vgroup(\"fader\", *(gain));")
- (set! (-> *rt* in-bus) abus) ;; *rt* contains the result of the last evaluated <rt*> expression.
- (<rt-out> (oscil))
- (set! (-> *rt* out-bus) abus))
-
-(let ((abus (make-bus)))
- (<rt-faust> :in-bus abus
- "smooth(c) = *(1-c) : +~*(c);"
- "gain = vslider(\" dB \", 0, -96, 4, 0.1) : db2linear : smooth(0.999);"
- "process = vgroup(\"fader\", *(gain));")
- (<rt-out> :out-bus abus
- (oscil)))
-
-
-(let ((abus (make-bus)))
- (<rt-faust> :in-bus abus
- (= (smooth c) "*(1-c) : +~*(c)")
- (= gain (colon (vslider " dB " 0 -96 4 0.1)
- db2linear
- (smooth 0.999)))
- (out (vgroup "fader" "*(gain)")))
- (<rt-out> :out-bus abus
- (oscil)))
-
-(display-faust-source (-> *rt1* faust))
-
-
-(define-faust-macro (oscivol freq vol)
- `(* ,vol (osci ,freq)))
-
-(<rt-faust> (out (oscivol 500 0.2)))
-
-(<rt-out> (<faust> :in (vct (oscil* 200))
- (= gain (vslider "gain" 0.2 0 1 0.01))
- (= process (vgroup "ai" "*(gain)"))))
-
-
-!#
diff --git a/rt-player.scm b/rt-player.scm
deleted file mode 100644
index 73daff1..0000000
--- a/rt-player.scm
+++ /dev/null
@@ -1,635 +0,0 @@
-
-#!
-rt-player.scm
--Kjetil S. Matheussen, 2006
-
-(load-from-path "rt-player.scm")
-!#
-
-
-(provide 'snd-rt-player.scm)
-
-
-(if (not (provided? 'snd-rt-compiler.scm))
- (load-from-path "rt-compiler.scm"))
-
-(if (not (defined? '*rt-reader-buffer-time*))
- (define-toplevel '*rt-reader-buffer-time* 5)) ;; Number of seconds to buffer.
-
-(if (not (defined? '*rt-use-rt-player*))
- (define-toplevel '*rt-use-rt-player* #t))
-
-
-
-
-;; RB2 (ringbuffer 2)
-
-;; VCT caching. Really necessary because of the large amount of memory data being allocated. The garbage collector can't collect fast enough the huge amount of vct-data that
-;; must be obtained when clicking play rapidly. At least, I think thats what happening. The result is something that seems very much like a swapping hell that
-;; eventually can cause a freeze of the machine.
-(define rb2-buffer '())
-(define (rb2-return-buffer v)
- (if (and (not (null? rb2-buffer))
- (= (vct-length v) (vct-length (car rb2-buffer))))
- (set! rb2-buffer (cons v rb2-buffer))
- (set! rb2-buffer (list v))))
-(define (rb2-get-buffer size)
- (if (null? rb2-buffer)
- (make-vct size)
- (if (= (vct-length (car rb2-buffer)) size)
- (let ((ret (car rb2-buffer)))
- (set! rb2-buffer (cdr rb2-buffer))
- ret)
- (begin
- (set! rb2-buffer '())
- (make-vct size)))))
-
-(define-rt-vector-struct rb2
- :buffer1
- :buffer2
- :read-pos
- :size
- :curr-ringbuffer-num ;; Just finished with last position at the second vct.
- :ringbuffer
- :ringbuffer-num) ;; 0 or 1 (buffer1 or buffer2)
-
-(define old-make-rb2 make-rb2)
-
-(define (make-rb2 ch size reader)
- (let ((rb2 (old-make-rb2 :buffer1 (rb2-get-buffer size) ;0
- :buffer2 (rb2-get-buffer size) ;1
- :read-pos (make-var size) ;2
- :size (make-var size) ;3
- :curr-ringbuffer-num (make-var 1) ;4
- :ringbuffer (make-ringbuffer 64) ;5
- :ringbuffer-num (make-var 0)))) ;6
- ;;(c-display "reading num 0")
- (reader (=> rb2 :buffer1))
- (ringbuffer-get (=> rb2 :ringbuffer)
- (lambda (ringbuf-num)
- ;;(c-display "reading num" ch ringbuf-num)
- (reader (vector-ref rb2 (c-integer ringbuf-num)))
- (write-var (=> rb2 :ringbuffer-num) ringbuf-num))
- 500)
- rb2))
-
-(define (free-rb2 rb2)
- (ringbuffer-stop (=> rb2 :ringbuffer))
- (rb2-return-buffer (=> rb2 :buffer1))
- (rb2-return-buffer (=> rb2 :buffer2)))
-
-
-(define rb2-num-dropouts (make-var 0))
-
-(define-rt (read-rb2 rb2 debug-rb)
- (let* ((read-pos-var (the <vct-*> (=> rb2 :read-pos)))
- (read-pos (read-var read-pos-var))
- (size (read-var (=> rb2 :size)))
- (curr-ringbuffer-num (read-var (=> rb2 :curr-ringbuffer-num))))
- (declare (<int> curr-ringbuffer-num read-pos size))
- (if (= read-pos size)
- (let ((ringbuffer (=> rb2 :ringbuffer)))
- (if (= (read-var (=> rb2 :ringbuffer-num))
- curr-ringbuffer-num)
- (begin
- (put-ringbuffer debug-rb 1)
- ;;(printf "RT-PLAYER: Error, can not read from disk fast enough.\\n");; Set the variable *rt-reader-buffer-time* higher.\\n"))
- (write-var rb2-num-dropouts (1+ (read-var rb2-num-dropouts)))
- (if (> (read-var rb2-num-dropouts) 3)
- (begin
- (put-ringbuffer debug-rb 2)
- ;;(printf "RT-PLAYER: Unable too read from disk fast enough. Stopping player.\\n")
- (remove-me))
- (if (and (< (- (read-var rt-snd-cursorupdate-inc) (read-var rt-snd-cursorupdate-dropout-num)) 4)
- (> (get-time) (+ (read-var rt-snd-cursorupdate-lasttime) 5)))
- (begin
- (put-ringbuffer debug-rb 3)
- ;;(printf "RT-PLAYER: Too much cpu time spent. Stopping player. (2)\\n")
- (remove-me)))))
- (if (> (read-var rb2-num-dropouts) 0)
- (write-var rb2-num-dropouts (1- (read-var rb2-num-dropouts)))))
- (put-ringbuffer ringbuffer curr-ringbuffer-num)
- (set! curr-ringbuffer-num (if (= 0 curr-ringbuffer-num) 1 0))
- (write-var (=> rb2 :curr-ringbuffer-num) curr-ringbuffer-num)
- (set! read-pos 0)))
- (let ((ret (vct-ref (vector-ref rb2 curr-ringbuffer-num) read-pos)))
- (write-var read-pos-var (1+ read-pos))
- ret)))
-
-
-
-
-;;(define (make-bigint
-
-
-(define *rt-loop-on-off* (make-var (if *c-islooping* 1 0)))
-(-> *loop-on-off-hook* add!
- (lambda (on-off)
- (write-var *rt-loop-on-off* (if on-off 1 0))))
-
-
-(eval-c (<-> "-I" snd-header-files-path)
- "#include <xen.h>"
- "#include <_sndlib.h>"
- "#include <vct.h>"
-
- "extern mus_float_t protected_next_sample(void *sf)"
- "extern mus_float_t protected_previous_sample(void *sf)"
-
- (public
- (<void> sampler->vct (lambda ((<SCM> scm_reader)
- (<SCM> scm_v)
- (<int> direction)
- (<int> startpos)
- (<int> num_samples))
- (<void-*> reader (cast <void-*> (SCM_SMOB_DATA scm_reader)))
- (<vct-*> v (cast <vct-*> (SCM_SMOB_DATA scm_v)))
- ;;(fprintf stderr (string "v: %p, v->data: %p, reader: %p, v->length: %d\\n") v v->data reader (cast <int> v->length))
- (if (|| (> (+ startpos num_samples) v->length)
- (< startpos 0))
- (printf (string "sampler->vct error. startpos: %d, num_samples: %d, vct-length: %d\\n") startpos num_samples (cast <int> v->length))
- (if (== 1 direction)
- (for-each startpos (+ startpos num_samples)
- (lambda (i)
- ;;(fprintf stderr (string "i: %d\\n") i)
- (set! v->data[i] (protected_next_sample reader))))
- (for-each startpos (+ startpos num_samples)
- (lambda (i)
- (set! v->data[i] (protected_previous_sample reader))))))))))
-
-(define-rt-vct-struct rt-controls
- :amp
- :speed
- :expand
- :contrast
- :reverb-scale
- :reverb-length)
-
-
-(define rt-controls (make-rt-controls))
-
-(define (rt-set-controls! snd)
- (set! (=> rt-controls :amp) (amp-control snd))
- (set! (=> rt-controls :speed) (speed-control snd))
- (set! (=> rt-controls :expand) (expand-control snd))
- (set! (=> rt-controls :contrast) (contrast-control snd))
- (set! (=> rt-controls :reverb-scale) (reverb-control-scale snd))
- (set! (=> rt-controls :reverb-length) (reverb-control-length snd)))
-
-
-
-(-> *c-control-hook* add!
- (lambda ()
- (let ((snd (c-selected-sound)))
- (if snd
- (rt-set-controls! snd)))))
-
- (define (rt-set-defaults)
- (let ((snd (c-selected-sound)))
- (if snd
- (rt-set-controls! (c-selected-sound))
- (in 20 rt-set-defaults))))
-(rt-set-defaults)
-
-
-
-#!
-(< (abs (- 1.0 (vct-ref rt-control-values rt-control-speed))) 0.0000001)
-(vct-ref rt-control-values rt-control-speed)
-
-!#
-
-(define rt-controls-on-off (make-var 0))
-(-> *c-controls-on-off-hook* add!
- (lambda ()
- (let ((snd (c-selected-sound)))
- (if snd
- (write-var rt-controls-on-off (if (expand-control? snd) 1 0))))))
-
-
-(add-hook! graph-hook
- (lambda (snd chn y0 y1)
- (-> *c-controls-on-off-hook* run)
- (-> *c-control-hook* run)))
-
-
-(define (rt-snd-twofloats->int f1 f2)
- (let ((i1 (c-integer f1))
- (i2 (c-integer f2)))
- (+ (ash i1 7) i2)))
-(define-rt (rt-snd-twofloats->int f1 f2)
- (let ((i1 (the <int> f1))
- (i2 (the <int> f2)))
- (the <int> (+ (ash i1 7) i2))))
-
-;;(define (int->twofloats i)
-;; (let ((i1 (ash i (- num-bits))))
-;; (vct i1 (logand i (1- (expt 2 num-bits))))))
-
-(define rt-snd-rb2s '())
-
-(define rt-snd-bus (make-bus *rt-num-output-ports*))
-
-(define rt-snd-rt-safety-old (rt-safety))
-(set! (rt-safety) 0)
-
-
-(definstrument (<snd-rt-player> snd start das_end start-pos)
- ;;(c-display start das_end start-pos)
- (define num-channels #f)
- (define end #f)
- (define positions1 (vct 0))
- (define positions2 (vct 0))
- (define direction #f)
- (define rb2s #f)
- (define vcts #f)
- (define size #f)
- (define debug-print-rb (make-ringbuffer 64))
- (define is-running (vct 0))
- (define sound-src-ratio #f)
- (define speed-gens #f)
- (define expand-gens #f)
- (define diskplaytype 0)
- (define masterouttype 1)
- (define (get-playfunc type position-in-queue fromdisk)
- (<rt-play> #:position position-in-queue
- (lambda ()
- (declare (<int> fromdisk num-channels end size direction start))
- (let ((master-out (lambda ()
- (range i 0 ,*rt-num-output-ports*
- (out i (in i)))))
- (diskplay (lambda ()
- (let* ((volume (=> rt-controls :amp))
- (speed (/ (abs (=> rt-controls :speed)) sound-src-ratio))
- (expand (=> rt-controls :expand))
- (is-speeding (or (not (= 1 sound-src-ratio))
- (> (abs (- 1.0 speed)) 0.0000001)))
- (is-expanding (read-var rt-controls-on-off))
- (dont-read-anymore #f)
- (removefunc (lambda ()
- (if fromdisk
- (range i 0 num-channels
- (let ((rb2 (vector-ref rb2s i)))
- (ringbuffer-stop (=> rb2 :ringbuffer)))))
- (write-var is-running 0)
- (set! dont-read-anymore #t)
- (remove-me)))
- (read-position (lambda (i)
- (declare (<int> i))
- (the <int> (rt-snd-twofloats->int (vct-ref positions1 i)
- (vct-ref positions2 i)))))
- (set-position! (lambda (i val)
- (declare (<int> i val))
- (let ((i (the <int> i))
- (val (the <int> val)))
- (vct-set! positions1 i (ash val -7))
- (vct-set! positions2 i (logand val ,(1- (expt 2 7)))))))
-
- (changeposition (lambda (i)
- (declare (<int> i))
- (let ((i (the <int> i)))
- (if (= 1 direction)
- (begin
- (set-position! i (the <int> (1+ (read-position i))))
- (if (>= (read-position i) end)
- (if (= 0 (read-var *rt-loop-on-off*))
- (removefunc)
- (set-position! i start))))
- (begin
- (set-position! i (the <int> (1- (read-position i))))
- (if (< (read-position i) start)
- (if (= 0 (read-var *rt-loop-on-off*))
- (removefunc)
- (set-position! i (the <int> (1- end))))))))))
- (getdatafunc (lambda (i)
- (declare (<int> i))
- (if dont-read-anymore
- 0.0
- (let ((ret (if fromdisk
- (read-rb2 (vector-ref rb2s i) debug-print-rb)
- (vct-ref (vector-ref vcts i) (- (read-position i) start)))))
- (changeposition i)
- ret))))
- (speedfunc (lambda (i)
- (declare (<int> i))
- (src (vector-ref speed-gens i)
- speed
- (lambda (dir)
- (getdatafunc i)))))
- (expandfunc (lambda (i)
- (declare (<int> i))
- (let ((expand-gen (vector-ref expand-gens i)))
- (setter!-mus-increment/mus_set_increment expand-gen (max 0.1 expand))
- (granulate expand-gen
- (lambda (dir)
- (if is-speeding
- (speedfunc i)
- (getdatafunc i))))))))
- (if (= 1 num-channels)
- (cond (is-expanding
- (out (* volume (expandfunc 0))))
- (is-speeding
- (out (* volume (speedfunc 0))))
- (else
- (out (* volume (getdatafunc 0)))))
- (cond (is-expanding
- (range i 0 num-channels
- (out i (* volume (expandfunc i)))))
- (is-speeding
- (range i 0 num-channels
- (out i (* volume (speedfunc i)))))
- (else
- (range i 0 num-channels
- (out i (* volume (getdatafunc i)))))))))))
- (if (= type diskplaytype)
- (diskplay)
- (master-out))))))
-
- (ringbuffer-get debug-print-rb
- (let ((num 0))
- (lambda (error-type)
- (cond ((= 1 error-type) (c-display "RT-PLAYER: Error, can not read from disk fast enough. (" num ") (press 'l')") (set! num (1+ num)))
- ((= 2 error-type) (c-display "RT-PLAYER: Unable too read from disk fast enough. Stopping player. (press 'l')"))
- ((= 3 error-type) (c-display "RT-PLAYER: Too much cpu time spent. Stopping player. (2) (press 'l')")))))
- 500)
-
- (if (not snd)
- (get-playfunc masterouttype 'last #f)
- (let ()
- (define (cleanup-func rt)
- (lambda ()
- (-> rt stop)
- (ringbuffer-stop debug-print-rb)
- (if rb2s
- (for-each (lambda (rb2)
- (free-rb2 rb2))
- ;;(ringbuffer-stop (vector-ref rb2 5)))
- (vector->list rb2s))
- (for-each rb2-return-buffer (vector->list vcts)))))
- (set! num-channels (channels snd))
- (set! end (if das_end das_end (frames snd)))
- (set! positions1 (make-vct num-channels (ash start-pos -7)))
- (set! positions2 (make-vct num-channels (logand start-pos (1- (expt 2 7)))))
- (set! direction (if (>= (speed-control snd) 0) 1 -1))
- (set! rb2s #f)
- (set! vcts #f)
- (set! size (- end start))
- (set! is-running (make-var 1))
- (set! sound-src-ratio (/ (mus-srate) (srate snd)))
- (set! speed-gens (apply vector (append (map (lambda (ch)
- (make-src #:srate 0.0 #:width (if (not (= 1 sound-src-ratio))
- (max 40 (sinc-width))
- (sinc-width))))
- (iota num-channels))
- (list snd))))
- (set! expand-gens (apply vector (map (lambda (ch)
- (let ((ret (make-granulate #:length 0.15 #:hop 0.03)))
- (set! (mus-location ret) 0)
- ret))
- (iota num-channels))))
-
- (if (or #f
- (<= (- end start) (* 3 (mus-srate) *rt-reader-buffer-time*)))
- (begin
- ;;(c-display "direction" direction)
- (set! vcts (apply vector (map (lambda (ch)
- (let ((v (rb2-get-buffer size)))
- (sampler->vct (make-sampler start snd ch direction) v 1 0 size)
- v))
- (iota num-channels))))
- (let ((ret (get-playfunc diskplaytype 'first #f)))
- (-> ret add-method 'cleanup-func (cleanup-func ret))
- ret))
- (begin
- (set! rb2s (apply vector (map (lambda (ch)
- (if (= 1 direction)
- (let ((reader (make-sampler start-pos snd ch direction))
- (position start-pos)
- (size (c-integer (* (mus-srate) (+ (if #t
- 0
- (+ (random 1.0) ;; To avoid all channels switching buffers at once.
- (/ num-channels 4)))
- *rt-reader-buffer-time*)))))
- (make-rb2 ch size
- (lambda (avct)
- (let ((bytesleft (- end position)))
- (if (< bytesleft size)
- (begin
- (sampler->vct reader avct direction 0 bytesleft)
- (set! reader (make-sampler start snd ch direction))
- (sampler->vct reader avct direction bytesleft (- size bytesleft))
- (set! position (+ start (- size bytesleft))))
- (begin
- (sampler->vct reader avct direction 0 size)
- (set! position (+ position size))))))))
- (let ((reader (make-sampler start-pos snd ch direction))
- (position start-pos)
- (size (* (mus-srate) *rt-reader-buffer-time*)))
- (make-rb2 ch size
- (lambda (avct) ;; "position" is placed where to start reading next time. (this was tricky)
- (let ((bytesleft (1+ (- position start))))
- (if (< bytesleft size)
- (begin
- (sampler->vct reader avct direction 0 bytesleft)
- (set! reader (make-sampler (1- end) snd ch direction))
- (sampler->vct reader avct direction bytesleft (- size bytesleft))
- (set! position (- (1- end) (- size bytesleft))))
- (begin
- (sampler->vct reader avct direction 0 size)
- (set! position (- position size))))))))))
- (iota num-channels))))
- (let ((ret (get-playfunc diskplaytype 'first #t)))
- (-> ret add-method 'cleanup-func (cleanup-func ret))
- ret))))))
-
-
-(set! (rt-safety) rt-snd-rt-safety-old)
-
-;;(define rt-snd-master-player (<snd-rt-player> #f #f #f #f #:in-bus rt-snd-bus))
-
-
-(define rt-snd-players '())
-
-(define (rt-snd-play snd start end start-pos)
- (set! start-pos (min (frames snd) start-pos))
- (set! rt-snd-players (cons (<snd-rt-player> snd start end start-pos) ; #:out-bus rt-snd-bus)
- rt-snd-players)))
-
-(define (rt-snd-stop-playing)
- (for-each (lambda (player)
- (-> player cleanup-func))
- rt-snd-players)
- (set! rt-snd-players '()))
-(define (rt-snd-stop player)
- (-> player cleanup-func)
- (set! rt-snd-players (remove (lambda (p) (eq? p player))
- rt-snd-players)))
-
-(define (rt-snd-get-player)
- (if (null? rt-snd-players)
- #f
- (call-with-current-continuation
- (lambda (return)
- (for-each (lambda (player)
- (if (= 1 (read-var (-> player is-running)))
- (return player)))
- rt-snd-players)
- (set! rt-snd-players '())
- #f))))
-
-(define rt-snd-is-playing? rt-snd-get-player)
-
-(define (rt-snd-get-play-pos snd)
- (let ((ret #f))
- (for-each (lambda (player)
- (let* ((channels (-> player num-channels))
- (player-snd (vector-ref (-> player speed-gens) channels)))
- (if (= snd player-snd)
- (if (or (not ret)
- (= 1 (read-var (-> player is-running))))
- (set! ret (rt-snd-twofloats->int (vct-ref (-> player positions1) 0)
- (vct-ref (-> player positions2) 0)))))))
- rt-snd-players)
- (if ret
- (c-integer ret)
- ret)))
-
-(define rt-snd-cursorupdate-run #t)
-(define rt-snd-cursorupdate-interval 50)
-(define rt-snd-last-dropouts (-> *rt-engine* num_max_cpu_interrupts))
-(define rt-snd-cursorupdate-inc (make-var 0))
-(define rt-snd-cursorupdate-dropout-num (make-var 0))
-(define rt-snd-cursorupdate-lasttime (make-var (rte-time)))
-
-(define (rt-snd-cursorupdate)
- (let ((player (rt-snd-get-player)))
- (if player
- (begin
- (if (not (= (if (>= (speed-control) 0) 1 -1)
- (-> player direction)))
- (let ((start (-> player start))
- (end (-> player end))
- (position (c-integer (rt-snd-twofloats->int (vct-ref (-> player positions1) 0)
- (vct-ref (-> player positions2) 0)))))
- (rt-snd-play (c-selected-sound) start end position)
- (rt-snd-stop player))
- (begin
- (write-var rt-snd-cursorupdate-inc (1+ (read-var rt-snd-cursorupdate-inc)))
- (if (> (read-var rt-snd-cursorupdate-inc) 100000)
- (write-var rt-snd-cursorupdate-inc 0))
- (let ((pos (rt-snd-get-play-pos (c-selected-sound))))
- (if pos
- (let ((newdropouts (-> *rt-engine* num_max_cpu_interrupts)))
- (if (not (= newdropouts rt-snd-last-dropouts))
- (begin
- (c-display "RT-PLAYER: Error, the player engine used too much CPU, so some processing was skipped. (press 'l')")
- (if (< (- (read-var rt-snd-cursorupdate-inc) (read-var rt-snd-cursorupdate-dropout-num)) 4)
- (begin
- (if (> (rte-time) (+ (read-var rt-snd-cursorupdate-lasttime) 5))
- (begin
- (c-display "RT-PLAYER: Too much cpu time spent. Stopping player. (press 'l')")
- (rt-snd-stop-playing))))
- (write-var rt-snd-cursorupdate-lasttime (rte-time)))
- (write-var rt-snd-cursorupdate-dropout-num (read-var rt-snd-cursorupdate-inc))
- (set! rt-snd-last-dropouts newdropouts))
- (write-var rt-snd-cursorupdate-lasttime (rte-time)))
- (set! (cursor) pos)
- (c-show-times (cursor) #f)))))))))
- (if rt-snd-cursorupdate-run
- (in rt-snd-cursorupdate-interval
- rt-snd-cursorupdate)))
-
-(rt-snd-cursorupdate)
-
-
-
-
-
-
-
-#!
-(rt-snd-play 0 317544 492639 492639)
-
-(rt-clear-cache!)
-
-(set! (rt-safety) 0)
-(define p (<snd-rt-player> (selected-sound) 20000 #f (* 1 (mus-srate))))
-(set! (rt-safety) 1)
-
-(rte-info)
-(begin
- (rte-silence!)
- (ringbuffer-stop-all))
-
-(length rt-running-ringbuffers)
-
-(if (>= (vct-ref rt-control-values rt-control-speed) 0.0) 1 0)
-
-(vct-ref rt-control-values rt-control-speed)
-
-(rt-macroexpand '(vector-ref vec 5))
-(format #f "~A" '(vector))
-
-(set! (optimization) 6)
-
-(read-var *rt-loop-on-off*)
-(read-var rt-controls-on-off)
-(write-var rt-controls-on-off (if (expand-control?) 1 0))
-
-
-(macroexpand '(next-sample reader))
-
-(reverb-control-scale 0)
-
-(vct-ref rt-control-values rt-control-speed)
-
-(define r (make-sampler 200000 0 0 1))
-(begin r)
-(SCM_SMOB_DATA r)
-(dosomething r)
-(define rt-control-on-off (make-var 0))
-;;max buffer-size when buffring everything:
-(exact->inexact (/ (* 4 ;; bytes in a float
- 3 ;; factor set for buffring all. Must be bigger than 2.
- *rt-reader-buffer-time*
- (mus-srate))
- 1000000))
-
-
-(string= "abc" "abcd" 0 2 0 2)
-(string-drop "aiai.scm" 2)
-(string-take "cache.erm" 6)
-
-(define num-bits 8)
-(define (twofloats->int f1 f2)
- (let ((i1 (c-integer f1))
- (i2 (c-integer f2)))
- (+ (ash i1 num-bits) i2)))
-(twofloats->int 1 6)
-(twofloats->int 2.0 9.0)
-
-(logand #b101 #b110)
-(1- (expt 2 num-bits))
-(begin #b1111)
-
-(define (int->twofloats i)
- (let ((i1 (ash i (- num-bits))))
- (vct i1 (logand i (1- (expt 2 num-bits))))))
-
-(int->twofloats 262)
-
-
-(ash 500000 23)
-
-(let ((player (car rt-snd-players)))
- (list (rt-snd-twofloats->int (vct-ref (-> player positions1) 0)
- (vct-ref (-> player positions2) 0))
- (vct-ref (-> player positions1) 0)
- (vct-ref (-> player positions2) 0)))
-
-(logand 51233 (1- (expt 2 7)))
-
-!#
-
-
-
diff --git a/rt-stalin.scm b/rt-stalin.scm
deleted file mode 100644
index e084902..0000000
--- a/rt-stalin.scm
+++ /dev/null
@@ -1,4762 +0,0 @@
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;; globals ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define *stalin-stack-size* (* 8 128 1024)) ;; total stack size (for safety)
-(define *stalin-stack-limit* (* 8 96 1024)) ;; If using more than this, instrument is stopped. (checked every block)
-(define *stalin-queue-max-size* 1024) ;; max number of non-sound coroutines.
-(define *stalin-add-health-checks* #t)
-(define *stalin-backtrace-length* 20)
-
-(define *rt-local-stalin-code-environment* (the-environment))
-
-
-(define *rt-opt-stack-checks* #t)
-(define *rt-opt-cpu-checks* #t)
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;; various ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define* (get-system-output command cont :key (print-output #t))
- (let* ((logfilename "/tmp/snd-ls-logtemp")
- (ret (if print-output
- (system (<-> command " | tee " logfilename " && exit ${PIPESTATUS[0]}"))
- (system (<-> command ">" logfilename))))
- )
- (let* ((output "")
- (fd (open-file logfilename "r"))
- (line (read-line fd)))
- (while (not (eof-object? line))
- (set! output (<-> output line))
- (set! line (read-line fd)))
- (close fd)
- (system (<-> "rm " logfilename))
- (cont output ret))))
-
-
-(define (get-all-unique-symbols l)
- (delete-duplicates (flatten l) eq?))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;; Stalin functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-(define stalin-funcs '())
-
-(define (add-stalin-func name body)
- (let ((hit (assq name stalin-funcs)))
- (if hit
- (set-cdr! hit (list body))
- (push! (list name body) stalin-funcs))))
-
-(define (is-stalin-defined? name)
- (memq name stalin-funcs))
-
-(define (get-stalin-func name)
- (cadr (assq name stalin-funcs)))
-
-(define-macro (define-stalin name . body)
- (when (pair? name)
- (set! body `((lambda ,(cdr name) ,@body)))
- (set! name (car name)))
-
- (add-stalin-func name `(define ,name ,@body))
- #t)
-
-(define (find-stalin-funcs expr-top)
- (define ret '())
- (let loop ((expr expr-top))
- (schemecodeparser expr
- :symbolfunc (lambda (sym)
- (if (assq sym stalin-funcs)
- (push! sym ret)))
- :elsefunc (lambda (expr)
- (when (not (memq (car expr) ret))
- (let ((hit (assq (car expr) stalin-funcs)))
- (if hit
- (push! (car hit) ret))))
- (for-each loop (cdr expr)))))
- (delete-duplicates ret eq?))
-
-;;(define (add-stalin-bindings name bindings . rest)
-;; #t)
-
-#!
-(find-stalin-funcs '(vct a b))
-(pretty-print (generate-stalin-code '((vct a b))))
-(define-stalin *var* 0)
-(define-stalin (add2 a b)
- (+ a b *var* (add2 5 7)))
-(define-stalin add (lambda (a b)
- (+ a (add2 b 9))))
-(pretty-print (generate-stalin-code0 '((+ 2 3 (add 50 (add 90))))))
-!#
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;; Stalin eval-c functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define stalin-ec-functions '())
-
-(define (get-stalin-ec-function name)
- (assq name stalin-ec-functions))
-
-;; stalin seems to be missing long long which is needed for time.
-(define (get-legal-stalin-type type)
- (fix-defines
- (define s (eval-c-etype->ctype type)) ;;(eval-c-get-known-type type)))
- (define clean (string->symbol s))
- ;;(c-display "type" type "clean" clean)
- (cond ((string=? s "char *")
- 'char*)
- ((memq clean '(void char short int unsigned long float double void* char*))
- clean)
- ((memq clean '(#{signed char}# #{unsigned short}# #{unsigned long}# #{long double}#))
- (string->symbol (list->string (cdr (c-butlast (string->list (symbol->string (eval-c-ctype->etype s))))))))
- (else
- 'void*))))
-
-#!
-(get-legal-stalin-type '<unsigned-long>)
-(eval-c-get-known-type '<unsigned-long>)
-(eval-c-etype->ctype '<unsigned-long>)
-!#
-
-;;(eval-c-etype->ctype (eval-c-get-known-type '<char-*>))
-
-(define stalin-dont-rename-these '())
-
-(define (define-stalin-ec-do ret-type name body)
- (when (eq? 'lambda (car body))
- (let ()
- (define def (map (lambda (arg)
- (fix-defines
- (define type (car arg))
- (define name (cadr arg))
- (define rt-type (hashq-ref rt-types type))
- ;;(c-display "type/rt-type: " type rt-type)
- (if rt-type
- `(,(-> rt-type c-type) ,name)
- arg)))
- (cadr body)))
- (if (hashq-ref rt-types ret-type)
- (set! ret-type (-> (hashq-ref rt-types ret-type) c-type)))
-
- (set! body `(,(car body) ,def ,@(cddr body)))
- (push! name stalin-dont-rename-these)
- (add-stalin-func name `(define ,name (lambda ,(map cadr (cadr body))
- ( (foreign-procedure ,(map get-legal-stalin-type (map car (cadr body)))
- ,(get-legal-stalin-type ret-type)
- ,(symbol->string name))
- ,@(map (lambda (arg)
- (let ((type (car arg))
- (name (cadr arg)))
- ;;(c-display "name:" name ", type:" type)
- (cond ((memq type '(<float> <double>))
- `(exact->inexact ,name))
- ((memq type '(<int> <unsigned-long> <short> <char>))
- `(inexact->exact (floor ,name)))
- (else
- name))))
- (cadr body))))))
-
- ;;(add-stalin-func name `(define ,name (foreign-procedure ,(map get-legal-stalin-type (map car (cadr body)))
- ;; ,(get-legal-stalin-type ret-type)
- ;; ,(symbol->string name))))
- ))
- ;;(c-display "adding something" name (get-stalin-ec-function name))
- (let ((dependents (get-all-unique-symbols body))
- (old (get-stalin-ec-function name)))
- (if old
- (set-cdr! (assq name stalin-ec-functions) (list dependents
- (list ret-type name body)))
- (set! stalin-ec-functions (append! stalin-ec-functions
- (list (list name
- dependents
- (list ret-type name body))))))))
-(define-macro (define-stalin-ec ret-type name body)
- `(define-stalin-ec-do ',ret-type ',name ',body))
-
-;; why did I make this one?
-(define (add-stalin-ec name body)
- (define hit (get-stalin-ec-function name))
- (if hit
- (set-cdr! hit (list '() body))
- (set! stalin-ec-functions (append! stalin-ec-functions
- (list (list name
- '()
- body))))))
-
-(define (add-stalin-ec-binding function1 function2)
- (fix-defines
- (define hit (get-stalin-ec-function function1))
- (define dependents (nth 1 hit))
- (define body (nth 2 hit))
- (set-cdr! hit (list (cons function2 dependents)
- body))))
-
-#!
-(pretty-print stalin-ec-functions)
-!#
-
-
-(define (get-stalin-ec-funcs program)
- (let ((function-names '())
- (functions '()))
-
- (define (add-func funcname)
- (if (not (memq funcname function-names))
- (let ((func (get-stalin-ec-function funcname)))
- (if func
- (begin
- (push! funcname function-names) ;; Add function-name to the list of included function
- (for-each add-func (nth 1 func)) ;; Add functions used by the function
- (push! (nth 2 func) functions)))))) ;; Add function-body to be included.
-
- ;;(c-display "all-funcs:" (get-all-unique-symbols program))
- (for-each add-func (get-all-unique-symbols program))
- (reverse! functions)))
-
-#!
-(get-stalin-ec-funcs '((rt_write_out_bus 0 2 0.5)))
-!#
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;; Stalin low-level macros ;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-(define stalin-macros (make-hash-table 219))
-
-(define (define-stalin-macro-do def body)
- (define keys (let loop ((def def)
- (keys-found #f))
- (cond ((null? def)
- '())
- ((not (pair? def))
- '())
- ((keyword? (car def))
- (loop (cdr def)
- #t))
- ((not keys-found)
- (loop (cdr def)
- #f))
- ((pair? (car def))
- (cons (caar def)
- (loop (cdr def)
- #t)))
- (else
- (cons (car def)
- (loop (cdr def)
- #t))))))
- (when (memq 'where keys)
- (c-display "Error in define-stalin-macro. :where is a reserved keyword")
- (throw 'compilation-error))
- (when (memq 'when keys)
- (c-display "Error in define-stalin-macro. :when is a reserved keyword")
- (throw 'compilation-error))
- (when (memq 'by keys)
- (c-display "Error in define-stalin-macro. :by is a reserved keyword")
- (throw 'compilation-error))
- (if (pair? def)
- (hashq-set! stalin-macros (car def) (primitive-eval `(labamba-onymous ,(symbol->string (car def))
- ,(cdr def)
- ,@body)))
- (hashq-set! stalin-macros def (primitive-eval (car body)))))
-(define-macro (define-stalin-macro def . body)
- `(define-stalin-macro-do ',def ',body))
-
-#!
-(define-stalin-macro testing (lambda (a) `(+ 2 ,a)))
-(define-stalin-macro (testing a)
- `(+ 2 ,a))
-
-(stalin-macroexpand '(testing 50))
-(pretty-print (get-stalin-macro 'testing))
-(pretty-print (stalin-macroexpand '(wait-midi
- (spawn
- (wait-midi :cont #f
- (when (and (midi-stop?)
- (= note
- (midi-note)))
- (stop oscillator)
- #t))))))
-(pretty-print (stalin-macroexpand '(wait-midi
- (wait-midi
- 50))))
-
-!#
-
-(define (get-stalin-macro name)
- (hashq-ref stalin-macros name))
-
-(define (stalin-macroexpand-1 expr)
- (if (or (not (pair? expr))
- (null? expr)
- (not (symbol? (car expr))))
- expr
- (let ((qua (get-stalin-macro (car expr))))
- (if (not qua)
- (begin
- ;;(c-display "Error in expand-a-macro. Macro for " expr " Not found.")
- expr)
- (catch #t
- (lambda ()
- (apply qua (cdr expr)))
- (lambda x
- (c-display (<-> "\"" (symbol->string (car expr)) "\":"))
- (pretty-print (procedure-source qua))
- (c-display (<-> "Error while expanding macro \"" (symbol->string (car expr))
- "\" in expression")
- expr)
- (c-display x)
- (throw 'compilation-error)
- ;;(error "uffda")
- ))))))
-
-
-(define* (stalin-macroexpand expr :key (include-make-coroutine #f))
- (schemecodeparser expr
- :symbolfunc
- (lambda (sym)
- (if (and (assq sym extra-coroutine-slots)
- (not (memq sym (schemecodeparser-get-varlist))))
- (stalin-macroexpand `(=> coroutine:_current-coroutine ,(symbol->keyword sym)) :include-make-coroutine include-make-coroutine)
- sym))
-
- :use-customsymbolhandler?
- (lambda (expr)
- (or (memv :where expr)
- (memv :when expr)
- (memv :by expr)))
- :customsymbolhandler
- (lambda (expr)
- (define rev-expr (reverse expr))
- (cond ((eq? 'lambda (car expr))
- (stalin-macroexpand `(lambda ,(cadr expr)
- (begin
- ,@(cddr expr)))
- :include-make-coroutine include-make-coroutine))
- ((eq? 'define (car expr))
- (stalin-macroexpand `(define ,(cadr expr)
- (begin
- ,@(cddr expr)))
- :include-make-coroutine include-make-coroutine))
- (else
- (let ((key (let loop ((expr rev-expr))
- (cond ((eqv? :where (car expr)) :where)
- ((eqv? :when (car expr)) :when)
- ((eqv? :by (car expr)) :by)
- (else
- (loop (cdr expr)))))))
-
- (call-with-values (lambda () (break (lambda (t) (eqv? key t))
- rev-expr))
- (lambda (before_ after_)
- (define before (reverse after_))
- (define after (reverse before_))
- ;;(c-display "rev" rev-expr)
- ;;(c-display "before" before)
- ;;(c-display "after" after "\n")
- (cond ((eqv? key :where)
- (stalin-macroexpand `(let ((,(car after) ,(cadr after)))
- (,@(butlast before 1)
- ,@(cddr after)))
- :include-make-coroutine include-make-coroutine))
- ((eqv? key :when)
- (stalin-macroexpand `(if ,(car after)
- (,@(butlast before 1)
- ,@(cdr after)))
- :include-make-coroutine include-make-coroutine))
- (else ;; :why
- (stalin-macroexpand `(,(car after)
- (,@(butlast before 1)
- ,@(cdr after)))
- :include-make-coroutine include-make-coroutine)))))))))
-
-
- :elsefunc (lambda (expr)
- ;;(when (and (eq? 'set! (car expr))
- ;; (not (pair? (cadr expr)))
- ;; (is-stalin-defined? (cadr expr)))
- ;; (c-display "Bindings defined using define-stalin can not be set!:"
- ;; expr)
- ;; (throw 'compilation-error))
- (cond ((eq? 'set! (car expr))
- (let ((name (cadr expr))
- (val (caddr expr)))
- (cond ((and (symbol? name)
- (assq name extra-coroutine-slots)
- (not (memq name (schemecodeparser-get-varlist))))
- (stalin-macroexpand `(set! (=> coroutine:_current-coroutine ,(symbol->keyword name)) ,val)))
- ((pair? name)
- (stalin-macroexpand
- `( ,(<_> 'setter!- (car name)) ,@(cdr (cadr expr))
- ,val)))
- (else
- `(set! ,name ,(stalin-macroexpand val))))))
- ((and (not include-make-coroutine)
- (eq? 'make-coroutine (car expr))) ;; make-coroutine is redefined after macroexpand.
- `(make-coroutine ,@(map (lambda (entry)
- (if (keyword? entry)
- `(keyword ,(keyword->symbol entry))
- (stalin-macroexpand entry)))
- (cdr expr))))
- (else
- (let ((topexpand (stalin-macroexpand-1 expr)))
- ;;(c-display "expr/topexpand" expr topexpand)
- (if (eq? expr topexpand)
- `(,(car expr) ,@(map stalin-macroexpand (cdr expr)))
- (stalin-macroexpand topexpand))))))))
-
-#!
-(stalin-macroexpand '(+ a b
- :where c 9
- :where d 10))
-
-(stalin-macroexpand '(stop :when a :when #f))
-
-;; Never used.
-(define (stalin-macroexpand-make-coroutine code)
- (c-display "stalin-macroexpand-make-coroutine entry")
- (if #f
- (stalin-macroexpand code :include-make-coroutine #t)
- (schemecodeparser code
- :symbolhandler
- (list 'make-coroutine
- (lambda (expr)
- (stalin-macroexpand (stalin-macroexpand-1
- `(make-coroutine ,@(map (lambda (entry)
- (if (and (pair? entry)
- (eq? 'keyword (car entry)))
- (symbol->keyword (cadr entry))
- entry))
- (cdr expr))))))))))
-!#
-
-#!
-(stalin-macroexpand '(quasiquote ((unqoute a) 0)))
-(stalin-macroexpand '(quasiquote (((unquote a) 1))))
-
-(define-stalin-macro (dosomething b :key (c 100))
- `(+ 1 ,b 2 ,c))
-(stalin-macroexpand-1 '(dosomething 3 (symbol->keyword 'c) 2))
-(pretty-print (stalin-macroexpand '(let-keywords* lambda*:G787 #f ((c 100)) (unquote c))))
-
-(pretty-print (fix-stalin-keywords (stalin-macroexpand '(lambda* (:key (c "ai")) c))))
-(fix-stalin-keywords (stalin-macroexpand '(debug (a :c "hello"))))
-
-!#
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;; optargs ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;; this needs more thinking. optargs should probably be implemented
-;; using macros instead.
-;;(load-from-path "stalin-optargs.scm")
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;; Rt stalin functions and macros ;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; various
-
-(define-stalin-macro (unquote something)
- (local-eval something *rt-local-stalin-code-environment*))
-
-(define-stalin-macro (-> object command)
- `(,object ',command))
-
-(define-stalin-macro (1+ a)
- `(+ 1 ,a))
-(define-stalin-macro (1- a)
- `(- ,a 1))
-(define-stalin-macro (vref n v)
- `(vector-ref ,v ,n))
-(define-stalin-macro (vset! n v val)
- `(vector-set! ,v ,n ,val))
-(define-stalin-macro (inc! var how-much)
- `(begin
- (set! ,var (+ ,how-much ,var))
- ,var))
-(define-stalin-macro (push! val where)
- (let ((ret (rt-gensym)))
- `(let ((,ret ,val))
- (set! ,where (cons ,ret ,where))
- ,ret)))
-(define-stalin-macro (push-back! val where)
- (let ((ret (rt-gensym)))
- `(let ((,ret ,val))
- (set! ,where (append! ,where (list ,ret)))
- ,ret)))
-(define-stalin-macro (!= a b)
- `(not (= ,a ,b)))
-
-(define-stalin-macro (while test . body)
- (define loop (rt-gensym "while"))
- (if (eq? #t test)
- `(let ,loop ()
- ,@body
- (,loop))
- `(let ,loop ()
- (if ,test
- (begin
- ,@body
- (,loop))))))
-
-
-;; continuation-safe loop. Should probably be made default.
-(define-stalin-macro (while-cc test . body)
- (define return (rt-gensym "return"))
- (define loop (rt-gensym "while"))
- (if (eq? #t test)
- `(let ,loop ()
- ,@body
- (,loop))
- `(call/cc
- (lambda (,return)
- (let ,loop ()
- (if ,test
- (begin
- ,@body
- (,loop))
- (,return #f)))))))
-
-
-(define-stalin-macro (when cond . rest)
- `(cond (,cond ,@rest)
- (else #f)))
-
-(define-stalin-macro (range name das-start das-end . body)
- (define start (rt-gensym "start"))
- (define end (rt-gensym "end"))
- (define loop (rt-gensym "rangeloop"))
- `(let ((,start ,das-start)
- (,end ,das-end))
- (let ,loop ((,name ,start))
- (when (< ,name ,end)
- ,@body
- (,loop (1+ ,name))))))
-
-(define-stalin-macro (call/cc a)
- `(call-with-current-continuation ,a))
-
-(define-stalin (scale x x1 x2 y1 y2)
- (+ y1
- (/ (* (- x x1)
- (- y2 y1))
- (- x2 x1))))
-
-(define-stalin (remove! pred l)
- (while (and (not (null? l))
- (pred (car l)))
- (set! l (cdr l)))
- (if (not (null? l))
- (let loop ((prev l)
- (l (cdr l)))
- (cond ((null? l)
- #t)
- ((pred (car l))
- (set-cdr! prev (cdr l))
- (loop prev (cdr l)))
- (else
- (loop l (cdr l))))))
- l)
-
-
-(define-stalin-ec <void*> get_NULL_ (lambda ()
- (return NULL)))
-(define-stalin-ec <int> is_NULL_ (lambda ((<void*> arg))
- (return arg==NULL)))
-(define-stalin (is_NULL arg)
- (= 1 (is_NULL_ arg)))
-
-(define-stalin-ec <void> lowlevel_remove_me (lambda ()
- (myexit)))
-(define-stalin (remove-me)
- (lowlevel_remove_me))
-
-
-(define-stalin-ec <void> lowlevel_debug (lambda ((<char*> string))
- (rt_debug string)))
-(define-stalin-ec <void> lowlevel_debug1 (lambda ((<char*> string)
- (<int> a))
- (rt_debug string a)))
-(define-stalin-ec <void> lowlevel_debug2 (lambda ((<char*> string)
- (<int> a)
- (<int> b))
- (rt_debug string a b)))
-
-(define-stalin-macro (debug string . rest)
- (define something (rt-gensym))
- (if (null? rest)
- `(lowlevel_debug ,string)
- `(lowlevel_debug (apply string-append
- (cons ,string
- (map (lambda (,something)
- (cond ((number? ,something)
- (number->string ,something))
- ((symbol? something)
- (symbol->string ,something))
- ((string? ,something)
- string)
- (else
- " <unkown type> ")))
- (list ,@rest)))))))
-
-(define-stalin (error message)
- (lowlevel_debug message)
- (remove-me))
-
-;; keywords
-(define (make-stalin-keyword sym)
- (cons 'keyword sym))
-(define-stalin (symbol->keyword sym)
- (cons 'keyword sym))
-
-(define-stalin (keyword? key)
- (and (pair? key)
- (eq? 'keyword (car key))))
-(define-stalin keyword->symbol cdr)
-
-(define-stalin (flatten tree)
- (cond ((null? tree) '())
- ((pair? (car tree))
- (append (flatten (car tree))
- (flatten (cdr tree))))
- (else
- (cons (car tree) (flatten (cdr tree))))))
-
-(define-stalin-ec <void*> ulong_to_void_
- (lambda ((<unsigned-long> address))
- (return (cast <void*> address))))
-
-#!
-(compose (+ 2) (+ 3))
-->
-(lambda (a) (+ 2 (+ 3 a)))
-!#
-
-(define-stalin-macro (compose . args)
- (define lambda-arg (rt-gensym))
- `(lambda (,lambda-arg)
- ,(let loop ((args args))
- (cond ((null? args)
- lambda-arg)
- ((pair? (car args))
- `(,@(car args) ,(loop (cdr args))))
- (else
- `(,(car args) ,(loop (cdr args))))))))
-
-
-#!
-(pretty-print (stalin-macroexpand '(compose (+ 2) (+ 3))))
-(pretty-print (stalin-macroexpand '(compose + -)))
-!#
-
-(define-stalin-macro (send a :rest through :allow-other-keys)
- (let loop ((args (cdr through)))
- (cond ((null? args)
- a)
- ((pair? (car args))
- `(,@(car args) ,(loop (cdr args))))
- (else
- `(,(car args) ,(loop (cdr args)))))))
-
-#!
-(pretty-print (stalin-macroexpand '(out a :where a 5)))
-(pretty-print (stalin-macroexpand '(send 9 :through add subtract)))
-(pretty-print (stalin-macroexpand '(out a :where a (send 9 :through +))))
-!#
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; structures (providing same structure syntax for rt-stalin as guile and snd-rt)
-
-
-;; Code copied from stalin source.
-(define (add-stalin-structure s)
- (define (sx-datum d) d)
- (define sx-second cadr)
- (define sx-rest cdr)
- (define (sx-unlist d) d)
- (define sx-every every)
- (define sx-length length)
- (define sx-symbol? symbol?)
- (define (syntax-error s message)
- (c-display message)
- (throw 'compilation-error))
- (define (map-indexed func alist)
- (let ((i -1))
- (map (lambda (s)
- (inc! i 1)
- (func s i))
- alist)))
- (set! s (cons 'define-structure s))
- (when (or (< (sx-length s) 3)
- (not (sx-every sx-symbol? (sx-rest s))))
- (syntax-error s "Improper DEFINE-STRUCTURE"))
- (let ((type (sx-datum (sx-second s)))
- (slots (sx-unlist (sx-rest (sx-rest s)))))
- ;; conventions: TYPE SLOTS
- (primitive-eval
- `(begin
- (define-stalin (,(string->symbol
- (string-append "make-" (symbol->string type)))
- ,@(map sx-datum slots))
- ((primitive-procedure make-structure ,type ,(length slots))
- ,@(map sx-datum slots)))
- (define-stalin (,(string->symbol
- (string-append (symbol->string type) "?"))
- obj)
- ((primitive-procedure structure? ,type) obj))
- ,@(map-indexed
- (lambda (slot i)
- ;; conventions: SLOT I
- (let ((slot (sx-datum slot)))
- ;; conventions: SLOT
- `(begin
- (define-stalin (,(string->symbol
- (string-append (symbol->string type)
- "-"
- (symbol->string slot)))
- s)
- ((primitive-procedure structure-ref ,type ,i) s))
- (define-stalin (,(string->symbol
- (string-append "SET-"
- (symbol->string type)
- "-"
- (symbol->string slot)
- "!"))
- s x)
- ((primitive-procedure structure-set! ,type ,i) s x))
-;;; (define (,(string->symbol
-;;; (string-append "LOCAL-SET-"
-;;; (symbol->string type)
-;;; "-"
-;;; (symbol->string slot)
-;;; "!"))
-;;; s x)
-;;; (let ((p ((primitive-procedure structure-ref ,type ,i) s)))
-;;; ;; conventions: P
-;;; (upon-failure
-;;; ((primitive-procedure structure-set! ,type ,i) s p)))
-;;; ((primitive-procedure structure-set! ,type ,i) s x))
- )
- )
- )
- slots)
- ))))
-
-(define-macro (define-stalin-struct_internal name . das-slots)
- (define name-name (rt-gensym2))
- (define val-name (rt-gensym2))
- (define slots '())
-
- (for-each (lambda (slot)
- (if (keyword? slot)
- (push-back! (list (append-various slot) 0) slots)
- (set-cdr! (last slots) (list slot))))
- das-slots)
-
- (add-stalin-structure (cons name (map car slots)))
-
- (for-each (lambda (slot)
- (push! (<_> 'SET- name (string->symbol "-") slot (string->symbol "!")) stalin-dont-rename-these)
- (push! (<_> 'name (string->symbol "-") slot) stalin-dont-rename-these))
- (map car slots))
-
- (let ((slot-names (map car slots)))
- `(begin
-
- ;;(add-stalin-func ',name (quote (define-structure ,name ,@slot-names)))
-
- ;;(define-stalin (,(symbol-append 'make- name)); ,@slot-names);:key ,@slots)
- ;; (make-vector ,(length slot-names)))
-
- ,@(map (lambda (slot)
- `(define-stalin-macro (,(append-various 'setter!- name ":" slot) ,name-name ,val-name)
- (quasiquote (,(<_> 'SET- ',name ',(string->symbol "-") ',slot ',(string->symbol "!")) ,,name-name ,,val-name))))
- slot-names)
-;; ,@(map (lambda (slot)
-;; `(define-stalin (,(append-various 'setter!- name ":" slot) ,name-name ,val-name)
-;; (,(<_> 'SET- name (string->symbol "-") slot (string->symbol "!")) ,name-name ,val-name)))
-;; slot-names)
-;; ,@(map (lambda (slot)
-;; `(define-stalin (,(append-various 'getter- name ":" slot) ,name-name)
-;; (,(<_> name (string->symbol "-") slot) ,name-name)))
-;; slot-names)
- ,@(map (lambda (slot)
- `(define-stalin-macro (,(append-various 'getter- name ":" slot) ,name-name)
- (quasiquote (,(<_> ',name ',(string->symbol "-") ',slot) ,,name-name))))
- slot-names)
- )))
-
-(define-macro (define-stalin-struct name . das-slots)
- (define name-name (rt-gensym2))
- (define val-name (rt-gensym2))
- (define make-name (<_> 'make- name))
- (define internal-make-name (<_> 'make- name '-internal))
- (define slots '())
-
- (for-each (lambda (slot)
- (if (keyword? slot)
- (push-back! (list (append-various slot) #f) slots)
- (set-cdr! (last slots) (list `(quote ,slot)))))
- das-slots)
-
- `(begin
- (define-stalin-struct_internal ,name ,@(map symbol->keyword (map car slots)))
- (define-stalin ,internal-make-name ,make-name)
- (define-stalin-macro (,make-name :optkey ,@slots)
- (cons ',internal-make-name (list ,@(map car slots))))))
-
-#!
-(pretty-print (macroexpand-1 '(define-stalin-struct teststruct :hello 50 :gakk wef :ai)))
-(stalin-macroexpand '(make-coroutine))
-!#
-
-(define-stalin-macro setter!-=> (lambda (object das-method . rest)
- (cond ((keyword? object)
- (let ((name (rt-gensym))
- (type object)
- (object das-method)
- (das-method (car rest))
- (rest (cdr rest)))
- `(let ((,name ,object))
- (setter!-=> ,(<_> (keyword->symbol type) (string->symbol ":") name) ,das-method ,@rest))))
- (else
- (let ()
- (define method (keyword->symbol das-method))
- (define object-decomposed (map string->symbol (string-split (symbol->string object) #\:)))
- (let ()
- (define struct-name (car object-decomposed))
- (define object-name (if (null? (cdr object-decomposed))
- (car object-decomposed)
- (cadr object-decomposed)))
- `(,(append-various 'setter!- struct-name ":" method) ,object-name ,@rest)))))))
-
-(define-stalin-macro => (lambda (object das-method . rest)
- (cond ((not (null? rest))
- (let ((name (rt-gensym))
- (type object)
- (object das-method)
- (das-method (car rest)))
- `(let ((,name ,object))
- (=> ,(<_> (keyword->symbol type) (string->symbol ":") name) ,das-method))))
- (else
- (if (or (not (symbol? object))
- (not (keyword? das-method)))
- (begin
- ;;(c-display (symbol? object) (keyword? das-method))
- (c-display "Syntax error" `(=> ,object ,das-method))
- (throw 'compilation-error)))
- (let ()
- (define method (keyword->symbol das-method))
- (define object-decomposed (map string->symbol (string-split (symbol->string object) #\:)))
- (let ()
- (define struct-name (car object-decomposed))
- (define object-name (if (null? (cdr object-decomposed))
- (car object-decomposed)
- (cadr object-decomposed)))
- `(,(append-various 'getter- struct-name ":" method) ,object-name)))))))
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; sound stuff
-
-(define-stalin-macro (infix-f t)
- t)
-(define-stalin-macro (infix-b t)
- `(* ,*rt-block-size* ,t))
-(define-stalin-macro (infix-ms t)
- `(inexact->exact (floor (/ (* ,t ,(rte-samplerate))
- 1000))))
-(define-stalin-macro (infix-s t)
- `(* ,(inexact->exact (rte-samplerate)) ,t))
-(define-stalin-macro (infix-m t)
- `(* ,(* 60 (inexact->exact (rte-samplerate))) ,t))
-(define-stalin-macro (infix-h t)
- `(* ,(* 60 60 (inexact->exact (rte-samplerate))) ,t))
-
-(define-stalin _block-time 0)
-(define-stalin _time 0)
-
-(define-stalin-ec <int> _get_block_time (lambda ()
- (return block_time)))
-(define-stalin-ec <int> _get_startframe (lambda ()
- (return g_startframe)))
-(define-stalin-ec <int> _get_endframe (lambda ()
- (return g_endframe)))
-
-(define-stalin-ec <void> _block_ready (lambda ()
- (block_ready_internal)))
-
-;(add-stalin-ec 'bus-struct bus-struct)
-
-;(add-stalin-ec 'outbus `(<struct-rt_bus*> outbus (cast <struct-rt_bus*> ,(<-> (number->string (cadr (SCM_SMOB_DATA *out-bus*)))
-; "UL"))))
-;(add-stalin-ec 'inbus `(<struct-rt_bus*> inbus (cast <struct-rt_bus*> ,(<-> (number->string (cadr (SCM_SMOB_DATA *in-bus*)))
-; "UL"))))
-
-;(add-stalin-ec-binding 'outbus 'bus-struct)
-;(add-stalin-ec-binding 'inbus 'bus-struct)
-
-(define-stalin-ec <void> rt_write_out_bus-old
- (lambda ((<int> ch)
- (<int> framenum)
- (<float> val))
- (if (>= ch outbus->num_channels)
- return)
- (<struct-rt_bus_data-*> data "&outbus->data[(outbus->num_channels*framenum)+ch]")
- (if (< data->last_written_to block_time)
- (set! data->val val)
- (+= data->val val))
- (set! data->last_written_to block_time)))
-
-(define-stalin-ec <void> rt_write_out_bus
- (lambda ((<int> ch)
- (<int> time)
- (<float> val))
- (if (>= ch ,*rt-num-output-ports*)
- return)
- (let* ((pos <int> (+ (* ch ,*rt-block-size*)
- (- time
- block_time))))
- (set! sounddata[pos] val))))
-
-(add-stalin-ec-binding 'rt_write_out_bus 'outbus)
-
-#!
-old bus.
-(define-stalin-macro (out . rest)
- (define val (rt-gensym))
- (if (= 2 (length rest))
- `(rt_write_out_bus ,(car rest) _time ,(cadr rest))
- `(let ((,val ,(car rest)))
- (rt_write_out_bus 0 _time ,val)
- (rt_write_out_bus 1 _time ,val))))
-!#
-
-
-
-;; ADSR envelope
-
-(define-stalin (make-adsr-do a d s r)
- (define in (rt_make_env (vct 0 0 a 1 (+ a d) s) (+ a d))) ;; Small optimization.
- ;;(define in (make-env `((0 0)(,a 1)(,(+ a d) ,s)) :dur (+ a d)))
- (define out (make-env '((0 1)(1 0)) :dur r))
- (define do-out #f)
- (define do-in #t)
- (define vol 0.0)
- (define time 0)
- (lambda (command)
- (case command
- ((next)
- (inc! time 1)
- (cond (do-out
- (* vol (env out)))
- (do-in
- (cond ((= time (+ a d))
- (set! do-in #f)
- (set! vol s))
- (else
- (set! vol (env in))))
- vol)
- (else
- vol)))
- ((is-running)
- (or (not do-out)
- (< time r)))
- ((stop)
- (set! time 0)
- (set! do-out #t)))))
-
-#!
-Use it like this:
-
-(<rt-stalin>
- (sound
- (out (+ (* 0.5 softsynth)
- (* 0.0953 reverb)
-
- :where reverb (+ (comb :scaler 0.742 :size 9601 allpass-sum)
- (comb :scaler 0.733 :size 10007 allpass-sum)
- (comb :scaler 0.715 :size 10799 allpass-sum)
- (comb :scaler 0.697 :size 11597 allpass-sum)
- :where allpass-sum (send softsynth :through
- (all-pass :feedback -0.7 :feedforward 0.7)
- (all-pass :feedback -0.7 :feedforward 0.7)
- (all-pass :feedback -0.7 :feedforward 0.7)
- (all-pass :feedback -0.7 :feedforward 0.7)))
- :where softsynth (in (while #t
- (wait-midi :command note-on
- (sound :while (-> adsr is-running)
- (out (* (-> adsr next) (midi-vol) (oscil :freq (midi-to-freq (midi-note))))))
- (spawn
- (wait-midi :command note-off :note (midi-note)
- (-> adsr stop)))
- :where adsr (make-adsr :a 20:-ms :d 30:-ms :s 0.2 :r 70:-ms))))))))
-
-
-;; old one
-(define-stalin (make-adsr-do a d s r)
- (define in (rt_make_env (vct 0 0 a 1 (+ a d) s) (+ a d))) ;; Small optimization.
- ;;(define in (make-env `((0 0)(,a 1)(,(+ a d) ,s)) :dur (+ a d)))
- (define out (make-env '((0 1)(1 0)) :dur r))
- (define do-out #f)
- (define do-in #t)
- (define vol 0.0)
- (define time 0)
- (lambda cut
- (inc! time 1)
- (cond ((not (null? cut))
- (set! time 0)
- (set! do-out #t))
- (do-out
- (if (>= time r)
- #f
- (* vol (env out))))
- (do-in
- (cond ((= time (+ a d))
- (set! do-in #f)
- (set! vol s))
- (else
- (set! vol (env in))))
- vol)
- (else
- vol))))
-
-(define-stalin-struct adsr-data
- :in (make-env)
- :out (make-env)
- :do-out #f
- :do-in #t
- :vol 0.0
- :time 0
- :a+d 0.0)
-
-(define-stalin (make-adsr-do a d s r)
- (make-adsr-data :in (rt_make_env (vct 0 0 a 1 (+ a d) s) (+ a d))
- :out (make-env '((0 1)(1 0)) :dur r)
- :a+d (+ a d)))
-(define-stalin (adsr-run adsr-data)
- (inc! (=> adsr-data :time) 1)
- (cond ((=> adsr-data :do-out)
- (* (=> adsr-data :vol) (env (=> adsr-data :out))))
- ((=> adsr-data :do-in)
- (cond ((= (=> adsr-data :time)) (=> adsr-data :a+d)
- (set! (=> sadsr-data :do-in) #f)
- (set! (=> adsr-data :vol) s))
- (else
- (set! (=> adsr-data :vol) (env (=> adsr-data :in)))))
- (=> adsr-data :vol))
- (else
- (=> adsr-data :vol))))
-
-(define-stalin (adsr-run adsr-data)
- (namespace adsr-data)
- (inc! time 1)
- (cond (do-out
- (* vol (env out)))
- (do-in
- (cond ((= time (+ a d))
- (set! do-in #f)
- (set! vol s))
- (else
- (set! vol (env in))))
- vol)
- (else
- vol)))
-
-(define-stalin (midi-synth)
- (while #t
- (wait-midi :command note-on
- (define adsr (make-adsr))
- (define osc (make-oscil :freq (midi-to-freq (midi-note))))
- (sound
- (if (adsr-stopped? adsr)
- (stop)
- (out (* 0.2 (adsr-run adsr) (midi-vol) (oscil osc)))))
- (spawn
- (wait-midi :command note-off :note (midi-note)
- (adsr-stop! adsr))))))
-
-(define-stalin (midi-synth)
- (while #t
- (wait-midi :command note-on
- (define adsr (make-adsr))
- (define osc (make-oscil :freq (midi-to-freq (midi-note))))
- (sound
- (if ((adsr 'stopped?))
- (stop)
- (out (* 0.2 ((adsr 'run)) (midi-vol) (oscil osc)))))
- (spawn
- (wait-midi :command note-off :note (midi-note)
- ((adsr 'stop!)))))))
-
-!#
-
-(define-stalin-macro (make-adsr :optkey
- (a '20:-ms)
- (d '20:-ms)
- (s 0.2)
- (r '50:-ms))
- `(make-adsr-do ,a ,d ,s ,r))
-
-
-
-
-;; CLM
-
-#!
-(make-oscil 4 34 23 23 )
-
-(cdr (assq 'documentation (procedure-properties make-oscil)))
-(cdr (assq 'documentation (procedure-properties make-env)))
-(cdr (assq 'documentation (procedure-properties make-all-pass)))
-(procedure-properties make-env)
-
-(define *rt-temp-filename* (let ((ret (tmpnam)))
- (delete-at-exit ret)
- ret))
-
-(define-macro (get-clm-proto function)
- `(let ()
- (define fd (open-file *rt-temp-filename* "w"))
- (write-line (cdr (assq 'documentation (procedure-properties ,function)))
- fd)
- (close fd)
- (let* ((fd (open-file *rt-temp-filename* "r"))
- (ret (read fd)))
- (close fd)
- ret)))
-
-(let ()
- (define a (get-clm-proto make-env))
- (cdr a))
-
-(make-env '(2 3))
-
-(define all-clm-generator-names
- (get-system-output "grep S_make clm-strings.h |awk '{print $3}'"
- (lambda (output ret)
- (map (lambda (string)
- (string->symbol (substring string 5 (string-length string))))
- (remove (lambda (string)
- (< (string-length string) 3))
- (string-split output (car (string->list "\""))))))
- :print-output #f))
-
-(begin all-clm-generator-names)
-
-(define all-clm-constructor-names
- (get-system-output "grep S_make clm-strings.h |awk '{print $3}'"
- (lambda (output ret)
- (map (lambda (string)
- (string->symbol string))
- (remove (lambda (string)
- (< (string-length string) 3))
- (string-split output (car (string->list "\""))))))
- :print-output #f))
-
-(begin all-clm-constructor-names)
-
-(pretty-print (map (lambda (func)
- (get-clm-proto func))
- (map primitive-eval
- (remove (lambda (name)
- (not (defined? name)))
- all-clm-generator-names))))
-
-(pretty-print (map (lambda (func)
- (get-clm-proto func))
- (map primitive-eval
- (remove (lambda (name)
- (not (defined? name)))
- all-clm-constructor-names))))
-
-(get-clm-proto make-all-pass)
-
-
-
-
-
-
-(define a (read fd))
-(load filename)
-
-(substring "abcd" 1 2)
-
-(begin read-string)
-
-(define-stalin-ec <void*> make_oscil_ (lambda ((<float> a)
- (<float> b))
- (return (mus_make_oscil a b))))
-
-(define-stalin-macro (make-oscil :key
- (frequency *clm-default-frequency*)
- (initial-phase 0.0)
- freq)
- `(make_oscil_ ,(or freq frequency) ,initial-phase))
-
-(define-stalin-ec <float> oscil_ (lambda ((<void*> a)
- (<float> b)
- (<float> c))
- (return (mus_oscil (cast <mus_any*> a) b c))))
-
-(define-stalin-macro (oscil os :key (fm-input 0.0) (pm-input 0.0))
- `(oscil_ ,os ,fm-input ,pm-input))
-
-
-(stalin-macroexpand '(make-oscil :frequency 50 :initial-phase 4))
-(stalin-macroexpand '(make-oscil :frequency 440))
-(generate-stalin-code0 '((make-oscil :frequency 50 :initial-phase 4)))
-
-(define (quick-fib n)
- (<rt-stalin>
- (debug (number->string
- (let fib ((n ,n))
- (if (< n 2)
- n
- (+ (fib (- n 1))
- (fib (- n 2)))))))))
-
-(quick-fib 40)
-
-(define-stalin my-sqrt (foreign-procedure (float) float "sqrtf"))
-(pretty-print (generate-stalin-code0 '((display (my-sqrt 50)))))
-
-(<rt-stalin>
- (spawn
- (display (my-sqrt 50))))
-
-!#
-
-;; clm constructors
-;;
-;; This is just a quick get-up-and-running implementation. More work is needed.
-(for-each (lambda (clm-def)
- (define (to-symbol s) (if (symbol? s) s (keyword->symbol s)))
- (let* ((name (car clm-def)) ;; make-oscil
- (gen-name (string->symbol (substring (symbol->string name) 5 (string-length (symbol->string name))))) ;; oscil / all-pass
- (gen-c-name (string->symbol (list->string (map (lambda (c) (if (char=? c #\-) #\_ c)) (string->list (symbol->string gen-name)))))) ;; oscil / all_pass
- (args (remove (lambda (arg) (equal? :optional arg)) (cdr clm-def)))
- (typedefaults (map (lambda (arg)
- (define name #f)
- (define default #f)
- (cond ((and (pair? arg)
- (null? (cdr arg)))
- (set! name (to-symbol (car arg))))
- ((pair? arg)
- (set! name (to-symbol (car arg)))
- (set! default (cadr arg)))
- (else
- (set! name (to-symbol arg))))
- (let ((type (cond ((memq name '(size fft-size max-size type))
- '<int>)
- ((memq name '(initial-contents))
- '<void*>)
- (else
- '<float>))))
- (set! default (or default
- (case type
- ((<int>) 0)
- ((<void*>) ''(get_NULL_))
- ((<float>) 0.0))))
- (list name type default)))
- args))
- (names (map car typedefaults))
- (types (map cadr typedefaults))
- (defaults (map caddr typedefaults))
- (argnames (map (lambda x (rt-gensym2)) (iota (length args))))
- (fixed-args-list (map (lambda (default arg)
- (let ((argname #f))
- (if (eq? name 'make-comb)
- (c-display default arg))
- (cond ((pair? arg)
- (begin
- (set! argname (car arg))
- (if (not (null? (cdr arg)))
- (set! default (primitive-eval (cadr arg))))))
- ((equal? :max-size arg)
- (set! argname arg)
- (set! default -1))
- (else
- (set! argname arg)))
- (if (keyword? argname)
- (set! argname (keyword->symbol argname)))
- (list argname default)))
- defaults
- args))
- )
- (if (eq? name 'make-comb)
- (c-display "fixed args" fixed-args-list))
- (supereval
- (lambda (out)
-
- (out "(define-stalin-ec <void*> make_" gen-c-name "_ (lambda (")
- (for-each (lambda (type arg)
- (out `(,type ,arg)))
- types
- argnames)
- (out ")")
- ;;(c-display "names" names argnames (zip names argnames))
- (if (and (memq 'max-size names)
- (memq 'size names))
- (let ((maxname (cadr (assq 'max-size (zip names argnames))))
- (sizename (cadr (assq 'size (zip names argnames)))))
- (out " (if (== -1 " maxname ") (set! " maxname " " sizename "))")))
- (out "(return (mus_make_" gen-c-name " ")
- (for-each (lambda (arg)
- (out " " arg))
- argnames)
- (out "))))\n")
-
- (out "(define-stalin-macro (" name " :optkey ")
- (for-each (lambda (arg)
- (out arg " "))
- fixed-args-list)
- (out ")\n")
- (out " `(" 'make_ gen-c-name "_ ")
- (for-each (lambda (arg)
- (out "," (car arg) " "))
- fixed-args-list)
- (out "))\n")))))
- clm-constructor-protos)
-#!
-(stalin-macroexpand '(make-comb :scaler 0.742 :size 9601))
-(pretty-print (get-stalin-macro 'make-waveshape))
-(stalin-macroexpand-1 '(make-waveshape))
-(stalin-macroexpand '(make-waveshape))
-(stalin-macroexpand '(make-oscil :frequency 400))
-(stalin-macroexpand '(make-env))
-(pretty-print (get-stalin-macro 'make-waveshape))
-(pretty-print (get-stalin-ec-function 'make_waveshape_))
-(pretty-print (get-stalin-ec-function 'make_oscil_))
-(begin stalin-ec-functions)
-(get-stalin-func 'make_delay_)
-
-(define-stalin-macro (make-waveshape :optkey
- (frequency *clm-default-frequency*)
- (partials (quote (1 1)))
- (size clm-table-size)
- (wave 0) )
- `(make_waveshape_,frequency ,partials ,size ,wave ))
-
-!#
-
-
-(for-each (lambda (clm-gen)
- ;;(c-display "gen" clm-gen)
- (let* ((name (car clm-gen)) ;; oscil
- (c-name (string->symbol (list->string (map (lambda (c) (if (char=? c #\-) #\_ c)) (string->list (symbol->string name)))))) ;; oscil / all_pass
- (args (cadr clm-gen))
- (argnames (map (lambda x (rt-gensym2)) (iota (length args))))
- )
- ;;(c-display (<_> name '_))
- (define-stalin-ec-do '<float> (<_> c-name '_)
- `(lambda ,(cons '(<void*> generator)
- (map (lambda (argname)
- `(<float> ,argname))
- argnames))
- (return (,(<_> 'mus_ c-name) (cast <mus_any*> generator) ,@argnames))))
- ))
- rt-clm-generators)
-
-(define (stalin-internal-split-args args)
- (let* ((gen-args '())
- (con-args (let loop ((args args))
- (cond ((null? args)
- '())
- ((keyword? (car args))
- (append (list (car args)
- (cadr args))
- (loop (cddr args))))
- (else
- (set! gen-args args)
- '())))))
- (list gen-args con-args)))
-
-(for-each (lambda (clm-gen)
- (let* ((name (car clm-gen)) ;; oscil / all-pass
- (c-name (string->symbol (list->string (map (lambda (c) (if (char=? c #\-) #\_ c)) (string->list (symbol->string name)))))) ;; oscil / all_pass
- (args (cadr clm-gen))
- (argnames (map (lambda x (rt-gensym2)) (iota (length args)))))
- (supereval
- (lambda (out)
- (out "(define-stalin-macro (" name "_internal generator ")
- (for-each (lambda (must-arg)
- (out must-arg " "))
- (remove pair? args))
- (when (not (equal? args (remove pair? args)))
- (out ":optkey ")
- (for-each (lambda (opt-arg)
- (out opt-arg " "))
- (%filter pair? args)))
- (out ")\n")
- (out "`(" c-name "_ ,generator ")
- (for-each (lambda (arg)
- (if (pair? arg)
- (out " ," (car arg))
- (out " ," arg)))
- args)
- (out "))")
- (out "(define-stalin-macro (" name " :rest rest :allow-other-keys)")
- (out " (if (or (null? rest)")
- (out " (not (keyword? (car rest))))")
- (out " `(" name "_internal ,@rest)")
- (out " (let ((args (stalin-internal-split-args rest)))")
- (out " `(" name "_internal (co-var ,(rt-gensym) (make-" name " ,@(cadr args)) (get_NULL_) is_NULL) ,@(car args)))))")))))
-
- rt-clm-generators)
-
-#!
-(pretty-print (get-stalin-ec-function 'oscil_))
-(stalin-macroexpand '(oscil gen 3))
-(pretty-print (get-stalin-ec-function 'make_oscil_))
-!#
-
-;; Add the freq argument.
-(define-stalin-macro (make-oscil :optkey
- (frequency *clm-default-frequency*)
- (initial-phase 0.0)
- freq)
- `(make_oscil_ ,(or freq frequency) ,initial-phase))
-
-
-
-(define-stalin-ec <int> irandom (lambda ((<int> high))
- (return (mus_irandom high))))
-
-;; conflict with stdlib/random
-(define-stalin-ec <float> mus_random_ (lambda ((<float> high))
- (return (mus_random high))))
-(define-stalin (random a)
- (mus_random_ a))
-
-(define-stalin (ibetween a b)
- (+ a (irandom (- b a))))
-(define-stalin (between a b)
- (+ a (random (- b a))))
-
-
-
-;;;;; vct (quick up-and-running. More work needed)
-
-(define-stalin-ec <void*> rt_alloc_vct
- (lambda ((<int> length))
- (let* ((ret <vct-*> (tar_alloc_atomic heap
- (+ (sizeof <vct>)
- (* (sizeof <float>) length))))
- (floats <float-*> (cast <float-*> (+ ret 1))))
- (set! ret->length length)
- (set! ret->data floats)
- (return ret))))
-
-(define-stalin (make-vct len)
- (rt_alloc_vct len))
-
-(define-stalin-ec <void> rt_vct_set (lambda ((<void*> vvct)
- (<int> pos)
- (<float> val))
- (<vct-*> das_vct (cast <vct-*> vvct))
- (set! das_vct->data[pos] val)))
-(define-stalin (vct-set! vct pos val)
- (rt_vct_set vct pos val))
-
-
-(define-stalin-ec <float> rt_vct_ref (lambda ((<void*> vvct)
- (<int> pos))
- (return "((vct*)vvct)->data[pos]")))
-(define-stalin (vct-ref vct pos)
- (rt_vct_ref vct pos))
-
-
-(define-stalin-macro (vct . values)
- (define len (length values))
- (define vct (rt-gensym))
- `(let ((,vct (make-vct ,len)))
- ,@(map (lambda (i val)
- (if (number? val)
- (set! val (exact->inexact val)))
- `(vct-set! ,vct ,i ,val))
- (iota len)
- values)
- ,vct))
-
-(define-stalin (vct . values)
- (let ((vct (make-vct values))
- (i -1))
- (for-each (lambda (val)
- (vct-set! vct (inc! i 1) val))
- values)
- vct))
-
-
-
-;;;;; env (quick up-and-running. More work needed)
-
-(define-stalin-ec <void*> rt_make_env (lambda ((<void*> vvct)
- (<int> duration))
- (<vct*> das_vct (cast <vct-*> vvct))
- (<void*> ret (mus_make_env das_vct->data
- (/ das_vct->length 2)
- 1.0 0 1.0 0
- duration ;; end
- NULL))
- (when (== NULL ret)
- (myerror (string "mus_make_env returned NULL")))
- (return ret)))
-
-
-(define-stalin (make-env-do data dur)
- (define vct (make-vct (length data)))
- (define i -1)
- (for-each (lambda (val)
- (vct-set! vct (inc! i 1) val))
- data)
- (rt_make_env vct dur))
-
-(define-stalin (make-env-do-pairs data dur)
- (define vct (make-vct (* 2 (length data))))
- (define i -1)
- (for-each (lambda (val)
- (vct-set! vct (inc! i 1) (car val))
- (vct-set! vct (inc! i 1) (cadr val)))
- data)
- (rt_make_env vct dur))
-
-(define-stalin (make-env-parse-data-at-runtime data dur)
- (if (pair? (car data))
- (make-env-do-pairs data dur)
- (make-env-do data dur)))
-
-(define-stalin-macro (make-env-constant-data data dur)
- `(rt_make_env (vct ,@(flatten data)) ,dur))
-
-(define-stalin-macro (make-env data :optkey duration dur end)
- (define das-dur (or (and duration `(infix-s ,duration))
- dur
- end
- 0))
- (let ()
- (define das-data (stalin-macroexpand data))
- (cond ((not (pair? das-data))
- `(make-env-parse-data-at-runtime ,das-data ,das-dur))
- ((eq? 'quote (car das-data))
- `(make-env-constant-data ,(cdr das-data) ,das-dur))
- (else
- `(make-env-parse-data-at-runtime ,das-data ,das-dur)))))
-
-#!
-(stalin-macroexpand '(make-env `((0 0)(,a 1)(,(+ a d) ,s)) :dur (+ a d)))
-(stalin-macroexpand '(make-env `((,a 1))))
-
-(stalin-macroexpand '(make-env `((0 ,a))))
-
-(make-env '(1 2 3))
-(make-env (list a b c d))
-(make-env )
-
-(pretty-print (stalin-macroexpand '(make-env '((0 1) (2 4)) :dur 900)))
-(pretty-print (stalin-macroexpand '(make-env `(aiai 2 3) :dur 9)))
-
-(<rt-stalin>
- (define das-env (make-env '(0 0.5 1 1) :end 5:-ms))
- (debug (number->string (inexact->exact (floor (* 1000000.0 (env das-env))))))
- (debug (number->string (inexact->exact (floor (* 1000000.0 (env das-env))))))
- (debug (number->string (inexact->exact (floor (* 1000000.0 (env das-env))))))
- ;;(debug (number->string (env das-env))))
-
- )
-!#
-
-(define-stalin-macro (hz->radians hz)
- (if (number? hz)
- (* hz (/ (* pi 2) (-> *rt-engine* samplerate)))
- `(* ,hz ,(/ (* pi 2) (-> *rt-engine* samplerate)))))
-
-
-
-
-;;;;; Alsa midi
-
-;; midi-to-freq made by looking at the pd source
-(define-stalin (midi-to-freq freq)
- (cond ((<= freq 0) 0)
- ((> freq 135) 20000)
- (else
- (* 8.17579891564 (exp (* .0577622650 freq))))))
-
-(define-stalin midi->hz midi-to-freq)
-
-(define-stalin (midi->radians midi)
- (hz->radians (midi->hz midi)))
-
-
-(add-stalin-ec 'midi_eventnum '(<int> midi_eventnum 0))
-(add-stalin-ec 'midi_control '(<int> midi_control[500] {0}))
-(add-stalin-ec 'midi_data1 '(<int> midi_data1[500] {0}))
-(add-stalin-ec 'midi_data2 '(<int> midi_data2[500] {0}))
-
-(define-stalin-ec <void> rt_receive_midi_callback
- (lambda ((<void*> aNULL)
- (<int> control)
- (<int> data1)
- (<int> data2))
- (when (== midi_eventnum 500)
- (rt_debug (string "Error, midi buffer full. Event lost. (this is not supposed to happen)\\n")) ;; should be impossible.
- return)
- (set! midi_control[midi_eventnum] control)
- (set! midi_data1[midi_eventnum] data1)
- (set! midi_data2[midi_eventnum] data2)
- midi_eventnum++))
-
-(add-stalin-ec-binding 'rt_receive_midi_callback 'midi_eventnum)
-(add-stalin-ec-binding 'rt_receive_midi_callback 'midi_control)
-(add-stalin-ec-binding 'rt_receive_midi_callback 'midi_data1)
-(add-stalin-ec-binding 'rt_receive_midi_callback 'midi_data2)
-
-(define-stalin-ec <int> _rt_receive_midi
- (lambda ()
- (rt_receive_midi NULL block_time
- (cast <snd_seq_t*> ,(<-> (number->string (cadr *rt-midi*)) "UL"))
- rt_receive_midi_callback)
- (return midi_eventnum)))
-
-(add-stalin-ec-binding '_rt_receive_midi 'rt_receive_midi_callback)
-(add-stalin-ec-binding '_rt_receive_midi 'midi_eventnum)
-(add-stalin-ec-binding '_rt_receive_midi 'block_time)
-
-(define-stalin-ec <int> _rt_get_midi_control
- (lambda ((<int> num))
- (return midi_control[num])))
-(add-stalin-ec-binding '_rt_get_midi_control 'midi_control)
-
-(define-stalin-ec <int> _rt_get_midi_data1
- (lambda ((<int> num))
- (return midi_data1[num])))
-(add-stalin-ec-binding '_rt_get_midi_data1 'midi_data1)
-
-(define-stalin-ec <int> _rt_get_midi_data2
- (lambda ((<int> num))
- (return midi_data2[num])))
-(add-stalin-ec-binding '_rt_get_midi_data2 'midi_data2)
-
-(define-stalin-ec <void> _rt_reset_midi
- (lambda ()
- (set! midi_eventnum 0)))
-(add-stalin-ec-binding '_rt_reset_midi 'midi_eventnum)
-
-(define-stalin-ec <void> _rt_snatch_midi
- (lambda ((<int> num))
- (set! midi_control[num] -1)))
-(add-stalin-ec-binding '_rt_snatch_midi 'midi_control)
-
-(define-stalin-ec <void> _rt_unsnatch_midi
- (lambda ((<int> num)
- (<int> control))
- (set! midi_control[num] control)))
-(add-stalin-ec-binding '_rt_unsnatch_midi 'midi_control)
-
-(define-stalin (_rt-is-midi-snatched? control)
- (= -1 control))
-
-
-(define-stalin _curr-midi-control 0)
-(define-stalin _curr-midi-data1 0)
-(define-stalin _curr-midi-data2 0)
-
-
-(define-stalin _num-waiting-midi-messages 0)
-
-(define-stalin _last-midi-receive-time -1)
-
-
-;; wait-midi/wait-midi-do is a bit messy. I had big problems
-;; making it produce code which stalin was able to tail-optimize
-;; without using -fully-convert-to-CPS
-(define-stalin (wait-midi-do check body)
-
- (when (not (= _time _last-midi-receive-time))
- ;;(lowlevel_debug2 "time: %d %d" _time _last-midi-receive-time)
- (_rt_reset_midi)
- (set! _num-waiting-midi-messages (_rt_receive_midi))
- (set! _last-midi-receive-time _time))
-
- (let loop ((num 0))
- (cond ((< num _num-waiting-midi-messages)
- (let ((control (_rt_get_midi_control num)))
- (cond ((not (_rt-is-midi-snatched? control))
- (_rt_snatch_midi num)
- (let ((data1 (_rt_get_midi_data1 num))
- (data2 (_rt_get_midi_data2 num)))
- (cond ((check control data1 data2)
- (set! _curr-midi-control control)
- (set! _curr-midi-data1 data1)
- (set! _curr-midi-data2 data2)
- (body control data1 data2)
- #t) ;; Return val
- (else
- (_rt_unsnatch_midi num control)
- (loop (1+ num))))))
- (else
- (loop (1+ num))))))
- (else
- #f)))) ;; Return val
-
-
-(define-stalin-macro (wait-midi :key
- (command #t)
- note
- :rest rest)
- (define control (rt-gensym "control"))
- (define data1 (rt-gensym "data1"))
- (define data2 (rt-gensym "data2"))
- (define return (rt-gensym "return-from-midi"))
- (define code rest)
- `(call/cc
- (lambda (,return)
- (let loop ()
- (if (wait-midi-do (lambda (,control ,data1 ,data2)
- ,(cond ((eq? command 'note-on)
- `(_midi-play? ,control ,data2))
- ((eq? command 'note-off)
- `(and (_midi-stop? ,control ,data2)
- (= ,data1 ,note)))))
- (lambda (_curr-midi-control
- _curr-midi-data1
- _curr-midi-data2)
- ,@code))
- (,return #t)
- (wait-synch 1:-b
- (loop)))))))
-
-
-
-(define-stalin-macro (_midi-play? :optkey
- (control '_curr-midi-control)
- (data2 '_curr-midi-data2))
- `(and (>= ,control #x90)
- (< ,control #xa0)
- (> ,data2 0)))
-
-(define-stalin-macro (midi-play?)
- `(_midi-play?))
-
-(define-stalin-macro (_midi-stop? :optkey
- (control '_curr-midi-control)
- (data2 '_curr-midi-data2))
- `(and (>= ,control #x80)
- (< ,control #xa0)
- (or (< ,control #x90)
- (= 0 ,data2))))
-
-;;(stalin-macroexpand '(_midi-stop? 50 60))
-
-(define-stalin-macro (midi-stop?)
- `(_midi-stop?))
-
-(define-stalin-macro (midi-note)
- '_curr-midi-data1)
-(define-stalin-macro (_midi-vol :optkey (data2 '_curr-midi-data2))
- `(/ (exact->inexact ,data2) 128.0))
-(define-stalin-macro (midi-vol)
- `(_midi-vol))
-
-#!
-(<rt-stalin>
- (_rt_receive_midi))
-
-!#
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; coroutines
-
-(define-stalin-struct soundholder
- :sub-sounds '() ;; A list of coroutines running in sound mode
- )
-
-(define coroutine-slots
- (let ()
- (define ret '(:time 0
- :stop-me #f
- :continuation neverending-scheduling
- :soundholder (=> coroutine:_current-coroutine :soundholder)
- :parent _sound-coroutine ;; Only used when traversing the sound graph. Allways points to a sound coroutine.
- :soundfunc (lambda ()) ;; Not a continuation.
- :bus (=> coroutine:_current-coroutine :bus)
- :is-sound #f
- ))
- (primitive-eval `(define-stalin-struct coroutine ,@ret))
- ret))
-
-(define extra-coroutine-slots '())
-
-(define (reset-coroutine-struct!)
- (c-display "reset-coroutine-struct!")
- (set! extra-coroutine-slots '())
- (primitive-eval `(define-stalin-struct coroutine ,@coroutine-slots)))
-
-(define (redefine-coroutine-struct!)
- (c-display "coroutine struct redefined" extra-coroutine-slots)
- (primitive-eval `(define-stalin-struct coroutine
- ,@coroutine-slots
- ,@(let loop ((slots extra-coroutine-slots))
- (if (null? slots)
- '()
- (let ((slot (car slots)))
- (append (list (symbol->keyword (car slot))
- (cadr slot))
- (loop (cdr slots))))))))
- #t)
-
-(define (add-coroutine-slot name default)
- (c-display "add-coroutine-slot" name default)
- (set! name (keyword->symbol name))
- (if (assq name extra-coroutine-slots)
- (when (not (equal? default (cadr (assq name extra-coroutine-slots))))
- (c-display "WARNING. Default value for " (symbol->keyword name) " is redefined.")
- (set-cdr! (assq name extra-coroutine-slots)
- (list default)))
- (push! (list name default) extra-coroutine-slots)))
-
-#!
-(define-stalin-macro (hepp)
- (add-coroutine-slot :testing 50)
- `(sound (out (random 0.5))))
-(<rt-stalin>
- (hepp))
-!#
-
-
-
-;; Make sure gcc does tail call optimization.
-(define-stalin (neverending-scheduling)
- (_run-scheduler neverending-scheduling))
-
-(define-stalin _coroutine-dummy (make-coroutine :soundholder _main-soundholder :bus _main-bus :parent #f))
-
-(define-stalin _current-coroutine
- (make-coroutine :continuation
- (lambda ()
- (let loop ()
-
- (if (and (= _queue-size 1)
- (let ((soundholder (=> coroutine:_sound-coroutine :soundholder)))
- (null? (=> soundholder :sub-sounds))))
- (remove-me))
-
- (_block_ready)
-
- (set! _block-time (_get_block_time))
- (set! _time (+ _block-time
- (_get_startframe)))
- (insert-coroutine-in-queue! _current-coroutine
- (+ _block-time
- (_get_endframe))
- 0)
- (for-each clear-bus _all-buses)
-
- (_run-scheduler loop)))
- :soundholder (=> coroutine:_sound-coroutine :soundholder)
- :bus _main-bus))
-
-
-(define-stalin _next-scheduled-time 0)
-
-(define-stalin _queue-size 0)
-(define-stalin _queue (make-vector ,*stalin-queue-max-size* _coroutine-dummy))
-
-
-(define-stalin (get-first-coroutine-in-queue)
- (define ret (vref 1 _queue))
- (define size (1- _queue-size))
-
- (define last (vref _queue-size _queue))
- (define last-time (=> coroutine:last :time))
- (define i 1)
- (define child 0)
- (define got-it #f)
-
- (inc! _queue-size -1)
-
- ;; Code below is a common binary heap "delete min" operation.
- (while (and (not got-it)
- (<= (<< i 1) size))
- (set! child (<< i 1))
- (if (and (!= child size)
- (< (=> :coroutine(vref (1+ child) _queue) :time)
- (=> :coroutine(vref child _queue) :time)))
- (inc! child 1))
- (if (> last-time (=> :coroutine(vref child _queue) :time))
- (begin
- (vset! i _queue (vref child _queue))
- (set! i child))
- (set! got-it #t)))
-
- (vset! i _queue last)
-
- (set! _next-scheduled-time (>> (=> :coroutine(vref 1 _queue) :time) 2))
-
- (set! (=> coroutine:ret :time)
- (>> (=> coroutine:ret :time)
- 2))
-
- ret)
-
-
-
-;; insert_coroutine_in_queue (O(log n) efficiency)
-;; ************************************************
-;;
-;; Returns false in case the priority queue is full.
-(define-stalin (insert-coroutine-in-queue! coroutine time priority)
-
- (define queue _queue)
-
- (if (>= _queue-size
- (- ,*stalin-queue-max-size* 2))
- (error "coroutine queue full. Increase *stalin-queue-max-size* to increase the queue size."))
-
- (inc! _queue-size 1)
-
- ;; Not too sure about this one. Maybe it can cover up bugs.
- ;;(if (< time 0)
- ;; (set! time 0))
-
- (if (or (= 1 _queue-size)
- (< time _next-scheduled-time))
- (set! _next-scheduled-time time))
-
- ;; Add priority info to the time attribute. ("priority" is a 2 bit integer)
- (set! time (<< time 2))
- (set! time (+ time priority))
-
- (set! (=> coroutine :time) time)
-
- ;; Code below is a common binary heap "insert" operation.
- (let* ((i _queue-size)
- (newi (>> i 1)))
- (while (> (=> :coroutine(vref newi queue) :time)
- time)
- (vset! i queue (vref newi queue))
- (set! i newi)
- (set! newi (>> newi 1)))
-
- (vset! i queue coroutine)))
-
-
-
-;; How about (get-time) / (set-time! n) ?
-(define-stalin (time)
- _time)
-
-(define-stalin (setter!-time new-time)
- (set! _time new-time))
-
-(define-stalin (_switch-to-coroutine coroutine _continuation)
- (set! (=> coroutine:_current-coroutine :continuation) _continuation)
- (set! _current-coroutine coroutine)
- (set! _time (=> coroutine :time))
- ((=> coroutine :continuation)))
-
-(define-stalin (_run-scheduler _continuation)
- (let ((next (get-first-coroutine-in-queue)))
- (cond ((=> coroutine:next :stop-me)
- (_run-scheduler _continuation))
- ((not (eq? next _current-coroutine)) ;; Small optimization only.
- (_switch-to-coroutine next _continuation))
- (else
- (set! _time (=> coroutine:next :time))
- (_continuation)))))
-
-(define-stalin (yield-do _continuation)
- (insert-coroutine-in-queue! _current-coroutine
- _time
- 2) ;; lower priority than wait, but higher than sound.
- (_run-scheduler _continuation))
-
-(define-stalin-macro (yield . code)
- (if (null? code)
- `(call/cc (lambda (return)
- (yield-do (lambda ()
- (return #t)))))
- `(yield-do (lambda ()
- ,@code
- (neverending-scheduling)
- ))))
-
-
-
-(define-stalin (wait-do n _continuation)
- (inc! _time (max 0 (floor (inexact->exact n))))
- (if (>= _time ;; Don't want to schedule unnecessarily.
- _next-scheduled-time)
- (begin
- (insert-coroutine-in-queue! _current-coroutine
- _time
- 1) ;; higher priority than yielded coroutines, but less than main.
- (_run-scheduler _continuation))
- (_continuation)))
-
-(define-stalin-macro (wait n . code)
- (define return (rt-gensym "return"))
- (if (null? code)
- `(call/cc (lambda (,return)
- (wait-do ,n (lambda ()
- (,return #t)))))
- `(wait-do ,n (lambda ()
- ,@code
- (neverending-scheduling)
- ))))
-
-(define-stalin-macro (wait-synch n . code)
- (define das-n (rt-gensym "n"))
- `(let* ((,das-n ,n))
- (wait (- ,das-n (remainder _time ,das-n))
- ,@code)))
-
-
-(define-stalin (spawn-do time thunk)
- (let ((coroutine (make-coroutine :continuation thunk)))
- (insert-coroutine-in-queue! coroutine
- time
- 1
- )
- coroutine))
-
-(define-stalin-macro (spawn :key (wait 0) :rest code)
- `(spawn-do ,(if (and (number? wait)
- (= 0 wait))
- '_time
- `(+ _time
- (max 0 (inexact->exact (floor ,wait)))))
- (lambda ()
- ,@code
- (neverending-scheduling))))
-
-(define-stalin (stop . coroutine)
- (set! coroutine
- (if (null? coroutine)
- _current-coroutine
- (car coroutine)))
- (set! (=> coroutine :stop-me) #t))
-
-(define-stalin-macro (stop :optkey (coroutine '_current-coroutine))
- `(set! (=> ,(symbol-append 'coroutine: coroutine) :stop-me) #t))
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;; Sound (efficient inner loop)
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-#!
-;; wonder if these are better made manually when needed...
-(define-stalin-macro (sound-iterator)
- '_rt-sound-iterator)
-(define-stalin-macro (sound-duration)
- '_rt-sound-duration)
-!#
-
-;; sound
-;; *****
-
-(define-stalin (_remove-stopped-sounds! soundholder)
- (set! (=> soundholder :sub-sounds)
- (remove! (lambda (sound)
- (=> coroutine:sound :stop-me))
- (=> soundholder :sub-sounds))))
-
-
-(define-stalin (_sound-runner soundholder)
- (define coroutine _current-coroutine)
- (define time _time)
-
- (_remove-stopped-sounds! soundholder)
-
- (for-each (lambda (coroutine)
- (when (not (=> coroutine :stop-me))
- (set! _current-coroutine coroutine)
- (set! _time (=> coroutine :time))
- ((=> coroutine :soundfunc))
- (set! (=> coroutine :time) _time)))
- (=> soundholder :sub-sounds))
-
- (set! _current-coroutine coroutine)
- (set! _time time))
-
-(define-stalin _main-soundholder (make-soundholder))
-
-(define-stalin (_main-sound-runner)
- (_sound-runner _main-soundholder)
- (bus_to_soundcard_ _main-bus)
- (insert-coroutine-in-queue! _current-coroutine
- _next-scheduled-time
- 3) ;; sound priority. (lowest)
- (_run-scheduler _main-sound-runner))
-
-;; The root sound coroutine.
-;; The only coroutine running with priority 3.
-;; That that it can not contain data from _current-coroutine because of circular dependency.
-(define-stalin _sound-coroutine
- (make-coroutine :continuation _main-sound-runner
- :soundholder _main-soundholder
- :bus _main-bus))
-
-(define-stalin-macro (sound-internal_ :rest code)
- `(_add-sound (lambda ()
- (while (< _time
- _next-scheduled-time)
- ,@code
- (inc! _time 1)))))
-
-(define-stalin (_add-sound thunk)
- (define coroutine _current-coroutine)
- (define soundholder (=> coroutine :soundholder))
- (define sound (make-coroutine :time _time ;;:continuation thunk
- :soundholder (make-soundholder)
- :parent (if (=> coroutine :is-sound)
- coroutine
- (=> coroutine :parent))
- :soundfunc thunk
- :bus (=> coroutine :bus)
- :is-sound #t))
- (set! (=> soundholder :sub-sounds)
- (cons sound (=> soundholder :sub-sounds)))
-
- sound)
-
-
-#!
-;; (sound-coroutines couldn't be made into continuations because it became
-;; too hard to avoid call/cc then.)
-
-;; break out of a "sound" block.
-(define-stalin (break-sound)
- (define coroutine _current-coroutine)
- (if ,*stalin-add-health-checks*
- (if (not (=> coroutine :is-sound))
- (error "break-sound: Trying to break out of a non-sound block.")))
- (inc! _time 1)
- (set! (=> coroutine :time) _time)
- (set! _current-coroutine (=> coroutine :parent))
- (_sound-runner))
-
-;; Jump to start of a "sound" block.
-(define-stalin (continue-sound)
- (define coroutine _current-coroutine)
- (if ,*stalin-add-health-checks*
- (if (not (=> coroutine :is-sound))
- (error "continue-sound: Trying to continue a non-sound block.")))
- ((=> coroutine :continuation)))
-!#
-
-
-(define-stalin-macro (sound :key
- dur
- duration
- (while #t)
- :rest code)
- (define sound (if (eq? while #t)
- `(sound-internal_
- ,@code)
- (let ((soundname (rt-gensym "sound"))
- (loop (rt-gensym "loop")))
- `(let ((,soundname (sound-internal_
- ,@code)))
- (spawn
- (let ,loop ()
- (cond (,while
- (wait-synch 1:-b)
- (,loop))
- (else
- (stop ,soundname)))))
- ,soundname))))
-
- (if (or duration dur)
- (let ((soundname (rt-gensym "sound")))
- `(let ((,soundname ,sound))
- (spawn
- (wait (inexact->exact (floor ,(or dur duration))))
- (debug "stopping it")
- (stop ,soundname))
- ,soundname))
- sound))
-
-
-(define-stalin-macro (block :key
- dur
- duration
- :rest code)
- (define sound (rt-gensym "sound"))
- (if (or duration dur)
- `(let ((,sound (sound-internal_
- ,@code)))
- (wait (inexact->exact (floor ,(or dur duration))))
- (stop ,sound)
- ,sound)
- `(begin
- (sound-internal_
- ,@code)
- (neverending-scheduling))))
-
-#!
-
-(<rt-stalin>
- (define o (make-oscil :freq 440))
- (block :dur 5:-s
- (out (oscil o)))
- (define o (make-oscil :freq 540))
- (block :dur 2:-s
- (out (oscil o))))
-
-(<rt-stalin>
- (spawn
- (define phase 0.0)
- (sound
- (out (* 0.2 (sin phase)))
- (inc! phase 0.062)))
- (let loop ((i 1))
- (when (< i 200)
- (spawn
- (define phase 0.0)
- (define phaseinc (+ 0.020 (/ i 40)))
- (sound
- (out (* 0.002 (sin phase)))
- (inc! phase phaseinc)))
- (loop (1+ i)))))
-
-:wait 2::s
-:wait (^s 2)
-:wait s::2
-:wait 2:s
-:wait 2:s
-:wait 2s
-
-
-
-(pretty-print (generate-stalin-code0 '((get-first-coroutine-in-queue))))
-(pretty-print (generate-stalin-code0 '((spawn
- (debug "hello"))
- (yield)
- (let loop ()
- (_sound_ready)
- (loop)))))
-
-(pretty-print (generate-stalin-code0
- '((define-structure astruct slot1 slot2))))
-
-(pretty-print (macroexpand '(define-stalin-struct astruct :a :b)))
-(define-stalin-struct astruct :a :b)
-
-(pretty-print (generate-stalin-code0
- `((=> astruct :a)
- (set! (=> astruct :a) 90))))
-
-(get-stalin-func 'remove-me)
-(<rt-stalin>
- (define-structure astruct a b)
- (define obj (make-astruct 2 (lambda ()
- (debug "a1"))))
- (set! (=> astruct:obj :b) (lambda ()
- (debug "ai2")))
- ((=> astruct:obj :b))
- (remove-me))
-
-(<rt-stalin>
- (define-structure astruct a b)
- (define obj (make-astruct 2 (lambda ()
- (debug "a1"))))
- (SET-astruct-b! obj (lambda ()
- (debug "ai2")))
- ((astruct-b obj))
- (remove-me))
-
-(every symbol? '(astruct slot1 slot2))
-(length '(astruct slot1 slot2))
-
-(<rt-stalin>
- (spawn
- (debug "a1")
- (yield)
- (debug "a2"))
- (spawn
- (debug "b1")
- (yield)
- (debug "b2")))
-
-
-(stalin-macroexpand '(set! (=> coroutine:_current-coroutine :time) new-time))
-(stalin-macroexpand '(=> coroutine:_current-coroutine :time))
-(stalin-macroexpand '(set! (current-time) 2))
-
-(stalin-macroexpand '(inc! (current-time) 2))
-(fix-stalin-set! (stalin-macroexpand (fix-stalin-set! '(inc! (current-time) 2))))
-(stalin-macroexpand (fix-stalin-set! '(set! (=> coroutine :time) new-time)))
-(stalin-macroexpand (fix-stalin-set! '(set! (=> :coroutine(vref 1 queue) :time) 100)))
-!#
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;; in / out and sound buses ;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;; buses
-
-(define-stalin _all-buses '())
-
-;; clear-bus can be avoided by replacing the old bus with a new and freshly allocated bus. But since the buses are stored
-;; in various places, the bus struct needs to be transformed into a pointer to a pointer, which
-;; is not very nice since it requires two allocations (one of them non-atomic), and could degrade performance in other ways too.
-;; Furthermore, the increased number of garbage collections this could trigger could hurt more than the increased
-;; performance it would give to the audio thread.
-;; On the other hand, it might be necessary to change the _all-buses thing anyway.
-(define-stalin-ec <void> clear_bus_
- (lambda ((<void*> bus))
- (memset bus 0 (* (sizeof <float>) ,*rt-block-size*))))
-
-(define-stalin clear-bus clear_bus_)
-
-(define-stalin-ec <void*> make_bus_
- (lambda ()
- (<void*> bus (tar_alloc_atomic heap (* (sizeof <float>) ,*rt-block-size*)))
- (return bus)))
-
-(define-stalin (make-bus)
- (define bus (make_bus_))
- (push! bus _all-buses))
-
-(define-stalin-ec <float> read_bus_
- (lambda ((<void*> bus)
- (<int> time))
- (return "((float*)bus)[time-block_time]")))
-(define-stalin (read-bus bus)
- (read_bus_ bus _time))
-
-(define-stalin-ec <void> write_bus_
- (lambda ((<void*> bus)
- (<int> time)
- (<float> val))
- (+= "((float*)bus)[time-block_time]" val)))
-
-(define-stalin (write-bus bus val)
- (write_bus_ bus _time val))
-
-
-;; out
-
-(define-stalin (out val)
- (define coroutine _current-coroutine)
- (write-bus (=> coroutine :bus) val))
-
-(define-stalin _main-bus (make-bus))
-
-(define-stalin-ec <void> bus_to_soundcard_
- (lambda ((<void*> bus))
- (<float*> sd2 (+ sounddata ,*rt-block-size*))
- (for-each 0 ,*rt-block-size*
- (lambda (i)
- (set! sounddata[i] "((float*)bus)[i]")))
- (for-each 0 ,*rt-block-size*
- (lambda (i)
- (set! sd2[i] "((float*)bus)[i]")))))
-
-
-;; in
-
-(define-stalin-macro (in :rest code)
- (define this-busk (symbol->keyword (rt-gensym "bus")))
- (define this-soundholderk (symbol->keyword (rt-gensym "soundholder")))
- (add-coroutine-slot this-busk #f)
- (add-coroutine-slot this-soundholderk #f)
-
- `(let ((coroutine _current-coroutine))
- (when (= _time (=> coroutine :time))
-
- (when (not (=> coroutine ,this-busk)) ;; Code inside this 'when' test runs one time only per coroutine
- (set! (=> coroutine ,this-busk) (make-bus))
- (set! (=> coroutine ,this-soundholderk) (make-soundholder))
- (let ((outer-bus (=> coroutine :bus)) ;; dynamic scoping of bus and soundholder.
- (outer-soundholder (=> coroutine :soundholder)))
- (set! (=> coroutine :bus) (=> coroutine ,this-busk))
- (set! (=> coroutine :soundholder) (=> coroutine ,this-soundholderk))
- (spawn
- ,@code)
- (set! (=> coroutine :bus) outer-bus)
- (set! (=> coroutine :soundholder) outer-soundholder)
- ))
-
- (_sound-runner (=> coroutine ,this-soundholderk)))
-
- (read-bus (=> coroutine ,this-busk))
- ))
-
-
-#!
-
-;;example:
-(<rt-stalin>
- (define (osc)
- (define osc (make-osc :freq 440))
- (sound
- (out (oscil osc))))
- (define (set-volume vol dasin)
- (sound
- (out (* vol (in (dasin)))))
- (sound
- (out (set-volume 0.5 (lambda ()
- (osc))))
- )))
-
-
-(define-stalin (midi-synth)
- (while #t
- (wait-midi :command note-on
- (define adsr (make-adsr :a 20:-ms :d 20:-ms :s 0.2 :r 50:-ms))
- (define osc (make-oscil :freq (midi-to-freq (midi-note))))
- (sound
- (define vol (adsr))
- (if vol
- (out (* 0.2 vol (midi-vol) (oscil osc)))
- (stop)))
- (spawn
- (wait-midi :command note-off :note (midi-note)
- (-> adsr stop))))))
-
-(define-stalin (freeverb sound)
- (<faust> :in (vct sound)
- (url "http://faudiostream.cvs.sourceforge.net/viewvc/*checkout*/faudiostream/faust/examples/freeverb.dsp")))
-
-(<rt-stalin>
- (sound
- (out (freeverb (in (midi-synth))))))
-
-
-(define-stalin-macro (freeverb . code)
- `(<faust> :in (vct ,@code)
- (url "http://faudiostream.cvs.sourceforge.net/viewvc/*checkout*/faudiostream/faust/examples/freeverb.dsp")))
-
-(<rt-stalin>
- (sound
- (out (freeverb (in (midi-synth))))))
-
-
-(<rt-stalin>
- (wait 10:-s))
-
-(<rt-stalin>
- (sound (out (random 0.5))))
-
-(rte-silence!)
-
-!#
-
-
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;; Syntax check ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;; this list is copied from the stalin source. (without permission)
-(define stalin-builtin-funcs
- (append '(set! if)
- (map car
- '( (not not)
- (boolean? boolean?)
- (eqv? eqv?)
- (eq? eq?)
- (equal? equal?)
- (pair? pair?)
- (cons cons)
- (car car)
- (cdr cdr)
- (set-car! set-car!)
- (set-cdr! set-cdr!)
- (caar caar)
- (cadr cadr)
- (cdar cdar)
- (cddr cddr)
- (caaar caaar)
- (caadr caadr)
- (cadar cadar)
- (caddr caddr)
- (cdaar cdaar)
- (cdadr cdadr)
- (cddar cddar)
- (cdddr cdddr)
- (caaaar caaaar)
- (caaadr caaadr)
- (caadar caadar)
- (caaddr caaddr)
- (cadaar cadaar)
- (cadadr cadadr)
- (caddar caddar)
- (cadddr cadddr)
- (cdaaar cdaaar)
- (cdaadr cdaadr)
- (cdadar cdadar)
- (cdaddr cdaddr)
- (cddaar cddaar)
- (cddadr cddadr)
- (cdddar cdddar)
- (cddddr cddddr)
- (null? null?)
- (list? list?)
- (list list)
- (list-length list-length)
- (length length)
- (sublist sublist)
- (sub sub)
- (list-append list-append)
- (append append)
- (list-reverse list-reverse)
- (reverse reverse)
- (list-tail list-tail)
- (list-ref list-ref)
- (ref ref)
- (memq memq)
- (memv memv)
- (member member)
- (assq assq)
- (assv assv)
- (assoc assoc)
- (list-set! list-set!)
- (ref! ref!)
- (list-fill! list-fill!)
- (fill! fill!)
- (list-copy list-copy)
- (copy copy)
- (symbol? symbol?)
- (symbol->string symbol->string)
- (string->uninterned-symbol string->uninterned-symbol)
- (string->symbol string->symbol)
- (number? number?)
- (complex? complex?)
- (real? real?)
- (rational? rational?)
- (integer? integer?)
- (exact? exact?)
- (inexact? inexact?)
- (= =)
- (< <)
- (> >)
- (<= <=)
- (>= >=)
- (zero? zero?)
- (positive? positive?)
- (negative? negative?)
- (odd? odd?)
- (even? even?)
- (max max)
- (min min)
- (+ +)
- (* *)
- (- -)
- (/ /)
- (abs abs)
- (quotient quotient)
- (remainder remainder)
- (modulo modulo)
- (gcd gcd)
- (lcm lcm)
- (<< <<)
- (>> >>)
- (bitwise-not bitwise-not)
- (bitwise-and bitwise-and)
- (bitwise-or bitwise-or)
- (bitwise-xor bitwise-xor)
- (floor floor)
- (ceiling ceiling)
- (truncate truncate)
- (round round)
- (exp exp)
- (log log)
- (sin sin)
- (cos cos)
- (tan tan)
- (asin asin)
- (acos acos)
- (atan atan)
- (sqrt sqrt)
- (expt expt)
- (exact->inexact exact->inexact)
- (inexact->exact inexact->exact)
- (number->string number->string)
- (string->number string->number)
- (char? char?)
- (char=? char=?)
- (char<? char<?)
- (char>? char>?)
- (char<=? char<=?)
- (char>=? char>=?)
- (char-ci=? char-ci=?)
- (char-ci<? char-ci<?)
- (char-ci>? char-ci>?)
- (char-ci<=? char-ci<=?)
- (char-ci>=? char-ci>=?)
- (char-alphabetic? char-alphabetic?)
- (char-numeric? char-numeric?)
- (char-whitespace? char-whitespace?)
- (char-upper-case? char-upper-case?)
- (char-lower-case? char-lower-case?)
- (char->integer char->integer)
- (integer->char integer->char)
- (char-upcase char-upcase)
- (char-downcase char-downcase)
- (string? string?)
- (make-string make-string)
- (string string)
- (string-length string-length)
- (string-ref string-ref)
- (string-set! string-set!)
- (string=? string=?)
- (string-ci=? string-ci=?)
- (string<? string<?)
- (string>? string>?)
- (string<=? string<=?)
- (string>=? string>=?)
- (string-ci<? string-ci<?)
- (string-ci>? string-ci>?)
- (string-ci<=? string-ci<=?)
- (string-ci>=? string-ci>=?)
- (substring substring)
- (string-append string-append)
- (string->list string->list)
- (list->string list->string)
- (string-copy string-copy)
- (string-fill! string-fill!)
- (string-reverse string-reverse)
- (vector? vector?)
- (make-vector make-vector)
- (make-displaced-vector make-displaced-vector)
- (vector vector)
- (vector-length vector-length)
- (vector-ref vector-ref)
- (vector-set! vector-set!)
- (vector->list vector->list)
- (list->vector list->vector)
- (vector-fill! vector-fill!)
- (subvector subvector)
- (vector-append vector-append)
- (vector-reverse vector-reverse)
- (vector-copy vector-copy)
- (procedure? procedure?)
- (apply apply)
- (map map)
- (for-each for-each)
- (force force)
- (call-with-current-continuation call-with-current-continuation)
- (call-with-input-file call-with-input-file)
- (call-with-output-file call-with-output-file)
- (input-port? input-port?)
- (output-port? output-port?)
- (current-input-port current-input-port)
- (current-output-port current-output-port)
- (with-input-from-file with-input-from-file)
- (with-output-to-file with-output-to-file)
- (open-input-file open-input-file)
- (open-output-file open-output-file)
- (close-input-port close-input-port)
- (close-output-port close-output-port)
- (read read)
- (read-char read-char)
- (peek-char peek-char)
- (eof-object? eof-object?)
- (char-ready? char-ready?)
- (write write)
- (display display)
- (newline newline)
- (write-char write-char)
- (define-write-method define-write-method)
- (define-display-method define-display-method)
- (panic panic)
- (pointer? pointer?)
- (integer->string integer->string)
- (integer->input-port integer->input-port)
- (integer->output-port integer->output-port)
- (integer->pointer integer->pointer))))
- )
-
-
-(define* (check-stalin-syntax code :key (varlist '()))
- (c-display "checking" code)
- (schemecodeparser code
- :symbolfunc (lambda (sym)
- (c-display "sym" sym (schemecodeparser-get-varlist))
- (when (not (memq sym (schemecodeparser-get-varlist)))
- (c-display "Error. Unknown variable " sym ".")
- (throw 'compilation-error)))
- :elsefunc (lambda (expr)
- (define varlist (schemecodeparser-get-varlist))
- (c-display expr varlist)
- (when (and (not (assq (car expr) stalin-funcs))
- (not (memq (car expr) varlist))
- (not (memq (car expr) stalin-builtin-funcs)))
- (c-display (schemecodeparser-get-varlist))
- (c-display "Error. Unknown function " (car expr) "in expression" expr)
- (throw 'compilation-error))
- (when (memq (car expr)
- '(display newline write-char panic write read
- with-input-from-file
- with-output-from-file
- open-input-file
- open-output-file
- close-input-port
- close-output-port
- eof-object?))
- (c-display "Warning." (car expr) "is not a realtime safe function.\n"
- "(the function \"debug\" can be used instead of display. See manual.)"))
- (if (not (eq? 'foreign-procedure (car expr)))
- (for-each (lambda (expr)
- (check-stalin-syntax expr :varlist varlist))
- (cdr expr))))))
-
-
-(define (display-stalin-error errormessage)
- (apply (lambda (filename linenumber charnumber error)
- (set! linenumber (string->number linenumber))
- (set! charnumber (string->number charnumber))
- (let ((i 1)
- (c 0))
- (call/cc
- (lambda (return)
- (for-each-line-in-file filename
- (lambda (line)
- (when (and (> i (- linenumber 6))
- (< i (+ linenumber 5)))
- (define prestring (<-> (cond ((< i 10) " ")
- ((< i 100) " ")
- (else ""))
- (number->string i)
- ": "))
- (c-display (<-> prestring line))
- (when (= i linenumber)
- (c-display (<-> (make-string (+ (string-length prestring)
- (- charnumber c))
- #\space)
- "^"))))
- (inc! i 1)
- (if (> i (+ linenumber 5))
- (return line))
- (inc! c (1+ (string-length line)))))))))
- (string-split errormessage #\:)))
-#!
-(display-stalin-error "/tmp/filePpYCDj.scm:14:323:Unbound variable")
-!#
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;; Extra coroutine variables ;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-(define-stalin-macro (co-var arg1 :optkey arg2 default-false check-if-default-is-false-func)
- (define ret (rt-gensym))
- (define name #f)
- (define val #f)
- (cond (arg2
- (set! name arg1)
- (set! val arg2))
- (else
- (set! name (rt-gensym))
- (set! val arg1)))
- (c-display arg1 arg2)
- (c-display name val)
- (cond (default-false
- (add-coroutine-slot (symbol->keyword name) default-false)
- `(cond ((,check-if-default-is-false-func ,name)
- (let ((,ret ,val))
- (set! ,name ,ret)
- ,ret))
- (else
- ,name)))
- (else
- (add-coroutine-slot (symbol->keyword name) val)
- name)))
-
-#!
-!#
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;; Generate stalin code ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define stalin-noreturn-funcs '())
-
-(define (find-stalin-expr-outcomes expr)
- ;;(c-display "find" expr)
- (cond ((symbol? expr)
- (list expr))
- ((not (pair? expr))
- (list 'nonsymbol))
- ((eq? 'if (car expr))
- (if (= 3 (length expr))
- (cons 'undefined
- (find-stalin-expr-outcomes (nth 2 expr)))
- (append (find-stalin-expr-outcomes (nth 2 expr))
- (find-stalin-expr-outcomes (nth 3 expr)))))
- ((and (eq? 'let (car expr))
- (symbol? (nth 1 expr)))
- (find-stalin-code-outcomes (cdddr expr)))
- ((memq (car expr) '(let let* letrec))
- (find-stalin-code-outcomes (cddr expr)))
- ((eq? 'lambda (car expr))
- `((_stalin-function ,expr)))
- ((pair? (car expr))
- (find-stalin-expr-outcomes (car expr)))
- ((eq? 'begin (car expr))
- (find-stalin-code-outcomes (cdr expr)))
- (else
- (list (list (car expr))))))
-#!
-(find-stalin-expr-outcomes '(lambda () 50))
-(find-stalin-expr-outcomes '((a)))
-(find-stalin-expr-outcomes '(if a b (if 2 (c 2 3))))
-(find-stalin-expr-outcomes '(let ((a 9))
- (if a
- b
- (if 2
- (let ((d 100))
- (c 2 3))))))
-!#
-
-;; code is just a list of expressions.
-(define (find-stalin-code-outcomes code)
- (if (null? code)
- '()
- (let ()
- (define last-expr (last code))
- (let loop ((code code))
- (define expr (car code))
- (cond ((eq? expr last-expr)
- (find-stalin-expr-outcomes expr))
- ((not (pair? expr))
- (loop (cdr code)))
- ;;((memq (car expr) stalin-noreturn-funcs)
- ;; (car expr))
- (else
- (loop (cdr code))))))))
-
-#!
-(find-stalin-code-outcomes (car lotsofcode))
-(find-stalin-code-outcomes '((let loop () (loop))))
-(find-stalin-code-outcomes '(let ((a 9))
- (if a
- b
- (if 2
- (let ((d 100))
- (c 2 3))))))
-!#
-
-(define (find-stalin-func-returns code)
- (define ret '())
- (let loop ((code code))
- ;;(c-display "code" code)
- (schemecodeparser code
- :use-customsymbolhandler?
- (lambda (expr)
- (or (and (eq? 'define (nth 0 expr))
- (pair? (nth 2 expr))
- (eq? 'lambda (car (nth 2 expr))))
- (memq (car expr) '(let let* letrec))))
- :customsymbolhandler
- (lambda (expr)
- ;;(c-display "got" expr)
- (cond ((eq? 'define (car expr))
- (let ((body (nth-cdr 2 (nth 2 expr))))
- (loop body)
- (push! (list (nth 1 expr)
- (find-stalin-code-outcomes body))
- ret)))
-
- ((and (eq? 'let (car expr))
- (not (pair? (cadr expr))))
- (for-each loop (map cdr (nth 2 expr))) ;; arguments.
- (loop (nth-cdr 3 expr))
- (push! (list (nth 1 expr)
- (find-stalin-code-outcomes (nth-cdr 3 expr)))
- ret))
-
- ;;let, let* and letrec
- (else
- (for-each loop (map cdr (nth 1 expr))) ;; arguments.
- (for-each (lambda (a)
- (if (and (pair? (cadr a))
- (eq? 'lambda (car (cadr a))))
- (let ((body (cdr (cadr a))))
- (loop body)
- (push! (list (car a)
- (find-stalin-code-outcomes body))
- ret))))
- (nth 1 expr))
- (loop (cddr expr)))))))
- ret)
-
-
-#!
-(find-stalin-func-returns '((let loop ()
- (define ret (lambda ()
- (lowlevel_remove_me)))
- (let ((ret2 (lambda ()
- (lowlevel_remove_me))))
- (let loop2 ()
- (if (loop)
- (loop)
- (loop2)))
- ;;(set! loop2 loop5)
- (loop2)))))
-
-(find-stalin-func-returns '((let loop () (lambda ()))))
-(find-stalin-func-returns '((let loop () (loop) (lowlevel_remove_me))))
-(find-stalin-func-returns '((let loop ()
- (let loop2 ()
- (loop))
- (loop2))))
-
-(find-stalin-func-returns '((letrec ((loop (lambda ()
- (display gakk)
- (loop))))
- (+ 2 3))))
-
-(let ((code (generate-stalin-code `( (spawn
- ,@last-stalin
- ((=> coroutine:_current-coroutine :continuation)))))))
- (pretty-print (find-stalin-func-returns
- (stalin-cond->if code))))
-
-(pretty-print (find-stalin-func-returns
- (stalin-cond->if
- lotsofcode)))
-
-
-(pretty-print lotsofcode)
-(define lotsofcode
- (generate-stalin-code0
- '((let loop ()
- (wait (irandom 500):-ms
- (spawn
- (define osc (make-oscil :frequency (+ 50 (irandom 900))))
- (define duration (+ 0 (+ 400 (irandom 2000)):-ms))
- (define i 0)
- (sound :duration duration
- (if (< i (>> duration 1))
- (out (* (scale i 0 (>> duration 1) 0.0 0.01)
- (oscil osc)))
- (out (* (scale i (>> duration 1) duration 0.01 0.0)
- (oscil osc))))
- (inc! i 1)))
- (loop))))))
-!#
-
-
-;; First implementation. Does not handle circular dependencies.
-(define (find-stalin-noreturn-funcs-internal-old func-returns known-noreturns)
- (define (find func-returns known-noreturns)
- (define ret known-noreturns)
- (map (lambda (func-return)
- (define name (car func-return))
- (define possible-returns (cadr func-return))
- ;;(c-display "pos" name possible-returns)
- (call/cc (lambda (return)
- (for-each (lambda (possible-return)
- (if (or (not (pair? possible-return))
- (not (memq (car possible-return) (cons name ret))))
- (return)))
- possible-returns)
- (push! name ret))))
- func-returns)
- (delete-duplicates ret eq?))
-
- (let loop ((old known-noreturns))
- (define new (find func-returns old))
- (if (not (equal? new old))
- (loop new)
- old)))
-
-;; Second implementation. Seems to work fine.
-;;
-;; Works by:
-;; 1. For each function, determine whether the function can return or not.
-;; A function can return if either of its outcomes are
-;; a) Not a function call.
-;; But! A function can never return if all its outcomes are either:
-;; b) In the known-noreturns list.
-;; c) A call to a function which is in the func-noreturns list
-;; If neither b) nor c), for any of its outcomes the function can return.
-;; 2. If it can return, put it into the return-funcs list.
-;; 3. Continue doing for-each until no function is put into the return-funcs list.
-;;
-(define (find-stalin-noreturn-funcs-internal func-returns known-noreturns known-returns)
- (define noreturns (remove (lambda (noreturn?)
- (memq noreturn? known-returns))
- (map car func-returns)))
-
- ;; One iteration of reducing the number of noreturns
- (define (reduce-noreturns)
- ;;(c-display "func-returns" func-returns)
- (for-each (curryppla (name possible-returns)
- (define noreturn #t)
- (for-each (lambda (possible-return)
- (set! noreturn
- (and noreturn
- (cond ((not (pair? possible-return)) ;; 1a
- #f)
- ((memq (car possible-return) known-noreturns) ;; 1b
- #t)
- ((memq (car possible-return) noreturns) ;; 1c
- #t)
- (else
- #f)))))
- possible-returns)
- ;;(c-display "name" name noreturns returns noreturn (not noreturn))
- (if (not noreturn)
- (set! noreturns (delete! name noreturns eq?))))
- func-returns))
-
- ;; Call reduce-noreturns again and again until it can not be reduced anymroe
- (let loop ()
- (define old-noreturns (list-copy noreturns))
- (reduce-noreturns)
- (if (not (equal? old-noreturns noreturns))
- (loop)
- (set! noreturns (delete-duplicates (append known-noreturns noreturns) eq?))))
-
-
- noreturns)
-
-#!
-(find-stalin-func-returns
- (stalin-cond->if
- '((let loop ()
- (define ret (lambda ()
- (lowlevel_remove_me)))
- (let ((ret2 (lambda ()
- (lowlevel_remove_me))))
- (let loop2 ()
- (if (loop)
- (loop)
- (loop2)))
- ;;(set! loop2 loop5)
- (loop2))))))
-!#
-
-
-
-
-(define* (find-stalin-noreturn-funcs code :optional (known-returns '()))
- (define func-returns (find-stalin-func-returns
- (stalin-cond->if
- code)))
- ;;(pretty-print func-returns)
- (let ()
- (define noreturns (find-stalin-noreturn-funcs-internal
- func-returns
- '(_continuation coroutine-continuation lowlevel_remove_me _switch-to-coroutine)
- known-returns))
-
- ;; Check if any of the noreturns is ever set! to something not in the noreturns list.
- ;; In case, those noreturns are put into the "known-returns" list.
- ;; (this block may seem chaotic at first sight, but it's not that bad, although it could be better)
- (let ((res (call/cc
- (lambda (return)
- (let loop ((code code))
- (schemecodeparser code
- :use-customsymbolhandler?
- (lambda (expr)
- (eq? 'set! (car expr)))
- :customsymbolhandler
- (lambda (expr)
- (if (memq (nth 1 expr) noreturns)
- (let ()
- (when (not (call/cc (lambda (return)
- (define func-checked '())
- (define (check-func-call func-call)
- (define func-name (car func-call))
- (let ((hit (assq func-name func-returns)))
- ;;(c-display "func-call / hit" func-call hit)
- (if hit
- (let ()
- (if (memq func-name func-checked) ;;avoid circular
- (return #f))
- (push! func-name func-checked)
- (for-each check-something
- (nth 1 hit)))
- (return #f))))
- (define (check-something outcome)
- ;;(c-display "outcome" outcome)
- (cond ((and (pair? outcome)
- (eq? '_stalin-function (car outcome)))
- (check-expr `(begin
- ,@(nth-cdr 2 (nth 1 outcome)))))
- ((pair? outcome)
- (check-func-call outcome))
- ((not (memq outcome noreturns))
- (return #f))))
- (define (check-expr expr)
- ;;(c-display "expr" expr)
- (for-each check-something
- (find-stalin-expr-outcomes expr)))
- (check-expr (nth 2 expr))
- #t)))
- (return (nth 1 expr)))))
- `(set! ,(nth 1 expr) ,(loop (nth 2 expr))))))
- #t))))
- (if (eq? #t res)
- (begin
- ;;(c-display "NORETURNS" noreturns)
- ;;(c-display "RETURNS" known-returns)
- noreturns)
- (begin
- ;;(c-display "found non-return" res)
- (find-stalin-noreturn-funcs code (cons res known-returns)))))))
-
-#!
-(find-stalin-noreturn-funcs '((define ai (lambda ()
- (ai)))
- (define get-ai (lambda ()
- ai))
- (define rt_vct_set
- (lambda (vvct_56 pos_57 val_58)
- (set! ai (lambda ()
- (get-ai)))
- (ai)))))
-
-;; cool.
-(find-stalin-noreturn-funcs '((let loop ()
- (let ((ret (lambda ()
- (lowlevel_remove_me))))
- (let loop2 ()
- (if (loop)
- (loop)
- (loop2)))
- ;;(set! loop2 loop5)
- (loop2)))))
-
-(find-stalin-noreturn-funcs
- '((let ((return_67
- (lambda (rt_gen_call/cc-return100147)
- (lowlevel_remove_me))))
- (let loop_68 ()
- (if (< _time _next-scheduled-time)
- (begin
- (let ((rt_gen_monad-do100120 (lambda () (loop_68))))
- (let ((coroutine_69 _current-coroutine))
- (let ((rt_gen_monad-do100122
- (lambda ()
- (read-bus_-2
- (getter-coroutine:rt_gen_bus97482 coroutine_69))
- (rt_gen_monad-do100120))))
- (if (= _time (coroutine-time_-6 coroutine_69))
- (begin
- (begin
- (if (not (getter-coroutine:rt_gen_bus97482 coroutine_69))
- (begin
- (setter!-coroutine:rt_gen_bus97482
- coroutine_69
- (make-bus_-5))
- (let ((outer-bus_70
- (getter-coroutine:bus coroutine_69)))
- (setter!-coroutine:bus
- coroutine_69
- (getter-coroutine:rt_gen_bus97482 coroutine_69))
- <code>
- (setter!-coroutine:bus coroutine_69 outer-bus_70)))
- #f)
- (clear-bus_-4
- (getter-coroutine:rt_gen_bus97482 coroutine_69)
- _time
- _next-scheduled-time)
- (SET-coroutine-sounds! coroutine_69 (quote ()))
- (let ((old-entry_71
- (coroutine-continuation_-3 coroutine_69)))
- (call-with-current-continuation
- (lambda (return_72)
- (SET-coroutine-continuation!
- coroutine_69
- (lambda () (return_72 #f)))
- (lowlevel_remove_me)))
- (SET-coroutine-continuation!
- coroutine_69
- old-entry_71)))
- (rt_gen_monad-do100122))
- (begin #f (rt_gen_monad-do100122)))))))
- (return_67 #f)))
- (return_67 #f))))
-
-
-(define lotsofcode (generate-stalin-code last-stalin))
-(find-stalin-noreturn-funcs lotsofcode)
-
-(find-stalin-noreturn-funcs (find-stalin-func-returns
- (stalin-cond->if
- lotsofcode))
- '(wait-do remove-me error myexit _run-scheduler coroutine-continuation
- _switch-to-coroutine yield-do))
-
-(let ((code (generate-stalin-code `( (spawn
- ,@last-stalin
- ((=> coroutine:_current-coroutine :continuation)))))))
- (find-stalin-noreturn-funcs (find-stalin-func-returns
- (stalin-cond->if code))
- '(_continuation coroutine-continuation lowlevel_remove_me _switch-to-coroutine neverending-scheduling__2)))
-
-'(wait-do remove-me error myexit _run-scheduler coroutine-continuation
- _switch-to-coroutine yield-do)))
-
-
-!#
-
-
-
-(define (stalin-is-expr-noreturn? expr no-returns)
- (define outcomes (find-stalin-expr-outcomes expr))
- ;;(c-display "hepp" expr (pair? (car outcomes)) (memq (car outcomes) no-returns))
- (if (null? outcomes)
- #f
- (call/cc (lambda (return)
- (for-each (lambda (outcome)
- (if (or (not (pair? outcome))
- (not (memq (car outcome) no-returns)))
- (return #f)))
- outcomes)
- #t))))
-
-(define (stalin-remove-dead-code code no-returns cont)
- (define somethingisremoved #f)
- (let ((ret (let das-loop ((code code))
- (schemecodeparser code
- :blockhandler
- (lambda (expr)
- (let loop ((expr expr))
- (if (null? expr)
- '()
- (let ()
- (define expr0 (car expr))
- (if (and (pair? expr0)
- ;;(memq (car expr0) no-returns)
- (not (null? (cdr expr)))
- (begin ;;(c-display "asking" expr no-returns)
- (let ((ret (stalin-is-expr-noreturn? expr0 no-returns)))
- ;;(c-display "ret" ret)
- ret))
- )
- (begin
- (set! somethingisremoved #t)
- (list (das-loop expr0)))
- (cons (das-loop expr0)
- (loop (cdr expr))))))))))))
- (cont ret somethingisremoved)))
-
-#!
-(define lotsofcode
- '((let ((a 9))
- (+ 2 3)
- (lowlevel_remove_me))
- (+ 9 10)))
-
-;; This one is not handled.
-(define lotsofcode
- '((let ((a 9))
- (+ 2 3)
- (let ((b (lowlevel_remove_me)))
- (* 100 200)))
- (+ 9 10)))
-
-;; This one is though.
-(define lotsofcode
- '((let ((a 9))
- (+ 2 3)
- (lowlevel_remove_me)
- (* 100 200))
- (+ 9 10)))
-
-(stalin-remove-dead-code lotsofcode
- (find-stalin-noreturn-funcs (find-stalin-func-returns
- (stalin-cond->if
- lotsofcode))
- '(_continuation coroutine-continuation lowlevel_remove_me _switch-to-coroutine))
- (lambda (code removed?)
- (if removed?
- (pretty-print code)
- "nothing-removed")))
-!#
-
-
-;; Ad-hoc fix for most situations where stalins tco is not sufficiant.
-;;
-;; Basically, remove-dead-code does this:
-;; (begin (remove-me) (+ 2 3)) -> (begin (remove-me))
-(define (stalin-remove-dead-code-recursively code)
- (c-display "remove-dead-code entry")
- (stalin-remove-dead-code code
- (find-stalin-noreturn-funcs code)
- (lambda (code removed?)
- (if removed?
- (stalin-remove-dead-code-recursively code)
- code))))
-#!
-;; very very cool
-(pretty-print (stalin-remove-dead-code-recursively last-stalin))
-(pretty-print (stalin-remove-dead-code-recursively (generate-stalin-code0 last-stalin)))
-(define lotsofcode (generate-stalin-code last-stalin))
-
-(pretty-print (stalin-remove-dead-code-recursively
- (generate-stalin-code `( (spawn
- ,@last-stalin
- ((=> coroutine:_current-coroutine :continuation)))))))
-
-(<rt-stalin>
- (wait 50))
-(begin last-stalin)
-!#
-
-(define (stalin-append-continuation code continuation)
- (cond ((eq? 'cond (car code))
- (stalin-append-continuation (stalin-cond->if code) continuation))
- ((and (eq? 'if (car code))
- (= 3 (length code)))
- `(if ,(nth 1 code)
- (begin
- ,(nth 2 code)
- ,continuation)))
- ((and (eq? 'if (car code))
- (= 4 (length code)))
- `(if ,(nth 1 code)
- (begin
- ,(nth 2 code)
- ,continuation)
- (begin
- ,(nth 3 code)
- ,continuation)))
- ((memq (car code) '(let let* letrec))
- `(,(nth 0 code) ,(nth 1 code)
- ,@(nth-cdr 2 code)
- ,continuation))
- (else
- #f)))
-
-
-#!
-(let ((a 9))
- (call/cc (lambda (return)
- ...)))
-=>
-(let ((a 9))
- (call/cc (lambda (return)
- ...))
- (continuation))
-!#
-
-;; stalin-monad-do-ify-call/cc is making it easier for stalin-remove-call/cc to recognize
-;; call/cc-s which can be tranformed to simple continuations. After this
-;; transformation, stalin-remove-call/cc doesn't have to scan blocks to
-;; see if they might contain call/cc. Instead stalin-remove-call/cc can just
-;; do a simple (and (pair? expr0) (eq? 'call/cc (car expr0))) check.
-(define (stalin-monad-do-ify-call/cc code)
- (schemecodeparser code
- :blockhandler
- (lambda (expr)
- (let loop ((expr expr))
- (if (null? expr)
- '()
- (let ()
- (define expr0 (car expr))
- (define monad-do (rt-gensym "monad-do"))
- ;;(c-display "expr0" expr0 (deep-list-search 'call-with-current-continuation
- ;; expr0)
- ;; (cdr expr))
- (cond ((and (pair? expr0)
- (not (null? (cdr expr)))
- (not (eq? 'call-with-current-continuation (car expr0)))
- (deep-list-search 'call-with-current-continuation
- expr0)
- (stalin-append-continuation expr0 `(,monad-do)))
- => (lambda (new-expr0)
- `((let ((,monad-do ,(stalin-monad-do-ify-call/cc
- `(lambda ()
- ,@(cdr expr)))))
- ,(stalin-monad-do-ify-call/cc new-expr0)))))
- (else
- (cons (stalin-monad-do-ify-call/cc expr0)
- (loop (cdr expr)))))))))))
-
-#!
-(pretty-print (let ((code
- '(let a ()
- (let ((a 9))
- (call-with-current-continuation (lambda (ret)
- something))
- (+ a b))
- (lowlevel_remove_me))))
- (stalin-monad-do-ify-call/cc code)))
-=>
-(begin
- (let ((monad-do (lambda ()
- (lowlevel_remove_me))))
- (let ((a 9))
- (call/cc (lambda (ret)
- something))
- (+ a b)
- (monad-do))))
-!#
-
-
-
-#!
-Removes some unecessary call/cc-s by recognizing when the code continuing after the call/cc block
-"dissapears" in a function which will never return, and tranforming appropriately.
-
-The reason for doing this is that call/cc takes _a lot_ of time to compile with stalin.
-!#
-
-(define (stalin-remove-call/cc das-code kont)
- ;;(pretty-print das-code)
- ;;(c-display "noreturns:" (find-stalin-noreturn-funcs das-code))
- (define changed #f)
-
- (let ((ret
- (let das-loop ((code das-code))
- (schemecodeparser code
- :blockhandler
- (lambda (expr)
- (let loop ((expr expr))
- (define expr0 (and (pair? expr) (car expr)))
- (cond ((null? expr)
- '())
- ((and (pair? expr0)
- (eq? 'call-with-current-continuation (car expr0)) ;; Check if call-wi. is called inisde expr0.
- (stalin-is-expr-noreturn? `(begin
- ,@(cdr expr))
- (find-stalin-noreturn-funcs das-code)))
- (let ()
- (define return (car (cadr (nth 1 expr0))))
- ;;(pretty-print `(begin ,@(cdr expr)))
- ;;(pretty-print expr)
- ;;(c-display "found one" (stalin-is-expr-noreturn? `(begin
- ;; ,@(cdr expr))
- ;; (find-stalin-noreturn-funcs das-code)))
- (set! changed #t)
- (das-loop
- `((let ((,return (lambda (,(rt-gensym "call/cc-return"))
- ,@(cdr expr)
- )))
- ,@(cddr (nth 1 expr0))
- (,return #f) ;;Line recently added. Weird that it worked before...
- )))))
- (else
- (cons (das-loop expr0)
- (loop (cdr expr)))))))))))
- (kont ret changed)))
-
-(define (stalin-remove-call/cc-recursively code)
- (c-display "stalin-remove-recursively entry")
- (stalin-remove-call/cc
- (stalin-monad-do-ify-call/cc code)
- (lambda (ret changed)
- (if changed
- (stalin-remove-call/cc-recursively ret)
- code))))
-
-#!
-(pretty-print (stalin-remove-call/cc
- '(lambda ()
- (lowlevel_debug "starting")
- (let loop ()
- (call-with-current-continuation
- (lambda (return_40)
- (wait-do_-11
- (* 44100 1)
- (lambda ()
- (return_40 #t)))))
- (lowlevel_debug "one second later")
- (loop)))))
-
-(pretty-print (stalin-remove-call/cc
- '(lambda ()
- (lowlevel_debug "starting")
- (let loop ()
- (cond (#t
- (call-with-current-continuation
- (lambda (return_40)
- (wait-do_-11
- (* 44100 1)
- (lambda ()
- (return_40 #t)))))
- (lowlevel_debug "one second later")
- (loop))
- (else #f))))))
-
-
-
-(pretty-print (stalin-remove-call/cc
- '(lambda ()
- (lowlevel_debug "starting")
- (call-with-current-continuation
- (lambda (return_40)
- (wait-do_-11
- (* 44100 1)
- (lambda ()
- (return_40 #t)))))
- (lowlevel_debug "one second later")
- (lowlevel_remove_me))))
-=>
-(lambda ()
- (lowlevel_debug "starting")
- (let ((return_40 (lambda (_rt_gen980)
- (lowlevel_debug "one second later")
- (lowlevel_remove_me))))
- (wait-do_-11
- (* 44100 1)
- (lambda ()
- (return_40 #t)))))
-
-
-(<rt-stalin>
- (debug "starting")
- (wait 1:-s)
- (debug "one second later"))
-
-(<rt-stalin>
- (spawn (sound :dur 500 (out 0))))
-
-
-;; icmc code
-(<rt-stalin>
- (while #t
- (wait (random 30):-ms)
- (define osc (make-oscil :freq (between 50 2000)))
- (define dur (between 400 2000):-ms)
- (define e (make-env '((0 0)(.5 .05)(1 0)) :dur dur))
- (spawn (sound :dur dur
- (out (* (env e) (oscil osc)))))))
-
-(<rt-stalin>
- (while #t
- (wait-midi :command note-on
- (define adsr (make-adsr :a 20:-ms :d 20:-ms :s 0.2 :r 50:-ms))
- (define osc
- (make-oscil :freq (midi-to-freq (midi-note))))
- (spawn
- (spawn
- (sound
- (cond ((adsr)
- => (lambda (vol)
- (out (* 0.2 vol (midi-vol) (oscil osc)))))
- (else
- (stop)))))
- (wait-midi :command note-off :note (midi-note)
- (-> adsr stop-it))))))
-
-(<rt-stalin> :runtime-checks #f
- (while #t
- (wait-midi :command note-on
- (define adsr (make-adsr :a 20:-ms :d 20:-ms :s 0.2 :r 50:-ms))
- (define osc
- (make-oscil :freq (midi-to-freq (midi-note))))
- (spawn
- (sound
- (cond ((adsr)
- => (lambda (vol)
- (out (* 0.2 vol (midi-vol) (oscil osc)))))
- (else
- (stop))))
- (wait-midi :command note-off :note (midi-note)
- (-> adsr stop-it))))))
-
-
-(<rt-stalin>
- (while #t
- (wait-midi :command note-on
- (define adsr (make-adsr :a 20:-ms :d 20:-ms :s 0.2 :r 50:-ms))
- (define osc
- (make-oscil :freq (midi-to-freq (midi-note))))
- (spawn
- (sound
- (define vol (adsr))
- (if vol
- (out (* 0.2 vol (midi-vol) (oscil osc)))
- (stop))))
- (spawn
- (wait-midi :command note-off :note (midi-note)
- (-> adsr stop))))))
-
-
-(<rt-stalin>
- (while #t
- (wait-midi :command note-on
- (spawn
- (define adsr (make-adsr :a 20:-ms :d 20:-ms :s 0.2 :r 50:-ms))
- (define osc
- (make-oscil :freq (midi-to-freq (midi-note))))
- (spawn
- (sound
- (-> adsr run
- (lambda (vol)
- (out (* 0.2 vol (midi-vol) (oscil osc))))
- stop)))
- (wait-midi :command note-off :note (midi-note)
- (-> adsr stop-it))))))
-
-
-
-(<rt-stalin>
- (while #t
- (wait-midi :command note-on
- (define adsr (make-adsr 20:-ms 20:-ms 0.2 50:-ms))
- (define osc
- (make-oscil :freq (midi-to-freq (midi-note))))
- (spawn
- (spawn
- (call/cc
- (lambda (break)
- (sound
- (cond ((adsr)
- => (lambda (vol)
- (out (* vol 0.2 (midi-vol) (oscil osc)))))
- (else
- (break #t)))))))
- (wait-midi :command note-off :note (midi-note)
- (-> adsr stop-it))))))
-
-
-
-(<rt-stalin>
- (while #t
- (debug "waiting for midi")
- (wait-midi :command note-on
- (define vol 0.0)
- (spawn
- (define osc
- (make-oscil :freq (midi-to-freq (midi-note))))
- (define player
- (spawn
- (define e (make-env '((0 0)(1 2)(5 1)) :end 50:-ms))
- (sound :dur 50:-ms
- (set! vol (* 0.1 (midi-vol) (env e)))
- (out (* vol (oscil osc))))
- (sound (out (* vol (oscil osc))))))
- (wait-midi :command note-off :note (midi-note))
- (stop player)
- (define e (make-env '((0 1)(1 0)) :end 50:-ms))
- (sound :dur 50:-ms
- (out (* vol (env e) (oscil osc))))))))
-
-
-
-
-(<rt-stalin>
- (define decay 50:-ms)
- (while #t
- (wait-midi :command note-on
- (define osc
- (make-oscil :freq (midi-to-freq (midi-note))))
- (spawn
- (define player
- (spawn (sound (out (* (midi-vol) (oscil osc))))))
- (let ((a (midi-note)))
- (wait-midi :command note-off :note a
- (stop player))
- (define env (make-env (list 0.0 (midi-vol) 1.0 0.0) :dur decay))
- (sound :dur decay
- (out (* (env env) (oscil osc)))))))))
-
-
-!#
-
-
-
-(define (stalin-cond->if code)
-
- (schemecodeparser code
- :use-customsymbolhandler?
- (lambda (expr)
- (eq? 'cond (car expr)))
- :customsymbolhandler
- (lambda (expr)
- (let* ((expr0 (nth 1 expr))
- (body (if (null? (cddr expr0))
- (cadr expr0)
- `(begin
- ,@(cdr expr0)))))
- (cond ((eq? 'else (car expr0))
- (stalin-cond->if body))
- ((eq? '=> (cadr expr0))
- (let ((ret (rt-gensym)))
- (stalin-cond->if
- `(let ((,ret ,(car expr0)))
- (if ,ret
- (,(caddr expr0) ,ret)
- (cond ,@(nth-cdr 2 expr)))))))
- (else
- (stalin-cond->if
- `(if ,(car expr0)
- ,body
- (cond ,@(nth-cdr 2 expr))))))))))
-#!
-(stalin-cond->if '(cond (a 1 2)(b 3)(else 4)))
-(stalin-cond->if '(cond (a => af)(b 3)(else 4)))
-!#
-
-
-;; (define (a b c) ...) -> (define a (lambda (b c) ...))
-(define (stalin-fix-defines code)
- (schemecodeparser code
- :use-customsymbolhandler?
- (lambda (expr)
- (and (eq? 'define (car expr))
- (pair? (cadr expr))))
- :customsymbolhandler
- (lambda (expr)
- (stalin-fix-defines
- `(define ,(car (cadr expr)) (lambda ,(cdr (cadr expr))
- ,@(cddr expr)))))))
-
-#!
-(stalin-fix-defines '(define (a b c) d e f))
-(stalin-fix-defines '(define (((((a b)))) c d) d e f))
-!#
-
-
-;; Only renames the toplevel defines:
-;; (define a (lambda () (a))) -> (define a_-1 (lambda () a))
-;; The rest is taken care of in stalin-uniqify-variables
-(define (stalin-get-renamed-toplevel-defines code)
- (define get-new-var
- (let ((num 0))
- (lambda (old)
- (if (or (memq old stalin-dont-rename-these)
- (char=? #\_ (car (string->list (symbol->string old))))) ;; don't rename vars starting with "_".
- old
- (<_> old '_ (string->symbol (number->string (inc! num -1))))))))
-
- (define renameds '())
-
- (for-each (lambda (expr)
- (if (and (pair? expr)
- (eq? 'define (car expr)))
- (let ()
- (define new-name (get-new-var (cadr expr)))
- (push! (list (cadr expr) new-name)
- renameds)
- `(define ,new-name
- ,@(cdr expr)))
- expr))
- code)
-
- renameds)
-
-
-#!
-(stalin-get-renamed-toplevel-defines
- '((define a (lambda (b) (+ a (gakk))))
- (define gakk (lambda () (let ((a (lambda () 2))) (a))))
- (+ a b (gakk))))
-!#
-
-
-
-(define (stalin-uniqify-variables code)
-
- (define get-new-var
- (let ((num -1))
- (lambda (old)
- (if (or (memq old stalin-dont-rename-these)
- (char=? #\_ (car (string->list (symbol->string old)))))
- old
- (<_> old '_ (string->symbol (number->string (inc! num 1))))))))
-
- (define (broken-list->list old)
- ;;(c-display "old" old (symbol? old))
- (cond ((null? old)
- '())
- ((symbol? old)
- (list old))
- (else
- (cons (car old)
- (broken-list->list (cdr old))))))
-
- (define (fix-argslist args renameds)
- (define (getit sym)
- (let ((hit (assq sym renameds)))
- (if hit
- (cadr hit)
- sym)))
- (cond ((null? args)
- '())
- ((symbol? args)
- (getit args))
- (else
- (cons (getit (car args))
- (fix-argslist (cdr args) renameds)))))
-
- (let loop ((code code)
- (varlist '())
- (renameds (stalin-get-renamed-toplevel-defines code)))
- ;;(c-display "varlist" varlist)
- ;;(c-display "code" code "\n" varlist "\n" renameds)
- (schemecodeparser code
- :varlist
- varlist
- :symbolfunc
- (lambda (sym)
- ;;(c-display "got" sym (assq sym renameds))
- (let ((hit (assq sym renameds)))
- (if hit
- (cadr hit)
- sym)))
- :use-customsymbolhandler?
- (lambda (expr)
- (memq (car expr) '(define lambda let let* letrec)))
- :customsymbolhandler
- (lambda (expr)
- (cond (#f #f)
-
- ;; toplevel-define
- ((eq? 'define (car expr))
- (let ((name (loop (cadr expr) varlist renameds)))
- `(define ,name
- ,@(loop (cddr expr)
- (cons name varlist)
- renameds))))
-
- ;; lambda
- ((eq? 'lambda (car expr))
- (let* ((arglist (broken-list->list (cadr expr)))
- (new-varlist (map get-new-var arglist))
- (new-renameds (zip arglist new-varlist)))
- `(lambda ,(fix-argslist (cadr expr) new-renameds)
- ,@(loop (cddr expr)
- (append new-varlist varlist)
- (append new-renameds renameds)))))
- ;; named let
- ((and (eq? 'let (car expr))
- (symbol? (cadr expr)))
- (let* ((clean-varlist (cons (cadr expr)
- (map car (caddr expr))))
- (new-varlist (map get-new-var clean-varlist))
- (new-renameds (zip clean-varlist new-varlist))
- (vars (map (lambda (newname code)
- `(,newname ,@(loop code varlist renameds)))
- (map cadr (cdr new-renameds))
- (map cdr (caddr expr)))))
- `(let ,(car new-varlist) ,vars
- ,@(loop (cdddr expr)
- (append new-varlist varlist)
- (append new-renameds renameds)))))
-
- ;; let
- ((eq? 'let (car expr))
- (let* ((clean-varlist (map car (nth 1 expr)))
- (new-varlist (map get-new-var clean-varlist))
- (new-renameds (zip clean-varlist new-varlist))
- (vars (map (lambda (newname code)
- `(,newname ,@(loop code varlist renameds)))
- (map cadr new-renameds)
- (map cdr (nth 1 expr)))))
- `(let ,vars
- ,@(loop (nth-cdr 2 expr)
- (append new-varlist varlist)
- (append new-renameds renameds)))))
-
- ;; let*
- ((eq? 'let* (car expr))
- (let ((vars (map (lambda (name code)
- (let* ((new-name (get-new-var name))
- (ret `(,new-name ,@(loop code varlist renameds))))
- (push! new-name varlist)
- (push! (list name new-name) renameds)
- ret))
- (map car (nth 1 expr))
- (map cdr (nth 1 expr)))))
- `(let* ,vars
- ,@(loop (nth-cdr 2 expr)
- varlist
- renameds))))
-
- ;; letrec
- ((eq? 'letrec (car expr))
- (let* ((clean-varlist (map car (nth 1 expr)))
- (new-varlist (map get-new-var clean-varlist))
- (new-renameds (zip clean-varlist new-varlist))
- (varlist (append new-varlist varlist))
- (renameds (append new-renameds renameds))
- (vars (map (lambda (newname code)
- `(,newname ,@(loop code varlist renameds))) ;; well...
- (map cadr new-renameds)
- (map cdr (nth 1 expr)))))
- `(letrec ,vars
- ,@(loop (nth-cdr 2 expr)
- varlist
- renameds))))
-
- )))))
-
-#!
-(stalin-uniqify-variables
- '((define time 0)
- `(+ ,time 50)))
-
-(stalin-uniqify-variables
- '((define time 0)
- (lambda (time)
- time)))
-
-(pretty-print (stalin-uniqify-variables
- '((define a (lambda (b) (+ a (gakk))))
- (define gakk (lambda () (let ((a (lambda () 2))) (a))))
- (+ a b (gakk)))))
-
-(stalin-uniqify-defines
- (stalin-uniqify-variables '((define time 0)
- (lambda (time)
- time))))
-
-(stalin-uniqify-defines '((define time 0)
- (lambda (time)
- time)))
-
-(stalin-uniqify-variables '((lambda (a b . c)
- (+ a b c d))))
-(stalin-uniqify-variables '(let loop ((a b))
- (loop (+ a 2))))
-(stalin-uniqify-variables '(let ((loop 90)
- (a b))
- (loop (+ a 2))))
-(stalin-uniqify-variables '(let* ((loop 90)
- (a loop))
- (loop (+ a 2))))
-(stalin-uniqify-variables '(letrec ((loop 90)
- (a loop)) ;; Well, that's wrong.
- (loop (+ a 2))))
-!#
-
-
-
-
-
-;; (define (a) (+ a b) (define c 2) c) -> (define (a) (+ a b) (letrec ((c 2)) c))
-(define (stalin-fix-internal-defines code)
- (c-display "fix-internal-defines entry")
- (map (lambda (code)
- (let das-loop ((code code)
- (level 0))
- (schemecodeparser code
- :blockhandler
- (lambda (expr)
- (let loop ((expr expr))
- (cond ((null? expr)
- '())
- ((= 0 level)
- (das-loop expr 1))
- (else
- (let ()
- (define expr0 (car expr))
- (if (and (pair? expr0)
- (eq? 'define (car expr0)))
- (let ()
- (das-loop `((letrec ((,(nth 1 expr0) ,(nth 2 expr0)))
- ,@(cdr expr)))
- (1+ level)))
- (cons (das-loop expr0 (1+ level))
- (loop (cdr expr))))))))))))
- code))
-#!
-(stalin-fix-internal-defines '((define (a) (+ a b) (define c 2) c)))
-; -> (define (a) (+ a b) (letrec ((c 2)) c))
-(stalin-fix-internal-defines lotsofcode)
-!#
-
-
-;; (set! (some a) b) -> (setter!-some a b)
-#!
-had to be put into macroexpand instead.
-(define (fix-stalin-set! code)
- (schemecodeparser code
- :elsefunc (lambda (expr)
- (if (and (eq? 'set! (car expr))
- (pair? (cadr expr)))
- `( ,(<_> 'setter!- (car (cadr expr))) ,@(cdr (cadr expr))
- ,(fix-stalin-set! (caddr expr)))
- (map fix-stalin-set! expr)))))
-!#
-
-;; only "(asdasf):-ms" infixes, not "asdf:-ms" infixes.
-(define (fix-stalin-infix code)
- (cond ((null? code) '())
- ((not (pair? code)) code)
- (else
- (let ()
- (define first '())
- (let loop ((term code))
- (cond ((null? term)
- (map fix-stalin-infix code))
- ((and (not (null? first))
- (not (null? (cdr first)))
- (keyword? (car term))
- (char=? #\- (car (string->list (symbol->string (keyword->symbol (car term)))))))
- (fix-stalin-infix
- `(,@(c-butlast first)
- (,(<_> 'infix (keyword->symbol (car term)))
- ,(last first))
- ,@(cdr term))))
- (else
- (set! first (append first (list (car term))))
- (loop (cdr term)))))))))
-#!
-(fix-stalin-infix '(sound :duration (between 200 1000):-:ms aiai more and more))
-(fix-stalin-infix '(sound :duration (between 200 1000):-m))
-!#
-;; fixes keywords and the :- infix operator when used in symbols (ie. "asdf:-ms")
-(define (fix-stalin-various code)
- (schemecodeparser code
- :symbolfunc (lambda (sym)
- (define first '())
- (let loop ((string (string->list (symbol->string sym))))
- (cond ((null? string)
- sym)
- ((and (char=? #\: (car string))
- (char=? #\- (cadr string)))
- (stalin-super-generate
- `(,(string->symbol (<-> "infix-" (list->string (cddr string))))
- ,(let ((string (list->string (reverse! first))))
- (or (string->number string)
- (string->symbol string))))))
- (else
- (push! (car string) first)
- (loop (cdr string))))))
-
- :keywordfunc (lambda (key)
- `',(make-stalin-keyword (keyword->symbol key)))))
-
-
-#!
-(fix-stalin-infix '(+ 5 (+ 2 3):-ms))
-(fix-stalin-various '(+ 5 esdv :-s))
-(fix-stalin-various '(+ 5 6 :-s))
-!#
-
-;;; Add a stack check, cpu check and backtrace at all lambda entries.
-(define (stalin-add-health-checks code)
- (if (or (not *stalin-add-health-checks*)
- (and (not *rt-opt-cpu-checks*)
- (not *rt-opt-stack-checks*)))
- code
- `(
- (define backtrace (make-vector ,*stalin-backtrace-length* ""))
- (define backtrace-place 0)
- (define (check_health function-name)
- (if (> ((foreign-procedure () int "check_health_internal"))
- 0)
- (let loop ((i 0)
- (n backtrace-place))
- (if (and (not (string=? "" (vector-ref backtrace n)))
- (< i ,*stalin-backtrace-length*))
- (begin
- ((foreign-procedure (int char*) void "print_backtrace")
- i (vector-ref backtrace n))
- (loop (+ i 1)
- (if (= 0 n) ,(1- *stalin-backtrace-length*) (- n 1))))
- ((foreign-procedure () void "health_exit")))))
- (vector-set! backtrace backtrace-place function-name)
- (set! backtrace-place (if (= backtrace-place ,(1- *stalin-backtrace-length*))
- 0
- (+ 1 backtrace-place))))
- ,@(let loop ((code code))
- (schemecodeparser code
- :use-customsymbolhandler?
- (lambda (expr)
- (or (memq (car expr) '(let let* letrec))
- (and (eq? 'define (car expr))
- (pair? (nth 2 expr))
- (eq? 'lambda (car (nth 2 expr))))))
- :customsymbolhandler
- (lambda (expr)
- (define expr0 (car expr))
- (cond ((eq? 'define expr0)
- `(define ,(nth 1 expr)
- (lambda ,(nth 1 (nth 2 expr))
- (check_health ,(symbol->string (nth 1 expr)))
- ,@(map loop (nth-cdr 2 (nth 2 expr))))))
- ;; named let
- ((and (eq? 'let expr0)
- (symbol? (nth 1 expr)))
- (let ((nonamed-let (loop `(let ,(nth 2 expr)
- ,@(nth-cdr 3 expr)))))
- `(let ,(nth 1 expr) ,(nth 1 nonamed-let)
- (check_health ,(symbol->string (nth 1 expr)))
- ,@(nth-cdr 2 nonamed-let))))
- (else
- (let ()
- (define names (map car (nth 1 expr)))
- (define values (map cadr (nth 1 expr)))
- `(,expr0 ,(map (lambda (name value)
- (if (and (pair? value)
- (eq? 'lambda (nth 0 value)))
- `(,name (lambda ,(nth 1 value)
- (check_health ,(symbol->string name))
- ,@(map loop (nth-cdr 2 value))))
- (list name (loop value))))
- names
- values)
- ,@(map loop (nth-cdr 2 expr))))))))))))
-#!
-;; Running out of stack
-(<rt-stalin>
- (let loop ((i 2))
- (+ 2 (loop (1+ i)))))
-;; Neverending loop.
-(<rt-stalin>
- (let loop ()
- (out 0.0)
- (loop)))
-!#
-
-
-(define* (stalin-super-generate code :key (include-make-coroutine #f))
- (stalin-fix-defines
- (fix-stalin-various
- (stalin-macroexpand
- (fix-stalin-infix
- code)
- :include-make-coroutine include-make-coroutine))))
-
-;; Expands macros and include functions and variables which the code depends on,
-;; all recursively. (careful with macros since its applied to all included code!)
-(define (generate-stalin-code0 code)
-
- ;; memoized (lambda (funcname) `(define ,funcname ,(stalin-macroexpand (get-stalin-func funcname))))
- (define get-expanded-code
- (let ((expanded '()))
- (lambda (funcname)
- (let ((expanded (assq funcname expanded)))
- (if expanded
- (cadr expanded)
- (let ((ret (stalin-super-generate (get-stalin-func funcname) :include-make-coroutine #t)))
- (push! (list funcname ret)
- expanded)
- ret))))))
-
- (define (find-dependencies funcs dependencies)
- (cond ((null? funcs)
- dependencies)
- ((not (memq (car funcs) dependencies))
- (find-dependencies (append (find-stalin-funcs (get-expanded-code (car funcs)))
- (cdr funcs))
- (cons (car funcs)
- dependencies)))
- (else
- (find-dependencies (cdr funcs)
- dependencies))))
-
-
- (reset-coroutine-struct!) ;; coroutine-suff!
-
- (let* ((expanded (stalin-super-generate code ));(append (map get-stalin-func (find-dependencies (find-stalin-funcs code) '()))
- ;code)))
- (no-use (begin ;; coroutine-suff!
- (redefine-coroutine-struct!)
- (set! expanded (stalin-macroexpand expanded :include-make-coroutine #t))
- ;;(pretty-print expanded)
- ))
- (dependencies (find-dependencies (find-stalin-funcs expanded) '())))
-
- (pretty-print dependencies)
- (c-display "NOW IM HERE")
- (let ((ret (append (map get-expanded-code dependencies)
- expanded)))
-
- ret)))
-
-
-#!
-(define-stalin a 0)
-(define-stalin b a)
-(define-stalin c (+ a b c));b a))
-(generate-stalin-code0 '(c))
-(generate-stalin-code0 '())
-!#
-
-
-(define (generate-stalin-code expanded-code)
- (define lotsofcode (stalin-uniqify-variables
- (stalin-fix-internal-defines
- expanded-code)))
- (stalin-add-health-checks
- (stalin-remove-dead-code-recursively ;; Second call. stalin-remove-call/cc might have added dead code
- (stalin-remove-call/cc-recursively
- (stalin-remove-dead-code-recursively
- lotsofcode)))))
-
-
-
-(define (schemecode->file code)
- (fix-defines
- (define basename (tmpnam))
- ;;(c-display "basename:" basename)
- (define sourcefile (<-> basename ".scm"))
- (define fd (open-file sourcefile "w"))
-
- (for-each (lambda (expr)
- (pretty-print expr fd))
- code)
-
- (close fd)
- (delete-at-exit sourcefile)
- basename))
-
-#!
-(schemecode->file (generate-stalin-code0 '((+ 2 3 (add 50 (add 90))))))
-!#
-
-
-;; Add: -copt -freg-struct-return ?
-;; The stalin option "-df" must be added to ensure proper tail calls.
-(define (compile-stalin-file basename)
- ;;(define command (<-> "stalin -On -no-clone-size-limit -split-even-if-no-widening -Ob -Om -Or -Ot -c " basename ".scm"))
- ;;(define command (<-> "stalin -On -no-clone-size-limit -Ob -Om -Or -Ot -c " basename ".scm"))
- ;;(define command (<-> "stalin -On -no-clone-size-limit -split-even-if-no-widening -c " basename ".scm"))
- ;;(define command (<-> "stalin -On -no-clone-size-limit -c " basename ".scm"))
- ;;(define command (<-> "stalin -On -clone-size-limit 0 -no-escaping-continuations -c " basename ".scm"))
- ;;(define command (<-> "stalin -fully-convert-to-CPS -On -clone-size-limit 0 -c " basename ".scm"))
- ;;(define command (<-> "stalin -On -no-clone-size-limit -split-even-if-no-widening -c " basename ".scm"))
- ;;(define command (<-> "stalin -df -On -clone-size-limit 0 -c " basename ".scm"))
- (define command (<-> "stalin -df -On -clone-size-limit 0 -c " basename ".scm"))
- (delete-at-exit (<-> basename ".c"))
- (c-display command)
- (get-system-output command
- (lambda (output ret)
- (when (not (= 0 ret))
- ;;(c-display "output/ret" output ret)
- (catch #t
- (lambda ()
- (display-stalin-error output))
- (lambda x
- (c-display "." output)
- #f))
- (throw 'compilation-error))))
- (<-> basename ".c"))
-
-#!
-(compile-stalin-file (schemecode->file (generate-stalin-code0 '((+ 2 3 (add 50 (add 90)))))))
-!#
-
-
-(eval-c (<-> "-I" snd-header-files-path)
- "#include <rt-various.h>"
- (public
- (<void> fix-stalin-c-source (lambda ((<char*> infile)
- (<char*> outfile))
- (fix_stalin_c_source infile outfile)))))
-
-(define (get-stalin-c-file generated-scheme-file cont)
- (let* ((basename generated-scheme-file)
- (inname (compile-stalin-file basename))
- (outname (<-> (tmpnam) ".c")))
- (delete-at-exit outname)
- (fix-stalin-c-source inname outname)
- (c-display "inname" inname)
- (cont basename
- outname
- )))
-
-#!
-(get-stalin-c-file (schemecode->file (generate-stalin-code0 '((display (+ 2 3))(newline)))))
-!#
-
-(define *cached-stalin-c-files* (make-hash-table 997))
-
-(define (get-cached-stalin-key expanded-code)
- (list *rt-opt-stack-checks*
- *rt-opt-cpu-checks*
- expanded-code))
-
-(define (add-cached-stalin-c-file expanded-code basename c-file ec-funcs)
- (hash-set! *cached-stalin-c-files* (get-cached-stalin-key expanded-code) (list basename c-file ec-funcs)))
-
-(define (get-cached-stalin-c-file expanded-code cont)
- (define cached (hash-ref *cached-stalin-c-files* (get-cached-stalin-key expanded-code)))
- (if cached
- (apply cont cached)
- #f))
-
-#!
-(define (link-stalin-file c-file)
- (define o-file (<-> c-file ".o"))
- (if (not (= 0 (system (<-> "gcc " "-I" snd-header-files-path " " c-file " -shared -o " o-file " -fpic"))))
- (throw 'compilation-error))
- (delete-at-exit o-file)
- o-file)
-!#
-
-(eval-c "-O0 -lpcl"
- "#include <pcl.h>"
-; (<int> use_some_stack (lambda ((<int> counter)
-; (<void**> where))
-; (<int> dummy)
-; (cond ((== counter 20)
-; (set! *where &dummy)
-; (return counter))
-; (else
-; (return (+ 1
-; (use_some_stack (+ counter 1) where)))))))
-
-; (<nonstatic-void*> rt_get_stack_address (lambda ()
-; (<int> dummy)
-; (<char*> ret)
-; (use_some_stack 0 &ret)
-; (return ret)))
- (<nonstatic-void*> rt_get_stack_address (lambda ()
- (<int> dummy)
- (return &dummy)))
- ;; hope this works.
- (<nonstatic-int> rt_call_and_use_some_stack (lambda ((<int> counter)
- ((<int> (<void>)) func))
- (if (== counter 2)
- (return (+ (func) counter))
- (return (+ 1
- (rt_call_and_use_some_stack (+ counter 1) func))))))
- (<nonstatic-void> rt_no_return_co_resume (lambda ()
- (co_resume))))
-
-
-
-(define-ec-struct <RT_Stalin>
- <void*> freefunc)
-
-
-(define (link-stalin-file basename c-file ec-funcs)
- (c-display "c-file:" c-file)
- (apply eval-c-non-macro
- `(,(<-> "-I" snd-header-files-path " -fno-strict-aliasing -I/home/kjetil/site/include" " -lpcl")
- #f ;c-file
-
- "#include <jack/jack.h>"
- "#include <jack/ringbuffer.h>"
- "#include <rollendurchmesserzeitsammler.h>"
- "#include <pcl.h>"
- "#include <ucontext.h>"
-
- ,(if *use-alsa-midi*
- "#include <alsa/asoundlib.h>"
- "/* */")
-
- "#include <math.h>"
- "#include <_sndlib.h>"
- "#include <clm.h>"
- "#include <xen.h>"
- "#include <vct.h>"
- "#include <clm2xen.h>"
-
- (shared-struct <RT_Engine>)
- (shared-struct <RT_Stalin>)
- (shared-struct <mus_rt_faust>)
-
- "typedef void (*FaustComputeFunc)(void* self,int len,float** inputs,float** outputs)"
-
- (<int> remove_me 0)
-
- (<struct-RT_Engine*> rt_engine)
-
- ;;(<int64> g_time) ;; Not used so far.
- (<int> g_startframe)
- (<int> g_endframe)
- (<int> block_time 0)
-
- (<coroutine_t> dsp_coroutine)
-
- (<tar_heap_t*> heap)
-
- (<char*> start_dyn NULL)
- (<char*> end_dyn NULL)
- (<char*> stack_top NULL)
- (<char*> stack_bot NULL)
-
- (<jack_time_t> block_enter_time 0)
-
- (get-proto rt_debug)
- (get-proto rt_get_stack_address)
- (get-proto rt_call_and_use_some_stack)
- (get-proto rt_receive_midi)
-
- ,bus-struct
-
- (<struct-rt_bus*> outbus (cast <struct-rt_bus*> ,(<-> (number->string (cadr (SCM_SMOB_DATA *out-bus*)))
- "UL")))
- (<struct-rt_bus*> inbus (cast <struct-rt_bus*> ,(<-> (number->string (cadr (SCM_SMOB_DATA *in-bus*)))
- "UL")))
-
- (<float*> sounddata)
-
- (run-now
- (fprintf stderr (string "alloc start\\n"))
- (set! sounddata (calloc (sizeof <float>) (* ,*rt-block-size*
- ,*rt-num-output-ports*)))
- (fprintf stderr (string "alloc end\\n")))
-
- (<void> clean_sounddata (lambda ()
- (memset sounddata 0 (* (sizeof <float>)
- ,*rt-block-size*
- ,*rt-num-output-ports*))))
-
-
- (<void> write_bus (lambda ((<int> ch)
- (<int> framenum)
- (<float> val))
- (if (>= ch outbus->num_channels)
- return)
- (<struct-rt_bus_data-*> data "&outbus->data[(outbus->num_channels*framenum)+ch]")
- (+= data->val val) ;; outbus is nulled out before each block anyway.
- ;;(if (< data->last_written_to block_time)
- ;; (set! data->val val)
- ;; (+= data->val val))
- ;;(set! data->last_written_to block_time)
- ))
- (<void> sounddata_to_bus (lambda ((<int> startframe)
- (<int> endframe))
- (for-each 0 ,*rt-num-output-ports*
- (lambda (ch)
- (for-each startframe endframe
- (lambda (framenum)
- ,(<-> "write_bus(ch,framenum,"
- "sounddata[ch*" (number->string *rt-block-size*)
- "+framenum])")))))))
-
- (run-now
- (fprintf stderr (string "new heap start\\n"))
- (set! heap (tar_create_heap))
- (scm_gc_register_collectable_memory heap ,(+ (* *tar-nonatomic-heap-size* 2) (* *tar-max-mem-size* 4)) (string "rollendurch/stalin heap"))
- (fprintf stderr (string "new heap end\\n"))
-
- (if (== 0 (tar_get_dynamic_roots_for (cast <char*> &heap) &start_dyn &end_dyn))
- (printf (string "Error. Could not find dynamic start and end. Not good.\\n")))
- )
-
- (<void> block_ready_internal (lambda ()
- (set! stack_bot (cast <char*> (rt_get_stack_address)))
- ;;(rt_debug (string "stack_bot: %p\\n") stack_bot)
- (co_resume)))
-
- "void rt_no_return_co_resume(void) __attribute__ ((noreturn))"
-
- "static void myexit(void) __attribute__ ((noreturn))"
- ,@(if (or #t (= 0 (system (<-> "grep exit " c-file))))
- '((<void> myexit (lambda ()
- (set! remove_me 1)
- (rt_no_return_co_resume))))
- '())
-
- (<void> myerror (lambda ((<char*> string))
- (rt_debug string)
- (set! remove_me 1)
- (rt_no_return_co_resume)))
-
- "struct linkedlist{struct linkedlist* next;}"
- (<struct-linkedlist*> gc_uncollectable_mem NULL)
- (<void*> tar_alloc_uncollectable (lambda ((<size_t> size))
- (<struct-linkedlist*> ret (tar_alloc heap (+ size (sizeof <struct-linkedlist*>))))
- (set! ret->next gc_uncollectable_mem)
- (set! gc_uncollectable_mem ret)
- (return ret+1)))
-
- ,@ec-funcs
-
- (<void> health_exit (lambda ()
- (rt_debug (string ,(<-> "Scheme file: \\\"" basename ".scm\\\"")))
- (set! remove_me 1)
- (rt_no_return_co_resume)))
-
- (<void> print_backtrace
- (lambda ((<int> num)
- (<char*> function_name))
- (rt_debug (string "%d: %s") num function_name)))
-
- (<int> cpu_check_counter 1)
-
- (<int> check_health_internal
- (lambda ()
- (<char*> das_stack_bot (cast <char*> (rt_get_stack_address)))
- (if (== cpu_check_counter (* 2 4096)) ;; (jack_get_time) sometimes takes a lot of time. Can't call it that often.
- (set! cpu_check_counter 0)
- cpu_check_counter++)
- (cond ((and ,(if *rt-opt-stack-checks* 1 0)
- (< das_stack_bot
- (- stack_top ,*stalin-stack-limit*)))
- (set! stack_bot das_stack_bot)
- (rt_debug (string "Error. Running out of stack. (Endless loop?)\\n\\nLast visisted: (newest->oldest)"))
- (return 1))
- ((and ,(if *rt-opt-cpu-checks* 1 0)
- (> block_enter_time 0)
- (== cpu_check_counter 0)
- (> (jack_get_time)
- (+ block_enter_time 1000000)));,(c-integer (* 1
- ; (/ (* 1000000 *rt-block-size*)
- ; (rte-samplerate)))))))
- (rt_debug (string
- ,(<-> "Using too much CPU. (%fms-%fms=%fms) Stopping instrument in case this is an endless loop."
- "In case not, it might help to turn off runtime checks using the :runtime-checks option for <rt-stalin.\\n"))
- (cast <float> (/ (cast <double> (jack_get_time)) 1000.0))
- (cast <float> (/ (cast <double> block_enter_time) 1000.0))
- (- (cast <float> (/ (cast <double> (jack_get_time)) 1000.0))
- (cast <float> (/ (cast <double> block_enter_time) 1000.0))))
- (return 2))
- (else
- (return 0)))))
-
- "#define fprintf(a,...) rt_debug(__VA_ARGS__)"
- "#define exit(a) myexit()"
- ;;"static char* dynstart"
- ,(<-> "#include \"" c-file "\"")
- ;;"static char* dynend"
- "#undef fprintf"
- "#undef exit"
-
- ;; public
- (functions->public
- (<int> process_func (lambda ((<void*> something)
- (<int> startframe)
- (<int> endframe))
-
- ;;(fprintf stderr (string "remove_me: %d, something: %p\\n") remove_me something)
-
- ;; If remove_me was set during init. (audio thread is not entered in that case)
- ;;(if (!= 0 remove_me)
- ;; (return remove_me))
-
- (<static-int> first_run 0)
- (when (or (== 0 startframe)
- (== 1 first_run))
- (set! block_enter_time (- (jack_get_time)
- (/ (* 1000000 startframe)
- ,(rte-samplerate))))
- (clean_sounddata)
- (set! first_run 0))
-
- (tar_before_using_heap heap)
-
- (set! g_startframe startframe)
- (set! g_endframe endframe)
-
- ;;(set! g_time (+ rt_engine->block_time startframe))
-
- (let* ((old_heap <tar_heap_t*> (clm_set_tar_heap heap))
- (old_ef <error_func_t> (clm_set_error_func myerror)))
- (co_call dsp_coroutine)
- (clm_set_error_func old_ef)
- (clm_set_tar_heap old_heap))
-
- (when (== 0 (% block_time (* ,*rt-block-size*
- (/ (* 2 (cast <int> ,(rte-samplerate)))
- ,*rt-block-size*))))
- (rt_debug (string "data: %d, stack: %d %p %p, mem_used: %d/%d")
- (abs (- end_dyn start_dyn))
- (abs (- stack_top stack_bot))
- stack_bot
- stack_top
- (tar_get_used_mem heap)
- (tar_get_used_atomic_mem heap)
- ))
-
- (if (tar_after_using_heap heap)
- (when (== 0 remove_me)
- (rt_debug (string "data: %d, stack: %d %p %p, mem_used: %d/%d")
- (abs (- end_dyn start_dyn))
- (abs (- stack_top stack_bot))
- stack_bot
- stack_top
- (tar_get_used_mem heap)
- (tar_get_used_atomic_mem heap)
- )
-
- (tar_add_root_concurrently heap start_dyn end_dyn) ; data
- ;;(tar_add_root heap &dynstart &dynend) ;; This might work, but performance-vice it shouldn't matter. Probably better to be safe and just use start_dyn and end_dyn.
- (tar_add_root_concurrently heap stack_bot stack_top) ; stack
-
- ;;(tar_add_root heap (- stack_top 120000) stack_top) ; stack
- (tar_add_root_concurrently heap dsp_coroutine (+ (cast <char*> dsp_coroutine)
- (EC_MAX (sizeof <ucontext_t>) ;registers
- (sizeof <jmp_buf>))))
- (tar_start_gc heap)
- ))
-
- (sounddata_to_bus startframe endframe)
-
- (if (== endframe ,*rt-block-size*)
- (+= block_time ,*rt-block-size*))
-
- (when (< stack_bot
- (- stack_top ,*stalin-stack-limit*))
- (rt_debug (string "Error. Running out of stack. This might be an error. Stopping instrument. (%d)\\n")
- (abs (- stack_top stack_bot)))
- (rt_debug (string "If you need more stack, increase *stalin-stack-size* and *stalin-stack-limit*.\\n"))
- (set! remove_me 1))
-
- (return remove_me))))
-
-
- (<void> dsp_coroutine_func (lambda ((<void*> arg))
- (set! stack_top (rt_get_stack_address))
- (rt_call_and_use_some_stack 0 schememain)))
-
-
- ;; Merk! Veldig lett aa benchmarke gc naa. Bare kjoer clinger's scheme tests med rollend.. og hbgc.
-
- ;; init (note that (debug) shouldn't be run from guile thread. Must fix)
- (run-now
- (set! dsp_coroutine (co_create dsp_coroutine_func NULL NULL ,*stalin-stack-size*))
- (co_call dsp_coroutine))
-
-;;; ;; init (note that (debug) shouldn't be run from guile thread. Must fix)
-;;; (run-now
-;;; (set! dsp_coroutine (co_create dsp_coroutine_func NULL NULL ,*stalin-stack-size*))
-;;; (let* ((old_heap <tar_heap_t*> (clm_set_tar_heap heap)))
-;;; (if (!= NULL old_heap)
-;;; (fprintf stderr (string "Error: old_heap was not NULL (old: %p, new: %p)!\\n") old_heap heap))
-;;; (tar_entering_audio_thread heap)
-;;; (co_call dsp_coroutine)
-;;; (when (tar_leave_audio_thread heap)
-;;; (tar_add_root heap start_dyn end_dyn) ; data
-;;; (tar_add_root heap stack_bot stack_top) ; stack
-;;; ;;(tar_add_root heap (- stack_top 120000) stack_top) ; stack
-;;; (tar_add_root heap dsp_coroutine (+ (cast <char*> dsp_coroutine)
-;;; (EC_MAX (sizeof <ucontext_t>) ;registers
-;;; (sizeof <jmp_buf>))))
-;;; (tar_run_gc heap))
-;;; (clm_set_tar_heap NULL)))
-
- (<void> free_globals_func (lambda ((<struct-RT_Stalin*> rt_stalin)
- (<int> do_I_free_questionmark))
- (if (== 0 do_I_free_questionmark)
- (fprintf stderr (string "Yea. Hepp, freeing stalin\\n")))
- (when (== 1 do_I_free_questionmark)
- (fprintf stderr (string "Hepp, freeing stalin\\n"))
- (co_delete dsp_coroutine)
- (scm_gc_unregister_collectable_memory heap ,(+ (* *tar-nonatomic-heap-size* 2) (* *tar-max-mem-size* 4)) (string "rollendurch/stalin heap"))
- ;;(tar_delete_heap heap true) ;; tar_init_block is always called
- ;;(if (> rt_engine->num_procfuncs 0)
- ;; (tar_delete_heap heap true)
- ;; (tar_delete_heap heap false))
- (free sounddata)
- (fprintf stderr (string "Hepp, stalin freed\\n"))
- )))
-
- (public
- (<void-*> make-globals-func (lambda ((<struct-RT_Engine-*> engine))
- (set! rt_engine engine)
-
- (if (== 1 remove_me)
- (return NULL))
- (<struct-RT_Stalin*> rt_stalin (calloc 1 (sizeof (struct <struct-RT_Stalin>))))
- (set! rt_stalin->freefunc free_globals_func)
- (return rt_stalin))))
- ))
- (let ((globals (make-globals-func (-> *rt-engine* engine-c))))
- (if (not globals)
- #f
- (list (process_func)
- globals))))
-
-
-
-#!
-(link-stalin-file (get-stalin-c-file (schemecode->file (generate-stalin-code0 '((display (+ 2 3))(newline))))) '((rt_write_out_bus)))
-(link-stalin-file (get-stalin-c-file (schemecode->file (generate-stalin-code0 '((display (+ 5 3))(newline))))))
-(link-stalin-file (get-stalin-c-file (schemecode->file (generate-stalin-code0 '((display (+ 5 300))(newline))))))
-(print_stuff)
-(callmain)
-!#
-
-(define last-stalin #f)
-
-(define (<rt-stalin-do> code)
-
- (set! last-stalin code)
- (rt-gensym-reset)
-
- (catch 'compilation-error
- (lambda ()
- (fix-defines
-
- (define expanded-code
- (generate-stalin-code0
- `( (spawn
- ,@code)
- (insert-coroutine-in-queue! _sound-coroutine
- _next-scheduled-time
- 3) ;; block priority. (lowest)
- ((=> coroutine:_current-coroutine :continuation)))))
-
- (call/cc
- (lambda (return)
-
- (define (link-and-run basename c-file ec-funcs)
- (define funcs (link-stalin-file basename c-file ec-funcs))
- (return (if funcs
- (let ()
- (define realtime (<realtime> (car funcs) (cadr funcs) '()))
- (-> realtime play)
- realtime)
- #f)))
-
- (get-cached-stalin-c-file expanded-code link-and-run)
-
- (let ()
- (define generated (generate-stalin-code expanded-code))
- ;;(c-display "generated" generated)
- ;;(check-stalin-syntax generated)
- (get-stalin-c-file (schemecode->file generated)
- (lambda (basename c-file)
- (define ec-funcs (get-stalin-ec-funcs generated))
- (add-cached-stalin-c-file expanded-code basename c-file ec-funcs)
- (link-and-run basename c-file ec-funcs))))))))
-
- (lambda x
- #f)))
-
-
-
-(define-macro <rt-stalin>
- (labamba (:key (stack-checks #t)
- (cpu-checks #t)
- (runtime-checks 'undefined)
- :rest code)
- (cond ((eq? #t runtime-checks)
- (set! stack-checks #t)
- (set! cpu-checks #t))
- ((eq? #f runtime-checks)
- (set! stack-checks #f)
- (set! cpu-checks #f)))
- `(begin
- (set! *rt-local-stalin-code-environment* (the-environment))
- (set! *rt-opt-stack-checks* ,stack-checks)
- (set! *rt-opt-cpu-checks* ,cpu-checks)
- (<rt-stalin-do> ',code))))
-
-
-#!
-(pretty-print (generate-stalin-code0 '((+ 2 3 (add 50 (add 90))))))
-!#
-
diff --git a/rt-various.c b/rt-various.c
deleted file mode 100644
index 286b0ea..0000000
--- a/rt-various.c
+++ /dev/null
@@ -1,207 +0,0 @@
-
-#include <mus-config.h>
-
-#ifdef WITH_RT
-
-#include <string.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <stdarg.h>
-#include <errno.h>
-#include <sched.h>
-
-#include "rt-various.h"
-
-#include "_sndlib.h"
-#include "clm.h"
-
-
-/* Stalin stuff. */
-
-int fix_stalin_c_source(char* infile, char *outfile){
- char temp[10000];
- FILE *file=fopen(infile,"r");
- FILE *out=fopen(outfile,"w");
- while(fgets(temp,9990,file)){
- if(0
- || temp[0]==' '
- || temp[0]=='#'
- || temp[0]=='{'
- || (!isalpha(temp[0]))
- )
- if(!strcmp("#include <gc.h>\n",temp))
- fputs("#include <rt-various.h>\n"
- "#define GC_malloc_atomic(size) tar_alloc(heap,size)\n"
- "#define GC_malloc(size) tar_alloc(heap,size)\n"
- "#define GC_malloc_atomic_uncollectable(size) tar_alloc(heap,size)\n"
- "#define GC_malloc_uncollectable(size) tar_alloc_uncollectable(size)\n"
- "#define GC_free(mem) /* */\n"
- ,out);
- else
- fputs(temp,out);
- else{
- int len=strlen(temp);
- if(0
- || (temp[len-3]!='}' && temp[len-2]==';')
- || (temp[len-3]==';' && temp[len-2]=='}')
- || (temp[len-4]=='}' && temp[len-3]=='}' && temp[len-2]==';')
- || temp[len-2]=='/'
- || temp[len-2]==')'
- ){
- fprintf(out,"static ");
- if(!strcmp("int main(void)\n",temp))
- fputs("int schememain(void)\n",out);
- else
- fputs(temp,out);
- }else
- fputs(temp,out);
- }
- }
- fclose(out);
- fclose(file);
- return 0;
-}
-
-
-/* Rollendurchmesserzeitsammler stuff. */
-
-
-static pid_t mainpid=0;
-
-void init_rollendurchmesserzeitsammler(int a,int b,int c,int d,float e){
- mainpid=getpid();
- tar_init(a,
- b,
- c,
- d,
- e);
-}
-
-
-// Force linking of various functions in rollendurchmesserzeitsammler.
-void rt_various_dummy(void){
- fprintf(stderr,"It is an error to call this function.\n");
-
- tar_get_dynamic_roots_for(NULL,NULL,NULL);
- tar_init_block(1.0f);
- tar_before_using_heap(NULL);
- tar_after_using_heap(NULL);
- tar_add_root(NULL,NULL,NULL);
- tar_add_root_concurrently(NULL,NULL,NULL);
- tar_start_gc(NULL);
- tar_create_heap();
- tar_delete_heap(NULL,false);
- tar_alloc(NULL,0);
- tar_alloc_atomic(NULL,0);
- tar_get_used_mem(NULL);
- tar_get_used_atomic_mem(NULL);
-
- //tar_malloc_atomic_uncollectable(0);
- //tar_calloc_atomic_uncollectable(0,0);
- //tar_free_atomic_uncollectable(NULL);
- // tar_printstats();
- // tar_resetstats();
-}
-
-
-
-/* clm stuff */
-
-static tar_heap_t *clm_tar_heap=NULL;
-static error_func_t clm_error_func=NULL;
-
-tar_heap_t *clm_set_tar_heap(tar_heap_t *new_heap){
- tar_heap_t *ret=clm_tar_heap;
- clm_tar_heap=new_heap;
- return ret;
-}
-
-error_func_t clm_set_error_func(error_func_t new_error){
- error_func_t ret=clm_error_func;
- clm_error_func=new_error;
- return ret;
-}
-
-
-int rt_mus_error(int type,const char* fmt,...){
- int size;
- va_list argp;
- static char string[1024]; //Should be static, stack is limited in realtime.
-
- va_start(argp,fmt);
- vsprintf(string,fmt,argp);
- va_end(argp);
-
- if(clm_error_func==NULL)
- return mus_error(type,string);
- else
- clm_error_func(string);
- return -1;
-}
-
-
-void* clm_calloc_atomic(int num,size_t size,const char* what){
- if(clm_tar_heap==NULL || mainpid==0 || getpid()==mainpid){
- return calloc(num,size);
- }else{
- void *ret=tar_alloc_atomic(clm_tar_heap,num*size);
- if(ret==NULL){
- rt_mus_error(0,"clm.c: out of memory. (%s)",what);
- }
- return ret;
- }
-}
-
-
-void* clm_calloc(int num,size_t size,const char* what){
- if(clm_tar_heap==NULL || mainpid==0 || getpid()==mainpid){
- return calloc(num,size);
- }else{
- void *ret=tar_alloc(clm_tar_heap,num*size);
- if(ret==NULL){
- rt_mus_error(0,"clm.c: out of memory. (%s)",what);
- }
- return ret;
- }
-}
-
-void* clm_malloc_atomic(size_t size,const char* what){
- if(clm_tar_heap==NULL || mainpid==0 || getpid()==mainpid){
- return malloc(size);
- }else{
- void *ret=tar_alloc_atomic(clm_tar_heap,size);
- if(ret==NULL){
- rt_mus_error(0,"clm.c: out of memory. (%s)",what);
- }
- return ret;
- }
-}
-
-void* clm_malloc(size_t size,const char* what){
- if(clm_tar_heap==NULL || mainpid==0 || getpid()==mainpid){
- return malloc(size);
- }else{
- void *ret=tar_alloc(clm_tar_heap,size);
- if(ret==NULL){
- rt_mus_error(0,"clm.c: out of memory. (%s)",what);
- }
- return ret;
- }
-}
-
-void* clm_realloc(void* old,size_t newsize){
- if(clm_tar_heap==NULL || mainpid==0 || getpid()==mainpid){
- return realloc(old,newsize);
- }else{
- return memcpy(clm_malloc(newsize,"realloc"),old,newsize);
- }
-}
-
-
-void clm_free(void* p){
- if(clm_tar_heap==NULL || mainpid==0 || getpid()==mainpid){
- free(p);
- }
-}
-
-#endif // WITH_RT
diff --git a/rt-various.h b/rt-various.h
deleted file mode 100644
index b08ef93..0000000
--- a/rt-various.h
+++ /dev/null
@@ -1,33 +0,0 @@
-
-# include <rollendurchmesserzeitsammler.h>
-
-#ifdef __cplusplus
-# define LANGSPEC "C"
-#else
-# define LANGSPEC
-#endif
-
-
-extern LANGSPEC int fix_stalin_c_source(char* infile, char *outfile);
-
-extern LANGSPEC void init_rollendurchmesserzeitsammler(int a,int b,int c,int d,float e);
-
-// In clm.c returns the old heap.
-//tar_heap_t *clm_set_tar_heap(tar_heap_t *new_heap);
-extern LANGSPEC tar_heap_t *clm_set_tar_heap(tar_heap_t *new_heap);
-
-typedef void (*error_func_t)(char*);
-
-extern LANGSPEC error_func_t clm_set_error_func(error_func_t new_error);
-
-extern LANGSPEC int rt_mus_error(int type,const char* fmt,...);
-
-extern LANGSPEC void* clm_calloc_atomic(int num,size_t size,const char* what);
-extern LANGSPEC void* clm_calloc(int num,size_t size,const char* what);
-extern LANGSPEC void* clm_malloc_atomic(size_t size,const char* what);
-extern LANGSPEC void* clm_malloc(size_t size,const char* what);
-
-extern LANGSPEC void* clm_realloc(void* old,size_t newsize);
-extern LANGSPEC void clm_free(void* p);
-
-
diff --git a/rt.tex b/rt.tex
deleted file mode 100644
index c542e73..0000000
--- a/rt.tex
+++ /dev/null
@@ -1,1766 +0,0 @@
-
-% PDF/PS creation: ($1=rt)
-%
-% #!/bin/sh
-%
-% export TEXINPUT=/usr/share/texmf/tex/latex/base:/home/kjetil/slatex/.
-%
-% slatex `pwd`/$1.tex
-% slatex `pwd`/$1.tex
-% dvipdf $1.dvi $1.pdf
-% acroread $1.pdf
-% #dvips -f $1.dvi -o $1.ps
-% #ghostview $1.ps
-
-% html creation:
-%
-% tex2page rt.tex
-
-
-
-\documentclass[11pt,english,a4paper]{article}
-\usepackage{slatex}
-
-\usepackage[english]{babel}
-\usepackage[latin1]{inputenc}
-\usepackage{times}
-\usepackage{a4wide}
-\usepackage{epsfig}
-%%\usepackage{makeidx}
-
-%\usepackage{color}
-
-\setlength{\parskip}{0.5em}
-\setlength{\parindent}{0em}
-
-%\pagestyle{empty}
-
-\title{Realtime extension for the sound editor SND.}
-
-\author{Kjetil S. Matheussen}
-\date{\today}
-
-
-
-
-\begin{document}
-%\newpage
-\maketitle
-
-
-
-\newpage
-
-
-\tableofcontents
-
-%\listoffigures
-%\listoftables
-
-%%\makeindex
-
-\newpage
-
-
-%%\section{Introduksjon}
-\section{Introduction}
-
-
-The RT extension for the sound editor SND consists of two parts:
-
-\begin{description}
-\item[The RT Engine] - An engine for doing
- realtime signal processing.
-\item[The RT Compiler] - A compiler for a scheme-like programming language to generate realtime-safe code
- understood by the RT Engine.
-\end{description}
-
-As far as possible I have tried to make the language behave and
-look like scheme. However, there are no support for consing,
-creating closures, or other operations
-that can trigger a garbage collection, so its not really a very schemish
-language although it visually looks a lot like scheme. Perhaps consing
-and more advanced stuff will be implemented later, but it should not be
-necessary as the code blends very fine into Guile. If you need
-to create lists or closures, you have to do that in Guile.
-So, actually, technically, the language is more like C than Scheme.
-
-
-\subsection*{Acknowledgments}
-
-Thanks to the guile development team for creating Guile. Thanks to the gcc development
-team for creating gcc. Thanks to Bil Schottstaedt for creating SND. Thanks
-to Notam and the Art Council Norway for economical support making this software.
-
-
-
-
-\newpage
-
-\section{Quick Start}
-
-\subsection{Setting up SND and Emacs}
-
-This is how I work. Perhaps you'll find this setup comfortable.
-
-
-\begin{enumerate}
-
-\item{Download and unpack the latest version of snd-ls from http://www.notam02.no/arkiv/src/snd/}
-
-\item{Compile and install it like this:
- \begin{quote}
- ./build \newline
- ./install
-\end{quote}}
-
-\item{Link a ``scheme'' executable so that it points to the snd-ls binary
- \begin{schemedisplay}
- ln -s `which snd-ls` ~/bin/scheme
- \end{schemedisplay}}
-
-\item{Start the jack server}
-
-\item{Start emacs}
-
-\item{Maximize Emacs so that it fills the whole screen}
-
-\item{Load the file called ``rt-examples.scm'' into Emacs.}
-
-\item{Split your window in two parts: C-x 2}
-
-\item{Move the cursor to lower part window: C-x o}
-
-\item{Run snd-ls: M-x run-scheme}
-
-\item{Hide the SND window behind the Emacs window. We don't need to look at SND.}
-
-\item{Start the engine and compiler by writing \scheme|(load-from-path "rt-compiler.scm")|}
-
-\item{Move the cursor to the upper part window: C-x o}
-
-\item{Evaluate blocks of code by placing the cursor inside a block and press Ctrl+Alt+x}
-
-\end{enumerate}
-
-\subsection{Two short examples}
-
-
-1.
-\begin{schemedisplay}
-(let ((osc (make-oscil)))
- (<rt-play> 0 3
- (lambda ()
- (out (* 0.8
- (oscil osc))))))
-\end{schemedisplay}
-
-A sinus is/should be heard for three seconds.
-
-
-2.
-
-\begin{schemedisplay}
-(define-rt2 (fib n)
- (if (< n 2)
- n
- (+ (fib (- n 1))
- (fib (- n 2)))))
-
-(fib 30)
--> 832040.0
-\end{schemedisplay}
-
-
-
-(There are more examples in the file rt-examples.scm)
-
-
-
-
-
-\newpage
-\section{The RT Engine}
-
-The main purpose of the RT Engine is to receive \scheme|<realtime>| objects
-and provide ways to control exactly when a \scheme|<realtime>| objects
-processing function is being called. The API for doing this is hidden from the user, and is accessed by calling methods
-in the \scheme|<realtime>| class.
-
-
-
-\subsection{Features}
-\begin{itemize}
-\item{Realtime safe}
-\item{Jack driver}
-\item{Unlimited number of input and outputs}
-\item{The RT Engine is a class, and unlimited number of \scheme|<RT-Engine>|-instances can run simultaneously. \footnote{Well, actually just 16.}}
-\item{Protection mechanism provided to avoid locking up the computer when using too much CPU.}
-\item{Properly made priority queue system for events to ensure a stable CPU load (At least, I hope so).}
-\item{Controlled entirely from scheme using Guile}
-\end{itemize}
-
-\subsection{Guile Functions to control the Realtime Engine}
-
-\begin{description}
-
-\item[\scheme|(rte-pause)|] \hspace{\stretch{1}} \newline
- Pause the engine.
-
-\item[\scheme|(rte-continue)|] \hspace{\stretch{1}} \newline
- Starts running the engine after being paused.
-
-\item[\scheme|(rte-restart #:key num-input-ports num-output-ports)|] \hspace{\stretch{1}} \newline
- Stops and starts engine. If you only have stuck sounds, use \scheme|(rte-silence!)| instead.
- (Warning, theres a huge memory-leak when using this function.)
-
-\item[\scheme|(rte-silence!)|] \hspace{\stretch{1}} \newline
- Call this function if you have stuck sounds
- or \scheme|<realtime>| instances running.
- (This function is equivilant to the \scheme|freeAll| OSC message for Supercollider3)
-
-
-\item[\scheme|(rte-time)|] \hspace{\stretch{1}} \newline
- Returns the time in seconds since the engine was started. \newline
- \scheme|(rte-time)| = \scheme|(rte-frames)| / \scheme|(rte-samplerate)|
-
-\item[\scheme|(rte-samplerate)|] \hspace{\stretch{1}} \newline
- Returns the samplerate.
-
-\item[\scheme|(rte-frames)|] \hspace{\stretch{1}} \newline
- Returns the number of frames since the engine was started.
-
-\item[\scheme|(rte-is-running?)|] \hspace{\stretch{1}} \newline
- Returns true if engine is running. (Ie. not paused)
-
-\item[\scheme|(rte-max-cpu-usage)|] \hspace{\stretch{1}} \newline
- This is a setter-function. The engine will stop calling further
- \scheme|<realtime>| instances if the cpu-usage for the jack client
- is higher than \scheme|(rte-max-cpu-usage)|. This is a safety mechanism to avoid
- locking up the computer or jack to kill the client, which
- can be unfortunate or embarrassing in certain situations.
- Note however that if exactly 1 \scheme|<realtime>| instance is using too much
- cpu, this mechanism will not work.
- The default value is set to 80. At least on my machine, this is a comfortable
- value, because the machine is still quite responsive at 80\%.
-
-
-\item[\scheme|(rte-info)|] \hspace{\stretch{1}} \newline
- Returns a list of 7 elements:
- \begin{enumerate}
- \item Current size of the priority queue.
- \item Size of the priority queue.
- \item Number of lost events because the priority queue was full.
- \item Number of events waiting to be run.
- \item Number of \scheme|<realtime>| instances currently running.
- \item CPU load reported by the jack client.
- \item Number of times the execution of \scheme|<realtime>| instances
- have been stopped because the cpu-usage was higher than \scheme|(rte-max-cpu-usage)|.
- This number is mostly useful when being compared to a previous
- value, or to check whether its higher than 0.
- \end{enumerate}
-
-\end{description}
-
-
-\subsection{Global variables}
-
-\begin{description}
-
-\item[\scheme|*rt-engine*|] $ $ \newline
- The main object, an instance of \scheme|<rt-engine>|.
- Evaluate \scheme|(-> *rt-engine* dir)| to get the name of all the methods and subclasses.
-
-\item[\scheme|*rt-num-input-ports*|] $ $ \newline
- Number of input jack ports. You can define this variable before loading rt-compiler.scm or rt-engine.scm
- to override the default value of 8.
-
-\item[\scheme|*rt-num-output-ports*|] $ $ \newline
- Number of output jack ports. You can define this variable before loading rt-compiler.scm or rt-engine.scm
- to override the default value of 8.
-
-\item[\scheme|*out-bus*|] $ $ \newline
- The bus connected to the soundcard output.
-
-\item[\scheme|*in-bus*|] $ $ \newline
- The bus connected to the soundcard input.
-
-\item[\scheme|*rt*|] $ $ \newline
- Always contains the last created rt object:
- \begin{schemedisplay}
- (<rt-out> (oscil))
- (-> *rt* stop)
- \end{schemedisplay}
-
-\end{description}
-
-
-\newpage
-\section{The RT compiler}
-
-
-The RT compiler works by translating the Scheme-like input-code into s-expression based
-C-code, which is further translated into normal C-code by the \scheme|eval-c| macro.
-The \scheme|eval-c| macro is found in the file eval-c.scm. \scheme|eval-c| does also the compiling and linking
-by calling gcc.
-
-
-\subsection{Features}
-
-\begin{itemize}
-\item{Compilation of simple lisp functions into machine code.}
-\item{All compiled code should normally be hard real time safe.}
-\item{The compiled code should be so fast, that theres normally nothing to gain by
- writing a function in C. At least, thats the plan, its currently not always true, although
- not far from.}
-\end{itemize}
-
-
-\subsection{Macros and functions to compile and run rt-functions}
-
-\begin{description}
-\item[\scheme|(rt-compile ...)|] \hspace{\stretch{1}} Macro \newline
-
- $ $ \begin{schemedisplay}
- (define a (rt-compile (lambda (b c)
- (* b c))))
-
- \end{schemedisplay}
-
-%%%%%
-
-\item[\scheme|(rt-c ...)|] \hspace{\stretch{1}} Macro \newline
-
-
-Same as rt-compile
-
-
-%%%%%
-
-\item[\scheme|(rt-funcall ...)|] \hspace{\stretch{1}} Macro \newline
-
- $ $ \begin{schemedisplay}
- (rt-funcall a 2 3)
- => 6.0
-\end{schemedisplay}
-
-%%%%%
-
-\item[\scheme|(rt-func ...)|] \hspace{\stretch{1}} Macro \newline
-
- $ $ \begin{schemedisplay}
- (define a (rt-func (lambda (b c)
- (* b c))))
- (a 2 3)
- => 6.0
- \end{schemedisplay}
-
-%%%%%
-
-\item[\scheme|(rt-safety ...)|] \hspace{\stretch{1}} Setter function \newline
-
-
- rt-safety is a setter function. If set to 0, no runtime error checking is performed.
- Its safe to set \scheme|(rt-safety)| to 0 if you don't get any ``RT RUNTIME ERROR'' error
- messages to stderr when running your function, and you are sure thats impossible to happen.
- On the other hand, if you do see an ``RT RUNTIME ERROR'' message printed to stderr when running
- your function, theres a good chance you will lock up your machine by setting \scheme|(rt-safety)|
- to 0.
-
- For operations on lists, pairs and vectors, this could have an impact on the performance.
- But, generally, don't expect to see a big improvement in the performance by setting it to 0.
-
-
-
-%%%%%
-
-\item[\scheme|(<rt> ...)|] \hspace{\stretch{1}} Macro \newline
-
-
-Creates a subclass of \scheme|<realtime>| :
- \begin{schemedisplay}
- (define a (<rt> (lambda ()
- (out (oscil osc)))))
- \end{schemedisplay}
-
-
-%%%%%
-
-\item[\scheme|(<rt-play> ...)|] \hspace{\stretch{1}} Macro \newline
-
-Creates a subclass of \scheme|<realtime>| :
-
- \begin{schemedisplay}
- (<rt-play> (lambda ()
- (out (- (random 1.8) 0.9))))
- [white noise is being generated]
-
- (<rt-play> 1
- (lambda ()
- (out (- (random 1.8) 0.9))))
- [one second later, white noise is being generated]
-
- (<rt-play> 1 10
- (lambda ()
- (out (- (random 1.8) 0.9))))
- [one second later, white noise is being generated for ten seconds]
-
- \end{schemedisplay}
-
-\scheme|<rt-play>| is a macro that calls \scheme|<rt>|.
-
-
-\item[\scheme|(<rt-play-abs> ...)|] \hspace{\stretch{1}} Macro \newline
- Same behavior as rt-play, except that the start-time is absolute time:
- \scheme|(<rt-play> 1 func)| is the same as \scheme|(<rt-play-abs> (+ 1 (rte-time)) func)|
-
-\item[\scheme|(rt-clear-cache!)|] \hspace{\stretch{1}} Function \newline
- Compiled rt-functions are cached into memory (currently not to disk).
- \scheme|(rt-clear-cache!)| clears the cache.
-
-
-\end{description}
-
-
-\subsection{The «realtime» class}
-
-The \scheme|<realtime>| class provides the following methods:
-
-\begin{itemize}
-
-\item{\scheme|(play-abs [start] [duration])| \hspace{\stretch{1}} Method \newline
- Starts playing at the absolute time \scheme|start|, stopping at the absolute time \scheme|(+ start duration)|. Default value for \scheme|start| is the current time.
- If \scheme|duration| is not specified, a stop command is not scheduled.}
-
-\item{\scheme|(stop-abs [end])| \hspace{\stretch{1}} Method \newline
- Stops playing at the absolute time \scheme|end|. Default value for \scheme|end| is the current time.}
-
-\item{\scheme|(play [start] [duration])| \hspace{\stretch{1}} Method \newline
- Starts playing \scheme|start| seconds into the future from the current time, stopping at \scheme|(+ start duration)| seconds into the future from the current time.
- Default value for \scheme|start| 0.
- If \scheme|end| is not specified, a stop command is not scheduled.}
-
-\item{\scheme|(stop [end])| \hspace{\stretch{1}} Method \newline
- Stops playing \scheme|end| seconds into the future from the current time. Default value for \scheme|end| is 0}
-
-\end{itemize}
-
-
-
-\subsection{Various}
-
-\begin{itemize}
-
-\item{For define-rt, I have the following lines in my .emacs file:}
-
- \begin{schemedisplay}
- (font-lock-add-keywords
- 'scheme-mode
- '(("(\\(define-rt\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 (cond ((match-beginning 1) font-lock-function-name-face)
- ((match-beginning 2) font-lock-variable-name-face)
- (t font-lock-type-face))
- nil t))))
- \end{schemedisplay}
-
-
-\item{The definstrument-macro is implemented so that any rt-code
- is compiled when the instruments definition is being evaluated, and
- not when being called.}
-
-\item{
- To extend the RT language with your own functions written in C, look at how
- the \scheme|<rt-func>| function works in rt-compiler.scm. The \scheme|rt-renamefunc| macro may
- also be of large use. Beware though that the API for \scheme|<rt-func>| and \scheme|rt-renamefunc|
- might still change.
-
-}
-
-\end{itemize}
-
-
-
-
-\newpage
-\section{The RT programming language}
-
-
-\subsection{Features}
-
-\begin{itemize}
-\item{Provides a subset of the scheme r5rs standard}
-\item{Most of CLM is supported as well as various other functions specific for snd, sndlib and guile.}
-\item{Lisp macros}
-\item{Types are automatically determined, but the common lisp operators \scheme|declare|[3] and \scheme|the| can
- be used on numeric variables and expressions to help the compiler produce more efficient code.}
-\item{Guile can both read and write variables which is used inside
- the compiled functions.}
-\item{Possible to read Guile variables. \footnote{Writing Guile variables only half-worked,
- and sometimes made guile segfault, so I removed it.}}
-\item{It \underline{should} not be possible to cause a segfault by running
- a compiled functions. But for now, I know that at least when dividing or moduling by
- 0, you will get a segfault. I don't know how to handle that situation yet.
- There are also probably a lot of other situations that might cause
- a segfault. Please send me code that cause segfaults.}
-\item{Error checking. If there is an error in your code that
- cause the compilation to stop, you sometimes get a human readable
- explanation about it, if you are lucky.}
-\end{itemize}
-
-
-\subsection{Limitations}
-
-\begin{itemize}
-\item{A variable can not change type. No dynamic typing.}
-\item{No allocation (consing, vectors, etc.)}
-\item{No closures}
-\item{No optional arguments or keyword arguments. (Optional arguments
- are supported with the help of macros though.)}
-\item{No boolean type or symbols: \scheme|#f|=0, \scheme|#t|=1}
-\item{Not possible to call Guile functions.}
-\item{Not possible to set Guile variables. (There are ways around this though)}
-\item{No tail-recursiveness.}
-\item{The function to determine types is wrongly designed, so you sometimes
- have to manually set the types for variables by using \scheme|declare| or \scheme|the|.
- (its a bug that should be fixed, but theres other more important tasks
- placed earlier in the queue.)}
-\end{itemize}
-
-
-\subsection{Types}
-
-
-\begin{itemize}
-\item{The rt-language automatically detects the types for variables.}
-
-\item{A variable can not change type.}
-
-\item{There is no boolean type, so \#f=0 and \#t=1.}
-
-\item{To improve the performance, use \scheme|declare| and \scheme|the| to specify types, just like in common lisp.
- See below for usage of \scheme|declare| and \scheme|the|.
- \footnote{Note also that although the compiler tries to determine the most fitted type for a numeric variable, it often fails.
- So in some situations you have to declare numeric variables although it shouldn't have been necesarry. For an example,
- study the C-code generated by the instrument called \scheme|extremely-simple-delay| found in the file rt-examples.scm. Two of the
- local float variables should have been ints. This is because the compiler is buggy. It will hopefully be fixed though.}
-}
-
-\item{It is no point to declare non-numeric variables. But it won't hurt
- either, unless wrongly declared, which will only make the compilation stop.}
-
-\item{Supported numeric types: \scheme|<int>|, \scheme|<float>| and \scheme|<double>| . These are
- directly mapped to the int, float and double C-types.}
-
-\item{If there are more alternative types than one for a variable, and
- its type has not been declared with \scheme|declare|, the type will
- be determined based on the following rules for merging different types: \newline
-
- \begin{tabular}{|l|l|l|l|l|} \hline
- \scheme|<int>| & + & \scheme|<float>| & $->$ & \scheme|<float>| \\ \hline
- \scheme|<float>| & + & \scheme|<double>| & $->$ & \scheme|<double>| \\ \hline
- \scheme|<int>| & + & \scheme|<double>| & $->$ & \scheme|<double>| \\ \hline
- \scheme|<void>| & + & Any type & $->$ & \scheme|<void>| \\ \hline
- \end{tabular}
-
- $ $ \newline
-
- Everything else is illegal.}
-
-\item{I guess there can be a need for an int type that is guaranteed
- to be at least, or exactly, 64 bits wide. Please tell me if you need such a type,
- and what its name should be.}
-
-\item{Guile variables (ie. of type \scheme|<SCM>|) are automatically converted on the fly to the
- proper types:
- \begin{schemedisplay}
- (let ((a (the <int> (vector-ref vec 2))))
- a)
- \end{schemedisplay}
- Will result in code that works like this:
- \begin{schemedisplay}
- (let ((a (scm_to_int (vector-ref vec 2))))
- a)
- \end{schemedisplay}
- Without using the \scheme|the| operator, it would have worked like this:
- \begin{schemedisplay}
- (let ((a (the <SCM> (vector-ref vec 2))))
- a)
- \end{schemedisplay}
-
- For the first example, if \scheme|(vector-ref vec 2)| hadn't been a numeric value, or
- there aren't as many as 3 elements in \scheme|vec|,
- an error had been caught, and the evaluation of the compiled rt-code
- would stop.}
-
-\end{itemize}
-
-
-\subsection{Closures}
-
-Closures are not supported. And worse, there is currently
-no checking whether the code is safe in a language
-that doesn't support closures.
-
-The following code:
-
-\begin{schemedisplay}
-(define a (rt-compile (lambda ()
- (let ((a (lambda (b)
- (declare (<int> b))
- (lambda ()
- b))))
- ((a 50))))))
-(rt-funcall a)
-\end{schemedisplay}
-
-...returns 0. \footnote{The current behavior guarantee the return value to be 0. But that behavior
- might change.}
-
-
-(Note, I manually had to add \scheme|(declare (<int> b))| to make it compile
-because of a bug in the compiler.)
-
-
-
-\subsection{Functions}
-
-\begin{schemedisplay}
-(define-rt (add-really a b)
- (+ a b))
-
-(define-rt (add a b)
- (add-really a b))
-
-(rt-funcall (rt-c (lambda ()
- (add 2 3))))
-=> 5
-\end{schemedisplay}
-
-Optional, rest or keyword arguments are not supported.
-
-
-
-\subsection{Macros}
-
-
-Macros are straight forward:
-
-\begin{schemedisplay}
-(define-rt-macro (add . args)
- `(+ ,@args))
-
-(rt-funcall (rt-compile (lambda (a b c)
- (add a b c)))
- 2 3 4)
-=> 9
-\end{schemedisplay}
-
-
-And keyword arguments:
-
-\begin{schemedisplay}
-(define-rt-macro (add a1 a2 (#:a3 3) (#:a4 4) (#:a5 5))
- `(+ ,a1 ,a2 ,a3 ,a4 ,a5))
-
-(rt-funcall (rt-compile (lambda ()
- (add 1 2 #:a4 9))))
-=> 20
-\end{schemedisplay}
-[1+2+3+9+5]
-
-
-
-The function \scheme|rt-macroexpand| works the same as \scheme|macroexpand|, but for
-rt-macros. It can be used inside other rt-macros, and is currently used in
-the \scheme|if|, \scheme|min|, \scheme|max|, \scheme|and| and \scheme|or| macros to speed up some situations.
-
-
-When letting a variable name start with the prefix \scheme|expand/|, like this:
-\begin{schemedisplay}
- (define-rt-macro (add expand/a expand/b)
- `(+ a b))
- \end{schemedisplay}
- ..a and b are macroexpanded automatically. In some situations, this can cause
- increased performance. (But not in the short add macro above though.)
-
-
-For the define-rt-macro macro, I have the following lines in my .emacs file:
-
-\begin{schemedisplay}
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(define-rt-macro\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face)
- (2 font-lock-constant-face
- nil t))))
-\end{schemedisplay}
-
-
-
-
-
-
-
-\subsection{Reading and writing rt-variables from the guile-side}
-
-\begin{schemedisplay}
-(definstrument (instrument)
- (let ((osc (make-oscil))
- (vol 0.8))
- (<rt-play> 0 10
- (lambda ()
- (out (* (oscil osc)
- vol))))))
-
-(define i (instrument))
-
-(-> i vol)
-=> 0.8
-
-(-> i osc)
-=> #<oscil freq: 440.000Hz, phase: 0.256>
-\end{schemedisplay}
-
-
-To change the volume:
-
-\begin{schemedisplay}
-(set! (-> i vol) 0.2)
-(-> i vol)
-=> 0.2
-\end{schemedisplay}
-
-To change the frequency:
-
-\begin{schemedisplay}
-(set! (mus-frequency (-> i osc)) 200)
-=> 200
-\end{schemedisplay}
-
-This will return an error:
-\begin{schemedisplay}
-(set! (-> i osc) (make-oscil))
-\end{schemedisplay}
-...because only numbers and buses can be set.
-
-
-
-
-
-\subsection{Shared variables}
-
-The guile-function \scheme|make-var| (with an optional value argument for value) allocates
-a variable that can be both read from and written to both from the guile and the rt side
-with the functions \scheme|read-var| and \scheme|write-var|:
-
-\begin{schemedisplay}
-(let ((vol (make-var)))
- (<rt-play> 0 10
- (lambda ()
- (out 0 (* (read-var vol) (in 0)))))
- (<rt-play> 0 10
- (lambda ()
- (out 1 (* (read-var vol) (in 1)))))
- (write-var vol 0.2)
- (in 5000
- (lambda ()
- (write-var vol 1.0))))
-\end{schemedisplay}
-
-(API might change)
-
-\scheme|make-glide-var|, \scheme|read-glide-var| and \scheme|write-glide-var| are functions
-which interpolates the read values to avoid large jumps. Check out source code for syntax.
-
-
-
-
-
-\subsection{Midi}
-
-Receiving alsa midi is supported. Check out rt-examples.scm for a quite large example.
-If you don't want alsa-midi (for example if you're running osx), set \scheme|*use-alsa-midi*|
-to \scheme|#f| before loading rt-compiler.scm.
-
-Receving inside the rt-process:
-\begin{schemedisplay}
-(<rt-play> (lambda ()
- (receive-midi (lambda (control data1 data2)
- (printf "gakk! %x %x %x\\n" control data1 data2)))))
-\end{schemedisplay}
-
-Receiving in guile:
-\begin{schemedisplay}
-(receive-midi (lambda (control data1 data2)
- (c-display control data1 data2)))
-\end{schemedisplay}
-
-To turn off receiving in guile, call the function \scheme|(stop-receiving-midi!)|.
-
-The guile and rt versions of receive-midi should not be used simultaniously since they
-read from the same alsa seq from two different threads without using mutex, semaphores or
-similar mechanisms.
-
-
-\subsection{Ladspa plugins}
-
-Ladspa-plugins are supported, altough a bit inefficiently. Using ladspa-plugins might also
-trigger bugs in some plugins because the framesize is currently always 1. The three
-plugins I have tried so far have worked fine though. \footnote{I think at least all swh-plugins should work
-fine because they seem to use a common ringbuffer to buffer up sound-data.}
-
-\scheme|make-ladspa| is a guile function that creates a plugin object. First argument is filename,
-and second is the name of the label.
-
-\scheme|ladspa-set!| is implemented both for guile and rt, and sets an input control-number.
-
-\scheme|ladspa-run| is an rt function. First argument is the plugin object, and second argument is a \scheme|vct|
-holding sound-data. The function returns a \scheme|vct|.
-
-\scheme|make-ladspa-gui| is a guile function that automatically makes a gui for the ladspa object. This one should
-hopefully be convenient to use to find default values. (see rt-examples.scm for an example)
-
-
-\begin{schemedisplay}
-(definstrument (ladspatest)
- (let ((am-pitchshift (make-ladspa "am_pitchshift_1433" "amPitchshift")))
- (<rt-play> (lambda ()
- (out (ladspa-run am-pitchshift
- (vct (in 0))))))))
-
-(define l (ladspatest))
-(ladspa-set! (-> l am-pitchshift) 0 0.5)
-(make-ladspa-gui l)
-(-> l stop)
-\end{schemedisplay}
-
-(API might change)
-
-
-
-
-
-
-
-\subsection{Routing signals}
-
-
-\subsubsection{Buses}
-
-To create a bus, use \scheme|make-bus|. \scheme|make-bus| takes one optional argument, which
-is number of channels. Default is 1.
-
-To read from a bus, use \scheme|read-bus|. To write to a bus, use \scheme|write-bus|.
-
-When writing to a bus, you add your signal if the bus had been written to in the current cycle.
-If not, the old value is overwritten.
-
-When reading, you always get the current value, unless the bus hadn't been written to for two
-or more cycles. Then you'll get zero.
-
-This behaviour is a bit different from Supercollider, but I think its better. I migh change
-the behaviour later though.
-
-
-
-\subsubsection{The in and out macros}
-
-The \scheme|in| and \scheme|out| macros are supposed to provide a convenient interface to the bus
-system. The basic way to play a sound to the soundcard is like this:
-\scheme|(write-bus *out-bus* sound)|. Instead, you can just write \scheme|(out sound)|.
-
-But thats not all. \scheme|in| and \scheme|out| also tries to automatically find out whether you are
-playing a VCT or just a single value, and which channel(s) to write to or read from.
-
-But thats not all either. The compiler automatically creates two special bus-variables
-called \scheme|out-bus| and \scheme|in-bus|, which, if \scheme|out-bus| \scheme|in-bus|
-aren't already declared locally \footnote{Never declare \scheme|in-bus| and \scheme|out-bus| in
-the toplevel!} is set to \scheme|*out-bus*| or \scheme|*in-bus*|. And since buses are settable,
-you can redefine outputs and inputs the way you like:
-
-\begin{schemedisplay}
- (definstrument (oscillator)
- (let ((osc (make-oscil)))
- (<rt-play> (lambda ()
- (out (oscil osc))))))
- (define o (oscillator))
- (define bus (make-bus 2))
- (set! (-> o out-bus) bus)
- (definstrument (volume vol)
- (<rt-play> (lambda ()
- (out (* vol (in))))))
- (volume 0.5 #:in-bus bus)
- (rte-silence!)
-\end{schemedisplay}
-
-This way, you very seldom should have the need to use \scheme|read-bus| and \scheme|write-bus|
-directly.
-
-
-In my .emacs file, I have the following lines to colorize \scheme|out| and \scheme|in|:
-
-\begin{schemedisplay}
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(out\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face
- nil t))))
-(font-lock-add-keywords
- 'scheme-mode
- '(("(\\(in\\)\\>\\s-*(?\\(\\sw+\\)?"
- (1 font-lock-keyword-face
- nil t))))
-\end{schemedisplay}
-
-
-
-\subsubsection{The syntax for in and out}
-
-This simple function will software monitor the two first channels for 10 seconds:
-\begin{schemedisplay}
-(<rt-play> 0 10
- (lambda ()
- (out 0 (in 0))
- (out 1 (in 1))))
-\end{schemedisplay}
-
-
-This function does the same, but swaps the channels:
-\begin{schemedisplay}
-(<rt-play> 0 10
- (lambda ()
- (out 0 (in 1))
- (out 1 (in 0))))
-\end{schemedisplay}
-
-
-This function does the same, but will mix both input-channels before sending
-the result to both channel 0 and 1.
-\begin{schemedisplay}
-(<rt-play> 0 10
- (lambda ()
- (out 0 1 (in 0 1))))
-\end{schemedisplay}
-
-
-
-This function does exactly the same as the one above, but by using a shorter syntax:
-\begin{schemedisplay}
-(<rt-play> 0 10
- (lambda ()
- (out (in))))
-\end{schemedisplay}
-
-
-
-This function will send the sum of the first two input-channels to
-the 10 first even-numbered output-channels:
-\begin{schemedisplay}
-(<rt-play> 0 10
- (lambda ()
- (out 0 2 4 6 8 10 12 14 16 18 (in))))
-\end{schemedisplay}
-
-
-
-
-This last argument for \scheme|out| can also be a vct. The following function
-will software monitor the two first channels for 10 seconds:
-\begin{schemedisplay}
-(<rt-play> 0 10
- (lambda ()
- (out (vct (in 0)
- (in 1)))))
-\end{schemedisplay}
-
-
-This function does the same, but for channel 2, 3 and 4:
-\begin{schemedisplay}
-(<rt-play> 0 10
- (lambda ()
- (out 2 (vct (in 2)
- (in 3)
- (in 4)))))
-\end{schemedisplay}
-
-
-This function does the same as the one above, but halves the volume:
-\begin{schemedisplay}
-(<rt-play> 0 10
- (lambda ()
- (out 2 (vct-scale! (vct (in 2)
- (in 3)
- (in 4))
- 0.5))))
-\end{schemedisplay}
-
-
-\textbf{Note that the API for out and in might change.} (although probably not too radically...)
-
-
-
-\subsubsection{The syntax for definstrument}
-
-When using the functions \scheme|in| or \scheme|out| inside a \scheme|definstrument| block, you can call the instrument with the hidden
-key-word arguments \scheme|out-bus| and \scheme|in-bus|.
-
-Example:
-
-\begin{enumerate}
-
-\item{First create an instrument, a simple oscillator.}
-
-\begin{schemedisplay}
- (definstrument (oscillator)
- (let ((osc (make-oscil)))
- (<rt-play> (lambda ()
- (out (oscil osc))))))
-\end{schemedisplay}
-
-\item{Make a bus with two channels}
-\begin{schemedisplay}
- (define bus (make-bus 2))
-\end{schemedisplay}
-
-\item{Let the oscillator play to the bus}
-\begin{schemedisplay}
- (oscillator #:out-bus bus)
-\end{schemedisplay}
-[No sound in the loudspeakers]
-
-\item{Connect the output from the oscillator to the soundcard}
-\begin{schemedisplay}
- (<rt-play> (lambda ()
- (out (read-bus bus))))
-\end{schemedisplay}
-
-\end{enumerate}
-
-
-
-\subsection{Using CLM}
-
-Almost all CLM classes are supported, as well as all their methods,
-and other functions. Most things should work as expected, hopefully.
-
-Exceptions:
-
-\begin{itemize}
-
-\item{CLM constructors are not supported:
-
-\begin{schemedisplay}
- (define func (rt (lambda ()
- (let* ((osc (make-oscil :frequency 440)))
- (oscil osc)))))
-
- [error]
-\end{schemedisplay}}
-
-
-\item{For all the generators that may require an input-function argument, (that is convolve, granulate, phase-vocoder
- and src), the input-function argument is not optional but must be supplied:
- \begin{schemedisplay}
- (src s
- (lambda (direction)
- (readin file)))
- \end{schemedisplay}
-}
-
-\item{\scheme|(mus-srate)| returns the samplerate specified by the current rt-driver (ie jack), not what SND reports.
- To avoid different values for mus-srate reported by snd and rt, \scheme|(set! (mus-srate) (rte-samplerate))|
- is called in the init-process of rt-engine. If you set \scheme|(mus-srate)| later (in Guile), you might get unexpected results.
-}
-
-\item{\scheme|(mus-srate)| is not settable.}
-
-\item{The CLM generators in-any and out-any are not available. You probably want to use read-bus and write-bus instead.}
-
-\item{readin has mostly been rewritten to be able to buffer the whole sound first instead of reading from harddisk while playing.
- The new readin also remembers which buffers are currently in use, so playing the same file many time simultaneously will not cause extra memory usage.
-
- There is another thing to be aware of though: While the following block should work as expected:
- \begin{schemedisplay}
- (let ((rs (make-readin "1.wav")))
- (<rt-play> 0 10
- (lambda ()
- (out (readin rs)))))
- \end{schemedisplay}
- The following block will not:
- \begin{schemedisplay}
- (let ((rs (vector (make-readin "1.wav")
- (make-readin "2.wav"))))
- (<rt-play> 0 10
- (lambda ()
- (out 0 (readin (vector-ref 0 rs)))
- (out 1 (readin (vector-ref 1 rs))))))
- \end{schemedisplay}
- [A run-time error-checker will make the function exit before doing anything, and no sound will be heard.]
-
- Instead you have to do:
- \begin{schemedisplay}
- (let ((rs (vector (make-rt-readin "1.wav")
- (make-rt-readin "2.wav"))))
- (<rt-play> 0 10
- (lambda ()
- (out 0 (readin (vector-ref 0 rs)))
- (out 1 (readin (vector-ref 1 rs))))))
- \end{schemedisplay}
-
-}
-
-\item{Short example of the use of readin, here's a file-player running in an endless loop:
-
-\begin{schemedisplay}
- (let ((rs (make-readin "/home/kjetil/t1.wav")))
- (<rt-play> (lambda ()
- (if (>= (mus-location rs) (mus-length rs))
- (set! (mus-location rs) 0))
- (out (readin rs)))))
- \end{schemedisplay}
-}
-
-\item{Reverb for the locsig generator is not implemented. I'm a bit confused about locsig actually. I'm not sure the rt-implementation
- is correct...}
-
-\item{Non of the frames/mixers/sound IO functions are supported, as they require disk-access, which shouldn't be done inside the
- audio thread.}
-
-\item{Only \scheme|hz->radians| is implemented from the \emph{Useful functions} section of the CLM manual. (Most of them probably only requires
- a 2-3 lines long macro to be supported though.)}
-
-\item{array-in, dot-product, sine-bank, edot-product, contrast-enchancement, ring-modulate, amplitude-modulate, fft, multiply-arrays,
- \scheme|rectangular->polar|, \scheme|rectangular->polar|, spectrum and convolution is not implemented. (Most of these probably only requires
- 6-10 lines of wrapping-code to be supported.)}
-
-\end{itemize}
-
-Note that calling the CLM methods are not very efficient (that is, the \scheme|(mus-*)| functions). This will hopefully change, but until then,
-you can in certain situation significantly improve the efficiency of your code by avoid
-using CLM methods as far as possible. For example,
-
-\begin{schemedisplay}
-(let ((das-env (make-env `(0 400 1 500)
- #:duration 5)))
- (<rt-play> (lambda ()
- (let ((envval (env das-env)))
- (if (>= envval 500)
- (remove-me))))))
-\end{schemedisplay}
-
-use more than reasonable less CPU than:
-
-\begin{schemedisplay}
-(let ((das-env (make-env `(0 400 1 500)
- #:duration 5)))
- (<rt-play> (lambda ()
- (let ((envval (env das-env)))
- (if (>= (mus-location das-env) (mus-length das-env))
- (remove-me))))))
-\end{schemedisplay}
-
-The only exception is the methods for the rt-readin class, which access the attributes
-directly instead of doing indirect jumps. \newline
-So this is as efficient as possible:
-
-\begin{schemedisplay}
- (let ((rs (make-readin "/home/kjetil/t1.wav")))
- (<rt-play> (lambda ()
- (if (>= (mus-location rs) (mus-length rs))
- (set! (mus-location rs) 0))
- (out (readin rs)))))
-\end{schemedisplay}
-
-
-
-\subsection{Lockfree Ringbuffer}
-
-(not implemented)
-
-
-Use the ringbuffer clm-like generators to exchange data-streams between guile and
-the realtime thread.
-
-\subsubsection{ringbuffer}
-
-\begin{schemedisplay}
-(define osc (make-oscil))
-(define rb (make-ringbuffer (* 8192 256) ;; Number of samples to buffer. This one should be \underline{huge} to avoid clicking.
- (lambda ()
- (oscil osc))))
-(<rt-play> 0 10
- (lambda ()
- (out (* 0.8 (ringbuffer rb)))))
-\end{schemedisplay}
-
-The above example is not very good, because you can run oscil directly in the
-realtime thread. A better example is below, because you can't call readin in the realtime thread.
-This is how you can play a file without buffering the whole file into memory, which the rt-version of readin does:
-
-
-\begin{schemedisplay}
-(define file (make-readin "/home/kjetil/t1.wav"))
-(define rb (make-ringbuffer (* 8192 256)
- (lambda ()
- (readin file))))
-(<rt-play> 0 10
- (lambda ()
- (out (* 0.8 (ringbuffer rb)))))
-\end{schemedisplay}
-
-
-
-\subsubsection{ringbuffer-location}
-
-Assumes that location doesn't change to radically, only 0 or 1 steps more or less
-compared to the last one. It can receive request for any step though, but it might not
-be able to catch the value in time.
-
-\begin{schemedisplay}
-(define file (file->sample "/home/kjetil/t1.wav"))
-(define rb (make-ringbuffer-location (* 8192 256)
- (lambda (location)
- (file->sample file location))))
-(define position 0)
-(<rt-play> 0 100
- (lambda ()
- (out (* 0.8 (ringbuffer-location rb position))) ;; If data is not available, a value from the buffer is returned instead. Might produce less clicks than zero.
- (set! position (1+ position))))
-\end{schemedisplay}
-
-To delay playing until data is available:
-
-\begin{schemedisplay}
-(<rt-play> 0 100
- (lambda ()
- (if (ringbuffer-location? rb position) ;; ringbuffer-location? whether data at the position is available. If \#f, a request is sent.
- (begin
- (out (* 0.8 (ringbuffer-location rb position)))
- (set! position (1+ position))))))
-\end{schemedisplay}
-
-
-
-
-\subsection{Provided Functions, Macros and Special Forms}
-
-%%%%%%%%%%%%%%%%%%%%%%%
-\subsubsection{Blocks}
-\begin{description}
-\item[\scheme|(begin <body>)|] \hspace{\stretch{1}} Special form \newline
-
- Works as in scheme
-
-\end{description}
-
-
-%%%%%%%%%%%%%%%%%%%%%%%
-%\subsubsection{Control Flow}
-%\begin{description}
-%\item[\scheme|(call-with-current-continuation proc)|] \hspace{\stretch{1}} Special form \newline
-%
-% I think it works as in scheme, but I'm surprised how
-% simple it was to implement...
-%
-% (Not a very efficient function)
-%
-%\end{description}
-
-
-%%%%%%%%%%%%%%%%%%%%%%%
-\subsubsection{Functions}
-\begin{description}
-\item[\scheme|(lambda ...)|] \hspace{\stretch{1}} Special form \newline
-
- Works as in scheme, except:
- \begin{itemize}
- \item Functions are not tail-recursive. (Be careful using named lets in non-realtime mode!)
- \item Rest argument is not supported: \scheme|(lambda (a . rest) ...)| (error)
- (You can work around this to a certain degree by using macros with keywords or optional arguments)
- \end{itemize}
-
-
-\item[\scheme|(let ...)|] \hspace{\stretch{1}} Macro \newline
-
- named let is implemented as a macro.
-
-
-
-\end{description}
-
-
-%%%%%%%%%%%%%%%%%%%%%%%
-\subsubsection{Variables}
-\begin{description}
-\item[\scheme|(define ...)|] \hspace{\stretch{1}} Special form \newline
-
- Works nearly as in scheme, but unlike scheme it can be placed anywhere in a block. For example:
- \begin{schemedisplay}
- (begin
- (set! a 2)
- (define d 9)
- (+ a d))
- \end{schemedisplay}
- ...is legal.
-
-
-\item[\scheme|(let ...)|] \hspace{\stretch{1}} Special form \newline
-
- Works as in scheme
-
-
-\item[\scheme|(let* ...)|] \hspace{\stretch{1}} Special form \newline
-
- Works as in scheme.
-
-
-\item[\scheme|(letrec ...)|] \hspace{\stretch{1}} Special form \newline
-
- Works as in scheme.
-
-\item[\scheme|(letrec* ...)|] \hspace{\stretch{1}} Special form \newline
-
- Like let*, but with the functions available everywhere:
- \begin{schemedisplay}
- (rt-funcall (rt-compile (lambda ()
- (letrec* ((a 2)
- (b (lambda ()
- (c)))
- (c (lambda ()
- a)))
- (b)))))
- => 2.0
-\end{schemedisplay}
- (There is also a letrec* macro for guile in oo.scm.)
-
-
-
-\item[\scheme|(set! ...)|] \hspace{\stretch{1}} Special form \newline
-
-Works as in scheme, except that setting Guile variables will not affect the Guile side:
-\begin{schemedisplay}
- (let* ((a 5)
- (b (rt-compile (lambda ()
- (set! a 9)
- a)))
- (c (rt-funcall b)))
- (list a c))
- => (5 9.0)
-\end{schemedisplay}
- (For setting a large number of variables to be visible from the Guile-side, you can use \scheme|vct-set!|)
-
-
-
-\end{description}
-
-
-%%%%%%%%%%%%%%%%%%%%%%%
-\subsubsection{Conditionals}
-\begin{description}
-\item[\scheme|(if <test> <consequent> <alternate>)|]
-\item[\scheme|(if <test> <consequent>)|] $ $
-
-
- Works as in scheme. But beware that there is no boolean type, and \#f=0 and \#t=1.
- Therefore, the following expression will return 1, which is not the case
- for scheme: \scheme|(if 0 0 1)|
-
-
-\item[\scheme|(case ...)|] \hspace{\stretch{1}} Macro \newline
-
- works as in scheme, except that = is used for testing instead of eqv?
-
-
-\item[\scheme|(cond ...)|] \hspace{\stretch{1}} Macro \newline
-
- works as in sheme, but \scheme|=>| is not supported
-
-
-\item[\scheme|(< ...)|] \hspace{\stretch{1}} Macro \newline
-
- works as in scheme
-
-
-\item[\scheme|(> ...)|] \hspace{\stretch{1}} Macro \newline
-
- works as in scheme
-
-
-\item[\scheme|(< ...)|] \hspace{\stretch{1}} Macro \newline
-
- works as in scheme
-
-
-\item[\scheme|(= ...)|] \hspace{\stretch{1}} Macro \newline
-
- works as in scheme
-
-
-\item[\scheme|(>= ...)|] \hspace{\stretch{1}} Macro \newline
-
- works as in scheme
-
-
-\item[\scheme|(= ...)|] \hspace{\stretch{1}} Macro \newline
-
- works as in scheme
-
-
-\item[\scheme|(not ...)|] \hspace{\stretch{1}} Special form \newline
-
- works as in scheme
-
-
-
-\end{description}
-
-
-
-%%%%%%%%%%%%%%%%%%%%%%%
-\subsubsection{Iteration}
-\begin{description}
-\item[\scheme|(while <test> <body>)|] \hspace{\stretch{1}} Macro \newline
-
- Works as in Guile.(Does not expands to a recursive function.)
-
-
-%\item[\scheme|(break)|] \hspace{\stretch{1}} Special form \newline
-%
-% Used to break out of a while loop. (Not a very efficient function)
-%
-%
-%\item[\scheme|(continue)|] \hspace{\stretch{1}} Special form \newline
-%
-% goto the top of a while loop. (Not a very efficient function)
-
-
-
-
-\item[\scheme|(do ...)|] \hspace{\stretch{1}} Macro \newline
-
- works as in scheme (Using while)
-
-\item[\scheme|(range ...)|] \hspace{\stretch{1}} Macro \newline
-
- $ $ \begin{schemedisplay}
- (range i 5 10
- (printf "%d " i))
- => 5 6 7 8 9
- (range i 10 5
- (printf "%d " i))
- => 10 9 8 7 6
- \end{schemedisplay}
- (Using while)
-
-
-
-
-\end{description}
-
-
-
-%%%%%%%%%%%%%%%%%%%%%%%
-\subsubsection{Logical Operators}
-\begin{description}
-\item[\scheme|(and ...)|] \hspace{\stretch{1}} Special form \newline
-
- works as in scheme
-
-
-\item[\scheme|(or ...)|] \hspace{\stretch{1}} Special form \newline
-
- works as in scheme
-
-
-\end{description}
-
-
-%%%%%%%%%%%%%%%%%%%%%%%
-\subsubsection{Mathematics}
-\begin{description}
-\item[\scheme|(+ ...)|] \hspace{\stretch{1}} Function \newline
-
- works as in scheme
-
-
-\item[\scheme|(- ...)|] \hspace{\stretch{1}} Macro \newline
-
- works as in scheme
-
-
-\item[\scheme|(* ...)|] \hspace{\stretch{1}} Function \newline
-
- works as in scheme
-
-
-\item[\scheme|(/ ...)|] \hspace{\stretch{1}} Macro \newline
-
- works as in scheme
-
-
-\item[\scheme|(1+ ...)|] \hspace{\stretch{1}} Function \newline
-
- works as in Guile
-
-
-\item[\scheme|(1- ...)|] \hspace{\stretch{1}} Function \newline
-
- works as in Guile
-
-
-\item[\scheme|(min ...)|] \hspace{\stretch{1}} Macro \newline
-
- works as in scheme
-
-
-\item[\scheme|(max ...)|] \hspace{\stretch{1}} Macro \newline
-
- works as in scheme
-
-
-
-
-\end{description}
-
-And:
-
-\begin{quote}
-sin cos tan abs log exp expt acos asin atan sqrt
-asinh acosh atanh cosh sinh tanh
-atan2 (see ``man atan2'')
-hypot (see ``man hypot'')
-
-zero? positive? negative? odd? even?
-remainder modulo quotient
-
-floor ceiling truncate round truncate
-
-logand logior lognot logxor ash
-random
-\end{quote}
-
-
-%%%%%%%%%%%%%%%%%%%%%%%
-\subsubsection{Lists, pairs, vectors and VCT's}
-%%\begin{description}
-
-VCT's are extremely efficiently implemented.
-
-Pairs, lists and vectors are not, and should be avoided.
-
-The provided functions are:
-
-\begin{quote}
-vct make-vct vct-map! vct-length vct-ref vct-set! vct-scale! vct-offset! vct-fill!
-
-vector? vector-length vector-ref
-
-pair? null?
-car cdr
-cadr caddr cadddr caddddr
-cddr cdddr cddddr cdddddr
-cdar cdadr cdaddr cdadddr
-caar caadr caaddr caadddr
-list-ref
-for-each
-\end{quote}
-
-
-
-%%\end{description}
-
-
-%%%%%%%%%%%%%%%%%%%%%%%
-\subsubsection{Others}
-\begin{description}
-\item[\scheme|(declare ...)|] \hspace{\stretch{1}} Special form \newline
-
- Works as in common lisp, except that the name of the types are different: \scheme|<int>|, \scheme|<float>| and \scheme|<double>| .
-
-\begin{schemedisplay}
- (define-rt (int-fib n)
- (declare (<int> n))
- (if (< n 2)
- n
- (+ (fib (- n 1))
- (fib (- n 2)))))
-\end{schemedisplay}
- ...which is the same as:
-\begin{schemedisplay}
- (define-rt (int-fib n)
- (declare (<int> n))
- (the <int>
- (if (< n 2)
- n
- (+ (fib (- n 1))
- (fib (- n 2))))))
-\end{schemedisplay}
- As you see, the compiler is a little bit intelligent when determine types, so it should not
- be necessary to use \scheme|declare| on all numeric variables and \scheme|the| for every expression, (although it shouldn't hurt either).
-
-
-\item[\scheme|(is-type? <type> <variable>)|] \hspace{\stretch{1}} Special form \newline
-
- Mostly for internal use:
- \begin{schemedisplay}
- (let ((a 5))
- (is-type? <int> a))
- => 1
- (let ((a 5))
- (is-type? <float> a))
- => 0
-\end{schemedisplay}
- The first argument must be a type, and the third argument must be a variable-name.
- This is not legal: \scheme|(is-type? <int> (+ 2 3))|
- Used to implement \scheme|exact?|/\scheme|inexact?|/etc., and for various optimizations.
-
-
-
-\item[\scheme|(the ...)|] \hspace{\stretch{1}} Special form \newline
-
- Works as in common lisp, except that the name of the types are different: \scheme|<int>|, \scheme|<float>| and \scheme|<double>| are
- the currently supported numeric types.
- \begin{schemedisplay}
- (define-rt (int-cast-add a b)
- (the <int>
- (+ a b)))
-
- [...which is the same as:
-
- (define-rt (int-cast-add a b)
- (declare (<float> a b))
- (the <int>
- (+ a b))) ]
-
- \end{schemedisplay}
-
-
-\item[\scheme|(include-guile-func ...)|] \hspace{\stretch{1}} Macro \newline
-
- Includes the code of a Guile function.
- \begin{schemedisplay}
- (define (add a b)
- (+ a b))
- (rt-funcall (rt (lambda ()
- (define add (include-guile-func add))
- (add 2 3))))
- => 5
- \end{schemedisplay}
-
-
-\item[\scheme|(remove-me)|] \hspace{\stretch{1}} Macro \newline
-
- Removes the function from the realtime engine.
- See rt-examples.scm for an example-
-
-
-
-\item[\scheme|(unquote ...)|] \hspace{\stretch{1}} Macro \newline
-
- $ $ \begin{schemedisplay}
- (define a 9)
- (rt-funcall (rt (lambda()
- (+ ,pi ,(+ 5 a))))
- => 17.1415926535898
-
- \end{schemedisplay}
-
-
-\end{description}
-
-
-And:
-
-\begin{quote}
-
-exact? inexact? number? string?
-\scheme|exact->inexact| \scheme|inexact->exact|
-
-printf (Using c's fprintf with stderr as the first argument. Warning, this one is not realtime safe!)
-
-\end{quote}
-
-
-
-
-
-
-
-
-\subsection{Various}
-
-* In addition to the functions and macros described above, theres a bunch of very internal functions and macros
- that used wrongly can hang your machine or destroy your harddisk.
- Most of them start with a prefix \scheme|rt-| or \scheme|rt_|.
-
- One very useful function might be \scheme|rt_alloc|
- which does realtime-safe memory allocation. All memory allocated with \scheme|rt_alloc| is automatically
- freed when the function returns.
-
-* Theres still a lot of smaller optimizations thats possible to do. However,
- gcc $(V>=3)$ should be able to fix most of these.
-
-* Note to myself, \scheme|define-ec-struct| in eval-c.scm needs to be documented.
-
-
-
-\newpage
-\section{Missing functionality}
-
-
-\subsection{Order of execution}
-There is no API to set the order of execution for the \scheme|<realtime>|-instances. It can/should be done
-automatically by looking at which instance depends on which bus, but that hasn't been implemented (yet).
-
-For now, you can order the execution by using the fact that instances are always put first in the queue.
-
-
-%\newpage
-%\section{Credits}
-\newpage
-\section{History}
-
-03.08.2006: Added rt-vct-struct and rt-vector-struct syntactic sugar stuff. See rt-examples.scm.
- Various smaller fixes.
-
-03.06.2006: Removed \scheme|break| and \scheme|continue|. They never really worked very well.
- Removed \scheme|call-with-current-continuation| which certainly never really worked very well.
-
-08.07.2005-02.06.2006: Various changes
-
-08.07.2005: Various bugs fixed, added gliding shared vars and midi. Changed behaviour for read-bus and write-bus.
-
-15.06.2005: Added \scheme|make-ladspa-gui|.
-
-09.06.2005: Redefined \scheme|define-rt| to define rt-functions instead of guile-functions.
-
-07.06.2005: Added setters for buses, introducing a general patching mechanism. Very nice I think.
-
-06.06.2005: Added the hidden in-bus and out-bus keyword arguments for definstrument. (the \scheme|in| and \scheme|out| macros uses in-bus and out-bus)
-
-05.06.2005: Added -fast-math to the compiler-options (again). Don't think there is any good reason not to... (?)
-
-05.06.2005: Made input and output busses (\scheme|*in-bus*| and \scheme|*out-bus|), and let \scheme|in| and \scheme|out| call \scheme|read-bus| and \scheme|write-bus|.
-
-02.06.2005: Added support for the intel C compiler. To use icc, set \scheme|*eval-c-compiler*| to \scheme|"icc"|. (I did not
-notice any difference in the performance compaired to gcc 4.0 (or even gcc 3.2), but it is supposed to be
-faster in some situations)
-
-02.06.2005: Added shared variables and ladspa. Fixed letrec*
-
-20.05.2005: Added \scheme|vct|, \scheme|make-vct|, and the bus-system.
-
-%%\section{Emacs}
-
-\newpage
-\section{Notes}
-
-[3] Paul Graham, ``ANSI Common Lisp'', 1996, p. 313: ``Not an operator,
- but resembles one (...)''. (About \scheme|declare|)
-
-
-
-
-\end{document}
-
diff --git a/run.c b/run.c
index bf1f66d..42e0fba 100644
--- a/run.c
+++ b/run.c
@@ -140,7 +140,7 @@
#include <mus-config.h>
-#if HAVE_S7
+#if HAVE_SCHEME
/* (almost) entire file is on this switch */
#define WITH_COUNTERS 0
@@ -151,7 +151,6 @@
#include <math.h>
#include <stdio.h>
-#include <errno.h>
#include <stdlib.h>
#include <ctype.h>
@@ -179,16 +178,10 @@
#include "clm-strings.h"
#include "sndlib-strings.h"
-
-#if USE_SND
- #define PROTECT(Obj) snd_protect(Obj)
- #define UNPROTECT_AT(Loc) snd_unprotect_at(Loc)
-#else
- #define PROC_FALSE "#f"
- #define NOT_A_GC_LOC -1
- #define PROTECT(Obj) s7_gc_protect(s7, Obj)
- #define UNPROTECT_AT(Loc) s7_gc_unprotect_at(s7, Loc)
-#endif
+#define PROC_FALSE "#f"
+#define NOT_A_GC_LOC -1
+#define PROTECT(Obj) s7_gc_protect(s7, Obj)
+#define UNPROTECT_AT(Loc) s7_gc_unprotect_at(s7, Loc)
static int safe_strcmp(const char *s1, const char *s2)
@@ -1140,7 +1133,12 @@ static void unattach_ptree(ptree *inner, ptree *outer)
outer->samplers = inner->samplers;
#endif
outer->xen_vars = inner->xen_vars;
- outer->gc_protected = inner->gc_protected;
+
+ /* outer->gc_protected = inner->gc_protected; */
+ /* not this one -- we always work back to the outermost tree in add_loc_to_protected_list, and
+ * if we happen to need a reallocation of gc_protected during the inner ptree evaluation,
+ * the outermost gc_protected is realloc'd, leaving the inner ptree's pointer invalid.
+ */
inner->ints = NULL;
inner->dbls = NULL;
@@ -16431,13 +16429,13 @@ static void init_walkers(void)
static XEN g_run_eval(XEN code, XEN arg, XEN arg1, XEN arg2)
{
ptree *pt;
+ s7_pointer cl;
+ int gc_loc;
+
#if USE_SND
current_optimization = SOURCE_OK;
#endif
- s7_pointer cl;
- int gc_loc;
-
cl = s7_make_closure(s7, code, xen_nil);
gc_loc = s7_gc_protect(s7, cl);
diff --git a/s7.c b/s7.c
index d5e77f0..673b8e3 100644
--- a/s7.c
+++ b/s7.c
@@ -82,6 +82,9 @@
* vector-for-each, vector-map, string-for-each, hash-table-for-each, for-each of any applicable object
*
*
+ * perhaps add: (define ((f a) b) (* a b)) -> (define f (lambda (a) (lambda (b) (* a b))))
+ *
+ *
* Mike Scholz provided the FreeBSD support (complex trig funcs, etc)
* Rick Taube and Andrew Burnson provided the MS Visual C++ support
*
@@ -257,7 +260,6 @@
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
-#include <errno.h>
#include <time.h>
#include <stdarg.h>
@@ -302,7 +304,7 @@ typedef enum {OP_READ_INTERNAL, OP_EVAL, OP_EVAL_ARGS0, OP_EVAL_ARGS1, OP_APPLY,
OP_DEFINE_STAR, OP_LAMBDA_STAR, OP_ERROR_QUIT, OP_UNWIND_INPUT, OP_UNWIND_OUTPUT,
OP_TRACE_RETURN, OP_ERROR_HOOK_QUIT, OP_TRACE_HOOK_QUIT, OP_WITH_ENV0, OP_WITH_ENV1, OP_WITH_ENV2,
OP_VECTOR_FOR_EACH, OP_VECTOR_MAP0, OP_VECTOR_MAP1, OP_STRING_FOR_EACH, OP_OBJECT_FOR_EACH,
- OP_HASH_TABLE_FOR_EACH,
+ OP_HASH_TABLE_FOR_EACH,
OP_MAX_DEFINED} opcode_t;
#define NUM_SMALL_INTS 256
@@ -352,6 +354,9 @@ typedef struct s7_port_t {
s7_pointer (*input_function)(s7_scheme *sc, s7_read_t read_choice, s7_pointer port);
void (*output_function)(s7_scheme *sc, char c, s7_pointer port);
void *data;
+ /* a version of string ports using a pointer to the current location and a pointer to the end
+ * (rather than an integer for both, indexing from the base string) was not faster.
+ */
} s7_port_t;
@@ -393,8 +398,6 @@ typedef struct s7_cell {
unsigned char cvalue;
- opcode_t proc_num;
-
void *c_pointer;
struct {
@@ -448,6 +451,9 @@ typedef struct {
#endif
+static s7_pointer *small_ints; /* permanent numbers for opcode entries in the stack */
+static s7_pointer real_zero, real_one;
+
struct s7_scheme {
s7_cell **heap, **free_heap;
unsigned int heap_size, free_heap_top;
@@ -465,8 +471,6 @@ struct s7_scheme {
s7_pointer stack; /* stack is a vector */
int stack_size, stack_top, stack_size2;
- s7_pointer *small_ints; /* permanent numbers for opcode entries in the stack */
- s7_pointer real_zero, real_one;
s7_pointer protected_objects; /* a vector of gc-protected objects */
int *protected_objects_size, *protected_objects_loc; /* pointers so they're global across threads */
@@ -492,7 +496,7 @@ struct s7_scheme {
s7_pointer symbol_table; /* symbol table */
s7_pointer global_env; /* global environment */
- s7_pointer LAMBDA, LAMBDA_STAR, QUOTE, QUASIQUOTE, UNQUOTE, UNQUOTE_SPLICING, MACROEXPAND;
+ s7_pointer LAMBDA, LAMBDA_STAR, QUOTE, UNQUOTE, UNQUOTE_SPLICING, MACROEXPAND;
s7_pointer APPLY, VECTOR, CONS, APPEND, CDR, VECTOR_FUNCTION, VALUES, ELSE, SET;
s7_pointer ERROR, WRONG_TYPE_ARG, OUT_OF_RANGE, FORMAT_ERROR, WRONG_NUMBER_OF_ARGS;
s7_pointer KEY_KEY, KEY_OPTIONAL, KEY_REST, __FUNC__, ERROR_HOOK, TRACE_HOOK;
@@ -557,30 +561,31 @@ struct s7_scheme {
};
-#define T_UNTYPED 0
-#define T_NIL 1
-#define T_STRING 2
-#define T_NUMBER 3
-#define T_SYMBOL 4
-#define T_PAIR 5
-#define T_CLOSURE 6
-#define T_CLOSURE_STAR 7
-#define T_CONTINUATION 8
-#define T_C_FUNCTION 9
-#define T_CHARACTER 10
-#define T_INPUT_PORT 11
-#define T_VECTOR 12
-#define T_MACRO 13
-#define T_C_OBJECT 14
-#define T_GOTO 15
-#define T_OUTPUT_PORT 16
-#define T_CATCH 17
-#define T_DYNAMIC_WIND 18
-#define T_HASH_TABLE 19
-#define T_BOOLEAN 20
-#define T_C_MACRO 21
-#define T_C_POINTER 22
-#define BUILT_IN_TYPES 23
+#define T_UNTYPED 0
+#define T_NIL 1
+#define T_STRING 2
+#define T_NUMBER 3
+#define T_SYMBOL 4
+#define T_PAIR 5
+#define T_CLOSURE 6
+#define T_CLOSURE_STAR 7
+#define T_CONTINUATION 8
+#define T_C_FUNCTION 9
+#define T_CHARACTER 10
+#define T_INPUT_PORT 11
+#define T_VECTOR 12
+#define T_MACRO 13
+#define T_C_OBJECT 14
+#define T_GOTO 15
+#define T_OUTPUT_PORT 16
+#define T_CATCH 17
+#define T_DYNAMIC_WIND 18
+#define T_HASH_TABLE 19
+#define T_BOOLEAN 20
+#define T_C_MACRO 21
+#define T_C_POINTER 22
+#define T_C_ANY_ARGS_FUNCTION 23
+#define BUILT_IN_TYPES 24
#define TYPE_BITS 8
#define T_MASKTYPE 0xff
@@ -590,7 +595,7 @@ struct s7_scheme {
/* set_type below -- needs to maintain mark setting */
#define T_SYNTAX (1 << (TYPE_BITS + 1))
-#define is_syntax(p) ((typeflag(p) & T_SYNTAX) != 0) /* the silly != 0 business is for MS C++'s benefit */
+#define is_syntax(p) ((typeflag(p) & T_SYNTAX) != 0) /* the != 0 business is for MS C++'s benefit */
#define syntax_opcode(x) ((x)->hloc)
#define T_IMMUTABLE (1 << (TYPE_BITS + 2))
@@ -641,6 +646,7 @@ struct s7_scheme {
#define T_ANY_MACRO (1 << (TYPE_BITS + 12))
#define is_any_macro(p) ((typeflag(p) & T_ANY_MACRO) != 0)
/* this marks scheme and C-defined macros */
+#define is_any_macro_or_syntax(p) ((typeflag(p) & (T_ANY_MACRO | T_SYNTAX)) != 0)
#define T_EXPANSION (1 << (TYPE_BITS + 13))
#define is_expansion(p) ((typeflag(p) & T_EXPANSION) != 0)
@@ -727,7 +733,7 @@ struct s7_scheme {
#define VECTOR_REST_ARGS false
#endif
-#define small_int(Sc, Val) (Sc)->small_ints[Val]
+#define small_int(Sc, Val) small_ints[Val]
#define is_input_port(p) (type(p) == T_INPUT_PORT)
#define is_output_port(p) (type(p) == T_OUTPUT_PORT)
@@ -747,7 +753,7 @@ struct s7_scheme {
#define port_input_function(p) (p)->object.port->input_function
#define port_data(p) (p)->object.port->data
-#define is_c_function(f) (type(f) == T_C_FUNCTION)
+#define is_c_function(f) ((type(f) == T_C_FUNCTION) || (type(f) == T_C_ANY_ARGS_FUNCTION))
#define c_function(f) (f)->object.ffptr
#define c_function_call(f) (f)->object.ffptr->ff
#define c_function_name(f) (f)->object.ffptr->name
@@ -835,9 +841,11 @@ struct s7_scheme {
static int safe_strlen(const char *str)
{
- if ((str) && (*str))
- return(strlen(str));
- return(0);
+ /* this is safer than strlen, and slightly faster */
+ char *tmp = (char *)str;
+ if (!tmp) return(0);
+ while (*tmp++) {};
+ return(tmp - str - 1);
}
@@ -980,15 +988,6 @@ static s7_pointer s7_set_immutable(s7_pointer p)
}
-static s7_pointer set_pair_line_number(s7_pointer p, int n)
-{
- if ((!is_eternal(p)) &&
- (is_pair(p)))
- pair_line_number(p) = n;
- return(p);
-}
-
-
bool s7_is_constant(s7_pointer p)
{
/* this means "not settable": numbers, characters, strings, keywords, #f #t pi etc */
@@ -1095,8 +1094,12 @@ void s7_gc_unprotect_at(s7_scheme *sc, int loc)
pthread_mutex_lock(&protected_objects_lock);
#endif
- vector_element(sc->protected_objects, loc) = sc->NIL;
- (*(sc->protected_objects_loc)) = loc;
+ if ((loc >= 0) &&
+ (loc < (*(sc->protected_objects_size))))
+ {
+ vector_element(sc->protected_objects, loc) = sc->NIL;
+ (*(sc->protected_objects_loc)) = loc;
+ }
#if HAVE_PTHREADS
pthread_mutex_unlock(&protected_objects_lock);
@@ -1107,12 +1110,15 @@ void s7_gc_unprotect_at(s7_scheme *sc, int loc)
s7_pointer s7_gc_protected_at(s7_scheme *sc, int loc)
{
s7_pointer obj;
+ obj = sc->UNSPECIFIED;
#if HAVE_PTHREADS
pthread_mutex_lock(&protected_objects_lock);
#endif
- obj = vector_element(sc->protected_objects, loc);
+ if ((loc >= 0) &&
+ (loc < (*(sc->protected_objects_size))))
+ obj = vector_element(sc->protected_objects, loc);
#if HAVE_PTHREADS
pthread_mutex_unlock(&protected_objects_lock);
@@ -1163,6 +1169,7 @@ static void finalize_s7_cell(s7_scheme *sc, s7_pointer a)
s7_free_object(a);
break;
+ case T_C_ANY_ARGS_FUNCTION:
case T_C_FUNCTION:
case T_C_MACRO:
s7_free_function(a);
@@ -1442,14 +1449,20 @@ static s7_pointer new_cell(s7_scheme *sc)
* I think this is no longer needed.
*/
- nsc->temps[nsc->temps_ctr++] = p;
- if (nsc->temps_ctr >= nsc->temps_size)
- nsc->temps_ctr = 0;
+ if (sc->free_heap_top <= GC_TEMPS_SIZE)
+ {
+ nsc->temps[nsc->temps_ctr++] = p;
+ if (nsc->temps_ctr >= nsc->temps_size)
+ nsc->temps_ctr = 0;
+ }
pthread_mutex_unlock(&alloc_lock);
#else
- sc->temps[sc->temps_ctr++] = p;
- if (sc->temps_ctr >= sc->temps_size)
- sc->temps_ctr = 0;
+ if (sc->free_heap_top <= GC_TEMPS_SIZE)
+ {
+ sc->temps[sc->temps_ctr++] = p;
+ if (sc->temps_ctr >= sc->temps_size)
+ sc->temps_ctr = 0;
+ }
#endif
/* originally I tried to mark each temporary value until I was done with it, but
* that way madness lies... By delaying GC of _every_ %$^#%@ pointer, I can dispense
@@ -1504,8 +1517,8 @@ void s7_remove_from_heap(s7_scheme *sc, s7_pointer x)
int loc;
/* global functions are very rarely redefined, so we can remove the function body from
* the heap when it is defined. If redefined, we currently lose the memory held by the
- * old definition. If this memory leak becomes a problem, we could notice the redefinition
- * in add_to_environment, and GC the old body by hand.
+ * old definition. (It is not trivial to recover this memory because it is allocated
+ * in blocks, not by the pointer, I think, but s7_define is the point to try).
*/
switch (type(x))
@@ -1545,6 +1558,7 @@ void s7_remove_from_heap(s7_scheme *sc, s7_pointer x)
break;
case T_C_OBJECT:
+ case T_C_ANY_ARGS_FUNCTION:
case T_C_FUNCTION:
case T_C_MACRO:
case T_C_POINTER:
@@ -1589,18 +1603,20 @@ static void pop_stack(s7_scheme *sc)
sc->code = vel[0];
sc->envir = vel[1];
sc->args = vel[2];
- sc->op = (opcode_t)integer(number(vel[3]));
+ sc->op = (opcode_t)integer(number(vel[3])); /* changing this to a more direct reference does not speed up pop_stack */
}
-static void push_stack(s7_scheme *sc, opcode_t op, s7_pointer args, s7_pointer code)
+#define opcode(Op) small_ints[(int)Op]
+
+static void push_stack(s7_scheme *sc, s7_pointer int_op, s7_pointer args, s7_pointer code)
{
s7_pointer *vel;
vel = (s7_pointer *)(vector_elements(sc->stack) + sc->stack_top);
vel[0] = code;
vel[1] = sc->envir;
vel[2] = args;
- vel[3] = sc->small_ints[(int)op];
+ vel[3] = int_op;
sc->stack_top += 4;
}
@@ -1618,31 +1634,6 @@ static void increase_stack_size(s7_scheme *sc)
}
-static s7_pointer g_stack(s7_scheme *sc, s7_pointer args)
-{
- #define H_stack "(stack :optional continuation-or-thread) returns a list containing the current stack top (an integer) and the stack itself (a vector).\
-Each stack frame has 4 entries, the function, the current environment, the function arguments, and an op code used \
-internally by the evaluator. If a continuation is passed, its stack and stack-top are returned."
-
- if (args != sc->NIL)
- {
- if (s7_is_continuation(car(args)))
- return(make_list_2(sc, s7_make_integer(sc, continuation_stack_top(car(args))), continuation_stack(car(args))));
-
-#if HAVE_PTHREADS
- if (g_is_thread(sc, args) != sc->F)
- {
- thred *f;
- f = (thred *)s7_object_value(car(args));
- return(make_list_2(sc, s7_make_integer(sc, f->sc->stack_top), f->sc->stack));
- }
-#endif
- }
-
- return(make_list_2(sc, s7_make_integer(sc, sc->stack_top), sc->stack));
-}
-
-
#if 0
static void show_stack(s7_scheme *sc)
{
@@ -1659,7 +1650,8 @@ static void show_stack(s7_scheme *sc)
"define_constant1", "do", "do_end0", "do_end1", "do_step0", "do_step1", "do_step2", "do_init", "define_star",
"lambda_star", "error_quit", "unwind_input", "unwind_output", "trace_return", "error_hook_quit", "trace_hook_quit",
"with_env0", "with_env1", "with_env2", "vector_for_each", "vector_map0", "vector_map1", "string_for_each",
- "object_for_each", "hash-table-for-each"};
+ "object_for_each", "hash-table-for-each"
+ };
int i;
for (i = sc->stack_top - 4; i >= 0; i -= 4)
@@ -1725,12 +1717,6 @@ static s7_pointer symbol_table_add_by_name_at_location(s7_scheme *sc, const char
}
-static s7_pointer symbol_table_add_by_name(s7_scheme *sc, const char *name)
-{
- return(symbol_table_add_by_name_at_location(sc, name, symbol_table_hash(name, vector_length(sc->symbol_table))));
-}
-
-
static s7_pointer symbol_table_find_by_name(s7_scheme *sc, const char *name, int location)
{
s7_pointer x;
@@ -1828,7 +1814,7 @@ s7_pointer s7_make_symbol(s7_scheme *sc, const char *name)
if (x != sc->NIL)
return(x);
- /* before adding the new symbol, check that it's name is legal (not null, and not a number) */
+ /* before adding the new symbol, check that its name is legal (not null, and not a number) */
if (!name)
return(s7_error(sc, sc->ERROR, make_list_1(sc, s7_make_string(sc, "make symbol with no name?"))));
@@ -2180,7 +2166,13 @@ static s7_pointer make_closure(s7_scheme *sc, s7_pointer c, s7_pointer e, int ty
/* this is called every time a lambda form is evaluated, or during letrec, etc */
s7_pointer x;
- x = new_cell(sc); /* expansion here doesn't save much */
+#if HAVE_PTHREADS
+ x = new_cell(sc);
+#else
+ if (sc->free_heap_top > GC_TEMPS_SIZE)
+ x = sc->free_heap[--(sc->free_heap_top)];
+ else x = new_cell(sc);
+#endif
car(x) = c;
cdr(x) = e;
set_type(x, type | T_PROCEDURE);
@@ -2556,7 +2548,7 @@ static void check_for_dynamic_winds(s7_scheme *sc, s7_pointer c)
if (dynamic_wind_state(x) == T_DWIND_BODY)
{
- push_stack(sc, OP_EVAL_DONE, sc->args, sc->code);
+ push_stack(sc, opcode(OP_EVAL_DONE), sc->args, sc->code);
sc->args = sc->NIL;
sc->code = dynamic_wind_out(x);
eval(sc, OP_APPLY);
@@ -2565,7 +2557,10 @@ static void check_for_dynamic_winds(s7_scheme *sc, s7_pointer c)
else
{
if (op == OP_TRACE_RETURN)
- sc->trace_depth--;
+ {
+ sc->trace_depth--;
+ if (sc->trace_depth < 0) sc->trace_depth = 0;
+ }
}
}
@@ -2574,7 +2569,7 @@ static void check_for_dynamic_winds(s7_scheme *sc, s7_pointer c)
{
s7_pointer x;
x = vector_element(continuation_stack(c), i - 3);
- push_stack(sc, OP_EVAL_DONE, sc->args, sc->code);
+ push_stack(sc, opcode(OP_EVAL_DONE), sc->args, sc->code);
sc->args = sc->NIL;
sc->code = dynamic_wind_in(x);
eval(sc, OP_APPLY);
@@ -2602,14 +2597,14 @@ static s7_pointer g_call_cc(s7_scheme *sc, s7_pointer args)
sc->code = car(args);
sc->args = make_list_1(sc, s7_make_continuation(sc));
- push_stack(sc, OP_APPLY, sc->args, sc->code);
+ push_stack(sc, opcode(OP_APPLY), sc->args, sc->code);
return(sc->NIL);
}
static s7_pointer g_call_with_exit(s7_scheme *sc, s7_pointer args)
{
- #define H_call_with_exit "(call-with-exit ...) is a simplified call/cc"
+ #define H_call_with_exit "(call-with-exit ...) is call/cc without the continuation"
/* (call-with-exit (lambda (return) ...)) */
/* perhaps "call/exit"? */
@@ -2619,7 +2614,7 @@ static s7_pointer g_call_with_exit(s7_scheme *sc, s7_pointer args)
sc->code = car(args); /* the lambda form */
sc->args = make_list_1(sc, s7_make_goto(sc)); /* the argument to the lambda (the goto = "return" above) */
- push_stack(sc, OP_APPLY, sc->args, sc->code); /* apply looks at sc->code to decide what to do (it will see the lambda) */
+ push_stack(sc, opcode(OP_APPLY), sc->args, sc->code); /* apply looks at sc->code to decide what to do (it will see the lambda) */
/* if the lambda body calls the argument as a function,
* it is applied to its arguments, apply notices that it is a goto, and...
@@ -3276,10 +3271,17 @@ s7_pointer s7_make_integer(s7_scheme *sc, s7_Int n)
s7_pointer x;
if ((n >= 0) && (n < NUM_SMALL_INTS))
return(small_int(sc, n));
- /* there are ca 6300 -1's in s7test (14500 small negative ints) -- if like sc->real_zero (64000), this would gain us .2% overall speed */
+ /* there are ca 6300 -1's in s7test (14500 small negative ints) -- if like real_zero (64000), this would gain us .2% overall speed */
/* similarly, between 256 and 512, 8200 or so */
+#if HAVE_PTHREADS
x = new_cell(sc);
+#else
+ if (sc->free_heap_top > GC_TEMPS_SIZE)
+ x = sc->free_heap[--(sc->free_heap_top)];
+ else x = new_cell(sc);
+#endif
+
set_type(x, T_NUMBER | T_ATOM | T_SIMPLE | T_DONT_COPY);
number_type(x) = NUM_INT;
@@ -3304,11 +3306,18 @@ s7_pointer s7_make_real(s7_scheme *sc, s7_Double n)
{
s7_pointer x;
if (n == 0.0)
- return(sc->real_zero);
+ return(real_zero);
if (n == 1.0)
- return(sc->real_one);
+ return(real_one);
+#if HAVE_PTHREADS
x = new_cell(sc);
+#else
+ if (sc->free_heap_top > GC_TEMPS_SIZE)
+ x = sc->free_heap[--(sc->free_heap_top)];
+ else x = new_cell(sc);
+#endif
+
set_type(x, T_NUMBER | T_ATOM | T_SIMPLE | T_DONT_COPY);
number_type(x) = NUM_REAL;
@@ -3592,6 +3601,7 @@ static int integer_length(s7_Int a)
static int s7_int_max = 0, s7_int_min = 0, s7_int_bits = 0, s7_int_digits = 0; /* initialized later */
+static int s7_int_digits_by_radix[17];
static s7_num_t num_add(s7_num_t a, s7_num_t b)
{
@@ -3994,11 +4004,14 @@ static bool num_eq(s7_num_t a, s7_num_t b)
{
case NUM_INT:
return(real(a) == integer(b));
+
case NUM_RATIO:
return(real(a) == num_to_real(b));
+
case NUM_REAL:
case NUM_REAL2:
return(real(a) == real(b));
+
default:
return((real_part(b) == real(a)) &&
(imag_part(b) == 0.0));
@@ -4011,13 +4024,16 @@ static bool num_eq(s7_num_t a, s7_num_t b)
case NUM_INT:
return((real_part(a) == integer(b)) &&
(imag_part(a) == 0.0));
+
case NUM_RATIO:
return((real_part(a) == num_to_real(b)) &&
(imag_part(a) == 0.0));
+
case NUM_REAL:
case NUM_REAL2:
return((real_part(a) == real(b)) &&
(imag_part(a) == 0.0));
+
default:
return((real_part(a) == real_part(b)) &&
(imag_part(a) == imag_part(b)));
@@ -4036,42 +4052,106 @@ static bool num_gt(s7_num_t a, s7_num_t b)
* :(> 0 most-negative-fixnum)
* #f
*/
- s7_num_t val;
- if ((num_type(a) == NUM_INT) &&
- (num_type(b) == NUM_INT))
- return(integer(a) > integer(b));
-
- val = num_sub(a, b);
- switch (num_type(val))
+ switch (num_type(a))
{
- case NUM_INT: return(integer(val) > 0);
- case NUM_RATIO: return(numerator(val) > 0);
- default: return(real(val) > 0.0);
- }
+ case NUM_INT:
+ switch (num_type(b))
+ {
+ case NUM_INT:
+ return(integer(a) > integer(b));
-#if 0
- /* this is the flakey version */
- if ((num_type(a) == NUM_INT) &&
- (num_type(b) == NUM_INT))
- return(integer(a) > integer(b));
- return(num_to_real(a) > num_to_real(b));
-#endif
+ case NUM_RATIO:
+ return((integer(a) * denominator(b)) > numerator(b));
+
+ default:
+ return(integer(a) > real(b));
+ }
+ break;
+
+ case NUM_RATIO:
+ switch (num_type(b))
+ {
+ case NUM_INT:
+ return(numerator(a) > (integer(b) * denominator(a)));
+
+ case NUM_RATIO:
+ {
+ s7_num_t val;
+ val = num_sub(a, b);
+ return(numerator(val) > 0);
+ }
+
+ default:
+ return(num_to_real(a) > real(b));
+ }
+ break;
+
+ default:
+ switch (num_type(b))
+ {
+ case NUM_INT:
+ return(real(a) > integer(b));
+
+ case NUM_RATIO:
+ return(real(a) > num_to_real(b));
+
+ default:
+ return(real(a) > real(b));
+ }
+ break;
+ }
}
static bool num_lt(s7_num_t a, s7_num_t b)
{
- s7_num_t val;
- if ((num_type(a) == NUM_INT) &&
- (num_type(b) == NUM_INT))
- return(integer(a) < integer(b));
-
- val = num_sub(a, b);
- switch (num_type(val))
+ switch (num_type(a))
{
- case NUM_INT: return(integer(val) < 0);
- case NUM_RATIO: return(numerator(val) < 0);
- default: return(real(val) < 0.0);
+ case NUM_INT:
+ switch (num_type(b))
+ {
+ case NUM_INT:
+ return(integer(a) < integer(b));
+
+ case NUM_RATIO:
+ return((integer(a) * denominator(b)) < numerator(b));
+
+ default:
+ return(integer(a) < real(b));
+ }
+ break;
+
+ case NUM_RATIO:
+ switch (num_type(b))
+ {
+ case NUM_INT:
+ return(numerator(a) < (integer(b) * denominator(a)));
+
+ case NUM_RATIO:
+ {
+ s7_num_t val;
+ val = num_sub(a, b);
+ return(numerator(val) < 0);
+ }
+
+ default:
+ return(num_to_real(a) < real(b));
+ }
+ break;
+
+ default:
+ switch (num_type(b))
+ {
+ case NUM_INT:
+ return(real(a) < integer(b));
+
+ case NUM_RATIO:
+ return(real(a) < num_to_real(b));
+
+ default:
+ return(real(a) < real(b));
+ }
+ break;
}
}
@@ -4308,25 +4388,23 @@ static char *s7_number_to_string_with_radix(s7_scheme *sc, s7_pointer obj, int r
case NUM_RATIO:
{
- n = (char *)malloc(128 * sizeof(char));
- d = (char *)malloc(128 * sizeof(char));
+ char n[128], d[128];
s7_Int_to_string(n, s7_numerator(obj), radix, 0);
s7_Int_to_string(d, s7_denominator(obj), radix, 0);
p = (char *)malloc(256 * sizeof(char));
snprintf(p, 256, "%s/%s", n, d);
- free(n);
- free(d);
}
break;
case NUM_REAL2:
case NUM_REAL:
{
- char *n, *d;
int i;
s7_Int int_part;
s7_Double x, frac_part, min_frac, base;
bool sign = false;
+ char n[128];
+
x = s7_real(obj);
if (x < 0.0)
{
@@ -4335,7 +4413,6 @@ static char *s7_number_to_string_with_radix(s7_scheme *sc, s7_pointer obj, int r
}
int_part = (s7_Int)floor(x);
frac_part = x - int_part;
- n = (char *)malloc(128 * sizeof(char));
s7_Int_to_string(n, int_part, radix, 0);
d = (char *)malloc((precision + 1) * sizeof(char));
@@ -4353,7 +4430,6 @@ static char *s7_number_to_string_with_radix(s7_scheme *sc, s7_pointer obj, int r
d[i] = '\0';
p = (char *)malloc(256 * sizeof(char));
snprintf(p, 256, "%s%s.%s", (sign) ? "-" : "", n, d);
- free(n);
free(d);
}
break;
@@ -4438,7 +4514,7 @@ static s7_pointer g_number_to_string(s7_scheme *sc, s7_pointer args)
#define CTABLE_SIZE 128
static bool *dot_table, *exponent_table, *slashify_table, *string_delimiter_table;
-static int *digits, *char_nums;
+static int *digits;
static void init_ctables(void)
{
@@ -4483,11 +4559,10 @@ static void init_ctables(void)
string_delimiter_table[' '] = false;
digits = (int *)malloc(CTABLE_SIZE * sizeof(int));
- char_nums = (int *)calloc(CTABLE_SIZE, sizeof(int));
for (i = 0; i < CTABLE_SIZE; i++)
digits[i] = 256;
- digits['0'] = 1; digits['1'] = 1; digits['2'] = 2; digits['3'] = 3; digits['4'] = 4;
+ digits['0'] = 0; digits['1'] = 1; digits['2'] = 2; digits['3'] = 3; digits['4'] = 4;
digits['5'] = 5; digits['6'] = 6; digits['7'] = 7; digits['8'] = 8; digits['9'] = 9;
digits['a'] = 10; digits['A'] = 10;
digits['b'] = 11; digits['B'] = 11;
@@ -4496,15 +4571,6 @@ static void init_ctables(void)
digits['e'] = 14; digits['E'] = 14;
digits['f'] = 15; digits['F'] = 15;
- char_nums['0'] = 0; char_nums['1'] = 1; char_nums['2'] = 2; char_nums['3'] = 3; char_nums['4'] = 4;
- char_nums['5'] = 5; char_nums['6'] = 6; char_nums['7'] = 7; char_nums['8'] = 8; char_nums['9'] = 9;
- char_nums['a'] = 10; char_nums['A'] = 10;
- char_nums['b'] = 11; char_nums['B'] = 11;
- char_nums['c'] = 12; char_nums['C'] = 12;
- char_nums['d'] = 13; char_nums['D'] = 13;
- char_nums['e'] = 14; char_nums['E'] = 14;
- char_nums['f'] = 15; char_nums['F'] = 15;
-
number_inits['0'] = true; number_inits['1'] = true; number_inits['2'] = true; number_inits['3'] = true;
number_inits['4'] = true; number_inits['5'] = true; number_inits['6'] = true; number_inits['7'] = true;
number_inits['8'] = true; number_inits['9'] = true; number_inits['+'] = true; number_inits['-'] = true;
@@ -4533,7 +4599,7 @@ static s7_pointer make_sharp_constant(s7_scheme *sc, char *name, bool at_top)
if (strcmp(name, "f") == 0)
return(sc->F);
- len = strlen(name);
+ len = safe_strlen(name);
if (len == 0)
return(sc->NIL);
@@ -4661,13 +4727,49 @@ static s7_pointer make_sharp_constant(s7_scheme *sc, char *name, bool at_top)
}
-static s7_Double string_to_double_with_radix(char *str, int radix)
+/* TODO: arithmetic-overflow error? */
+
+static s7_Int string_to_integer(const char *str, int radix, bool *overflow)
{
- /* (do ((i 2 (+ i 1))) ((= i 17)) (display (inexact->exact (floor (log (expt 2 62) i)))) (display ", ")) */
- static int digits[] = {0, 0, 62, 39, 31, 26, 23, 22, 20, 19, 18, 17, 17, 16, 16, 15, 15};
+ bool negative = false;
+ s7_Int lval = 0;
+ int dig, start = 1;
+ char *tmp = (char *)str;
+
+ if ((str[0] == '+') || (str[0] == '-'))
+ {
+ start = 2;
+ if (str[0] == '-') negative = true;
+ tmp++;
+ }
+ while (*str == '0') {str++;};
- int i, len, iloc = 0, floc = -1, eloc = -1, sign = 1, flen = 0;
- long long int int_part = 0, frac_part = 0, exponent = 0;
+ while ((dig = digits[(int)(*tmp++)]) < radix)
+ lval = dig + (lval * radix);
+
+ (*overflow) = ((tmp - str - start) > s7_int_digits_by_radix[radix]);
+
+ if (negative)
+ return(-lval);
+ return(lval);
+}
+
+
+/* 9223372036854775807 9223372036854775807 */
+/* -9223372036854775808 -9223372036854775808 */
+/* 0000000000000000000000000001.0 1.0 */
+/* 1.0000000000000000000000000000 1.0 */
+/* 1000000000000000000000000000.0e-40 1.0e-12 */
+/* 0.0000000000000000000000000001e40 1.0e12 */
+/* 1.0e00000000000000000001 10.0 */
+
+static s7_Double string_to_double_with_radix(const char *ur_str, int radix, bool *overflow)
+{
+ int i, sign = 1, frac_len, int_len, dig, max_len, exponent = 0;
+ long long int int_part = 0, frac_part = 0;
+ char *str;
+ char *ipart, *fpart;
+ s7_Double dval = 0.0;
/* there's an ambiguity in number notation here if we allow "1e1" or "1.e1" in base 16 (or 15) -- is e a digit or an exponent marker?
* but 1e+1, for example disambiguates it -- kind of messy! -- the scheme spec says "e" can only occur in base 10.
@@ -4676,72 +4778,215 @@ static s7_Double string_to_double_with_radix(char *str, int radix)
* bases <= 10.
*/
- if ((str[0] == '+') || (str[0] == '-'))
+ max_len = s7_int_digits_by_radix[radix];
+ str = (char *)ur_str;
+
+ if (*str == '+')
+ str++;
+ else
{
- iloc = 1;
- if (str[0] == '-') sign = -1;
+ if (*str == '-')
+ {
+ str++;
+ sign = -1;
+ }
}
+ while (*str == '0') {str++;};
- len = safe_strlen(str);
- for (i = iloc; i < len; i++)
- if (str[i] == '.')
- floc = i;
- else
- if ((str[i] == 'e') && (radix <= 10))
- eloc = i;
+ ipart = str;
+ while (digits[(int)(*str)] < radix) str++;
+ int_len = str - ipart;
- if ((floc == -1) || (floc > iloc))
+ if (*str == '.') str++;
+ fpart = str;
+ while (digits[(int)(*str)] < radix) str++;
+ frac_len = str - fpart;
+
+ if ((*str) && (exponent_table[(int)(*str)]))
{
- errno = 0;
- int_part = strtoll((const char *)(str + iloc), (char **)NULL, radix);
- if (errno == ERANGE)
- return(0.0);
+ int exp_negative = false;
+ str++;
+ if (*str == '+')
+ str++;
+ else
+ {
+ if (*str == '-')
+ {
+ str++;
+ exp_negative = true;
+ }
+ }
+ while ((dig = digits[(int)(*str++)]) < 10) /* exponent is always base 10 */
+ exponent = dig + (exponent * 10);
+ if (exp_negative) exponent = -exponent;
}
- if ((floc != -1) && /* has a "." */
- (floc < len - 1) && /* doesn't end in "." */
- (floc != eloc - 1)) /* "1.e1" for example */
+#if WITH_GMP
+ if ((int_len >= max_len) ||
+ (frac_len >= max_len) ||
+ ((int_len + exponent) > max_len) ||
+ ((frac_len - exponent) > max_len))
{
- flen = ((eloc == -1) ? (len - floc - 1) : (eloc - floc - 1));
- if (flen <= digits[radix])
+ (*overflow) = true;
+ return(0.0);
+ }
+#endif
+
+ str = ipart;
+ if ((int_len + exponent) > max_len)
+ {
+ /* 12341234.56789e12 12341234567889999872.0 1.234123456789e+19
+ * -1234567890123456789.0 -1234567890123456768.0 -1.2345678901235e+18
+ * 12345678901234567890.0 12345678901234567168.0 1.2345678901235e+19
+ * 123.456e30 123456000000000012741097792995328.0 1.23456e+32
+ * 12345678901234567890.0e12 12345678901234569054409354903552.0 1.2345678901235e+31
+ * 1.234567890123456789012e30 1234567890123456849145940148224.0 1.2345678901235e+30
+ * 1e20 100000000000000000000.0 1e+20
+ * 1234567890123456789.0 1234567890123456768.0 1.2345678901235e+18
+ * 123.456e16 1234560000000000000.0 1.23456e+18
+ * 98765432101234567890987654321.0e-5 987654321012345728401408.0 9.8765432101235e+23
+ * 98765432101234567890987654321.0e-10 9876543210123456512.0 9.8765432101235e+18
+ * 0.00000000000000001234e20 1234.0
+ * 0.000000000000000000000000001234e30 1234.0
+ * 0.0000000000000000000000000000000000001234e40 1234.0
+ * 0.000000000012345678909876543210e15 12345.678909877
+ */
+
+ for (i = 0; i < max_len; i++)
{
- errno = 0;
- frac_part = strtoll((const char *)(str + floc + 1), (char **)NULL, radix);
- if (errno == ERANGE)
- return(0.0);
+ dig = digits[(int)(*str++)];
+ if (dig < radix)
+ int_part = dig + (int_part * radix);
+ else break;
+ }
+ (*overflow) = (int_part > 0);
+
+ if (int_len <= max_len)
+ dval = int_part * pow((s7_Double)radix, (s7_Double)exponent);
+ else dval = int_part * pow((s7_Double)radix, (s7_Double)(exponent + int_len - max_len));
+ /* shift by exponent, but if int_len > max_len then we assumed (see below) int_len - max_len 0's on the left */
+ /* using int_to_int or table lookups here instead of pow did not make any difference in speed */
+
+ if (int_len < max_len)
+ {
+ int k, flen;
+ str = fpart;
+
+ for (k = 0; (frac_len > 0) && (k < exponent); k += max_len)
+ {
+ if (frac_len > max_len) flen = max_len; else flen = frac_len;
+ frac_len -= max_len;
+
+ frac_part = 0;
+ for (i = 0; i < flen; i++)
+ frac_part = digits[(int)(*str++)] + (frac_part * radix);
+
+ dval += frac_part * pow((s7_Double)radix, (s7_Double)(exponent - flen - k));
+ }
}
else
{
- char old_c;
- /* we need to ignore extra trailing digits here to avoid later overflow */
- /* (string->number "3.1415926535897932384626433832795029" 11) */
- flen = digits[radix];
- old_c = str[floc + flen + 1];
- str[floc + flen + 1] = '\0';
- errno = 0;
- frac_part = strtoll((const char *)(str + floc + 1), (char **)NULL, radix);
- if (errno == ERANGE)
- return(0.0);
- str[floc + flen + 1] = old_c;
+ /* some of the fraction is in the integer part before the negative exponent shifts it over */
+ if (int_len > max_len)
+ {
+ int ilen;
+ /* str should be at the last digit we read */
+ ilen = int_len - max_len; /* we read these above */
+ if (ilen > max_len)
+ ilen = max_len;
+
+ for (i = 0; i < ilen; i++)
+ frac_part = digits[(int)(*str++)] + (frac_part * radix);
+
+ dval += frac_part * pow((s7_Double)radix, (s7_Double)(exponent - ilen));
+ }
}
+
+ return(sign * dval);
+ }
+
+ if (int_len <= max_len)
+ {
+ while ((dig = digits[(int)(*str++)]) < radix)
+ int_part = dig + (int_part * radix);
+
+ if (exponent != 0)
+ dval = int_part * pow((s7_Double)radix, (s7_Double)exponent);
+ else dval = (s7_Double)int_part;
+
+ }
+ else
+ {
+ int len, flen;
+ long long int fpart = 0;
+
+ /* 98765432101234567890987654321.0e-20 987654321.012346
+ * 98765432101234567890987654321.0e-29 0.98765432101235
+ * 98765432101234567890987654321.0e-30 0.098765432101235
+ * 98765432101234567890987654321.0e-28 9.8765432101235
+ */
+
+ len = int_len + exponent;
+ for (i = 0; i < len; i++)
+ int_part = digits[(int)(*str++)] + (int_part * radix);
+
+ flen = -exponent;
+ if (flen > max_len)
+ flen = max_len;
+
+ for (i = 0; i < flen; i++)
+ fpart = digits[(int)(*str++)] + (fpart * radix);
+
+ if (len <= 0)
+ dval = int_part + fpart * pow((s7_Double)radix, (s7_Double)(len - flen));
+ else dval = int_part + fpart * pow((s7_Double)radix, (s7_Double)(-flen));
}
- if (eloc != -1)
+ str = fpart;
+ if (frac_len <= max_len)
+ {
+ while ((dig = digits[(int)(*str++)]) < radix)
+ frac_part = dig + (frac_part * radix);
+
+ dval += frac_part * pow((s7_Double)radix, (s7_Double)(exponent - frac_len));
+ }
+ else
{
- errno = 0;
- exponent = strtoll((const char *)(str + eloc + 1), (char **)NULL, 10); /* the exponent is in base 10 */
- if ((exponent > 100) || (exponent < -100))
- errno = ERANGE;
- if (errno == ERANGE)
- return(0.0);
+ if (exponent <= 0)
+ {
+ for (i = 0; i < max_len; i++)
+ frac_part = digits[(int)(*str++)] + (frac_part * radix);
+
+ dval += frac_part * pow((s7_Double)radix, (s7_Double)(exponent - max_len));
+ }
+ else
+ {
+ long long int ipart = 0;
+ /* 1.0123456789876543210e1 10.12345678987654373771
+ * 1.0123456789876543210e10 10123456789.87654304504394531250
+ * 0.000000010000000000000000e10 100.0
+ * 0.000000010000000000000000000000000000000000000e10 100.0
+ * 0.000000012222222222222222222222222222222222222e10 122.22222222222222
+ * 0.000000012222222222222222222222222222222222222e17 1222222222.222222
+ */
+
+ for (i = 0; i < exponent; i++)
+ ipart = digits[(int)(*str++)] + (ipart * radix);
+
+ frac_len -= exponent;
+ if (frac_len > max_len)
+ frac_len = max_len;
+
+ for (i = 0; i < frac_len; i++)
+ frac_part = digits[(int)(*str++)] + (frac_part * radix);
+
+ dval += ipart + frac_part * pow((s7_Double)radix, (s7_Double)(-frac_len));
+ }
}
- /* (string->number "1.1e1" 2) */
- if (frac_part > 0)
- return(sign * (int_part + ((s7_Double)frac_part / pow((s7_Double)radix, (s7_Double)flen))) * pow((s7_Double)radix, (s7_Double)exponent));
- if (exponent != 0)
- return(sign * (int_part * pow((s7_Double)radix, (s7_Double)exponent)));
- return(sign * int_part);
+ /* fprintf(stderr, "%s -> %.20f (int: %d, frac: %d, max: %d, exp: %d)\n", ur_str, dval * sign, int_len, frac_len, max_len, exponent); */
+
+ return(sign * dval);
}
@@ -4756,8 +5001,12 @@ static s7_pointer make_atom(s7_scheme *sc, char *q, int radix, bool want_symbol)
int has_plus_or_minus = 0, current_radix;
#if (!WITH_GMP)
- #define ATOLL(x) strtoll(x, (char **)NULL, radix)
- #define ATOF(x) ((radix == 10) ? atof(x) : string_to_double_with_radix(x, radix))
+ bool overflow = false;
+ /* strtod follows LANG which is not what we want ("." is decimal point in Scheme).
+ * To overcome LANG in strtod would require screwing around with setlocale which never works
+ * and isn't thread safe. So use our own code -- according to valgrind,
+ * our function is much faster than strtod.
+ */
#endif
current_radix = radix;
@@ -4929,7 +5178,7 @@ static s7_pointer make_atom(s7_scheme *sc, char *q, int radix, bool want_symbol)
s7_pointer result;
int len;
char *saved_q;
- len = strlen(q);
+ len = safe_strlen(q);
if (q[len - 1] != 'i')
return((want_symbol) ? s7_make_symbol(sc, q) : sc->F);
@@ -4949,25 +5198,25 @@ static s7_pointer make_atom(s7_scheme *sc, char *q, int radix, bool want_symbol)
if ((has_dec_point1) ||
(ex1))
{
- /* (string->number "1100.1+0.11i" 2) -- need to split into 2 honest reals before passing to non-base-10 ATOF */
- rl = ATOF(q);
+ /* (string->number "1100.1+0.11i" 2) -- need to split into 2 honest reals before passing to non-base-10 str->dbl */
+ rl = string_to_double_with_radix(q, radix, &overflow);
}
else
{
if (slash1)
- rl = (s7_Double)ATOLL(q) / (s7_Double)ATOLL(slash1);
- else rl = (s7_Double)ATOLL(q);
+ rl = (s7_Double)string_to_integer(q, radix, &overflow) / (s7_Double)string_to_integer(slash1, radix, &overflow);
+ else rl = (s7_Double)string_to_integer(q, radix, &overflow);
}
if (rl == -0.0) rl = 0.0;
if ((has_dec_point2) ||
(ex2))
- im = ATOF(plus);
+ im = string_to_double_with_radix(plus, radix, &overflow);
else
{
if (slash2)
- im = (s7_Double)ATOLL(plus) / (s7_Double)ATOLL(slash2);
- else im = (s7_Double)ATOLL(plus);
+ im = (s7_Double)string_to_integer(plus, radix, &overflow) / (s7_Double)string_to_integer(slash2, radix, &overflow);
+ else im = (s7_Double)string_to_integer(plus, radix, &overflow);
}
if ((has_plus_or_minus == -1) &&
(im != 0.0))
@@ -4982,7 +5231,7 @@ static s7_pointer make_atom(s7_scheme *sc, char *q, int radix, bool want_symbol)
return(result);
}
-
+ /* not complex */
if ((has_dec_point1) ||
(ex1))
{
@@ -4999,7 +5248,7 @@ static s7_pointer make_atom(s7_scheme *sc, char *q, int radix, bool want_symbol)
}
#if (!WITH_GMP)
- result = s7_make_real(sc, ATOF(q));
+ result = s7_make_real(sc, string_to_double_with_radix(q, radix, &overflow));
#else
result = string_to_either_real(sc, q, radix);
#endif
@@ -5010,15 +5259,18 @@ static s7_pointer make_atom(s7_scheme *sc, char *q, int radix, bool want_symbol)
return(result);
}
+ /* not real */
if (slash1)
#if (!WITH_GMP)
- return(s7_make_ratio(sc, ATOLL(q), ATOLL(slash1)));
+ return(s7_make_ratio(sc, string_to_integer(q, radix, &overflow),
+ string_to_integer(slash1, radix, &overflow)));
#else
return(string_to_either_ratio(sc, q, slash1, radix));
#endif
+ /* integer */
#if (!WITH_GMP)
- return(s7_make_integer(sc, ATOLL(q)));
+ return(s7_make_integer(sc, string_to_integer(q, radix, &overflow)));
#else
return(string_to_either_integer(sc, q, radix));
#endif
@@ -5029,7 +5281,7 @@ static s7_pointer s7_string_to_number(s7_scheme *sc, char *str, int radix)
{
s7_pointer x;
x = make_atom(sc, str, radix, false);
- if (s7_is_number(x))
+ if (s7_is_number(x)) /* only needed because str might start with '#' and not be a number (#t for example) */
return(x);
return(sc->F);
}
@@ -5134,15 +5386,14 @@ static s7_pointer g_abs(s7_scheme *sc, s7_pointer args)
return(s7_wrong_type_arg_error(sc, "abs", 0, car(args), "a real"));
n = number(car(args));
- if (num_type(n) >= NUM_REAL)
- real(n) = s7_Double_abs(real(n));
- else
+ switch (num_type(n))
{
- if (num_type(n) == NUM_INT)
- integer(n) = s7_Int_abs(integer(n));
- else numerator(n) = s7_Int_abs(numerator(n));
+ case NUM_INT: return(s7_make_integer(sc, s7_Int_abs(integer(n))));
+ case NUM_RATIO: return(s7_make_ratio(sc, s7_Int_abs(numerator(n)), denominator(n)));
+ case NUM_REAL2:
+ case NUM_REAL: return(s7_make_real(sc, s7_Double_abs(real(n))));
}
- return(make_number(sc, n));
+ return(sc->NIL); /* make compiler happy */
}
@@ -5177,7 +5428,7 @@ static s7_pointer g_angle(s7_scheme *sc, s7_pointer args)
return(s7_make_real(sc, M_PI));
if (number_type(x) <= NUM_RATIO)
return(small_int(sc, 0));
- return(sc->real_zero);
+ return(real_zero);
}
@@ -5491,7 +5742,7 @@ static s7_pointer g_tanh(s7_scheme *sc, s7_pointer args)
if (s7_is_real(x))
return(s7_make_real(sc, tanh(num_to_real(number(x)))));
if (s7_real_part(x) > 350.0)
- return(sc->real_one); /* closer than 0.0 which is what ctanh is about to return! */
+ return(real_one); /* closer than 0.0 which is what ctanh is about to return! */
if (s7_real_part(x) < -350.0)
return(s7_make_real(sc, -1.0)); /* closer than -0.0 which is what ctanh is about to return! */
@@ -5644,7 +5895,7 @@ static s7_pointer g_expt(s7_scheme *sc, s7_pointer args)
{
if ((s7_is_integer(n)) && (s7_is_integer(pw))) /* (expt 0 0) -> 1 */
return(s7_make_integer(sc, 1));
- return(sc->real_zero); /* (expt 0.0 0) -> 0.0 */
+ return(real_zero); /* (expt 0.0 0) -> 0.0 */
}
if ((s7_is_real(pw)) && (s7_is_negative(pw))) /* (expt 0 -1) */
@@ -5652,7 +5903,7 @@ static s7_pointer g_expt(s7_scheme *sc, s7_pointer args)
if ((s7_is_integer(n)) && (s7_is_integer(pw))) /* pw != 0, (expt 0 2312) */
return(s7_make_integer(sc, 0));
- return(sc->real_zero); /* (expt 0.0 123123) */
+ return(real_zero); /* (expt 0.0 123123) */
}
if (s7_is_one(pw))
@@ -5672,7 +5923,7 @@ static s7_pointer g_expt(s7_scheme *sc, s7_pointer args)
{
if ((number_type(n) == NUM_INT) || (number_type(n) == NUM_RATIO))
return(small_int(sc, 1));
- return(sc->real_one);
+ return(real_one);
}
if (number_type(n) == NUM_INT)
@@ -5750,7 +6001,7 @@ static s7_pointer g_expt(s7_scheme *sc, s7_pointer args)
x = num_to_real(number(n));
y = num_to_real(number(pw));
if (y == 0.0)
- return(sc->real_one);
+ return(real_one);
if ((x > 0.0) ||
((y - floor(y)) < 1.0e-16))
return(s7_make_real(sc, pow(x, y)));
@@ -6251,7 +6502,6 @@ static s7_pointer g_modulo(s7_scheme *sc, s7_pointer args)
static s7_pointer g_equal(s7_scheme *sc, s7_pointer args)
{
#define H_equal "(= z1 ...) returns #t if all its arguments are equal"
- /* return(compare_numbers(sc, N_EQUAL, args)); */
int i;
s7_pointer x;
s7_num_t n;
@@ -6272,23 +6522,11 @@ static s7_pointer g_equal(s7_scheme *sc, s7_pointer args)
}
-typedef enum {N_LESS, N_GREATER, N_LESS_OR_EQUAL, N_GREATER_OR_EQUAL} compare_t;
-
-static s7_pointer compare_numbers(s7_scheme *sc, compare_t op, s7_pointer args)
+static s7_pointer compare_numbers(s7_scheme *sc, s7_pointer args, bool (*comp_func)(s7_num_t a, s7_num_t b), const char *op_name)
{
int i;
s7_pointer x;
- bool (*comp_func)(s7_num_t a, s7_num_t b) = NULL;
- const char *op_name = NULL;
s7_num_t n;
-
- switch (op)
- {
- case N_LESS: comp_func = num_lt; op_name = "<"; break;
- case N_GREATER: comp_func = num_gt; op_name = ">"; break;
- case N_LESS_OR_EQUAL: comp_func = num_le; op_name = "<="; break;
- case N_GREATER_OR_EQUAL: comp_func = num_ge; op_name = ">="; break;
- }
for (i = 1, x = args; x != sc->NIL; i++, x = cdr(x))
if (!s7_is_real(car(x)))
@@ -6308,28 +6546,28 @@ static s7_pointer compare_numbers(s7_scheme *sc, compare_t op, s7_pointer args)
static s7_pointer g_less(s7_scheme *sc, s7_pointer args)
{
#define H_less "(< x1 ...) returns #t if its arguments are in increasing order"
- return(compare_numbers(sc, N_LESS, args));
+ return(compare_numbers(sc, args, num_lt, "<"));
}
static s7_pointer g_greater(s7_scheme *sc, s7_pointer args)
{
#define H_greater "(> x1 ...) returns #t if its arguments are in decreasing order"
- return(compare_numbers(sc, N_GREATER, args));
+ return(compare_numbers(sc, args, num_gt, ">"));
}
static s7_pointer g_less_or_equal(s7_scheme *sc, s7_pointer args)
{
#define H_less_or_equal "(<= x1 ...) returns #t if its arguments are in increasing order"
- return(compare_numbers(sc, N_LESS_OR_EQUAL, args));
+ return(compare_numbers(sc, args, num_le, "<="));
}
static s7_pointer g_greater_or_equal(s7_scheme *sc, s7_pointer args)
{
#define H_greater_or_equal "(>= x1 ...) returns #t if its arguments are in decreasing order"
- return(compare_numbers(sc, N_GREATER_OR_EQUAL, args));
+ return(compare_numbers(sc, args, num_ge, ">="));
}
@@ -7117,7 +7355,7 @@ s7_pointer s7_make_permanent_string(const char *str)
set_type(x, T_STRING | T_ATOM | T_SIMPLE | T_IMMUTABLE | T_DONT_COPY);
if (str)
{
- string_length(x) = strlen(str);
+ string_length(x) = safe_strlen(str);
string_value(x) = s7_strdup_with_len(str, string_length(x));
}
else
@@ -7177,18 +7415,11 @@ static s7_pointer g_string_length(s7_scheme *sc, s7_pointer args)
}
-static s7_pointer g_string_ref(s7_scheme *sc, s7_pointer args)
+static s7_pointer string_ref_1(s7_scheme *sc, s7_pointer strng, s7_pointer index)
{
- #define H_string_ref "(string-ref str index) returns the character at the index-th element of the string str"
-
- s7_pointer index;
char *str;
s7_Int ind;
- index = cadr(args);
-
- if (!s7_is_string(car(args)))
- return(s7_wrong_type_arg_error(sc, "string-ref", 1, car(args), "a string"));
if (!s7_is_integer(index))
return(s7_wrong_type_arg_error(sc, "string-ref", 2, index, "an integer"));
@@ -7196,14 +7427,25 @@ static s7_pointer g_string_ref(s7_scheme *sc, s7_pointer args)
if (ind < 0)
return(s7_wrong_type_arg_error(sc, "string-ref", 2, index, "a non-negative integer"));
- if (ind >= string_length(car(args)))
+ if (ind >= string_length(strng))
return(s7_out_of_range_error(sc, "string-ref", 2, index, "index should be less than string length"));
- str = string_value(car(args));
+ str = string_value(strng);
return(s7_make_character(sc, ((unsigned char *)str)[ind]));
}
+static s7_pointer g_string_ref(s7_scheme *sc, s7_pointer args)
+{
+ #define H_string_ref "(string-ref str index) returns the character at the index-th element of the string str"
+
+ if (!s7_is_string(car(args)))
+ return(s7_wrong_type_arg_error(sc, "string-ref", 1, car(args), "a string"));
+
+ return(string_ref_1(sc, car(args), cadr(args)));
+}
+
+
static s7_pointer g_string_set(s7_scheme *sc, s7_pointer args)
{
#define H_string_set "(string-set! str index chr) sets the index-th element of the string str to the character chr"
@@ -7447,8 +7689,8 @@ static int safe_strcasecmp(const char *s1, const char *s2)
if (s2 == NULL)
return(1);
- len1 = strlen(s1);
- len2 = strlen(s2);
+ len1 = safe_strlen(s1);
+ len2 = safe_strlen(s2);
len = len1;
if (len1 > len2)
len = len2;
@@ -7565,7 +7807,7 @@ static s7_pointer g_string_fill(s7_scheme *sc, s7_pointer args)
* set when it is created, and (apparently) can contain an embedded 0, so its
* print length is not its length.
* char *str; char c; str = string_value(car(args)); c = character(cadr(args));
- * int i, len = 0; if (str) len = strlen(str); if (len > 0) for (i = 0; i < len; i++) str[i] = c;
+ * int i, len = 0; if (str) len = safe_strlen(str); if (len > 0) for (i = 0; i < len; i++) str[i] = c;
*/
memset((void *)(string_value(x)), (int)character(cadr(args)), string_length(x)); /* presumably memset can fill 0 bytes if empty string */
return(x); /* or perhaps sc->UNSPECIFIED */
@@ -7625,7 +7867,7 @@ static s7_pointer g_string_to_list(s7_scheme *sc, s7_pointer args)
return(s7_wrong_type_arg_error(sc, "string->list", 0, car(args), "a string"));
str = string_value(car(args));
- if (str) len = strlen(str);
+ if (str) len = safe_strlen(str);
if (len == 0)
return(sc->NIL);
for (i = 0; i < len; i++)
@@ -7671,7 +7913,7 @@ static s7_pointer g_string_for_each(s7_scheme *sc, s7_pointer args)
sc->args = s7_cons(sc, make_mutable_integer(sc, 0),
s7_cons(sc, s7_make_integer(sc, len),
s7_cons(sc, fargs, cdr(args))));
- push_stack(sc, OP_STRING_FOR_EACH, sc->args, sc->code);
+ push_stack(sc, opcode(OP_STRING_FOR_EACH), sc->args, sc->code);
return(sc->UNSPECIFIED);
}
@@ -7709,24 +7951,21 @@ static s7_pointer g_port_line_number(s7_scheme *sc, s7_pointer args)
const char *s7_port_filename(s7_pointer x)
{
- if (((is_input_port(x)) || (is_output_port(x))) && /* make sure it's some kind of port */
- (is_file_port(x)))
+ if ((is_input_port(x)) || (is_output_port(x))) /* make sure it's some kind of port */
return(port_filename(x));
return(NULL);
}
+
static s7_pointer g_port_filename(s7_scheme *sc, s7_pointer args)
{
#define H_port_filename "(port-filename file-port) returns the filename associated with port"
s7_pointer x;
- x = car(args);
+ x = car(args);
if ((is_input_port(x)) || (is_output_port(x)))
- {
- if (is_file_port(x))
- return(s7_make_string(sc, port_filename(x)));
- return(sc->F); /* not an error! */
- }
+ return(s7_make_string(sc, port_filename(x)));
+
return(s7_wrong_type_arg_error(sc, "port-filename", 1, x, "a port"));
}
@@ -7963,23 +8202,61 @@ static s7_pointer g_close_output_port(s7_scheme *sc, s7_pointer args)
}
-static s7_pointer s7_make_input_file(s7_scheme *sc, const char *name, FILE *fp)
+static s7_pointer read_file(s7_scheme *sc, FILE *fp, const char *name, long max_size, const char *caller)
{
- s7_pointer x;
- x = new_cell(sc);
- set_type(x, T_INPUT_PORT | T_ATOM | T_FINALIZABLE | T_SIMPLE | T_DONT_COPY);
-
- /* set up the port struct */
- x->object.port = (s7_port_t *)calloc(1, sizeof(s7_port_t));
- port_file(x) = fp;
- port_type(x) = FILE_PORT;
- port_is_closed(x) = false;
- port_filename(x) = s7_strdup(name);
- port_line_number(x) = 1; /* 1st line is numbered 1 */
- port_needs_free(x) = false;
+ s7_pointer port;
+ long size;
+ char *content = NULL;
- /* PERHAPS: wouldn't it be faster here to load_file and return a string port? */
- return(x);
+ port = new_cell(sc);
+ set_type(port, T_INPUT_PORT | T_ATOM | T_FINALIZABLE | T_SIMPLE | T_DONT_COPY);
+ port->object.port = (s7_port_t *)calloc(1, sizeof(s7_port_t));
+ port_is_closed(port) = false;
+ port_filename(port) = s7_strdup(name);
+ port_line_number(port) = 1; /* 1st line is numbered 1 */
+
+ fseek(fp, 0, SEEK_END);
+ size = ftell(fp);
+ rewind(fp);
+
+ /* pseudo files (under /proc for example) have size=0, but we can read them, so don't assume a 0 length file is empty */
+
+ if ((size != 0) &&
+ ((max_size < 0) || (size < max_size)))
+ {
+ size_t bytes;
+ content = (char *)malloc((size + 2) * sizeof(char));
+ bytes = fread(content, sizeof(char), size, fp);
+ if (bytes != (size_t)size)
+ {
+ char tmp[256];
+ snprintf(tmp, 256, "(%s \"%s\") read %ld bytes of an expected %ld?", caller, name, (long)bytes, size);
+ write_string(sc, tmp, sc->output_port);
+ }
+ content[size] = '\0';
+ content[size + 1] = '\0';
+ fclose(fp);
+
+ port_type(port) = STRING_PORT;
+ port_string(port) = content;
+ port_string_length(port) = size;
+ port_string_point(port) = 0;
+ port_needs_free(port) = true;
+ }
+ else
+ {
+ port_file(port) = fp;
+ port_type(port) = FILE_PORT;
+ port_needs_free(port) = false;
+ }
+ return(port);
+}
+
+
+static s7_pointer s7_make_input_file(s7_scheme *sc, const char *name, FILE *fp)
+{
+ #define MAX_SIZE_FOR_STRING_PORT 1000000
+ return(read_file(sc, fp, name, MAX_SIZE_FOR_STRING_PORT, "open"));
}
@@ -8190,9 +8467,6 @@ static s7_pointer pop_input_port(s7_scheme *sc)
}
-/* TODO: tie in (and test/document) the caller function input port
- */
-
static int inchar(s7_scheme *sc, s7_pointer pt)
{
int c;
@@ -8365,7 +8639,7 @@ s7_pointer s7_read(s7_scheme *sc, s7_pointer port)
return(sc->value);
}
push_input_port(sc, port);
- push_stack(sc, OP_READ_RETURN_EXPRESSION, port, sc->NIL);
+ push_stack(sc, opcode(OP_READ_RETURN_EXPRESSION), port, sc->NIL);
eval(sc, OP_READ_INTERNAL);
sc->longjmp_ok = old_longjmp;
pop_input_port(sc);
@@ -8394,8 +8668,8 @@ static s7_pointer g_read(s7_scheme *sc, s7_pointer args)
return((*(port_input_function(port)))(sc, S7_READ, port));
push_input_port(sc, port);
- push_stack(sc, OP_READ_POP_AND_RETURN_EXPRESSION, sc->NIL, sc->NIL); /* this stops the internal read process so we only get one form */
- push_stack(sc, OP_READ_INTERNAL, sc->NIL, sc->NIL);
+ push_stack(sc, opcode(OP_READ_POP_AND_RETURN_EXPRESSION), sc->NIL, sc->NIL); /* this stops the internal read process so we only get one form */
+ push_stack(sc, opcode(OP_READ_INTERNAL), sc->NIL, sc->NIL);
return(port);
}
@@ -8406,7 +8680,7 @@ static FILE *search_load_path(s7_scheme *sc, const char *name)
s7_pointer lst;
lst = s7_load_path(sc);
len = s7_list_length(sc, lst);
- name_len = strlen(name);
+ name_len = safe_strlen(name);
for (i = 0; i < len; i++)
{
const char *new_dir;
@@ -8416,7 +8690,7 @@ static FILE *search_load_path(s7_scheme *sc, const char *name)
{
char *new_name;
FILE *fp;
- size = name_len + strlen(new_dir) + 2;
+ size = name_len + safe_strlen(new_dir) + 2;
new_name = (char *)malloc(size * sizeof(char));
snprintf(new_name, size, "%s/%s", new_dir, name);
fp = fopen(new_name, "r");
@@ -8430,48 +8704,7 @@ static FILE *search_load_path(s7_scheme *sc, const char *name)
static s7_pointer load_file(s7_scheme *sc, FILE *fp, const char *name)
{
- s7_pointer port;
- long size;
- char *content = NULL;
-
- port = new_cell(sc);
- set_type(port, T_INPUT_PORT | T_ATOM | T_FINALIZABLE | T_SIMPLE | T_DONT_COPY);
- port->object.port = (s7_port_t *)calloc(1, sizeof(s7_port_t));
- port_type(port) = STRING_PORT;
- port_is_closed(port) = false;
-
- fseek(fp, 0, SEEK_END);
- size = ftell(fp);
- if (size > 0)
- {
- size_t bytes;
- rewind(fp);
- content = (char *)malloc((size + 1) * sizeof(char));
- bytes = fread(content, sizeof(char), size, fp);
- if (bytes != (size_t)size)
- {
- char *tmp;
- tmp = (char *)calloc(256, sizeof(char));
- snprintf(tmp, 256, "(load \"%s\") read %ld bytes of an expected %ld?", name, (long)bytes, size);
- write_string(sc, tmp, sc->output_port);
- free(tmp);
- }
- content[size] = '\0';
- }
- else
- {
- content = (char *)calloc(1, sizeof(char)); /* empty file in load still accesses the string (for 0=eof) */
- }
- fclose(fp);
-
- port_string(port) = content;
- port_string_length(port) = size;
- port_string_point(port) = 0;
- port_line_number(port) = 1;
- port_filename(port) = s7_strdup(name); /* for missing close paren error etc */
- port_needs_free(port) = true;
-
- return(port);
+ return(read_file(sc, fp, name, -1, "load")); /* -1 means always read its contents into a local string */
}
@@ -8482,7 +8715,7 @@ static void run_load_hook(s7_scheme *sc, const char *filename)
load_hook = s7_symbol_value(sc, s7_make_symbol(sc, "*load-hook*"));
if (is_procedure(load_hook))
{
- push_stack(sc, OP_EVAL_DONE, sc->args, sc->code);
+ push_stack(sc, opcode(OP_EVAL_DONE), sc->args, sc->code);
sc->args = make_list_1(sc, s7_make_string(sc, filename));
sc->code = load_hook;
eval(sc, OP_APPLY);
@@ -8514,7 +8747,7 @@ s7_pointer s7_load(s7_scheme *sc, const char *filename)
if (!sc->longjmp_ok)
{
- push_stack(sc, OP_LOAD_RETURN_IF_EOF, port, sc->NIL);
+ push_stack(sc, opcode(OP_LOAD_RETURN_IF_EOF), port, sc->NIL);
old_longjmp = sc->longjmp_ok;
if (!sc->longjmp_ok)
@@ -8531,7 +8764,7 @@ s7_pointer s7_load(s7_scheme *sc, const char *filename)
else
{
/* caller here is assuming the load will be complete before this function returns */
- push_stack(sc, OP_LOAD_RETURN_IF_EOF, sc->args, sc->code);
+ push_stack(sc, opcode(OP_LOAD_RETURN_IF_EOF), sc->args, sc->code);
eval(sc, OP_READ_INTERNAL);
pop_input_port(sc);
s7_close_input_port(sc, port);
@@ -8576,8 +8809,8 @@ defaults to the global environment; to load into the current environment instead
}
else sc->envir = s7_global_environment(sc);
- push_stack(sc, OP_LOAD_CLOSE_AND_POP_IF_EOF, sc->NIL, sc->NIL); /* was pushing args and code, but I don't think they're used later */
- push_stack(sc, OP_READ_INTERNAL, sc->NIL, sc->NIL);
+ push_stack(sc, opcode(OP_LOAD_CLOSE_AND_POP_IF_EOF), sc->NIL, sc->NIL); /* was pushing args and code, but I don't think they're used later */
+ push_stack(sc, opcode(OP_READ_INTERNAL), sc->NIL, sc->NIL);
return(sc->UNSPECIFIED);
}
@@ -8607,10 +8840,28 @@ s7_pointer s7_add_to_load_path(s7_scheme *sc, const char *dir)
}
+static s7_pointer eval_string_1(s7_scheme *sc, const char *str)
+{
+ s7_pointer port;
+
+ port = s7_open_input_string(sc, str);
+ push_input_port(sc, port);
+ push_stack(sc, opcode(OP_EVAL_STRING), sc->args, sc->code);
+ eval(sc, OP_READ_INTERNAL);
+ pop_input_port(sc);
+ s7_close_input_port(sc, port);
+
+ if ((is_pair(sc->value)) && /* (+ 1 (eval-string "(values 2 3)")) */
+ (car(sc->value) == sc->VALUES))
+ sc->value = splice_in_values(sc, cdr(sc->value));
+
+ return(sc->value);
+}
+
+
static s7_pointer g_eval_string(s7_scheme *sc, s7_pointer args)
{
#define H_eval_string "(eval-string str :optional env) returns the result of evaluating the string str as Scheme code"
- s7_pointer port;
if (!s7_is_string(car(args)))
return(s7_wrong_type_arg_error(sc, "eval-string", 0, car(args), "a string"));
@@ -8622,35 +8873,34 @@ static s7_pointer g_eval_string(s7_scheme *sc, s7_pointer args)
sc->envir = cadr(args);
}
- port = s7_open_input_string(sc, s7_string(car(args)));
- push_input_port(sc, port);
- push_stack(sc, OP_EVAL_STRING, sc->args, sc->code);
- eval(sc, OP_READ_INTERNAL);
- pop_input_port(sc);
- s7_close_input_port(sc, port);
-
- if ((is_pair(sc->value)) && /* (+ 1 (eval-string "(values 2 3)")) */
- (car(sc->value) == sc->VALUES))
- sc->value = splice_in_values(sc, cdr(sc->value));
-
- return(sc->value);
+ return(eval_string_1(sc, s7_string(car(args))));
}
s7_pointer s7_eval_c_string(s7_scheme *sc, const char *str)
{
bool old_longjmp;
- s7_pointer port;
+ s7_pointer port, old_envir;
/* this can be called recursively via s7_call */
+ old_envir = sc->envir;
+ sc->envir = sc->global_env; /* C call assumes top level, I think. This is needed in any case
+ * by dlinit -- the init function will be called in some local environment,
+ * but the library entities it defines should obviously be top level,
+ * as if via load.
+ */
if (sc->longjmp_ok)
- return(g_eval_string(sc, make_list_1(sc, s7_make_string(sc, str))));
+ {
+ s7_pointer result;
+ result = eval_string_1(sc, str);
+ sc->envir = old_envir;
+ return(result);
+ }
stack_reset(sc);
- sc->envir = sc->global_env;
port = s7_open_input_string(sc, str);
push_input_port(sc, port);
- push_stack(sc, OP_EVAL_STRING, sc->NIL, sc->NIL);
+ push_stack(sc, opcode(OP_EVAL_STRING), sc->NIL, sc->NIL);
old_longjmp = sc->longjmp_ok;
if (!sc->longjmp_ok)
@@ -8664,14 +8914,14 @@ s7_pointer s7_eval_c_string(s7_scheme *sc, const char *str)
sc->longjmp_ok = old_longjmp;
pop_input_port(sc);
s7_close_input_port(sc, port);
-
+ sc->envir = old_envir;
return(sc->value);
}
static s7_pointer call_with_input(s7_scheme *sc, s7_pointer port, s7_pointer args)
{
- push_stack(sc, OP_UNWIND_INPUT, sc->input_port, port);
+ push_stack(sc, opcode(OP_UNWIND_INPUT), sc->input_port, port);
sc->code = cadr(args);
sc->args = make_list_1(sc, port);
eval(sc, OP_APPLY);
@@ -8720,7 +8970,7 @@ static s7_pointer with_input(s7_scheme *sc, s7_pointer port, s7_pointer args)
old_input_port = sc->input_port;
sc->input_port = port;
- push_stack(sc, OP_UNWIND_INPUT, old_input_port, port);
+ push_stack(sc, opcode(OP_UNWIND_INPUT), old_input_port, port);
sc->code = cadr(args);
sc->args = sc->NIL;
eval(sc, OP_APPLY);
@@ -8990,6 +9240,7 @@ static char *s7_atom_to_c_string(s7_scheme *sc, s7_pointer obj, bool use_write)
return(s7_strdup("#<closure>"));
}
+ case T_C_ANY_ARGS_FUNCTION:
case T_C_FUNCTION:
return(s7_strdup(c_function_name(obj)));
@@ -9379,12 +9630,25 @@ static s7_pointer g_read_byte(s7_scheme *sc, s7_pointer args)
port = car(args);
else port = sc->input_port;
- if ((!is_input_port(port)) ||
- (!is_file_port(port)))
- return(s7_wrong_type_arg_error(sc, "read-byte", 0, port, "an input file port"));
+ if (!is_input_port(port))
+ return(s7_wrong_type_arg_error(sc, "read-byte", 0, port, "an input port"));
+
+ if (is_string_port(port))
+ {
+ if ((!(port_string(port))) ||
+ (port_string_length(port) <= port_string_point(port)))
+ return(sc->EOF_OBJECT);
+ return(s7_make_integer(sc, (int)((unsigned char)(port_string(port)[port_string_point(port)++]))));
+ }
if (is_file_port(port))
- return(s7_make_integer(sc, fgetc(port_file(port))));
+ {
+ int c;
+ c = fgetc(port_file(port));
+ if (c == EOF)
+ return(sc->EOF_OBJECT);
+ return(s7_make_integer(sc, c));
+ }
return((*(port_input_function(port)))(sc, S7_READ_BYTE, port));
}
@@ -9422,7 +9686,7 @@ static s7_pointer g_call_with_output_string(s7_scheme *sc, s7_pointer args)
return(s7_wrong_type_arg_error(sc, "call-with-output-string", 1, car(args), "a procedure"));
port = s7_open_output_string(sc);
- push_stack(sc, OP_UNWIND_OUTPUT, sc->F, port);
+ push_stack(sc, opcode(OP_UNWIND_OUTPUT), sc->F, port);
sc->code = car(args);
sc->args = make_list_1(sc, port);
eval(sc, OP_APPLY);
@@ -9443,7 +9707,7 @@ static s7_pointer g_call_with_output_file(s7_scheme *sc, s7_pointer args)
return(s7_wrong_type_arg_error(sc, "call-with-output-file", 2, cadr(args), "a procedure"));
port = s7_open_output_file(sc, s7_string(car(args)), "w");
- push_stack(sc, OP_UNWIND_OUTPUT, sc->F, port);
+ push_stack(sc, opcode(OP_UNWIND_OUTPUT), sc->F, port);
sc->code = cadr(args);
sc->args = make_list_1(sc, port);
eval(sc, OP_APPLY);
@@ -9467,7 +9731,7 @@ static s7_pointer g_with_output_to_string(s7_scheme *sc, s7_pointer args)
old_output_port = sc->output_port;
sc->output_port = s7_open_output_string(sc);
- push_stack(sc, OP_UNWIND_OUTPUT, old_output_port, sc->output_port);
+ push_stack(sc, opcode(OP_UNWIND_OUTPUT), old_output_port, sc->output_port);
sc->code = car(args);
sc->args = sc->NIL;
eval(sc, OP_APPLY);
@@ -9492,7 +9756,7 @@ static s7_pointer g_with_output_to_file(s7_scheme *sc, s7_pointer args)
old_output_port = sc->output_port;
sc->output_port = s7_open_output_file(sc, s7_string(car(args)), "w");
- push_stack(sc, OP_UNWIND_OUTPUT, old_output_port, sc->output_port);
+ push_stack(sc, opcode(OP_UNWIND_OUTPUT), old_output_port, sc->output_port);
sc->code = cadr(args);
sc->args = sc->NIL;
eval(sc, OP_APPLY);
@@ -9529,13 +9793,8 @@ s7_pointer s7_cons(s7_scheme *sc, s7_pointer a, s7_pointer b)
x = new_cell(sc); /* might trigger gc */
#else
/* expand new_cell for speed */
- if (sc->free_heap_top > 0)
- {
- x = sc->free_heap[--(sc->free_heap_top)];
- sc->temps[sc->temps_ctr++] = x;
- if (sc->temps_ctr >= sc->temps_size)
- sc->temps_ctr = 0;
- }
+ if (sc->free_heap_top > GC_TEMPS_SIZE)
+ x = sc->free_heap[--(sc->free_heap_top)];
else x = new_cell(sc);
#endif
car(x) = a;
@@ -9877,28 +10136,24 @@ static s7_pointer g_make_list(s7_scheme *sc, s7_pointer args)
}
-static s7_pointer g_list_ref(s7_scheme *sc, s7_pointer args)
+static s7_pointer list_ref_1(s7_scheme *sc, s7_pointer lst, s7_pointer ind)
{
- #define H_list_ref "(list-ref lst i) returns the i-th element (0-based) of the list"
-
int i;
s7_Int index;
s7_pointer p;
- if (!is_pair(car(args)))
- return(s7_wrong_type_arg_error(sc, "list-ref", 1, car(args), "a pair"));
- if ((!s7_is_integer(cadr(args))) ||
- (s7_integer(cadr(args)) < 0))
- return(s7_wrong_type_arg_error(sc, "list-ref", 2, cadr(args), "a non-negative integer"));
+ if ((!s7_is_integer(ind)) ||
+ (s7_integer(ind) < 0))
+ return(s7_wrong_type_arg_error(sc, "list-ref", 2, ind, "a non-negative integer"));
- index = s7_integer(cadr(args));
+ index = s7_integer(ind);
if (index < 0)
- return(s7_out_of_range_error(sc, "list-ref", 2, cadr(args), "index should be non-negative"));
+ return(s7_out_of_range_error(sc, "list-ref", 2, ind, "index should be non-negative"));
- for (i = 0, p = car(args); (i < index) && is_pair(p); i++, p = cdr(p)) {}
+ for (i = 0, p = lst; (i < index) && is_pair(p); i++, p = cdr(p)) {}
if (p == sc->NIL)
- return(s7_out_of_range_error(sc, "list-ref", 2, cadr(args), "index should be less than list length"));
+ return(s7_out_of_range_error(sc, "list-ref", 2, ind, "index should be less than list length"));
if (!is_pair(p))
return(s7_wrong_type_arg_error(sc, "list-ref", i, p, "a proper list"));
@@ -9906,6 +10161,17 @@ static s7_pointer g_list_ref(s7_scheme *sc, s7_pointer args)
}
+static s7_pointer g_list_ref(s7_scheme *sc, s7_pointer args)
+{
+ #define H_list_ref "(list-ref lst i) returns the i-th element (0-based) of the list"
+
+ if (!is_pair(car(args)))
+ return(s7_wrong_type_arg_error(sc, "list-ref", 1, car(args), "a pair"));
+
+ return(list_ref_1(sc, car(args), cadr(args)));
+}
+
+
static s7_pointer g_list_set(s7_scheme *sc, s7_pointer args)
{
#define H_list_set "(list-set! lst i val) sets the i-th element (0-based) of the list to val"
@@ -9999,13 +10265,8 @@ static s7_pointer g_cons(s7_scheme *sc, s7_pointer args)
x = new_cell(sc); /* might trigger gc */
#else
/* expand new_cell for speed */
- if (sc->free_heap_top > 0)
- {
- x = sc->free_heap[--(sc->free_heap_top)];
- sc->temps[sc->temps_ctr++] = x;
- if (sc->temps_ctr >= sc->temps_size)
- sc->temps_ctr = 0;
- }
+ if (sc->free_heap_top > GC_TEMPS_SIZE)
+ x = sc->free_heap[--(sc->free_heap_top)];
else x = new_cell(sc);
#endif
car(x) = car(args);
@@ -10471,6 +10732,14 @@ s7_pointer s7_remv(s7_scheme *sc, s7_pointer a, s7_pointer obj)
}
+static bool is_dotted(s7_scheme *sc, s7_pointer x)
+{
+ s7_pointer a = x;
+ while (is_pair(a)) {a = cdr(a);}
+ return(a != sc->NIL);
+}
+
+
static s7_pointer g_assq_1(s7_scheme *sc, s7_pointer args, const char *name, bool (*eq_func)(s7_pointer a, s7_pointer b))
{
#define H_assq "(assq obj alist) returns the key-value pair associated (via eq?) with the key obj in the association list alist"
@@ -10484,7 +10753,7 @@ static s7_pointer g_assq_1(s7_scheme *sc, s7_pointer args, const char *name, boo
if (cadr(args) == sc->NIL)
return(sc->F);
- if (s7_list_length(sc, cadr(args)) <= 0)
+ if (is_dotted(sc, cadr(args)))
return(s7_wrong_type_arg_error(sc, name, 2, cadr(args), "a proper list"));
x = car(args);
@@ -10514,7 +10783,7 @@ static s7_pointer g_memq_1(s7_scheme *sc, s7_pointer args, const char *name, boo
if (cadr(args) == sc->NIL)
return(sc->F);
- if (s7_list_length(sc, cadr(args)) <= 0)
+ if (is_dotted(sc, cadr(args)))
return(s7_wrong_type_arg_error(sc, name, 2, cadr(args), "a proper list"));
for (x = cadr(args); is_pair(x); x = cdr(x))
@@ -11206,7 +11475,7 @@ static s7_pointer g_vector_for_each(s7_scheme *sc, s7_pointer args)
sc->args = s7_cons(sc, make_mutable_integer(sc, 0),
s7_cons(sc, s7_make_integer(sc, len),
s7_cons(sc, fargs, cdr(args))));
- push_stack(sc, OP_VECTOR_FOR_EACH, sc->args, sc->code);
+ push_stack(sc, opcode(OP_VECTOR_FOR_EACH), sc->args, sc->code);
return(sc->UNSPECIFIED);
}
@@ -11244,7 +11513,7 @@ static s7_pointer g_hash_table_for_each(s7_scheme *sc, s7_pointer args)
sc->args = s7_cons(sc, make_mutable_integer(sc, 0),
s7_cons(sc, s7_make_integer(sc, len),
s7_cons(sc, fargs, cdr(args))));
- push_stack(sc, OP_HASH_TABLE_FOR_EACH, sc->args, sc->code);
+ push_stack(sc, opcode(OP_HASH_TABLE_FOR_EACH), sc->args, sc->code);
return(sc->UNSPECIFIED);
}
@@ -11290,7 +11559,7 @@ static s7_pointer g_vector_map(s7_scheme *sc, s7_pointer args)
s7_cons(sc, make_mutable_integer(sc, 0),
s7_cons(sc, s7_make_integer(sc, len),
s7_cons(sc, fargs, cdr(args)))));
- push_stack(sc, OP_VECTOR_MAP0, sc->args, sc->code);
+ push_stack(sc, opcode(OP_VECTOR_MAP0), sc->args, sc->code);
return(sc->UNSPECIFIED);
}
@@ -11309,7 +11578,7 @@ static s7_pointer g_vector_map(s7_scheme *sc, s7_pointer args)
cadr(compare_proc_args) = (*(s7_pointer *)v2);
start = compare_sc->stack_top; /* see note below */
- push_stack(compare_sc, OP_EVAL_DONE, compare_sc->args, compare_sc->code);
+ push_stack(compare_sc, opcode(OP_EVAL_DONE), compare_sc->args, compare_sc->code);
compare_sc->args = compare_proc_args;
compare_sc->code = compare_proc;
eval(compare_sc, OP_APPLY);
@@ -11348,19 +11617,16 @@ If its first argument is a list, the list is copied (despite the '!')."
/* qsort is a large and complex function (250 lines in libc), so we can't easily
* expand it in our eval loop, but we may want to jump out of the sort via call/cc,
* so we look for the stack being unwound past the start point -- this is a kludge!
- * Currently, if an error occurs in the sort function, we depend on s7_error to
- * turn it back on; is there any case where we'd want it off despite hitting
- * an error?
*/
- push_stack(sc, OP_EVAL_DONE, sc->args, sc->code);
+ push_stack(sc, opcode(OP_EVAL_DONE), sc->args, sc->code);
sc->args = compare_proc_args;
sc->code = compare_proc;
eval(sc, OP_APPLY);
if (sc->stack_top < start)
{
- s7_gc_on(sc, true);
+ /* s7_gc_on(sc, true); */
longjmp(sc->goto_qsort_end, 1);
}
if (is_true(sc, sc->value))
@@ -11373,15 +11639,23 @@ If its first argument is a list, the list is copied (despite the '!')."
if (s7_is_list(sc, vect))
{
- s7_pointer val;
- if (sc->free_heap_top < 4096) gc(sc);
- s7_gc_on(sc, false);
- val = g_sort_in_place(sc, make_list_2(sc,
- g_list_to_vector(sc, make_list_1(sc, vect)),
- cadr(args)));
+ s7_pointer val, lst;
+ int gc_loc_1;
+
+ /* if (sc->free_heap_top < 4096) gc(sc); */
+ /* s7_gc_on(sc, false); */
+ /* sort! can be called recursively, so this gc-on/off stuff can get confused. */
+
+ lst = make_list_2(sc, g_list_to_vector(sc, make_list_1(sc, vect)), cadr(args));
+ gc_loc_1 = s7_gc_protect(sc, lst);
+
+ val = g_sort_in_place(sc, lst);
+
if (s7_is_vector(val))
val = s7_vector_to_list(sc, val);
- s7_gc_on(sc, true);
+ s7_gc_unprotect_at(sc, gc_loc_1);
+
+ /* s7_gc_on(sc, true); */
return(val);
}
@@ -11401,7 +11675,23 @@ If its first argument is a list, the list is copied (despite the '!')."
compare_proc_args = make_list_2(sc, sc->F, sc->F);
gc_loc = s7_gc_protect(sc, compare_proc_args);
- qsort((void *)s7_vector_elements(vect), vector_length(vect), sizeof(s7_pointer), vector_compare); /* qsort sizes are type size_t */
+ /* we could see simple sort cases like < and split them out, avoiding the eval call
+ * to tell that we're looking at a simple < for example (not redefined etc).
+ * other simple comparisions: > >= <=, string cases, char cases
+ *
+ * static int compare_less(const void *v1, const void *v2)
+ * {
+ * if (num_lt(number(*((s7_pointer *)v1)), number(*((s7_pointer *)v2)))) return(-1); else return(1);
+ * }
+ *
+ * if ((type(compare_proc) == T_C_FUNCTION) &&
+ * (c_function_call(compare_proc) == g_less))
+ * qsort((void *)s7_vector_elements(vect), vector_length(vect), sizeof(s7_pointer), compare_less);
+ *
+ * but the speed up is not very great. For a million element vector, we go from 5.7 to 4.6
+ */
+
+ qsort((void *)s7_vector_elements(vect), vector_length(vect), sizeof(s7_pointer), vector_compare); /* qsort sizes are type size_t */
if (setjmp(sc->goto_qsort_end) != 0)
vect = sc->value;
@@ -11518,19 +11808,10 @@ static char *s7_hashed_real_name(s7_Double key, char *intbuf)
}
-static s7_pointer g_hash_table_ref(s7_scheme *sc, s7_pointer args)
+static s7_pointer hash_table_ref_1(s7_scheme *sc, s7_pointer table, s7_pointer key)
{
- /* basically the same layout as the global symbol table */
- #define H_hash_table_ref "(hash-table-ref table key) returns the value associated with key (a string or symbol) in the hash table"
const char *name;
char intbuf[HASHED_INTEGER_BUFFER_SIZE];
- s7_pointer table, key;
-
- table = car(args);
- key = cadr(args);
-
- if (!s7_is_hash_table(table))
- return(s7_wrong_type_arg_error(sc, "hash-table-ref", 1, table, "a hash-table"));
if (s7_is_string(key))
name = string_value(key);
@@ -11554,6 +11835,21 @@ static s7_pointer g_hash_table_ref(s7_scheme *sc, s7_pointer args)
}
+static s7_pointer g_hash_table_ref(s7_scheme *sc, s7_pointer args)
+{
+ /* basically the same layout as the global symbol table */
+ #define H_hash_table_ref "(hash-table-ref table key) returns the value associated with key (a string or symbol) in the hash table"
+ s7_pointer table;
+
+ table = car(args);
+
+ if (!s7_is_hash_table(table))
+ return(s7_wrong_type_arg_error(sc, "hash-table-ref", 1, table, "a hash-table"));
+
+ return(hash_table_ref_1(sc, table, cadr(args)));
+}
+
+
static s7_pointer g_hash_table_set(s7_scheme *sc, s7_pointer args)
{
#define H_hash_table_set "(hash-table-set! table key value) sets the value associated with key (a string or symbol) in the hash table to value"
@@ -11626,6 +11922,7 @@ bool s7_is_object(s7_pointer p)
s7_pointer s7_make_function(s7_scheme *sc, const char *name, s7_function f, int required_args, int optional_args, bool rest_arg, const char *doc)
{
s7_func_t *ptr;
+ int ftype = T_C_FUNCTION;
s7_pointer x = new_cell(sc);
/* these are normally not gc'd (C-level function defs), but they can be in a few cases
@@ -11636,7 +11933,9 @@ s7_pointer s7_make_function(s7_scheme *sc, const char *name, s7_function f, int
*/
ptr = (s7_func_t *)calloc(1, sizeof(s7_func_t));
- set_type(x, T_C_FUNCTION | T_ATOM | T_SIMPLE | T_FINALIZABLE | T_DONT_COPY | T_PROCEDURE);
+ if ((required_args == 0) && (rest_arg) && (optional_args == 0))
+ ftype = T_C_ANY_ARGS_FUNCTION;
+ set_type(x, ftype | T_ATOM | T_SIMPLE | T_FINALIZABLE | T_DONT_COPY | T_PROCEDURE);
/* these guys can be freed -- in Snd, for example, "random" is defined in C, but then later redefined in snd-test.scm */
c_function(x) = ptr;
@@ -11779,8 +12078,11 @@ void s7_define_function(s7_scheme *sc, const char *name, s7_function fnc, int re
void s7_define_set_function(s7_scheme *sc, const char *name, s7_function fnc, int required_args, int optional_args, bool rest_arg, const char *doc)
{
s7_pointer func;
+ int ftype = T_C_FUNCTION;
func = s7_make_function(sc, name, fnc, required_args, optional_args, rest_arg, doc);
- set_type(func, T_C_FUNCTION | T_ATOM | T_SIMPLE | T_FINALIZABLE | T_DONT_COPY | T_PROCEDURE | T_SETTER);
+ if ((required_args == 0) && (rest_arg) && (optional_args == 0))
+ ftype = T_C_ANY_ARGS_FUNCTION;
+ set_type(func, ftype | T_ATOM | T_SIMPLE | T_FINALIZABLE | T_DONT_COPY | T_PROCEDURE | T_SETTER);
s7_define(sc, s7_global_environment(sc), s7_make_symbol(sc, name), func);
}
@@ -12190,7 +12492,7 @@ static s7_pointer g_object_for_each(s7_scheme *sc, s7_pointer args)
sc->args = s7_cons(sc, make_mutable_integer(sc, 0),
s7_cons(sc, s7_make_integer(sc, len),
s7_cons(sc, fargs, cdr(args))));
- push_stack(sc, OP_OBJECT_FOR_EACH, sc->args, sc->code);
+ push_stack(sc, opcode(OP_OBJECT_FOR_EACH), sc->args, sc->code);
return(sc->UNSPECIFIED);
}
@@ -12288,7 +12590,7 @@ static s7_pointer pws_apply(s7_scheme *sc, s7_pointer obj, s7_pointer args)
if (f->getter != NULL)
return((*(f->getter))(sc, args));
- push_stack(sc, OP_EVAL_DONE, sc->args, sc->code);
+ push_stack(sc, opcode(OP_EVAL_DONE), sc->args, sc->code);
sc->args = args;
sc->code = f->scheme_getter;
eval(sc, OP_APPLY);
@@ -12304,7 +12606,7 @@ static s7_pointer pws_set(s7_scheme *sc, s7_pointer obj, s7_pointer args)
if (f->setter != NULL)
return((*(f->setter))(sc, args));
- push_stack(sc, OP_EVAL_DONE, sc->args, sc->code);
+ push_stack(sc, opcode(OP_EVAL_DONE), sc->args, sc->code);
sc->args = args;
sc->code = f->scheme_setter;
eval(sc, OP_APPLY);
@@ -12540,6 +12842,11 @@ static s7_pointer g_is_equal(s7_scheme *sc, s7_pointer args)
/* ---------------------------------------- length, copy, fill ---------------------------------------- */
+/* this returns 2: (let ((x (list 1 2))) (set-car! x x) (length x))
+ * but this is an error: (let ((x (list 1 2))) (set-cdr! x x) (length x))
+ * because length just looks at cdrs (this is also true of other schemes).
+ */
+
static s7_pointer g_length(s7_scheme *sc, s7_pointer args)
{
#define H_length "(length obj) returns the length of obj, which can be a list, vector, string, or hash-table"
@@ -12862,8 +13169,8 @@ static void encapsulate(s7_scheme *sc, s7_pointer sym)
y = s7_find_symbol_in_environment(sc, e->envir, sym, true);
if (y != sc->NIL)
e->bindings = s7_cons(sc,
- s7_cons(sc, sym, s7_copy(sc, symbol_value(y))),
- e->bindings);
+ s7_cons(sc, sym, s7_copy(sc, symbol_value(y))),
+ e->bindings);
/* a C-side procedure-with-setter becomes a no-op here -- accessing the underlying value is too tricky */
}
@@ -12985,7 +13292,7 @@ static char *format_to_c_string(s7_scheme *sc, const char *str, s7_pointer args,
format_data *fdat = NULL;
char *result, *tmp = NULL;
- str_len = strlen(str);
+ str_len = safe_strlen(str);
fdat = (format_data *)malloc(sizeof(format_data));
fdat->loc = 0;
@@ -13454,7 +13761,7 @@ static void trace_apply(s7_scheme *sc)
{
int k, len;
char *tmp1, *tmp2, *str;
- push_stack(sc, OP_TRACE_RETURN, sc->code, sc->NIL);
+ push_stack(sc, opcode(OP_TRACE_RETURN), sc->code, sc->NIL);
tmp1 = s7_object_to_c_string(sc, sc->code);
tmp2 = s7_object_to_c_string(sc, sc->args);
len = safe_strlen(tmp2);
@@ -13496,7 +13803,7 @@ static void trace_apply(s7_scheme *sc)
(is_procedure(symbol_value(trace_hook_binding))))
{
trace_hook = symbol_value(trace_hook_binding);
- push_stack(sc, OP_TRACE_HOOK_QUIT, sc->args, sc->code); /* restore current state after dealing with the trace hook func */
+ push_stack(sc, opcode(OP_TRACE_HOOK_QUIT), sc->args, sc->code); /* restore current state after dealing with the trace hook func */
sc->args = make_list_2(sc, sc->code, sc->args);
sc->code = trace_hook;
}
@@ -13516,7 +13823,7 @@ static void trace_return(s7_scheme *sc)
tmp = s7_object_to_c_string(sc, sc->value);
- len = sc->trace_depth + safe_strlen(tmp) + 2;
+ len = sc->trace_depth + safe_strlen(tmp) + 3;
str = (char *)calloc(len, sizeof(char));
for (k = 0; k < sc->trace_depth; k++) str[k] = ' ';
@@ -13528,6 +13835,7 @@ static void trace_return(s7_scheme *sc)
free(str);
sc->trace_depth--;
+ if (sc->trace_depth < 0) sc->trace_depth = 0;
}
@@ -13548,6 +13856,7 @@ static const char *s7_type_name(s7_pointer arg)
case T_CLOSURE_STAR: return("closure");
case T_GOTO:
case T_CONTINUATION: return("continuation");
+ case T_C_ANY_ARGS_FUNCTION:
case T_C_FUNCTION: return("function");
case T_C_MACRO: return("macro");
case T_C_POINTER: return("c-pointer");
@@ -13702,11 +14011,11 @@ each a function of no arguments, guaranteeing that finish is called even if body
dynamic_wind_out(p) = caddr(args);
set_type(p, T_DYNAMIC_WIND | T_ATOM | T_DWIND_INIT | T_DONT_COPY); /* atom -> don't mark car/cdr, don't copy */
- push_stack(sc, OP_DYNAMIC_WIND, sc->NIL, p); /* args will be the saved result, code = s7_dynwind_t obj */
+ push_stack(sc, opcode(OP_DYNAMIC_WIND), sc->NIL, p); /* args will be the saved result, code = s7_dynwind_t obj */
sc->args = sc->NIL;
sc->code = car(args);
- push_stack(sc, OP_APPLY, sc->args, sc->code);
+ push_stack(sc, opcode(OP_APPLY), sc->args, sc->code);
return(sc->F);
}
@@ -13727,10 +14036,10 @@ static s7_pointer g_catch(s7_scheme *sc, s7_pointer args)
catch_handler(p) = caddr(args);
set_type(p, T_CATCH | T_ATOM | T_DONT_COPY); /* atom -> don't mark car/cdr, don't copy */
- push_stack(sc, OP_CATCH, sc->NIL, p);
+ push_stack(sc, opcode(OP_CATCH), sc->NIL, p);
sc->args = sc->NIL;
sc->code = cadr(args);
- push_stack(sc, OP_APPLY, sc->args, sc->code);
+ push_stack(sc, opcode(OP_APPLY), sc->args, sc->code);
return(sc->F);
}
@@ -13750,13 +14059,6 @@ static pthread_mutex_t remember_files_lock = PTHREAD_MUTEX_INITIALIZER;
#define remembered_file_name(Line) (((Line >> 20) <= file_names_top) ? file_names[Line >> 20] : "?")
/* this gives room for 4000 files each of 1000000 lines */
-static s7_pointer remember_line(s7_scheme *sc, s7_pointer obj)
-{
- if (sc->input_port != sc->NIL)
- set_pair_line_number(obj, port_line_number(sc->input_port) | (port_file_number(sc->input_port) << 20));
- return(obj);
-}
-
static int remember_file_name(const char *file)
{
@@ -13874,7 +14176,7 @@ static s7_pointer s7_error_1(s7_scheme *sc, s7_pointer type, s7_pointer info, bo
x = vector_element(sc->stack, i - 3);
if (dynamic_wind_state(x) == T_DWIND_BODY)
{
- push_stack(sc, OP_EVAL_DONE, sc->args, sc->code);
+ push_stack(sc, opcode(OP_EVAL_DONE), sc->args, sc->code);
sc->args = sc->NIL;
sc->code = dynamic_wind_out(x);
eval(sc, OP_APPLY);
@@ -13907,6 +14209,7 @@ static s7_pointer s7_error_1(s7_scheme *sc, s7_pointer type, s7_pointer info, bo
case OP_TRACE_RETURN:
sc->trace_depth--;
+ if (sc->trace_depth < 0) sc->trace_depth = 0;
break;
default:
@@ -13940,7 +14243,7 @@ GOT_CATCH:
set_symbol_value(error_hook_binding, sc->NIL);
/* if the *error-hook* function triggers an error, we had better not have *error-hook* still set! */
- push_stack(sc, OP_ERROR_HOOK_QUIT, sc->NIL, error_hook); /* restore *error-hook* upon successful evaluation */
+ push_stack(sc, opcode(OP_ERROR_HOOK_QUIT), sc->NIL, error_hook); /* restore *error-hook* upon successful evaluation */
sc->args = make_list_2(sc, type, info);
sc->code = error_hook;
sc->op = OP_APPLY;
@@ -14190,7 +14493,7 @@ static s7_pointer missing_close_paren_error(s7_scheme *sc)
}
-static void display_frame(s7_scheme *sc, s7_pointer envir)
+static void display_frame(s7_scheme *sc, s7_pointer envir, s7_pointer port)
{
if ((is_pair(envir)) &&
(is_pair(cdr(envir))))
@@ -14215,13 +14518,13 @@ static void display_frame(s7_scheme *sc, s7_pointer envir)
if (!s7_is_symbol(cdr(lst)))
file_info = cddr(lst);
- format_to_output(sc, s7_current_output_port(sc), "(~A~{ ~A~})", make_list_2(sc, sym, local_env));
+ format_to_output(sc, port, "(~A~{ ~A~})", make_list_2(sc, sym, local_env));
if (is_pair(file_info))
- format_to_output(sc, s7_current_output_port(sc), " [~S ~D]", file_info);
+ format_to_output(sc, port, " [~S ~D]", file_info);
}
else
- format_to_output(sc, s7_current_output_port(sc), "(~A~{~^ ~A~})", make_list_2(sc, cdr(lst), s7_reverse(sc, args)));
- s7_newline(sc, s7_current_output_port(sc));
+ format_to_output(sc, port, "(~A~{~^ ~A~})", make_list_2(sc, cdr(lst), s7_reverse(sc, args)));
+ s7_newline(sc, port);
}
}
}
@@ -14234,14 +14537,32 @@ static s7_pointer g_stacktrace(s7_scheme *sc, s7_pointer args)
* =thread obj, show its stack
* =vector, assume it is a vector of envs from *error-info*
* =continuation, show its stack
+ * if trailing arg is a port, it sets where the output goes
*/
- #define H_stacktrace "(stacktrace :optional obj) displays a stacktrace. If obj is not \
+ #define H_stacktrace "(stacktrace :optional obj port) displays a stacktrace. If obj is not \
given, the current stack is displayed, if obj is a thread object, its stack is displayed, \
if obj is *error-info*, the stack at the point of the error is displayed, and if obj \
-is a continuation, its stack is displayed."
+is a continuation, its stack is displayed. If the trailing port argument is not given, \
+output is sent to the current-output-port."
int i, top = 0;
- s7_pointer stk = sc->F;
+ s7_pointer stk = sc->F, port;
+ port = s7_current_output_port(sc);
+
+ if (args != sc->NIL)
+ {
+ if (is_output_port(car(args)))
+ {
+ port = car(args);
+ args = cdr(args);
+ }
+ else
+ {
+ if ((cdr(args) != sc->NIL) &&
+ (is_output_port(cadr(args))))
+ port = cadr(args);
+ }
+ }
/* *error-info* is the special case here */
if (s7_is_vector(car(args)))
@@ -14250,7 +14571,7 @@ is a continuation, its stack is displayed."
{
if (vector_element(car(args), i) == ERROR_INFO_DEFAULT)
break;
- display_frame(sc, vector_element(car(args), i));
+ display_frame(sc, vector_element(car(args), i), port);
}
return(sc->UNSPECIFIED);
}
@@ -14281,10 +14602,10 @@ is a continuation, its stack is displayed."
#endif
}
if (stk == sc->F)
- return(s7_wrong_type_arg_error(sc, "stacktrace", 0, car(args), "a vector, thread object, or continuation"));
+ return(s7_wrong_type_arg_error(sc, "stacktrace", 0, args, "a vector, thread object, or continuation"));
for (i = top; i > 0; i -= 4)
- display_frame(sc, vector_element(stk, i - 3));
+ display_frame(sc, vector_element(stk, i - 3), port);
return(sc->UNSPECIFIED);
}
@@ -14294,6 +14615,8 @@ s7_pointer s7_stacktrace(s7_scheme *sc, s7_pointer arg)
{
if (arg == sc->NIL)
return(g_stacktrace(sc, arg));
+ if (is_pair(arg))
+ return(g_stacktrace(sc, arg));
return(g_stacktrace(sc, make_list_1(sc, arg)));
}
@@ -14305,7 +14628,7 @@ static s7_pointer g_quit(s7_scheme *sc, s7_pointer args)
{
#define H_quit "(quit) returns from the evaluator"
- push_stack(sc, OP_QUIT, sc->NIL, sc->NIL);
+ push_stack(sc, opcode(OP_QUIT), sc->NIL, sc->NIL);
return(sc->NIL);
}
@@ -14313,7 +14636,7 @@ static s7_pointer g_quit(s7_scheme *sc, s7_pointer args)
void s7_quit(s7_scheme *sc)
{
stack_reset(sc);
- push_stack(sc, OP_QUIT, sc->NIL, sc->NIL);
+ push_stack(sc, opcode(OP_QUIT), sc->NIL, sc->NIL);
}
@@ -14349,7 +14672,7 @@ static s7_pointer g_apply(s7_scheme *sc, s7_pointer args)
if (!is_proper_list(sc, sc->args)) /* (apply + #f) etc */
return(s7_error(sc, sc->WRONG_TYPE_ARG, s7_make_string(sc, "apply's last argument should be a list")));
}
- push_stack(sc, OP_APPLY, sc->args, sc->code);
+ push_stack(sc, opcode(OP_APPLY), sc->args, sc->code);
return(sc->NIL);
}
@@ -14373,7 +14696,7 @@ pass (global-environment):\n\
sc->envir = cadr(args);
}
sc->code = car(args);
- push_stack(sc, OP_EVAL, sc->args, sc->code);
+ push_stack(sc, opcode(OP_EVAL), sc->args, sc->code);
return(sc->NIL);
}
@@ -14413,7 +14736,7 @@ s7_pointer s7_call(s7_scheme *sc, s7_pointer func, s7_pointer args)
return(sc->value);
}
- push_stack(sc, OP_EVAL_DONE, sc->args, sc->code); /* this saves the current evaluation and will eventually finish this (possibly) nested call */
+ push_stack(sc, opcode(OP_EVAL_DONE), sc->args, sc->code); /* this saves the current evaluation and will eventually finish this (possibly) nested call */
sc->args = args;
sc->code = func;
eval(sc, OP_APPLY);
@@ -14475,13 +14798,13 @@ static s7_pointer g_list_for_each(s7_scheme *sc, s7_pointer args)
for (y = cdr(sc->x); y != sc->NIL; y = cdr(y))
if (car(y) != sc->NIL)
return(eval_error(sc, "for-each args are not the same length", sc->x));
- push_stack(sc, OP_APPLY, sc->args, sc->code);
+ push_stack(sc, opcode(OP_APPLY), sc->args, sc->code);
return(sc->NIL);
}
/* set up for repeated call walking down the lists of args */
- push_stack(sc, OP_LIST_FOR_EACH, sc->x, sc->code);
- push_stack(sc, OP_APPLY, sc->args, sc->code);
+ push_stack(sc, opcode(OP_LIST_FOR_EACH), sc->x, sc->code);
+ push_stack(sc, opcode(OP_APPLY), sc->args, sc->code);
return(sc->NIL);
}
@@ -14525,8 +14848,8 @@ static s7_pointer g_list_map(s7_scheme *sc, s7_pointer args)
sc->x = safe_reverse_in_place(sc, sc->x);
/* set up for repeated call walking down the lists of args, values list is cdr, current args is car */
- push_stack(sc, OP_LIST_MAP, make_list_1(sc, sc->x), sc->code);
- push_stack(sc, OP_APPLY, sc->args, sc->code);
+ push_stack(sc, opcode(OP_LIST_MAP), make_list_1(sc, sc->x), sc->code);
+ push_stack(sc, opcode(OP_APPLY), sc->args, sc->code);
return(sc->NIL);
}
@@ -14634,8 +14957,10 @@ s7_pointer s7_values(s7_scheme *sc, int num_values, ...)
/* -------------------------------- quasiquote -------------------------------- */
-static s7_pointer g_quasiquote_1(s7_scheme *sc, int level, s7_pointer form)
+static s7_pointer g_quasiquote_1(s7_scheme *sc, s7_pointer form)
{
+ s7_pointer l, r;
+
if (!is_pair(form))
{
if ((s7_is_number(form)) ||
@@ -14644,97 +14969,48 @@ static s7_pointer g_quasiquote_1(s7_scheme *sc, int level, s7_pointer form)
return(form);
return(make_list_2(sc, sc->QUOTE, form));
}
- /* from here, form is a pair */
-
- if (car(form) == sc->QUASIQUOTE)
- {
- s7_pointer r;
- r = g_quasiquote_1(sc, level + 1, cdr(form));
- if ((is_pair(r)) &&
- (car(r) == sc->QUOTE) &&
- (car(cdr(r)) == cdr(form)))
- return(make_list_2(sc, sc->QUOTE, form));
- return(make_list_3(sc, sc->CONS, make_list_2(sc, sc->QUOTE, sc->QUASIQUOTE), r));
- }
- if (level == 0)
- {
- if (car(form) == sc->UNQUOTE)
- return(car(cdr(form)));
+ if (car(form) == sc->UNQUOTE)
+ return(car(cdr(form)));
- if (car(form) == sc->UNQUOTE_SPLICING)
- return(form);
+ if (car(form) == sc->UNQUOTE_SPLICING)
+ return(form);
- if ((is_pair(car(form))) &&
- (caar(form) == sc->UNQUOTE_SPLICING))
- {
- s7_pointer l, r;
- l = car(cdr(car(form)));
- if (cdr(form) == sc->NIL)
- return(l);
-
- r = g_quasiquote_1(sc, level, cdr(form));
-
- if ((is_pair(r)) &&
- (car(r) == sc->QUOTE) &&
- (car(cdr(r)) == sc->NIL))
- return(l);
- return(make_list_3(sc, sc->APPEND, l, r));
- }
-
- goto MCONS;
- }
-
- /* level != 0 */
- if (car(form) == sc->UNQUOTE)
+ if ((is_pair(car(form))) &&
+ (caar(form) == sc->UNQUOTE_SPLICING))
{
- s7_pointer r;
- r = g_quasiquote_1(sc, level - 1, cdr(form));
+ l = car(cdr(car(form)));
+ if (cdr(form) == sc->NIL)
+ return(l);
- if ((is_pair(r)) &&
- (car(r) == sc->QUOTE) &&
- (car(cdr(r)) == cdr(form)))
- return(make_list_2(sc, sc->QUOTE, form));
-
- return(make_list_3(sc, sc->CONS, make_list_2(sc, sc->QUOTE, sc->UNQUOTE), r));
- }
-
- if (car(form) == sc->UNQUOTE_SPLICING)
- {
- s7_pointer r;
- r = g_quasiquote_1(sc, level - 1, cdr(form));
+ r = g_quasiquote_1(sc, cdr(form));
if ((is_pair(r)) &&
(car(r) == sc->QUOTE) &&
- (car(cdr(r)) == cdr(form)))
- return(make_list_2(sc, sc->QUOTE, form));
-
- return(make_list_3(sc, sc->CONS, make_list_2(sc, sc->QUOTE, sc->UNQUOTE_SPLICING), r));
+ (car(cdr(r)) == sc->NIL))
+ return(l);
+ return(make_list_3(sc, sc->APPEND, l, r));
}
-
- MCONS:
- {
- s7_pointer l, r;
-
- l = g_quasiquote_1(sc, level, car(form));
- r = g_quasiquote_1(sc, level, cdr(form));
+
+ l = g_quasiquote_1(sc, car(form));
+ r = g_quasiquote_1(sc, cdr(form));
- if ((is_pair(r)) &&
- (is_pair(l)) &&
- (car(r) == sc->QUOTE) &&
- (car(l) == car(r)) &&
- (car(cdr(r)) == cdr(form)) &&
- (car(cdr(l)) == car(form)))
- return(make_list_2(sc, sc->QUOTE, form));
+ if ((is_pair(r)) &&
+ (is_pair(l)) &&
+ (car(r) == sc->QUOTE) &&
+ (car(l) == car(r)) &&
+ (car(cdr(r)) == cdr(form)) &&
+ (car(cdr(l)) == car(form)))
+ return(make_list_2(sc, sc->QUOTE, form));
- if (l == sc->VECTOR_FUNCTION)
- return(g_vector(sc, make_list_1(sc, r))); /* eval? */
+ if (l == sc->VECTOR_FUNCTION)
+ return(g_vector(sc, make_list_1(sc, r))); /* eval? */
- return(make_list_3(sc, sc->CONS, l, r));
- }
+ return(make_list_3(sc, sc->CONS, l, r));
}
-static s7_pointer g_quasiquote_2(s7_scheme *sc, int level, s7_pointer form)
+
+static s7_pointer g_quasiquote_2(s7_scheme *sc, s7_pointer form)
{
/* the lists built up by quasiquote can be arbitrarily large, and it would be a nightmare to locally GC-protect,
* then later unprotect every cons, so we turn off the GC until we're done.
@@ -14742,16 +15018,11 @@ static s7_pointer g_quasiquote_2(s7_scheme *sc, int level, s7_pointer form)
s7_pointer x;
if (sc->free_heap_top < 4096) gc(sc);
s7_gc_on(sc, false);
- x = g_quasiquote_1(sc, level, form);
+ x = g_quasiquote_1(sc, form);
s7_gc_on(sc, true);
return(x);
}
-static s7_pointer g_quasiquote(s7_scheme *sc, s7_pointer args)
-{
- return(g_quasiquote_2(sc, s7_integer(car(args)), cadr(args)));
-}
-
/* ---------------- reader funcs for eval ---------------- */
@@ -14834,7 +15105,6 @@ static token_t token(s7_scheme *sc)
case ';':
{
- int c;
if (is_file_port(pt))
do (c = fgetc(port_file(pt))); while ((c != '\n') && (c != EOF));
else do (c = port_string(pt)[port_string_point(pt)++]); while ((c != '\n') && (c != 0));
@@ -15066,7 +15336,7 @@ static s7_pointer read_expression(s7_scheme *sc)
return(sc->EOF_OBJECT);
case TOKEN_VECTOR: /* already read #( */
- push_stack(sc, OP_READ_VECTOR, sc->NIL, sc->NIL);
+ push_stack(sc, opcode(OP_READ_VECTOR), sc->NIL, sc->NIL);
/* fall through */
case TOKEN_LEFT_PAREN:
@@ -15085,11 +15355,11 @@ static s7_pointer read_expression(s7_scheme *sc)
if (sc->tok == TOKEN_EOF)
return(missing_close_paren_error(sc));
- push_stack(sc, OP_READ_LIST, sc->NIL, sc->NIL);
+ push_stack(sc, opcode(OP_READ_LIST), sc->NIL, sc->NIL);
break;
case TOKEN_QUOTE:
- push_stack(sc, OP_READ_QUOTE, sc->NIL, sc->NIL);
+ push_stack(sc, opcode(OP_READ_QUOTE), sc->NIL, sc->NIL);
sc->tok = token(sc);
break;
@@ -15097,19 +15367,19 @@ static s7_pointer read_expression(s7_scheme *sc)
sc->tok = token(sc);
if (sc->tok == TOKEN_VECTOR)
{
- push_stack(sc, OP_READ_QUASIQUOTE_VECTOR, sc->NIL, sc->NIL);
+ push_stack(sc, opcode(OP_READ_QUASIQUOTE_VECTOR), sc->NIL, sc->NIL);
sc->tok= TOKEN_LEFT_PAREN;
}
- else push_stack(sc, OP_READ_QUASIQUOTE, sc->NIL, sc->NIL);
+ else push_stack(sc, opcode(OP_READ_QUASIQUOTE), sc->NIL, sc->NIL);
break;
case TOKEN_COMMA:
- push_stack(sc, OP_READ_UNQUOTE, sc->NIL, sc->NIL);
+ push_stack(sc, opcode(OP_READ_UNQUOTE), sc->NIL, sc->NIL);
sc->tok = token(sc);
break;
case TOKEN_AT_MARK:
- push_stack(sc, OP_READ_UNQUOTE_SPLICING, sc->NIL, sc->NIL);
+ push_stack(sc, opcode(OP_READ_UNQUOTE_SPLICING), sc->NIL, sc->NIL);
sc->tok = token(sc);
break;
@@ -15131,7 +15401,14 @@ static s7_pointer read_expression(s7_scheme *sc)
expr = read_string_upto(sc, 0);
sc->value = make_sharp_constant(sc, expr, true);
if (sc->value == sc->NIL)
- return(read_error(sc, "undefined sharp expression")); /* (list #b) */
+ {
+ int len;
+ char *buf;
+ len = 32 + safe_strlen(expr);
+ buf = (char *)calloc(len, sizeof(char)); /* memleak here... */
+ snprintf(buf, len, "#%s: undefined sharp expression", expr);
+ return(read_error(sc, buf)); /* (list #b) */
+ }
return(sc->value);
}
@@ -15143,7 +15420,6 @@ static s7_pointer read_expression(s7_scheme *sc)
case TOKEN_RIGHT_PAREN: /* (catch #t (lambda () '(1 2 . )) (lambda args 'hiho)) */
back_up_stack(sc);
return(read_error(sc, "unexpected close paren")); /* (+ 1 2)) or (+ 1 . ) */
-
}
}
@@ -15152,8 +15428,6 @@ static s7_pointer read_expression(s7_scheme *sc)
}
-
-
static s7_pointer eval_symbol(s7_scheme *sc, s7_pointer sym)
{
s7_pointer x;
@@ -15182,7 +15456,7 @@ static s7_pointer eval_symbol(s7_scheme *sc, s7_pointer sym)
static void assign_syntax(s7_scheme *sc, const char *name, opcode_t op)
{
s7_pointer x;
- x = symbol_table_add_by_name(sc, name);
+ x = symbol_table_add_by_name_at_location(sc, name, symbol_table_hash(name, vector_length(sc->symbol_table)));
typeflag(x) |= (T_SYNTAX | T_DONT_COPY);
clear_finalizable(x);
syntax_opcode(x) = (int)op;
@@ -15262,8 +15536,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_LOAD_RETURN_IF_EOF: /* loop here until eof (via push stack below) */
if (sc->tok != TOKEN_EOF)
{
- push_stack(sc, OP_LOAD_RETURN_IF_EOF, sc->NIL, sc->NIL);
- push_stack(sc, OP_READ_INTERNAL, sc->NIL, sc->NIL);
+ push_stack(sc, opcode(OP_LOAD_RETURN_IF_EOF), sc->NIL, sc->NIL);
+ push_stack(sc, opcode(OP_READ_INTERNAL), sc->NIL, sc->NIL);
sc->code = sc->value;
goto EVAL; /* we read an expression, now evaluate it, and return to read the next */
}
@@ -15276,8 +15550,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_LOAD_CLOSE_AND_POP_IF_EOF:
if (sc->tok != TOKEN_EOF)
{
- push_stack(sc, OP_LOAD_CLOSE_AND_POP_IF_EOF, sc->NIL, sc->NIL); /* was push args, code */
- push_stack(sc, OP_READ_INTERNAL, sc->NIL, sc->NIL);
+ push_stack(sc, opcode(OP_LOAD_CLOSE_AND_POP_IF_EOF), sc->NIL, sc->NIL); /* was push args, code */
+ push_stack(sc, opcode(OP_READ_INTERNAL), sc->NIL, sc->NIL);
sc->code = sc->value;
goto EVAL; /* we read an expression, now evaluate it, and return to read the next */
}
@@ -15306,12 +15580,12 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if ((c != EOF) && (c != 0))
{
backchar(sc, c, sc->input_port);
- push_stack(sc, OP_EVAL_STRING, sc->NIL, sc->value);
- push_stack(sc, OP_READ_INTERNAL, sc->NIL, sc->NIL);
+ push_stack(sc, opcode(OP_EVAL_STRING), sc->NIL, sc->value);
+ push_stack(sc, opcode(OP_READ_INTERNAL), sc->NIL, sc->NIL);
}
- else push_stack(sc, OP_EVAL_STRING_DONE, sc->NIL, sc->value);
+ else push_stack(sc, opcode(OP_EVAL_STRING_DONE), sc->NIL, sc->value);
}
- else push_stack(sc, OP_EVAL_STRING_DONE, sc->NIL, sc->value);
+ else push_stack(sc, opcode(OP_EVAL_STRING_DONE), sc->NIL, sc->value);
sc->code = sc->value;
goto EVAL;
@@ -15341,7 +15615,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
return(eval_error(sc, "for-each args are not the same length", sc->x));
goto APPLY;
}
- push_stack(sc, OP_LIST_FOR_EACH, sc->x, sc->code);
+ push_stack(sc, opcode(OP_LIST_FOR_EACH), sc->x, sc->code);
goto APPLY;
@@ -15373,7 +15647,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
car(sc->y) = cdar(sc->y);
}
sc->args = safe_reverse_in_place(sc, sc->args);
- push_stack(sc, OP_LIST_MAP, sc->x, sc->code);
+ push_stack(sc, opcode(OP_LIST_MAP), sc->x, sc->code);
goto APPLY;
@@ -15393,7 +15667,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
car(x) = vector_element(car(y), loc); /* make func's arglist */
integer(number(car(sc->args))) = loc + 1;
- push_stack(sc, sc->op, sc->args, sc->code);
+ push_stack(sc, opcode(sc->op), sc->args, sc->code);
sc->args = fargs;
goto APPLY;
}
@@ -15434,7 +15708,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
for (x = fargs, y = vargs; x != sc->NIL; x = cdr(x), y = cdr(y))
car(x) = vector_element(car(y), loc);
- push_stack(sc, OP_VECTOR_MAP1, sc->args, sc->code);
+ push_stack(sc, opcode(OP_VECTOR_MAP1), sc->args, sc->code);
sc->args = fargs;
goto APPLY;
}
@@ -15459,7 +15733,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
car(x) = s7_make_character(sc, string_value(car(y))[loc]);
integer(number(car(sc->args))) = loc + 1;
- push_stack(sc, OP_STRING_FOR_EACH, sc->args, sc->code);
+ push_stack(sc, opcode(OP_STRING_FOR_EACH), sc->args, sc->code);
sc->args = fargs;
goto APPLY;
}
@@ -15485,7 +15759,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
car(x) = (*(object_types[c_object_type(car(y))].apply))(sc, car(y), sc->x);
integer(number(car(sc->args))) = loc + 1;
- push_stack(sc, OP_OBJECT_FOR_EACH, sc->args, sc->code);
+ push_stack(sc, opcode(OP_OBJECT_FOR_EACH), sc->args, sc->code);
sc->args = fargs;
goto APPLY;
}
@@ -15544,7 +15818,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
return(eval_error(sc, "do: variable info has extra stuff after the increment: ~A", sc->code));
}
- push_stack(sc, OP_DO_INIT, sc->args, cdr(sc->code));
+ push_stack(sc, opcode(OP_DO_INIT), sc->args, cdr(sc->code));
sc->code = cadar(sc->code);
sc->args = sc->NIL;
goto EVAL;
@@ -15568,7 +15842,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
sc->y = safe_reverse_in_place(sc, sc->value);
sc->args = sc->NIL;
for (sc->x = car(sc->code); sc->y != sc->NIL; sc->x = cdr(sc->x), sc->y = cdr(sc->y))
- if (cddar(sc->x) != sc->NIL) /* no incr expr, so ignore it henceforth */
+ if (cddar(sc->x) != sc->NIL) /* no incr expr, so ignore it henceforth */
{
sc->value = s7_cons(sc, caddar(sc->x), sc->NIL);
sc->value = s7_cons(sc, car(sc->y), sc->value);
@@ -15586,12 +15860,16 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
* code = body
*/
- push_stack(sc, OP_DO_END1, sc->args, sc->code);
- /* evaluate the endtest */
- sc->code = cadr(sc->args);
- sc->args = sc->NIL;
- goto EVAL;
-
+ if (cdr(sc->args) != sc->NIL)
+ {
+ push_stack(sc, opcode(OP_DO_END1), sc->args, sc->code);
+ /* evaluate the endtest */
+ sc->code = cadr(sc->args);
+ sc->args = sc->NIL;
+ goto EVAL;
+ }
+ else sc->value = sc->F; /* (do ((...)) () ...) -- no endtest */
+
case OP_DO_END1:
/* sc->value should be result of endtest evaluation */
@@ -15604,7 +15882,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
}
/* evaluate the body and step vars, etc */
- push_stack(sc, OP_DO_STEP0, sc->args, sc->code);
+ push_stack(sc, opcode(OP_DO_STEP0), sc->args, sc->code);
/* sc->code is ready to go */
sc->args = sc->NIL;
goto BEGIN;
@@ -15617,7 +15895,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (car(sc->args) == sc->NIL)
goto DO_END0;
- push_stack(sc, OP_DO_END0, sc->args, sc->code);
+ push_stack(sc, opcode(OP_DO_END0), sc->args, sc->code);
sc->code = s7_cons(sc, sc->NIL, car(sc->args)); /* car = list of newly incremented values, cdr = list of slots */
sc->args = car(sc->args);
@@ -15665,7 +15943,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
pop_stack(sc);
goto DO_END0;
}
- push_stack(sc, OP_DO_STEP2, sc->args, sc->code);
+ push_stack(sc, opcode(OP_DO_STEP2), sc->args, sc->code);
/* here sc->args is a list like (((i . 0) (+ i 1)) ...)
* so sc->code becomes (+ i 1) in this case
*/
@@ -15688,8 +15966,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_WITH_ENV0:
/* (with-environment env . body) */
- push_stack(sc, OP_WITH_ENV1, sc->envir, sc->NIL); /* save current env */
- push_stack(sc, OP_WITH_ENV2, sc->NIL, sc->code);
+ push_stack(sc, opcode(OP_WITH_ENV1), sc->envir, sc->NIL); /* save current env */
+ push_stack(sc, opcode(OP_WITH_ENV2), sc->NIL, sc->code);
sc->args = sc->NIL;
sc->code = car(sc->code); /* eval env arg */
goto EVAL;
@@ -15714,17 +15992,18 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
}
if (cdr(sc->code) != sc->NIL)
- push_stack(sc, OP_BEGIN, sc->NIL, cdr(sc->code));
+ push_stack(sc, opcode(OP_BEGIN), sc->NIL, cdr(sc->code));
sc->code = car(sc->code);
- sc->cur_code = sc->code;
+ sc->cur_code = sc->code; /* in case error occurs, this helps tell us where we are */
/* goto EVAL; */
EVAL:
case OP_EVAL: /* main part of evaluation */
- if (is_pair(sc->code)) /* switching type check order here slows us down */
+ switch (type(sc->code))
{
+ case T_PAIR:
/* using a local s7_pointer for sc->x here drastically slows things down?!? */
sc->x = car(sc->code);
if (is_syntax(sc->x))
@@ -15733,41 +16012,59 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
sc->op = (opcode_t)syntax_opcode(sc->x);
goto START;
}
- push_stack(sc, OP_EVAL_ARGS0, sc->NIL, sc->code);
+ push_stack(sc, opcode(OP_EVAL_ARGS0), sc->NIL, sc->code);
sc->code = sc->x;
goto EVAL;
- }
- if (s7_is_symbol(sc->code))
- {
- /* expand eval_symbol here to speed it up by a lot */
- s7_pointer x;
- if (is_not_local(sc->code))
- x = symbol_global_slot(sc->code);
- else x = s7_find_symbol_in_environment(sc, sc->envir, sc->code, true);
- if (x != sc->NIL)
- sc->value = symbol_value(x);
- else sc->value = eval_symbol(sc, sc->code);
+ case T_SYMBOL:
+ {
+ /* expand eval_symbol here to speed it up by a lot */
+ s7_pointer x;
+
+ if (is_not_local(sc->code))
+ x = symbol_global_slot(sc->code);
+ else x = s7_find_symbol_in_environment(sc, sc->envir, sc->code, true);
+ if (x != sc->NIL)
+ sc->value = symbol_value(x);
+ else sc->value = eval_symbol(sc, sc->code);
+
+ pop_stack(sc);
+ goto START;
+ }
+
+ default:
+ sc->value = sc->code;
pop_stack(sc);
goto START;
}
- sc->value = sc->code;
- pop_stack(sc);
- goto START;
-
case OP_EVAL_ARGS0:
- if (is_any_macro(sc->value))
- {
- /* macro expansion */
- if (!(is_c_macro(sc->value)))
- push_stack(sc, OP_EVAL_MACRO, sc->NIL, sc->NIL);
- /* code is the macro invocation: (mac-name ...), args is nil, value is the macro code bound to mac-name */
- sc->args = make_list_1(sc, sc->code);
- sc->code = sc->value;
- goto APPLY;
- }
+ if (is_any_macro_or_syntax(sc->value))
+ {
+ if (is_any_macro(sc->value))
+ {
+ /* macro expansion */
+ if (!(is_c_macro(sc->value)))
+ {
+ push_stack(sc, opcode(OP_EVAL_MACRO), sc->NIL, sc->NIL);
+ /* code is the macro invocation: (mac-name ...), args is nil, value is the macro code bound to mac-name */
+ sc->args = make_list_1(sc, sc->code);
+ }
+ else sc->args = sc->code;
+ sc->code = sc->value;
+ goto APPLY;
+ }
+
+ /* (define progn begin)
+ * (progn (display "hi") (+ 1 23))
+ * we can't catch this above under T_SYMBOL because we might be using "syntax" symbols as symbols (case labels etc)
+ */
+ sc->code = cdr(sc->code);
+ sc->op = (opcode_t)syntax_opcode(sc->value);
+ goto START;
+ }
+
else
{
/* here sc->value is the func, sc->code is the entire expression */
@@ -15840,9 +16137,10 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
car_code = car(sc->code);
typ = type(car_code);
+ /* switch statement here is much slower for some reason */
if (typ == T_PAIR)
{
- push_stack(sc, OP_EVAL_ARGS1, sc->args, cdr(sc->code));
+ push_stack(sc, opcode(OP_EVAL_ARGS1), sc->args, cdr(sc->code));
sc->code = car_code;
sc->args = sc->NIL;
goto EVAL;
@@ -15859,8 +16157,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
sc->value = symbol_value(x);
else sc->value = eval_symbol(sc, car_code);
}
-
else sc->value = car_code;
+
sc->code = cdr(sc->code);
goto EVAL_ARGS;
}
@@ -15874,7 +16172,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
argstr = s7_object_to_c_string(sc, s7_append(sc,
s7_reverse(sc, cdr(sc->args)),
s7_cons(sc, car(sc->args), sc->code)));
- len = strlen(argstr) + 32;
+ len = safe_strlen(argstr) + 32;
msg = (char *)malloc(len * sizeof(char));
len = snprintf(msg, len, "improper list of arguments: %s?", argstr);
free(argstr);
@@ -15910,16 +16208,16 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (sc->stack_top >= sc->stack_size2)
increase_stack_size(sc);
- /* perhaps add a function type that does its own (possibly null) arg num checking,
- * and if its args are purely by value, can forego the copy above?
- */
-
switch (type(sc->code))
{
case T_C_FUNCTION: /* -------- C-based function -------- */
{
int len;
len = safe_list_length(sc, sc->args);
+ /* I tried embedding this list length in the safe_reverse_in_place function above, but
+ * that did not provide any speed-up.
+ */
+
if (len < c_function_required_args(sc->code))
return(s7_error(sc,
sc->WRONG_NUMBER_OF_ARGS,
@@ -15933,34 +16231,25 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
make_list_3(sc,
s7_make_string_with_length(sc, "~A: too many arguments: ~A", 26),
sc->code, sc->args)));
+ }
+ /* drop into ... */
- sc->value = c_function_call(sc->code)(sc, sc->args);
-
- if (sc->stack_top != 0)
- pop_stack(sc);
- else return(sc->value); /* or perhaps sc->F? */
-
- /* this is trying to get around an existing, but very well-hidden bug:
- * (defgenerator tanhsin (frequency 100.0))
- * (define (tanhsin gen) #f)
- * (define (crash) (let ((hi (make-tanhsin))) (catch #t (lambda () (mus-run hi 0.0)) (lambda args 123))))
- * (crash)
- * and we pop_stack once too often somewhere. I'd put a guard OP_QUIT at the start, but
- * reset_stack would need to be changed and so on.
- */
+ case T_C_ANY_ARGS_FUNCTION: /* -------- C-based function that can take any number of arguments -------- */
+ sc->value = c_function_call(sc->code)(sc, sc->args);
- goto START;
- }
+ pop_stack(sc);
+ goto START;
case T_C_MACRO: /* -------- C-based macro -------- */
{
int len;
s7_pointer macsym;
- macsym = caar(sc->args);
- sc->args = cdar(sc->args);
+ macsym = car(sc->args);
+ sc->args = cdr(sc->args);
len = safe_list_length(sc, sc->args);
+
if (len < c_macro_required_args(sc->code))
return(s7_error(sc,
sc->WRONG_NUMBER_OF_ARGS,
@@ -16050,6 +16339,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
* In other words (define* (hi (a 1)) ...) is the same as (define* (hi :key (a 1)) ...) etc.
*
* all args are optional, any arg with no default value defaults to #f.
+ * but the rest arg should default to '().
*/
/* set all default values */
@@ -16057,20 +16347,27 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
/* bind all the args to something (default value or #f or maybe #undefined) */
if (!((car(sc->z) == sc->KEY_KEY) ||
- (car(sc->z) == sc->KEY_OPTIONAL) ||
- (car(sc->z) == sc->KEY_REST))) /* :optional and :key always ignored, :rest dealt with later */
+ (car(sc->z) == sc->KEY_OPTIONAL)))
{
- if (is_pair(car(sc->z))) /* (define* (hi (a mus-next)) a) */
- add_to_local_environment(sc, /* or (define* (hi (a 'hi)) (list a (eq? a 'hi))) */
- caar(sc->z),
- lambda_star_argument_default_value(sc, cadar(sc->z)));
- /* mus-next, for example, needs to be evaluated before binding */
- else add_to_local_environment(sc, car(sc->z), sc->F);
+ if (car(sc->z) == sc->KEY_REST)
+ {
+ sc->z = cdr(sc->z);
+ add_to_local_environment(sc, car(sc->z), sc->NIL); /* set :rest arg to sc->NIL, not sc->F */
+ }
+ else
+ {
+ if (is_pair(car(sc->z))) /* (define* (hi (a mus-next)) a) */
+ add_to_local_environment(sc, /* or (define* (hi (a 'hi)) (list a (eq? a 'hi))) */
+ caar(sc->z),
+ lambda_star_argument_default_value(sc, cadar(sc->z)));
+ /* mus-next, for example, needs to be evaluated before binding */
+ else add_to_local_environment(sc, car(sc->z), sc->F);
+ }
}
}
if (s7_is_symbol(sc->z)) /* dotted (last) arg? -- make sure its name exists in the current environment */
- add_to_local_environment(sc, sc->z, sc->F);
-
+ add_to_local_environment(sc, sc->z, sc->NIL); /* this was sc->F */
+
/* now get the current args, re-setting args that have explicit values */
sc->x = closure_args(sc->code);
sc->y = sc->args;
@@ -16080,7 +16377,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
if ((car(sc->x) == sc->KEY_KEY) ||
(car(sc->x) == sc->KEY_OPTIONAL))
- sc->x = cdr(sc->x);
+ sc->x = cdr(sc->x); /* everything is :key and :optional, so these are ignored */
else
{
if (car(sc->x) == sc->KEY_REST)
@@ -16193,7 +16490,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
sc->z = vector_element(sc->stack, i - 3);
if (dynamic_wind_state(sc->z) == T_DWIND_BODY)
{
- push_stack(sc, OP_EVAL_DONE, sc->args, sc->code);
+ push_stack(sc, opcode(OP_EVAL_DONE), sc->args, sc->code);
sc->args = sc->NIL;
sc->code = dynamic_wind_out(sc->z);
eval(sc, OP_APPLY);
@@ -16202,7 +16499,10 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
else
{
if (op == OP_TRACE_RETURN)
- sc->trace_depth--;
+ {
+ sc->trace_depth--;
+ if (sc->trace_depth < 0) sc->trace_depth = 0;
+ }
}
}
@@ -16227,7 +16527,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case T_STRING: /* -------- string as applicable object -------- */
if (cdr(sc->args) != sc->NIL)
return(s7_wrong_number_of_args_error(sc, "string ref (via string as applicable object)", sc->args));
- sc->value = g_string_ref(sc, make_list_2(sc, sc->code, car(sc->args)));
+ sc->value = string_ref_1(sc, sc->code, car(sc->args));
pop_stack(sc);
goto START;
@@ -16238,14 +16538,14 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
* I suppose we could take n args here = repeated list-refs
* ((list (list 1 2) 3) 0 0) -> 1 (caar)
*/
- sc->value = g_list_ref(sc, make_list_2(sc, sc->code, car(sc->args)));
+ sc->value = list_ref_1(sc, sc->code, car(sc->args));
pop_stack(sc);
goto START;
case T_HASH_TABLE: /* -------- hash-table as applicable object -------- */
if (cdr(sc->args) != sc->NIL)
return(s7_wrong_number_of_args_error(sc, "hash-table ref (via hash-table as applicable object)", sc->args));
- sc->value = g_hash_table_ref(sc, make_list_2(sc, sc->code, car(sc->args)));
+ sc->value = hash_table_ref_1(sc, sc->code, car(sc->args));
pop_stack(sc);
goto START;
@@ -16334,7 +16634,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_DEFINE_CONSTANT0:
- push_stack(sc, OP_DEFINE_CONSTANT1, sc->NIL, sc->code);
+ push_stack(sc, opcode(OP_DEFINE_CONSTANT1), sc->NIL, sc->code);
case OP_DEFINE_STAR:
@@ -16363,11 +16663,12 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
}
if (!s7_is_symbol(sc->x)) /* (define (3 a) a) */
return(eval_error(sc, "define a non-symbol? ~S", sc->x));
+ /* (define ((f a) b) (* a b)) -> (define f (lambda (a) (lambda (b) (* a b)))) */
if (s7_is_immutable(sc->x)) /* (define pi 3) or (define (pi a) a) */
return(eval_error(sc, "define: ~S is immutable", sc->x));
- push_stack(sc, OP_DEFINE1, sc->NIL, sc->x);
+ push_stack(sc, opcode(OP_DEFINE1), sc->NIL, sc->x);
goto EVAL;
@@ -16427,19 +16728,18 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_SET0: /* entry for set! */
if (!is_pair(sc->code))
return(eval_error(sc, "set! syntax error ~A", sc->code)); /* set! . 1) */
-
if (s7_is_immutable(car(sc->code))) /* (set! pi 3) */
return(eval_error(sc, "set!: can't alter immutable object: ~S", car(sc->code)));
-
- if ((cdr(sc->code) == sc->NIL) ||
- (cddr(sc->code) != sc->NIL)) /* (set! var) */
- return(eval_error(sc, "~A: wrong number of args to set!", sc->code));
+ if (cdr(sc->code) == sc->NIL) /* (set! var) */
+ return(eval_error(sc, "~A: set! takes two args", sc->code));
+ if (cddr(sc->code) != sc->NIL) /* (set! var 1 2) */
+ return(eval_error(sc, "~A: too many args to set!", sc->code));
- if (is_pair(car(sc->code))) /* has accessor */
+ if (is_pair(car(sc->code))) /* has accessor */
{
if (is_pair(caar(sc->code)))
{
- push_stack(sc, OP_SET2, cdar(sc->code), cdr(sc->code));
+ push_stack(sc, opcode(OP_SET2), cdar(sc->code), cdr(sc->code));
sc->code = caar(sc->code);
goto EVAL;
}
@@ -16448,34 +16748,37 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
sc->x = s7_symbol_value(sc, caar(sc->code));
else sc->x = caar(sc->code); /* might be the pws function itself */
- if ((is_c_object(sc->x)) &&
- (object_set_function(sc->x)))
- sc->code = s7_cons(sc, sc->OBJECT_SET, s7_append(sc, car(sc->code), cdr(sc->code))); /* use set method (append flattens the lists) */
- else
+ /* code here is the accessor and the value without the "set!": ((window-width) 800) */
+ /* (set! (hi 0) (* 2 3)) -> ((hi 0) (* 2 3)) */
+
+ switch (type(sc->x))
{
- switch (type(sc->x))
- {
- case T_VECTOR:
- /* sc->x is the vector, sc->code is expr without the set! */
- /* args have not been evaluated! */
- sc->code = s7_cons(sc, sc->VECTOR_SET, s7_append(sc, car(sc->code), cdr(sc->code)));
- break;
-
- case T_STRING:
- sc->code = s7_cons(sc, sc->STRING_SET, s7_append(sc, car(sc->code), cdr(sc->code)));
- break;
+ case T_C_OBJECT:
+ if (object_set_function(sc->x))
+ sc->code = s7_cons(sc, sc->OBJECT_SET, s7_append(sc, car(sc->code), cdr(sc->code))); /* use set method (append flattens the lists) */
+ else return(eval_error(sc, "no generalized set for ~A", caar(sc->code)));
+ break;
- case T_PAIR:
- sc->code = s7_cons(sc, sc->LIST_SET, s7_append(sc, car(sc->code), cdr(sc->code)));
- break;
+ case T_VECTOR:
+ /* sc->x is the vector, sc->code is expr without the set! */
+ /* args have not been evaluated! */
+ sc->code = s7_cons(sc, sc->VECTOR_SET, s7_append(sc, car(sc->code), cdr(sc->code)));
+ break;
+
+ case T_STRING:
+ sc->code = s7_cons(sc, sc->STRING_SET, s7_append(sc, car(sc->code), cdr(sc->code)));
+ break;
- case T_HASH_TABLE:
- sc->code = s7_cons(sc, sc->HASH_TABLE_SET, s7_append(sc, car(sc->code), cdr(sc->code)));
- break;
+ case T_PAIR:
+ sc->code = s7_cons(sc, sc->LIST_SET, s7_append(sc, car(sc->code), cdr(sc->code)));
+ break;
- default: /* (set! (1 2) 3) */
- return(eval_error(sc, "no generalized set for ~A", caar(sc->code)));
- }
+ case T_HASH_TABLE:
+ sc->code = s7_cons(sc, sc->HASH_TABLE_SET, s7_append(sc, car(sc->code), cdr(sc->code)));
+ break;
+
+ default: /* (set! (1 2) 3) */
+ return(eval_error(sc, "no generalized set for ~A", caar(sc->code)));
}
}
else
@@ -16483,7 +16786,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (!s7_is_symbol(car(sc->code))) /* (set! 12345 1) */
return(eval_error(sc, "set! can't change ~S", car(sc->code)));
- push_stack(sc, OP_SET1, sc->NIL, car(sc->code));
+ push_stack(sc, opcode(OP_SET1), sc->NIL, car(sc->code));
sc->code = cadr(sc->code);
}
goto EVAL;
@@ -16519,8 +16822,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
(cdddr(sc->code) != sc->NIL)) /* (if 1 2 3 4) */
return(eval_error(sc, "too many clauses for if: ~A", sc->code));
-
- push_stack(sc, OP_IF1, sc->NIL, cdr(sc->code));
+ push_stack(sc, opcode(OP_IF1), sc->NIL, cdr(sc->code));
sc->code = car(sc->code);
goto EVAL;
@@ -16568,7 +16870,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (cddar(sc->code) != sc->NIL) /* (let ((x 1 2 3)) ...) */
return(eval_error(sc, "let syntax error (more than one value?): ~A", car(sc->code)));
- push_stack(sc, OP_LET1, sc->args, cdr(sc->code));
+ push_stack(sc, opcode(OP_LET1), sc->args, cdr(sc->code));
sc->code = cadar(sc->code);
sc->args = sc->NIL;
goto EVAL;
@@ -16632,7 +16934,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
(!is_pair(cdaar(sc->code)))) /* (let* ((x . 1)) ...) */
return(eval_error(sc, "let* variable list syntax error: ~A", sc->code));
- push_stack(sc, OP_LET_STAR1, cdr(sc->code), car(sc->code));
+ push_stack(sc, opcode(OP_LET_STAR1), cdr(sc->code), car(sc->code));
sc->code = cadaar(sc->code);
goto EVAL;
@@ -16665,7 +16967,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
sc->code = cdr(sc->code);
if (is_pair(sc->code))
{
- push_stack(sc, OP_LET_STAR1, sc->args, sc->code);
+ push_stack(sc, opcode(OP_LET_STAR1), sc->args, sc->code);
sc->code = cadar(sc->code);
sc->args = sc->NIL;
goto EVAL;
@@ -16720,7 +17022,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (cddar(sc->code) != sc->NIL) /* (letrec ((x 1 2 3)) ...) */
return(eval_error(sc, "letrec syntax error (more than one value?): ~A", car(sc->code)));
- push_stack(sc, OP_LETREC1, sc->args, cdr(sc->code));
+ push_stack(sc, opcode(OP_LETREC1), sc->args, cdr(sc->code));
sc->code = cadar(sc->code);
sc->args = sc->NIL;
goto EVAL;
@@ -16746,7 +17048,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (!is_pair(car(sc->x))) /* (cond 1) or (cond (#t 1) 3) */
return(eval_error(sc, "every clause in cond must be a list: ~A", car(sc->x)));
- push_stack(sc, OP_COND1, sc->NIL, sc->code);
+ push_stack(sc, opcode(OP_COND1), sc->NIL, sc->code);
sc->code = caar(sc->code);
goto EVAL;
@@ -16784,7 +17086,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
goto START;
}
- push_stack(sc, OP_COND1, sc->NIL, sc->code);
+ push_stack(sc, opcode(OP_COND1), sc->NIL, sc->code);
sc->code = caar(sc->code);
goto EVAL;
@@ -16798,7 +17100,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
}
if (!is_pair(sc->code))
return(eval_error(sc, "and: syntax error: ~A", sc->code));
- push_stack(sc, OP_AND1, sc->NIL, cdr(sc->code));
+ push_stack(sc, opcode(OP_AND1), sc->NIL, cdr(sc->code));
sc->code = car(sc->code);
goto EVAL;
@@ -16814,7 +17116,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
return(eval_error(sc, "and: syntax error: ~A", sc->code));
if (cdr(sc->code) != sc->NIL)
- push_stack(sc, OP_AND1, sc->NIL, cdr(sc->code));
+ push_stack(sc, opcode(OP_AND1), sc->NIL, cdr(sc->code));
sc->code = car(sc->code);
goto EVAL;
@@ -16828,7 +17130,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
}
if (!is_pair(sc->code))
return(eval_error(sc, "or: syntax error: ~A", sc->code));
- push_stack(sc, OP_OR1, sc->NIL, cdr(sc->code));
+ push_stack(sc, opcode(OP_OR1), sc->NIL, cdr(sc->code));
sc->code = car(sc->code);
goto EVAL;
@@ -16844,15 +17146,15 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
return(eval_error(sc, "and: syntax error: ~A", sc->code));
if (cdr(sc->code) != sc->NIL)
- push_stack(sc, OP_OR1, sc->NIL, cdr(sc->code));
+ push_stack(sc, opcode(OP_OR1), sc->NIL, cdr(sc->code));
sc->code = car(sc->code);
goto EVAL;
-
+
case OP_MACRO0: /* this is tinyscheme's weird macro syntax */
/*
(macro (when form)
- `(if ,(cadr form) (begin ,@(cddr form))))
+ `(if ,(cadr form) (begin ,@(cddr form))))
*/
/* (macro (when form) ...) or (macro do (lambda (form) ...))
* sc->code is the business after the "macro"
@@ -16877,7 +17179,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (!s7_is_symbol(sc->x))
return(eval_error(sc, "~S: variable is not a symbol", sc->x));
- push_stack(sc, OP_MACRO1, sc->NIL, sc->x); /* sc->x (the name symbol) will be sc->code when we pop to OP_MACRO1 */
+ push_stack(sc, opcode(OP_MACRO1), sc->NIL, sc->x); /* sc->x (the name symbol) will be sc->code when we pop to OP_MACRO1 */
goto EVAL;
@@ -16907,7 +17209,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (sc->x != sc->NIL)
set_symbol_value(sc->x, sc->value);
else add_to_current_environment(sc, sc->code, sc->value);
-
+
/* pop back to wherever the macro call was */
sc->x = sc->value;
sc->value = sc->code;
@@ -16938,31 +17240,6 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (is_immutable(sc->x))
return(eval_error(sc, "defmacro: ~S is immutable", sc->x)); /* (defmacro pi (a) `(+ ,a 1)) */
- /* (defmacro hi (a) `(+ ,a 1))
- * cdr(sc->code): ((a) (quasiquote (+ (unquote a) 1)))
- * caddr(sc->code): (quasiquote (+ (unquote a) 1))
- * cadr(caddr(sc->code): (+ (unquote a) 1)
- * g_quasiquote_2(sc, 0, ^): (cons (quote +) (cons a (cons 1 (quote ()))))
- *
- * so the quasiquote can be evaluated immediately. It's possible that we could
- * always precompute quasiquotes, but this change takes care of 99% of the cases.
- */
-
- if ((is_pair(cdr(sc->code))) &&
- (is_pair(cddr(sc->code))) &&
- (is_pair(caddr(sc->code))) &&
- (s7_is_symbol(caaddr(sc->code))) &&
- (caaddr(sc->code) == sc->QUASIQUOTE) &&
- (cdddr(sc->code) == sc->NIL)) /* protect against (defmacro hi (a) `(+ ,a 1) #f) */
- {
- sc->z = s7_cons(sc,
- cadr(sc->code),
- s7_cons(sc,
- g_quasiquote_2(sc, 0, cadr(caddr(sc->code))),
- sc->NIL));
- }
- else sc->z = cdr(sc->code);
-
/* could we make macros safe automatically by doing the symbol lookups right now?
* we'd replace each name with a reference to the current binding cons. I think
* this is how Guile implements hygenic macros -- is it worth the bother?
@@ -16980,7 +17257,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
* 3
*/
- sc->x = car(sc->code); /* just in case g_quasiquote stepped on sc->x */
+ sc->z = cdr(sc->code);
sc->y = s7_gensym(sc, "defmac");
sc->code = s7_cons(sc,
sc->LAMBDA,
@@ -17002,7 +17279,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
* (cons (quote +) (cons a (cons b (quote ())))))
* (cdr defmac-21)))
*/
- push_stack(sc, OP_MACRO1, sc->NIL, sc->x); /* sc->x (the name symbol) will be sc->code when we pop to OP_MACRO1 */
+ push_stack(sc, opcode(OP_MACRO1), sc->NIL, sc->x); /* sc->x (the name symbol) will be sc->code when we pop to OP_MACRO1 */
goto EVAL;
@@ -17016,7 +17293,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_DEFINE_EXPANSION:
/* read-time macros, suggested by Rick */
- push_stack(sc, OP_EXPANSION, sc->NIL, sc->NIL);
+ push_stack(sc, opcode(OP_EXPANSION), sc->NIL, sc->NIL);
/* drop into define-macro */
@@ -17033,23 +17310,10 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
return(eval_error(sc, "define-macro: ~S is immutable", sc->x));
/* (define-macro (hi a) `(+ ,a 1))
- * cdr(sc->code): ((quasiquote (+ (unquote a) 1)))
- * so in this case we want cadr, not caddr of defmacro
+ * in this case we want cadr, not caddr of defmacro
*/
- if ((is_pair(cdr(sc->code))) &&
- (is_pair(cadr(sc->code))) &&
- (s7_is_symbol(caadr(sc->code))) &&
- (caadr(sc->code) == sc->QUASIQUOTE) &&
- (cddr(sc->code) == sc->NIL))
- {
- sc->z = s7_cons(sc,
- g_quasiquote_2(sc, 0, cadr(cadr(sc->code))),
- sc->NIL);
- }
- else sc->z = cdr(sc->code);
-
- sc->x = caar(sc->code); /* just in case g_quasiquote stepped on sc->x */
+ sc->z = cdr(sc->code);
sc->y = s7_gensym(sc, "defmac");
sc->code = s7_cons(sc,
sc->LAMBDA,
@@ -17070,7 +17334,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
* sc->x: hi
* sc->code: (lambda (defmac-22) (apply (lambda (a b) (cons (quote +) (cons a (cons b (quote ()))))) (cdr defmac-22)))
*/
- push_stack(sc, OP_MACRO1, sc->NIL, sc->x); /* sc->x (the name symbol) will be sc->code when we pop to OP_MACRO1 */
+ push_stack(sc, opcode(OP_MACRO1), sc->NIL, sc->x); /* sc->x (the name symbol) will be sc->code when we pop to OP_MACRO1 */
goto EVAL;
@@ -17080,7 +17344,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
(!is_pair(cadr (sc->code))))
return(eval_error(sc, "syntax error in case: ~A", sc->code));
- push_stack(sc, OP_CASE1, sc->NIL, cdr(sc->code));
+ push_stack(sc, opcode(OP_CASE1), sc->NIL, cdr(sc->code));
sc->code = car(sc->code);
goto EVAL;
@@ -17098,7 +17362,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (sc->y != sc->ELSE)
return(eval_error(sc, "case clause key list ~A is not a list or 'else'", sc->y));
if (cdr(sc->x) != sc->NIL)
- return(eval_error(sc, "case 'else' clause is not the last", sc->x));
+ return(eval_error(sc, "case 'else' clause is not the last clause", sc->x));
break;
}
@@ -17117,7 +17381,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
sc->code = cdar(sc->x);
goto BEGIN;
}
- push_stack(sc, OP_CASE2, sc->NIL, cdar(sc->x));
+ push_stack(sc, opcode(OP_CASE2), sc->NIL, cdar(sc->x));
sc->code = caar(sc->x);
goto EVAL;
}
@@ -17170,7 +17434,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (dynamic_wind_state(sc->code) == T_DWIND_INIT)
{
dynamic_wind_set_state(sc->code, T_DWIND_BODY);
- push_stack(sc, OP_DYNAMIC_WIND, sc->NIL, sc->code);
+ push_stack(sc, opcode(OP_DYNAMIC_WIND), sc->NIL, sc->code);
sc->args = sc->NIL;
sc->code = dynamic_wind_body(sc->code);
goto APPLY;
@@ -17180,7 +17444,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (dynamic_wind_state(sc->code) == T_DWIND_BODY)
{
dynamic_wind_set_state(sc->code, T_DWIND_FINISH);
- push_stack(sc, OP_DYNAMIC_WIND, sc->value, sc->code);
+ push_stack(sc, opcode(OP_DYNAMIC_WIND), sc->value, sc->code);
sc->args = sc->NIL;
sc->code = dynamic_wind_out(sc->code);
goto APPLY;
@@ -17232,7 +17496,14 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
switch (sc->tok)
{
case TOKEN_RIGHT_PAREN:
- sc->value = remember_line(sc, safe_reverse_in_place(sc, sc->args));
+ if (sc->args == sc->NIL)
+ sc->value = sc->NIL;
+ else
+ {
+ sc->value = safe_reverse_in_place(sc, sc->args);
+ if (sc->input_port != sc->NIL)
+ pair_line_number(sc->value) = port_line_number(sc->input_port) | (port_file_number(sc->input_port) << 20);
+ }
/* read-time macro expansion
*
@@ -17283,7 +17554,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
break;
case TOKEN_DOT:
- push_stack(sc, OP_READ_DOT, sc->args, sc->NIL);
+ push_stack(sc, opcode(OP_READ_DOT), sc->args, sc->NIL);
sc->tok = token(sc);
sc->value = read_expression(sc);
break;
@@ -17295,7 +17566,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
return(missing_close_paren_error(sc));
default:
- push_stack(sc, OP_READ_LIST, sc->args, sc->NIL);
+ push_stack(sc, opcode(OP_READ_LIST), sc->args, sc->NIL);
sc->value = read_expression(sc);
break;
}
@@ -17336,13 +17607,14 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_READ_QUASIQUOTE:
- sc->value = make_list_2(sc, sc->QUASIQUOTE, sc->value);
+ /* this was pushed when the backquote was seen, then eventually we popped back to it */
+ sc->value = g_quasiquote_2(sc, sc->value);
pop_stack(sc);
goto START;
case OP_READ_QUASIQUOTE_VECTOR:
- sc->value = make_list_3(sc, sc->APPLY, sc->VECTOR, make_list_2(sc, sc->QUASIQUOTE, sc->value));
+ sc->value = make_list_3(sc, sc->APPLY, sc->VECTOR, g_quasiquote_2(sc, sc->value));
pop_stack(sc);
goto START;
@@ -17902,30 +18174,65 @@ static char *print_big_ratio(s7_scheme *sc, void *val)
static char *mpfr_to_string(mpfr_t val, int radix)
{
- char *str, *tmp;
+ char *str, *tmp, *str1;
mp_exp_t expptr;
- int i, len;
+ int i, len, ep;
if (mpfr_zero_p(val))
return(s7_strdup("0.0"));
- str = mpfr_get_str(NULL, &expptr, radix, 0, val, GMP_RNDN);
+ str1 = mpfr_get_str(NULL, &expptr, radix, 0, val, GMP_RNDN);
+ str = str1;
+ ep = (int)expptr;
len = safe_strlen(str);
- /* remove trailing 0's */
- for (i = len - 1; i > 3; i--)
- if (str[i] != '0')
- break;
- if (i < len - 1)
- str[i + 1] = '\0';
+ if (radix <= 10)
+ {
+ /* remove trailing 0's */
+ for (i = len - 1; i > 3; i--)
+ if (str[i] != '0')
+ break;
+ if (i < len - 1)
+ str[i + 1] = '\0';
- len += 64;
- tmp = (char *)malloc(len * sizeof(char));
+ len += 64;
+ tmp = (char *)malloc(len * sizeof(char));
- if (str[0] == '-')
- snprintf(tmp, len, "-%c.%sE%d", str[1], (char *)(str + 2), (int)expptr - 1);
- else snprintf(tmp, len, "%c.%sE%d", str[0], (char *)(str + 1), (int)expptr - 1);
- mpfr_free_str(str);
+ if (str[0] == '-')
+ snprintf(tmp, len, "-%c.%sE%d", str[1], (char *)(str + 2), ep - 1);
+ else snprintf(tmp, len, "%c.%sE%d", str[0], (char *)(str + 1), ep - 1);
+ }
+ else
+ {
+ /* if radix > 10, we should not be using the 'E' business -- need to move the decimal point */
+ /* (number->string 1234.5678909876543212345 16) "4d2.91614dc3ab1f80e55a563311b8f308"
+ * (number->string -1234.5678909876543212345 16) "-4d2.91614dc3ab1f80e55a563311b8f308"
+ * (number->string 1234.5678909876543212345e8 16) "1cbe991a6a.c3f35c11868cb7e3fb75536"
+ * (number->string 1234.5678909876543212345e-8 16) "0.0000cf204983a27e1eff701c562a870641e50"
+ * (number->string 123456789098765432.12345e-8 16) "499602d2.fcd6e9e1748ba5adccc12c5a8"
+ * (number->string 123456789098765432.1e20 16) "949b0f70beeac8895e74b18b9680000.00"
+ */
+ int loc = 0;
+ tmp = (char *)calloc(len + ep + 64, sizeof(char));
+ if (str[0] == '-')
+ tmp[loc++] = (*str++);
+ if (ep < 0)
+ {
+ ep = -ep;
+ tmp[loc++] = '0';
+ tmp[loc++] = '.';
+ for (i = 0; i < ep; i++)
+ tmp[loc++] = '0';
+ }
+ else
+ {
+ for (i = 0; i < ep; i++)
+ tmp[loc++] = (*str++);
+ tmp[loc++] = '.';
+ }
+ while (*str) tmp[loc++] = (*str++);
+ }
+ mpfr_free_str(str1);
return(tmp);
}
@@ -17941,6 +18248,7 @@ static char *mpc_to_string(mpc_t val, int radix)
char *rl, *im, *tmp;
int len;
mpfr_t r;
+
mpfr_init(r);
mpc_real(r, val, GMP_RNDN);
rl = mpfr_to_string(r, radix);
@@ -17949,6 +18257,7 @@ static char *mpc_to_string(mpc_t val, int radix)
len = safe_strlen(rl) + safe_strlen(im) + 128;
tmp = (char *)malloc(len * sizeof(char));
snprintf(tmp, len, "%s%s%si", rl, (im[0] == '-') ? "" : "+", im);
+
free(rl);
free(im);
return(tmp);
@@ -17965,10 +18274,13 @@ static char *big_number_to_string_with_radix(s7_pointer p, int radix)
{
if (c_object_type(p) == big_integer_tag)
return(mpz_get_str(NULL, radix, S7_BIG_INTEGER(p)));
+
if (c_object_type(p) == big_ratio_tag)
return(mpq_get_str(NULL, radix, S7_BIG_RATIO(p)));
+
if (c_object_type(p) == big_real_tag)
return(mpfr_to_string(S7_BIG_REAL(p), radix));
+
return(mpc_to_string(S7_BIG_COMPLEX(p), radix));
}
@@ -18029,7 +18341,7 @@ static s7_pointer string_to_big_integer(s7_scheme *sc, const char *str, int radi
{
mpz_t *n;
n = (mpz_t *)malloc(sizeof(mpz_t));
- mpz_init_set_str(*n, str, radix);
+ mpz_init_set_str(*n, (str[0] == '+') ? (const char *)(str + 1) : str, radix);
return(s7_make_object(sc, big_integer_tag, (void *)n));
}
@@ -18675,26 +18987,28 @@ static bool big_numbers_are_eqv(s7_pointer a, s7_pointer b)
static s7_pointer string_to_either_integer(s7_scheme *sc, const char *str, int radix)
{
- /* try strtol, check for overflow, fallback on make_big_integer */
- int val;
- errno = 0;
- val = strtol(str, (char **)NULL, radix);
- if (errno == ERANGE)
- return(string_to_big_integer(sc, str, radix));
- return(s7_make_integer(sc, (s7_Int)val));
+ s7_Int val;
+ bool overflow = false;
+
+ val = string_to_integer(str, radix, &overflow);
+ if (!overflow)
+ return(s7_make_integer(sc, val));
+
+ return(string_to_big_integer(sc, str, radix));
}
static s7_pointer string_to_either_ratio(s7_scheme *sc, const char *nstr, const char *dstr, int radix)
{
- int n, d;
- errno = 0;
- n = strtol(nstr, (char **)NULL, radix);
- if (errno != ERANGE)
+ s7_Int n, d;
+ bool overflow = false;
+
+ n = string_to_integer(nstr, radix, &overflow);
+ if (!overflow)
{
- d = strtol(dstr, (char **)NULL, radix);
- if (errno != ERANGE)
- return(s7_make_ratio(sc, (s7_Int)n, (s7_Int)d));
+ d = string_to_integer(dstr, radix, &overflow);
+ if (!overflow)
+ return(s7_make_ratio(sc, n, d));
}
return(string_to_big_ratio(sc, nstr, radix));
}
@@ -18702,76 +19016,54 @@ static s7_pointer string_to_either_ratio(s7_scheme *sc, const char *nstr, const
static s7_pointer string_to_either_real(s7_scheme *sc, const char *str, int radix)
{
- if (safe_strlen(str) < 20)
- {
- double val;
- if (radix == 10)
- {
- errno = 0;
- val = strtod(str, (char **)NULL);
- if (errno != ERANGE)
- return(s7_make_real(sc, val));
- }
- else
- {
- errno = 0;
- val = string_to_double_with_radix((char *)str, radix);
- if (errno != ERANGE)
- return(s7_make_real(sc, val));
- }
- }
+ bool overflow = false;
+ s7_Double val;
+
+ val = string_to_double_with_radix((char *)str, radix, &overflow);
+ if (!overflow)
+ return(s7_make_real(sc, val));
+
return(string_to_big_real(sc, str, radix));
}
-static s7_pointer string_to_either_complex_1(s7_scheme *sc, char *q, char *slash1, char *ex1, bool has_dec_point1, int radix, double *d_rl)
+static s7_pointer string_to_either_complex_1(s7_scheme *sc, char *q, char *slash1, char *ex1, bool has_dec_point1, int radix, s7_Double *d_rl)
{
+ bool overflow = false;
+
if ((has_dec_point1) ||
(ex1))
{
- if (safe_strlen(q) < 20)
- {
- if (radix == 10)
- {
- errno = 0;
- (*d_rl) = strtod(q, (char **)NULL);
- if (errno == ERANGE)
- return(string_to_big_real(sc, q, radix));
- }
- else
- {
- errno = 0;
- (*d_rl) = string_to_double_with_radix(q, radix);
- if (errno == ERANGE)
- return(string_to_big_real(sc, q, radix));
- }
- }
- else return(string_to_big_real(sc, q, radix));
+ (*d_rl) = string_to_double_with_radix(q, radix, &overflow);
+ if (overflow)
+ return(string_to_big_real(sc, q, radix));
}
else
{
if (slash1)
{
- int n, d;
- n = strtol(q, (char **)NULL, radix);
- if (errno == ERANGE)
+ s7_Int n, d;
+
+ /* q can include the slash and denominator */
+ n = string_to_integer(q, radix, &overflow);
+ if (overflow)
return(string_to_big_ratio(sc, q, radix));
else
{
- d = strtol(slash1, (char **)NULL, radix);
- if (errno != ERANGE)
+ d = string_to_integer(slash1, radix, &overflow);
+ if (!overflow)
(*d_rl) = (s7_Double)n / (s7_Double)d;
else return(string_to_big_ratio(sc, q, radix));
}
}
else
{
- int val;
- errno = 0;
- val = strtol(q, (char **)NULL, radix);
- if (errno == ERANGE)
+ s7_Int val;
+
+ val = string_to_integer(q, radix, &overflow);
+ if (overflow)
return(string_to_big_integer(sc, q, radix));
- else (*d_rl) = (s7_Double)val;
+ (*d_rl) = (s7_Double)val;
}
}
if ((*d_rl) == -0.0) (*d_rl) = 0.0;
@@ -18965,7 +19257,14 @@ void s7_vector_fill(s7_scheme *sc, s7_pointer vec, s7_pointer obj)
if (IS_BIG(obj))
{
- int type;
+ int type, gc_loc;
+
+ /* we'll be calling new_cell below, hence the GC, so make sure the elements are markable,
+ * and the vector itself is GC protected (we can be called within make-vector).
+ */
+ gc_loc = s7_gc_protect(sc, vec);
+ vector_fill(sc, vec, sc->NIL);
+
type = c_object_type(obj);
for (i = 0; i < len; i++)
{
@@ -18983,6 +19282,7 @@ void s7_vector_fill(s7_scheme *sc, s7_pointer vec, s7_pointer obj)
}
}
}
+ s7_gc_unprotect_at(sc, gc_loc);
}
else vector_fill(sc, vec, obj);
}
@@ -19645,7 +19945,7 @@ static s7_pointer big_angle(s7_scheme *sc, s7_pointer args)
if (c_object_type(p) == big_real_tag)
{
if (mpfr_cmp_ui(S7_BIG_REAL(p), 0) >= 0)
- return(sc->real_zero);
+ return(real_zero);
return(big_pi(sc));
}
@@ -20006,7 +20306,7 @@ static s7_pointer big_trig(s7_scheme *sc, s7_pointer args, s7_function g_trig,
if (tan_case == TRIG_TANH_CHECK)
{
if ((MPC_INEX_RE(mpc_cmp_si_si(S7_BIG_COMPLEX(p), 350, 1))) > 0)
- return(sc->real_one);
+ return(real_one);
if ((MPC_INEX_RE(mpc_cmp_si_si(S7_BIG_COMPLEX(p), -350, 1))) < 0)
return(s7_make_real(sc, -1.0));
}
@@ -20105,7 +20405,7 @@ static s7_pointer big_expt(s7_scheme *sc, s7_pointer args)
(s7_is_rational(y)))
return(small_int(sc, 0));
- return(sc->real_zero);
+ return(real_zero);
}
if (s7_is_integer(y))
@@ -20120,7 +20420,7 @@ static s7_pointer big_expt(s7_scheme *sc, s7_pointer args)
{
if (s7_is_rational(x))
return(small_int(sc, 1));
- return(sc->real_one);
+ return(real_one);
}
if (yval == 1)
@@ -22152,7 +22452,7 @@ s7_scheme *s7_init(void)
sc->envir = sc->global_env;
/* keep the small_ints out of the heap */
- sc->small_ints = (s7_pointer *)malloc((NUM_SMALL_INTS + 1) * sizeof(s7_pointer));
+ small_ints = (s7_pointer *)malloc((NUM_SMALL_INTS + 1) * sizeof(s7_pointer));
for (i = 0; i <= NUM_SMALL_INTS; i++)
{
s7_pointer p;
@@ -22161,20 +22461,20 @@ s7_scheme *s7_init(void)
p->hloc = NOT_IN_HEAP;
number_type(p) = NUM_INT;
integer(number(p)) = (s7_Int)i;
- sc->small_ints[i] = p;
+ small_ints[i] = p;
}
- sc->real_zero = (s7_pointer)calloc(1, sizeof(s7_cell));
- sc->real_zero->flag = T_OBJECT | T_IMMUTABLE | T_ATOM | T_NUMBER | T_SIMPLE | T_DONT_COPY;
- sc->real_zero->hloc = NOT_IN_HEAP;
- number_type(sc->real_zero) = NUM_REAL;
- real(number(sc->real_zero)) = (s7_Double)0.0;
+ real_zero = (s7_pointer)calloc(1, sizeof(s7_cell));
+ real_zero->flag = T_OBJECT | T_IMMUTABLE | T_ATOM | T_NUMBER | T_SIMPLE | T_DONT_COPY;
+ real_zero->hloc = NOT_IN_HEAP;
+ number_type(real_zero) = NUM_REAL;
+ real(number(real_zero)) = (s7_Double)0.0;
- sc->real_one = (s7_pointer)calloc(1, sizeof(s7_cell));
- sc->real_one->flag = T_OBJECT | T_IMMUTABLE | T_ATOM | T_NUMBER | T_SIMPLE | T_DONT_COPY;
- sc->real_one->hloc = NOT_IN_HEAP;
- number_type(sc->real_one) = NUM_REAL;
- real(number(sc->real_one)) = (s7_Double)1.0;
+ real_one = (s7_pointer)calloc(1, sizeof(s7_cell));
+ real_one->flag = T_OBJECT | T_IMMUTABLE | T_ATOM | T_NUMBER | T_SIMPLE | T_DONT_COPY;
+ real_one->hloc = NOT_IN_HEAP;
+ number_type(real_one) = NUM_REAL;
+ real(number(real_one)) = (s7_Double)1.0;
/* initialization of global pointers to special symbols */
assign_syntax(sc, "lambda", OP_LAMBDA);
@@ -22211,9 +22511,6 @@ s7_scheme *s7_init(void)
sc->QUOTE = s7_make_symbol(sc, "quote");
typeflag(sc->QUOTE) |= T_DONT_COPY;
- sc->QUASIQUOTE = s7_make_symbol(sc, "quasiquote");
- typeflag(sc->QUASIQUOTE) |= T_DONT_COPY; /* add the immutable bit later */
-
sc->UNQUOTE = s7_make_symbol(sc, "unquote");
typeflag(sc->UNQUOTE) |= T_DONT_COPY;
@@ -22594,9 +22891,7 @@ s7_scheme *s7_init(void)
s7_define_function(sc, "trace", g_trace, 0, 0, true, H_trace);
s7_define_function(sc, "untrace", g_untrace, 0, 0, true, H_untrace);
s7_define_variable(sc, "*trace-hook*", sc->NIL);
-
- s7_define_function(sc, "stack", g_stack, 0, 1, false, H_stack);
- s7_define_function(sc, "stacktrace", g_stacktrace, 0, 1, false, H_stacktrace);
+ s7_define_function(sc, "stacktrace", g_stacktrace, 0, 2, false, H_stacktrace);
s7_define_function(sc, "gc", g_gc, 0, 1, false, H_gc);
s7_define_function(sc, "quit", g_quit, 0, 0, false, H_quit);
@@ -22617,11 +22912,10 @@ s7_scheme *s7_init(void)
s7_define_function(sc, "s7-version", g_s7_version, 0, 0, false, H_s7_version);
s7_define_set_function(sc, object_set_name, g_object_set, 1, 0, true, "internal setter redirection");
- s7_define_function(sc, "_quasiquote_", g_quasiquote, 2, 0, false, "internal quasiquote handler");
s7_define_variable(sc, "*features*", sc->NIL);
s7_define_variable(sc, "*load-path*", sc->NIL);
- s7_define_variable(sc, "*vector-print-length*", sc->small_ints[8]);
+ s7_define_variable(sc, "*vector-print-length*", small_ints[8]);
s7_define_variable(sc, "*load-hook*", sc->NIL);
s7_define_variable(sc, "*error-hook*", sc->NIL);
@@ -22656,12 +22950,17 @@ s7_scheme *s7_init(void)
s7_define_function(sc, "close-encapsulator", g_close_encapsulator, 1, 0, false, H_close_encapsulator);
s7_define_function(sc, "encapsulator?", g_is_encapsulator, 1, 0, false, H_is_encapsulator);
s7_define_function(sc, "encapsulator-bindings", g_encapsulator_bindings, 1, 0, false, H_encapsulator_bindings);
+ g_provide(sc, make_list_1(sc, s7_make_symbol(sc, "encapsulation")));
#endif
#if WITH_MULTIDIMENSIONAL_VECTORS
g_provide(sc, make_list_1(sc, s7_make_symbol(sc, "multidimensional-vectors")));
#endif
+#if WITH_PROFILING
+ g_provide(sc, make_list_1(sc, s7_make_symbol(sc, "profiling")));
+#endif
+
sc->VECTOR_FUNCTION = s7_name_to_value(sc, "vector");
sc->VECTOR_SET = s7_symbol_value(sc, s7_make_symbol(sc, "vector-set!"));
@@ -22677,13 +22976,22 @@ s7_scheme *s7_init(void)
typeflag(sc->STRING_SET) |= T_DONT_COPY;
{
- int top;
+ int i, top;
+ #define LOG_LLONG_MAX 43.668274
+ #define LOG_LONG_MAX 21.487562
+
top = sizeof(s7_Int);
s7_int_max = (top == 8) ? LONG_MAX : SHRT_MAX;
s7_int_min = (top == 8) ? LONG_MIN : SHRT_MIN;
s7_int_bits = (top == 8) ? 63 : 31;
s7_int_digits = (top == 8) ? 18 : 8;
+ s7_int_digits_by_radix[0] = 0;
+ s7_int_digits_by_radix[1] = 0;
+
+ for (i = 2; i < 17; i++)
+ s7_int_digits_by_radix[i] = (int)(floor(((top == 8) ? LOG_LLONG_MAX : LOG_LONG_MAX) / log((double)i)));
+
s7_define_constant(sc, "most-positive-fixnum", s7_make_integer(sc, (top == 8) ? LLONG_MAX : ((top == 4) ? LONG_MAX : SHRT_MAX)));
s7_define_constant(sc, "most-negative-fixnum", s7_make_integer(sc, (top == 8) ? LLONG_MIN : ((top == 4) ? LONG_MIN : SHRT_MIN)));
@@ -22693,8 +23001,6 @@ s7_scheme *s7_init(void)
/* for s7_Double, float gives about 9 digits, double 18, long Double claims 28 but I don't see more than about 22? */
}
- s7_eval_c_string(sc, "(macro quasiquote (lambda (l) (_quasiquote_ 0 (cadr l))))");
-
#if WITH_GMP
s7_gmp_init(sc);
#endif
@@ -22717,28 +23023,6 @@ s7_scheme *s7_init(void)
(let ((local-vars (map (lambda (n) (gensym)) vars)))\n\
`((lambda ,local-vars ,@(map (lambda (n ln) `(set! ,n ,ln)) vars local-vars) ,@body) ,expr)))");
-#if 0
- /*
-(define-macro (let*-values vals . body)
- (let ((args '())
- (exprs '()))
- (for-each
- (lambda (arg+expr)
- (set! args (cons (car arg+expr) args))
- (set! exprs (cons (cadr arg+expr) exprs)))
- vals)
- (let ((form `((lambda ,(car args) ,@body) ,(car exprs))))
- (if (not (null? (cdr args)))
- (for-each
- (lambda (arg expr)
- (set! form `((lambda ,arg ,form) ,expr)))
- (cdr args)
- (cdr exprs)))
- form)))
- */
-#endif
-
-
#if WITH_ENCAPSULATION
s7_eval_c_string(sc, " \n\
(define-macro (encapsulate . body) \n\
@@ -22780,88 +23064,3 @@ s7_scheme *s7_init(void)
}
/* TODO: how to trace setter [s7_object_set?] mus-srate for example */
-
-#if 0
-/* here are the ->* functions, without c-type stuff
-
-(define ->string object->string) ; or perhaps (format #f "~A" x)
-
-(define (->symbol x)
- (string->symbol (object->string x)))
-
-(define (->real x)
- (if (number? x)
- (if (complex? x)
- (real-part x)
- (exact->inexact x))
- (if (string? x)
- (exact->inexact (string->number x))
- (if (char? x)
- (exact->inexact (->integer x))
- (error 'wrong-type-arg "can't convert ~A to real" x)))))
-
-(define (->integer x)
- (if (number? x)
- (if (complex? x)
- (floor (real-part x))
- (floor x))
- (if (string? x)
- (floor (string->number x))
- (if (char? x)
- (char->integer x)
- (error 'wrong-type-arg "can't convert ~A to integer" x)))))
-
-(define (->ratio x)
- (if (number? x)
- (if (complex? x)
- (rationalize (real-part x))
- (rationalize x))
- (if (string? x)
- (rationalize (string->number x))
- (if (char? x)
- (char->integer x)
- (error 'wrong-type-arg "can't convert ~A to ratio" x)))))
-
-(define (->number x)
- (if (number? x)
- x
- (if (string? x)
- (string->number x)
- (if (char? x)
- (char->integer x)
- (error 'wrong-type-arg "can't convert ~A to number" x)))))
-
-(define (->character x)
- (if (char? x)
- x
- (if (number? x)
- (integer->char (->integer x))
- (if (and (string? x)
- (= (length x) 1))
- (string-ref x 0)
- (error 'wrong-type-arg "can't convert ~A to character" x)))))
-
-(define (->list x)
- (if (list? x)
- x
- (if (pair? x)
- (list (car x) (cdr x))
- (if (vector? x)
- (vector->list x)
- (if (string? x)
- (string->list x)
- (error 'wrong-type-arg "can't convert ~A to list" x))))))
-
-(define (->vector x)
- (if (vector? x)
- x
- (if (list? x)
- (list->vector x)
- (if (string? x)
- (list->vector (string->list x))
- (if (pair? x)
- (list->vector (->list x))
- (error 'wrong-type-arg "can't convert ~A to vector" x))))))
- */
-#endif
-
diff --git a/s7.h b/s7.h
index 53f44e4..deefd02 100644
--- a/s7.h
+++ b/s7.h
@@ -1,8 +1,8 @@
#ifndef S7_H
#define S7_H
-#define S7_VERSION "1.41"
-#define S7_DATE "16-Dec-09"
+#define S7_VERSION "1.42"
+#define S7_DATE "20-Jan-10"
typedef long long int s7_Int;
@@ -844,6 +844,7 @@ void s7_mark_object(s7_pointer p);
*
* s7 changes
*
+ * 20-Jan-10: removed the stack function.
* --------
* 16-Dec: hash-table-for-each.
* 1-Dec: mpc versions before 0.8.0 are no longer supported.
diff --git a/s7.html b/s7.html
index cec46e9..6c757ef 100644
--- a/s7.html
+++ b/s7.html
@@ -198,7 +198,9 @@ is either #f (if unspecified), or given in a list whose first member is
the argument name.
The last argument
can be preceded by :rest or a dot to indicate that all other trailing arguments
-should be packaged as a list under that argument's name. You can use
+should be packaged as a list under that argument's name. A trailing or rest
+argument's default value is '().
+You can use
:optional and :key, but they are ignored.
</p>
<pre>
@@ -209,7 +211,7 @@ When the function is called,
the argument names are bound to their default values, then the function's
current argument list is scanned. Any name that occurs as a keyword (":a")
sets that argument's new value. Otherwise, as values occur, they
-are plugged into the actual argument list based on their position.
+are plugged into the actual argument list based on their position (counting a keyword/value pair as one argument).
This is called an optional-key list in CLM. So, taking the function
above as an example:
</p>
@@ -218,6 +220,7 @@ above as an example:
(hi :b 2 :a 3) -&gt; '(3 2 "hi")
(hi 3 2 1) -&gt; '(3 2 1)
</pre>
+<p>See s7test.scm for many examples.</p>
</dd>
<br>
@@ -264,6 +267,10 @@ add-2
&gt; (add-2 :b 3 :a 1)
4
</pre>
+
+<p>See s7test.scm for many examples including such perennial favorites as
+when, loop, dotimes, do*, enum, pushnew, and defstruct.
+</p>
</dd>
<br>
@@ -349,6 +356,9 @@ are both applicable and settable. I think the syntax is pretty:
<p>You can use list-ref and friends, of course, but just try to read any serious vector arithmetic code
when it is buried in vector-refs and vector-set!s!
</p>
+<p>This syntax makes it easy to write generic sequence functions, as in Common Lisp.
+See s7test.scm for examples.
+</p>
</dd>
<br>
@@ -671,17 +681,14 @@ function call (that is, global to the function, not the function's local environ
<!-- -------------------------------------------------------------------------------- -->
<dt>
<table border=0 bordercolor="lightgreen" width=50% cellpadding=1 cellspacing=0><tr><td bgcolor="lightgreen">
-<table width=100% border=0><tr><td bgcolor="#EEFDEE" valign="middle"><h4>stacktrace, stack</h4></td></tr></table>
+<table width=100% border=0><tr><td bgcolor="#EEFDEE" valign="middle"><h4>stacktrace</h4></td></tr></table>
</td></tr></table>
</dt>
<dd><p>stacktrace prints the stack contents. Its optional argument
can be *error-info* to show the stack at the point of the last error,
a thread object to show that thread's stack, or a continuation to
-show the continuation stack. Similarly, the stack function returns
-the stack top (an integer) and the stack itself (a vector).
-Each stack frame has 4 entries, the function, the current environment, the function arguments, and an op code used
-internally by the evaluator.
+show the continuation stack.
</p>
</dd>
<br>
@@ -725,7 +732,7 @@ are:
the upper limit on how many vector elements are printed by object-&gt;string and format.
</p>
<p>When running s7 behind a GUI, you often want input to come from and output to go to
-arbitrary widgets. The "function ports" provide a way to redirect IO. See s7.h
+arbitrary widgets. The "function ports" provide a way to redirect IO. See <a href="#functionportexample">below</a>
for an example.
</p>
<p>s7 also includes current-error-port and set-current-error-port.
@@ -962,6 +969,56 @@ write "hygenic" macros:
</dd>
<br>
+<!--
+(define-macro (glet inits . body)
+ ;; any defines in the body are defined in the calling environment
+ (let ((e (gensym))
+ (result (gensym)))
+ `(let ((,e (current-environment)))
+ (let ,inits
+ (let ((,result (begin ,@body)))
+ (for-each (lambda (binding)
+ (if (procedure? (cdr binding))
+ (push-environment ,e binding)))
+ (cadr (current-environment)))
+ ,result)))))
+
+but maybe it would be more sensible to use something like
+
+(define-macro (global-funcs-share-local-data local-name local-value . funcs)
+ (let ((local-name (gensym)))
+ `(begin
+ (define ,local-name ,local-value)
+ ,@(trans-tree local-name funcs))))
+
+where trans-tree is copy-tree replacing the original local name with the gensym'd one
+but this still makes a built-in let! look good.
+
+(define (tree-for-each tree func)
+ (if (pair? tree)
+ (begin
+ (tree-for-each (car tree) func)
+ (tree-for-each (cdr tree) func))
+ (func tree)))
+
+(define (tree-map tree func)
+ (if (pair? tree)
+ (cons (tree-map (car tree) func)
+ (tree-map (cdr tree) func))
+ (func tree)))
+
+Another thing that would be useful: case with evaluated "key-lists":
+
+(define-macro (eval-case key . clauses)
+ `(cond ,@(map (lambda (lst)
+ (if (pair? (car lst))
+ (cons `(member ,key (list ,@(car lst)))
+ (cdr lst))
+ lst))
+ clauses)))
+
+-->
+
<!-- -------------------------------------------------------------------------------- -->
<dt>
@@ -1183,6 +1240,7 @@ global-x
<li>no transcript-on or transcript-off.
<li>__func__ is the name of the function currently being defined or called (as in C).
<li>vector-for-each, vector-map, hash-table-for-each, string-for-each
+<li>syntactic names can be values: (define progn begin) (progn (display "progn!") (+ 3 4)) or (define function lambda), etc
</ul>
</dd>
<br>
@@ -1523,12 +1581,14 @@ int main(int argc, char **argv)
}
}
-/* gcc -o doc7 doc7.c -lm -I. /usr/local/lib/sndlib.a -lasound
+/* gcc -o doc7 doc7.c -lm -I. /usr/local/lib/libsndlib.a -lasound
*
* (load "sndlib-ws.scm")
* (with-sound () (outa 10 .1))
* (load "v.scm")
* (with-sound () (fm-violin 0 .1 440 .1))
+ *
+ * you might also need -lgsl -lgslcblas
*/
</pre>
</td></tr></table>
@@ -1714,6 +1774,7 @@ int main(int argc, char **argv)
<br><br>
+<a name="functionportexample"></a>
<p>Redirect output (and input) to a C procedure:
</p>
diff --git a/s7test.scm b/s7test.scm
index b9cb247..a1f0410 100644
--- a/s7test.scm
+++ b/s7test.scm
@@ -86,6 +86,17 @@
`(let ((result (catch #t (lambda () ,tst) (lambda args 'error))))
(ok? ',tst result ,expected)))
+(defmacro test-t (tst) ;(display tst) (newline)
+ `(let ((result (catch #t (lambda () ,tst) (lambda args 'error))))
+ (if (or (not result)
+ (eq? result 'error))
+ (begin
+ (display ',tst)
+ (display " got ")
+ (display result)
+ (newline) (newline)
+ ))))
+
;;; the error limits below are pretty expansive in some cases, so with-error-data
;;; tries to keep a record of the worst case error for each operator. error-data
@@ -133,7 +144,8 @@
(define (check-error tst result expected)
(if (and (number? result)
- (number? expected))
+ (number? expected)
+ (pair? tst))
(let ((err (op-error (car tst) result expected)))
(if (> err 0.0)
(letrec ((find-if (lambda (pred l)
@@ -223,7 +235,8 @@
(real? expected)
(real? result)
(> (abs (- result expected)) 1.0e-12))
- (> (op-error (car tst) result expected) 1.0e-6)
+ (and (pair? tst)
+ (> (op-error (car tst) result expected) 1.0e-6))
(and (number? result)
(not (types-consistent? result))))
(begin
@@ -264,7 +277,8 @@
(real? result)
(> (abs (- result expected)) 1.0e-12))
(format #t ", rational results but diff > 1e-12: ~A" (> (abs (- result expected)) 1.0e-12))
- (if (< (op-error (car tst) result expected) 1.0e-6)
+ (if (and (pair? tst)
+ (< (op-error (car tst) result expected) 1.0e-6))
(let ((n result))
(format #t ", result not internally consistent")
(if (and (integer? n)
@@ -509,6 +523,12 @@
(test (boolean? '#()) #f)
(test (boolean? 't) #f)
(test (boolean? (list)) #f)
+(test ( boolean? #t) #t)
+(test ( ; a comment
+ boolean? ;;; and another
+ #t
+ )
+ #t)
(for-each
(lambda (arg)
@@ -554,6 +574,7 @@
(test (symbol? '#f) #f)
(test (symbol? 'sym0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789) #t) ;M Gran
(test (symbol? (vector-ref '#(1 a 34) 1)) #t)
+(test (if (symbol? '1+) (symbol? '0e) #t) #t)
(for-each
(lambda (arg)
@@ -1191,6 +1212,7 @@
(test (string=? "foo" "foo" "") #f)
(test (string=? "foo" "foo" "fOo") #f)))
+
(test (let ((str (string #\" #\1 #\\ #\2 #\"))) (string=? str "\"1\\2\"")) #t)
(test (let ((str (string #\\ #\\ #\\))) (string=? str "\\\\\\")) #t)
(test (let ((str (string #\"))) (string=? str "\"")) #t)
@@ -1488,6 +1510,9 @@
(test (string-length "1\\") 2)
(test (string-length "hi\\") 3)
(test (string-length "\\\\\\\"") 4)
+(test (string-length "A ; comment") 11)
+(test (string-length "#| comment |#") 13)
+
(test (string=? (string) "") #t)
(test (string=? (string) (make-string 0)) #t)
@@ -1535,6 +1560,12 @@
(string-set! str 3 #\x)
(test (string=? str "xxxxaxxxxx") #t))
+(test (let ((hi (make-string 3 #\a)))
+ (string-set! hi 1 (let ((ho (make-string 4 #\x)))
+ (string-set! ho 1 #\b)
+ (string-ref ho 0)))
+ hi)
+ "axa")
(test (substring "ab" 0 0) "")
@@ -2837,6 +2868,23 @@
(test (+ 100 (call-with-input-string "123" (lambda (p) (values (read p) 1)))) 224)
+(test (call-with-input-string
+ "1234567890"
+ (lambda (p)
+ (call-with-input-string
+ "0987654321"
+ (lambda (q)
+ (+ (read p) (read q))))))
+ 2222222211)
+
+(test (call-with-input-string
+ "12345 67890"
+ (lambda (p)
+ (call-with-input-string
+ "09876 54321"
+ (lambda (q)
+ (- (+ (read p) (read q)) (read p) (read q))))))
+ -99990)
(test (output-port? (current-output-port)) #t)
(write-char #\space (current-output-port))
@@ -3157,8 +3205,7 @@
;;; --------------------------------------------------------------------------------
(define control-ops (list lambda define quote if begin set! let let* letrec cond case and or do
- call/cc eval apply for-each map values call-with-values dynamic-wind
- quasiquote))
+ call/cc eval apply for-each map values call-with-values dynamic-wind))
(for-each
(lambda (op)
(if (not (eq? op op))
@@ -3573,6 +3620,7 @@
;(test (do () (() ()) ()) '()) ; ?? -- is '() the same as ()? -- scheme bboard sez not necessarily
(test (do () ('() '())) '())
+(test (do () ('())) '())
(test (let ((x 0) (y 0)) (set! y (do () (#t (set! x 32) 123))) (list x y)) (list 32 123))
(test (let ((i 32)) (do ((i 0 (+ i 1)) (j i (+ j 1))) ((> j 33) i))) 2)
@@ -3610,6 +3658,12 @@
(num-test (do ((i 0 (- i 1/2))) ((< i -2) i)) -5/2)
(num-test (do ((i 0+i (+ i 0+i))) ((> (magnitude i) 2) i)) 0+3i)
+(test (call/cc (lambda (return) (do () () (if #t (return 123))))) 123)
+(test (call/cc (lambda (return) (do () (#f) (if #t (return 123))))) 123)
+(test (call/cc (lambda (return) (do ((i 0 (+ i 1))) () (if (= i 100) (return 123))))) 123)
+(test (call/cc (lambda (return) (do () ((return 123))))) 123)
+(test (call/cc (lambda (return) (do () (#t (return 123))))) 123)
+
(test (do () (/ 0)) 0)
(test (do () (+)) '())
(test (do () (+ +) *) +)
@@ -3755,12 +3809,12 @@
(test (call-with-input-file "s7test.scm"
(lambda (p)
(let ((loc 0))
- (let loop ((val (read p)))
+ (let loop ((val (read-char p)))
(or (eof-object? val)
(> loc 1000) ; try to avoid the read-error stuff
(begin
(set! loc (+ 1 loc))
- (loop (read p)))))
+ (loop (read-char p)))))
(> loc 1000))))
#t)
@@ -3802,13 +3856,13 @@
(test (call-with-input-file "s7test.scm"
(lambda (p)
(let ((loc 0))
- (let loop ((val (read p)))
+ (let loop ((val (read-char p)))
(and (not (eof-object? val))
- (< loc 10000)
+ (< loc 1000)
(begin
(set! loc (+ 1 loc))
- (loop (read p)))))
- (>= loc 10000))))
+ (loop (read-char p)))))
+ (>= loc 1000))))
#t)
(test (and (or (and (> 3 2) (> 3 4)) (> 2 3)) 4) #f)
@@ -4123,6 +4177,15 @@
(test ((call/cc (lambda (return) (dynamic-wind (lambda () #f) (lambda () (return +)) (lambda () #f)))) 3 2) 5)
(test (+ 1 ((call/cc (lambda (return) (dynamic-wind (lambda () #f) (lambda () (return +)) (lambda () #f)))) 3 2) 2) 8)
(test (let ((lst (list + -))) ((car lst) 1 2 3)) 6)
+(test (let ((a +)) ((let ((b -)) (if (eq? a b) a *)) 2 3)) 6)
+(test ((list-ref (list + - * /) 0) 2 3) 5)
+(test (((if #t list-ref oops) (list + - * /) 0) 2 3) 5)
+(test ((((car (list car cdr)) (list car cdr)) (list + -)) 2 3) 5)
+(test (let ()
+ (define function lambda)
+ (define hiho (function (a) (+ a 1)))
+ (hiho 2))
+ 3)
;;; -------- begin --------
@@ -4133,6 +4196,8 @@
(test (let () (begin (define x 0)) (begin (set! x 5) (+ x 1))) 6)
(test (let () (begin (define first car)) (first '(1 2))) 1)
(test (let () (begin (define x 3)) (begin (set! x 4) (+ x x))) 8)
+(test (let ((x 3)) (begin x)) 3)
+(test (begin 3) 3)
(if (equal? (begin 1) 1)
(begin
@@ -4868,6 +4933,7 @@
(test (call/cc (let ((a 1)) (lambda (return) (set! a (+ a 1)) (return a)))) 2)
(test (call/cc (lambda (return) (let ((hi return)) (hi 2) 3))) 2)
(test (let () (define (hi) (call/cc func)) (define (func a) (a 1)) (hi)) 1)
+(test (((call/cc (call/cc call/cc)) call/cc) (lambda (a) 1)) 1)
(test (let ((listindex (lambda (e l)
(call/cc (lambda (not_found)
@@ -5845,7 +5911,7 @@
'(a))
(test (let ((x '(a b c)))
- (cadadr ``,,x))
+ ``,,x)
'(a b c))
(test (let ((x '(a b c)))
@@ -5995,34 +6061,39 @@
(test (call/cc (lambda (return) (sort! '(1 2 3) (lambda (a b) (return "oops"))))) "oops")
- (let ((v (make-vector 10000)))
- (do ((i 0 (+ i 1)))
- ((= i 10000))
- (vector-set! v i (random 100.0)))
- (sort! v <)
- (call/cc
- (lambda (return)
- (do ((i 0 (+ i 1)))
- ((< i 9999))
- (if (not (< (vector-ref v i) (vector-ref v (+ i 1))))
- (return #f)))
- #t)))
+ (test (let ((v (make-vector 1000)))
+ (do ((i 0 (+ i 1)))
+ ((= i 1000))
+ (vector-set! v i (random 100.0)))
+ (set! v (sort! v >))
+ (call-with-exit
+ (lambda (return)
+ (do ((i 0 (+ i 1)))
+ ((= i 999) #t)
+ (if (<= (v i) (v (+ i 1)))
+ (return #f))))))
+ #t)
- (let ((v '()))
- (do ((i 0 (+ i 1)))
- ((= i 10000))
- (set! v (cons (random 100.0) v)))
- (set! v (sort! v >))
- (call/cc
- (lambda (return)
- (let ((val (car v)))
- (do ((lst (cdr v) (cdr lst)))
- ((null? (cdr lst)))
- (if (not (> val (car lst)))
- (return #f))
- (set! val (car lst))))
- #t)))
+ (test (let ((v '()))
+ (do ((i 0 (+ i 1)))
+ ((= i 1000))
+ (set! v (cons (random 100.0) v)))
+ (set! v (sort! v >))
+ (apply > v))
+ #t)
+
+ (test (sort! (list 3 2 1) (lambda (m n) (let ((vals (sort! (list m n) <))) (< m n)))) '(1 2 3))
+ (test (let ((lst '()))
+ (do ((i 0 (+ i 1)))
+ ((= i 128))
+ (set! lst (cons (random 1.0) lst)))
+ (let ((vals (sort! lst (lambda (m n)
+ (let ((lst1 (list 1 2 3)))
+ (sort! lst1 <))
+ (< m n)))))
+ (apply < vals)))
+ #t)
))
@@ -6094,19 +6165,12 @@
(cond
((null? forms)
`(block ,block-tag
- (letrec ,(reverse! (cons (list cur-tag `(lambda ()
- ,@(reverse!
- (cons `(,block-tag #f)
- cur-code))))
- tags-and-code))
+ (letrec ,(reverse! (cons (list cur-tag `(lambda () ,@(reverse! (cons `(,block-tag #f) cur-code)))) tags-and-code))
(,start-tag))))
((symbol? (car forms))
(loop (car forms)
'()
- (cons (list cur-tag `(lambda ()
- ,@(reverse! (cons `(,(car forms))
- cur-code))))
- tags-and-code)
+ (cons (list cur-tag `(lambda () ,@(reverse! (cons `(,(car forms)) cur-code)))) tags-and-code)
(cdr forms)))
(else
(loop cur-tag
@@ -6492,15 +6556,15 @@
(let ((hi (lambda* (a :rest b) (list a b))))
(test (hi 1 2 3) (list 1 (list 2 3)))
- (test (hi) (list #f #f))
- (test (hi :a 2) (list 2 #f))
+ (test (hi) (list #f ()))
+ (test (hi :a 2) (list 2 '()))
(test (hi :b 3) (list #f 3)))
(let ((hi (lambda* (a :rest b :rest c) (list a b c))))
(test (hi 1 2 3 4 5) (list 1 (list 2 3 4 5) (list 3 4 5))))
(let ((hi (lambda* ((a 3) :key (b #t) :optional (c our-pi) :rest d) (list a b c d))))
- (test (hi) (list 3 #t our-pi #f))
+ (test (hi) (list 3 #t our-pi ()))
(test (hi 1 2 3 4) (list 1 2 3 (list 4))))
(let ((hi (lambda* ((a 'hi)) (equal? a 'hi))))
@@ -6516,8 +6580,8 @@
(let ((hi (lambda* (a . b) (list a b))))
(test (hi 1 2 3) (list 1 (list 2 3)))
- (test (hi) (list #f #f))
- (test (hi :a 2) (list 2 #f))
+ (test (hi) (list #f ()))
+ (test (hi :a 2) (list 2 '()))
(test (hi :b 3) (list #f 3)))
(let ((hi (lambda* ((a 0.0) :optional (b 0.0)) (+ a b))))
@@ -6546,18 +6610,57 @@
(test (let ((hi (lambda* ((a 0.0 . "hi")) a))) (hi)) 'error)
(test (let ((hi (lambda* ((a)) a))) (hi)) 'error)
(test (let ((hi (lambda* (a 0.0) (b 0.0) (+ a b)))) (hi)) 'error)
+
+ (test (let () (define* (hi a . b) b) (hi 1 2 3)) '(2 3))
+ (test (let () (define* (hi a . b) b) (hi :a 1 2 3)) '(2 3))
+ (test (let () (define* (hi a . b) b) (hi 1)) '())
+ (test (let () (define* (hi a . b) b) (hi :a 1)) '())
+ (test (let () (define* (hi a . b) b) (hi)) '())
+
+ (test (let () (define* (hi a :rest b) b) (hi 1 2 3)) '(2 3))
+ (test (let () (define* (hi a :rest b) b) (hi :a 1 2 3)) '(2 3))
+ (test (let () (define* (hi a :rest b) b) (hi 1)) '())
+ (test (let () (define* (hi a :rest b) b) (hi :a 1)) '())
+ (test (let () (define* (hi a :rest b) b) (hi)) '())
+
+ (test (let () (define* (hi :key a :rest b) b) (hi 1 2 3)) '(2 3))
+ (test (let () (define* (hi :key a :rest b) b) (hi :a 1 2 3)) '(2 3))
+ (test (let () (define* (hi :key a :rest b) b) (hi 1)) '())
+ (test (let () (define* (hi :key a :rest b) b) (hi :a 1)) '())
+ (test (let () (define* (hi :key a :rest b) b) (hi)) '())
+
+ (test (let () (define* (hi :optional a :rest b) b) (hi 1 2 3)) '(2 3))
+ (test (let () (define* (hi :optional a :rest b) b) (hi :a 1 2 3)) '(2 3))
+ (test (let () (define* (hi :optional a :rest b) b) (hi 1)) '())
+ (test (let () (define* (hi :optional a :rest b) b) (hi :a 1)) '())
+ (test (let () (define* (hi :optional a :rest b) b) (hi)) '())
+
+ (test (let () (define* (hi (a 1) . b) b) (hi 1 2 3)) '(2 3))
+ (test (let () (define* (hi a (b 22) . c) (list a b c)) (hi)) '(#f 22 ()))
+ (test (let () (define* (hi a (b 22) . c) (list a b c)) (hi :a 1)) '(1 22 ()))
+ (test (let () (define* (hi a (b 22) . c) (list a b c)) (hi :b 1)) '(#f 1 ()))
+ (test (let () (define* (hi a (b 22) . c) (list a b c)) (hi :c 1)) '(#f 22 1))
+ (test (let () (define* (hi a (b 22) . c) (list a b c)) (hi :a 1 2)) '(1 2 ()))
+ (test (let () (define* (hi a (b 22) . c) (list a b c)) (hi :b 1 2 3)) '(#f 2 (3)))
+ (test (let () (define* (hi a (b 22) . c) (list a b c)) (hi :c 1 2 3)) '(#f 2 (3)))
+ (test (let () (define* (hi a (b 22) . c) (list a b c)) (hi :b 1 :a 2 3)) '(2 1 (3)))
+
))
(if with-procedure-arity ; s7-specific stuff that needs exercise
(begin
-
+
+ (define (last-pair l)
+ (if (pair? (cdr l))
+ (last-pair (cdr l)) l))
+
(test (procedure-arity car) '(1 0 #f))
(test (procedure-arity 'car) '(1 0 #f))
(test (procedure-arity +) '(0 0 #t))
(test (procedure-arity '+) '(0 0 #t))
(test (procedure-arity log) '(1 1 #f))
(test (procedure-arity '/) '(1 0 #t))
- ;(test (procedure-arity vector-set!) '(3 0 #f)) ; can be '(3 0 #t)
+ ;(test (procedure-arity vector-set!) '(3 0 #f)) ; can be '(3 0 #t)
(test (let ((hi (lambda () 1))) (procedure-arity hi)) '(0 0 #f))
(test (let ((hi (lambda (a) 1))) (procedure-arity hi)) '(1 0 #f))
(test (let ((hi (lambda (a b) 1))) (procedure-arity hi)) '(2 0 #f))
@@ -6652,6 +6755,30 @@
(test (let () (define-macro (hi a) `(+ ,a 1) #f) (hi 2)) #f)
(test (let () (define-macro (mac1 a) `',a) (equal? (mac1 (+ 1 2)) '(+ 1 2))) #t)
+ (test (let () (defmacro hi (a) `(+ , a 1)) (hi 1)) 2)
+ (test (let () (defmacro hi (a) `(eval `(+ ,,a 1))) (hi 1)) 2)
+ (test (let () (defmacro hi (a) `(eval (let ((a 12)) `(+ ,,a 1)))) (hi 1)) 2)
+ (test (let () (defmacro hi (a) `(eval (let ((a 12)) `(+ ,a 1)))) (hi 1)) 13)
+ (test (let () (defmacro hi (a) `(eval (let ((a 12)) `(let ((a 100)) (+ ,a 1))))) (hi 1)) 13)
+ (test (let () (defmacro hi (a) `(eval (let ((a 12)) `(let ((a 100)) (+ a 1))))) (hi 1)) 101)
+
+ (test (let () (defmacro hi (q) ``(,,q)) (hi (* 2 3))) '(6))
+ (test (let () (defmacro hi (q) `(let ((q 32)) `(,,q))) (hi (* 2 3))) '(6))
+ (test (let () (defmacro hi (q) `(let ((q 32)) `(,q))) (hi (* 2 3))) '(32))
+ (test (let () (defmacro hi (q) `(let () ,@(list q))) (hi (* 2 3))) 6)
+
+ (test (let ()
+ (define-macro (pop sym)
+ (let ((v (gensym "v")))
+ `(let ((,v (car ,sym)))
+ (set! ,sym (cdr ,sym))
+ ,v)))
+ (let ((lst (list 1 2 3)))
+ (let ((val (pop lst)))
+ (and (= val 1)
+ (equal? lst (list 2 3))))))
+ #t)
+
(define-macro* (_mac1_) `(+ 1 2))
(test (_mac1_) 3)
@@ -6702,6 +6829,9196 @@
(test (equal? (vector (hi 1)) '#(2)) #t)
(test (symbol? (vector-ref '#(hi) 0)) #t))
+ ;; **********************************************************************
+ ;;
+ ;; Copyright (C) 2002 Heinrich Taube (taube@uiuc.edu)
+ ;;
+ ;; 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.
+ ;;
+ ;; **********************************************************************
+
+ ;; $Name: $
+ ;; $Revision: 1.6 $
+ ;; $Date: 2005/11/17 13:29:37 $
+
+ ;;
+ ;; Implementation of the CLTL2 loop macro. The following
+ ;; non Rev 5 definitions need to be in effect before the file
+ ;; is loaded:
+ ;;
+ ;; (define-macro (name . args) ...)
+ ;; (error string)
+ ;; (gensym string)
+ ;;
+
+ (defmacro when (test . forms)
+ `(if ,test (begin ,@forms)))
+
+ (define-macro (loop . args)
+ (let ()
+
+ (define-macro (push val sym)
+ `(begin (set! ,sym (cons ,val ,sym)) ,sym))
+
+ (define-macro (pop sym)
+ (let ((v (gensym "v")))
+ `(let ((,v (car ,sym)))
+ (set! ,sym (cdr ,sym))
+ ,v)))
+
+ ;; this next one is a no-op but i need it as a marker for my cltl2
+ ;; translator.
+
+ (define-macro (function sym) sym)
+
+ ;; getters and setters for the loop-clause "struct"
+
+ (define (loop-operator c) (vector-ref c 0))
+ (define (loop-operator-set! c x) (vector-set! c 0 x))
+ (define (loop-bindings c) (vector-ref c 1))
+ (define (loop-bindings-set! c x) (vector-set! c 1 x))
+ (define (loop-collectors c) (vector-ref c 2))
+ (define (loop-collectors-set! c x) (vector-set! c 2 x))
+ (define (loop-initially c) (vector-ref c 3))
+ (define (loop-initially-set! c x) (vector-set! c 3 x))
+ (define (loop-end-tests c) (vector-ref c 4))
+ (define (loop-end-tests-set! c x) (vector-set! c 4 x))
+ (define (loop-looping c) (vector-ref c 5))
+ (define (loop-looping-set! c x) (vector-set! c 5 x))
+ (define (loop-stepping c) (vector-ref c 6))
+ (define (loop-stepping-set! c x) (vector-set! c 6 x))
+ (define (loop-finally c) (vector-ref c 7))
+ (define (loop-finally-set! c x) (vector-set! c 7 x))
+ (define (loop-returning c) (vector-ref c 8))
+ (define (loop-returning-set! c x) (vector-set! c 8 x))
+
+ (define (make-loop-clause . args)
+ (let ((v (vector #f '() '() '() '() '() '() '() '())))
+ (if (null? args) v
+ (do ((a args (cddr a)))
+ ((null? a) v)
+ (case (car a)
+ ((operator) (loop-operator-set! v (cadr a)))
+ ((bindings) (loop-bindings-set! v (cadr a)))
+ ((collectors) (loop-collectors-set! v (cadr a)))
+ ((initially) (loop-initially-set! v (cadr a)))
+ ((end-tests) (loop-end-tests-set! v (cadr a)))
+ ((looping) (loop-looping-set! v (cadr a)))
+ ((stepping) (loop-stepping-set! v (cadr a)))
+ ((finally) (loop-finally-set! v (cadr a)))
+ ((returning) (loop-returning-set! v (cadr a))))))))
+
+ (define (gather-clauses caller clauses)
+ ;; nconc all clausal expressions into one structure
+ (let ((gather-clause
+ (lambda (clauses accessor)
+ ;; append data from clauses
+ (do ((l '()))
+ ((null? clauses) l)
+ (set! l (append l (accessor (car clauses))))
+ (set! clauses (cdr clauses))))))
+ (make-loop-clause 'operator caller
+ 'bindings
+ (gather-clause clauses
+ (function loop-bindings))
+ 'collectors
+ (gather-clause clauses
+ (function loop-collectors))
+ 'initially
+ (gather-clause clauses
+ (function loop-initially))
+ 'end-tests
+ (gather-clause clauses
+ (function loop-end-tests))
+ 'looping
+ (gather-clause clauses
+ (function loop-looping))
+ 'stepping
+ (gather-clause clauses
+ (function loop-stepping))
+ 'finally
+ (gather-clause clauses
+ (function loop-finally))
+ 'returning
+ (gather-clause clauses
+ (function loop-returning)))))
+
+ (define (loop-op? x ops)
+ (assoc x ops))
+
+ (define (loop-variable? x)
+ (symbol? x))
+
+ (define (make-binding var val)
+ (list var val))
+
+ (define (loop-error ops forms . args)
+ ;; all error messages include error context.
+ (let ((loop-context
+ (lambda (lst ops)
+ ;; return tail of expr up to next op in cdr of tail
+ (do ((h lst)
+ (l '()))
+ ((or (null? lst)
+ ;; ignore op if in front.
+ (and (not (eq? h lst))
+ (loop-op? (car lst) ops)))
+ (reverse l))
+ (set! l (cons (car lst) l))
+ (set! lst (cdr lst))))))
+ (let ((forms (loop-context forms ops)))
+ (newline)
+ (display "LOOP ERROR: ")
+ (do ((tail args (cdr tail)))
+ ((null? tail) #f)
+ (display (car tail)))
+ (newline)
+ (display "clause context: ")
+ (if (null? forms)
+ (display "()")
+ (do ((tail forms (cdr tail)))
+ ((null? tail) #f)
+ (if (eq? tail forms) (display "'"))
+ (display (car tail))
+ (display (if (null? (cdr tail)) "'" " "))))
+ (newline)
+ (error "illegal loop syntax"))))
+
+ (define (parse-for forms clauses ops)
+ ;; forms is (FOR ...)
+ (let ((op (loop-op? (car forms) ops)))
+ (if (null? (cdr forms))
+ (loop-error ops forms "Variable expected but source code ran out." )
+ (let ((var (cadr forms)))
+ (if (loop-variable? var)
+ (if (null? (cddr forms))
+ (loop-error ops forms
+ "'for' clause expected but source code ran out.")
+ ;; find the iteration path in the op
+ (let ((path (assoc (caddr forms) (cdddr op))))
+ ;; path is (<pathop> <parser>)
+ (if (not path)
+ (loop-error ops forms "'" (caddr forms) "'"
+ " is not valid with 'for'.")
+ ( (cadr path) forms clauses ops))))
+ (loop-error ops forms "Found '" (cadr forms)
+ "' where a variable expected."))))))
+
+ (define (parse-numerical-for forms clauses ops)
+ ;; forms is (FOR <var> <OP> ...)
+ ;; where <OP> is guaranteed to be one of: FROM TO BELOW ABOVE DOWNTO
+ clauses
+ (let ((var (cadr forms))
+ (tail (cddr forms))
+ (bind '())
+ (from #f)
+ (head #f)
+ (last #f)
+ (stop #f)
+ (step #f)
+ (test #f)
+ (incr #f))
+
+ (do ((next #f))
+ ((or (null? tail) (loop-op? (car tail) ops)))
+ (set! next (pop tail))
+ (if (null? tail)
+ (loop-error ops forms
+ "Expected expression but source code ran out."))
+ (case next
+ ((from downfrom)
+ (if head (loop-error ops forms "Found '" next "' when '"
+ head "' in effect."))
+ (set! head next)
+ (set! from (pop tail)))
+ ((below)
+ (if last (loop-error ops forms "Found '" next "' when '"
+ last "' in effect."))
+ (set! stop (pop tail))
+ (set! last next))
+ ((to)
+ (if last (loop-error ops forms "Found '" next "' when '"
+ last "' in effect."))
+ (set! stop (pop tail) )
+ (set! last next))
+ ((above )
+ (if last (loop-error ops forms "Found '" next "' when '"
+ last "' in effect."))
+ (set! stop (pop tail))
+ (set! last next))
+ ((downto )
+ (if last (loop-error ops forms "Found '" next "' when '"
+ last "' in effect."))
+ (set! stop (pop tail))
+ (set! last next))
+ ((by)
+ (if step (loop-error ops forms "Found duplicate 'by'."))
+ (set! step (pop tail)))
+ (else
+ (loop-error ops forms
+ "'" next "' is not valid with 'for'."))))
+ (if (not head)
+ (set! head 'from))
+ (if (or (eq? head 'downfrom)
+ (eq? last 'downto)
+ (eq? last 'above))
+ (begin
+ (set! incr '-)
+ (if (eq? last 'above)
+ (set! test '<=)
+ (set! test '<))) ; allow to for downto
+ (begin
+ (set! incr '+)
+ (if (eq? last 'below)
+ (set! test '>=)
+ (set! test '>))))
+
+ ;; add binding for initial value
+ (push (make-binding var (or from 0)) bind)
+ ;; add binding for non-constant stepping values.
+ (if (not step)
+ (set! step 1)
+ (if (not (number? step))
+ (let ((var (gensym "v")))
+ (push (make-binding var step) bind)
+ (set! step var))))
+ (set! step `(set! ,var (,incr ,var ,step)))
+ (if stop
+ (let ((end (gensym "v")))
+ (push (make-binding end stop) bind)
+ (set! stop (list test var end))))
+ (values (make-loop-clause 'operator 'for
+ 'bindings (reverse bind)
+ 'stepping (list step)
+ 'end-tests (if (not stop)
+ '() (list stop)))
+ tail)))
+
+ (define (parse-repeat forms clauses ops)
+ ;; forms is (REPEAT <FORM> ...)
+ (if (null? (cdr forms))
+ (loop-error ops forms
+ "'repeat' clause expected but source code ran out." )
+ (call-with-values (lambda ()
+ (parse-numerical-for
+ (list 'for (gensym "v") 'below (cadr forms))
+ clauses ops))
+ (lambda (clause ignore)
+ ignore
+ (values clause (cddr forms))))))
+
+ (define (parse-sequence-iteration forms clauses ops)
+ ;; tail is (FOR <var> <OP> ...)
+ ;; <OP> is guaranteed to be one of: IN ON ACROSS
+ clauses
+ (let ((head forms)
+ (var (cadr forms))
+ (seq (gensym "v"))
+ (tail (cddr forms))
+ (bind '())
+ (data #f)
+ (init '())
+ (loop '())
+ (incr #f)
+ (stop '())
+ (step '())
+ (type #f))
+
+ (do ((next #f))
+ ((or (null? tail) (loop-op? (car tail) ops)))
+ (set! next (pop tail))
+ (when (null? tail)
+ (loop-error ops head
+ "Expression expected but source code ran out." ))
+ (case next
+ ((in on across)
+ (if type (loop-error ops head
+ "Extraneous '" next "' when '"
+ type "' in effect."))
+ (set! type next)
+ (set! data (pop tail)))
+ ((by )
+ (if incr
+ (loop-error ops head "Duplicate 'by'." )
+ (if (eq? type 'across)
+ (loop-error ops head "'by' is invalid with 'across'." )
+ (set! incr (pop tail)))))
+ (else
+ (loop-error ops head "'" next "' is not valid with 'for'."))))
+ ; add bindings for stepping var and source
+ (push (make-binding var #f) bind)
+ (push (make-binding seq data) bind)
+ (if (eq? type 'across)
+ (let ((pos (gensym "v"))
+ (max (gensym "v")))
+ (push (make-binding pos 0) bind)
+ (push (make-binding max #f) bind)
+ (push `(set! ,max (vector-length ,seq)) init)
+ (push `(set! ,pos (+ 1 ,pos)) step)
+ (push `(set! ,var (vector-ref ,seq ,pos)) loop)
+ (push `(>= ,pos ,max) stop))
+ (begin
+ (if incr
+ (if (and (list? incr) (eq? (car incr) 'quote))
+ (push `(set! ,seq (,(cadr incr) ,seq)) step)
+ (push `(set! ,seq (,incr ,seq)) step))
+ (push `(set! ,seq (cdr ,seq)) step))
+ (push (if (eq? type 'in)
+ `(set! ,var (car ,seq))
+ `(set! ,var ,seq))
+ loop)
+ (push `(null? ,seq) stop)))
+
+ (values (make-loop-clause 'operator 'for
+ 'bindings (reverse bind)
+ 'end-tests stop
+ 'initially init
+ 'looping loop
+ 'stepping step)
+ tail)))
+
+ (define (parse-general-iteration forms clauses ops)
+ ;; forms is (FOR <var> = ...)
+ clauses
+ (let ((head forms)
+ (var (cadr forms))
+ (tail (cddr forms))
+ (init #f)
+ (type #f)
+ (loop #f)
+ (step #f))
+ (do ((next #f))
+ ((or (null? tail) (loop-op? (car tail) ops)))
+ (set! next (pop tail))
+ (if (null? tail)
+ (loop-error ops head
+ "Expression expected but source code ran out."))
+ (case next
+ ((= )
+ (if type (loop-error ops head "Duplicate '='."))
+ (set! loop `(set! ,var ,(pop tail)))
+ (set! type next))
+ ((then )
+ (if init (loop-error ops head "Duplicate 'then'."))
+ (set! init loop)
+ (set! loop #f)
+ (set! step `(set! ,var ,(pop tail)))
+ (set! type next))
+ (else
+ (loop-error ops head "'" next "' is not valid with 'for'."))))
+
+ (values (make-loop-clause 'operator 'for
+ 'bindings (list (make-binding var #f))
+ 'initially (if init (list init) '())
+ 'looping (if loop (list loop) '())
+ 'stepping (if step (list step) '()))
+ tail)))
+
+ (define (parse-with forms clauses ops)
+ ;; forms is (WITH <var> = ...)
+ clauses
+ (let ((head forms)
+ (tail (cdr forms))
+ (var #f)
+ (expr #f)
+ (and? #f)
+ (bind '())
+ (init '()))
+ (do ((need #t)
+ (next #f))
+ ((or (null? tail) (loop-op? (car tail) ops)))
+ (set! next (pop tail))
+ (cond ((and (loop-variable? next) need)
+ (if var
+ (loop-error ops head
+ "Found '" next "' where 'and' expected."))
+ (if expr
+ (loop-error ops head
+ "Found '" next "' where 'and' expected."))
+ (set! var next)
+ (set! expr #f)
+ (set! and? #f)
+ (set! need #f))
+ ((eq? next 'and)
+ (if and?
+ (loop-error ops head "Duplicate 'and'.")
+ (if var
+ (if expr
+ (begin
+ (push (make-binding var #f) bind)
+ (push `(set! ,var ,expr) init))
+ (push (make-binding var #f) bind))
+ (loop-error ops head "Extraneous 'and'.")))
+ (set! var #f)
+ (set! expr #f)
+ (set! and? #t)
+ (set! need #t))
+ ((eq? next '=)
+ (if expr
+ (loop-error ops head
+ "Found '=' where 'and' expected.")
+ (set! expr (pop tail))))
+ (else
+ (if need
+ (loop-error ops head
+ "Found '" next "' where variable expected.")
+ (loop-error ops head "Found '" next
+ "' where '=' or 'and' expected.")))))
+ (if and?
+ (loop-error ops head "Extraneous 'and'.")
+ (if var
+ (if expr
+ (begin (push (make-binding var #f) bind)
+ (push `(set! ,var ,expr) init))
+ (push (make-binding var #f) bind))))
+
+ (values (make-loop-clause 'operator 'with
+ 'bindings (reverse bind)
+ 'initially (reverse init))
+ tail)))
+
+ (define (parse-do forms clauses ops)
+ clauses
+ (let ((head forms)
+ (oper (pop forms))
+ (body '()))
+ (do ()
+ ((or (null? forms)
+ (loop-op? (car forms) ops))
+ (if (null? body)
+ (loop-error ops head "Missing '" oper "' expression.")
+ (set! body (reverse body))))
+ (push (car forms) body)
+ (set! forms (cdr forms)))
+ (values
+ (make-loop-clause 'operator oper 'looping body)
+ forms)))
+
+ (define (parse-finally forms clauses ops)
+ clauses
+ (let ((oper (pop forms))
+ (expr #f))
+ (if (null? forms)
+ (loop-error ops forms "Missing '" oper "' expression."))
+ (set! expr (pop forms))
+ (values (make-loop-clause 'operator oper 'finally (list expr))
+ forms)))
+
+ (define (parse-initially forms clauses ops)
+ clauses
+ (let ((oper (pop forms))
+ (expr #f))
+ (if (null? forms)
+ (loop-error ops forms "Missing '" oper "' expression."))
+ (set! expr (pop forms))
+ (values (make-loop-clause 'operator oper 'initially (list expr))
+ forms)))
+
+ (define (lookup-collector var clauses)
+ ;; collector is list: (<var> <type> <acc> <head>)
+ ;; returns the clause where the collect variable VAR is
+ ;; actually bound or nil if var hasn't already been bound
+ ;; if var is nil only the single system allocated collecter
+ ;; is possibly returned.
+ (let ((checkthem (lambda (var lis)
+ (do ((a #f))
+ ((or (null? lis) a) a)
+ (if (eq? var (car (car lis))) ;collector-var
+ (set! a (car lis)))
+ (set! lis (cdr lis))))))
+ (do ((c #f))
+ ((or (null? clauses) c) c)
+ (set! c (checkthem var (loop-collectors (car clauses))))
+ (set! clauses (cdr clauses)))))
+
+ (define (compatible-accumulation? typ1 typ2)
+ (let ((l1 '(collect append nconc))
+ (l2 '(never always))
+ (l3 '(minimize maximize)))
+ (or (eq? typ1 typ2)
+ (and (member typ1 l1) (member typ2 l1))
+ (and (member typ1 l2) (member typ2 l2))
+ (and (member typ1 l3) (member typ2 l3)))))
+
+ (define (parse-accumulation forms clauses ops)
+ ;; forms is (<op> form ...)
+ ;; where <op> is collect append nconc
+ (let ((save forms)
+ (oper (pop forms))
+ (make-collector (lambda (var type acc head)
+ (list var type acc head)))
+ ;; removed because noop
+ ;;(collector-var (lambda (col) (car col)))
+ (collector-type (lambda (col) (cadr col)))
+ (collector-acc (lambda (col) (caddr col)))
+ (collector-head (lambda (col) (cadddr col)))
+ (expr #f)
+ (coll #f)
+ (new? #f)
+ (into #f)
+ (loop '())
+ (bind '())
+ (init '())
+ (tests '())
+ (return '()))
+
+ (if (null? forms)
+ (loop-error ops forms "Missing '" oper "' expression."))
+ (set! expr (pop forms))
+ (if (not (null? forms))
+ (if (eq? (car forms) 'into)
+ (begin
+ (if (null? (cdr forms))
+ (loop-error ops save "Missing 'into' variable."))
+ (if (loop-variable? (cadr forms))
+ (begin (set! into (cadr forms))
+ (set! forms (cddr forms)))
+ (loop-error ops save "Found '" (car forms)
+ "' where 'into' variable expected.")))))
+
+ ;; search for a clause that already binds either the user specified
+ ;; accumulator (into) or a system allocated one if no into.
+ ;; system collectors
+ ;; o only one allowed, all accumuations must be compatible
+ ;; o returns value
+ ;; value collector: (nil <op> <#:acc>)
+ ;; list collector: (nil <op> <#:tail> <#:head>)
+ ;; into collectors
+ ;; o any number allowed
+ ;; o returns nothing.
+ ;; value collector: (<into> <op> <into> )
+ ;; list collector: (<into> <op> <#:tail> <#:head>)
+ (set! coll (lookup-collector into clauses))
+ (if (not coll)
+ (set! new? #t)
+ ;; accumulator already established by earlier clause
+ ;; check to make sure clauses are compatible.
+ (if (not (compatible-accumulation? oper (collector-type coll)))
+ (loop-error ops save "'" (collector-type coll)
+ "' and '" oper "' are incompatible accumulators.")))
+ (case oper
+ ((sum count)
+ (let ((acc #f))
+ (if new?
+ (begin
+ (set! acc (or into (gensym "v")))
+ (push (make-binding acc 0) bind)
+ ;; coll= (nil <op> <#:acc>) or (<into> <op> <into>)
+ (set! coll (make-collector into oper acc #f))
+ ;; only add a return value if new collector isnt into
+ (if (not into) (push acc return)))
+ (set! acc (collector-acc coll)))
+ (if (eq? oper 'sum)
+ (push `(set! ,acc (+ ,acc ,expr)) loop)
+ (push `(if ,expr (set! ,acc (+ ,acc 1))) loop))))
+ ((minimize maximize)
+ (let ((var (gensym "v"))
+ (opr (if (eq? oper 'minimize) '< '>))
+ (acc #f))
+ (if new?
+ (begin
+ (set! acc (or into (gensym "v")))
+ (push (make-binding acc #f) bind)
+ ;; coll= (nil <op> <#:acc>) or (<into> <op> <into>)
+ (set! coll (make-collector into oper acc #f))
+ ;; only add a return value if new collector isnt into
+ (if (not into) (push `(or ,acc 0) return)))
+ (set! acc (collector-acc coll)))
+ (push (make-binding var #f) bind)
+ (push `(begin (set! ,var ,expr)
+ (if (or (not ,acc)
+ (,opr ,var ,acc))
+ (set! ,acc ,var)))
+ loop)))
+ ((append collect nconc)
+ ;; for list accumulation a pointer to the tail of the list
+ ;; is updated and the head of the list is returned. any
+ ;; into variable is set to the head inside the loop.
+ (let ((head #f)
+ (tail #f))
+ (if (not new?)
+ (begin (set! tail (collector-acc coll))
+ (set! head (collector-head coll)))
+ (begin
+ (if into (push (make-binding into '(list)) bind))
+ (set! tail (gensym "v"))
+ ;; allocate a pointer to the head of list
+ (set! head (gensym "v"))
+ (push (make-binding head '(list #f)) bind)
+ (push (make-binding tail #f) bind)
+ ;; initialize tail to head
+ (push `(set! ,tail ,head) init)
+ (set! coll (make-collector into oper tail head))
+ ;; only add a return value if new collector isnt into
+ (if (not into)
+ (push `(cdr ,head) return))))
+ ;; add loop accumulation forms
+ (if (eq? oper 'append)
+ (begin
+ (push `(set-cdr! ,tail (append ,expr (list))) loop)
+ (push `(set! ,tail (last-pair ,tail)) loop))
+ (if (eq? oper 'collect)
+ (begin
+ (push `(set-cdr! ,tail (list ,expr)) loop)
+ (push `(set! ,tail (cdr ,tail)) loop))
+ (begin
+ (push `(set-cdr! ,tail ,expr) loop)
+ (push `(set! ,tail (last-pair ,tail)) loop))))
+ ;; update user into variable inside the main loop
+ ;; regardless of whether its a new collector or not
+ (if into
+ (push `(set! ,into (cdr ,head)) loop)))))
+
+ (values (make-loop-clause 'operator oper
+ 'bindings (reverse bind)
+ 'initially (reverse init)
+ 'looping (reverse loop)
+ 'returning (reverse return)
+ 'collectors (if new? (list coll) '())
+ 'end-tests (reverse tests))
+ forms)))
+
+ ;(define (loop-stop expr)
+ ; `(%done% ,expr))
+
+ (define (loop-return expr)
+ `(return ,expr))
+
+ (define (parse-while-until forms clauses ops)
+ clauses
+ (let ((head forms)
+ (oper (pop forms))
+ (test #f)
+ (stop '(go #t))) ; :done
+ (if (null? forms)
+ (loop-error ops head "Missing '" oper "' expression."))
+
+ (case oper
+ ((until ) (set! test (pop forms)))
+ ((while ) (set! test `(not ,(pop forms)))))
+ ;; calls the DONE continuation.
+ (values (make-loop-clause 'operator oper
+ 'looping (list `(if ,test ,stop)))
+ forms)))
+
+ (define (parse-thereis forms clauses ops)
+ clauses
+ (let ((oper (car forms))
+ (expr #f)
+ (bool #f)
+ (func #f))
+ (if (null? (cdr forms))
+ (loop-error ops forms "Missing '" (car forms) "' expression." ))
+ (set! expr (cadr forms))
+ ;; fourth element of operator definition must be
+ ;; a function that returns the stop expression.
+ (set! func (cadddr (loop-op? oper ops) ))
+
+ (case oper
+ ((thereis )
+ ;; return true as soon as expr is true or false at end
+ (set! bool #f))
+ ((always )
+ ;; return false as soon as expr is false, or true at end
+ (set! expr `(not ,expr))
+ (set! bool #t))
+ ((never )
+ ;; return false as soon as expr is true, or true at end
+ (set! bool #t)))
+ (set! forms (cddr forms))
+ ;; this calls the RETURN continuation
+ (values (make-loop-clause 'operator 'thereis
+ 'looping
+ (list `(if ,expr ,(func (not bool))))
+ 'returning
+ (list bool))
+ forms)))
+
+ (define (parse-return forms clauses ops)
+ clauses
+ (let ((oper (car forms))
+ (expr #f)
+ (func #f))
+ (if (null? (cdr forms))
+ (loop-error ops forms "Missing '" (car forms) "' expression."))
+ (set! expr (cadr forms))
+ (set! forms (cddr forms))
+ ;; fourth element of operator definition must be
+ ;; a function that returns the stop expression.
+ (set! func (cadddr (loop-op? oper ops) ))
+ ;; this calls the RETURN continuation
+ (values (make-loop-clause 'operator 'return
+ 'looping `(,(func expr)))
+ forms)))
+
+ (define (legal-in-conditional? x ops)
+ ;; FIXED (member (loop-operator...))
+ (let ((op (loop-op? x ops)))
+ (if (and op
+ (not (null? (cddr op)))
+ (eq? (caddr op) 'task)
+ (not (member (car op) '(thereis never always))))
+ op #f)))
+
+ (define (parse-then-else-dependents forms clauses ops)
+ (let ((previous forms)
+ (stop? #f)
+ (parsed '()))
+
+ (do ((op #f)
+ (clause #f)
+ (remains #f))
+ ((or (null? forms) stop?))
+ (set! op (legal-in-conditional? (car forms) ops))
+ (if (not op)
+ (loop-error ops previous "'" (car forms)
+ "' is not conditional operator."))
+ ;(multiple-value-setq
+ ; (clause remains)
+ ; ( (cadr op) forms (append clauses parsed) ops))
+ (call-with-values
+ (lambda () ( (cadr op) forms (append clauses parsed) ops))
+ (lambda (a b) (set! clause a) (set! remains b)))
+
+ ;(format #t "~%after call clause=~s forms=~S" clause forms)
+
+ (set! parsed (append parsed (list clause)))
+ (set! previous forms)
+ (set! forms remains)
+
+ (if (not (null? forms))
+ (if (eq? (car forms) 'and)
+ (begin
+ (set! forms (cdr forms))
+ (if (null? forms)
+ (loop-error ops previous "Missing 'and' clause.")))
+ (if (eq? (car forms) 'else)
+ (set! stop? #t)
+ (if (loop-op? (car forms) ops)
+ (set! stop? #t))))))
+ (values parsed forms)))
+
+ (define (parse-conditional forms clauses ops)
+ (let ((ops (cons '(else ) ops))
+ (save forms)
+ (oper (car forms))
+ (loop (list)) ; avoid '() because of acl bug
+ (expr (list))
+ (then (list))
+ (else (list)))
+ (if (null? (cdr forms))
+ (loop-error ops save "Missing '" oper "' expression."))
+ (set! forms (cdr forms))
+ (set! expr (pop forms))
+ (if (null? forms)
+ (loop-error ops forms "Missing conditional clause."))
+ (if (eq? oper 'unless)
+ (set! expr (list 'not expr)))
+ (call-with-values
+ (lambda () (parse-then-else-dependents forms clauses ops))
+ (lambda (a b)
+ (set! then a)
+ (set! forms b)))
+
+ ;; combine dependant clauses if more than one
+ (if (not (null? (cdr then)))
+ (set! then (gather-clauses (list) then))
+ (set! then (car then)))
+ (loop-operator-set! then 'if)
+
+ ;; this (if ...) is hacked so that it is a newly
+ ;; allocated list. otherwise acl and clisp have a
+ ;; nasty structure sharing problem.
+ (set! loop (list 'if expr
+ (append `(begin ,@(loop-looping then)) (list))
+ #f))
+ (if (and (not (null? forms))
+ (eq? (car forms) 'else))
+ (begin
+ (set! forms (cdr forms))
+ (when (null? forms)
+ (loop-error ops save "Missing 'else' clause."))
+ (call-with-values
+ (lambda ()
+ (parse-then-else-dependents
+ forms (append clauses (list then))
+ ops))
+ (lambda (a b) (set! else a) (set! forms b)))
+ (if (not (null? (cdr else)))
+ (set! else (gather-clauses '() else))
+ (set! else (car else)))
+ (set-car! (cdddr loop) `(begin ,@(loop-looping else)))
+ ;; flush loop forms so we dont gather actions.
+ (loop-looping-set! then '())
+ (loop-looping-set! else '())
+ (set! then (gather-clauses 'if (list then else)))))
+ (loop-looping-set! then (list loop))
+ (values then forms)))
+
+ (define (parse-clauses forms cond? ops)
+ (if (or (null? forms)
+ (not (symbol? (car forms))))
+ (list (make-loop-clause 'operator 'do 'looping forms))
+ (let ((op-type? (lambda (op type)
+ (and (not (null? (cddr op)))
+ (eq? (caddr op) type)))))
+ (let ((previous forms)
+ (clauses '()))
+ (do ((op #f)
+ (clause #f)
+ (remains '())
+ (body '()) )
+ ((null? forms))
+ (if (and cond? (eq? (car forms) 'and))
+ (pop forms))
+ (set! op (loop-op? (car forms) ops))
+ (if (not op)
+ (loop-error ops previous "Found '" (car forms)
+ "' where operator expected."))
+ ;(multiple-value-setq (clause remains)
+ ; ((cadr op) forms clauses ops))
+ (call-with-values
+ (lambda () ( (cadr op) forms clauses ops))
+ (lambda (a b)
+ (set! clause a)
+ (set! remains b)))
+ (if (op-type? op 'task)
+ (set! body op)
+ (if (op-type? op 'iter)
+ (if (not (null? body))
+ (loop-error ops previous "'" (car op)
+ "' clause cannot follow '"
+ (car body) "'."))))
+ (set! previous forms)
+ (set! forms remains)
+ (set! clauses (append clauses (list clause))))
+ clauses))))
+
+ (define (parse-iteration caller forms ops)
+ (gather-clauses caller (parse-clauses forms '() ops)))
+
+ ;;
+ ;; loop implementation
+ ;;
+
+ (define *loop-operators*
+ ;; each clause is (<op> <parser> <tag> . <whatever>)
+ (list (list 'with (function parse-with) #f)
+ (list 'initially (function parse-initially) #f)
+ (list 'repeat (function parse-repeat) 'iter)
+ (list 'for (function parse-for) 'iter
+ (list 'from (function parse-numerical-for))
+ (list 'downfrom (function parse-numerical-for))
+ (list 'below (function parse-numerical-for))
+ (list 'to (function parse-numerical-for))
+ (list 'above (function parse-numerical-for))
+ (list 'downto (function parse-numerical-for))
+ (list 'in (function parse-sequence-iteration))
+ (list 'on (function parse-sequence-iteration))
+ (list 'across (function parse-sequence-iteration))
+ (list '= (function parse-general-iteration)))
+ (list 'as (function parse-for) 'iter)
+ (list 'do (function parse-do) 'task)
+ (list 'collect (function parse-accumulation) 'task)
+ (list 'append (function parse-accumulation) 'task)
+ (list 'nconc (function parse-accumulation) 'task)
+ (list 'sum (function parse-accumulation) 'task)
+ (list 'count (function parse-accumulation) 'task)
+ (list 'minimize (function parse-accumulation) 'task)
+ (list 'maximize (function parse-accumulation) 'task)
+ (list 'thereis (function parse-thereis) 'task
+ (function loop-return))
+ (list 'always (function parse-thereis) 'task
+ (function loop-return))
+ (list 'never (function parse-thereis) 'task
+ (function loop-return))
+ (list 'return (function parse-return) 'task
+ (function loop-return))
+ (list 'while (function parse-while-until) #f )
+ (list 'until (function parse-while-until) #f )
+ (list 'when (function parse-conditional) 'task)
+ (list 'unless (function parse-conditional) 'task)
+ (list 'if (function parse-conditional) 'task)
+ (list 'finally (function parse-finally) #f)))
+
+ ;;
+ ;; loop expansions for scheme and cltl2
+ ;;
+
+ (define (scheme-loop forms)
+ (let ((name (gensym "v"))
+ (parsed (parse-iteration 'loop forms *loop-operators*))
+ (end-test '())
+ (done '(go #t)) ; :done
+ (return #f))
+ ;(write (list :parsed-> parsed))
+ ;; cltl2's loop needs a way to stop iteration from with the run
+ ;; block (the done form) and/or immediately return a value
+ ;; (the return form). scheme doesnt have a block return or a
+ ;; go/tagbody mechanism these conditions are implemented using
+ ;; continuations. The forms that done and return expand to are
+ ;; not hardwired into the code because this utility is also used
+ ;; by CM's 'process' macro. Instead, the done and return forms
+ ;; are returned by functions assocated with the relevant operator
+ ;; data. For example, the function that returns the return form
+ ;; is stored as the fourth element in the return operator data.
+ ;; and the done function is stored in the while and until op data.
+
+ ;; the cadddr of the RETURN operator is a function that
+ ;; provides the form for immediately returning a value
+ ;; from the iteration.
+
+ (let ((returnfn (cadddr (assoc 'return *loop-operators*))))
+ (set! return (returnfn
+ (if (null? (loop-returning parsed))
+ #f
+ (car (loop-returning parsed))))))
+
+ ;; combine any end-tests into a single IF expression
+ ;; that calls the (done) continuation if true. multiple
+ ;; tests are OR'ed togther
+
+ (set! end-test
+ (let ((ends (loop-end-tests parsed)))
+ (if (null? ends)
+ '()
+ (list
+ `(if ,(if (null? (cdr ends))
+ (car ends)
+ (cons 'or ends))
+ ;; calls the done continuation
+ ,done
+ #f)))))
+ `(let (,@ (loop-bindings parsed))
+ ,@(loop-initially parsed)
+ (call-with-exit
+ (lambda (return) ; <- (return) returns from this lambda
+ (call-with-exit
+ (lambda (go) ; <- (go #t) returns from this lambda
+ ;; a named let provides the actual looping mechanism.
+ ;; the various tests and actions may exit via the
+ ;; (done) or (return) continuations.
+ (let ,name ()
+ ,@end-test
+ ,@(loop-looping parsed)
+ ,@(loop-stepping parsed)
+ (,name))))
+ ;; this is the lexical point for (go #t) continuation.
+ ,@(loop-finally parsed)
+ ;; invoke the RETURN continuation with loop value or #f
+ ,return)))))
+
+
+ (scheme-loop args)))
+
+ ;;
+ ;; loop tests.
+ ;;
+
+ (test (loop for i below 10 collect i) '(0 1 2 3 4 5 6 7 8 9))
+ (test (loop for i to 10 sum i) 55)
+ (test (loop for i downto -10 count (even? i)) 6)
+ (test (loop for x in '(0 1 2 3 4 5 6 7 8 9) thereis (= x 4)) #t)
+ (test (loop for x in '(0 1 2 3 4 5 6 7 8 9) by 'cddr collect x) '(0 2 4 6 8))
+ (test (loop for x on '(0 1 2 3) by 'cddr collect x) '((0 1 2 3) (2 3)))
+ (test (loop for x in '(0 1 2 3 4 5 6 7 8 9) thereis (= x 4)) #t)
+ (test (loop for x in '(0 1 2 3 4 5 6 7 8 9) never (= x 4)) #f)
+ (test (loop for x in '(0 1 2 3 4 5 6 7 8 9) never (= x 40)) #t)
+ (test (loop for x in '(0 2 3 4 5 6 7 8 9) always (< x 40)) #t)
+ (test (loop repeat 10 with x = 0 collect x do (set! x (+ x 1))) '(0 1 2 3 4 5 6 7 8 9))
+ (test (loop repeat 10 for x = #t then (not x) collect x) '(#t #f #t #f #t #f #t #f #t #f))
+ (test (loop repeat 10 count #t) 10)
+ (test (loop repeat 10 count #f) 0)
+ (test (loop for i to 10 collect i collect (* 2 i)) '(0 0 1 2 2 4 3 6 4 8 5 10 6 12 7 14 8 16 9 18 10 20))
+ (test (loop for i from -10 to 10 by 2 nconc (list i (- i))) '(-10 10 -8 8 -6 6 -4 4 -2 2 0 0 2 -2 4 -4 6 -6 8 -8 10 -10))
+ (test (loop for i from -10 downto 10 by -1 collect i) '())
+ (test (loop for i downfrom 10 downto -10 by 2 collect i) '(10 8 6 4 2 0 -2 -4 -6 -8 -10))
+ (test (loop for i from 10 to -10 by 1 collect i) '())
+ (test (loop for i to 10 for j downfrom 10 collect i collect j) '(0 10 1 9 2 8 3 7 4 6 5 5 6 4 7 3 8 2 9 1 10 0))
+ (test (loop for i below 0 collect i into foo finally (return foo)) '())
+ (test (loop for i below 0 sum i into foo finally (return foo)) 0)
+ (test (loop for i below 0 maximize i into foo finally (return foo)) #f)
+ (test (loop with a and b = 'x and c = 2 repeat 10 for x = 1 then 'fred collect (list x a b c))
+ '((1 #f x 2) (fred #f x 2) (fred #f x 2) (fred #f x 2) (fred #f x 2) (fred #f x 2) (fred #f x 2) (fred #f x 2) (fred #f x 2) (fred #f x 2)))
+ (test (loop for i across #(0 1 2 3) append (list i (expt 2 i))) '(0 1 1 2 2 4 3 8))
+ (test (loop with a = 0 and b = -1 while (< a 10) sum a into foo do (set! a (+ a 1)) finally (return (list foo b))) '(45 -1))
+ (test (loop for i from 0 until (> i 9) collect i) '(0 1 2 3 4 5 6 7 8 9))
+ (test (loop for i from 0 while (< i 9) when (even? i) collect i) '(0 2 4 6 8))
+ (test (loop with l = (list 0) for s in spec for k = s then (+ k s) do (push k l) finally (return l)) 'error)
+ (test (loop with l = (list (encode-interval 'p 1)) for s in spec for k = (interval s) then (transpose k (interval s)) do (push k l) finally (return l)) 'error)
+ ;; end loop
+
+ ;; more macros from Rick's stuff
+
+ (defmacro dolist (spec . body)
+ ;; spec = (var list . return)
+ (let ((v (gensym)))
+ `(do ((,v ,(cadr spec) (cdr ,v))
+ (,(car spec) #f))
+ ((null? ,v) ,@ (cddr spec))
+ (set! ,(car spec) (car ,v))
+ ,@body)))
+
+ (test (let ((sum 0)) (dolist (v (list 1 2 3) sum) (set! sum (+ sum v)))) 6)
+
+ (defmacro dotimes (spec . body)
+ ;; spec = (var end . return)
+ (let ((e (gensym))
+ (n (car spec)))
+ `(do ((,e ,(cadr spec))
+ (,n 0))
+ ((>= ,n ,e) ,@ (cddr spec))
+ ,@body
+ (set! ,n (+ ,n 1)))))
+
+ (test (let ((sum 0)) (dotimes (i 3 sum) (set! sum (+ sum i)))) 3)
+
+ (defmacro do* (spec end . body)
+ `(let* (,@(map (lambda (var) (list (car var) (cadr var))) spec))
+ (do () ,end
+ ,@body
+ ,@(map (lambda (var) (list 'set! (car var) (caddr var))) spec))))
+
+ (test (let ((sum 0)) (do* ((i 0 (+ i 1)) (j i (+ i 1))) ((= i 3) sum) (set! sum (+ sum j)))) 5)
+
+ (let ()
+
+ ;; some common lispisms
+ ;; where names are the same, but functions are different (abs for example),
+ ;; I'll prepend "cl-" to the CL version; otherwise we end up redefining
+ ;; map and member, for example, which can only cause confusion.
+ ;;
+ ;; also I'm omitting the test-if-not and test-not args which strike me as ridiculous.
+ ;; If CLtL2 says something is deprecated, it's not included.
+ ;; Series and generators are ignored.
+ ;;
+ ;; ... later ... I've run out of gas.
+
+ ;(define-macro (progn . body) `(let () ,@body))
+ (define progn begin)
+ (define-macro (prog1 first . body) (let ((result (gensym))) `(let ((,result ,first)) ,@body ,result)))
+ (define-macro (prog2 first second . body) `(prog1 (progn ,first ,second) ,@body))
+
+ (defmacro the (type form) form)
+ (define-macro (defvar var . args) `(define ,var (or ,(and (not (null? args)) (car args)) #f)))
+
+ (defmacro incf (sym . val) `(let () (set! ,sym (+ ,sym ,(if (null? val) 1 (car val)))) ,sym))
+ (defmacro decf (sym . val) `(let () (set! ,sym (- ,sym ,(if (null? val) 1 (car val)))) ,sym))
+
+ (defmacro push (val sym)
+ `(let ()
+ (setf ,sym (cons ,val ,sym))
+ ,sym))
+
+ (defmacro pop (sym)
+ (let ((v (gensym)))
+ `(let ((,v (car ,sym)))
+ (setf ,sym (cdr ,sym))
+ ,v)))
+
+ (defmacro* pushnew (val sym (test equal?) (key identity))
+ (let ((g (gensym))
+ (k (if (procedure? key) key identity))) ; can be explicit nil!
+ `(let ((,g ,val))
+ (if (null? (cl-member (,k ,g) ,sym ,test ,k))
+ (push ,g ,sym))
+ ,sym)))
+
+ (defmacro unless (test . forms) `(if (not ,test) (begin ,@forms)))
+ (define-macro (declare . args) #f)
+ (defmacro set (a b) `(set! ,(symbol->value a) ,b))
+
+ (define-macro (setf . pairs)
+ (if (not (even? (length pairs)))
+ (error "setf has odd number of args"))
+ `(let () ,@(let ((var #f))
+ (map (lambda (p)
+ (if var
+ (let ((val (if (pair? var)
+ (if (member (car var) '(aref svref elt char schar))
+ (list 'set! (cdr var) p)
+ (if (eq? (car var) 'car)
+ (list 'set-car! (cadr var) p)
+ (if (eq? (car var) 'cdr)
+ (list 'set-cdr! (cadr var) p)
+ (if (eq? (car var) 'nth)
+ (list 'set! (list (caddr var) (cadr var)) p)
+ (list 'set! var p)
+ ))))
+ (list 'set! var p))))
+ (set! var #f)
+ val)
+ (begin
+ (set! var p)
+ '())))
+ pairs))))
+
+ (define-macro (setq . pairs)
+ (if (not (even? (length pairs)))
+ (error "setq has odd number of args"))
+ `(let () ,@(let ((var #f))
+ (map (lambda (p)
+ (if var
+ (let ((val (list 'set! var p)))
+ (set! var #f)
+ val)
+ (begin
+ (set! var p)
+ '())))
+ pairs))))
+
+ (define-macro (psetq . pairs)
+ (let ((vals '())
+ (vars '()))
+ (do ((var-val pairs (cddr var-val)))
+ ((null? var-val))
+ (let ((interval (gensym)))
+ (set! vals (cons (list interval (cadr var-val)) vals))
+ (set! vars (cons (list 'set! (car var-val) interval) vars))))
+ `(let ,(reverse vals)
+ ,@vars)))
+
+ (define (mapcar func . lists)
+ ;; not scheme's map because lists can be different lengths
+ ;; and args can be any sequence type (all mixed together)
+ (define (mapcar-seqs func seqs)
+ (if (null? seqs)
+ '()
+ (cons (func (car seqs))
+ (mapcar-seqs func (cdr seqs)))))
+
+ (define (mapcar-1 index lens func seqs)
+ (if (member index lens)
+ '()
+ (cons (apply func (mapcar-seqs (lambda (obj) (obj index)) seqs))
+ (mapcar-1 (+ index 1) lens func seqs))))
+
+ (let ((lens (map length lists)))
+ (mapcar-1 0 lens func lists)))
+#|
+ (define (mapcar func . lists)
+ ;; not scheme's map because lists can be different lengths
+ (if (member '() lists)
+ '()
+ (cons (apply func (map car lists))
+ (apply mapcar func (map cdr lists)))))
+|#
+
+ (define (maplist function . lists)
+ (if (member '() lists)
+ '()
+ (cons (apply function lists)
+ (apply maplist function (map cdr lists)))))
+
+ (define (mapc function . lists)
+ (define (mapc-1 function . lists)
+ (if (not (member '() lists))
+ (begin
+ (apply function (map car lists))
+ (apply mapc-1 function (map cdr lists)))))
+ (apply mapc-1 function lists)
+ (car lists))
+
+ (define (mapl function . lists)
+ (define (mapl-1 function . lists)
+ (if (not (member '() lists))
+ (begin
+ (apply function lists)
+ (apply mapl-1 function (map cdr lists)))))
+ (apply mapl-1 function lists)
+ (car lists))
+
+ (define (mapcon function . lists)
+ (apply nconc (apply maplist function lists)))
+
+ (define (mapcan function . lists)
+ (apply nconc (apply mapcar function lists)))
+
+ (define* (map-into result-sequence function . sequences)
+ (if (or (null? result-sequence)
+ (null? sequences))
+ result-sequence
+ (let* ((vals (apply mapcar function sequences))
+ (len (min (length vals) (length result-sequence))))
+ (do ((i 0 (+ i 1)))
+ ((= i len))
+ (set! (result-sequence i) (vals i)))
+ result-sequence)))
+
+
+ (define input-stream-p input-port?)
+ (define output-stream-p output-port?)
+
+
+ ;; -------- lists
+
+ ;; in CL (cdr '()) is nil
+
+ (define (first l) (if (not (null? l)) (list-ref l 0) '()))
+ (define (second l) (if (> (length l) 1) (list-ref l 1) '()))
+ (define (third l) (if (> (length l) 2) (list-ref l 2) '()))
+ (define (fourth l) (if (> (length l) 3) (list-ref l 3) '()))
+ (define (fifth l) (if (> (length l) 4) (list-ref l 4) '()))
+ (define (sixth l) (if (> (length l) 5) (list-ref l 5) '()))
+ (define (seventh l) (if (> (length l) 6) (list-ref l 6) '()))
+ (define (eighth l) (if (> (length l) 7) (list-ref l 7) '()))
+ (define (ninth l) (if (> (length l) 8) (list-ref l 8) '()))
+ (define (tenth l) (if (> (length l) 9) (list-ref l 9) '()))
+ (define (nth n l) (if (< n (length l)) (list-ref l n) '()))
+ (define (endp val) (if (null? val) #t (if (pair? val) #f (error "bad arg to endp"))))
+ (define rest cdr)
+ (define list-length length)
+ (define* (cl-make-list size (initial-element '())) (make-list size initial-element))
+
+ (define (copy-list lis) ; need to handle dotted lists too
+ (if (null? list)
+ '()
+ (if (not (pair? lis))
+ lis
+ (cons (car lis) (copy-list (cdr lis))))))
+
+ (define (rplaca x y) (set-car! x y) x)
+ (define (rplacd x y) (set-cdr! x y) x)
+
+ (define (copy-tree lis)
+ (if (pair? lis)
+ (cons (copy-tree (car lis))
+ (copy-tree (cdr lis)))
+ lis))
+
+ (define* (butlast lis (n 1))
+ (let ((len (length lis)))
+ (if (<= len n)
+ '()
+ (let ((result '()))
+ (do ((i 0 (+ i 1))
+ (lst lis (cdr lst)))
+ ((= i (- len n)) (reverse result))
+ (set! result (cons (car lst) result)))))))
+
+ (define* (last lst (n 1))
+ (let ((len (length lst)))
+ (do ((i 0 (+ i 1))
+ (l lst (cdr l)))
+ ((or (null? l)
+ (>= i (- len n)))
+ l))))
+
+ (define (nthcdr n lst)
+ (do ((i n (- i 1))
+ (result lst (cdr result)))
+ ((or (null? result) (zero? i)) result)))
+
+ (define* (tree-equal a b (test eql))
+ (define (teq a b)
+ (if (not (pair? a))
+ (and (not (pair? b))
+ (test a b))
+ (and (pair? b)
+ (teq (car a) (car b))
+ (teq (cdr a) (cdr b)))))
+ (teq a b))
+
+ (define (acons key datum alist) (cons (cons key datum) alist))
+
+ (define* (subst-if new test tree (key identity))
+ (if (test (key tree))
+ new
+ (if (not (pair? tree))
+ tree
+ (cons (subst-if new test (car tree) key)
+ (subst-if new test (cdr tree) key)))))
+
+ (define* (subst-if-not new test tree (key identity))
+ (subst-if new (lambda (obj) (not (test obj))) tree key))
+
+ (define* (subst new old tree (test eql) (key identity))
+ (subst-if new (lambda (obj) (test old obj)) tree key))
+
+ (define (list* obj1 . objs)
+ (define (list-1 obj)
+ (if (null? (cdr obj))
+ (car obj)
+ (cons (car obj) (list-1 (cdr obj)))))
+ (if (null? objs)
+ obj1
+ (cons obj1 (list-1 objs))))
+
+ (define* (assoc-if predicate alist (key car))
+ (if (null? alist)
+ '()
+ (if (and (not (null? (car alist)))
+ (predicate (key (car alist))))
+ (car alist)
+ (assoc-if predicate (cdr alist) key))))
+
+ (define* (assoc-if-not predicate alist (key car))
+ (assoc-if (lambda (obj) (not (predicate obj))) alist key))
+
+ (define* (cl-assoc item alist (test eql) (key car))
+ (assoc-if (lambda (obj) (test item obj)) alist key))
+
+ (define* (rassoc-if predicate alist (key cdr))
+ (if (null? alist)
+ '()
+ (if (and (not (null? (car alist)))
+ (predicate (key (car alist))))
+ (car alist)
+ (rassoc-if predicate (cdr alist) key))))
+
+ (define* (rassoc-if-not predicate alist (key cdr))
+ (rassoc-if (lambda (obj) (not (predicate obj))) alist key))
+
+ (define* (rassoc item alist (test eql) (key cdr))
+ (rassoc-if (lambda (obj) (test item obj)) alist key))
+
+ (define (copy-alist alist)
+ (if (null? alist)
+ '()
+ (cons (if (pair? (car alist))
+ (cons (caar alist) (cdar alist))
+ (car alist))
+ (copy-alist (cdr alist)))))
+
+ (define (revappend x y) (append (reverse x) y))
+
+
+ (define* (pairlis keys data alist)
+ (if (not (= (length keys) (length data)))
+ (error "pairlis keys and data lists should have the same length"))
+ (let ((lst (or alist '())))
+ (if (null? keys)
+ lst
+ (do ((key keys (cdr key))
+ (datum data (cdr datum)))
+ ((null? key) lst)
+ (set! lst (cons (cons (car key) (car datum)) lst))))))
+
+ (define* (sublis alist tree (test eql) (key car))
+ (let ((val (cl-assoc tree alist test key)))
+ (if (not (null? val))
+ (cdr val)
+ (if (not (pair? tree))
+ tree
+ (cons (sublis alist (car tree) test key)
+ (sublis alist (cdr tree) test key))))))
+
+ (define* (nsublis alist tree (test eql) (key car)) ; sacla
+ (define (sub subtree)
+ (let ((ac (cl-assoc subtree alist test key)))
+ (if (not (null? ac))
+ (cdr ac)
+ (if (not (pair? subtree))
+ subtree
+ (let ()
+ (set-car! subtree (sub (car subtree)))
+ (set-cdr! subtree (sub (cdr subtree)))
+ subtree)))))
+ (sub tree))
+
+ (define* (nsubst-if new predicate tree (key identity)) ; sacla
+ (define (sub subtree)
+ (if (predicate (key subtree))
+ new
+ (if (not (pair? subtree))
+ subtree
+ (let ()
+ (set-car! subtree (sub (car subtree)))
+ (set-cdr! subtree (sub (cdr subtree)))
+ subtree))))
+ (sub tree))
+
+ (define* (nsubst-if-not new predicate tree (key identity))
+ (nsubst-if new (lambda (obj) (not (predicate obj))) tree key))
+
+ (define* (nsubst new old tree (test eql) (key identity))
+ (nsubst-if new (lambda (obj) (test old obj)) tree key))
+
+ (define (ldiff lst object) ; sacla
+ (if (not (eqv? lst object))
+ (let* ((result (list (car lst)))
+ (splice result))
+ (call-with-exit
+ (lambda (return)
+ (do ((l (cdr lst) (cdr l)))
+ ((not (pair? l))
+ (if (eql l object)
+ (set-cdr! splice '()))
+ result)
+ (if (eqv? l object)
+ (return result)
+ (set! splice (cdr (rplacd splice (list (car l))))))))))
+ '()))
+
+ (define* (member-if predicate list (key identity))
+ (if (null? list)
+ '()
+ (if (predicate (key (car list)))
+ list
+ (member-if predicate (cdr list) key))))
+
+ (define* (member-if-not predicate list (key identity))
+ (member-if (lambda (obj) (not (predicate obj))) list key))
+
+ (define* (cl-member item list (test eql) (key identity))
+ (if (null? list)
+ '()
+ (if (test item (key (car list)))
+ list
+ (cl-member item (cdr list) test key))))
+
+ (define* (adjoin item list (test eql) (key identity))
+ (if (not (null? (cl-member (key item) list test key)))
+ list
+ (cons item list)))
+
+ (define (tailp sublist list)
+ (or (eq? sublist list)
+ (and (not (null? list))
+ (tailp sublist (cdr list)))))
+
+ (define* (union list1 list2 (test eql) (key identity))
+ (let ((new-list (copy list1)))
+ (do ((obj list2 (cdr obj)))
+ ((null? obj) new-list)
+ (set! new-list (adjoin (car obj) new-list test key)))))
+
+ (define nunion union) ; this is not required to be destructive
+
+ (define* (intersection list1 list2 (test eql) (key identity))
+ (let ((new-list '()))
+ (do ((obj list1 (cdr obj)))
+ ((null? obj) new-list)
+ (if (not (null? (cl-member (key (car obj)) list2 test key)))
+ (set! new-list (adjoin (car obj) new-list test key))))))
+
+ (define nintersection intersection)
+
+ (define* (set-difference list1 list2 (test eql) (key identity))
+ (let ((new-list '()))
+ (do ((obj list1 (cdr obj)))
+ ((null? obj) new-list)
+ (if (null? (cl-member (key (car obj)) list2 test key))
+ (set! new-list (adjoin (car obj) new-list test key))))))
+
+ (define nset-difference set-difference)
+
+ (define* (set-exclusive-or list1 list2 (test eql) (key identity))
+ (let ((new-list '()))
+ (do ((obj list1 (cdr obj)))
+ ((null? obj))
+ (if (null? (cl-member (key (car obj)) list2 test key))
+ (set! new-list (adjoin (car obj) new-list test key))))
+ (do ((obj list2 (cdr obj)))
+ ((null? obj) new-list)
+ (if (null? (cl-member (key (car obj)) list1 test key))
+ (set! new-list (adjoin (car obj) new-list test key))))))
+
+ (define nset-exclusive-or set-exclusive-or)
+
+ (define* (subsetp list1 list2 (test eql) (key identity))
+ (call-with-exit
+ (lambda (return)
+ (do ((obj list1 (cdr obj)))
+ ((null? obj) #t)
+ (if (null? (cl-member (key (car obj)) list2 test key))
+ (return nil))))))
+
+ (define* (nbutlast list (n 1)) ; sacla
+ (if (null? list)
+ '()
+ (let ((length (do ((p (cdr list) (cdr p))
+ (i 1 (1+ i)))
+ ((not (pair? p)) i))))
+ (if (> length n)
+ (do ((1st (cdr list) (cdr 1st))
+ (2nd list 1st)
+ (count (- length n 1) (- count 1)))
+ ((zero? count)
+ (set-cdr! 2nd '())
+ list))
+ '()))))
+
+ (define (nconc . lists) ; sacla sort of
+ (let ((ls (let ()
+ (define (strip-nulls lst)
+ (if (null? lst)
+ '()
+ (if (null? (car lst))
+ (strip-nulls (cdr lst))
+ lst)))
+ (strip-nulls lists))))
+ (if (null? ls)
+ '()
+ (let* ((top (car ls))
+ (splice top))
+ (do ((here (cdr ls) (cdr here)))
+ ((null? here) top)
+ (set-cdr! (last splice) (car here))
+ (if (not (null? (car here)))
+ (set! splice (car here))))))))
+
+ (define (nreconc x y) (nconc (nreverse x) y))
+
+
+
+ ;; -------- numbers
+
+ (define (conjugate z) (make-rectangular (real-part z) (- (imag-part z))))
+ (define zerop zero?)
+ (define oddp odd?)
+ (define evenp even?)
+ (define plusp positive?)
+ (define minusp negative?)
+ (define realpart real-part)
+ (define imagpart imag-part)
+ (define* (float x ignore) (exact->inexact x))
+ (define rational rationalize)
+ (define mod modulo)
+ (define rem remainder)
+
+ (define (logtest i1 i2) (not (zero? (logand i1 i2))))
+ (define (logbitp index integer) (logtest (expt 2 index) integer))
+ (define (lognand n1 n2) (lognot (logand n1 n2)))
+ (define (lognor n1 n2) (lognot (logior n1 n2)))
+ (define (logandc1 n1 n2) (logand (lognot n1) n2))
+ (define (logandc2 n1 n2) (logand n1 (lognot n2)))
+ (define (logorc1 n1 n2) (logior (lognot n1) n2))
+ (define (logorc2 n1 n2) (logior n1 (logior n2)))
+ (define (logeqv . ints) (lognot (apply logxor ints)))
+
+ ;; from slib
+ (define (logcount n)
+ (define bitwise-bit-count
+ (letrec ((logcnt (lambda (n tot)
+ (if (zero? n)
+ tot
+ (logcnt (quotient n 16)
+ (+ (vector-ref
+ '#(0 1 1 2 1 2 2 3 1 2 2 3 2 3 3 4)
+ (modulo n 16))
+ tot))))))
+ (lambda (n)
+ (cond ((negative? n) (lognot (logcnt (lognot n) 0)))
+ ((positive? n) (logcnt n 0))
+ (else 0)))))
+ (cond ((negative? n) (bitwise-bit-count (lognot n)))
+ (else (bitwise-bit-count n))))
+
+ (define-constant boole-clr 0)
+ (define-constant boole-set 1)
+ (define-constant boole-1 2)
+ (define-constant boole-2 3)
+ (define-constant boole-c1 4)
+ (define-constant boole-c2 5)
+ (define-constant boole-and 6)
+ (define-constant boole-ior 7)
+ (define-constant boole-xor 8)
+ (define-constant boole-eqv 9)
+ (define-constant boole-nand 10)
+ (define-constant boole-nor 11)
+ (define-constant boole-andc1 12)
+ (define-constant boole-andc2 13)
+ (define-constant boole-orc1 14)
+ (define-constant boole-orc2 15)
+
+ (define (boole op int1 int2)
+ (cond
+ ((= op boole-clr) 0)
+ ((= op boole-set) -1) ;; all ones -- "always 1" is misleading
+ ((= op boole-1) int1)
+ ((= op boole-2) int2)
+ ((= op boole-c1) (lognot int1))
+ ((= op boole-c2) (lognot int2))
+ ((= op boole-and) (logand int1 int2))
+ ((= op boole-ior) (logior int1 int2))
+ ((= op boole-xor) (logxor int1 int2))
+ ((= op boole-eqv) (logeqv int1 int2))
+ ((= op boole-nand) (lognot (logand int1 int2)))
+ ((= op boole-nor) (lognot (logior int1 int2)))
+ ((= op boole-andc1) (logand (lognot int1) int2))
+ ((= op boole-andc2) (logand int1 (lognot int2)))
+ ((= op boole-orc1) (logior (lognot int1) int2))
+ ((= op boole-orc2) (logior int1 (lognot int2)))))
+
+ ;; from Rick
+ (define (byte siz pos)
+ ;; cache size, position and mask.
+ (list siz pos (ash (- (ash 1 siz) 1) pos)))
+
+ (define (byte-size bytespec) (car bytespec))
+ (define (byte-position bytespec) (cadr bytespec))
+ (define (byte-mask bytespec) (caddr bytespec))
+
+ (define (ldb bytespec integer)
+ (ash (logand integer (byte-mask bytespec))
+ (- (byte-position bytespec))))
+
+ (define (dpb integer bytespec into)
+ (logior (ash (logand integer (- (ash 1 (byte-size bytespec)) 1)) (byte-position bytespec))
+ (logand into (lognot (byte-mask bytespec)))))
+
+ (define (ldb-test byte int) (not (zero? (ldb byte int))))
+ (define (mask-field byte int) (logand int (dpb -1 byte 0)))
+ (define (deposit-field byte spec int) (logior (logand byte (byte-mask spec)) (logand int (lognot (byte-mask spec)))))
+
+ ;; decode-float strikes me as a bad idea, as do all the others in this section!
+ (define (scale-float x k) (* x (expt 2.0 k)))
+
+ ;; from clisp -- can't see any point to most of these
+ (define-constant double-float-epsilon 1.1102230246251568e-16)
+ (define-constant double-float-negative-epsilon 5.551115123125784e-17)
+ (define-constant least-negative-double-float -2.2250738585072014e-308)
+ (define-constant least-negative-long-float -5.676615526003731344L-646456994)
+ (define-constant least-negative-normalized-double-float -2.2250738585072014e-308)
+ (define-constant least-negative-normalized-long-float -5.676615526003731344L-646456994)
+ (define-constant least-negative-normalized-short-float -1.1755e-38)
+ (define-constant least-negative-normalized-single-float -1.1754944e-38)
+ (define-constant least-negative-short-float -1.1755e-38)
+ (define-constant least-negative-single-float -1.1754944e-38)
+ (define-constant least-positive-double-float 2.2250738585072014e-308)
+ (define-constant least-positive-long-float 5.676615526003731344e-646456994)
+ (define-constant least-positive-normalized-double-float 2.2250738585072014e-308)
+ (define-constant least-positive-normalized-long-float 5.676615526003731344e-646456994)
+ (define-constant least-positive-normalized-short-float 1.1755e-38)
+ (define-constant least-positive-normalized-single-float 1.1754944e-38)
+ (define-constant least-positive-short-float 1.1755e-38)
+ (define-constant least-positive-single-float 1.1754944e-38)
+ (define-constant long-float-epsilon 5.4210108624275221706e-20)
+ (define-constant long-float-negative-epsilon 2.7105054312137610853e-20)
+ (define-constant most-negative-double-float -1.7976931348623157e308)
+ ;; most-negative-fixnum
+ (define-constant most-negative-long-float -8.8080652584198167656L646456992)
+ (define-constant most-negative-short-float -3.4028e38)
+ (define-constant most-negative-single-float -3.4028235e38)
+ (define-constant most-positive-double-float 1.7976931348623157e308)
+ ;; most-positive-fixnum
+ (define-constant most-positive-long-float 8.8080652584198167656e646456992)
+ (define-constant most-positive-short-float 3.4028e38)
+ (define-constant most-positive-single-float 3.4028235e38)
+ (define-constant short-float-epsilon 7.6295e-6)
+ (define-constant short-float-negative-epsilon 3.81476e-6)
+ (define-constant single-float-epsilon 5.960465e-8)
+ (define-constant single-float-negative-epsilon 2.9802326e-8)
+
+ (define (lisp-implementation-type) "s7")
+ (define (lisp-implementation-version) (s7-version))
+ (define (software-type) "s7")
+ (define (software-version) (s7-version))
+
+ (define (machine-version)
+ (if (file-exists? "/proc/cpuinfo")
+ (call-with-input-file "/proc/cpuinfo"
+ (lambda (cpufile)
+ (do ((line (read-line cpufile) (read-line cpufile)))
+ ((or (eof-object? line)
+ (string=? (substring line 0 10) "model name"))
+ (if (string? line)
+ (string-trim " " (substring line (+ 1 (position #\: line))))
+ "unknown")))))
+ "unknown"))
+
+ ;; = < <= > >= are the same, also min max + - * / lcm gcd exp expt log sqrt
+ ;; sin cos tan acos asin atan pi sinh cosh tanh asinh acosh atanh
+ ;; numerator denominator logior logxor logand ash integer-length random
+
+ ;; slightly different: floor ceiling truncate round and the ff cases thereof
+ ;; abs of complex -> magnitude
+ (define (cl-abs x) (if (not (zero? (imag-part x))) (magnitude x) (abs x)))
+
+ ;; these actually return multiple values
+ (define* (cl-floor x (divisor 1)) (floor (/ x divisor)))
+ (define* (cl-ceiling x (divisor 1)) (ceiling (/ x divisor)))
+ (define* (cl-truncate x (divisor 1)) (truncate (/ x divisor)))
+ (define* (cl-round x (divisor 1)) (round (/ x divisor)))
+ (define* (ffloor x divisor) (exact->inexact (cl-floor x divisor)))
+ (define* (fceling x divisor) (exact->inexact (cl-ceiling x divisor)))
+ (define* (ftruncate x divisor) (exact->inexact (cl-truncate x divisor)))
+ (define* (fround x divisor) (exact->inexact (cl-round x divisor)))
+
+ (define (/= . args)
+ (if (null? (cdr args))
+ #t
+ (if (member (car args) (cdr args))
+ #f
+ (apply /= (cdr args)))))
+
+ (define (1+ x) (+ x 1))
+ (define (1- x) (- x 1))
+ (define (isqrt x) (floor (sqrt x)))
+ (define phase angle)
+ (define* (complex rl (im 0.0)) (make-rectangular rl im))
+ (define (signum x) (if (zerop x) x (/ x (abs x))))
+ (define (cis x) (exp (make-rectangular 0.0 x)))
+
+
+ ;; -------- characters
+
+ (define char-code-limit 256)
+ (define alpha-char-p char-alphabetic?)
+ (define upper-case-p char-upper-case?)
+ (define lower-case-p char-lower-case?)
+ (define* (digit-char-p c (radix 10)) (string->number (string c) radix))
+ (define (alphanumericp c) (or (char-alphabetic? c) (char-numeric? c)))
+
+ (define* (char= . args) (or (< (length args) 2) (apply char=? args)))
+ (define* (char< . args) (or (< (length args) 2) (apply char<? args)))
+ (define* (char<= . args) (or (< (length args) 2) (apply char<=? args)))
+ (define* (char> . args) (or (< (length args) 2) (apply char>? args)))
+ (define* (char>= . args) (or (< (length args) 2) (apply char>=? args)))
+ (define* (char-equal . args) (or (< (length args) 2) (apply char-ci=? args)))
+ (define* (char-lessp . args) (or (< (length args) 2) (apply char-ci<? args)))
+ (define* (char-greaterp . args) (or (< (length args) 2) (apply char-ci>? args)))
+ (define* (char-not-lessp . args) (or (< (length args) 2) (apply char-ci>=? args)))
+ (define* (char-not-greaterp . args) (or (< (length args) 2) (apply char-ci<=? args)))
+
+ (define (char/= . args)
+ (if (null? (cdr args))
+ #t
+ (if (member (car args) (cdr args))
+ #f
+ (apply char/= (cdr args)))))
+
+ (define (char-not-equal . args)
+ (if (null? (cdr args))
+ #t
+ (if (or (member (char-upcase (car args)) (cdr args))
+ (member (char-downcase (car args)) (cdr args)))
+ #f
+ (apply char-not-equal (cdr args)))))
+
+ (define char-code char->integer)
+ (define code-char integer->char)
+
+ (define (character c)
+ (if (char? c)
+ c
+ (if (integer? c)
+ (integer->char c)
+ (if (string? c)
+ (c 0)
+ (if (symbol? c)
+ ((symbol->string c) 0))))))
+
+ ;; char-upcase and char-downcase are ok
+ (define char-int char->integer)
+ (define int-char integer->char)
+
+ (define* (digit-char w (radix 10))
+ (let ((str (number->string w radix)))
+ (and str (= (length str) 1) (str 0))))
+
+ (define (both-case-p c) "unimplemented")
+ (define (standard-char-p c) "unimplemented")
+ (define (char-name c) "unimplemented")
+ (define (name-char s) "unimplemented")
+
+ ;; --------
+
+ (define terpri newline)
+
+
+ ;; -------- types
+
+ (define vectorp vector?)
+ (define simple-vector-p vector?)
+ (define symbolp symbol?)
+ (define (atom obj) (not (pair? obj)))
+ (define consp pair?)
+ (define (null obj) (or (not obj) (null? obj)))
+ (define (listp obj) (or (null? obj) (pair? obj)))
+ (define numberp number?)
+ (define integerp integer?)
+ (define rationalp rational?)
+ (define (floatp l) (and (number? l) (not (rational? l)) (zero? (imag-part l)))) ; clisp
+ (define (complexp l) (and (complex? l) (not (real? l))))
+ (define realp real?)
+ (define characterp char?)
+ (define stringp string?)
+ (define simple-string-p string?)
+ (define arrayp vector?)
+ (define simple-bit-vector-p vector?)
+ (define keywordp keyword?)
+ (define functionp procedure?)
+
+ (define-constant t #t)
+ (define-constant nil '())
+
+ (define eq eq?)
+ (define eql eqv?)
+ (define equal equal?)
+
+ (define (equalp x y)
+ (or (equal x y)
+ (and (char? x) (char? y) (char-ci=? x y))
+ (and (number? x) (number? y) (= x y))
+ (and (string? x) (string? y) (string-ci=? x y))))
+
+ (define symbol-value symbol->value)
+ (define symbol-function symbol->value)
+ (define fdefinition symbol->value)
+ (define boundp defined?)
+ (define fboundp defined?)
+ (define (funcall fn . arguments) (apply fn arguments))
+ (define-constant call-arguments-limit 65536)
+
+ (define (identity x) x)
+
+
+ ;; -------- sequences
+
+ (define* (count-if predicate sequence from-end (start 0) end (key identity))
+ (let* ((counts 0)
+ (len (length sequence))
+ (nd (or (and (number? end) end) len))) ; up to but not including end
+ (if (< nd start)
+ (error "count-if :start ~A is greater than ~A ~A" start (if end ":end" "length") nd))
+ (if (not from-end)
+ (do ((i start (+ i 1)))
+ ((= i nd))
+ (if (predicate (key (sequence i)))
+ (set! counts (+ counts 1))))
+ (do ((i (- nd 1) (- i 1)))
+ ((< i start))
+ (if (predicate (key (sequence i)))
+ (set! counts (+ counts 1)))))
+ counts))
+
+ (define* (count-if-not predicate sequence from-end (start 0) end (key identity))
+ (count-if (lambda (obj) (not (predicate obj))) sequence from-end start end key))
+
+ (define* (count item sequence from-end (test eql) (start 0) end (key identity))
+ (count-if (lambda (arg) (test item arg)) sequence from-end start end key))
+
+ (define* (find-if predicate sequence from-end (start 0) end (key identity))
+ (let* ((len (length sequence))
+ (nd (or (and (number? end) end) len))) ; up to but not including end
+ (if (< nd start)
+ (error "~A :start ~A is greater than ~A ~A" __func__ start (if end ":end" "length") nd))
+ (call-with-exit
+ (lambda (return)
+ (if (not from-end)
+ (do ((i start (+ i 1)))
+ ((= i nd) #f)
+ (if (predicate (key (sequence i)))
+ (return (sequence i))))
+ (do ((i (- nd 1) (- i 1)))
+ ((< i start) #f)
+ (if (predicate (key (sequence i)))
+ (return (sequence i)))))))))
+
+ (define* (find-if-not predicate sequence from-end (start 0) end (key identity))
+ (find-if (lambda (obj) (not (predicate obj))) sequence from-end start end key))
+
+ (define* (find item sequence from-end (test eql) (start 0) end (key identity))
+ (find-if (lambda (arg) (test item arg)) sequence from-end start end key))
+
+ (define* (position-if predicate sequence from-end (start 0) end (key identity))
+ (let* ((len (length sequence))
+ (nd (or (and (number? end) end) len))) ; up to but not including end
+ (if (< nd start)
+ (error "~A :start ~A is greater than ~A ~A" __func__ start (if end ":end" "length") nd))
+ (call-with-exit
+ (lambda (return)
+ (if (not from-end)
+ (do ((i start (+ i 1)))
+ ((= i nd) #f)
+ (if (predicate (key (sequence i)))
+ (return i)))
+ (do ((i (- nd 1) (- i 1)))
+ ((< i start) #f)
+ (if (predicate (key (sequence i)))
+ (return i))))))))
+
+ (define* (position-if-not predicate sequence from-end (start 0) end (key identity))
+ (position-if (lambda (obj) (not (predicate obj))) sequence from-end start end key))
+
+ (define* (position item sequence from-end (test eql) (start 0) end (key identity))
+ (position-if (lambda (arg) (test item arg)) sequence from-end start end key))
+
+
+ (define* (nsubstitute-if new-item test sequence from-end (start 0) end count (key identity))
+ (if (and (number? count)
+ (not (positive? count)))
+ sequence
+ (let* ((len (length sequence))
+ (nd (or (and (number? end) end) len))) ; up to but not including end
+ (if (< nd start)
+ (error "~A :start ~A is greater than ~A ~A" __func__ start (if end ":end" "length") nd))
+ (let ((cur-count 0))
+ (if (not (number? count))
+ (set! count len))
+ (if (not from-end)
+ (do ((i start (+ i 1)))
+ ((or (= cur-count count)
+ (= i nd))
+ sequence)
+ (if (test (key (sequence i)))
+ (begin
+ (set! cur-count (+ cur-count 1))
+ (set! (sequence i) new-item))))
+ (do ((i (- nd 1) (- i 1)))
+ ((or (= cur-count count)
+ (< i start))
+ sequence)
+ (if (test (key (sequence i)))
+ (begin
+ (set! cur-count (+ cur-count 1))
+ (set! (sequence i) new-item)))))))))
+
+ (define* (nsubstitute-if-not new-item test sequence from-end (start 0) end count (key identity))
+ (nsubstitute-if new-item (lambda (obj) (not (test obj))) sequence from-end start end count key))
+
+ (define* (nsubstitute new-item old-item sequence from-end (test eql) (start 0) end count (key identity))
+ (nsubstitute-if new-item (lambda (arg) (test old-item arg)) sequence from-end start end count key))
+
+ (define* (substitute-if new-item test sequence from-end (start 0) end count (key identity))
+ (nsubstitute-if new-item test (copy sequence) from-end start end count key))
+
+ (define* (substitute-if-not new-item test sequence from-end (start 0) end count (key identity))
+ (substitute-if new-item (lambda (obj) (not (test obj))) (copy sequence) from-end start end count key))
+
+ (define* (substitute new-item old-item sequence from-end (test eql) (start 0) end count (key identity))
+ (nsubstitute new-item old-item (copy sequence) from-end test start end count key))
+
+ (define* (reduce function sequence from-end (start 0) end initial-value (key identity))
+ (let* ((slen (length sequence))
+ (nd (or (and (number? end) end) slen))
+ (len (min slen (- nd start))))
+ (if (< nd start)
+ (error "~A :start ~A is greater than ~A ~A" __func__ start (if end ":end" "length") nd))
+ (if (not (positive? len))
+ (or initial-value
+ (function))
+ (if (and (= len 1)
+ (not initial-value))
+ (sequence start)
+ (if (and (not from-end) (not (null? from-end)))
+ (let* ((first-arg (or initial-value (key (sequence start))))
+ (second-arg (if initial-value (key (sequence start)) (key (sequence (+ start 1)))))
+ (val (function first-arg second-arg)))
+ (do ((i (if initial-value (+ start 1) (+ start 2)) (+ i 1)))
+ ((= i nd) val)
+ (set! val (function val (key (sequence i))))))
+ (let* ((second-arg (or initial-value (key (sequence (- nd 1)))))
+ (first-arg (if initial-value (key (sequence (- nd 1))) (key (sequence (- nd 2)))))
+ (val (function first-arg second-arg)))
+ (do ((i (if initial-value (- nd 2) (- nd 3)) (- i 1)))
+ ((< i start) val)
+ (set! val (function (key (sequence i)) val)))))))))
+
+ (define (nreverse sequence)
+ (let ((len (length sequence)))
+ (do ((i 0 (+ i 1))
+ (j (- len 1) (- j 1)))
+ ((>= i j) sequence)
+ (let ((tmp (sequence i)))
+ (set! (sequence i) (sequence j))
+ (set! (sequence j) tmp)))))
+
+ (define (cl-reverse sequence)
+ (nreverse (copy sequence)))
+
+ (define copy-seq copy)
+ (define (complement fn) (lambda args (not (apply fn args))))
+ (define (elt sequence index) (sequence index))
+ ;; length is ok
+
+ (define* (some predicate . sequences)
+ (call-with-exit
+ (lambda (return)
+ (apply for-each
+ (lambda args
+ (let ((val (apply predicate args)))
+ (if val (return val))))
+ sequences)
+ #f)))
+
+ (define* (notany predicate . sequences)
+ (not (apply some predicate sequences)))
+
+ (define* (every predicate . sequences)
+ (call-with-exit
+ (lambda (return)
+ (apply for-each
+ (lambda args
+ (if (not (apply predicate args))
+ (return #f)))
+ sequences)
+ #t)))
+
+ (define* (notevery predicate . sequences)
+ (not (apply every predicate sequences)))
+
+ (define* (cl-fill sequence item (start 0) end) ; actuall "fill" doesn't collide, but it's confusing
+ (let ((nd (or (and (not (null? end)) end)
+ (length sequence))))
+ (if (and (= start 0)
+ (= nd (length sequence)))
+ (fill! sequence item)
+ (do ((i start (+ i 1)))
+ ((= i nd))
+ (set! (sequence i) item)))
+ sequence))
+
+ ;; many of the sequence functions return a different length sequence, but
+ ;; for user-defined sequence types, we can't use the 'type kludge (or
+ ;; at least it's ugly), so we need either (make obj size initial-value)
+ ;; where obj is a representative of the desired type, or another
+ ;; arg to copy giving the new object's size. For now, I'll cobble up
+ ;; something explicit.
+ ;;
+ ;; perhaps the extended type could give its type symbol as well as the make function?
+ ;; 'vct and make-vct etc
+
+ (define (make obj size)
+ (cond ((vector? obj) (make-vector size))
+ ((list? obj) (make-list size))
+ ((string? obj) (make-string size))
+ ((hash-table? obj) (make-hash-table size)))) ; does this make any sense?
+
+ (define* (make-sequence type size initial-element)
+ (case type
+ ((vector bit-vector simple-vector) (make-vector size initial-element))
+ ((hash-table) (make-hash-table size))
+ ((string) (cl-make-string size (or initial-element #\null))) ; not #f!
+ ((list) (cl-make-list size initial-element))))
+
+ (define (cl-map type func . lists)
+ (let* ((vals (apply mapcar func lists))
+ (len (length vals)))
+ (let ((obj (make-sequence (or type 'list) len)))
+ (if (> (length obj) 0)
+ (do ((i 0 (+ i 1)))
+ ((= i len))
+ (set! (obj i) (vals i))))
+ obj)))
+
+ (define* (subseq sequence start end)
+ (let* ((len (length sequence))
+ (nd (or (and (number? end) end) len))
+ (size (- nd start))
+ (obj (make sequence size)))
+ (do ((i start (+ i 1))
+ (j 0 (+ j 1)))
+ ((= i nd) obj)
+ (set! (obj j) (sequence i)))))
+
+ (define (concatenate type . sequences)
+ (let* ((len (apply + (map length sequences)))
+ (new-obj (make-sequence type len))
+ (ctr 0))
+ (for-each
+ (lambda (sequence)
+ (for-each
+ (lambda (obj)
+ (set! (new-obj ctr) obj)
+ (set! ctr (+ ctr 1)))
+ sequence))
+ sequences)
+ new-obj))
+
+ ;; :(concatenate 'list "hiho" '#(1 2)) -> (#\h #\i #\h #\o 1 2)
+
+ (define* (replace seq1 seq2 (start1 0) end1 (start2 0) end2)
+ (let* ((len1 (length seq1))
+ (len2 (length seq2))
+ (nd1 (or (and (number? end1) end1) len1))
+ (nd2 (or (and (number? end2) end2) len2)))
+ (if (and (eq? seq1 seq2)
+ (> start1 start2))
+ (let ((offset (- start1 start2)))
+ (do ((i (- nd1 1) (- i 1)))
+ ((< i start1) seq1)
+ (set! (seq1 i) (seq1 (- i offset)))))
+ (do ((i start1 (+ i 1))
+ (j start2 (+ j 1)))
+ ((or (= i nd1)
+ (= j nd2))
+ seq1)
+ (set! (seq1 i) (seq2 j))))))
+
+ (define* (remove-if predicate sequence from-end (start 0) end count (key identity))
+ (let* ((len (length sequence))
+ (nd (or (and (number? end) end) len))
+ (num (if (number? count) count len))
+ (changed 0))
+ (if (not (positive? num))
+ sequence
+ (let ((result '()))
+ (if (null from-end)
+ (do ((i 0 (+ i 1)))
+ ((= i len))
+ (if (or (< i start)
+ (>= i nd)
+ (>= changed num)
+ (not (predicate (key (sequence i)))))
+ (set! result (cons (sequence i) result))
+ (set! changed (+ changed 1))))
+ (do ((i (- len 1) (- i 1)))
+ ((< i 0))
+ (if (or (< i start)
+ (>= i nd)
+ (>= changed num)
+ (not (predicate (key (sequence i)))))
+ (set! result (cons (sequence i) result))
+ (set! changed (+ changed 1)))))
+ (let* ((len (length result))
+ (obj (make sequence len))
+ (vals (if (null from-end) (reverse result) result)))
+ (do ((i 0 (+ i 1)))
+ ((= i len))
+ (set! (obj i) (vals i)))
+ obj)))))
+
+ (define* (remove-if-not predicate sequence from-end (start 0) end count (key identity))
+ (remove-if (lambda (obj) (not (predicate obj))) sequence from-end start end count key))
+
+ (define* (remove item sequence from-end (test eql) (start 0) end count (key identity))
+ (remove-if (lambda (arg) (test item arg)) sequence from-end start end count key))
+
+ (define-macro* (delete-if predicate sequence from-end (start 0) end count (key identity))
+ `(let ((obj (remove-if ,predicate ,sequence ,from-end ,start ,end ,count ,key)))
+ (if (symbol? ',sequence)
+ (set! ,sequence obj))
+ obj))
+
+ (define-macro* (delete-if-not predicate sequence from-end (start 0) end count (key identity))
+ `(let ((obj (remove-if-not ,predicate ,sequence ,from-end ,start ,end ,count ,key)))
+ (if (symbol? ',sequence)
+ (set! ,sequence obj))
+ obj))
+
+ (define-macro* (delete item sequence from-end (test eql) (start 0) end count (key identity))
+ `(let ((obj (remove ,item ,sequence ,from-end ,test ,start ,end ,count ,key)))
+ (if (symbol? ',sequence)
+ (set! ,sequence obj))
+ obj))
+
+ (define* (remove-duplicates sequence from-end (test eql) (start 0) end (key identity))
+ (let* ((result '())
+ (start-seq (+ start 1))
+ (len (length sequence))
+ (nd (if (number? end) end len)))
+ (do ((i start (+ i 1)))
+ ((= i nd))
+ (let* ((orig-obj (sequence i))
+ (obj (key orig-obj)))
+ (if (null from-end)
+ (begin
+ (if (not (find obj sequence :start start-seq :end nd :test test :key key))
+ (set! result (cons orig-obj result)))
+ (set! start-seq (+ start-seq 1)))
+ (if (not (find obj result :test test :key key))
+ (set! result (cons orig-obj result))))))
+ (let* ((res (reverse result))
+ (new-len (+ (length result) start (- len nd)))
+ (new-seq (make sequence new-len)))
+ (let ((n 0))
+ (do ((i 0 (+ i 1)))
+ ((= i len) new-seq)
+ (if (or (< i start)
+ (>= i nd))
+ (begin
+ (set! (new-seq n) (sequence i))
+ (set! n (+ n 1)))
+ (if (not (null? res))
+ (begin
+ (set! (new-seq n) (car res))
+ (set! res (cdr res))
+ (set! n (+ n 1))))))))))
+
+ (define-macro* (delete-duplicates sequence from-end (test eql) (start 0) end (key identity))
+ `(let ((obj (remove-duplicates ,sequence ,from-end ,test ,start ,end ,key)))
+ (if (symbol? ,sequence)
+ (set! ,sequence obj))
+ obj))
+
+ (define* (merge result-type seq1 seq2 predicate (key identity))
+ (let* ((len1 (length seq1))
+ (len2 (length seq2))
+ (size (+ len1 len2))
+ (obj (make-sequence result-type size))
+ (i 0)
+ (j 0))
+ (do ((n 0 (+ n 1)))
+ ((or (= i len1)
+ (= j len2))
+ (if (< i len1)
+ (do ((k i (+ k 1)))
+ ((= k len1) obj)
+ (set! (obj n) (seq1 k))
+ (set! n (+ n 1)))
+ (if (< j len2)
+ (do ((k j (+ k 1)))
+ ((= k len2) obj)
+ (set! (obj n) (seq2 k))
+ (set! n (+ n 1)))
+ obj)))
+ (if (null (predicate (key (seq1 i)) (key (seq2 j))))
+ (begin
+ (set! (obj n) (seq2 j))
+ (set! j (+ j 1)))
+ (begin
+ (set! (obj n) (seq1 i))
+ (set! i (+ i 1)))))))
+
+ (define* (search seq1 seq2 from-end (test eql) (key identity) (start1 0) (start2 0) end1 end2)
+ (let* ((len1 (length seq1))
+ (len2 (length seq2))
+ (nd1 (or (and (number? end1) end1) len1))
+ (nd2 (or (and (number? end2) end2) len2)))
+ (set! len1 (min len1 (- nd1 start1)))
+ (set! len2 (min len2 (- nd2 start2)))
+ (if (or (= len2 0)
+ (> len1 len2))
+ '()
+ (call-with-exit
+ (lambda (return)
+ (if (or (not from-end) (null? from-end))
+ (do ((i start2 (+ i 1)))
+ ((> i (- nd2 len1)) '())
+ (do ((j start1 (+ j 1))
+ (k i (+ k 1)))
+ ((or (= j nd1)
+ (not (test (key (seq1 j)) (key (seq2 k)))))
+ (if (= j nd1)
+ (return i)))))
+ (do ((i (- nd2 len1) (- i 1)))
+ ((< i start2) '())
+ (do ((j start1 (+ j 1))
+ (k i (+ k 1)))
+ ((or (= j nd1)
+ (not (test (key (seq1 j)) (key (seq2 k)))))
+ (if (= j nd1)
+ (return i)))))))))))
+
+ (define* (mismatch seq1 seq2 from-end (test eql) (key identity) (start1 0) (start2 0) end1 end2)
+ (let* ((nd1 (or (and (number? end1) end1) (length seq1)))
+ (nd2 (or (and (number? end2) end2) (length seq2))))
+ (if (not from-end)
+ (do ((i start1 (+ i 1))
+ (j start2 (+ j 1)))
+ ((or (= i nd1)
+ (= j nd2)
+ (not (test (key (seq1 i)) (key (seq2 j)))))
+ (if (and (= i nd1) (= j nd2))
+ '()
+ i)))
+ (do ((i (- nd1 1) (- i 1))
+ (j (- nd2 1) (- j 1)))
+ ((or (< i start1)
+ (< j start2)
+ (not (test (key (seq1 i)) (key (seq2 j)))))
+ (if (and (< i start1) (< j start2))
+ '()
+ (+ i 1)))))))
+
+
+ ;; -------- strings
+
+ (define char string-ref)
+ (define schar string-ref)
+ (define* (cl-make-string size (initial-element #\null)) (make-string size initial-element))
+
+ (define (cl-string x)
+ (if (string? x) x
+ (if (char? x)
+ (string x)
+ (if (symbol? x) (symbol->string x)
+ (error "string ~A?" x)))))
+
+ (define* (string= str-1 str-2 (start1 0) end1 (start2 0) end2)
+ (let* ((str1 (cl-string str-1))
+ (str2 (cl-string str-2))
+ (nd1 (if (number? end1) end1 (length str1)))
+ (nd2 (if (number? end2) end2 (length str2))))
+ (if (and (not end1) (not end2) (= start1 0) (= start2 0))
+ (string=? str1 str2)
+ (string=? (subseq str1 start1 nd1)
+ (subseq str2 start2 nd2)))))
+
+ (define* (string-equal str-1 str-2 (start1 0) end1 (start2 0) end2)
+ (let* ((str1 (cl-string str-1))
+ (str2 (cl-string str-2))
+ (nd1 (if (number? end1) end1 (length str1)))
+ (nd2 (if (number? end2) end2 (length str2))))
+ (if (and (not end1) (not end2) (= start1 0) (= start2 0))
+ (string-ci=? str1 str2)
+ (string-ci=? (subseq str1 start1 nd1)
+ (subseq str2 start2 nd2)))))
+
+ (define (string-prefixes-equal str1 str2 start1 nd1 start2 nd2)
+ (do ((i start1 (+ i 1))
+ (j start2 (+ j 1)))
+ ((or (= i nd1)
+ (= j nd2)
+ (not (char=? (str1 i) (str2 j))))
+ i)))
+
+ (define (string-prefixes-equal-ci str1 str2 start1 nd1 start2 nd2)
+ (do ((i start1 (+ i 1))
+ (j start2 (+ j 1)))
+ ((or (= i nd1)
+ (= j nd2)
+ (not (char-ci=? (str1 i) (str2 j))))
+ i)))
+
+ (define* (string< str-1 str-2 (start1 0) end1 (start2 0) end2)
+ (let* ((str1 (cl-string str-1))
+ (str2 (cl-string str-2))
+ (nd1 (if (number? end1) end1 (length str1)))
+ (nd2 (if (number? end2) end2 (length str2)))
+ (val (if (and (not end1) (not end2) (= start1 0) (= start2 0))
+ (string<? str1 str2)
+ (string<? (subseq str1 start1 nd1)
+ (subseq str2 start2 nd2)))))
+ (and val (string-prefixes-equal str1 str2 start1 nd1 start2 nd2))))
+
+ (define* (string-lessp str-1 str-2 (start1 0) end1 (start2 0) end2)
+ (let* ((str1 (cl-string str-1))
+ (str2 (cl-string str-2))
+ (nd1 (if (number? end1) end1 (length str1)))
+ (nd2 (if (number? end2) end2 (length str2)))
+ (val (if (and (not end1) (not end2) (= start1 0) (= start2 0))
+ (string-ci<? str1 str2)
+ (string-ci<? (subseq str1 start1 nd1)
+ (subseq str2 start2 nd2)))))
+ (and val (string-prefixes-equal-ci str1 str2 start1 nd1 start2 nd2))))
+
+ (define* (string<= str-1 str-2 (start1 0) end1 (start2 0) end2)
+ (let* ((str1 (cl-string str-1))
+ (str2 (cl-string str-2))
+ (nd1 (if (number? end1) end1 (length str1)))
+ (nd2 (if (number? end2) end2 (length str2)))
+ (val (if (and (not end1) (not end2) (= start1 0) (= start2 0))
+ (string<=? str1 str2)
+ (string<=? (subseq str1 start1 nd1)
+ (subseq str2 start2 nd2)))))
+ (and val (string-prefixes-equal str1 str2 start1 nd1 start2 nd2))))
+
+ (define* (string-not-greaterp str-1 str-2 (start1 0) end1 (start2 0) end2)
+ (let* ((str1 (cl-string str-1))
+ (str2 (cl-string str-2))
+ (nd1 (if (number? end1) end1 (length str1)))
+ (nd2 (if (number? end2) end2 (length str2)))
+ (val (if (and (not end1) (not end2) (= start1 0) (= start2 0))
+ (string-ci<=? str1 str2)
+ (string-ci<=? (subseq str1 start1 nd1)
+ (subseq str2 start2 nd2)))))
+ (and val (string-prefixes-equal-ci str1 str2 start1 nd1 start2 nd2))))
+
+ (define* (string> str-1 str-2 (start1 0) end1 (start2 0) end2)
+ (let* ((str1 (cl-string str-1))
+ (str2 (cl-string str-2))
+ (nd1 (if (number? end1) end1 (length str1)))
+ (nd2 (if (number? end2) end2 (length str2)))
+ (val (if (and (not end1) (not end2) (= start1 0) (= start2 0))
+ (string>? str1 str2)
+ (string>? (subseq str1 start1 nd1)
+ (subseq str2 start2 nd2)))))
+ (and val (string-prefixes-equal str1 str2 start1 nd1 start2 nd2))))
+
+ (define* (string-greaterp str-1 str-2 (start1 0) end1 (start2 0) end2)
+ (let* ((str1 (cl-string str-1))
+ (str2 (cl-string str-2))
+ (nd1 (if (number? end1) end1 (length str1)))
+ (nd2 (if (number? end2) end2 (length str2)))
+ (val (if (and (not end1) (not end2) (= start1 0) (= start2 0))
+ (string-ci>? str1 str2)
+ (string-ci>? (subseq str1 start1 nd1)
+ (subseq str2 start2 nd2)))))
+ (and val (string-prefixes-equal-ci str1 str2 start1 nd1 start2 nd2))))
+
+ (define* (string>= str-1 str-2 (start1 0) end1 (start2 0) end2)
+ (let* ((str1 (cl-string str-1))
+ (str2 (cl-string str-2))
+ (nd1 (if (number? end1) end1 (length str1)))
+ (nd2 (if (number? end2) end2 (length str2)))
+ (val (if (and (not end1) (not end2) (= start1 0) (= start2 0))
+ (string>=? str1 str2)
+ (string>=? (subseq str1 start1 nd1)
+ (subseq str2 start2 nd2)))))
+ (and val (string-prefixes-equal str1 str2 start1 nd1 start2 nd2))))
+
+ (define* (string-not-lessp str-1 str-2 (start1 0) end1 (start2 0) end2)
+ (let* ((str1 (cl-string str-1))
+ (str2 (cl-string str-2))
+ (nd1 (if (number? end1) end1 (length str1)))
+ (nd2 (if (number? end2) end2 (length str2)))
+ (val (if (and (not end1) (not end2) (= start1 0) (= start2 0))
+ (string-ci>=? str1 str2)
+ (string-ci>=? (subseq str1 start1 nd1)
+ (subseq str2 start2 nd2)))))
+ (and val (string-prefixes-equal-ci str1 str2 start1 nd1 start2 nd2))))
+
+ (define* (string/= str-1 str-2 (start1 0) end1 (start2 0) end2)
+ (let* ((str1 (cl-string str-1))
+ (str2 (cl-string str-2))
+ (nd1 (if (number? end1) end1 (length str1)))
+ (nd2 (if (number? end2) end2 (length str2)))
+ (val (if (and (not end1) (not end2) (= start1 0) (= start2 0))
+ (not (string=? str1 str2))
+ (not (string=? (subseq str1 start1 nd1)
+ (subseq str2 start2 nd2))))))
+ (and val (string-prefixes-equal str1 str2 start1 nd1 start2 nd2))))
+
+ (define* (string-not-equal str-1 str-2 (start1 0) end1 (start2 0) end2)
+ (let* ((str1 (cl-string str-1))
+ (str2 (cl-string str-2))
+ (nd1 (if (number? end1) end1 (length str1)))
+ (nd2 (if (number? end2) end2 (length str2)))
+ (val (if (and (not end1) (not end2) (= start1 0) (= start2 0))
+ (not (string-ci=? str1 str2))
+ (not (string-ci=? (subseq str1 start1 nd1)
+ (subseq str2 start2 nd2))))))
+ (and val (string-prefixes-equal-ci str1 str2 start1 nd1 start2 nd2))))
+
+ (define (string-left-trim bag str-1)
+ (let ((str (cl-string str-1)))
+ (if (string? bag) (set! bag (string->list bag)))
+ (let ((len (length str)))
+ (do ((i 0 (+ i 1)))
+ ((or (= i len)
+ (not (member (str i) bag)))
+ (if (= i 0)
+ str
+ (subseq str i)))))))
+
+ (define (string-right-trim bag str-1)
+ (let ((str (cl-string str-1)))
+ (if (string? bag) (set! bag (string->list bag)))
+ (let ((len (length str)))
+ (do ((i (- len 1) (- i 1)))
+ ((or (< i 0)
+ (not (member (str i) bag)))
+ (if (= i (- len 1))
+ str
+ (subseq str 0 (+ i 1))))))))
+
+ (define (string-trim bag str)
+ (string-right-trim bag (string-left-trim bag str)))
+
+ (define* (nstring-upcase str (start 0) end)
+ (let ((nd (if (number? end) end (length str))))
+ (do ((i start (+ i 1)))
+ ((= i nd) str)
+ (set! (str i) (char-upcase (str i))))))
+
+ (define* (string-upcase str-1 (start 0) end)
+ (let ((str (cl-string str-1)))
+ (nstring-upcase (copy str) start end)))
+
+ (define* (nstring-downcase str (start 0) end)
+ (let ((nd (if (number? end) end (length str))))
+ (do ((i start (+ i 1)))
+ ((= i nd) str)
+ (set! (str i) (char-downcase (str i))))))
+
+ (define* (string-downcase str-1 (start 0) end)
+ (let ((str (cl-string str-1)))
+ (nstring-downcase (copy str) start end)))
+
+ (define* (nstring-capitalize str-1 (start 0) end)
+ (define (alpha? c)
+ (or (char-alphabetic? c)
+ (char-numeric? c)))
+ (let ((str (cl-string str-1)))
+ (let ((nd (if (number? end) end (length str))))
+ (do ((i start (+ i 1)))
+ ((= i nd) str)
+ (if (alpha? (str i))
+ (if (or (= i 0)
+ (not (alpha? (str (- i 1)))))
+ (set! (str i) (char-upcase (str i)))
+ (set! (str i) (char-downcase (str i)))))))))
+
+ (define* (string-capitalize str-1 (start 0) end)
+ (let ((str (cl-string str-1)))
+ (nstring-capitalize (copy str) start end)))
+
+
+ ;; -------- vectors
+
+ ;; vector is ok
+
+ (define svref vector-ref)
+ (define aref vector-ref)
+ (define array-dimensions vector-dimensions)
+ (define array-total-size vector-length)
+ (define (array-dimension array num) (list-ref (vector-dimensions array) num))
+
+ (define-constant array-dimension-limit 16777215)
+ (define-constant array-rank-limit 4096)
+ (define-constant array-total-size-limit 16777215)
+
+ (define* (make-array dimensions element-type initial-element initial-contents adjustable fill-pointer displaced-to displaced-index-offset)
+ (if (eq? element-type 'character)
+ (or (and initial-contents
+ (string-copy initial-contents))
+ (cl-make-string dimensions initial-element))
+ (make-vector (or dimensions 1) initial-element)))
+
+ (define (array-in-bounds-p array . subscripts)
+ (define (in-bounds dims subs)
+ (or (null? subs)
+ (null? dims)
+ (and (< (car subs) (car dims))
+ (in-bounds (cdr dims) (cdr subs)))))
+ (in-bounds (vector-dimensions array) subscripts))
+
+ (define (row-major-index array . subscripts)
+ (apply + (maplist (lambda (x y)
+ (* (car x) (apply * (cdr y))))
+ subscripts
+ (vector-dimensions array))))
+
+
+ ;; -------- defstruct
+
+ (defmacro defstruct (struct-name . fields)
+ (let* ((name (if (list? struct-name) (car struct-name) struct-name))
+ (sname (if (string? name) name (symbol->string name)))
+
+ (fsname (if (list? struct-name)
+ (let ((cname (assoc :conc-name (cdr struct-name))))
+ (if cname
+ (symbol->string (cadr cname))
+ sname))
+ sname))
+
+ (make-name (if (list? struct-name)
+ (let ((cname (assoc :constructor (cdr struct-name))))
+ (if cname
+ (cadr cname)
+ (string->symbol (string-append "make-" sname))))
+ (string->symbol (string-append "make-" sname))))
+
+ (copy-name (if (list? struct-name)
+ (let ((cname (assoc :copier (cdr struct-name))))
+ (if cname
+ (cadr cname)
+ (string->symbol (string-append "copy-" sname))))
+ (string->symbol (string-append "copy-" sname))))
+
+ (field-names (map (lambda (n)
+ (symbol->string (if (list? n) (car n) n)))
+ fields))
+
+ (field-types (map (lambda (field)
+ (if (list? field)
+ (apply (lambda* (val type read-only) type) (cdr field))
+ #f))
+ fields))
+
+ (field-read-onlys (map (lambda (field)
+ (if (list? field)
+ (apply (lambda* (val type read-only) read-only) (cdr field))
+ #f))
+ fields)))
+ `(begin
+
+ (define ,(string->symbol (string-append sname "?"))
+ (lambda (obj)
+ (and (vector? obj)
+ (eq? (obj 0) ',(string->symbol sname)))))
+
+ (define* (,make-name
+ ,@(map (lambda (n)
+ (if (and (list? n)
+ (>= (length n) 2))
+ (list (car n) (cadr n))
+ (list n #f)))
+ fields))
+ (vector ',(string->symbol sname) ,@(map string->symbol field-names)))
+
+ (define ,copy-name copy)
+
+ ,@(map (let ((ctr 1))
+ (lambda (n type read-only)
+ (let ((val (if read-only
+ `(define ,(string->symbol (string-append fsname "-" n))
+ (lambda (arg) (arg ,ctr)))
+ `(define ,(string->symbol (string-append fsname "-" n))
+ (make-procedure-with-setter
+ (lambda (arg) (arg ,ctr))
+ (lambda (arg val) (set! (arg ,ctr) val)))))))
+ (set! ctr (+ 1 ctr))
+ val)))
+ field-names field-types field-read-onlys))))
+
+ ;; not yet implemented: :print-function :include :named :type :initial-offset
+ ;; also the explicit constructor business
+
+ (define-macro (enum . args) ; (enum zero one two)
+ `(begin
+ ,@(let ((names '()))
+ (do ((arg args (cdr arg))
+ (i 0 (+ i 1)))
+ ((null? arg) names)
+ (set! names (cons
+ `(define ,(car arg) ,i)
+ names))))))
+
+ (define-macro (let*-values vals . body)
+ (let ((args '())
+ (exprs '()))
+ (for-each
+ (lambda (arg+expr)
+ (set! args (cons (car arg+expr) args))
+ (set! exprs (cons (cadr arg+expr) exprs)))
+ vals)
+ (let ((form `((lambda ,(car args) ,@body) ,(car exprs))))
+ (if (not (null? (cdr args)))
+ (for-each
+ (lambda (arg expr)
+ (set! form `((lambda ,arg ,form) ,expr)))
+ (cdr args)
+ (cdr exprs)))
+ form)))
+
+
+ ;;; ----------------
+ ;;; some of these tests are taken (with modifications) from sacla which has
+ ;;; the following copyright notice:
+ ;;;
+ ;; Copyright (C) 2002-2004, Yuji Minejima <ggb01164@nifty.ne.jp>
+ ;; ALL RIGHTS RESERVED.
+ ;;
+ ;; Redistribution and use in source and binary forms, with or without
+ ;; modification, are permitted provided that the following conditions
+ ;; are met:
+ ;;
+ ;; * Redistributions of source code must retain the above copyright
+ ;; notice, this list of conditions and the following disclaimer.
+ ;; * Redistributions in binary form must reproduce the above copyright
+ ;; notice, this list of conditions and the following disclaimer in
+ ;; the documentation and/or other materials provided with the
+ ;; distribution.
+ ;;
+ ;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ ;; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ ;; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ ;; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ ;; OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ ;; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ ;; LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ ;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ ;; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ ;; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ ;; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ (test-t (equal 'a 'a))
+ (test-t (not (equal 'a 'b)))
+ (test-t (equal 'abc 'abc))
+ (test-t (equal 1 1))
+ (test-t (equal 2 2))
+ (test-t (equal 0.1 0.1))
+ (test-t (equal 1/3 1/3))
+ (test-t (not (equal 0 1)))
+ (test-t (not (equal 1 1.0)))
+ (test-t (not (equal 1/3 1/4)))
+ (test-t (equal #\a #\a))
+ (test-t (equal #\b #\b))
+ (test-t (not (equal #\b #\B)))
+ (test-t (not (equal #\C #\c)))
+ (test-t (equal '(0) '(0)))
+ (test-t (equal '(0 #\a) '(0 #\a)))
+ (test-t (equal '(0 #\a x) '(0 #\a x)))
+ (test-t (equal '(0 #\a x (0)) '(0 #\a x (0))))
+
+ (test-t (eql (identity 101) 101))
+ (test-t (eq (identity 'x) 'x))
+
+ ;; chars
+ (test-t (char= #\d #\d))
+ (test-t (not (char= #\A #\a)))
+ (test-t (not (char= #\d #\x)))
+ (test-t (not (char= #\d #\D)))
+ (test-t (not (char/= #\d #\d)))
+ (test-t (char/= #\d #\x))
+ (test-t (char/= #\d #\D))
+ (test-t (char= #\d #\d #\d #\d))
+ (test-t (not (char/= #\d #\d #\d #\d)))
+ (test-t (not (char= #\d #\d #\x #\d)))
+ (test-t (not (char/= #\d #\d #\x #\d)))
+ (test-t (not (char= #\d #\y #\x #\c)))
+ (test-t (char/= #\d #\y #\x #\c))
+ (test-t (not (char= #\d #\c #\d)))
+ (test-t (not (char/= #\d #\c #\d)))
+ (test-t (char< #\d #\x))
+ (test-t (char<= #\d #\x))
+ (test-t (not (char< #\d #\d)))
+ (test-t (char<= #\d #\d))
+ (test-t (char< #\a #\e #\y #\z))
+ (test-t (char<= #\a #\e #\y #\z))
+ (test-t (not (char< #\a #\e #\e #\y)))
+ (test-t (char<= #\a #\e #\e #\y))
+ (test-t (char> #\e #\d))
+ (test-t (char>= #\e #\d))
+ (test-t (char> #\d #\c #\b #\a))
+ (test-t (char>= #\d #\c #\b #\a))
+ (test-t (not (char> #\d #\d #\c #\a)))
+ (test-t (char>= #\d #\d #\c #\a))
+ (test-t (not (char> #\e #\d #\b #\c #\a)))
+ (test-t (not (char>= #\e #\d #\b #\c #\a)))
+ (test-t (char-equal #\A #\a))
+ (test-t (char= #\a))
+ (test-t (char= #\a #\a))
+ (test-t (char= #\a #\a #\a))
+ (test-t (char= #\a #\a #\a #\a))
+ (test-t (char= #\a #\a #\a #\a #\a))
+ (test-t (char= #\a #\a #\a #\a #\a #\a))
+ (test-t (let ((c #\z)) (and (eq c c) (char= c c))))
+ (test-t (not (char= #\Z #\z)))
+ (test-t (not (char= #\z #\z #\z #\a)))
+ (test-t (not (char= #\a #\z #\z #\z #\a)))
+ (test-t (not (char= #\z #\i #\z #\z)))
+ (test-t (not (char= #\z #\z #\Z #\z)))
+ (test-t (char/= #\a))
+ (test-t (char/= #\a #\b))
+ (test-t (char/= #\a #\b #\c))
+ (test-t (char/= #\a #\b #\c #\d))
+ (test-t (char/= #\a #\b #\c #\d #\e))
+ (test-t (char/= #\a #\b #\c #\d #\e #\f))
+ (test-t (let ((c #\z)) (and (eq c c) (not (char/= c c)))))
+ (test-t (char/= #\Z #\z))
+ (test-t (not (char/= #\z #\z #\z #\a)))
+ (test-t (not (char= #\a #\z #\z #\z #\a)))
+ (test-t (not (char= #\z #\i #\z #\z)))
+ (test-t (not (char= #\z #\z #\Z #\z)))
+ (test-t (not (char/= #\a #\a #\b #\c)))
+ (test-t (not (char/= #\a #\b #\a #\c)))
+ (test-t (not (char/= #\a #\b #\c #\a)))
+ (test-t (char< #\a))
+ (test-t (char< #\a #\z))
+ (test-t (char< #\a #\b #\c #\d #\e #\f #\g #\h #\i #\j #\k #\l #\m #\n #\o #\p #\q #\r #\s #\t #\u #\v #\w #\x #\y #\z))
+ (test-t (not (char< #\z #\y #\x #\w #\v #\u #\t #\s #\r #\q #\p #\o #\n #\m #\l #\k #\j #\i #\h #\g #\f #\e #\d #\c #\b #\a)))
+ (test-t (char< #\A #\B #\C #\D #\E #\F #\G #\H #\I #\J #\K #\L #\M #\N #\O #\P #\Q #\R #\S #\T #\U #\V #\W #\X #\Y #\Z))
+ (test-t (not (char< #\Z #\Y #\X #\W #\V #\U #\T #\S #\R #\Q #\P #\O #\N #\M #\L #\K #\J #\I #\H #\G #\F #\E #\D #\C #\B #\A)))
+ (test-t (char< #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9))
+ (test-t (not (char< #\9 #\8 #\7 #\6 #\5 #\4 #\3 #\2 #\1 #\0)))
+ (test-t (or (char< #\9 #\A) (char< #\Z #\0)))
+ (test-t (or (char< #\9 #\a) (char< #\z #\0)))
+ (test-t (not (char< #\a #\a #\b #\c)))
+ (test-t (not (char< #\a #\b #\a #\c)))
+ (test-t (not (char< #\a #\b #\c #\a)))
+ (test-t (not (char< #\9 #\0)))
+ (test-t (char> #\a))
+ (test-t (not (char> #\a #\z)))
+ (test-t (char> #\z #\a))
+ (test-t (not (char> #\a #\b #\c #\d #\e #\f #\g #\h #\i #\j #\k #\l #\m #\n #\o #\p #\q #\r #\s #\t #\u #\v #\w #\x #\y #\z)))
+ (test-t (char> #\z #\y #\x #\w #\v #\u #\t #\s #\r #\q #\p #\o #\n #\m #\l #\k #\j #\i #\h #\g #\f #\e #\d #\c #\b #\a))
+ (test-t (not (char> #\A #\B #\C #\D #\E #\F #\G #\H #\I #\J #\K #\L #\M #\N #\O #\P #\Q #\R #\S #\T #\U #\V #\W #\X #\Y #\Z)))
+ (test-t (char> #\Z #\Y #\X #\W #\V #\U #\T #\S #\R #\Q #\P #\O #\N #\M #\L #\K #\J #\I #\H #\G #\F #\E #\D #\C #\B #\A))
+ (test-t (not (char> #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9)))
+ (test-t (char> #\9 #\8 #\7 #\6 #\5 #\4 #\3 #\2 #\1 #\0))
+ (test-t (or (char> #\A #\9) (char> #\0 #\Z)))
+ (test-t (or (char> #\a #\9) (char> #\0 #\z)))
+ (test-t (not (char> #\a #\a #\b #\c)))
+ (test-t (not (char> #\a #\b #\a #\c)))
+ (test-t (not (char> #\a #\b #\c #\a)))
+ (test-t (char> #\9 #\0))
+ (test-t (char<= #\a))
+ (test-t (char<= #\a #\z))
+ (test-t (char<= #\a #\a))
+ (test-t (char<= #\Z #\Z))
+ (test-t (char<= #\a #\b #\c #\d #\e #\f #\g #\h #\i #\j #\k #\l #\m #\n #\o #\p #\q #\r #\s #\t #\u #\v #\w #\x #\y #\z))
+ (test-t (char<= #\a #\a #\b #\b #\c #\c #\d #\d #\e #\e #\f #\f #\g #\g #\h #\h
+ #\i #\i #\j #\j #\k #\k #\l #\l #\m #\m #\n #\n #\o #\o #\p #\p #\q #\q #\r #\r #\s #\s
+ #\t #\t #\u #\u #\v #\v #\w #\w #\x #\x #\y #\y #\z #\z))
+ (test-t (not (char<= #\z #\y #\x #\w #\v #\u #\t #\s #\r #\q #\p #\o #\n #\m #\l #\k #\j #\i #\h #\g #\f #\e #\d #\c #\b #\a)))
+ (test-t (char<= #\A #\B #\C #\D #\E #\F #\G #\H #\I #\J #\K #\L #\M #\N #\O #\P #\Q #\R #\S #\T #\U #\V #\W #\X #\Y #\Z))
+ (test-t (char<= #\A #\B #\B #\C #\D #\E #\E #\F #\G #\H #\I #\I #\J #\K #\L #\M #\N #\N #\O #\P #\Q #\R #\S #\T #\T #\U #\V #\W #\X #\Y #\Z))
+ (test-t (not (char<= #\Z #\Y #\X #\W #\V #\U #\T #\S #\R #\Q #\P #\O #\N #\M #\L #\K #\J #\I #\H #\G #\F #\E #\D #\C #\B #\A)))
+ (test-t (char<= #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9))
+ (test-t (char<= #\0 #\1 #\2 #\2 #\3 #\3 #\3 #\3 #\4 #\5 #\6 #\7 #\8 #\9 #\9))
+ (test-t (not (char<= #\9 #\8 #\7 #\6 #\5 #\4 #\3 #\2 #\1 #\0)))
+ (test-t (or (char<= #\9 #\A) (char<= #\Z #\0)))
+ (test-t (or (char<= #\9 #\a) (char<= #\z #\0)))
+ (test-t (char<= #\a #\a #\b #\c))
+ (test-t (not (char<= #\a #\b #\a #\c)))
+ (test-t (not (char<= #\a #\b #\c #\a)))
+ (test-t (not (char<= #\9 #\0)))
+ (test-t (char>= #\a))
+ (test-t (not (char>= #\a #\z)))
+ (test-t (char>= #\z #\a))
+ (test-t (char>= #\a #\a))
+ (test-t (char>= #\Z #\Z))
+ (test-t (not (char>= #\a #\b #\c #\d #\e #\f #\g #\h #\i #\j #\k #\l #\m #\n #\o #\p #\q #\r #\s #\t #\u #\v #\w #\x #\y #\z)))
+ (test-t (char>= #\z #\y #\x #\w #\v #\u #\t #\s #\r #\q #\p #\o #\n #\m #\l #\k #\j #\i #\h #\g #\f #\e #\d #\c #\b #\a))
+ (test-t (char>= #\z #\z #\y #\x #\w #\v #\u #\t #\s #\r #\q #\p #\o #\n #\n #\m #\m #\l #\k #\j #\i #\h #\g #\f #\e #\d #\c #\b #\a #\a))
+ (test-t (not (char>= #\A #\B #\C #\D #\E #\F #\G #\H #\I #\J #\K #\L #\M #\N #\O #\P #\Q #\R #\S #\T #\U #\V #\W #\X #\Y #\Z)))
+ (test-t (char>= #\Z #\Y #\X #\W #\V #\U #\T #\S #\R #\Q #\P #\O #\N #\M #\L #\K #\J #\I #\H #\G #\F #\E #\D #\C #\B #\A))
+ (test-t (char>= #\Z #\Y #\X #\W #\V #\U #\U #\T #\T #\S #\S #\R #\Q #\P #\O #\N #\M #\L #\K #\J #\I #\H #\H #\G #\G #\F #\F #\E #\D #\C #\B #\A))
+ (test-t (not (char>= #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9)))
+ (test-t (char>= #\9 #\8 #\7 #\6 #\5 #\4 #\3 #\2 #\1 #\0))
+ (test-t (char>= #\9 #\8 #\8 #\8 #\7 #\6 #\5 #\4 #\3 #\3 #\3 #\2 #\1 #\0))
+ (test-t (or (char>= #\A #\9) (char>= #\0 #\Z)))
+ (test-t (or (char>= #\a #\9) (char>= #\0 #\z)))
+ (test-t (char>= #\c #\b #\a #\a))
+ (test-t (not (char>= #\c #\b #\a #\a #\b #\c)))
+ (test-t (not (char>= #\c #\b #\a #\c)))
+ (test-t (not (char>= #\c #\b #\c #\a)))
+ (test-t (char>= #\9 #\0))
+ (test-t (not (char>= #\0 #\9)))
+ (test-t (char-equal #\a))
+ (test-t (char-equal #\a #\a))
+ (test-t (char-equal #\a #\a #\a))
+ (test-t (char-equal #\a #\a #\a #\a))
+ (test-t (char-equal #\a #\a #\a #\a #\a))
+ (test-t (char-equal #\a #\a #\a #\a #\a #\a))
+ (test-t (char-equal #\a #\A))
+ (test-t (char-equal #\a #\A #\a))
+ (test-t (char-equal #\a #\a #\A #\a))
+ (test-t (char-equal #\a #\a #\a #\A #\a))
+ (test-t (char-equal #\a #\a #\a #\a #\A #\a))
+ (test-t (let ((c #\z)) (and (eq c c) (char-equal c c))))
+ (test-t (char-equal #\Z #\z))
+ (test-t (not (char-equal #\z #\z #\z #\a)))
+ (test-t (not (char-equal #\a #\z #\z #\z #\a)))
+ (test-t (not (char-equal #\z #\i #\z #\z)))
+ (test-t (char-equal #\z #\z #\Z #\z))
+ (test-t (char-equal #\a #\A #\a #\A #\a #\A #\a #\A #\a #\A))
+ (test-t (char-not-equal #\a))
+ (test-t (char-not-equal #\a #\b))
+ (test-t (char-not-equal #\a #\b #\c))
+ (test-t (char-not-equal #\a #\b #\c #\d))
+ (test-t (char-not-equal #\a #\b #\c #\d #\e))
+ (test-t (char-not-equal #\a #\b #\c #\d #\e #\f))
+ (test-t (let ((c #\z)) (and (eq c c) (not (char-not-equal c c)))))
+ (test-t (not (char-not-equal #\Z #\z)))
+ (test-t (not (char-not-equal #\z #\z #\z #\a)))
+ (test-t (not (char= #\a #\z #\z #\z #\a)))
+ (test-t (not (char= #\z #\i #\z #\z)))
+ (test-t (not (char= #\z #\z #\Z #\z)))
+ (test-t (not (char-not-equal #\a #\a #\b #\c)))
+ (test-t (not (char-not-equal #\a #\b #\a #\c)))
+ (test-t (not (char-not-equal #\a #\b #\c #\a)))
+ (test-t (not (char-not-equal #\a #\A #\a #\A)))
+ (test-t (char-lessp #\a))
+ (test-t (char-lessp #\a #\z))
+ (test-t (char-lessp #\a #\b #\c #\d #\e #\f #\g #\h #\i #\j #\k #\l #\m #\n #\o #\p #\q #\r #\s #\t #\u #\v #\w #\x #\y #\z))
+ (test-t (not (char-lessp #\z #\y #\x #\w #\v #\u #\t #\s #\r #\q #\p #\o #\n #\m #\l #\k #\j #\i #\h #\g #\f #\e #\d #\c #\b #\a)))
+ (test-t (char-lessp #\A #\B #\C #\D #\E #\F #\G #\H #\I #\J #\K #\L #\M #\N #\O #\P #\Q #\R #\S #\T #\U #\V #\W #\X #\Y #\Z))
+ (test-t (not (char-lessp #\Z #\Y #\X #\W #\V #\U #\T #\S #\R #\Q #\P #\O #\N #\M #\L #\K #\J #\I #\H #\G #\F #\E #\D #\C #\B #\A)))
+ (test-t (char-lessp #\a #\B #\c #\D #\e #\F #\g #\H #\i #\J #\k #\L #\m #\N #\o #\P #\q #\R #\s #\T #\u #\V #\w #\X #\y #\Z))
+ (test-t (char-lessp #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9))
+ (test-t (not (char-lessp #\9 #\8 #\7 #\6 #\5 #\4 #\3 #\2 #\1 #\0)))
+ (test-t (or (char-lessp #\9 #\A) (char-lessp #\Z #\0)))
+ (test-t (or (char-lessp #\9 #\a) (char-lessp #\z #\0)))
+ (test-t (not (char-lessp #\a #\a #\b #\c)))
+ (test-t (not (char-lessp #\a #\b #\a #\c)))
+ (test-t (not (char-lessp #\a #\b #\c #\a)))
+ (test-t (not (char-lessp #\9 #\0)))
+ (test-t (and (char-lessp #\a #\Z) (char-lessp #\A #\z)))
+ (test-t (char-greaterp #\a))
+ (test-t (not (char-greaterp #\a #\z)))
+ (test-t (char-greaterp #\z #\a))
+ (test-t (not (char-greaterp #\a #\b #\c #\d #\e #\f #\g #\h #\i #\j #\k #\l #\m #\n #\o #\p #\q #\r #\s #\t #\u #\v #\w #\x #\y #\z)))
+ (test-t (char-greaterp #\z #\y #\x #\w #\v #\u #\t #\s #\r #\q #\p #\o #\n #\m #\l #\k #\j #\i #\h #\g #\f #\e #\d #\c #\b #\a))
+ (test-t (not (char-greaterp #\A #\B #\C #\D #\E #\F #\G #\H #\I #\J #\K #\L #\M #\N #\O #\P #\Q #\R #\S #\T #\U #\V #\W #\X #\Y #\Z)))
+ (test-t (char-greaterp #\Z #\Y #\X #\W #\V #\U #\T #\S #\R #\Q #\P #\O #\N #\M #\L #\K #\J #\I #\H #\G #\F #\E #\D #\C #\B #\A))
+ (test-t (char-greaterp #\z #\Y #\x #\W #\v #\U #\t #\S #\r #\Q #\p #\O #\n #\M #\l #\K #\j #\I #\h #\G #\f #\E #\d #\C #\b #\A))
+ (test-t (not (char-greaterp #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9)))
+ (test-t (char-greaterp #\9 #\8 #\7 #\6 #\5 #\4 #\3 #\2 #\1 #\0))
+ (test-t (or (char-greaterp #\A #\9) (char-greaterp #\0 #\Z)))
+ (test-t (or (char-greaterp #\a #\9) (char-greaterp #\0 #\z)))
+ (test-t (not (char-greaterp #\a #\a #\b #\c)))
+ (test-t (not (char-greaterp #\a #\b #\a #\c)))
+ (test-t (not (char-greaterp #\a #\b #\c #\a)))
+ (test-t (char-greaterp #\9 #\0))
+ (test-t (and (char-greaterp #\z #\A) (char-greaterp #\Z #\a)))
+ (test-t (char-not-greaterp #\a))
+ (test-t (char-not-greaterp #\a #\z))
+ (test-t (char-not-greaterp #\a #\a))
+ (test-t (char-not-greaterp #\Z #\Z))
+ (test-t (char-not-greaterp #\a #\b #\c #\d #\e #\f #\g #\h #\i #\j #\k #\l #\m #\n #\o #\p #\q #\r #\s #\t #\u #\v #\w #\x #\y #\z))
+ (test-t (char-not-greaterp #\a #\a #\b #\b #\c #\c #\d #\d #\e #\e #\f #\f #\g #\g #\h #\h #\i #\i
+ #\j #\j #\k #\k #\l #\l #\m #\m #\n #\n #\o #\o #\p #\p #\q #\q #\r #\r #\s #\s #\t
+ #\t #\u #\u #\v #\v #\w #\w #\x #\x #\y #\y #\z #\z))
+ (test-t (char-not-greaterp #\a #\A #\b #\B #\c #\C #\d #\D #\e #\E #\f #\F #\g #\G #\h #\H #\i #\I #\j #\J
+ #\k #\K #\l #\L #\m #\M #\n #\N #\o #\O #\p #\P #\q #\Q #\r #\R #\s #\S #\t #\T
+ #\u #\U #\v #\V #\w #\W #\x #\X #\y #\Y #\z #\z))
+ (test-t (not (char-not-greaterp #\z #\y #\x #\w #\v #\u #\t #\s #\r #\q #\p #\o #\n #\m #\l #\k #\j #\i #\h #\g #\f #\e #\d #\c #\b #\a)))
+ (test-t (char-not-greaterp #\A #\B #\C #\D #\E #\F #\G #\H #\I #\J #\K #\L #\M #\N #\O #\P #\Q #\R #\S #\T #\U #\V #\W #\X #\Y #\Z))
+ (test-t (char-not-greaterp #\A #\B #\B #\C #\D #\E #\E #\F #\G #\H #\I #\I #\J #\K #\L #\M #\N #\N #\O #\P #\Q #\R #\S #\T #\T #\U #\V #\W #\X #\Y #\Z))
+ (test-t (not (char-not-greaterp #\Z #\Y #\X #\W #\V #\U #\T #\S #\R #\Q #\P #\O #\N #\M #\L #\K #\J #\I #\H #\G #\F #\E #\D #\C #\B #\A)))
+ (test-t (char-not-greaterp #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9))
+ (test-t (char-not-greaterp #\0 #\1 #\2 #\2 #\3 #\3 #\3 #\3 #\4 #\5 #\6 #\7 #\8 #\9 #\9))
+ (test-t (not (char-not-greaterp #\9 #\8 #\7 #\6 #\5 #\4 #\3 #\2 #\1 #\0)))
+ (test-t (or (char-not-greaterp #\9 #\A) (char-not-greaterp #\Z #\0)))
+ (test-t (or (char-not-greaterp #\9 #\a) (char-not-greaterp #\z #\0)))
+ (test-t (char-not-greaterp #\a #\a #\b #\c))
+ (test-t (not (char-not-greaterp #\a #\b #\a #\c)))
+ (test-t (not (char-not-greaterp #\a #\b #\c #\a)))
+ (test-t (not (char-not-greaterp #\9 #\0)))
+ (test-t (and (char-not-greaterp #\A #\z) (char-not-greaterp #\a #\Z)))
+ (test-t (char-not-lessp #\a))
+ (test-t (not (char-not-lessp #\a #\z)))
+ (test-t (char-not-lessp #\z #\a))
+ (test-t (char-not-lessp #\a #\a))
+ (test-t (char-not-lessp #\Z #\Z))
+ (test-t (not (char-not-lessp #\a #\b #\c #\d #\e #\f #\g #\h #\i #\j #\k #\l #\m #\n #\o #\p #\q #\r #\s #\t #\u #\v #\w #\x #\y #\z)))
+ (test-t (char-not-lessp #\z #\y #\x #\w #\v #\u #\t #\s #\r #\q #\p #\o #\n #\m #\l #\k #\j #\i #\h #\g #\f #\e #\d #\c #\b #\a))
+ (test-t (char-not-lessp #\z #\z #\y #\x #\w #\v #\u #\t #\s #\r #\q #\p #\o #\n #\n #\m #\m #\l #\k #\j #\i #\h #\g #\f #\e #\d #\c #\b #\a #\a))
+ (test-t (not (char-not-lessp #\A #\B #\C #\D #\E #\F #\G #\H #\I #\J #\K #\L #\m #\N #\O #\P #\Q #\R #\S #\T #\U #\V #\W #\X #\Y #\Z)))
+ (test-t (char-not-lessp #\Z #\Y #\X #\W #\V #\U #\T #\S #\R #\Q #\P #\O #\N #\M #\L #\K #\J #\I #\H #\G #\F #\E #\D #\C #\B #\A))
+ (test-t (char-not-lessp #\Z #\Y #\X #\W #\V #\U #\U #\T #\T #\S #\S #\R #\Q #\P #\O #\N #\M #\L #\K #\J #\I #\H #\H #\G #\G #\F #\F #\E #\D #\C #\B #\A))
+ (test-t (char-not-lessp #\z #\Z #\y #\x #\w #\V #\v #\u #\t #\s #\r #\q #\p #\o #\n #\n #\m #\M #\l #\k #\K #\j #\i #\h #\g #\f #\e #\d #\c #\b #\A #\a))
+ (test-t (not (char-not-lessp #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9)))
+ (test-t (char-not-lessp #\9 #\8 #\7 #\6 #\5 #\4 #\3 #\2 #\1 #\0))
+ (test-t (char-not-lessp #\9 #\8 #\8 #\8 #\7 #\6 #\5 #\4 #\3 #\3 #\3 #\2 #\1 #\0))
+ (test-t (or (char-not-lessp #\A #\9) (char-not-lessp #\0 #\Z)))
+ (test-t (or (char-not-lessp #\a #\9) (char-not-lessp #\0 #\z)))
+ (test-t (char-not-lessp #\c #\b #\a #\a))
+ (test-t (not (char-not-lessp #\c #\b #\a #\a #\b #\c)))
+ (test-t (not (char-not-lessp #\c #\b #\a #\c)))
+ (test-t (not (char-not-lessp #\c #\b #\c #\a)))
+ (test-t (char-not-lessp #\9 #\0))
+ (test-t (not (char-not-lessp #\0 #\9)))
+ (test-t (and (char-not-lessp #\z #\A) (char-not-lessp #\Z #\a)))
+ (test-t (char= (character #\a) #\a))
+ (test-t (char= (character #\b) #\b))
+; (test-t (char= (character #\Space) #\Space))
+ (test-t (char= (character "a") #\a))
+ (test-t (char= (character "X") #\X))
+ (test-t (char= (character "z") #\z))
+ (test-t (char= (character 'a) #\a))
+; (test-t (char= (character '\a) #\a))
+ (test-t (alpha-char-p #\a))
+ (test-t (every alpha-char-p '(#\a #\b #\c #\d #\e #\f #\g #\h #\i #\j #\k #\l #\m #\n #\o #\p #\q #\r #\s #\t #\u #\v #\w #\x #\y #\z)))
+ (test-t (every alpha-char-p '(#\A #\B #\C #\D #\E #\F #\G #\H #\I #\J #\K #\L #\M #\N #\O #\P #\Q #\R #\S #\T #\U #\V #\W #\X #\Y #\Z)))
+ (test-t (notany alpha-char-p '(#\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9)))
+; (test-t (not (alpha-char-p #\Newline)))
+ (test-t (alphanumericp #\Z))
+ (test-t (alphanumericp #\9))
+ (test-t (every alphanumericp '(#\a #\b #\c #\d #\e #\f #\g #\h #\i #\j #\k #\l #\m #\n #\o #\p #\q #\r #\s #\t #\u #\v #\w #\x #\y #\z)))
+ (test-t (every alphanumericp '(#\A #\B #\C #\D #\E #\F #\G #\H #\I #\J #\K #\L #\M #\N #\O #\P #\Q #\R #\S #\T #\U #\V #\W #\X #\Y #\Z)))
+ (test-t (every alphanumericp '(#\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9)))
+; (test-t (not (alphanumericp #\Newline)))
+ (test-t (not (alphanumericp #\#)))
+ (test-t (char= (digit-char 0) #\0))
+; (test-t (char= (digit-char 10 11) #\A))
+ (test-t (null (digit-char 10 10)))
+ (test-t (char= (digit-char 7) #\7))
+ (test-t (null (digit-char 12)))
+; (test-t (char= (digit-char 12 16) #\C))
+ (test-t (null (digit-char 6 2)))
+ (test-t (char= (digit-char 1 2) #\1))
+; (test-t (char= (digit-char 35 36) #\Z))
+ (test-t (= (digit-char-p #\0) 0))
+ (test-t (= (digit-char-p #\5) 5))
+ (test-t (not (digit-char-p #\5 2)))
+ (test-t (not (digit-char-p #\A)))
+ (test-t (not (digit-char-p #\a)))
+; (test-t (= (digit-char-p #\A 11) 10))
+ (test-t (= (digit-char-p #\a 11) 10))
+; (test-t (standard-char-p #\a))
+; (test-t (standard-char-p #\z))
+; (test-t (standard-char-p #\Newline))
+; (test-t (every standard-char-p " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_'abcdefghijklmnopqrstuvwxyz{|}~"))
+ (test-t (char= (char-upcase #\a) #\A))
+ (test-t (char= (char-upcase #\A) #\A))
+ (test-t (char= (char-upcase #\-) #\-))
+ (test-t (char= (char-downcase #\A) #\a))
+ (test-t (char= (char-downcase #\a) #\a))
+ (test-t (char= (char-downcase #\-) #\-))
+ (test-t (not (upper-case-p #\a)))
+ (test-t (upper-case-p #\A))
+ (test-t (not (upper-case-p #\-)))
+ (test-t (not (lower-case-p #\A)))
+ (test-t (lower-case-p #\a))
+ (test-t (not (lower-case-p #\-)))
+; (test-t (char= #\ (name-char (char-name #\ ))))
+; (test-t (char= #\Space (name-char (char-name #\Space))))
+; (test-t (char= #\Newline (name-char (char-name #\Newline))))
+
+
+ (test-t (simple-string-p ""))
+ (test-t (simple-string-p "abc"))
+ (test-t (not (simple-string-p 'not-a-string)))
+ (test-t (char= (char "abc" 0) #\a))
+ (test-t (char= (char "abc" 1) #\b))
+ (test-t (char= (char "abc" 2) #\c))
+ (test-t (char= (schar "abc" 0) #\a))
+ (test-t (char= (schar "abc" 1) #\b))
+ (test-t (char= (schar "abc" 2) #\c))
+ (test-t (string= (cl-string "") ""))
+ (test-t (string= (cl-string "abc") "abc"))
+ (test-t (string= (cl-string "a") "a"))
+ (test-t (string= (cl-string 'abc) "abc"))
+ (test-t (string= (cl-string 'a) "a"))
+ (test-t (string= (cl-string #\a) "a"))
+ (test-t (string= (string-upcase "abcde") "ABCDE"))
+ (test-t (string= (string-upcase "Dr. Livingston, I presume?") "DR. LIVINGSTON, I PRESUME?"))
+ (test-t (string= (string-upcase "Dr. Livingston, I presume?" :start 6 :end 10) "Dr. LiVINGston, I presume?"))
+ (test-t (string= (string-upcase 'Kludgy-HASH-Search) "KLUDGY-HASH-SEARCH"))
+ (test-t (string= (string-upcase "abcde" :start 2 :end nil) "abCDE"))
+ (test-t (string= (string-downcase "Dr. Livingston, I presume?") "dr. livingston, i presume?"))
+ (test-t (string= (string-downcase 'Kludgy-HASH-Search) "kludgy-hash-search"))
+ (test-t (string= (string-downcase "A FOOL" :start 2 :end nil) "A fool"))
+ (test-t (string= (string-capitalize "elm 13c arthur;fig don't") "Elm 13c Arthur;Fig Don'T"))
+ (test-t (string= (string-capitalize " hello ") " Hello "))
+ (test-t (string= (string-capitalize "occlUDeD cASEmenTs FOreSTAll iNADVertent DEFenestraTION") "Occluded Casements Forestall Inadvertent Defenestration"))
+ (test-t (string= (string-capitalize 'kludgy-hash-search) "Kludgy-Hash-Search"))
+ (test-t (string= (string-capitalize "DON'T!") "Don'T!"))
+ (test-t (string= (string-capitalize "pipe 13a, foo16c") "Pipe 13a, Foo16c"))
+ (test-t (string= (string-capitalize "a fool" :start 2 :end nil) "a Fool"))
+ (test-t (let ((str (copy-seq "0123ABCD890a"))) (and (string= (nstring-downcase str :start 5 :end 7) "0123AbcD890a") (string= str "0123AbcD890a"))))
+ (test-t (let* ((str0 (copy-seq "abcde")) (str (nstring-upcase str0))) (and (eq str0 str) (string= str "ABCDE"))))
+ (test-t (let* ((str0 (copy-seq "Dr. Livingston, I presume?")) (str (nstring-upcase str0))) (and (eq str0 str) (string= str "DR. LIVINGSTON, I PRESUME?"))))
+ (test-t (let* ((str0 (copy-seq "Dr. Livingston, I presume?")) (str (nstring-upcase str0 :start 6 :end 10))) (and (eq str0 str) (string= str "Dr. LiVINGston, I presume?"))))
+ (test-t (let* ((str0 (copy-seq "abcde")) (str (nstring-upcase str0 :start 2 :end nil))) (string= str "abCDE")))
+ (test-t (let* ((str0 (copy-seq "Dr. Livingston, I presume?")) (str (nstring-downcase str0))) (and (eq str0 str) (string= str "dr. livingston, i presume?"))))
+ (test-t (let* ((str0 (copy-seq "ABCDE")) (str (nstring-downcase str0 :start 2 :end nil))) (string= str "ABcde")))
+ (test-t (let* ((str0 (copy-seq "elm 13c arthur;fig don't")) (str (nstring-capitalize str0))) (and (eq str0 str) (string= str "Elm 13c Arthur;Fig Don'T"))))
+ (test-t (let* ((str0 (copy-seq " hello ")) (str (nstring-capitalize str0))) (and (eq str0 str) (string= str " Hello "))))
+ (test-t (let* ((str0 (copy-seq "occlUDeD cASEmenTs FOreSTAll iNADVertent DEFenestraTION")) (str (nstring-capitalize str0))) (and (eq str0 str) (string= str "Occluded Casements Forestall Inadvertent Defenestration"))))
+ (test-t (let* ((str0 (copy-seq "DON'T!")) (str (nstring-capitalize str0))) (and (eq str0 str) (string= str "Don'T!"))))
+ (test-t (let* ((str0 (copy-seq "pipe 13a, foo16c")) (str (nstring-capitalize str0))) (and (eq str0 str) (string= str "Pipe 13a, Foo16c"))))
+ (test-t (let* ((str0 (copy-seq "a fool")) (str (nstring-capitalize str0 :start 2 :end nil))) (string= str "a Fool")))
+ (test-t (string= (string-trim "abc" "abcaakaaakabcaaa") "kaaak"))
+ (test-t (string= (string-trim '(#\space) " garbanzo beans ") "garbanzo beans"))
+ (test-t (string= (string-trim " (*)" " ( *three (silly) words* ) ") "three (silly) words"))
+ (test-t (string= (string-left-trim "abc" "labcabcabc") "labcabcabc"))
+ (test-t (string= (string-left-trim " (*)" " ( *three (silly) words* ) ") "three (silly) words* ) "))
+ (test-t (string= (string-right-trim " (*)" " ( *three (silly) words* ) ") " ( *three (silly) words"))
+ (test-t (string= (string-trim "ABC" "abc") "abc"))
+ (test-t (string= (string-trim "AABBCC" "abc") "abc"))
+ (test-t (string= (string-trim "" "abc") "abc"))
+ (test-t (string= (string-trim "ABC" "") ""))
+ (test-t (string= (string-trim "cba" "abc") ""))
+ (test-t (string= (string-trim "cba" "abccba") ""))
+ (test-t (string= (string-trim "ccbbba" "abccba") ""))
+ (test-t (string= (string-trim "cba" "abcxabc") "x"))
+ (test-t (string= (string-trim "xyz" "xxyabcxyyz") "abc"))
+ (test-t (string= (string-trim "a" #\a) ""))
+ (test-t (string= (string-left-trim "ABC" "abc") "abc"))
+ (test-t (string= (string-left-trim "" "abc") "abc"))
+ (test-t (string= (string-left-trim "ABC" "") ""))
+ (test-t (string= (string-left-trim "cba" "abc") ""))
+ (test-t (string= (string-left-trim "cba" "abccba") ""))
+ (test-t (string= (string-left-trim "cba" "abcxabc") "xabc"))
+ (test-t (string= (string-left-trim "xyz" "xxyabcxyz") "abcxyz"))
+ (test-t (string= (string-left-trim "a" #\a) ""))
+ (test-t (string= (string-right-trim "ABC" "abc") "abc"))
+ (test-t (string= (string-right-trim "" "abc") "abc"))
+ (test-t (string= (string-right-trim "ABC" "") ""))
+ (test-t (string= (string-right-trim "cba" "abc") ""))
+ (test-t (string= (string-right-trim "cba" "abccba") ""))
+ (test-t (string= (string-right-trim "cba" "abcxabc") "abcx"))
+ (test-t (string= (string-right-trim "xyz" "xxyabcxyz") "xxyabc"))
+ (test-t (string= (string-right-trim "a" #\a) ""))
+ (test-t (string= (cl-string "already a string") "already a string"))
+ (test-t (string= (cl-string #\c) "c"))
+ (test-t (string= "foo" "foo"))
+ (test-t (not (string= "foo" "Foo")))
+ (test-t (not (string= "foo" "bar")))
+ (test-t (string= "together" "frog" :start1 1 :end1 3 :start2 2))
+ (test-t (string-equal "foo" "Foo"))
+ (test-t (string= "abcd" "01234abcd9012" :start2 5 :end2 9))
+ (test-t (eql (string< "aaaa" "aaab") 3))
+ (test-t (eql (string>= "aaaaa" "aaaa") 4))
+ (test-t (eql (string-not-greaterp "Abcde" "abcdE") 5))
+ (test-t (eql (string-lessp "012AAAA789" "01aaab6" :start1 3 :end1 7 :start2 2 :end2 6) 6))
+ (test-t (not (string-not-equal "AAAA" "aaaA")))
+ (test-t (string= "" ""))
+ (test-t (not (string= "abc" "")))
+ (test-t (not (string= "" "abc")))
+ (test-t (not (string= "A" "a")))
+ (test-t (string= "abc" "xyz" :start1 3 :start2 3))
+ (test-t (string= "abc" "xyz" :start1 1 :end1 1 :start2 0 :end2 0))
+ (test-t (string= "axyza" "xyz" :start1 1 :end1 4))
+ (test-t (string= "axyza" "xyz" :start1 1 :end1 4 :start2 0 :end2 nil))
+ (test-t (string= "abxyz" "xyabz" :end1 2 :start2 2 :end2 4))
+ (test-t (not (string= "love" "hate")))
+ (test-t (string= 'love 'love))
+ (test-t (not (string= 'love "hate")))
+ (test-t (string= #\a #\a))
+ (test-t (not (string/= "" "")))
+ (test-t (eql (string/= "abc" "") 0))
+ (test-t (eql (string/= "" "abc") 0))
+ (test-t (eql (string/= "A" "a") 0))
+ (test-t (not (string/= "abc" "xyz" :start1 3 :start2 3)))
+ (test-t (not (string/= "abc" "xyz" :start1 1 :end1 1 :start2 0 :end2 0)))
+ (test-t (not (string/= "axyza" "xyz" :start1 1 :end1 4)))
+ (test-t (not (string/= "axyza" "xyz" :start1 1 :end1 4 :start2 0 :end2 nil)))
+ (test-t (not (string/= "abxyz" "xyabz" :end1 2 :start2 2 :end2 4)))
+ (test-t (eql (string/= "love" "hate") 0))
+ (test-t (eql (string/= "love" "loVe") 2))
+ (test-t (not (string/= "life" "death" :start1 3 :start2 1 :end2 2)))
+ (test-t (eql (string/= "abcxyz" "ABCxyZ" :start1 3 :start2 3) 5))
+ (test-t (eql (string/= "abcxyz" "ABCxyZ" :start1 3 :end1 nil :start2 3 :end2 nil) 5))
+ (test-t (eql (string/= "abcxyz" "ABCxyZ" :end1 nil :start2 3 :end2 3) 0))
+ (test-t (eql (string/= "abc" "abcxyz") 3))
+ (test-t (eql (string/= "abcxyz" "abc") 3))
+ (test-t (eql (string/= "abcxyz" "") 0))
+ (test-t (eql (string/= "AbcDef" "cdef" :start1 2) 3))
+ (test-t (eql (string/= "cdef" "AbcDef" :start2 2) 1))
+ (test-t (= (string/= 'love "hate") 0))
+ (test-t (not (string/= 'love 'love)))
+ (test-t (not (string/= #\a #\a)))
+ (test-t (= (string/= #\a #\b) 0))
+ (test-t (not (string< "" "")))
+ (test-t (not (string< "dog" "dog")))
+ (test-t (not (string< " " " ")))
+ (test-t (not (string< "abc" "")))
+ (test-t (eql (string< "" "abc") 0))
+ (test-t (eql (string< "ab" "abc") 2))
+ (test-t (not (string< "abc" "ab")))
+ (test-t (eql (string< "aaa" "aba") 1))
+ (test-t (not (string< "aba" "aaa")))
+ (test-t (not (string< "my cat food" "your dog food" :start1 6 :start2 8)))
+ (test-t (not (string< "cat food 2 dollars" "dog food 3 dollars" :start1 3 :end1 9 :start2 3 :end2 9)))
+ (test-t (eql (string< "xyzabc" "abcd" :start1 3) 6))
+ (test-t (eql (string< "abc" "abc" :end1 1) 1))
+ (test-t (eql (string< "xyzabc" "abc" :start1 3 :end1 5) 5))
+ (test-t (eql (string< "xyz" "abcxyzXYZ" :start2 3) 3))
+ (test-t (not (string< "abc" "abcxyz" :end2 3)))
+ (test-t (eql (string< "xyz" "abcxyz" :end1 2 :start2 3) 2))
+ (test-t (not (string< "xyzabc" "abcdef" :start1 3 :end2 3)))
+ (test-t (eql (string< "aaaa" "z") 0))
+ (test-t (eql (string< "pppTTTaTTTqqq" "pTTTxTTT" :start1 3 :start2 1) 6))
+ (test-t (eql (string< "pppTTTaTTTqqq" "pTTTxTTT" :start1 6 :end1 7 :start2 4 :end2 5) 6))
+ (test-t (not (string< 'love 'hate)))
+ (test-t (= (string< 'peace 'war) 0))
+ (test-t (not (string< 'love 'love)))
+ (test-t (not (string< #\a #\a)))
+ (test-t (= (string< #\a #\b) 0))
+ (test-t (not (string> "" "")))
+ (test-t (not (string> "dog" "dog")))
+ (test-t (not (string> " " " ")))
+ (test-t (eql (string> "abc" "") 0))
+ (test-t (not (string> "" "abc")))
+ (test-t (not (string> "ab" "abc")))
+ (test-t (eql (string> "abc" "ab") 2))
+ (test-t (eql (string> "aba" "aaa") 1))
+ (test-t (not (string> "aaa" "aba")))
+ (test-t (not (string> "my cat food" "your dog food" :start1 6 :start2 8)))
+ (test-t (not (string> "cat food 2 dollars" "dog food 3 dollars" :start1 3 :end1 9 :start2 3 :end2 9)))
+ (test-t (eql (string> "xyzabcde" "abcd" :start1 3) 7))
+ (test-t (not (string> "abc" "abc" :end1 1)))
+ (test-t (eql (string> "xyzabc" "a" :start1 3 :end1 5) 4))
+ (test-t (eql (string> "xyzXYZ" "abcxyz" :start2 3) 3))
+ (test-t (eql (string> "abcxyz" "abcxyz" :end2 3) 3))
+ (test-t (not (string> "xyzXYZ" "abcxyz" :end1 2 :start2 3)))
+ (test-t (not (string> "xyzabc" "abcdef" :start1 3 :end2 3)))
+ (test-t (eql (string> "z" "aaaa") 0))
+ (test-t (eql (string> "pTTTxTTTqqq" "pppTTTaTTT" :start1 1 :start2 3) 4))
+ (test-t (eql (string> "pppTTTxTTTqqq" "pTTTaTTT" :start1 6 :end1 7 :start2 4 :end2 5) 6))
+ (test-t (= (string> 'love 'hate) 0))
+ (test-t (not (string> 'peace 'war)))
+ (test-t (not (string> 'love 'love)))
+ (test-t (not (string> #\a #\a)))
+ (test-t (not (string> #\a #\b)))
+ (test-t (= (string> #\z #\a) 0))
+ (test-t (eql (string<= "" "") 0))
+ (test-t (eql (string<= "dog" "dog") 3))
+ (test-t (eql (string<= " " " ") 1))
+ (test-t (not (string<= "abc" "")))
+ (test-t (eql (string<= "ab" "abc") 2))
+ (test-t (eql (string<= "aaa" "aba") 1))
+ (test-t (not (string<= "aba" "aaa")))
+ (test-t (eql (string<= "my cat food" "your dog food" :start1 6 :start2 8) 11))
+ (test-t (eql (string<= "cat food 2 dollars" "dog food 3 dollars" :start1 3 :end1 9 :start2 3 :end2 9) 9))
+ (test-t (eql (string<= "xyzabc" "abcd" :start1 3) 6))
+ (test-t (eql (string<= "abc" "abc" :end1 1) 1))
+ (test-t (eql (string<= "xyzabc" "abc" :start1 3 :end1 5) 5))
+ (test-t (eql (string<= "xyz" "abcxyzXYZ" :start2 3) 3))
+ (test-t (eql (string<= "abc" "abcxyz" :end2 3) 3))
+ (test-t (eql (string<= "xyz" "abcxyz" :end1 2 :start2 3) 2))
+ (test-t (eql (string<= "xyzabc" "abcdef" :start1 3 :end2 3) 6))
+ (test-t (eql (string<= "aaaa" "z") 0))
+ (test-t (eql (string<= "pppTTTaTTTqqq" "pTTTxTTT" :start1 3 :start2 1) 6))
+ (test-t (eql (string<= "pppTTTaTTTqqq" "pTTTxTTT" :start1 6 :end1 7 :start2 4 :end2 5) 6))
+ (test-t (not (string<= 'love 'hate)))
+ (test-t (= (string<= 'peace 'war) 0))
+ (test-t (= (string<= 'love 'love) 4))
+ (test-t (= (string<= #\a #\a) 1))
+ (test-t (= (string<= #\a #\b) 0))
+ (test-t (not (string<= #\z #\a)))
+ (test-t (eql (string>= "" "") 0))
+ (test-t (eql (string>= "dog" "dog") 3))
+ (test-t (eql (string>= " " " ") 1))
+ (test-t (eql (string>= "abc" "") 0))
+ (test-t (not (string>= "" "abc")))
+ (test-t (not (string>= "ab" "abc")))
+ (test-t (eql (string>= "abc" "ab") 2))
+ (test-t (eql (string>= "aba" "aaa") 1))
+ (test-t (not (string>= "aaa" "aba")))
+ (test-t (eql (string>= "my cat food" "your dog food" :start1 6 :start2 8) 11))
+ (test-t (eql (string>= "cat food 2 dollars" "dog food 3 dollars" :start1 3 :end1 9 :start2 3 :end2 9) 9))
+ (test-t (eql (string>= "xyzabcde" "abcd" :start1 3) 7))
+ (test-t (not (string>= "abc" "abc" :end1 1)))
+ (test-t (eql (string>= "xyzabc" "a" :start1 3 :end1 5) 4))
+ (test-t (eql (string>= "xyzXYZ" "abcxyz" :start2 3) 3))
+ (test-t (eql (string>= "abcxyz" "abcxyz" :end2 3) 3))
+ (test-t (not (string>= "xyzXYZ" "abcxyz" :end1 2 :start2 3)))
+ (test-t (eql (string>= "xyzabc" "abcdef" :start1 3 :end2 3) 6))
+ (test-t (eql (string>= "z" "aaaa") 0))
+ (test-t (eql (string>= "pTTTxTTTqqq" "pppTTTaTTT" :start1 1 :start2 3) 4))
+ (test-t (eql (string>= "pppTTTxTTTqqq" "pTTTaTTT" :start1 6 :end1 7 :start2 4 :end2 5) 6))
+ (test-t (= (string>= 'love 'hate) 0))
+ (test-t (not (string>= 'peace 'war)))
+ (test-t (= (string>= 'love 'love) 4))
+ (test-t (= (string>= #\a #\a) 1))
+ (test-t (not (string>= #\a #\b)))
+ (test-t (= (string>= #\z #\a) 0))
+ (test-t (string-equal "" ""))
+ (test-t (not (string-equal "abc" "")))
+ (test-t (not (string-equal "" "abc")))
+ (test-t (string-equal "A" "a"))
+ (test-t (string-equal "abc" "xyz" :start1 3 :start2 3))
+ (test-t (string-equal "abc" "xyz" :start1 1 :end1 1 :start2 0 :end2 0))
+ (test-t (string-equal "axyza" "xyz" :start1 1 :end1 4))
+ (test-t (string-equal "axyza" "xyz" :start1 1 :end1 4 :start2 0 :end2 nil))
+ (test-t (string-equal "abxyz" "xyabz" :end1 2 :start2 2 :end2 4))
+ (test-t (not (string-equal "love" "hate")))
+ (test-t (string-equal "xyz" "XYZ"))
+ (test-t (not (string-equal 'love 'hate)))
+ (test-t (not (string-equal 'peace 'war)))
+ (test-t (string-equal 'love 'love))
+ (test-t (string-equal #\a #\a))
+ (test-t (not (string-equal #\a #\b)))
+ (test-t (not (string-equal #\z #\a)))
+ (test-t (not (string-not-equal "" "")))
+ (test-t (eql (string-not-equal "abc" "") 0))
+ (test-t (eql (string-not-equal "" "abc") 0))
+ (test-t (not (string-not-equal "A" "a")))
+ (test-t (not (string-not-equal "abc" "xyz" :start1 3 :start2 3)))
+ (test-t (not (string-not-equal "abc" "xyz" :start1 1 :end1 1 :start2 0 :end2 0)))
+ (test-t (not (string-not-equal "axyza" "xyz" :start1 1 :end1 4)))
+ (test-t (not (string-not-equal "axyza" "xyz" :start1 1 :end1 4 :start2 0 :end2 nil)))
+ (test-t (not (string-not-equal "abxyz" "xyabz" :end1 2 :start2 2 :end2 4)))
+ (test-t (eql (string-not-equal "love" "hate") 0))
+ (test-t (not (string-not-equal "love" "loVe")))
+ (test-t (not (string-not-equal "life" "death" :start1 3 :start2 1 :end2 2)))
+ (test-t (not (string-not-equal "abcxyz" "ABCxyZ" :start1 3 :start2 3)))
+ (test-t (not (string-not-equal "abcxyz" "ABCxyZ" :start1 3 :end1 nil :start2 3 :end2 nil)))
+ (test-t (eql (string-not-equal "abcxyz" "ABCxyZ" :end1 nil :start2 3 :end2 3) 0))
+ (test-t (eql (string-not-equal "abc" "abcxyz") 3))
+ (test-t (eql (string-not-equal "abcxyz" "abc") 3))
+ (test-t (eql (string-not-equal "abcxyz" "") 0))
+ (test-t (not (string-not-equal "AbcDef" "cdef" :start1 2)))
+ (test-t (not (string-not-equal "cdef" "AbcDef" :start2 2)))
+ (test-t (not (string-not-equal "ABC" "abc")))
+ (test-t (= (string-not-equal 'love 'hate) 0))
+ (test-t (= (string-not-equal 'peace 'war) 0))
+ (test-t (not (string-not-equal 'love 'love)))
+ (test-t (not (string-not-equal #\a #\a)))
+ (test-t (= (string-not-equal #\a #\b) 0))
+ (test-t (= (string-not-equal #\z #\a) 0))
+ (test-t (not (string-lessp "" "")))
+ (test-t (not (string-lessp "dog" "dog")))
+ (test-t (not (string-lessp " " " ")))
+ (test-t (not (string-lessp "abc" "")))
+ (test-t (eql (string-lessp "" "abc") 0))
+ (test-t (eql (string-lessp "ab" "abc") 2))
+ (test-t (not (string-lessp "abc" "ab")))
+ (test-t (eql (string-lessp "aaa" "aba") 1))
+ (test-t (not (string-lessp "aba" "aaa")))
+ (test-t (not (string-lessp "my cat food" "your dog food" :start1 6 :start2 8)))
+ (test-t (not (string-lessp "cat food 2 dollars" "dog food 3 dollars" :start1 3 :end1 9 :start2 3 :end2 9)))
+ (test-t (eql (string-lessp "xyzabc" "abcd" :start1 3) 6))
+ (test-t (eql (string-lessp "abc" "abc" :end1 1) 1))
+ (test-t (eql (string-lessp "xyzabc" "abc" :start1 3 :end1 5) 5))
+ (test-t (eql (string-lessp "xyz" "abcxyzXYZ" :start2 3) 3))
+ (test-t (not (string-lessp "abc" "abcxyz" :end2 3)))
+ (test-t (eql (string-lessp "xyz" "abcxyz" :end1 2 :start2 3) 2))
+ (test-t (not (string-lessp "xyzabc" "abcdef" :start1 3 :end2 3)))
+ (test-t (eql (string-lessp "aaaa" "z") 0))
+ (test-t (eql (string-lessp "pppTTTaTTTqqq" "pTTTxTTT" :start1 3 :start2 1) 6))
+ (test-t (eql (string-lessp "pppTTTaTTTqqq" "pTTTxTTT" :start1 6 :end1 7 :start2 4 :end2 5) 6))
+ (test-t (and (not (string-lessp "abc" "ABC")) (not (string-lessp "ABC" "abc"))))
+ (test-t (not (string-lessp 'love 'hate)))
+ (test-t (= (string-lessp 'peace 'war) 0))
+ (test-t (not (string-lessp 'love 'love)))
+ (test-t (not (string-lessp #\a #\a)))
+ (test-t (= (string-lessp #\a #\b) 0))
+ (test-t (not (string-lessp #\z #\a)))
+ (test-t (not (string-greaterp "" "")))
+ (test-t (not (string-greaterp "dog" "dog")))
+ (test-t (not (string-greaterp " " " ")))
+ (test-t (eql (string-greaterp "abc" "") 0))
+ (test-t (not (string-greaterp "" "abc")))
+ (test-t (not (string-greaterp "ab" "abc")))
+ (test-t (eql (string-greaterp "abc" "ab") 2))
+ (test-t (eql (string-greaterp "aba" "aaa") 1))
+ (test-t (not (string-greaterp "aaa" "aba")))
+ (test-t (not (string-greaterp "my cat food" "your dog food" :start1 6 :start2 8)))
+ (test-t (not (string-greaterp "cat food 2 dollars" "dog food 3 dollars" :start1 3 :end1 9 :start2 3 :end2 9)))
+ (test-t (eql (string-greaterp "xyzabcde" "abcd" :start1 3) 7))
+ (test-t (not (string-greaterp "abc" "abc" :end1 1)))
+ (test-t (eql (string-greaterp "xyzabc" "a" :start1 3 :end1 5) 4))
+ (test-t (eql (string-greaterp "xyzXYZ" "abcxyz" :start2 3) 3))
+ (test-t (eql (string-greaterp "abcxyz" "abcxyz" :end2 3) 3))
+ (test-t (not (string-greaterp "xyzXYZ" "abcxyz" :end1 2 :start2 3)))
+ (test-t (not (string-greaterp "xyzabc" "abcdef" :start1 3 :end2 3)))
+ (test-t (eql (string-greaterp "z" "aaaa") 0))
+ (test-t (eql (string-greaterp "pTTTxTTTqqq" "pppTTTaTTT" :start1 1 :start2 3) 4))
+ (test-t (eql (string-greaterp "pppTTTxTTTqqq" "pTTTaTTT" :start1 6 :end1 7 :start2 4 :end2 5) 6))
+ (test-t (and (not (string-greaterp "abc" "ABC")) (not (string-greaterp "ABC" "abc"))))
+ (test-t (= (string-greaterp 'love 'hate) 0))
+ (test-t (not (string-greaterp 'peace 'war)))
+ (test-t (not (string-greaterp 'love 'love)))
+ (test-t (not (string-greaterp #\a #\a)))
+ (test-t (not (string-greaterp #\a #\b)))
+ (test-t (= (string-greaterp #\z #\a) 0))
+ (test-t (eql (string-not-greaterp "" "") 0))
+ (test-t (eql (string-not-greaterp "dog" "dog") 3))
+ (test-t (eql (string-not-greaterp " " " ") 1))
+ (test-t (not (string-not-greaterp "abc" "")))
+ (test-t (eql (string-not-greaterp "ab" "abc") 2))
+ (test-t (eql (string-not-greaterp "aaa" "aba") 1))
+ (test-t (not (string-not-greaterp "aba" "aaa")))
+ (test-t (eql (string-not-greaterp "my cat food" "your dog food" :start1 6 :start2 8) 11))
+ (test-t (eql (string-not-greaterp "cat food 2 dollars" "dog food 3 dollars" :start1 3 :end1 9 :start2 3 :end2 9) 9))
+ (test-t (eql (string-not-greaterp "xyzabc" "abcd" :start1 3) 6))
+ (test-t (eql (string-not-greaterp "abc" "abc" :end1 1) 1))
+ (test-t (eql (string-not-greaterp "xyzabc" "abc" :start1 3 :end1 5) 5))
+ (test-t (eql (string-not-greaterp "xyz" "abcxyzXYZ" :start2 3) 3))
+ (test-t (eql (string-not-greaterp "abc" "abcxyz" :end2 3) 3))
+ (test-t (eql (string-not-greaterp "xyz" "abcxyz" :end1 2 :start2 3) 2))
+ (test-t (eql (string-not-greaterp "xyzabc" "abcdef" :start1 3 :end2 3) 6))
+ (test-t (eql (string-not-greaterp "aaaa" "z") 0))
+ (test-t (eql (string-not-greaterp "pppTTTaTTTqqq" "pTTTxTTT" :start1 3 :start2 1) 6))
+ (test-t (eql (string-not-greaterp "pppTTTaTTTqqq" "pTTTxTTT" :start1 6 :end1 7 :start2 4 :end2 5) 6))
+ (test-t (and (eql (string-not-greaterp "abc" "ABC") 3) (eql (string-not-greaterp "ABC" "abc") 3)))
+ (test-t (not (string-not-greaterp 'love 'hate)))
+ (test-t (= (string-not-greaterp 'peace 'war) 0))
+ (test-t (= (string-not-greaterp 'love 'love) 4))
+ (test-t (= (string-not-greaterp #\a #\a) 1))
+ (test-t (= (string-not-greaterp #\a #\b) 0))
+ (test-t (not (string-not-greaterp #\z #\a)))
+ (test-t (eql (string-not-lessp "" "") 0))
+ (test-t (eql (string-not-lessp "dog" "dog") 3))
+ (test-t (eql (string-not-lessp " " " ") 1))
+ (test-t (eql (string-not-lessp "abc" "") 0))
+ (test-t (not (string-not-lessp "" "abc")))
+ (test-t (not (string-not-lessp "ab" "abc")))
+ (test-t (eql (string-not-lessp "abc" "ab") 2))
+ (test-t (eql (string-not-lessp "aba" "aaa") 1))
+ (test-t (not (string-not-lessp "aaa" "aba")))
+ (test-t (eql (string-not-lessp "my cat food" "your dog food" :start1 6 :start2 8) 11))
+ (test-t (eql (string-not-lessp "cat food 2 dollars" "dog food 3 dollars" :start1 3 :end1 9 :start2 3 :end2 9) 9))
+ (test-t (eql (string-not-lessp "xyzabcde" "abcd" :start1 3) 7))
+ (test-t (not (string-not-lessp "abc" "abc" :end1 1)))
+ (test-t (eql (string-not-lessp "xyzabc" "a" :start1 3 :end1 5) 4))
+ (test-t (eql (string-not-lessp "xyzXYZ" "abcxyz" :start2 3) 3))
+ (test-t (eql (string-not-lessp "abcxyz" "abcxyz" :end2 3) 3))
+ (test-t (not (string-not-lessp "xyzXYZ" "abcxyz" :end1 2 :start2 3)))
+ (test-t (eql (string-not-lessp "xyzabc" "abcdef" :start1 3 :end2 3) 6))
+ (test-t (eql (string-not-lessp "z" "aaaa") 0))
+ (test-t (eql (string-not-lessp "pTTTxTTTqqq" "pppTTTaTTT" :start1 1 :start2 3) 4))
+ (test-t (eql (string-not-lessp "pppTTTxTTTqqq" "pTTTaTTT" :start1 6 :end1 7 :start2 4 :end2 5) 6))
+ (test-t (and (eql (string-not-lessp "abc" "ABC") 3) (eql (string-not-lessp "ABC" "abc") 3)))
+ (test-t (= (string-not-lessp 'love 'hate) 0))
+ (test-t (not (string-not-lessp 'peace 'war)))
+ (test-t (= (string-not-lessp 'love 'love) 4))
+ (test-t (= (string-not-lessp #\a #\a) 1))
+ (test-t (not (string-not-lessp #\a #\b)))
+ (test-t (= (string-not-lessp #\z #\a) 0))
+ (test-t (stringp "aaaaaa"))
+ (test-t (not (stringp #\a)))
+ (test-t (not (stringp 'a)))
+ (test-t (not (stringp '(string))))
+ (test-t (string= (cl-make-string 3 :initial-element #\a) "aaa"))
+ (test-t (string= (cl-make-string 1 :initial-element #\space) " "))
+ (test-t (string= (cl-make-string 0) ""))
+
+ (test-t (null (dotimes (i 10))))
+ (test-t (= (dotimes (temp-one 10 temp-one)) 10))
+ (test-t (let ((temp-two 0)) (and (eq t (dotimes (temp-one 10 t) (incf temp-two))) (eql temp-two 10))))
+ (test-t (let ((count 0)) (eql (dotimes (i 5 count) (incf count)) 5)))
+ (test-t (let ((count 0)) (eql (dotimes (i 1 count) (incf count)) 1)))
+ (test-t (let ((count 0)) (zerop (dotimes (i 0 count) (incf count)))))
+ (test-t (let ((count 0)) (zerop (dotimes (i -1 count) (incf count)))))
+ (test-t (let ((count 0)) (zerop (dotimes (i -100 count) (incf count)))))
+ (test-t (eql (dotimes (i 3 i)) 3))
+ (test-t (eql (dotimes (i 2 i)) 2))
+ (test-t (eql (dotimes (i 1 i)) 1))
+ (test-t (eql (dotimes (i 0 i)) 0))
+ (test-t (eql (dotimes (i -1 i)) 0))
+ (test-t (eql (dotimes (i -2 i)) 0))
+ (test-t (eql (dotimes (i -10 i)) 0))
+ (test-t (let ((list nil)) (and (eq (dotimes (i 10 t) (push i list)) t) (equal list '(9 8 7 6 5 4 3 2 1 0)))))
+ (test-t (let ((list nil)) (equal (dotimes (i 10 (push i list)) (push i list)) '(10 9 8 7 6 5 4 3 2 1 0))))
+ (test-t (let ((list nil)) (equal (dotimes (i '10 (push i list)) (push i list)) '(10 9 8 7 6 5 4 3 2 1 0))))
+ (test-t (let ((list nil)) (equal (dotimes (i (/ 100 10) (push i list)) (push i list)) '(10 9 8 7 6 5 4 3 2 1 0))))
+ (test-t (= 3 (let ((i 3)) (dotimes (i i i) ))))
+ (test-t (= 3 (let ((x 0)) (dotimes (i 3 x) (incf x)))))
+ (test-t (= 3 (dotimes (i 3 i) )))
+ (test-t (= 3 (let ((x 0)) (dotimes (i 3 x) (declare (fixnum i)) (incf x)))))
+ (test-t (null (dolist (x '()))))
+ (test-t (null (dolist (x '(a)))))
+ (test-t (eq t (dolist (x nil t))))
+ (test-t (= 6 (let ((sum 0)) (dolist (x '(0 1 2 3) sum) (incf sum x)))))
+ (test-t (let ((temp-two '())) (equal (dolist (temp-one '(1 2 3 4) temp-two) (push temp-one temp-two)) '(4 3 2 1))))
+ (test-t (let ((temp-two 0)) (and (null (dolist (temp-one '(1 2 3 4)) (incf temp-two))) (eql temp-two 4))))
+ (test-t (null (dolist (var nil var))))
+ (test-t (let ((list nil)) (equal (dolist (var '(0 1 2 3) list) (push var list)) '(3 2 1 0))))
+ (test-t (null (dolist (var '(0 1 2 3)))))
+ (test-t (eql (do ((temp-one 1 (1+ temp-one)) (temp-two 0 (1- temp-two))) ((> (- temp-one temp-two) 5) temp-one)) 4))
+ (test-t (eql (do ((temp-one 1 (1+ temp-one)) (temp-two 0 (1+ temp-one))) ((= 3 temp-two) temp-one)) 3))
+ (test-t (eql (do* ((temp-one 1 (1+ temp-one)) (temp-two 0 (1+ temp-one))) ((= 3 temp-two) temp-one)) 2))
+
+ (test-t (let ((a-vector (vector 1 nil 3 nil)))
+ (and (null (do ((i 0 (+ i 1))
+ (n (array-dimension a-vector 0)))
+ ((= i n))
+ (when (null (aref a-vector i))
+ (setf (aref a-vector i) 0))))
+ (equalp a-vector #(1 0 3 0)))))
+
+ (test-t (let ((vec (vector 0 1 2 3 4 5 6 7 8 9)))
+ (equalp (do ((i 0 (1+ i))
+ (n #f)
+ (j 9 (1- j)))
+ ((>= i j) vec)
+ (setq n (aref vec i))
+ (setf (aref vec i) (aref vec j))
+ (setf (aref vec j) n))
+ #(9 8 7 6 5 4 3 2 1 0))))
+
+ (test-t (let ((vec (vector 0 1 2 3 4 5 6 7 8 9)))
+ (and (null (do ((i 0 (1+ i))
+ (n #f)
+ (j 9 (1- j)))
+ ((>= i j))
+ (setq n (aref vec i))
+ (setf (aref vec i) (aref vec j))
+ (setf (aref vec j) n)))
+ (equalp vec #(9 8 7 6 5 4 3 2 1 0)))))
+
+ (test-t (let ((vec (vector 0 1 2 3 4 5 6 7 8 9)))
+ (and (null (do ((i 0 (1+ i))
+ (n #f)
+ (j 9 (1- j)))
+ ((>= i j))
+ (setq n (aref vec i))
+ (setf (aref vec i) (aref vec j))
+ (setf (aref vec j) n)))
+ (equalp vec #(9 8 7 6 5 4 3 2 1 0)))))
+
+ (test-t (let ((vec (vector 0 1 2 3 4 5 6 7 8 9)))
+ (and (null (do ((i 0 (1+ i))
+ (n #f)
+ (j 9 (1- j)))
+ ((>= i j))
+ (setq n (aref vec i))
+ (setf (aref vec i) (aref vec j))
+ (setf (aref vec j) n)))
+ (equalp vec #(9 8 7 6 5 4 3 2 1 0)))))
+
+ (test-t (let ((vec (vector 0 1 2 3 4 5 6 7 8 9)))
+ (and (null (do ((n #f)
+ (i 0 (1+ i))
+ (j 9 (1- j)))
+ ((>= i j))
+ (setq n (aref vec i))
+ (setf (aref vec i) (aref vec j))
+ (setf (aref vec j) n)))
+ (equalp vec #(9 8 7 6 5 4 3 2 1 0)))))
+
+ (test-t (let ((vec (vector 0 1 2 3 4 5 6 7 8 9)))
+ (and (null (do ((i 0 (1+ i))
+ (j 9 (1- j))
+ (n #f))
+ ((>= i j))
+ (setq n (aref vec i))
+ (setf (aref vec i) (aref vec j))
+ (setf (aref vec j) n)))
+ (equalp vec #(9 8 7 6 5 4 3 2 1 0)))))
+
+ (test-t (= (funcall (lambda (x) (+ x 3)) 4) 7))
+ (test-t (= (funcall (lambda args (apply + args)) 1 2 3 4) 10))
+ (test-t (functionp (lambda args (apply + args))))
+
+ (test-t (consp (cons 'a 'b)))
+ (test-t (consp '(1 . 2)))
+ (test-t (consp (list nil)))
+ (test-t (not (consp 'a)))
+ (test-t (not (consp nil)))
+ (test-t (not (consp 1)))
+ (test-t (not (consp #\a)))
+ (test-t (let ((a (cons 1 2))) (and (eql (car a) 1) (eql (cdr a) 2))))
+ (test-t (equal (cons 1 nil) '(1)))
+ (test-t (equal (cons nil nil) '(())))
+ (test-t (equal (cons 'a (cons 'b (cons 'c '()))) '(a b c)))
+ (test-t (atom 'a))
+ (test-t (atom nil))
+ (test-t (atom 1))
+ (test-t (atom #\a))
+ (test-t (not (atom (cons 1 2))))
+ (test-t (not (atom '(a . b))))
+ (test-t (not (atom (list nil))))
+ (test-t (listp nil))
+ (test-t (listp '(a b c)))
+ (test-t (listp '(a . b)))
+ (test-t (listp (cons 'a 'b)))
+ (test-t (not (listp 1)))
+ (test-t (not (listp 't)))
+ (test-t (null '()))
+ (test-t (null nil))
+ (test-t (not (null t)))
+ (test-t (null (cdr '(a))))
+ (test-t (not (null (cdr '(1 . 2)))))
+ (test-t (not (null 'a)))
+ (test-t (endp '()))
+ (test-t (not (endp '(1))))
+ (test-t (not (endp '(1 2))))
+ (test-t (not (endp '(1 2 3))))
+ (test-t (not (endp (cons 1 2))))
+ (test-t (endp (cddr '(1 2))))
+ (test-t (let ((a (cons 1 2))) (and (eq (rplaca a 0) a) (equal a '(0 . 2)))))
+ (test-t (let ((a (list 1 2 3))) (and (eq (rplaca a 0) a) (equal a '(0 2 3)))))
+ (test-t (let ((a (cons 1 2))) (and (eq (rplacd a 0) a) (equal a '(1 . 0)))))
+ (test-t (let ((a (list 1 2 3))) (and (eq (rplacd a 0) a) (equal a '(1 . 0)))))
+ (test-t (eq (car '(a . b)) 'a))
+ (test-t (let ((a (cons 1 2))) (eq (car (list a)) a)))
+ (test-t (eq (cdr '(a . b)) 'b))
+ (test-t (eq (rest '(a . b)) 'b))
+ (test-t (let ((a (cons 1 2))) (eq (cdr (cons 1 a)) a)))
+ (test-t (let ((a (cons 1 2))) (eq (rest (cons 1 a)) a)))
+ (test-t (eq (caar '((a) b c)) 'a))
+ (test-t (eq (cadr '(a b c)) 'b))
+ (test-t (eq (cdar '((a . aa) b c)) 'aa))
+ (test-t (eq (cddr '(a b . c)) 'c))
+ (test-t (eq (caaar '(((a)) b c)) 'a))
+ (test-t (eq (caadr '(a (b) c)) 'b))
+ (test-t (eq (cadar '((a aa) b c)) 'aa))
+ (test-t (eq (caddr '(a b c)) 'c))
+ (test-t (eq (cdaar '(((a . aa)) b c)) 'aa))
+ (test-t (eq (cdadr '(a (b . bb) c)) 'bb))
+ (test-t (eq (cddar '((a aa . aaa) b c)) 'aaa))
+ (test-t (eq (cdddr '(a b c . d)) 'd))
+ (test-t (eq (caaaar '((((a))) b c)) 'a))
+ (test-t (eq (caaadr '(a ((b)) c)) 'b))
+ (test-t (eq (caadar '((a (aa)) b c)) 'aa))
+ (test-t (eq (caaddr '(a b (c))) 'c))
+ (test-t (eq (cadaar '(((a aa)) b c)) 'aa))
+ (test-t (eq (cadadr '(a (b bb) c)) 'bb))
+ (test-t (eq (caddar '((a aa aaa) b c)) 'aaa))
+ (test-t (eq (cadddr '(a b c d)) 'd))
+ (test-t (eq (cdaaar '((((a . aa))) b c)) 'aa))
+ (test-t (eq (cdaadr '(a ((b . bb)) c)) 'bb))
+ (test-t (eq (cdadar '((a (aa . aaa)) b c)) 'aaa))
+ (test-t (eq (cdaddr '(a b (c . cc))) 'cc))
+ (test-t (eq (cddaar '(((a aa . aaa)) b c)) 'aaa))
+ (test-t (eq (cddadr '(a (b bb . bbb) c)) 'bbb))
+ (test-t (eq (cdddar '((a aa aaa . aaaa) b c)) 'aaaa))
+ (test-t (eq (cddddr '(a b c d . e)) 'e))
+ (test-t (eq (copy-tree nil) nil))
+ (test-t (let* ((a (list 'a))
+ (b (list 'b))
+ (c (list 'c))
+ (x3 (cons c nil))
+ (x2 (cons b x3))
+ (x (cons a x2))
+ (y (copy-tree x)))
+ (and (not (eq x y))
+ (not (eq (car x) (car y)))
+ (not (eq (cdr x) (cdr y)))
+ (not (eq (cadr x) (cadr y)))
+ (not (eq (cddr x) (cddr y)))
+ (not (eq (caddr x) (caddr y)))
+ (eq (cdddr x) (cdddr y))
+ (equal x y)
+ (eq (car x) a) (eq (car a) 'a) (eq (cdr a) nil)
+ (eq (cdr x) x2)
+ (eq (car x2) b) (eq (car b) 'b) (eq (cdr b) nil)
+ (eq (cdr x2) x3)
+ (eq (car x3) c) (eq (car c) 'c) (eq (cdr c) nil)
+ (eq (cdr x3) nil))))
+ (test-t (let* ((x (list (list 'a 1) (list 'b 2) (list 'c 3)))
+ (y (copy-tree x)))
+ (and (not (eq (car x) (car y)))
+ (not (eq (cadr x) (cadr y)))
+ (not (eq (caddr x) (caddr y))))))
+ (test-t (let* ((x (list (list (list 1))))
+ (y (copy-tree x)))
+ (and (not (eq x y))
+ (not (eq (car x) (car y)))
+ (not (eq (caar x) (caar y))))))
+ (test-t (let ((x (list 'a 'b 'c 'd)))
+ (and (equal (sublis '((a . 1) (b . 2) (c . 3)) x)
+ '(1 2 3 d))
+ (equal x '(a b c d)))))
+ (test-t (eq (sublis '() '()) '()))
+ (test-t (equal (sublis '() '(1 2 3)) '(1 2 3)))
+ (test-t (eq (sublis '((a . 1) (b . 2)) '()) nil))
+ (test-t (equal (sublis '((a . 1) (b . 2) (c . 3)) '(((a)) (b) c)) '(((1)) (2) 3)))
+ (test-t (equal (sublis '(((a) . 1) ((b) . 2) ((c) . 3)) '((((a))) ((b)) (c))) '((((a))) ((b)) (c))))
+ (test-t (equal (sublis '(((a) . 1) ((b) . 2) ((c) . 3)) '((((a))) ((b)) (c)) :test equal) '(((1)) (2) 3)))
+ (test-t (equal (nsublis '((a . 1) (b . 2) (c . 3)) (list 'a 'b 'c 'd)) '(1 2 3 d)))
+ (test-t (let* ((x (list 'a 'b 'c 'd)) (y (nsublis '((a . 1) (b . 2) (c . 3)) x))) (and (eq x y) (equal x '(1 2 3 d)))))
+ (test-t (let ((x (list 'l 'm 'n))) (and (eq (nsublis '((a . 1) (b . 2) (c . 3)) x) x) (equal x '(l m n)))))
+ (test-t (let* ((n (cons 'n nil))
+ (m (cons 'm n))
+ (l (cons 'l m))
+ (x (nsublis '((a . 1) (b . 2) (c . 3)) l)))
+ (and (eq x l)
+ (eq (car l) 'l)
+ (eq (cdr l) m)
+ (eq (car m) 'm)
+ (eq (cdr m) n)
+ (eq (car n) 'n)
+ (eq (cdr n) nil))))
+ (test-t (eq (nsublis '() '()) '()))
+ (test-t (equal (nsublis '() '(1 2 3)) '(1 2 3)))
+ (test-t (eq (nsublis '((a . 1) (b . 2)) '()) nil))
+ (test-t (equal (nsublis '((a b c) (b c d) (c d e)) (list 'a 'b 'c)) '((b c) (c d) (d e))))
+ (test-t (equal (nsublis '((a . 1) (b . 2) (c . 3)) (copy-tree '(((a)) (b) c))) '(((1)) (2) 3)))
+ (test-t (equal (nsublis '(((a) . 1) ((b) . 2) ((c) . 3)) (copy-tree '((((a))) ((b)) (c)))) '((((a))) ((b)) (c))))
+ (test-t (equal (nsublis '(((a) . 1) ((b) . 2) ((c) . 3)) (copy-tree '((((a))) ((b)) (c))) :test equal) '(((1)) (2) 3)))
+ (test-t (let ((tree '(old (old) ((old))))) (equal (subst 'new 'old tree) '(new (new) ((new))))))
+ (test-t (eq (subst 'new 'old 'old) 'new))
+ (test-t (eq (subst 'new 'old 'not-old) 'not-old))
+ (test-t (equal (subst 'new '(b) '(a ((b))) :test equal) '(a (new))))
+ (test-t (equal (subst 'x 3 '(1 (1 2) (1 2 3) (1 2 3 4)) :key (lambda (y) (and (listp y) (third y)))) '(1 (1 2) x x)))
+ (test-t (equal (subst 'x "D" '("a" ("a" "b") ("a" "b" "c") ("a" "b" "c" "d"))
+ :test equalp
+ :key (lambda (y) (and (listp y) (fourth y))))
+ '("a" ("a" "b") ("a" "b" "c") x)))
+ (test-t (equal (subst-if 'new (lambda (x) (eq x 'old)) '(old old)) '(new new)))
+ (test-t (eq (subst-if 'new (lambda (x) (eq x 'old)) 'old) 'new))
+ (test-t (equal (subst-if 'x (lambda (x) (eql x 3)) '(1 (1 2) (1 2 3) (1 2 3 4)) :key (lambda (y) (and (listp y) (third y)))) '(1 (1 2) x x)))
+ (test-t (let ((tree '(old (old) ((old))))) (equal (subst-if 'new (lambda (x) (eq x 'old)) tree) '(new (new) ((new))))))
+ (test-t (eq (subst-if 'new (lambda (x) (eq x 'old)) 'old) 'new))
+ (test-t (eq (subst-if 'new (lambda (x) (eq x 'old)) 'not-old) 'not-old))
+ (test-t (equal (subst-if 'new (lambda (x) (equal x '(b))) '(a ((b)))) '(a (new))))
+ (test-t (equal (subst-if 'x (lambda (x) (eql x 3)) '(1 (1 2) (1 2 3) (1 2 3 4)) :key (lambda (y) (and (listp y) (third y)))) '(1 (1 2) x x)))
+ (test-t (equal (subst-if 'x
+ (lambda (x) (equalp x "D"))
+ '("a" ("a" "b") ("a" "b" "c") ("a" "b" "c" "d"))
+ :key (lambda (y) (and (listp y) (fourth y))))
+ '("a" ("a" "b") ("a" "b" "c") x)))
+ (test-t (equal (subst-if-not 'new (lambda (x) (not (eq x 'old))) '(old old)) '(new new)))
+ (test-t (eq (subst-if-not 'new (lambda (x) (not (eq x 'old))) 'old) 'new))
+ (test-t (equal (subst-if-not 'x (lambda (x) (not (eql x 3)))
+ '(1 (1 2) (1 2 3) (1 2 3 4))
+ :key (lambda (y) (and (listp y) (third y))))
+ '(1 (1 2) x x)))
+ (test-t (let ((tree '(old (old) ((old)))))
+ (equal (subst-if-not 'new (lambda (x) (not (eq x 'old))) tree)
+ '(new (new) ((new))))))
+ (test-t (eq (subst-if-not 'new (lambda (x) (not (eq x 'old))) 'old) 'new))
+ (test-t (eq (subst-if-not 'new (lambda (x) (not (eq x 'old))) 'not-old) 'not-old))
+ (test-t (equal (subst-if-not 'new (lambda (x) (not (equal x '(b)))) '(a ((b)))) '(a (new))))
+ (test-t (equal (subst-if-not 'x
+ (lambda (x) (not (eql x 3)))
+ '(1 (1 2) (1 2 3) (1 2 3 4))
+ :key (lambda (y) (and (listp y) (third y))))
+ '(1 (1 2) x x)))
+ (test-t (equal (subst-if-not 'x
+ (lambda (x) (not (equalp x "D")))
+ '("a" ("a" "b") ("a" "b" "c") ("a" "b" "c" "d"))
+ :key (lambda (y) (and (listp y) (fourth y))))
+ '("a" ("a" "b") ("a" "b" "c") x)))
+ (test-t (let ((tree '(old (old) ((old)))))
+ (equal (nsubst 'new 'old (copy-tree tree))
+ '(new (new) ((new))))))
+ (test-t (let* ((tree (copy-tree '(old (old) ((old)))))
+ (new-tree (nsubst 'new 'old tree)))
+ (and (eq tree new-tree)
+ (equal tree '(new (new) ((new)))))))
+ (test-t (eq (nsubst 'new 'old 'old) 'new))
+ (test-t (eq (nsubst 'new 'old 'not-old) 'not-old))
+ (test-t (equal (nsubst 'new '(b) (copy-tree '(a ((b)))) :test equal) '(a (new))))
+ (test-t (equal (nsubst 'x 3 (copy-tree '(1 (1 2) (1 2 3) (1 2 3 4)))
+ :key (lambda (y) (and (listp y) (third y))))
+ '(1 (1 2) x x)))
+ (test-t (equal (nsubst 'x "D"
+ (copy-tree '("a" ("a" "b") ("a" "b" "c") ("a" "b" "c" "d")))
+ :test equalp
+ :key (lambda (y) (and (listp y) (fourth y))))
+ '("a" ("a" "b") ("a" "b" "c") x)))
+ (test-t (equal (nsubst-if 'new (lambda (x) (eq x 'old)) (list 'old 'old)) '(new new)))
+ (test-t (eq (nsubst-if 'new (lambda (x) (eq x 'old)) 'old) 'new))
+ (test-t (let* ((x (copy-tree '(old (old) ((old)) (old) old)))
+ (y (nsubst-if 'new (lambda (x) (eq x 'old)) x)))
+ (and (eq x y)
+ (equal x '(new (new) ((new)) (new) new)))))
+ (test-t (equal (nsubst-if 'x
+ (lambda (x) (eql x 3))
+ (copy-tree '(1 (1 2) (1 2 3) (1 2 3 4)))
+ :key (lambda (y) (and (listp y) (third y))))
+ '(1 (1 2) x x)))
+ (test-t (let ((tree '(old (old) ((old)))))
+ (equal (nsubst-if 'new (lambda (x) (eq x 'old)) (copy-tree tree))
+ '(new (new) ((new))))))
+ (test-t (eq (nsubst-if 'new (lambda (x) (eq x 'old)) 'old) 'new))
+ (test-t (eq (nsubst-if 'new (lambda (x) (eq x 'old)) 'not-old) 'not-old))
+ (test-t (equal (nsubst-if 'new (lambda (x) (equal x '(b))) (copy-tree '(a ((b))))) '(a (new))))
+ (test-t (equal (nsubst-if 'x
+ (lambda (x) (eql x 3))
+ (copy-tree '(1 (1 2) (1 2 3) (1 2 3 4)))
+ :key (lambda (y) (and (listp y) (third y))))
+ '(1 (1 2) x x)))
+ (test-t (equal (nsubst-if 'x
+ (lambda (x) (equalp x "D"))
+ (copy-tree '("a" ("a" "b") ("a" "b" "c") ("a" "b" "c" "d")))
+ :key (lambda (y) (and (listp y) (fourth y))))
+ '("a" ("a" "b") ("a" "b" "c") x)))
+ (test-t (equal (nsubst-if-not 'new (lambda (x) (not (eq x 'old)))
+ (list 'old 'old))
+ '(new new)))
+ (test-t (eq (nsubst-if-not 'new (lambda (x) (not (eq x 'old))) 'old) 'new))
+ (test-t (let* ((x (copy-tree '(old (old) ((old)) (old) old)))
+ (y (nsubst-if-not 'new (lambda (x) (not (eq x 'old))) x)))
+ (and (eq x y)
+ (equal x '(new (new) ((new)) (new) new)))))
+ (test-t (equal (nsubst-if-not 'x (lambda (x) (not (eql x 3)))
+ (copy-tree '(1 (1 2) (1 2 3) (1 2 3 4)))
+ :key (lambda (y) (and (listp y) (third y))))
+ '(1 (1 2) x x)))
+ (test-t (let ((tree '(old (old) ((old)))))
+ (equal (nsubst-if-not 'new (lambda (x) (not (eq x 'old))) (copy-tree tree))
+ '(new (new) ((new))))))
+ (test-t (eq (nsubst-if-not 'new (lambda (x) (not (eq x 'old))) 'old) 'new))
+ (test-t (eq (nsubst-if-not 'new (lambda (x) (not (eq x 'old))) 'not-old) 'not-old))
+ (test-t (equal (nsubst-if-not 'new (lambda (x) (not (equal x '(b)))) (copy-tree '(a ((b))))) '(a (new))))
+ (test-t (equal (nsubst-if-not 'x
+ (lambda (x) (not (eql x 3)))
+ (copy-tree '(1 (1 2) (1 2 3) (1 2 3 4)))
+ :key (lambda (y) (and (listp y) (third y))))
+ '(1 (1 2) x x)))
+ (test-t (equal
+ (nsubst-if-not 'x
+ (lambda (x) (not (equalp x "D")))
+ (copy-tree '("a" ("a" "b") ("a" "b" "c") ("a" "b" "c" "d")))
+ :key (lambda (y) (and (listp y) (fourth y))))
+ '("a" ("a" "b") ("a" "b" "c") x)))
+ (test-t (tree-equal 'a 'a))
+ (test-t (not (tree-equal 'a 'b)))
+ (test-t (tree-equal '(a (b (c))) '(a (b (c)))))
+ (test-t (tree-equal '(a (b (c))) '(a (b (c))) :test eq))
+ (test-t (not (tree-equal '("a" ("b" ("c"))) '("a" ("b" ("c"))))))
+ (test-t (tree-equal '("a" ("b" ("c"))) '("a" ("b" ("c"))) :test equal))
+ (test-t (not (tree-equal '(a b) '(a (b)))))
+ (test-t (eq (copy-list '()) '()))
+ (test-t (equal (copy-list '(a b c)) '(a b c)))
+ (test-t (equal (copy-list '(a . b)) '(a . b)))
+ (test-t (let* ((x '(a b c)) (y (copy-list x))) (and (equal x y) (not (eq x y)))))
+ (test-t (let* ((a (list 'a))
+ (b (list 'b))
+ (c (list 'c))
+ (x (list a b c))
+ (y (copy-list x)))
+ (and (equal x y)
+ (not (eq x y))
+ (eq (car x) (car y))
+ (eq (cadr x) (cadr y))
+ (eq (caddr x) (caddr y))
+ (eq (caar x) 'a)
+ (eq (caadr x) 'b)
+ (eq (caaddr x) 'c))))
+ (test-t (null (list)))
+ (test-t (equal (list 1) '(1)))
+ (test-t (equal (list 1 2 3) '(1 2 3)))
+ (test-t (equal (list* 1 2 '(3)) '(1 2 3)))
+ (test-t (equal (list* 1 2 'x) '(1 2 . x)))
+ (test-t (equal (list* 1 2 '(3 4)) '(1 2 3 4)))
+ (test-t (eq (list* 'x) 'x))
+ (test-t (eql (list-length '()) 0))
+ (test-t (eql (list-length '(1)) 1))
+ (test-t (eql (list-length '(1 2)) 2))
+ (test-t (equal (cl-make-list 5) '(() () () () ())))
+ (test-t (equal (cl-make-list 3 :initial-element 'rah) '(rah rah rah)))
+ (test-t (equal (cl-make-list 2 :initial-element '(1 2 3)) '((1 2 3) (1 2 3))))
+ (test-t (null (cl-make-list 0)))
+ (test-t (null (cl-make-list 0 :initial-element 'new-element)))
+ (test-t (let ((place nil)) (and (equal (push 0 place) '(0)) (equal place '(0)))))
+ (test-t (let ((place (list 1 2 3))) (and (equal (push 0 place) '(0 1 2 3)) (equal place '(0 1 2 3)))))
+ (test-t (let ((a (list (list 1 2 3) 9))) (and (equal (push 0 (car a)) '(0 1 2 3)) (equal a '((0 1 2 3) 9)))))
+ (test-t (let ((place (list 1 2 3))) (and (eql (pop place) 1) (equal place '(2 3)))))
+ (test-t (let ((a (list (list 1 2 3) 9))) (and (eql (pop (car a)) 1) (equal a '((2 3) 9)))))
+ (test-t (let ((x (list 'a 'b 'c))) (and (eq (pop (cdr x)) 'b) (equal x '(a c)))))
+ (test-t (eq (first '(a . b)) 'a))
+ (test-t (null (first nil)))
+ (test-t (let ((a (cons 1 2))) (eq (first (list a)) a)))
+ (test-t (eql (first '(1 2 3)) '1))
+ (test-t (eql (second '(1 2 3)) '2))
+ (test-t (eql (third '(1 2 3)) '3))
+ (test-t (eql (fourth '(1 2 3 4)) '4))
+ (test-t (eql (fifth '(1 2 3 4 5)) '5))
+ (test-t (eql (sixth '(1 2 3 4 5 6)) '6))
+ (test-t (eql (seventh '(1 2 3 4 5 6 7)) '7))
+ (test-t (eql (eighth '(1 2 3 4 5 6 7 8)) '8))
+ (test-t (eql (ninth '(1 2 3 4 5 6 7 8 9)) '9))
+ (test-t (eql (tenth '(1 2 3 4 5 6 7 8 9 10)) '10))
+ (test-t (let ((x '(a b c))) (eq (nthcdr 0 x) x)))
+ (test-t (let ((x '(a b c))) (eq (nthcdr 1 x) (cdr x))))
+ (test-t (let ((x '(a b c))) (eq (nthcdr 2 x) (cddr x))))
+ (test-t (let ((x '(a b c))) (eq (nthcdr 2 x) (cddr x))))
+ (test-t (let ((x '(a b c))) (eq (nthcdr 3 x) (cdddr x))))
+ (test-t (equal (nthcdr 0 '(0 1 2)) '(0 1 2)))
+ (test-t (equal (nthcdr 1 '(0 1 2)) '(1 2)))
+ (test-t (equal (nthcdr 2 '(0 1 2)) '(2)))
+ (test-t (equal (nthcdr 3 '(0 1 2)) '()))
+ (test-t (eql (nthcdr 1 '(0 . 1)) 1))
+ (test-t (eql (nth 0 '(a b c)) 'a))
+ (test-t (eql (nth 1 '(a b c)) 'b))
+ (test-t (eql (nth 2 '(a b c)) 'c))
+ (test-t (eql (nth 3 '(a b c)) '()))
+ (test-t (eql (nth 4 '(a b c)) '()))
+ (test-t (eql (nth 5 '(a b c)) '()))
+ (test-t (eql (nth 6 '(a b c)) '()))
+ (test-t (let ((x (list 'a 'b 'c))) (and (eq (setf (nth 0 x) 'z) 'z) (equal x '(z b c)))))
+ (test-t (let ((x (list 'a 'b 'c))) (and (eq (setf (nth 1 x) 'z) 'z) (equal x '(a z c)))))
+ (test-t (let ((x (list 'a 'b 'c))) (and (eq (setf (nth 2 x) 'z) 'z) (equal x '(a b z)))))
+ (test-t (let ((0-to-3 (list 0 1 2 3))) (and (equal (setf (nth 2 0-to-3) "two") "two") (equal 0-to-3 '(0 1 "two" 3)))))
+ (test-t (let* ((x (list 'a 'b 'c))) (eq (nconc x) x)))
+ (test-t (let* ((x (list 'a 'b 'c))
+ (y (list 'd 'e 'f))
+ (list (nconc x y)))
+ (and (eq list x)
+ (eq (nthcdr 3 list) y)
+ (equal list '(a b c d e f)))))
+ (test-t (let* ((x (list 'a))
+ (y (list 'b))
+ (z (list 'c))
+ (list (nconc x y z)))
+ (and (eq x list)
+ (eq (first list) 'a)
+ (eq y (cdr list))
+ (eq (second list) 'b)
+ (eq z (cddr list))
+ (eq (third list) 'c))))
+ (test-t (equal (append '(a b) '() '(c d) '(e f)) '(a b c d e f)))
+ (test-t (null (append)))
+ (test-t (null (append '())))
+ (test-t (null (append '() '())))
+ (test-t (eq (append 'a) 'a))
+ (test-t (eq (append '() 'a) 'a))
+ (test-t (eq (append '() '() 'a) 'a))
+ (test-t (equal (append '(a b) 'c) '(a b . c)))
+ (test-t (let* ((x '(a b c))
+ (y '(d e f))
+ (z (append x y)))
+ (and (equal z '(a b c d e f))
+ (eq (nthcdr 3 z) y)
+ (not (eq x z)))))
+ (test-t (equal (revappend '(a b c) '(d e f)) '(c b a d e f)))
+ (test-t (let* ((x '(a b c))
+ (y '(d e f))
+ (z (revappend x y)))
+ (and (equal z '(c b a d e f))
+ (not (eq x z))
+ (eq (nthcdr 3 z) y))))
+ (test-t (let ((x '(a b c))) (eq (revappend '() x) x)))
+ (test-t (null (revappend '() '())))
+ (test-t (eq (revappend '() 'a) 'a))
+ (test-t (equal (revappend '(a) 'b) '(a . b)))
+ (test-t (equal (revappend '(a) '()) '(a)))
+ (test-t (equal (revappend '(1 2 3) '()) '(3 2 1)))
+ (test-t (equal (nreconc (list 'a 'b 'c) '(d e f)) '(c b a d e f)))
+ (test-t (let* ((x (list 'a 'b 'c))
+ (y '(d e f))
+ (z (nreconc x y)))
+ (and (equal z '(c b a d e f))
+ (eq (nthcdr 3 z) y))))
+ (test-t (equal (nreconc (list 'a) 'b) '(a . b)))
+ (test-t (equal (nreconc (list 'a) '()) '(a)))
+ (test-t (equal (nreconc (list 1 2 3) '()) '(3 2 1)))
+ (test-t (null (butlast nil)))
+ (test-t (null (butlast nil 1)))
+ (test-t (null (butlast nil 2)))
+ (test-t (null (butlast nil 3)))
+ (test-t (equal (butlast '(1 2 3 4 5)) '(1 2 3 4)))
+ (test-t (equal (butlast '(1 2 3 4 5) 1) '(1 2 3 4)))
+ (test-t (equal (butlast '(1 2 3 4 5) 2) '(1 2 3)))
+ (test-t (equal (butlast '(1 2 3 4 5) 3) '(1 2)))
+ (test-t (equal (butlast '(1 2 3 4 5) 4) '(1)))
+ (test-t (equal (butlast '(1 2 3 4 5) 5) '()))
+ (test-t (equal (butlast '(1 2 3 4 5) 6) '()))
+ (test-t (equal (butlast '(1 2 3 4 5) 7) '()))
+ (test-t (let ((a '(1 2 3 4 5))) (equal (butlast a 3) '(1 2)) (equal a '(1 2 3 4 5))))
+ (test-t (null (nbutlast nil)))
+ (test-t (null (nbutlast nil 1)))
+ (test-t (null (nbutlast nil 2)))
+ (test-t (null (nbutlast nil 3)))
+ (test-t (equal (nbutlast (list 1 2 3 4 5)) '(1 2 3 4)))
+ (test-t (equal (nbutlast (list 1 2 3 4 5) 1) '(1 2 3 4)))
+ (test-t (equal (nbutlast (list 1 2 3 4 5) 2) '(1 2 3)))
+ (test-t (equal (nbutlast (list 1 2 3 4 5) 3) '(1 2)))
+ (test-t (equal (nbutlast (list 1 2 3 4 5) 4) '(1)))
+ (test-t (equal (nbutlast (list 1 2 3 4 5) 5) '()))
+ (test-t (equal (nbutlast (list 1 2 3 4 5) 6) '()))
+ (test-t (equal (nbutlast (list 1 2 3 4 5) 7) '()))
+ (test-t (equal (nbutlast (list* 1 2 3 4 5 6)) '(1 2 3 4)))
+ (test-t (equal (nbutlast (list* 1 2 3 4 5 6) 1) '(1 2 3 4)))
+ (test-t (equal (nbutlast (list* 1 2 3 4 5 6) 2) '(1 2 3)))
+ (test-t (equal (nbutlast (list* 1 2 3 4 5 6) 3) '(1 2)))
+ (test-t (equal (nbutlast (list* 1 2 3 4 5 6) 4) '(1)))
+ (test-t (equal (nbutlast (list* 1 2 3 4 5 6) 5) '()))
+ (test-t (equal (nbutlast (list* 1 2 3 4 5 6) 6) '()))
+ (test-t (equal (nbutlast (list* 1 2 3 4 5 6) 7) '()))
+ (test-t (let* ((a '(1 2 3 4 5)) (b (nbutlast a 3))) (and (eq a b) (equal a '(1 2)))))
+ (test-t (let ((x '(0 1 2 3 4 5 6 7 8 9))) (eq (last x) (nthcdr 9 x))))
+ (test-t (let ((x '(0 1 2 3 4))) (eq (last x 0) nil)))
+ (test-t (let ((x '(0 1 2 3 4))) (eq (last x) (nthcdr 4 x))))
+ (test-t (let ((x '(0 1 2 3 4))) (eq (last x 1) (nthcdr 4 x))))
+ (test-t (let ((x '(0 1 2 3 4))) (eq (last x 2) (cdddr x))))
+ (test-t (let ((x '(0 1 2 3 4))) (eq (last x 3) (cddr x))))
+ (test-t (let ((x '(0 1 2 3 4))) (eq (last x 4) (cdr x))))
+ (test-t (let ((x '(0 1 2 3 4))) (eq (last x 5) x)))
+ (test-t (let ((x '(0 1 2 3 4))) (eq (last x 6) x)))
+ (test-t (let ((x '(0 1 2 3 4))) (eq (last x 7) x)))
+ (test-t (let ((x '(0 1 2 3 4))) (eq (last x 8) x)))
+ (test-t (tailp '() '()))
+ (test-t (tailp '() '(1)))
+ (test-t (tailp '() '(1 2 3 4 5 6 7 8 9)))
+ (test-t (let ((x '(1 2 3))) (and (tailp x x) (tailp (cdr x) x) (tailp (cddr x) x) (tailp (cdddr x) x))))
+ (test-t (let ((x '(1 . 2))) (and (tailp x x) (tailp (cdr x) x))))
+ (test-t (not (tailp 'x '(1 2 3 4 5 6))))
+ (test-t (not (tailp (list 1 2 3) '(1 2 3))))
+ (test-t (define (ldiff . args) #f))
+ (test-t (null (ldiff '() '())))
+ (test-t (equal (ldiff '(1 . 2) 2) '(1)))
+ (test-t (equal (ldiff '(1 2 3 4 5 6 7 8 9) '()) '(1 2 3 4 5 6 7 8 9)))
+ (test-t (let ((x '(1 2 3)))
+ (and (null (ldiff x x))
+ (equal (ldiff x (cdr x)) '(1))
+ (equal (ldiff x (cddr x)) '(1 2))
+ (equal (ldiff x (cdddr x)) '(1 2 3)))))
+ (test-t (let* ((x '(1 2 3))
+ (y '(a b c))
+ (z (ldiff x y)))
+ (and (not (eq x z))
+ (equal z '(1 2 3)))))
+ (test-t (equal (cl-member 'a '(a b c d)) '(a b c d)))
+ (test-t (equal (cl-member 'b '(a b c d)) '(b c d)))
+ (test-t (equal (cl-member 'c '(a b c d)) '(c d)))
+ (test-t (equal (cl-member 'd '(a b c d)) '(d)))
+ (test-t (equal (cl-member 'e '(a b c d)) '()))
+ (test-t (equal (cl-member 'f '(a b c d)) '()))
+ (test-t (let ((x '(a b c d)))
+ (eq (cl-member 'a x) x)
+ (eq (cl-member 'b x) (cdr x))
+ (eq (cl-member 'c x) (cddr x))
+ (eq (cl-member 'd x) (cdddr x))
+ (eq (cl-member 'e x) nil)))
+ (test-t (equal (cl-member 'a '(a b c d) :test eq) '(a b c d)))
+ (test-t (equal (cl-member 'b '(a b c d) :test eq) '(b c d)))
+ (test-t (equal (cl-member 'c '(a b c d) :test eq) '(c d)))
+ (test-t (equal (cl-member 'd '(a b c d) :test eq) '(d)))
+ (test-t (equal (cl-member 'e '(a b c d) :test eq) '()))
+ (test-t (equal (cl-member 'f '(a b c d) :test eq) '()))
+ (test-t (null (cl-member 'a '())))
+ (test-t (let* ((x '((1 . a) (2 . b) (3 . c) (4 . d) (5 . e)))
+ (y (cl-member 'd x :key cdr :test eq)))
+ (and (equal y '((4 . d) (5 . e)))
+ (eq y (nthcdr 3 x)))))
+ (test-t (let* ((x '((1 . a) (2 . b) (3 . c) (4 . d) (5 . e)))
+ (y (cl-member 'd x :key cdr)))
+ (and (equal y '((4 . d) (5 . e)))
+ (eq y (nthcdr 3 x)))))
+ (test-t (equal (member-if (lambda (x) (eql x 'a)) '(a b c d)) '(a b c d)))
+ (test-t (equal (member-if (lambda (x) (eql x 'b)) '(a b c d)) '(b c d)))
+ (test-t (equal (member-if (lambda (x) (eql x 'c)) '(a b c d)) '(c d)))
+ (test-t (equal (member-if (lambda (x) (eql x 'd)) '(a b c d)) '(d)))
+ (test-t (equal (member-if (lambda (x) (eql x 'e)) '(a b c d)) '()))
+ (test-t (equal (member-if (lambda (x) (eql x 'f)) '(a b c d)) '()))
+ (test-t (null (member-if (lambda (x) (eql x 'a)) '())))
+ (test-t (let* ((x '((1 . a) (2 . b) (3 . c) (4 . d) (5 . e)))
+ (y (member-if (lambda (p) (eq p 'd)) x :key cdr)))
+ (and (equal y '((4 . d) (5 . e)))
+ (eq y (nthcdr 3 x)))))
+ (test-t (null (member-if zerop '(7 8 9))))
+ (test-t (equal (member-if-not (lambda (x) (not (eql x 'a))) '(a b c d)) '(a b c d)))
+ (test-t (equal (member-if-not (lambda (x) (not (eql x 'b))) '(a b c d)) '(b c d)))
+ (test-t (equal (member-if-not (lambda (x) (not (eql x 'c))) '(a b c d)) '(c d)))
+ (test-t (equal (member-if-not (lambda (x) (not (eql x 'd))) '(a b c d)) '(d)))
+ (test-t (equal (member-if-not (lambda (x) (not (eql x 'e))) '(a b c d)) '()))
+ (test-t (equal (member-if-not (lambda (x) (not (eql x 'f))) '(a b c d)) '()))
+ (test-t (null (member-if-not (lambda (x) (not (eql x 'a))) '())))
+
+ (test-t (let* ((x '((1 . a) (2 . b) (3 . c) (4 . d) (5 . e)))
+ (y (member-if-not (lambda (p) (not (eq p 'd))) x :key cdr)))
+ (and (equal y '((4 . d) (5 . e)))
+ (eq y (nthcdr 3 x)))))
+
+ (test-t (let ((dummy nil)
+ (list-1 '(1 2 3 4)))
+ (and (eq (mapc (lambda x (setq dummy (append dummy x)))
+ list-1
+ '(a b c d e)
+ '(x y z))
+ list-1)
+ (equal dummy '(1 a x 2 b y 3 c z)))))
+ (test-t (let* ((x '(0 1 2 3))
+ (y nil)
+ (z (mapc (lambda (a b c) (push (list a b c) y))
+ x '(1 2 3 4) '(2 3 4 5))))
+ (and (eq z x)
+ (equal y '((3 4 5) (2 3 4) (1 2 3) (0 1 2))))))
+ (test-t (let* ((x '(0 1 2 3))
+ (y nil)
+ (z (mapc (lambda (a b c) (push (list a b c) y))
+ nil x '(1 2 3 4) '(2 3 4 5))))
+ (and (null z)
+ (null y))))
+ (test-t (let ((sum 0))
+ (mapc (lambda rest (setq sum (+ sum (apply + rest))))
+ '(0 1 2)
+ '(1 2 0)
+ '(2 0 1))
+ (eql sum 9)))
+ (test-t (let ((result 'initial-value)
+ (list-1 nil))
+ (and (eq (mapc (lambda (a b) (setq result (cons (cons a b) result))) list-1) list-1)
+ (eq result 'initial-value))))
+ (test-t (let ((result 'initial-value)
+ (list-1 nil))
+ (and (eq (mapc (lambda (a b) (setq result (cons (cons a b) result)))
+ list-1
+ '(1 2 3))
+ list-1)
+ (eq result 'initial-value))))
+ (test-t (let ((result 'initial-value)
+ (list-1 '(1 2 3)))
+ (and (eq (mapc (lambda (a b) (setq result (cons (cons a b) result)))
+ list-1
+ '())
+ list-1)
+ (eq result 'initial-value))))
+ (test-t (equal (mapcar car '((1 2) (2 3) (3 4) (4 5))) '(1 2 3 4)))
+ (test-t (null (mapcar identity '())))
+ (test-t (equal (mapcar list '(0 1 2 3) '(a b c d) '(w x y z)) '((0 a w) (1 b x) (2 c y) (3 d z))))
+ (test-t (null (mapcar list '() '(0 1 2 3) '(1 2 3 4) '(2 3 4 5))))
+ (test-t (null (mapcar list '(0 1 2 3) '() '(1 2 3 4) '(2 3 4 5))))
+ (test-t (null (mapcar list '(0 1 2 3) '(1 2 3 4) '() '(2 3 4 5))))
+ (test-t (null (mapcar list '(0 1 2 3) '(1 2 3 4) '(2 3 4 5) '())))
+ (test-t (equal (mapcar list '(0) '(a b) '(x y z)) '((0 a x))))
+ (test-t (equal (mapcar list '(a b) '(0) '(x y z)) '((a 0 x))))
+ (test-t (equal (mapcar list '(a b) '(x y z) '(0)) '((a x 0))))
+ (test-t (equal (mapcar cons '(a b c) '(1 2 3)) '((a . 1) (b . 2) (c . 3))))
+ (test-t (equal (mapcan cdr (copy-tree '((1 2) (2 3) (3 4) (4 5)))) '(2 3 4 5)))
+ (test-t (equal (mapcan append
+ '((1 2 3) (4 5 6) (7 8 9))
+ '((a) (b c) (d e f))
+ (list (list 'x 'y 'z) (list 'y 'z) (list 'z)))
+ '(1 2 3 a x y z 4 5 6 b c y z 7 8 9 d e f z)))
+ (test-t (null (mapcan append '((1 2 3) (4 5 6) (7 8 9)) '((a) (b c)) '())))
+ (test-t (null (mapcan append '((1 2 3) (4 5 6) (7 8 9)) '() '((a) (b c)))))
+ (test-t (null (mapcan append '() '((1 2 3) (4 5 6) (7 8 9)) '((a) (b c)))))
+ (test-t (equal (mapcan list
+ (list 1 2 3 4 5)
+ (list 2 3 4 5 6)
+ (list 3 4 5 6 7)
+ (list 4 5 6 7 8))
+ '(1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7 5 6 7 8)))
+ (test-t (equal (mapcan (lambda (x y) (if (null x) '() (list x y)))
+ '(() () () d e)
+ '(1 2 3 4 5 6))
+ '(d 4 e 5)))
+ (test-t (equal (mapcan (lambda (x) (if (numberp x) (list x) '()))
+ '(a 1 b c 3 4 d 5))
+ '(1 3 4 5)))
+ (test-t (equal (maplist identity '(a b c d)) '((a b c d) (b c d) (c d) (d))))
+ (test-t (equal (maplist car '((1 2) (2 3) (3 4) (4 5))) '((1 2) (2 3) (3 4) (4 5))))
+ (test-t (equal (maplist list '(a b c) '(b c d) '(c d e))
+ '(((a b c) (b c d) (c d e))
+ ((b c) (c d) (d e))
+ ((c) (d) (e)))))
+ (test-t (equal (maplist append '(a b c) '(b c d) '(c d e)) '((a b c b c d c d e) (b c c d d e) (c d e))))
+ (test-t (equal (maplist append '(a b c) '(b c) '(c)) '((a b c b c c))))
+ (test-t (null (maplist append '() '(a b c) '(b c) '(c))))
+ (test-t (null (maplist append '(a b c) '() '(b c) '(c))))
+ (test-t (null (maplist append '(a b c) '(b c) '(c) '())))
+ (test-t (let ((x '((1 2) (2 3) (3 4) (4 5)))
+ (y nil))
+ (and (eq (mapl (lambda (a) (push (car a) y)) x) x)
+ (equal y '((4 5) (3 4) (2 3) (1 2))))))
+ (test-t (let ((x nil))
+ (and (null (mapl (lambda rest (push rest x)) '() '(0) '(0 1)))
+ (null x))))
+ (test-t (let ((x nil))
+ (and (equal (mapl (lambda rest (push rest x)) '(0) '() '(0 1))
+ '(0))
+ (null x))))
+ (test-t (let ((x nil))
+ (and (equal (mapl (lambda rest (push rest x)) '(0) '(0 1) '())
+ '(0))
+ (null x))))
+ (test-t (equal (mapcon car (copy-tree '((1 2) (2 3) (3 4) (4 5)))) '(1 2 2 3 3 4 4 5)))
+ (test-t (equal (mapcon list '(0 1 2 3) '(1 2 3 4) '(2 3 4 5) '(3 4 5 6))
+ '((0 1 2 3) (1 2 3 4) (2 3 4 5) (3 4 5 6) (1 2 3) (2 3 4) (3 4 5)
+ (4 5 6) (2 3) (3 4) (4 5) (5 6) (3) (4) (5) (6))))
+ (test-t (null (mapcon list '() '(0 1 2 3) '(1 2 3 4) '(2 3 4 5) '(3 4 5 6))))
+ (test-t (null (mapcon list '(0 1 2 3) '() '(1 2 3 4) '(2 3 4 5) '(3 4 5 6))))
+ (test-t (null (mapcon list '(0 1 2 3) '(1 2 3 4) '() '(2 3 4 5) '(3 4 5 6))))
+ (test-t (null (mapcon list '(0 1 2 3) '(1 2 3 4) '(2 3 4 5) '() '(3 4 5 6))))
+ (test-t (null (mapcon list '(0 1 2 3) '(1 2 3 4) '(2 3 4 5) '(3 4 5 6) '())))
+ (test-t (let* ((x '((apple . 1) (orange . 2) (grapes . 3)))
+ (y (acons 'plum 9 x)))
+ (and (equal y '((plum . 9) (apple . 1) (orange . 2) (grapes . 3)))
+ (eq x (cdr y)))))
+ (test-t (equal (acons 'a '0 nil) '((a . 0))))
+ (test-t (equal (acons 'apple 1 (acons 'orange 2 (acons 'grapes '3 nil))) '((apple . 1) (orange . 2) (grapes . 3))))
+ (test-t (equal (acons () () ()) '((()))))
+ (test-t (let ((alist '((x . 100) (y . 200) (z . 50)))) (eq (cl-assoc 'y alist) (cadr alist))))
+ (test-t (null (cl-assoc 'no-such-key '((x . 100) (y . 200) (z . 50)))))
+ (test-t (let ((alist '((x . 100) (y . 200) (z . 50)))) (eq (cl-assoc 'y alist :test eq) (cadr alist))))
+ (test-t (null (cl-assoc 'key '())))
+ (test-t (null (cl-assoc '() '(()))))
+ (test-t (null (cl-assoc '() '(() ()))))
+ (test-t (let ((alist '(() () () (x . 100) (y . 200) (z . 50)))) (eq (cl-assoc 'y alist) (car (cddddr alist)))))
+ (test-t (let ((alist '((1 . a) () (2 . b) (())))) (eq (cl-assoc '() alist) (cadddr alist))))
+ (test-t (let ((alist '((x . 100) (y . 200) (x . 100) (z . 50)))) (eq (cl-assoc 'y alist) (cadr alist))))
+ (test-t (let ((alist '((x . 100) (y . 200) (z . 50)))) (eq (assoc-if (lambda (arg) (eq arg 'y)) alist) (cadr alist))))
+ (test-t (null (assoc-if consp '((x . 100) (y . 200) (z . 50)))))
+ (test-t (null (assoc-if (lambda (x) (eq x 'key)) '())))
+ (test-t (null (assoc-if identity '(()))))
+ (test-t (null (assoc-if identity '(() ()))))
+ (test-t (let ((alist '(() () () (x . 100) (y . 200) (z . 50)))) (eq (assoc-if (lambda (arg) (eq arg 'y)) alist) (car (cddddr alist)))))
+ (test-t (let ((alist '((1 . a) () (2 . b) (())))) (eq (assoc-if (lambda (arg) (null arg)) alist) (cadddr alist))))
+ (test-t (let ((alist '((x . 100) (y . 200) (z . 50)))) (eq (assoc-if-not (lambda (arg) (not (eq arg 'y))) alist) (cadr alist))))
+ (test-t (null (assoc-if-not (complement consp) '((x . 100) (y . 200) (z . 50)))))
+ (test-t (null (assoc-if-not (lambda (x) (not (eq x 'key))) '())))
+ (test-t (null (assoc-if-not identity '(()))))
+ (test-t (null (assoc-if-not identity '(() ()))))
+ (test-t (let ((alist '(() () () (x . 100) (y . 200) (z . 50))))
+ (eq (assoc-if-not (lambda (arg) (not (eq arg 'y))) alist)
+ (car (cddddr alist)))))
+ (test-t (equal (copy-alist '((a . 10) (b . 100) (c . 1000)))
+ '((a . 10) (b . 100) (c . 1000))))
+ (test-t (let* ((alist '((a . 10) (b . 100) (c . 1000)))
+ (copy (copy-alist alist)))
+ (and (not (eq alist copy))
+ (not (eq (cdr alist) (cdr copy)))
+ (not (eq (cddr alist) (cddr copy)))
+ (not (eq (car alist) (car copy)))
+ (not (eq (cadr alist) (cadr copy)))
+ (not (eq (caddr alist) (caddr copy))))))
+ (test-t (let* ((alist '((a 10 x) (b 100 y) (c 1000 z)))
+ (copy (copy-alist alist)))
+ (and (not (eq alist copy))
+ (not (eq (cdr alist) (cdr copy)))
+ (not (eq (cddr alist) (cddr copy)))
+ (not (eq (car alist) (car copy)))
+ (not (eq (cadr alist) (cadr copy)))
+ (not (eq (caddr alist) (caddr copy)))
+ (eq (cdar alist) (cdar copy))
+ (eq (cdadr alist) (cdadr copy))
+ (eq (cdaddr alist) (cdaddr copy)))))
+ (test-t (let* ((alist (pairlis '(x y z) '(xx yy zz) '((a . aa) (b . bb)))))
+ (and (equal (cl-assoc 'x alist) '(x . xx))
+ (equal (cl-assoc 'y alist) '(y . yy))
+ (equal (cl-assoc 'z alist) '(z . zz))
+ (equal (cl-assoc 'a alist) '(a . aa))
+ (equal (cl-assoc 'b alist) '(b . bb))
+ (null (cl-assoc 'key alist)))))
+ (test-t (let* ((alist (pairlis '(x y z) '(xx yy zz))))
+ (and (equal (cl-assoc 'x alist) '(x . xx))
+ (equal (cl-assoc 'y alist) '(y . yy))
+ (equal (cl-assoc 'z alist) '(z . zz))
+ (null (cl-assoc 'key alist)))))
+ (test-t (let ((alist '((x . 100) (y . 200) (z . 50)))) (eq (rassoc '200 alist) (cadr alist))))
+ (test-t (null (rassoc 'no-such-datum '((x . 100) (y . 200) (z . 50)))))
+ (test-t (let ((alist '((x . 100) (y . 200) (z . 50)))) (eq (rassoc '200 alist :test =) (cadr alist))))
+ (test-t (null (rassoc 'key '())))
+ (test-t (null (rassoc '() '(()))))
+ (test-t (null (rassoc '() '(() ()))))
+ (test-t (let ((alist '(() () () (x . 100) (y . 200) (z . 50)))) (eq (rassoc '200 alist) (car (cddddr alist)))))
+ (test-t (let ((alist '((1 . a) () (2 . b) (())))) (eq (rassoc '() alist) (cadddr alist))))
+ (test-t (let ((alist '((x . 100) (y . 200) (x . 100) (z . 50)))) (eq (rassoc '200 alist) (cadr alist))))
+ (test-t (let ((alist '((x . 100) (y . 200) (z . 50)))) (eq (rassoc-if (lambda (arg) (= arg 200)) alist) (cadr alist))))
+ (test-t (null (rassoc-if consp '((x . 100) (y . 200) (z . 50)))))
+ (test-t (null (rassoc-if (lambda (x) (eq x 'key)) '())))
+ (test-t (null (rassoc-if identity '(()))))
+ (test-t (null (rassoc-if identity '(() ()))))
+ (test-t (let ((alist '(() () () (x . 100) (y . 200) (z . 50)))) (eq (rassoc-if (lambda (arg) (= arg 200)) alist) (car (cddddr alist)))))
+ (test-t (let ((alist '((1 . a) () (2 . b) (())))) (eq (rassoc-if (lambda (arg) (null arg)) alist) (cadddr alist))))
+ (test-t (let ((alist '((x . 100) (y . 200) (z . 50)))) (eq (rassoc-if-not (lambda (arg) (not (= arg 200))) alist) (cadr alist))))
+ (test-t (null (rassoc-if-not (complement consp) '((x . 100) (y . 200) (z . 50)))))
+ (test-t (null (rassoc-if-not (lambda (x) (not (eq x 'key))) '())))
+ (test-t (null (rassoc-if-not identity '(()))))
+ (test-t (null (rassoc-if-not identity '(() ()))))
+ (test-t (let ((alist '(() () () (x . 100) (y . 200) (z . 50))))
+ (eq (rassoc-if-not (lambda (arg) (not (= arg 200))) alist)
+ (car (cddddr alist)))))
+ (let ((list1 (list 1 1 2 3 4 'a 'b 'c "A" "B" "C" "d"))
+ (list2 (list 1 4 5 'b 'c 'd "a" "B" "c" "D")))
+ (test-t (null (set-exclusive-or (intersection list1 list2) '(c b 4 1 1))))
+ (test-t (null (set-exclusive-or (intersection list1 list2 :test equal)
+ '("B" c b 4 1 1)
+ :test equal)))
+ (test-t (null (set-exclusive-or (intersection list1 list2 :test equalp)
+ '("d" "C" "B" "A" c b 4 1 1)
+ :test equalp))))
+ (test-t (null (intersection '(0 1 2) '())))
+ (test-t (null (intersection '() '())))
+ (test-t (null (intersection '() '(0 1 2))))
+ (test-t (equal (intersection '(0) '(0)) '(0)))
+ (test-t (equal (intersection '(0 1 2 3) '(2)) '(2)))
+ (test-t (cl-member 0 (intersection '(0 0 0 0 0) '(0 1 2 3 4 5))))
+ (test-t (null (set-exclusive-or (intersection '(0 1 2 3 4) '(4 3 2 1 0)) '(4 3 2 1 0))))
+ (test-t (null (set-exclusive-or (intersection '(0 1 2 3 4) '(0 1 2 3 4)) '(0 1 2 3 4))))
+ (test-t (null (set-exclusive-or (intersection '(0 1 2 3 4) '(4 3 2 1 0)) '(0 1 2 3 4))))
+ (test-t (let ((list1 (list "A" "B" "C" "d" "e" "F" "G" "h"))
+ (list2 (list "a" "B" "c" "D" "E" "F" "g" "h")))
+ (null (set-exclusive-or (intersection list1 list2
+ :test char=
+ :key (lambda (x) (char x 0)))
+ '("B" "F" "h")
+ :test char=
+ :key (lambda (x) (char x 0))))))
+ (test-t (let ((list1 (list "A" "B" "C" "d" "e" "F" "G" "h"))
+ (list2 (list "a" "B" "c" "D" "E" "F" "g" "h")))
+ (null (set-exclusive-or (intersection list1 list2
+ :test char-equal
+ :key (lambda (x) (char x 0)))
+ '("A" "B" "C" "d" "e" "F" "G" "h")
+ :test char-equal
+ :key (lambda (x) (char x 0))))))
+ (test-t (let ((list1 (list "A" "B" "C" "d"))
+ (list2 (list "D" "E" "F" "g" "h")))
+ (null (set-exclusive-or (intersection list1 list2
+ :test char-equal
+ :key (lambda (x) (char x 0)))
+ '("d")
+ :test char-equal
+ :key (lambda (x) (char x 0))))))
+ (let ((list1 (list 1 1 2 3 4 'a 'b 'c "A" "B" "C" "d"))
+ (list2 (list 1 4 5 'b 'c 'd "a" "B" "c" "D")))
+ (test-t (null (set-exclusive-or (nintersection (copy-list list1) list2) '(c b 4 1 1))))
+ (test-t (null (set-exclusive-or (nintersection (copy-list list1) list2 :test equal)
+ '("B" c b 4 1 1)
+ :test equal)))
+ (test-t (null (set-exclusive-or (nintersection (copy-list list1) list2 :test equalp)
+ '("d" "C" "B" "A" c b 4 1 1)
+ :test equalp))))
+ (test-t (null (nintersection (list 0 1 2) '())))
+ (test-t (null (nintersection '() '())))
+ (test-t (null (nintersection '() '(0 1 2))))
+ (test-t (equal (nintersection (list 0) '(0)) '(0)))
+ (test-t (equal (nintersection (list 0 1 2 3) '(2)) '(2)))
+ (test-t (cl-member 0 (nintersection (list 0 0 0 0 0) '(0 1 2 3 4 5))))
+ (test-t (null (set-exclusive-or (nintersection (list 0 1 2 3 4) '(4 3 2 1 0)) '(4 3 2 1 0))))
+ (test-t (null (set-exclusive-or (nintersection (list 0 1 2 3 4) '(0 1 2 3 4)) '(0 1 2 3 4))))
+ (test-t (null (set-exclusive-or (nintersection (list 0 1 2 3 4) '(4 3 2 1 0)) '(0 1 2 3 4))))
+ (test-t (let ((list1 (list "A" "B" "C" "d" "e" "F" "G" "h"))
+ (list2 (list "a" "B" "c" "D" "E" "F" "g" "h")))
+ (null (set-exclusive-or (nintersection list1 list2
+ :test char=
+ :key (lambda (x) (char x 0)))
+ '("B" "F" "h")
+ :test char=
+ :key (lambda (x) (char x 0))))))
+ (test-t (let ((list1 (list "A" "B" "C" "d" "e" "F" "G" "h"))
+ (list2 (list "a" "B" "c" "D" "E" "F" "g" "h")))
+ (null (set-exclusive-or (nintersection list1 list2
+ :test char-equal
+ :key (lambda (x) (char x 0)))
+ '("A" "B" "C" "d" "e" "F" "G" "h")
+ :test char-equal
+ :key (lambda (x) (char x 0))))))
+ (test-t (let ((list1 (list "A" "B" "C" "d"))
+ (list2 (list "D" "E" "F" "g" "h")))
+ (null (set-exclusive-or (nintersection list1 list2
+ :test char-equal
+ :key (lambda (x) (char x 0)))
+ '("d")
+ :test char-equal
+ :key (lambda (x) (char x 0))))))
+ (test-t (let ((set '(a b c))) (eq (adjoin 'a set) set)))
+ (test-t (let* ((set '(a b c)) (new-set (adjoin 'x set))) (and (equal new-set '(x a b c)) (eq set (cdr new-set)))))
+ (test-t (equal (adjoin 1 nil) '(1)))
+ (test-t (let ((set '((test-item 1)))) (equal (adjoin '(test-item 1) set) '((test-item 1) (test-item 1)))))
+ (test-t (let ((set '((test-item 1)))) (equal (adjoin '(test-item 1) set) '((test-item 1) (test-item 1)))))
+ (test-t (let ((set '((test-item 1)))) (eq (adjoin '(test-item 1) set :test equal) set)))
+ (test-t (let ((set '((test-item 1)))) (eq (adjoin '(test-item) set :key car) set)))
+ (test-t (let ((set '((test-item 1)))) (eq (adjoin '(test-item) set :key car :test eq) set)))
+ (test-t (let ((set '(("test-item" 1)))) (eq (adjoin '("test-item") set :key car :test equal) set)))
+ (test-t (let ((place nil)) (and (equal (pushnew 'a place) '(a)) (equal place '(a)))))
+ (test-t (let ((place nil)) (and (equal (pushnew 'a place) '(a)) (equal place '(a)))))
+ (test-t (let ((place '("love" "peace")))
+ (equal (pushnew "war" place :test equal) '("war" "love" "peace"))))
+ (test-t (let ((place '("love" "peace")))
+ (and (eq (pushnew "peace" place :test equal) place)
+ (equal place '("love" "peace")))))
+ (test-t (let ((place '(("love" . l) ("peace" . p))))
+ (equal (pushnew '("war" . w) place :test equal :key car)
+ '(("war" . w) ("love" . l) ("peace" . p)))))
+ (test-t (let ((place '(("love" . l) ("peace" . p))))
+ (and (eq (pushnew '("love" . l) place :test equal :key car) place)
+ (equal place '(("love" . l) ("peace" . p))))))
+ (test-t (let* ((list '((1) (1 2) (1 2 3)))
+ (original list))
+ (and (equal (pushnew '(1) list :test equal) '((1) (1 2) (1 2 3)))
+ (eq list original))))
+ (test-t (let* ((list '((1) (1 2) (1 2 3)))
+ (original list))
+ (and (equal (pushnew '(1) list :test equal :key nil) '((1) (1 2) (1 2 3)))
+ (eq list original))))
+ (test-t (null (set-difference (set-difference '(1 2 3 4 5 6 7 8 9)
+ '(2 4 6 8))
+ '(1 3 5 7 9))))
+ (test-t (null (nset-difference (set-difference (list 1 2 3 4 5 6 7 8 9)
+ '(2 4 6 8))
+ '(1 3 5 7 9))))
+ (test-t (null (set-difference '() '())))
+ (test-t (null (set-difference '() '() :test equal :key 'identity)))
+ (test-t (null (nset-difference '() '())))
+ (test-t (null (set-difference '() '(1 2 3))))
+ (test-t (null (set-difference '() '(1 2 3) :test equal :key 'identity)))
+ (test-t (null (nset-difference '() '(1 2 3))))
+ (test-t (null (set-difference '(1 2 3 4) '(4 3 2 1))))
+ (test-t (null (nset-difference (list 1 2 3 4) '(4 3 2 1))))
+ (test-t (null (set-difference '(1 2 3 4) '(2 4 3 1))))
+ (test-t (null (nset-difference (list 1 2 3 4) '(2 4 3 1))))
+ (test-t (null (set-difference '(1 2 3 4) '(1 3 4 2))))
+ (test-t (null (nset-difference (list 1 2 3 4) '(1 3 4 2))))
+ (test-t (null (set-difference '(1 2 3 4) '(1 3 2 4))))
+ (test-t (null (nset-difference (list 1 2 3 4) '(1 3 2 4))))
+ (test-t (eq (set-difference (set-difference '(1 2 3) '()) '(1 2 3)) '()))
+ (test-t (eq (nset-difference (nset-difference (list 1 2 3) '()) '(1 2 3)) '()))
+ (test-t (eq (set-difference (set-difference '(1 2 3) '(1)) '(2 3)) '()))
+ (test-t (eq (nset-difference (nset-difference (list 1 2 3) '(1)) '(2 3)) '()))
+ (test-t (eq (set-difference (set-difference '(1 2 3) '(1 2)) '(3)) '()))
+ (test-t (eq (nset-difference (nset-difference (list 1 2 3) '(1 2)) '(3)) '()))
+ (test-t (null (set-exclusive-or (set-exclusive-or '(1 2 3) '(2 3 4)) '(1 4))))
+ (test-t (null (nset-exclusive-or (nset-exclusive-or (list 1 2 3) '(2 3 4)) '(1 4))))
+ (test-t (null (set-exclusive-or (set-exclusive-or '(1 2 3) '(1 3)) '(2))))
+ (test-t (null (nset-exclusive-or (nset-exclusive-or (list 1 2 3) '(1 3)) '(2))))
+ (test-t (null (set-exclusive-or '() '())))
+ (test-t (null (nset-exclusive-or '() '())))
+ (test-t (null (set-exclusive-or '(1 2 3) '(3 2 1))))
+ (test-t (null (nset-exclusive-or (list 1 2 3) '(3 2 1))))
+ (test-t (null (set-exclusive-or '(1 2 3) '(2 3 1))))
+ (test-t (null (nset-exclusive-or (list 1 2 3) '(2 3 1))))
+ (test-t (null (set-exclusive-or '(1 2 3) '(1 3 2))))
+ (test-t (null (nset-exclusive-or (list 1 2 3) '(1 3 2))))
+ (test-t (null (set-exclusive-or (set-exclusive-or '(1 2 3) '()) '(3 2 1))))
+ (test-t (null (nset-exclusive-or (nset-exclusive-or (list 1 2 3) '()) '(3 2 1))))
+ (test-t (null (set-exclusive-or (set-exclusive-or '() '(1 2 3)) '(2 1 3))))
+ (test-t (null (nset-exclusive-or (nset-exclusive-or '() '(1 2 3)) '(2 1 3))))
+ (test-t (null (set-exclusive-or '("car" "ship" "airplane" "submarine")
+ '("car" "ship" "airplane" "submarine")
+ :test equal)))
+ (test-t (null (nset-exclusive-or (copy-list '("car" "ship" "airplane" "submarine"))
+ '("car" "ship" "airplane" "submarine")
+ :test equal)))
+ (test-t (null (set-exclusive-or '("car" "ship" "airplane" "submarine")
+ '("CAR" "SHIP" "AIRPLANE" "SUBMARINE")
+ :test equalp)))
+ (test-t (null (nset-exclusive-or (copy-list '("car" "ship" "airplane" "submarine"))
+ '("CAR" "SHIP" "AIRPLANE" "SUBMARINE")
+ :test equalp)))
+ (test-t (null (set-exclusive-or '(("car") ("ship") ("airplane") ("submarine"))
+ '(("car") ("ship") ("airplane") ("submarine"))
+ :test string=
+ :key car)))
+ (test-t (null (nset-exclusive-or (copy-tree
+ '(("car") ("ship") ("airplane") ("submarine")))
+ '(("car") ("ship") ("airplane") ("submarine"))
+ :test string=
+ :key car)))
+ (test-t (subsetp '(1 2 3) '(1 2 3)))
+ (test-t (subsetp '(1 2 3) '(3 2 1)))
+ (test-t (subsetp '(1 2 3) '(2 1 3)))
+ (test-t (null (subsetp '(1 2 3 4) '(2 1 3))))
+ (test-t (subsetp '(1) '(2 1 3)))
+ (test-t (subsetp '(1 2) '(1 2 3 4 5 6 7 8)))
+ (test-t (subsetp '(1 2 3 4 5) '(8 7 6 5 4 3 2 1)))
+ (test-t (null (subsetp '("car" "ship" "airplane" "submarine") '("car" "ship" "horse" "airplane" "submarine" "camel"))))
+ (test-t (subsetp '("car" "ship" "airplane" "submarine")
+ '("car" "ship" "horse" "airplane" "submarine" "camel")
+ :test equal))
+ (test-t (subsetp '("CAR" "SHIP" "AIRPLANE" "SUBMARINE")
+ '("car" "ship" "horse" "airplane" "submarine" "camel")
+ :test equalp))
+ (test-t (subsetp '(("car") ("ship") ("airplane") ("submarine"))
+ '(("car") ("ship") ("horse") ("airplane") ("submarine") ("camel"))
+ :test string=
+ :key car))
+ (test-t (null (union '() '())))
+ (test-t (null (nunion '() '())))
+ (test-t (null (set-difference (union '(1 2 3) '(2 3 4)) '(1 2 3 4))))
+ (test-t (null (set-difference (nunion (list 1 2 3) (list 2 3 4)) '(1 2 3 4))))
+ (test-t (null (set-difference (union '(1 2 3) '(1 2 3)) '(1 2 3))))
+ (test-t (null (set-difference (nunion (list 1 2 3) (list 1 2 3)) '(1 2 3))))
+ (test-t (null (set-difference (union '(1) '(3 2 1)) '(1 2 3))))
+ (test-t (null (set-difference (nunion (list 1) (list 3 2 1)) '(1 2 3))))
+ (test-t (null (set-difference (union '(1 2 3) '()) '(1 2 3))))
+ (test-t (null (set-difference (nunion (list 1 2 3) '()) '(1 2 3))))
+ (test-t (null (set-difference (union '() '(1 2 3)) '(1 2 3))))
+ (test-t (null (set-difference (nunion '() (list 1 2 3)) '(1 2 3))))
+ (test-t (null (set-difference (union '(1 2 3) '(2)) '(1 2 3))))
+ (test-t (null (set-difference (nunion (list 1 2 3) (list 2)) '(1 2 3))))
+
+ (test-t (eql (length "abc") 3))
+ (test-t (zerop (length "")))
+ (test-t (zerop (length #())))
+ (test-t (zerop (length ())))
+ (test-t (eql (length '(0)) 1))
+ (test-t (eql (length '(0 1)) 2))
+ (test-t (eql (length '(0 1 2)) 3))
+ (test-t (eql (length '(0 1 2 3)) 4))
+ (test-t (eql (length '(0 1 2 3 4)) 5))
+ (test-t (eql (length '(0 1 2 3 4 5)) 6))
+ (test-t (eql (length '(0 1 2 3 4 5 6)) 7))
+ (test-t (eql (length #(0)) 1))
+ (test-t (eql (length #(0 1)) 2))
+ (test-t (eql (length #(0 1 2)) 3))
+ (test-t (eql (length #(0 1 2 3)) 4))
+ (test-t (eql (length #(0 1 2 3 4)) 5))
+ (test-t (eql (length #(0 1 2 3 4 5)) 6))
+ (test-t (eql (length #(0 1 2 3 4 5 6)) 7))
+ (test-t (eql (length (make-array 100)) 100))
+ (test-t (eql (length (make-sequence 'list 20)) 20))
+ (test-t (eql (length (make-sequence 'string 10)) 10))
+ (test-t (eql (length (make-sequence 'bit-vector 3)) 3))
+ (test-t (eql (length (make-sequence 'bit-vector 64)) 64))
+ (test-t (eql (length (make-sequence 'simple-vector 64)) 64))
+ (test-t (string= (copy-seq "love") "love"))
+ (test-t (equalp (copy-seq '#(a b c d)) '#(a b c d)))
+ (test-t (equal (copy-seq '(love)) '(love)))
+ (test-t (equal (copy-seq '(love hate war peace)) '(love hate war peace)))
+ (test-t (null (copy-seq nil)))
+ (test-t (string= (copy-seq "") ""))
+ (test-t (let* ((seq0 "love&peace") (seq (copy-seq seq0))) (and (not (eq seq0 seq)) (string= seq0 seq))))
+ (test-t (let* ((seq0 (list 'love 'and 'peace)) (seq (copy-seq seq0))) (and (not (eq seq0 seq)) (equal seq0 seq))))
+ (test-t (let* ((c0 (list 'love))
+ (c1 (list 'peace))
+ (seq (copy-seq (list c0 c1))))
+ (and (equal seq '((love) (peace)))
+ (eq (car seq) c0)
+ (eq (cadr seq) c1))))
+ (test-t (let* ((seq0 '#(t nil t nil))
+ (seq (copy-seq seq0)))
+ (and (not (eq seq0 seq))
+ (equalp seq seq0))))
+ (test-t (vectorp (copy-seq (vector))))
+ (test-t (simple-vector-p (copy-seq (vector))))
+ (test-t (simple-vector-p (copy-seq (vector 0 1))))
+ (test-t (simple-string-p (copy-seq "xyz")))
+ (test-t (char= (elt "0123456789" 6) #\6))
+ (test-t (eq (elt #(a b c d e f g) 0) 'a))
+ (test-t (eq (elt '(a b c d e f g) 4) 'e))
+ (test-t (let ((str (copy-seq "0123456789"))) (and (char= (elt str 6) #\6) (setf (elt str 0) #\#) (string= str "#123456789"))))
+ (test-t (let ((list (list 0 1 2 3)))
+ (and (= (elt list 2) 2)
+ (setf (elt list 1) 9)
+ (= (elt list 1) 9)
+ (equal list '(0 9 2 3)))))
+ (test-t (let ((vec (vector 'a 'b 'c)))
+ (and (eq (elt vec 0) 'a)
+ (eq (elt vec 1) 'b)
+ (eq (elt vec 2) 'c))))
+ (test-t (let ((list (list 0 1 2 3))) (and (eq (cl-fill list nil) list) (every null list))))
+ (test-t (let ((vector (vector 'x 'y 'z))) (and (eq (cl-fill vector 'a) vector) (every (lambda (arg) (eq arg 'a)) vector))))
+ (test-t (let ((list (list 0 1 2 3))) (and (eq (cl-fill list '9 :start 2) list) (equal list '(0 1 9 9)))))
+ (test-t (let ((list (list 0 1 2 3))) (and (eq (cl-fill list '9 :start 1 :end 3) list) (equal list '(0 9 9 3)))))
+ (test-t (let ((list (list 0 1 2 3))) (and (eq (cl-fill list '9 :start 1 :end nil) list) (equal list '(0 9 9 9)))))
+ (test-t (let ((list (list 0 1 2 3))) (and (eq (cl-fill list '9 :end 1) list) (equal list '(9 1 2 3)))))
+ (test-t (let ((vector (vector 0 1 2 3))) (and (eq (cl-fill vector 't :start 3) vector) (equalp vector '#(0 1 2 t)))))
+ (test-t (let ((vector (vector 0 1 2 3))) (and (eq (cl-fill vector 't :start 2 :end 4) vector) (equalp vector '#(0 1 t t)))))
+ (test-t (let ((vector (vector 0 1 2 3))) (and (eq (cl-fill vector 't :start 2 :end nil) vector) (equalp vector '#(0 1 t t)))))
+ (test-t (let ((vector (vector 0 1 2 3))) (and (eq (cl-fill vector 't :end 3) vector) (equalp vector '#(t t t 3)))))
+ (test-t (null (make-sequence 'list 0)))
+ (test-t (string= (make-sequence 'string 26 :initial-element #\.) ".........................."))
+ (test-t (equal (make-sequence 'list 3 :initial-element 'a) '(a a a)))
+ (test-t (null (make-sequence 'null 0 :initial-element 'a)))
+ (test-t (equalp (make-sequence 'vector 3 :initial-element 'z) '#(z z z)))
+ (test-t (string= (make-sequence 'string 4 :initial-element '#\z) "zzzz"))
+ (test-t (vectorp (make-sequence 'vector 10)))
+ (test-t (string= (subseq "012345" 2) "2345"))
+ (test-t (string= (subseq "012345" 3 5) "34"))
+ (test-t (equal (subseq '(0 1 2 3) 0) '(0 1 2 3)))
+ (test-t (equal (subseq '(0 1 2 3) 1) '(1 2 3)))
+ (test-t (equal (subseq '(0 1 2 3) 2) '(2 3)))
+ (test-t (equal (subseq '(0 1 2 3) 3) '(3)))
+ (test-t (equal (subseq '(0 1 2 3) 4) '()))
+ (test-t (equalp (subseq #(a b c d) 0) #(a b c d)))
+ (test-t (equalp (subseq #(a b c d) 1) #(b c d)))
+ (test-t (equalp (subseq #(a b c d) 2) #(c d)))
+ (test-t (equalp (subseq #(a b c d) 3) #(d)))
+ (test-t (equalp (subseq #(a b c d) 4) #()))
+ (test-t (string= (subseq "0123" 0) "0123"))
+ (test-t (string= (subseq "0123" 1) "123"))
+ (test-t (string= (subseq "0123" 2) "23"))
+ (test-t (string= (subseq "0123" 3) "3"))
+ (test-t (string= (subseq "0123" 4) ""))
+ (test-t (equal (subseq '(0 1 2 3) 0 4) '(0 1 2 3)))
+ (test-t (equal (subseq '(0 1 2 3) 0 nil) '(0 1 2 3)))
+ (test-t (let* ((list0 '(0 1 2 3)) (list (subseq list0 0 4))) (and (not (eq list0 list)) (equal list0 list))))
+ (test-t (let* ((list0 '(0 1 2 3)) (list (subseq list0 0 nil))) (and (not (eq list0 list)) (equal list0 list))))
+ (test-t (equal (subseq '(0 1 2 3) 1 3) '(1 2)))
+ (test-t (equal (subseq '(0 1 2 3) 2 2) '()))
+ (test-t (equal (subseq '(0 1 2 3) 0 0) '()))
+ (test-t (equal (subseq '(0 1 2 3) 1 1) '()))
+ (test-t (equal (subseq '(0 1 2 3) 2 2) '()))
+ (test-t (equal (subseq '(0 1 2 3) 3 3) '()))
+ (test-t (equal (subseq '(0 1 2 3) 4 4) '()))
+ (test-t (equalp (subseq #(0 1 2 3) 0 4) #(0 1 2 3)))
+ (test-t (equalp (subseq #(0 1 2 3) 0 nil) #(0 1 2 3)))
+ (test-t (let* ((vec0 #(0 1 2 3)) (vec (subseq vec0 0 4))) (and (not (eq vec0 vec)) (equalp vec0 vec))))
+ (test-t (let* ((vec0 #(0 1 2 3)) (vec (subseq vec0 0 nil))) (and (not (eq vec0 vec)) (equalp vec0 vec))))
+ (test-t (equalp (subseq #(0 1 2 3) 1 3) #(1 2)))
+ (test-t (equalp (subseq #(0 1 2 3) 2 2) #()))
+ (test-t (equalp (subseq #(0 1 2 3) 0 0) #()))
+ (test-t (equalp (subseq #(0 1 2 3) 1 1) #()))
+ (test-t (equalp (subseq #(0 1 2 3) 2 2) #()))
+ (test-t (equalp (subseq #(0 1 2 3) 3 3) #()))
+ (test-t (equalp (subseq #(0 1 2 3) 4 4) #()))
+ (test-t (string= (cl-map 'string (lambda (x y) (char "01234567890ABCDEF" (mod (+ x y) 16))) '(1 2 3 4) '(10 9 8 7)) "AAAA"))
+ (test-t (equal (cl-map 'list - '(1 2 3 4)) '(-1 -2 -3 -4)))
+ (test-t (string= (cl-map 'string (lambda (x) (if (oddp x) #\1 #\0)) '(1 2 3 4)) "1010"))
+ (test-t (equal (cl-map 'list + '(0 1) '(1 0)) '(1 1)))
+ (test-t (equal (cl-map 'list - '(0 1) '(1 0)) '(-1 1)))
+ (test-t (every null (list (cl-map 'list + '())
+ (cl-map 'list + '() '())
+ (cl-map 'list + '() '() '())
+ (cl-map 'list + '() '() '() '())
+ (cl-map 'list + '() '() '() '() '()))))
+ (test-t (equal (cl-map 'list + '(0 1 2)) '(0 1 2)))
+ (test-t (equal (cl-map 'list + '(0 1 2) '(1 2 3)) '(1 3 5)))
+ (test-t (equal (cl-map 'list + '(0 1 2) '(1 2 3) '(2 3 4)) '(3 6 9)))
+ (test-t (equal (cl-map 'list + '(0 1 2) '(1 2 3) '(2 3 4) '(3 4 5)) '(6 10 14)))
+ (test-t (equal (cl-map 'list + '(1 2) '(1 2 3)) '(2 4)))
+ (test-t (equal (cl-map 'list + '(0 1 2) '(2 3) '(2 3 4)) '(4 7)))
+ (test-t (equal (cl-map 'list + '(0 1 2) '(1 2 3) '(2) '(3 4 5)) '(6)))
+ (test-t (equal (cl-map 'list + '(0 1 2) '(1 2 3) '(2 3 4) '(3 4 5) '()) '()))
+ (test-t (null (cl-map 'null + '())))
+ (test-t (equalp (cl-map 'vector + #()) #()))
+ (test-t (equalp (cl-map 'vector + #() #()) #()))
+ (test-t (equalp (cl-map 'vector + #() #() #()) #()))
+ (test-t (equalp (cl-map 'vector + #() #() #() #()) #()))
+ (test-t (equalp (cl-map 'vector + #() #() #() #() #()) #()))
+ (test-t (equalp (cl-map 'vector + '() #()) #()))
+ (test-t (equalp (cl-map 'vector + '() #() "") #()))
+ (test-t (equalp (cl-map 'vector + '(0 1 2)) #(0 1 2)))
+ (test-t (equalp (cl-map 'vector + '(0 1 2) #(1 2 3)) #(1 3 5)))
+ (test-t (equalp (cl-map 'vector + #(0 1 2) '(1 2 3) #(2 3 4)) #(3 6 9)))
+ (test-t (equalp (cl-map 'vector + '(0 1 2) #(1 2 3) '(2 3 4) #(3 4 5)) #(6 10 14)))
+ (test-t (equalp (cl-map 'vector + '(1 2) '(1 2 3)) #(2 4)))
+ (test-t (equalp (cl-map 'vector + '(0 1 2) '(2 3) '(2 3 4)) #(4 7)))
+ (test-t (equalp (cl-map 'vector + '(0 1 2) '(1 2 3) '(2) '(3 4 5)) #(6)))
+ (test-t (equalp (cl-map 'vector + '(0 1 2) '(1 2 3) '(2 3 4) '(3 4 5) '()) #()))
+ (test-t (equalp (cl-map 'vector + #(1 2) #(1 2 3)) #(2 4)))
+ (test-t (equalp (cl-map 'vector + #(0 1 2) #(2 3) #(2 3 4)) #(4 7)))
+ (test-t (equalp (cl-map 'vector + #(0 1 2) '(1 2 3) #(2) '(3 4 5)) #(6)))
+ (test-t (equalp (cl-map 'vector + '(0 1 2) #(1 2 3) '(2 3 4) '(3 4 5) '()) #()))
+ (test-t (string= (cl-map 'string (lambda rest (char-upcase (car rest))) "") ""))
+ (test-t (string= (cl-map 'string (lambda rest (char-upcase (car rest))) "" "") ""))
+ (test-t (string= (cl-map 'string (lambda rest (char-upcase (car rest))) "" "" "") ""))
+ (test-t (string= (cl-map 'string (lambda rest (char-upcase (car rest))) "" "" "" "") ""))
+ (test-t (string= (cl-map 'string (lambda rest (char-upcase (car rest))) "" "" "" "" "") ""))
+ (test-t (string= (cl-map 'string (lambda rest (char-upcase (car rest))) "") ""))
+ (test-t (string= (cl-map 'string (lambda rest (char-upcase (car rest))) "" '()) ""))
+ (test-t (string= (cl-map 'string (lambda rest (char-upcase (car rest))) "" #() '()) ""))
+ (test-t (string= (cl-map 'string (lambda rest (char-upcase (car rest))) '() '() "" "") ""))
+ (test-t (string= (cl-map 'string (lambda rest (char-upcase (car rest))) #() #() #() #() #()) ""))
+ (test-t (string= (cl-map 'string (lambda (a b) (if (char< a b) b a)) "axbycz" "xaybzc") "xxyyzz"))
+ (test-t (string= (cl-map 'string (lambda (a b) (if (char< a b) b a)) "axbycz" "xayb") "xxyy"))
+ (test-t (let ((list ()))
+ (and (null (cl-map nil
+ (lambda rest
+ (setq list (cons (apply + rest) list)))
+ '(0 1 2 3)
+ '(1 2 3 4)))
+ (equal list '(7 5 3 1)))))
+ (test-t (let ((list ()))
+ (and (null (cl-map nil
+ (lambda rest
+ (setq list (cons (apply + rest) list)))
+ '(0 1 2 3)
+ '(1 2 3 4)
+ '(2 3 4 5)))
+ (equal list (cl-reverse '(3 6 9 12))))))
+ (test-t (let ((list ()))
+ (and (null (cl-map nil
+ (lambda rest
+ (setq list (cons (apply + rest) list)))
+ '(0 1 2 3)
+ '(1)
+ '(2 3 4 5)))
+ (equal list '(3)))))
+ (test-t (string= (cl-map 'string char-upcase "abc") "ABC"))
+ (test-t (let ((a (list 1 2 3 4))
+ (b (list 10 10 10 10)))
+ (and (equal (map-into a + a b) '(11 12 13 14))
+ (equal a '(11 12 13 14))
+ (equal b '(10 10 10 10)))))
+ (test-t (let ((a '(11 12 13 14)) (k '(one two three))) (equal (map-into a cons k a) '((one . 11) (two . 12) (three . 13) 14))))
+ (test-t (null (map-into nil identity)))
+ (test-t (null (map-into nil identity)))
+ (test-t (null (map-into nil identity '())))
+ (test-t (null (map-into nil identity '(0 1 2) '(9 8 7))))
+ (test-t (let ((list (list 0 1 2))) (and (eq (map-into list identity) list) (equal list '(0 1 2)))))
+ (test-t (let ((list (list 0 1 2))) (and (eq (map-into list identity '()) list) (equal list '(0 1 2)))))
+ (test-t (let ((vec (vector 0 1 2))) (and (eq (map-into vec identity) vec) (equalp vec #(0 1 2)))))
+ (test-t (let ((vec (vector 0 1 2))) (and (eq (map-into vec identity #()) vec) (equalp vec #(0 1 2)))))
+ (test-t (let ((vec (vector 0 1 2))) (and (eq (map-into vec + #() '() #()) vec) (equalp vec #(0 1 2)))))
+ (test-t (equal (map-into (list nil nil) + '(0 1) '(1 0)) '(1 1)))
+ (test-t (equal (map-into (list nil nil) - '(0 1) '(1 0)) '(-1 1)))
+ (test-t (let ((list (cl-make-list 3 :initial-element nil))) (and (eq (map-into list + '(0 1 2)) list) (equal list '(0 1 2)))))
+ (test-t (let ((list (cl-make-list 3 :initial-element nil))) (and (eq (map-into list + '(0 1 2) '(1 2 3)) list) (equal list '(1 3 5)))))
+ (test-t (let ((list (cl-make-list 3 :initial-element nil))) (and (eq (map-into list + '(0 1 2) '(1 2 3) '(2 3 4)) list) (equal list '(3 6 9)))))
+ (test-t (let ((list (cl-make-list 3 :initial-element nil))) (and (eq (map-into list + '(1 2) '(1 2 3)) list) (equal list '(2 4 ())))))
+ (test-t (let ((list (cl-make-list 1 :initial-element nil))) (and (eq (map-into list + '(1 2 3) '(1 2 3)) list) (equal list '(2)))))
+ (test-t (let ((list (cl-make-list 3 :initial-element nil))) (and (eq (map-into list + '(1 2 3 4) '(1 2 3) '(0)) list) (equal list '(2 () ())))))
+ (test-t (let ((vec (make-sequence 'vector 3 :initial-element nil))) (and (eq (map-into vec + '(0 1 2)) vec) (equalp vec #(0 1 2)))))
+ (test-t (let ((vec (make-sequence 'vector 3 :initial-element nil))) (and (eq (map-into vec + '(0 1 2) #(1 2 3)) vec) (equalp vec #(1 3 5)))))
+ (test-t (let ((vec (make-sequence 'vector 3 :initial-element nil))) (and (eq (map-into vec + '(0 1 2) '(1 2 3) #(2 3 4)) vec) (equalp vec #(3 6 9)))))
+ (test-t (let ((vec (make-sequence 'vector 3 :initial-element nil))) (and (eq (map-into vec + '(1 2) #(1 2 3)) vec) (equalp vec #(2 4 ())))))
+ (test-t (let ((vec (make-sequence 'vector 1 :initial-element nil))) (and (eq (map-into vec + '(1 2) #(1 2 3)) vec) (equalp vec #(2)))))
+ (test-t (let ((vec (make-sequence 'vector 3 :initial-element nil))) (and (eq (map-into vec + '(1 2 3 4) #(1 2 3) '(0)) vec) (equalp vec #(2 () ())))))
+ (test-t (eql (reduce * '(1 2 3 4 5)) 120))
+ (test-t (equal (reduce append '((1) (2)) :initial-value '(i n i t)) '(i n i t 1 2)))
+ (test-t (equal (reduce append '((1) (2)) :from-end t :initial-value '(i n i t)) '(1 2 i n i t)))
+ (test-t (eql (reduce - '(1 2 3 4)) -8))
+ (test-t (eql (reduce - '(1 2 3 4) :from-end t) -2))
+ (test-t (eql (reduce + '()) 0))
+ (test-t (eql (reduce + '(3)) 3))
+ (test-t (eq (reduce + '(foo)) 'foo))
+ (test-t (equal (reduce list '(1 2 3 4)) '(((1 2) 3) 4)))
+ (test-t (equal (reduce list '(1 2 3 4) :from-end t) '(1 (2 (3 4)))))
+ (test-t (equal (reduce list '(1 2 3 4) :initial-value 'foo) '((((foo 1) 2) 3) 4)))
+ (test-t (equal (reduce list '(1 2 3 4) :from-end t :initial-value 'foo) '(1 (2 (3 (4 foo))))))
+ (test-t (equal (reduce list '(0 1 2 3)) '(((0 1) 2) 3)))
+ (test-t (equal (reduce list '(0 1 2 3) :start 1) '((1 2) 3)))
+ (test-t (equal (reduce list '(0 1 2 3) :start 1 :end nil) '((1 2) 3)))
+ (test-t (equal (reduce list '(0 1 2 3) :start 2) '(2 3)))
+ (test-t (eq (reduce list '(0 1 2 3) :start 0 :end 0) '()))
+ (test-t (eq (reduce list '(0 1 2 3) :start 0 :end 0 :initial-value 'initial-value) 'initial-value))
+ (test-t (eq (reduce list '(0 1 2 3) :start 2 :end 2) '()))
+ (test-t (eq (reduce list '(0 1 2 3) :start 2 :end 2 :initial-value 'initial-value) 'initial-value))
+ (test-t (eq (reduce list '(0 1 2 3) :start 4 :end 4) '()))
+ (test-t (eq (reduce list '(0 1 2 3) :start 4 :end 4 :initial-value 'initial-value) 'initial-value))
+ (test-t (eql (reduce list '(0 1 2 3) :start 2 :end 3) 2))
+ (test-t (equal (reduce list '(0 1 2 3) :start 2 :end 3 :initial-value 'initial-value) '(initial-value 2)))
+ (test-t (eql (reduce + '(0 1 2 3 4 5 6 7 8 9)) 45))
+ (test-t (eql (reduce - '(0 1 2 3 4 5 6 7 8 9)) -45))
+ (test-t (eql (reduce - '(0 1 2 3 4 5 6 7 8 9) :from-end t) -5))
+ (test-t (equal (reduce list '(0 1 2 3) :initial-value 'initial-value) '((((initial-value 0) 1) 2) 3)))
+ (test-t (equal (reduce list '(0 1 2 3) :from-end t) '(0 (1 (2 3)))))
+ (test-t (equal (reduce list '((1) (2) (3) (4)) :key car) '(((1 2) 3) 4)))
+ ;(test-t (equal (reduce list '((1) (2) (3) (4)) :key car :from-end nil) '(((1 2) 3) 4)))
+ (test-t (equal (reduce list '((1) (2) (3) (4)) :key car :initial-value 0) '((((0 1) 2) 3) 4)))
+ (test-t (equal (reduce list '((1) (2) (3) (4)) :key car :from-end t) '(1 (2 (3 4)))))
+ (test-t (equal (reduce list '((1) (2) (3) (4)) :key car :from-end t :initial-value 5) '(1 (2 (3 (4 5))))))
+ (test-t (equal (reduce list #(0 1 2 3)) '(((0 1) 2) 3)))
+ (test-t (equal (reduce list #(0 1 2 3) :start 1) '((1 2) 3)))
+ (test-t (equal (reduce list #(0 1 2 3) :start 1 :end nil) '((1 2) 3)))
+ (test-t (equal (reduce list #(0 1 2 3) :start 2) '(2 3)))
+ (test-t (eq (reduce list #(0 1 2 3) :start 0 :end 0) '()))
+ (test-t (eq (reduce list #(0 1 2 3) :start 0 :end 0 :initial-value 'initial-value) 'initial-value))
+ (test-t (eq (reduce list #(0 1 2 3) :start 2 :end 2) '()))
+ (test-t (eq (reduce list #(0 1 2 3) :start 2 :end 2 :initial-value 'initial-value) 'initial-value))
+ (test-t (eq (reduce list #(0 1 2 3) :start 4 :end 4) '()))
+ (test-t (eq (reduce list #(0 1 2 3) :start 4 :end 4 :initial-value 'initial-value) 'initial-value))
+ (test-t (eql (reduce list #(0 1 2 3) :start 2 :end 3) 2))
+ (test-t (equal (reduce list #(0 1 2 3) :start 2 :end 3 :initial-value 'initial-value) '(initial-value 2)))
+ (test-t (eql (reduce + #(0 1 2 3 4 5 6 7 8 9)) 45))
+ (test-t (eql (reduce - #(0 1 2 3 4 5 6 7 8 9)) -45))
+ (test-t (eql (reduce - #(0 1 2 3 4 5 6 7 8 9) :from-end t) -5))
+ (test-t (equal (reduce list #(0 1 2 3) :initial-value 'initial-value) '((((initial-value 0) 1) 2) 3)))
+ (test-t (equal (reduce list #(0 1 2 3) :from-end t) '(0 (1 (2 3)))))
+ (test-t (equal (reduce list #((1) (2) (3) (4)) :key car) '(((1 2) 3) 4)))
+ ;(test-t (equal (reduce list #((1) (2) (3) (4)) :key car :from-end nil) '(((1 2) 3) 4)))
+ (test-t (equal (reduce list #((1) (2) (3) (4)) :key car :initial-value 0) '((((0 1) 2) 3) 4)))
+ (test-t (equal (reduce list #((1) (2) (3) (4)) :key car :from-end t) '(1 (2 (3 4)))))
+ (test-t (equal (reduce list #((1) (2) (3) (4)) :key car :from-end t :initial-value 5) '(1 (2 (3 (4 5))))))
+ (test-t (eql (count #\a "how many A's are there in here?") 2))
+ (test-t (eql (count-if-not oddp '((1) (2) (3) (4)) :key car) 2))
+ (test-t (eql (count-if upper-case-p "The Crying of Lot 49" :start 4) 2))
+ (test-t (eql (count #\a (concatenate 'list "how many A's are there in here?")) 2))
+ (test-t (eql (count-if alpha-char-p "-a-b-c-0-1-2-3-4-") 3))
+ (test-t (eql (count-if alphanumericp "-a-b-c-0-1-2-3-4-") 8))
+ (test-t (eql (count nil (list t nil t nil t nil)) 3))
+ (test-t (eql (count nil (vector t nil t nil t nil)) 3))
+ (test-t (zerop (count 9 '(0 1 2 3 4))))
+ (test-t (zerop (count 'a '(0 1 2 3 4))))
+ (test-t (eql (count 0 '(0 0 0 0 0) :start 1) 4))
+ (test-t (eql (count 0 '(0 0 0 0 0) :start 1 :end nil) 4))
+ (test-t (eql (count 0 '(0 0 0 0 0) :start 2) 3))
+ (test-t (zerop (count 0 '(0 0 0 0) :start 0 :end 0)))
+ (test-t (zerop (count 0 '(0 0 0 0) :start 2 :end 2)))
+ (test-t (zerop (count 0 '(0 0 0 0) :start 4 :end 4)))
+ (test-t (eql (count 0 '(0 0 0 0) :start 2 :end 3) 1))
+ (test-t (eql (count #\a "abcABC" :test equalp) 2))
+ (test-t (eql (count #\a "abcABC" :test char-equal) 2))
+ (test-t (eql (count '(a) '((x) (y) (z) (a) (b) (c)) :test equalp) 1))
+ (test-t (eql (count 'a '((x) (y) (z) (a) (b) (c)) :key car :test eq) 1))
+ (test-t (eql (count nil '((x . x) (y) (z . z) (a) (b . b) (c)) :key cdr :test eq) 3))
+ (test-t (let ((list nil))
+ (and (eql (count 'a '(a b c d)
+ :test (lambda (a b) (setq list (cons b list)) (eq a b)))
+ 1)
+ (equal list '(d c b a)))))
+ (test-t (let ((list nil))
+ (and (eql (count 'a '(a b c d)
+ :test (lambda (a b) (setq list (cons b list)) (eq a b))
+ :from-end t)
+ 1)
+ (equal list '(a b c d)))))
+ (test-t (zerop (count 9 #(0 1 2 3 4))))
+ (test-t (zerop (count 'a #(0 1 2 3 4))))
+ (test-t (eql (count 0 #(0 0 0 0 0) :start 1) 4))
+ (test-t (eql (count 0 #(0 0 0 0 0) :start 1 :end nil) 4))
+ (test-t (eql (count 0 #(0 0 0 0 0) :start 2) 3))
+ (test-t (zerop (count 0 #(0 0 0 0) :start 0 :end 0)))
+ (test-t (zerop (count 0 #(0 0 0 0) :start 2 :end 2)))
+ (test-t (zerop (count 0 #(0 0 0 0) :start 4 :end 4)))
+ (test-t (eql (count 0 #(0 0 0 0) :start 2 :end 3) 1))
+ (test-t (eql (count '(a) #((x) (y) (z) (a) (b) (c)) :test equalp) 1))
+ (test-t (eql (count 'a #((x) (y) (z) (a) (b) (c)) :key car :test eq) 1))
+ (test-t (eql (count nil #((x . x) (y) (z . z) (a) (b . b) (c)) :key cdr :test eq) 3))
+ (test-t (let ((list nil))
+ (and (eql (count 'a #(a b c d)
+ :test (lambda (a b) (setq list (cons b list)) (eq a b)))
+ 1)
+ (equal list '(d c b a)))))
+ (test-t (let ((list nil))
+ (and (eql (count 'a #(a b c d)
+ :test (lambda (a b) (setq list (cons b list)) (eq a b))
+ :from-end t)
+ 1)
+ (equal list '(a b c d)))))
+ (test-t (eql (count-if null (list t nil t nil t nil)) 3))
+ (test-t (zerop (count-if (lambda (x) (eql x 9)) #(0 1 2 3 4))))
+ (test-t (zerop (count-if (lambda (a) (eq 'x a)) #(0 1 2 3 4))))
+ (test-t (eql (count-if zerop '(0 0 0 0 0) :start 1) 4))
+ (test-t (eql (count-if zerop '(0 0 0 0 0) :start 1 :end nil) 4))
+ (test-t (eql (count-if zerop '(0 0 0 0 0) :start 2) 3))
+ (test-t (zerop (count-if zerop '(0 0 0 0) :start 0 :end 0)))
+ (test-t (zerop (count-if zerop '(0 0 0 0) :start 2 :end 2)))
+ (test-t (zerop (count-if zerop '(0 0 0 0) :start 4 :end 4)))
+ (test-t (eql (count-if zerop '(0 0 0 0) :start 2 :end 3) 1))
+ (test-t (eql (count-if (lambda (x) (equalp #\a x)) "abcABC") 2))
+ (test-t (eql (count-if (lambda (x) (char-equal #\a x)) "abcABC") 2))
+ (test-t (eql (count-if (lambda (x) (equal x '(a))) '((x) (y) (z) (a) (b) (c))) 1))
+ (test-t (eql (count-if (lambda (x) (eq x 'a)) '((x) (y) (z) (a) (b) (c)) :key car) 1))
+ (test-t (eql (count-if null '((x . x) (y) (z . z) (a) (b . b) (c)) :key cdr) 3))
+ (test-t (eql (count-if (lambda (x) (equal x '(a))) '((x) (y) (z) (a) (b) (c))) 1))
+ (test-t (eql (count-if (lambda (x) (eq x 'a)) '((x) (y) (z) (a) (b) (c)) :key car) 1))
+ (test-t (eql (count-if null '((x . x) (y) (z . z) (a) (b . b) (c)) :key cdr) 3))
+ (test-t (let ((list nil))
+ (and (eql (count-if (lambda (x) (setq list (cons x list)) (eq x 'a))
+ '(a b c d))
+ 1)
+ (equal list '(d c b a)))))
+ (test-t (let ((list nil))
+ (and (eql (count-if (lambda (x) (setq list (cons x list)) (eq x 'a))
+ '(a b c d)
+ :from-end t)
+ 1)
+ (equal list '(a b c d)))))
+ (test-t (eql (count-if null (vector t nil t nil t nil)) 3))
+ (test-t (eql (count-if zerop #(0 0 0 0 0) :start 1) 4))
+ (test-t (eql (count-if zerop #(0 0 0 0 0) :start 1 :end nil) 4))
+ (test-t (eql (count-if zerop #(0 0 0 0 0) :start 2) 3))
+ (test-t (zerop (count-if zerop #(0 0 0 0) :start 0 :end 0)))
+ (test-t (zerop (count-if zerop #(0 0 0 0) :start 2 :end 2)))
+ (test-t (zerop (count-if zerop #(0 0 0 0) :start 4 :end 4)))
+ (test-t (eql (count-if zerop #(0 0 0 0) :start 2 :end 3) 1))
+ (test-t (eql (count-if (lambda (x) (equal x '(a))) #((x) (y) (z) (a) (b) (c))) 1))
+ (test-t (eql (count-if (lambda (x) (eq x 'a)) #((x) (y) (z) (a) (b) (c)) :key car) 1))
+ (test-t (eql (count-if null #((x . x) (y) (z . z) (a) (b . b) (c)) :key cdr) 3))
+ (test-t (eql (count-if (lambda (x) (equal x '(a))) #((x) (y) (z) (a) (b) (c))) 1))
+ (test-t (eql (count-if (lambda (x) (eq x 'a)) #((x) (y) (z) (a) (b) (c)) :key car) 1))
+ (test-t (eql (count-if null #((x . x) (y) (z . z) (a) (b . b) (c)) :key cdr) 3))
+ (test-t (let ((list nil))
+ (and (eql (count-if (lambda (x) (setq list (cons x list)) (eq x 'a))
+ #(a b c d))
+ 1)
+ (equal list '(d c b a)))))
+ (test-t (let ((list nil))
+ (and (eql (count-if (lambda (x) (setq list (cons x list)) (eq x 'a))
+ #(a b c d)
+ :from-end t)
+ 1)
+ (equal list '(a b c d)))))
+ (test-t (eql (count-if-not (complement null) (list t nil t nil t nil)) 3))
+ (test-t (zerop (count-if-not (lambda (x) (not (eql x 9))) #(0 1 2 3 4))))
+ (test-t (zerop (count-if-not (lambda (a) (not (eq 'x a))) #(0 1 2 3 4))))
+ (test-t (eql (count-if-not (complement zerop) '(0 0 0 0 0) :start 1) 4))
+ (test-t (eql (count-if-not (complement zerop) '(0 0 0 0 0) :start 1 :end nil) 4))
+ (test-t (eql (count-if-not (complement zerop) '(0 0 0 0 0) :start 2) 3))
+ (test-t (zerop (count-if-not (complement zerop) '(0 0 0 0) :start 0 :end 0)))
+ (test-t (zerop (count-if-not (complement zerop) '(0 0 0 0) :start 2 :end 2)))
+ (test-t (zerop (count-if-not (complement zerop) '(0 0 0 0) :start 4 :end 4)))
+ (test-t (eql (count-if-not (complement zerop) '(0 0 0 0) :start 2 :end 3) 1))
+ (test-t (eql (count-if-not (lambda (x) (not (equalp #\a x))) "abcABC") 2))
+ (test-t (eql (count-if-not (lambda (x) (not (char-equal #\a x))) "abcABC") 2))
+ (test-t (eql (count-if-not (lambda (x) (not (equal x '(a)))) '((x) (y) (z) (a) (b) (c))) 1))
+ (test-t (eql (count-if-not (lambda (x) (not (eq x 'a))) '((x) (y) (z) (a) (b) (c)) :key car) 1))
+ (test-t (eql (count-if-not (complement null) '((x . x) (y) (z . z) (a) (b . b) (c)) :key cdr) 3))
+ (test-t (eql (count-if-not (lambda (x) (not (equal x '(a)))) '((x) (y) (z) (a) (b) (c))) 1))
+ (test-t (eql (count-if-not (lambda (x) (not (eq x 'a))) '((x) (y) (z) (a) (b) (c)) :key car) 1))
+ (test-t (eql (count-if-not (complement null) '((x . x) (y) (z . z) (a) (b . b) (c)) :key cdr) 3))
+ (test-t (let ((list nil))
+ (and (eql (count-if-not (lambda (x)
+ (setq list (cons x list))
+ (not (eq x 'a)))
+ '(a b c d))
+ 1)
+ (equal list '(d c b a)))))
+ (test-t (let ((list nil))
+ (and (eql (count-if-not (lambda (x)
+ (setq list (cons x list))
+ (not (eq x 'a)))
+ '(a b c d)
+ :from-end t)
+ 1)
+ (equal list '(a b c d)))))
+ (test-t (eql (count-if-not (complement null) (vector t nil t nil t nil)) 3))
+ (test-t (eql (count-if-not (complement zerop) #(0 0 0 0 0) :start 1) 4))
+ (test-t (eql (count-if-not (complement zerop) #(0 0 0 0 0) :start 1 :end nil) 4))
+ (test-t (eql (count-if-not (complement zerop) #(0 0 0 0 0) :start 2) 3))
+ (test-t (zerop (count-if-not (complement zerop) #(0 0 0 0) :start 0 :end 0)))
+ (test-t (zerop (count-if-not (complement zerop) #(0 0 0 0) :start 2 :end 2)))
+ (test-t (zerop (count-if-not (complement zerop) #(0 0 0 0) :start 4 :end 4)))
+ (test-t (eql (count-if-not (complement zerop) #(0 0 0 0) :start 2 :end 3) 1))
+ (test-t (eql (count-if-not (lambda (x) (not (equal x '(a)))) #((x) (y) (z) (a) (b) (c))) 1))
+ (test-t (eql (count-if-not (lambda (x) (not (eq x 'a))) #((x) (y) (z) (a) (b) (c)) :key car) 1))
+ (test-t (eql (count-if-not (complement null) #((x . x) (y) (z . z) (a) (b . b) (c)) :key cdr) 3))
+ (test-t (eql (count-if-not (lambda (x) (not (equal x '(a)))) #((x) (y) (z) (a) (b) (c))) 1))
+ (test-t (eql (count-if-not (lambda (x) (not (eq x 'a))) #((x) (y) (z) (a) (b) (c)) :key car) 1))
+ (test-t (eql (count-if-not (complement null) #((x . x) (y) (z . z) (a) (b . b) (c)) :key cdr) 3))
+ (test-t (let ((list nil))
+ (and (eql (count-if-not (lambda (x)
+ (setq list (cons x list))
+ (not (eq x 'a)))
+ #(a b c d))
+ 1)
+ (equal list '(d c b a)))))
+ (test-t (let ((list nil))
+ (and (eql (count-if-not (lambda (x)
+ (setq list (cons x list))
+ (not (eq x 'a)))
+ #(a b c d)
+ :from-end t)
+ 1)
+ (equal list '(a b c d)))))
+ (test-t (null (cl-reverse nil)))
+ (test-t (string= (cl-reverse "") ""))
+ (test-t (equalp (cl-reverse #()) #()))
+ (test-t (equal (cl-reverse '(0 1 2 3)) '(3 2 1 0)))
+ (test-t (string= (cl-reverse "0123") "3210"))
+ (test-t (equalp (cl-reverse #(a b c d)) #(d c b a)))
+ (test-t (null (nreverse nil)))
+ (test-t (string= (nreverse (copy-seq "")) ""))
+ (test-t (equalp (nreverse (copy-seq #())) #()))
+ (test-t (equal (nreverse (list 0 1 2 3)) '(3 2 1 0)))
+ (test-t (string= (nreverse (copy-seq "0123")) "3210"))
+ (test-t (equalp (cl-reverse (copy-seq #(a b c d))) #(d c b a)))
+ (test-t (char= (find #\d "edcba" :test char>) #\c))
+ (test-t (eql (find-if oddp '(1 2 3 4 5) :end 3 :from-end t) 3))
+ (test-t (eq (find 'a '(a b c)) 'a))
+ (test-t (eq (find 'b '(a b c)) 'b))
+ (test-t (eq (find 'c '(a b c)) 'c))
+ (test-t (null (find 'x '(a b c))))
+ (test-t (null (find 'a '(a b c) :start 1)))
+ (test-t (null (find 'b '(a b c) :start 2)))
+ (test-t (null (find 'c '(a b c) :start 3)))
+ (test-t (null (find 'a '(a b c) :start 0 :end 0)))
+ (test-t (null (find 'a '(a b c) :start 0 :end 0 :from-end t)))
+ (test-t (null (find 'a '(a b c) :start 1 :end 1)))
+ (test-t (null (find 'a '(a b c) :start 1 :end 1 :from-end t)))
+ (test-t (null (find 'a '(a b c) :start 2 :end 2)))
+ (test-t (null (find 'a '(a b c) :start 2 :end 2 :from-end t)))
+ (test-t (null (find 'a '(a b c) :start 3 :end 3)))
+ (test-t (null (find 'a '(a b c) :start 3 :end 3 :from-end t)))
+ (test-t (eq (find 'a '(a b c) :end nil) 'a))
+ (test-t (eq (find 'b '(a b c) :end nil) 'b))
+ (test-t (eq (find 'c '(a b c) :end nil) 'c))
+ (test-t (eq (find 'a '(a b c) :end 1) 'a))
+ (test-t (eq (find 'b '(a b c) :end 2) 'b))
+ (test-t (eq (find 'c '(a b c) :end 3) 'c))
+ (test-t (null (find 'a '(a b c) :end 0)))
+ (test-t (null (find 'b '(a b c) :end 1)))
+ (test-t (null (find 'c '(a b c) :end 2)))
+ (test-t (null (find 'a '((a) (b) (c)))))
+ (test-t (equal (find 'a '((a) (b) (c)) :key car) '(a)))
+ (test-t (equal (find 'b '((a) (b) (c)) :key car) '(b)))
+ (test-t (equal (find 'c '((a) (b) (c)) :key car) '(c)))
+ (test-t (null (find 'z '((a) (b) (c)) :key car)))
+ (test-t (let ((list '((a) (b) (c))))
+ (and (eq (find 'a list :key car) (car list))
+ (eq (find 'b list :key car) (cadr list))
+ (eq (find 'c list :key car) (caddr list))
+ (null (find 'z list :key car)))))
+ (test-t (null (find '(a) '((a) (b) (c)))))
+ (test-t (equal (find '(a) '((a) (b) (c)) :test equal) '(a)))
+ (test-t (null (find '("a") '(("a") ("b") ("c")))))
+ (test-t (null (find '("a") '(("A") ("B") ("c")) :test equal)))
+ (test-t (eql (find 3 '(0 1 2 3 4 5)) 3))
+ (test-t (eql (find 3 '(0 1 2 3 4 5) :test <) 4))
+ (test-t (eql (find 3 '(0 1 2 3 4 5) :test >) 0))
+ (test-t (equal (find 'a '((a) (b) (c) (a a) (b b) (c c)) :key car) '(a)))
+ (test-t (equal (find 'a '((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) '(a a)))
+ (test-t (equal (find 'b '((a) (b) (c) (a a) (b b) (c c)) :key car) '(b)))
+ (test-t (equal (find 'b '((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) '(b b)))
+ (test-t (equal (find 'c '((a) (b) (c) (a a) (b b) (c c)) :key car) '(c)))
+ (test-t (equal (find 'c '((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) '(c c)))
+ (test-t (null (find 'z '((a) (b) (c) (a a) (b b) (c c)) :key car)))
+ (test-t (null (find 'z '((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t)))
+ (test-t (equal (find 'a '((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t) '(a a a)))
+ (test-t (equal (find 'a '((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :end nil) '(a a a)))
+ (test-t (equal (find 'a '((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :end 6) '(a a)))
+ (test-t (null (find 'a '((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :start 1 :end 3)))
+ (test-t (null (find #\c '("abc" "bcd" "cde"))))
+ (test-t (string= (find #\c '("abc" "bcd" "cde") :key (lambda (arg) (char arg 0)) :test char=) "cde"))
+ (test-t (eq (find 'a #(a b c)) 'a))
+ (test-t (eq (find 'b #(a b c)) 'b))
+ (test-t (eq (find 'c #(a b c)) 'c))
+ (test-t (null (find 'x #(a b c))))
+ (test-t (null (find 'a #(a b c) :start 1)))
+ (test-t (null (find 'b #(a b c) :start 2)))
+ (test-t (null (find 'c #(a b c) :start 3)))
+ (test-t (null (find 'a #(a b c) :start 0 :end 0)))
+ (test-t (null (find 'a #(a b c) :start 0 :end 0 :from-end t)))
+ (test-t (null (find 'a #(a b c) :start 1 :end 1)))
+ (test-t (null (find 'a #(a b c) :start 1 :end 1 :from-end t)))
+ (test-t (null (find 'a #(a b c) :start 2 :end 2)))
+ (test-t (null (find 'a #(a b c) :start 2 :end 2 :from-end t)))
+ (test-t (null (find 'a #(a b c) :start 3 :end 3)))
+ (test-t (null (find 'a #(a b c) :start 3 :end 3 :from-end t)))
+ (test-t (eq (find 'a #(a b c) :end nil) 'a))
+ (test-t (eq (find 'b #(a b c) :end nil) 'b))
+ (test-t (eq (find 'c #(a b c) :end nil) 'c))
+ (test-t (eq (find 'a #(a b c) :end 1) 'a))
+ (test-t (eq (find 'b #(a b c) :end 2) 'b))
+ (test-t (eq (find 'c #(a b c) :end 3) 'c))
+ (test-t (null (find 'a #(a b c) :end 0)))
+ (test-t (null (find 'b #(a b c) :end 1)))
+ (test-t (null (find 'c #(a b c) :end 2)))
+ (test-t (null (find 'a #((a) (b) (c)))))
+ (test-t (equal (find 'a #((a) (b) (c)) :key car) '(a)))
+ (test-t (equal (find 'b #((a) (b) (c)) :key car) '(b)))
+ (test-t (equal (find 'c #((a) (b) (c)) :key car) '(c)))
+ (test-t (null (find 'z #((a) (b) (c)) :key car)))
+ (test-t (let ((vector #((a) (b) (c))))
+ (and (eq (find 'a vector :key car) (aref vector 0))
+ (eq (find 'b vector :key car) (aref vector 1))
+ (eq (find 'c vector :key car) (aref vector 2))
+ (null (find 'z vector :key car)))))
+ (test-t (null (find '(a) #((a) (b) (c)))))
+ (test-t (equal (find '(a) #((a) (b) (c)) :test equal) '(a)))
+ (test-t (null (find '("a") #(("a") ("b") ("c")))))
+ (test-t (null (find '("a") #(("A") ("B") ("c")) :test equal)))
+ (test-t (eql (find 3 #(0 1 2 3 4 5)) 3))
+ (test-t (eql (find 3 #(0 1 2 3 4 5) :test <) 4))
+ (test-t (eql (find 3 #(0 1 2 3 4 5) :test >) 0))
+ (test-t (equal (find 'a #((a) (b) (c) (a a) (b b) (c c)) :key car) '(a)))
+ (test-t (equal (find 'a #((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) '(a a)))
+ (test-t (equal (find 'b #((a) (b) (c) (a a) (b b) (c c)) :key car) '(b)))
+ (test-t (equal (find 'b #((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) '(b b)))
+ (test-t (equal (find 'c #((a) (b) (c) (a a) (b b) (c c)) :key car) '(c)))
+ (test-t (equal (find 'c #((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) '(c c)))
+ (test-t (null (find 'z #((a) (b) (c) (a a) (b b) (c c)) :key car)))
+ (test-t (null (find 'z #((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t)))
+ (test-t (equal (find 'a #((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t) '(a a a)))
+ (test-t (equal (find 'a #((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :end nil) '(a a a)))
+ (test-t (equal (find 'a #((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :end 6) '(a a)))
+ (test-t (null (find 'a #((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :start 1 :end 3)))
+ (test-t (null (find #\c #("abc" "bcd" "cde"))))
+ (test-t (null (find #\z "abcABC")))
+ (test-t (eql (find #\a "abcABC") #\a))
+ (test-t (eql (find #\A "abcABC") #\A))
+ (test-t (eql (find #\A "abcABC" :test char-equal) #\a))
+ (test-t (eql (find #\A "abcABC" :test char-equal :from-end t) #\A))
+ (test-t (eql (find #\a "abcABC" :test char-equal :from-end t) #\A))
+ (test-t (eql (find #\a "abcABC" :test char-equal :from-end t :end 4) #\A))
+ (test-t (eql (find #\a "abcABC" :test char-equal :from-end t :end 3) #\a))
+ (test-t (eq (find-if (lambda (x) (eq x 'a)) '(a b c)) 'a))
+ (test-t (eq (find-if (lambda (x) (eq x 'b)) '(a b c)) 'b))
+ (test-t (eq (find-if (lambda (x) (eq x 'c)) '(a b c)) 'c))
+ (test-t (null (find-if (lambda (arg) (eq arg 'x)) '(a b c))))
+ (test-t (null (find-if (lambda (x) (eq x 'a)) '(a b c) :start 1)))
+ (test-t (null (find-if (lambda (x) (eq x 'b)) '(a b c) :start 2)))
+ (test-t (null (find-if (lambda (x) (eq x 'c)) '(a b c) :start 3)))
+ (test-t (null (find-if (lambda (x) (eq x 'a)) '(a b c) :start 0 :end 0)))
+ (test-t (null (find-if (lambda (x) (eq x 'a)) '(a b c) :start 0 :end 0 :from-end t)))
+ (test-t (null (find-if (lambda (x) (eq x 'a)) '(a b c) :start 1 :end 1)))
+ (test-t (null (find-if (lambda (x) (eq x 'a)) '(a b c) :start 1 :end 1 :from-end t)))
+ (test-t (null (find-if (lambda (x) (eq x 'a)) '(a b c) :start 2 :end 2)))
+ (test-t (null (find-if (lambda (x) (eq x 'a)) '(a b c) :start 2 :end 2 :from-end t)))
+ (test-t (null (find-if (lambda (x) (eq x 'a)) '(a b c) :start 3 :end 3)))
+ (test-t (null (find-if (lambda (x) (eq x 'a)) '(a b c) :start 3 :end 3 :from-end t)))
+ (test-t (eq (find-if (lambda (x) (eq x 'a)) '(a b c) :end nil) 'a))
+ (test-t (eq (find-if (lambda (x) (eq x 'b)) '(a b c) :end nil) 'b))
+ (test-t (eq (find-if (lambda (x) (eq x 'c)) '(a b c) :end nil) 'c))
+ (test-t (eq (find-if (lambda (x) (eq x 'a)) '(a b c) :end 1) 'a))
+ (test-t (eq (find-if (lambda (x) (eq x 'b)) '(a b c) :end 2) 'b))
+ (test-t (eq (find-if (lambda (x) (eq x 'c)) '(a b c) :end 3) 'c))
+ (test-t (null (find-if (lambda (x) (eq x 'a)) '(a b c) :end 0)))
+ (test-t (null (find-if (lambda (x) (eq x 'b)) '(a b c) :end 1)))
+ (test-t (null (find-if (lambda (x) (eq x 'c)) '(a b c) :end 2)))
+ (test-t (null (find-if (lambda (x) (eq x 'a)) '((a) (b) (c)))))
+ (test-t (equal (find-if (lambda (x) (eq x 'a)) '((a) (b) (c)) :key car) '(a)))
+ (test-t (equal (find-if (lambda (x) (eq x 'b)) '((a) (b) (c)) :key car) '(b)))
+ (test-t (equal (find-if (lambda (x) (eq x 'c)) '((a) (b) (c)) :key car) '(c)))
+ (test-t (null (find-if (lambda (x) (eq x 'z)) '((a) (b) (c)) :key car)))
+ (test-t (let ((list '((a) (b) (c))))
+ (and (eq (find-if (lambda (x) (eq x 'a)) list :key car) (car list))
+ (eq (find-if (lambda (x) (eq x 'b)) list :key car) (cadr list))
+ (eq (find-if (lambda (x) (eq x 'c)) list :key car) (caddr list))
+ (null (find-if (lambda (x) (eq x 'z)) list :key car)))))
+ (test-t (equal (find-if (lambda (x) (eq x 'a)) '((a) (b) (c) (a a) (b b) (c c)) :key car) '(a)))
+ (test-t (equal (find-if (lambda (x) (eq x 'a)) '((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) '(a a)))
+ (test-t (equal (find-if (lambda (x) (eq x 'b)) '((a) (b) (c) (a a) (b b) (c c)) :key car) '(b)))
+ (test-t (equal (find-if (lambda (x) (eq x 'b)) '((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) '(b b)))
+ (test-t (equal (find-if (lambda (x) (eq x 'c)) '((a) (b) (c) (a a) (b b) (c c)) :key car) '(c)))
+ (test-t (equal (find-if (lambda (x) (eq x 'c)) '((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) '(c c)))
+ (test-t (null (find-if (lambda (x) (eq x 'z)) '((a) (b) (c) (a a) (b b) (c c)) :key car)))
+ (test-t (null (find-if (lambda (x) (eq x 'z)) '((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t)))
+ (test-t (equal (find-if (lambda (x) (eq x 'a)) '((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t) '(a a a)))
+ (test-t (equal (find-if (lambda (x) (eq x 'a)) '((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :end nil) '(a a a)))
+ (test-t (equal (find-if (lambda (x) (eq x 'a)) '((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :end 6) '(a a)))
+ (test-t (null (find-if (lambda (x) (eq x 'a)) '((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :start 1 :end 3)))
+ (test-t (eq (find-if (lambda (x) (eq x 'a)) #(a b c)) 'a))
+ (test-t (eq (find-if (lambda (x) (eq x 'b)) #(a b c)) 'b))
+ (test-t (eq (find-if (lambda (x) (eq x 'c)) #(a b c)) 'c))
+ (test-t (null (find-if (lambda (arg) (eq arg 'x)) #(a b c))))
+ (test-t (null (find-if (lambda (x) (eq x 'a)) #(a b c) :start 1)))
+ (test-t (null (find-if (lambda (x) (eq x 'b)) #(a b c) :start 2)))
+ (test-t (null (find-if (lambda (x) (eq x 'c)) #(a b c) :start 3)))
+ (test-t (null (find-if (lambda (x) (eq x 'a)) #(a b c) :start 0 :end 0)))
+ (test-t (null (find-if (lambda (x) (eq x 'a)) #(a b c) :start 0 :end 0 :from-end t)))
+ (test-t (null (find-if (lambda (x) (eq x 'a)) #(a b c) :start 1 :end 1)))
+ (test-t (null (find-if (lambda (x) (eq x 'a)) #(a b c) :start 1 :end 1 :from-end t)))
+ (test-t (null (find-if (lambda (x) (eq x 'a)) #(a b c) :start 2 :end 2)))
+ (test-t (null (find-if (lambda (x) (eq x 'a)) #(a b c) :start 2 :end 2 :from-end t)))
+ (test-t (null (find-if (lambda (x) (eq x 'a)) #(a b c) :start 3 :end 3)))
+ (test-t (null (find-if (lambda (x) (eq x 'a)) #(a b c) :start 3 :end 3 :from-end t)))
+ (test-t (eq (find-if (lambda (x) (eq x 'a)) #(a b c) :end nil) 'a))
+ (test-t (eq (find-if (lambda (x) (eq x 'b)) #(a b c) :end nil) 'b))
+ (test-t (eq (find-if (lambda (x) (eq x 'c)) #(a b c) :end nil) 'c))
+ (test-t (eq (find-if (lambda (x) (eq x 'a)) #(a b c) :end 1) 'a))
+ (test-t (eq (find-if (lambda (x) (eq x 'b)) #(a b c) :end 2) 'b))
+ (test-t (eq (find-if (lambda (x) (eq x 'c)) #(a b c) :end 3) 'c))
+ (test-t (null (find-if (lambda (x) (eq x 'a)) #(a b c) :end 0)))
+ (test-t (null (find-if (lambda (x) (eq x 'b)) #(a b c) :end 1)))
+ (test-t (null (find-if (lambda (x) (eq x 'c)) #(a b c) :end 2)))
+ (test-t (null (find-if (lambda (x) (eq x 'a)) #((a) (b) (c)))))
+ (test-t (equal (find-if (lambda (x) (eq x 'a)) #((a) (b) (c)) :key car) '(a)))
+ (test-t (equal (find-if (lambda (x) (eq x 'b)) #((a) (b) (c)) :key car) '(b)))
+ (test-t (equal (find-if (lambda (x) (eq x 'c)) #((a) (b) (c)) :key car) '(c)))
+ (test-t (null (find-if (lambda (x) (eq x 'z)) #((a) (b) (c)) :key car)))
+ (test-t (let ((vector #((a) (b) (c))))
+ (and (eq (find-if (lambda (x) (eq x 'a)) vector :key car) (aref vector 0))
+ (eq (find-if (lambda (x) (eq x 'b)) vector :key car) (aref vector 1))
+ (eq (find-if (lambda (x) (eq x 'c)) vector :key car) (aref vector 2))
+ (null (find-if (lambda (x) (eq x 'z)) vector :key car)))))
+ (test-t (equal (find-if (lambda (x) (eq x 'a)) #((a) (b) (c) (a a) (b b) (c c)) :key car) '(a)))
+ (test-t (equal (find-if (lambda (x) (eq x 'a)) #((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) '(a a)))
+ (test-t (equal (find-if (lambda (x) (eq x 'b)) #((a) (b) (c) (a a) (b b) (c c)) :key car) '(b)))
+ (test-t (equal (find-if (lambda (x) (eq x 'b)) #((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) '(b b)))
+ (test-t (equal (find-if (lambda (x) (eq x 'c)) #((a) (b) (c) (a a) (b b) (c c)) :key car) '(c)))
+ (test-t (equal (find-if (lambda (x) (eq x 'c)) #((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) '(c c)))
+ (test-t (null (find-if (lambda (x) (eq x 'z)) #((a) (b) (c) (a a) (b b) (c c)) :key car)))
+ (test-t (null (find-if (lambda (x) (eq x 'z)) #((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t)))
+ (test-t (equal (find-if (lambda (x) (eq x 'a)) #((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t) '(a a a)))
+ (test-t (equal (find-if (lambda (x) (eq x 'a)) #((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :end nil) '(a a a)))
+ (test-t (equal (find-if (lambda (x) (eq x 'a)) #((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :end 6) '(a a)))
+ (test-t (null (find-if (lambda (x) (eq x 'a)) #((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :start 1 :end 3)))
+ (test-t (eq (find-if-not (lambda (x) (not (eq x 'a))) '(a b c)) 'a))
+ (test-t (eq (find-if-not (lambda (x) (not (eq x 'b))) '(a b c)) 'b))
+ (test-t (eq (find-if-not (lambda (x) (not (eq x 'c))) '(a b c)) 'c))
+ (test-t (null (find-if-not (lambda (arg) (not (eq arg 'x))) '(a b c))))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'a))) '(a b c) :start 1)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'b))) '(a b c) :start 2)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'c))) '(a b c) :start 3)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'a))) '(a b c) :start 0 :end 0)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'a))) '(a b c) :start 0 :end 0 :from-end t)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'a))) '(a b c) :start 1 :end 1)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'a))) '(a b c) :start 1 :end 1 :from-end t)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'a))) '(a b c) :start 2 :end 2)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'a))) '(a b c) :start 2 :end 2 :from-end t)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'a))) '(a b c) :start 3 :end 3)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'a))) '(a b c) :start 3 :end 3 :from-end t)))
+ (test-t (eq (find-if-not (lambda (x) (not (eq x 'a))) '(a b c) :end nil) 'a))
+ (test-t (eq (find-if-not (lambda (x) (not (eq x 'b))) '(a b c) :end nil) 'b))
+ (test-t (eq (find-if-not (lambda (x) (not (eq x 'c))) '(a b c) :end nil) 'c))
+ (test-t (eq (find-if-not (lambda (x) (not (eq x 'a))) '(a b c) :end 1) 'a))
+ (test-t (eq (find-if-not (lambda (x) (not (eq x 'b))) '(a b c) :end 2) 'b))
+ (test-t (eq (find-if-not (lambda (x) (not (eq x 'c))) '(a b c) :end 3) 'c))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'a))) '(a b c) :end 0)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'b))) '(a b c) :end 1)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'c))) '(a b c) :end 2)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'a))) '((a) (b) (c)))))
+ (test-t (equal (find-if-not (lambda (x) (not (eq x 'a))) '((a) (b) (c)) :key car) '(a)))
+ (test-t (equal (find-if-not (lambda (x) (not (eq x 'b))) '((a) (b) (c)) :key car) '(b)))
+ (test-t (equal (find-if-not (lambda (x) (not (eq x 'c))) '((a) (b) (c)) :key car) '(c)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'z))) '((a) (b) (c)) :key car)))
+ (test-t (let ((list '((a) (b) (c))))
+ (and (eq (find-if-not (lambda (x) (not (eq x 'a))) list :key car)
+ (car list))
+ (eq (find-if-not (lambda (x) (not (eq x 'b))) list :key car)
+ (cadr list))
+ (eq (find-if-not (lambda (x) (not (eq x 'c))) list :key car)
+ (caddr list))
+ (null (find-if-not (lambda (x) (not (eq x 'z))) list :key car)))))
+ (test-t (equal (find-if-not (lambda (x) (not (eq x 'a))) '((a) (b) (c) (a a) (b b) (c c)) :key car) '(a)))
+ (test-t (equal (find-if-not (lambda (x) (not (eq x 'a))) '((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) '(a a)))
+ (test-t (equal (find-if-not (lambda (x) (not (eq x 'b))) '((a) (b) (c) (a a) (b b) (c c)) :key car) '(b)))
+ (test-t (equal (find-if-not (lambda (x) (not (eq x 'b))) '((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) '(b b)))
+ (test-t (equal (find-if-not (lambda (x) (not (eq x 'c))) '((a) (b) (c) (a a) (b b) (c c)) :key car) '(c)))
+ (test-t (equal (find-if-not (lambda (x) (not (eq x 'c))) '((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) '(c c)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'z))) '((a) (b) (c) (a a) (b b) (c c)) :key car)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'z))) '((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t)))
+ (test-t (equal (find-if-not (lambda (x) (not (eq x 'a))) '((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t) '(a a a)))
+ (test-t (equal (find-if-not (lambda (x) (not (eq x 'a))) '((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :end nil) '(a a a)))
+ (test-t (equal (find-if-not (lambda (x) (not (eq x 'a))) '((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :end 6) '(a a)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'a))) '((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :start 1 :end 3)))
+ (test-t (eq (find-if-not (lambda (x) (not (eq x 'a))) #(a b c)) 'a))
+ (test-t (eq (find-if-not (lambda (x) (not (eq x 'b))) #(a b c)) 'b))
+ (test-t (eq (find-if-not (lambda (x) (not (eq x 'c))) #(a b c)) 'c))
+ (test-t (null (find-if-not (lambda (arg) (not (eq arg 'x))) #(a b c))))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'a))) #(a b c) :start 1)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'b))) #(a b c) :start 2)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'c))) #(a b c) :start 3)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'a))) #(a b c) :start 0 :end 0)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'a))) #(a b c) :start 0 :end 0 :from-end t)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'a))) #(a b c) :start 1 :end 1)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'a))) #(a b c) :start 1 :end 1 :from-end t)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'a))) #(a b c) :start 2 :end 2)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'a))) #(a b c) :start 2 :end 2 :from-end t)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'a))) #(a b c) :start 3 :end 3)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'a))) #(a b c) :start 3 :end 3 :from-end t)))
+ (test-t (eq (find-if-not (lambda (x) (not (eq x 'a))) #(a b c) :end nil) 'a))
+ (test-t (eq (find-if-not (lambda (x) (not (eq x 'b))) #(a b c) :end nil) 'b))
+ (test-t (eq (find-if-not (lambda (x) (not (eq x 'c))) #(a b c) :end nil) 'c))
+ (test-t (eq (find-if-not (lambda (x) (not (eq x 'a))) #(a b c) :end 1) 'a))
+ (test-t (eq (find-if-not (lambda (x) (not (eq x 'b))) #(a b c) :end 2) 'b))
+ (test-t (eq (find-if-not (lambda (x) (not (eq x 'c))) #(a b c) :end 3) 'c))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'a))) #(a b c) :end 0)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'b))) #(a b c) :end 1)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'c))) #(a b c) :end 2)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'a))) #((a) (b) (c)))))
+ (test-t (equal (find-if-not (lambda (x) (not (eq x 'a))) #((a) (b) (c)) :key car) '(a)))
+ (test-t (equal (find-if-not (lambda (x) (not (eq x 'b))) #((a) (b) (c)) :key car) '(b)))
+ (test-t (equal (find-if-not (lambda (x) (not (eq x 'c))) #((a) (b) (c)) :key car) '(c)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'z))) #((a) (b) (c)) :key car)))
+ (test-t (let ((vector #((a) (b) (c))))
+ (and (eq (find-if-not (lambda (x) (not (eq x 'a))) vector :key car)
+ (aref vector 0))
+ (eq (find-if-not (lambda (x) (not (eq x 'b))) vector :key car)
+ (aref vector 1))
+ (eq (find-if-not (lambda (x) (not (eq x 'c))) vector :key car)
+ (aref vector 2))
+ (null (find-if-not (lambda (x) (not (eq x 'z))) vector :key car)))))
+ (test-t (equal (find-if-not (lambda (x) (not (eq x 'a))) #((a) (b) (c) (a a) (b b) (c c)) :key car) '(a)))
+ (test-t (equal (find-if-not (lambda (x) (not (eq x 'a))) #((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) '(a a)))
+ (test-t (equal (find-if-not (lambda (x) (not (eq x 'b))) #((a) (b) (c) (a a) (b b) (c c)) :key car) '(b)))
+ (test-t (equal (find-if-not (lambda (x) (not (eq x 'b))) #((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) '(b b)))
+ (test-t (equal (find-if-not (lambda (x) (not (eq x 'c))) #((a) (b) (c) (a a) (b b) (c c)) :key car) '(c)))
+ (test-t (equal (find-if-not (lambda (x) (not (eq x 'c))) #((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) '(c c)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'z))) #((a) (b) (c) (a a) (b b) (c c)) :key car)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'z))) #((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t)))
+ (test-t (equal (find-if-not (lambda (x) (not (eq x 'a))) #((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t) '(a a a)))
+ (test-t (equal (find-if-not (lambda (x) (not (eq x 'a))) #((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :end nil) '(a a a)))
+ (test-t (equal (find-if-not (lambda (x) (not (eq x 'a))) #((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :end 6) '(a a)))
+ (test-t (null (find-if-not (lambda (x) (not (eq x 'a))) #((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :start 1 :end 3)))
+ (test-t (eql (position #\a "baobab" :from-end t) 4))
+ (test-t (eql (position-if oddp '((1) (2) (3) (4)) :start 1 :key car) 2))
+ (test-t (null (position 595 '())))
+ (test-t (eql (position-if-not integerp '(1 2 3 4 5.0)) 4))
+ (test-t (eql (position 'a '(a b c)) 0))
+ (test-t (eql (position 'b '(a b c)) 1))
+ (test-t (eql (position 'c '(a b c)) 2))
+ (test-t (null (position 'x '(a b c))))
+ (test-t (null (position 'a '(a b c) :start 1)))
+ (test-t (null (position 'b '(a b c) :start 2)))
+ (test-t (null (position 'c '(a b c) :start 3)))
+ (test-t (null (position 'a '(a b c) :start 0 :end 0)))
+ (test-t (null (position 'a '(a b c) :start 0 :end 0 :from-end t)))
+ (test-t (null (position 'a '(a b c) :start 1 :end 1)))
+ (test-t (null (position 'a '(a b c) :start 1 :end 1 :from-end t)))
+ (test-t (null (position 'a '(a b c) :start 2 :end 2)))
+ (test-t (null (position 'a '(a b c) :start 2 :end 2 :from-end t)))
+ (test-t (null (position 'a '(a b c) :start 3 :end 3)))
+ (test-t (null (position 'a '(a b c) :start 3 :end 3 :from-end t)))
+ (test-t (eql (position 'a '(a b c) :end nil) '0))
+ (test-t (eql (position 'b '(a b c) :end nil) '1))
+ (test-t (eql (position 'c '(a b c) :end nil) '2))
+ (test-t (eql (position 'a '(a b c) :end 1) '0))
+ (test-t (eql (position 'b '(a b c) :end 2) '1))
+ (test-t (eql (position 'c '(a b c) :end 3) '2))
+ (test-t (null (position 'a '(a b c) :end 0)))
+ (test-t (null (position 'b '(a b c) :end 1)))
+ (test-t (null (position 'c '(a b c) :end 2)))
+ (test-t (null (position 'a '((a) (b) (c)))))
+ (test-t (eql (position 'a '((a) (b) (c)) :key car) 0))
+ (test-t (eql (position 'b '((a) (b) (c)) :key car) 1))
+ (test-t (eql (position 'c '((a) (b) (c)) :key car) 2))
+ (test-t (null (position 'z '((a) (b) (c)) :key car)))
+ (test-t (null (position '(a) '((a) (b) (c)))))
+ (test-t (eql (position '(a) '((a) (b) (c)) :test equal) 0))
+ (test-t (null (position '("a") '(("a") ("b") ("c")))))
+ (test-t (eql (position 3 '(0 1 2 3 4 5)) 3))
+ (test-t (eql (position 3 '(0 1 2 3 4 5) :test <) 4))
+ (test-t (eql (position 3 '(0 1 2 3 4 5) :test >) 0))
+ (test-t (eql (position 'a '((a) (b) (c) (a a) (b b) (c c)) :key car) 0))
+ (test-t (eql (position 'a '((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) 3))
+ (test-t (eql (position 'b '((a) (b) (c) (a a) (b b) (c c)) :key car) 1))
+ (test-t (eql (position 'b '((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) 4))
+ (test-t (eql (position 'c '((a) (b) (c) (a a) (b b) (c c)) :key car) 2))
+ (test-t (eql (position 'c '((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) 5))
+ (test-t (null (position 'z '((a) (b) (c) (a a) (b b) (c c)) :key car)))
+ (test-t (null (position 'z '((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t)))
+ (test-t (eql (position 'a '((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t) 6))
+ (test-t (eql (position 'a '((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :end nil) 6))
+ (test-t (eql (position 'a '((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :end 6) 3))
+ (test-t (null (position 'a '((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :start 1 :end 3)))
+ (test-t (eql (position 'a #(a b c)) 0))
+ (test-t (eql (position 'b #(a b c)) 1))
+ (test-t (eql (position 'c #(a b c)) 2))
+ (test-t (null (position 'x #(a b c))))
+ (test-t (null (position 'a #(a b c) :start 1)))
+ (test-t (null (position 'b #(a b c) :start 2)))
+ (test-t (null (position 'c #(a b c) :start 3)))
+ (test-t (null (position 'a #(a b c) :start 0 :end 0)))
+ (test-t (null (position 'a #(a b c) :start 0 :end 0 :from-end t)))
+ (test-t (null (position 'a #(a b c) :start 1 :end 1)))
+ (test-t (null (position 'a #(a b c) :start 1 :end 1 :from-end t)))
+ (test-t (null (position 'a #(a b c) :start 2 :end 2)))
+ (test-t (null (position 'a #(a b c) :start 2 :end 2 :from-end t)))
+ (test-t (null (position 'a #(a b c) :start 3 :end 3)))
+ (test-t (null (position 'a #(a b c) :start 3 :end 3 :from-end t)))
+ (test-t (eql (position 'a #(a b c) :end nil) 0))
+ (test-t (eql (position 'b #(a b c) :end nil) 1))
+ (test-t (eql (position 'c #(a b c) :end nil) 2))
+ (test-t (eql (position 'a #(a b c) :end 1) 0))
+ (test-t (eql (position 'b #(a b c) :end 2) 1))
+ (test-t (eql (position 'c #(a b c) :end 3) 2))
+ (test-t (null (position 'a #(a b c) :end 0)))
+ (test-t (null (position 'b #(a b c) :end 1)))
+ (test-t (null (position 'c #(a b c) :end 2)))
+ (test-t (null (position 'a #((a) (b) (c)))))
+ (test-t (eql (position 'a #((a) (b) (c)) :key car) 0))
+ (test-t (eql (position 'b #((a) (b) (c)) :key car) 1))
+ (test-t (eql (position 'c #((a) (b) (c)) :key car) 2))
+ (test-t (null (position 'z #((a) (b) (c)) :key car)))
+ (test-t (null (position '(a) #((a) (b) (c)))))
+ (test-t (eql (position '(a) #((a) (b) (c)) :test equal) 0))
+ (test-t (null (position '("a") #(("a") ("b") ("c")))))
+ (test-t (eql (position 3 #(0 1 2 3 4 5)) 3))
+ (test-t (eql (position 3 #(0 1 2 3 4 5) :test <) 4))
+ (test-t (eql (position 3 #(0 1 2 3 4 5) :test >) 0))
+ (test-t (eql (position 'a #((a) (b) (c) (a a) (b b) (c c)) :key car) 0))
+ (test-t (eql (position 'a #((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) 3))
+ (test-t (eql (position 'b #((a) (b) (c) (a a) (b b) (c c)) :key car) 1))
+ (test-t (eql (position 'b #((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) 4))
+ (test-t (eql (position 'c #((a) (b) (c) (a a) (b b) (c c)) :key car) 2))
+ (test-t (eql (position 'c #((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) 5))
+ (test-t (null (position 'z #((a) (b) (c) (a a) (b b) (c c)) :key car)))
+ (test-t (null (position 'z #((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t)))
+ (test-t (eql (position 'a #((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t) 6))
+ (test-t (eql (position 'a #((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :end nil) 6))
+ (test-t (eql (position 'a #((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :end 6) 3))
+ (test-t (null (position 'a #((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :start 1 :end 3)))
+ (test-t (null (position #\z "abcABC")))
+ (test-t (eql (position #\a "abcABC") 0))
+ (test-t (eql (position #\A "abcABC") 3))
+ (test-t (eql (position #\A "abcABC" :test char-equal) 0))
+ (test-t (eql (position #\A "abcABC" :test char-equal :from-end t) 3))
+ (test-t (eql (position #\a "abcABC" :test char-equal :from-end t) 3))
+ (test-t (eql (position #\a "abcABC" :test char-equal :from-end t :end 4) 3))
+ (test-t (eql (position #\a "abcABC" :test char-equal :from-end t :end 3) 0))
+ (test-t (eql (position-if (lambda (x) (eq x 'a)) '(a b c)) 0))
+ (test-t (eql (position-if (lambda (x) (eq x 'b)) '(a b c)) 1))
+ (test-t (eql (position-if (lambda (x) (eq x 'c)) '(a b c)) 2))
+ (test-t (null (position-if (lambda (arg) (eq arg 'x)) '(a b c))))
+ (test-t (null (position-if (lambda (x) (eq x 'a)) '(a b c) :start 1)))
+ (test-t (null (position-if (lambda (x) (eq x 'b)) '(a b c) :start 2)))
+ (test-t (null (position-if (lambda (x) (eq x 'c)) '(a b c) :start 3)))
+ (test-t (null (position-if (lambda (x) (eq x 'a)) '(a b c) :start 0 :end 0)))
+ (test-t (null (position-if (lambda (x) (eq x 'a)) '(a b c) :start 0 :end 0 :from-end t)))
+ (test-t (null (position-if (lambda (x) (eq x 'a)) '(a b c) :start 1 :end 1)))
+ (test-t (null (position-if (lambda (x) (eq x 'a)) '(a b c) :start 1 :end 1 :from-end t)))
+ (test-t (null (position-if (lambda (x) (eq x 'a)) '(a b c) :start 2 :end 2)))
+ (test-t (null (position-if (lambda (x) (eq x 'a)) '(a b c) :start 2 :end 2 :from-end t)))
+ (test-t (null (position-if (lambda (x) (eq x 'a)) '(a b c) :start 3 :end 3)))
+ (test-t (null (position-if (lambda (x) (eq x 'a)) '(a b c) :start 3 :end 3 :from-end t)))
+ (test-t (eql (position-if (lambda (x) (eq x 'a)) '(a b c) :end nil) 0))
+ (test-t (eql (position-if (lambda (x) (eq x 'b)) '(a b c) :end nil) 1))
+ (test-t (eql (position-if (lambda (x) (eq x 'c)) '(a b c) :end nil) 2))
+ (test-t (eql (position-if (lambda (x) (eq x 'a)) '(a b c) :end 1) 0))
+ (test-t (eql (position-if (lambda (x) (eq x 'b)) '(a b c) :end 2) 1))
+ (test-t (eql (position-if (lambda (x) (eq x 'c)) '(a b c) :end 3) 2))
+ (test-t (null (position-if (lambda (x) (eq x 'a)) '(a b c) :end 0)))
+ (test-t (null (position-if (lambda (x) (eq x 'b)) '(a b c) :end 1)))
+ (test-t (null (position-if (lambda (x) (eq x 'c)) '(a b c) :end 2)))
+ (test-t (null (position-if (lambda (x) (eq x 'a)) '((a) (b) (c)))))
+ (test-t (eql (position-if (lambda (x) (eq x 'a)) '((a) (b) (c)) :key car) 0))
+ (test-t (eql (position-if (lambda (x) (eq x 'b)) '((a) (b) (c)) :key car) 1))
+ (test-t (eql (position-if (lambda (x) (eq x 'c)) '((a) (b) (c)) :key car) 2))
+ (test-t (null (position-if (lambda (x) (eq x 'z)) '((a) (b) (c)) :key car)))
+ (test-t (eql (position-if (lambda (x) (eq x 'a)) '((a) (b) (c) (a a) (b b) (c c)) :key car) 0))
+ (test-t (eql (position-if (lambda (x) (eq x 'a)) '((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) 3))
+ (test-t (eql (position-if (lambda (x) (eq x 'b)) '((a) (b) (c) (a a) (b b) (c c)) :key car) 1))
+ (test-t (eql (position-if (lambda (x) (eq x 'b)) '((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) 4))
+ (test-t (eql (position-if (lambda (x) (eq x 'c)) '((a) (b) (c) (a a) (b b) (c c)) :key car) 2))
+ (test-t (eql (position-if (lambda (x) (eq x 'c)) '((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) 5))
+ (test-t (null (position-if (lambda (x) (eq x 'z)) '((a) (b) (c) (a a) (b b) (c c)) :key car)))
+ (test-t (null (position-if (lambda (x) (eq x 'z)) '((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t)))
+ (test-t (eql (position-if (lambda (x) (eq x 'a)) '((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t) 6))
+ (test-t (eql (position-if (lambda (x) (eq x 'a)) '((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :end nil) 6))
+ (test-t (eql (position-if (lambda (x) (eq x 'a)) '((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :end 6) 3))
+ (test-t (null (position-if (lambda (x) (eq x 'a)) '((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :start 1 :end 3)))
+ (test-t (eql (position-if (lambda (x) (eq x 'a)) #(a b c)) 0))
+ (test-t (eql (position-if (lambda (x) (eq x 'b)) #(a b c)) 1))
+ (test-t (eql (position-if (lambda (x) (eq x 'c)) #(a b c)) 2))
+ (test-t (null (position-if (lambda (arg) (eq arg 'x)) #(a b c))))
+ (test-t (null (position-if (lambda (x) (eq x 'a)) #(a b c) :start 1)))
+ (test-t (null (position-if (lambda (x) (eq x 'b)) #(a b c) :start 2)))
+ (test-t (null (position-if (lambda (x) (eq x 'c)) #(a b c) :start 3)))
+ (test-t (null (position-if (lambda (x) (eq x 'a)) #(a b c) :start 0 :end 0)))
+ (test-t (null (position-if (lambda (x) (eq x 'a)) #(a b c) :start 0 :end 0 :from-end t)))
+ (test-t (null (position-if (lambda (x) (eq x 'a)) #(a b c) :start 1 :end 1)))
+ (test-t (null (position-if (lambda (x) (eq x 'a)) #(a b c) :start 1 :end 1 :from-end t)))
+ (test-t (null (position-if (lambda (x) (eq x 'a)) #(a b c) :start 2 :end 2)))
+ (test-t (null (position-if (lambda (x) (eq x 'a)) #(a b c) :start 2 :end 2 :from-end t)))
+ (test-t (null (position-if (lambda (x) (eq x 'a)) #(a b c) :start 3 :end 3)))
+ (test-t (null (position-if (lambda (x) (eq x 'a)) #(a b c) :start 3 :end 3 :from-end t)))
+ (test-t (eql (position-if (lambda (x) (eq x 'a)) #(a b c) :end nil) 0))
+ (test-t (eql (position-if (lambda (x) (eq x 'b)) #(a b c) :end nil) 1))
+ (test-t (eql (position-if (lambda (x) (eq x 'c)) #(a b c) :end nil) 2))
+ (test-t (eql (position-if (lambda (x) (eq x 'a)) #(a b c) :end 1) 0))
+ (test-t (eql (position-if (lambda (x) (eq x 'b)) #(a b c) :end 2) 1))
+ (test-t (eql (position-if (lambda (x) (eq x 'c)) #(a b c) :end 3) 2))
+ (test-t (null (position-if (lambda (x) (eq x 'a)) #(a b c) :end 0)))
+ (test-t (null (position-if (lambda (x) (eq x 'b)) #(a b c) :end 1)))
+ (test-t (null (position-if (lambda (x) (eq x 'c)) #(a b c) :end 2)))
+ (test-t (null (position-if (lambda (x) (eq x 'a)) #((a) (b) (c)))))
+ (test-t (eql (position-if (lambda (x) (eq x 'a)) #((a) (b) (c)) :key car) 0))
+ (test-t (eql (position-if (lambda (x) (eq x 'b)) #((a) (b) (c)) :key car) 1))
+ (test-t (eql (position-if (lambda (x) (eq x 'c)) #((a) (b) (c)) :key car) 2))
+ (test-t (null (position-if (lambda (x) (eq x 'z)) #((a) (b) (c)) :key car)))
+ (test-t (eql (position-if (lambda (x) (eq x 'a)) #((a) (b) (c) (a a) (b b) (c c)) :key car) 0))
+ (test-t (eql (position-if (lambda (x) (eq x 'a)) #((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) 3))
+ (test-t (eql (position-if (lambda (x) (eq x 'b)) #((a) (b) (c) (a a) (b b) (c c)) :key car) 1))
+ (test-t (eql (position-if (lambda (x) (eq x 'b)) #((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) 4))
+ (test-t (eql (position-if (lambda (x) (eq x 'c)) #((a) (b) (c) (a a) (b b) (c c)) :key car) 2))
+ (test-t (eql (position-if (lambda (x) (eq x 'c)) #((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) 5))
+ (test-t (null (position-if (lambda (x) (eq x 'z)) #((a) (b) (c) (a a) (b b) (c c)) :key car)))
+ (test-t (null (position-if (lambda (x) (eq x 'z)) #((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t)))
+ (test-t (eql (position-if (lambda (x) (eq x 'a)) #((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t) 6))
+ (test-t (eql (position-if (lambda (x) (eq x 'a)) #((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :end nil) 6))
+ (test-t (eql (position-if (lambda (x) (eq x 'a)) #((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :end 6) 3))
+ (test-t (null (position-if (lambda (x) (eq x 'a)) #((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :start 1 :end 3)))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'a))) '(a b c)) 0))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'b))) '(a b c)) 1))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'c))) '(a b c)) 2))
+ (test-t (null (position-if-not (lambda (arg) (not (eq arg 'x))) '(a b c))))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'a))) '(a b c) :start 1)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'b))) '(a b c) :start 2)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'c))) '(a b c) :start 3)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'a))) '(a b c) :start 0 :end 0)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'a))) '(a b c) :start 0 :end 0 :from-end t)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'a))) '(a b c) :start 1 :end 1)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'a))) '(a b c) :start 1 :end 1 :from-end t)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'a))) '(a b c) :start 2 :end 2)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'a))) '(a b c) :start 2 :end 2 :from-end t)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'a))) '(a b c) :start 3 :end 3)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'a))) '(a b c) :start 3 :end 3 :from-end t)))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'a))) '(a b c) :end nil) 0))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'b))) '(a b c) :end nil) 1))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'c))) '(a b c) :end nil) 2))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'a))) '(a b c) :end 1) 0))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'b))) '(a b c) :end 2) 1))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'c))) '(a b c) :end 3) 2))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'a))) '(a b c) :end 0)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'b))) '(a b c) :end 1)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'c))) '(a b c) :end 2)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'a))) '((a) (b) (c)))))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'a))) '((a) (b) (c)) :key car) 0))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'b))) '((a) (b) (c)) :key car) 1))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'c))) '((a) (b) (c)) :key car) 2))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'z))) '((a) (b) (c)) :key car)))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'a))) '((a) (b) (c) (a a) (b b) (c c)) :key car) 0))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'a))) '((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) 3))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'b))) '((a) (b) (c) (a a) (b b) (c c)) :key car) 1))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'b))) '((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) 4))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'c))) '((a) (b) (c) (a a) (b b) (c c)) :key car) 2))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'c))) '((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) 5))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'z))) '((a) (b) (c) (a a) (b b) (c c)) :key car)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'z))) '((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t)))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'a))) '((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t) 6))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'a))) '((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :end nil) 6))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'a))) '((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :end 6) 3))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'a))) '((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :start 1 :end 3)))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'a))) #(a b c)) 0))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'b))) #(a b c)) 1))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'c))) #(a b c)) 2))
+ (test-t (null (position-if-not (lambda (arg) (not (eq arg 'x))) #(a b c))))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'a))) #(a b c) :start 1)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'b))) #(a b c) :start 2)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'c))) #(a b c) :start 3)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'a))) #(a b c) :start 0 :end 0)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'a))) #(a b c) :start 0 :end 0 :from-end t)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'a))) #(a b c) :start 1 :end 1)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'a))) #(a b c) :start 1 :end 1 :from-end t)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'a))) #(a b c) :start 2 :end 2)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'a))) #(a b c) :start 2 :end 2 :from-end t)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'a))) #(a b c) :start 3 :end 3)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'a))) #(a b c) :start 3 :end 3 :from-end t)))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'a))) #(a b c) :end nil) 0))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'b))) #(a b c) :end nil) 1))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'c))) #(a b c) :end nil) 2))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'a))) #(a b c) :end 1) 0))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'b))) #(a b c) :end 2) 1))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'c))) #(a b c) :end 3) 2))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'a))) #(a b c) :end 0)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'b))) #(a b c) :end 1)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'c))) #(a b c) :end 2)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'a))) #((a) (b) (c)))))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'a))) #((a) (b) (c)) :key car) 0))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'b))) #((a) (b) (c)) :key car) 1))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'c))) #((a) (b) (c)) :key car) 2))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'z))) #((a) (b) (c)) :key car)))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'a))) #((a) (b) (c) (a a) (b b) (c c)) :key car) 0))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'a))) #((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) 3))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'b))) #((a) (b) (c) (a a) (b b) (c c)) :key car) 1))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'b))) #((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) 4))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'c))) #((a) (b) (c) (a a) (b b) (c c)) :key car) 2))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'c))) #((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t) 5))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'z))) #((a) (b) (c) (a a) (b b) (c c)) :key car)))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'z))) #((a) (b) (c) (a a) (b b) (c c)) :key car :from-end t)))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'a))) #((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t) 6))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'a))) #((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :end nil) 6))
+ (test-t (eql (position-if-not (lambda (x) (not (eq x 'a))) #((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :end 6) 3))
+ (test-t (null (position-if-not (lambda (x) (not (eq x 'a))) #((a) (b) (c) (a a) (b b) (c c) (a a a)) :key car :from-end t :start 1 :end 3)))
+
+ (test-t (eql (search "dog" "it's a dog's life") 7))
+ (test-t (eql (search '(0 1) '(2 4 6 1 3 5) :key oddp) 2))
+ (test-t (null (search '(a b c) '(x y z))))
+ (test-t (eql (search '() '(x y z)) 0))
+ (test-t (eql (search '(a) '(a)) 0))
+ (test-t (eql (search '(a b c) '(a b c x y z)) 0))
+ (test-t (eql (search '(a b c) '(x a b c y z)) 1))
+ (test-t (eql (search '(a b c) '(x y a b c z)) 2))
+ (test-t (eql (search '(a b c) '(x y z a b c)) 3))
+ (test-t (eql (search '(a b c) '(a b c a b c) :start2 1) 3))
+ (test-t (eql (search '(a b c) '(a b c a b c) :start2 1 :end2 nil) 3))
+ (test-t (eql (search '(a b c) '(a b c a b c) :start1 1 :start2 1 :end2 nil) 1))
+ (test-t (eql (search '(a b c) '(a b c a b c) :start1 1 :end1 nil :start2 1 :end2 nil) 1))
+ (test-t (null (search '(a b c) '(a b c a b c) :start2 0 :end2 0)))
+ (test-t (null (search '(a b c) '(a b c a b c) :start2 1 :end2 1)))
+ (test-t (null (search '(a b c) '(a b c a b c) :start2 2 :end2 2)))
+ (test-t (null (search '(a b c) '(a b c a b c) :start2 3 :end2 3)))
+ (test-t (null (search '(a b c) '(a b c a b c) :start2 4 :end2 4)))
+ (test-t (null (search '(a b c) '(a b c a b c) :start2 5 :end2 5)))
+ (test-t (null (search '(a b c) '(a b c a b c) :start2 6 :end2 6)))
+ (test-t (eql (search '(a b c) '(a b c a b c)) 0))
+ (test-t (eql (search '(a b c) '(a b c a b c) :from-end t) 3))
+ (test-t (eql (search '(a b c) '(a b c a b c) :start2 3 :end2 6) 3))
+ (test-t (eql (search '(a b c) '(a b c a b c) :start2 3 :end2 6 :from-end t) 3))
+ (test-t (eql (search '(a b c) '(a b c a b c) :start1 0 :end1 2 :start2 0 :end2 6) 0))
+ (test-t (eql (search '(a b c) '(a b c a b c) :start1 0 :end1 2 :start2 0 :end2 6 :from-end t) 3))
+ (test-t (null (search '(#\a #\b #\c) '(#\A #\B #\C))))
+ (test-t (eql (search '(#\a #\b #\c) '(#\A #\B #\C) :test char-equal) 0))
+ (test-t (eql (search '(#\a #\b) '(#\a #\b #\x #\y #\z)) 0))
+ (test-t (eql (search '(#\a #\b) '(#\a #\b #\x #\y #\z) :test char<) 1))
+ (test-t (null (search '((a) (b)) '((x) (y) (z) (a) (b) (c)))))
+ (test-t (eql (search '((a) (b)) '((x) (y) (z) (a) (b) (c)) :key car) 3))
+ (test-t (eql (search '((a) (b)) '((a) (b) (c) (x) (y) (z) (a) (b) (c)) :key car) 0))
+ (test-t (eql (search '((a) (b)) '((a) (b) (c) (x) (y) (z) (a) (b) (c)) :key car :from-end t) 6))
+ (test-t (eql (search '((a a) (b b)) '((a) (b) (c) (x) (y) (z) (a) (b) (c)) :key car) 0))
+ (test-t (eql (search '((a a) (b b)) '((a nil) (b t) (c nil) (x) (y) (z) (a 0) (b 1) (c 2)) :key car :from-end t) 6))
+ (test-t (eql (search '(("a" a) ("b" b))
+ '(("a" nil) ("b" t) ("c" nil) ("x") ("y") ("z")
+ ("A" 0) ("B" 1) ("C" 2))
+ :start1 1
+ :end1 2
+ :start2 3
+ :end2 nil
+ :key car
+ :test string-equal
+ :from-end t)
+ 7))
+ (test-t (null (search #(a b c) '(x y z))))
+ (test-t (eql (search #() '(x y z)) 0))
+ (test-t (eql (search #(a) '(a)) 0))
+ (test-t (eql (search #(a b c) '(a b c x y z)) 0))
+ (test-t (eql (search #(a b c) '(x a b c y z)) 1))
+ (test-t (eql (search #(a b c) '(x y a b c z)) 2))
+ (test-t (eql (search #(a b c) '(x y z a b c)) 3))
+ (test-t (eql (search #(a b c) '(a b c a b c) :start2 1) 3))
+ (test-t (eql (search #(a b c) '(a b c a b c) :start2 1 :end2 nil) 3))
+ (test-t (eql (search #(a b c) '(a b c a b c) :start1 1 :start2 1 :end2 nil) 1))
+ (test-t (eql (search #(a b c) '(a b c a b c) :start1 1 :end1 nil :start2 1 :end2 nil) 1))
+ (test-t (null (search #(a b c) '(a b c a b c) :start2 0 :end2 0)))
+ (test-t (null (search #(a b c) '(a b c a b c) :start2 1 :end2 1)))
+ (test-t (null (search #(a b c) '(a b c a b c) :start2 2 :end2 2)))
+ (test-t (null (search #(a b c) '(a b c a b c) :start2 3 :end2 3)))
+ (test-t (null (search #(a b c) '(a b c a b c) :start2 4 :end2 4)))
+ (test-t (null (search #(a b c) '(a b c a b c) :start2 5 :end2 5)))
+ (test-t (null (search #(a b c) '(a b c a b c) :start2 6 :end2 6)))
+ (test-t (eql (search #(a b c) '(a b c a b c)) 0))
+ (test-t (eql (search #(a b c) '(a b c a b c) :from-end t) 3))
+ (test-t (eql (search #(a b c) '(a b c a b c) :start2 3 :end2 6) 3))
+ (test-t (eql (search #(a b c) '(a b c a b c) :start2 3 :end2 6 :from-end t) 3))
+ (test-t (eql (search #(a b c) '(a b c a b c) :start1 0 :end1 2 :start2 0 :end2 6) 0))
+ (test-t (eql (search #(a b c) '(a b c a b c) :start1 0 :end1 2 :start2 0 :end2 6 :from-end t) 3))
+ (test-t (null (search #(#\a #\b #\c) '(#\A #\B #\C))))
+ (test-t (eql (search #(#\a #\b #\c) '(#\A #\B #\C) :test char-equal) 0))
+ (test-t (eql (search #(#\a #\b) '(#\a #\b #\x #\y #\z)) 0))
+ (test-t (eql (search #(#\a #\b) '(#\a #\b #\x #\y #\z) :test char<) 1))
+ (test-t (null (search #((a) (b)) '((x) (y) (z) (a) (b) (c)))))
+ (test-t (eql (search #((a) (b)) '((x) (y) (z) (a) (b) (c)) :key car) 3))
+ (test-t (eql (search #((a) (b)) '((a) (b) (c) (x) (y) (z) (a) (b) (c)) :key car) 0))
+ (test-t (eql (search #((a) (b)) '((a) (b) (c) (x) (y) (z) (a) (b) (c)) :key car :from-end t) 6))
+ (test-t (eql (search #((a a) (b b)) '((a) (b) (c) (x) (y) (z) (a) (b) (c)) :key car) 0))
+ (test-t (eql (search #((a a) (b b)) '((a nil) (b t) (c nil) (x) (y) (z) (a 0) (b 1) (c 2)) :key car :from-end t) 6))
+ (test-t (eql (search #(("a" a) ("b" b))
+ '(("a" nil) ("b" t) ("c" nil) ("x") ("y") ("z")
+ ("A" 0) ("B" 1) ("C" 2))
+ :start1 1
+ :end1 2
+ :start2 3
+ :end2 nil
+ :key car
+ :test string-equal
+ :from-end t)
+ 7))
+ (test-t (null (search '(a b c) #(x y z))))
+ (test-t (eql (search '() #(x y z)) 0))
+ (test-t (eql (search '(a) #(a)) 0))
+ (test-t (eql (search '(a b c) #(a b c x y z)) 0))
+ (test-t (eql (search '(a b c) #(x a b c y z)) 1))
+ (test-t (eql (search '(a b c) #(x y a b c z)) 2))
+ (test-t (eql (search '(a b c) #(x y z a b c)) 3))
+ (test-t (eql (search '(a b c) #(a b c a b c) :start2 1) 3))
+ (test-t (eql (search '(a b c) #(a b c a b c) :start2 1 :end2 nil) 3))
+ (test-t (eql (search '(a b c) #(a b c a b c) :start1 1 :start2 1 :end2 nil) 1))
+ (test-t (eql (search '(a b c) #(a b c a b c) :start1 1 :end1 nil :start2 1 :end2 nil) 1))
+ (test-t (null (search '(a b c) #(a b c a b c) :start2 0 :end2 0)))
+ (test-t (null (search '(a b c) #(a b c a b c) :start2 1 :end2 1)))
+ (test-t (null (search '(a b c) #(a b c a b c) :start2 2 :end2 2)))
+ (test-t (null (search '(a b c) #(a b c a b c) :start2 3 :end2 3)))
+ (test-t (null (search '(a b c) #(a b c a b c) :start2 4 :end2 4)))
+ (test-t (null (search '(a b c) #(a b c a b c) :start2 5 :end2 5)))
+ (test-t (null (search '(a b c) #(a b c a b c) :start2 6 :end2 6)))
+ (test-t (eql (search '(a b c) #(a b c a b c)) 0))
+ (test-t (eql (search '(a b c) #(a b c a b c) :from-end t) 3))
+ (test-t (eql (search '(a b c) #(a b c a b c) :start2 3 :end2 6) 3))
+ (test-t (eql (search '(a b c) #(a b c a b c) :start2 3 :end2 6 :from-end t) 3))
+ (test-t (eql (search '(a b c) #(a b c a b c) :start1 0 :end1 2 :start2 0 :end2 6) 0))
+ (test-t (eql (search '(a b c) #(a b c a b c) :start1 0 :end1 2 :start2 0 :end2 6 :from-end t) 3))
+ (test-t (null (search '(#\a #\b #\c) #(#\A #\B #\C))))
+ (test-t (eql (search '(#\a #\b #\c) #(#\A #\B #\C) :test char-equal) 0))
+ (test-t (eql (search '(#\a #\b) #(#\a #\b #\x #\y #\z)) 0))
+ (test-t (eql (search '(#\a #\b) #(#\a #\b #\x #\y #\z) :test char<) 1))
+ (test-t (null (search '((a) (b)) #((x) (y) (z) (a) (b) (c)))))
+ (test-t (eql (search '((a) (b)) #((x) (y) (z) (a) (b) (c)) :key car) 3))
+ (test-t (eql (search '((a) (b)) #((a) (b) (c) (x) (y) (z) (a) (b) (c)) :key car) 0))
+ (test-t (eql (search '((a) (b)) #((a) (b) (c) (x) (y) (z) (a) (b) (c)) :key car :from-end t) 6))
+ (test-t (eql (search '((a a) (b b)) #((a) (b) (c) (x) (y) (z) (a) (b) (c)) :key car) 0))
+ (test-t (eql (search '((a a) (b b)) #((a nil) (b t) (c nil) (x) (y) (z) (a 0) (b 1) (c 2)) :key car :from-end t) 6))
+ (test-t (eql (search '(("a" a) ("b" b))
+ #(("a" nil) ("b" t) ("c" nil) ("x") ("y") ("z")
+ ("A" 0) ("B" 1) ("C" 2))
+ :start1 1
+ :end1 2
+ :start2 3
+ :end2 nil
+ :key car
+ :test string-equal
+ :from-end t)
+ 7))
+ (test-t (null (search #(a b c) #(x y z))))
+ (test-t (eql (search #() #(x y z)) 0))
+ (test-t (eql (search #(a) #(a)) 0))
+ (test-t (eql (search #(a b c) #(a b c x y z)) 0))
+ (test-t (eql (search #(a b c) #(x a b c y z)) 1))
+ (test-t (eql (search #(a b c) #(x y a b c z)) 2))
+ (test-t (eql (search #(a b c) #(x y z a b c)) 3))
+ (test-t (eql (search #(a b c) #(a b c a b c) :start2 1) 3))
+ (test-t (eql (search #(a b c) #(a b c a b c) :start2 1 :end2 nil) 3))
+ (test-t (eql (search #(a b c) #(a b c a b c) :start1 1 :start2 1 :end2 nil) 1))
+ (test-t (eql (search #(a b c) #(a b c a b c) :start1 1 :end1 nil :start2 1 :end2 nil) 1))
+ (test-t (null (search #(a b c) #(a b c a b c) :start2 0 :end2 0)))
+ (test-t (null (search #(a b c) #(a b c a b c) :start2 1 :end2 1)))
+ (test-t (null (search #(a b c) #(a b c a b c) :start2 2 :end2 2)))
+ (test-t (null (search #(a b c) #(a b c a b c) :start2 3 :end2 3)))
+ (test-t (null (search #(a b c) #(a b c a b c) :start2 4 :end2 4)))
+ (test-t (null (search #(a b c) #(a b c a b c) :start2 5 :end2 5)))
+ (test-t (null (search #(a b c) #(a b c a b c) :start2 6 :end2 6)))
+ (test-t (eql (search #(a b c) #(a b c a b c)) 0))
+ (test-t (eql (search #(a b c) #(a b c a b c) :from-end t) 3))
+ (test-t (eql (search #(a b c) #(a b c a b c) :start2 3 :end2 6) 3))
+ (test-t (eql (search #(a b c) #(a b c a b c) :start2 3 :end2 6 :from-end t) 3))
+ (test-t (eql (search #(a b c) #(a b c a b c) :start1 0 :end1 2 :start2 0 :end2 6) 0))
+ (test-t (eql (search #(a b c) #(a b c a b c) :start1 0 :end1 2 :start2 0 :end2 6 :from-end t) 3))
+ (test-t (null (search #(#\a #\b #\c) #(#\A #\B #\C))))
+ (test-t (eql (search #(#\a #\b #\c) #(#\A #\B #\C) :test char-equal) 0))
+ (test-t (eql (search #(#\a #\b) #(#\a #\b #\x #\y #\z)) 0))
+ (test-t (eql (search #(#\a #\b) #(#\a #\b #\x #\y #\z) :test char<) 1))
+ (test-t (null (search #((a) (b)) #((x) (y) (z) (a) (b) (c)))))
+ (test-t (eql (search #((a) (b)) #((x) (y) (z) (a) (b) (c)) :key car) 3))
+ (test-t (eql (search #((a) (b)) #((a) (b) (c) (x) (y) (z) (a) (b) (c)) :key car) 0))
+ (test-t (eql (search #((a) (b)) #((a) (b) (c) (x) (y) (z) (a) (b) (c)) :key car :from-end t) 6))
+ (test-t (eql (search #((a a) (b b)) #((a) (b) (c) (x) (y) (z) (a) (b) (c)) :key car) 0))
+ (test-t (eql (search #((a a) (b b)) #((a nil) (b t) (c nil) (x) (y) (z) (a 0) (b 1) (c 2)) :key car :from-end t) 6))
+ (test-t (eql (search #(("a" a) ("b" b))
+ #(("a" nil) ("b" t) ("c" nil) ("x") ("y") ("z")
+ ("A" 0) ("B" 1) ("C" 2))
+ :start1 1
+ :end1 2
+ :start2 3
+ :end2 nil
+ :key car
+ :test string-equal
+ :from-end t)
+ 7))
+ (test-t (null (search "peace" "LOVE&PEACE")))
+ (test-t (eql (search "peace" "LOVE&PEACE" :test char-equal) 5))
+ (test-t (null (search "PeAcE" "LoVe&pEaCe")))
+ (test-t (eql (search "PeAcE" "LoVe&pEaCe" :key char-upcase) 5))
+ (test-t (eql (search "abc" "abc xyz abc" :from-end t) 8))
+ (test-t (eql (search "abc" "abc xyz abc xyz abc xyz abc" :start2 8 :end2 19) 8))
+ (test-t (eql (search "abc" "abc xyz abc xyz abc xyz abc" :from-end t :start2 8 :end2 19) 16))
+ (test-t (eql (mismatch "abcd" "ABCDE" :test char-equal) 4))
+ (test-t (eql (mismatch '(3 2 1 1 2 3) '(1 2 3) :from-end t) 3))
+ (test-t (null (mismatch '(1 2 3 4 5 6) '(3 4 5 6 7) :start1 2 :end2 4)))
+ (test-t (null (mismatch '() '())))
+ (test-t (eql (mismatch '(a b c) '(x y z)) 0))
+ (test-t (eql (mismatch '() '(x y z)) 0))
+ (test-t (eql (mismatch '(x y z) '()) 0))
+ (test-t (null (mismatch '(a) '(a))))
+ (test-t (eql (mismatch '(a b c x y z) '(a b c)) 3))
+ (test-t (null (mismatch '(a b c) '(a b c))))
+ (test-t (eql (mismatch '(a b c d e f) '(a b c)) 3))
+ (test-t (eql (mismatch '(a b c) '(a b c d e f)) 3))
+ (test-t (eql (mismatch '(a b c) '(a b x)) 2))
+ (test-t (eql (mismatch '(a b c) '(a x c)) 1))
+ (test-t (eql (mismatch '(a b c) '(x b c)) 0))
+ (test-t (eql (mismatch '(x y z a b c x y z) '(a b c) :start1 3) 6))
+ (test-t (eql (mismatch '(x y z a b c x y z) '(a b c) :start1 3 :end1 nil) 6))
+ (test-t (eql (mismatch '(x y z a b c x y z) '(a b c) :start1 3 :end1 4) 4))
+ (test-t (eql (mismatch '(x y z a b c x y z) '(a b c) :start1 3 :end1 3) 3))
+ (test-t (null (mismatch '(x y z) '() :start1 0 :end1 0)))
+ (test-t (null (mismatch '(x y z) '() :start1 1 :end1 1)))
+ (test-t (null (mismatch '(x y z) '() :start1 2 :end1 2)))
+ (test-t (null (mismatch '(x y z) '() :start1 3 :end1 3)))
+ (test-t (null (mismatch '(x y z) '() :start1 0 :end1 0 :start2 0 :end2 0)))
+ (test-t (null (mismatch '(x y z) '() :start1 1 :end1 1 :start2 1 :end2 1)))
+ (test-t (null (mismatch '(x y z) '() :start1 2 :end1 2 :start2 2 :end2 2)))
+ (test-t (null (mismatch '(x y z) '() :start1 3 :end1 3 :start2 3 :end2 3)))
+ (test-t (null (mismatch '(x y z) '() :start1 0 :end1 0 :start2 3 :end2 3)))
+ (test-t (null (mismatch '(x y z) '() :start1 1 :end1 1 :start2 2 :end2 2)))
+ (test-t (null (mismatch '(x y z) '() :start1 2 :end1 2 :start2 1 :end2 1)))
+ (test-t (null (mismatch '(x y z) '() :start1 3 :end1 3 :start2 0 :end2 0)))
+ (test-t (eql (mismatch '(x y z) '(a b c) :start1 0 :end1 0) 0))
+ (test-t (eql (mismatch '(x y z) '(a b c) :start1 1 :end1 1) 1))
+ (test-t (eql (mismatch '(x y z) '(a b c) :start1 2 :end1 2) 2))
+ (test-t (eql (mismatch '(x y z) '(a b c) :start1 3 :end1 3) 3))
+ (test-t (eql (mismatch '(x y z) '(x y z) :start1 0 :end1 1) 1))
+ (test-t (eql (mismatch '(x y z) '(x y z) :start1 0 :end1 2) 2))
+ (test-t (eql (mismatch '(x y z) '(x y z Z) :start1 0 :end1 3) 3))
+ (test-t (null (mismatch '(x y z) '(x y z) :start1 0 :end1 3)))
+ (test-t (eql (mismatch '(a b c x y z) '(x y z a b c)) 0))
+ (test-t (eql (mismatch '(a b c x y z) '(x y z a b c) :start1 3) 6))
+ (test-t (eql (mismatch '(a b c x y z a b c) '(x y z a b c x y z) :start1 3) 9))
+ (test-t (eql (mismatch '(a b c x y z a b c) '(x y z a b c x y z) :start1 6) 6))
+ (test-t (eql (mismatch '(a b c x y z a b c) '(x y z a b c x y z) :start1 6 :start2 3) 9))
+ (test-t (eql (mismatch '(a b c x y z a b c) '(x y z a b c x y z) :start1 0 :start2 3) 6))
+ (test-t (eql (mismatch '(a b c) '(a b c x y z)) 3))
+ (test-t (eql (mismatch '(a b c) '(x a b c y z)) 0))
+ (test-t (eql (mismatch '(a b c) '(x a b c y z) :start2 1) 3))
+ (test-t (eql (mismatch '(a b c) '(x a b c y z) :start2 1 :end2 nil) 3))
+ (test-t (null (mismatch '(a b c) '(x a b c y z) :start2 1 :end2 4)))
+ (test-t (eql (mismatch '(a b c d e) '(c d)) 0))
+ (test-t (eql (mismatch '(a b c d e) '(c d) :start1 2) 4))
+ (test-t (eql (mismatch '(a b c d e) '(c d) :start1 2 :end1 3) 3))
+ (test-t (eql (mismatch '(a b c d e) '(c d) :start1 2 :start2 1) 2))
+ (test-t (eql (mismatch '(a b c d e) '(c d) :start1 3 :start2 1) 4))
+ (test-t (eql (mismatch '(a b c d e) '(c d) :start1 2 :end2 1) 3))
+ (test-t (null (mismatch '(a b c d) '(a b c d) :start1 1 :end1 2 :start2 1 :end2 2)))
+ (test-t (null (mismatch '(a b c d) '(a b c d) :start1 1 :end1 3 :start2 1 :end2 3)))
+ (test-t (null (mismatch '(a b c d) '(a b c d) :start1 1 :end1 4 :start2 1 :end2 4)))
+ (test-t (eql (mismatch '(a b c d) '(a b c d) :start1 1 :end1 nil :start2 1 :end2 1) 1))
+ (test-t (eql (mismatch '(a b c d) '(a b c d) :start1 1 :end1 nil :start2 1 :end2 2) 2))
+ (test-t (eql (mismatch '(a b c d) '(a b c d) :start1 1 :end1 nil :start2 1 :end2 3) 3))
+ (test-t (null (mismatch '(a b c d) '(a b c d) :start1 1 :end1 nil :start2 1 :end2 4)))
+ (test-t (eql (mismatch '(a b c d) '(a b c d) :start1 1 :end1 1 :start2 1) 1))
+ (test-t (eql (mismatch '(a b c d) '(a b c d) :start1 1 :end1 2 :start2 1) 2))
+ (test-t (eql (mismatch '(a b c d) '(a b c d) :start1 1 :end1 3 :start2 1) 3))
+ (test-t (null (mismatch '(a b c d) '(a b c d) :start1 1 :end1 4 :start2 1)))
+ (test-t (null (mismatch '(a b c) '(a b c) :from-end t)))
+ (test-t (eql (mismatch '(a b c d) '(a b c) :from-end t) 4))
+ (test-t (eql (mismatch '(a b c) '(c) :from-end t) 2))
+ (test-t (eql (mismatch '(a b c) '(z a b c) :from-end t) 0))
+ (test-t (eql (mismatch '(a b c) '(x y z a b c) :from-end t) 0))
+ (test-t (eql (mismatch '(x y z a b c) '(a b c) :from-end t) 3))
+ (test-t (eql (mismatch '(x y z a b c) '(a b c) :end1 3 :from-end t) 3))
+ (test-t (eql (mismatch '(x y z a b c) '(a b c) :end1 5 :from-end t) 5))
+ (test-t (eql (mismatch '(x y z a b c x y z) '(a b c) :end1 6 :from-end t) 3))
+ (test-t (eql (mismatch '(x y z a b c x y z) '(a b c) :start1 2 :end1 6 :from-end t) 3))
+ (test-t (eql (mismatch '(x y z a b c x y z) '(a b c) :from-end t :start1 2 :end1 5 :start2 1 :end2 2 ) 4))
+ (test-t (eql (mismatch '(x y z a b c x y z) '(a b c) :start1 2 :end1 5 :start2 1 :end2 2 ) 2))
+ (test-t (eql (mismatch '((a) (b) (c)) '((a) (b) (c))) 0))
+ (test-t (null (mismatch '((a) (b) (c)) '((a) (b) (c)) :key car)))
+ (test-t (null (mismatch '((a) (b) (c)) '((a) (b) (c)) :test equal)))
+ (test-t (eql (mismatch '(#(a) #(b) #(c)) '(#(a) #(b) #(c))) 0))
+ (test-t (null (mismatch '(#(a) #(b) #(c)) '(#(a) #(b) #(c)) :test equalp)))
+ (test-t (eql (mismatch '((a) (b) (c) (d)) '((a) (b) (c)) :key car) 3))
+ (test-t (eql (mismatch '((a) (b) (c)) '((a) (b) (c) (d)) :key car) 3))
+ (test-t (eql (mismatch '(#\a #\b #\c) '(#\A #\B #\C)) 0))
+ (test-t (null (mismatch '(#\a #\b #\c) '(#\A #\B #\C) :key char-upcase)))
+ (test-t (null (mismatch '(#\a #\b #\c) '(#\A #\B #\C) :key char-downcase)))
+ (test-t (null (mismatch '(#\a #\b #\c) '(#\A #\B #\C) :key char-upcase :start1 1 :end1 2 :start2 1 :end2 2)))
+ (test-t (null (mismatch '(#\a #\b #\c) '(#\A #\B #\C) :key char-upcase :start1 2 :start2 2)))
+ (test-t (eql (mismatch '((a b c) (b c d) (d e f)) '((b b c) (c c d) (e e f))) 0))
+ (test-t (eql (mismatch '((a b c) (b c d) (d e f)) '((b b c) (c c d) (e e f)) :key cdr) 0))
+ (test-t (null (mismatch '((a b c) (b c d) (d e f)) '((b b c) (c c d) (e e f)) :key cdr :test equal)))
+ (test-t (eql (mismatch '((a b c) (b c d) (d e f) (e f g)) '((b b c) (c c d) (e e f)) :key cdr :test equal) 3))
+ (test-t (eql (mismatch '((a b c) (b c d) (d e f) (e f g)) '((b b c) (c c d) (e e f)) :key cdr :test equal :from-end t) 4))
+ (test-t (eql (mismatch '((a a a) (a b c) (b c d) (d e f)) '((b b c) (c c d) (e e f)) :key cdr :test equal :from-end t) 1))
+ (test-t (null (mismatch '((a a a) (a b c) (b c d) (d e f) (e f g)) '((b b c) (c c d) (e e f)) :key cdr :test equal :from-end t :start1 1 :end1 4)))
+ (test-t (eql (mismatch '((a a a) (a b c) (b c d) (d e f) (e f g)) '((b b c) (c c d) (e e f)) :key cdr :test equal :from-end t :start1 1) 5))
+ (test-t (eql (mismatch '((a a a) (a b c) (b c d) (d e f) (e f g)) '((b b c) (c c d) (e e f)) :key cdr :test equal :from-end t :end1 3 :start2 1 :end2 2) 2))
+ (test-t (null (mismatch #() '())))
+ (test-t (eql (mismatch #(a b c) '(x y z)) 0))
+ (test-t (eql (mismatch #() '(x y z)) 0))
+ (test-t (eql (mismatch #(x y z) '()) 0))
+ (test-t (null (mismatch #(a) '(a))))
+ (test-t (eql (mismatch #(a b c x y z) '(a b c)) 3))
+ (test-t (null (mismatch #(a b c) '(a b c))))
+ (test-t (eql (mismatch #(a b c d e f) '(a b c)) 3))
+ (test-t (eql (mismatch #(a b c) '(a b c d e f)) 3))
+ (test-t (eql (mismatch #(a b c) '(a b x)) 2))
+ (test-t (eql (mismatch #(a b c) '(a x c)) 1))
+ (test-t (eql (mismatch #(a b c) '(x b c)) 0))
+ (test-t (eql (mismatch #(x y z a b c x y z) '(a b c) :start1 3) 6))
+ (test-t (eql (mismatch #(x y z a b c x y z) '(a b c) :start1 3 :end1 nil) 6))
+ (test-t (eql (mismatch #(x y z a b c x y z) '(a b c) :start1 3 :end1 4) 4))
+ (test-t (eql (mismatch #(x y z a b c x y z) '(a b c) :start1 3 :end1 3) 3))
+ (test-t (null (mismatch #(x y z) '() :start1 0 :end1 0)))
+ (test-t (null (mismatch #(x y z) '() :start1 1 :end1 1)))
+ (test-t (null (mismatch #(x y z) '() :start1 2 :end1 2)))
+ (test-t (null (mismatch #(x y z) '() :start1 3 :end1 3)))
+ (test-t (eql (mismatch #(x y z) '(a b c) :start1 0 :end1 0) 0))
+ (test-t (eql (mismatch #(x y z) '(a b c) :start1 1 :end1 1) 1))
+ (test-t (eql (mismatch #(x y z) '(a b c) :start1 2 :end1 2) 2))
+ (test-t (eql (mismatch #(x y z) '(a b c) :start1 3 :end1 3) 3))
+ (test-t (eql (mismatch #(x y z) '(x y z) :start1 0 :end1 1) 1))
+ (test-t (eql (mismatch #(x y z) '(x y z) :start1 0 :end1 2) 2))
+ (test-t (eql (mismatch #(x y z) '(x y z Z) :start1 0 :end1 3) 3))
+ (test-t (null (mismatch #(x y z) '(x y z) :start1 0 :end1 3)))
+ (test-t (eql (mismatch #(a b c x y z) '(x y z a b c)) 0))
+ (test-t (eql (mismatch #(a b c x y z) '(x y z a b c) :start1 3) 6))
+ (test-t (eql (mismatch #(a b c x y z a b c) '(x y z a b c x y z) :start1 3) 9))
+ (test-t (eql (mismatch #(a b c x y z a b c) '(x y z a b c x y z) :start1 6) 6))
+ (test-t (eql (mismatch #(a b c x y z a b c) '(x y z a b c x y z) :start1 6 :start2 3) 9))
+ (test-t (eql (mismatch #(a b c x y z a b c) '(x y z a b c x y z) :start1 0 :start2 3) 6))
+ (test-t (eql (mismatch #(a b c) '(a b c x y z)) 3))
+ (test-t (eql (mismatch #(a b c) '(x a b c y z)) 0))
+ (test-t (eql (mismatch #(a b c) '(x a b c y z) :start2 1) 3))
+ (test-t (eql (mismatch #(a b c) '(x a b c y z) :start2 1 :end2 nil) 3))
+ (test-t (null (mismatch #(a b c) '(x a b c y z) :start2 1 :end2 4)))
+ (test-t (eql (mismatch #(a b c d e) '(c d)) 0))
+ (test-t (eql (mismatch #(a b c d e) '(c d) :start1 2) 4))
+ (test-t (eql (mismatch #(a b c d e) '(c d) :start1 2 :end1 3) 3))
+ (test-t (eql (mismatch #(a b c d e) '(c d) :start1 2 :start2 1) 2))
+ (test-t (eql (mismatch #(a b c d e) '(c d) :start1 3 :start2 1) 4))
+ (test-t (eql (mismatch #(a b c d e) '(c d) :start1 2 :end2 1) 3))
+ (test-t (null (mismatch #(a b c d) '(a b c d) :start1 1 :end1 2 :start2 1 :end2 2)))
+ (test-t (null (mismatch #(a b c d) '(a b c d) :start1 1 :end1 3 :start2 1 :end2 3)))
+ (test-t (null (mismatch #(a b c d) '(a b c d) :start1 1 :end1 4 :start2 1 :end2 4)))
+ (test-t (eql (mismatch #(a b c d) '(a b c d) :start1 1 :end1 nil :start2 1 :end2 1) 1))
+ (test-t (eql (mismatch #(a b c d) '(a b c d) :start1 1 :end1 nil :start2 1 :end2 2) 2))
+ (test-t (eql (mismatch #(a b c d) '(a b c d) :start1 1 :end1 nil :start2 1 :end2 3) 3))
+ (test-t (null (mismatch #(a b c d) '(a b c d) :start1 1 :end1 nil :start2 1 :end2 4)))
+ (test-t (eql (mismatch #(a b c d) '(a b c d) :start1 1 :end1 1 :start2 1) 1))
+ (test-t (eql (mismatch #(a b c d) '(a b c d) :start1 1 :end1 2 :start2 1) 2))
+ (test-t (eql (mismatch #(a b c d) '(a b c d) :start1 1 :end1 3 :start2 1) 3))
+ (test-t (null (mismatch #(a b c d) '(a b c d) :start1 1 :end1 4 :start2 1)))
+ (test-t (null (mismatch #(a b c) '(a b c) :from-end t)))
+ (test-t (eql (mismatch #(a b c d) '(a b c) :from-end t) 4))
+ (test-t (eql (mismatch #(a b c) '(c) :from-end t) 2))
+ (test-t (eql (mismatch #(a b c) '(z a b c) :from-end t) 0))
+ (test-t (eql (mismatch #(a b c) '(x y z a b c) :from-end t) 0))
+ (test-t (eql (mismatch #(x y z a b c) '(a b c) :from-end t) 3))
+ (test-t (eql (mismatch #(x y z a b c) '(a b c) :end1 3 :from-end t) 3))
+ (test-t (eql (mismatch #(x y z a b c) '(a b c) :end1 5 :from-end t) 5))
+ (test-t (eql (mismatch #(x y z a b c x y z) '(a b c) :end1 6 :from-end t) 3))
+ (test-t (eql (mismatch #(x y z a b c x y z) '(a b c) :start1 2 :end1 6 :from-end t) 3))
+ (test-t (eql (mismatch #(x y z a b c x y z) '(a b c) :from-end t :start1 2 :end1 5 :start2 1 :end2 2 ) 4))
+ (test-t (eql (mismatch #(x y z a b c x y z) '(a b c) :start1 2 :end1 5 :start2 1 :end2 2 ) 2))
+ (test-t (eql (mismatch #((a) (b) (c)) '((a) (b) (c))) 0))
+ (test-t (null (mismatch #((a) (b) (c)) '((a) (b) (c)) :key car)))
+ (test-t (null (mismatch #((a) (b) (c)) '((a) (b) (c)) :test equal)))
+ (test-t (eql (mismatch #(#(a) #(b) #(c)) '(#(a) #(b) #(c))) 0))
+ (test-t (null (mismatch #(#(a) #(b) #(c)) '(#(a) #(b) #(c)) :test equalp)))
+ (test-t (eql (mismatch #((a) (b) (c) (d)) '((a) (b) (c)) :key car) 3))
+ (test-t (eql (mismatch #((a) (b) (c)) '((a) (b) (c) (d)) :key car) 3))
+ (test-t (eql (mismatch #(#\a #\b #\c) '(#\A #\B #\C)) 0))
+ (test-t (null (mismatch #(#\a #\b #\c) '(#\A #\B #\C) :key char-upcase)))
+ (test-t (null (mismatch #(#\a #\b #\c) '(#\A #\B #\C) :key char-downcase)))
+ (test-t (null (mismatch #(#\a #\b #\c) '(#\A #\B #\C) :key char-upcase :start1 1 :end1 2 :start2 1 :end2 2)))
+ (test-t (null (mismatch #(#\a #\b #\c) '(#\A #\B #\C) :key char-upcase :start1 2 :start2 2)))
+ (test-t (eql (mismatch #((a b c) (b c d) (d e f)) '((b b c) (c c d) (e e f))) 0))
+ (test-t (eql (mismatch #((a b c) (b c d) (d e f)) '((b b c) (c c d) (e e f)) :key cdr) 0))
+ (test-t (null (mismatch #((a b c) (b c d) (d e f)) '((b b c) (c c d) (e e f)) :key cdr :test equal)))
+ (test-t (eql (mismatch #((a b c) (b c d) (d e f) (e f g)) '((b b c) (c c d) (e e f)) :key cdr :test equal) 3))
+ (test-t (eql (mismatch #((a b c) (b c d) (d e f) (e f g)) '((b b c) (c c d) (e e f)) :key cdr :test equal :from-end t) 4))
+ (test-t (eql (mismatch #((a a a) (a b c) (b c d) (d e f)) '((b b c) (c c d) (e e f)) :key cdr :test equal :from-end t) 1))
+ (test-t (null (mismatch #((a a a) (a b c) (b c d) (d e f) (e f g)) '((b b c) (c c d) (e e f)) :key cdr :test equal :from-end t :start1 1 :end1 4)))
+ (test-t (eql (mismatch #((a a a) (a b c) (b c d) (d e f) (e f g)) '((b b c) (c c d) (e e f)) :key cdr :test equal :from-end t :start1 1) 5))
+ (test-t (eql (mismatch #((a a a) (a b c) (b c d) (d e f) (e f g)) '((b b c) (c c d) (e e f)) :key cdr :test equal :from-end t :end1 3 :start2 1 :end2 2) 2))
+ (test-t (null (mismatch '() #())))
+ (test-t (eql (mismatch '(a b c) #(x y z)) 0))
+ (test-t (eql (mismatch '() #(x y z)) 0))
+ (test-t (eql (mismatch '(x y z) #()) 0))
+ (test-t (null (mismatch '(a) #(a))))
+ (test-t (eql (mismatch '(a b c x y z) #(a b c)) 3))
+ (test-t (null (mismatch '(a b c) #(a b c))))
+ (test-t (eql (mismatch '(a b c d e f) #(a b c)) 3))
+ (test-t (eql (mismatch '(a b c) #(a b c d e f)) 3))
+ (test-t (eql (mismatch '(a b c) #(a b x)) 2))
+ (test-t (eql (mismatch '(a b c) #(a x c)) 1))
+ (test-t (eql (mismatch '(a b c) #(x b c)) 0))
+ (test-t (eql (mismatch '(x y z a b c x y z) #(a b c) :start1 3) 6))
+ (test-t (eql (mismatch '(x y z a b c x y z) #(a b c) :start1 3 :end1 nil) 6))
+ (test-t (eql (mismatch '(x y z a b c x y z) #(a b c) :start1 3 :end1 4) 4))
+ (test-t (eql (mismatch '(x y z a b c x y z) #(a b c) :start1 3 :end1 3) 3))
+ (test-t (null (mismatch '(x y z) #() :start1 0 :end1 0)))
+ (test-t (null (mismatch '(x y z) #() :start1 1 :end1 1)))
+ (test-t (null (mismatch '(x y z) #() :start1 2 :end1 2)))
+ (test-t (null (mismatch '(x y z) #() :start1 3 :end1 3)))
+ (test-t (eql (mismatch '(x y z) #(a b c) :start1 0 :end1 0) 0))
+ (test-t (eql (mismatch '(x y z) #(a b c) :start1 1 :end1 1) 1))
+ (test-t (eql (mismatch '(x y z) #(a b c) :start1 2 :end1 2) 2))
+ (test-t (eql (mismatch '(x y z) #(a b c) :start1 3 :end1 3) 3))
+ (test-t (eql (mismatch '(x y z) #(x y z) :start1 0 :end1 1) 1))
+ (test-t (eql (mismatch '(x y z) #(x y z) :start1 0 :end1 2) 2))
+ (test-t (eql (mismatch '(x y z) #(x y z Z) :start1 0 :end1 3) 3))
+ (test-t (null (mismatch '(x y z) #(x y z) :start1 0 :end1 3)))
+ (test-t (eql (mismatch '(a b c x y z) #(x y z a b c)) 0))
+ (test-t (eql (mismatch '(a b c x y z) #(x y z a b c) :start1 3) 6))
+ (test-t (eql (mismatch '(a b c x y z a b c) #(x y z a b c x y z) :start1 3) 9))
+ (test-t (eql (mismatch '(a b c x y z a b c) #(x y z a b c x y z) :start1 6) 6))
+ (test-t (eql (mismatch '(a b c x y z a b c) #(x y z a b c x y z) :start1 6 :start2 3) 9))
+ (test-t (eql (mismatch '(a b c x y z a b c) #(x y z a b c x y z) :start1 0 :start2 3) 6))
+ (test-t (eql (mismatch '(a b c) #(a b c x y z)) 3))
+ (test-t (eql (mismatch '(a b c) #(x a b c y z)) 0))
+ (test-t (eql (mismatch '(a b c) #(x a b c y z) :start2 1) 3))
+ (test-t (eql (mismatch '(a b c) #(x a b c y z) :start2 1 :end2 nil) 3))
+ (test-t (null (mismatch '(a b c) #(x a b c y z) :start2 1 :end2 4)))
+ (test-t (eql (mismatch '(a b c d e) #(c d)) 0))
+ (test-t (eql (mismatch '(a b c d e) #(c d) :start1 2) 4))
+ (test-t (eql (mismatch '(a b c d e) #(c d) :start1 2 :end1 3) 3))
+ (test-t (eql (mismatch '(a b c d e) #(c d) :start1 2 :start2 1) 2))
+ (test-t (eql (mismatch '(a b c d e) #(c d) :start1 3 :start2 1) 4))
+ (test-t (eql (mismatch '(a b c d e) #(c d) :start1 2 :end2 1) 3))
+ (test-t (null (mismatch '(a b c d) #(a b c d) :start1 1 :end1 2 :start2 1 :end2 2)))
+ (test-t (null (mismatch '(a b c d) #(a b c d) :start1 1 :end1 3 :start2 1 :end2 3)))
+ (test-t (null (mismatch '(a b c d) #(a b c d) :start1 1 :end1 4 :start2 1 :end2 4)))
+ (test-t (eql (mismatch '(a b c d) #(a b c d) :start1 1 :end1 nil :start2 1 :end2 1) 1))
+ (test-t (eql (mismatch '(a b c d) #(a b c d) :start1 1 :end1 nil :start2 1 :end2 2) 2))
+ (test-t (eql (mismatch '(a b c d) #(a b c d) :start1 1 :end1 nil :start2 1 :end2 3) 3))
+ (test-t (null (mismatch '(a b c d) #(a b c d) :start1 1 :end1 nil :start2 1 :end2 4)))
+ (test-t (eql (mismatch '(a b c d) #(a b c d) :start1 1 :end1 1 :start2 1) 1))
+ (test-t (eql (mismatch '(a b c d) #(a b c d) :start1 1 :end1 2 :start2 1) 2))
+ (test-t (eql (mismatch '(a b c d) #(a b c d) :start1 1 :end1 3 :start2 1) 3))
+ (test-t (null (mismatch '(a b c d) #(a b c d) :start1 1 :end1 4 :start2 1)))
+ (test-t (null (mismatch '(a b c) #(a b c) :from-end t)))
+ (test-t (eql (mismatch '(a b c d) #(a b c) :from-end t) 4))
+ (test-t (eql (mismatch '(a b c) #(c) :from-end t) 2))
+ (test-t (eql (mismatch '(a b c) #(z a b c) :from-end t) 0))
+ (test-t (eql (mismatch '(a b c) #(x y z a b c) :from-end t) 0))
+ (test-t (eql (mismatch '(x y z a b c) #(a b c) :from-end t) 3))
+ (test-t (eql (mismatch '(x y z a b c) #(a b c) :end1 3 :from-end t) 3))
+ (test-t (eql (mismatch '(x y z a b c) #(a b c) :end1 5 :from-end t) 5))
+ (test-t (eql (mismatch '(x y z a b c x y z) #(a b c) :end1 6 :from-end t) 3))
+ (test-t (eql (mismatch '(x y z a b c x y z) #(a b c) :start1 2 :end1 6 :from-end t) 3))
+ (test-t (eql (mismatch '(x y z a b c x y z) #(a b c) :from-end t :start1 2 :end1 5 :start2 1 :end2 2 ) 4))
+ (test-t (eql (mismatch '(x y z a b c x y z) #(a b c) :start1 2 :end1 5 :start2 1 :end2 2 ) 2))
+ (test-t (eql (mismatch '((a) (b) (c)) #((a) (b) (c))) 0))
+ (test-t (null (mismatch '((a) (b) (c)) #((a) (b) (c)) :key car)))
+ (test-t (null (mismatch '((a) (b) (c)) #((a) (b) (c)) :test equal)))
+ (test-t (eql (mismatch '(#(a) #(b) #(c)) #(#(a) #(b) #(c))) 0))
+ (test-t (null (mismatch '(#(a) #(b) #(c)) #(#(a) #(b) #(c)) :test equalp)))
+ (test-t (eql (mismatch '((a) (b) (c) (d)) #((a) (b) (c)) :key car) 3))
+ (test-t (eql (mismatch '((a) (b) (c)) #((a) (b) (c) (d)) :key car) 3))
+ (test-t (eql (mismatch '(#\a #\b #\c) #(#\A #\B #\C)) 0))
+ (test-t (null (mismatch '(#\a #\b #\c) #(#\A #\B #\C) :key char-upcase)))
+ (test-t (null (mismatch '(#\a #\b #\c) #(#\A #\B #\C) :key char-downcase)))
+ (test-t (null (mismatch '(#\a #\b #\c) #(#\A #\B #\C) :key char-upcase :start1 1 :end1 2 :start2 1 :end2 2)))
+ (test-t (null (mismatch '(#\a #\b #\c) #(#\A #\B #\C) :key char-upcase :start1 2 :start2 2)))
+ (test-t (eql (mismatch '((a b c) (b c d) (d e f)) #((b b c) (c c d) (e e f))) 0))
+ (test-t (eql (mismatch '((a b c) (b c d) (d e f)) #((b b c) (c c d) (e e f)) :key cdr) 0))
+ (test-t (null (mismatch '((a b c) (b c d) (d e f)) #((b b c) (c c d) (e e f)) :key cdr :test equal)))
+ (test-t (eql (mismatch '((a b c) (b c d) (d e f) (e f g)) #((b b c) (c c d) (e e f)) :key cdr :test equal) 3))
+ (test-t (eql (mismatch '((a b c) (b c d) (d e f) (e f g)) #((b b c) (c c d) (e e f)) :key cdr :test equal :from-end t) 4))
+ (test-t (eql (mismatch '((a a a) (a b c) (b c d) (d e f)) #((b b c) (c c d) (e e f)) :key cdr :test equal :from-end t) 1))
+ (test-t (null (mismatch '((a a a) (a b c) (b c d) (d e f) (e f g)) #((b b c) (c c d) (e e f)) :key cdr :test equal :from-end t :start1 1 :end1 4)))
+ (test-t (eql (mismatch '((a a a) (a b c) (b c d) (d e f) (e f g)) #((b b c) (c c d) (e e f)) :key cdr :test equal :from-end t :start1 1) 5))
+ (test-t (eql (mismatch '((a a a) (a b c) (b c d) (d e f) (e f g)) #((b b c) (c c d) (e e f)) :key cdr :test equal :from-end t :end1 3 :start2 1 :end2 2) 2))
+ (test-t (null (mismatch #() #())))
+ (test-t (eql (mismatch #(a b c) #(x y z)) 0))
+ (test-t (eql (mismatch #() #(x y z)) 0))
+ (test-t (eql (mismatch #(x y z) #()) 0))
+ (test-t (null (mismatch #(a) #(a))))
+ (test-t (eql (mismatch #(a b c x y z) #(a b c)) 3))
+ (test-t (null (mismatch #(a b c) #(a b c))))
+ (test-t (eql (mismatch #(a b c d e f) #(a b c)) 3))
+ (test-t (eql (mismatch #(a b c) #(a b c d e f)) 3))
+ (test-t (eql (mismatch #(a b c) #(a b x)) 2))
+ (test-t (eql (mismatch #(a b c) #(a x c)) 1))
+ (test-t (eql (mismatch #(a b c) #(x b c)) 0))
+ (test-t (eql (mismatch #(x y z a b c x y z) #(a b c) :start1 3) 6))
+ (test-t (eql (mismatch #(x y z a b c x y z) #(a b c) :start1 3 :end1 nil) 6))
+ (test-t (eql (mismatch #(x y z a b c x y z) #(a b c) :start1 3 :end1 4) 4))
+ (test-t (eql (mismatch #(x y z a b c x y z) #(a b c) :start1 3 :end1 3) 3))
+ (test-t (null (mismatch #(x y z) #() :start1 0 :end1 0)))
+ (test-t (null (mismatch #(x y z) #() :start1 1 :end1 1)))
+ (test-t (null (mismatch #(x y z) #() :start1 2 :end1 2)))
+ (test-t (null (mismatch #(x y z) #() :start1 3 :end1 3)))
+ (test-t (eql (mismatch #(x y z) #(a b c) :start1 0 :end1 0) 0))
+ (test-t (eql (mismatch #(x y z) #(a b c) :start1 1 :end1 1) 1))
+ (test-t (eql (mismatch #(x y z) #(a b c) :start1 2 :end1 2) 2))
+ (test-t (eql (mismatch #(x y z) #(a b c) :start1 3 :end1 3) 3))
+ (test-t (eql (mismatch #(x y z) #(x y z) :start1 0 :end1 1) 1))
+ (test-t (eql (mismatch #(x y z) #(x y z) :start1 0 :end1 2) 2))
+ (test-t (eql (mismatch #(x y z) #(x y z Z) :start1 0 :end1 3) 3))
+ (test-t (null (mismatch #(x y z) #(x y z) :start1 0 :end1 3)))
+ (test-t (eql (mismatch #(a b c x y z) #(x y z a b c)) 0))
+ (test-t (eql (mismatch #(a b c x y z) #(x y z a b c) :start1 3) 6))
+ (test-t (eql (mismatch #(a b c x y z a b c) #(x y z a b c x y z) :start1 3) 9))
+ (test-t (eql (mismatch #(a b c x y z a b c) #(x y z a b c x y z) :start1 6) 6))
+ (test-t (eql (mismatch #(a b c x y z a b c) #(x y z a b c x y z) :start1 6 :start2 3) 9))
+ (test-t (eql (mismatch #(a b c x y z a b c) #(x y z a b c x y z) :start1 0 :start2 3) 6))
+ (test-t (eql (mismatch #(a b c) #(a b c x y z)) 3))
+ (test-t (eql (mismatch #(a b c) #(x a b c y z)) 0))
+ (test-t (eql (mismatch #(a b c) #(x a b c y z) :start2 1) 3))
+ (test-t (eql (mismatch #(a b c) #(x a b c y z) :start2 1 :end2 nil) 3))
+ (test-t (null (mismatch #(a b c) #(x a b c y z) :start2 1 :end2 4)))
+ (test-t (eql (mismatch #(a b c d e) #(c d)) 0))
+ (test-t (eql (mismatch #(a b c d e) #(c d) :start1 2) 4))
+ (test-t (eql (mismatch #(a b c d e) #(c d) :start1 2 :end1 3) 3))
+ (test-t (eql (mismatch #(a b c d e) #(c d) :start1 2 :start2 1) 2))
+ (test-t (eql (mismatch #(a b c d e) #(c d) :start1 3 :start2 1) 4))
+ (test-t (eql (mismatch #(a b c d e) #(c d) :start1 2 :end2 1) 3))
+ (test-t (null (mismatch #(a b c d) #(a b c d) :start1 1 :end1 2 :start2 1 :end2 2)))
+ (test-t (null (mismatch #(a b c d) #(a b c d) :start1 1 :end1 3 :start2 1 :end2 3)))
+ (test-t (null (mismatch #(a b c d) #(a b c d) :start1 1 :end1 4 :start2 1 :end2 4)))
+ (test-t (eql (mismatch #(a b c d) #(a b c d) :start1 1 :end1 nil :start2 1 :end2 1) 1))
+ (test-t (eql (mismatch #(a b c d) #(a b c d) :start1 1 :end1 nil :start2 1 :end2 2) 2))
+ (test-t (eql (mismatch #(a b c d) #(a b c d) :start1 1 :end1 nil :start2 1 :end2 3) 3))
+ (test-t (null (mismatch #(a b c d) #(a b c d) :start1 1 :end1 nil :start2 1 :end2 4)))
+ (test-t (eql (mismatch #(a b c d) #(a b c d) :start1 1 :end1 1 :start2 1) 1))
+ (test-t (eql (mismatch #(a b c d) #(a b c d) :start1 1 :end1 2 :start2 1) 2))
+ (test-t (eql (mismatch #(a b c d) #(a b c d) :start1 1 :end1 3 :start2 1) 3))
+ (test-t (null (mismatch #(a b c d) #(a b c d) :start1 1 :end1 4 :start2 1)))
+ (test-t (null (mismatch #(a b c) #(a b c) :from-end t)))
+ (test-t (eql (mismatch #(a b c d) #(a b c) :from-end t) 4))
+ (test-t (eql (mismatch #(a b c) #(c) :from-end t) 2))
+ (test-t (eql (mismatch #(a b c) #(z a b c) :from-end t) 0))
+ (test-t (eql (mismatch #(a b c) #(x y z a b c) :from-end t) 0))
+ (test-t (eql (mismatch #(x y z a b c) #(a b c) :from-end t) 3))
+ (test-t (eql (mismatch #(x y z a b c) #(a b c) :end1 3 :from-end t) 3))
+ (test-t (eql (mismatch #(x y z a b c) #(a b c) :end1 5 :from-end t) 5))
+ (test-t (eql (mismatch #(x y z a b c x y z) #(a b c) :end1 6 :from-end t) 3))
+ (test-t (eql (mismatch #(x y z a b c x y z) #(a b c) :start1 2 :end1 6 :from-end t) 3))
+ (test-t (eql (mismatch #(x y z a b c x y z) #(a b c) :from-end t :start1 2 :end1 5 :start2 1 :end2 2 ) 4))
+ (test-t (eql (mismatch #(x y z a b c x y z) #(a b c) :start1 2 :end1 5 :start2 1 :end2 2 ) 2))
+ (test-t (eql (mismatch #((a) (b) (c)) #((a) (b) (c))) 0))
+ (test-t (null (mismatch #((a) (b) (c)) #((a) (b) (c)) :key car)))
+ (test-t (null (mismatch #((a) (b) (c)) #((a) (b) (c)) :test equal)))
+ (test-t (eql (mismatch #(#(a) #(b) #(c)) #(#(a) #(b) #(c))) 0))
+ (test-t (null (mismatch #(#(a) #(b) #(c)) #(#(a) #(b) #(c)) :test equalp)))
+ (test-t (eql (mismatch #((a) (b) (c) (d)) #((a) (b) (c)) :key car) 3))
+ (test-t (eql (mismatch #((a) (b) (c)) #((a) (b) (c) (d)) :key car) 3))
+ (test-t (eql (mismatch #(#\a #\b #\c) #(#\A #\B #\C)) 0))
+ (test-t (null (mismatch #(#\a #\b #\c) #(#\A #\B #\C) :key char-upcase)))
+ (test-t (null (mismatch #(#\a #\b #\c) #(#\A #\B #\C) :key char-downcase)))
+ (test-t (null (mismatch #(#\a #\b #\c) #(#\A #\B #\C) :key char-upcase :start1 1 :end1 2 :start2 1 :end2 2)))
+ (test-t (null (mismatch #(#\a #\b #\c) #(#\A #\B #\C) :key char-upcase :start1 2 :start2 2)))
+ (test-t (eql (mismatch #((a b c) (b c d) (d e f)) #((b b c) (c c d) (e e f))) 0))
+ (test-t (eql (mismatch #((a b c) (b c d) (d e f)) #((b b c) (c c d) (e e f)) :key cdr) 0))
+ (test-t (null (mismatch #((a b c) (b c d) (d e f)) #((b b c) (c c d) (e e f)) :key cdr :test equal)))
+ (test-t (eql (mismatch #((a b c) (b c d) (d e f) (e f g)) #((b b c) (c c d) (e e f)) :key cdr :test equal) 3))
+ (test-t (eql (mismatch #((a b c) (b c d) (d e f) (e f g)) #((b b c) (c c d) (e e f)) :key cdr :test equal :from-end t) 4))
+ (test-t (eql (mismatch #((a a a) (a b c) (b c d) (d e f)) #((b b c) (c c d) (e e f)) :key cdr :test equal :from-end t) 1))
+ (test-t (null (mismatch #((a a a) (a b c) (b c d) (d e f) (e f g)) #((b b c) (c c d) (e e f)) :key cdr :test equal :from-end t :start1 1 :end1 4)))
+ (test-t (eql (mismatch #((a a a) (a b c) (b c d) (d e f) (e f g)) #((b b c) (c c d) (e e f)) :key cdr :test equal :from-end t :start1 1) 5))
+ (test-t (eql (mismatch #((a a a) (a b c) (b c d) (d e f) (e f g)) #((b b c) (c c d) (e e f)) :key cdr :test equal :from-end t :end1 3 :start2 1 :end2 2) 2))
+ (test-t (eql (mismatch "abc" "xyz") 0))
+ (test-t (null (mismatch "" "")))
+ (test-t (null (mismatch "a" "a")))
+ (test-t (null (mismatch "abc" "abc")))
+ (test-t (null (mismatch "abc" "ABC" :key char-downcase)))
+ (test-t (null (mismatch "abc" "ABC" :test char-equal)))
+ (test-t (eql (mismatch "abcde" "abc") 3))
+ (test-t (eql (mismatch "abc" "abcde") 3))
+ (test-t (eql (mismatch "abc" "abxyz") 2))
+ (test-t (eql (mismatch "abcde" "abx") 2))
+ (test-t (null (mismatch "abc" "abc" :from-end t)))
+ (test-t (eql (mismatch "abcxyz" "xyzxyz" :from-end t) 3))
+ (test-t (eql (mismatch "abcxyz" "xyz" :from-end t) 3))
+ (test-t (eql (mismatch "xyz" "abcxyz" :from-end t) 0))
+ (test-t (eql (mismatch "ayz" "abcxyz" :from-end t) 1))
+ (test-t (null (mismatch "abc" "xyz" :test char<)))
+ (test-t (eql (mismatch "abc" "xyz" :test char>) 0))
+ (test-t (eql (mismatch "abcxyz" "abcdefg") 3))
+ (test-t (eql (mismatch "1xyz" "22xyz" :from-end t) 1))
+
+ (test-t (let ((lst (copy-seq "012345678"))) (and (equal (replace lst lst :start1 2 :start2 0) "010123456") (equal lst "010123456"))))
+ (test-t (let* ((list0 (list 'a 'b 'c 'd 'e)) (list (replace list0 '(x y z)))) (and (eq list0 list) (equal list0 '(x y z d e)))))
+ (test-t (let* ((list0 (list 'a 'b 'c 'd 'e)) (list (replace list0 '(x y z) :start1 1))) (and (eq list0 list) (equal list0 '(a x y z e)))))
+ (test-t (let* ((list0 (list 'a 'b 'c 'd 'e)) (list (replace list0 '(x y z) :start1 1 :end1 nil))) (and (eq list0 list) (equal list0 '(a x y z e)))))
+ (test-t (let* ((list0 (list 'a 'b 'c 'd 'e)) (list (replace list0 '(x y z) :start1 1 :start2 1))) (and (eq list0 list) (equal list0 '(a y z d e)))))
+ (test-t (let* ((list0 (list 'a 'b 'c 'd 'e)) (list (replace list0 '(x y z) :start1 1 :start2 1 :end2 nil))) (and (eq list0 list) (equal list0 '(a y z d e)))))
+ (test-t (let* ((list0 (list 'a 'b 'c 'd 'e)) (list (replace list0 '(x y z) :start1 1 :end1 nil :start2 1 :end2 nil))) (and (eq list0 list) (equal list0 '(a y z d e)))))
+ (test-t (let* ((list0 (list 'a 'b 'c 'd 'e)) (list (replace list0 '(x y z) :start1 1 :end1 2 :start2 1))) (and (eq list0 list) (equal list0 '(a y c d e)))))
+ (test-t (let* ((list0 (list 'a 'b 'c 'd 'e)) (list (replace list0 '(x y z) :start1 1 :end1 1))) (and (eq list0 list) (equal list0 '(a b c d e)))))
+ (test-t (let* ((list0 (list 'a 'b 'c 'd 'e)) (list (replace list0 '(x y z) :start1 2 :end1 2))) (and (eq list0 list) (equal list0 '(a b c d e)))))
+ (test-t (let* ((list0 (list 'a 'b 'c 'd 'e)) (list (replace list0 '(x y z) :start1 3 :end1 3))) (and (eq list0 list) (equal list0 '(a b c d e)))))
+ (test-t (let* ((list0 (list 'a 'b 'c 'd 'e)) (list (replace list0 '(x y z) :start1 4 :end1 4))) (and (eq list0 list) (equal list0 '(a b c d e)))))
+ (test-t (let* ((list0 (list 'a 'b 'c 'd 'e)) (list (replace list0 '(x y z) :start1 5 :end1 5))) (and (eq list0 list) (equal list0 '(a b c d e)))))
+ (test-t (null (replace nil nil)))
+ (test-t (null (replace nil '(a b c))))
+ (test-t (let* ((list0 (list 'a 'b 'c)) (list (replace list0 '()))) (and (eq list0 list) (equal list0 '(a b c)))))
+ (test-t (let* ((list0 (list 'a 'b 'c 'd 'e)) (list (replace list0 list0))) (and (eq list0 list) (equal list0 '(a b c d e)))))
+ (test-t (let* ((list0 (list 'a 'b 'c 'd 'e)) (list (replace list0 list0 :start1 3))) (and (eq list0 list) (equal list0 '(a b c a b)))))
+ (test-t (let* ((list0 (list 'a 'b 'c 'd 'e)) (list (replace list0 list0 :start1 1))) (and (eq list0 list) (equal list0 '(a a b c d)))))
+ (test-t (let* ((list0 (list 'a 'b 'c 'd 'e)) (list (replace list0 list0 :start1 1 :end1 3))) (and (eq list0 list) (equal list0 '(a a b d e)))))
+ (test-t (let* ((list0 (list 'a 'b 'c)) (list (replace list0 '(x y z)))) (and (eq list0 list) (equal list0 '(x y z)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 '(x y z)))) (and (eq vector0 vector) (equalp vector0 #(x y z d e)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 '(x y z) :start1 1))) (and (eq vector0 vector) (equalp vector0 #(a x y z e)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 '(x y z) :start1 1 :end1 nil))) (and (eq vector0 vector) (equalp vector0 #(a x y z e)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 '(x y z) :start1 1 :start2 1))) (and (eq vector0 vector) (equalp vector0 #(a y z d e)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 '(x y z) :start1 1 :start2 1 :end2 nil))) (and (eq vector0 vector) (equalp vector0 #(a y z d e)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 '(x y z) :start1 1 :end1 nil :start2 1 :end2 nil))) (and (eq vector0 vector) (equalp vector0 #(a y z d e)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 '(x y z) :start1 1 :end1 2 :start2 1))) (and (eq vector0 vector) (equalp vector0 #(a y c d e)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 '(x y z) :start1 1 :end1 1))) (and (eq vector0 vector) (equalp vector0 #(a b c d e)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 '(x y z) :start1 2 :end1 2))) (and (eq vector0 vector) (equalp vector0 #(a b c d e)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 '(x y z) :start1 3 :end1 3))) (and (eq vector0 vector) (equalp vector0 #(a b c d e)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 '(x y z) :start1 4 :end1 4))) (and (eq vector0 vector) (equalp vector0 #(a b c d e)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 '(x y z) :start1 5 :end1 5))) (and (eq vector0 vector) (equalp vector0 #(a b c d e)))))
+ (test-t (null (replace nil #())))
+ (test-t (null (replace nil #(a b c))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c)) (vector (replace vector0 '()))) (and (eq vector0 vector) (equalp vector0 #(a b c)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 vector0))) (and (eq vector0 vector) (equalp vector0 #(a b c d e)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 vector0 :start1 3))) (and (eq vector0 vector) (equalp vector0 #(a b c a b)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 vector0 :start1 1))) (and (eq vector0 vector) (equalp vector0 #(a a b c d)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 vector0 :start1 1 :end1 3))) (and (eq vector0 vector) (equalp vector0 #(a a b d e)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c)) (vector (replace vector0 '(x y z)))) (and (eq vector0 vector) (equalp vector0 #(x y z)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 #(x y z)))) (and (eq vector0 vector) (equalp vector0 #(x y z d e)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 #(x y z) :start1 1))) (and (eq vector0 vector) (equalp vector0 #(a x y z e)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 #(x y z) :start1 1 :end1 nil))) (and (eq vector0 vector) (equalp vector0 #(a x y z e)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 #(x y z) :start1 1 :start2 1))) (and (eq vector0 vector) (equalp vector0 #(a y z d e)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 #(x y z) :start1 1 :start2 1 :end2 nil))) (and (eq vector0 vector) (equalp vector0 #(a y z d e)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 #(x y z) :start1 1 :end1 nil :start2 1 :end2 nil))) (and (eq vector0 vector) (equalp vector0 #(a y z d e)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 #(x y z) :start1 1 :end1 2 :start2 1))) (and (eq vector0 vector) (equalp vector0 #(a y c d e)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 #(x y z) :start1 1 :end1 1))) (and (eq vector0 vector) (equalp vector0 #(a b c d e)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 #(x y z) :start1 2 :end1 2))) (and (eq vector0 vector) (equalp vector0 #(a b c d e)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 #(x y z) :start1 3 :end1 3))) (and (eq vector0 vector) (equalp vector0 #(a b c d e)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 #(x y z) :start1 4 :end1 4))) (and (eq vector0 vector) (equalp vector0 #(a b c d e)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 #(x y z) :start1 5 :end1 5))) (and (eq vector0 vector) (equalp vector0 #(a b c d e)))))
+ (test-t (null (replace nil #())))
+ (test-t (null (replace nil #(a b c))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c)) (vector (replace vector0 #()))) (and (eq vector0 vector) (equalp vector0 #(a b c)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 vector0))) (and (eq vector0 vector) (equalp vector0 #(a b c d e)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 vector0 :start1 3))) (and (eq vector0 vector) (equalp vector0 #(a b c a b)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 vector0 :start1 1))) (and (eq vector0 vector) (equalp vector0 #(a a b c d)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c 'd 'e)) (vector (replace vector0 vector0 :start1 1 :end1 3))) (and (eq vector0 vector) (equalp vector0 #(a a b d e)))))
+ (test-t (let* ((vector0 (vector 'a 'b 'c)) (vector (replace vector0 #(x y z)))) (and (eq vector0 vector) (equalp vector0 #(x y z)))))
+ (test-t (let* ((str0 (copy-seq "abc")) (str (replace str0 "xyz"))) (and (eq str0 str) (equalp str0 "xyz"))))
+ (test-t (let* ((str0 (copy-seq "")) (str (replace str0 ""))) (and (eq str0 str) (equalp str0 ""))))
+ (test-t (let* ((str0 (copy-seq "")) (str (replace str0 "xyz"))) (and (eq str0 str) (equalp str0 ""))))
+ (test-t (let* ((str0 (copy-seq "abc")) (str (replace str0 ""))) (and (eq str0 str) (equalp str0 "abc"))))
+ (test-t (let* ((str0 (copy-seq "abcdef")) (str (replace str0 "xyz" :start1 3))) (and (eq str0 str) (equalp str0 "abcxyz"))))
+ (test-t (let* ((str0 (copy-seq "abcdef")) (str (replace str0 "xyz" :start1 4 :start2 1))) (and (eq str0 str) (equalp str0 "abcdyz"))))
+ (test-t (let* ((str0 (copy-seq "abcdef")) (str (replace str0 "xyz" :start1 1 :end1 2 :start2 1))) (and (eq str0 str) (equalp str0 "aycdef"))))
+ (test-t (let* ((str0 (copy-seq "abcdef")) (str (replace str0 "xyz" :start1 1 :start2 1 :end2 2))) (and (eq str0 str) (equalp str0 "aycdef"))))
+ (test-t (let* ((str0 (copy-seq "abcdef")) (str (replace str0 str0 :start1 1))) (and (eq str0 str) (equalp str0 "aabcde"))))
+ (test-t (equal (substitute #\. #\space "0 2 4 6") "0.2.4.6"))
+ (test-t (equal (substitute 9 4 '(1 2 4 1 3 4 5)) '(1 2 9 1 3 9 5)))
+ (test-t (equal (substitute 9 4 '(1 2 4 1 3 4 5) :count 1) '(1 2 9 1 3 4 5)))
+ (test-t (equal (substitute 9 4 '(1 2 4 1 3 4 5) :count 1 :from-end t) '(1 2 4 1 3 9 5)))
+ (test-t (equal (substitute 9 3 '(1 2 4 1 3 4 5) :test >) '(9 9 4 9 3 4 5)))
+ (test-t (equal (substitute-if 0 evenp '((1) (2) (3) (4)) :start 2 :key car) '((1) (2) (3) 0)))
+ (test-t (equal (substitute-if 9 oddp '(1 2 4 1 3 4 5)) '(9 2 4 9 9 4 9)))
+ (test-t (equal (substitute-if 9 evenp '(1 2 4 1 3 4 5) :count 1 :from-end t) '(1 2 4 1 3 9 5)))
+ (test-t (let ((some-things (list 'a 'car 'b 'cdr 'c)))
+ (and (equal (nsubstitute-if "function was here" fboundp some-things
+ :count 1 :from-end t)
+ '(a car b "function was here" c))
+ (equal some-things '(a car b "function was here" c)))))
+ (test-t (let ((alpha-tester (copy-seq "ab "))) (and (equal (nsubstitute-if-not #\z alpha-char-p alpha-tester) "abz") (equal alpha-tester "abz"))))
+ (test-t (equal (substitute 'a 'x '(x y z)) '(a y z)))
+ (test-t (equal (substitute 'b 'y '(x y z)) '(x b z)))
+ (test-t (equal (substitute 'c 'z '(x y z)) '(x y c)))
+ (test-t (equal (substitute 'a 'p '(x y z)) '(x y z)))
+ (test-t (equal (substitute 'a 'x '()) '()))
+ (test-t (equal (substitute #\x #\b '(#\a #\b #\c #\d #\e) :test char<) '(#\a #\b #\x #\x #\x)))
+ (test-t (equal (substitute '(a) 'x '((x) (y) (z)) :key car) '((a) (y) (z))))
+ (test-t (equal (substitute 'c 'b '(a b a b a b a b)) '(a c a c a c a c)))
+ (test-t (equal (substitute 'a 'b '(b b b)) '(a a a)))
+ (test-t (equal (substitute 'z 'x '(a x b x c x d x e x f)) '(a z b z c z d z e z f)))
+ (test-t (equal (substitute 'z 'x '(a x b x c x d x e x f) :count nil) '(a z b z c z d z e z f)))
+ (test-t (equal (substitute 'z 'x '(a x b x c x d x e x f) :count 0) '(a x b x c x d x e x f)))
+ (test-t (equal (substitute 'z 'x '(a x b x c x d x e x f) :count -100) '(a x b x c x d x e x f)))
+ (test-t (equal (substitute 'z 'x '(a x b x c x d x e x f) :count 1) '(a z b x c x d x e x f)))
+ (test-t (equal (substitute 'z 'x '(a x b x c x d x e x f) :count 2) '(a z b z c x d x e x f)))
+ (test-t (equal (substitute 'z 'x '(a x b x c x d x e x f) :count 3) '(a z b z c z d x e x f)))
+ (test-t (equal (substitute 'z 'x '(a x b x c x d x e x f) :count 4) '(a z b z c z d z e x f)))
+ (test-t (equal (substitute 'z 'x '(a x b x c x d x e x f) :count 5) '(a z b z c z d z e z f)))
+ (test-t (equal (substitute 'z 'x '(a x b x c x d x e x f) :count 6) '(a z b z c z d z e z f)))
+ (test-t (equal (substitute 'z 'x '(a x b x c x d x e x f) :count 7) '(a z b z c z d z e z f)))
+ (test-t (equal (substitute 'z 'x '(a x b x c x d x e x f) :count nil :from-end t) '(a z b z c z d z e z f)))
+ (test-t (equal (substitute 'z 'x '(a x b x c x d x e x f) :count 0 :from-end t) '(a x b x c x d x e x f)))
+ (test-t (equal (substitute 'z 'x '(a x b x c x d x e x f) :count -100 :from-end t) '(a x b x c x d x e x f)))
+ (test-t (equal (substitute 'z 'x '(a x b x c x d x e x f) :count 1 :from-end t) '(a x b x c x d x e z f)))
+ (test-t (equal (substitute 'z 'x '(a x b x c x d x e x f) :count 2 :from-end t) '(a x b x c x d z e z f)))
+ (test-t (equal (substitute 'z 'x '(a x b x c x d x e x f) :count 3 :from-end t) '(a x b x c z d z e z f)))
+ (test-t (equal (substitute 'z 'x '(a x b x c x d x e x f) :count 4 :from-end t) '(a x b z c z d z e z f)))
+ (test-t (equal (substitute 'z 'x '(a x b x c x d x e x f) :count 5 :from-end t) '(a z b z c z d z e z f)))
+ (test-t (equal (substitute 'z 'x '(a x b x c x d x e x f) :count 6 :from-end t) '(a z b z c z d z e z f)))
+ (test-t (equal (substitute 'z 'x '(a x b x c x d x e x f) :count 7 :from-end t) '(a z b z c z d z e z f)))
+ (test-t (equal (substitute 'z 'x '(a x b x c x d x e x f) :start 2 :count 1) '(a x b z c x d x e x f)))
+ (test-t (equal (substitute 'z 'x '(a x b x c x d x e x f) :start 2 :end nil :count 1) '(a x b z c x d x e x f)))
+ (test-t (equal (substitute 'z 'x '(a x b x c x d x e x f) :start 2 :end 6 :count 100) '(a x b z c z d x e x f)))
+ (test-t (equal (substitute 'z 'x '(a x b x c x d x e x f) :start 2 :end 11 :count 100) '(a x b z c z d z e z f)))
+ (test-t (equal (substitute 'z 'x '(a x b x c x d x e x f) :start 2 :end 8 :count 10) '(a x b z c z d z e x f)))
+ (test-t (equal (substitute 'z 'x '(a x b x c x d x e x f) :start 2 :end 8 :count 2 :from-end t) '(a x b x c z d z e x f)))
+ (test-t (equal (substitute #\z #\c '(#\a #\b #\c #\d #\e #\f) :test char<) '(#\a #\b #\c #\z #\z #\z)))
+ (test-t (equal (substitute "peace" "war" '("war" "War" "WAr" "WAR") :test string-equal) '("peace" "peace" "peace" "peace")))
+ (test-t (equal (substitute "peace" "WAR" '("war" "War" "WAr" "WAR") :test string=) '("war" "War" "WAr" "peace")))
+ (test-t (equal (substitute "peace" "WAR" '("war" "War" "WAr" "WAR") :test string= :key string-upcase) '("peace" "peace" "peace" "peace")))
+ (test-t (equal (substitute "peace" "WAR" '("war" "War" "WAr" "WAR") :start 1 :end 2 :test string= :key string-upcase) '("war" "peace" "WAr" "WAR")))
+ (test-t (equal (substitute "peace" "WAR" '("war" "War" "WAr" "WAR") :start 1 :end nil :test string= :key string-upcase) '("war" "peace" "peace" "peace")))
+ (test-t (equal (substitute "peace" "war" '("war" "War" "WAr" "WAR") :test string= :key string-upcase) '("war" "War" "WAr" "WAR")))
+ (test-t (equalp (substitute 'a 'x #(x y z)) #(a y z)))
+ (test-t (equalp (substitute 'b 'y #(x y z)) #(x b z)))
+ (test-t (equalp (substitute 'c 'z #(x y z)) #(x y c)))
+ (test-t (equalp (substitute 'a 'p #(x y z)) #(x y z)))
+ (test-t (equalp (substitute 'a 'x #()) #()))
+ (test-t (equalp (substitute #\x #\b #(#\a #\b #\c #\d #\e) :test char<) #(#\a #\b #\x #\x #\x)))
+ (test-t (equalp (substitute '(a) 'x #((x) (y) (z)) :key car) #((a) (y) (z))))
+ (test-t (equalp (substitute 'c 'b #(a b a b a b a b)) #(a c a c a c a c)))
+ (test-t (equalp (substitute 'a 'b #(b b b)) #(a a a)))
+ (test-t (equalp (substitute 'z 'x #(a x b x c x d x e x f)) #(a z b z c z d z e z f)))
+ (test-t (equalp (substitute 'z 'x #(a x b x c x d x e x f) :count nil) #(a z b z c z d z e z f)))
+ (test-t (equalp (substitute 'z 'x #(a x b x c x d x e x f) :count 0) #(a x b x c x d x e x f)))
+ (test-t (equalp (substitute 'z 'x #(a x b x c x d x e x f) :count -100) #(a x b x c x d x e x f)))
+ (test-t (equalp (substitute 'z 'x #(a x b x c x d x e x f) :count 1) #(a z b x c x d x e x f)))
+ (test-t (equalp (substitute 'z 'x #(a x b x c x d x e x f) :count 2) #(a z b z c x d x e x f)))
+ (test-t (equalp (substitute 'z 'x #(a x b x c x d x e x f) :count 3) #(a z b z c z d x e x f)))
+ (test-t (equalp (substitute 'z 'x #(a x b x c x d x e x f) :count 4) #(a z b z c z d z e x f)))
+ (test-t (equalp (substitute 'z 'x #(a x b x c x d x e x f) :count 5) #(a z b z c z d z e z f)))
+ (test-t (equalp (substitute 'z 'x #(a x b x c x d x e x f) :count 6) #(a z b z c z d z e z f)))
+ (test-t (equalp (substitute 'z 'x #(a x b x c x d x e x f) :count 7) #(a z b z c z d z e z f)))
+ (test-t (equalp (substitute 'z 'x #(a x b x c x d x e x f) :count nil :from-end t) #(a z b z c z d z e z f)))
+ (test-t (equalp (substitute 'z 'x #(a x b x c x d x e x f) :count 0 :from-end t) #(a x b x c x d x e x f)))
+ (test-t (equalp (substitute 'z 'x #(a x b x c x d x e x f) :count -100 :from-end t) #(a x b x c x d x e x f)))
+ (test-t (equalp (substitute 'z 'x #(a x b x c x d x e x f) :count 1 :from-end t) #(a x b x c x d x e z f)))
+ (test-t (equalp (substitute 'z 'x #(a x b x c x d x e x f) :count 2 :from-end t) #(a x b x c x d z e z f)))
+ (test-t (equalp (substitute 'z 'x #(a x b x c x d x e x f) :count 3 :from-end t) #(a x b x c z d z e z f)))
+ (test-t (equalp (substitute 'z 'x #(a x b x c x d x e x f) :count 4 :from-end t) #(a x b z c z d z e z f)))
+ (test-t (equalp (substitute 'z 'x #(a x b x c x d x e x f) :count 5 :from-end t) #(a z b z c z d z e z f)))
+ (test-t (equalp (substitute 'z 'x #(a x b x c x d x e x f) :count 6 :from-end t) #(a z b z c z d z e z f)))
+ (test-t (equalp (substitute 'z 'x #(a x b x c x d x e x f) :count 7 :from-end t) #(a z b z c z d z e z f)))
+ (test-t (equalp (substitute 'z 'x #(a x b x c x d x e x f) :start 2 :count 1) #(a x b z c x d x e x f)))
+ (test-t (equalp (substitute 'z 'x #(a x b x c x d x e x f) :start 2 :end nil :count 1) #(a x b z c x d x e x f)))
+ (test-t (equalp (substitute 'z 'x #(a x b x c x d x e x f) :start 2 :end 6 :count 100) #(a x b z c z d x e x f)))
+ (test-t (equalp (substitute 'z 'x #(a x b x c x d x e x f) :start 2 :end 11 :count 100) #(a x b z c z d z e z f)))
+ (test-t (equalp (substitute 'z 'x #(a x b x c x d x e x f) :start 2 :end 8 :count 10) #(a x b z c z d z e x f)))
+ (test-t (equalp (substitute 'z 'x #(a x b x c x d x e x f) :start 2 :end 8 :count 2 :from-end t) #(a x b x c z d z e x f)))
+ (test-t (equalp (substitute #\z #\c #(#\a #\b #\c #\d #\e #\f) :test char<) #(#\a #\b #\c #\z #\z #\z)))
+ (test-t (equalp (substitute "peace" "war" #("love" "hate" "war" "peace") :test equal) #("love" "hate" "peace" "peace")))
+ (test-t (equalp (substitute "peace" "war" #("war" "War" "WAr" "WAR") :test string-equal) #("peace" "peace" "peace" "peace")))
+ (test-t (equalp (substitute "peace" "WAR" #("war" "War" "WAr" "WAR") :test string=) #("war" "War" "WAr" "peace")))
+ (test-t (equalp (substitute "peace" "WAR" #("war" "War" "WAr" "WAR") :test string= :key string-upcase) #("peace" "peace" "peace" "peace")))
+ (test-t (equalp (substitute "peace" "WAR" #("war" "War" "WAr" "WAR") :start 1 :end 2 :test string= :key string-upcase) #("war" "peace" "WAr" "WAR")))
+ (test-t (equalp (substitute "peace" "WAR" #("war" "War" "WAr" "WAR") :start 1 :end nil :test string= :key string-upcase) #("war" "peace" "peace" "peace")))
+ (test-t (equalp (substitute "peace" "war" #("war" "War" "WAr" "WAR") :test string= :key string-upcase) #("war" "War" "WAr" "WAR")))
+ (test-t (string= (substitute #\A #\a "abcabc") "AbcAbc"))
+ (test-t (string= (substitute #\A #\a "") ""))
+ (test-t (string= (substitute #\A #\a "xyz") "xyz"))
+ (test-t (string= (substitute #\A #\a "aaaaaaaaaa" :start 5 :end nil) "aaaaaAAAAA"))
+ (test-t (string= (substitute #\x #\5 "0123456789" :test char<) "012345xxxx"))
+ (test-t (string= (substitute #\x #\5 "0123456789" :test char>) "xxxxx56789"))
+ (test-t (string= (substitute #\x #\D "abcdefg" :key char-upcase :test char>) "xxxdefg"))
+ (test-t (string= (substitute #\x #\D "abcdefg" :start 1 :end 2 :key char-upcase :test char>) "axcdefg"))
+ (test-t (string= (substitute #\A #\a "aaaaaaaaaa" :count 2) "AAaaaaaaaa"))
+ (test-t (string= (substitute #\A #\a "aaaaaaaaaa" :count -1) "aaaaaaaaaa"))
+ (test-t (string= (substitute #\A #\a "aaaaaaaaaa" :count 0) "aaaaaaaaaa"))
+ (test-t (string= (substitute #\A #\a "aaaaaaaaaa" :count nil) "AAAAAAAAAA"))
+ (test-t (string= (substitute #\A #\a "aaaaaaaaaa" :count 100) "AAAAAAAAAA"))
+ (test-t (string= (substitute #\A #\a "aaaaaaaaaa" :count 9) "AAAAAAAAAa"))
+ (test-t (string= (substitute #\A #\a "aaaaaaaaaa" :count 9 :from-end t) "aAAAAAAAAA"))
+ (test-t (string= (substitute #\A #\a "aaaaaaaaaa" :start 2 :end 8 :count 3) "aaAAAaaaaa"))
+ (test-t (string= (substitute #\A #\a "aaaaaaaaaa" :start 2 :end 8 :from-end t :count 3) "aaaaaAAAaa"))
+ (test-t (string= (substitute #\x #\A "aaaaaaaaaa" :start 2 :end 8 :from-end t :count 3) "aaaaaaaaaa"))
+ (test-t (string= (substitute #\X #\A "aaaaaaaaaa" :start 2 :end 8 :from-end t :key char-upcase :count 3) "aaaaaXXXaa"))
+ (test-t (string= (substitute #\X #\D "abcdefghij" :start 2 :end 8 :from-end t :key char-upcase :test char< :count 3) "abcdeXXXij"))
+ (test-t (equal (substitute-if 'a (lambda (arg) (eq arg 'x)) '(x y z)) '(a y z)))
+ (test-t (equal (substitute-if 'b (lambda (arg) (eq arg 'y)) '(x y z)) '(x b z)))
+ (test-t (equal (substitute-if 'c (lambda (arg) (eq arg 'z)) '(x y z)) '(x y c)))
+ (test-t (equal (substitute-if 'a (lambda (arg) (eq arg 'p)) '(x y z)) '(x y z)))
+ (test-t (equal (substitute-if 'a (lambda (arg) (eq arg 'x)) '()) '()))
+ (test-t (equal (substitute-if #\x (lambda (arg) (char< #\b arg)) '(#\a #\b #\c #\d #\e)) '(#\a #\b #\x #\x #\x)))
+ (test-t (equal (substitute-if '(a) (lambda (arg) (eq arg 'x)) '((x) (y) (z)) :key car) '((a) (y) (z))))
+ (test-t (equal (substitute-if 'c (lambda (arg) (eq arg 'b)) '(a b a b a b a b)) '(a c a c a c a c)))
+ (test-t (equal (substitute-if 'a (lambda (arg) (eq arg 'b)) '(b b b)) '(a a a)))
+ (test-t (equal (substitute-if 'z (lambda (arg) (eq arg 'x)) '(a x b x c x d x e x f)) '(a z b z c z d z e z f)))
+ (test-t (equal (substitute-if 'z (lambda (arg) (eq arg 'x)) '(a x b x c x d x e x f) :count nil) '(a z b z c z d z e z f)))
+ (test-t (equal (substitute-if 'z (lambda (arg) (eq arg 'x)) '(a x b x c x d x e x f) :count 0) '(a x b x c x d x e x f)))
+ (test-t (equal (substitute-if 'z (lambda (arg) (eq arg 'x)) '(a x b x c x d x e x f) :count -100) '(a x b x c x d x e x f)))
+ (test-t (equal (substitute-if 'z (lambda (arg) (eq arg 'x)) '(a x b x c x d x e x f) :count 1) '(a z b x c x d x e x f)))
+ (test-t (equal (substitute-if 'z (lambda (arg) (eq arg 'x)) '(a x b x c x d x e x f) :count 2) '(a z b z c x d x e x f)))
+ (test-t (equal (substitute-if 'z (lambda (arg) (eq arg 'x)) '(a x b x c x d x e x f) :count 3) '(a z b z c z d x e x f)))
+ (test-t (equal (substitute-if 'z (lambda (arg) (eq arg 'x)) '(a x b x c x d x e x f) :count 4) '(a z b z c z d z e x f)))
+ (test-t (equal (substitute-if 'z (lambda (arg) (eq arg 'x)) '(a x b x c x d x e x f) :count 5) '(a z b z c z d z e z f)))
+ (test-t (equal (substitute-if 'z (lambda (arg) (eq arg 'x)) '(a x b x c x d x e x f) :count 6) '(a z b z c z d z e z f)))
+ (test-t (equal (substitute-if 'z (lambda (arg) (eq arg 'x)) '(a x b x c x d x e x f) :count 7) '(a z b z c z d z e z f)))
+ (test-t (equal (substitute-if 'z (lambda (arg) (eq arg 'x)) '(a x b x c x d x e x f) :count nil :from-end t) '(a z b z c z d z e z f)))
+ (test-t (equal (substitute-if 'z (lambda (arg) (eq arg 'x)) '(a x b x c x d x e x f) :count 0 :from-end t) '(a x b x c x d x e x f)))
+ (test-t (equal (substitute-if 'z (lambda (arg) (eq arg 'x)) '(a x b x c x d x e x f) :count -100 :from-end t) '(a x b x c x d x e x f)))
+ (test-t (equal (substitute-if 'z (lambda (arg) (eq arg 'x)) '(a x b x c x d x e x f) :count 1 :from-end t) '(a x b x c x d x e z f)))
+ (test-t (equal (substitute-if 'z (lambda (arg) (eq arg 'x)) '(a x b x c x d x e x f) :count 2 :from-end t) '(a x b x c x d z e z f)))
+ (test-t (equal (substitute-if 'z (lambda (arg) (eq arg 'x)) '(a x b x c x d x e x f) :count 3 :from-end t) '(a x b x c z d z e z f)))
+ (test-t (equal (substitute-if 'z (lambda (arg) (eq arg 'x)) '(a x b x c x d x e x f) :count 4 :from-end t) '(a x b z c z d z e z f)))
+ (test-t (equal (substitute-if 'z (lambda (arg) (eq arg 'x)) '(a x b x c x d x e x f) :count 5 :from-end t) '(a z b z c z d z e z f)))
+ (test-t (equal (substitute-if 'z (lambda (arg) (eq arg 'x)) '(a x b x c x d x e x f) :count 6 :from-end t) '(a z b z c z d z e z f)))
+ (test-t (equal (substitute-if 'z (lambda (arg) (eq arg 'x)) '(a x b x c x d x e x f) :count 7 :from-end t) '(a z b z c z d z e z f)))
+ (test-t (equal (substitute-if 'z (lambda (arg) (eq arg 'x)) '(a x b x c x d x e x f) :start 2 :count 1) '(a x b z c x d x e x f)))
+ (test-t (equal (substitute-if 'z (lambda (arg) (eq arg 'x)) '(a x b x c x d x e x f) :start 2 :end nil :count 1) '(a x b z c x d x e x f)))
+ (test-t (equal (substitute-if 'z (lambda (arg) (eq arg 'x)) '(a x b x c x d x e x f) :start 2 :end 6 :count 100) '(a x b z c z d x e x f)))
+ (test-t (equal (substitute-if 'z (lambda (arg) (eq arg 'x)) '(a x b x c x d x e x f) :start 2 :end 11 :count 100) '(a x b z c z d z e z f)))
+ (test-t (equal (substitute-if 'z (lambda (arg) (eq arg 'x)) '(a x b x c x d x e x f) :start 2 :end 8 :count 10) '(a x b z c z d z e x f)))
+ (test-t (equal (substitute-if 'z (lambda (arg) (eq arg 'x)) '(a x b x c x d x e x f) :start 2 :end 8 :count 2 :from-end t) '(a x b x c z d z e x f)))
+ (test-t (equal (substitute-if #\z (lambda (arg) (char< #\c arg)) '(#\a #\b #\c #\d #\e #\f)) '(#\a #\b #\c #\z #\z #\z)))
+ (test-t (equal (substitute-if "peace" (lambda (arg) (equal "war" arg)) '("love" "hate" "war" "peace")) '("love" "hate" "peace" "peace")))
+ (test-t (equal (substitute-if "peace" (lambda (arg) (string-equal "war" arg)) '("war" "War" "WAr" "WAR")) '("peace" "peace" "peace" "peace")))
+ (test-t (equal (substitute-if "peace" (lambda (arg) (string= "WAR" arg)) '("war" "War" "WAr" "WAR") :key string-upcase) '("peace" "peace" "peace" "peace")))
+ (test-t (equal (substitute-if "peace" (lambda (arg) (string= "WAR" arg)) '("war" "War" "WAr" "WAR") :start 1 :end 2 :key string-upcase) '("war" "peace" "WAr" "WAR")))
+ (test-t (equal (substitute-if "peace" (lambda (arg) (string= "WAR" arg)) '("war" "War" "WAr" "WAR") :start 1 :end nil :key string-upcase) '("war" "peace" "peace" "peace")))
+ (test-t (equal (substitute-if "peace" (lambda (arg) (string= "war" arg)) '("war" "War" "WAr" "WAR") :key string-upcase) '("war" "War" "WAr" "WAR")))
+ (test-t (equal (substitute-if "peace" (lambda (arg) (string= "WAR" arg)) '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 1 :key string-upcase) '("war" "peace" "WAr" "WAR" "war" "War" "WAr" "WAR")))
+ (test-t (equal (substitute-if "peace" (lambda (arg) (string= "WAR" arg)) '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 2 :key string-upcase) '("war" "peace" "peace" "WAR" "war" "War" "WAr" "WAR")))
+ (test-t (equal (substitute-if "peace" (lambda (arg) (string= "WAR" arg)) '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 2 :from-end t :key string-upcase) '("war" "War" "WAr" "WAR" "war" "peace" "peace" "WAR")))
+ (test-t (equal (substitute-if "peace" (lambda (arg) (string= "WAR" arg)) '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 0 :from-end t :key string-upcase) '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR")))
+ (test-t (equal (substitute-if "peace" (lambda (arg) (string= "WAR" arg)) '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count -2 :from-end t :key string-upcase) '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR")))
+ (test-t (equal (substitute-if "peace" (lambda (arg) (string= "WAR" arg)) '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count nil :from-end t :key string-upcase) '("war" "peace" "peace" "peace" "peace" "peace" "peace" "WAR")))
+ (test-t (equal (substitute-if "peace" (lambda (arg) (string= "WAR" arg)) '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 6 :from-end t :key string-upcase) '("war" "peace" "peace" "peace" "peace" "peace" "peace" "WAR")))
+ (test-t (equal (substitute-if "peace" (lambda (arg) (string= "WAR" arg)) '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 7 :from-end t :key string-upcase) '("war" "peace" "peace" "peace" "peace" "peace" "peace" "WAR")))
+ (test-t (equal (substitute-if "peace" (lambda (arg) (string= "WAR" arg)) '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 100 :from-end t :key string-upcase) '("war" "peace" "peace" "peace" "peace" "peace" "peace" "WAR")))
+
+ (test-t (equalp (substitute-if 'a (lambda (arg) (eq arg 'x)) #(x y z)) #(a y z)))
+ (test-t (equalp (substitute-if 'b (lambda (arg) (eq arg 'y)) #(x y z)) #(x b z)))
+ (test-t (equalp (substitute-if 'c (lambda (arg) (eq arg 'z)) #(x y z)) #(x y c)))
+ (test-t (equalp (substitute-if 'a (lambda (arg) (eq arg 'p)) #(x y z)) #(x y z)))
+ (test-t (equalp (substitute-if 'a (lambda (arg) (eq arg 'x)) #()) #()))
+ (test-t (equalp (substitute-if #\x (lambda (arg) (char< #\b arg)) #(#\a #\b #\c #\d #\e)) #(#\a #\b #\x #\x #\x)))
+ (test-t (equalp (substitute-if '(a) (lambda (arg) (eq arg 'x)) #((x) (y) (z)) :key car) #((a) (y) (z))))
+ (test-t (equalp (substitute-if 'c (lambda (arg) (eq arg 'b)) #(a b a b a b a b)) #(a c a c a c a c)))
+ (test-t (equalp (substitute-if 'a (lambda (arg) (eq arg 'b)) #(b b b)) #(a a a)))
+ (test-t (equalp (substitute-if 'z (lambda (arg) (eq arg 'x)) #(a x b x c x d x e x f)) #(a z b z c z d z e z f)))
+ (test-t (equalp (substitute-if 'z (lambda (arg) (eq arg 'x)) #(a x b x c x d x e x f) :count nil) #(a z b z c z d z e z f)))
+ (test-t (equalp (substitute-if 'z (lambda (arg) (eq arg 'x)) #(a x b x c x d x e x f) :count 0) #(a x b x c x d x e x f)))
+ (test-t (equalp (substitute-if 'z (lambda (arg) (eq arg 'x)) #(a x b x c x d x e x f) :count -100) #(a x b x c x d x e x f)))
+ (test-t (equalp (substitute-if 'z (lambda (arg) (eq arg 'x)) #(a x b x c x d x e x f) :count 1) #(a z b x c x d x e x f)))
+ (test-t (equalp (substitute-if 'z (lambda (arg) (eq arg 'x)) #(a x b x c x d x e x f) :count 2) #(a z b z c x d x e x f)))
+ (test-t (equalp (substitute-if 'z (lambda (arg) (eq arg 'x)) #(a x b x c x d x e x f) :count 3) #(a z b z c z d x e x f)))
+ (test-t (equalp (substitute-if 'z (lambda (arg) (eq arg 'x)) #(a x b x c x d x e x f) :count 4) #(a z b z c z d z e x f)))
+ (test-t (equalp (substitute-if 'z (lambda (arg) (eq arg 'x)) #(a x b x c x d x e x f) :count 5) #(a z b z c z d z e z f)))
+ (test-t (equalp (substitute-if 'z (lambda (arg) (eq arg 'x)) #(a x b x c x d x e x f) :count 6) #(a z b z c z d z e z f)))
+ (test-t (equalp (substitute-if 'z (lambda (arg) (eq arg 'x)) #(a x b x c x d x e x f) :count 7) #(a z b z c z d z e z f)))
+ (test-t (equalp (substitute-if 'z (lambda (arg) (eq arg 'x)) #(a x b x c x d x e x f) :count nil :from-end t) #(a z b z c z d z e z f)))
+ (test-t (equalp (substitute-if 'z (lambda (arg) (eq arg 'x)) #(a x b x c x d x e x f) :count 0 :from-end t) #(a x b x c x d x e x f)))
+ (test-t (equalp (substitute-if 'z (lambda (arg) (eq arg 'x)) #(a x b x c x d x e x f) :count -100 :from-end t) #(a x b x c x d x e x f)))
+ (test-t (equalp (substitute-if 'z (lambda (arg) (eq arg 'x)) #(a x b x c x d x e x f) :count 1 :from-end t) #(a x b x c x d x e z f)))
+ (test-t (equalp (substitute-if 'z (lambda (arg) (eq arg 'x)) #(a x b x c x d x e x f) :count 2 :from-end t) #(a x b x c x d z e z f)))
+ (test-t (equalp (substitute-if 'z (lambda (arg) (eq arg 'x)) #(a x b x c x d x e x f) :count 3 :from-end t) #(a x b x c z d z e z f)))
+ (test-t (equalp (substitute-if 'z (lambda (arg) (eq arg 'x)) #(a x b x c x d x e x f) :count 4 :from-end t) #(a x b z c z d z e z f)))
+ (test-t (equalp (substitute-if 'z (lambda (arg) (eq arg 'x)) #(a x b x c x d x e x f) :count 5 :from-end t) #(a z b z c z d z e z f)))
+ (test-t (equalp (substitute-if 'z (lambda (arg) (eq arg 'x)) #(a x b x c x d x e x f) :count 6 :from-end t) #(a z b z c z d z e z f)))
+ (test-t (equalp (substitute-if 'z (lambda (arg) (eq arg 'x)) #(a x b x c x d x e x f) :count 7 :from-end t) #(a z b z c z d z e z f)))
+ (test-t (equalp (substitute-if 'z (lambda (arg) (eq arg 'x)) #(a x b x c x d x e x f) :start 2 :count 1) #(a x b z c x d x e x f)))
+ (test-t (equalp (substitute-if 'z (lambda (arg) (eq arg 'x)) #(a x b x c x d x e x f) :start 2 :end nil :count 1) #(a x b z c x d x e x f)))
+ (test-t (equalp (substitute-if 'z (lambda (arg) (eq arg 'x)) #(a x b x c x d x e x f) :start 2 :end 6 :count 100) #(a x b z c z d x e x f)))
+ (test-t (equalp (substitute-if 'z (lambda (arg) (eq arg 'x)) #(a x b x c x d x e x f) :start 2 :end 11 :count 100) #(a x b z c z d z e z f)))
+ (test-t (equalp (substitute-if 'z (lambda (arg) (eq arg 'x)) #(a x b x c x d x e x f) :start 2 :end 8 :count 10) #(a x b z c z d z e x f)))
+ (test-t (equalp (substitute-if 'z (lambda (arg) (eq arg 'x)) #(a x b x c x d x e x f) :start 2 :end 8 :count 2 :from-end t) #(a x b x c z d z e x f)))
+ (test-t (equalp (substitute-if #\z (lambda (arg) (char< #\c arg)) #(#\a #\b #\c #\d #\e #\f)) #(#\a #\b #\c #\z #\z #\z)))
+ (test-t (equalp (substitute-if "peace" (lambda (arg) (equal "war" arg)) #("love" "hate" "war" "peace")) #("love" "hate" "peace" "peace")))
+ (test-t (equalp (substitute-if "peace" (lambda (arg) (string-equal "war" arg)) #("war" "War" "WAr" "WAR")) #("peace" "peace" "peace" "peace")))
+ (test-t (equalp (substitute-if "peace" (lambda (arg) (string= "WAR" arg)) #("war" "War" "WAr" "WAR") :key string-upcase) #("peace" "peace" "peace" "peace")))
+ (test-t (equalp (substitute-if "peace" (lambda (arg) (string= "WAR" arg)) #("war" "War" "WAr" "WAR") :start 1 :end 2 :key string-upcase) #("war" "peace" "WAr" "WAR")))
+ (test-t (equalp (substitute-if "peace" (lambda (arg) (string= "WAR" arg)) #("war" "War" "WAr" "WAR") :start 1 :end nil :key string-upcase) #("war" "peace" "peace" "peace")))
+ (test-t (equalp (substitute-if "peace" (lambda (arg) (string= "war" arg)) #("war" "War" "WAr" "WAR") :key string-upcase) #("war" "War" "WAr" "WAR")))
+ (test-t (equalp (substitute-if "peace" (lambda (arg) (string= "WAR" arg)) #("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 1 :key string-upcase) #("war" "peace" "WAr" "WAR" "war" "War" "WAr" "WAR")))
+ (test-t (equalp (substitute-if "peace" (lambda (arg) (string= "WAR" arg)) #("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 2 :key string-upcase) #("war" "peace" "peace" "WAR" "war" "War" "WAr" "WAR")))
+ (test-t (equalp (substitute-if "peace" (lambda (arg) (string= "WAR" arg)) #("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 2 :from-end t :key string-upcase) #("war" "War" "WAr" "WAR" "war" "peace" "peace" "WAR")))
+ (test-t (equalp (substitute-if "peace" (lambda (arg) (string= "WAR" arg)) #("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 0 :from-end t :key string-upcase) #("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR")))
+ (test-t (equalp (substitute-if "peace" (lambda (arg) (string= "WAR" arg)) #("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count -2 :from-end t :key string-upcase) #("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR")))
+ (test-t (equalp (substitute-if "peace" (lambda (arg) (string= "WAR" arg)) #("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count nil :from-end t :key string-upcase) #("war" "peace" "peace" "peace" "peace" "peace" "peace" "WAR")))
+ (test-t (equalp (substitute-if "peace" (lambda (arg) (string= "WAR" arg)) #("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 6 :from-end t :key string-upcase) #("war" "peace" "peace" "peace" "peace" "peace" "peace" "WAR")))
+ (test-t (equalp (substitute-if "peace" (lambda (arg) (string= "WAR" arg)) #("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 7 :from-end t :key string-upcase) #("war" "peace" "peace" "peace" "peace" "peace" "peace" "WAR")))
+ (test-t (equalp (substitute-if "peace" (lambda (arg) (string= "WAR" arg)) #("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 100 :from-end t :key string-upcase) #("war" "peace" "peace" "peace" "peace" "peace" "peace" "WAR")))
+ (test-t (string= (substitute-if #\A (lambda (arg) (eql #\a arg)) "abcabc") "AbcAbc"))
+ (test-t (string= (substitute-if #\A (lambda (arg) (eql #\a arg)) "") ""))
+ (test-t (string= (substitute-if #\A (lambda (arg) (eql #\a arg)) "xyz") "xyz"))
+ (test-t (string= (substitute-if #\A (lambda (arg) (eql #\a arg)) "aaaaaaaaaa" :start 5 :end nil) "aaaaaAAAAA"))
+ (test-t (string= (substitute-if #\x (lambda (arg) (char< #\5 arg)) "0123456789") "012345xxxx"))
+ (test-t (string= (substitute-if #\x (lambda (arg) (char> #\5 arg)) "0123456789") "xxxxx56789"))
+ (test-t (string= (substitute-if #\x (lambda (arg) (char> #\D arg)) "abcdefg" :key char-upcase) "xxxdefg"))
+ (test-t (string= (substitute-if #\x (lambda (arg) (char> #\D arg)) "abcdefg" :start 1 :end 2 :key char-upcase) "axcdefg"))
+ (test-t (string= (substitute-if #\A (lambda (arg) (eql #\a arg)) "aaaaaaaaaa" :count 2) "AAaaaaaaaa"))
+ (test-t (string= (substitute-if #\A (lambda (arg) (eql #\a arg)) "aaaaaaaaaa" :count -1) "aaaaaaaaaa"))
+ (test-t (string= (substitute-if #\A (lambda (arg) (eql #\a arg)) "aaaaaaaaaa" :count 0) "aaaaaaaaaa"))
+ (test-t (string= (substitute-if #\A (lambda (arg) (eql #\a arg)) "aaaaaaaaaa" :count nil) "AAAAAAAAAA"))
+ (test-t (string= (substitute-if #\A (lambda (arg) (eql #\a arg)) "aaaaaaaaaa" :count 100) "AAAAAAAAAA"))
+ (test-t (string= (substitute-if #\A (lambda (arg) (eql #\a arg)) "aaaaaaaaaa" :count 9) "AAAAAAAAAa"))
+ (test-t (string= (substitute-if #\A (lambda (arg) (eql #\a arg)) "aaaaaaaaaa" :count 9 :from-end t) "aAAAAAAAAA"))
+ (test-t (string= (substitute-if #\A (lambda (arg) (eql #\a arg)) "aaaaaaaaaa" :start 2 :end 8 :count 3) "aaAAAaaaaa"))
+ (test-t (string= (substitute-if #\A (lambda (arg) (eql #\a arg)) "aaaaaaaaaa" :start 2 :end 8 :from-end t :count 3) "aaaaaAAAaa"))
+ (test-t (string= (substitute-if #\x (lambda (arg) (eql #\A arg)) "aaaaaaaaaa" :start 2 :end 8 :from-end t :count 3) "aaaaaaaaaa"))
+ (test-t (string= (substitute-if #\X (lambda (arg) (eql #\A arg)) "aaaaaaaaaa" :start 2 :end 8 :from-end t :key char-upcase :count 3) "aaaaaXXXaa"))
+ (test-t (string= (substitute-if #\X (lambda (arg) (char< #\D arg)) "abcdefghij" :start 2 :end 8 :from-end t :key char-upcase :count 3) "abcdeXXXij"))
+ (test-t (equal (substitute-if-not 'a (lambda (arg) (not (eq arg 'x))) '(x y z)) '(a y z)))
+ (test-t (equal (substitute-if-not 'b (lambda (arg) (not (eq arg 'y))) '(x y z)) '(x b z)))
+ (test-t (equal (substitute-if-not 'c (lambda (arg) (not (eq arg 'z))) '(x y z)) '(x y c)))
+ (test-t (equal (substitute-if-not 'a (lambda (arg) (not (eq arg 'p))) '(x y z)) '(x y z)))
+ (test-t (equal (substitute-if-not 'a (lambda (arg) (not (eq arg 'x))) '()) '()))
+ (test-t (equal (substitute-if-not #\x (lambda (arg) (not (char< #\b arg))) '(#\a #\b #\c #\d #\e)) '(#\a #\b #\x #\x #\x)))
+ (test-t (equal (substitute-if-not '(a) (lambda (arg) (not (eq arg 'x))) '((x) (y) (z)) :key car) '((a) (y) (z))))
+ (test-t (equal (substitute-if-not 'c (lambda (arg) (not (eq arg 'b))) '(a b a b a b a b)) '(a c a c a c a c)))
+ (test-t (equal (substitute-if-not 'a (lambda (arg) (not (eq arg 'b))) '(b b b)) '(a a a)))
+ (test-t (equal (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) '(a x b x c x d x e x f)) '(a z b z c z d z e z f)))
+ (test-t (equal (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) '(a x b x c x d x e x f) :count nil) '(a z b z c z d z e z f)))
+ (test-t (equal (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) '(a x b x c x d x e x f) :count 0) '(a x b x c x d x e x f)))
+ (test-t (equal (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) '(a x b x c x d x e x f) :count -100) '(a x b x c x d x e x f)))
+ (test-t (equal (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) '(a x b x c x d x e x f) :count 1) '(a z b x c x d x e x f)))
+ (test-t (equal (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) '(a x b x c x d x e x f) :count 2) '(a z b z c x d x e x f)))
+ (test-t (equal (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) '(a x b x c x d x e x f) :count 3) '(a z b z c z d x e x f)))
+ (test-t (equal (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) '(a x b x c x d x e x f) :count 4) '(a z b z c z d z e x f)))
+ (test-t (equal (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) '(a x b x c x d x e x f) :count 5) '(a z b z c z d z e z f)))
+ (test-t (equal (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) '(a x b x c x d x e x f) :count 6) '(a z b z c z d z e z f)))
+ (test-t (equal (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) '(a x b x c x d x e x f) :count 7) '(a z b z c z d z e z f)))
+ (test-t (equal (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) '(a x b x c x d x e x f) :count nil :from-end t) '(a z b z c z d z e z f)))
+ (test-t (equal (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) '(a x b x c x d x e x f) :count 0 :from-end t) '(a x b x c x d x e x f)))
+ (test-t (equal (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) '(a x b x c x d x e x f) :count -100 :from-end t) '(a x b x c x d x e x f)))
+ (test-t (equal (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) '(a x b x c x d x e x f) :count 1 :from-end t) '(a x b x c x d x e z f)))
+ (test-t (equal (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) '(a x b x c x d x e x f) :count 2 :from-end t) '(a x b x c x d z e z f)))
+ (test-t (equal (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) '(a x b x c x d x e x f) :count 3 :from-end t) '(a x b x c z d z e z f)))
+ (test-t (equal (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) '(a x b x c x d x e x f) :count 4 :from-end t) '(a x b z c z d z e z f)))
+ (test-t (equal (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) '(a x b x c x d x e x f) :count 5 :from-end t) '(a z b z c z d z e z f)))
+ (test-t (equal (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) '(a x b x c x d x e x f) :count 6 :from-end t) '(a z b z c z d z e z f)))
+ (test-t (equal (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) '(a x b x c x d x e x f) :count 7 :from-end t) '(a z b z c z d z e z f)))
+ (test-t (equal (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) '(a x b x c x d x e x f) :start 2 :count 1) '(a x b z c x d x e x f)))
+ (test-t (equal (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) '(a x b x c x d x e x f) :start 2 :end nil :count 1) '(a x b z c x d x e x f)))
+ (test-t (equal (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) '(a x b x c x d x e x f) :start 2 :end 6 :count 100) '(a x b z c z d x e x f)))
+ (test-t (equal (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) '(a x b x c x d x e x f) :start 2 :end 11 :count 100) '(a x b z c z d z e z f)))
+ (test-t (equal (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) '(a x b x c x d x e x f) :start 2 :end 8 :count 10) '(a x b z c z d z e x f)))
+ (test-t (equal (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) '(a x b x c x d x e x f) :start 2 :end 8 :count 2 :from-end t) '(a x b x c z d z e x f)))
+ (test-t (equal (substitute-if-not #\z (lambda (arg) (not (char< #\c arg))) '(#\a #\b #\c #\d #\e #\f)) '(#\a #\b #\c #\z #\z #\z)))
+ (test-t (equal (substitute-if-not "peace" (lambda (arg) (not (equal "war" arg))) '("love" "hate" "war" "peace")) '("love" "hate" "peace" "peace")))
+ (test-t (equal (substitute-if-not "peace" (lambda (arg) (not (string-equal "war" arg))) '("war" "War" "WAr" "WAR")) '("peace" "peace" "peace" "peace")))
+ (test-t (equal (substitute-if-not "peace" (lambda (arg) (not (string= "WAR" arg))) '("war" "War" "WAr" "WAR") :key string-upcase) '("peace" "peace" "peace" "peace")))
+ (test-t (equal (substitute-if-not "peace" (lambda (arg) (not (string= "WAR" arg))) '("war" "War" "WAr" "WAR") :start 1 :end 2 :key string-upcase) '("war" "peace" "WAr" "WAR")))
+ (test-t (equal (substitute-if-not "peace" (lambda (arg) (not (string= "WAR" arg))) '("war" "War" "WAr" "WAR") :start 1 :end nil :key string-upcase) '("war" "peace" "peace" "peace")))
+ (test-t (equal (substitute-if-not "peace" (lambda (arg) (not (string= "war" arg))) '("war" "War" "WAr" "WAR") :key string-upcase) '("war" "War" "WAr" "WAR")))
+ (test-t (equal (substitute-if-not "peace" (lambda (arg) (not (string= "WAR" arg))) '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 1 :key string-upcase) '("war" "peace" "WAr" "WAR" "war" "War" "WAr" "WAR")))
+ (test-t (equal (substitute-if-not "peace" (lambda (arg) (not (string= "WAR" arg))) '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 2 :key string-upcase) '("war" "peace" "peace" "WAR" "war" "War" "WAr" "WAR")))
+ (test-t (equal (substitute-if-not "peace" (lambda (arg) (not (string= "WAR" arg))) '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 2 :from-end t :key string-upcase) '("war" "War" "WAr" "WAR" "war" "peace" "peace" "WAR")))
+ (test-t (equal (substitute-if-not "peace" (lambda (arg) (not (string= "WAR" arg))) '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 0 :from-end t :key string-upcase) '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR")))
+ (test-t (equal (substitute-if-not "peace" (lambda (arg) (not (string= "WAR" arg))) '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count -2 :from-end t :key string-upcase) '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR")))
+ (test-t (equal (substitute-if-not "peace" (lambda (arg) (not (string= "WAR" arg))) '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count nil :from-end t :key string-upcase) '("war" "peace" "peace" "peace" "peace" "peace" "peace" "WAR")))
+ (test-t (equal (substitute-if-not "peace" (lambda (arg) (not (string= "WAR" arg))) '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 6 :from-end t :key string-upcase) '("war" "peace" "peace" "peace" "peace" "peace" "peace" "WAR")))
+ (test-t (equal (substitute-if-not "peace" (lambda (arg) (not (string= "WAR" arg))) '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 7 :from-end t :key string-upcase) '("war" "peace" "peace" "peace" "peace" "peace" "peace" "WAR")))
+ (test-t (equal (substitute-if-not "peace" (lambda (arg) (not (string= "WAR" arg))) '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 100 :from-end t :key string-upcase) '("war" "peace" "peace" "peace" "peace" "peace" "peace" "WAR")))
+ (test-t (equalp (substitute-if-not 'a (lambda (arg) (not (eq arg 'x))) #(x y z)) #(a y z)))
+ (test-t (equalp (substitute-if-not 'b (lambda (arg) (not (eq arg 'y))) #(x y z)) #(x b z)))
+ (test-t (equalp (substitute-if-not 'c (lambda (arg) (not (eq arg 'z))) #(x y z)) #(x y c)))
+ (test-t (equalp (substitute-if-not 'a (lambda (arg) (not (eq arg 'p))) #(x y z)) #(x y z)))
+ (test-t (equalp (substitute-if-not 'a (lambda (arg) (not (eq arg 'x))) #()) #()))
+ (test-t (equalp (substitute-if-not #\x (lambda (arg) (not (char< #\b arg))) #(#\a #\b #\c #\d #\e)) #(#\a #\b #\x #\x #\x)))
+ (test-t (equalp (substitute-if-not '(a) (lambda (arg) (not (eq arg 'x))) #((x) (y) (z)) :key car) #((a) (y) (z))))
+ (test-t (equalp (substitute-if-not 'c (lambda (arg) (not (eq arg 'b))) #(a b a b a b a b)) #(a c a c a c a c)))
+ (test-t (equalp (substitute-if-not 'a (lambda (arg) (not (eq arg 'b))) #(b b b)) #(a a a)))
+ (test-t (equalp (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) #(a x b x c x d x e x f)) #(a z b z c z d z e z f)))
+ (test-t (equalp (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) #(a x b x c x d x e x f) :count nil) #(a z b z c z d z e z f)))
+ (test-t (equalp (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) #(a x b x c x d x e x f) :count 0) #(a x b x c x d x e x f)))
+ (test-t (equalp (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) #(a x b x c x d x e x f) :count -100) #(a x b x c x d x e x f)))
+ (test-t (equalp (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) #(a x b x c x d x e x f) :count 1) #(a z b x c x d x e x f)))
+ (test-t (equalp (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) #(a x b x c x d x e x f) :count 2) #(a z b z c x d x e x f)))
+ (test-t (equalp (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) #(a x b x c x d x e x f) :count 3) #(a z b z c z d x e x f)))
+ (test-t (equalp (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) #(a x b x c x d x e x f) :count 4) #(a z b z c z d z e x f)))
+ (test-t (equalp (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) #(a x b x c x d x e x f) :count 5) #(a z b z c z d z e z f)))
+ (test-t (equalp (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) #(a x b x c x d x e x f) :count 6) #(a z b z c z d z e z f)))
+ (test-t (equalp (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) #(a x b x c x d x e x f) :count 7) #(a z b z c z d z e z f)))
+ (test-t (equalp (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) #(a x b x c x d x e x f) :count nil :from-end t) #(a z b z c z d z e z f)))
+ (test-t (equalp (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) #(a x b x c x d x e x f) :count 0 :from-end t) #(a x b x c x d x e x f)))
+ (test-t (equalp (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) #(a x b x c x d x e x f) :count -100 :from-end t) #(a x b x c x d x e x f)))
+ (test-t (equalp (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) #(a x b x c x d x e x f) :count 1 :from-end t) #(a x b x c x d x e z f)))
+ (test-t (equalp (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) #(a x b x c x d x e x f) :count 2 :from-end t) #(a x b x c x d z e z f)))
+ (test-t (equalp (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) #(a x b x c x d x e x f) :count 3 :from-end t) #(a x b x c z d z e z f)))
+ (test-t (equalp (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) #(a x b x c x d x e x f) :count 4 :from-end t) #(a x b z c z d z e z f)))
+ (test-t (equalp (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) #(a x b x c x d x e x f) :count 5 :from-end t) #(a z b z c z d z e z f)))
+ (test-t (equalp (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) #(a x b x c x d x e x f) :count 6 :from-end t) #(a z b z c z d z e z f)))
+ (test-t (equalp (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) #(a x b x c x d x e x f) :count 7 :from-end t) #(a z b z c z d z e z f)))
+ (test-t (equalp (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) #(a x b x c x d x e x f) :start 2 :count 1) #(a x b z c x d x e x f)))
+ (test-t (equalp (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) #(a x b x c x d x e x f) :start 2 :end nil :count 1) #(a x b z c x d x e x f)))
+ (test-t (equalp (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) #(a x b x c x d x e x f) :start 2 :end 6 :count 100) #(a x b z c z d x e x f)))
+ (test-t (equalp (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) #(a x b x c x d x e x f) :start 2 :end 11 :count 100) #(a x b z c z d z e z f)))
+ (test-t (equalp (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) #(a x b x c x d x e x f) :start 2 :end 8 :count 10) #(a x b z c z d z e x f)))
+ (test-t (equalp (substitute-if-not 'z (lambda (arg) (not (eq arg 'x))) #(a x b x c x d x e x f) :start 2 :end 8 :count 2 :from-end t) #(a x b x c z d z e x f)))
+ (test-t (equalp (substitute-if-not #\z (lambda (arg) (not (char< #\c arg))) #(#\a #\b #\c #\d #\e #\f)) #(#\a #\b #\c #\z #\z #\z)))
+ (test-t (equalp (substitute-if-not "peace" (lambda (arg) (not (equal "war" arg))) #("love" "hate" "war" "peace")) #("love" "hate" "peace" "peace")))
+ (test-t (equalp (substitute-if-not "peace" (lambda (arg) (not (string-equal "war" arg))) #("war" "War" "WAr" "WAR")) #("peace" "peace" "peace" "peace")))
+ (test-t (equalp (substitute-if-not "peace" (lambda (arg) (not (string= "WAR" arg))) #("war" "War" "WAr" "WAR") :key string-upcase) #("peace" "peace" "peace" "peace")))
+ (test-t (equalp (substitute-if-not "peace" (lambda (arg) (not (string= "WAR" arg))) #("war" "War" "WAr" "WAR") :start 1 :end 2 :key string-upcase) #("war" "peace" "WAr" "WAR")))
+ (test-t (equalp (substitute-if-not "peace" (lambda (arg) (not (string= "WAR" arg))) #("war" "War" "WAr" "WAR") :start 1 :end nil :key string-upcase) #("war" "peace" "peace" "peace")))
+ (test-t (equalp (substitute-if-not "peace" (lambda (arg) (not (string= "war" arg))) #("war" "War" "WAr" "WAR") :key string-upcase) #("war" "War" "WAr" "WAR")))
+ (test-t (equalp (substitute-if-not "peace" (lambda (arg) (not (string= "WAR" arg))) #("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 1 :key string-upcase) #("war" "peace" "WAr" "WAR" "war" "War" "WAr" "WAR")))
+ (test-t (equalp (substitute-if-not "peace" (lambda (arg) (not (string= "WAR" arg))) #("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 2 :key string-upcase) #("war" "peace" "peace" "WAR" "war" "War" "WAr" "WAR")))
+ (test-t (equalp (substitute-if-not "peace" (lambda (arg) (not (string= "WAR" arg))) #("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 2 :from-end t :key string-upcase) #("war" "War" "WAr" "WAR" "war" "peace" "peace" "WAR")))
+ (test-t (equalp (substitute-if-not "peace" (lambda (arg) (not (string= "WAR" arg))) #("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 0 :from-end t :key string-upcase) #("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR")))
+ (test-t (equalp (substitute-if-not "peace" (lambda (arg) (not (string= "WAR" arg))) #("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count -2 :from-end t :key string-upcase) #("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR")))
+ (test-t (equalp (substitute-if-not "peace" (lambda (arg) (not (string= "WAR" arg))) #("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count nil :from-end t :key string-upcase) #("war" "peace" "peace" "peace" "peace" "peace" "peace" "WAR")))
+ (test-t (equalp (substitute-if-not "peace" (lambda (arg) (not (string= "WAR" arg))) #("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 6 :from-end t :key string-upcase) #("war" "peace" "peace" "peace" "peace" "peace" "peace" "WAR")))
+ (test-t (equalp (substitute-if-not "peace" (lambda (arg) (not (string= "WAR" arg))) #("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 7 :from-end t :key string-upcase) #("war" "peace" "peace" "peace" "peace" "peace" "peace" "WAR")))
+ (test-t (equalp (substitute-if-not "peace" (lambda (arg) (not (string= "WAR" arg))) #("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR") :start 1 :end 7 :count 100 :from-end t :key string-upcase) #("war" "peace" "peace" "peace" "peace" "peace" "peace" "WAR")))
+ (test-t (string= (substitute-if-not #\A (lambda (arg) (not (eql #\a arg))) "abcabc") "AbcAbc"))
+ (test-t (string= (substitute-if-not #\A (lambda (arg) (not (eql #\a arg))) "") ""))
+ (test-t (string= (substitute-if-not #\A (lambda (arg) (not (eql #\a arg))) "xyz") "xyz"))
+ (test-t (string= (substitute-if-not #\A (lambda (arg) (not (eql #\a arg))) "aaaaaaaaaa" :start 5 :end nil) "aaaaaAAAAA"))
+ (test-t (string= (substitute-if-not #\x (lambda (arg) (not (char< #\5 arg))) "0123456789") "012345xxxx"))
+ (test-t (string= (substitute-if-not #\x (lambda (arg) (not (char> #\5 arg))) "0123456789") "xxxxx56789"))
+ (test-t (string= (substitute-if-not #\x (lambda (arg) (not (char> #\D arg))) "abcdefg" :key char-upcase) "xxxdefg"))
+ (test-t (string= (substitute-if-not #\x (lambda (arg) (not (char> #\D arg))) "abcdefg" :start 1 :end 2 :key char-upcase) "axcdefg"))
+ (test-t (string= (substitute-if-not #\A (lambda (arg) (not (eql #\a arg))) "aaaaaaaaaa" :count 2) "AAaaaaaaaa"))
+ (test-t (string= (substitute-if-not #\A (lambda (arg) (not (eql #\a arg))) "aaaaaaaaaa" :count -1) "aaaaaaaaaa"))
+ (test-t (string= (substitute-if-not #\A (lambda (arg) (not (eql #\a arg))) "aaaaaaaaaa" :count 0) "aaaaaaaaaa"))
+ (test-t (string= (substitute-if-not #\A (lambda (arg) (not (eql #\a arg))) "aaaaaaaaaa" :count nil) "AAAAAAAAAA"))
+ (test-t (string= (substitute-if-not #\A (lambda (arg) (not (eql #\a arg))) "aaaaaaaaaa" :count 100) "AAAAAAAAAA"))
+ (test-t (string= (substitute-if-not #\A (lambda (arg) (not (eql #\a arg))) "aaaaaaaaaa" :count 9) "AAAAAAAAAa"))
+ (test-t (string= (substitute-if-not #\A (lambda (arg) (not (eql #\a arg))) "aaaaaaaaaa" :count 9 :from-end t) "aAAAAAAAAA"))
+ (test-t (string= (substitute-if-not #\A (lambda (arg) (not (eql #\a arg))) "aaaaaaaaaa" :start 2 :end 8 :count 3) "aaAAAaaaaa"))
+ (test-t (string= (substitute-if-not #\A (lambda (arg) (not (eql #\a arg))) "aaaaaaaaaa" :start 2 :end 8 :from-end t :count 3) "aaaaaAAAaa"))
+ (test-t (string= (substitute-if-not #\x (lambda (arg) (not (eql #\A arg))) "aaaaaaaaaa" :start 2 :end 8 :from-end t :count 3) "aaaaaaaaaa"))
+ (test-t (string= (substitute-if-not #\X (lambda (arg) (not (eql #\A arg))) "aaaaaaaaaa" :start 2 :end 8 :from-end t :key char-upcase :count 3) "aaaaaXXXaa"))
+ (test-t (string= (substitute-if-not #\X (lambda (arg) (not (char< #\D arg))) "abcdefghij" :start 2 :end 8 :from-end t :key char-upcase :count 3) "abcdeXXXij"))
+ (test-t (equal (nsubstitute 'a 'x (copy-seq '(x y z))) '(a y z)))
+ (test-t (equal (nsubstitute 'b 'y (copy-seq '(x y z))) '(x b z)))
+ (test-t (equal (nsubstitute 'c 'z (copy-seq '(x y z))) '(x y c)))
+ (test-t (equal (nsubstitute 'a 'p (copy-seq '(x y z))) '(x y z)))
+ (test-t (equal (nsubstitute 'a 'x (copy-seq '())) '()))
+ (test-t (equal (nsubstitute #\x #\b (copy-seq '(#\a #\b #\c #\d #\e)) :test char<) '(#\a #\b #\x #\x #\x)))
+ (test-t (equal (nsubstitute '(a) 'x (copy-seq '((x) (y) (z))) :key car) '((a) (y) (z))))
+ (test-t (equal (nsubstitute 'c 'b (copy-seq '(a b a b a b a b))) '(a c a c a c a c)))
+ (test-t (equal (nsubstitute 'a 'b (copy-seq '(b b b))) '(a a a)))
+ (test-t (equal (nsubstitute 'z 'x (copy-seq '(a x b x c x d x e x f))) '(a z b z c z d z e z f)))
+ (test-t (equal (nsubstitute 'z 'x (copy-seq '(a x b x c x d x e x f)) :count nil) '(a z b z c z d z e z f)))
+ (test-t (equal (nsubstitute 'z 'x (copy-seq '(a x b x c x d x e x f)) :count 0) '(a x b x c x d x e x f)))
+ (test-t (equal (nsubstitute 'z 'x (copy-seq '(a x b x c x d x e x f)) :count -100) '(a x b x c x d x e x f)))
+ (test-t (equal (nsubstitute 'z 'x (copy-seq '(a x b x c x d x e x f)) :count 1) '(a z b x c x d x e x f)))
+ (test-t (equal (nsubstitute 'z 'x (copy-seq '(a x b x c x d x e x f)) :count 2) '(a z b z c x d x e x f)))
+ (test-t (equal (nsubstitute 'z 'x (copy-seq '(a x b x c x d x e x f)) :count 3) '(a z b z c z d x e x f)))
+ (test-t (equal (nsubstitute 'z 'x (copy-seq '(a x b x c x d x e x f)) :count 4) '(a z b z c z d z e x f)))
+ (test-t (equal (nsubstitute 'z 'x (copy-seq '(a x b x c x d x e x f)) :count 5) '(a z b z c z d z e z f)))
+ (test-t (equal (nsubstitute 'z 'x (copy-seq '(a x b x c x d x e x f)) :count 6) '(a z b z c z d z e z f)))
+ (test-t (equal (nsubstitute 'z 'x (copy-seq '(a x b x c x d x e x f)) :count 7) '(a z b z c z d z e z f)))
+ (test-t (equal (nsubstitute 'z 'x (copy-seq '(a x b x c x d x e x f)) :count nil :from-end t) '(a z b z c z d z e z f)))
+ (test-t (equal (nsubstitute 'z 'x (copy-seq '(a x b x c x d x e x f)) :count 0 :from-end t) '(a x b x c x d x e x f)))
+ (test-t (equal (nsubstitute 'z 'x (copy-seq '(a x b x c x d x e x f)) :count -100 :from-end t) '(a x b x c x d x e x f)))
+ (test-t (equal (nsubstitute 'z 'x (copy-seq '(a x b x c x d x e x f)) :count 1 :from-end t) '(a x b x c x d x e z f)))
+ (test-t (equal (nsubstitute 'z 'x (copy-seq '(a x b x c x d x e x f)) :count 2 :from-end t) '(a x b x c x d z e z f)))
+ (test-t (equal (nsubstitute 'z 'x (copy-seq '(a x b x c x d x e x f)) :count 3 :from-end t) '(a x b x c z d z e z f)))
+ (test-t (equal (nsubstitute 'z 'x (copy-seq '(a x b x c x d x e x f)) :count 4 :from-end t) '(a x b z c z d z e z f)))
+ (test-t (equal (nsubstitute 'z 'x (copy-seq '(a x b x c x d x e x f)) :count 5 :from-end t) '(a z b z c z d z e z f)))
+ (test-t (equal (nsubstitute 'z 'x (copy-seq '(a x b x c x d x e x f)) :count 6 :from-end t) '(a z b z c z d z e z f)))
+ (test-t (equal (nsubstitute 'z 'x (copy-seq '(a x b x c x d x e x f)) :count 7 :from-end t) '(a z b z c z d z e z f)))
+ (test-t (equal (nsubstitute 'z 'x (copy-seq '(a x b x c x d x e x f)) :start 2 :count 1) '(a x b z c x d x e x f)))
+ (test-t (equal (nsubstitute 'z 'x (copy-seq '(a x b x c x d x e x f)) :start 2 :end nil :count 1) '(a x b z c x d x e x f)))
+ (test-t (equal (nsubstitute 'z 'x (copy-seq '(a x b x c x d x e x f)) :start 2 :end 6 :count 100) '(a x b z c z d x e x f)))
+ (test-t (equal (nsubstitute 'z 'x (copy-seq '(a x b x c x d x e x f)) :start 2 :end 11 :count 100) '(a x b z c z d z e z f)))
+ (test-t (equal (nsubstitute 'z 'x (copy-seq '(a x b x c x d x e x f)) :start 2 :end 8 :count 10) '(a x b z c z d z e x f)))
+ (test-t (equal (nsubstitute 'z 'x (copy-seq '(a x b x c x d x e x f)) :start 2 :end 8 :count 2 :from-end t) '(a x b x c z d z e x f)))
+ (test-t (equal (nsubstitute #\z #\c (copy-seq '(#\a #\b #\c #\d #\e #\f)) :test char<) '(#\a #\b #\c #\z #\z #\z)))
+ (test-t (equal (nsubstitute "peace" "war" (copy-seq '("love" "hate" "war" "peace")) :test equal) '("love" "hate" "peace" "peace")))
+ (test-t (equal (nsubstitute "peace" "war" (copy-seq '("war" "War" "WAr" "WAR")) :test string-equal) '("peace" "peace" "peace" "peace")))
+ (test-t (equal (nsubstitute "peace" "WAR" (copy-seq '("war" "War" "WAr" "WAR")) :test string=) '("war" "War" "WAr" "peace")))
+ (test-t (equal (nsubstitute "peace" "WAR" (copy-seq '("war" "War" "WAr" "WAR")) :test string= :key string-upcase) '("peace" "peace" "peace" "peace")))
+ (test-t (equal (nsubstitute "peace" "WAR" (copy-seq '("war" "War" "WAr" "WAR")) :start 1 :end 2 :test string= :key string-upcase) '("war" "peace" "WAr" "WAR")))
+ (test-t (equalp (nsubstitute 'a 'x (copy-seq #(x y z))) #(a y z)))
+ (test-t (equalp (nsubstitute 'b 'y (copy-seq #(x y z))) #(x b z)))
+ (test-t (equalp (nsubstitute 'c 'z (copy-seq #(x y z))) #(x y c)))
+ (test-t (equalp (nsubstitute 'a 'p (copy-seq #(x y z))) #(x y z)))
+ (test-t (equalp (nsubstitute 'a 'x (copy-seq #())) #()))
+ (test-t (equalp (nsubstitute #\x #\b (copy-seq #(#\a #\b #\c #\d #\e)) :test char<) #(#\a #\b #\x #\x #\x)))
+ (test-t (equalp (nsubstitute '(a) 'x (copy-seq #((x) (y) (z))) :key car) #((a) (y) (z))))
+ (test-t (equalp (nsubstitute 'c 'b (copy-seq #(a b a b a b a b))) #(a c a c a c a c)))
+ (test-t (equalp (nsubstitute 'a 'b (copy-seq #(b b b))) #(a a a)))
+ (test-t (equalp (nsubstitute 'z 'x (copy-seq #(a x b x c x d x e x f))) #(a z b z c z d z e z f)))
+ (test-t (equalp (nsubstitute 'z 'x (copy-seq #(a x b x c x d x e x f)) :count nil) #(a z b z c z d z e z f)))
+ (test-t (equalp (nsubstitute 'z 'x (copy-seq #(a x b x c x d x e x f)) :count 0) #(a x b x c x d x e x f)))
+ (test-t (equalp (nsubstitute 'z 'x (copy-seq #(a x b x c x d x e x f)) :count -100) #(a x b x c x d x e x f)))
+ (test-t (equalp (nsubstitute 'z 'x (copy-seq #(a x b x c x d x e x f)) :count 1) #(a z b x c x d x e x f)))
+ (test-t (equalp (nsubstitute 'z 'x (copy-seq #(a x b x c x d x e x f)) :count 2) #(a z b z c x d x e x f)))
+ (test-t (equalp (nsubstitute 'z 'x (copy-seq #(a x b x c x d x e x f)) :count 3) #(a z b z c z d x e x f)))
+ (test-t (equalp (nsubstitute 'z 'x (copy-seq #(a x b x c x d x e x f)) :count 4) #(a z b z c z d z e x f)))
+ (test-t (equalp (nsubstitute 'z 'x (copy-seq #(a x b x c x d x e x f)) :count 5) #(a z b z c z d z e z f)))
+ (test-t (equalp (nsubstitute 'z 'x (copy-seq #(a x b x c x d x e x f)) :count 6) #(a z b z c z d z e z f)))
+ (test-t (equalp (nsubstitute 'z 'x (copy-seq #(a x b x c x d x e x f)) :count 7) #(a z b z c z d z e z f)))
+ (test-t (equalp (nsubstitute 'z 'x (copy-seq #(a x b x c x d x e x f)) :count nil :from-end t) #(a z b z c z d z e z f)))
+ (test-t (equalp (nsubstitute 'z 'x (copy-seq #(a x b x c x d x e x f)) :count 0 :from-end t) #(a x b x c x d x e x f)))
+ (test-t (equalp (nsubstitute 'z 'x (copy-seq #(a x b x c x d x e x f)) :count -100 :from-end t) #(a x b x c x d x e x f)))
+ (test-t (equalp (nsubstitute 'z 'x (copy-seq #(a x b x c x d x e x f)) :count 1 :from-end t) #(a x b x c x d x e z f)))
+ (test-t (equalp (nsubstitute 'z 'x (copy-seq #(a x b x c x d x e x f)) :count 2 :from-end t) #(a x b x c x d z e z f)))
+ (test-t (equalp (nsubstitute 'z 'x (copy-seq #(a x b x c x d x e x f)) :count 3 :from-end t) #(a x b x c z d z e z f)))
+ (test-t (equalp (nsubstitute 'z 'x (copy-seq #(a x b x c x d x e x f)) :count 4 :from-end t) #(a x b z c z d z e z f)))
+ (test-t (equalp (nsubstitute 'z 'x (copy-seq #(a x b x c x d x e x f)) :count 5 :from-end t) #(a z b z c z d z e z f)))
+ (test-t (equalp (nsubstitute 'z 'x (copy-seq #(a x b x c x d x e x f)) :count 6 :from-end t) #(a z b z c z d z e z f)))
+ (test-t (equalp (nsubstitute 'z 'x (copy-seq #(a x b x c x d x e x f)) :count 7 :from-end t) #(a z b z c z d z e z f)))
+ (test-t (equalp (nsubstitute 'z 'x (copy-seq #(a x b x c x d x e x f)) :start 2 :count 1) #(a x b z c x d x e x f)))
+ (test-t (equalp (nsubstitute 'z 'x (copy-seq #(a x b x c x d x e x f)) :start 2 :end nil :count 1) #(a x b z c x d x e x f)))
+ (test-t (equalp (nsubstitute 'z 'x (copy-seq #(a x b x c x d x e x f)) :start 2 :end 6 :count 100) #(a x b z c z d x e x f)))
+ (test-t (equalp (nsubstitute 'z 'x (copy-seq #(a x b x c x d x e x f)) :start 2 :end 11 :count 100) #(a x b z c z d z e z f)))
+ (test-t (equalp (nsubstitute 'z 'x (copy-seq #(a x b x c x d x e x f)) :start 2 :end 8 :count 10) #(a x b z c z d z e x f)))
+ (test-t (equalp (nsubstitute 'z 'x (copy-seq #(a x b x c x d x e x f)) :start 2 :end 8 :count 2 :from-end t) #(a x b x c z d z e x f)))
+ (test-t (equalp (nsubstitute #\z #\c (copy-seq #(#\a #\b #\c #\d #\e #\f)) :test char<) #(#\a #\b #\c #\z #\z #\z)))
+ (test-t (equalp (nsubstitute "peace" "war" (copy-seq #("love" "hate" "war" "peace")) :test equal) #("love" "hate" "peace" "peace")))
+ (test-t (equalp (nsubstitute "peace" "war" (copy-seq #("war" "War" "WAr" "WAR")) :test string-equal) #("peace" "peace" "peace" "peace")))
+ (test-t (equalp (nsubstitute "peace" "WAR" (copy-seq #("war" "War" "WAr" "WAR")) :test string=) #("war" "War" "WAr" "peace")))
+ (test-t (equalp (nsubstitute "peace" "WAR" (copy-seq #("war" "War" "WAr" "WAR")) :test string= :key string-upcase) #("peace" "peace" "peace" "peace")))
+ (test-t (equalp (nsubstitute "peace" "WAR" (copy-seq #("war" "War" "WAr" "WAR")) :start 1 :end 2 :test string= :key string-upcase) #("war" "peace" "WAr" "WAR")))
+ (test-t (equalp (nsubstitute "peace" "WAR" (copy-seq #("war" "War" "WAr" "WAR")) :start 1 :end nil :test string= :key string-upcase) #("war" "peace" "peace" "peace")))
+ (test-t (string= (nsubstitute #\A #\a (copy-seq "abcabc")) "AbcAbc"))
+ (test-t (string= (nsubstitute #\A #\a (copy-seq "")) ""))
+ (test-t (string= (nsubstitute #\A #\a (copy-seq "xyz")) "xyz"))
+ (test-t (string= (nsubstitute #\A #\a (copy-seq "aaaaaaaaaa") :start 5 :end nil) "aaaaaAAAAA"))
+ (test-t (string= (nsubstitute #\x #\5 (copy-seq "0123456789") :test char<) "012345xxxx"))
+ (test-t (string= (nsubstitute #\x #\5 (copy-seq "0123456789") :test char>) "xxxxx56789"))
+ (test-t (string= (nsubstitute #\x #\D (copy-seq "abcdefg") :key char-upcase :test char>) "xxxdefg"))
+ (test-t (string= (nsubstitute #\x #\D (copy-seq "abcdefg") :start 1 :end 2 :key char-upcase :test char>) "axcdefg"))
+ (test-t (string= (nsubstitute #\A #\a (copy-seq "aaaaaaaaaa") :count 2) "AAaaaaaaaa"))
+ (test-t (string= (nsubstitute #\A #\a (copy-seq "aaaaaaaaaa") :count -1) "aaaaaaaaaa"))
+ (test-t (string= (nsubstitute #\A #\a (copy-seq "aaaaaaaaaa") :count 0) "aaaaaaaaaa"))
+ (test-t (string= (nsubstitute #\A #\a (copy-seq "aaaaaaaaaa") :count nil) "AAAAAAAAAA"))
+ (test-t (string= (nsubstitute #\A #\a (copy-seq "aaaaaaaaaa") :count 100) "AAAAAAAAAA"))
+ (test-t (string= (nsubstitute #\A #\a (copy-seq "aaaaaaaaaa") :count 9) "AAAAAAAAAa"))
+ (test-t (string= (nsubstitute #\A #\a (copy-seq "aaaaaaaaaa") :count 9 :from-end t) "aAAAAAAAAA"))
+ (test-t (string= (nsubstitute #\A #\a (copy-seq "aaaaaaaaaa") :start 2 :end 8 :count 3) "aaAAAaaaaa"))
+ (test-t (string= (nsubstitute #\A #\a (copy-seq "aaaaaaaaaa") :start 2 :end 8 :from-end t :count 3) "aaaaaAAAaa"))
+ (test-t (string= (nsubstitute #\x #\A (copy-seq "aaaaaaaaaa") :start 2 :end 8 :from-end t :count 3) "aaaaaaaaaa"))
+ (test-t (string= (nsubstitute #\X #\A (copy-seq "aaaaaaaaaa") :start 2 :end 8 :from-end t :key char-upcase :count 3) "aaaaaXXXaa"))
+ (test-t (string= (nsubstitute #\X #\D (copy-seq "abcdefghij") :start 2 :end 8 :from-end t :key char-upcase :test char< :count 3) "abcdeXXXij"))
+ (test-t (equal (nsubstitute-if 'a (lambda (arg) (eq arg 'x)) (copy-seq '(x y z))) '(a y z)))
+ (test-t (equal (nsubstitute-if 'b (lambda (arg) (eq arg 'y)) (copy-seq '(x y z))) '(x b z)))
+ (test-t (equal (nsubstitute-if 'c (lambda (arg) (eq arg 'z)) (copy-seq '(x y z))) '(x y c)))
+ (test-t (equal (nsubstitute-if 'a (lambda (arg) (eq arg 'p)) (copy-seq '(x y z))) '(x y z)))
+ (test-t (equal (nsubstitute-if 'a (lambda (arg) (eq arg 'x)) (copy-seq '())) '()))
+ (test-t (equal (nsubstitute-if #\x (lambda (arg) (char< #\b arg)) (copy-seq '(#\a #\b #\c #\d #\e))) '(#\a #\b #\x #\x #\x)))
+ (test-t (equal (nsubstitute-if '(a) (lambda (arg) (eq arg 'x)) (copy-seq '((x) (y) (z))) :key car) '((a) (y) (z))))
+ (test-t (equal (nsubstitute-if 'c (lambda (arg) (eq arg 'b)) (copy-seq '(a b a b a b a b))) '(a c a c a c a c)))
+ (test-t (equal (nsubstitute-if 'a (lambda (arg) (eq arg 'b)) (copy-seq '(b b b))) '(a a a)))
+ (test-t (equal (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq '(a x b x c x d x e x f))) '(a z b z c z d z e z f)))
+ (test-t (equal (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq '(a x b x c x d x e x f)) :count nil) '(a z b z c z d z e z f)))
+ (test-t (equal (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq '(a x b x c x d x e x f)) :count 0) '(a x b x c x d x e x f)))
+ (test-t (equal (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq '(a x b x c x d x e x f)) :count -100) '(a x b x c x d x e x f)))
+ (test-t (equal (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq '(a x b x c x d x e x f)) :count 1) '(a z b x c x d x e x f)))
+ (test-t (equal (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq '(a x b x c x d x e x f)) :count 2) '(a z b z c x d x e x f)))
+ (test-t (equal (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq '(a x b x c x d x e x f)) :count 3) '(a z b z c z d x e x f)))
+ (test-t (equal (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq '(a x b x c x d x e x f)) :count 4) '(a z b z c z d z e x f)))
+ (test-t (equal (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq '(a x b x c x d x e x f)) :count 5) '(a z b z c z d z e z f)))
+ (test-t (equal (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq '(a x b x c x d x e x f)) :count 6) '(a z b z c z d z e z f)))
+ (test-t (equal (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq '(a x b x c x d x e x f)) :count 7) '(a z b z c z d z e z f)))
+ (test-t (equal (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq '(a x b x c x d x e x f)) :count nil :from-end t) '(a z b z c z d z e z f)))
+ (test-t (equal (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq '(a x b x c x d x e x f)) :count 0 :from-end t) '(a x b x c x d x e x f)))
+ (test-t (equal (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq '(a x b x c x d x e x f)) :count -100 :from-end t) '(a x b x c x d x e x f)))
+ (test-t (equal (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq '(a x b x c x d x e x f)) :count 1 :from-end t) '(a x b x c x d x e z f)))
+ (test-t (equal (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq '(a x b x c x d x e x f)) :count 2 :from-end t) '(a x b x c x d z e z f)))
+ (test-t (equal (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq '(a x b x c x d x e x f)) :count 3 :from-end t) '(a x b x c z d z e z f)))
+ (test-t (equal (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq '(a x b x c x d x e x f)) :count 4 :from-end t) '(a x b z c z d z e z f)))
+ (test-t (equal (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq '(a x b x c x d x e x f)) :count 5 :from-end t) '(a z b z c z d z e z f)))
+ (test-t (equal (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq '(a x b x c x d x e x f)) :count 6 :from-end t) '(a z b z c z d z e z f)))
+ (test-t (equal (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq '(a x b x c x d x e x f)) :count 7 :from-end t) '(a z b z c z d z e z f)))
+ (test-t (equal (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq '(a x b x c x d x e x f)) :start 2 :count 1) '(a x b z c x d x e x f)))
+ (test-t (equal (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq '(a x b x c x d x e x f)) :start 2 :end nil :count 1) '(a x b z c x d x e x f)))
+ (test-t (equal (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq '(a x b x c x d x e x f)) :start 2 :end 6 :count 100) '(a x b z c z d x e x f)))
+ (test-t (equal (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq '(a x b x c x d x e x f)) :start 2 :end 11 :count 100) '(a x b z c z d z e z f)))
+ (test-t (equal (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq '(a x b x c x d x e x f)) :start 2 :end 8 :count 10) '(a x b z c z d z e x f)))
+ (test-t (equal (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq '(a x b x c x d x e x f)) :start 2 :end 8 :count 2 :from-end t) '(a x b x c z d z e x f)))
+ (test-t (equal (nsubstitute-if #\z (lambda (arg) (char< #\c arg)) (copy-seq '(#\a #\b #\c #\d #\e #\f))) '(#\a #\b #\c #\z #\z #\z)))
+ (test-t (equal (nsubstitute-if "peace" (lambda (arg) (equal "war" arg)) (copy-seq '("love" "hate" "war" "peace"))) '("love" "hate" "peace" "peace")))
+ (test-t (equal (nsubstitute-if "peace" (lambda (arg) (string-equal "war" arg)) (copy-seq '("war" "War" "WAr" "WAR"))) '("peace" "peace" "peace" "peace")))
+ (test-t (equal (nsubstitute-if "peace" (lambda (arg) (string= "WAR" arg)) (copy-seq '("war" "War" "WAr" "WAR")) :key string-upcase) '("peace" "peace" "peace" "peace")))
+ (test-t (equal (nsubstitute-if "peace" (lambda (arg) (string= "WAR" arg)) (copy-seq '("war" "War" "WAr" "WAR")) :start 1 :end 2 :key string-upcase) '("war" "peace" "WAr" "WAR")))
+ (test-t (equal (nsubstitute-if "peace" (lambda (arg) (string= "WAR" arg)) (copy-seq '("war" "War" "WAr" "WAR")) :start 1 :end nil :key string-upcase) '("war" "peace" "peace" "peace")))
+ (test-t (equal (nsubstitute-if "peace" (lambda (arg) (string= "war" arg)) (copy-seq '("war" "War" "WAr" "WAR")) :key string-upcase) '("war" "War" "WAr" "WAR")))
+ (test-t (equal (nsubstitute-if "peace" (lambda (arg) (string= "WAR" arg)) (copy-seq '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR")) :start 1 :end 7 :count 1 :key string-upcase) '("war" "peace" "WAr" "WAR" "war" "War" "WAr" "WAR")))
+ (test-t (equal (nsubstitute-if "peace" (lambda (arg) (string= "WAR" arg)) (copy-seq '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR")) :start 1 :end 7 :count 2 :key string-upcase) '("war" "peace" "peace" "WAR" "war" "War" "WAr" "WAR")))
+ (test-t (equal (nsubstitute-if "peace" (lambda (arg) (string= "WAR" arg)) (copy-seq '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR")) :start 1 :end 7 :count 2 :from-end t :key string-upcase) '("war" "War" "WAr" "WAR" "war" "peace" "peace" "WAR")))
+ (test-t (equal (nsubstitute-if "peace" (lambda (arg) (string= "WAR" arg)) (copy-seq '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR")) :start 1 :end 7 :count 0 :from-end t :key string-upcase) '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR")))
+ (test-t (equal (nsubstitute-if "peace" (lambda (arg) (string= "WAR" arg)) (copy-seq '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR")) :start 1 :end 7 :count -2 :from-end t :key string-upcase) '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR")))
+ (test-t (equal (nsubstitute-if "peace" (lambda (arg) (string= "WAR" arg)) (copy-seq '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR")) :start 1 :end 7 :count nil :from-end t :key string-upcase) '("war" "peace" "peace" "peace" "peace" "peace" "peace" "WAR")))
+ (test-t (equal (nsubstitute-if "peace" (lambda (arg) (string= "WAR" arg)) (copy-seq '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR")) :start 1 :end 7 :count 6 :from-end t :key string-upcase) '("war" "peace" "peace" "peace" "peace" "peace" "peace" "WAR")))
+ (test-t (equal (nsubstitute-if "peace" (lambda (arg) (string= "WAR" arg)) (copy-seq '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR")) :start 1 :end 7 :count 7 :from-end t :key string-upcase) '("war" "peace" "peace" "peace" "peace" "peace" "peace" "WAR")))
+ (test-t (equal (nsubstitute-if "peace" (lambda (arg) (string= "WAR" arg)) (copy-seq '("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR")) :start 1 :end 7 :count 100 :from-end t :key string-upcase) '("war" "peace" "peace" "peace" "peace" "peace" "peace" "WAR")))
+ (test-t (equalp (nsubstitute-if 'a (lambda (arg) (eq arg 'x)) (copy-seq #(x y z))) #(a y z)))
+ (test-t (equalp (nsubstitute-if 'b (lambda (arg) (eq arg 'y)) (copy-seq #(x y z))) #(x b z)))
+ (test-t (equalp (nsubstitute-if 'c (lambda (arg) (eq arg 'z)) (copy-seq #(x y z))) #(x y c)))
+ (test-t (equalp (nsubstitute-if 'a (lambda (arg) (eq arg 'p)) (copy-seq #(x y z))) #(x y z)))
+ (test-t (equalp (nsubstitute-if 'a (lambda (arg) (eq arg 'x)) (copy-seq #())) #()))
+ (test-t (equalp (nsubstitute-if #\x (lambda (arg) (char< #\b arg)) (copy-seq #(#\a #\b #\c #\d #\e))) #(#\a #\b #\x #\x #\x)))
+ (test-t (equalp (nsubstitute-if '(a) (lambda (arg) (eq arg 'x)) (copy-seq #((x) (y) (z))) :key car) #((a) (y) (z))))
+ (test-t (equalp (nsubstitute-if 'c (lambda (arg) (eq arg 'b)) (copy-seq #(a b a b a b a b))) #(a c a c a c a c)))
+ (test-t (equalp (nsubstitute-if 'a (lambda (arg) (eq arg 'b)) (copy-seq #(b b b))) #(a a a)))
+ (test-t (equalp (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq #(a x b x c x d x e x f))) #(a z b z c z d z e z f)))
+ (test-t (equalp (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq #(a x b x c x d x e x f)) :count nil) #(a z b z c z d z e z f)))
+ (test-t (equalp (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq #(a x b x c x d x e x f)) :count 0) #(a x b x c x d x e x f)))
+ (test-t (equalp (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq #(a x b x c x d x e x f)) :count -100) #(a x b x c x d x e x f)))
+ (test-t (equalp (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq #(a x b x c x d x e x f)) :count 1) #(a z b x c x d x e x f)))
+ (test-t (equalp (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq #(a x b x c x d x e x f)) :count 2) #(a z b z c x d x e x f)))
+ (test-t (equalp (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq #(a x b x c x d x e x f)) :count 3) #(a z b z c z d x e x f)))
+ (test-t (equalp (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq #(a x b x c x d x e x f)) :count 4) #(a z b z c z d z e x f)))
+ (test-t (equalp (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq #(a x b x c x d x e x f)) :count 5) #(a z b z c z d z e z f)))
+ (test-t (equalp (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq #(a x b x c x d x e x f)) :count 6) #(a z b z c z d z e z f)))
+ (test-t (equalp (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq #(a x b x c x d x e x f)) :count 7) #(a z b z c z d z e z f)))
+ (test-t (equalp (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq #(a x b x c x d x e x f)) :count nil :from-end t) #(a z b z c z d z e z f)))
+ (test-t (equalp (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq #(a x b x c x d x e x f)) :count 0 :from-end t) #(a x b x c x d x e x f)))
+ (test-t (equalp (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq #(a x b x c x d x e x f)) :count -100 :from-end t) #(a x b x c x d x e x f)))
+ (test-t (equalp (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq #(a x b x c x d x e x f)) :count 1 :from-end t) #(a x b x c x d x e z f)))
+ (test-t (equalp (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq #(a x b x c x d x e x f)) :count 2 :from-end t) #(a x b x c x d z e z f)))
+ (test-t (equalp (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq #(a x b x c x d x e x f)) :count 3 :from-end t) #(a x b x c z d z e z f)))
+ (test-t (equalp (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq #(a x b x c x d x e x f)) :count 4 :from-end t) #(a x b z c z d z e z f)))
+ (test-t (equalp (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq #(a x b x c x d x e x f)) :count 5 :from-end t) #(a z b z c z d z e z f)))
+ (test-t (equalp (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq #(a x b x c x d x e x f)) :count 6 :from-end t) #(a z b z c z d z e z f)))
+ (test-t (equalp (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq #(a x b x c x d x e x f)) :count 7 :from-end t) #(a z b z c z d z e z f)))
+ (test-t (equalp (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq #(a x b x c x d x e x f)) :start 2 :count 1) #(a x b z c x d x e x f)))
+ (test-t (equalp (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq #(a x b x c x d x e x f)) :start 2 :end nil :count 1) #(a x b z c x d x e x f)))
+ (test-t (equalp (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq #(a x b x c x d x e x f)) :start 2 :end 6 :count 100) #(a x b z c z d x e x f)))
+ (test-t (equalp (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq #(a x b x c x d x e x f)) :start 2 :end 11 :count 100) #(a x b z c z d z e z f)))
+ (test-t (equalp (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq #(a x b x c x d x e x f)) :start 2 :end 8 :count 10) #(a x b z c z d z e x f)))
+ (test-t (equalp (nsubstitute-if 'z (lambda (arg) (eq arg 'x)) (copy-seq #(a x b x c x d x e x f)) :start 2 :end 8 :count 2 :from-end t) #(a x b x c z d z e x f)))
+ (test-t (equalp (nsubstitute-if #\z (lambda (arg) (char< #\c arg)) (copy-seq #(#\a #\b #\c #\d #\e #\f))) #(#\a #\b #\c #\z #\z #\z)))
+ (test-t (equalp (nsubstitute-if "peace" (lambda (arg) (equal "war" arg)) (copy-seq #("love" "hate" "war" "peace"))) #("love" "hate" "peace" "peace")))
+ (test-t (equalp (nsubstitute-if "peace" (lambda (arg) (string-equal "war" arg)) (copy-seq #("war" "War" "WAr" "WAR"))) #("peace" "peace" "peace" "peace")))
+ (test-t (equalp (nsubstitute-if "peace" (lambda (arg) (string= "WAR" arg)) (copy-seq #("war" "War" "WAr" "WAR")) :key string-upcase) #("peace" "peace" "peace" "peace")))
+ (test-t (equalp (nsubstitute-if "peace" (lambda (arg) (string= "WAR" arg)) (copy-seq #("war" "War" "WAr" "WAR")) :start 1 :end 2 :key string-upcase) #("war" "peace" "WAr" "WAR")))
+ (test-t (equalp (nsubstitute-if "peace" (lambda (arg) (string= "WAR" arg)) (copy-seq #("war" "War" "WAr" "WAR")) :start 1 :end nil :key string-upcase) #("war" "peace" "peace" "peace")))
+ (test-t (equalp (nsubstitute-if "peace" (lambda (arg) (string= "war" arg)) (copy-seq #("war" "War" "WAr" "WAR")) :key string-upcase) #("war" "War" "WAr" "WAR")))
+ (test-t (equalp (nsubstitute-if "peace" (lambda (arg) (string= "WAR" arg)) (copy-seq #("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR")) :start 1 :end 7 :count 1 :key string-upcase) #("war" "peace" "WAr" "WAR" "war" "War" "WAr" "WAR")))
+ (test-t (equalp (nsubstitute-if "peace" (lambda (arg) (string= "WAR" arg)) (copy-seq #("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR")) :start 1 :end 7 :count 2 :key string-upcase) #("war" "peace" "peace" "WAR" "war" "War" "WAr" "WAR")))
+ (test-t (equalp (nsubstitute-if "peace" (lambda (arg) (string= "WAR" arg)) (copy-seq #("war" "War" "WAr" "WAR" "war" "War" "WAr" "WAR")) :start 1 :end 7 :count 2 :from-end t :key string-upcase) #("war" "War" "WAr" "WAR" "war" "peace" "peace" "WAR")))
+ (test-t (string= (nsubstitute-if #\A (lambda (arg) (eql #\a arg)) (copy-seq "abcabc")) "AbcAbc"))
+ (test-t (string= (nsubstitute-if #\A (lambda (arg) (eql #\a arg)) (copy-seq "")) ""))
+ (test-t (string= (nsubstitute-if #\A (lambda (arg) (eql #\a arg)) (copy-seq "xyz")) "xyz"))
+ (test-t (string= (nsubstitute-if #\A (lambda (arg) (eql #\a arg)) (copy-seq "aaaaaaaaaa") :start 5 :end nil) "aaaaaAAAAA"))
+ (test-t (string= (nsubstitute-if #\x (lambda (arg) (char< #\5 arg)) (copy-seq "0123456789")) "012345xxxx"))
+ (test-t (string= (nsubstitute-if #\x (lambda (arg) (char> #\5 arg)) (copy-seq "0123456789")) "xxxxx56789"))
+ (test-t (string= (nsubstitute-if #\x (lambda (arg) (char> #\D arg)) (copy-seq "abcdefg") :key char-upcase) "xxxdefg"))
+ (test-t (string= (nsubstitute-if #\x (lambda (arg) (char> #\D arg)) (copy-seq "abcdefg") :start 1 :end 2 :key char-upcase) "axcdefg"))
+ (test-t (string= (nsubstitute-if #\A (lambda (arg) (eql #\a arg)) (copy-seq "aaaaaaaaaa") :count 2) "AAaaaaaaaa"))
+ (test-t (string= (nsubstitute-if #\A (lambda (arg) (eql #\a arg)) (copy-seq "aaaaaaaaaa") :count -1) "aaaaaaaaaa"))
+ (test-t (string= (nsubstitute-if #\A (lambda (arg) (eql #\a arg)) (copy-seq "aaaaaaaaaa") :count 0) "aaaaaaaaaa"))
+ (test-t (string= (nsubstitute-if #\A (lambda (arg) (eql #\a arg)) (copy-seq "aaaaaaaaaa") :count nil) "AAAAAAAAAA"))
+ (test-t (string= (nsubstitute-if #\A (lambda (arg) (eql #\a arg)) (copy-seq "aaaaaaaaaa") :count 100) "AAAAAAAAAA"))
+ (test-t (string= (nsubstitute-if #\A (lambda (arg) (eql #\a arg)) (copy-seq "aaaaaaaaaa") :count 9) "AAAAAAAAAa"))
+ (test-t (string= (nsubstitute-if #\A (lambda (arg) (eql #\a arg)) (copy-seq "aaaaaaaaaa") :count 9 :from-end t) "aAAAAAAAAA"))
+ (test-t (equal (nsubstitute-if-not 'a (lambda (arg) (not (eq arg 'x))) (copy-seq '(x y z))) '(a y z)))
+ (test-t (equal (nsubstitute-if-not 'b (lambda (arg) (not (eq arg 'y))) (copy-seq '(x y z))) '(x b z)))
+ (test-t (equal (nsubstitute-if-not 'c (lambda (arg) (not (eq arg 'z))) (copy-seq '(x y z))) '(x y c)))
+ (test-t (equal (nsubstitute-if-not 'a (lambda (arg) (not (eq arg 'p))) (copy-seq '(x y z))) '(x y z)))
+ (test-t (equal (nsubstitute-if-not 'a (lambda (arg) (not (eq arg 'x))) (copy-seq '())) '()))
+ (test-t (equal (nsubstitute-if-not #\x (lambda (arg) (not (char< #\b arg))) (copy-seq '(#\a #\b #\c #\d #\e))) '(#\a #\b #\x #\x #\x)))
+ (test-t (equal (nsubstitute-if-not '(a) (lambda (arg) (not (eq arg 'x))) (copy-seq '((x) (y) (z))) :key car) '((a) (y) (z))))
+ (test-t (equal (nsubstitute-if-not 'c (lambda (arg) (not (eq arg 'b))) (copy-seq '(a b a b a b a b))) '(a c a c a c a c)))
+ (test-t (equal (nsubstitute-if-not 'a (lambda (arg) (not (eq arg 'b))) (copy-seq '(b b b))) '(a a a)))
+ (test-t (equal (nsubstitute-if-not 'z (lambda (arg) (not (eq arg 'x))) (copy-seq '(a x b x c x d x e x f))) '(a z b z c z d z e z f)))
+ (test-t (equal (nsubstitute-if-not 'z (lambda (arg) (not (eq arg 'x))) (copy-seq '(a x b x c x d x e x f)) :count nil) '(a z b z c z d z e z f)))
+ (test-t (equal (nsubstitute-if-not 'z (lambda (arg) (not (eq arg 'x))) (copy-seq '(a x b x c x d x e x f)) :count 0) '(a x b x c x d x e x f)))
+ (test-t (equal (nsubstitute-if-not 'z (lambda (arg) (not (eq arg 'x))) (copy-seq '(a x b x c x d x e x f)) :count -100) '(a x b x c x d x e x f)))
+ (test-t (equal (nsubstitute-if-not 'z (lambda (arg) (not (eq arg 'x))) (copy-seq '(a x b x c x d x e x f)) :count 1) '(a z b x c x d x e x f)))
+ (test-t (equal (nsubstitute-if-not 'z (lambda (arg) (not (eq arg 'x))) (copy-seq '(a x b x c x d x e x f)) :count 2) '(a z b z c x d x e x f)))
+ (test-t (equal (nsubstitute-if-not 'z (lambda (arg) (not (eq arg 'x))) (copy-seq '(a x b x c x d x e x f)) :count 3) '(a z b z c z d x e x f)))
+ (test-t (equal (nsubstitute-if-not 'z (lambda (arg) (not (eq arg 'x))) (copy-seq '(a x b x c x d x e x f)) :count 4) '(a z b z c z d z e x f)))
+ (test-t (equal (nsubstitute-if-not 'z (lambda (arg) (not (eq arg 'x))) (copy-seq '(a x b x c x d x e x f)) :count 5) '(a z b z c z d z e z f)))
+ (test-t (equal (nsubstitute-if-not 'z (lambda (arg) (not (eq arg 'x))) (copy-seq '(a x b x c x d x e x f)) :count 6) '(a z b z c z d z e z f)))
+ (test-t (equal (nsubstitute-if-not 'z (lambda (arg) (not (eq arg 'x))) (copy-seq '(a x b x c x d x e x f)) :count 7) '(a z b z c z d z e z f)))
+
+ (test-t (string= (concatenate 'string "all" " " "together" " " "now") "all together now"))
+ (test-t (equal (concatenate 'list '() '(a b c) '(x y z)) '(a b c x y z)))
+ (test-t (equal (concatenate 'list '(a) #(b) '(c) #(x y) '(z)) '(a b c x y z)))
+ (test-t (null (concatenate 'list)))
+ (test-t (let* ((list0 '(a b c)) (list (concatenate 'list list0))) (and (not (eq list0 list)) (equal list list0) (equal list '(a b c)))))
+ (test-t (equalp (concatenate 'vector '() '(a b c) '(x y z)) #(a b c x y z)))
+ (test-t (equalp (concatenate 'vector '(a) #(b) '(c) #(x y) '(z)) #(a b c x y z)))
+ (test-t (equalp (concatenate 'vector) #()))
+ (test-t (let* ((vector0 #(a b c)) (vector (concatenate 'vector vector0))) (and (not (eq vector0 vector)) (equalp vector vector0) (equalp vector #(a b c)))))
+ (test-t (string= (concatenate 'string "abc" "def" "ghi" "jkl" "mno" "pqr") "abcdefghijklmnopqr"))
+ (test-t (string= (concatenate 'string "" "abc" "" "def" "" "ghi" "" "" "jkl" "" "mno" "" "pqr" "" "") "abcdefghijklmnopqr"))
+ (test-t (string= (concatenate 'string) ""))
+ (test-t (string= (concatenate 'string "abc" '(#\d #\e #\f #\g) #(#\h #\i #\j #\k #\l)) "abcdefghijkl"))
+ (test-t (let ((test1 (list 1 3 4 6 7)) (test2 (list 2 5 8))) (equal (merge 'list test1 test2 <) '(1 2 3 4 5 6 7 8))))
+ (test-t (let ((test1 (vector '(red . 1) '(blue . 4))) (test2 (vector '(yellow . 2) '(green . 7)))) (equalp (merge 'vector test1 test2 < :key cdr) #((red . 1) (yellow . 2) (blue . 4) (green . 7)))))
+ (test-t (equal (merge 'list (list 1 3 5 7 9) (list 0 2 4 6 8) <) '(0 1 2 3 4 5 6 7 8 9)))
+ (test-t (equal (merge 'list (list 0 1 2) nil <) '(0 1 2)))
+ (test-t (equal (merge 'list nil (list 0 1 2) <) '(0 1 2)))
+ (test-t (equal (merge 'list nil nil <) nil))
+ (test-t (equal (merge 'list (list '(1 1) '(2 1) '(3 1)) (list '(1 2) '(2 2) '(3 2)) <= :key car) '((1 1) (1 2) (2 1) (2 2) (3 1) (3 2))))
+ (test-t (equal (merge 'list (list '(1 1) '(2 1) '(2 1 1) '(3 1)) (list '(1 2) '(2 2) '(3 2)) <= :key car) '((1 1) (1 2) (2 1) (2 1 1) (2 2) (3 1) (3 2))))
+ (test-t (equal (merge 'list (list '(1 1) '(2 1) '(2 1 1) '(3 1)) (list '(1 2) '(2 2) '(3 2) '(3 2 2)) <= :key car) '((1 1) (1 2) (2 1) (2 1 1) (2 2) (3 1) (3 2) (3 2 2))))
+ (test-t (equal (merge 'list (list 3 1 9 5 7) (list 8 6 0 2 4) <) '(3 1 8 6 0 2 4 9 5 7)))
+ (test-t (equal (merge 'list (vector 1 3 5 7 9) (list 0 2 4 6 8) <) '(0 1 2 3 4 5 6 7 8 9)))
+ (test-t (equal (merge 'list (vector 0 1 2) nil <) '(0 1 2)))
+ (test-t (equal (merge 'list #() (list 0 1 2) <) '(0 1 2)))
+ (test-t (equal (merge 'list #() #() <) nil))
+ (test-t (equal (merge 'list (vector '(1 1) '(2 1) '(3 1)) (list '(1 2) '(2 2) '(3 2)) <= :key car) '((1 1) (1 2) (2 1) (2 2) (3 1) (3 2))))
+ (test-t (equal (merge 'list (vector '(1 1) '(2 1) '(2 1 1) '(3 1)) (list '(1 2) '(2 2) '(3 2)) <= :key car) '((1 1) (1 2) (2 1) (2 1 1) (2 2) (3 1) (3 2))))
+ (test-t (equal (merge 'list (vector '(1 1) '(2 1) '(2 1 1) '(3 1)) (list '(1 2) '(2 2) '(3 2) '(3 2 2)) <= :key car) '((1 1) (1 2) (2 1) (2 1 1) (2 2) (3 1) (3 2) (3 2 2))))
+ (test-t (equal (merge 'list (vector 3 1 9 5 7) (list 8 6 0 2 4) <) '(3 1 8 6 0 2 4 9 5 7)))
+ (test-t (equal (merge 'list (list 1 3 5 7 9) (vector 0 2 4 6 8) <) '(0 1 2 3 4 5 6 7 8 9)))
+ (test-t (equal (merge 'list (list 0 1 2) #() <) '(0 1 2)))
+ (test-t (equal (merge 'list nil (vector 0 1 2) <) '(0 1 2)))
+ (test-t (equal (merge 'list nil #() <) nil))
+ (test-t (equal (merge 'list (list '(1 1) '(2 1) '(3 1)) (vector '(1 2) '(2 2) '(3 2)) <= :key car) '((1 1) (1 2) (2 1) (2 2) (3 1) (3 2))))
+ (test-t (equal (merge 'list (list '(1 1) '(2 1) '(2 1 1) '(3 1)) (vector '(1 2) '(2 2) '(3 2)) <= :key car) '((1 1) (1 2) (2 1) (2 1 1) (2 2) (3 1) (3 2))))
+ (test-t (equal (merge 'list (list '(1 1) '(2 1) '(2 1 1) '(3 1)) (vector '(1 2) '(2 2) '(3 2) '(3 2 2)) <= :key car) '((1 1) (1 2) (2 1) (2 1 1) (2 2) (3 1) (3 2) (3 2 2))))
+ (test-t (equal (merge 'list (list 3 1 9 5 7) (vector 8 6 0 2 4) <) '(3 1 8 6 0 2 4 9 5 7)))
+ (test-t (equal (merge 'list (vector 1 3 5 7 9) (vector 0 2 4 6 8) <) '(0 1 2 3 4 5 6 7 8 9)))
+ (test-t (equal (merge 'list (vector 0 1 2) #() <) '(0 1 2)))
+ (test-t (equal (merge 'list #() (vector 0 1 2) <) '(0 1 2)))
+ (test-t (equal (merge 'list #() #() <) nil))
+ (test-t (equal (merge 'list (vector '(1 1) '(2 1) '(3 1)) (vector '(1 2) '(2 2) '(3 2)) <= :key car) '((1 1) (1 2) (2 1) (2 2) (3 1) (3 2))))
+ (test-t (equal (merge 'list (vector '(1 1) '(2 1) '(2 1 1) '(3 1)) (vector '(1 2) '(2 2) '(3 2)) <= :key car) '((1 1) (1 2) (2 1) (2 1 1) (2 2) (3 1) (3 2))))
+ (test-t (equal (merge 'list (vector '(1 1) '(2 1) '(2 1 1) '(3 1)) (vector '(1 2) '(2 2) '(3 2) '(3 2 2)) <= :key car) '((1 1) (1 2) (2 1) (2 1 1) (2 2) (3 1) (3 2) (3 2 2))))
+ (test-t (equal (merge 'list (vector 3 1 9 5 7) (vector 8 6 0 2 4) <) '(3 1 8 6 0 2 4 9 5 7)))
+ (test-t (equalp (merge 'vector (list 1 3 5 7 9) (list 0 2 4 6 8) <) #(0 1 2 3 4 5 6 7 8 9)))
+ (test-t (equalp (merge 'vector (list 1 3 5 7 9) (list 0 2 4 6 8) <) #(0 1 2 3 4 5 6 7 8 9)))
+ (test-t (equalp (merge 'vector (list 0 1 2) nil <) #(0 1 2)))
+ (test-t (equalp (merge 'vector nil (list 0 1 2) <) #(0 1 2)))
+ (test-t (equalp (merge 'vector nil nil <) #()))
+ (test-t (equalp (merge 'vector (list '(1 1) '(2 1) '(3 1)) (list '(1 2) '(2 2) '(3 2)) <= :key car) #((1 1) (1 2) (2 1) (2 2) (3 1) (3 2))))
+ (test-t (equalp (merge 'vector (list '(1 1) '(2 1) '(2 1 1) '(3 1)) (list '(1 2) '(2 2) '(3 2)) <= :key car) #((1 1) (1 2) (2 1) (2 1 1) (2 2) (3 1) (3 2))))
+ (test-t (equalp (merge 'vector (list '(1 1) '(2 1) '(2 1 1) '(3 1)) (list '(1 2) '(2 2) '(3 2) '(3 2 2)) <= :key car) #((1 1) (1 2) (2 1) (2 1 1) (2 2) (3 1) (3 2) (3 2 2))))
+ (test-t (equalp (merge 'vector (list 3 1 9 5 7) (list 8 6 0 2 4) <) #(3 1 8 6 0 2 4 9 5 7)))
+ (test-t (equalp (merge 'vector (vector 1 3 5 7 9) (list 0 2 4 6 8) <) #(0 1 2 3 4 5 6 7 8 9)))
+ (test-t (equalp (merge 'vector (vector 1 3 5 7 9) (list 0 2 4 6 8) <) #(0 1 2 3 4 5 6 7 8 9)))
+ (test-t (equalp (merge 'vector (vector 0 1 2) nil <) #(0 1 2)))
+ (test-t (equalp (merge 'vector #() (list 0 1 2) <) #(0 1 2)))
+ (test-t (equalp (merge 'vector #() #() <) #()))
+ (test-t (equalp (merge 'vector (vector '(1 1) '(2 1) '(3 1)) (list '(1 2) '(2 2) '(3 2)) <= :key car) #((1 1) (1 2) (2 1) (2 2) (3 1) (3 2))))
+ (test-t (equalp (merge 'vector (vector '(1 1) '(2 1) '(2 1 1) '(3 1)) (list '(1 2) '(2 2) '(3 2)) <= :key car) #((1 1) (1 2) (2 1) (2 1 1) (2 2) (3 1) (3 2))))
+ (test-t (equalp (merge 'vector (vector '(1 1) '(2 1) '(2 1 1) '(3 1)) (list '(1 2) '(2 2) '(3 2) '(3 2 2)) <= :key car) #((1 1) (1 2) (2 1) (2 1 1) (2 2) (3 1) (3 2) (3 2 2))))
+ (test-t (equalp (merge 'vector (vector 3 1 9 5 7) (list 8 6 0 2 4) <) #(3 1 8 6 0 2 4 9 5 7)))
+ (test-t (equalp (merge 'vector (list 1 3 5 7 9) (vector 0 2 4 6 8) <) #(0 1 2 3 4 5 6 7 8 9)))
+ (test-t (equalp (merge 'vector (list 1 3 5 7 9) (vector 0 2 4 6 8) <) #(0 1 2 3 4 5 6 7 8 9)))
+ (test-t (equalp (merge 'vector (list 0 1 2) #() <) #(0 1 2)))
+ (test-t (equalp (merge 'vector nil (vector 0 1 2) <) #(0 1 2)))
+ (test-t (equalp (merge 'vector nil #() <) #()))
+ (test-t (equalp (merge 'vector (list '(1 1) '(2 1) '(3 1)) (vector '(1 2) '(2 2) '(3 2)) <= :key car) #((1 1) (1 2) (2 1) (2 2) (3 1) (3 2))))
+ (test-t (equalp (merge 'vector (list '(1 1) '(2 1) '(2 1 1) '(3 1)) (vector '(1 2) '(2 2) '(3 2)) <= :key car) #((1 1) (1 2) (2 1) (2 1 1) (2 2) (3 1) (3 2))))
+ (test-t (equalp (merge 'vector (list '(1 1) '(2 1) '(2 1 1) '(3 1)) (vector '(1 2) '(2 2) '(3 2) '(3 2 2)) <= :key car) #((1 1) (1 2) (2 1) (2 1 1) (2 2) (3 1) (3 2) (3 2 2))))
+ (test-t (equalp (merge 'vector (list 3 1 9 5 7) (vector 8 6 0 2 4) <) #(3 1 8 6 0 2 4 9 5 7)))
+ (test-t (equalp (merge 'vector (vector 1 3 5 7 9) (vector 0 2 4 6 8) <) #(0 1 2 3 4 5 6 7 8 9)))
+ (test-t (equalp (merge 'vector (vector 0 1 2) #() <) #(0 1 2)))
+ (test-t (equalp (merge 'vector #() (vector 0 1 2) <) #(0 1 2)))
+ (test-t (equalp (merge 'vector #() #() <) #()))
+ (test-t (equalp (merge 'vector (vector '(1 1) '(2 1) '(3 1)) (vector '(1 2) '(2 2) '(3 2)) <= :key car) #((1 1) (1 2) (2 1) (2 2) (3 1) (3 2))))
+ (test-t (equalp (merge 'vector (vector '(1 1) '(2 1) '(2 1 1) '(3 1)) (vector '(1 2) '(2 2) '(3 2)) <= :key car) #((1 1) (1 2) (2 1) (2 1 1) (2 2) (3 1) (3 2))))
+ (test-t (equalp (merge 'vector (vector '(1 1) '(2 1) '(2 1 1) '(3 1)) (vector '(1 2) '(2 2) '(3 2) '(3 2 2)) <= :key car) #((1 1) (1 2) (2 1) (2 1 1) (2 2) (3 1) (3 2) (3 2 2))))
+ (test-t (equalp (merge 'vector (vector 3 1 9 5 7) (vector 8 6 0 2 4) <) #(3 1 8 6 0 2 4 9 5 7)))
+ (test-t (string= (merge 'string (list #\a #\c #\e) (list #\b #\d #\f) char<) "abcdef"))
+ (test-t (string= (merge 'string (list #\a #\b #\c) (list #\d #\e #\f) char<) "abcdef"))
+ (test-t (string= (merge 'string (list #\a #\b #\c) '() char<) "abc"))
+ (test-t (string= (merge 'string '() (list #\a #\b #\c) char<) "abc"))
+ (test-t (string= (merge 'string (list #\a #\b #\c) (copy-seq "") char<) "abc"))
+ (test-t (string= (merge 'string (list #\a #\b #\z) #(#\c #\x #\y) char<) "abcxyz"))
+ (test-t (equal (remove 4 '(1 3 4 5 9)) '(1 3 5 9)))
+ (test-t (equal (remove 4 '(1 2 4 1 3 4 5)) '(1 2 1 3 5)))
+ (test-t (equal (remove 4 '(1 2 4 1 3 4 5) :count 1) '(1 2 1 3 4 5)))
+ (test-t (equal (remove 4 '(1 2 4 1 3 4 5) :count 1 :from-end t) '(1 2 4 1 3 5)))
+ (test-t (equal (remove 3 '(1 2 4 1 3 4 5) :test >) '(4 3 4 5)))
+ (test-t (let* ((lst '(list of four elements)) (lst2 (copy-seq lst)) (lst3 (delete 'four lst))) (and (equal lst3 '(list of elements)) (not (equal lst lst2)))))
+ (test-t (equal (remove-if oddp '(1 2 4 1 3 4 5)) '(2 4 4)))
+ (test-t (equal (remove-if evenp '(1 2 4 1 3 4 5) :count 1 :from-end t) '(1 2 4 1 3 5)))
+ (test-t (equal (remove-if-not evenp '(1 2 3 4 5 6 7 8 9) :count 2 :from-end t) '(1 2 3 4 5 6 8)))
+ (test-t (equal (delete 4 (list 1 2 4 1 3 4 5)) '(1 2 1 3 5)))
+ (test-t (equal (delete 4 (list 1 2 4 1 3 4 5) :count 1) '(1 2 1 3 4 5)))
+ (test-t (equal (delete 4 (list 1 2 4 1 3 4 5) :count 1 :from-end t) '(1 2 4 1 3 5)))
+ (test-t (equal (delete 3 (list 1 2 4 1 3 4 5) :test >) '(4 3 4 5)))
+ (test-t (equal (delete-if oddp (list 1 2 4 1 3 4 5)) '(2 4 4)))
+ (test-t (equal (delete-if evenp (list 1 2 4 1 3 4 5) :count 1 :from-end t) '(1 2 4 1 3 5)))
+ (test-t (equal (delete-if evenp (list 1 2 3 4 5 6)) '(1 3 5)))
+ (test-t (let* ((list0 (list 0 1 2 3 4)) (list (remove 3 list0))) (and (not (eq list0 list)) (equal list0 '(0 1 2 3 4)) (equal list '(0 1 2 4)))))
+ (test-t (equal (remove 'a (list 'a 'b 'c 'a 'b 'c)) '(b c b c)))
+ (test-t (equal (remove 'b (list 'a 'b 'c 'a 'b 'c)) '(a c a c)))
+ (test-t (equal (remove 'c (list 'a 'b 'c 'a 'b 'c)) '(a b a b)))
+ (test-t (equal (remove 'a (list 'a 'a 'a)) '()))
+ (test-t (equal (remove 'z (list 'a 'b 'c)) '(a b c)))
+ (test-t (equal (remove 'a '()) '()))
+ (test-t (equal (remove 'a (list 'a 'b 'c 'a 'b 'c) :count 0) '(a b c a b c)))
+ (test-t (equal (remove 'a (list 'a 'b 'c 'a 'b 'c) :count 1) '(b c a b c)))
+ (test-t (equal (remove 'a (list 'a 'b 'c 'a 'b 'c) :count 1 :from-end t) '(a b c b c)))
+ (test-t (equal (remove 'a (list 'a 'b 'c 'a 'b 'c) :count 2) '(b c b c)))
+ (test-t (equal (remove 'a (list 'a 'b 'c 'a 'b 'c) :count 2 :from-end t) '(b c b c)))
+ (test-t (equal (remove 'a (list 'a 'b 'c 'a 'b 'c) :count 3) '(b c b c)))
+ (test-t (equal (remove 'a (list 'a 'b 'c 'a 'b 'c) :count 3 :from-end t) '(b c b c)))
+ (test-t (equal (remove 'a (list 'a 'b 'c 'a 'b 'c) :count 4) '(b c b c)))
+ (test-t (equal (remove 'a (list 'a 'b 'c 'a 'b 'c) :count 4 :from-end t) '(b c b c)))
+ (test-t (equal (remove 'a (list 'a 'b 'c 'a 'b 'c) :count -1) '(a b c a b c)))
+ (test-t (equal (remove 'a (list 'a 'b 'c 'a 'b 'c) :count -10) '(a b c a b c)))
+ (test-t (equal (remove 'a (list 'a 'b 'c 'a 'b 'c) :count -100) '(a b c a b c)))
+ (test-t (equal (remove 'a (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1) '(a b c b c b c b c)))
+ (test-t (equal (remove 'a (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :count 1) '(a b c b c a b c a b c)))
+ (test-t (equal (remove 'a (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :count 2) '(a b c b c b c a b c)))
+ (test-t (equal (remove 'a (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end nil :count 2) '(a b c b c b c a b c)))
+ (test-t (equal (remove 'a (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8) '(a b c b c b c a b c)))
+ (test-t (equal (remove 'a (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 1) '(a b c b c a b c a b c)))
+ (test-t (equal (remove 'a (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 1 :from-end t) '(a b c a b c b c a b c)))
+ (test-t (equal (remove 'a (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 0 :from-end t) '(a b c a b c a b c a b c)))
+ (test-t (equal (remove 'a (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count -100 :from-end t) '(a b c a b c a b c a b c)))
+ (test-t (equal (remove 'a (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 1) '(a b c a b c a b c a b c)))
+ (test-t (equal (remove 'a (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 2 :end 2) '(a b c a b c a b c a b c)))
+ (test-t (equal (remove 'a (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 12 :end 12) '(a b c a b c a b c a b c)))
+ (test-t (equal (remove 'a (list '(a) '(b) '(c) '(a) '(b) '(c)) :key car) '((b) (c) (b) (c))))
+ (test-t (equal (remove 'a (list '(a . b) '(b . c) '(c . a) '(a . b) '(b . c) '(c . a)) :key cdr) '((a . b) (b . c) (a . b) (b . c))))
+ (test-t (equal (remove "love" (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car) '(("Love") ("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equal (remove "love" (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count -10) '(("Love") ("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equal (remove "love" (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal) '()))
+ (test-t (equal (remove "love" (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :count 1) '(("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equal (remove "love" (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :count 1 :from-end t) '(("Love") ("LOve") ("LOVe"))))
+ (test-t (equal (remove "love" (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :count 2 :from-end t) '(("Love") ("LOve"))))
+ (test-t (equal (remove "love" (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :start 1 :end 3) '(("Love") ("LOVE"))))
+ (test-t (equal (remove "love" (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :count 1 :start 1 :end 3) '(("Love") ("LOVe") ("LOVE"))))
+ (test-t (equal (remove "love" (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :count 1 :from-end t :start 1 :end 3) '(("Love") ("LOve") ("LOVE"))))
+ (test-t (equal (remove "love" (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :count 10 :from-end t :start 1 :end 3) '(("Love") ("LOVE"))))
+ (test-t (let* ((vector0 (vector 0 1 2 3 4)) (vector (remove 3 vector0))) (and (not (eq vector0 vector)) (equalp vector0 #(0 1 2 3 4)) (equalp vector #(0 1 2 4)))))
+ (test-t (equalp (remove 'a (vector 'a 'b 'c 'a 'b 'c)) #(b c b c)))
+ (test-t (equalp (remove 'b (vector 'a 'b 'c 'a 'b 'c)) #(a c a c)))
+ (test-t (equalp (remove 'c (vector 'a 'b 'c 'a 'b 'c)) #(a b a b)))
+ (test-t (equalp (remove 'a (vector 'a 'a 'a)) #()))
+ (test-t (equalp (remove 'z (vector 'a 'b 'c)) #(a b c)))
+ (test-t (equalp (remove 'a #()) #()))
+ (test-t (equalp (remove 'a (vector 'a 'b 'c 'a 'b 'c) :count 0) #(a b c a b c)))
+ (test-t (equalp (remove 'a (vector 'a 'b 'c 'a 'b 'c) :count 1) #(b c a b c)))
+ (test-t (equalp (remove 'a (vector 'a 'b 'c 'a 'b 'c) :count 1 :from-end t) #(a b c b c)))
+ (test-t (equalp (remove 'a (vector 'a 'b 'c 'a 'b 'c) :count 2) #(b c b c)))
+ (test-t (equalp (remove 'a (vector 'a 'b 'c 'a 'b 'c) :count 2 :from-end t) #(b c b c)))
+ (test-t (equalp (remove 'a (vector 'a 'b 'c 'a 'b 'c) :count 3) #(b c b c)))
+ (test-t (equalp (remove 'a (vector 'a 'b 'c 'a 'b 'c) :count 3 :from-end t) #(b c b c)))
+ (test-t (equalp (remove 'a (vector 'a 'b 'c 'a 'b 'c) :count 4) #(b c b c)))
+ (test-t (equalp (remove 'a (vector 'a 'b 'c 'a 'b 'c) :count 4 :from-end t) #(b c b c)))
+ (test-t (equalp (remove 'a (vector 'a 'b 'c 'a 'b 'c) :count -1) #(a b c a b c)))
+ (test-t (equalp (remove 'a (vector 'a 'b 'c 'a 'b 'c) :count -10) #(a b c a b c)))
+ (test-t (equalp (remove 'a (vector 'a 'b 'c 'a 'b 'c) :count -100) #(a b c a b c)))
+ (test-t (equalp (remove 'a (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1) #(a b c b c b c b c)))
+ (test-t (equalp (remove 'a (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :count 1) #(a b c b c a b c a b c)))
+ (test-t (equalp (remove 'a (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :count 2) #(a b c b c b c a b c)))
+ (test-t (equalp (remove 'a (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end nil :count 2) #(a b c b c b c a b c)))
+ (test-t (equalp (remove 'a (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8) #(a b c b c b c a b c)))
+ (test-t (equalp (remove 'a (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 1) #(a b c b c a b c a b c)))
+ (test-t (equalp (remove 'a (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 1 :from-end t) #(a b c a b c b c a b c)))
+ (test-t (equalp (remove 'a (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 0 :from-end t) #(a b c a b c a b c a b c)))
+ (test-t (equalp (remove 'a (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count -100 :from-end t) #(a b c a b c a b c a b c)))
+ (test-t (equalp (remove 'a (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 1) #(a b c a b c a b c a b c)))
+ (test-t (equalp (remove 'a (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 2 :end 2) #(a b c a b c a b c a b c)))
+ (test-t (equalp (remove 'a (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 12 :end 12) #(a b c a b c a b c a b c)))
+ (test-t (equalp (remove 'a (vector '(a) '(b) '(c) '(a) '(b) '(c)) :key car) #((b) (c) (b) (c))))
+ (test-t (equalp (remove 'a (vector '(a . b) '(b . c) '(c . a) '(a . b) '(b . c) '(c . a)) :key cdr) #((a . b) (b . c) (a . b) (b . c))))
+ (test-t (equalp (remove "love" (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car) #(("Love") ("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equalp (remove "love" (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count -10) #(("Love") ("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equalp (remove "love" (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal) #()))
+ (test-t (equalp (remove "love" (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :count 1) #(("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equalp (remove "love" (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :count 1 :from-end t) #(("Love") ("LOve") ("LOVe"))))
+ (test-t (equalp (remove "love" (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :count 2 :from-end t) #(("Love") ("LOve"))))
+ (test-t (equalp (remove "love" (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :start 1 :end 3) #(("Love") ("LOVE"))))
+ (test-t (equalp (remove "love" (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :count 1 :start 1 :end 3) #(("Love") ("LOVe") ("LOVE"))))
+ (test-t (equalp (remove "love" (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :count 1 :from-end t :start 1 :end 3) #(("Love") ("LOve") ("LOVE"))))
+ (test-t (equalp (remove "love" (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :count 10 :from-end t :start 1 :end 3) #(("Love") ("LOVE"))))
+ (test-t (string= (remove #\a (copy-seq "abcabc")) "bcbc"))
+ (test-t (string= (remove #\a (copy-seq "")) ""))
+ (test-t (string= (remove #\a (copy-seq "xyz")) "xyz"))
+ (test-t (string= (remove #\a (copy-seq "ABCABC")) "ABCABC"))
+ (test-t (string= (remove #\a (copy-seq "ABCABC") :key char-downcase) "BCBC"))
+ (test-t (string= (remove #\a (copy-seq "abcabc") :count 1) "bcabc"))
+ (test-t (string= (remove #\a (copy-seq "abcabc") :count 1 :from-end t) "abcbc"))
+ (test-t (string= (remove #\a (copy-seq "abcabc") :count 0) "abcabc"))
+ (test-t (string= (remove #\a (copy-seq "abcabc") :count -10) "abcabc"))
+ (test-t (let* ((str0 (copy-seq "abc")) (str (remove #\a str0))) (and (not (eq str0 str)) (string= str0 "abc") (string= str "bc"))))
+ (test-t (string= (remove #\a (copy-seq "abcabc") :count 0) "abcabc"))
+ (test-t (string= (remove #\a (copy-seq "abcabc")) "bcbc"))
+ (test-t (string= (remove #\b (copy-seq "abcabc")) "acac"))
+ (test-t (string= (remove #\c (copy-seq "abcabc")) "abab"))
+ (test-t (string= (remove #\a (copy-seq "abcabc") :count 0) "abcabc"))
+ (test-t (string= (remove #\a (copy-seq "abcabc") :count 1) "bcabc"))
+ (test-t (string= (remove #\a (copy-seq "abcabc") :count 1 :from-end t) "abcbc"))
+ (test-t (string= (remove #\a (copy-seq "abcabc") :count 2) "bcbc"))
+ (test-t (string= (remove #\a (copy-seq "abcabc") :count 2 :from-end t) "bcbc"))
+ (test-t (string= (remove #\a (copy-seq "abcabc") :count 3) "bcbc"))
+ (test-t (string= (remove #\a (copy-seq "abcabc") :count 3 :from-end t) "bcbc"))
+ (test-t (string= (remove #\a (copy-seq "abcabc") :count 4) "bcbc"))
+ (test-t (string= (remove #\a (copy-seq "abcabc") :count 4 :from-end t) "bcbc"))
+ (test-t (string= (remove #\a (copy-seq "abcabc") :count -1) "abcabc"))
+ (test-t (string= (remove #\a (copy-seq "abcabc") :count -10) "abcabc"))
+ (test-t (string= (remove #\a (copy-seq "abcabc") :count -100) "abcabc"))
+ (test-t (string= (remove #\a (copy-seq "abcabcabcabc") :start 1) "abcbcbcbc"))
+ (test-t (string= (remove #\a (copy-seq "abcabcabcabc") :start 1 :count 1) "abcbcabcabc"))
+ (test-t (string= (remove #\a (copy-seq "abcabcabcabc") :start 1 :count 2) "abcbcbcabc"))
+ (test-t (string= (remove #\a (copy-seq "abcabcabcabc") :start 1 :end nil :count 2) "abcbcbcabc"))
+ (test-t (string= (remove #\a (copy-seq "abcabcabcabc") :start 1 :end 8) "abcbcbcabc"))
+ (test-t (string= (remove #\a (copy-seq "abcabcabcabc") :start 1 :end 8 :count 1) "abcbcabcabc"))
+ (test-t (string= (remove #\a (copy-seq "abcabcabcabc") :start 1 :end 8 :count 1 :from-end t) "abcabcbcabc"))
+ (test-t (string= (remove #\a (copy-seq "abcabcabcabc") :start 1 :end 8 :count 0 :from-end t) "abcabcabcabc"))
+ (test-t (string= (remove #\a (copy-seq "abcabcabcabc") :start 1 :end 8 :count -100 :from-end t) "abcabcabcabc"))
+ (test-t (string= (remove #\a (copy-seq "abcabcabcabc") :start 1 :end 1) "abcabcabcabc"))
+ (test-t (string= (remove #\a (copy-seq "abcabcabcabc") :start 2 :end 2) "abcabcabcabc"))
+ (test-t (string= (remove #\a (copy-seq "abcabcabcabc") :start 12 :end 12) "abcabcabcabc"))
+ (test-t (let* ((list0 (list 0 1 2 3 4)) (list (remove-if (lambda (arg) (eql arg 3)) list0))) (and (not (eq list0 list)) (equal list0 '(0 1 2 3 4)) (equal list '(0 1 2 4)))))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c)) '(b c b c)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'b)) (list 'a 'b 'c 'a 'b 'c)) '(a c a c)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'c)) (list 'a 'b 'c 'a 'b 'c)) '(a b a b)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list 'a 'a 'a)) '()))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'z)) (list 'a 'b 'c)) '(a b c)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) '()) '()))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c) :count 0) '(a b c a b c)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c) :count 1) '(b c a b c)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c) :count 1 :from-end t) '(a b c b c)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c) :count 2) '(b c b c)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c) :count 2 :from-end t) '(b c b c)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c) :count 3) '(b c b c)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c) :count 3 :from-end t) '(b c b c)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c) :count 4) '(b c b c)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c) :count 4 :from-end t) '(b c b c)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c) :count -1) '(a b c a b c)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c) :count -10) '(a b c a b c)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c) :count -100) '(a b c a b c)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1) '(a b c b c b c b c)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :count 1) '(a b c b c a b c a b c)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :count 2) '(a b c b c b c a b c)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end nil :count 2) '(a b c b c b c a b c)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8) '(a b c b c b c a b c)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 1) '(a b c b c a b c a b c)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 1 :from-end t) '(a b c a b c b c a b c)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 0 :from-end t) '(a b c a b c a b c a b c)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count -100 :from-end t) '(a b c a b c a b c a b c)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 1) '(a b c a b c a b c a b c)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 2 :end 2) '(a b c a b c a b c a b c)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 12 :end 12) '(a b c a b c a b c a b c)))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list '(a) '(b) '(c) '(a) '(b) '(c)) :key car) '((b) (c) (b) (c))))
+ (test-t (equal (remove-if (lambda (arg) (eql arg 'a)) (list '(a . b) '(b . c) '(c . a) '(a . b) '(b . c) '(c . a)) :key cdr) '((a . b) (b . c) (a . b) (b . c))))
+ (test-t (equal (remove-if (lambda (arg) (eql arg "love")) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car) '(("Love") ("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equal (remove-if (lambda (arg) (eql arg "love")) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count -10) '(("Love") ("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equal (remove-if (lambda (arg) (string-equal arg "love")) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car) '()))
+ (test-t (equal (remove-if (lambda (arg) (string-equal arg "love")) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1) '(("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equal (remove-if (lambda (arg) (string-equal arg "love")) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :from-end t) '(("Love") ("LOve") ("LOVe"))))
+ (test-t (equal (remove-if (lambda (arg) (string-equal arg "love")) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 2 :from-end t) '(("Love") ("LOve"))))
+ (test-t (equal (remove-if (lambda (arg) (string-equal arg "love")) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :start 1 :end 3) '(("Love") ("LOVE"))))
+ (test-t (equal (remove-if (lambda (arg) (string-equal arg "love")) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :start 1 :end 3) '(("Love") ("LOVe") ("LOVE"))))
+ (test-t (equal (remove-if (lambda (arg) (string-equal arg "love")) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :from-end t :start 1 :end 3) '(("Love") ("LOve") ("LOVE"))))
+ (test-t (equal (remove-if (lambda (arg) (string-equal arg "love")) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 10 :from-end t :start 1 :end 3) '(("Love") ("LOVE"))))
+ (test-t (let* ((vector0 (vector 0 1 2 3 4)) (vector (remove-if (lambda (arg) (eql arg 3)) vector0))) (and (not (eq vector0 vector)) (equalp vector0 #(0 1 2 3 4)) (equalp vector #(0 1 2 4)))))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c)) #(b c b c)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'b)) (vector 'a 'b 'c 'a 'b 'c)) #(a c a c)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'c)) (vector 'a 'b 'c 'a 'b 'c)) #(a b a b)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector 'a 'a 'a)) #()))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'z)) (vector 'a 'b 'c)) #(a b c)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) #()) #()))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c) :count 0) #(a b c a b c)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c) :count 1) #(b c a b c)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c) :count 1 :from-end t) #(a b c b c)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c) :count 2) #(b c b c)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c) :count 2 :from-end t) #(b c b c)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c) :count 3) #(b c b c)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c) :count 3 :from-end t) #(b c b c)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c) :count 4) #(b c b c)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c) :count 4 :from-end t) #(b c b c)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c) :count -1) #(a b c a b c)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c) :count -10) #(a b c a b c)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c) :count -100) #(a b c a b c)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1) #(a b c b c b c b c)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :count 1) #(a b c b c a b c a b c)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :count 2) #(a b c b c b c a b c)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end nil :count 2) #(a b c b c b c a b c)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8) #(a b c b c b c a b c)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 1) #(a b c b c a b c a b c)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 1 :from-end t) #(a b c a b c b c a b c)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 0 :from-end t) #(a b c a b c a b c a b c)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count -100 :from-end t) #(a b c a b c a b c a b c)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 1) #(a b c a b c a b c a b c)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 2 :end 2) #(a b c a b c a b c a b c)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 12 :end 12) #(a b c a b c a b c a b c)))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector '(a) '(b) '(c) '(a) '(b) '(c)) :key car) #((b) (c) (b) (c))))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg 'a)) (vector '(a . b) '(b . c) '(c . a) '(a . b) '(b . c) '(c . a)) :key cdr) #((a . b) (b . c) (a . b) (b . c))))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car) #(("Love") ("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equalp (remove-if (lambda (arg) (eql arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count -10) #(("Love") ("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equalp (remove-if (lambda (arg) (string-equal arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car) #()))
+ (test-t (equalp (remove-if (lambda (arg) (string-equal arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car) #()))
+ (test-t (equalp (remove-if (lambda (arg) (string-equal arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1) #(("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equalp (remove-if (lambda (arg) (string-equal arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1) #(("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equalp (remove-if (lambda (arg) (string-equal arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :from-end t) #(("Love") ("LOve") ("LOVe"))))
+ (test-t (equalp (remove-if (lambda (arg) (string-equal arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :from-end t) #(("Love") ("LOve") ("LOVe"))))
+ (test-t (equalp (remove-if (lambda (arg) (string-equal arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 2 :from-end t) #(("Love") ("LOve"))))
+ (test-t (equalp (remove-if (lambda (arg) (string-equal arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 2 :from-end t) #(("Love") ("LOve"))))
+ (test-t (equalp (remove-if (lambda (arg) (string-equal arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :start 1 :end 3) #(("Love") ("LOVE"))))
+ (test-t (equalp (remove-if (lambda (arg) (string-equal arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :start 1 :end 3) #(("Love") ("LOVe") ("LOVE"))))
+ (test-t (equalp (remove-if (lambda (arg) (string-equal arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :from-end t :start 1 :end 3) #(("Love") ("LOve") ("LOVE"))))
+ (test-t (equalp (remove-if (lambda (arg) (string-equal arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 10 :from-end t :start 1 :end 3) #(("Love") ("LOVE"))))
+ (test-t (string= (remove-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc")) "bcbc"))
+ (test-t (string= (remove-if (lambda (arg) (string-equal arg #\a)) (copy-seq "")) ""))
+ (test-t (string= (remove-if (lambda (arg) (string-equal arg #\a)) (copy-seq "xyz")) "xyz"))
+ (test-t (string= (remove-if (lambda (arg) (string-equal arg #\a)) (copy-seq "ABCABC") :key char-downcase) "BCBC"))
+ (test-t (string= (remove-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count 1) "bcabc"))
+ (test-t (string= (remove-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count 1 :from-end t) "abcbc"))
+ (test-t (string= (remove-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count 0) "abcabc"))
+ (test-t (string= (remove-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count -10) "abcabc"))
+ (test-t (let* ((str0 (copy-seq "abc")) (str (remove-if (lambda (arg) (string-equal arg #\a)) str0))) (and (not (eq str0 str)) (string= str0 "abc") (string= str "bc"))))
+ (test-t (string= (remove-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count 0) "abcabc"))
+ (test-t (string= (remove-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc")) "bcbc"))
+ (test-t (string= (remove-if (lambda (arg) (string-equal arg #\b)) (copy-seq "abcabc")) "acac"))
+ (test-t (string= (remove-if (lambda (arg) (string-equal arg #\c)) (copy-seq "abcabc")) "abab"))
+ (test-t (string= (remove-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count 0) "abcabc"))
+ (test-t (string= (remove-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count 1) "bcabc"))
+ (test-t (string= (remove-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count 1 :from-end t) "abcbc"))
+ (test-t (string= (remove-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count 2) "bcbc"))
+ (test-t (string= (remove-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count 2 :from-end t) "bcbc"))
+ (test-t (string= (remove-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count 3) "bcbc"))
+ (test-t (string= (remove-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count 3 :from-end t) "bcbc"))
+ (test-t (string= (remove-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count 4) "bcbc"))
+ (test-t (string= (remove-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count 4 :from-end t) "bcbc"))
+ (test-t (string= (remove-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count -1) "abcabc"))
+ (test-t (string= (remove-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count -10) "abcabc"))
+ (test-t (string= (remove-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count -100) "abcabc"))
+ (test-t (string= (remove-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabcabcabc") :start 1) "abcbcbcbc"))
+ (test-t (string= (remove-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabcabcabc") :start 1 :count 1) "abcbcabcabc"))
+ (test-t (string= (remove-if (lambda (arg) (eql arg #\a)) (copy-seq "abcabcabcabc") :start 1 :count 2) "abcbcbcabc"))
+ (test-t (string= (remove-if (lambda (arg) (eql arg #\a)) (copy-seq "abcabcabcabc") :start 1 :end nil :count 2) "abcbcbcabc"))
+ (test-t (string= (remove-if (lambda (arg) (eql arg #\a)) (copy-seq "abcabcabcabc") :start 1 :end 8) "abcbcbcabc"))
+ (test-t (string= (remove-if (lambda (arg) (eql arg #\a)) (copy-seq "abcabcabcabc") :start 1 :end 8 :count 1) "abcbcabcabc"))
+ (test-t (string= (remove-if (lambda (arg) (eql arg #\a)) (copy-seq "abcabcabcabc") :start 1 :end 8 :count 1 :from-end t) "abcabcbcabc"))
+ (test-t (string= (remove-if (lambda (arg) (eql arg #\a)) (copy-seq "abcabcabcabc") :start 1 :end 8 :count 0 :from-end t) "abcabcabcabc"))
+ (test-t (string= (remove-if (lambda (arg) (eql arg #\a)) (copy-seq "abcabcabcabc") :start 1 :end 8 :count -100 :from-end t) "abcabcabcabc"))
+ (test-t (string= (remove-if (lambda (arg) (eql arg #\a)) (copy-seq "abcabcabcabc") :start 1 :end 1) "abcabcabcabc"))
+ (test-t (string= (remove-if (lambda (arg) (eql arg #\a)) (copy-seq "abcabcabcabc") :start 2 :end 2) "abcabcabcabc"))
+ (test-t (string= (remove-if (lambda (arg) (eql arg #\a)) (copy-seq "abcabcabcabc") :start 12 :end 12) "abcabcabcabc"))
+ (test-t (let* ((list0 (list 0 1 2 3 4)) (list (remove-if-not (lambda (arg) (not (eql arg 3))) list0))) (and (not (eq list0 list)) (equal list0 '(0 1 2 3 4)) (equal list '(0 1 2 4)))))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c)) '(b c b c)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'b))) (list 'a 'b 'c 'a 'b 'c)) '(a c a c)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'c))) (list 'a 'b 'c 'a 'b 'c)) '(a b a b)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'a 'a)) '()))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'z))) (list 'a 'b 'c)) '(a b c)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) '()) '()))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c) :count 0) '(a b c a b c)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c) :count 1) '(b c a b c)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c) :count 1 :from-end t) '(a b c b c)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c) :count 2) '(b c b c)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c) :count 2 :from-end t) '(b c b c)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c) :count 3) '(b c b c)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c) :count 3 :from-end t) '(b c b c)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c) :count 4) '(b c b c)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c) :count 4 :from-end t) '(b c b c)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c) :count -1) '(a b c a b c)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c) :count -10) '(a b c a b c)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c) :count -100) '(a b c a b c)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1) '(a b c b c b c b c)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :count 1) '(a b c b c a b c a b c)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :count 2) '(a b c b c b c a b c)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end nil :count 2) '(a b c b c b c a b c)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8) '(a b c b c b c a b c)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 1) '(a b c b c a b c a b c)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 1 :from-end t) '(a b c a b c b c a b c)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 0 :from-end t) '(a b c a b c a b c a b c)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count -100 :from-end t) '(a b c a b c a b c a b c)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 1) '(a b c a b c a b c a b c)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 2 :end 2) '(a b c a b c a b c a b c)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 12 :end 12) '(a b c a b c a b c a b c)))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list '(a) '(b) '(c) '(a) '(b) '(c)) :key car) '((b) (c) (b) (c))))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg 'a))) (list '(a . b) '(b . c) '(c . a) '(a . b) '(b . c) '(c . a)) :key cdr) '((a . b) (b . c) (a . b) (b . c))))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg "love"))) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car) '(("Love") ("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equal (remove-if-not (lambda (arg) (not (eql arg "love"))) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count -10) '(("Love") ("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equal (remove-if-not (lambda (arg) (not (string-equal arg "love"))) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car) '()))
+ (test-t (equal (remove-if-not (lambda (arg) (not (string-equal arg "love"))) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1) '(("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equal (remove-if-not (lambda (arg) (not (string-equal arg "love"))) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :from-end t) '(("Love") ("LOve") ("LOVe"))))
+ (test-t (equal (remove-if-not (lambda (arg) (not (string-equal arg "love"))) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 2 :from-end t) '(("Love") ("LOve"))))
+ (test-t (equal (remove-if-not (lambda (arg) (not (string-equal arg "love"))) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :start 1 :end 3) '(("Love") ("LOVE"))))
+ (test-t (equal (remove-if-not (lambda (arg) (not (string-equal arg "love"))) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :start 1 :end 3) '(("Love") ("LOVe") ("LOVE"))))
+ (test-t (equal (remove-if-not (lambda (arg) (not (string-equal arg "love"))) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :from-end t :start 1 :end 3) '(("Love") ("LOve") ("LOVE"))))
+ (test-t (equal (remove-if-not (lambda (arg) (not (string-equal arg "love"))) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 10 :from-end t :start 1 :end 3) '(("Love") ("LOVE"))))
+ (test-t (let* ((vector0 (vector 0 1 2 3 4)) (vector (remove-if-not (lambda (arg) (not (eql arg 3))) vector0))) (and (not (eq vector0 vector)) (equalp vector0 #(0 1 2 3 4)) (equalp vector #(0 1 2 4)))))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c)) #(b c b c)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'b))) (vector 'a 'b 'c 'a 'b 'c)) #(a c a c)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'c))) (vector 'a 'b 'c 'a 'b 'c)) #(a b a b)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'a 'a)) #()))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'z))) (vector 'a 'b 'c)) #(a b c)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) #()) #()))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c) :count 0) #(a b c a b c)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c) :count 1) #(b c a b c)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c) :count 1 :from-end t) #(a b c b c)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c) :count 2) #(b c b c)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c) :count 2 :from-end t) #(b c b c)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c) :count 3) #(b c b c)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c) :count 3 :from-end t) #(b c b c)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c) :count 4) #(b c b c)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c) :count 4 :from-end t) #(b c b c)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c) :count -1) #(a b c a b c)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c) :count -10) #(a b c a b c)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c) :count -100) #(a b c a b c)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1) #(a b c b c b c b c)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :count 1) #(a b c b c a b c a b c)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :count 2) #(a b c b c b c a b c)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end nil :count 2) #(a b c b c b c a b c)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8) #(a b c b c b c a b c)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 1) #(a b c b c a b c a b c)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 1 :from-end t) #(a b c a b c b c a b c)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 0 :from-end t) #(a b c a b c a b c a b c)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count -100 :from-end t) #(a b c a b c a b c a b c)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 1) #(a b c a b c a b c a b c)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 2 :end 2) #(a b c a b c a b c a b c)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 12 :end 12) #(a b c a b c a b c a b c)))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector '(a) '(b) '(c) '(a) '(b) '(c)) :key car) #((b) (c) (b) (c))))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg 'a))) (vector '(a . b) '(b . c) '(c . a) '(a . b) '(b . c) '(c . a)) :key cdr) #((a . b) (b . c) (a . b) (b . c))))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car) #(("Love") ("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (eql arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count -10) #(("Love") ("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (string-equal arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car) #()))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (string-equal arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car) #()))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (string-equal arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1) #(("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (string-equal arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1) #(("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (string-equal arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :from-end t) #(("Love") ("LOve") ("LOVe"))))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (string-equal arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :from-end t) #(("Love") ("LOve") ("LOVe"))))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (string-equal arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 2 :from-end t) #(("Love") ("LOve"))))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (string-equal arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 2 :from-end t) #(("Love") ("LOve"))))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (string-equal arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :start 1 :end 3) #(("Love") ("LOVE"))))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (string-equal arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :start 1 :end 3) #(("Love") ("LOVe") ("LOVE"))))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (string-equal arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :from-end t :start 1 :end 3) #(("Love") ("LOve") ("LOVE"))))
+ (test-t (equalp (remove-if-not (lambda (arg) (not (string-equal arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 10 :from-end t :start 1 :end 3) #(("Love") ("LOVE"))))
+ (test-t (string= (remove-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc")) "bcbc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "")) ""))
+ (test-t (string= (remove-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "xyz")) "xyz"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "ABCABC") :key char-downcase) "BCBC"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count 1) "bcabc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count 1 :from-end t) "abcbc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count 0) "abcabc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count -10) "abcabc"))
+ (test-t (let* ((str0 (copy-seq "abc")) (str (remove-if-not (lambda (arg) (not (string-equal arg #\a))) str0))) (and (not (eq str0 str)) (string= str0 "abc") (string= str "bc"))))
+ (test-t (string= (remove-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count 0) "abcabc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc")) "bcbc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (string-equal arg #\b))) (copy-seq "abcabc")) "acac"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (string-equal arg #\c))) (copy-seq "abcabc")) "abab"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count 0) "abcabc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count 1) "bcabc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count 1 :from-end t) "abcbc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count 2) "bcbc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count 2 :from-end t) "bcbc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count 3) "bcbc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count 3 :from-end t) "bcbc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count 4) "bcbc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count 4 :from-end t) "bcbc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count -1) "abcabc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count -10) "abcabc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count -100) "abcabc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabcabcabc") :start 1) "abcbcbcbc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabcabcabc") :start 1 :count 1) "abcbcabcabc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (eql arg #\a))) (copy-seq "abcabcabcabc") :start 1 :count 2) "abcbcbcabc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (eql arg #\a))) (copy-seq "abcabcabcabc") :start 1 :end nil :count 2) "abcbcbcabc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (eql arg #\a))) (copy-seq "abcabcabcabc") :start 1 :end 8) "abcbcbcabc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (eql arg #\a))) (copy-seq "abcabcabcabc") :start 1 :end 8 :count 1) "abcbcabcabc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (eql arg #\a))) (copy-seq "abcabcabcabc") :start 1 :end 8 :count 1 :from-end t) "abcabcbcabc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (eql arg #\a))) (copy-seq "abcabcabcabc") :start 1 :end 8 :count 0 :from-end t) "abcabcabcabc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (eql arg #\a))) (copy-seq "abcabcabcabc") :start 1 :end 8 :count -100 :from-end t) "abcabcabcabc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (eql arg #\a))) (copy-seq "abcabcabcabc") :start 1 :end 1) "abcabcabcabc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (eql arg #\a))) (copy-seq "abcabcabcabc") :start 2 :end 2) "abcabcabcabc"))
+ (test-t (string= (remove-if-not (lambda (arg) (not (eql arg #\a))) (copy-seq "abcabcabcabc") :start 12 :end 12) "abcabcabcabc"))
+ (test-t (equal (delete 'a (list 'a 'b 'c 'a 'b 'c)) '(b c b c)))
+ (test-t (equal (delete 'b (list 'a 'b 'c 'a 'b 'c)) '(a c a c)))
+ (test-t (equal (delete 'c (list 'a 'b 'c 'a 'b 'c)) '(a b a b)))
+ (test-t (equal (delete 'a (list 'a 'a 'a)) '()))
+ (test-t (equal (delete 'z (list 'a 'b 'c)) '(a b c)))
+ (test-t (equal (delete 'a '()) '()))
+ (test-t (equal (delete 'a (list 'a 'b 'c 'a 'b 'c) :count 0) '(a b c a b c)))
+ (test-t (equal (delete 'a (list 'a 'b 'c 'a 'b 'c) :count 1) '(b c a b c)))
+ (test-t (equal (delete 'a (list 'a 'b 'c 'a 'b 'c) :count 1 :from-end t) '(a b c b c)))
+ (test-t (equal (delete 'a (list 'a 'b 'c 'a 'b 'c) :count 2) '(b c b c)))
+ (test-t (equal (delete 'a (list 'a 'b 'c 'a 'b 'c) :count 2 :from-end t) '(b c b c)))
+ (test-t (equal (delete 'a (list 'a 'b 'c 'a 'b 'c) :count 3) '(b c b c)))
+ (test-t (equal (delete 'a (list 'a 'b 'c 'a 'b 'c) :count 3 :from-end t) '(b c b c)))
+ (test-t (equal (delete 'a (list 'a 'b 'c 'a 'b 'c) :count 4) '(b c b c)))
+ (test-t (equal (delete 'a (list 'a 'b 'c 'a 'b 'c) :count 4 :from-end t) '(b c b c)))
+ (test-t (equal (delete 'a (list 'a 'b 'c 'a 'b 'c) :count -1) '(a b c a b c)))
+ (test-t (equal (delete 'a (list 'a 'b 'c 'a 'b 'c) :count -10) '(a b c a b c)))
+ (test-t (equal (delete 'a (list 'a 'b 'c 'a 'b 'c) :count -100) '(a b c a b c)))
+ (test-t (equal (delete 'a (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1) '(a b c b c b c b c)))
+ (test-t (equal (delete 'a (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :count 1) '(a b c b c a b c a b c)))
+ (test-t (equal (delete 'a (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :count 2) '(a b c b c b c a b c)))
+ (test-t (equal (delete 'a (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end nil :count 2) '(a b c b c b c a b c)))
+ (test-t (equal (delete 'a (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8) '(a b c b c b c a b c)))
+ (test-t (equal (delete 'a (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 1) '(a b c b c a b c a b c)))
+ (test-t (equal (delete 'a (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 1 :from-end t) '(a b c a b c b c a b c)))
+ (test-t (equal (delete 'a (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 0 :from-end t) '(a b c a b c a b c a b c)))
+ (test-t (equal (delete 'a (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count -100 :from-end t) '(a b c a b c a b c a b c)))
+ (test-t (equal (delete 'a (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 1) '(a b c a b c a b c a b c)))
+ (test-t (equal (delete 'a (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 2 :end 2) '(a b c a b c a b c a b c)))
+ (test-t (equal (delete 'a (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 12 :end 12) '(a b c a b c a b c a b c)))
+ (test-t (equal (delete 'a (list '(a) '(b) '(c) '(a) '(b) '(c)) :key car) '((b) (c) (b) (c))))
+ (test-t (equal (delete 'a (list '(a . b) '(b . c) '(c . a) '(a . b) '(b . c) '(c . a)) :key cdr) '((a . b) (b . c) (a . b) (b . c))))
+ (test-t (equal (delete "love" (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car) '(("Love") ("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equal (delete "love" (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count -10) '(("Love") ("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equal (delete "love" (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal) '()))
+ (test-t (equal (delete "love" (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :count 1) '(("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equal (delete "love" (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :count 1 :from-end t) '(("Love") ("LOve") ("LOVe"))))
+ (test-t (equal (delete "love" (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :count 2 :from-end t) '(("Love") ("LOve"))))
+ (test-t (equal (delete "love" (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :start 1 :end 3) '(("Love") ("LOVE"))))
+ (test-t (equal (delete "love" (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :count 1 :start 1 :end 3) '(("Love") ("LOVe") ("LOVE"))))
+ (test-t (equal (delete "love" (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :count 1 :from-end t :start 1 :end 3) '(("Love") ("LOve") ("LOVE"))))
+ (test-t (equal (delete "love" (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :count 10 :from-end t :start 1 :end 3) '(("Love") ("LOVE"))))
+ (test-t (equalp (delete 'a (vector 'a 'b 'c 'a 'b 'c)) #(b c b c)))
+ (test-t (equalp (delete 'b (vector 'a 'b 'c 'a 'b 'c)) #(a c a c)))
+ (test-t (equalp (delete 'c (vector 'a 'b 'c 'a 'b 'c)) #(a b a b)))
+ (test-t (equalp (delete 'a (vector 'a 'a 'a)) #()))
+ (test-t (equalp (delete 'z (vector 'a 'b 'c)) #(a b c)))
+ (test-t (equalp (delete 'a #()) #()))
+ (test-t (equalp (delete 'a (vector 'a 'b 'c 'a 'b 'c) :count 0) #(a b c a b c)))
+ (test-t (equalp (delete 'a (vector 'a 'b 'c 'a 'b 'c) :count 1) #(b c a b c)))
+ (test-t (equalp (delete 'a (vector 'a 'b 'c 'a 'b 'c) :count 1 :from-end t) #(a b c b c)))
+ (test-t (equalp (delete 'a (vector 'a 'b 'c 'a 'b 'c) :count 2) #(b c b c)))
+ (test-t (equalp (delete 'a (vector 'a 'b 'c 'a 'b 'c) :count 2 :from-end t) #(b c b c)))
+ (test-t (equalp (delete 'a (vector 'a 'b 'c 'a 'b 'c) :count 3) #(b c b c)))
+ (test-t (equalp (delete 'a (vector 'a 'b 'c 'a 'b 'c) :count 3 :from-end t) #(b c b c)))
+ (test-t (equalp (delete 'a (vector 'a 'b 'c 'a 'b 'c) :count 4) #(b c b c)))
+ (test-t (equalp (delete 'a (vector 'a 'b 'c 'a 'b 'c) :count 4 :from-end t) #(b c b c)))
+ (test-t (equalp (delete 'a (vector 'a 'b 'c 'a 'b 'c) :count -1) #(a b c a b c)))
+ (test-t (equalp (delete 'a (vector 'a 'b 'c 'a 'b 'c) :count -10) #(a b c a b c)))
+ (test-t (equalp (delete 'a (vector 'a 'b 'c 'a 'b 'c) :count -100) #(a b c a b c)))
+ (test-t (equalp (delete 'a (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1) #(a b c b c b c b c)))
+ (test-t (equalp (delete 'a (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :count 1) #(a b c b c a b c a b c)))
+ (test-t (equalp (delete 'a (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :count 2) #(a b c b c b c a b c)))
+ (test-t (equalp (delete 'a (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end nil :count 2) #(a b c b c b c a b c)))
+ (test-t (equalp (delete 'a (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8) #(a b c b c b c a b c)))
+ (test-t (equalp (delete 'a (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 1) #(a b c b c a b c a b c)))
+ (test-t (equalp (delete 'a (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 1 :from-end t) #(a b c a b c b c a b c)))
+ (test-t (equalp (delete 'a (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 0 :from-end t) #(a b c a b c a b c a b c)))
+ (test-t (equalp (delete 'a (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count -100 :from-end t) #(a b c a b c a b c a b c)))
+ (test-t (equalp (delete 'a (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 1) #(a b c a b c a b c a b c)))
+ (test-t (equalp (delete 'a (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 2 :end 2) #(a b c a b c a b c a b c)))
+ (test-t (equalp (delete 'a (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 12 :end 12) #(a b c a b c a b c a b c)))
+ (test-t (equalp (delete 'a (vector '(a) '(b) '(c) '(a) '(b) '(c)) :key car) #((b) (c) (b) (c))))
+ (test-t (equalp (delete 'a (vector '(a . b) '(b . c) '(c . a) '(a . b) '(b . c) '(c . a)) :key cdr) #((a . b) (b . c) (a . b) (b . c))))
+ (test-t (equalp (delete "love" (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car) #(("Love") ("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equalp (delete "love" (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count -10) #(("Love") ("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equalp (delete "love" (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal) #()))
+ (test-t (equalp (delete "love" (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :count 1) #(("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equalp (delete "love" (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :count 1 :from-end t) #(("Love") ("LOve") ("LOVe"))))
+ (test-t (equalp (delete "love" (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :count 2 :from-end t) #(("Love") ("LOve"))))
+ (test-t (equalp (delete "love" (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :start 1 :end 3) #(("Love") ("LOVE"))))
+ (test-t (equalp (delete "love" (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :count 1 :start 1 :end 3) #(("Love") ("LOVe") ("LOVE"))))
+ (test-t (equalp (delete "love" (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :count 1 :from-end t :start 1 :end 3) #(("Love") ("LOve") ("LOVE"))))
+ (test-t (equalp (delete "love" (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :test string-equal :count 10 :from-end t :start 1 :end 3) #(("Love") ("LOVE"))))
+ (test-t (string= (delete #\a (copy-seq "abcabc")) "bcbc"))
+ (test-t (string= (delete #\a (copy-seq "")) ""))
+ (test-t (string= (delete #\a (copy-seq "xyz")) "xyz"))
+ (test-t (string= (delete #\a (copy-seq "ABCABC")) "ABCABC"))
+ (test-t (string= (delete #\a (copy-seq "ABCABC") :key char-downcase) "BCBC"))
+ (test-t (string= (delete #\a (copy-seq "abcabc") :count 1) "bcabc"))
+ (test-t (string= (delete #\a (copy-seq "abcabc") :count 1 :from-end t) "abcbc"))
+ (test-t (string= (delete #\a (copy-seq "abcabc") :count 0) "abcabc"))
+ (test-t (string= (delete #\a (copy-seq "abcabc") :count -10) "abcabc"))
+ (test-t (string= (delete #\a (copy-seq "abcabc") :count 0) "abcabc"))
+ (test-t (string= (delete #\a (copy-seq "abcabc")) "bcbc"))
+ (test-t (string= (delete #\b (copy-seq "abcabc")) "acac"))
+ (test-t (string= (delete #\c (copy-seq "abcabc")) "abab"))
+ (test-t (string= (delete #\a (copy-seq "abcabc") :count 0) "abcabc"))
+ (test-t (string= (delete #\a (copy-seq "abcabc") :count 1) "bcabc"))
+ (test-t (string= (delete #\a (copy-seq "abcabc") :count 1 :from-end t) "abcbc"))
+ (test-t (string= (delete #\a (copy-seq "abcabc") :count 2) "bcbc"))
+ (test-t (string= (delete #\a (copy-seq "abcabc") :count 2 :from-end t) "bcbc"))
+ (test-t (string= (delete #\a (copy-seq "abcabc") :count 3) "bcbc"))
+ (test-t (string= (delete #\a (copy-seq "abcabc") :count 3 :from-end t) "bcbc"))
+ (test-t (string= (delete #\a (copy-seq "abcabc") :count 4) "bcbc"))
+ (test-t (string= (delete #\a (copy-seq "abcabc") :count 4 :from-end t) "bcbc"))
+ (test-t (string= (delete #\a (copy-seq "abcabc") :count -1) "abcabc"))
+ (test-t (string= (delete #\a (copy-seq "abcabc") :count -10) "abcabc"))
+ (test-t (string= (delete #\a (copy-seq "abcabc") :count -100) "abcabc"))
+ (test-t (string= (delete #\a (copy-seq "abcabcabcabc") :start 1) "abcbcbcbc"))
+ (test-t (string= (delete #\a (copy-seq "abcabcabcabc") :start 1 :count 1) "abcbcabcabc"))
+ (test-t (string= (delete #\a (copy-seq "abcabcabcabc") :start 1 :count 2) "abcbcbcabc"))
+ (test-t (string= (delete #\a (copy-seq "abcabcabcabc") :start 1 :end nil :count 2) "abcbcbcabc"))
+ (test-t (string= (delete #\a (copy-seq "abcabcabcabc") :start 1 :end 8) "abcbcbcabc"))
+ (test-t (string= (delete #\a (copy-seq "abcabcabcabc") :start 1 :end 8 :count 1) "abcbcabcabc"))
+ (test-t (string= (delete #\a (copy-seq "abcabcabcabc") :start 1 :end 8 :count 1 :from-end t) "abcabcbcabc"))
+ (test-t (string= (delete #\a (copy-seq "abcabcabcabc") :start 1 :end 8 :count 0 :from-end t) "abcabcabcabc"))
+ (test-t (string= (delete #\a (copy-seq "abcabcabcabc") :start 1 :end 8 :count -100 :from-end t) "abcabcabcabc"))
+ (test-t (string= (delete #\a (copy-seq "abcabcabcabc") :start 1 :end 1) "abcabcabcabc"))
+ (test-t (string= (delete #\a (copy-seq "abcabcabcabc") :start 2 :end 2) "abcabcabcabc"))
+ (test-t (string= (delete #\a (copy-seq "abcabcabcabc") :start 12 :end 12) "abcabcabcabc"))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c)) '(b c b c)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'b)) (list 'a 'b 'c 'a 'b 'c)) '(a c a c)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'c)) (list 'a 'b 'c 'a 'b 'c)) '(a b a b)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list 'a 'a 'a)) '()))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'z)) (list 'a 'b 'c)) '(a b c)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) '()) '()))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c) :count 0) '(a b c a b c)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c) :count 1) '(b c a b c)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c) :count 1 :from-end t) '(a b c b c)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c) :count 2) '(b c b c)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c) :count 2 :from-end t) '(b c b c)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c) :count 3) '(b c b c)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c) :count 3 :from-end t) '(b c b c)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c) :count 4) '(b c b c)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c) :count 4 :from-end t) '(b c b c)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c) :count -1) '(a b c a b c)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c) :count -10) '(a b c a b c)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c) :count -100) '(a b c a b c)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1) '(a b c b c b c b c)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :count 1) '(a b c b c a b c a b c)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :count 2) '(a b c b c b c a b c)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end nil :count 2) '(a b c b c b c a b c)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8) '(a b c b c b c a b c)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 1) '(a b c b c a b c a b c)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 1 :from-end t) '(a b c a b c b c a b c)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 0 :from-end t) '(a b c a b c a b c a b c)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count -100 :from-end t) '(a b c a b c a b c a b c)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 1) '(a b c a b c a b c a b c)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 2 :end 2) '(a b c a b c a b c a b c)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 12 :end 12) '(a b c a b c a b c a b c)))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list '(a) '(b) '(c) '(a) '(b) '(c)) :key car) '((b) (c) (b) (c))))
+ (test-t (equal (delete-if (lambda (arg) (eql arg 'a)) (list '(a . b) '(b . c) '(c . a) '(a . b) '(b . c) '(c . a)) :key cdr) '((a . b) (b . c) (a . b) (b . c))))
+ (test-t (equal (delete-if (lambda (arg) (eql arg "love")) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car) '(("Love") ("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equal (delete-if (lambda (arg) (eql arg "love")) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count -10) '(("Love") ("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equal (delete-if (lambda (arg) (string-equal arg "love")) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car) '()))
+ (test-t (equal (delete-if (lambda (arg) (string-equal arg "love")) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1) '(("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equal (delete-if (lambda (arg) (string-equal arg "love")) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :from-end t) '(("Love") ("LOve") ("LOVe"))))
+ (test-t (equal (delete-if (lambda (arg) (string-equal arg "love")) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 2 :from-end t) '(("Love") ("LOve"))))
+ (test-t (equal (delete-if (lambda (arg) (string-equal arg "love")) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :start 1 :end 3) '(("Love") ("LOVE"))))
+ (test-t (equal (delete-if (lambda (arg) (string-equal arg "love")) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :start 1 :end 3) '(("Love") ("LOVe") ("LOVE"))))
+ (test-t (equal (delete-if (lambda (arg) (string-equal arg "love")) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :from-end t :start 1 :end 3) '(("Love") ("LOve") ("LOVE"))))
+ (test-t (equal (delete-if (lambda (arg) (string-equal arg "love")) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 10 :from-end t :start 1 :end 3) '(("Love") ("LOVE"))))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c)) #(b c b c)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'b)) (vector 'a 'b 'c 'a 'b 'c)) #(a c a c)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'c)) (vector 'a 'b 'c 'a 'b 'c)) #(a b a b)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector 'a 'a 'a)) #()))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'z)) (vector 'a 'b 'c)) #(a b c)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) #()) #()))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c) :count 0) #(a b c a b c)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c) :count 1) #(b c a b c)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c) :count 1 :from-end t) #(a b c b c)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c) :count 2) #(b c b c)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c) :count 2 :from-end t) #(b c b c)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c) :count 3) #(b c b c)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c) :count 3 :from-end t) #(b c b c)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c) :count 4) #(b c b c)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c) :count 4 :from-end t) #(b c b c)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c) :count -1) #(a b c a b c)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c) :count -10) #(a b c a b c)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c) :count -100) #(a b c a b c)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1) #(a b c b c b c b c)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :count 1) #(a b c b c a b c a b c)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :count 2) #(a b c b c b c a b c)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end nil :count 2) #(a b c b c b c a b c)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8) #(a b c b c b c a b c)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 1) #(a b c b c a b c a b c)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 1 :from-end t) #(a b c a b c b c a b c)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 0 :from-end t) #(a b c a b c a b c a b c)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count -100 :from-end t) #(a b c a b c a b c a b c)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 1) #(a b c a b c a b c a b c)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 2 :end 2) #(a b c a b c a b c a b c)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 12 :end 12) #(a b c a b c a b c a b c)))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector '(a) '(b) '(c) '(a) '(b) '(c)) :key car) #((b) (c) (b) (c))))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg 'a)) (vector '(a . b) '(b . c) '(c . a) '(a . b) '(b . c) '(c . a)) :key cdr) #((a . b) (b . c) (a . b) (b . c))))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car) #(("Love") ("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equalp (delete-if (lambda (arg) (eql arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count -10) #(("Love") ("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equalp (delete-if (lambda (arg) (string-equal arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car) #()))
+ (test-t (equalp (delete-if (lambda (arg) (string-equal arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car) #()))
+ (test-t (equalp (delete-if (lambda (arg) (string-equal arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1) #(("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equalp (delete-if (lambda (arg) (string-equal arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1) #(("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equalp (delete-if (lambda (arg) (string-equal arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :from-end t) #(("Love") ("LOve") ("LOVe"))))
+ (test-t (equalp (delete-if (lambda (arg) (string-equal arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :from-end t) #(("Love") ("LOve") ("LOVe"))))
+ (test-t (equalp (delete-if (lambda (arg) (string-equal arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 2 :from-end t) #(("Love") ("LOve"))))
+ (test-t (equalp (delete-if (lambda (arg) (string-equal arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 2 :from-end t) #(("Love") ("LOve"))))
+ (test-t (equalp (delete-if (lambda (arg) (string-equal arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :start 1 :end 3) #(("Love") ("LOVE"))))
+ (test-t (equalp (delete-if (lambda (arg) (string-equal arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :start 1 :end 3) #(("Love") ("LOVe") ("LOVE"))))
+ (test-t (equalp (delete-if (lambda (arg) (string-equal arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :from-end t :start 1 :end 3) #(("Love") ("LOve") ("LOVE"))))
+ (test-t (equalp (delete-if (lambda (arg) (string-equal arg "love")) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 10 :from-end t :start 1 :end 3) #(("Love") ("LOVE"))))
+ (test-t (string= (delete-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc")) "bcbc"))
+ (test-t (string= (delete-if (lambda (arg) (string-equal arg #\a)) (copy-seq "")) ""))
+ (test-t (string= (delete-if (lambda (arg) (string-equal arg #\a)) (copy-seq "xyz")) "xyz"))
+ (test-t (string= (delete-if (lambda (arg) (string-equal arg #\a)) (copy-seq "ABCABC") :key char-downcase) "BCBC"))
+ (test-t (string= (delete-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count 1) "bcabc"))
+ (test-t (string= (delete-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count 1 :from-end t) "abcbc"))
+ (test-t (string= (delete-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count 0) "abcabc"))
+ (test-t (string= (delete-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count -10) "abcabc"))
+ (test-t (string= (delete-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count 0) "abcabc"))
+ (test-t (string= (delete-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc")) "bcbc"))
+ (test-t (string= (delete-if (lambda (arg) (string-equal arg #\b)) (copy-seq "abcabc")) "acac"))
+ (test-t (string= (delete-if (lambda (arg) (string-equal arg #\c)) (copy-seq "abcabc")) "abab"))
+ (test-t (string= (delete-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count 0) "abcabc"))
+ (test-t (string= (delete-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count 1) "bcabc"))
+ (test-t (string= (delete-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count 1 :from-end t) "abcbc"))
+ (test-t (string= (delete-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count 2) "bcbc"))
+ (test-t (string= (delete-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count 2 :from-end t) "bcbc"))
+ (test-t (string= (delete-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count 3) "bcbc"))
+ (test-t (string= (delete-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count 3 :from-end t) "bcbc"))
+ (test-t (string= (delete-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count 4) "bcbc"))
+ (test-t (string= (delete-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count 4 :from-end t) "bcbc"))
+ (test-t (string= (delete-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count -1) "abcabc"))
+ (test-t (string= (delete-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count -10) "abcabc"))
+ (test-t (string= (delete-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabc") :count -100) "abcabc"))
+ (test-t (string= (delete-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabcabcabc") :start 1) "abcbcbcbc"))
+ (test-t (string= (delete-if (lambda (arg) (string-equal arg #\a)) (copy-seq "abcabcabcabc") :start 1 :count 1) "abcbcabcabc"))
+ (test-t (string= (delete-if (lambda (arg) (eql arg #\a)) (copy-seq "abcabcabcabc") :start 1 :count 2) "abcbcbcabc"))
+ (test-t (string= (delete-if (lambda (arg) (eql arg #\a)) (copy-seq "abcabcabcabc") :start 1 :end nil :count 2) "abcbcbcabc"))
+ (test-t (string= (delete-if (lambda (arg) (eql arg #\a)) (copy-seq "abcabcabcabc") :start 1 :end 8) "abcbcbcabc"))
+ (test-t (string= (delete-if (lambda (arg) (eql arg #\a)) (copy-seq "abcabcabcabc") :start 1 :end 8 :count 1) "abcbcabcabc"))
+ (test-t (string= (delete-if (lambda (arg) (eql arg #\a)) (copy-seq "abcabcabcabc") :start 1 :end 8 :count 1 :from-end t) "abcabcbcabc"))
+ (test-t (string= (delete-if (lambda (arg) (eql arg #\a)) (copy-seq "abcabcabcabc") :start 1 :end 8 :count 0 :from-end t) "abcabcabcabc"))
+ (test-t (string= (delete-if (lambda (arg) (eql arg #\a)) (copy-seq "abcabcabcabc") :start 1 :end 8 :count -100 :from-end t) "abcabcabcabc"))
+ (test-t (string= (delete-if (lambda (arg) (eql arg #\a)) (copy-seq "abcabcabcabc") :start 1 :end 1) "abcabcabcabc"))
+ (test-t (string= (delete-if (lambda (arg) (eql arg #\a)) (copy-seq "abcabcabcabc") :start 2 :end 2) "abcabcabcabc"))
+ (test-t (string= (delete-if (lambda (arg) (eql arg #\a)) (copy-seq "abcabcabcabc") :start 12 :end 12) "abcabcabcabc"))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c)) '(b c b c)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'b))) (list 'a 'b 'c 'a 'b 'c)) '(a c a c)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'c))) (list 'a 'b 'c 'a 'b 'c)) '(a b a b)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'a 'a)) '()))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'z))) (list 'a 'b 'c)) '(a b c)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) '()) '()))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c) :count 0) '(a b c a b c)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c) :count 1) '(b c a b c)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c) :count 1 :from-end t) '(a b c b c)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c) :count 2) '(b c b c)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c) :count 2 :from-end t) '(b c b c)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c) :count 3) '(b c b c)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c) :count 3 :from-end t) '(b c b c)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c) :count 4) '(b c b c)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c) :count 4 :from-end t) '(b c b c)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c) :count -1) '(a b c a b c)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c) :count -10) '(a b c a b c)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c) :count -100) '(a b c a b c)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1) '(a b c b c b c b c)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :count 1) '(a b c b c a b c a b c)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :count 2) '(a b c b c b c a b c)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end nil :count 2) '(a b c b c b c a b c)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8) '(a b c b c b c a b c)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 1) '(a b c b c a b c a b c)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 1 :from-end t) '(a b c a b c b c a b c)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 0 :from-end t) '(a b c a b c a b c a b c)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count -100 :from-end t) '(a b c a b c a b c a b c)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 1) '(a b c a b c a b c a b c)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 2 :end 2) '(a b c a b c a b c a b c)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 12 :end 12) '(a b c a b c a b c a b c)))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list '(a) '(b) '(c) '(a) '(b) '(c)) :key car) '((b) (c) (b) (c))))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg 'a))) (list '(a . b) '(b . c) '(c . a) '(a . b) '(b . c) '(c . a)) :key cdr) '((a . b) (b . c) (a . b) (b . c))))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg "love"))) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car) '(("Love") ("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equal (delete-if-not (lambda (arg) (not (eql arg "love"))) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count -10) '(("Love") ("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equal (delete-if-not (lambda (arg) (not (string-equal arg "love"))) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car) '()))
+ (test-t (equal (delete-if-not (lambda (arg) (not (string-equal arg "love"))) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1) '(("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equal (delete-if-not (lambda (arg) (not (string-equal arg "love"))) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :from-end t) '(("Love") ("LOve") ("LOVe"))))
+ (test-t (equal (delete-if-not (lambda (arg) (not (string-equal arg "love"))) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 2 :from-end t) '(("Love") ("LOve"))))
+ (test-t (equal (delete-if-not (lambda (arg) (not (string-equal arg "love"))) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :start 1 :end 3) '(("Love") ("LOVE"))))
+ (test-t (equal (delete-if-not (lambda (arg) (not (string-equal arg "love"))) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :start 1 :end 3) '(("Love") ("LOVe") ("LOVE"))))
+ (test-t (equal (delete-if-not (lambda (arg) (not (string-equal arg "love"))) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :from-end t :start 1 :end 3) '(("Love") ("LOve") ("LOVE"))))
+ (test-t (equal (delete-if-not (lambda (arg) (not (string-equal arg "love"))) (list '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 10 :from-end t :start 1 :end 3) '(("Love") ("LOVE"))))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c)) #(b c b c)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'b))) (vector 'a 'b 'c 'a 'b 'c)) #(a c a c)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'c))) (vector 'a 'b 'c 'a 'b 'c)) #(a b a b)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'a 'a)) #()))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'z))) (vector 'a 'b 'c)) #(a b c)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) #()) #()))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c) :count 0) #(a b c a b c)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c) :count 1) #(b c a b c)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c) :count 1 :from-end t) #(a b c b c)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c) :count 2) #(b c b c)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c) :count 2 :from-end t) #(b c b c)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c) :count 3) #(b c b c)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c) :count 3 :from-end t) #(b c b c)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c) :count 4) #(b c b c)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c) :count 4 :from-end t) #(b c b c)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c) :count -1) #(a b c a b c)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c) :count -10) #(a b c a b c)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c) :count -100) #(a b c a b c)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1) #(a b c b c b c b c)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :count 1) #(a b c b c a b c a b c)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :count 2) #(a b c b c b c a b c)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end nil :count 2) #(a b c b c b c a b c)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8) #(a b c b c b c a b c)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 1) #(a b c b c a b c a b c)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 1 :from-end t) #(a b c a b c b c a b c)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count 0 :from-end t) #(a b c a b c a b c a b c)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 8 :count -100 :from-end t) #(a b c a b c a b c a b c)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 1 :end 1) #(a b c a b c a b c a b c)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 2 :end 2) #(a b c a b c a b c a b c)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector 'a 'b 'c 'a 'b 'c 'a 'b 'c 'a 'b 'c) :start 12 :end 12) #(a b c a b c a b c a b c)))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector '(a) '(b) '(c) '(a) '(b) '(c)) :key car) #((b) (c) (b) (c))))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg 'a))) (vector '(a . b) '(b . c) '(c . a) '(a . b) '(b . c) '(c . a)) :key cdr) #((a . b) (b . c) (a . b) (b . c))))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car) #(("Love") ("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (eql arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count -10) #(("Love") ("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (string-equal arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car) #()))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (string-equal arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car) #()))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (string-equal arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1) #(("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (string-equal arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1) #(("LOve") ("LOVe") ("LOVE"))))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (string-equal arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :from-end t) #(("Love") ("LOve") ("LOVe"))))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (string-equal arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :from-end t) #(("Love") ("LOve") ("LOVe"))))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (string-equal arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 2 :from-end t) #(("Love") ("LOve"))))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (string-equal arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 2 :from-end t) #(("Love") ("LOve"))))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (string-equal arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :start 1 :end 3) #(("Love") ("LOVE"))))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (string-equal arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :start 1 :end 3) #(("Love") ("LOVe") ("LOVE"))))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (string-equal arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 1 :from-end t :start 1 :end 3) #(("Love") ("LOve") ("LOVE"))))
+ (test-t (equalp (delete-if-not (lambda (arg) (not (string-equal arg "love"))) (vector '("Love") '("LOve") '("LOVe") '("LOVE")) :key car :count 10 :from-end t :start 1 :end 3) #(("Love") ("LOVE"))))
+ (test-t (string= (delete-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc")) "bcbc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "")) ""))
+ (test-t (string= (delete-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "xyz")) "xyz"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "ABCABC") :key char-downcase) "BCBC"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count 1) "bcabc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count 1 :from-end t) "abcbc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count 0) "abcabc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count -10) "abcabc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count 0) "abcabc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc")) "bcbc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (string-equal arg #\b))) (copy-seq "abcabc")) "acac"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (string-equal arg #\c))) (copy-seq "abcabc")) "abab"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count 0) "abcabc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count 1) "bcabc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count 1 :from-end t) "abcbc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count 2) "bcbc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count 2 :from-end t) "bcbc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count 3) "bcbc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count 3 :from-end t) "bcbc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count 4) "bcbc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count 4 :from-end t) "bcbc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count -1) "abcabc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count -10) "abcabc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabc") :count -100) "abcabc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabcabcabc") :start 1) "abcbcbcbc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (string-equal arg #\a))) (copy-seq "abcabcabcabc") :start 1 :count 1) "abcbcabcabc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (eql arg #\a))) (copy-seq "abcabcabcabc") :start 1 :count 2) "abcbcbcabc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (eql arg #\a))) (copy-seq "abcabcabcabc") :start 1 :end nil :count 2) "abcbcbcabc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (eql arg #\a))) (copy-seq "abcabcabcabc") :start 1 :end 8) "abcbcbcabc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (eql arg #\a))) (copy-seq "abcabcabcabc") :start 1 :end 8 :count 1) "abcbcabcabc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (eql arg #\a))) (copy-seq "abcabcabcabc") :start 1 :end 8 :count 1 :from-end t) "abcabcbcabc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (eql arg #\a))) (copy-seq "abcabcabcabc") :start 1 :end 8 :count 0 :from-end t) "abcabcabcabc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (eql arg #\a))) (copy-seq "abcabcabcabc") :start 1 :end 8 :count -100 :from-end t) "abcabcabcabc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (eql arg #\a))) (copy-seq "abcabcabcabc") :start 1 :end 1) "abcabcabcabc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (eql arg #\a))) (copy-seq "abcabcabcabc") :start 2 :end 2) "abcabcabcabc"))
+ (test-t (string= (delete-if-not (lambda (arg) (not (eql arg #\a))) (copy-seq "abcabcabcabc") :start 12 :end 12) "abcabcabcabc"))
+ (test-t (equal (remove-duplicates "aBcDAbCd" :test char-equal :from-end t) "aBcD"))
+ (test-t (equal (remove-duplicates '(a b c b d d e)) '(a c b d e)))
+ (test-t (equal (remove-duplicates '(a b c b d d e) :from-end t) '(a b c d e)))
+ (test-t (let* ((list0 (list 0 1 2 3 4 5 6)) (list (delete-duplicates list0 :key oddp :start 1 :end 6))) (equal list '(0 4 5 6))))
+ (test-t (let* ((list0 (list 2 1 0 1 0 1 2)) (list (remove-duplicates list0))) (and (not (eq list0 list)) (equal list0 '(2 1 0 1 0 1 2)) (equal list '(0 1 2)))))
+ (test-t (let* ((vector0 (vector 2 1 0 1 0 1 2)) (vector (remove-duplicates vector0))) (and (not (eq vector0 vector)) (equalp vector0 #(2 1 0 1 0 1 2)) (equalp vector #(0 1 2)))))
+ (test-t (equal (remove-duplicates (list 0 1 2 2 3 3 3)) '(0 1 2 3)))
+ (test-t (equal (remove-duplicates (list 0 0 0 2 0 1 1 2 2 2 1 1 1 1 2)) '(0 1 2)))
+ (test-t (equal (remove-duplicates (list 'a 'a 'b 'c 'c)) '(a b c)))
+ (test-t (equal (remove-duplicates (list 0 1 2)) '(0 1 2)))
+ (test-t (equal (remove-duplicates (list 2 0 2 1 1 1 0 0 0 1 2)) '(0 1 2)))
+ (test-t (equal (remove-duplicates (list)) '()))
+ (test-t (equal (remove-duplicates (list '(x . 0) '(y . 1) '(z . 2) '(a . 0) '(b . 1) '(c . 2)) :key cdr) '((a . 0) (b . 1) (c . 2))))
+ (test-t (equal (remove-duplicates (list '(x . 0) '(y . 1) '(z . 2) '(a . 0) '(b . 1) '(c . 2)) :key cdr :test (lambda (a b) (and (oddp a) (oddp b)))) '((x . 0) (z . 2) (a . 0) (b . 1) (c . 2))))
+ (test-t (equal (remove-duplicates (list '(x . 0) '(y . 1) '(z . 2) '(a . 0) '(b . 1) '(c . 2)) :key cdr :test (lambda (a b) (and (evenp a) (evenp b)))) '((y . 1) (b . 1) (c . 2))))
+ (test-t (equal (remove-duplicates (list 0 1 2 0 1 2 0 1 2 0 1 2) :start 3 :end 9) '(0 1 2 0 1 2 0 1 2)))
+ (test-t (equal (remove-duplicates (list '(0 . 0) '(1 . 1) '(2 . 2) '(0 . 3) '(1 . 4) '(2 . 5) '(0 . 6) '(1 . 7) '(2 . 8) '(0 . 9) '(1 . 10) '(2 . 11))) (list '(0 . 0) '(1 . 1) '(2 . 2) '(0 . 3) '(1 . 4) '(2 . 5) '(0 . 6) '(1 . 7) '(2 . 8) '(0 . 9) '(1 . 10) '(2 . 11))))
+ (test-t (equal (remove-duplicates (list '(0 . 0) '(1 . 1) '(2 . 2) '(0 . 3) '(1 . 4) '(2 . 5) '(0 . 6) '(1 . 7) '(2 . 8) '(0 . 9) '(1 . 10) '(2 . 11)) :key car) '((0 . 9) (1 . 10) (2 . 11))))
+ (test-t (equal (remove-duplicates (list '(0 . 0) '(1 . 1) '(2 . 2) '(0 . 3) '(1 . 4) '(2 . 5) '(0 . 6) '(1 . 7) '(2 . 8) '(0 . 9) '(1 . 10) '(2 . 11)) :key car :from-end t) (list '(0 . 0) '(1 . 1) '(2 . 2))))
+ (test-t (equal (remove-duplicates (list '(0 . 0) '(1 . 1) '(2 . 2) '(0 . 3) '(1 . 4) '(2 . 5) '(0 . 6) '(1 . 7) '(2 . 8) '(0 . 9) '(1 . 10) '(2 . 11)) :start 3 :key car) (list '(0 . 0) '(1 . 1) '(2 . 2) '(0 . 9) '(1 . 10) '(2 . 11))))
+ (test-t (equal (remove-duplicates (list '(0 . 0) '(1 . 1) '(2 . 2) '(0 . 3) '(1 . 4) '(2 . 5) '(0 . 6) '(1 . 7) '(2 . 8) '(0 . 9) '(1 . 10) '(2 . 11)) :start 3 :key car :from-end t) (list '(0 . 0) '(1 . 1) '(2 . 2) '(0 . 3) '(1 . 4) '(2 . 5))))
+ (test-t (equal (remove-duplicates (list '(0 . 0) '(1 . 1) '(2 . 2) '(0 . 3) '(1 . 4) '(2 . 5) '(0 . 6) '(1 . 7) '(2 . 8) '(0 . 9) '(1 . 10) '(2 . 11)) :start 3 :end nil :key car) (list '(0 . 0) '(1 . 1) '(2 . 2) '(0 . 9) '(1 . 10) '(2 . 11))))
+ (test-t (equal (remove-duplicates (list '(0 . 0) '(1 . 1) '(2 . 2) '(0 . 3) '(1 . 4) '(2 . 5) '(0 . 6) '(1 . 7) '(2 . 8) '(0 . 9) '(1 . 10) '(2 . 11)) :start 3 :end 9 :key car) '((0 . 0) (1 . 1) (2 . 2) (0 . 6) (1 . 7) (2 . 8) (0 . 9) (1 . 10) (2 . 11))))
+ (test-t (equal (remove-duplicates (list '(0 . 0) '(1 . 1) '(2 . 2) '(0 . 3) '(1 . 4) '(2 . 5) '(0 . 6) '(1 . 7) '(2 . 8) '(0 . 9) '(1 . 10) '(2 . 11)) :start 3 :end 9 :key car :from-end t) (list '(0 . 0) '(1 . 1) '(2 . 2) '(0 . 3) '(1 . 4) '(2 . 5) '(0 . 9) '(1 . 10) '(2 . 11))))
+ (test-t (equal (remove-duplicates (list "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday" "Sunday") :key length) (list "Tuesday" "Wednesday" "Saturday" "Sunday")))
+ (test-t (equal (remove-duplicates (list "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday" "Sunday") :key (lambda (arg) (char arg 0)) :test char=) (list "Monday" "Wednesday" "Thursday" "Friday" "Sunday")))
+ (test-t (equal (remove-duplicates (list #\a #\b #\c #\A #\B #\C) :key char-upcase) '(#\A #\B #\C)))
+ (test-t (equal (remove-duplicates (list #\a #\b #\c #\A #\B #\C) :key char-upcase :from-end t) '(#\a #\b #\c)))
+ (test-t (equal (remove-duplicates (list #\a #\b #\c #\A #\B #\C) :test char=) (list #\a #\b #\c #\A #\B #\C)))
+ (test-t (equal (remove-duplicates (list #\a #\b #\c #\A #\B #\C) :test char-equal) (list #\A #\B #\C)))
+ (test-t (equal (remove-duplicates (list #\a #\b #\c #\A #\B #\C) :test char-equal :from-end t) (list #\a #\b #\c)))
+ (test-t (equal (remove-duplicates (list #\a #\1 #\b #\1 #\2 #\c #\0 #\A #\0 #\B #\C #\9) :key alpha-char-p) (list #\C #\9)))
+ (test-t (equal (remove-duplicates (list #\a #\1 #\b #\1 #\2 #\c #\0 #\A #\0 #\B #\C #\9) :key alphanumericp) (list #\9)))
+ (test-t (equal (remove-duplicates (list '(#\A . 0) '(#\b . 1) '(#\C . 2) '(#\a . 3) '(#\B . 4) '(#\c . 5) '(#\A . 6) '(#\b . 7) '(#\C . 8) '(#\a . 9) '(#\B . 10) '(#\c . 11))) (list '(#\A . 0) '(#\b . 1) '(#\C . 2) '(#\a . 3) '(#\B . 4) '(#\c . 5) '(#\A . 6) '(#\b . 7) '(#\C . 8) '(#\a . 9) '(#\B . 10) '(#\c . 11))))
+ (test-t (equal (remove-duplicates (list '(#\A . 0) '(#\b . 1) '(#\C . 2) '(#\a . 3) '(#\B . 4) '(#\c . 5) '(#\A . 6) '(#\b . 7) '(#\C . 8) '(#\a . 9) '(#\B . 10) '(#\c . 11)) :key car) (list '(#\A . 6) '(#\b . 7) '(#\C . 8) '(#\a . 9) '(#\B . 10) '(#\c . 11))))
+ (test-t (equal (remove-duplicates (list '(#\A . 0) '(#\b . 1) '(#\C . 2) '(#\a . 3) '(#\B . 4) '(#\c . 5) '(#\A . 6) '(#\b . 7) '(#\C . 8) '(#\a . 9) '(#\B . 10) '(#\c . 11)) :key car :start 3 :end 9) (list '(#\A . 0) '(#\b . 1) '(#\C . 2) '(#\a . 3) '(#\B . 4) '(#\c . 5) '(#\A . 6) '(#\b . 7) '(#\C . 8) '(#\a . 9) '(#\B . 10) '(#\c . 11))))
+ (test-t (equal (remove-duplicates (list '(#\A . 0) '(#\b . 1) '(#\C . 2) '(#\a . 3) '(#\B . 4) '(#\c . 5) '(#\A . 6) '(#\b . 7) '(#\C . 8) '(#\a . 9) '(#\B . 10) '(#\c . 11)) :key car :start 3 :end 9 :test char-equal) (list '(#\A . 0) '(#\b . 1) '(#\C . 2) '(#\A . 6) '(#\b . 7) '(#\C . 8) '(#\a . 9) '(#\B . 10) '(#\c . 11))))
+ (test-t (equal (remove-duplicates (list '(#\A . 0) '(#\b . 1) '(#\C . 2) '(#\a . 3) '(#\B . 4) '(#\c . 5) '(#\A . 6) '(#\b . 7) '(#\C . 8) '(#\a . 9) '(#\B . 10) '(#\c . 11)) :key car :start 3 :end 9 :test char-equal :from-end t) (list '(#\A . 0) '(#\b . 1) '(#\C . 2) '(#\a . 3) '(#\B . 4) '(#\c . 5) '(#\a . 9) '(#\B . 10) '(#\c . 11))))
+ (test-t (equal (remove-duplicates (list '(#\A . 0) '(#\b . 1) '(#\C . 2) '(#\a . 3) '(#\B . 4) '(#\c . 5) '(#\A . 6) '(#\b . 7) '(#\C . 8) '(#\a . 9) '(#\B . 10) '(#\c . 11)) :key car :start 3) (list '(#\A . 0) '(#\b . 1) '(#\C . 2) '(#\A . 6) '(#\b . 7) '(#\C . 8) '(#\a . 9) '(#\B . 10) '(#\c . 11))))
+ (test-t (equal (remove-duplicates (list '(#\A . 0) '(#\b . 1) '(#\C . 2) '(#\a . 3) '(#\B . 4) '(#\c . 5) '(#\A . 6) '(#\b . 7) '(#\C . 8) '(#\a . 9) '(#\B . 10) '(#\c . 11)) :key car :start 3 :end nil) (list '(#\A . 0) '(#\b . 1) '(#\C . 2) '(#\A . 6) '(#\b . 7) '(#\C . 8) '(#\a . 9) '(#\B . 10) '(#\c . 11))))
+ (test-t (equal (remove-duplicates (list '(#\A . 0) '(#\b . 1) '(#\C . 2) '(#\a . 3) '(#\B . 4) '(#\c . 5) '(#\A . 6) '(#\b . 7) '(#\C . 8) '(#\a . 9) '(#\B . 10) '(#\c . 11)) :key car :start 3 :from-end t) (list '(#\A . 0) '(#\b . 1) '(#\C . 2) '(#\a . 3) '(#\B . 4) '(#\c . 5) '(#\A . 6) '(#\b . 7) '(#\C . 8))))
+ (test-t (equal (remove-duplicates (list '(#\A . 0) '(#\b . 1) '(#\C . 2) '(#\a . 3) '(#\B . 4) '(#\c . 5) '(#\A . 6) '(#\b . 7) '(#\C . 8) '(#\a . 9) '(#\B . 10) '(#\c . 11)) :key car :end 9) (list '(#\a . 3) '(#\B . 4) '(#\c . 5) '(#\A . 6) '(#\b . 7) '(#\C . 8) '(#\a . 9) '(#\B . 10) '(#\c . 11))))
+ (test-t (equalp (remove-duplicates (vector 0 1 2 2 3 3 3)) #(0 1 2 3)))
+ (test-t (equalp (remove-duplicates (vector 0 0 0 2 0 1 1 2 2 2 1 1 1 1 2)) #(0 1 2)))
+ (test-t (equalp (remove-duplicates (vector 'a 'a 'b 'c 'c)) #(a b c)))
+ (test-t (equalp (remove-duplicates (vector 0 1 2)) #(0 1 2)))
+ (test-t (equalp (remove-duplicates (vector 2 0 2 1 1 1 0 0 0 1 2)) #(0 1 2)))
+ (test-t (equalp (remove-duplicates (vector)) #()))
+ (test-t (equalp (remove-duplicates (vector '(x . 0) '(y . 1) '(z . 2) '(a . 0) '(b . 1) '(c . 2)) :key cdr) #((a . 0) (b . 1) (c . 2))))
+ (test-t (equalp (remove-duplicates (vector 0 1 2 0 1 2 0 1 2 0 1 2) :start 3 :end 9) #(0 1 2 0 1 2 0 1 2)))
+ (test-t (equalp (remove-duplicates (vector "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday" "Sunday") :key length) (vector "Tuesday" "Wednesday" "Saturday" "Sunday")))
+ (test-t (equalp (remove-duplicates (vector #\a #\b #\c #\A #\B #\C) :key char-upcase) #(#\A #\B #\C)))
+ (test-t (equalp (remove-duplicates (vector #\a #\b #\c #\A #\B #\C) :key char-upcase :from-end t) #(#\a #\b #\c)))
+ (test-t (equalp (remove-duplicates (vector #\a #\b #\c #\A #\B #\C) :test char=) (vector #\a #\b #\c #\A #\B #\C)))
+ (test-t (equalp (remove-duplicates (vector #\a #\b #\c #\A #\B #\C) :test char-equal) (vector #\A #\B #\C)))
+ (test-t (equalp (remove-duplicates (vector #\a #\b #\c #\A #\B #\C) :test char-equal :from-end t) (vector #\a #\b #\c)))
+ (test-t (equalp (remove-duplicates (vector #\a #\1 #\b #\1 #\2 #\c #\0 #\A #\0 #\B #\C #\9) :key alpha-char-p) (vector #\C #\9)))
+ (test-t (equalp (remove-duplicates (vector #\a #\1 #\b #\1 #\2 #\c #\0 #\A #\0 #\B #\C #\9) :key alphanumericp) (vector #\9)))
+ (test-t (string= (remove-duplicates (copy-seq "")) ""))
+ (test-t (string= (remove-duplicates (copy-seq "abc")) "abc"))
+ (test-t (string= (remove-duplicates (copy-seq "abcabc")) "abc"))
+ (test-t (string= (remove-duplicates (copy-seq "cbaabc")) "abc"))
+ (test-t (string= (remove-duplicates (copy-seq "cbaabc") :from-end t) "cba"))
+ (test-t (string= (remove-duplicates (copy-seq "cbaabcABCCBA")) "abcCBA"))
+ (test-t (string= (remove-duplicates (copy-seq "cbaabcABCCBA") :from-end t) "cbaABC"))
+ (test-t (string= (remove-duplicates (copy-seq "cbaabcABCCBA") :key char-downcase) "CBA"))
+ (test-t (string= (remove-duplicates (copy-seq "cbaabcABCCBA") :key char-downcase :from-end t) "cba"))
+ (test-t (string= (remove-duplicates (copy-seq "cbaabcABCCBA") :start 3) "cbaabcCBA"))
+ (test-t (string= (remove-duplicates (copy-seq "cbaabcABCCBA") :start 3 :from-end t) "cbaabcABC"))
+ (test-t (string= (remove-duplicates (copy-seq "cbaabcABCCBA") :start 3 :end 9) "cbaabcABCCBA"))
+ (test-t (string= (remove-duplicates (copy-seq "cbaabcABCCBA") :start 3 :end 9 :key char-upcase) "cbaABCCBA"))
+ (test-t (string= (remove-duplicates (copy-seq "cbaabcABCCBA") :start 3 :end 9 :key char-upcase :from-end t) "cbaabcCBA"))
+ (test-t (string= (remove-duplicates (copy-seq "cbaabcABCCBA") :start 3 :end 9 :test char-equal :from-end t) "cbaabcCBA"))
+ (test-t (string= (remove-duplicates (copy-seq "cbaabcABCCBA") :start 3 :end 9 :key upper-case-p :test eq) "cbacCCBA"))
+ (test-t (string= (remove-duplicates (copy-seq "cbaabcABCCBA") :start 3 :end 9 :key upper-case-p :test eq :from-end t) "cbaaACBA"))
+
+ ;;
+ ;; ----------------------------------- end sacla ---------------------------------------------
+ ;;
+
+ (let ((boole-n-vector
+ (vector boole-clr boole-and boole-andc1 boole-2
+ boole-andc2 boole-1 boole-xor boole-ior
+ boole-nor boole-eqv boole-c1 boole-orc1
+ boole-c2 boole-orc2 boole-nand boole-set)))
+ (do ((n 0 (+ n 1)))
+ ((= n 16))
+ (if (not (= n (logand (boole (boole-n-vector n) #b0101 #b0011) #b1111)))
+ (display (format #f "~A: ~A ~A~%" n (boole-n-vector n) (logand (boole (boole-n-vector n) #b0101 #b0011) #b1111)))))
+ (let ((lst '()))
+ (do ((n #b0000 (+ n 1)))
+ ((> n #b1111))
+ (set! lst (cons (boole (boole-n-vector n) 5 3) lst)))
+ (if (not (equal? (reverse lst)
+ (list 0 1 2 3 4 5 6 7 -8 -7 -6 -5 -4 -3 -2 -1)))
+ (display (format #f ";boole: ~A~%" (reverse lst))))))
+
+ (test (digit-char-p #\a) #f)
+ (test (digit-char-p #\a 16) 10)
+ (test (let ((v (vector 1 2 3 4 5))) (cl-fill v 32 :start 2 :end 3)) '#(1 2 32 4 5))
+ (test (let ((v (vector 1 2 3 4 5))) (cl-fill v 32 :start 2)) '#(1 2 32 32 32))
+ (test (let ((v (vector 1 2 3))) (cl-fill v 32)) '#(32 32 32))
+ (test (let ((lst (list 1 2 3))) (cl-fill lst "hi")) '("hi" "hi" "hi"))
+ (test (some zero? '(1 2 3)) #f)
+ (test (some zero? '(1 0 3)) #t)
+ (test (some (lambda args (apply > args)) #(1 2 3) #(2 3 4)) #f)
+ (test (some (lambda args (apply > args)) #(1 2 3) #(2 3 1)) #t)
+ (test (some (lambda (a) (and (positive? a) a)) '(0 -3 1 2)) 1)
+ (test (notany zero? '(1 2 3)) #t)
+ (test (notany zero? '(1 0 3)) #f)
+ (test (notany (lambda args (apply > args)) #(1 2 3) #(2 3 4)) #t)
+ (test (notany (lambda args (apply > args)) #(1 2 3) #(2 3 1)) #f)
+ (test (notany (lambda (a) (and (positive? a) a)) '(0 -3 1 2)) #f)
+ (test (every zero? '(1 2 3)) #f)
+ (test (every zero? '(0 0)) #t)
+ (test (every (lambda args (apply < args)) #(1 2 3) #(2 3 4)) #t)
+ (test (every (lambda args (apply < args)) #(1 2 3) #(2 3 1)) #f)
+ (test (notevery zero? '(1 2 3)) #t)
+ (test (notevery zero? '(0 0)) #f)
+ (test (notevery (lambda args (apply < args)) #(1 2 3) #(2 3 4)) #f)
+ (test (notevery (lambda args (apply < args)) #(1 2 3) #(2 3 1)) #t)
+ (test ((complement >) 1 2 3) #t)
+ (test (cl-abs -1) 1)
+ (test (cl-abs 1.0) 1.0)
+ (test (cl-abs 1+i) (magnitude 1+i))
+ (test (signum 3) 1)
+ (test (signum 0) 0)
+ (test (signum -3) -1)
+ (test (signum 3.0) 1.0)
+ (test (isqrt 12) 3)
+ (test (1+ 1) 2)
+ (test (1- 1) 0)
+ (test (/= 0 0) #f)
+ (test (/= 1 2 3) #t)
+ (test (/= 3 45 3) #f)
+ (test (zerop 0) #t)
+ (test (zerop 1) #f)
+ (test (minusp -1) #t)
+ (test (minusp 1) #f)
+ (test (plusp 1) #t)
+ (test (plusp -1) #f)
+ (test (oddp 3) #t)
+ (test (oddp 4) #f)
+ (test (evenp 3) #f)
+ (test (evenp 4) #t)
+ (test (conjugate 1+i) 1-i)
+ (test (conjugate 3.7) 3.7)
+ (test (ldb (byte 8 8) #x123) 1)
+ (test (ldb (byte 8 0) #x123) #x23)
+ (test (ldb (byte 4 4) #x123) 2)
+ (test (ldb (byte 1 4) #x123) 0)
+ (test (ldb (byte 1 5) #x123) 1)
+ (test (ldb (byte 16 16) -1) 65535)
+ (test (ldb (byte 12 18) #x12345678) 1165)
+ (test (dpb 1 (byte 8 0) #x100) #x101)
+ (test (dpb #x22 (byte 8 1) #x100) #x44) ;!
+ (test (dpb #x22 (byte 8 8) #x100) #x2200) ; not #x2300
+ (test (dpb #x1001 (byte 16 0) -1) -61439)
+ (test (dpb #x1 (byte 8 8) #xffffff) #xff01ff)
+ (test (dpb #x1 (byte 8 16) #xffffff) #x1ffff)
+ (test (dpb #x1 (byte 8 16) #xffffffff) #xff01ffff)
+ (test (dpb -1 (byte 8 0) 0) 255)
+ (test (dpb -1 (byte 8 2) 0) 1020)
+ (test (dpb 0 (byte 16 16) #xffffffff) 65535)
+ (test (mask-field (byte 8 8) #xfffffff) #xff00)
+ (test (mask-field (byte 1 8) #xfffffff) #x100)
+ (test (ldb-test (byte 1 8) #xfffffff) #t)
+ (test (ldb-test (byte 1 8) #x10ff) #f)
+ (test (deposit-field #xabcdef (byte 8 8) 0) #xcd00)
+ (test (deposit-field #xabcdef (byte 8 4) 0) #xde0)
+ (test (deposit-field #xabcdef (byte 8 8) #xffffffff) #xffffcdff)
+ (test (count-if zero? '(0 1 2 0)) 2)
+ (test (count-if-not zero? '(0 1 2 0 3)) 3)
+ (test (count-if zero? '#(0 1 2 0)) 2)
+ (test (count-if zero? '((0 1) (1 0) (2 3) (0 1)) :key car) 2)
+ (test (count-if zero? '(0 1 2 0) :from-end #t) 2)
+ (test (count-if zero? '(0 1 2 0) :start 1) 1)
+ (test (count-if zero? '(0 1 2 0) :start 1 :end 3) 0)
+ (test (count-if zero? '(0 1 2 0) :end 3) 1)
+ (test (count-if zero? '(0 1 2 0) :end 4) 2)
+ (test (count-if zero? '(0 1 2 0) :end 4 :from-end #t) 2)
+ (test (identity 1) 1)
+ (test (stringp "hi") #t)
+ (test (stringp #\h) #f)
+ (test (characterp #\a) #t)
+ (test (characterp "a") #f)
+ (test (realp 1) #t)
+ (test (realp 3.14) #t)
+ (test (realp 1.0+i) #f)
+ (test (complexp 1) #f)
+ (test (complexp 1.0+i) #t)
+ (test (floatp 1) #f)
+ (test (floatp 3.14) #t)
+ (test (rationalp 1) #t)
+ (test (rationalp 1.12) #f)
+ (test (rationalp 3/4) #t)
+ (test (rationalp "hiho") #f)
+ (test (integerp "hiho") #f)
+ (test (integerp 3.14) #f)
+ (test (integerp 3) #t)
+ (test (numberp 3) #t)
+ (test (numberp "hiho") #f)
+ (test (consp '()) #f)
+ (test (consp '(1 2)) #t)
+ (test (consp 3) #f)
+ (test (atom 3) #t)
+ (test (atom '()) #t)
+ (test (atom '(1 2 3)) #f)
+ (test (vectorp '#(1 2 3)) #t)
+ (test (vectorp "hiho") #f)
+ (test (symbolp 'hi) #t)
+ (test (symbolp "hiho") #f)
+ (test (last '(1 2 3)) '(3))
+ (test (last '()) '())
+ (test (tree-equal '() '()) #t)
+ (test (tree-equal (list 1 2 (list 3 5) 5) (list 1 2 (list 3 4) 5)) #f)
+ (test (tree-equal (list 1 2 (list 3 4) 5) (list 1 2 (list 3 4) 5)) #t)
+ (test (nthcdr 0 '(1 2 3)) '(1 2 3))
+ (test (nthcdr 2 '(1 2 3)) '(3))
+ (test (nthcdr 4 '(1 2 3)) '())
+ (test (listp '()) #t)
+ (test (listp 3) #f)
+ (test (listp '(1 . 2)) #t)
+ (test (listp (list 1 2)) #t)
+ (test (null '()) #t)
+ (test (null '(1 2 3)) #f)
+ (test (butlast '(1 2 3 4)) '(1 2 3))
+ (test (butlast '((1 2) (3 4))) '((1 2)))
+ (test (butlast '(1)) '())
+ (test (butlast '()) '())
+ (test (copy-list '()) '())
+ (test (copy-list '(1 2 3)) '(1 2 3))
+ (test (copy-tree '(1 (2 3) 4)) '(1 (2 3) 4))
+ (test (rest '(1 2 3)) '(2 3))
+ (test (let ((i1 1) (i2 2)) (setf i1 3) (list i1 i2)) (list 3 2))
+ (test (let ((i1 1) (i2 2)) (setf i1 123 i2 32) (list i1 i2)) (list 123 32))
+ (test (let ((hi (vector 1 2 3))) (setf (hi 0) (+ 1 2) (hi 2) (* 2 3)) hi) (vector 3 2 6))
+ (test (let ((val 0)) (progn (+ val 1))) 1)
+ (test (let ((val 0)) (prog1 (+ val 1) (+ val 2))) 1)
+ (test (let ((val 0)) (prog2 (+ val 1) (+ val 2) (+ val 3))) 2)
+ (test (let ((lst (list 1))) (push 2 lst)) (list 2 1))
+ (test (let ((lst (list 1 2 3))) (list (pop lst) lst)) (list 1 (list 2 3)))
+ (test (let ((x 0)) (incf x) x) 1)
+ (test (let ((x 0)) (incf x 2) x) 2)
+ (test (let ((x 0)) (decf x) x) -1)
+ (test (let ((x 0)) (decf x 2) x) -2)
+ (test (let ((lst (list 1 2))) (pushnew 1 lst)) (list 1 2))
+ (test (let ((lst (list 1 2))) (pushnew 3 lst)) (list 3 1 2))
+ (test (let ((a 1) (b 2)) (psetq a b b a) (list a b)) '(2 1))
+ (test (let ((a 1) (b 2) (c 3)) (psetq a (+ b c) b (+ a c) c (+ a b)) (list a b c)) '(5 4 3))
+ (test (let ((val #f)) (unless val 1)) 1)
+ (test (let ((val (list 1 2 3 4 5 6 7 8 9 10))) (first val)) 1)
+ (test (let ((val (list 1 2 3 4 5 6 7 8 9 10))) (second val)) 2)
+ (test (let ((val (list 1 2 3 4 5 6 7 8 9 10))) (third val)) 3)
+ (test (let ((val (list 1 2 3 4 5 6 7 8 9 10))) (fourth val)) 4)
+ (test (let ((val (list 1 2 3 4 5 6 7 8 9 10))) (fifth val)) 5)
+ (test (let ((val (list 1 2 3 4 5 6 7 8 9 10))) (sixth val)) 6)
+ (test (let ((val (list 1 2 3 4 5 6 7 8 9 10))) (seventh val)) 7)
+ (test (let ((val (list 1 2 3 4 5 6 7 8 9 10))) (eighth val)) 8)
+ (test (let ((val (list 1 2 3 4 5 6 7 8 9 10))) (ninth val)) 9)
+ (test (let ((val (list 1 2 3 4 5 6 7 8 9 10))) (tenth val)) 10)
+ (test (let ((val (list 1 2 3 4 5 6 7 8 9 10))) (nth 7 val)) 8)
+ (test (let ((val (list 1 2 3 4 5 6 7 8 9 10))) (nth 17 val)) '())
+
+ (test (let*-values (((x) (values 1))) x) 1)
+ (test (let*-values ((x (values 1))) x) '(1))
+ (test (let*-values (((x) (values 1)) ((y) (values 2))) (list x y)) '(1 2))
+ (test (let*-values (((x) (values 1)) ((y) (values (+ x 1)))) (list x y)) '(1 2))
+
+ (test (let () (enum one two three) (list one two three)) '(0 1 2))
+
+ (test (let () (defstruct x1 a b c) (let ((xx1 (make-x1 1 2 3))) (list (x1-a xx1) (x1-b xx1) (x1-c xx1) (x1? xx1)))) '(1 2 3 #t))
+ (test (let () (defstruct x1 a (b "hi") (c 3/4)) (let ((xx1 (make-x1 1))) (list (x1-a xx1) (x1-b xx1) (x1-c xx1) (x1? xx1)))) '(1 "hi" 3/4 #t))
+ (test (let () (defstruct x1 a (b "hi") (c 3/4)) (let ((xx1 (make-x1 :b 1))) (list (x1-a xx1) (x1-b xx1) (x1-c xx1) (x1? xx1)))) '(#f 1 3/4 #t))
+ (test (let () (defstruct x1 a b c) (let ((xx1 (make-x1 1 2 3))) (set! (x1-a xx1) 32) (list (x1-a xx1) (x1-b xx1) (x1-c xx1)))) '(32 2 3))
+
+ (let ()
+ (defstruct ship (x 0.0) (y 0.0 :type 'real))
+ (test (let ((s1 (make-ship 1.0 2.0)))
+ (let ((s2 (copy-ship s1)))
+ (list (ship-x s2) (ship-y s2))))
+ '(1.0 2.0))
+ (test (let ((s3 (make-ship :y 1.0 :x 2.0)))
+ (list (ship-x s3) (ship-y s3)))
+ '(2.0 1.0)))
+
+ (let()
+ (defstruct ship1 x y)
+ (let ((s1 (make-ship1 "hi" (list 1 2 3))))
+ (let ((s2 (copy-ship1 s1)))
+ (test (list (ship1-x s2) (ship1-y s2)) '("hi" (1 2 3))))))
+
+ (let ()
+ (defstruct ship2 (x 0.0) (y 1.0 :read-only #t))
+ (let ((s1 (make-ship2)))
+ (test (let ((tag (catch #t
+ (lambda ()
+ (set! (ship2-y s1) 123.0))
+ (lambda args (car args)))))
+ tag)
+ 'error)
+ (set! (ship2-x s1) 123.0)
+ (test (ship2-x s1) 123.0)))
+
+ (let ()
+ (defstruct (ship3 (:conc-name hi)) (x 0.0) (y 1.0 :read-only #t))
+ (let ((s1 (make-ship3 :x 3.0)))
+ (test (list (hi-x s1) (hi-y s1)) '(3.0 1.0))))
+
+ (let ()
+ (defstruct (ship4 (:constructor new-ship)) (x 0.0) (y 1.0 :read-only #t))
+ (let ((s1 (new-ship 1.0 2.0)))
+ (test (list (ship4-x s1) (ship4-y s1)) '(1.0 2.0))))
+
+ )
+
+ (let ()
+ ;; tiny-clos
+
+ ; Mode: Scheme
+ ;
+ ;
+ ; *************************************************************************
+ ; Copyright (c) 1992 Xerox Corporation.
+ ; All Rights Reserved.
+ ;
+ ; Use, reproduction, and preparation of derivative works are permitted.
+ ; Any copy of this software or of any derivative work must include the
+ ; above copyright notice of Xerox Corporation, this paragraph and the
+ ; one after it. Any distribution of this software or derivative works
+ ; must comply with all applicable United States export control laws.
+ ;
+ ; This software is made available AS IS, and XEROX CORPORATION DISCLAIMS
+ ; ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE
+ ; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ ; PURPOSE, AND NOTWITHSTANDING ANY OTHER PROVISION CONTAINED HEREIN, ANY
+ ; LIABILITY FOR DAMAGES RESULTING FROM THE SOFTWARE OR ITS USE IS
+ ; EXPRESSLY DISCLAIMED, WHETHER ARISING IN CONTRACT, TORT (INCLUDING
+ ; NEGLIGENCE) OR STRICT LIABILITY, EVEN IF XEROX CORPORATION IS ADVISED
+ ; OF THE POSSIBILITY OF SUCH DAMAGES.
+ ; *************************************************************************
+
+ ;
+ ; In order to make this code more easily portable, we have to be
+ ; explicit about its implementation dependencies. To do this, we
+ ; have the following variable. Please adjust it before trying to
+ ; run this code. See also the macro, scheme-implementation-case,
+ ; which follows shortly.
+ ;
+ ; Note that some of these dependencies (i.e. gsort) are purely for
+ ; convenience (i.e. saving me from writing sort from scratch).
+ ; Others are more pressing, like define-macro.
+ ;
+ ;
+ (define what-scheme-implementation
+ 's7
+ ; 'mit
+ ;'chez
+ ;'scm
+ ;'scheme48
+ )
+
+ (case what-scheme-implementation
+ ((scm)
+ (require 'sort)))
+
+ (define gsort
+ (case what-scheme-implementation
+ ((s7) (lambda (predicate list) (sort! list predicate)))
+ ((mit) (lambda (predicate list) (sort list predicate)))
+ ((chez) (lambda (predicate list) (sort predicate list)))
+ ((scheme48) (lambda (predicate list) (sort-list predicate list)))
+ ((scm) (lambda (predicate list) (sort list predicate)))))
+
+ (define simple-printer (lambda () barf))
+ (define ??? 'unspecified-result)
+
+ (define list*
+ (lambda args
+ (letrec ((chase
+ (lambda (args)
+ (cond ((null? args) '())
+ ((null? (cdr args)) (car args))
+ (else (cons (car args) (chase (cdr args))))))))
+ (chase args))))
+
+ (define apply*
+ (lambda (proc . args)
+ (apply proc (apply list* args))))
+
+ (define position-of
+ (lambda (x lst)
+ (if (eq? x (car lst)) 0 (+ 1 (position-of x (cdr lst))))))
+
+ (define map-append
+ (lambda (proc . lists)
+ (apply append (apply map (cons proc lists)))))
+
+ (define last
+ (lambda (l)
+ (if (null? l)
+ #f
+ (if (null? (cdr l))
+ (car l)
+ (last (cdr l))))))
+
+ (define every
+ (lambda (test . lists)
+ (let scan ((tails lists))
+ (if (member #t (map null? tails)) ;(any null? lists)
+ #t
+ (and (apply test (map car tails))
+ (scan (map cdr tails)))))))
+
+ (define remove
+ (lambda (x list)
+ (cond ((null? list) '())
+ ((eq? (car list) x) (cdr list))
+ (else (cons (car list) (remove x (cdr list)))))))
+
+ (define getl
+ (lambda (initargs name . not-found)
+ (letrec ((scan (lambda (tail)
+ (cond ((null? tail)
+ (if (pair? not-found)
+ (car not-found)
+ (error "GETL couldn't find" name)))
+ ((eq? (car tail) name) (cadr tail))
+ (else (scan (cddr tail)))))))
+ (scan initargs))))
+
+ (define union
+ (lambda lists
+ (letrec ((clean (lambda (list result)
+ (cond ((null? list) result)
+ ((memq (car list) result)
+ (clean (cdr list) result))
+ (else
+ (clean (cdr list) (cons (car list) result)))))))
+ (clean (apply append lists) '()))))
+
+ (define collect-if
+ (lambda (test? list)
+ (cond ((null? list) '())
+ ((test? (car list)) (cons (car list) (collect-if test? (cdr list))))
+ (else (collect-if test? (cdr list))))))
+
+ (define remove-duplicates
+ (lambda (list)
+ (let loop ((result-so-far '())
+ (remaining list))
+ (if (null? remaining)
+ result-so-far
+ (if (null? (memq (car remaining) result-so-far))
+ (loop (cons (car remaining) result-so-far)
+ (cdr remaining))
+ (loop result-so-far
+ (cdr remaining)))))))
+ ;
+ ; A simple topological sort.
+ ;
+ ; It's in this file so that both TinyClos and Objects can use it.
+ ;
+ ; This is a fairly modified version of code I originally got from Anurag
+ ; Mendhekar <anurag@moose.cs.indiana.edu>.
+ ;
+ ;
+
+ (define compute-std-cpl
+ (lambda (c get-direct-supers)
+ (top-sort ((build-transitive-closure get-direct-supers) c)
+ ((build-constraints get-direct-supers) c)
+ (std-tie-breaker get-direct-supers))))
+
+ (define top-sort
+ (lambda (elements constraints tie-breaker)
+ (let loop ((elements elements)
+ (constraints constraints)
+ (result '()))
+ (if (null? elements)
+ result
+ (let ((can-go-in-now
+ (collect-if
+ (lambda (x)
+ (every (lambda (constraint)
+ (or (not (eq? (cadr constraint) x))
+ (memq (car constraint) result)))
+ constraints))
+ elements)))
+ (if (null? can-go-in-now)
+ (error 'top-sort "Invalid constraints")
+ (let ((choice (if (null? (cdr can-go-in-now))
+ (car can-go-in-now)
+ (tie-breaker result
+ can-go-in-now))))
+ (loop
+ (collect-if (lambda (x) (not (eq? x choice)))
+ elements)
+ constraints
+ (append result (list choice))))))))))
+
+ (define std-tie-breaker
+ (lambda (get-supers)
+ (lambda (partial-cpl min-elts)
+ (let loop ((pcpl (reverse partial-cpl)))
+ (let ((current-elt (car pcpl)))
+ (let ((ds-of-ce (get-supers current-elt)))
+ (let ((common (collect-if (lambda (x)
+ (memq x ds-of-ce))
+ min-elts)))
+ (if (null? common)
+ (if (null? (cdr pcpl))
+ (error 'std-tie-breaker "Nothing valid")
+ (loop (cdr pcpl)))
+ (car common)))))))))
+
+ (define build-transitive-closure
+ (lambda (get-follow-ons)
+ (lambda (x)
+ (let track ((result '())
+ (pending (list x)))
+ (if (null? pending)
+ result
+ (let ((next (car pending)))
+ (if (memq next result)
+ (track result (cdr pending))
+ (track (cons next result)
+ (append (get-follow-ons next)
+ (cdr pending))))))))))
+
+ (define build-constraints
+ (lambda (get-follow-ons)
+ (lambda (x)
+ (let loop ((elements ((build-transitive-closure get-follow-ons) x))
+ (this-one '())
+ (result '()))
+ (if (or (null? this-one) (null? (cdr this-one)))
+ (if (null? elements)
+ result
+ (loop (cdr elements)
+ (cons (car elements)
+ (get-follow-ons (car elements)))
+ result))
+ (loop elements
+ (cdr this-one)
+ (cons (list (car this-one) (cadr this-one))
+ result)))))))
+
+ (define tiny-clos-version "1.7")
+
+ ; A very simple CLOS-like language, embedded in Scheme, with a simple
+ ; MOP. The features of the default base language are:
+ ;
+ ; * Classes, with instance slots, but no slot options.
+ ; * Multiple-inheritance.
+ ; * Generic functions with multi-methods and class specializers only.
+ ; * Primary methods and call-next-method; no other method combination.
+ ; * Uses Scheme's lexical scoping facilities as the class and generic
+ ; function naming mechanism. Another way of saying this is that
+ ; class, generic function and methods are first-class (meta)objects.
+ ;
+ ; While the MOP is simple, it is essentially equal in power to both MOPs
+ ; in AMOP. This implementation is not at all optimized, but the MOP is
+ ; designed so that it can be optimized. In fact, this MOP allows better
+ ; optimization of slot access extenstions than those in AMOP.
+ ;
+ ;
+ ;
+ ; In addition to calling a generic, the entry points to the default base
+ ; language are:
+ ;
+ ; (MAKE-CLASS list-of-superclasses list-of-slot-names)
+ ; (MAKE-GENERIC)
+ ; (MAKE-METHOD list-of-specializers procedure)
+ ; (ADD-METHOD generic method)
+ ;
+ ; (MAKE class . initargs)
+ ; (INITIALIZE instance initargs) ;Add methods to this,
+ ; ;don't call it directly.
+ ;
+ ; (SLOT-REF object slot-name)
+ ; (SLOT-SET! object slot-name new-value)
+ ;
+ ;
+ ; So, for example, one might do:
+ ;
+ ; (define <position> (make-class (list <object>) (list 'x 'y)))
+ ; (add-method initialize
+ ; (make-method (list <position>)
+ ; (lambda (call-next-method pos initargs)
+ ; (for-each (lambda (initarg-name slot-name)
+ ; (slot-set! pos
+ ; slot-name
+ ; (getl initargs initarg-name 0)))
+ ; '(x y)
+ ; '(x y)))))
+ ;
+ ; (set! p1 (make <position> 'x 1 'y 3))
+ ;
+ ;
+ ;
+ ; NOTE! Do not use EQUAL? to compare objects! Use EQ? or some hand
+ ; written procedure. Objects have a pointer to their class,
+ ; and classes are circular structures, and ...
+ ;
+ ;
+ ;
+ ; The introspective part of the MOP looks like the following. Note that
+ ; these are ordinary procedures, not generics.
+ ;
+ ; CLASS-OF
+ ;
+ ; CLASS-DIRECT-SUPERS
+ ; CLASS-DIRECT-SLOTS
+ ; CLASS-CPL
+ ; CLASS-SLOTS
+ ;
+ ; GENERIC-METHODS
+ ;
+ ; METHOD-SPECIALIZERS
+ ; METHOD-PROCEDURE
+ ;
+ ;
+ ; The intercessory protocol looks like (generics in uppercase):
+ ;
+ ; make
+ ; ALLOCATE-INSTANCE
+ ; INITIALIZE (really a base-level generic)
+ ;
+ ; class initialization
+ ; COMPUTE-CPL
+ ; COMPUTE-SLOTS
+ ; COMPUTE-GETTER-AND-SETTER
+ ;
+ ; add-method (Notice this is not a generic!)
+ ; COMPUTE-APPLY-GENERIC
+ ; COMPUTE-METHODS
+ ; COMPUTE-METHOD-MORE-SPECIFIC?
+ ; COMPUTE-APPLY-METHODS
+ ;
+
+ ;
+ ; OK, now let's get going. But, as usual, before we can do anything
+ ; interesting, we have to muck around for a bit first. First, we need
+ ; to load the support library.
+ ;
+ ; Note that there is no extension on the filename in the following load,
+ ; in particular, it isn't "support.scm" even though that is the name of
+ ; the file in the distribution at PARC. The idea is that when people
+ ; install the code at their site, they should rename all the files to
+ ; the appropriate extension, and then not change the load. This should
+ ; also make things work with binary files and the like. This comes from
+ ; my understanding of the CL world... I hope it is right.
+ ;
+ ;
+ ;
+ ; Then, we need to build what, in a more real implementation, would be
+ ; the interface to the memory subsystem: instances and entities. The
+ ; former are used for instances of instances of <class>; the latter
+ ; are used for instances of instances of <entity-class>. In this MOP,
+ ; none of this is visible to base- or MOP-level programmers.
+ ;
+ ; A few things to note, that have influenced the way all this is done:
+ ;
+ ; - R4RS doesn't provide a mechanism for specializing the
+ ; behavior of the printer for certain objects.
+ ;
+ ; - Some Scheme implementations bomb when printing circular
+ ; structures -- that is, arrays and/or lists that somehow
+ ; point back to themselves.
+ ;
+ ; So, the natural implementation of instances -- vectors whose first
+ ; field point to the class -- is straight on out. Instead, we use a
+ ; procedure to `encapsulate' that natural representation.
+ ;
+ ; Having gone that far, it makes things simpler to unify the way normal
+ ; instances and entities are handled, at least in the lower levels of
+ ; the system. Don't get faked out by this -- the user shouldn't think
+ ; of normal instances as being procedures, they aren't. (At least not
+ ; in this language.) If you are using this to teach, you probably want
+ ; to hide the implementation of instances and entities from people.
+ ;
+ ;
+ (define %allocate-instance
+ (lambda (class nfields)
+ (%allocate-instance-internal
+ class
+ #t
+ (lambda args
+ (error "An instance isn't a procedure -- can't apply it."))
+ nfields)))
+
+ (define %allocate-entity
+ (lambda (class nfields)
+ (%allocate-instance-internal
+ class
+ #f
+ (lambda args
+ (error "Tried to call an entity before its proc is set."))
+ nfields)))
+
+ (define %allocate-instance-internal ???)
+ (define %instance? ???)
+ (define %instance-class ???)
+ (define %set-instance-class-to-self ???) ;This is used only once
+ ;as part of bootstrapping
+ ;the braid.
+ (define %set-instance-proc! ???)
+ (define %instance-ref ???)
+ (define %instance-set! ???)
+
+ (letrec ((instances '())
+ (get-vector
+ (lambda (closure)
+ (let ((cell (assq closure instances)))
+ (if cell (cdr cell) #f)))))
+
+ (set! %allocate-instance-internal
+ (lambda (class lock proc nfields)
+ (letrec ((vector (make-vector (+ nfields 3) #f))
+ (closure (lambda args
+ (apply (vector-ref vector 0) args))))
+ (vector-set! vector 0 proc)
+ (vector-set! vector 1 lock)
+ (vector-set! vector 2 class)
+ (set! instances (cons (cons closure vector) instances))
+ closure)))
+
+ (set! %instance?
+ (lambda (x) (not (null? (get-vector x)))))
+
+ (set! %instance-class
+ (lambda (closure)
+ (let ((vector (get-vector closure)))
+ (vector-ref vector 2))))
+
+ (set! %set-instance-class-to-self
+ (lambda (closure)
+ (let ((vector (get-vector closure)))
+ (vector-set! vector 2 closure))))
+
+ (set! %set-instance-proc!
+ (lambda (closure proc)
+ (let ((vector (get-vector closure)))
+ (if (vector-ref vector 1)
+ (error "Can't set procedure of instance.")
+ (vector-set! vector 0 proc)))))
+
+ (set! %instance-ref
+ (lambda (closure index)
+ (let ((vector (get-vector closure)))
+ (vector-ref vector (+ index 3)))))
+
+ (set! %instance-set!
+ (lambda (closure index new-value)
+ (let ((vector (get-vector closure)))
+ (vector-set! vector (+ index 3) new-value))))
+ )
+
+ ; %allocate-instance, %allocate-entity, %instance-ref, %instance-set!
+ ; and class-of are the normal interface, from the rest of the code, to
+ ; the low-level memory system. One thing to take note of is that the
+ ; protocol does not allow the user to add low-level instance
+ ; representations. I have never seen a way to make that work.
+ ;
+ ; Note that this implementation of class-of assumes the name of a the
+ ; primitive classes that are set up later.
+ ;
+ (define class-of
+ (lambda (x)
+ (cond ((%instance? x) (%instance-class x))
+
+ ((pair? x) <pair>) ;If all Schemes were IEEE
+ ((null? x) <null>) ;compliant, the order of
+ ((boolean? x) <boolean>) ;these wouldn't matter?
+ ((symbol? x) <symbol>)
+ ((procedure? x) <procedure>)
+ ((number? x) <number>)
+ ((vector? x) <vector>)
+ ((char? x) <char>)
+ ((string? x) <string>)
+ (( input-port? x) <input-port>)
+ ((output-port? x) <output-port>)
+
+
+ )))
+
+ ; Now we can get down to business. First, we initialize the braid.
+ ;
+ ; For Bootstrapping, we define an early version of MAKE. It will be
+ ; changed to the real version later on. String search for ``set! make''.
+ ;
+
+ (define make
+ (lambda (class . initargs)
+ (cond ((or (eq? class <class>)
+ (eq? class <entity-class>))
+ (let* ((new (%allocate-instance
+ class
+ (length the-slots-of-a-class)))
+ (dsupers (getl initargs 'direct-supers '()))
+ (dslots (map list
+ (getl initargs 'direct-slots '())))
+ (cpl (let loop ((sups dsupers)
+ (so-far (list new)))
+ (if (null? sups)
+ (reverse so-far)
+ (loop (class-direct-supers
+ (car sups))
+ (cons (car sups)
+ so-far)))))
+ (slots (apply append
+ (cons dslots
+ (map class-direct-slots
+ (cdr cpl)))))
+ (nfields 0)
+ (field-initializers '())
+ (allocator
+ (lambda (init)
+ (let ((f nfields))
+ (set! nfields (+ nfields 1))
+ (set! field-initializers
+ (cons init field-initializers))
+ (list (lambda (o) (%instance-ref o f))
+ (lambda (o n) (%instance-set! o f n))))))
+ (getters-n-setters
+ (map (lambda (s)
+ (cons (car s)
+ (allocator (lambda () '()))))
+ slots)))
+
+ (slot-set! new 'direct-supers dsupers)
+ (slot-set! new 'direct-slots dslots)
+ (slot-set! new 'cpl cpl)
+ (slot-set! new 'slots slots)
+ (slot-set! new 'nfields nfields)
+ (slot-set! new 'field-initializers (reverse
+ field-initializers))
+ (slot-set! new 'getters-n-setters getters-n-setters)
+ new))
+ ((eq? class <generic>)
+ (let ((new (%allocate-entity class
+ (length (class-slots class)))))
+ (slot-set! new 'methods '())
+ new))
+ ((eq? class <method>)
+ (let ((new (%allocate-instance
+ class
+ (length (class-slots class)))))
+ (slot-set! new
+ 'specializers
+ (getl initargs 'specializers))
+ (slot-set! new
+ 'procedure
+ (getl initargs 'procedure))
+ new)))))
+
+ ; These are the real versions of slot-ref and slot-set!. Because of the
+ ; way the new slot access protocol works, with no generic call in line,
+ ; they can be defined up front like this. Cool eh?
+ ;
+ ;
+ (define slot-ref
+ (lambda (object slot-name)
+ (let* ((info (lookup-slot-info (class-of object) slot-name))
+ (getter (list-ref info 0)))
+ (getter object))))
+
+ (define slot-set!
+ (lambda (object slot-name new-value)
+ (let* ((info (lookup-slot-info (class-of object) slot-name))
+ (setter (list-ref info 1)))
+ (setter object new-value))))
+
+ (define lookup-slot-info
+ (lambda (class slot-name)
+ (let* ((getters-n-setters
+ (if (eq? class <class>) ;* This grounds out
+ getters-n-setters-for-class ;* the slot-ref tower.
+ (slot-ref class 'getters-n-setters)))
+ (entry (assq slot-name getters-n-setters)))
+ (if entry
+ (cdr entry)
+ (error "No slot" slot-name "in instances of" class)))))
+ ;
+ ; Given that the early version of MAKE is allowed to call accessors on
+ ; class metaobjects, the definitions for them come here, before the
+ ; actual class definitions, which are coming up right afterwards.
+ ;
+ ;
+ (define class-direct-slots
+ (lambda (class) (slot-ref class 'direct-slots)))
+ (define class-direct-supers
+ (lambda (class) (slot-ref class 'direct-supers)))
+ (define class-slots
+ (lambda (class) (slot-ref class 'slots)))
+ (define class-cpl
+ (lambda (class) (slot-ref class 'cpl)))
+
+ (define generic-methods
+ (lambda (generic) (slot-ref generic 'methods)))
+
+ (define method-specializers
+ (lambda (method) (slot-ref method 'specializers)))
+ (define method-procedure
+ (lambda (method) (slot-ref method 'procedure)))
+
+ ; The next 7 clusters define the 6 initial classes. It takes 7 to 6
+ ; because the first and fourth both contribute to <class>.
+ ;
+ (define the-slots-of-a-class ;
+ '(direct-supers ;(class ...)
+ direct-slots ;((name . options) ...)
+ cpl ;(class ...)
+ slots ;((name . options) ...)
+ nfields ;an integer
+ field-initializers ;(proc ...)
+ getters-n-setters)) ;((slot-name getter setter) ...)
+ ;
+ (define getters-n-setters-for-class ;see lookup-slot-info
+ ;
+ ; I know this seems like a silly way to write this. The
+ ; problem is that the obvious way to write it seems to
+ ; tickle a bug in MIT Scheme!
+ ;
+ (let ((make-em (lambda (s f)
+ (list s
+ (lambda (o) (%instance-ref o f))
+ (lambda (o n) (%instance-set! o f n))))))
+ (map (lambda (s)
+ (make-em s (position-of s the-slots-of-a-class)))
+ the-slots-of-a-class)))
+ (define <class> (%allocate-instance #f (length the-slots-of-a-class)))
+ (%set-instance-class-to-self <class>)
+
+ (define <top> (make <class>
+ 'direct-supers (list)
+ 'direct-slots (list)))
+
+ (define <object> (make <class>
+ 'direct-supers (list <top>)
+ 'direct-slots (list)))
+
+ ;
+ ; This cluster, together with the first cluster above that defines
+ ; <class> and sets its class, have the effect of:
+ ;
+ ; (define <class>
+ ; (make <class>
+ ; 'direct-supers (list <object>)
+ ; 'direct-slots (list 'direct-supers ...)))
+ ;
+ (slot-set! <class> 'direct-supers (list <object>))
+ (slot-set! <class> 'direct-slots (map list the-slots-of-a-class))
+ (slot-set! <class> 'cpl (list <class> <object> <top>))
+ (slot-set! <class> 'slots (map list the-slots-of-a-class))
+ (slot-set! <class> 'nfields (length the-slots-of-a-class))
+ (slot-set! <class> 'field-initializers (map (lambda (s)
+ (lambda () '()))
+ the-slots-of-a-class))
+ (slot-set! <class> 'getters-n-setters '())
+
+
+ (define <procedure-class> (make <class>
+ 'direct-supers (list <class>)
+ 'direct-slots (list)))
+
+ (define <entity-class> (make <class>
+ 'direct-supers (list <procedure-class>)
+ 'direct-slots (list)))
+
+ (define <generic> (make <entity-class>
+ 'direct-supers (list <object>)
+ 'direct-slots (list 'methods)))
+
+ (define <method> (make <class>
+ 'direct-supers (list <object>)
+ 'direct-slots (list 'specializers
+ 'procedure)))
+
+
+ ; These are the convenient syntax we expose to the base-level user.
+ ;
+ ;
+ (define make-class
+ (lambda (direct-supers direct-slots)
+ (make <class>
+ 'direct-supers direct-supers
+ 'direct-slots direct-slots)))
+
+ (define make-generic
+ (lambda ()
+ (make <generic>)))
+
+ (define make-method
+ (lambda (specializers procedure)
+ (make <method>
+ 'specializers specializers
+ 'procedure procedure)))
+
+
+ ; The initialization protocol
+ ;
+ (define initialize (make-generic))
+
+ ; The instance structure protocol.
+ ;
+ (define allocate-instance (make-generic))
+ (define compute-getter-and-setter (make-generic))
+ ;
+ ; The class initialization protocol.
+ ;
+ (define compute-cpl (make-generic))
+ (define compute-slots (make-generic))
+
+ ;
+ ; The generic invocation protocol.
+ ;
+ (define compute-apply-generic (make-generic))
+ (define compute-methods (make-generic))
+ (define compute-method-more-specific? (make-generic))
+ (define compute-apply-methods (make-generic))
+ ;
+ ; The next thing to do is bootstrap generic functions.
+ ;
+ (define generic-invocation-generics (list compute-apply-generic
+ compute-methods
+ compute-method-more-specific?
+ compute-apply-methods))
+
+ (define add-method
+ (lambda (generic method)
+ (slot-set! generic
+ 'methods
+ (cons method
+ (collect-if
+ (lambda (m)
+ (not (every eq?
+ (method-specializers m)
+ (method-specializers method))))
+ (slot-ref generic 'methods))))
+ (%set-instance-proc! generic (compute-apply-generic generic))))
+
+ ;
+ ; Adding a method calls COMPUTE-APPLY-GENERIC, the result of which calls
+ ; the other generics in the generic invocation protocol. Two, related,
+ ; problems come up. A chicken and egg problem and a infinite regress
+ ; problem.
+ ;
+ ; In order to add our first method to COMPUTE-APPLY-GENERIC, we need
+ ; something sitting there, so it can be called. The first definition
+ ; below does that.
+ ;
+ ; Then, the second definition solves both the infinite regress and the
+ ; not having enough of the protocol around to build itself problem the
+ ; same way: it special cases invocation of generics in the invocation
+ ; protocol.
+ ;
+ ;
+ (%set-instance-proc! compute-apply-generic
+ (lambda (generic)
+ (let ((method (car (generic-methods generic))))
+ ((method-procedure method) #f generic))))
+
+ (add-method compute-apply-generic
+ (make-method (list <generic>)
+ (lambda (call-next-method generic)
+ (lambda args
+ (if (and (memq generic generic-invocation-generics) ;* G c
+ (memq (car args) generic-invocation-generics)) ;* r a
+ (apply (method-procedure ;* o s
+ (last (generic-methods generic))) ;* u e
+ (cons #f args)) ;* n
+ ;* d
+ ((compute-apply-methods generic)
+ ((compute-methods generic) args)
+ args))))))
+
+ (add-method compute-methods
+ (make-method (list <generic>)
+ (lambda (call-next-method generic)
+ (lambda (args)
+ (let ((applicable
+ (collect-if (lambda (method)
+ ;
+ ; Note that every only goes as far as the
+ ; shortest list!
+ ;
+ (every applicable?
+ (method-specializers method)
+ args))
+ (generic-methods generic))))
+ (gsort (lambda (m1 m2)
+ ((compute-method-more-specific? generic)
+ m1
+ m2
+ args))
+ applicable))))))
+
+ (add-method compute-method-more-specific?
+ (make-method (list <generic>)
+ (lambda (call-next-method generic)
+ (lambda (m1 m2 args)
+ (let loop ((specls1 (method-specializers m1))
+ (specls2 (method-specializers m2))
+ (args args))
+ (cond ((and (null? specls1) (null? specls2))
+ (error
+ "Two methods are equally specific."))
+ ((or (null? specls1) (null? specls2))
+ (error
+ "Two methods have a different number of specializers."))
+ ((null? args)
+ (error
+ "Fewer arguments than specializers."))
+ (else
+ (let ((c1 (car specls1))
+ (c2 (car specls2))
+ (arg (car args)))
+ (if (eq? c1 c2)
+ (loop (cdr specls1)
+ (cdr specls2)
+ (cdr args))
+ (more-specific? c1 c2 arg))))))))))
+
+ (add-method compute-apply-methods
+ (make-method (list <generic>)
+ (lambda (call-next-method generic)
+ (lambda (methods args)
+ (letrec ((one-step
+ (lambda (tail)
+ (lambda ()
+ (if (null? tail)
+ (error "No applicable methods/next methods.")
+ (apply (method-procedure (car tail))
+ (cons (one-step (cdr tail)) args)))))))
+ ((one-step methods)))))))
+
+ (define applicable?
+ (lambda (c arg)
+ (memq c (class-cpl (class-of arg)))))
+
+ (define more-specific?
+ (lambda (c1 c2 arg)
+ (memq c2 (memq c1 (class-cpl (class-of arg))))))
+
+ (add-method initialize
+ (make-method (list <object>)
+ (lambda (call-next-method object initargs) object)))
+
+ (add-method initialize
+ (make-method (list <class>)
+ (lambda (call-next-method class initargs)
+ (call-next-method)
+ (slot-set! class
+ 'direct-supers
+ (getl initargs 'direct-supers '()))
+ (slot-set! class
+ 'direct-slots
+ (map (lambda (s)
+ (if (pair? s) s (list s)))
+ (getl initargs 'direct-slots '())))
+ (slot-set! class 'cpl (compute-cpl class))
+ (slot-set! class 'slots (compute-slots class))
+ (let* ((nfields 0)
+ (field-initializers '())
+ (allocator
+ (lambda (init)
+ (let ((f nfields))
+ (set! nfields (+ nfields 1))
+ (set! field-initializers
+ (cons init field-initializers))
+ (list (lambda (o) (%instance-ref o f))
+ (lambda (o n) (%instance-set! o f n))))))
+ (getters-n-setters
+ (map (lambda (slot)
+ (cons (car slot)
+ (compute-getter-and-setter class
+ slot
+ allocator)))
+ (slot-ref class 'slots))))
+ (slot-set! class 'nfields nfields)
+ (slot-set! class 'field-initializers field-initializers)
+ (slot-set! class 'getters-n-setters getters-n-setters)))))
+
+ (add-method initialize
+ (make-method (list <generic>)
+ (lambda (call-next-method generic initargs)
+ (call-next-method)
+ (slot-set! generic 'methods '())
+ (%set-instance-proc! generic
+ (lambda args (error "Has no methods."))))))
+
+ (add-method initialize
+ (make-method (list <method>)
+ (lambda (call-next-method method initargs)
+ (call-next-method)
+ (slot-set! method 'specializers (getl initargs 'specializers))
+ (slot-set! method 'procedure (getl initargs 'procedure)))))
+
+ (add-method allocate-instance
+ (make-method (list <class>)
+ (lambda (call-next-method class)
+ (let* ((field-initializers (slot-ref class 'field-initializers))
+ (new (%allocate-instance
+ class
+ (length field-initializers))))
+ (let loop ((n 0)
+ (inits field-initializers))
+ (if (pair? inits)
+ (begin
+ (%instance-set! new n ((car inits)))
+ (loop (+ n 1)
+ (cdr inits)))
+ new))))))
+
+ (add-method allocate-instance
+ (make-method (list <entity-class>)
+ (lambda (call-next-method class)
+ (let* ((field-initializers (slot-ref class 'field-initializers))
+ (new (%allocate-entity
+ class
+ (length field-initializers))))
+ (let loop ((n 0)
+ (inits field-initializers))
+ (if (pair? inits)
+ (begin
+ (%instance-set! new n ((car inits)))
+ (loop (+ n 1)
+ (cdr inits)))
+ new))))))
+
+ (add-method compute-cpl
+ (make-method (list <class>)
+ (lambda (call-next-method class)
+ (compute-std-cpl class class-direct-supers))))
+
+ (add-method compute-slots
+ (make-method (list <class>)
+ (lambda (call-next-method class)
+ (let collect ((to-process (apply append
+ (map class-direct-slots
+ (class-cpl class))))
+ (result '()))
+ (if (null? to-process)
+ (reverse result)
+ (let* ((current (car to-process))
+ (name (car current))
+ (others '())
+ (remaining-to-process
+ (collect-if (lambda (o)
+ (if (eq? (car o) name)
+ (begin
+ (set! others (cons o others))
+ #f)
+ #t))
+ (cdr to-process))))
+ (collect remaining-to-process
+ (cons (append current
+ (apply append (map cdr others)))
+ result))))))))
+
+ (add-method compute-getter-and-setter
+ (make-method (list <class>)
+ (lambda (call-next-method class slot allocator)
+ (allocator (lambda () '())))))
+ ;
+ ; Now everything works, both generic functions and classes, so we can
+ ; turn on the real MAKE.
+ ;
+ ;
+ (set! make
+ (lambda (class . initargs)
+ (let ((instance (allocate-instance class)))
+ (initialize instance initargs)
+ instance)))
+
+ ;
+ ; Now define what CLOS calls `built in' classes.
+ ;
+ ;
+ (define <primitive-class>
+ (make <class>
+ 'direct-supers (list <class>)
+ 'direct-slots (list)))
+
+ (define make-primitive-class
+ (lambda class
+ (make (if (null? class) <primitive-class> (car class))
+ 'direct-supers (list <top>)
+ 'direct-slots (list))))
+
+ (define <pair> (make-primitive-class))
+ (define <null> (make-primitive-class))
+ (define <symbol> (make-primitive-class))
+ (define <boolean> (make-primitive-class))
+ (define <procedure> (make-primitive-class <procedure-class>))
+ (define <number> (make-primitive-class))
+ (define <vector> (make-primitive-class))
+ (define <char> (make-primitive-class))
+ (define <string> (make-primitive-class))
+ (define <input-port> (make-primitive-class))
+ (define <output-port> (make-primitive-class))
+
+ ; This is a useful sort of helper function. Note how it uses the
+ ; introspective part of the MOP. The first few pages of chapter
+ ; two of the AMOP discuss this.
+ ;
+ ; Note that this introspective MOP doesn't support back-links from
+ ; the classes to methods and generic functions. Is that worth adding?
+ ;
+ ;
+ (define initialize-slots
+ (lambda (object initargs)
+ (let ((not-there (list 'shes-not-there)))
+ (for-each (lambda (slot)
+ (let ((name (car slot)))
+ (let ((value (getl initargs name not-there)))
+ (if (eq? value not-there)
+ 'do-nothing
+ (slot-set! object name value)))))
+ (class-slots (class-of object))))))
+
+ ;***
+ ;
+ ; A simple class, just an instance of <class>. Note that we are using
+ ; make and <class> rather than make-class to make it. See Section 2.4
+ ; of AMOP for more on this.
+ ;
+ ;
+
+ (define <pos> (make <class> ;[make-class
+ 'direct-supers (list <object>) ; (list <object>)
+ 'direct-slots (list 'x 'y))) ; (list 'x 'y)]
+
+ (add-method initialize
+ (make-method (list <pos>)
+ (lambda (call-next-method pos initargs)
+ (call-next-method)
+ (initialize-slots pos initargs))))
+
+ (define p1 (make <pos> 'x 1 'y 2))
+ (define p2 (make <pos> 'x 3 'y 5))
+
+ ;***
+ ;
+ ; Another way of writing that class definition, that achives better
+ ; `encapsulation' by using slot names that are unique keys, rather
+ ; than symbols.
+ ;
+ ;
+
+ (define <pos> #f)
+ (define pos-x (make-generic))
+ (define pos-y (make-generic))
+ (define move (make-generic))
+
+ (let ((x (vector 'x))
+ (y (vector 'y)))
+
+ (set! <pos> (make <class>
+ 'direct-supers (list <object>)
+ 'direct-slots (list x y)))
+
+ (add-method pos-x
+ (make-method (list <pos>)
+ (lambda (call-next-method pos) (slot-ref pos x))))
+ (add-method pos-y
+ (make-method (list <pos>)
+ (lambda (call-next-method pos) (slot-ref pos y))))
+
+ (add-method move
+ (make-method (list <pos>)
+ (lambda (call-next-method pos new-x new-y)
+ (slot-set! pos x new-x)
+ (slot-set! pos y new-y))))
+
+ (add-method initialize
+ (make-method (list <pos>)
+ (lambda (call-next-method pos initargs)
+ (move pos (getl initargs 'x 0) (getl initargs 'y 0)))))
+ )
+
+
+ (define p3 (make <pos> 'x 1 'y 2))
+ (define p4 (make <pos> 'x 3 'y 5))
+
+ ;***
+ ;
+ ; Class allocated slots.
+ ;
+ ; In Scheme, this extension isn't worth a whole lot, but what the hell.
+ ;
+ ;
+
+ (define <class-slots-class>
+ (make-class (list <class>)
+ (list)))
+
+ (add-method compute-getter-and-setter
+ (make-method (list <class-slots-class>)
+ (lambda (call-next-method class slot allocator)
+ (if (null? (memq ':class-allocation slot))
+ (call-next-method)
+ (let ((cell '()))
+ (list (lambda (o) cell)
+ (lambda (o new) (set! cell new) new)))))))
+
+ ;
+ ; Here's a silly program that uses class allocated slots.
+ ;
+ ;
+ (define <ship>
+ (make <class-slots-class>
+ 'direct-supers (list <object>)
+ 'direct-slots (list 'name
+ '(all-ships :class-allocation))))
+
+ (add-method initialize
+ (make-method (list <ship>)
+ (lambda (call-next-method ship initargs)
+ (call-next-method)
+ (initialize-slots ship initargs)
+ (slot-set! ship
+ 'all-ships
+ (cons ship (slot-ref ship 'all-ships))))))
+
+ (define siblings (make-generic))
+ (add-method siblings
+ (make-method (list <ship>)
+ (lambda (call-next-method ship)
+ (remove ship (slot-ref ship 'all-ships)))))
+
+ (define s1 (make <ship> 'name 's1))
+ (define s2 (make <ship> 'name 's2))
+ (define s3 (make <ship> 'name 's3))
+
+ ;***
+ ;
+ ; Here's a class of class that allocates some slots dynamically.
+ ;
+ ; It has a layered protocol (dynamic-slot?) that decides whether a given
+ ; slot should be dynamically allocated. This makes it easy to define a
+ ; subclass that allocates all its slots dynamically.
+ ;
+ ;
+ (define <dynamic-class>
+ (make-class (list <class>)
+ (list 'alist-g-n-s)))
+
+
+ (define dynamic-slot? (make-generic))
+
+ (add-method dynamic-slot?
+ (make-method (list <dynamic-class>)
+ (lambda (call-next-method class slot)
+ (memq :dynamic-allocation (cdr slot)))))
+
+ (define alist-getter-and-setter
+ (lambda (dynamic-class allocator)
+ (let ((old (slot-ref dynamic-class 'alist-g-n-s)))
+ (if (null? old)
+ (let ((new (allocator (lambda () '()))))
+ (slot-set! dynamic-class 'alist-g-n-s new)
+ new)
+ old))))
+
+ (add-method compute-getter-and-setter
+ (make-method (list <dynamic-class>)
+ (lambda (call-next-method class slot allocator)
+ (if (null? (dynamic-slot? class slot))
+ (call-next-method)
+ (let* ((name (car slot))
+ (g-n-s (alist-getter-and-setter class allocator))
+ (alist-getter (car g-n-s))
+ (alist-setter (cadr g-n-s)))
+ (list (lambda (o)
+ (let ((entry (assq name (alist-getter o))))
+ (if (not entry)
+ '()
+ (cdr entry))))
+ (lambda (o new)
+ (let* ((alist (alist-getter o))
+ (entry (assq name alist)))
+ (if (not entry)
+ (alist-setter o
+ (cons (cons name new) alist))
+ (set-cdr! entry new))
+ new))))))))
+
+ (define <all-dynamic-class>
+ (make-class (list <dynamic-class>)
+ (list)))
+
+ (add-method dynamic-slot?
+ (make-method (list <all-dynamic-class>)
+ (lambda (call-next-method class slot) #t)))
+
+ ;
+ ; A silly program that uses this.
+ ;
+ ;
+ (define <person> (make <all-dynamic-class>
+ 'direct-supers (list <object>)
+ 'direct-slots (list 'name 'age 'address)))
+
+ (add-method initialize
+ (make-method (list <person>)
+ (lambda (call-next-method person initargs)
+ (initialize-slots person initargs))))
+
+ (define person1 (make <person> 'name 'sally))
+ (define person2 (make <person> 'name 'betty))
+ (define person3 (make <person> 'name 'sue))
+
+ ;***
+ ;
+ ; A ``database'' class that stores slots externally.
+ ;
+ ;
+ (define <db-class>
+ (make-class (list <class>)
+ (list 'id-g-n-s)))
+
+ (define id-getter-and-setter
+ (lambda (db-class allocator)
+ (let ((old (slot-ref db-class 'id-g-n-s)))
+ (if (null? old)
+ (let ((new (allocator db-allocate-id)))
+ (slot-set! class 'id-g-n-s new)
+ new)
+ old))))
+
+ (add-method compute-getter-and-setter
+ (make-method (list <db-class>)
+ (lambda (call-next-method class slot allocator)
+ (let* ((id-g-n-s (id-getter-and-setter class allocator))
+ (id-getter (car id-g-n-s))
+ (id-setter (cadr id-g-n-s))
+ (slot-name (car slot)))
+ (list (lambda (o)
+ (db-lookup (id-getter o) slot-name))
+ (lambda (o new)
+ (db-store (id-getter o) slot-name new)))))))
+
+ ;***
+ ;
+ ; A kind of generic that supports around methods.
+ ;
+ ;
+ (define make-around-generic
+ (lambda () (make <around-generic>)))
+
+ (define make-around-method
+ (lambda (specializers procedure)
+ (make <around-method>
+ 'specializers specializers
+ 'procedure procedure)))
+
+
+ (define <around-generic> (make <entity-class>
+ 'direct-supers (list <generic>)))
+ (define <around-method> (make <class>
+ 'direct-supers (list <method>)))
+
+
+ (define around-method? (make-generic))
+
+ (add-method around-method?
+ (make-method (list <method>)
+ (lambda (call-next-method x) #f)))
+ (add-method around-method?
+ (make-method (list <around-method>)
+ (lambda (call-next-method x) #t)))
+
+
+ (add-method compute-methods
+ (make-method (list <around-generic>)
+ (lambda (call-next-method generic)
+ (let ((normal-compute-methods (call-next-method)))
+ (lambda (args)
+ (let ((normal-methods (normal-compute-methods args)))
+ (append
+ (collect-if around-method?
+ normal-methods)
+ (collect-if (lambda (m) (not (around-method? m)))
+ normal-methods))))))))
+ ;
+ ; And a simple example of using it.
+ ;
+ ;
+ (define <baz> (make-class (list <object>) (list)))
+ (define <bar> (make-class (list <baz>) (list)))
+ (define <foo> (make-class (list <bar>) (list)))
+
+ (define test-around
+ (lambda (generic)
+ (add-method generic
+ (make-method (list <foo>)
+ (lambda (cnm x) (cons 'foo (cnm)))))
+
+ (add-method generic
+ (make-around-method (list <bar>)
+ (lambda (cnm x) (cons 'bar (cnm)))))
+
+ (add-method generic
+ (make-method (list <baz>)
+ (lambda (cnm x) '(baz))))
+
+ (generic (make <foo>))))
+
+ (test (test-around (make-generic)) '(foo bar baz))
+ (test (test-around (make-around-generic)) '(bar foo baz))
+ )
+ ;; end tiny-clos
+
+
(test (let () (define-constant __c1__ 32) __c1__) 32)
(test (let () __c1__) 'error)
(test (let ((__c1__ 3)) __c1__) 'error)
@@ -6712,7 +16029,7 @@
(test (constant? '__c1__) #t)
(test (constant? 'abs) #f)
(test (constant? '*features*) #f)
-
+
(test (defined? 'pi) #t)
(test (defined? 'pi (global-environment)) #t)
(test (defined? 'abs (global-environment)) #t)
@@ -6722,7 +16039,7 @@
(test (let ((__c2__ 32)) (defined? '__c3__ (current-environment))) #f)
(test (let ((__c2__ 32)) (defined? '__c2__ (global-environment))) #f)
(test (let ((__c2__ 32)) (defined? '__c3__ (global-environment))) #f)
-
+
(test (call-with-exit (lambda (c) (0 (c 1)))) 1)
(test (call-with-exit (lambda (k) (k "foo"))) "foo")
(test (call-with-exit (lambda (k) "foo")) "foo")
@@ -6744,7 +16061,7 @@
(test (and (= x 1) (= y 33)) #t)
(set! y (call-with-exit (lambda (return) ((lambda (a b) (return a) (set! x b)) 2 3))))
(test (and (= x 1) (= y 2)) #t))
-
+
(test (string=? (let ((hi (lambda (b) (+ b 1)))) (object->string hi)) "hi") #t)
(test (string=? (object->string 32) "32") #t)
(test (string=? (object->string 32.5) "32.5") #t)
@@ -6755,7 +16072,7 @@
(test (string=? (object->string (cons 1 2)) "(1 . 2)") #t)
(test (string=? (object->string '#(1 2 3)) "#(1 2 3)") #t)
(test (string=? (object->string +) "+") #t)
-
+
(test (let ((l (list 1 2)))
(list-set! l 0 l)
(string=? (object->string l) "([circular list] 2)"))
@@ -6799,8 +16116,7 @@
(format #t ";hash display:~% ~A~% ~A~%" (object->string h1) "#(() () () () ((\"hi\" . [circular hash-table])) () () () () () ())"))
val)))
#t)
-
-
+
(test (let* ((l1 (list 1 2))
(v1 (vector 1 2))
(l2 (list 1 l1 2))
@@ -6809,24 +16125,87 @@
(list-set! l1 1 l2)
(string=? (object->string v2) "#((1 (1 [circular list] 2)) #([circular vector] 2) (1 (1 [circular list]) 2))"))
#t)
-
+
(test (multiple-value-bind (a b) (values 1 2) (+ a b)) 3)
(test (multiple-value-bind (a) 1 a) 1)
(test (multiple-value-bind (a . rest) (values 1 2 3) (+ a (apply + rest))) 6)
(test (multiple-value-bind a (values 1 2 3) a) '(1 2 3))
-
+
(test (let ((a 1)
(b 2))
(multiple-value-set! (a b) (values 32 64))
(+ a b))
96)
-
+
(test (call-with-input-file "tmp1.r5rs" (lambda (p) (integer->char (read-byte p)))) #\t)
-
+
+ (let ((bytes (vector #o000 #o000 #o000 #o034 #o000 #o001 #o215 #o030 #o000 #o000 #o000 #o022 #o000
+ #o000 #o126 #o042 #o000 #o000 #o000 #o001 #o000 #o000 #o000 #o000 #o000 #o001)))
+ (with-output-to-file "tmp1.r5rs"
+ (lambda ()
+ (vector-for-each
+ (lambda (b)
+ (write-byte b))
+ bytes)))
+
+ (let ((ctr 0))
+ (call-with-input-file "tmp1.r5rs"
+ (lambda (p)
+
+ (if (not (string=? (port-filename p) "tmp1.r5rs")) (display (port-filename p)))
+
+ (let loop ((val (read-byte p)))
+ (if (eof-object? val)
+ (if (not (= ctr 26))
+ (format #t "read-byte done at ~A~%" ctr))
+ (begin
+ (if (not (= (bytes ctr) val))
+ (format #t "read-byte bytes[~D]: ~A ~A~%" ctr (bytes ctr) val))
+ (set! ctr (+ 1 ctr))
+ (loop (read-byte p))))))))
+
+ (let ((ctr 0))
+ (call-with-input-file "tmp1.r5rs"
+ (lambda (p)
+ (let loop ((val (read-char p)))
+ (if (eof-object? val)
+ (if (not (= ctr 26))
+ (format #t "read-char done at ~A~%" ctr))
+ (begin
+ (if (not (= (bytes ctr) (char->integer val)))
+ (format #t "read-char bytes[~D]: ~A ~A~%" ctr (bytes ctr) (char->integer val)))
+ (set! ctr (+ 1 ctr))
+ (loop (read-char p))))))))
+ )
+
+ (with-output-to-file "tmp1.r5rs"
+ (lambda ()
+ (display "(+ 1 2) 32")
+ (newline)
+ (display "#\\a -1")))
+
+ (with-input-from-file "tmp1.r5rs"
+ (lambda ()
+ (let ((val (read)))
+ (if (not (equal? val (list '+ 1 2)))
+ (format #t "read: ~A~%" val)))
+ (let ((val (read)))
+ (if (not (equal? val 32))
+ (format #t "read: ~A~%" val)))
+ (let ((val (read)))
+ (if (not (equal? val #\a))
+ (format #t "read: ~A~%" val)))
+ (let ((val (read)))
+ (if (not (equal? val -1))
+ (format #t "read: ~A~%" val)))
+ (let ((val (read)))
+ (if (not (eof-object? val))
+ (format #t "read: ~A~%" val)))))
+
(if (and (defined? 'provided?)
(provided? 'threads))
(begin
-
+
(test (let ((ctr 0))
(let ((t1 (make-thread (lambda () (set! ctr (+ ctr 1))))))
(join-thread t1))
@@ -7060,13 +16439,13 @@
(pws-test))
123)
- (test (call/cc (lambda (return) (let ((local 123))
+ (test (call-with-exit (lambda (return) (let ((local 123))
(define pws-test (make-procedure-with-setter
(lambda () (return "oops"))
(lambda (val) (set! local val))))
(pws-test))))
"oops")
- (test (call/cc (lambda (return) (let ((local 123))
+ (test (call-with-exit (lambda (return) (let ((local 123))
(define pws-test (make-procedure-with-setter
(lambda () 123)
(lambda (val) (return "oops"))))
@@ -15198,8 +24577,8 @@
(num-test (rationalize -1.501 0.50000000000000) -2)
(num-test (rationalize 1.501 0.1) 3/2)
(num-test (rationalize -1.501 0.1) -3/2)
- (num-test (rationalize 1.501 0.001) 3/2)
- (num-test (rationalize -1.501 0.001) -3/2)
+ (num-test (rationalize 1.501 0.01) 3/2)
+ (num-test (rationalize -1.501 0.01) -3/2)
(num-test (rationalize 1.501 0.00300000000000) 3/2)
(num-test (rationalize -1.501 0.00300000000000) -3/2)
(num-test (rationalize 1.501 0.00002000000000) 737/491)
@@ -15298,7 +24677,7 @@
(num-test (rationalize .334 .0005) 96/287)
(num-test (rationalize 1.0000001 0.00000001) 9090911/9090910)
- (num-test (rationalize 0.000000015 0.000000001) 1/62500001)
+ (num-test (rationalize 0.000000015 0.0000000009999999) 1/62500001)
(num-test (rationalize -1 -1) 0) ;; spec says "differs by no more than", but that seems to imply a comparison
;; on either side, so a negative error doesn't change the result??
@@ -17291,10 +26670,9 @@
(num-test (modulo 19439282 4409.5) 2206.0)
(num-test (modulo 3/2 1/4) 0)
(num-test (modulo 3/2 1/3) 1/6)
- (num-test (modulo 3/2 0.3) 0.0)
+ (num-test (modulo 3/2 3/10) 0)
(num-test (modulo 1.5 1/4) 0.0)
(num-test (modulo 1.5 1/3) 0.16666666666667)
- (num-test (modulo 1.5 0.3) 0.0)
(num-test (modulo 1/2 2) 1/2)
(num-test (modulo 0.5 2.0) 0.5)
(num-test (modulo 1/2 -2) -3/2)
@@ -17319,10 +26697,9 @@
(num-test (remainder 19439282 4409.5) 2206.0)
(num-test (remainder 3/2 1/4) 0)
(num-test (remainder 3/2 1/3) 1/6)
- (num-test (remainder 3/2 0.3) 0.0)
+ (num-test (remainder 3/2 3/10) 0)
(num-test (remainder 1.5 1/4) 0.0)
(num-test (remainder 1.5 1/3) 0.16666666666667)
- (num-test (remainder 1.5 0.3) 0.0)
(num-test (remainder 1/2 2) 1/2)
(num-test (remainder 0.5 2.0) 0.5)
(num-test (remainder 1/2 -2) 1/2)
@@ -17347,10 +26724,9 @@
(num-test (quotient 19439282 4409.5) 4408)
(num-test (quotient 3/2 1/4) 6)
(num-test (quotient 3/2 1/3) 4)
- (num-test (quotient 3/2 0.3) 5)
+ (num-test (quotient 3/2 3/10) 5)
(num-test (quotient 1.5 1/4) 6)
(num-test (quotient 1.5 1/3) 4)
- (num-test (quotient 1.5 0.3) 5)
(num-test (quotient 1/2 2) 0)
(num-test (quotient 0.5 2.0) 0)
(num-test (quotient 1/2 -2) 0)
@@ -34745,6 +44121,92 @@
(num-test (string->number "123456789012345678901234567890123456789012345678901234567890.123456789e-50") 1234567890.1235)
(num-test (- 1234567890123456789012345678901234567890123456789012345678901234567890.123456789e-60 12345678901234567890123456789012345678901234567890.123456789e-40) 0.0)
+(num-test 0000000000000000000000000001.0 1.0)
+(num-test 1.0000000000000000000000000000 1.0)
+(num-test 1000000000000000000000000000.0e-40 1.0e-12)
+(num-test 0.0000000000000000000000000001e40 1.0e12)
+(num-test 1.0e00000000000000000001 10.0)
+(num-test 12341234.56789e12 12341234567889999872.0)
+(num-test -1234567890123456789.0 -1234567890123456768.0)
+(num-test 12345678901234567890.0 12345678901234567168.0)
+(num-test 123.456e30 123456000000000012741097792995328.0)
+(num-test 12345678901234567890.0e12 12345678901234569054409354903552.0)
+(num-test 1.234567890123456789012e30 1234567890123456849145940148224.0)
+(num-test 1e20 100000000000000000000.0)
+(num-test 1234567890123456789.0 1234567890123456768.0)
+(num-test 123.456e16 1234560000000000000.0)
+(num-test 98765432101234567890987654321.0e-5 987654321012345728401408.0)
+(num-test 98765432101234567890987654321.0e-10 9876543210123456512.0)
+(num-test 0.00000000000000001234e20 1234.0)
+(num-test 0.000000000000000000000000001234e30 1234.0)
+(num-test 0.0000000000000000000000000000000000001234e40 1234.0)
+(num-test 0.000000000012345678909876543210e15 12345.678909877)
+(num-test 98765432101234567890987654321.0e-20 987654321.012346)
+(num-test 98765432101234567890987654321.0e-29 0.98765432101235)
+(num-test 98765432101234567890987654321.0e-30 0.098765432101235)
+(num-test 98765432101234567890987654321.0e-28 9.8765432101235)
+(num-test 1.0123456789876543210e1 10.12345678987654373771)
+(num-test 1.0123456789876543210e10 10123456789.87654304504394531250)
+(num-test 0.000000010000000000000000e10 100.0)
+(num-test 0.000000010000000000000000000000000000000000000e10 100.0)
+(num-test 0.000000012222222222222222222222222222222222222e10 122.22222222222222)
+(num-test 0.000000012222222222222222222222222222222222222e17 1222222222.222222)
+
+(num-test (string->number "0000000000000000000000000001.0") 1.0)
+(num-test (string->number "1.0000000000000000000000000000") 1.0)
+(num-test (string->number "1000000000000000000000000000.0e-40") 1.0e-12)
+(num-test (string->number "0.0000000000000000000000000001e40") 1.0e12)
+(num-test (string->number "1.0e00000000000000000001") 10.0)
+(num-test (string->number "12341234.56789e12") 12341234567889999872.0)
+(num-test (string->number "-1234567890123456789.0") -1234567890123456768.0)
+(num-test (string->number "12345678901234567890.0") 12345678901234567168.0)
+(num-test (string->number "123.456e30") 123456000000000012741097792995328.0)
+(num-test (string->number "12345678901234567890.0e12") 12345678901234569054409354903552.0)
+(num-test (string->number "1.234567890123456789012e30") 1234567890123456849145940148224.0)
+(num-test (string->number "1e20") 100000000000000000000.0)
+(num-test (string->number "1234567890123456789.0") 1234567890123456768.0)
+(num-test (string->number "123.456e16") 1234560000000000000.0)
+(num-test (string->number "98765432101234567890987654321.0e-5") 987654321012345728401408.0)
+(num-test (string->number "98765432101234567890987654321.0e-10") 9876543210123456512.0)
+(num-test (string->number "0.00000000000000001234e20") 1234.0)
+(num-test (string->number "0.000000000000000000000000001234e30") 1234.0)
+(num-test (string->number "0.0000000000000000000000000000000000001234e40") 1234.0)
+(num-test (string->number "0.000000000012345678909876543210e15") 12345.678909877)
+(num-test (string->number "98765432101234567890987654321.0e-20") 987654321.012346)
+(num-test (string->number "98765432101234567890987654321.0e-29") 0.98765432101235)
+(num-test (string->number "98765432101234567890987654321.0e-30") 0.098765432101235)
+(num-test (string->number "98765432101234567890987654321.0e-28") 9.8765432101235)
+(num-test (string->number "1.0123456789876543210e1") 10.12345678987654373771)
+(num-test (string->number "1.0123456789876543210e10") 10123456789.87654304504394531250)
+(num-test (string->number "0.000000010000000000000000e10") 100.0)
+(num-test (string->number "0.000000010000000000000000000000000000000000000e10") 100.0)
+(num-test (string->number "0.000000012222222222222222222222222222222222222e10") 122.22222222222222)
+(num-test (string->number "0.000000012222222222222222222222222222222222222e17") 1222222222.222222)
+
+(num-test #x0000000000000000000000000001.0 1.0)
+(num-test #x1.0000000000000000000000000000 1.0)
+(test (number->string 1222222222.222222 16) "48d9a18e.38e38c")
+(num-test (string->number (number->string 1222222222.222222222222222222 16) 16) 1222222222.222222222222222222)
+
+(if with-bignums
+ (begin
+ (test (number->string (bignum "12345.67890987654321") 2) "1.1000000111001101011011100110100001001101001001011E13")
+ (num-test (string->number (number->string (bignum "12345.67890987654321") 2) 2) 12345.67890987654321)
+ (test (number->string 1234.5678909876543212345 16) "4d2.91614dc3ab1f80e55a563311b8f308")
+ (test (number->string -1234.5678909876543212345 16) "-4d2.91614dc3ab1f80e55a563311b8f308")
+ (test (number->string 1234.5678909876543212345e8 16) "1cbe991a6a.c3f35c11868cb7e3fb75536")
+ (test (number->string 1234.5678909876543212345e-8 16) "0.0000cf204983a27e1eff701c562a870641e50")
+ (test (number->string 123456789098765432.12345e-8 16) "499602d2.fcd6e9e1748ba5adccc12c5a8")
+ (test (number->string 123456789098765432.1e20 16) "949b0f70beeac8895e74b18b9680000.00")))
+
+(num-test (string->number "1.1e4" 5) 750.0)
+(num-test (string->number "1.1e4" 4) 320.0)
+(num-test (string->number "1.1e4" 3) 108.0)
+(num-test (string->number "1.1e4" 2) 24.0)
+
+(do ((i 2 (+ i 1)))
+ ((= i 17))
+ (num-test (string->number (number->string 12345.67890987654321 i) i) 12345.67890987654321))
(let ((happy #t))
(do ((i 2 (+ i 1)))
@@ -35270,7 +44732,7 @@
(lambda (str)
(let ((val (catch #t (lambda () (string->number str)) (lambda args 'error))))
(if (or (not (number? val))
- (not (= val 1)))
+ (> (abs (- val 1.0)) 1.0e-16))
(begin
(display "(string->number \"") (display str) (display "\") = ") (display val) (display "?") (newline)))))
lst))
@@ -35945,6 +45407,7 @@
(test (string-set! "" 1 #\a) 'error)
(test (string-set! (string) 0 #\a) 'error)
(test (string-set! (symbol->string 'lambda) 0 #\a) 'error)
+ (test (let ((ho (make-string 0 #\x))) (string-set! ho 0 #\a) ho) 'error)
(for-each
(lambda (arg)
@@ -40087,7 +49550,7 @@ expt error > 1e-6 around 2^-46.506993328423
(else #f)))
(if (or (not (boolean? v))
(not (eq? v (eqv-1 a1 a2))))
- (format #t "(eqv? ~A ~A) -> ~A~%" a1 a2 v))))
+ (format #t "(eqv? ~A ~A) -> ~A (~A ~A)~%" a1 a2 v (eqv-1 a1 a2) nlst))))
(lambda () (list (car (choose-any 0)) (car (choose-any 0)))))
(list equal?
diff --git a/snd-0.h b/snd-0.h
index ce4e1fc..ac78693 100644
--- a/snd-0.h
+++ b/snd-0.h
@@ -9,17 +9,9 @@
#undef _
#endif
-#if ENABLE_NLS && HAVE_GETTEXT
- #include "gettext.h"
- #define _(String) gettext (String)
- #define gettext_noop(String) String
- #define N_(String) gettext_noop (String)
-#else
#define _(String) ((char *)(String))
- #define N_(String) String
- #define textdomain(Domain)
- #define bindtextdomain(Package, Directory)
-#endif
+#define N_(String) String
+/* these are leftover from NLS */
#if (!HAVE_FAM)
#define FAMRequest int
diff --git a/snd-1.h b/snd-1.h
index 4b14057..ad45782 100644
--- a/snd-1.h
+++ b/snd-1.h
@@ -14,7 +14,7 @@
/* these macros fix up argument order for setter procs in Scheme: (set! (proc a b) c) */
/* snd-edits has a 5 and a 10 case */
-#if HAVE_S7
+#if HAVE_SCHEME
#define WITH_TWO_SETTER_ARGS(name_reversed, name) \
static s7_pointer name_reversed(s7_scheme *sc, s7_pointer args) \
@@ -522,7 +522,7 @@ typedef struct snd_state {
#if HAVE_GL && MUS_WITH_GL2PS
bool gl_printing;
#endif
-#if HAVE_S7
+#if HAVE_SCHEME
char listener_char;
#endif
} snd_state;
@@ -1654,9 +1654,6 @@ void snd_set_global_defaults(bool need_cleanup);
#if SND_AS_WIDGET
snd_state *snd_main(int argc, char **argv);
#endif
-#ifdef SND_AS_PD_EXTERNAL
- int snd_pd_main(void);
-#endif
void g_init_base(void);
diff --git a/snd-axis.c b/snd-axis.c
index 406a6b5..fec97ba 100644
--- a/snd-axis.c
+++ b/snd-axis.c
@@ -2042,4 +2042,4 @@ void g_init_axis(void)
#endif
/* end no gui (covers entire xen section) */
-
+/* (if something is moved here, remember to add stubs to snd-nogui.c) */
diff --git a/snd-chn.c b/snd-chn.c
index 3c65a95..fe547a6 100644
--- a/snd-chn.c
+++ b/snd-chn.c
@@ -5740,12 +5740,12 @@ static void show_inset_graph(chan_info *cp)
double data_max = 0.0, data_scaler, step;
vct *v0 = NULL, *v1 = NULL;
int data_len;
-#if HAVE_S7
+#if HAVE_SCHEME
int gc_loc;
#endif
data = make_graph_data(cp, cp->edit_ctr, 0, frames);
-#if HAVE_S7
+#if HAVE_SCHEME
gc_loc = s7_gc_protect(s7, data);
#endif
if (mus_vct_p(data))
@@ -5870,7 +5870,7 @@ static void show_inset_graph(chan_info *cp)
info->height = height;
info->edpos = cp->edit_ctr;
info->y_offset = y_offset;
-#if HAVE_S7
+#if HAVE_SCHEME
s7_gc_unprotect_at(s7, gc_loc);
#endif
}
@@ -8598,6 +8598,25 @@ static XEN g_set_channel_properties(XEN on, XEN snd, XEN chn_n)
WITH_THREE_SETTER_ARGS(g_set_channel_properties_reversed, g_set_channel_properties)
+static XEN g_channel_property(XEN key, XEN snd, XEN chn)
+{
+ #define H_channel_property "(" S_channel_property " key snd chn) returns the value associated with 'key' in the given channel's property list, or #f"
+ return(XEN_ASSOC_REF(key, g_channel_properties(snd, chn)));
+}
+
+#if HAVE_SCHEME
+static XEN g_set_channel_property(XEN val, XEN key, XEN snd, XEN chn)
+#else
+static XEN g_set_channel_property(XEN key, XEN val, XEN snd, XEN chn)
+#endif
+{
+ g_set_channel_properties(XEN_ASSOC_SET(key, val, g_channel_properties(snd, chn)), snd, chn);
+ return(val);
+}
+
+WITH_FOUR_SETTER_ARGS(g_set_channel_property_reversed, g_set_channel_property)
+
+
static XEN g_edit_properties(XEN snd, XEN chn_n, XEN pos)
{
@@ -8645,6 +8664,38 @@ static XEN g_set_edit_properties(XEN on, XEN snd, XEN chn_n, XEN pos)
WITH_FOUR_SETTER_ARGS(g_set_edit_properties_reversed, g_set_edit_properties)
+static XEN g_edit_property(XEN key, XEN snd, XEN chn, XEN pos)
+{
+ #define H_edit_property "(" S_edit_property " key snd chn pos) returns the value associated with 'key' in the given edit's property list, or #f"
+ return(XEN_ASSOC_REF(key, g_edit_properties(snd, chn, pos)));
+}
+
+static XEN g_set_edit_property(XEN key, XEN val, XEN snd, XEN chn, XEN pos)
+{
+ g_set_edit_properties(XEN_ASSOC_SET(key, val, g_edit_properties(snd, chn, pos)), snd, chn, pos);
+ return(val);
+}
+
+
+#if HAVE_SCHEME
+static XEN g_set_edit_property_reversed(s7_scheme *sc, s7_pointer args)
+{
+ int len;
+ len = XEN_LIST_LENGTH(args);
+
+ if (len == 2)
+ return(g_set_edit_property(XEN_LIST_REF(args, 0), XEN_LIST_REF(args, 1), XEN_UNDEFINED, XEN_UNDEFINED, XEN_UNDEFINED));
+
+ if (len == 3)
+ return(g_set_edit_property(XEN_LIST_REF(args, 0), XEN_LIST_REF(args, 2), XEN_LIST_REF(args, 1), XEN_UNDEFINED, XEN_UNDEFINED));
+
+ if (len == 4)
+ return(g_set_edit_property(XEN_LIST_REF(args, 0), XEN_LIST_REF(args, 3), XEN_LIST_REF(args, 1), XEN_LIST_REF(args, 2), XEN_UNDEFINED));
+
+ return(g_set_edit_property(XEN_LIST_REF(args, 0), XEN_LIST_REF(args, 4), XEN_LIST_REF(args, 1), XEN_LIST_REF(args, 2), XEN_LIST_REF(args, 3)));
+}
+#endif
+
static XEN g_edits(XEN snd, XEN chn_n)
{
@@ -9108,8 +9159,12 @@ XEN_ARGIFY_2(g_right_sample_w, g_right_sample)
XEN_ARGIFY_3(g_set_right_sample_w, g_set_right_sample)
XEN_ARGIFY_2(g_channel_properties_w, g_channel_properties)
XEN_ARGIFY_3(g_set_channel_properties_w, g_set_channel_properties)
+XEN_ARGIFY_3(g_channel_property_w, g_channel_property)
+XEN_ARGIFY_4(g_set_channel_property_w, g_set_channel_property)
XEN_ARGIFY_3(g_edit_properties_w, g_edit_properties)
XEN_ARGIFY_4(g_set_edit_properties_w, g_set_edit_properties)
+XEN_ARGIFY_4(g_edit_property_w, g_edit_property)
+XEN_ARGIFY_5(g_set_edit_property_w, g_set_edit_property)
XEN_ARGIFY_2(g_max_transform_peaks_w, g_max_transform_peaks)
XEN_ARGIFY_3(g_set_max_transform_peaks_w, g_set_max_transform_peaks)
XEN_ARGIFY_2(g_show_y_zero_w, g_show_y_zero)
@@ -9257,8 +9312,12 @@ XEN_NARGIFY_1(g_set_with_gl_w, g_set_with_gl)
#define g_set_right_sample_w g_set_right_sample
#define g_channel_properties_w g_channel_properties
#define g_set_channel_properties_w g_set_channel_properties
+#define g_channel_property_w g_channel_property
+#define g_set_channel_property_w g_set_channel_property
#define g_edit_properties_w g_edit_properties
#define g_set_edit_properties_w g_set_edit_properties
+#define g_edit_property_w g_edit_property
+#define g_set_edit_property_w g_set_edit_property
#define g_max_transform_peaks_w g_max_transform_peaks
#define g_set_max_transform_peaks_w g_set_max_transform_peaks
#define g_show_y_zero_w g_show_y_zero
@@ -9455,9 +9514,15 @@ void g_init_chn(void)
XEN_DEFINE_PROCEDURE_WITH_REVERSED_SETTER(S_channel_properties, g_channel_properties_w, H_channel_properties,
S_setB S_channel_properties, g_set_channel_properties_w, g_set_channel_properties_reversed, 0, 2, 1, 2);
+ XEN_DEFINE_PROCEDURE_WITH_REVERSED_SETTER(S_channel_property, g_channel_property_w, H_channel_property,
+ S_setB S_channel_property, g_set_channel_property_w, g_set_channel_property_reversed, 1, 2, 2, 2);
+
XEN_DEFINE_PROCEDURE_WITH_REVERSED_SETTER(S_edit_properties, g_edit_properties_w, H_edit_properties,
S_setB S_edit_properties, g_set_edit_properties_w, g_set_edit_properties_reversed, 0, 3, 1, 3);
+ XEN_DEFINE_PROCEDURE_WITH_REVERSED_SETTER(S_edit_property, g_edit_property_w, H_edit_property,
+ S_setB S_edit_property, g_set_edit_property_w, g_set_edit_property_reversed, 1, 3, 2, 3);
+
XEN_DEFINE_PROCEDURE_WITH_REVERSED_SETTER(S_max_transform_peaks, g_max_transform_peaks_w, H_max_transform_peaks,
S_setB S_max_transform_peaks, g_set_max_transform_peaks_w, g_set_max_transform_peaks_reversed, 0, 2, 1, 2);
diff --git a/snd-completion.c b/snd-completion.c
index 8445749..a04aa9a 100644
--- a/snd-completion.c
+++ b/snd-completion.c
@@ -9,7 +9,7 @@ static char *current_match = NULL;
* around in the symbol tables
*/
-#if HAVE_S7
+#if HAVE_SCHEME
typedef struct {
const char *text;
@@ -99,7 +99,7 @@ static int completions(const char *text)
}
}
}
-#if HAVE_S7
+#if HAVE_SCHEME
if (sym) free(sym);
#endif
}
diff --git a/snd-dac.c b/snd-dac.c
index a51a6b8..210e045 100644
--- a/snd-dac.c
+++ b/snd-dac.c
@@ -2620,7 +2620,7 @@ static XEN g_xen_player_to_string(XEN obj)
#endif
-#if (!HAVE_S7)
+#if (!HAVE_SCHEME)
static bool xen_player_equalp(xen_player *v1, xen_player *v2)
{
return((v1 == v2) ||
@@ -2657,7 +2657,7 @@ static XEN new_xen_player(int n)
#define C_INT_TO_XEN_PLAYER(val) new_xen_player(val)
-#if HAVE_S7
+#if HAVE_SCHEME
static bool s7_xen_player_equalp(void *obj1, void *obj2)
{
return((obj1 == obj2) ||
@@ -2677,7 +2677,7 @@ static XEN s7_xen_player_length(s7_scheme *sc, XEN player)
static void init_xen_player(void)
{
-#if HAVE_S7
+#if HAVE_SCHEME
xen_player_tag = XEN_MAKE_OBJECT_TYPE("<player>", print_xen_player, free_xen_player, s7_xen_player_equalp, NULL, NULL, NULL, s7_xen_player_length, NULL, NULL);
#else
#if HAVE_RUBY
@@ -3386,7 +3386,7 @@ If it returns " PROC_TRUE ", the sound is not played."
#ifndef SND_DISABLE_DEPRECATED
-#if HAVE_S7
+#if HAVE_SCHEME
XEN_EVAL_C_STRING("(define* (play-region reg wait stop-func)\
(play (if (integer? reg) (integer->region reg) reg) :wait wait :stop stop-func))");
diff --git a/snd-edits.c b/snd-edits.c
index 73e517c..957e782 100644
--- a/snd-edits.c
+++ b/snd-edits.c
@@ -310,14 +310,14 @@ char *run_save_state_hook(const char *file)
filename = mus_strdup(file);
if (XEN_HOOKED(save_state_hook))
{
-#if HAVE_S7
+#if HAVE_SCHEME
int gc_loc;
#endif
XEN fname;
XEN result = XEN_FALSE;
XEN procs = XEN_HOOK_PROCEDURES(save_state_hook);
fname = C_TO_XEN_STRING(filename);
-#if HAVE_S7
+#if HAVE_SCHEME
gc_loc = s7_gc_protect(s7, fname);
#endif
while (XEN_NOT_NULL_P(procs))
@@ -330,7 +330,7 @@ char *run_save_state_hook(const char *file)
}
procs = XEN_CDR (procs);
}
-#if HAVE_S7
+#if HAVE_SCHEME
s7_gc_unprotect_at(s7, gc_loc);
#endif
}
@@ -378,7 +378,7 @@ char *run_save_state_hook(const char *file)
* to use in the current form.
*/
-static int max_virtual_ptrees = 3;
+static int max_virtual_ptrees = 32; /* was 3 */
/* fragment ramp info */
@@ -7688,7 +7688,7 @@ snd_fd *xen_to_sampler(XEN obj) {if (SAMPLER_P(obj)) return((snd_fd *)XEN_OBJECT
#define XEN_TO_SAMPLER(obj) ((snd_fd *)XEN_OBJECT_REF(obj))
-#if HAVE_S7
+#if HAVE_SCHEME
static bool s7_equalp_sf(void *s1, void *s2)
{
return(s1 == s2);
@@ -7700,7 +7700,7 @@ char *sampler_to_string(snd_fd *fd)
{
char *desc;
chan_info *cp;
-#if HAVE_S7
+#if HAVE_SCHEME
desc = (char *)calloc(PRINT_BUFFER_SIZE, sizeof(char));
#else
desc = (char *)calloc(PRINT_BUFFER_SIZE, sizeof(char));
@@ -8170,7 +8170,7 @@ static XEN g_read_sample(XEN obj)
}
-#if HAVE_S7
+#if HAVE_SCHEME
static XEN s7_read_sample(s7_scheme *sc, XEN obj, XEN args)
{
return(g_read_sample(obj));
@@ -8409,7 +8409,7 @@ static XEN g_as_one_edit(XEN proc, XEN origin)
XEN result = XEN_FALSE;
char *errmsg, *as_one_edit_origin = NULL;
XEN errstr;
-#if HAVE_S7
+#if HAVE_SCHEME
int loc = -1;
#endif
@@ -8429,7 +8429,7 @@ static XEN g_as_one_edit(XEN proc, XEN origin)
for_each_normal_chan(init_as_one_edit);
result = XEN_CALL_0_NO_CATCH(proc);
-#if HAVE_S7
+#if HAVE_SCHEME
loc = s7_gc_protect(s7, result);
/* finish_as_one_edit can call update_graph which can call any number of hooks,
* so this result has to be GC protected by hand.
@@ -8443,7 +8443,7 @@ static XEN g_as_one_edit(XEN proc, XEN origin)
free(as_one_edit_origin);
}
-#if HAVE_S7
+#if HAVE_SCHEME
s7_gc_unprotect_at(s7, loc);
#endif
return(result);
@@ -8726,7 +8726,7 @@ static XEN g_set_sample(XEN samp_n, XEN val, XEN snd, XEN chn_n, XEN edpos)
}
-#if HAVE_S7
+#if HAVE_SCHEME
static XEN g_set_sample_reversed(s7_scheme *sc, s7_pointer args)
{
int len;
@@ -8994,7 +8994,7 @@ history position to read (defaults to current position)."
}
-#if HAVE_S7
+#if HAVE_SCHEME
static XEN g_set_samples_reversed(s7_scheme *sc, s7_pointer args)
{
int len;
@@ -9602,7 +9602,7 @@ static XEN g_edit_list_to_function(XEN snd, XEN chn, XEN start, XEN end)
static XEN g_max_virtual_ptrees(void)
{
- #define H_max_virtual_ptrees "(" S_max_virtual_ptrees "): most ptrees running at once in virtual edits"
+ #define H_max_virtual_ptrees "(" S_max_virtual_ptrees "): most ptrees running at once in virtual edits (default: 32)"
return(C_TO_XEN_INT(max_virtual_ptrees));
}
@@ -9705,7 +9705,7 @@ XEN_NARGIFY_1(g_edit_fragment_type_name_w, g_edit_fragment_type_name)
void g_init_edits(void)
{
-#if HAVE_S7
+#if HAVE_SCHEME
sf_tag = XEN_MAKE_OBJECT_TYPE("<sampler>", print_sf, free_sf, s7_equalp_sf, NULL, s7_read_sample, NULL, NULL, NULL, NULL);
#else
sf_tag = XEN_MAKE_OBJECT_TYPE("Sampler", sizeof(snd_fd));
diff --git a/snd-env.c b/snd-env.c
index 3b64802..e7d234f 100644
--- a/snd-env.c
+++ b/snd-env.c
@@ -1541,7 +1541,7 @@ static bool check_enved_hook(env *e, int pos, mus_float_t x, mus_float_t y, enve
if (XEN_HOOKED(enved_hook))
{
int len = 0;
-#if HAVE_S7
+#if HAVE_SCHEME
int gc_loc;
#endif
XEN result = XEN_FALSE;
@@ -1552,7 +1552,7 @@ static bool check_enved_hook(env *e, int pos, mus_float_t x, mus_float_t y, enve
*/
procs = XEN_HOOK_PROCEDURES(enved_hook);
env_list = env_to_xen(e);
-#if HAVE_S7
+#if HAVE_SCHEME
gc_loc = s7_gc_protect(s7, env_list);
#endif
@@ -1584,11 +1584,11 @@ static bool check_enved_hook(env *e, int pos, mus_float_t x, mus_float_t y, enve
e->data[i] = XEN_TO_C_DOUBLE(XEN_CAR(lst));
if (XEN_NOT_NULL_P(procs))
{
-#if HAVE_S7
+#if HAVE_SCHEME
s7_gc_unprotect_at(s7, gc_loc);
#endif
env_list = env_to_xen(e);
-#if HAVE_S7
+#if HAVE_SCHEME
gc_loc = s7_gc_protect(s7, env_list);
#endif
@@ -1596,7 +1596,7 @@ static bool check_enved_hook(env *e, int pos, mus_float_t x, mus_float_t y, enve
env_changed = true;
}
}
-#if HAVE_S7
+#if HAVE_SCHEME
s7_gc_unprotect_at(s7, gc_loc);
#endif
}
diff --git a/snd-fft.c b/snd-fft.c
index 3dbe707..703a6c1 100644
--- a/snd-fft.c
+++ b/snd-fft.c
@@ -2145,7 +2145,7 @@ static XEN g_xen_transform_to_string(XEN obj)
#endif
-#if (!HAVE_S7)
+#if (!HAVE_SCHEME)
static bool xen_transform_equalp(xen_transform *v1, xen_transform *v2)
{
return((v1 == v2) ||
@@ -2182,7 +2182,7 @@ XEN new_xen_transform(int n)
#define C_INT_TO_XEN_TRANSFORM(Val) new_xen_transform(Val)
-#if HAVE_S7
+#if HAVE_SCHEME
static bool s7_xen_transform_equalp(void *obj1, void *obj2)
{
return((obj1 == obj2) ||
@@ -2199,7 +2199,7 @@ static XEN s7_xen_transform_length(s7_scheme *sc, XEN obj)
static void init_xen_transform(void)
{
-#if HAVE_S7
+#if HAVE_SCHEME
xen_transform_tag = XEN_MAKE_OBJECT_TYPE("<transform>", print_xen_transform, free_xen_transform, s7_xen_transform_equalp,
NULL, NULL, NULL, s7_xen_transform_length, NULL, NULL);
#else
diff --git a/snd-file.c b/snd-file.c
index 09add61..c049c47 100644
--- a/snd-file.c
+++ b/snd-file.c
@@ -1067,14 +1067,14 @@ static file_info *open_raw_sound(const char *fullname, read_only_t read_only, bo
if (XEN_HOOKED(open_raw_sound_hook))
{
-#if HAVE_S7
+#if HAVE_SCHEME
int gc_loc;
#endif
XEN arg1;
procs = XEN_HOOK_PROCEDURES(open_raw_sound_hook);
arg1 = C_TO_XEN_STRING(fullname);
-#if HAVE_S7
+#if HAVE_SCHEME
gc_loc = s7_gc_protect(s7, arg1);
#endif
@@ -1088,7 +1088,7 @@ static file_info *open_raw_sound(const char *fullname, read_only_t read_only, bo
res_loc = snd_protect(res);
procs = XEN_CDR(procs);
}
-#if HAVE_S7
+#if HAVE_SCHEME
s7_gc_unprotect_at(s7, gc_loc);
#endif
}
@@ -1427,14 +1427,14 @@ char *output_name(const char *current_name)
{
if (XEN_HOOKED(output_name_hook))
{
-#if HAVE_S7
+#if HAVE_SCHEME
int gc_loc;
#endif
XEN result, fname;
XEN procs = XEN_HOOK_PROCEDURES (output_name_hook);
fname = C_TO_XEN_STRING(current_name);
-#if HAVE_S7
+#if HAVE_SCHEME
gc_loc = s7_gc_protect(s7, fname);
#endif
@@ -1447,7 +1447,7 @@ char *output_name(const char *current_name)
return(mus_strdup(XEN_TO_C_STRING(result)));
procs = XEN_CDR (procs);
}
-#if HAVE_S7
+#if HAVE_SCHEME
s7_gc_unprotect_at(s7, gc_loc);
#endif
}
@@ -4939,7 +4939,7 @@ static XEN g_file_write_date(XEN file)
#define write_date_equivalent "Equivalent to Forth's file-mtime"
#endif
- #if HAVE_S7
+ #if HAVE_SCHEME
#define write_date_equivalent ""
#endif
diff --git a/snd-find.c b/snd-find.c
index 79aceb6..fe6f718 100644
--- a/snd-find.c
+++ b/snd-find.c
@@ -472,7 +472,7 @@ void cursor_search(chan_info *cp, int count)
{
/* see note above about closures */
clear_sound_search_procedure(sp, false);
-#if HAVE_S7
+#if HAVE_SCHEME
if (optimization(ss) > 0)
sp->search_tree = mus_run_form_to_ptree_1_b_without_env(C_STRING_TO_XEN_FORM(sp->search_expr));
#endif
@@ -612,7 +612,7 @@ static XEN g_set_search_procedure(XEN snd, XEN proc)
{
sp->search_proc = proc;
sp->search_proc_loc = snd_protect(proc);
-#if HAVE_S7
+#if HAVE_SCHEME
if (optimization(ss) > 0)
sp->search_tree = mus_run_form_to_ptree_1_b(XEN_PROCEDURE_SOURCE(proc));
#endif
@@ -640,7 +640,7 @@ static XEN g_set_search_procedure(XEN snd, XEN proc)
{
ss->search_proc = snd;
ss->search_proc_loc = snd_protect(snd);
-#if HAVE_S7
+#if HAVE_SCHEME
if (optimization(ss) > 0)
ss->search_tree = mus_run_form_to_ptree_1_b(XEN_PROCEDURE_SOURCE(snd));
#endif
diff --git a/snd-forth-init.fs b/snd-forth-init.fs
index 9bb2b26..a576dae 100644
--- a/snd-forth-init.fs
+++ b/snd-forth-init.fs
@@ -6,8 +6,9 @@
\ ./install.fth
\
\ or even better
-\
-\ make install-site-fth
+\
+\ cd ${top_builddir}
+\ make install
\
\ If you have installed *.fs scripts with one of the above mentioned
\ commands, you don't need to add a path to *load-path*.
@@ -16,85 +17,66 @@
\
\ "/home/mike/snd" add-load-path
-\ A special *SND-HOME* path is ~/.snd.d:
+\ A special *SND-HOME* path points here to ~/.snd.d (similar to ~/.emacs.d):
\
-\ /home/mike/.snd.d
-\ /home/mike/.snd.d/sound
-\ /home/mike/.snd.d/zap for set-temp-dir, set-save-dir
-\ /home/mike/.snd.d/peaks
+\ ~/.snd.d directory for save-state-file
+\ ~/.snd.d/sound directory for *clm-file-name*
+\ add-directory-to-view-files-list
+\ set-open-file-dialog-director
+\ ~/.snd.d/zap directory for set-temp-dir
+\ set-save-dir
+\ ~/.snd.d/peaks directory for set-peak-env-dir
+\
+\ "HOME" getenv value *home*
+\ *home* "/.snd.d" $+ value *snd-home*
\
\ Change these paths to fit your needs!
+\
#t to *fth-verbose*
#f to *fth-debug*
-'snd-nogui provided? [unless]
- \ Prints at the same time to Snd's listener and stdout/stderr.
- :port-name "sndout"
- :write-line lambda: <{ line -- }> line snd-print .stdout ;
- make-soft-port set-*stdout* value stdout-io
- :port-name "snderr"
- :write-line lambda: <{ line -- }> line snd-print .stderr ;
- make-soft-port set-*stderr* value stderr-io
-[then]
+#f value *init-with-peaks* \ with peak-env support
+#f value *init-graph-extra-hooks* \ with display-correlate, zoom-spectrum, superimpose-ffts
+#f value *init-lisp-graph-extra-hooks* \ with display-energy, display-db
-\ clm-print is defined in snd/snd-xen.c
-[ifundef] clm-print <'> fth-print alias clm-print [then]
-: clm-message { fmt args -- str } ." \ " fmt args format .string cr ;
+: print-loading-file { fname -- }
+ *fth-verbose* if $" \\ loading %s\n" '( fname ) clm-print then
+;
-*fth-verbose* [if] $" loading %S" '( *filename* ) clm-message [then]
-"HOME" getenv value *home*
-*home* "/.snd.d" $+ value *snd-home*
-hostname value *hostname*
-*hostname* /\\./ string-split 0 array-ref value *short-hostname*
+*filename* print-loading-file
-\ Snd (nogui) starts fth_repl after loading init file, but fth_repl
-\ sets *argv*.
-*argv* length 0> [if]
- *argv* 0 array-ref undef file-basename value *program-name*
-[else]
- : *program-name* ( -- name )
- *argv* 0 array-ref "-" string-split 0 array-ref /\\// string-split -1 array-ref
- ;
-[then]
-
-#f value __simple-nogui-prompt__
-#f value __lisp-graph__
-#t set-show-listener drop
+"HOME" getenv value *home*
+*home* "/.snd.d" $+ value *snd-home*
+hostname value *hostname*
+*hostname* /\\./ string-split car value *short-hostname*
+*argv* length 0> [if] *argv* car undef file-basename [else] "snd" [then] value *program-name*
-before-load-hook reset-hook!
before-load-hook lambda: <{ fname -- f }>
- *fth-verbose* if $" loading %S" #( fname ) clm-message then
+ fname print-loading-file
#t
; add-hook!
+\ if configured --with-shared-sndlib
+dl-load sndlib Init_sndlib
+
\ Set them before loading clm.fs.
-44100 set-default-output-srate drop
-2 set-default-output-chans drop
-mus-interp-linear set-locsig-type drop
-mus-next set-default-output-header-type drop
-mus-lfloat set-default-output-data-format drop
-1024 1024 * set-mus-file-buffer-size drop
-512 set-dac-size drop
-0 set-audio-output-device drop
-#t set-mus-clipping drop
-#t set-clipping drop
-50 set-mus-array-print-length drop
-50 set-object-print-length
+2 set-default-output-chans drop
+48000 set-default-output-srate drop
+512 set-dac-size drop
+mus-clipping set-clipping drop
+1024 1024 * set-mus-file-buffer-size drop
+24 set-mus-array-print-length drop
+mus-array-print-length set-print-length drop
+128 set-object-print-length
-dl-load sndlib Init_sndlib
-\ dl-load sndins Init_sndins
-\ dl-load gdbm Init_gdbm
require clm
require clm-ins
-require examp
-require hooks
-require marks
-require extensions
-require env
-require mix
-require dsp
-require rgb
+
+\ Environment variable CLM_SEARCH_PATH
+\ Path variable where sound files reside.
+\ csh: setenv CLM_SEARCH_PATH /usr/gnu/sound/SFiles:${HOME}/.snd.d/sound
+\ sh: CLM_SEARCH_PATH=/usr/gnu/sound/SFiles:${HOME}/.snd.d/sound; export CLM_SEARCH_PATH
"CLM_SEARCH_PATH" getenv dup [if]
":" string-split [each] *clm-search-list* swap array-push to *clm-search-list* [end-each]
@@ -102,171 +84,126 @@ require rgb
drop
*clm-search-list* *snd-home* "/sound" $+ array-push to *clm-search-list*
[then]
-#t to *clm-play*
-#t to *clm-statistics*
-#t to *clm-verbose*
-#f to *clm-debug*
-*snd-home* "/sound/fth-test.snd" $+ to *clm-file-name*
-#t to *clm-delete-reverb*
-*snd-home* $" /sound/fth-test.reverb" $+ to *clm-reverb-file-name*
-*clm-debug* [if]
- lambda: <{ inst start dur -- }>
- $" %14s[%d]: %5.2f %5.2f" '( inst stack-level start dur ) clm-message
- ;
-[else]
- lambda: <{ inst start dur -- }> $" %14s: %5.2f %5.2f" '( inst start dur ) clm-message ;
-[then] to *clm-notehook*
-
-'snd-motif provided? 'xm provided? not && [if] dl-load libxm Init_libxm [then]
-'snd-gtk provided? 'xg provided? not && [if] dl-load libxg Init_libxg [then]
-
-#f check-for-unsaved-edits
-3 remember-sound-state
-*snd-home* add-load-path
-*snd-home* "/snd-remember-sound.fs" $+ to remember-sound-filename
-*snd-home* "/peaks" $+ to peak-env-dir
+#t to *clm-play*
+#t to *clm-statistics*
+#t to *clm-verbose*
+#f to *clm-debug*
+*snd-home* "/sound/fth-test.snd" $+ to *clm-file-name*
+*snd-home* "/sound/fth-test.reverb" $+ to *clm-reverb-file-name*
+#t to *clm-delete-reverb*
+lambda: <{ ins beg dur -- }> $" %14s: %5.2f %5.2f" '( ins beg dur ) clm-message ; to *clm-notehook*
-"CLM_SEARCH_PATH" getenv dup [if]
- ":" string-split [each] add-directory-to-view-files-list drop [end-each]
-[else]
- drop
- *snd-home* "/sound" add-directory-to-view-files-list drop
+'snd-nogui provided? [if]
+ \ snd-nogui repl and prompt hooks
+ before-repl-hook reset-hook! \ remove default hook
+ before-repl-hook lambda: <{ -- }>
+ "" #f clm-message
+ $" Starting session on %s." '( $" %Ev %Er" current-time strftime ) clm-message
+ "" #f clm-message
+ ; add-hook!
+ after-repl-hook lambda: <{ history -- }>
+ "" #f clm-message
+ $" Thank you for using %s!" #( *program-name* string-upcase ) clm-message
+ "" #f clm-message
+ 1 sleep
+ ; add-hook!
+
+ \ A more elaborated prompt for fth and snd-forth-nogui.
+ before-prompt-hook lambda: <{ prompt pos -- new-prompt }>
+ "%EI:%EM%p" current-time strftime string-downcase! { tm }
+ "(/usr)?" *home* $+ make-regexp file-pwd "~" regexp-replace { path }
+ $" (%s:%s)\n[%s %s] (%d)> " #( *short-hostname* path *program-name* tm pos ) string-format
+ ; add-hook!
[then]
-[ifundef] enved
- "enved" #( 0.0 0.0 25.0 1.0 75.0 1.0 100.0 0.0 ) 1.0 define-envelope drop
- "brass" #( 0.0 0.0 20.0 1.0 40.0 0.6 90.0 0.5 100.0 0.0 ) 1.0 define-envelope drop
- "bassoon" #( 0.0 0.0 10.0 1.0 90.0 1.0 100.0 0.0 ) 1.0 define-envelope drop
- "clarinet" #( 0.0 0.0 25.0 1.0 75.0 1.0 100.0 0.0 ) 32.0 define-envelope drop
- "woodwind" #( 0.0 0.0 10.0 1.0 90.0 1.0 100.0 0.0 ) 0.32 define-envelope drop
+*snd-home* add-load-path
+*init-with-peaks* [if]
+ *snd-home* "/peaks" $+ set-peak-env-dir drop
[then]
-
-\ Snd hooks
-exit-hook lambda: <{ -- f }>
- save-state-file save-state drop
- #t
-; add-hook!
-
-after-save-as-hook lambda: <{ snd fname from-dialog -- f }>
- snd revert-sound drop
- snd close-sound drop
- fname open-sound drop
- #f
-; add-hook!
+*snd-home* "/snd-saved.fs" $+ set-save-state-file drop
+*snd-home* "/zap" $+ set-temp-dir drop
+*snd-home* "/zap" $+ set-save-dir drop
+*snd-home* "/sound" $+ set-open-file-dialog-directory drop
+"/usr/gnu/cvs/snd" set-html-dir drop
+"BROWSER" getenv "firefox" || set-html-program drop
+#t set-trap-segfault drop
+#t set-show-listener drop
+0.0 set-auto-update-interval drop
+"rev" add-sound-file-extension drop
+"reverb" add-sound-file-extension drop
+"wave" add-sound-file-extension drop
+*clm-search-list* [each] ( dir ) undef add-directory-to-view-files-list drop [end-each]
before-save-state-hook lambda: <{ fname -- f }>
- sounds each { snd }
- snd channels 0 ?do 'inset-envelope snd i remove-channel-property drop loop
- end-each
- fname :if-exists :rename io-open-write dup $" \\ -*- snd-forth -*-\n" io-write io-close
- #t
-; add-hook!
-
-window-property-changed-hook lambda: <{ cmd -- }>
- $" remote command received: %S" #( cmd ) clm-message
+ $" \\ -*- snd-forth -*-\n" :filename fname with-output-port
+ #t \ #t --> append mode
; add-hook!
-output-comment-hook lambda: <{ str1 -- str2 }>
- selected-sound marks->string
+\ make-default-comment from clm.fs
+output-comment-hook lambda: <{ str -- s }>
+ str empty? if make-default-comment else str then
; add-hook!
-0 [if]
- after-open-hook lambda: <{ snd -- }>
- snd comment ( str ) <'> string-eval #t nil fth-catch if stack-reset then
- ; add-hook!
-[then]
-
-*snd-home* "/snd-saved.fs" $+ set-save-state-file drop
-*snd-home* "/zap" $+ set-temp-dir drop
-*snd-home* "/zap" $+ set-save-dir drop
-"/usr/gnu/cvs/snd" set-html-dir drop
-"firefox" set-html-program drop
-#f set-trap-segfault drop
-#t set-show-indices drop
-0.0 set-auto-update-interval drop
-#f set-verbose-cursor drop
-"rev" add-sound-file-extension drop
-"reverb" add-sound-file-extension drop
-"wave" add-sound-file-extension drop
-
-'snd-nogui provided? [if]
- \ for loading ~/.snd.d/snd-saved.fs
- <'> noop alias set-doit-button-color \ ( a -- b )
- <'> noop alias set-doit-again-button-color \ ( a -- b )
- <'> noop alias set-help-button-color \ ( a -- b )
- <'> noop alias set-quit-button-color \ ( a -- b )
- <'> noop alias set-reset-button-color \ ( a -- b )
- : set-mix-color <{ val :optional mix-id #f -- col }> val ;
- #f set-verbose-cursor drop
- \ Fth repl and prompt hooks
- before-repl-hook reset-hook!
- before-repl-hook lambda: <{ -- }>
- *fth-verbose* if
- "" #() clm-message
- $" Starting session on %Ev %Er." #( current-time strftime ) clm-message
- "" #() clm-message
- then
- ; add-hook!
- after-repl-hook lambda: <{ history -- }>
- history readlines array-reverse! array-uniq! array-reverse! { ary }
- history ary writelines
- *fth-verbose* if
- "" #() clm-message
- $" Thank you for using %s!" #( *program-name* string-upcase ) clm-message
- "" #() clm-message
- then
- ; add-hook!
-
- __simple-nogui-prompt__ [if]
- \ A simple prompt for snd-nogui.
- before-prompt-hook lambda: <{ prompt pos -- new-prompt }>
- $" snd (%d)> " #( pos ) string-format
- ;
- [else]
- \ A more elaborated prompt for fth and snd-forth-nogui.
- before-prompt-hook lambda: <{ prompt pos -- new-prompt }>
- "%EI:%EM%p" current-time strftime string-downcase! { tm }
- "(/usr)?" *home* $+ make-regexp file-pwd "~" regexp-replace { path }
- $" (%s:%s)\n[%s %s] (%d)> " #( *short-hostname* path *program-name* tm pos ) string-format
- ;
- [then] add-hook!
-[else] \ not snd-nogui
- require draw
+'snd-nogui provided? [unless]
'snd-motif provided? [if]
+ \ if not configured --with-static-xm
+ 'xm provided? not [if] dl-load libxm Init_libxm [then]
+ require snd-xm
+ add-mark-pane
+ #t show-smpte-label
+ after-open-hook <'> show-disk-space add-hook!
+
require effects
+ #f to use-combo-box-for-fft-size \ boolean (default #f)
+
require popup
edhist-save-hook lambda: <{ prc -- }> "%S" #( prc ) clm-message ; add-hook!
- #t show-smpte-label
- 2 set-global-sync
- add-mark-pane
- make-current-window-display
[then]
- \ C-x C-c
- <char> c 4 lambda: <{ -- f }> 0 snd-exit drop #f ; #t $" terminate Snd [ms]" dup bind-key drop
- \ C-x k
- <char> k 0 lambda: <{ -- f }>
- selected-sound close-sound-extend #f
- ; #t $" close sound and jump to next open [ms]" dup bind-key drop
- \ C-x x
- <char> x 0 lambda: <{ -- val }>
- undef selection? if
- $" selection-eval:" <'> eval-over-selection #f #f prompt-in-minibuffer
- else
- $" no selection" #f #f report-in-minibuffer
- then
- ; #t $" eval over selection" $" eval over selection" bind-key drop
+ 'snd-gtk provided? [if]
+ \ if not configured --with-static-xg
+ 'xg provided? not [if] dl-load libxg Init_libxg [then]
+ $" Serif 10" set-axis-label-font drop
+ [then]
+
+ require extensions
+ #t set-emacs-style-save-as
+ #t check-for-unsaved-edits
+ *snd-home* "/snd-remember-sound.fs" $+ to remember-sound-filename
+ 3 remember-sound-state
+ 0.00 0.10 #t prefs-activate-initial-bounds
+ with-reopen-menu
+ with-buffers-menu
+ 2 set-global-sync
+
+ require examp
+ *init-graph-extra-hooks* [if]
+ graph-hook <'> display-correlate add-hook!
+ graph-hook <'> zoom-spectrum add-hook!
+ graph-hook <'> superimpose-ffts add-hook!
+ [then]
+ *init-lisp-graph-extra-hooks* [if]
+ lisp-graph-hook <'> display-energy add-hook!
+ lisp-graph-hook <'> display-db add-hook!
+ [then]
+ after-transform-hook <'> fft-peak add-hook!
+
+ require mix
+ mix-click-hook <'> mix-click-sets-amp add-hook!
+ mix-click-hook <'> mix-click-info add-hook!
- \ graph-hook <'> display-correlate add-hook!
- \ graph-hook <'> zoom-spectrum add-hook!
- \ graph-hook <'> superimpose-ffts add-hook!
- graph-hook lambda: <{ snd chn y0 y1 -- }>
+ require marks
+ save-mark-properties
+ mark-click-hook <'> mark-click-info add-hook!
+
+ require dsp
+ graph-hook lambda: <{ snd chn y0 y1 -- #f }>
$" freq: %.3f" #( snd chn left-sample snd chn spot-freq ) string-format
snd #f report-in-minibuffer drop
#f
; add-hook!
- mouse-click-hook lambda: <{ snd chn button state x y axis -- }>
+ mouse-click-hook lambda: <{ snd chn button state x y axis -- a }>
axis time-graph = if
$" freq: %.3f" #( snd chn #f cursor snd chn spot-freq ) string-format
snd #f report-in-minibuffer
@@ -275,29 +212,11 @@ output-comment-hook lambda: <{ str1 -- str2 }>
then
; add-hook!
- after-open-hook lambda: <{ snd -- }>
- snd channels 0 ?do snd short-file-name snd i time-graph set-x-axis-label drop loop
- #t snd set-with-tracking-cursor drop \ with-tracking-cursor alias for cursor-follows-play
- channels-combined snd set-channel-style drop
- ; add-hook!
-
- : snd-set-cursor-style ( snd kind -- f )
- { snd kind }
- snd sound? if
- kind snd #t set-cursor-style
- else
- #f
- then
- ;
- start-playing-hook lambda: <{ snd -- f }> snd cursor-line snd-set-cursor-style ; add-hook!
- stop-playing-hook lambda: <{ snd -- f }> snd cursor-cross snd-set-cursor-style ; add-hook!
-
+ require env
enved-hook lambda: <{ en pt x y reason -- en'|#f }>
reason enved-move-point = if
- x en car f> x en -2 array-ref f< && if
- en en pt 2* array-ref x #f #f stretch-envelope { new-en }
- new-en pt 2* 1+ y array-set!
- new-en
+ x en 0 array-ref f> x en -2 array-ref f< && if
+ en en pt 2* array-ref x #f #f stretch-envelope ( new-en ) dup pt 2* 1+ y array-set!
else
#f
then
@@ -306,63 +225,128 @@ output-comment-hook lambda: <{ str1 -- str2 }>
then
; add-hook!
- \ from ~/.snd_prefs_forth
- with-buffers-menu
- with-reopen-menu
- 0.00 0.10 #t prefs-activate-initial-bounds
- focus-follows-mouse
- save-mark-properties
- defined? use-combo-box-for-fft-size [if] \ effects.fs
- #f to use-combo-box-for-fft-size
- [then]
+ require rgb
+ lightsteelblue2 set-help-button-color drop
+ lightsalmon2 set-reset-button-color drop
+ light-salmon set-quit-button-color drop
+ wheat set-doit-button-color drop
+ burlywood set-doit-again-button-color drop
+ lightsteelblue1 set-pushed-button-color drop
+ beige set-selected-graph-color drop
+ blue set-selected-data-color drop
+
+ #t set-show-indices drop
+ #f set-verbose-cursor drop
+ #t set-with-inset-graph drop
+ #t set-with-pointer-focus drop
+ #t set-just-sounds drop
+ #t set-enved-wave? drop
+ #t set-show-y-zero drop
+ #t set-show-transform-peaks drop
+ speed-control-as-ratio set-speed-control-style drop
+ graph-as-spectrogram set-transform-graph-type drop \ graph-once graph-as-sonogram
+ rainbow-colormap set-colormap drop
+ $" snd> " set-listener-prompt drop
+ 160 set-window-x drop
+ 0 set-window-y drop
+ 800 set-window-width drop
+ 600 set-window-height drop
+
+ exit-hook lambda: <{ -- f }>
+ save-state-file save-state drop
+ sounds each close-sound drop end-each
+ #t
+ ; add-hook!
+
+ window-property-changed-hook lambda: <{ cmd -- }>
+ $" remote command received: %S" #( cmd ) clm-message
+ #f
+ ; add-hook!
- rainbow-colormap set-colormap drop
- #f set-show-controls drop
- #f set-just-sounds drop
- 1.0 set-enved-base drop
- #t set-enved-wave? drop
- #t set-show-y-zero drop
- #f set-verbose-cursor drop
- beige set-selected-graph-color drop
- blue set-selected-data-color drop
- #t set-with-gl drop
- \ graph-once set-transform-graph-type drop
- \ graph-as-sonogram set-transform-graph-type drop
- graph-as-spectrogram set-transform-graph-type drop
- #t set-show-transform-peaks drop
- samaraki-window set-fft-window drop
- fourier-transform set-transform-type drop
- after-transform-hook <'> fft-peak add-hook!
- __lisp-graph__ [if]
- lisp-graph-hook <'> display-db add-hook!
- lisp-graph-hook <'> display-energy add-hook!
- [then]
- mix-click-hook <'> mix-click-info add-hook!
- mark-click-hook <'> mark-click-info add-hook!
- defined? show-disk-space [if]
- after-open-hook <'> show-disk-space add-hook!
- [then]
- lightsteelblue2 set-help-button-color drop
- lightsalmon2 set-reset-button-color drop
- light-salmon set-quit-button-color drop
- wheat set-doit-button-color drop
- burlywood set-doit-again-button-color drop
- lightsteelblue1 set-pushed-button-color drop
- $" snd> " set-listener-prompt drop
- #f set-show-controls drop
- 160 set-window-x drop
- 0 set-window-y drop
- 800 set-window-width drop
- 600 set-window-height drop
- speed-control-as-ratio set-speed-control-style drop
+ after-open-hook lambda: <{ snd -- }>
+ snd channels 0 ?do snd short-file-name snd i time-graph set-x-axis-label drop loop
+ #t snd set-with-tracking-cursor drop
+ channels-combined snd set-channel-style
+ ; add-hook!
+
+ : snd-set-cursor-style { snd kind -- #f }
+ snd sound? if kind snd #t set-cursor-style drop then
+ #f
+ ;
+ start-playing-hook lambda: <{ snd -- f }> snd cursor-line snd-set-cursor-style ; add-hook!
+ stop-playing-hook lambda: <{ snd -- f }> snd cursor-cross snd-set-cursor-style ; add-hook!
+
+ \ bind-key ( key modifiers func :optional extended=#f origin="" prefs-info="" -- val )
+ \
+ \ modifiers:
+ \ 0 normal
+ \ 1 shift
+ \ 4 control
+ \ 8 meta
+ \
+ \ extended (prefix key):
+ \ #t C-x
+ \ #f none
+ \
+ \ func ( -- val )
+ \
+ \ val should be:
+ \ cursor-in-view
+ \ cursor-on-left
+ \ cursor-on-right
+ \ cursor-in-middle
+ \ keyboard-no-action
+ \
+ \ C-x C-c terminate Snd
+ <char> c 4 lambda: <{ -- val }>
+ 0 snd-exit drop
+ cursor-in-view
+ ; #t $" terminate Snd" "terminate-snd" bind-key drop
+ \ C-x k close selected sound
+ <char> k 0 lambda: <{ -- val }>
+ selected-sound close-sound-extend
+ cursor-in-view
+ ; #t $" close sound and jump to next open" "close-current-sound" bind-key drop
+ \ C-x C-k show listener
+ <char> k 4 lambda: <{ -- val }>
+ #t set-show-listener drop
+ cursor-in-view
+ ; #t $" show listener" "show-listener" bind-key drop
+ \ C-x C-n hide listener
+ <char> n 4 lambda: <{ -- val }>
+ #f set-show-listener drop
+ cursor-in-view
+ ; #t $" hide listener" "hide-listener" bind-key drop
+ \ C-x C-x play
+ <char> x 4 lambda: <{ -- val }>
+ #t play drop
+ cursor-in-view
+ ; #t $" play current sound" "play-current-sound" bind-key drop
+ \ C-x C-t play from cursor
+ <char> t 4 lambda: <{ -- val }>
+ selected-sound :start undef undef undef cursor play drop
+ cursor-in-view
+ ; #t $" play from cursor" "play-from-cursor" bind-key drop
+ \ C-x x eval over selection
+ <char> x 0 lambda: <{ -- val }>
+ undef selection? if
+ $" selection-eval:" <'> eval-over-selection #f #f prompt-in-minibuffer
+ else
+ $" no selection" #f #f report-in-minibuffer
+ then drop
+ cursor-in-view
+ ; #t $" eval over selection" "eval-over-selection" bind-key drop
[then] \ not snd-nogui
-*snd-home* "/sound" $+ set-open-file-dialog-directory drop
-save-state-file file-exists? [if] require snd-saved [then]
+'snd-nogui provided? [unless]
+ save-state-file file-exists? [if] require snd-saved [then]
+[then]
+
\ find-file searchs in *clm-search-list*
-sounds empty? [if] *clm-file-name* find-file dup [if] open-sound [then] drop cr [then]
+sounds empty? [if]
+ *clm-file-name* find-file dup [if] open-sound [then] drop cr
+[then]
+
$" Snd of %s (Fth %s)" #( snd-version fth-version ) clm-message
-#t show-listener drop
-'snd-nogui provided? [if] stack-reset [else] #f set-show-controls drop [then]
\ .snd_forth ends here
diff --git a/snd-gfind.c b/snd-gfind.c
index d236e42..330c058 100644
--- a/snd-gfind.c
+++ b/snd-gfind.c
@@ -84,7 +84,7 @@ static void edit_find_find(read_direction_t direction, GtkWidget *w, gpointer co
{
ss->search_proc = proc;
ss->search_proc_loc = snd_protect(proc);
-#if HAVE_S7
+#if HAVE_SCHEME
if (optimization(ss) > 0)
ss->search_tree = mus_run_form_to_ptree_1_b(XEN_PROCEDURE_SOURCE(proc));
#endif
@@ -103,7 +103,7 @@ static void edit_find_find(read_direction_t direction, GtkWidget *w, gpointer co
/* using global search_proc set by user */
buf = (char *)calloc(PRINT_BUFFER_SIZE, sizeof(char));
mus_snprintf(buf, PRINT_BUFFER_SIZE, _("find: %s"), temp = (char *)XEN_AS_STRING(ss->search_proc));
-#if HAVE_S7
+#if HAVE_SCHEME
if (temp) free(temp);
#endif
set_label(edit_find_label, buf);
diff --git a/snd-glistener.c b/snd-glistener.c
index 26fbddf..22c6f96 100644
--- a/snd-glistener.c
+++ b/snd-glistener.c
@@ -538,7 +538,7 @@ static gboolean listener_key_press(GtkWidget *w, GdkEventKey *event, gpointer da
return(true); /* don't repeat the keystroke */
}
-#if HAVE_S7
+#if HAVE_SCHEME
/* TODO: set ss->listener_char = char */
#endif
diff --git a/snd-gmenu.c b/snd-gmenu.c
index 8a3b070..d327bf2 100644
--- a/snd-gmenu.c
+++ b/snd-gmenu.c
@@ -252,11 +252,13 @@ static void view_lollipops_callback(GtkWidget *w, gpointer info) {set_graph_styl
static void view_zero_callback(GtkWidget *w, gpointer info) {set_show_y_zero((!(show_y_zero(ss))));}
static void view_cursor_callback(GtkWidget *w, gpointer info) {set_verbose_cursor((!(verbose_cursor(ss))));}
+#if HAVE_EXTENSION_LANGUAGE
static void view_inset_callback(GtkWidget *w, gpointer info)
{
set_with_inset_graph((!(with_inset_graph(ss))));
for_each_chan(update_graph);
}
+#endif
static void view_controls_callback(GtkWidget *w, gpointer info)
{
@@ -768,11 +770,13 @@ GtkWidget *add_menu(void)
gtk_widget_show(view_cursor_menu);
SG_SIGNAL_CONNECT(view_cursor_menu, "activate", view_cursor_callback, NULL);
+#if HAVE_EXTENSION_LANGUAGE
view_inset_menu = gtk_menu_item_new_with_label(_("With inset graph"));
ml[v_inset_menu] = _("With inset graph");
gtk_menu_shell_append(GTK_MENU_SHELL(view_cascade_menu), view_inset_menu);
gtk_widget_show(view_inset_menu);
SG_SIGNAL_CONNECT(view_inset_menu, "activate", view_inset_callback, NULL);
+#endif
view_combine_menu = gtk_menu_item_new_with_label(_("Channel style"));
diff --git a/snd-gprefs.c b/snd-gprefs.c
index 9821118..ed9396b 100644
--- a/snd-gprefs.c
+++ b/snd-gprefs.c
@@ -564,11 +564,68 @@ static prefs_info *prefs_row_with_two_toggles(const char *label, const char *var
/* ---------------- toggle with text ---------------- */
+/* see commentary in snd-xprefs.c */
+
+
+typedef struct {
+ bool text_focussed, text_changed;
+ prefs_info *prf;
+} text_info;
+
+
+static void text_change_callback(GtkWidget *w, gpointer context)
+{
+ text_info *data = (text_info *)context;
+ if (data->text_focussed) /* try to omit non-user actions that change the value */
+ data->text_changed = true;
+}
+
+
+static void text_activate_callback(GtkWidget *w, gpointer context)
+{
+ text_info *data = (text_info *)context;
+ data->text_changed = false;
+}
+
+
+static void text_grab_focus_callback(GtkWidget *w, GdkEventCrossing *ev, gpointer context)
+{
+ text_info *data = (text_info *)context;
+ if (with_pointer_focus(ss))
+ goto_window(w);
+ data->text_focussed = true;
+}
+
+
+static void text_lose_focus_callback(GtkWidget *w, GdkEventCrossing *ev, gpointer context)
+{
+ text_info *data = (text_info *)context;
+ if ((data->text_focussed) &&
+ (data->text_changed) &&
+ (data->prf) &&
+ (data->prf->text_func))
+ {
+ (*(data->prf->text_func))(data->prf);
+ data->text_changed = false;
+ }
+}
+
+
+static void call_text_func(GtkWidget *w, gpointer context)
+{
+ prefs_info *prf = (prefs_info *)context;
+ if ((prf) && (prf->text_func))
+ (*(prf->text_func))(prf);
+}
+
+
static GtkWidget *make_row_text(prefs_info *prf, const char *text_value, int cols, GtkWidget *box)
{
int len;
GtkWidget *w;
GtkSettings *settings;
+ text_info *info;
+
ASSERT_WIDGET_TYPE(GTK_IS_HBOX(box), box);
len = mus_strlen(text_value);
w = gtk_entry_new();
@@ -592,15 +649,15 @@ static GtkWidget *make_row_text(prefs_info *prf, const char *text_value, int col
SG_SIGNAL_CONNECT(w, "leave_notify_event", mouse_leave_pref_callback, (gpointer)prf);
SG_SIGNAL_CONNECT(w, "activate", prefs_change_callback, NULL);
- return(w);
-}
+ info = (text_info *)calloc(1, sizeof(text_info));
+ info->prf = prf;
+ SG_SIGNAL_CONNECT(w, "enter_notify_event", text_grab_focus_callback, (gpointer)info);
+ SG_SIGNAL_CONNECT(w, "leave_notify_event", text_lose_focus_callback, (gpointer)info);
+ SG_SIGNAL_CONNECT(w, "changed", text_change_callback, (gpointer)info);
+ SG_SIGNAL_CONNECT(w, "activate", text_activate_callback, (gpointer)info);
-static void call_text_func(GtkWidget *w, gpointer context)
-{
- prefs_info *prf = (prefs_info *)context;
- if ((prf) && (prf->text_func))
- (*(prf->text_func))(prf);
+ return(w);
}
@@ -1552,16 +1609,17 @@ static void preferences_clear_callback(GtkWidget *w, gpointer context)
}
+#if HAVE_EXTENSION_LANGUAGE
static void preferences_save_callback(GtkWidget *w, gpointer context)
{
clear_prefs_dialog_error();
redirect_snd_error_to(post_prefs_dialog_error, NULL);
redirect_snd_warning_to(post_prefs_dialog_error, NULL);
- save_prefs(save_options_in_prefs());
+ save_prefs();
redirect_snd_error_to(NULL, NULL);
redirect_snd_warning_to(NULL, NULL);
}
-
+#endif
/* ---------------- errors ---------------- */
@@ -1624,8 +1682,10 @@ widget_t start_preferences_dialog(void)
helpB = gtk_button_new_from_stock(GTK_STOCK_HELP);
gtk_widget_set_name(helpB, "help_button");
+#if HAVE_EXTENSION_LANGUAGE
saveB = gtk_button_new_from_stock(GTK_STOCK_SAVE);
gtk_widget_set_name(saveB, "doit_button");
+#endif
revertB = gtk_button_new_from_stock(GTK_STOCK_REVERT_TO_SAVED);
gtk_widget_set_name(revertB, "reset_button");
@@ -1640,18 +1700,24 @@ widget_t start_preferences_dialog(void)
gtk_box_pack_start(GTK_BOX(DIALOG_ACTION_AREA(preferences_dialog)), dismissB, true, true, 10);
gtk_box_pack_start(GTK_BOX(DIALOG_ACTION_AREA(preferences_dialog)), revertB, true, true, 10);
gtk_box_pack_start(GTK_BOX(DIALOG_ACTION_AREA(preferences_dialog)), clearB, true, true, 10);
+#if HAVE_EXTENSION_LANGUAGE
gtk_box_pack_start(GTK_BOX(DIALOG_ACTION_AREA(preferences_dialog)), saveB, true, true, 10);
+#endif
gtk_box_pack_end(GTK_BOX(DIALOG_ACTION_AREA(preferences_dialog)), helpB, true, true, 10);
SG_SIGNAL_CONNECT(preferences_dialog, "delete_event", preferences_delete_callback, NULL);
SG_SIGNAL_CONNECT(dismissB, "clicked", preferences_dismiss_callback, NULL);
SG_SIGNAL_CONNECT(revertB, "clicked", preferences_revert_callback, NULL);
SG_SIGNAL_CONNECT(clearB, "clicked", preferences_clear_callback, NULL);
+#if HAVE_EXTENSION_LANGUAGE
SG_SIGNAL_CONNECT(saveB, "clicked", preferences_save_callback, NULL);
+#endif
SG_SIGNAL_CONNECT(helpB, "clicked", preferences_help_callback, NULL);
gtk_widget_show(dismissB);
+#if HAVE_EXTENSION_LANGUAGE
gtk_widget_show(saveB);
+#endif
gtk_widget_show(revertB);
gtk_widget_show(clearB);
gtk_widget_show(helpB);
@@ -1693,8 +1759,7 @@ widget_t start_preferences_dialog(void)
"width:", str1, "height:", str2, 6,
dpy_box,
startup_size_text);
- /* this is not reflected */
- remember_pref(prf, NULL, save_init_window_size, NULL, clear_init_window_size, revert_init_window_size);
+ remember_pref(prf, reflect_init_window_size, save_init_window_size, NULL, clear_init_window_size, revert_init_window_size);
free(str2);
free(str1);
@@ -2605,7 +2670,7 @@ widget_t start_preferences_dialog(void)
show_listener_toggle);
remember_pref(prf, reflect_show_listener, save_show_listener, NULL, clear_show_listener, revert_show_listener);
-#if HAVE_S7
+#if HAVE_SCHEME
current_sep = make_inter_variable_separator(prg_box);
str = mus_format("%d", rts_optimization = optimization(ss));
prf = prefs_row_with_number("optimization level", S_optimization,
diff --git a/snd-gtk.scm b/snd-gtk.scm
index 1d3aa46..59e373c 100644
--- a/snd-gtk.scm
+++ b/snd-gtk.scm
@@ -17,7 +17,6 @@
;;; make-pixmap
;;; notebook-with-top-tabs
;;; make-font-selector-dialog
-;;; make-color-selector-dialog
;;; add-main-menu-mnemonics
(if (not (provided? 'snd-gtk)) (snd-error "snd-gtk.scm is Gtk-specific"))
@@ -1386,256 +1385,6 @@ Reverb-feedback sets the scaler on the feedback.
)))
-;;; -------- color selector --------
-
-(define color-selector-dialog #f)
-(define color-selectors '())
-
-;; this doesn't work in the --with-cairo Snd -- needs conversion from GdkColor* to color_t
-
-(define (make-color-selector-dialog)
- (if (not color-selector-dialog)
- (let ((dismiss-button (gtk_button_new_with_label "Go Away"))
- (help-button (gtk_button_new_with_label "Help")))
- (gtk_widget_set_name dismiss-button "quit_button")
- (gtk_widget_set_name help-button "help_button")
- (set! color-selector-dialog (gtk_color_selection_dialog_new "Choose a Color"))
- (gtk_window_set_default_size (GTK_WINDOW color-selector-dialog) -1 -1)
- (gtk_color_selection_set_has_palette (GTK_COLOR_SELECTION (gtk_color_selection_dialog_get_color_selection (GTK_COLOR_SELECTION_DIALOG color-selector-dialog))) #t)
- (gtk_window_set_resizable (GTK_WINDOW color-selector-dialog) #t)
- (gtk_widget_realize color-selector-dialog)
- (g_signal_connect color-selector-dialog "delete_event" (lambda (w ev data) (gtk_widget_hide color-selector-dialog) #t) #f)
- (gtk_box_pack_start (GTK_BOX (gtk_dialog_get_action_area (GTK_DIALOG color-selector-dialog))) dismiss-button #t #t 20)
- (g_signal_connect dismiss-button "clicked" (lambda (w data) (gtk_widget_hide color-selector-dialog)) #f)
- (gtk_widget_show dismiss-button)
- (gtk_box_pack_end (GTK_BOX (gtk_dialog_get_action_area (GTK_DIALOG color-selector-dialog))) help-button #t #t 20)
- (g_signal_connect help-button "clicked"
- (lambda (w data)
- (help-dialog "Choose a Color"
- "choose a color, set which fields you want to use that color, and click 'ok'"))
- #f)
- (gtk_widget_show help-button)
- (let ((ok-button (.ok_button (GTK_COLOR_SELECTION_DIALOG color-selector-dialog))))
- (gtk_widget_set_name ok-button "doit_button")
- (g_signal_connect ok-button "clicked"
- (lambda (w d)
- (let ((color (GdkColor))
- (new-color #f))
- (gtk_color_selection_get_current_color
- (GTK_COLOR_SELECTION (gtk_color_selection_dialog_get_color_selection (GTK_COLOR_SELECTION_DIALOG color-selector-dialog)))
- color)
- (set! new-color (gdk_color_copy color))
- (gdk_rgb_find_color (gdk_colormap_get_system) new-color)
- (for-each
- (lambda (fd)
- (let ((button (car fd))
- (func (cadr fd)))
- (if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON button))
- (set! (func) new-color))))
- color-selectors)
- (if (> (length (sounds)) 0)
- (begin
- (if (time-graph?) (update-time-graph))
- (if (transform-graph?) (update-transform-graph))
- (if (lisp-graph?) (update-lisp-graph))))))
- #f))
- (let ((cancel (.cancel_button (GTK_COLOR_SELECTION_DIALOG color-selector-dialog))))
- (gtk_widget_set_name cancel "reset_button")
- (g_signal_connect cancel "clicked"
- (lambda (w d)
- (for-each
- (lambda (fd)
- (let ((func (cadr fd))
- (old-value (caddr fd)))
- (set! (func) old-value)))
- color-selectors)
- (if (> (length (sounds)) 0)
- (begin
- (if (time-graph?) (update-time-graph))
- (if (transform-graph?) (update-transform-graph))
- (if (lisp-graph?) (update-lisp-graph)))))
- #f))
- (let ((mainform (gtk_dialog_get_content_area (GTK_DIALOG color-selector-dialog))))
- (let ((label (gtk_label_new "Apply color to:")))
- (gtk_box_pack_start (GTK_BOX mainform) label #f #f 4)
- (gtk_misc_set_alignment (GTK_MISC label) 0.1 0.0)
- (gtk_widget_show label))
- (let ((table (gtk_table_new 12 2 #f))
- (row 0)
- (column 0))
- (gtk_box_pack_start (GTK_BOX mainform) table #t #t 4)
- (gtk_widget_show table)
- (for-each
- (lambda (title func)
- (let* ((button (gtk_toggle_button_new_with_label (symbol->string title))))
- (gtk_table_attach_defaults (GTK_TABLE table) button column (+ 1 column) row (+ 1 row))
- (set! row (+ 1 row))
- (if (= row 12)
- (begin
- (set! row 0)
- (set! column 1)))
- (set! color-selectors (cons (list button func (func)) color-selectors))
- (gtk_widget_show button)))
- (list 'basic-color 'cursor-color 'data-color 'doit-button-color 'doit-again-button-color 'enved-waveform-color
- 'filter-control-waveform-color 'graph-color 'help-button-color 'highlight-color 'listener-color
- 'listener-text-color 'mark-color 'mix-color 'position-color 'pushed-button-color 'quit-button-color
- 'reset-button-color 'sash-color 'selected-data-color 'selected-graph-color 'selection-color
- 'text-focus-color 'zoom-color)
- (list basic-color cursor-color data-color doit-button-color doit-again-button-color enved-waveform-color
- filter-control-waveform-color graph-color help-button-color highlight-color listener-color
- listener-text-color mark-color mix-color position-color pushed-button-color quit-button-color
- reset-button-color sash-color selected-data-color selected-graph-color selection-color
- text-focus-color zoom-color))))
- (add-to-menu 3 "Choose Color"
- (lambda ()
- (gtk_widget_show color-selector-dialog)))
- )))
-
-
-(define (add-main-menu-mnemonics)
- ;; thanks to Maxim Krikun
- (gtk_label_set_text_with_mnemonic (GTK_LABEL (gtk_bin_get_child (GTK_BIN (main-menu 0)))) "_File")
- (gtk_label_set_text_with_mnemonic (GTK_LABEL (gtk_bin_get_child (GTK_BIN (main-menu 1)))) "_Edit")
- (gtk_label_set_text_with_mnemonic (GTK_LABEL (gtk_bin_get_child (GTK_BIN (main-menu 2)))) "_View")
- (gtk_label_set_text_with_mnemonic (GTK_LABEL (gtk_bin_get_child (GTK_BIN (main-menu 3)))) "_Options")
- (gtk_label_set_text_with_mnemonic (GTK_LABEL (gtk_bin_get_child (GTK_BIN (main-menu 4)))) "_Help"))
-
-
-
-#|
-;;; this code changes the main window's cursor, based on some obsolete code in the gdk documentation
-;;; unfortunately, it has no effect on the text widget's cursor
-
-(define* (istring :rest ints)
- (apply string (map integer->char ints)))
-
-(define cursor-bits (istring
- #x80 #x01 #x40 #x02 #x20 #x04 #x10 #x08 #x08 #x10 #x04 #x20
- #x82 #x41 #x41 #x82 #x41 #x82 #x82 #x41 #x04 #x20 #x08 #x10
- #x10 #x08 #x20 #x04 #x40 #x02 #x80 #x01))
-
-(define cursor-mask (istring
- #x80 #x01 #xc0 #x03 #x60 #x06 #x30 #x0c #x18 #x18 #x8c #x31
- #xc6 #x63 #x63 #xc6 #x63 #xc6 #xc6 #x63 #x8c #x31 #x18 #x18
- #x30 #x0c #x60 #x06 #xc0 #x03 #x80 #x01))
-
-(define blue-pixel
- (let ((tmp (GdkColor)))
- (gdk_color_parse "blue" tmp)
- (let ((col (gdk_color_copy tmp)))
- (gdk_rgb_find_color (gdk_colormap_get_system) col)
- col)))
-
-(define black-pixel
- (let ((tmp (GdkColor)))
- (gdk_color_parse "black" tmp)
- (let ((col (gdk_color_copy tmp)))
- (gdk_rgb_find_color (gdk_colormap_get_system) col)
- col)))
-
-(let* ((listener-text (list-ref (main-widgets) 4))
- (source (gdk_bitmap_create_from_data (GDK_DRAWABLE (car (main-widgets))) cursor-bits 16 16))
- (mask (gdk_bitmap_create_from_data (GDK_DRAWABLE (car (main-widgets))) cursor-mask 16 16))
- (new-cursor (gdk_cursor_new_from_pixmap (GDK_PIXMAP source) (GDK_PIXMAP mask) blue-pixel black-pixel 8 8)))
- (gdk_window_set_cursor (car (main-widgets)) new-cursor))
-|#
-
-
-#|
-;;; this is an example of the Gtk Print dialog and cairo.
-
-(define settings #f)
-
-(define (begin-print op cntxt data)
- (gtk_print_operation_set_n_pages (GTK_PRINT_OPERATION op) 1)
- #f)
-
-(define (draw-page operation context page_num data)
- (let* ((cr (gtk_print_context_get_cairo_context context))
- (width (round (gtk_print_context_get_width context))))
-
- (cairo_rectangle cr 0 0 width 10)
- (cairo_set_source_rgb cr 0.8 0.8 0.8)
- (cairo_fill_preserve cr)
-
- (cairo_set_source_rgb cr 0 0 0)
- (cairo_set_line_width cr 1)
- (cairo_stroke cr)
-
- (let* ((layout (gtk_print_context_create_pango_layout context))
- (desc (pango_font_description_from_string "sans 14")))
-
- (pango_layout_set_font_description layout desc)
- (pango_font_description_free desc)
-
- (pango_layout_set_text layout "nope" -1)
- (pango_layout_set_width layout width)
- (pango_layout_set_alignment layout PANGO_ALIGN_CENTER)
-
- (cairo_move_to cr (/ width 2) 25)
- (pango_cairo_show_layout cr layout)
-
- (g_object_unref (GPOINTER layout))
- #f)))
-
-(define (end-print op context data)
- #f)
-
-(define (make-print-dialog)
- (let* ((operation (gtk_print_operation_new)))
- (if settings
- (gtk_print_operation_set_print_settings operation settings))
-
- (g_signal_connect (G_OBJECT operation) "begin-print" begin-print)
- (g_signal_connect (G_OBJECT operation) "draw-page" draw-page)
- (g_signal_connect (G_OBJECT operation) "end-print" end-print)
-
- (let ((res (gtk_print_operation_run operation GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG (GTK_WINDOW (cadr (main-widgets))))))
- (if (= (car res) GTK_PRINT_OPERATION_RESULT_APPLY)
- (begin
- (if settings (g_object_unref (GPOINTER settings)))
- (set! settings (gtk_print_operation_get_print_settings operation))
- (g_object_ref (GPOINTER settings))))
-
- (g_object_unref (GPOINTER operation)))))
-
-
-;;; and an example of drawing in a Snd graph:
-
-(define* (c-circles (xc 5.0) (yc 5.0) (radius 100.0) (width 2))
- (let* ((drawer (car (channel-widgets)))
- (cr (gdk_cairo_create (GDK_DRAWABLE (gtk_widget_get_window drawer)))))
-
- (let ((angle1 0)
- (angle2 pi))
- (cairo_arc cr xc yc radius angle1 angle2)
- (cairo_stroke cr)
- (cairo_set_source_rgba cr 1 0.2 0.2 0.6)
- (cairo_arc cr xc yc 5 0 (* 2 pi))
- (cairo_fill cr)
- (cairo_set_line_width cr width)
- (cairo_arc cr xc yc radius angle1 angle1)
- (cairo_line_to cr xc yc)
- (cairo_arc cr xc yc radius angle2 angle2)
- (cairo_line_to cr xc yc)
- (cairo_stroke cr))
-
- (cairo_destroy cr)))
-
-;;; to write out an image as a png file:
-
- (let* ((surface (cairo_image_surface_create CAIRO_FORMAT_RGB24 width height))
- (cr (cairo_create surface)))
- ;; now draw using cr
- (cairo_surface_flush surface)
- (cairo_surface_write_to_png surface "test.png")
- (cairo_surface_destroy surface)
- (cairo_destroy cr))
-
-|#
-
-
-
#|
;;; this doesn't actually work yet, but the simpler C case below almost works
(define (emacs)
diff --git a/snd-gxcolormaps.c b/snd-gxcolormaps.c
index 91bc067..d1cc97b 100644
--- a/snd-gxcolormaps.c
+++ b/snd-gxcolormaps.c
@@ -940,7 +940,7 @@ static XEN g_xen_colormap_to_string(XEN obj)
#endif
-#if (!HAVE_S7)
+#if (!HAVE_SCHEME)
static bool xen_colormap_equalp(xen_colormap *v1, xen_colormap *v2)
{
return((v1 == v2) ||
@@ -977,7 +977,7 @@ static XEN new_xen_colormap(int n)
#define C_INT_TO_XEN_COLORMAP(Val) new_xen_colormap(Val)
-#if HAVE_S7
+#if HAVE_SCHEME
static bool s7_xen_colormap_equalp(void *obj1, void *obj2)
{
return((obj1 == obj2) ||
@@ -1001,7 +1001,7 @@ static XEN s7_colormap_apply(s7_scheme *sc, XEN obj, XEN args)
static void init_xen_colormap(void)
{
-#if HAVE_S7
+#if HAVE_SCHEME
xen_colormap_tag = XEN_MAKE_OBJECT_TYPE("<colormap>", print_xen_colormap, free_xen_colormap, s7_xen_colormap_equalp,
NULL, s7_colormap_apply, NULL, s7_xen_colormap_length, NULL, NULL);
#else
diff --git a/snd-help.c b/snd-help.c
index f9642e9..071f3b4 100644
--- a/snd-help.c
+++ b/snd-help.c
@@ -429,10 +429,6 @@ char *version_info(void)
#if SND_AS_WIDGET
_("\n compiled as a widget"),
#endif
-#if ENABLE_NLS && HAVE_GETTEXT
- _("\n with gettext: "),
- setlocale(LC_ALL, NULL),
-#endif
#ifdef __DATE__
"\n Compiled ", __DATE__, " ", __TIME__,
#endif
@@ -483,7 +479,7 @@ void about_snd_help(void)
files = word_wrap(XEN_AS_STRING(XEN_VARIABLE_REF("*loaded-files*")), 400);
#endif
-#if HAVE_S7
+#if HAVE_SCHEME
{
char *temp = NULL;
features = word_wrap(temp = XEN_AS_STRING(XEN_EVAL_C_STRING("*features*")), 400);
@@ -497,16 +493,16 @@ void about_snd_help(void)
info,
"\nRecent changes include:\n\
\n\
+11-Feb: Snd 11.3.\n\
+9-Feb: removed NLS support (the po directory and so on).\n\
+8-Feb: moved sound|channel|mix|mark|edit-property to C.\n\
+23-Jan: The rest of the Guile-dependent files have been removed.\n\
+ This includes pd-*, rt-*, and the --with-snd-as-pd-external\n\
+ --with-hobbit, and --with-rt configuration switches.\n\
5-Jan: Snd 11.2.\n\
26-Dec: tools/sam.c.\n\
21-Dec: moved focus-follows-mouse to C as with-pointer-focus.\n\
removed def-optkey-fun and def-optkey-instrument (use define* and definstrument).\n\
-16-Dec: make-current-window-display (draw.scm) moved to C as with-inset-graph.\n\
- removed Guile support.\n\
-14-Dec: peak-env support moved to C, added peak-env-dir, removed peak-env.*,\n\
- peak-env-info, read-peak-env-info-file, and write-peak-env-info-file.\n\
-11-Dec: removed midi.c, sndrecord.c, SGI support, mus-audio-mixer-*, and Alsa < 1.0 support.\n\
-4-Dec: portaudio support.\n\
",
#if HAVE_RUBY
"\n $LOADED_FEATURES: \n", features, "\n\n",
@@ -515,7 +511,7 @@ void about_snd_help(void)
"\n *features*:\n", features, "\n\n",
"\n *loaded-files*:\n", files, "\n\n",
#endif
-#if HAVE_S7
+#if HAVE_SCHEME
"\n *features*:\n '", features, "\n\n",
#endif
#if (!HAVE_EXTENSION_LANGUAGE)
@@ -3577,25 +3573,25 @@ static char *run_string_hook(XEN hook, const char *caller, char *initial_string,
/* no longer concats -- now just passes successive results along */
if (XEN_HOOKED(hook))
{
-#if HAVE_S7
+#if HAVE_SCHEME
int gc_loc1, gc_loc2;
#endif
XEN result, substr;
XEN procs = XEN_HOOK_PROCEDURES(hook);
result = C_TO_XEN_STRING(initial_string);
-#if HAVE_S7
+#if HAVE_SCHEME
gc_loc1 = s7_gc_protect(s7, result);
#endif
substr = C_TO_XEN_STRING(subject);
-#if HAVE_S7
+#if HAVE_SCHEME
gc_loc2 = s7_gc_protect(s7, substr);
#endif
while (XEN_NOT_NULL_P(procs))
{
-#if (!HAVE_S7)
+#if (!HAVE_SCHEME)
if (subject)
result = XEN_CALL_2(XEN_CAR(procs), substr, result, caller);
else result = XEN_CALL_1(XEN_CAR(procs), result, caller);
@@ -3609,7 +3605,7 @@ static char *run_string_hook(XEN hook, const char *caller, char *initial_string,
procs = XEN_CDR(procs);
}
-#if HAVE_S7
+#if HAVE_SCHEME
s7_gc_unprotect_at(s7, gc_loc1);
s7_gc_unprotect_at(s7, gc_loc2);
#endif
@@ -3696,7 +3692,7 @@ and its value is returned."
str = XEN_AS_STRING(XEN_OBJECT_HELP(text));
#endif
-#if HAVE_S7
+#if HAVE_SCHEME
{
/* hooks and vars are broken here */
XEN sym = XEN_FALSE;
diff --git a/snd-hobbit.scm b/snd-hobbit.scm
deleted file mode 100644
index 6456004..0000000
--- a/snd-hobbit.scm
+++ /dev/null
@@ -1,439 +0,0 @@
-
-;; Quick way to use the hobbit guile compilator inside Snd.
-;;
-;; Example: (hobbit-compile (display "I am compiled")(newline))
-;; The hobbit-compile macro also works around some bugs in hobbit.
-;;
-;; The compiled code may infact run a lot slower compaired to when being interpreted. (but usually not)
-;; For simple mathematical computations, code seems to run between 1.5 and 80 times faster than when being interpreted.
-;; The simplest kind of fibonacci function runs up to 80 times faster when compiled:
-;;(define (fib n)
-;; (cond ((%= n 0) 0)
-;; ((%= n 1) 1)
-;; (else (%+ (fib (%- n 1))
-;; (fib (%- n 2))))))
-;;
-;; Some code also runs a lot faster if the variable "hobbit-add-numargs-property" is set to #f.
-;; However, "hobbit-add-numargs-property" must be set to #t for Snd to know the number of arguments
-;; a function inside a compiled closure takes. This is necesarry when making callbacks to any of the built-
-;; in functions in Snd.
-;;
-;; Hobbit is a Scheme to C compiler, originally written for SCM by Tanel Tammet (tammet@cs.chalmers.se)
-;; The Guile port is being maintained by Bernard Urban (Bernard.Urban@meteo.fr)
-;; Hobbit can be downloaded from http://fix.me
-;;
-;; First version of this file: 29.7.2004. -Kjetil S. Matheussen.
-
-
-(use-modules (srfi srfi-1))
-
-(provide 'snd-snd-hobbit.scm)
-
-
-(define hobbit-is-here (= 0 (system "hob >/dev/null 2>/dev/null")))
-(define hobbit-clean-up #f)
-(define hobbit-verbose #t)
-(define hobbit-dont-fix #f)
-(define hobbit-add-numargs-property #t)
-
-
-;; Load the defmacroexand and generic-write slib modules.
-(if hobbit-is-here
- (let ((tempfile (tmpnam)))
- (system (string-append "echo '(define hobbit-path \"' >" tempfile
- ";hob --info >>" tempfile
- ";echo '\")' >>" tempfile
- ";echo '(set! \%load-path (cons (substring hobbit-path 1 (- (string-length hobbit-path) 1)) \%load-path))' >>" tempfile
- ";echo '(use-modules (slib defmacroexpand) (slib generic-write))' >>" tempfile))
- (load tempfile)
- (delete-file tempfile)))
-
-
-
-
-;; Hobbit-only functions, used when hobbit is not available. (Should be optimized a lot, both because of speed and compatibility)
-(define %eqv? eqv?)
-(define %zero? zero?)
-(define %negative? negative?)
-(define %positive? positive?)
-(define %number? number?)
-(define %= =)
-(define %< <)
-(define %> >)
-(define %<= <=)
-(define %>= >=)
-(define %+ +)
-(define %- -)
-(define %* *)
-(define %/ /)
-
-
-
-;; Workaround for functions hobbit have problems with. Hobbit tries to optimize these, but produce illegal code.
-(define hobbit-logior logior)
-(define hobbit-logand logand)
-(define hobbit-logxor logxor)
-(define hobbit-string-ci<? string-ci<?)
-
-(define-macro (logior . args)
- `(hobbit-logior ,@args))
-(define-macro (logand . args)
- `(hobbit-logand ,@args))
-(define-macro (logxor . args)
- `(hobbit-logxor ,@args))
-(define-macro (string-ci<? . args)
- `(hobbit-string-ci<? ,@args))
-
-
-
-
-;; Workaround (which is actually also a very ugly hack) for a serious problem with variable reference in Hobbit.
-;; When a variable is previously referenced inside a lambda function, and the variable
-;; is set! on the current level, the reference in the lambda function just use the original
-;; value. However when replacing (set! a b) with (apply (lambda () (set! a b) ) '()),
-;; things work. Unfortunately, that replacement makes some code go really slow.
-;; so the function tries to be smart (which it also seems to manage) and only replace when necesarry.
-;;
-;; The function assumes that all (define (a b c) ...) are replaced with (define a (lambda (b c) ...))
-;; before calling, and that all non-toplevel defines are replaced with letrec-code.
-;;
-;; The function also renames all variables, so that they are all unique. The reason is that
-;; code like the following won't compile with hobbit:
-;;
-;;(define func1
-;; (let ((u 5))
-;; (lambda (y)
-;; (lambda (x)
-;; #t))))
-;;(let ((x #f))
-;; #t)
-;;
-;; The following will though:
-;;
-;;(define func1
-;; (let ((u 5))
-;; (lambda (y)
-;; (lambda (x)
-;; #t))))
-;;(let ((x2 #f))
-;; #t)
-
-(define (hobbit-fix-vars term varlist)
- (define newlambda (cons 'hf_newlambda__ #t))
-
- (define get-varname car)
- (define get-newname cadr)
- (define get-numaccess caddr)
- (define (set-numaccess! al addornull)
- (set-car! (cddr al) (if (number? addornull)
- addornull
- (addornull (get-numaccess al)))))
-
- (define (make-nameelement name)
- (list name (gensym (string-append "hf_" (symbol->string name) "_")) 0))
-
- (define (add-varlist! nameelement)
- (set! varlist (cons nameelement varlist)))
-
-
- (if (not varlist)
- (set! varlist (list newlambda)))
-
-
-
- (cond
-
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; '()
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ((null? term) term)
-
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; A variable
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ((symbol? term)
- (call-with-values (lambda () (break (lambda (a) (eq? a newlambda))
- varlist))
- (lambda (local nonlocal)
- (let ((a (assq term local)))
- (if a
- (get-newname a)
- (let ((a (assq term nonlocal)))
- (if a
- (begin
- (set-numaccess! a 1+)
- (get-newname a))
- term)))))))
-
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; char/string/number/vector/etc.
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ((not (pair? term)) term)
-
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; '(...)
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ((eq? 'quote (car term)) term)
-
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; (lambda ...)
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ((eq? 'lambda (car term))
- (add-varlist! newlambda)
- (letrec ((namelist '())
- (varlistadd (lambda (r)
- (cond ((pair? r)
- (set! namelist (cons (make-nameelement (car r)) namelist))
- (add-varlist! (car namelist))
- (varlistadd (cdr r)))
- ((symbol? r)
- (set! namelist (cons (make-nameelement r) namelist))
- (add-varlist! (car namelist)))))))
- (varlistadd (cadr term))
- (append (list 'lambda)
- (list (cond ((null? (cadr term)) '())
- ((not (pair? (cadr term))) (get-newname (car namelist)))
- ((dotted-list? (cadr term))
- (letrec ((undotted (map get-newname (reverse (cdr namelist))))
- (set-last! (lambda (x)
- (if (null? (cdr x))
- (set-cdr! x (get-newname (car namelist)))
- (set-last! (cdr x))))))
- (set-last! undotted)
- undotted))
- (else
- (map get-newname (reverse namelist)))))
- (hobbit-fix-vars (cddr term) varlist))))
-
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; (let ...)/(let* ...)/(letrec ...)
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ((or (eq? 'let (car term))
- (eq? 'let* (car term))
- (eq? 'letrec (car term)))
- (let* ((type (car term))
- (vardecls (cadr term))
- (body (cddr term))
- (namelist (map (lambda (t) (make-nameelement (car t)))
- vardecls)))
- (if (eq? 'letrec type)
- (for-each (lambda (t)
- (add-varlist! t))
- namelist))
- (let ((newvardecls (map-in-order (lambda (t nameelement)
- (let ((ret (list (get-newname nameelement)
- (hobbit-fix-vars (cadr t) varlist))))
- (if (eq? 'let* type)
- (add-varlist! nameelement))
- ret))
- vardecls
- namelist)))
- (if (eq? 'let type)
- (for-each (lambda (t)
- (add-varlist! t))
- namelist))
- (append (list type)
- (list newvardecls)
- (hobbit-fix-vars body varlist)))))
-
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; (set! ...)
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ((eq? 'set! (car term))
- (call-with-values (lambda () (break (lambda (a) (eq? a newlambda))
- varlist))
- (lambda (local nonlocal)
- (let ((a (assq (cadr term) local)))
- (if (and a
- (> (get-numaccess a) 0))
- (begin
- (set-numaccess! a 0)
- (list 'apply
- (list 'lambda '()
- (list 'set!
- (get-newname a)
- (hobbit-fix-vars (caddr term) varlist)))
- '()))
- (map-in-order (lambda (t) (hobbit-fix-vars t varlist))
- term))))))
-
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; (...)
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (else
- (map-in-order (lambda (t) (hobbit-fix-vars t varlist))
- term))))
-
-
-
-
-;; (define (a b) ..) must be replaced with (define a (lambda b) ...) before calling.
-(define (hobbit-fix-various term)
- (cond
- ((not (pair? term)) term)
- ((null? term) term)
- ((eq? 'quote (car term)) term)
-
- ;; Hobbit doesn't understand comment strings for functions. (lambda (b) "returns argument" b) -> (lambda (b) b)
- ((and (eq? 'lambda (car term))
- ;;(not (null? (cddr term)))
- (string? (caddr term))
- (not (null? (cdddr term))))
- (hobbit-fix-various (append (list (car term)
- (cadr term))
- (cdddr term))))
-
- ;; Snd often need to know the number of arguments of a function in some way. This code does that,
- ;; and shouldn't slow down much. (I hope). Code should not behave wrongly if hobbit-add-numargs-property
- ;; is to #f, snd should instead give a clear error-message if it can't find the required number of arguments.
- ((and hobbit-add-numargs-property
- (eq? 'lambda (car term))
- (list? (cadr term)))
- (list 'let
- (list (list 'youbetternotusethisvariablename (append (list 'lambda)
- (list (cadr term))
- (hobbit-fix-various (cddr term)))))
- (list 'set-procedure-property! 'youbetternotusethisvariablename ''hobbit-numargs (if (list? (cadr term))
- (length (cadr term))
- -1))
- 'youbetternotusethisvariablename))
-
- ((eq? 'lambda (car term))
- (append (list 'lambda (cadr term))
- (map hobbit-fix-various (cddr term))))
-
- (else
- (map hobbit-fix-various term))))
-
-
-
-
-;; Replace local defines with letrecs.
-;; All (define (a b) ...) must be replaced with (define a (lambda (b) ...)) before calling.
-(define (hobbit-fix-replace-define-with-letrec term)
- (cond
- ((not (pair? term)) term)
- ((null? term) term)
- ((eq? 'quote (car term)) term)
- ((eq? 'lambda (car term))
- (append (list 'lambda (cadr term))
- (map hobbit-fix-replace-define-with-letrec (cddr term))))
- (else
- (map hobbit-fix-replace-define-with-letrec
- (call-with-values (lambda () (break (lambda (t) (and (pair? t)
- (eq? 'define (car t))))
- term))
- (lambda (beforedefines definestart)
- (if (null? definestart)
- term
- (call-with-values (lambda () (span (lambda (t) (and (pair? t)
- (eq? 'define (car t))))
- definestart))
- (lambda (defines afterdefines)
- (append beforedefines
- (list (append (list 'letrec
- (map-in-order (lambda (t) (list (cadr t) (caddr t)))
- defines))
- afterdefines))))))))))))
-
-
-
-
-(define (hobbit-fix-define-and-setter term)
- (cond
- ((not (pair? term)) term)
- ((null? term) term)
- ((eq? 'quote (car term)) term)
-
- ;;(define (a b c) d e) -> (define a (lambda b c) d e)
- ((and (eq? 'define (car term))
- (pair? (cadr term)))
- (list 'define
- (caadr term)
- (append (list 'lambda)
- (list (cdadr term))
- (map hobbit-fix-define-and-setter (cddr term)))))
-
- ;; Hobbit doesn't understand setters. This is a workaround.
- ;; (set! (a 2) 3) -> ((setter a) 2 3)
- ((and (eq? 'set! (car term))
- (list? (cadr term)))
- (hobbit-fix-define-and-setter (append (cons (list 'setter (caadr term))
- (cdadr term))
- (list (caddr term)))))
-
- ((eq? 'lambda (car term))
- (append (list 'lambda (cadr term))
- (map hobbit-fix-define-and-setter (cddr term))))
- (else
- (map hobbit-fix-define-and-setter term))))
-
-
-
-
-
-(define (hobbit-fix term)
- (if hobbit-dont-fix
- term
- (hobbit-fix-vars
- (hobbit-fix-various
- (hobbit-fix-replace-define-with-letrec
- (hobbit-fix-define-and-setter
- term)))
- #f)))
-
-
-
-
-(define-macro (hobbit-compile . stuff)
- (let* ((dirname (tmpnam))
- (sourcefile (begin (system (string-append "mkdir " dirname))
- (string-append dirname "/code.scm")))
- (fd (open-file sourcefile "w"))
- (dontcompile (eq? '#f (car stuff))))
- (for-each (lambda (block)
- (generic-write (hobbit-fix
- (defmacro:expand*
- block))
- #f
- 60
- (lambda (x) (display x fd))))
- (if (or (eq? '#t (car stuff)) dontcompile)
- (cdr stuff)
- stuff))
- (close fd)
- (if (or dontcompile (not hobbit-is-here))
- (load sourcefile)
- (begin
- (if hobbit-verbose
- (begin
- (display "compiling ")
- (display sourcefile)
- (display "...")
- (newline)))
- (system (string-append "cd " dirname ";hob --only-c code.scm;gcc -O3 -shared -o code.so code.c -I`hob --info`"))
- (if hobbit-verbose
- (begin
- (display "Done.")
- (newline)))
- (dynamic-call "scm_init_code" (dynamic-link (string-append dirname "/code.so")))
- ))
- (if hobbit-clean-up
- (system (string-append "rm -fr " dirname)))))
-
-(define-macro (hobbit-compile2 . stuff)
- (let ((dirname "/tmp/fileV1mNab"))
- (dynamic-call "scm_init_code" (dynamic-link (string-append dirname "/code.so")))))
-
-(define-macro (define-compiled def . body)
- `(hobbit-compile
- (define ,def
- ,@body)))
diff --git a/snd-kbd.c b/snd-kbd.c
index 3f2c5aa..b666abf 100644
--- a/snd-kbd.c
+++ b/snd-kbd.c
@@ -203,7 +203,7 @@ static void execute_named_macro(chan_info *cp, char *name, mus_long_t count)
/* not a macro...*/
{
#if HAVE_EXTENSION_LANGUAGE
-#if HAVE_S7
+#if HAVE_SCHEME
XEN result = XEN_FALSE;
int i, loc, one_edit;
one_edit = cp->edit_ctr + 1;
@@ -269,7 +269,7 @@ int in_user_keymap(int key, int state, bool cx_extended)
}
-#if HAVE_S7
+#if HAVE_SCHEME
#define kbd_false 0
#else
#define kbd_false XEN_FALSE
@@ -2645,7 +2645,7 @@ void g_init_kbd(void)
XEN_DEFINE_PROCEDURE(S_prompt_in_minibuffer, g_prompt_in_minibuffer_w, 1, 3, 0, H_prompt_in_minibuffer);
XEN_DEFINE_PROCEDURE(S_snd_simulate_keystroke, g_snd_simulate_keystroke_w, 4, 0, 0, "internal testing function");
-#if HAVE_S7
+#if HAVE_SCHEME
{
int i;
for (i = 0; i < NUM_BUILT_IN_KEY_BINDINGS; i++)
diff --git a/snd-ladspa.c b/snd-ladspa.c
index fd0b435..2456894 100644
--- a/snd-ladspa.c
+++ b/snd-ladspa.c
@@ -919,7 +919,7 @@ Information about parameters can be acquired using " S_analyse_ladspa "."
#define FIELD_PREFIX "F"
#endif
-#if HAVE_S7
+#if HAVE_SCHEME
#define DEFINE_INTEGER(Name) s7_define_constant(s7, #Name, C_TO_XEN_INT(Name))
#else
#define DEFINE_INTEGER(Name) XEN_DEFINE(#Name, C_TO_XEN_INT(Name))
diff --git a/snd-listener.c b/snd-listener.c
index 35be775..d8c3604 100644
--- a/snd-listener.c
+++ b/snd-listener.c
@@ -404,16 +404,16 @@ void listener_return(widget_t w, int last_prompt)
last_position = GUI_TEXT_END(w);
add_listener_position(last_position);
-#if (!HAVE_S7)
+#if (!HAVE_SCHEME)
if (XEN_HOOKED(read_hook))
{
XEN result;
int len;
- len = last_position - last_prompt + 1;
+ len = last_position - last_prompt;
if (len > 0)
{
- str = (char *)calloc(len, sizeof(char));
- for (i = last_prompt + 1, j = 0; i < last_position; i++, j++) str[j] = full_str[i];
+ str = (char *)calloc(len + 1, sizeof(char));
+ for (i = last_prompt, j = 0; i < last_position; i++, j++) str[j] = full_str[i];
result = run_or_hook(read_hook,
XEN_LIST_1(C_TO_XEN_STRING(str)),
S_read_hook);
@@ -616,7 +616,7 @@ void listener_return(widget_t w, int last_prompt)
form = XEN_EVAL_C_STRING(str);
#endif
-#if HAVE_S7
+#if HAVE_SCHEME
/* TODO: need a catch here if user has called read-line of listener-input-port, or perhaps earlier in listener_return_callback (snd-g|xlistener) */
if ((mus_strlen(str) > 1) || (str[0] != '\n'))
@@ -704,12 +704,9 @@ static XEN g_clear_listener(void)
}
-static XEN g_show_listener(XEN val)
+static XEN g_show_listener(void)
{
- #define H_show_listener "(" S_show_listener " :optional (open " PROC_TRUE ")): if 'open' opens the lisp listener; returns whether the listener is visible."
- XEN_ASSERT_TYPE(XEN_BOOLEAN_IF_BOUND_P(val), val, XEN_ONLY_ARG, S_show_listener, "a boolean");
- if ((XEN_NOT_BOUND_P(val)) || (!(XEN_FALSE_P(val)))) /* explicit #f arg turns off listener creation/display */
- handle_listener(true);
+ #define H_show_listener "(" S_show_listener ") returns " PROC_TRUE " if the listener is open, otherwise " PROC_FALSE "."
return(C_TO_XEN_BOOLEAN(listener_is_visible()));
}
@@ -741,7 +738,7 @@ void set_listener_prompt(const char *new_prompt)
xen_rb_repl_set_prompt(listener_prompt(ss));
#endif
-#if HAVE_S7
+#if HAVE_SCHEME
xen_s7_set_repl_prompt(listener_prompt(ss));
#endif
}
@@ -789,7 +786,7 @@ static XEN g_snd_completion(XEN text)
#ifdef XEN_ARGIFY_1
XEN_NARGIFY_1(g_save_listener_w, g_save_listener)
XEN_NARGIFY_0(g_clear_listener_w, g_clear_listener);
-XEN_ARGIFY_1(g_show_listener_w, g_show_listener)
+XEN_NARGIFY_0(g_show_listener_w, g_show_listener)
XEN_NARGIFY_1(g_set_show_listener_w, g_set_show_listener)
XEN_NARGIFY_0(g_listener_prompt_w, g_listener_prompt)
XEN_NARGIFY_1(g_set_listener_prompt_w, g_set_listener_prompt)
@@ -810,7 +807,7 @@ void g_init_listener(void)
XEN_DEFINE_PROCEDURE(S_clear_listener, g_clear_listener_w, 0, 0, 0, H_clear_listener);
XEN_DEFINE_PROCEDURE_WITH_SETTER(S_show_listener, g_show_listener_w, H_show_listener,
- S_setB S_show_listener, g_set_show_listener_w, 0, 1, 1, 0);
+ S_setB S_show_listener, g_set_show_listener_w, 0, 0, 1, 0);
XEN_DEFINE_PROCEDURE_WITH_SETTER(S_listener_prompt, g_listener_prompt_w, H_listener_prompt,
S_setB S_listener_prompt, g_set_listener_prompt_w, 0, 0, 1, 0);
diff --git a/snd-main.c b/snd-main.c
index 801f181..5493cbb 100644
--- a/snd-main.c
+++ b/snd-main.c
@@ -433,7 +433,13 @@ static void save_options(FILE *fd)
char *locale = NULL;
#if HAVE_SETLOCALE
- locale = mus_strdup(setlocale(LC_NUMERIC, "C")); /* must use decimal point in floats since Scheme assumes that format */
+ locale = mus_strdup(setlocale(LC_NUMERIC, "C"));
+ /* must use decimal point in floats since Scheme assumes that format */
+
+ /* TODO: since there's no built-in setlocale at ext lang level (scheme anyway),
+ * how to get the German translations?
+ * PERHAPS: add load dir to search list?
+ */
#endif
fprintf(fd, "\n%s Snd %s (%s) options saved %s\n", XEN_COMMENT_STRING, SND_VERSION, SND_DATE, snd_local_time());
@@ -534,6 +540,9 @@ static void save_options(FILE *fd)
if ((!axis_numbers_font(ss)) || (!(mus_strcmp(axis_numbers_font(ss), DEFAULT_AXIS_NUMBERS_FONT)))) pss_sq(fd, S_axis_numbers_font, axis_numbers_font(ss));
if (listener_font(ss))
pss_sq(fd, S_listener_font, listener_font(ss));
+ if (listener_is_visible())
+ pss_ss(fd, S_show_listener, b2s(true));
+
#if USE_MOTIF || USE_GTK
if (in_graph_cursor(ss) != DEFAULT_GRAPH_CURSOR)
pss_sd(fd, S_graph_cursor, in_graph_cursor(ss));
@@ -734,10 +743,8 @@ static void save_property_list(FILE *fd, XEN property_list, int chan, int edpos)
{
XEN ignore_list;
int old_print_length, old_vct_print_length;
-#if HAVE_S7
int old_s7_print_length;
old_s7_print_length = s7_integer(s7_name_to_value(s7, "*vector-print-length*"));
-#endif
old_vct_print_length = mus_vct_print_length();
old_print_length = print_length(ss);
@@ -758,9 +765,7 @@ static void save_property_list(FILE *fd, XEN property_list, int chan, int edpos)
fprintf(fd, "%s(set! (%s sfile %d) \'%s)\n", white_space, S_channel_properties, chan, temp = XEN_AS_STRING(property_list));
else fprintf(fd, "%s(set! (%s sfile %d %d) \'%s)\n", white_space, S_edit_properties, chan, edpos, temp = XEN_AS_STRING(property_list));
}
-#if HAVE_S7
if (temp) free(temp);
-#endif
}
else
{
@@ -786,9 +791,7 @@ static void save_property_list(FILE *fd, XEN property_list, int chan, int edpos)
fprintf(fd, "%s(set! (%s sfile %d) \'%s)\n", white_space, S_channel_properties, chan, temp = XEN_AS_STRING(new_properties));
else fprintf(fd, "%s(set! (%s sfile %d %d) \'%s)\n", white_space, S_edit_properties, chan, edpos, temp = XEN_AS_STRING(new_properties));
}
-#if HAVE_S7
if (temp) free(temp);
-#endif
}
snd_unprotect_at(gc_loc);
}
@@ -796,9 +799,7 @@ static void save_property_list(FILE *fd, XEN property_list, int chan, int edpos)
/* restore the various print lengths */
set_print_length(old_print_length);
mus_vct_set_print_length(old_vct_print_length);
-#if HAVE_S7
s7_symbol_set_value(s7, s7_make_symbol(s7, "*vector-print-length*"), s7_make_integer(s7, old_s7_print_length));
-#endif
}
#endif
@@ -1323,8 +1324,6 @@ void save_state(const char *save_state_name)
* old mix/track numbers and mapping to the new ones.
*/
- pss_ss(save_fd, S_show_listener, b2s(listener_is_visible()));
-
/* the problem here (with saving hooks) is that it is not straightforward to save the function source
* (with the current print-set! source option, or with an earlier procedure->string function using
* procedure_environment etc); many types print in this case in ways that are not readable.
@@ -1361,7 +1360,7 @@ const char *save_options_in_prefs(void)
#if HAVE_FORTH
#define SND_PREFS "~/.snd_prefs_forth"
#endif
-#if HAVE_S7
+#if HAVE_SCHEME
#define SND_PREFS "~/.snd_prefs_s7"
#endif
@@ -2097,7 +2096,7 @@ static void set_print_lengths(int len)
{
set_print_length(len);
mus_vct_set_print_length(len);
-#if HAVE_S7
+#if HAVE_SCHEME
s7_symbol_set_value(s7, s7_make_symbol(s7, "*vector-print-length*"), s7_make_integer(s7, len));
#endif
}
diff --git a/snd-marks.c b/snd-marks.c
index b70db2a..dbca50c 100644
--- a/snd-marks.c
+++ b/snd-marks.c
@@ -2062,7 +2062,7 @@ static XEN g_xen_mark_to_string(XEN obj)
#endif
-#if (!HAVE_S7)
+#if (!HAVE_SCHEME)
static bool xen_mark_equalp(xen_mark *v1, xen_mark *v2)
{
return((v1 == v2) ||
@@ -2097,7 +2097,7 @@ XEN new_xen_mark(int n)
}
-#if HAVE_S7
+#if HAVE_SCHEME
static bool s7_xen_mark_equalp(void *obj1, void *obj2)
{
return((obj1 == obj2) ||
@@ -2121,7 +2121,7 @@ static XEN s7_xen_mark_copy(s7_scheme *sc, s7_pointer obj)
static void init_xen_mark(void)
{
-#if HAVE_S7
+#if HAVE_SCHEME
xen_mark_tag = XEN_MAKE_OBJECT_TYPE("<mark>", print_xen_mark, free_xen_mark, s7_xen_mark_equalp, NULL, NULL, NULL, NULL, s7_xen_mark_copy, NULL);
#else
#if HAVE_RUBY
@@ -2929,6 +2929,17 @@ static XEN g_set_mark_properties(XEN n, XEN val)
}
+static XEN g_mark_property(XEN key, XEN id)
+{
+ #define H_mark_property "(" S_mark_property " key id) returns the value associated with 'key' in the given mark's property list, or #f"
+ return(XEN_ASSOC_REF(key, g_mark_properties(id)));
+}
+
+static XEN g_set_mark_property(XEN key, XEN id, XEN val)
+{
+ g_set_mark_properties(id, XEN_ASSOC_SET(key, val, g_mark_properties(id)));
+ return(val);
+}
@@ -2958,6 +2969,8 @@ XEN_NARGIFY_1(g_integer_to_mark_w, g_integer_to_mark)
XEN_NARGIFY_1(g_mark_to_integer_w, g_mark_to_integer)
XEN_NARGIFY_1(g_mark_properties_w, g_mark_properties)
XEN_NARGIFY_2(g_set_mark_properties_w, g_set_mark_properties)
+XEN_NARGIFY_2(g_mark_property_w, g_mark_property)
+XEN_NARGIFY_3(g_set_mark_property_w, g_set_mark_property)
#if MUS_DEBUGGING && HAVE_SCHEME
XEN_NARGIFY_3(g_test_control_drag_mark_w, g_test_control_drag_mark)
#endif
@@ -2987,6 +3000,8 @@ XEN_NARGIFY_2(g_set_mark_properties_w, g_set_mark_properties)
#define g_mark_to_integer_w g_mark_to_integer
#define g_mark_properties_w g_mark_properties
#define g_set_mark_properties_w g_set_mark_properties
+#define g_mark_property_w g_mark_property
+#define g_set_mark_property_w g_set_mark_property
#if MUS_DEBUGGING && HAVE_SCHEME
#define g_test_control_drag_mark_w g_test_control_drag_mark
#endif
@@ -3035,6 +3050,9 @@ void g_init_marks(void)
XEN_DEFINE_PROCEDURE_WITH_SETTER(S_mark_properties, g_mark_properties_w, H_mark_properties,
S_setB S_mark_properties, g_set_mark_properties_w, 1, 0, 2, 0);
+ XEN_DEFINE_PROCEDURE_WITH_SETTER(S_mark_property, g_mark_property_w, H_mark_property,
+ S_setB S_mark_property, g_set_mark_property_w, 2, 0, 3, 0);
+
#define H_draw_mark_hook S_draw_mark_hook " (mark-id): called before a mark is drawn (in XOR mode). \
If the hook returns " PROC_TRUE ", the mark is not drawn."
diff --git a/snd-menu.c b/snd-menu.c
index 679e7a3..06507c6 100644
--- a/snd-menu.c
+++ b/snd-menu.c
@@ -94,8 +94,10 @@ void view_menu_update(void)
/* verbose cursor label */
set_menu_label(view_cursor_menu, (verbose_cursor(ss)) ? _("Silent cursor") : _("Verbose cursor"));
+#if HAVE_EXTENSION_LANGUAGE
/* inset graph label */
set_menu_label(view_inset_menu, (with_inset_graph(ss)) ? _("Without inset graph") : _("With inset graph"));
+#endif
/* channel style */
set_sensitive(view_combine_separate_menu, channel_style(ss) != CHANNELS_SEPARATE);
@@ -110,8 +112,11 @@ void view_menu_update(void)
set_sensitive(view_all_axes_unlabelled_menu, show_axes(ss) != SHOW_ALL_AXES_UNLABELLED);
set_sensitive(view_bare_x_axis_menu, show_axes(ss) != SHOW_BARE_X_AXIS);
+#if HAVE_EXTENSION_LANGUAGE
/* make sure listener menu option label correctly reflects current listener state */
set_menu_label(view_listener_menu, (listener_is_visible()) ? _("Hide listener") : _("Show listener"));
+#endif
+
set_menu_label(view_controls_menu, (in_show_controls(ss)) ? _("Hide controls") : _("Show controls"));
/* set_sensitive(view_files_menu, get_view_files_end() >= 0); */
diff --git a/snd-mix.c b/snd-mix.c
index 882df78..45f8258 100644
--- a/snd-mix.c
+++ b/snd-mix.c
@@ -1039,6 +1039,7 @@ static int mix_tag_y_from_id(int id)
}
+#if (!USE_NO_GUI)
static color_t mix_color_from_id(int mix_id)
{
mix_info *md;
@@ -1047,6 +1048,7 @@ static color_t mix_color_from_id(int mix_id)
return(md->color);
return(ss->sgx->mix_color);
}
+#endif
color_t mix_set_color_from_id(int id, color_t new_color)
@@ -2560,7 +2562,7 @@ static XEN g_xen_mix_to_string(XEN obj)
#endif
-#if (!HAVE_S7)
+#if (!HAVE_SCHEME)
static bool xen_mix_equalp(xen_mix *v1, xen_mix *v2)
{
return((v1 == v2) ||
@@ -2595,7 +2597,7 @@ XEN new_xen_mix(int n)
}
-#if HAVE_S7
+#if HAVE_SCHEME
static XEN s7_xen_mix_length(s7_scheme *sc, s7_pointer obj)
{
return(g_mix_length(obj));
@@ -2618,7 +2620,7 @@ static XEN s7_xen_mix_copy(s7_scheme *sc, s7_pointer obj)
static void init_xen_mix(void)
{
-#if HAVE_S7
+#if HAVE_SCHEME
xen_mix_tag = XEN_MAKE_OBJECT_TYPE("<mix>", print_xen_mix, free_xen_mix, s7_xen_mix_equalp, NULL, NULL, NULL, s7_xen_mix_length, s7_xen_mix_copy, NULL);
#else
#if HAVE_RUBY
@@ -2942,6 +2944,19 @@ static XEN g_set_mix_properties(XEN n, XEN val)
}
+static XEN g_mix_property(XEN key, XEN id)
+{
+ #define H_mix_property "(" S_mix_property " key id) returns the value associated with 'key' in the given mix's property list, or #f"
+ return(XEN_ASSOC_REF(key, g_mix_properties(id)));
+}
+
+static XEN g_set_mix_property(XEN key, XEN id, XEN val)
+{
+ g_set_mix_properties(id, XEN_ASSOC_SET(key, val, g_mix_properties(id)));
+ return(val);
+}
+
+
static XEN g_mix_home(XEN n)
{
#define H_mix_home "(" S_mix_home " id): list of sound index and channel for the output of the mix, and the \
@@ -3504,7 +3519,7 @@ static void mf_free(mix_fd *fd)
XEN_MAKE_OBJECT_FREE_PROCEDURE(mix_fd, free_mf, mf_free)
-#if HAVE_S7
+#if HAVE_SCHEME
static bool s7_equalp_mf(void *m1, void *m2)
{
return(m1 == m2);
@@ -3562,7 +3577,7 @@ snd_fd *xen_mix_to_snd_fd(XEN obj)
}
-#if HAVE_S7
+#if HAVE_SCHEME
static XEN s7_read_mix_sample(s7_scheme *sc, XEN obj, XEN args)
{
return(g_read_mix_sample(obj));
@@ -3845,6 +3860,8 @@ XEN_NARGIFY_1(g_mix_to_integer_w, g_mix_to_integer)
XEN_NARGIFY_1(g_mix_home_w, g_mix_home)
XEN_NARGIFY_1(g_mix_properties_w, g_mix_properties)
XEN_NARGIFY_2(g_set_mix_properties_w, g_set_mix_properties)
+XEN_NARGIFY_2(g_mix_property_w, g_mix_property)
+XEN_NARGIFY_3(g_set_mix_property_w, g_set_mix_property)
XEN_ARGIFY_1(g_mix_color_w, g_mix_color)
XEN_ARGIFY_2(g_set_mix_color_w, g_set_mix_color)
@@ -3895,6 +3912,8 @@ XEN_NARGIFY_1(g_set_mix_dialog_mix_w, g_set_mix_dialog_mix)
#define g_mix_home_w g_mix_home
#define g_mix_properties_w g_mix_properties
#define g_set_mix_properties_w g_set_mix_properties
+#define g_mix_property_w g_mix_property
+#define g_set_mix_property_w g_set_mix_property
#define g_mix_color_w g_mix_color
#define g_set_mix_color_w g_set_mix_color
@@ -3928,7 +3947,7 @@ void g_init_mix(void)
{
init_xen_mix();
-#if HAVE_S7
+#if HAVE_SCHEME
mf_tag = XEN_MAKE_OBJECT_TYPE("<mix-sampler>", print_mf, free_mf, s7_equalp_mf, NULL, s7_read_mix_sample, NULL, NULL, NULL, NULL);
#else
mf_tag = XEN_MAKE_OBJECT_TYPE("MixSampler", sizeof(mix_fd));
@@ -3969,6 +3988,7 @@ void g_init_mix(void)
XEN_DEFINE_PROCEDURE_WITH_SETTER(S_mix_name, g_mix_name_w, H_mix_name, S_setB S_mix_name, g_set_mix_name_w, 1, 0, 2, 0);
XEN_DEFINE_PROCEDURE_WITH_SETTER(S_mix_sync, g_mix_sync_w, H_mix_sync, S_setB S_mix_sync, g_set_mix_sync_w, 1, 0, 2, 0);
XEN_DEFINE_PROCEDURE_WITH_SETTER(S_mix_properties, g_mix_properties_w, H_mix_properties, S_setB S_mix_properties, g_set_mix_properties_w, 1, 0, 2, 0);
+ XEN_DEFINE_PROCEDURE_WITH_SETTER(S_mix_property, g_mix_property_w, H_mix_property, S_setB S_mix_property, g_set_mix_property_w, 2, 0, 3, 0);
XEN_DEFINE_PROCEDURE_WITH_SETTER(S_mix_tag_y, g_mix_tag_y_w, H_mix_tag_y, S_setB S_mix_tag_y, g_set_mix_tag_y_w, 1, 0, 2, 0);
XEN_DEFINE_PROCEDURE_WITH_SETTER(S_mix_tag_width, g_mix_tag_width_w, H_mix_tag_width, S_setB S_mix_tag_width, g_set_mix_tag_width_w, 0, 0, 1, 0);
diff --git a/snd-nogui.c b/snd-nogui.c
index 91deb97..92a4d50 100644
--- a/snd-nogui.c
+++ b/snd-nogui.c
@@ -338,7 +338,7 @@ void snd_doit(int argc, char **argv)
ss->sgx = (state_context *)calloc(1, sizeof(state_context));
ss->sgx->axis_color_set = false;
-#if HAVE_S7
+#if HAVE_SCHEME
xen_s7_set_repl_prompt("snd>");
#endif
@@ -461,6 +461,9 @@ void snd_doit(int argc, char **argv)
XEN_EVAL_C_STRING("(define (" S_colormap_ref " . args) #f)");
XEN_EVAL_C_STRING("(define (" S_colormap_name " . args) #f)");
XEN_EVAL_C_STRING("(define (" S_add_colormap " . args) #f)");
+
+ XEN_EVAL_C_STRING("(define " S_x_bounds " (make-procedure-with-setter (lambda args #f) (lambda args #f)))");
+ XEN_EVAL_C_STRING("(define " S_y_bounds " (make-procedure-with-setter (lambda args #f) (lambda args #f)))");
#endif
#if HAVE_RUBY
@@ -593,6 +596,11 @@ void snd_doit(int argc, char **argv)
XEN_EVAL_C_STRING("Selection_context = 2");
XEN_EVAL_C_STRING("Time_graph = 0");
XEN_EVAL_C_STRING("Transform_graph = 1");
+
+ XEN_EVAL_C_STRING("def x_bounds (s, c, a) false end");
+ XEN_EVAL_C_STRING("def set_x_bounds (s, c, ax, a) false end");
+ XEN_EVAL_C_STRING("def y_bounds (s, c, a) false end");
+ XEN_EVAL_C_STRING("def set_y_bounds (s, c, ax, a) false end");
#endif
#if HAVE_FORTH
@@ -673,6 +681,10 @@ void snd_doit(int argc, char **argv)
: " S_zoom_color " #f ;\n\
: set-" S_zoom_color " { a } #f ;\n\
: " S_axis_info " { s c a } #f ;\n\
+: " S_x_bounds " { s c a } #f ;\n\
+: set-" S_x_bounds " { a } #f ;\n\
+: " S_y_bounds " { s c a } #f ;\n\
+: set-" S_y_bounds " { a } #f ;\n\
: " S_channel_widgets " { s c } #f ;\n\
: " S_color_p " { a } #f ;\n\
: " S_color_to_list " { a } #f ;\n\
diff --git a/snd-prefs.c b/snd-prefs.c
index ef82a3d..4036ea8 100644
--- a/snd-prefs.c
+++ b/snd-prefs.c
@@ -236,18 +236,27 @@ static void add_local_load_path(FILE *fd, char *path)
fprintf(fd, "\"%s\" add-load-path\n", path); /* no drop here */
#endif
-#if HAVE_S7
+#if HAVE_SCHEME
fprintf(fd, "(if (not (member \"%s\" *load-path*)) (set! *load-path* (cons \"%s\" *load-path*)))\n", path, path);
#endif
}
-static void save_prefs(const char *filename)
+#if HAVE_EXTENSION_LANGUAGE
+static void save_prefs(void)
{
char *fullname;
+ const char *filename;
FILE *fd;
- if (!filename) return; /* error earlier */
+ /* save_options_in_prefs passes us the filename after calling save_options which handles all
+ * the simple cases. The rest of the special "save" functions called here are for cases
+ * where we are calling extension code, so we have to make sure the necessary files are loaded.
+ */
+
+ filename = save_options_in_prefs();
+ if (!filename) return;
+
fullname = mus_expand_filename(filename);
fd = FOPEN(fullname, "a");
fprintf(fd, "\n");
@@ -316,6 +325,7 @@ static void save_prefs(const char *filename)
prefs_unsaved = false;
prefs_set_dialog_title(filename);
}
+#endif
static char *trim_string(const char *str)
@@ -366,7 +376,7 @@ static void prefs_help(prefs_info *prf)
prefs_helping = true;
(*(prf->help_func))(prf);
}
-#if (!HAVE_S7)
+#if (!HAVE_SCHEME)
else
{
XEN sym;
@@ -435,7 +445,7 @@ static void prefs_variable_save(FILE *fd, const char *name, const char *file, XE
if (file)
fprintf(fd, "(if (not (provided? 'snd-%s.scm)) (load \"%s.scm\"))\n", file, file);
fprintf(fd, "(set! %s %s)\n", name, temp = XEN_AS_STRING(val));
-#if HAVE_S7
+#if HAVE_SCHEME
if (temp) free(temp);
#endif
#endif
@@ -533,7 +543,7 @@ static void prefs_function_call_1(const char *func, XEN arg)
#if HAVE_SCHEME
char *temp = NULL;
str = mus_format("(%s %s)\n", func, temp = XEN_AS_STRING(arg));
-#if HAVE_S7
+#if HAVE_SCHEME
if (temp) free(temp);
#endif
#endif
@@ -543,7 +553,7 @@ static void prefs_function_call_1(const char *func, XEN arg)
#endif
#if HAVE_FORTH
- str = mus_format("%s %s\n", XEN_AS_STRING(arg), func);
+ str = mus_format("%s %s\n", XEN_AS_STRING(arg), func);
#endif
XEN_EVAL_C_STRING(str);
@@ -572,7 +582,7 @@ static void prefs_function_save_0(FILE *fd, const char *name, const char *file)
#if HAVE_FORTH
if (file)
fprintf(fd, "require %s\n", file);
- fprintf(fd, "%s\n", name); /* drop?? */
+ fprintf(fd, "%s\n", name);
#endif
}
@@ -584,7 +594,7 @@ static void prefs_function_save_1(FILE *fd, const char *name, const char *file,
if (file)
fprintf(fd, "(if (not (provided? 'snd-%s.scm)) (load \"%s.scm\"))\n", file, file);
fprintf(fd, "(%s %s)\n", name, temp = XEN_AS_STRING(val));
-#if HAVE_S7
+#if HAVE_SCHEME
if (temp) free(temp);
#endif
#endif
@@ -601,7 +611,7 @@ static void prefs_function_save_1(FILE *fd, const char *name, const char *file,
#if HAVE_FORTH
if (file)
fprintf(fd, "require %s\n", file);
- fprintf(fd, "%s %s drop\n", XEN_AS_STRING(val), name);
+ fprintf(fd, "%s %s\n", XEN_AS_STRING(val), name);
#endif
}
@@ -727,8 +737,6 @@ static void show_listener_toggle(prefs_info *prf)
static void save_show_listener(prefs_info *prf, FILE *fd)
{
rts_show_listener = prefs_show_listener;
- if (GET_TOGGLE(prf->toggle))
- prefs_function_save_1(fd, "show-listener", NULL, XEN_TRUE);
}
@@ -2291,6 +2299,20 @@ static void revert_init_window_size(prefs_info *prf)
}
+static void reflect_init_window_size(prefs_info *prf)
+{
+ char *str;
+
+ str = mus_format("%d", ss->init_window_width);
+ SET_TEXT(prf->text, str);
+ free(str);
+
+ str = mus_format("%d", ss->init_window_height);
+ SET_TEXT(prf->rtxt, str);
+ free(str);
+}
+
+
static void clear_init_window_size(prefs_info *prf)
{
ss->init_window_width = DEFAULT_INIT_WINDOW_WIDTH;
@@ -2499,7 +2521,7 @@ static void reflect_with_pointer_focus(prefs_info *prf)
-#if HAVE_S7
+#if HAVE_SCHEME
/* ---------------- optimization ---------------- */
static int rts_optimization = DEFAULT_OPTIMIZATION;
@@ -4176,7 +4198,7 @@ static void save_smpte(prefs_info *prf, FILE *fd)
#if HAVE_FORTH
fprintf(fd, "require snd-xm\n");
- fprintf(fd, "\\ #t show-smpte-label drop\n");
+ fprintf(fd, "#t show-smpte-label\n");
#endif
}
}
@@ -4694,7 +4716,7 @@ find elsewhere. The current load path list is: \n\n%s\n",
#if HAVE_RUBY
", $LOAD_PATH",
#else
-#if HAVE_FORTH || HAVE_S7
+#if HAVE_FORTH || HAVE_SCHEME
", *load-path*",
#else
"",
@@ -4702,7 +4724,7 @@ find elsewhere. The current load path list is: \n\n%s\n",
#endif
temp = (char *)XEN_AS_STRING(XEN_LOAD_PATH));
snd_help("load paths", hlp, WITH_WORD_WRAP);
-#if HAVE_S7
+#if HAVE_SCHEME
if (temp) free(temp);
#endif
free(hlp);
@@ -4714,7 +4736,7 @@ static char *find_sources(void) /* returns full filename if found else null */
char *file = NULL;
#define BASE_FILE "extensions." XEN_FILE_EXTENSION
-#if HAVE_S7
+#if HAVE_SCHEME
/* mimic Forth code below -- get *load-path* value and run through it */
{
int i, len, base_len;
diff --git a/snd-region.c b/snd-region.c
index 00c18dd..1a3451a 100644
--- a/snd-region.c
+++ b/snd-region.c
@@ -1387,7 +1387,7 @@ static XEN g_xen_region_to_string(XEN obj)
#endif
-#if (!HAVE_S7)
+#if (!HAVE_SCHEME)
static bool xen_region_equalp(xen_region *v1, xen_region *v2)
{
return((v1 == v2) ||
@@ -1422,7 +1422,7 @@ XEN new_xen_region(int n)
}
-#if HAVE_S7
+#if HAVE_SCHEME
static bool s7_xen_region_equalp(void *obj1, void *obj2)
{
return((obj1 == obj2) ||
@@ -1438,7 +1438,7 @@ static XEN s7_xen_region_length(s7_scheme *sc, XEN obj)
static void init_xen_region(void)
{
-#if HAVE_S7
+#if HAVE_SCHEME
xen_region_tag = XEN_MAKE_OBJECT_TYPE("<region>", print_xen_region, free_xen_region, s7_xen_region_equalp, NULL, NULL, NULL, s7_xen_region_length, NULL, NULL);
#else
#if HAVE_RUBY
diff --git a/snd-select.c b/snd-select.c
index 261171c..45cf60b 100644
--- a/snd-select.c
+++ b/snd-select.c
@@ -881,7 +881,7 @@ static XEN g_xen_selection_to_string(XEN obj)
#endif
-#if (!HAVE_S7)
+#if (!HAVE_SCHEME)
static bool xen_selection_equalp(xen_selection *v1, xen_selection *v2)
{
return((v1 == v2) ||
@@ -919,7 +919,7 @@ static XEN g_selection(void)
}
-#if HAVE_S7
+#if HAVE_SCHEME
static XEN s7_xen_selection_length(s7_scheme *sc, XEN obj)
{
return(g_selection_frames(XEN_UNDEFINED, XEN_UNDEFINED));
@@ -990,7 +990,7 @@ static XEN s7_xen_selection_fill(s7_scheme *sc, XEN obj, XEN val)
static void init_xen_selection(void)
{
-#if HAVE_S7
+#if HAVE_SCHEME
xen_selection_tag = XEN_MAKE_OBJECT_TYPE("<selection>",
print_xen_selection, free_xen_selection, s7_xen_selection_equalp,
NULL, NULL, NULL, s7_xen_selection_length,
diff --git a/snd-sig.c b/snd-sig.c
index d592ef6..b4cc220 100644
--- a/snd-sig.c
+++ b/snd-sig.c
@@ -2926,7 +2926,7 @@ void cos_smooth(chan_info *cp, mus_long_t beg, mus_long_t num, bool over_selecti
}
-#if HAVE_S7
+#if HAVE_SCHEME
static char *run_channel(chan_info *cp, struct ptree *pt, mus_long_t beg, mus_long_t dur, int edpos, const char *origin, const char *caller)
{
snd_info *sp;
@@ -3268,7 +3268,7 @@ static XEN g_map_chan_1(XEN proc_and_list, XEN s_beg, XEN s_end, XEN org, XEN sn
pos = cp->edit_ctr;
}
-#if HAVE_S7
+#if HAVE_SCHEME
if (optimization(ss) > 0)
{
struct ptree *pt = NULL;
@@ -3610,7 +3610,7 @@ the current sample, the vct returned by 'init-func', and the current read direct
mus_long_t beg = 0, dur = 0;
bool backup = false;
int pos;
-#if HAVE_S7
+#if HAVE_SCHEME
bool too_many_ptrees = false;
struct ptree *pt = NULL;
#endif
@@ -3650,7 +3650,7 @@ the current sample, the vct returned by 'init-func', and the current read direct
pos = cp->edit_ctr;
}
-#if (!HAVE_S7)
+#if (!HAVE_SCHEME)
if (XEN_STRING_P(origin)) caller = mus_strdup(XEN_TO_C_STRING(origin)); else caller = mus_strdup(S_ptree_channel);
g_map_chan_ptree_fallback(proc, init_func, cp, beg, dur, pos, caller);
if (caller) {free(caller); caller = NULL;}
@@ -3734,7 +3734,9 @@ static XEN g_sp_scan(XEN proc_and_list, XEN s_beg, XEN s_end, XEN snd, XEN chn,
int counts = 0, pos;
char *errmsg;
XEN proc = XEN_FALSE;
+#if HAVE_SCHEME
struct ptree *pt = NULL;
+#endif
proc = proc_and_list;
@@ -3775,7 +3777,7 @@ static XEN g_sp_scan(XEN proc_and_list, XEN s_beg, XEN s_end, XEN snd, XEN chn,
sf = init_sample_read_any(beg, cp, READ_FORWARD, pos);
if (sf == NULL) return(XEN_TRUE);
-#if HAVE_S7
+#if HAVE_SCHEME
if (optimization(ss) > 0)
{
pt = mus_run_form_to_ptree_1_b(XEN_PROCEDURE_SOURCE(proc_and_list));
@@ -5666,20 +5668,20 @@ that give a minimum peak amplitude when the signals are added together."
17827, 17837, 17839, 17851, 17863};
#endif
- static mus_float_t all_mins[128] = {1.0000, 1.7600, 1.9797, 2.0390, 2.3435, 2.5493, 2.6394, 2.7947, 2.9618, 3.1027, 3.2185, 3.3894, 3.5250, 3.6133, 3.7692, 3.8753, 4.0148, 4.1494, 4.2581, 4.2901, 4.4849, 4.5894, 4.6081, 4.7311, 4.8564, 5.0233, 5.0681, 5.2422, 5.2459, 5.3987, 5.4854, 5.5308, 5.6374, 5.7254, 5.7718, 5.9366, 5.9364, 6.1464, 6.1482, 6.3653, 6.3450, 6.5282, 6.5068, 6.5714, 6.7332, 6.7149, 6.9355, 6.9953, 7.1060, 7.1313, 7.2537, 7.1751, 7.2324, 7.4739, 7.4707, 7.5447, 7.5465, 7.7689, 7.7246, 7.9353, 7.9802, 7.9684, 7.9637, 8.1950, 8.2237, 8.2772, 8.4220, 8.3311, 8.5235, 8.5489, 8.5275, 8.6509, 8.6988, 8.7103, 8.8716, 9.0402, 9.0933, 9.1735, 9.1422, 9.3064, 9.3563, 9.3949, 9.4677, 9.5884, 9.4629, 9.6463, 9.6826, 9.7570, 9.8776, 9.8025, 9.9028, 10.0656, 10.0715, 10.3373, 10.4896, 10.2884, 10.2905, 10.2477, 10.3082, 10.5682, 10.4582, 10.7227, 10.8344, 10.7116, 10.7227, 10.8785, 10.9305, 10.9577, 11.1492, 11.1866, 11.1041, 11.2154, 11.3307, 11.2137, 11.2538, 11.2835, 11.5431, 11.6888, 11.6346, 11.5518, 11.7755, 11.7816, 11.6997, 12.0027, 11.9934, 11.9238, 12.1521, 12.1056};
+ static mus_float_t all_mins[128] = {1.0000, 1.7600, 1.9797, 2.0390, 2.3435, 2.5493, 2.6394, 2.7947, 2.9618, 3.1027, 3.2184, 3.3891, 3.5249, 3.6131, 3.7690, 3.8751, 3.9815, 4.1454, 4.2237, 4.2901, 4.4844, 4.5881, 4.6077, 4.7308, 4.8556, 5.0083, 5.0665, 5.1610, 5.2447, 5.3667, 5.4835, 5.5298, 5.6351, 5.7213, 5.7695, 5.9314, 5.9340, 6.1411, 6.1310, 6.3596, 6.3364, 6.5169, 6.4824, 6.5525, 6.7031, 6.6997, 6.8394, 6.9776, 7.0801, 7.1043, 7.2265, 7.1497, 7.2114, 7.4406, 7.4513, 7.4565, 7.5207, 7.7458, 7.6748, 7.8545, 7.9335, 7.8677, 7.9218, 8.1003, 8.1853, 8.2275, 8.3715, 8.2113, 8.4511, 8.4480, 8.4360, 8.5241, 8.6308, 8.5821, 8.7553, 8.8781, 8.9925, 9.0473, 9.0078, 9.2051, 9.1899, 9.3176, 9.3080, 9.3851, 9.2995, 9.4977, 9.5259, 9.4757, 9.6685, 9.6752, 9.7258, 9.7876, 9.8545, 10.1799, 10.2356, 10.1435, 10.1401, 10.1635, 10.0579, 10.2635, 10.3129, 10.5181, 10.5710, 10.5007, 10.3634, 10.6112, 10.6709, 10.6599, 10.8492, 10.9047, 10.7804, 10.8451, 11.0483, 10.9655, 11.0472, 11.0865, 11.2635, 11.3221, 11.3991, 11.2636, 11.5103, 11.3714, 11.4332, 11.5504, 11.6483, 11.6464, 11.6990, 11.7783};
- static mus_float_t odd_mins[128] = {1.0000, 1.5390, 1.7387, 2.0452, 2.3073, 2.5227, 2.6184, 2.7908, 2.8865, 3.0538, 3.1771, 3.3627, 3.4755, 3.5994, 3.7398, 3.8582, 3.9278, 4.0712, 4.1739, 4.3661, 4.4509, 4.5831, 4.6639, 4.7900, 4.8902, 5.0101, 5.0929, 5.0941, 5.2720, 5.3588, 5.4255, 5.5682, 5.6093, 5.7531, 5.8431, 6.0167, 6.0366, 6.1582, 6.1977, 6.2855, 6.3347, 6.4179, 6.4970, 6.6217, 6.6676, 6.7262, 6.9880, 6.9921, 7.0329, 6.9978, 7.2281, 7.1876, 7.3536, 7.4203, 7.5634, 7.5879, 7.5335, 7.6278, 7.7746, 7.8934, 7.9121, 7.9634, 8.0558, 8.1551, 8.2295, 8.2794, 8.5223, 8.4266, 8.5278, 8.4754, 8.8275, 8.7890, 8.7632, 8.6882, 8.8896, 8.9082, 8.8724, 8.9603, 9.1995, 9.1993, 9.3561, 9.3173, 9.4531, 9.6400, 9.5947, 9.6392, 9.8480, 9.8740, 9.8551, 9.9984, 10.0045, 10.0262, 10.3016, 10.2465, 10.0070, 10.2762, 10.3893, 10.3987, 10.6836, 10.5310, 10.5468, 10.5881, 10.7730, 10.8656, 10.7888, 10.8100, 11.1707, 11.2457, 11.1544, 11.0760, 11.2678, 11.2559, 11.2784, 11.2582, 11.3645, 11.4133, 11.5338, 11.6295, 11.7339, 11.7764, 11.8075, 11.8736, 11.9492, 11.8089, 12.1246, 11.9498, 12.0452, 12.1202};
+ static mus_float_t odd_mins[128] = {1.0000, 1.5390, 1.7387, 2.0452, 2.3073, 2.5227, 2.6184, 2.7908, 2.8865, 3.0538, 3.1771, 3.3627, 3.4755, 3.5994, 3.7398, 3.8582, 3.9278, 4.0712, 4.1739, 4.3601, 4.4504, 4.5828, 4.6639, 4.7891, 4.8892, 5.0085, 5.0916, 5.0926, 5.2674, 5.3569, 5.4235, 5.5676, 5.6070, 5.7451, 5.8382, 6.0075, 6.0249, 6.1502, 6.1875, 6.2779, 6.3276, 6.4085, 6.4809, 6.6048, 6.6310, 6.7167, 6.9739, 6.9398, 6.9979, 6.9553, 7.1723, 7.0875, 7.3284, 7.3828, 7.4464, 7.4388, 7.4982, 7.6006, 7.7420, 7.8577, 7.8579, 7.8988, 7.9481, 8.1024, 8.1727, 8.2137, 8.3934, 8.3369, 8.3939, 8.4041, 8.6766, 8.7154, 8.6184, 8.5058, 8.8302, 8.7191, 8.7389, 8.8023, 9.0327, 8.9976, 9.1247, 9.0785, 9.2563, 9.4090, 9.4658, 9.5083, 9.6166, 9.5949, 9.6377, 9.7765, 9.6446, 9.7926, 9.9767, 9.9812, 9.8952, 10.0051, 10.0861, 10.1552, 10.3130, 10.3199, 10.2811, 10.2336, 10.4839, 10.6061, 10.4360, 10.5347, 10.8161, 10.7672, 10.8641, 10.5415, 10.8070, 11.0061, 10.8308, 10.8934, 11.0826, 11.0300, 11.1500, 11.3720, 11.3830, 11.4348, 11.3530, 11.4854, 11.5599, 11.4671, 11.7214, 11.6207, 11.6497, 11.6306};
- static mus_float_t prime_mins[128] = {1.0000, 1.7600, 1.9798, 2.1921, 2.4768, 2.8055, 3.0619, 3.2630, 3.3824, 3.6023, 3.7790, 3.9366, 4.1551, 4.3254, 4.4680, 4.6025, 4.7203, 4.8567, 5.0167, 5.1901, 5.3299, 5.4469, 5.5674, 5.6505, 5.8178, 6.0653, 6.2081, 6.1965, 6.3721, 6.4568, 6.7151, 6.8684, 6.9144, 7.0538, 7.2291, 7.4042, 7.3551, 7.5736, 7.6340, 7.8271, 7.9136, 8.0743, 8.2149, 8.2461, 8.4385, 8.5052, 8.5535, 8.6445, 8.7489, 8.7849, 8.8897, 9.2189, 9.3674, 9.3299, 9.5111, 9.5738, 9.8499, 9.9676, 9.8432, 9.7591, 10.2239, 10.3171, 10.1973, 10.4610, 10.5343, 10.6781, 10.6640, 10.8298, 10.8325, 10.8478, 10.9632, 11.1163, 11.2591, 11.3197, 11.3790, 11.4720, 11.5193, 11.7476, 11.8543, 11.9317, 11.8480, 11.9337, 11.9599, 12.1588, 12.1901, 12.0845, 12.4767, 12.5416, 12.8986, 12.7343, 12.6624, 12.7478, 12.9807, 12.9598, 13.2138, 13.3455, 13.2618, 13.3914, 13.5595, 13.4925, 13.5350, 13.9972, 13.9850, 14.1888, 14.0545, 14.1764, 14.3161, 14.4368, 14.5303, 14.5041, 14.6050, 14.7396, 14.9606, 15.0310, 15.0406, 15.0462, 15.3342, 15.3323, 15.2008, 15.2134, 15.5222, 15.3714, 15.4564, 15.7030, 15.6571, 15.6889, 15.6324, 15.9469};
+ static mus_float_t prime_mins[128] = {1.0000, 1.7600, 1.9798, 2.1921, 2.4768, 2.8055, 3.0619, 3.2630, 3.3824, 3.6023, 3.7790, 3.9366, 4.1551, 4.3254, 4.4680, 4.6025, 4.7203, 4.8567, 5.0167, 5.1901, 5.3299, 5.4469, 5.5674, 5.6505, 5.8178, 6.0653, 6.2081, 6.1965, 6.3721, 6.4568, 6.7151, 6.8684, 6.9144, 7.0538, 7.2291, 7.4042, 7.3551, 7.5736, 7.6340, 7.8117, 7.8967, 8.0162, 8.1174, 8.2153, 8.3261, 8.3882, 8.4967, 8.6045, 8.7217, 8.6988, 8.8050, 9.0379, 9.2928, 9.2154, 9.4256, 9.5635, 9.6958, 9.8552, 9.5883, 9.7591, 10.0939, 10.1512, 9.9367, 10.2679, 10.4742, 10.5562, 10.5489, 10.6922, 10.7636, 10.6987, 10.8841, 11.0362, 11.1187, 11.1436, 11.2561, 11.2994, 11.2399, 11.6393, 11.8223, 11.8510, 11.6859, 11.7939, 11.7819, 12.0045, 12.0393, 11.8403, 12.2786, 12.2679, 12.6520, 12.5783, 12.6296, 12.5320, 12.7409, 12.7509, 13.1423, 13.2047, 13.1303, 13.2481, 13.4171, 13.3503, 13.3679, 13.7348, 13.7727, 13.9934, 13.7340, 14.0443, 14.1183, 14.2221, 14.4192, 14.4269, 14.3588, 14.5122, 14.7860, 14.9489, 15.0036, 15.0120, 15.1811, 15.1379, 15.0064, 15.0844, 15.3211, 15.2519, 15.2207, 15.5409, 15.3624, 15.5629, 15.4239, 15.6868};
- static mus_float_t even_mins[128] = {1.0000, 1.7602, 2.0215, 2.4306, 2.6048, 2.8370, 3.0470, 3.1976, 3.4541, 3.5589, 3.6567, 3.7876, 3.9730, 4.0977, 4.1935, 4.3263, 4.4641, 4.5708, 4.7435, 4.8426, 4.9238, 5.0583, 5.1537, 5.2559, 5.4112, 5.4557, 5.6246, 5.7387, 5.7786, 5.9134, 5.9958, 6.0713, 6.1689, 6.2381, 6.4166, 6.4513, 6.5975, 6.5613, 6.7164, 6.7727, 6.9399, 7.0416, 7.1567, 7.1505, 7.1985, 7.3613, 7.3415, 7.4928, 7.6558, 7.7501, 7.8127, 7.9176, 7.8488, 7.9241, 8.1589, 8.1707, 8.2122, 8.2181, 8.4173, 8.3991, 8.5841, 8.6289, 8.5811, 8.6465, 8.8391, 8.8636, 8.9698, 9.0357, 8.9785, 9.1803, 9.2771, 9.2567, 9.4007, 9.4059, 9.3632, 9.5783, 9.6950, 9.8053, 9.8038, 9.8595, 10.0239, 10.0255, 10.1374, 10.1077, 10.2372, 10.1295, 10.3856, 10.3512, 10.4351, 10.5486, 10.4867, 10.5864, 10.6957, 10.7382, 10.9692, 11.1390, 10.9849, 11.0252, 10.9353, 10.9667, 11.2242, 11.1144, 11.4480, 11.5669, 11.4572, 11.3621, 11.5380, 11.6373, 11.6255, 11.8025, 11.8475, 11.7378, 11.8505, 12.0774, 11.8501, 12.0222, 11.9655, 12.2986, 12.3574, 12.3345, 12.2610, 12.4240, 12.3010, 12.3630, 12.6174, 12.7529, 12.5191, 12.8189};
+ static mus_float_t even_mins[128] = {1.0000, 1.7602, 2.0215, 2.4306, 2.6048, 2.8370, 3.0470, 3.1976, 3.4541, 3.5589, 3.6567, 3.7876, 3.9730, 4.0977, 4.1935, 4.3263, 4.4641, 4.5708, 4.7435, 4.8420, 4.9227, 5.0578, 5.1505, 5.2557, 5.4106, 5.4556, 5.6241, 5.7353, 5.7702, 5.9106, 5.9928, 6.0713, 6.1677, 6.2353, 6.4120, 6.4387, 6.5939, 6.5558, 6.7089, 6.7689, 6.8999, 7.0027, 7.0932, 7.1206, 7.1985, 7.3017, 7.3086, 7.4772, 7.6244, 7.7046, 7.7636, 7.8732, 7.8140, 7.8754, 8.1346, 8.1349, 8.1888, 8.2030, 8.2870, 8.3690, 8.5414, 8.5465, 8.5691, 8.5665, 8.7668, 8.8636, 8.9698, 8.9504, 8.9785, 9.0610, 9.2513, 9.1741, 9.3439, 9.3672, 9.3317, 9.5185, 9.5988, 9.7505, 9.7740, 9.7945, 9.9100, 9.9534, 10.0128, 10.0185, 10.1273, 10.0417, 10.2650, 10.2827, 10.3340, 10.4571, 10.3806, 10.5118, 10.5379, 10.6169, 10.8848, 10.8809, 10.8515, 10.9470, 10.9353, 10.8971, 11.1105, 11.0619, 11.3899, 11.4490, 11.1730, 11.3055, 11.4092, 11.4609, 11.5203, 11.6139, 11.7200, 11.5897, 11.6755, 11.9106, 11.7191, 11.8492, 11.8638, 12.1627, 12.2705, 12.2081, 12.1813, 12.3103, 12.1861, 12.2472, 12.3861, 12.5515, 12.4708, 12.5601};
static mus_float_t min_8[4] = {19.4199, 19.7800, 21.1471, 25.4193};
static mus_float_t min_9[4] = {31.3912, 31.6276, 31.6281, 40.2509};
static mus_float_t min_10[4] = {49.8672, 48.8125, 51.6272, 70.1400};
- static mus_float_t min_11[4] = {77.3502, 80.0187, 79.1805, 102.6190};
+ static mus_float_t min_11[4] = {77.3502, 78.9374, 78.0793, 102.6190};
-#define USE_CLM_RANDOM (!HAVE_S7)
+#define USE_CLM_RANDOM (!HAVE_SCHEME)
static mus_float_t local_random(mus_float_t val)
{
@@ -6534,9 +6536,9 @@ for a peak-amp minimum using a simulated annealing form of the genetic algorithm
#define S_fpsap "fpsap"
-static XEN g_fpsap(XEN x_choice, XEN x_n, XEN start_phases)
+static XEN g_fpsap(XEN x_choice, XEN x_n, XEN start_phases, XEN x_size, XEN x_increment)
{
- #define H_fpsap "(" S_fpsap " choice n phases) searches \
+ #define H_fpsap "(" S_fpsap " choice n phases (size 6000) (increment 0.06)) searches \
for a peak-amp minimum using a simulated annealing form of the genetic algorithm. choice: 0=all, 1=odd, 2=even, 3=prime."
#define FFT_MULT 128
@@ -6551,15 +6553,14 @@ for a peak-amp minimum using a simulated annealing form of the genetic algorithm
#define EVEN 2
#define PRIME 3
- int choice, n, size, counts = 0, day_counter = 0, days = 0, years = 0, free_top = 0, fft_size = 0;
- mus_long_t ffts = 0;
+ int choice, n, size, counts = 0, day_counter = 0, free_top = 0, fft_size = 0;
mus_float_t increment = INCR_MAX, orig_incr, local_best = 1000.0, incr_mult = INCR_DOWN, overall_min;
mus_float_t *min_phases = NULL, *temp_phases = NULL, *diff_phases = NULL, *initial_phases = NULL;
char *choice_name[4] = {"all", "odd", "even", "prime"};
pk_data **choices = NULL, **free_choices = NULL;
mus_float_t *rl, *im;
const char *file = NULL;
- bool just_best = true;
+ bool just_best = false;
auto mus_float_t saved_min(int ch, int nn);
auto mus_float_t get_peak(mus_float_t *phases);
@@ -6625,7 +6626,6 @@ for a peak-amp minimum using a simulated annealing form of the genetic algorithm
/* and repeat this with a shift (rotation from i) for 2n other cases */
/* resultant amp is between 0 and 2 (cosine) */
- ffts++;
mx_sin = fabs(rl[0]);
mx_cos = fabs(im[0]);
for (i = 1; i < fft_size; i++)
@@ -6729,15 +6729,18 @@ for a peak-amp minimum using a simulated annealing form of the genetic algorithm
(pk < overall_min))
{
FILE *ofile;
- if (file)
- ofile = fopen(file, "a");
- else ofile = stderr;
for (k = 1; k < len; k++) min_phases[k] = new_pk->phases[k];
- fprintf(ofile, "[%d, %d, %f, %lld]: %s, %d %f #(", years, days, increment, (long long int)ffts, choice_name[choice], n, pk);
- for (k = 0; k < len - 1; k++) fprintf(ofile, "%f ", min_phases[k]);
- fprintf(ofile, "%f)\n\n", min_phases[len - 1]);
- if (file) fclose(ofile);
- if (pk < overall_min) overall_min = pk;
+ if (pk < overall_min)
+ {
+ if (file)
+ ofile = fopen(file, "a");
+ else ofile = stderr;
+ fprintf(ofile, "[%d, %f, %f]: %s, %d %f #(", size, orig_incr, increment, choice_name[choice], n, pk);
+ for (k = 0; k < len - 1; k++) fprintf(ofile, "%f ", min_phases[k]);
+ fprintf(ofile, "%f)\n\n", min_phases[len - 1]);
+ if (file) fclose(ofile);
+ overall_min = pk;
+ }
}
day_counter = 0;
@@ -6751,7 +6754,6 @@ for a peak-amp minimum using a simulated annealing form of the genetic algorithm
mus_float_t sum = 0.0, avg;
len = size;
day_counter++;
- days++;
for (i = 0; i < len; i++) sum += choices[i]->pk;
avg = sum / len;
@@ -6804,13 +6806,19 @@ for a peak-amp minimum using a simulated annealing form of the genetic algorithm
n = XEN_TO_C_INT(x_n);
- size = 6000; /* was 3000 */
+ if (XEN_INTEGER_P(x_size))
+ size = XEN_TO_C_INT(x_size);
+ else size = 6000; /* was 3000 */
+
+ if (XEN_DOUBLE_P(x_increment))
+ increment = XEN_TO_C_DOUBLE(x_increment);
+ else increment = 0.06; /* was .03 */
+
counts = 100;
- increment = 0.06; /* was .03 */
orig_incr = increment;
incr_mult = INCR_DOWN;
file = "test.data";
- just_best = true;
+ just_best = false;
if (XEN_VECTOR_P(start_phases))
{
@@ -6849,11 +6857,10 @@ for a peak-amp minimum using a simulated annealing form of the genetic algorithm
choices[start]->phases = (mus_float_t *)calloc(n, sizeof(mus_float_t));
}
- while (true)
+
{
free_top = 0;
day_counter = 0;
- days = 0;
local_best = (mus_float_t)n;
increment = orig_incr;
@@ -6883,15 +6890,18 @@ for a peak-amp minimum using a simulated annealing form of the genetic algorithm
(pk < overall_min))
{
FILE *ofile;
- if (file)
- ofile = fopen(file, "a");
- else ofile = stderr;
for (k = 1; k < n; k++) min_phases[k] = temp_phases[k];
- fprintf(ofile, "[%d, %d, %f, %lld]: %s, %d %f #(", years, days, increment, (long long int)ffts, choice_name[choice], n, pk);
- for (k = 0; k < n - 1; k++) fprintf(ofile, "%f ", min_phases[k]);
- fprintf(ofile, "%f)\n\n", min_phases[n - 1]);
- if (file) fclose(ofile);
- if (pk < overall_min) overall_min = pk;
+ if (pk < overall_min)
+ {
+ if (file)
+ ofile = fopen(file, "a");
+ else ofile = stderr;
+ fprintf(ofile, "[%d, %f, %f]: %s, %d %f #(", size, orig_incr, increment, choice_name[choice], n, pk);
+ for (k = 0; k < n - 1; k++) fprintf(ofile, "%f ", min_phases[k]);
+ fprintf(ofile, "%f)\n\n", min_phases[n - 1]);
+ if (file) fclose(ofile);
+ overall_min = pk;
+ }
}
}
@@ -6905,11 +6915,6 @@ for a peak-amp minimum using a simulated annealing form of the genetic algorithm
}
while (day()) {}
-
- break;
- /* try again from the top... */
- fprintf(stderr, "[%d: %d, %f]\n", years, days, local_best);
- years++;
}
}
@@ -6930,7 +6935,8 @@ for a peak-amp minimum using a simulated annealing form of the genetic algorithm
free(choices);
}
- return(xen_make_vct(n, min_phases));
+ return(XEN_LIST_2(C_TO_XEN_DOUBLE(local_best),
+ xen_make_vct(n, min_phases)));
}
#endif
@@ -6981,7 +6987,7 @@ XEN_ARGIFY_9(g_ptree_channel_w, g_ptree_channel)
XEN_VARGIFY(g_find_min_peak_phases_w, g_find_min_peak_phases)
XEN_ARGIFY_7(g_fpsa_w, g_fpsa)
XEN_ARGIFY_9(g_fpsaf_w, g_fpsaf)
-XEN_ARGIFY_3(g_fpsap_w, g_fpsap)
+XEN_ARGIFY_5(g_fpsap_w, g_fpsap)
#endif
#else
#define g_scan_chan_w g_scan_chan
@@ -7080,7 +7086,7 @@ void g_init_sig(void)
XEN_DEFINE_PROCEDURE(S_find_min_peak_phases, g_find_min_peak_phases_w, 0, 0, 1, H_find_min_peak_phases);
XEN_DEFINE_PROCEDURE(S_fpsa, g_fpsa_w, 2, 5, 0, H_fpsa);
XEN_DEFINE_PROCEDURE(S_fpsaf, g_fpsaf_w, 3, 6, 0, H_fpsaf);
- XEN_DEFINE_PROCEDURE(S_fpsap, g_fpsap_w, 3, 0, 0, H_fpsap);
+ XEN_DEFINE_PROCEDURE(S_fpsap, g_fpsap_w, 3, 2, 0, H_fpsap);
#endif
}
diff --git a/snd-snd.c b/snd-snd.c
index 4aad2f6..6dcdb96 100644
--- a/snd-snd.c
+++ b/snd-snd.c
@@ -2338,9 +2338,6 @@ void call_sp_watchers(snd_info *sp, sp_watcher_t type, sp_watcher_reason_t reaso
/* this is my long term plan right now... */
-/* first move several functions from the extension language into C (next thing to move: "current-window-display")
- */
-
/* generics (besides length, srate, channels, frames, file-name, sync, maxamp, play, copy, fill!, [apply], [set!], [for-each], [map]):
*
* source: procedure-source[s7_procedure_source] mix-home mark-home region-home player-home sampler-home
@@ -2405,8 +2402,7 @@ void call_sp_watchers(snd_info *sp, sp_watcher_t type, sp_watcher_reason_t reaso
* all current "work procs" could be handled as separate threads
* all multichannel parallel ops also threaded, and graphics updates, and playing
* TODO: make-sampler with mix etc -- let 1st arg be object, also add selection sampler
- * what about "Save again" menu item -- save as using the same choices including filename as before? [popup]
- * or save button next to "unite" et al. Also "close"? min max close save buttons on the left before the sound name?
+ * Also "close"? min max close save buttons on the left before the sound name?
*/
@@ -2468,7 +2464,7 @@ static XEN g_xen_sound_to_string(XEN obj)
#endif
-#if (!HAVE_S7)
+#if (!HAVE_SCHEME)
static bool xen_sound_equalp(xen_sound *v1, xen_sound *v2)
{
return((v1 == v2) ||
@@ -2503,7 +2499,7 @@ XEN new_xen_sound(int n)
}
-#if HAVE_S7
+#if HAVE_SCHEME
static bool s7_xen_sound_equalp(void *obj1, void *obj2)
{
return((obj1 == obj2) ||
@@ -2558,7 +2554,7 @@ static XEN s7_xen_sound_fill(s7_scheme *sc, XEN obj, XEN val)
}
else
{
-#if (!HAVE_S7)
+#if (!HAVE_SCHEME)
mus_long_t len = -1, j;
mus_sample_t *data = NULL;
mus_sample_t value;
@@ -2608,7 +2604,7 @@ static XEN s7_xen_sound_fill(s7_scheme *sc, XEN obj, XEN val)
static void init_xen_sound(void)
{
-#if HAVE_S7
+#if HAVE_SCHEME
xen_sound_tag = XEN_MAKE_OBJECT_TYPE("<sound>", print_xen_sound, free_xen_sound, s7_xen_sound_equalp,
NULL, NULL, NULL, s7_xen_sound_length, s7_xen_sound_copy, s7_xen_sound_fill);
#else
@@ -2677,7 +2673,7 @@ static XEN g_sound_p(XEN snd)
}
-#if HAVE_S7
+#if HAVE_SCHEME
bool r_sound_p(int i);
bool r_sound_p(int i)
{
@@ -3752,13 +3748,32 @@ static XEN g_sound_properties(XEN snd)
static XEN g_set_sound_properties(XEN on, XEN snd)
{
- /* XEN_ASSERT_TYPE(XEN_LIST_P(on), on, XEN_ARG_1, S_setB S_sound_properties, "a property list"); */
return(sound_set(snd, on, SP_PROPERTIES, S_setB S_sound_properties));
}
WITH_TWO_SETTER_ARGS(g_set_sound_properties_reversed, g_set_sound_properties)
+static XEN g_sound_property(XEN key, XEN snd)
+{
+ #define H_sound_property "(" S_sound_property " key snd) returns the value associated with 'key' in the given sound's property list, or #f"
+ return(XEN_ASSOC_REF(key, g_sound_properties(snd)));
+}
+
+#if HAVE_SCHEME
+static XEN g_set_sound_property(XEN val, XEN key, XEN snd)
+#else
+static XEN g_set_sound_property(XEN key, XEN val, XEN snd)
+#endif
+{
+ g_set_sound_properties(XEN_ASSOC_SET(key, val, g_sound_properties(snd)), snd);
+ return(val);
+}
+
+WITH_THREE_SETTER_ARGS(g_set_sound_property_reversed, g_set_sound_property)
+
+
+
static XEN g_channel_style(XEN snd)
{
snd_info *sp;
@@ -4078,7 +4093,7 @@ static XEN g_file_name(XEN snd)
if (XEN_REGION_P(snd))
return(C_TO_XEN_STRING(region_file_name(XEN_REGION_TO_C_INT(snd))));
-#if HAVE_S7
+#if HAVE_SCHEME
if ((s7_is_input_port(s7, snd)) || (s7_is_output_port(s7, snd)))
return(C_TO_XEN_STRING(s7_port_filename(snd)));
#endif
@@ -5322,7 +5337,7 @@ where each inner list entry can also be " PROC_FALSE "."
PROC_QUOTE,
temp = XEN_AS_STRING(settings),
apply_beg, apply_dur);
-#if HAVE_S7
+#if HAVE_SCHEME
if (temp) free(temp);
#endif
}
@@ -6012,6 +6027,8 @@ XEN_ARGIFY_2(g_set_sync_w, g_set_sync)
XEN_NARGIFY_0(g_sync_max_w, g_sync_max)
XEN_ARGIFY_1(g_sound_properties_w, g_sound_properties)
XEN_ARGIFY_2(g_set_sound_properties_w, g_set_sound_properties)
+XEN_ARGIFY_2(g_sound_property_w, g_sound_property)
+XEN_ARGIFY_3(g_set_sound_property_w, g_set_sound_property)
XEN_ARGIFY_1(g_channel_style_w, g_channel_style)
XEN_ARGIFY_2(g_set_channel_style_w, g_set_channel_style)
XEN_ARGIFY_1(g_read_only_w, g_read_only)
@@ -6134,6 +6151,8 @@ XEN_NARGIFY_1(g_sound_to_integer_w, g_sound_to_integer)
#define g_sync_max_w g_sync_max
#define g_sound_properties_w g_sound_properties
#define g_set_sound_properties_w g_set_sound_properties
+#define g_sound_property_w g_sound_property
+#define g_set_sound_property_w g_set_sound_property
#define g_channel_style_w g_channel_style
#define g_set_channel_style_w g_set_channel_style
#define g_read_only_w g_read_only
@@ -6294,6 +6313,9 @@ If it returns " PROC_TRUE ", the usual informative minibuffer babbling is squelc
XEN_DEFINE_PROCEDURE_WITH_REVERSED_SETTER(S_sound_properties, g_sound_properties_w, H_sound_properties,
S_setB S_sound_properties, g_set_sound_properties_w, g_set_sound_properties_reversed, 0, 1, 1, 1);
+ XEN_DEFINE_PROCEDURE_WITH_REVERSED_SETTER(S_sound_property, g_sound_property_w, H_sound_property,
+ S_setB S_sound_property, g_set_sound_property_w, g_set_sound_property_reversed, 1, 1, 2, 1);
+
XEN_DEFINE_PROCEDURE_WITH_REVERSED_SETTER(S_channel_style, g_channel_style_w, H_channel_style,
S_setB S_channel_style, g_set_channel_style_w, g_set_channel_style_reversed, 0, 1, 1, 1);
diff --git a/snd-stochastic.pd b/snd-stochastic.pd
deleted file mode 100644
index c0a4127..0000000
--- a/snd-stochastic.pd
+++ /dev/null
@@ -1,109 +0,0 @@
-#N canvas 208 508 864 376 10;
-#X msg 42 198 reload;
-#X msg 264 180 xwig \$1;
-#X msg 263 263 xstep \$1;
-#X floatatom 264 161 5 0 0 0 - - -;
-#X floatatom 263 244 5 0 0 0 - - -;
-#X msg 264 117 ywig \$1;
-#X floatatom 264 98 5 0 0 0 - - -;
-#N canvas 0 0 450 300 graph1 0;
-#X array array1 256 float 2;
-#X coords 0 1 255 -1 200 140 1;
-#X restore 631 130 graph;
-#X obj 376 273 tabwrite~ array1;
-#X obj 356 248 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 384 246 metro 500;
-#X obj 385 220 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
-1;
-#X obj 106 287 snd pd-stochastic.scm;
-#X obj 266 203 hsl 50 15 1 8 0 0 empty empty empty -2 -6 0 8 -262144
--1 -1 1600 1;
-#X obj 264 223 i;
-#X obj 267 75 hsl 50 15 0 8 0 0 empty empty empty -2 -6 0 8 -262144
--1 -1 0 1;
-#X obj 267 141 hsl 50 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
--1 -1 0 1;
-#N canvas 0 0 450 300 output 0;
-#X obj 367 134 t b;
-#X obj 362 85 f;
-#X obj 368 34 inlet;
-#X text 370 12 mute;
-#X obj 367 159 f;
-#X msg 455 152 0;
-#X msg 368 59 bang;
-#X obj 368 109 moses 1;
-#X obj 455 127 t b f;
-#X obj 427 91 moses 1;
-#X obj 144 131 dbtorms;
-#X obj 427 66 r master-lvl;
-#X obj 119 26 r master-lvl;
-#X obj 368 184 s master-lvl;
-#X obj 228 44 inlet;
-#X text 206 11 level;
-#X obj 213 111 s master-lvl;
-#X msg 132 49 set \$1;
-#X obj 132 73 outlet;
-#X msg 238 70 \; pd dsp 1;
-#X obj 171 176 line~;
-#X obj 116 209 *~;
-#X obj 75 235 dac~;
-#X obj 144 154 pack 0 50;
-#X text 82 152 audio;
-#X text 145 91 show level;
-#X obj 60 205 *~;
-#X obj 2 174 inlet~;
-#X obj 80 174 inlet~;
-#X connect 0 0 4 0;
-#X connect 1 0 7 0;
-#X connect 2 0 6 0;
-#X connect 4 0 13 0;
-#X connect 5 0 13 0;
-#X connect 6 0 1 0;
-#X connect 7 0 0 0;
-#X connect 7 1 8 0;
-#X connect 8 0 5 0;
-#X connect 9 1 4 1;
-#X connect 10 0 23 0;
-#X connect 11 0 1 1;
-#X connect 11 0 9 0;
-#X connect 12 0 10 0;
-#X connect 12 0 17 0;
-#X connect 14 0 16 0;
-#X connect 14 0 19 0;
-#X connect 17 0 18 0;
-#X connect 20 0 21 1;
-#X connect 20 0 26 1;
-#X connect 21 0 22 1;
-#X connect 23 0 20 0;
-#X connect 26 0 22 0;
-#X connect 27 0 26 0;
-#X connect 28 0 21 0;
-#X restore 240 321 pd output;
-#X floatatom 293 296 5 0 0 0 - - -;
-#X msg 341 295 mute;
-#X text 407 220 click to watch waveform;
-#X text 331 52 1 bring up output volume;
-#X text 331 74 2 sloowly bring up ywig value;
-#X text 333 142 3 play with other values;
-#X connect 0 0 12 0;
-#X connect 1 0 12 0;
-#X connect 2 0 12 0;
-#X connect 3 0 1 0;
-#X connect 4 0 2 0;
-#X connect 5 0 12 0;
-#X connect 6 0 5 0;
-#X connect 9 0 8 0;
-#X connect 10 0 8 0;
-#X connect 11 0 10 0;
-#X connect 12 1 8 0;
-#X connect 12 1 17 0;
-#X connect 12 1 17 1;
-#X connect 13 0 14 0;
-#X connect 14 0 4 0;
-#X connect 15 0 6 0;
-#X connect 16 0 3 0;
-#X connect 17 0 18 0;
-#X connect 18 0 17 2;
-#X connect 19 0 17 3;
-
diff --git a/snd-strings.h b/snd-strings.h
index 58f73e5..9fd4ba6 100644
--- a/snd-strings.h
+++ b/snd-strings.h
@@ -57,6 +57,7 @@
#define S_channel_amp_envs "channel-amp-envs"
#define S_channel_data "channel-data"
#define S_channel_properties "channel-properties"
+#define S_channel_property "channel-property"
#define S_channel_style "channel-style"
#define S_channel_to_vct "channel->vct"
#define S_channel_widgets "channel-widgets"
@@ -156,6 +157,7 @@
#define S_edit_list_to_function "edit-list->function"
#define S_edit_position "edit-position"
#define S_edit_properties "edit-properties"
+#define S_edit_property "edit-property"
#define S_edit_tree "edit-tree"
#define S_edits "edits"
#define S_env_channel "env-channel"
@@ -317,6 +319,7 @@
#define S_mark_hook "mark-hook"
#define S_mark_name "mark-name"
#define S_mark_properties "mark-properties"
+#define S_mark_property "mark-property"
#define S_mark_p "mark?"
#define S_mark_sample "mark-sample"
#define S_mark_sync "mark-sync"
@@ -347,6 +350,7 @@
#define S_mix_name "mix-name"
#define S_mix_position "mix-position"
#define S_mix_properties "mix-properties"
+#define S_mix_property "mix-property"
#define S_mix_region "mix-region"
#define S_mix_release_hook "mix-release-hook"
#define S_mix_sampler_p "mix-sampler?"
@@ -574,6 +578,7 @@
#define S_sound_loop_info "sound-loop-info"
#define S_sound_p "sound?"
#define S_sound_properties "sound-properties"
+#define S_sound_property "sound-property"
#define S_sound_widgets "sound-widgets"
#define S_sound_to_integer "sound->integer"
#define S_soundfont_info "soundfont-info"
diff --git a/snd-test.fs b/snd-test.fs
index 7661a09..0cbbe30 100644
--- a/snd-test.fs
+++ b/snd-test.fs
@@ -2,7 +2,7 @@
\ Translator/Author: Michael Scholz <mi-scholz@users.sourceforge.net>
\ Created: Sat Aug 05 00:09:28 CEST 2006
-\ Changed: Mon Dec 14 17:34:32 CET 2009
+\ Changed: Sat Feb 06 20:01:40 CET 2010
\ Commentary:
\
@@ -20,14 +20,46 @@
\ test 23: with-sound
\ test 28: errors
-lambda: <{ -- }> cr gc-stats cr .memory cr cr ; at-exit
-
#f value under-valgrind
24 set-object-print-length
+'snd-nogui provided? [unless]
+ \ Prints to Snd's listener and stdout/stderr.
+ :port-name "sndout"
+ :write-line lambda: <{ line -- }> line snd-print .stdout ;
+ make-soft-port set-*stdout* value stdout-io
+ :port-name "snderr"
+ :write-line lambda: <{ line -- }> line snd-print .stderr ;
+ make-soft-port set-*stderr* value stderr-io
+[then]
+
+\ Output words: not clm-print here if we want xterm output. That's
+\ why no clm-message which uses clm-print.
+
+\ SND-TEST-MESSAGE: Puts a comment sign before output and terminates with a carriage return
+: snd-test-message ( fmt args -- ) ." \ " fth-print cr ;
+
+\ SND-DISPLAY: Wraps text like snd-test-message and prepends text with
+\ current line number ("\ [0010] text\n").
+hide
+: (snd-display) { fmt args lno -- } $" \\ [%04d] %s\n" #( lno fmt args string-format ) fth-print ;
+set-current
+: snd-display ( --; fmt args -- ) postpone *lineno* postpone (snd-display) ; immediate
+previous
+
+\ lambda: <{ -- }> cr gc-stats cr .memory cr cr ; at-exit
+\ before-load-hook lambda: <{ fname -- f }> $" loading " fname $+ #f snd-test-message #t ; add-hook!
+
'snd-motif provided? 'xm provided? not && [if] dl-load libxm Init_libxm [then]
'snd-gtk provided? 'xg provided? not && [if] dl-load libxg Init_libxg [then]
+'snd-nogui provided? [if]
+ : x-bounds <{ :optional snd 0 chn 0 axis 0 -- }> #f ;
+ : y-bounds <{ :optional snd 0 chn 0 axis 0 -- }> #f ;
+ : set-x-bounds <{ bounds :optional snd 0 chn 0 axis 0 -- }> bounds ;
+ : set-y-bounds <{ bounds :optional snd 0 chn 0 axis 0 -- }> bounds ;
+[then]
+
require clm
require clm-ins
require examp
@@ -44,14 +76,13 @@ require dsp
[then]
[then]
+reset-all-hooks
+
nil value *arg1*
nil value *arg2*
nil value *prc*
nil value *tag*
-reset-all-hooks
-'snd-motif provided? 'snd-gtk provided? || value with-gui
-
\ If #t, prints additionals, e.g. function names in test-19 or proc-array lengths in test-28
#t value *snd-test-verbose*
@@ -82,26 +113,6 @@ let: ( -- )
*clm-search-list* file-pwd array-push to *clm-search-list*
-\ Snd stdout and Snd stderr going to the listener and to
-\ stdout/stderr.
-'snd-nogui provided? [unless]
- \ Prints at the same time to Snd's listener and stdout/stderr.
- :port-name "sndout"
- :write-line lambda: <{ line -- }> line snd-print .stdout ;
- make-soft-port set-*stdout* value stdout-io
- :port-name "snderr"
- :write-line lambda: <{ line -- }> line snd-print .stderr ;
- make-soft-port set-*stderr* value stderr-io
-[then]
-
-\ SND-DISPLAY: Wraps text like clm-message and prepends text with
-\ current line number ("\ [0010] text\n").
-hide
-: (snd-display) { fmt args lno -- msg } $" \\ [%04d] %s\n" #( lno fmt args format ) fth-print ;
-set-current
-: snd-display ( --; fmt args -- ) postpone *lineno* postpone (snd-display) ; immediate
-previous
-
: fneq-err ( r1 r2 err -- f ) -rot f- fabs f<= ;
: cneq-err ( c1 c2 err -- f )
{ c1 c2 err }
@@ -224,7 +235,7 @@ previous
{ xt }
xt xt->name { name }
test-numbers name 0 2 string-substring string->number array-member? if
- name #() clm-message
+ name #f snd-test-message
stack-reset
gc-run
make-timer { tm }
@@ -232,10 +243,10 @@ previous
tm stop-timer
stack-reset
sounds if
- $" open sounds: %s" #( #t short-file-name ) clm-message
+ $" open sounds: %s" #( #t short-file-name ) snd-test-message
sounds each ( snd ) close-sound drop end-each
then
- $" %s: %s\n\\ " #( name tm ) clm-message
+ $" %s: %s\n\\ " #( name tm ) snd-test-message
then
;
: start-snd-test ( -- )
@@ -257,17 +268,17 @@ previous
then { kind }
stack-reset
"test.snd" file-exists? if "test.snd" 0o644 file-chmod then
- $" === Snd version: %s (snd-%s)" #( snd-version kind ) clm-message
- $" === Fth version: %s" #( fth-version ) clm-message
- "" #() clm-message
- date #() clm-message
- "" #() clm-message
+ $" === Snd version: %s (snd-%s)" #( snd-version kind ) snd-test-message
+ $" === Fth version: %s" #( fth-version ) snd-test-message
+ "" #f snd-test-message
+ date #f snd-test-message
+ "" #f snd-test-message
default-file-buffer-size set-mus-file-buffer-size to *clm-file-buffer-size*
#f set-with-background-processes drop
#f set-trap-segfault drop
600 set-window-x drop
10 set-window-y drop
- #t show-listener drop
+ #t set-show-listener drop
reset-almost-all-hooks
22050 set-mus-srate f>s to *clm-srate*
stack-reset
@@ -277,15 +288,14 @@ previous
overall-start-time stop-timer
.stack
stack-reset
- #t show-listener drop
regions each ( r ) forget-region drop end-each
0 set-view-files-sort drop
clear-sincs drop
sounds if stop-playing drop then
reset-almost-all-hooks
- $" all done!" #() clm-message
- "" #() clm-message
- $" summary: %s" #( overall-start-time ) clm-message
+ $" all done!" #f snd-test-message
+ "" #f snd-test-message
+ $" summary: %s" #( overall-start-time ) snd-test-message
0 nil nil { file-count path file }
#( original-save-dir original-temp-dir "/tmp" ) each to path
path file-directory? if
@@ -297,9 +307,9 @@ previous
end-each
then
end-each
- "" #() clm-message
- $" %d files deleted" #( file-count ) clm-message
- "" #() clm-message
+ "" #f snd-test-message
+ $" %d files deleted" #( file-count ) snd-test-message
+ "" #f snd-test-message
"test.snd" file-exists? if "test.snd" 0o644 file-chmod then
#( "aaa.eps"
"envs.save"
@@ -353,6 +363,7 @@ previous
"o2_dvi.wave.snd"
"nist-shortpack.wav.snd"
"bad_data_format.snd.snd" ) each ( file ) sf-dir swap $+ file-delete end-each
+ #t set-show-listener drop
"test-forth.output" save-listener drop
original-prompt set-listener-prompt drop
;
@@ -539,14 +550,14 @@ previous
gen1 0.0 0.0 delay 0.25 fneq ||
gen1 0.0 0.0 delay 0.0 fneq ||
gen1 0.0 0.0 delay 0.0 fneq || if
- $" delay with list initial-contents confused" #() snd-display
+ $" delay with list initial-contents confused" #f snd-display
then
gen3 0.0 0.0 delay 1.0 fneq
gen3 0.0 0.0 delay 0.5 fneq ||
gen3 0.0 0.0 delay 0.25 fneq ||
gen3 0.0 0.0 delay 0.0 fneq ||
gen3 0.0 0.0 delay 0.0 fneq || if
- $" delay with vct initial-contents confused" #() snd-display
+ $" delay with vct initial-contents confused" #f snd-display
then
:size #f <'> make-delay #t nil fth-catch to res
stack-reset
@@ -595,8 +606,8 @@ previous
home-lst 1 array-ref { chn }
mix-id mix-amp { amp }
mix-id make-mix-sampler { mr }
- mr mix-sampler? unless $" %s is not mix-sampler?" mr snd-display then
- mr region-sampler? if $" mix-sampler: region %s?" mr snd-display then
+ mr mix-sampler? unless $" %s is not mix-sampler?" #( mr ) snd-display then
+ mr region-sampler? if $" mix-sampler: region %s?" #( mr ) snd-display then
mr sampler-position to res
res 0<> if $" mix sampler-position: %d?" #( res ) snd-display then
mr sampler-at-end? if $" mix sampler-at-end: %s?" #( mr ) snd-display then
@@ -658,12 +669,12 @@ previous
mix-id mix-speed to spd
mix-id mix-amp to amp
mix-id mix-tag-y { my }
- 200 pos <> if $" set-mix-position: %d?" pos snd-display then
- spd 2.0 fneq if $" set-mix-speed: %s?" spd snd-display then
- my 20 <> if $" set-mix-tag-y: %d?" my snd-display then
- amp 0.5 fneq if $" set-mix-amp: %s?" amp snd-display then
+ 200 pos <> if $" set-mix-position: %d?" #( pos ) snd-display then
+ spd 2.0 fneq if $" set-mix-speed: %s?" #( spd ) snd-display then
+ my 20 <> if $" set-mix-tag-y: %d?" #( my ) snd-display then
+ amp 0.5 fneq if $" set-mix-amp: %s?" #( amp ) snd-display then
mix-id mix-amp-env to res
- res #( 0.0 0.0 1.0 1.0 ) array= unless $" set-mix-amp-env: %s?" res snd-display then
+ res #( 0.0 0.0 1.0 1.0 ) array= unless $" set-mix-amp-env: %s?" #( res ) snd-display then
\
3 0.1 make-vct 100 #f #f #t "" mix-vct drop
0 set-cursor drop
@@ -715,10 +726,10 @@ previous
\
"oboe.snd" 100 mix car to mix-id
40 set-mix-waveform-height drop
- mix-id 'hiho 123 set-mix-property
- mix-id 'hiho mix-property to res
+ 'hiho mix-id 123 set-mix-property
+ 'hiho mix-id mix-property to res
res 123 <> if $" mix-property: %s?" #( res ) snd-display then
- mix-id 'not-here mix-property to res
+ 'not-here mix-id mix-property to res
res if $" mix-property not-here: %s?" #( res ) snd-display then
#f #f update-time-graph drop
20 set-mix-waveform-height drop
@@ -1530,7 +1541,7 @@ lambda: <{ x -- y }> pi random ; value random-pi-addr
vals 0 array-ref to func1
vals 1 array-ref to descr
vals 2 array-ref to name
- *clm-debug* if name #() clm-message then
+ *clm-debug* if name #f snd-test-message then
func1 #() run-proc drop
ind #f undef undef edit-list->function to func
func proc-source-ref descr string<> if
@@ -1545,7 +1556,7 @@ lambda: <{ x -- y }> pi random ; value random-pi-addr
;
\ ====== test 23: with-sound
-: test23-notehook { ins start dur -- } $" %14s: %5.2f %5.2f" #( ins start dur ) clm-message ;
+: test23-notehook { ins start dur -- } $" %14s: %5.2f %5.2f" #( ins start dur ) snd-test-message ;
: test23-balance ( -- )
make-rmsgain { rg }
40 make-rmsgain { rg1 }
@@ -1972,7 +1983,8 @@ include bird.fsm
<'> axis-info <'> c-g? <'> apply-controls <'> change-samples-with-origin
<'> channel-style <'> channels <'> chans <'> close-sound
<'> comment <'> contrast-control <'> contrast-control-amp <'> contrast-control?
- <'> convolve-selection-with <'> convolve-with <'> channel-properties <'> amp-control-bounds
+ <'> convolve-selection-with <'> convolve-with <'> channel-properties <'> channel-property
+ <'> amp-control-bounds
<'> speed-control-bounds <'> expand-control-bounds <'> contrast-control-bounds
<'> reverb-control-length-bounds
<'> reverb-control-scale-bounds <'> cursor-update-interval <'> cursor-location-offset
@@ -2003,12 +2015,14 @@ include bird.fsm
<'> just-sounds <'> left-sample <'> listener-prompt
<'> make-mix-sampler <'> make-player <'> make-region <'> make-region-sampler
<'> make-sampler <'> map-chan
- <'> mark-name <'> mark-sample <'> mark-sync <'> mark-sync-max
+ <'> mark-name <'> mark-properties <'> mark-property
+ <'> mark-sample <'> mark-sync <'> mark-sync-max
<'> mark-home <'> marks <'> mark? <'> max-transform-peaks
<'> max-regions <'> maxamp <'> maxamp-position
<'> minibuffer-history-length <'> min-dB <'> log-freq-start <'> mix
<'> mixes <'> mix-amp <'> mix-amp-env <'> mix-length
- <'> mix? <'> mix-position <'> mix-name <'> mix-region <'> mix-sampler?
+ <'> mix? <'> mix-position <'> mix-properties <'> mix-property
+ <'> mix-name <'> mix-region <'> mix-sampler?
<'> mix-selection <'> mix-sound <'> mix-home <'> mix-speed
<'> mix-tag-height <'> mix-tag-width <'> mark-tag-height <'> mark-tag-width
<'> mix-tag-y <'> mix-vct <'> mix-waveform-height <'> time-graph-style
@@ -2038,7 +2052,7 @@ include bird.fsm
<'> selected-sound <'> selection-position <'> selection-creates-region
<'> selection-frames <'> selection-member? <'> selection? <'> short-file-name
<'> show-axes <'> show-controls <'> show-transform-peaks
- <'> show-indices <'> show-listener <'> show-marks <'> show-mix-waveforms
+ <'> show-indices <'> show-marks <'> show-mix-waveforms
<'> show-selection-transform <'> show-y-zero <'> sinc-width <'> show-grid
<'> show-sonogram-cursor <'> grid-density <'> smooth-sound <'> smooth-selection
<'> snd-print <'> snd-spectrum <'> snd-tempnam <'> snd-version
@@ -2049,7 +2063,7 @@ include bird.fsm
<'> speed-control-style <'> speed-control-tones <'> squelch-update <'> srate
<'> src-sound <'> src-selection <'> start-progress-report <'> stop-player
<'> stop-playing <'> swap-channels <'> syncd-marks <'> sync
- <'> sync-max <'> sound-properties <'> temp-dir <'> region-sampler?
+ <'> sync-max <'> sound-properties <'> sound-property <'> temp-dir <'> region-sampler?
<'> transform-sample <'> transform->vct <'> transform-frames <'> transform-type
<'> trap-segfault <'> with-file-monitor <'> optimization
<'> undo <'> update-transform-graph <'> update-time-graph <'> update-lisp-graph
@@ -2140,7 +2154,7 @@ include bird.fsm
<'> scan-channel <'> reverse-channel <'> seconds->samples
<'> samples->seconds <'> smooth-channel <'> vct->channel <'> channel->vct
<'> src-channel <'> scale-channel <'> ramp-channel <'> pad-channel
- <'> normalize-channel <'> cursor-position <'> clear-listener <'> mus-sound-prune
+ <'> normalize-channel <'> cursor-position <'> show-listener <'> mus-sound-prune
<'> mus-sound-forget <'> xramp-channel <'> ptree-channel <'> snd->sample
<'> snd->sample? <'> make-snd->sample <'> make-scalar-mixer <'> beats-per-minute
<'> beats-per-measure <'> channel-amp-envs <'> convolve-files <'> filter-control-coeffs
@@ -2167,7 +2181,7 @@ include bird.fsm
<'> reverb-control-length-bounds <'> reverb-control-scale-bounds <'> cursor-update-interval
<'> cursor-location-offset
<'> contrast-control? <'> auto-update-interval <'> cursor
- <'> channel-properties <'> with-tracking-cursor <'> cursor-size
+ <'> channel-properties <'> channel-property <'> with-tracking-cursor <'> cursor-size
<'> cursor-style <'> tracking-cursor-style <'> dac-combines-channels <'> dac-size
<'> clipping <'> default-output-chans <'> default-output-data-format
<'> default-output-srate <'> default-output-header-type <'> dot-size <'> enved-envelope
@@ -2181,9 +2195,11 @@ include bird.fsm
<'> enved-filter-order <'> enved-filter <'> filter-control-in-hz <'> filter-control-order
<'> filter-control? <'> graph-cursor <'> graph-style <'> lisp-graph? <'> graphs-horizontal
<'> just-sounds <'> left-sample <'> listener-prompt
- <'> mark-name <'> mark-sample <'> mark-sync <'> max-transform-peaks
+ <'> mark-name <'> mark-properties <'> mark-property
+ <'> mark-sample <'> mark-sync <'> max-transform-peaks
<'> min-dB <'> log-freq-start <'> mix-amp
- <'> mix-amp-env <'> mix-name <'> mix-position <'> mix-speed <'> mix-tag-height <'> mix-tag-width
+ <'> mix-amp-env <'> mix-name <'> mix-position <'> mix-properties <'> mix-property
+ <'> mix-speed <'> mix-tag-height <'> mix-tag-width
<'> mix-tag-y <'> mark-tag-width <'> mark-tag-height <'> mix-waveform-height
<'> transform-normalization
<'> view-files-sort <'> print-length <'> view-files-amp
@@ -2195,12 +2211,12 @@ include bird.fsm
<'> save-dir <'> save-state-file
<'> selection-creates-region <'> show-axes
<'> show-controls <'> show-transform-peaks <'> show-indices <'> show-marks
- <'> show-mix-waveforms <'> show-selection-transform <'> show-listener <'> show-y-zero
+ <'> show-mix-waveforms <'> show-selection-transform <'> show-y-zero
<'> show-grid <'> show-sonogram-cursor <'> sinc-width <'> spectrum-end
<'> spectro-hop <'> spectrum-start <'> spectro-x-angle <'> grid-density
<'> spectro-x-scale <'> spectro-y-angle <'> spectro-y-scale <'> spectro-z-angle
<'> spectro-z-scale <'> speed-control <'> speed-control-style <'> speed-control-tones
- <'> squelch-update <'> sync <'> sound-properties <'> temp-dir
+ <'> squelch-update <'> sync <'> sound-properties <'> sound-property <'> temp-dir
<'> y-bounds <'> transform-type
<'> trap-segfault <'> with-file-monitor <'> optimization <'> with-verbose-cursor
<'> wavelet-type <'> x-bounds
@@ -2338,7 +2354,8 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
<'> reverb-control-lowpass <'> reverb-control-scale <'> reverb-control? <'> save-controls
<'> select-sound <'> short-file-name <'> sound-loop-info <'> speed-control
<'> speed-control-style <'> speed-control-tones <'> srate <'> channel-style
- <'> start-progress-report <'> sync <'> sound-properties <'> swap-channels ) { prcs-1 }
+ <'> start-progress-report <'> sync <'> sound-properties <'> sound-property
+ <'> swap-channels ) { prcs-1 }
prcs-1 each to prc
123 prc #t nil fth-catch to tag
stack-reset
@@ -2355,7 +2372,8 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
arg prc #t nil fth-catch to tag
stack-reset
tag if
- tag car 'wrong-type-arg =
+ tag car 'no-such-sound =
+ tag car 'wrong-type-arg = ||
tag car 'mus-error = || unless
$" snd wrong-type-arg %s: %s (%s)" #( prc tag arg ) snd-display
then
@@ -2601,7 +2619,7 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
$" bad file mus-sound %s: %s" #( prc tag ) snd-display
then
end-each
- #( <'> count-matches <'> cursor <'> channel-properties
+ #( <'> count-matches <'> cursor <'> channel-properties <'> channel-property
<'> with-tracking-cursor <'> cursor-position <'> cursor-size <'> cursor-style
<'> tracking-cursor-style <'> delete-sample <'> display-edits <'> dot-size
<'> edit-fragment <'> edit-position
@@ -2641,7 +2659,7 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
$" chn (no chn) procs %s: %s" #( prc tag ) snd-display
then
end-each
- #( <'> cursor <'> with-tracking-cursor <'> channel-properties
+ #( <'> cursor <'> with-tracking-cursor <'> channel-properties <'> channel-property
<'> cursor-position <'> cursor-size <'> cursor-style <'> tracking-cursor-style
<'> delete-sample <'> display-edits <'> dot-size <'> edit-fragment
<'> edit-position <'> edit-tree <'> edits <'> env-sound
@@ -2710,12 +2728,14 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
<'> update-time-graph <'> update-lisp-graph <'> wavelet-type <'> time-graph?
<'> time-graph-type <'> wavo-hop <'> wavo-trace <'> x-bounds
<'> x-position-slider <'> x-axis-label <'> x-zoom-slider <'> y-bounds
- <'> y-position-slider <'> y-zoom-slider <'> zero-pad <'> channel-properties ) each to prc
+ <'> y-position-slider <'> y-zoom-slider <'> zero-pad
+ <'> channel-properties <'> channel-property ) each to prc
ind 1234 prc #t nil fth-catch to tag
stack-reset
tag if
- tag car 'no-such-channel = unless
- $" chn procs %s: %s" #( prc tag ) snd-display
+ tag car 'no-such-sound =
+ tag car 'no-such-channel = || unless
+ $" chn (2) procs %s: %s" #( prc tag ) snd-display
then
then
end-each
@@ -2725,7 +2745,8 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
vct-5 ind 0 prc set-xt #t nil fth-catch to tag
stack-reset
tag if
- tag car 'wrong-type-arg = unless
+ tag car 'no-such-sound =
+ tag car 'wrong-type-arg = || unless
$" set chn procs %s: %s" #( prc tag ) snd-display
then
then
@@ -2832,7 +2853,7 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
<'> ladspa-dir <'> peak-env-dir <'> save-dir
<'> save-state-file <'> selected-channel
<'> selected-sound <'> selection-creates-region <'> show-controls
- <'> show-indices <'> show-listener <'> show-selection-transform <'> sinc-width
+ <'> show-indices <'> show-selection-transform <'> sinc-width
<'> temp-dir <'> trap-segfault
<'> with-file-monitor <'> optimization <'> with-verbose-cursor
<'> window-height <'> beats-per-measure
@@ -3125,7 +3146,6 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
<'> make-delay 'out-of-range check-error-tag
:size 100 :wave 3 0 make-vct <'> make-table-lookup 'out-of-range check-error-tag
:size 100 :wave 3 0 make-vct <'> make-wave-train 'out-of-range check-error-tag
- :max-size 2 30 f** f>s <'> make-granulate 'out-of-range check-error-tag
100 12345678 <'> make-ssb-am 'out-of-range check-error-tag
:envelope #( 0 0 1 1 ) :distribution 10 0 make-vct <'> make-rand 'mus-error check-error-tag
:envelope #( 0 0 1 ) <'> make-rand 'mus-error check-error-tag
@@ -3147,7 +3167,6 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
2 0.1 0.2 make-frame 3 <'> frame-ref 'mus-error check-error-tag
0 0.1 <'> make-scalar-mixer 'out-of-range check-error-tag
2 make-mixer 3 4 <'> mixer-ref 'mus-error check-error-tag
- :fft-size 2 30 f** f>s <'> make-phase-vocoder 'out-of-range check-error-tag
:input <'> noop 1 make-proc make-src 2000000.0 <'> src 'out-of-range check-error-tag
#( 1 1 ) -1 <'> partials->polynomial 'out-of-range check-error-tag
#( 1 1 ) 3 <'> partials->polynomial 'out-of-range check-error-tag
@@ -3348,22 +3367,22 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
then
ind sound? if $" edpos proc clobbers chan??: %s" #( ind ) snd-display then
*snd-test-verbose* if
- $" procs prcs/set-prcs" #() clm-message
- $" =====================" #() clm-message
- $" procs00: %3d/%3d" #( procs00 length set-procs00 length ) clm-message
- $" procs01: %3d/%3d" #( procs01 length set-procs01 length ) clm-message
- $" procs02: %3d/%3d" #( procs02 length set-procs02 length ) clm-message
- $" procs03: %3d/%3d" #( procs03 length set-procs03 length ) clm-message
- $" procs04: %3d/%3d" #( procs04 length set-procs04 length ) clm-message
- $" procs05: %3d" #( procs05 length ) clm-message
- $" procs06: %3d" #( procs06 length ) clm-message
- $" procs07: %3d" #( procs07 length ) clm-message
- $" procs08: %3d" #( procs08 length ) clm-message
- $" procs10: %3d" #( procs10 length ) clm-message
+ $" procs prcs/set-prcs" #f snd-test-message
+ $" =====================" #f snd-test-message
+ $" procs00: %3d/%3d" #( procs00 length set-procs00 length ) snd-test-message
+ $" procs01: %3d/%3d" #( procs01 length set-procs01 length ) snd-test-message
+ $" procs02: %3d/%3d" #( procs02 length set-procs02 length ) snd-test-message
+ $" procs03: %3d/%3d" #( procs03 length set-procs03 length ) snd-test-message
+ $" procs04: %3d/%3d" #( procs04 length set-procs04 length ) snd-test-message
+ $" procs05: %3d" #( procs05 length ) snd-test-message
+ $" procs06: %3d" #( procs06 length ) snd-test-message
+ $" procs07: %3d" #( procs07 length ) snd-test-message
+ $" procs08: %3d" #( procs08 length ) snd-test-message
+ $" procs10: %3d" #( procs10 length ) snd-test-message
then
#( 1.5 "/hiho" #( 0 1 ) 1234 vct-3 :wave -1 0 1 #f #t '() vector-0 12345678901234567890 ) { vals }
nil nil nil nil nil nil nil { arg1 arg2 arg3 arg4 tm prc tag }
- "keyargs-2-args" #() clm-message
+ "keyargs-2-args" #f snd-test-message
keyargs each to arg1
vals each to arg2
make-procs each to prc
@@ -3372,7 +3391,7 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
end-each
end-each
all-args if
- "keyargs-3-args" #() clm-message
+ "keyargs-3-args" #f snd-test-message
vals each to arg1
keyargs each to arg2
vals each to arg3
@@ -3382,7 +3401,7 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
end-each
end-each
end-each
- "keyargs-4-args" #() clm-message
+ "keyargs-4-args" #f snd-test-message
keyargs each to arg1
vals each to arg2
keyargs each to arg3
@@ -3396,7 +3415,7 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
end-each
then
\ 0 args
- "0-args" #() clm-message
+ "0-args" #f snd-test-message
procs00 each to prc
prc #t nil fth-catch to tag
stack-reset
@@ -3415,7 +3434,7 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
-1 0 1 #f #t #() 12345678901234567890 ) { fewer-args }
all-args if main-args else few-args then { less-args }
\ 1 arg
- "1-arg" #() clm-message
+ "1-arg" #f snd-test-message
nil { arg }
main-args each to arg
procs01 each to prc
@@ -3429,7 +3448,7 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
cr \ CR here because string "/hiho" appears on stdout
\ (or all args with snd-nogui)
\ 2 args
- "2-args" #() clm-message
+ "2-args" #f snd-test-message
main-args each to arg1
main-args each to arg2
procs02 each to prc
@@ -3442,7 +3461,7 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
end-each
end-each
\ set! no args
- "set-no-args" #() clm-message
+ "set-no-args" #f snd-test-message
main-args each to arg
set-procs00 each to prc
arg prc set-xt #t nil fth-catch to tag
@@ -3454,7 +3473,7 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
end-each
dismiss-all-dialogs
\ set! 1 arg
- "set-1-arg" #() clm-message
+ "set-1-arg" #f snd-test-message
main-args each to arg1
main-args each to arg2
set-procs01 each to prc
@@ -3470,7 +3489,7 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
end-each
all-args if
\ set! 2 args
- "set-2-args" #() clm-message
+ "set-2-args" #f snd-test-message
less-args each to arg1
less-args each to arg2
less-args each to arg3
@@ -3486,7 +3505,7 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
end-each
nil nil nil nil nil nil { arg5 arg6 arg7 arg8 arg9 arg0 }
\ 3 args
- "3-args" #() clm-message
+ "3-args" #f snd-test-message
make-timer to tm
less-args each to arg1
less-args each to arg2
@@ -3502,9 +3521,9 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
end-each
end-each
tm stop-timer
- "%s" #( tm ) clm-message
+ "%s" #( tm ) snd-test-message
\ set! 3 args
- "set!-3-args" #() clm-message
+ "set!-3-args" #f snd-test-message
tm start-timer
less-args each to arg1
less-args each to arg2
@@ -3522,9 +3541,9 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
end-each
end-each
tm stop-timer
- "%s" #( tm ) clm-message
+ "%s" #( tm ) snd-test-message
\ 4 args
- "4-args" #() clm-message
+ "4-args" #f snd-test-message
tm start-timer
few-args each to arg1
few-args each to arg2
@@ -3542,9 +3561,9 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
end-each
end-each
tm stop-timer
- "%s" #( tm ) clm-message
+ "%s" #( tm ) snd-test-message
\ set! 4 args
- "set!-4-args" #() clm-message
+ "set!-4-args" #f snd-test-message
tm start-timer
few-args each to arg1
few-args each to arg2
@@ -3567,9 +3586,9 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
clear-sincs drop
stop-playing drop
tm stop-timer
- "%s" #( tm ) clm-message
+ "%s" #( tm ) snd-test-message
\ 5 args
- "5-args" #() clm-message
+ "5-args" #f snd-test-message
tm start-timer
fewer-args each to arg1
fewer-args each to arg2
@@ -3591,9 +3610,9 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
end-each
clear-sincs drop
tm stop-timer
- "%s" #( tm ) clm-message
+ "%s" #( tm ) snd-test-message
\ 6 args
- "6-args" #() clm-message
+ "6-args" #f snd-test-message
tm start-timer
#( 1.5 "/hiho" -1234 #f #t vct-5 ) each to arg1
#( 1.5 -1234 vct-3 vct-5 -1 0 #f #t ) each to arg2
@@ -3616,9 +3635,9 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
end-each
end-each
tm stop-timer
- "%s" #( tm ) clm-message
+ "%s" #( tm ) snd-test-message
\ 8 args
- "8-args" #() clm-message
+ "8-args" #f snd-test-message
tm start-timer
#( 1.5 -1 1234 #f #() ) each to arg1
#( "/hiho" -1 1234 #() vct-5 ) each to arg2
@@ -3645,9 +3664,9 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
end-each
end-each
tm stop-timer
- "%s" #( tm ) clm-message
+ "%s" #( tm ) snd-test-message
\ 10 args
- "10-args" #() clm-message
+ "10-args" #f snd-test-message
tm start-timer
#( 1.5 -1 #f 1234 ) each to arg1
#( "/hiho" -1 1234 ) each to arg2
@@ -3681,7 +3700,7 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
end-each
clear-sincs drop
tm stop-timer
- "%s" #( tm ) clm-message
+ "%s" #( tm ) snd-test-message
then
;
@@ -3705,33 +3724,33 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
make-timer { tm }
clear-sincs drop
tm stop-timer
- "%s" #( tm ) clm-message
+ "%s" #( tm ) snd-test-message
;
SIGSEGV lambda: { sig -- }
stack-reset
backtrace
- "" #() clm-message
- $" Segmentation fault (signal no %d)" #( sig ) clm-message
- "" #() clm-message
+ "" #f snd-test-message
+ $" Segmentation fault (signal no %d)" #( sig ) snd-test-message
+ "" #f snd-test-message
finish-snd-test
2 snd-exit drop
; signal drop
SIGILL lambda: { sig -- }
stack-reset
backtrace
- "" #() clm-message
- $" Illegal instruction (signal no %d)" #( sig ) clm-message
- "" #() clm-message
+ "" #f snd-test-message
+ $" Illegal instruction (signal no %d)" #( sig ) snd-test-message
+ "" #f snd-test-message
finish-snd-test
2 snd-exit drop
; signal drop
SIGINT lambda: { sig -- }
stack-reset
backtrace
- "" #() clm-message
- $" Interrupt received. Clean up %S." #( *filename* #f file-basename ) clm-message
- "" #() clm-message
+ "" #f snd-test-message
+ $" Interrupt received. Clean up %S." #( *filename* #f file-basename ) snd-test-message
+ "" #f snd-test-message
finish-snd-test
0 snd-exit drop
; signal drop
diff --git a/snd-test.rb b/snd-test.rb
index 3713f77..517ff3a 100644
--- a/snd-test.rb
+++ b/snd-test.rb
@@ -3,7 +3,7 @@
# Commentary:
#
# Tested with:
-# ruby 1.8.7 (2009-04-08 patchlevel 160)
+# ruby 1.8.7 (2009-12-24 patchlevel 248)
# ruby 1.9.1p129 (2009-05-12 revision 23412)
#
@@ -18,15 +18,15 @@ $VERBOSE = true
$DEBUG = false
$ERROR_AND_EXIT = false
-ENV["TMPDIR"] = "/usr/gnu/tmp"
-$original_save_dir = set_save_dir("/usr/gnu/tmp")
-$original_temp_dir = set_temp_dir("/usr/gnu/tmp")
+ENV["TMPDIR"] = "/usr/opt/tmp"
+$original_save_dir = set_save_dir("/usr/opt/tmp")
+$original_temp_dir = set_temp_dir("/usr/opt/tmp")
set_with_gl(false)
# $with_exit = false
# $with_backtrace = true
-$sf_dir = "/usr/gnu/sound/sf1/"
-$bigger_snd = "/usr/gnu/sound/SFiles/bigger.snd"
+$sf_dir = "/usr/opt/sound/sf1/"
+$bigger_snd = "/usr/opt/sound/SFiles/bigger.snd"
# $with_big_file = true
=end
@@ -575,7 +575,7 @@ def snd_error_test
end
snd_error_test
-show_listener
+set_show_listener(true)
set_window_x(600)
set_window_y(10)
@@ -642,10 +642,10 @@ def finish_snd_test
$timings.each do |tst| snd_info("test %2d %s", tst.first, tst.last.inspect) end
end
snd_info("total %s\n", $overall_start_time.inspect)
- show_listener
+ set_show_listener(true)
save_listener("test-ruby.output")
clear_listener
- show_listener
+ set_show_listener(true)
fs = 0
[$original_save_dir, $original_temp_dir, "/tmp"].each do |path|
if File.exist?(path)
@@ -750,6 +750,12 @@ unless hook? $after_test_hook
snd_display("$after_test_hook not a hook: %s?", $after_test_hook.inspect)
end
+def snd_test_exit(test = 0)
+ $after_test_hook.call(test)
+ finish_snd_test
+ exit(0)
+end
+
snd_info("=== Snd version: %s", snd_version)
snd_info("=== Ruby version: %s (%s) [%s]", RUBY_VERSION, RUBY_RELEASE_DATE, RUBY_PLATFORM)
snd_info
@@ -1271,6 +1277,7 @@ def test00
[:clipping, false],
[:clipping, false],
[:clm_table_size, 512],
+ [:clm_default_frequency, 0.0],
[:color_cutoff, 0.003],
[:color_inverted, true],
[:color_scale, 1.0],
@@ -1366,11 +1373,13 @@ def test00
[:transform_normalization, Normalize_by_channel],
[:transform_size, 512],
[:transform_type, $fourier_transform],
- [:trap_segfault, true], # snd/snd-0.h says: true (snd-test.scm: false)
+ [:trap_segfault, true],
[:wavelet_type, 0],
[:wavo_hop, 3],
[:wavo_trace, 64],
- [:with_file_monitor, true], # snd/snd-0.h says: true (snd-test.scm: false)
+ [:with_file_monitor, true],
+ [:with_inset_graph, false],
+ [:with_pointer_focus, false],
[:with_verbose_cursor, false],
[:x_axis_style, 0],
[:zero_pad, 0],
@@ -1585,6 +1594,8 @@ def test01
[:wavelet_type, 0],
[:wavo_hop, 3],
[:wavo_trace, 64],
+ [:with_inset_graph, false],
+ [:with_pointer_focus, false],
[:with_mix_tags, (provided?(:snd_nogui) ? false : true)],
[:with_relative_panes, true],
[:with_verbose_cursor, false],
@@ -2440,6 +2451,7 @@ def test044
snd_display("file_write_date oboe.snd: %s?", res)
end
play_sound_1(oboe_snd)
+ mus_sound_forget(oboe_snd)
lasth = 1
until mus_header_type_name(lasth) == "unsupported" do lasth += 1 end
if lasth < 50
@@ -2854,7 +2866,7 @@ def test064
if fneq(res = sound_data_peak(sd), mx.car)
snd_display("sound_data_peak oboe.snd: %s %s?", res, mx)
end
- if (res = Snd.catch do set_selected_channel(1) end).first != :no_such_channel
+ if (res = Snd.catch do set_selected_channel(ob, 1) end).first != :no_such_channel
snd_display("set_selected_channel bad chan: %s?", res)
end
if (res = Snd.catch do set_selected_channel(123456, 1) end).first != :no_such_sound
@@ -3508,14 +3520,12 @@ def test104
"audio format not available",
"no audio input available",
"audio configuration not available",
- "no audio lines available",
"audio write error",
"audio size not available",
"audio device not available",
"can't close audio",
"can't open audio",
"audio read error",
- "audio amp not available",
"can't write audio",
"can't read audio",
"no audio read permission",
@@ -19990,11 +20000,11 @@ def test009
#
mix_id = mix("oboe.snd", 100).car
set_mix_waveform_height(40)
- set_mix_property(mix_id, :hiho, 123)
- if (res = mix_property(mix_id, :hiho)) != 123
+ set_mix_property(:hiho, mix_id, 123)
+ if (res = mix_property(:hiho, mix_id)) != 123
snd_display("mix_property (123): %s?", res)
end
- if (res = mix_property(mix_id, :not_there))
+ if (res = mix_property(:not_there, mix_id))
snd_display("mix_not_property: %s?", res)
end
update_time_graph
@@ -20726,11 +20736,11 @@ def test0110
sync_val = mark_sync_max + 1
snd_display("mark?") unless mark?(m1)
snd_display("add_mark: %s?", mark_sample(m1)) if mark_sample(m1) != 123
- set_mark_property(m1, :hiho, 123)
- if (res = mark_property(m1, :hiho)) != 123
+ set_mark_property(:hiho, m1, 123)
+ if (res = mark_property(:hiho, m1)) != 123
snd_display("mark_property: %s?", res)
end
- if (res = mark_property(m1, :not_there))
+ if (res = mark_property(:not_there, m1))
snd_display("mark_not_property: %s?", res)
end
if (res = Snd.catch do mark_sample(integer2mark(12345678)) end).first != :no_such_mark
@@ -21889,14 +21899,14 @@ def test12
# mix reader
#
save_md = 0
- mix_click_sets_amp
+ $mix_click_hook.add_hook!("mix-click-sets-amp") do |id| mix_click_sets_amp(id) end
ind = open_sound("oboe.snd")
- reg = make_region(1000, 2000, ind, 0, 0)
- md = mix_region(reg, 0, ind, 0).car
+ reg = make_region(1000, 2000, ind, 0)
+ md = mix_region(reg, 0, ind, 0, 0).car
rd = make_mix_sampler(md)
- set_mix_property(md, :hi, "hi")
+ set_mix_property(:hi, md, "hi")
save_md = md
- if (res = mix_property(md, :hi)) != "hi"
+ if (res = mix_property(:hi, md)) != "hi"
snd_display("mix_property (hi): %s?", res)
end
val = rd.call
@@ -21905,7 +21915,7 @@ def test12
snd_display("mix_sampler: %s?", res)
end
close_sound(ind)
- if (res = Snd.catch do mix_property(md, :hi) end).first != :no_such_mix
+ if (res = Snd.catch do mix_property(:hi, md) end).first != :no_such_mix
snd_display("mix_property bad mix: %s", res.inspect)
end
if (res = rd.to_s) != "#<mix-sampler: inactive>"
@@ -22440,25 +22450,6 @@ def test0113
end
close_sound(ind)
$open_raw_sound_hook.reset_hook!
- #
- $during_open_hook.reset_hook!
- ind = open_sound("oboe.snd")
- mx0 = maxamp(ind)
- save_sound_as("test.snd", ind, Mus_next, Mus_bfloat)
- close_sound(ind)
- $during_open_hook.add_hook!("snd-test") do |fd, name, reason|
- case mus_sound_data_format(name)
- when Mus_bfloat, Mus_bdouble, Mus_lfloat, Mus_ldouble
- set_mus_file_prescaler(fd, 4.0)
- else
- snd_display("not set_mus_file_prescaler (data_format: %s)",
- mus_data_format_name(mus_sound_data_format(name)))
- end
- end
- ind1 = open_sound("test.snd")
- mx1 = maxamp(ind1)
- snd_display("set_mus_file_prescaler: %s -> %s (%s)?", mx0, mx1, mx1 / mx0) if fneq(mx1, mx0 * 4.0)
- close_sound(ind1)
$during_open_hook.reset_hook!
#
ind = op = sl = aop = dop = cl = ig = scl = other = false
@@ -22638,7 +22629,7 @@ def test0113
set_selection_creates_region(true)
$stop_playing_selection_hook.add_hook!("snd-test") do | | ss = true end
reg = select_all
- play(selected_sound, :wait, true)
+ play(selection, :wait, true)
play(reg, :wait, true)
snd_display("$stop_playing_selection_hook not called?") unless ss
$stop_playing_selection_hook.reset_hook!
@@ -23203,16 +23194,26 @@ def test_panel(func)
val1 = Snd.sounds.apply(:snd_func, func)
val2 = Snd.sounds.reverse.apply(:snd_func, func)
if (not vequal(val, val1)) and (not vequal(val, val2))
- snd_display("%s %s:\n# %s\n# %s\n# %s?", get_func_name, func, val, val1, val2)
+ snd_display("%s %s:\n\t%s\n\t%s\n\t%s?", get_func_name, func, val, val1, val2)
+ end
+end
+
+def all_chans_zipped_reverse
+ new_list = []
+ Snd.sounds.reverse.each do |snd|
+ channels(snd).times do |chn|
+ new_list.push([snd, chn])
+ end
end
+ new_list
end
def test_channel(func)
- func_val = snd_func(func, true, true).flatten
- func_val1 = all_chans_zipped.apply(:snd_func, func)
- func_val2 = all_chans_zipped.reverse.apply(:snd_func, func)
- if (func_val != func_val1) and (func_val != func_val2)
- snd_display("%s %s:\n\t%s\n\t%s\n\t%s?", get_func_name, func, func_val, func_val1, func_val2)
+ val = snd_func(func, true, true).flatten
+ val1 = all_chans_zipped.map do |snd, chn| snd_func(func, snd, chn) end.flatten
+ val2 = all_chans_zipped_reverse.map do |snd, chn| snd_func(func, snd, chn) end.flatten
+ if (not val.eql?(val1)) and (not val.eql?(val2))
+ snd_display("%s %s:\n\t%s\n\t%s\n\t%s?", get_func_name, func, val, val1, val2)
end
end
@@ -24658,7 +24659,7 @@ def test0115
prefix_it(1000, id)
key(key_to_int(?x), 4, id)
key(key_to_int(?b), 4, id)
- if (left = left_sample(id)) != 1000 and left != 1001 then snd_display("u1000: %s?", left) end
+ if (left = left_sample(id)) != 0 then snd_display("u1000: %s?", left) end
prefix_it(0, id)
key(key_to_int(?x), 4, id)
key(key_to_int(?b), 4, id)
@@ -24676,12 +24677,6 @@ def test0115
prefix_it(1, id)
key(key_to_int(?f), 4, id)
if (cr = cursor(id)) != 1235 then snd_display("1f: %s?", cr) end
- key(key_to_int(?+), 4, id)
- key(key_to_int(?f), 4, id)
- if (cr = cursor(id)) != 1236 then snd_display("+f: %s?", cr) end
- key(key_to_int(?-), 4, id)
- key(key_to_int(?f), 4, id)
- if (cr = cursor(id)) != 1235 then snd_display("-f: %s?", cr) end
prefix_it(1000, id)
key(key_to_int(?x), 4, id)
key(key_to_int(?p), 4, id)
@@ -25297,10 +25292,6 @@ def test0315
if (res = cursor(ind, 1)) != 1000
snd_display("syncd cursors: %s %s?", cursor(ind, 0), res)
end
- key(key_to_int(?f), 4)
- if (res = cursor(ind, 1)) != 1001
- snd_display("syncd cursors C-f: %s %s?", cursor(ind, 0), res)
- end
close_sound(ind)
#
ind = open_sound("oboe.snd")
@@ -25416,7 +25407,7 @@ def test0315
if selected_sound != a4
snd_display("set_selected_sound: %s %s?", selected_sound, a4)
end
- set_selected_channel(2)
+ set_selected_channel(a4, 2)
if selected_channel != 2
snd_display("set_selected_channel a4: %s?", selected_channel(a4))
end
@@ -32462,19 +32453,23 @@ def test0121
end
def test0221
- remember_sound_state
+ remember_sound_state(3)
ind = open_sound("oboe.snd")
set_transform_graph?(true, ind, 0)
set_show_transform_peaks(true, ind, 0)
set_show_y_zero(true, ind, 0)
close_sound(ind)
ind = open_sound("oboe.snd")
- if !(res1 = transform_graph?(ind, 0)) or
- !(res2 = show_transform_peaks(ind, 0)) or
- !(res3 = show_y_zero(ind, 0))
- snd_display("remember_sound_state: %s %s %s?", res1, res2, res3)
+ res1 = transform_graph?(ind, 0)
+ res2 = show_transform_peaks(ind, 0)
+ res3 = show_y_zero(ind, 0)
+ if (not res1.kind_of?(TrueClass)) or
+ (not res2.kind_of?(TrueClass)) or
+ (not res3.kind_of?(TrueClass))
+ snd_display("remember_sound_state: %s %s %s?", res1.inspect, res2.inspect, res3.inspect)
end
close_sound(ind)
+ remember_sound_state(0)
reset_almost_all_hooks
Snd.catch(:all, lambda do |*args| snd_display("snd_apropos trouble: %s", args) end) do
# snd_apropos returns an array of all found matches if option is a
@@ -33173,14 +33168,6 @@ def test23_b
graph_eq("oboe.snd")
end
if sound?(ind = find_sound("test.snd"))
- res1 = channel2vct(45, 10, ind, 0)
- res2 = channel2vct(210, 10, ind, 0)
- if (not vfffequal(res1,
- vct(-0.068,-0.064,-0.056,-0.041,-0.020, 0.007, 0.034, 0.059, 0.077,0.090))) or
- (not vfffequal(res2,
- vct(0.016, 0.015, 0.013, 0.011, 0.008, 0.006, 0.004, 0.003, 0.001, 0.000)))
- snd_display("fm_violin with_sound:\n#\t%s\n#\t%s", res1, res2)
- end
play(ind, :wait, true)
close_sound(ind)
else
@@ -34088,7 +34075,7 @@ Procs =
:bold_peaks_font, :close_sound, :color_cutoff, :color_orientation_dialog, :colormap_ref,
:add_colormap, :delete_colormap, :colormap_size, :colormap_name, :color_inverted, :color_scale,
:color2list, :colormap, :color?, :comment, :contrast_control, :contrast_control_amp,
- :contrast_control?, :convolve_selection_with, :convolve_with, :channel_properties,
+ :channel_properties, :channel_property, :controls_channel,
:amp_control_bounds, :speed_control_bounds, :expand_control_bounds, :contrast_control_bounds,
:sound_file_extensions, :reverb_control_length_bounds, :reverb_control_scale_bounds,
:cursor_update_interval, :cursor_location_offset, :auto_update_interval, :count_matches,
@@ -34122,13 +34109,14 @@ Procs =
:listener_font, :listener_prompt, :listener_selection, :listener_text_color, :main_widgets,
:make_color, :make_graph_data, :make_mix_sampler, :make_player, :make_region,
:make_region_sampler, :make_sampler, :map_chan,
- :mark_color, :mark_name, :mark_sample, :mark_sync, :mark_sync_max, :mark_home, :marks,
+ :mark_color, :mark_name, :mark_properties, :mark_property,
+ :mark_sample, :mark_sync, :mark_sync_max, :mark_home, :marks,
:mark?, :max_transform_peaks, :max_regions, :max_virtual_ptrees,
:maxamp, :maxamp_position, :menu_widgets,
:minibuffer_history_length, :min_dB, :log_freq_start, :mix, :mixes, :mix_amp, :mix_amp_env,
:mix_color, :mix_length, :mix?,
:view_mixes_dialog, :mix_position, :mix_dialog_mix,
- :mix_name, :mix_sync_max, :mix_sync, :mix_properties,
+ :mix_name, :mix_sync_max, :mix_sync, :mix_properties, :mix_property,
:mix_region, :mix_sampler?, :mix_selection, :mix_sound,
:mix_home, :mix_speed, :mix_tag_height, :mix_tag_width, :mark_tag_height, :mark_tag_width,
:mix_tag_y, :mix_vct, :mix_waveform_height, :time_graph_style, :lisp_graph_style,
@@ -34160,18 +34148,18 @@ Procs =
:selection?, :short_file_name, :show_axes, :show_controls,
:show_transform_peaks, :show_indices, :show_listener, :show_marks, :show_mix_waveforms,
:show_selection_transform, :show_y_zero, :sinc_width, :show_grid, :show_sonogram_cursor,
- :grid_density, :smooth_sound, :smooth_selection, :snd_print, :snd_spectrum, :snd_tempnam,
- :snd_version, :sound_files_in_directory, :sound_loop_info, :sound_widgets, :soundfont_info,
- :sound?, :sounds, :spectrum_end, :spectro_hop, :spectrum_start, :spectro_x_angle,
- :spectro_x_scale, :spectro_y_angle, :spectro_y_scale, :spectro_z_angle, :spectro_z_scale,
- :speed_control, :speed_control_style, :speed_control_tones, :squelch_update, :srate,
- :src_sound, :src_selection, :start_progress_report, :stop_player, :stop_playing,
- :swap_channels, :syncd_marks, :sync, :sync_max, :sound_properties, :temp_dir, :text_focus_color,
- :tiny_font, :region_sampler?, :transform_dialog,
+ :grid_density, :smooth_sound, :smooth_selection, :snd_print, :snd_spectrum,
+ :snd_tempnam, :snd_version, :sound_files_in_directory, :sound_loop_info, :sound_widgets,
+ :soundfont_info, :sound?, :sounds, :spectrum_end, :spectro_hop, :spectrum_start,
+ :spectro_x_angle, :spectro_x_scale, :spectro_y_angle, :spectro_y_scale, :spectro_z_angle,
+ :spectro_z_scale, :speed_control, :speed_control_style, :speed_control_tones, :squelch_update,
+ :srate, :src_sound, :src_selection, :start_progress_report, :stop_player, :stop_playing,
+ :swap_channels, :syncd_marks, :sync, :sync_max, :sound_properties, :sound_property,
+ :temp_dir, :text_focus_color, :tiny_font, :region_sampler?, :transform_dialog,
:transform_sample, :transform2vct, :transform_frames, :transform_type, :trap_segfault,
:with_file_monitor, :unbind_key, :update_transform_graph, :update_time_graph,
:update_lisp_graph, :update_sound, :clm_table_size,
- :with_verbose_cursor, :view_sound, :wavelet_type,
+ :with_verbose_cursor, :view_sound, :wavelet_type, :with_inset_graph, :with_pointer_focus,
:time_graph?, :time_graph_type, :wavo_hop, :wavo_trace, :window_height, :window_width,
:window_x, :window_y, :with_mix_tags, :with_relative_panes, :with_gl,
:x_axis_style, :beats_per_measure, :beats_per_minute, :x_bounds, :x_position_slider,
@@ -34232,7 +34220,7 @@ Procs =
:scan_channel, :reverse_channel, :seconds2samples, :samples2seconds, :vct2channel,
:smooth_channel, :channel2vct,
:src_channel, :scale_channel, :ramp_channel, :pad_channel, :normalize_channel,
- :cursor_position, :clear_listener, :mus_sound_prune, :mus_sound_forget, :xramp_channel,
+ :cursor_position, :mus_sound_prune, :mus_sound_forget, :xramp_channel,
:ptree_channel, :snd2sample, :snd2sample?, :make_snd2sample, :make_scalar_mixer,
:beats_per_minute, :beats_per_measure, :channel_amp_envs, :convolve_files,
:filter_control_coeffs, :locsig_type, :make_phase_vocoder,
@@ -34259,7 +34247,8 @@ Set_procs =
:contrast_control_amp, :amp_control_bounds, :speed_control_bounds, :expand_control_bounds,
:contrast_control_bounds, :reverb_control_length_bounds, :reverb_control_scale_bounds,
:cursor_update_interval, :cursor_location_offset, :contrast_control?, :auto_update_interval,
- :current_font, :cursor, :cursor_color, :channel_properties, :with_tracking_cursor, :cursor_size,
+ :current_font, :cursor, :cursor_color, :channel_properties, :channel_property,
+ :with_tracking_cursor, :cursor_size,
:cursor_style, :tracking_cursor_style, :dac_combines_channels, :dac_size, :clipping, :data_color,
:default_output_chans, :default_output_data_format, :default_output_srate,
:default_output_header_type,
@@ -34274,9 +34263,10 @@ Set_procs =
:filter_control_waveform_color,
:filter_control?, :foreground_color, :graph_color, :graph_cursor, :graph_style, :lisp_graph?,
:graphs_horizontal, :highlight_color, :just_sounds, :left_sample, :listener_color,
- :listener_font, :listener_prompt, :listener_text_color, :mark_color, :mark_name, :mark_sample,
+ :listener_font, :listener_prompt, :listener_text_color, :mark_color, :mark_name,
+ :mark_properties, :mark_property, :mark_sample,
:mark_sync, :max_transform_peaks, :max_regions, :min_dB, :log_freq_start, :mix_amp,
- :mix_amp_env, :mix_color, :mix_name, :mix_position, :mix_sync, :mix_properties,
+ :mix_amp_env, :mix_color, :mix_name, :mix_position, :mix_sync, :mix_properties, :mix_property,
:max_virtual_ptrees, :mix_speed, :mix_tag_height, :mix_tag_width, :mix_tag_y,
:mark_tag_width, :mark_tag_height, :mix_waveform_height, :transform_normalization,
:open_file_dialog_directory, :position_color, :view_files_sort, :print_length,
@@ -34291,9 +34281,11 @@ Set_procs =
:show_sonogram_cursor, :sinc_width, :spectrum_end, :spectro_hop, :spectrum_start,
:spectro_x_angle, :grid_density, :spectro_x_scale, :spectro_y_angle, :spectro_y_scale,
:spectro_z_angle, :spectro_z_scale, :speed_control, :speed_control_style, :speed_control_tones,
- :squelch_update, :sync, :sound_properties, :temp_dir, :text_focus_color, :tiny_font, :y_bounds,
+ :squelch_update, :sync, :sound_properties, :sound_property,
+ :temp_dir, :text_focus_color, :tiny_font, :y_bounds,
:transform_type, :trap_segfault, :with_file_monitor, :with_verbose_cursor,
- :wavelet_type, :x_bounds, :time_graph?, :wavo_hop, :wavo_trace, :with_gl,
+ :wavelet_type, :with_inset_graph, :with_pointer_focus, :x_bounds, :time_graph?, :wavo_hop,
+ :wavo_trace, :with_gl,
:with_mix_tags, :x_axis_style, :beats_per_minute, :zero_pad, :zoom_color, :zoom_focus_style,
:with_relative_panes, :window_x, :window_y, :window_width, :window_height, :mix_dialog_mix,
:beats_per_measure, :channels, :chans, :colormap, :comment, :data_format,
@@ -34400,7 +34392,7 @@ def test0028
:reverb_control_length, :reverb_control_lowpass, :reverb_control_scale, :reverb_control?,
:save_controls, :select_sound, :short_file_name, :sound_loop_info, :soundfont_info,
:speed_control, :speed_control_style, :speed_control_tones, :srate, :channel_style,
- :start_progress_report, :sync, :sound_properties, :swap_channels]
+ :start_progress_report, :sync, :sound_properties, :sound_property, :swap_channels]
procs1.each do |n|
if (tag = Snd.catch do snd_func(n, integer2sound(123)) end).first != :no_such_sound
snd_display("snd :no_such_sound %s: %s", n, tag)
@@ -34410,7 +34402,9 @@ def test0028
procs1.each do |n|
next if n == :progress_report
tag = Snd.catch do snd_func(n, arg) end
- if tag.first != :wrong_type_arg and tag.first != :mus_error
+ if tag.first != :wrong_type_arg and
+ tag.first != :mus_error and
+ tag.first != :no_such_sound
snd_display("snd :wrong_type_arg %s: %s %s", n, tag, arg)
end
end
@@ -34637,7 +34631,8 @@ def test0128
end
end
mus_sound_forget("/bad/baddy")
- [:channel_widgets, :count_matches, :cursor, :channel_properties, :with_tracking_cursor,
+ [:channel_widgets, :count_matches, :cursor, :channel_properties, :channel_property,
+ :with_tracking_cursor,
:cursor_position, :cursor_size, :cursor_style, :tracking_cursor_style, :delete_sample,
:display_edits, :dot_size, :draw_dots, :draw_lines, :edit_fragment, :edit_list2function,
:edit_position, :edit_tree, :edits, :fft_window_alpha,
@@ -34664,7 +34659,8 @@ def test0128
snd_display("%s: chn (no snd) procs %s: %s", i, n, tag)
end
end
- [:channel_widgets, :count_matches, :cursor, :channel_properties, :cursor_position,
+ [:channel_widgets, :count_matches, :cursor, :channel_properties, :channel_property,
+ :cursor_position,
:cursor_size, :cursor_style, :tracking_cursor_style, :delete_sample, :display_edits, :dot_size,
:draw_dots, :draw_lines, :edit_fragment, :edit_position, :edit_tree, :edits, :fft_window_beta,
:fft_window_alpha, :fft_with_phases, :fft_log_frequency, :fft_log_magnitude, :transform_size,
@@ -34687,7 +34683,8 @@ def test0128
snd_display("%s: chn (no chn) procs %s: %s", i, n, tag)
end
end
- [:channel_widgets, :cursor, :with_tracking_cursor, :channel_properties, :cursor_position,
+ [:channel_widgets, :cursor, :with_tracking_cursor, :channel_properties, :channel_property,
+ :cursor_position,
:cursor_size, :cursor_style, :tracking_cursor_style, :display_edits, :dot_size,
:edit_position, :edit_tree, :edits, :env_sound, :fft_window_beta,
:fft_window_alpha, :fft_log_frequency, :fft_with_phases,
@@ -34740,9 +34737,12 @@ def test0128
:wavelet_type, :time_graph?, :time_graph_type, :wavo_hop, :wavo_trace,
:x_bounds, :x_position_slider, :x_axis_label, :x_zoom_slider, :y_bounds,
:y_position_slider, :y_zoom_slider, :zero_pad,
- :channel_properties].each_with_index do |n, i|
- if (tag = Snd.catch do snd_func(n, index, 1234) end).first != :no_such_channel
- snd_display("%s: chn procs %s: %s", i, n, tag)
+ :channel_properties, :channel_property].each_with_index do |n, i|
+ case (tag = Snd.catch do snd_func(n, index, 1234) end).first
+ when :no_such_sound, :no_such_channel
+ next
+ else
+ snd_display("%s: chn (2) procs %s: %s", i, n, tag)
end
end
[:channel_widgets, :cursor, :cursor_position, :display_edits, :dot_size,
@@ -34849,7 +34849,7 @@ def test0128
:selection_creates_region, :show_controls, :show_indices,
:show_listener, :show_selection_transform, :sinc_width, :temp_dir,
:text_focus_color, :tiny_font, :trap_segfault, :with_file_monitor,
- :with_verbose_cursor, :window_height,
+ :with_verbose_cursor, :with_inset_graph, :with_pointer_focus, :window_height,
:beats_per_measure, :window_width, :window_x, :window_y, :with_gl,
:with_mix_tags, :x_axis_style, :beats_per_minute, :zoom_color, :mix_tag_height,
:mix_tag_width, :with_relative_panes, :clm_table_size,
@@ -35191,7 +35191,6 @@ def test0228
end
check_error_tag(:out_of_range) do make_table_lookup(:size, 100, :wave, Vct.new(3)) end
check_error_tag(:out_of_range) do make_wave_train(:size, 100, :wave, Vct.new(3)) end
- check_error_tag(:out_of_range) do make_granulate(:max_size, 2 ** 30) end
check_error_tag(:out_of_range) do make_ssb_am(100, 12345678) end
check_error_tag(:mus_error) do make_rand(:envelope, [0, 0, 1, 1], :distribution, Vct.new(10)) end
check_error_tag(:mus_error) do make_rand(:envelope, [0, 0, 1]) end
@@ -35248,7 +35247,6 @@ def test0228
end
check_error_tag(:bad_arity) do add_colormap("baddy", lambda do | | false end) end
check_error_tag(:bad_arity) do add_colormap("baddy", lambda do |a, b, c| false end) end
- check_error_tag(:out_of_range) do make_phase_vocoder(:fft_size, 2 ** 30) end
check_error_tag(:out_of_range) do
sr = make_src(:input, lambda do |dir| 1.0 end)
src(sr, 2000000.0)
diff --git a/snd-test.scm b/snd-test.scm
index c4f4b5b..8c20fff 100644
--- a/snd-test.scm
+++ b/snd-test.scm
@@ -284,7 +284,7 @@
(set! times (cons (list ',a val) times)))))
(define original-prompt (listener-prompt))
-(show-listener)
+(set! (show-listener) #t)
(set! (window-x) 600)
(set! (window-y) 10)
@@ -932,7 +932,7 @@
(if (not (equal? (max-regions) 16 ))
(snd-display ";max-regions set def: ~A" (max-regions)))
(set! (max-virtual-ptrees) (max-virtual-ptrees))
- (if (not (equal? (max-virtual-ptrees) 3 ))
+ (if (not (equal? (max-virtual-ptrees) 32 ))
(snd-display ";max-virtual-ptrees set def: ~A" (max-virtual-ptrees)))
(set! (min-dB) (min-dB))
(if (fneq (min-dB) -60.0 )
@@ -1259,7 +1259,7 @@
'mark-tag-height (mark-tag-height) 4
'mark-tag-width (mark-tag-width) 10
'max-regions (max-regions) 16
- 'max-virtual-ptrees (max-virtual-ptrees) 3
+ 'max-virtual-ptrees (max-virtual-ptrees) 32
'max-transform-peaks (max-transform-peaks) 100
'min-dB (min-dB) -60.0
'minibuffer-history-length (minibuffer-history-length) 8
@@ -2052,7 +2052,7 @@
'blackman5-window 'blackman6-window 'blackman7-window 'blackman8-window 'blackman9-window 'blackman10-window
'bohman-window 'bold-peaks-font 'bomb 'c-g! 'c-g? 'cauchy-window 'mlt-sine-window
'cepstrum 'change-samples-with-origin 'channel->vct 'channel-amp-envs 'channel-data
- 'channel-properties 'channel-style 'channel-widgets 'channels 'channels-combined
+ 'channel-properties 'channel-property 'channel-style 'channel-widgets 'channels 'channels-combined
'channels-separate 'channels-superimposed 'chans 'clear-array 'clear-listener
'clear-minibuffer 'clear-sincs 'clip-hook 'clipping 'clm-channel 'clm-print
'clm-table-size 'clm-default-frequency 'close-hook 'close-sound 'color->list
@@ -2132,13 +2132,13 @@
'make-triangle-wave 'make-two-pole 'make-two-zero
'make-variable-graph 'make-vct 'make-wave-train
'map-chan 'map-channel 'mark-click-hook 'mark-color 'mark-context
- 'mark-drag-hook 'mark-drag-triangle-hook 'mark-home 'mark-hook 'mark-name 'mark-properties
+ 'mark-drag-hook 'mark-drag-triangle-hook 'mark-home 'mark-hook 'mark-name 'mark-properties 'mark-property
'mark-sample 'mark-sync 'mark-sync-max 'mark-tag-height 'mark-tag-width
'mark? 'marks 'max-regions 'max-transform-peaks 'max-virtual-ptrees 'maxamp
'maxamp-position 'menu-widgets 'min-dB 'minibuffer-history-length 'mix
'mix-amp 'mix-amp-env 'mix-click-hook 'mix-color
'mix-dialog-mix 'mix-drag-hook 'mix-file-dialog 'mix-length 'mix-home
- 'mix-name 'mix-position 'mix-properties 'mix-region 'mix-release-hook 'mix-sync 'mix-sync-max
+ 'mix-name 'mix-position 'mix-properties 'mix-property 'mix-region 'mix-release-hook 'mix-sync 'mix-sync-max
'mix-sampler? 'mix-selection 'mix-speed 'mix-tag-height
'mix-tag-width 'mix-tag-y
'mix-vct 'mix-waveform-height 'mix? 'mixer 'mixer*
@@ -2233,7 +2233,7 @@
'sound-data-set! 'sound-data-scale! 'sound-data-fill! 'sound-data?
'sound-data-multiply! 'sound-data-add! 'sound-data-offset! 'sound-data* 'sound-data+ 'sound-data-copy 'sound-data-reverse!
'sound-file-extensions 'sound-file? 'sound-files-in-directory
- 'sound-loop-info 'sound-properties 'sound-widgets 'sound? 'soundfont-info
+ 'sound-loop-info 'sound-properties 'sound-property 'sound-widgets 'sound? 'soundfont-info
'sounds 'spectrum-end 'spectro-hop 'spectrum-start 'spectro-x-angle
'spectro-x-scale 'spectro-y-angle 'spectro-y-scale 'spectro-z-angle 'spectro-z-scale
'spectrum 'speed-control 'speed-control-as-float 'speed-control-as-ratio 'speed-control-as-semitone
@@ -52985,6 +52985,72 @@ EDITS: 1
(outa (+ i beg) (* amplitude (oscil os))))))))
+ (definstrument (jcrev2)
+ (let* (
+ (allpass11 (make-all-pass -0.700 0.700 1051))
+ (allpass21 (make-all-pass -0.700 0.700 337))
+ (allpass31 (make-all-pass -0.700 0.700 113))
+ (comb11 (make-comb 0.742 4799))
+ (comb21 (make-comb 0.733 4999))
+ (comb31 (make-comb 0.715 5399))
+ (comb41 (make-comb 0.697 5801))
+ (outdel11 (make-delay (seconds->samples .01)))
+
+ (allpass12 (make-all-pass -0.700 0.700 1051))
+ (allpass22 (make-all-pass -0.700 0.700 337))
+ (allpass32 (make-all-pass -0.700 0.700 113))
+ (comb12 (make-comb 0.742 4799))
+ (comb22 (make-comb 0.733 4999))
+ (comb32 (make-comb 0.715 5399))
+ (comb42 (make-comb 0.697 5801))
+ (outdel12 (make-delay (seconds->samples .01)))
+
+ (file-dur (frames *reverb*))
+ (decay-dur (mus-srate))
+ (len (floor (+ decay-dur file-dur))))
+
+ (run
+ (lambda ()
+ (do ((i 0 (+ 1 i)))
+ ((= i len))
+
+ (let* ((allpass-sum (all-pass allpass31
+ (all-pass allpass21
+ (all-pass allpass11
+ (ina i *reverb*)))))
+ (comb-sum (+ (comb comb11 allpass-sum)
+ (comb comb21 allpass-sum)
+ (comb comb31 allpass-sum)
+ (comb comb41 allpass-sum))))
+ (outa i (delay outdel11 comb-sum)))
+
+ (let* ((allpass-sum (all-pass allpass32
+ (all-pass allpass22
+ (all-pass allpass12
+ (inb i *reverb*)))))
+ (comb-sum (+ (comb comb12 allpass-sum)
+ (comb comb22 allpass-sum)
+ (comb comb32 allpass-sum)
+ (comb comb42 allpass-sum))))
+ (outb i (delay outdel12 comb-sum)))
+ )))))
+
+
+ (definstrument (floc-simp beg dur (amp 0.5) (freq 440.0) (ramp 2.0) (rfreq 1.0) offset)
+ (let* ((os (make-pulse-train freq))
+ (floc (make-flocsig :reverb-amount 0.1
+ :frequency rfreq
+ :amplitude ramp
+ :offset offset))
+ (start (seconds->samples beg))
+ (end (+ start (seconds->samples dur))))
+ (run
+ (lambda ()
+ (do ((i start (+ i 1)))
+ ((= i end))
+ (flocsig floc i (* amp (pulse-train os))))))))
+
+
(define (test-ws-errors)
;; since we only catch 'mus-error and 'with-sound-interrupt above, any other error
;; closes *output* and returns to the top-level -- are there languishing threads?
@@ -53951,8 +54017,9 @@ EDITS: 1
(close-sound ind))
(with-sound (:play #f) (defopt-simp 0 10000) (defopt-simp 10000 10000 550.0 0.1) (defopt-simp 20000 10000 :amplitude .2))
-
- (with-sound (:channels 2 :statistics #t)
+ (with-sound (:channels 2 :reverb-channels 2 :reverb jcrev2 :play #f) (floc-simp 0 1))
+
+ (with-sound (:channels 2 :statistics #t)
(fullmix "pistol.snd")
(fullmix "oboe.snd" 1 2 0 (list (list .1 (make-env '(0 0 1 1) :duration 2 :scaler .5)))))
(let ((ind (find-sound "test.snd")))
@@ -61230,28 +61297,8 @@ EDITS: 1
(_PangoAttrList_ (pango_attr_list_new))
(_list (gtk_label_get_selection_bounds _GtkLabel_))
(_list1 (gtk_label_get_layout_offsets _GtkLabel_))
- (_int (GTK_WIDGET_STATE _GtkWidget_))
- (_int1 (GTK_WIDGET_SAVED_STATE _GtkWidget_))
- (_int2 (GTK_WIDGET_FLAGS _GtkWidget_))
- (_gboolean4 (GTK_WIDGET_TOPLEVEL _GtkWidget_))
- (_gboolean5 (GTK_WIDGET_NO_WINDOW _GtkWidget_))
- (_gboolean6 (GTK_WIDGET_REALIZED _GtkWidget_))
- (_gboolean7 (GTK_WIDGET_MAPPED _GtkWidget_))
- (_gboolean8 (GTK_WIDGET_VISIBLE _GtkWidget_))
- (_gboolean9 (GTK_WIDGET_DRAWABLE _GtkWidget_))
- (_gboolean10 (GTK_WIDGET_SENSITIVE _GtkWidget_))
- (_gboolean11 (GTK_WIDGET_PARENT_SENSITIVE _GtkWidget_))
- (_gboolean12 (GTK_WIDGET_IS_SENSITIVE _GtkWidget_))
- (_gboolean13 (GTK_WIDGET_CAN_FOCUS _GtkWidget_))
- (_gboolean14 (GTK_WIDGET_HAS_FOCUS _GtkWidget_))
- (_gboolean15 (GTK_WIDGET_CAN_DEFAULT _GtkWidget_))
- (_gboolean16 (GTK_WIDGET_HAS_DEFAULT _GtkWidget_))
- (_gboolean17 (GTK_WIDGET_HAS_GRAB _GtkWidget_))
- (_gboolean18 (GTK_WIDGET_RC_STYLE _GtkWidget_))
- (_gboolean19 (GTK_WIDGET_COMPOSITE_CHILD _GtkWidget_))
- (_gboolean20 (GTK_WIDGET_APP_PAINTABLE _GtkWidget_))
- (_gboolean21 (GTK_WIDGET_RECEIVES_DEFAULT _GtkWidget_))
- (_gboolean22 (GTK_WIDGET_DOUBLE_BUFFERED _GtkWidget_)))
+ )
+
(if (not (string=? _gchar_ "hiho")) (snd-display ";label text: ~A" _gchar_))
(if (not (string=? _gchar1_ "hiho")) (snd-display ";label label: ~A" _gchar1_))
(if (not (= _GtkJustification GTK_JUSTIFY_LEFT)) (snd-display ";label justification: ~A ~A" _GtkJustification GTK_JUSTIFY_LEFT))
@@ -61259,34 +61306,12 @@ EDITS: 1
(if (and (not (equal? (list 0 0) _list1))
(not (equal? (list -1 -1) _list1)))
(snd-display ";label layout offsets: ~A" _list1))
- (if (not (= _int 0)) (snd-display ";WIDGET STATE: ~A" _int))
- (if (not (= _int1 0)) (snd-display ";WIDGET SAVED STATE: ~A" _int1))
(if _GtkWidget1_ (snd-display ";mnemnoinic widget: ~A" _GtkWidget1_))
(if _gboolean (snd-display ";label use markup"))
(if _gboolean1 (snd-display ";label underline"))
(if _gboolean2 (snd-display ";label line wrap"))
(if _gboolean3 (snd-display ";label selectable"))
- (if _gboolean4 (snd-display ";WIDGET TOPLEVEL"))
- (if (not _gboolean5) (snd-display ";WIDGET NO WINDOW"))
- (if _gboolean6 (snd-display ";WIDGET REALIZED"))
- (if _gboolean7 (snd-display ";WIDGET MAPPED"))
- (if _gboolean8 (snd-display ";WIDGET VISIBLE"))
- (if _gboolean9 (snd-display ";WIDGET DRAWABLE"))
- (if (not _gboolean10) (snd-display ";WIDGET SENSITIVE"))
- (if (not _gboolean11) (snd-display ";WIDGET SENSITIVE"))
- (if (not _gboolean12) (snd-display ";WIDGET SENSITIVE"))
- (if _gboolean13 (snd-display ";WIDGET CAN FOCUS"))
- (if _gboolean14 (snd-display ";WIDGET HAS FOCUS"))
- (if _gboolean15 (snd-display ";WIDGET CAN DEFAULT"))
- (if _gboolean16 (snd-display ";WIDGET HAS DEFAULT"))
- (if _gboolean17 (snd-display ";WIDGET HAS GRAB"))
- (if _gboolean18 (snd-display ";WIDGET RC STYLE"))
- (if _gboolean19 (snd-display ";WIDGET COMPOSITE CHILD"))
- (if _gboolean20 (snd-display ";WIDGET APP PAINTABLE"))
- (if _gboolean21 (snd-display ";WIDGET RECEIVES DEFAULT"))
- (if (not _gboolean22) (snd-display ";WIDGET DOUBLE BUFFERED"))
- ; (pango_attr_list_ref _PangoAttrList_)
- ; (pango_attr_list_unref _PangoAttrList_)
+
(gtk_label_set_text _GtkLabel_ "another label")
(if (not (string=? (gtk_label_get_text _GtkLabel_) "another label")) (snd-display ";set label text: ~A" (gtk_label_get_text _GtkLabel_)))
(gtk_label_set_attributes _GtkLabel_ _PangoAttrList_)
@@ -61317,7 +61342,7 @@ EDITS: 1
(lst (c-array->list arr 3)))
(if (not (equal? lst '(1 2 3)))
(snd-display ";~A c-array->list not invertible?: ~A ~A" type arr lst))))
- (list "gint*" "guint*" "guint32*" "guint8*" "guint16*" "int*" "guchar*"))
+ (list "gint*" "guint*" "guint32*" "guint16*" "int*" "guchar*"))
(let* ((arr (list->c-array '(#f #t #t) "gboolean*"))
(lst (c-array->list arr 3)))
@@ -61335,10 +61360,6 @@ EDITS: 1
(let* ((_GdkRegion_ (gdk_region_new))
(_GdkRegion1_ (gdk_region_copy _GdkRegion_))
(_GdkRectangle_ (GdkRectangle 0 0 10 10))
- (x (.x _GdkRectangle_))
- (y (.y _GdkRectangle_))
- (width (.width _GdkRectangle_))
- (height (.height _GdkRectangle_))
(_GdkRegion2_ (gdk_region_rectangle _GdkRectangle_))
(_gboolean (gdk_region_empty _GdkRegion_))
(_gboolean1 (gdk_region_equal _GdkRegion_ _GdkRegion1_))
@@ -61348,8 +61369,6 @@ EDITS: 1
(pts (vector->GdkPoints (vct->vector (vct 0.0 0.0 1.0 1.0))))
(_GdkRegion3_ (gdk_region_polygon (list 'GdkPoint_ pts) 2 GDK_WINDING_RULE)))
(if (equal? _GdkRegion_ _GdkRegion1_) (snd-display ";regions equal?"))
- (if (or (not (= x 0)) (not (= y 0)) (not (= width 10)) (not (= height 10)))
- (snd-display ";rectangle accessors: ~A ~A ~A ~A" x y width height))
(if (not _gboolean) (snd-display ";region not empty"))
(if (not _gboolean1) (snd-display ";region not copied equal"))
(if (not _gboolean2) (snd-display ";region no point"))
@@ -62092,9 +62111,7 @@ EDITS: 1
(gtk_ui_manager_get_ui _GtkUIManager_)
(gtk_ui_manager_remove_ui _GtkUIManager_ _guint))
- (let* ((_GtkFixed_ (GTK_FIXED (gtk_fixed_new)))
- (_gboolean (gtk_fixed_get_has_window _GtkFixed_)))
- (gtk_fixed_set_has_window _GtkFixed_ #f)
+ (let* ((_GtkFixed_ (GTK_FIXED (gtk_fixed_new))))
(gtk_fixed_put _GtkFixed_ (gtk_label_new "hi") 0 0)
(let* ((_gpointer (g_object_ref (GPOINTER _GtkFixed_)))
(_GType (G_OBJECT_TYPE (GTK_OBJECT _GtkFixed_)))
@@ -62843,8 +62860,6 @@ EDITS: 1
(_GtkWidget_2 (gtk_radio_button_new_with_mnemonic _GSList_ _gchar_))
(_GSList_ (gtk_radio_button_get_group _GtkRadioButton_))
(_int (GTK_OBJECT_FLAGS (GTK_OBJECT _GtkRadioButton_))))
- (GTK_WIDGET_SET_FLAGS _GtkWidget_ 0)
- (GTK_WIDGET_UNSET_FLAGS _GtkWidget_ 0)
(GTK_OBJECT_SET_FLAGS (GTK_OBJECT _GtkWidget_) 0)
(GTK_OBJECT_UNSET_FLAGS (GTK_OBJECT _GtkWidget_) 0))
@@ -62966,7 +62981,6 @@ EDITS: 1
(gtk_accel_group_disconnect _GtkAccelGroup_ #f))
(let* ((label (gtk_label_new "hi"))
- (_char_ (GTK_OBJECT_TYPE_NAME (GTK_OBJECT label)))
(_gboolean (GTK_IS_RESIZE_CONTAINER (GTK_WIDGET label)))
(_gboolean1 #f)
(_GtkExpander_ (GTK_EXPANDER (gtk_expander_new "hi")))
@@ -62980,7 +62994,6 @@ EDITS: 1
(_gint (gtk_expander_get_spacing _GtkExpander_))
(_gint1 (gtk_editable_get_position _GtkEditable_))
(_GtkContainer_ (GTK_CONTAINER (gtk_vbox_new #t 0))))
- (if (not (string=? _char_ "GtkLabel")) (snd-display ";label type name: ~A" _char_))
(if _gboolean (snd-display ";label is resize container"))
(if (not _gboolean2) (snd-display ";editable not editable"))
(if _gboolean3 (snd-display ";expander expanded"))
@@ -63590,7 +63603,7 @@ EDITS: 1
GTK_IS_WIDGET GTK_IS_WINDOW GTK_ITEM GTK_LABEL GTK_LAYOUT
GTK_LIST_STORE GTK_MENU GTK_MENU_BAR GTK_MENU_ITEM GTK_MENU_SHELL
GTK_MENU_TOOL_BUTTON GTK_MISC GTK_NOTEBOOK GTK_OBJECT
- GTK_OBJECT_FLAGS GTK_OBJECT_SET_FLAGS GTK_OBJECT_TYPE_NAME GTK_OBJECT_UNSET_FLAGS
+ GTK_OBJECT_FLAGS GTK_OBJECT_SET_FLAGS GTK_OBJECT_UNSET_FLAGS
GTK_PANED GTK_PLUG GTK_PROGRESS_BAR GTK_RADIO_ACTION GTK_RADIO_BUTTON
GTK_RADIO_MENU_ITEM GTK_RADIO_TOOL_BUTTON GTK_RANGE GTK_RULER GTK_SCALE
GTK_SCROLLBAR GTK_SCROLLED_WINDOW GTK_SEPARATOR GTK_SEPARATOR_MENU_ITEM GTK_SEPARATOR_TOOL_ITEM
@@ -63602,11 +63615,6 @@ EDITS: 1
GTK_TREE_SELECTION GTK_TREE_SORTABLE GTK_TREE_STORE GTK_TREE_VIEW GTK_TREE_VIEW_COLUMN
GTK_UI_MANAGER GTK_VBOX GTK_VBUTTON_BOX GTK_VIEWPORT GTK_VPANED
GTK_VRULER GTK_VSCALE GTK_VSCROLLBAR GTK_VSEPARATOR GTK_WIDGET
- GTK_WIDGET_APP_PAINTABLE GTK_WIDGET_CAN_DEFAULT GTK_WIDGET_CAN_FOCUS GTK_WIDGET_COMPOSITE_CHILD GTK_WIDGET_DOUBLE_BUFFERED
- GTK_WIDGET_DRAWABLE GTK_WIDGET_FLAGS GTK_WIDGET_HAS_DEFAULT GTK_WIDGET_HAS_FOCUS GTK_WIDGET_HAS_GRAB
- GTK_WIDGET_IS_SENSITIVE GTK_WIDGET_MAPPED GTK_WIDGET_NO_WINDOW GTK_WIDGET_PARENT_SENSITIVE GTK_WIDGET_RC_STYLE
- GTK_WIDGET_REALIZED GTK_WIDGET_RECEIVES_DEFAULT GTK_WIDGET_SAVED_STATE GTK_WIDGET_SENSITIVE GTK_WIDGET_SET_FLAGS
- GTK_WIDGET_STATE GTK_WIDGET_TOPLEVEL GTK_WIDGET_UNSET_FLAGS GTK_WIDGET_VISIBLE GTK_WINDOW
G_IS_OBJECT G_OBJECT G_OBJECT_TYPE PANGO_CONTEXT PANGO_FONT
PANGO_FONT_FACE PANGO_FONT_FAMILY PANGO_FONT_MAP PANGO_IS_CONTEXT PANGO_IS_FONT
PANGO_IS_FONT_FACE PANGO_IS_FONT_FAMILY PANGO_IS_FONT_MAP PANGO_IS_LAYOUT PANGO_IS_RENDERER
@@ -63857,8 +63865,7 @@ EDITS: 1
gtk_file_chooser_unselect_filename gtk_file_chooser_unselect_uri
gtk_file_filter_add_pattern gtk_file_filter_add_pixbuf_formats gtk_file_filter_filter gtk_file_filter_get_name gtk_file_filter_get_needed
gtk_file_filter_new gtk_file_filter_set_name
- gtk_fixed_get_has_window
- gtk_fixed_move gtk_fixed_new gtk_fixed_put gtk_fixed_set_has_window gtk_font_button_get_font_name
+ gtk_fixed_move gtk_fixed_new gtk_fixed_put gtk_font_button_get_font_name
gtk_font_button_get_show_size gtk_font_button_get_show_style gtk_font_button_get_title gtk_font_button_get_use_font
gtk_font_button_get_use_size gtk_font_button_new gtk_font_button_new_with_font gtk_font_button_set_font_name gtk_font_button_set_show_size
gtk_font_button_set_show_style gtk_font_button_set_title gtk_font_button_set_use_font
@@ -64665,9 +64672,7 @@ EDITS: 1
(set! (with-background-processes) #t)
- (load "s7test.scm")
- (if all-args
- (s7-test-at-random))
+ (load "s7test.scm")
(if (and (provided? 'gsl)
(provided? 'gmp))
@@ -64888,7 +64893,7 @@ EDITS: 1
channel-widgets channels chans peaks-font bold-peaks-font close-sound
color-cutoff color-orientation-dialog colormap-ref add-colormap delete-colormap colormap-size colormap-name colormap?
color-inverted color-scale color->list colormap color? comment contrast-control contrast-control-amp
- contrast-control? convolve-selection-with convolve-with channel-properties controls->channel
+ contrast-control? convolve-selection-with convolve-with channel-properties channel-property controls->channel
amp-control-bounds speed-control-bounds expand-control-bounds contrast-control-bounds
reverb-control-length-bounds reverb-control-scale-bounds cursor-update-interval cursor-location-offset
auto-update-interval count-matches current-font cursor cursor-color with-tracking-cursor cursor-size
@@ -64911,11 +64916,11 @@ EDITS: 1
insert-samples-with-origin insert-selection insert-silence insert-sound just-sounds key key-binding
left-sample listener-color listener-font listener-prompt listener-selection listener-text-color
main-widgets make-color make-graph-data make-mix-sampler make-player make-region
- make-region-sampler make-sampler map-chan mark-color mark-name mark-properties
+ make-region-sampler make-sampler map-chan mark-color mark-name mark-properties mark-property
mark-sample mark-sync mark-sync-max mark-home marks mark? max-transform-peaks max-regions max-virtual-ptrees
maxamp maxamp-position menu-widgets minibuffer-history-length min-dB log-freq-start mix mixes mix-amp mix-amp-env
mix-color mix-length mix? view-mixes-dialog mix-position
- mix-dialog-mix mix-name mix-sync-max mix-sync mix-properties
+ mix-dialog-mix mix-name mix-sync-max mix-sync mix-properties mix-property
mix-region mix-sampler? mix-selection mix-sound mix-home mix-speed mix-tag-height mix-tag-width mark-tag-height mark-tag-width
mix-tag-y mix-vct mix-waveform-height time-graph-style lisp-graph-style transform-graph-style
;new-sound in add-watcher
@@ -64946,7 +64951,7 @@ EDITS: 1
spectro-x-angle spectro-x-scale spectro-y-angle spectro-y-scale spectro-z-angle spectro-z-scale
speed-control speed-control-style speed-control-tones squelch-update srate src-sound src-selection
;start-playing
- start-progress-report stop-player stop-playing swap-channels syncd-marks sync sync-max sound-properties temp-dir
+ start-progress-report stop-player stop-playing swap-channels syncd-marks sync sync-max sound-properties sound-property temp-dir
text-focus-color tiny-font region-sampler? transform-dialog transform-sample
transform->vct transform-frames transform-type trap-segfault with-file-monitor optimization unbind-key undo
update-transform-graph update-time-graph update-lisp-graph update-sound clm-table-size clm-default-frequency
@@ -65033,7 +65038,7 @@ EDITS: 1
color-cutoff color-inverted color-scale contrast-control contrast-control-amp
amp-control-bounds speed-control-bounds expand-control-bounds contrast-control-bounds
reverb-control-length-bounds reverb-control-scale-bounds cursor-update-interval cursor-location-offset
- contrast-control? auto-update-interval current-font cursor cursor-color channel-properties
+ contrast-control? auto-update-interval current-font cursor cursor-color channel-properties channel-property
with-tracking-cursor cursor-size cursor-style tracking-cursor-style dac-combines-channels dac-size clipping data-color
default-output-chans default-output-data-format default-output-srate default-output-header-type dot-size
enved-envelope enved-base enved-clip? enved-in-dB enved-style enved-power
@@ -65044,8 +65049,8 @@ EDITS: 1
filter-control-in-hz filter-control-order filter-control-waveform-color filter-control? foreground-color
graph-color graph-cursor graph-style lisp-graph? graphs-horizontal highlight-color
just-sounds left-sample listener-color listener-font listener-prompt listener-text-color mark-color
- mark-name mark-properties mark-sample mark-sync max-transform-peaks max-regions min-dB log-freq-start mix-amp
- mix-amp-env mix-color mix-name mix-position mix-sync mix-properties max-virtual-ptrees
+ mark-name mark-properties mark-property mark-sample mark-sync max-transform-peaks max-regions min-dB log-freq-start mix-amp
+ mix-amp-env mix-color mix-name mix-position mix-sync mix-properties mix-property max-virtual-ptrees
mix-speed mix-tag-height mix-tag-width mix-tag-y mark-tag-width mark-tag-height
mix-waveform-height transform-normalization open-file-dialog-directory
position-color view-files-sort print-length pushed-button-color
@@ -65058,7 +65063,7 @@ EDITS: 1
show-transform-peaks show-indices show-marks show-mix-waveforms show-selection-transform show-listener
show-y-zero show-grid show-sonogram-cursor sinc-width spectrum-end spectro-hop spectrum-start spectro-x-angle grid-density
spectro-x-scale spectro-y-angle spectro-y-scale spectro-z-angle spectro-z-scale speed-control
- speed-control-style speed-control-tones squelch-update sync sound-properties temp-dir text-focus-color tiny-font y-bounds
+ speed-control-style speed-control-tones squelch-update sync sound-properties sound-property temp-dir text-focus-color tiny-font y-bounds
transform-type trap-segfault with-file-monitor optimization with-verbose-cursor with-inset-graph with-pointer-focus wavelet-type x-bounds
time-graph? wavo-hop wavo-trace with-gl with-mix-tags x-axis-style beats-per-minute zero-pad zoom-color zoom-focus-style
with-relative-panes window-x window-y window-width window-height mix-dialog-mix beats-per-measure
@@ -65228,7 +65233,7 @@ EDITS: 1
progress-report read-only reset-controls restore-controls reverb-control-decay reverb-control-feedback
reverb-control-length reverb-control-lowpass reverb-control-scale reverb-control? save-controls
select-sound short-file-name sound-loop-info soundfont-info speed-control speed-control-style
- speed-control-tones srate channel-style start-progress-report sync sound-properties swap-channels))
+ speed-control-tones srate channel-style start-progress-report sync sound-properties sound-property swap-channels))
(for-each (lambda (arg)
(for-each (lambda (n)
@@ -65546,7 +65551,7 @@ EDITS: 1
(not (eq? tag 'no-such-sound)))
(snd-display ";~D: chn (no snd) procs ~A: ~A" ctr n tag))
(set! ctr (+ ctr 1))))
- (list channel-widgets count-matches cursor channel-properties
+ (list channel-widgets count-matches cursor channel-properties channel-property
with-tracking-cursor cursor-position cursor-size cursor-style tracking-cursor-style delete-sample display-edits dot-size
draw-dots draw-lines edit-fragment edit-position edit-tree edits fft-window-alpha fft-window-beta fft-log-frequency
fft-log-magnitude fft-with-phases transform-size transform-graph-type fft-window transform-graph? find-channel
@@ -65574,7 +65579,7 @@ EDITS: 1
(if (not (eq? tag 'wrong-type-arg))
(snd-display ";~D: chn (no chn) procs ~A: ~A" ctr n tag))
(set! ctr (+ ctr 1))))
- (list channel-widgets count-matches cursor channel-properties
+ (list channel-widgets count-matches cursor channel-properties channel-property
cursor-position cursor-size cursor-style tracking-cursor-style delete-sample display-edits dot-size draw-dots draw-lines
edit-fragment edit-position edit-tree edits fft-window-alpha fft-window-beta fft-log-frequency fft-log-magnitude fft-with-phases
transform-size transform-graph-type fft-window transform-graph? find-channel
@@ -65684,7 +65689,7 @@ EDITS: 1
spectro-y-scale spectro-z-angle spectro-z-scale squelch-update transform->vct
transform-frames transform-type update-transform-graph update-time-graph update-lisp-graph
wavelet-type time-graph? time-graph-type wavo-hop wavo-trace x-bounds x-position-slider x-axis-label
- x-zoom-slider y-bounds y-position-slider y-zoom-slider zero-pad channel-properties))
+ x-zoom-slider y-bounds y-position-slider y-zoom-slider zero-pad channel-properties channel-property ))
(close-sound index))
(let ((ctr 0)
@@ -67082,7 +67087,7 @@ EDITS: 1
(save-listener "test.output")
(set! (listener-prompt) original-prompt)
(clear-listener)
-(show-listener)
+(set! (show-listener) #t)
(display (format #f "~%;all done!~%~A" original-prompt))
diff --git a/snd-utils.c b/snd-utils.c
index 40fa33f..21304d6 100644
--- a/snd-utils.c
+++ b/snd-utils.c
@@ -265,24 +265,6 @@ disk_space_t disk_space_p(mus_long_t bytes, const char *filename)
}
-#if HAVE_LANGINFO_DECIMAL_POINT || HAVE_LANGINFO_RADIXCHAR
- #include <langinfo.h>
-#endif
-
-static char decimal_pt;
-
-static char local_decimal_point(void)
-{
-#if HAVE_LANGINFO_DECIMAL_POINT
- return(nl_langinfo(DECIMAL_POINT)[0]);
-#endif
-#if HAVE_LANGINFO_RADIXCHAR
- return(nl_langinfo(RADIXCHAR)[0]);
-#endif
- return('.');
-}
-
-
char *prettyf(double num, int tens)
{
/* try to prettify float display -- if tens <= 0, return int */
@@ -688,7 +670,6 @@ static XEN g_file_to_string(XEN name)
void g_init_utils(void)
{
- decimal_pt = local_decimal_point();
#if HAVE_SCHEME
XEN_DEFINE_PROCEDURE(S_file_to_string, g_file_to_string_w, 1, 0, 0, "file contents as string");
#endif
diff --git a/snd-xen.c b/snd-xen.c
index 996ec05..93a650b 100644
--- a/snd-xen.c
+++ b/snd-xen.c
@@ -80,7 +80,7 @@
/* -------- protect XEN vars from GC -------- */
-#if HAVE_S7
+#if HAVE_SCHEME
int snd_protect(XEN obj) {return(s7_gc_protect(s7, obj));}
void snd_unprotect_at(int loc) {s7_gc_unprotect_at(s7, loc);}
@@ -210,7 +210,7 @@ void redirect_xen_error_to(void (*handler)(const char *msg, void *ufd), void *da
}
-#if (!HAVE_S7) && (!HAVE_FORTH)
+#if (!HAVE_SCHEME) && (!HAVE_FORTH)
static void call_xen_error_handler(const char *msg)
{
/* make sure it doesn't call itself recursively */
@@ -464,7 +464,7 @@ bool procedure_arity_ok(XEN proc, int args)
return(false);
#endif
-#if HAVE_S7
+#if HAVE_SCHEME
{
int oargs, restargs, gc_loc;
@@ -498,7 +498,7 @@ char *procedure_ok(XEN proc, int args, const char *caller, const char *arg_name,
str = mus_format("%s: %s (%s arg %d) is not a procedure!",
temp = (char *)XEN_AS_STRING(proc),
arg_name, caller, argn);
-#if HAVE_S7
+#if HAVE_SCHEME
if (temp) free(temp);
#endif
return(str);
@@ -625,7 +625,7 @@ XEN eval_str_wrapper(void *data)
}
-#if (!HAVE_S7)
+#if (!HAVE_SCHEME)
XEN eval_form_wrapper(void *data)
{
return(XEN_EVAL_FORM((XEN)data));
@@ -662,7 +662,7 @@ static XEN eval_file_wrapper(void *data)
char *g_print_1(XEN obj) /* free return val */
{
-#if HAVE_S7
+#if HAVE_SCHEME
return(XEN_AS_STRING(obj));
#endif
@@ -934,7 +934,7 @@ void snd_load_init_file(bool no_global, bool no_init)
#define SND_INIT "~/.snd_forth"
#endif
-#if HAVE_S7
+#if HAVE_SCHEME
#define SND_EXT_CONF "/etc/snd_s7.conf"
#define SND_PREFS "~/.snd_prefs_s7"
#define SND_INIT "~/.snd_s7"
@@ -1195,13 +1195,13 @@ mus_long_t string_to_mus_long_t(const char *str, mus_long_t lo, const char *fiel
XEN run_progn_hook(XEN hook, XEN args, const char *caller)
{
-#if HAVE_S7
+#if HAVE_SCHEME
int gc_loc;
#endif
XEN result = XEN_FALSE;
XEN procs = XEN_HOOK_PROCEDURES(hook);
-#if HAVE_S7
+#if HAVE_SCHEME
gc_loc = s7_gc_protect(s7, args);
/* this gc protection is needed in s7 because the args are not s7 eval-assembled;
* they are cons'd up in our C code, and applied here via s7_call, so between
@@ -1216,7 +1216,7 @@ XEN run_progn_hook(XEN hook, XEN args, const char *caller)
procs = XEN_CDR(procs);
}
-#if HAVE_S7
+#if HAVE_SCHEME
s7_gc_unprotect_at(s7, gc_loc);
#endif
@@ -1226,12 +1226,12 @@ XEN run_progn_hook(XEN hook, XEN args, const char *caller)
XEN run_hook(XEN hook, XEN args, const char *caller)
{
-#if HAVE_S7
+#if HAVE_SCHEME
int gc_loc;
#endif
XEN procs = XEN_HOOK_PROCEDURES(hook);
-#if HAVE_S7
+#if HAVE_SCHEME
gc_loc = s7_gc_protect(s7, args);
#endif
@@ -1243,7 +1243,7 @@ XEN run_hook(XEN hook, XEN args, const char *caller)
procs = XEN_CDR (procs);
}
-#if HAVE_S7
+#if HAVE_SCHEME
s7_gc_unprotect_at(s7, gc_loc);
#endif
@@ -1253,14 +1253,14 @@ XEN run_hook(XEN hook, XEN args, const char *caller)
XEN run_or_hook(XEN hook, XEN args, const char *caller)
{
-#if HAVE_S7
+#if HAVE_SCHEME
int gc_loc;
#endif
XEN result = XEN_FALSE; /* (or): #f */
XEN hook_result = XEN_FALSE;
XEN procs = XEN_HOOK_PROCEDURES (hook);
-#if HAVE_S7
+#if HAVE_SCHEME
gc_loc = s7_gc_protect(s7, args);
#endif
@@ -1274,7 +1274,7 @@ XEN run_or_hook(XEN hook, XEN args, const char *caller)
procs = XEN_CDR (procs);
}
-#if HAVE_S7
+#if HAVE_SCHEME
s7_gc_unprotect_at(s7, gc_loc);
#endif
@@ -1417,7 +1417,7 @@ static XEN g_fmod(XEN a, XEN b)
/* ---------------------------------------- use libm ---------------------------------------- */
-#if HAVE_S7 && WITH_GMP && HAVE_SPECIAL_FUNCTIONS
+#if HAVE_SCHEME && WITH_GMP && HAVE_SPECIAL_FUNCTIONS
#include <gmp.h>
#include <mpfr.h>
@@ -1689,7 +1689,7 @@ static XEN g_j0(XEN x)
#define H_j0 "(" S_bes_j0 " x): returns the regular cylindrical bessel function value J0(x)"
XEN_ASSERT_TYPE(XEN_NUMBER_P(x), x, XEN_ONLY_ARG, S_bes_j0, " a number");
-#if HAVE_S7 && WITH_GMP
+#if HAVE_SCHEME && WITH_GMP
if ((s7_is_bignum(x)) &&
(s7_is_real(x)) &&
(!(s7_is_rational(x))))
@@ -1704,7 +1704,7 @@ static XEN g_j1(XEN x)
#define H_j1 "(" S_bes_j1 " x): returns the regular cylindrical bessel function value J1(x)"
XEN_ASSERT_TYPE(XEN_NUMBER_P(x), x, XEN_ONLY_ARG, S_bes_j1, " a number");
-#if HAVE_S7 && WITH_GMP
+#if HAVE_SCHEME && WITH_GMP
if ((s7_is_bignum(x)) &&
(s7_is_real(x)) &&
(!(s7_is_rational(x))))
@@ -1720,7 +1720,7 @@ static XEN g_jn(XEN order, XEN x)
XEN_ASSERT_TYPE(XEN_INTEGER_P(order), x, XEN_ARG_1, S_bes_jn, " an int");
XEN_ASSERT_TYPE(XEN_NUMBER_P(x), x, XEN_ARG_2, S_bes_jn, " a number");
-#if HAVE_S7 && WITH_GMP
+#if HAVE_SCHEME && WITH_GMP
if ((s7_is_bignum(x)) &&
(s7_is_real(x)) &&
(!(s7_is_rational(x))))
@@ -1734,7 +1734,7 @@ static XEN g_y0(XEN x)
{
#define H_y0 "(" S_bes_y0 " x): returns the irregular cylindrical bessel function value Y0(x)"
XEN_ASSERT_TYPE(XEN_NUMBER_P(x), x, XEN_ONLY_ARG, S_bes_y0, " a number");
-#if HAVE_S7 && WITH_GMP
+#if HAVE_SCHEME && WITH_GMP
if ((s7_is_bignum(x)) &&
(s7_is_real(x)) &&
(!(s7_is_rational(x))))
@@ -1748,7 +1748,7 @@ static XEN g_y1(XEN x)
{
#define H_y1 "(" S_bes_y1 " x): returns the irregular cylindrical bessel function value Y1(x)"
XEN_ASSERT_TYPE(XEN_NUMBER_P(x), x, XEN_ONLY_ARG, S_bes_y1, " a number");
-#if HAVE_S7 && WITH_GMP
+#if HAVE_SCHEME && WITH_GMP
if ((s7_is_bignum(x)) &&
(s7_is_real(x)) &&
(!(s7_is_rational(x))))
@@ -1763,7 +1763,7 @@ static XEN g_yn(XEN order, XEN x)
#define H_yn "(" S_bes_yn " n x): returns the irregular cylindrical bessel function value Yn(x)"
XEN_ASSERT_TYPE(XEN_INTEGER_P(order), x, XEN_ARG_1, S_bes_yn, " an int");
XEN_ASSERT_TYPE(XEN_NUMBER_P(x), x, XEN_ARG_2, S_bes_yn, " a number");
-#if HAVE_S7 && WITH_GMP
+#if HAVE_SCHEME && WITH_GMP
if ((s7_is_bignum(x)) &&
(s7_is_real(x)) &&
(!(s7_is_rational(x))))
@@ -1777,7 +1777,7 @@ static XEN g_erf(XEN x)
{
#define H_erf "(erf x): returns the error function erf(x)"
XEN_ASSERT_TYPE(XEN_NUMBER_P(x), x, XEN_ONLY_ARG, "erf", " a number");
-#if HAVE_S7 && WITH_GMP
+#if HAVE_SCHEME && WITH_GMP
if ((s7_is_bignum(x)) &&
(s7_is_real(x)) &&
(!(s7_is_rational(x))))
@@ -1791,7 +1791,7 @@ static XEN g_erfc(XEN x)
{
#define H_erfc "(erfc x): returns the complementary error function erfc(x)"
XEN_ASSERT_TYPE(XEN_NUMBER_P(x), x, XEN_ONLY_ARG, "erfc", " a number");
-#if HAVE_S7 && WITH_GMP
+#if HAVE_SCHEME && WITH_GMP
if ((s7_is_bignum(x)) &&
(s7_is_real(x)) &&
(!(s7_is_rational(x))))
@@ -1816,7 +1816,7 @@ static XEN g_i0(XEN x)
{
#define H_i0 "(" S_bes_i0 " x): returns the modified cylindrical bessel function value I0(x)"
XEN_ASSERT_TYPE(XEN_NUMBER_P(x), x, XEN_ONLY_ARG, S_bes_i0, " a number");
-#if HAVE_S7 && WITH_GMP
+#if HAVE_SCHEME && WITH_GMP
if ((s7_is_bignum(x)) &&
(s7_is_real(x)) &&
(!(s7_is_rational(x))))
@@ -1837,7 +1837,7 @@ static XEN g_j0(XEN x)
#define H_j0 "(" S_bes_j0 " x): returns the regular cylindrical bessel function value J0(x)"
XEN_ASSERT_TYPE(XEN_NUMBER_P(x), x, XEN_ONLY_ARG, S_bes_j0, " a number");
-#if HAVE_S7 && WITH_GMP
+#if HAVE_SCHEME && WITH_GMP
if ((s7_is_bignum(x)) &&
(s7_is_real(x)) &&
(!(s7_is_rational(x))))
@@ -1852,7 +1852,7 @@ static XEN g_j1(XEN x)
#define H_j1 "(" S_bes_j1 " x): returns the regular cylindrical bessel function value J1(x)"
XEN_ASSERT_TYPE(XEN_NUMBER_P(x), x, XEN_ONLY_ARG, S_bes_j1, " a number");
-#if HAVE_S7 && WITH_GMP
+#if HAVE_SCHEME && WITH_GMP
if ((s7_is_bignum(x)) &&
(s7_is_real(x)) &&
(!(s7_is_rational(x))))
@@ -1868,7 +1868,7 @@ static XEN g_jn(XEN order, XEN x)
XEN_ASSERT_TYPE(XEN_INTEGER_P(order), x, XEN_ARG_1, S_bes_jn, " an int");
XEN_ASSERT_TYPE(XEN_NUMBER_P(x), x, XEN_ARG_2, S_bes_jn, " a number");
-#if HAVE_S7 && WITH_GMP
+#if HAVE_SCHEME && WITH_GMP
if ((s7_is_bignum(x)) &&
(s7_is_real(x)) &&
(!(s7_is_rational(x))))
@@ -1882,7 +1882,7 @@ static XEN g_y0(XEN x)
{
#define H_y0 "(" S_bes_y0 " x): returns the irregular cylindrical bessel function value Y0(x)"
XEN_ASSERT_TYPE(XEN_NUMBER_P(x), x, XEN_ONLY_ARG, S_bes_y0, " a number");
-#if HAVE_S7 && WITH_GMP
+#if HAVE_SCHEME && WITH_GMP
if ((s7_is_bignum(x)) &&
(s7_is_real(x)) &&
(!(s7_is_rational(x))))
@@ -1896,7 +1896,7 @@ static XEN g_y1(XEN x)
{
#define H_y1 "(" S_bes_y1 " x): returns the irregular cylindrical bessel function value Y1(x)"
XEN_ASSERT_TYPE(XEN_NUMBER_P(x), x, XEN_ONLY_ARG, S_bes_y1, " a number");
-#if HAVE_S7 && WITH_GMP
+#if HAVE_SCHEME && WITH_GMP
if ((s7_is_bignum(x)) &&
(s7_is_real(x)) &&
(!(s7_is_rational(x))))
@@ -1911,7 +1911,7 @@ static XEN g_yn(XEN order, XEN x)
#define H_yn "(" S_bes_yn " n x): returns the irregular cylindrical bessel function value Yn(x)"
XEN_ASSERT_TYPE(XEN_INTEGER_P(order), x, XEN_ARG_1, S_bes_yn, " an int");
XEN_ASSERT_TYPE(XEN_NUMBER_P(x), x, XEN_ARG_2, S_bes_yn, " a number");
-#if HAVE_S7 && WITH_GMP
+#if HAVE_SCHEME && WITH_GMP
if ((s7_is_bignum(x)) &&
(s7_is_real(x)) &&
(!(s7_is_rational(x))))
@@ -1973,7 +1973,7 @@ static XEN g_erf(XEN x)
{
#define H_erf "(erf x): returns the error function erf(x)"
XEN_ASSERT_TYPE(XEN_NUMBER_P(x), x, XEN_ONLY_ARG, "erf", " a number");
-#if HAVE_S7 && WITH_GMP
+#if HAVE_SCHEME && WITH_GMP
if ((s7_is_bignum(x)) &&
(s7_is_real(x)) &&
(!(s7_is_rational(x))))
@@ -1987,7 +1987,7 @@ static XEN g_erfc(XEN x)
{
#define H_erfc "(erfc x): returns the complementary error function value erfc(x)"
XEN_ASSERT_TYPE(XEN_NUMBER_P(x), x, XEN_ONLY_ARG, "erfc", " a number");
-#if HAVE_S7 && WITH_GMP
+#if HAVE_SCHEME && WITH_GMP
if ((s7_is_bignum(x)) &&
(s7_is_real(x)) &&
(!(s7_is_rational(x))))
@@ -2533,7 +2533,7 @@ static char *legalize_path(const char *in_str)
/* -------------------------------------------------------------------------------- */
-#if HAVE_S7
+#if HAVE_SCHEME
/* an experiment */
/* TODO: needs read-line etc. also minibuffer funcs.
@@ -2654,7 +2654,7 @@ void g_xen_initialize(void)
fth_add_loaded_files("sndlib.so");
#endif
-#if (!HAVE_S7)
+#if (!HAVE_SCHEME)
gc_protection = XEN_FALSE;
#endif
@@ -2700,7 +2700,7 @@ void g_xen_initialize(void)
#endif
-#if HAVE_S7 && WITH_GMP
+#if HAVE_SCHEME && WITH_GMP
s7_define_function(s7, "bignum-fft", bignum_fft, 3, 1, false, H_bignum_fft);
#endif
@@ -2808,7 +2808,7 @@ If it returns some non-#f result, Snd assumes you've sent the text out yourself,
free(legal_pwd);
}
-#if HAVE_S7
+#if HAVE_SCHEME
init_listener_ports();
XEN_EVAL_C_STRING("(define redo-edit redo)"); /* consistency with Ruby */
@@ -2912,8 +2912,9 @@ If it returns some non-#f result, Snd assumes you've sent the text out yourself,
#endif
#if HAVE_FORTH
- XEN_EVAL_C_STRING("' redo alias redo-edit"); /* consistency with Ruby */
- XEN_EVAL_C_STRING("' undo alias undo-edit");
+ XEN_EVAL_C_STRING("<'> redo alias redo-edit"); /* consistency with Ruby */
+ XEN_EVAL_C_STRING("<'> undo alias undo-edit");
+ XEN_EVAL_C_STRING(": clm-print ( fmt :optional args -- ) fth-format snd-print drop ;");
#endif
#if HAVE_RUBY
@@ -2994,7 +2995,7 @@ If it returns some non-#f result, Snd assumes you've sent the text out yourself,
XEN_YES_WE_HAVE("snd-forth");
#endif
-#if HAVE_S7
+#if HAVE_SCHEME
XEN_YES_WE_HAVE("snd-s7");
#endif
diff --git a/snd-xfind.c b/snd-xfind.c
index 8d862b2..da3d424 100644
--- a/snd-xfind.c
+++ b/snd-xfind.c
@@ -82,7 +82,7 @@ static void edit_find_ok_callback(read_direction_t direction, Widget w, XtPointe
{
ss->search_proc = proc;
ss->search_proc_loc = snd_protect(proc);
-#if HAVE_S7
+#if HAVE_SCHEME
if (optimization(ss) > 0)
ss->search_tree = mus_run_form_to_ptree_1_b(XEN_PROCEDURE_SOURCE(proc));
#endif
@@ -101,7 +101,7 @@ static void edit_find_ok_callback(read_direction_t direction, Widget w, XtPointe
/* using global search_proc set by user */
buf = (char *)calloc(PRINT_BUFFER_SIZE, sizeof(char));
mus_snprintf(buf, PRINT_BUFFER_SIZE, _("find: %s"), temp = (char *)XEN_AS_STRING(ss->search_proc));
-#if HAVE_S7
+#if HAVE_SCHEME
if (temp) free(temp);
#endif
set_label(edit_find_label, buf);
diff --git a/snd-xlistener.c b/snd-xlistener.c
index 4d52444..91be436 100644
--- a/snd-xlistener.c
+++ b/snd-xlistener.c
@@ -1128,7 +1128,7 @@ static void listener_modify_callback(Widget w, XtPointer context, XtPointer info
(XtIsManaged(completions_pane)))
XtUnmanageChild(completions_pane);
-#if HAVE_S7
+#if HAVE_SCHEME
if (cbs->text->length == 1)
ss->listener_char = cbs->text->ptr[0];
#endif
diff --git a/snd-xm.fs b/snd-xm.fs
index 432eabe..5c67c1d 100644
--- a/snd-xm.fs
+++ b/snd-xm.fs
@@ -3,7 +3,7 @@
\ Author: Michael Scholz <mi-scholz@users.sourceforge.net>
\ Created: Mon Dec 26 22:36:46 CET 2005
-\ Changed: Fri Nov 06 00:36:06 CET 2009
+\ Changed: Fri Jan 08 00:07:47 CET 2010
\ Commentary:
\
@@ -46,7 +46,8 @@
require clm
require examp
-dl-load libxm Init_libxm
+\ if not configured --with-static-xm
+'xm provided? not [if] dl-load libxm Init_libxm [then]
: main-dpy ( -- dpy ) main-widgets 1 array-ref FXtDisplay ;
: load-font ( name -- fid|#f )
@@ -306,7 +307,7 @@ hide
then
snd chn new-marks length set-mark-list-length
snd chn mark-list #( FXmNchildren 0 ) FXtVaGetValues 1 array-ref each { wid }
- new-marks nil? ?leave
+ new-marks empty? ?leave
wid FXmIsTextField if
wid
#( FXmNvalue new-marks 0 array-ref undef mark-sample number->string
diff --git a/snd-xmain.c b/snd-xmain.c
index d02d05d..c9aad0e 100644
--- a/snd-xmain.c
+++ b/snd-xmain.c
@@ -381,6 +381,7 @@ static void get_stdin_string(XtPointer context, int *fd, XtInputId *id)
}
#endif
+/* TODO: unidlize these startup funcs -- this made sense in 1995! */
static int tm_slice = 0;
diff --git a/snd-xmenu.c b/snd-xmenu.c
index d286539..044b432 100644
--- a/snd-xmenu.c
+++ b/snd-xmenu.c
@@ -301,12 +301,13 @@ static void view_mix_dialog_callback(Widget w, XtPointer info, XtPointer context
static void view_zero_callback(Widget w, XtPointer info, XtPointer context){set_show_y_zero((!(show_y_zero(ss))));}
static void view_cursor_callback(Widget w, XtPointer info, XtPointer context){set_verbose_cursor((!(verbose_cursor(ss))));}
+#if HAVE_EXTENSION_LANGUAGE
static void view_inset_callback(Widget w, XtPointer info, XtPointer context)
{
set_with_inset_graph((!(with_inset_graph(ss))));
for_each_chan(update_graph);
}
-
+#endif
static void view_controls_callback(Widget w, XtPointer info, XtPointer context)
{
@@ -675,8 +676,10 @@ Widget add_menu(void)
view_cursor_menu = XtCreateManagedWidget(_("Verbose cursor"), xmPushButtonWidgetClass, view_menu, main_args, main_n);
XtAddCallback(view_cursor_menu, XmNactivateCallback, view_cursor_callback, NULL);
+#if HAVE_EXTENSION_LANGUAGE
view_inset_menu = XtCreateManagedWidget(_("With inset graph"), xmPushButtonWidgetClass, view_menu, main_args, main_n);
XtAddCallback(view_inset_menu, XmNactivateCallback, view_inset_callback, NULL);
+#endif
view_combine_menu = XmCreatePulldownMenu(view_menu, (char *)"combine", main_args, main_n);
diff --git a/snd-xprefs.c b/snd-xprefs.c
index 8ea4799..e51bf47 100644
--- a/snd-xprefs.c
+++ b/snd-xprefs.c
@@ -5,18 +5,6 @@
/* preferences dialog; layout design taken from webmail
*/
-/* should the exit key work in the listener as well? -- how to handle C-x cmds in xttranslation tables?
-
- abandoned:
- preset packages: dlp, ksm
- emacs setup
- how to tie into emacs?
- audio mixer settings? -> volume in some mode (snd6.scm has OSS version)
- "startup dac volume" -- but this will be confusing since we don't notice mute settings etc
- clm instruments? -- surely user should learn about the listener...
-*/
-
-
static Widget preferences_dialog = NULL, load_path_text_widget = NULL;
static bool prefs_helping = false, prefs_unsaved = false;
static char *prefs_saved_filename = NULL;
@@ -212,7 +200,6 @@ static void prefs_change_callback(Widget w, XtPointer context, XtPointer info)
}
-
/* ---------------- row (main) label widget ---------------- */
static Widget make_row_label(prefs_info *prf, const char *label, Widget box, Widget top_widget)
@@ -620,11 +607,71 @@ static prefs_info *prefs_row_with_two_toggles(const char *label, const char *var
/* ---------------- toggle with text ---------------- */
+static void call_text_func(Widget w, XtPointer context, XtPointer info)
+{
+ prefs_info *prf = (prefs_info *)context;
+ if ((prf) && (prf->text_func))
+ (*(prf->text_func))(prf);
+}
+
+
+/* earlier versions of this dialog assumed the user would type <cr> to save a new value
+ * typed in a text widget, but no one does that anymore, so now, to catch these changes
+ * but not be confused by automatic changes (such as in a scale widget's label),
+ * we'll use XmNfocusCallback to set a text_focussed flag, XmNlosingFocusCallback to
+ * unset it, XmNvalueChangedCallback to set a text_changed flag, XmNactivateCallback
+ * to clear text_changed, and if XmNlosingFocusCallback sees that flag set, it
+ * calls the activate function and unsets the flag.
+ */
+
+typedef struct {
+ bool text_focussed, text_changed;
+ prefs_info *prf;
+} text_info;
+
+
+static void text_change_callback(Widget w, XtPointer context, XtPointer info)
+{
+ text_info *data = (text_info *)context;
+ if (data->text_focussed) /* try to omit non-user actions that change the value */
+ data->text_changed = true;
+}
+
+
+static void text_activate_callback(Widget w, XtPointer context, XtPointer info)
+{
+ text_info *data = (text_info *)context;
+ data->text_changed = false;
+}
+
+
+static void text_grab_focus_callback(Widget w, XtPointer context, XtPointer info)
+{
+ text_info *data = (text_info *)context;
+ data->text_focussed = true;
+}
+
+
+static void text_lose_focus_callback(Widget w, XtPointer context, XtPointer info)
+{
+ text_info *data = (text_info *)context;
+ if ((data->text_focussed) &&
+ (data->text_changed) &&
+ (data->prf) &&
+ (data->prf->text_func))
+ {
+ (*(data->prf->text_func))(data->prf);
+ data->text_changed = false;
+ }
+}
+
+
static Widget make_row_text(prefs_info *prf, const char *text_value, int cols, Widget left_widget, Widget box, Widget top_widget)
{
Widget w;
int n;
- Arg args[20];
+ Arg args[30];
+ text_info *info;
n = 0;
XtSetArg(args[n], XmNbackground, ss->sgx->white); n++;
@@ -657,18 +704,17 @@ static Widget make_row_text(prefs_info *prf, const char *text_value, int cols, W
XtAddEventHandler(w, EnterWindowMask, false, mouse_enter_pref_callback, (XtPointer)prf);
XtAddEventHandler(w, LeaveWindowMask, false, mouse_leave_pref_callback, (XtPointer)prf);
-
XtAddCallback(w, XmNactivateCallback, prefs_change_callback, NULL);
- return(w);
-}
+ info = (text_info *)calloc(1, sizeof(text_info));
+ info->prf = prf;
+ XtAddCallback(w, XmNactivateCallback, text_activate_callback, (XtPointer)info);
+ XtAddCallback(w, XmNvalueChangedCallback, text_change_callback, (XtPointer)info);
+ XtAddCallback(w, XmNfocusCallback, text_grab_focus_callback, (XtPointer)info);
+ XtAddCallback(w, XmNlosingFocusCallback, text_lose_focus_callback, (XtPointer)info);
-static void call_text_func(Widget w, XtPointer context, XtPointer info)
-{
- prefs_info *prf = (prefs_info *)context;
- if ((prf) && (prf->text_func))
- (*(prf->text_func))(prf);
+ return(w);
}
@@ -1722,15 +1768,18 @@ static void preferences_clear_callback(Widget w, XtPointer context, XtPointer in
}
+#if HAVE_EXTENSION_LANGUAGE
static void preferences_save_callback(Widget w, XtPointer context, XtPointer info)
{
clear_prefs_dialog_error();
redirect_snd_error_to(post_prefs_dialog_error, NULL);
redirect_snd_warning_to(post_prefs_dialog_error, NULL);
- save_prefs(save_options_in_prefs());
+ save_prefs();
redirect_snd_error_to(NULL, NULL);
redirect_snd_warning_to(NULL, NULL);
}
+#endif
+
/* ---------------- errors ---------------- */
@@ -1793,7 +1842,9 @@ widget_t start_preferences_dialog(void)
help = XmStringCreateLocalized(_("Help"));
revert = XmStringCreateLocalized(_("Revert"));
clear = XmStringCreateLocalized(_("Clear"));
+#if HAVE_EXTENSION_LANGUAGE
save = XmStringCreateLocalized(_("Save"));
+#endif
dismiss = XmStringCreateLocalized(_("Go Away"));
n = 0;
@@ -1801,7 +1852,9 @@ widget_t start_preferences_dialog(void)
XtSetArg(args[n], XmNresizePolicy, XmRESIZE_GROW); n++;
XtSetArg(args[n], XmNnoResize, false); n++;
XtSetArg(args[n], XmNtransient, false); n++;
+#if HAVE_EXTENSION_LANGUAGE
XtSetArg(args[n], XmNcancelLabelString, save); n++;
+#endif
XtSetArg(args[n], XmNhelpLabelString, help); n++;
XtSetArg(args[n], XmNokLabelString, dismiss); n++;
XtSetArg(args[n], XmNdialogTitle, title); n++;
@@ -1826,7 +1879,9 @@ widget_t start_preferences_dialog(void)
XtSetArg(args[n], XmNarmColor, ss->sgx->pushed_button_color); n++;
clear_button = XtCreateManagedWidget(_("Clear"), xmPushButtonGadgetClass, preferences_dialog, args, n);
+#if HAVE_EXTENSION_LANGUAGE
XtAddCallback(preferences_dialog, XmNcancelCallback, preferences_save_callback, NULL);
+#endif
XtAddCallback(preferences_dialog, XmNhelpCallback, preferences_help_callback, NULL);
XtAddCallback(preferences_dialog, XmNokCallback, preferences_quit_callback, NULL);
XtAddCallback(revert_button, XmNactivateCallback, preferences_revert_callback, NULL);
@@ -1834,16 +1889,20 @@ widget_t start_preferences_dialog(void)
XmStringFree(title);
XmStringFree(help);
+#if HAVE_EXTENSION_LANGUAGE
XmStringFree(save);
+#endif
XmStringFree(dismiss);
XmStringFree(revert);
XmStringFree(clear);
map_over_children(preferences_dialog, set_main_color_of_widget);
- XtVaSetValues(XmMessageBoxGetChild(preferences_dialog, XmDIALOG_OK_BUTTON), XmNarmColor, ss->sgx->pushed_button_color, NULL);
+#if HAVE_EXTENSION_LANGUAGE
XtVaSetValues(XmMessageBoxGetChild(preferences_dialog, XmDIALOG_CANCEL_BUTTON), XmNarmColor, ss->sgx->pushed_button_color, NULL);
- XtVaSetValues(XmMessageBoxGetChild(preferences_dialog, XmDIALOG_HELP_BUTTON), XmNarmColor, ss->sgx->pushed_button_color, NULL);
XtVaSetValues(XmMessageBoxGetChild(preferences_dialog, XmDIALOG_CANCEL_BUTTON), XmNbackground, ss->sgx->doit_button_color, NULL);
+#endif
+ XtVaSetValues(XmMessageBoxGetChild(preferences_dialog, XmDIALOG_OK_BUTTON), XmNarmColor, ss->sgx->pushed_button_color, NULL);
+ XtVaSetValues(XmMessageBoxGetChild(preferences_dialog, XmDIALOG_HELP_BUTTON), XmNarmColor, ss->sgx->pushed_button_color, NULL);
XtVaSetValues(XmMessageBoxGetChild(preferences_dialog, XmDIALOG_OK_BUTTON), XmNbackground, ss->sgx->quit_button_color, NULL);
XtVaSetValues(XmMessageBoxGetChild(preferences_dialog, XmDIALOG_HELP_BUTTON), XmNbackground, ss->sgx->help_button_color, NULL);
@@ -1893,8 +1952,7 @@ widget_t start_preferences_dialog(void)
"width:", str1, "height:", str2, 6,
dpy_box, current_sep,
startup_size_text);
- /* this is not reflected */
- remember_pref(prf, NULL, save_init_window_size, NULL, clear_init_window_size, revert_init_window_size);
+ remember_pref(prf, reflect_init_window_size, save_init_window_size, NULL, clear_init_window_size, revert_init_window_size);
free(str2);
free(str1);
@@ -2809,7 +2867,7 @@ widget_t start_preferences_dialog(void)
show_listener_toggle);
remember_pref(prf, reflect_show_listener, save_show_listener, NULL, clear_show_listener, revert_show_listener);
-#if HAVE_S7
+#if HAVE_SCHEME
current_sep = make_inter_variable_separator(prg_box, prf->label);
str = mus_format("%d", rts_optimization = optimization(ss));
prf = prefs_row_with_number("optimization level", S_optimization,
diff --git a/snd-xref.c b/snd-xref.c
index 204f476..64ac5d4 100644
--- a/snd-xref.c
+++ b/snd-xref.c
@@ -1,5 +1,5 @@
/* Snd help index (generated by index.cl) */
-#define HELP_NAMES_SIZE 1332
+#define HELP_NAMES_SIZE 1334
#if HAVE_SCHEME || HAVE_FORTH
static const char *help_names[HELP_NAMES_SIZE] = {
"abort",
@@ -337,6 +337,8 @@ static const char *help_names[HELP_NAMES_SIZE] = {
"fir-filter?",
"firmant",
"firmant?",
+ "flocsig",
+ "flocsig?",
"flute model",
"fm-bell",
"fm-drum",
@@ -506,6 +508,7 @@ static const char *help_names[HELP_NAMES_SIZE] = {
"make-filtered-comb",
"make-fir-filter",
"make-firmant",
+ "make-flocsig",
"make-formant",
"make-frame",
"make-frame!",
@@ -588,7 +591,6 @@ static const char *help_names[HELP_NAMES_SIZE] = {
"mark-name",
"mark-name->id",
"mark-properties",
- "mark-properties",
"mark-property",
"mark-sample",
"mark-sync",
@@ -1672,6 +1674,8 @@ static const char *help_names[HELP_NAMES_SIZE] = {
"fir_filter?",
"firmant",
"firmant?",
+ "flocsig",
+ "flocsig?",
"flute_model",
"fm_bell",
"fm_drum",
@@ -1841,6 +1845,7 @@ static const char *help_names[HELP_NAMES_SIZE] = {
"make_filtered_comb",
"make_fir_filter",
"make_firmant",
+ "make_flocsig",
"make_formant",
"make_frame",
"make_frame!",
@@ -1923,7 +1928,6 @@ static const char *help_names[HELP_NAMES_SIZE] = {
"mark_name",
"mark_name2id",
"mark_properties",
- "mark_properties",
"mark_property",
"mark_sample",
"mark_sync",
@@ -2759,7 +2763,7 @@ static const char *help_urls[HELP_NAMES_SIZE] = {
"sndscm.html#channelenvelope",
"sndscm.html#channelpolynomial",
"extsnd.html#channelproperties",
- "sndscm.html#channelproperty",
+ "extsnd.html#channelproperty",
"sndscm.html#channelrms",
"extsnd.html#channelstyle",
"sndscm.html#channelsync",
@@ -2909,7 +2913,7 @@ static const char *help_urls[HELP_NAMES_SIZE] = {
"extsnd.html#editlisttofunction",
"extsnd.html#editposition",
"extsnd.html#editproperties",
- "sndscm.html#editproperty",
+ "extsnd.html#editproperty",
"extsnd.html#edittree",
"extsnd.html#edits",
"sndclm.html#edot-product",
@@ -3009,6 +3013,8 @@ static const char *help_urls[HELP_NAMES_SIZE] = {
"sndclm.html#fir-filter?",
"sndclm.html#firmant",
"sndclm.html#firmant?",
+ "sndclm.html#flocsig",
+ "sndclm.html#flocsig?",
"sndscm.html#stereoflute",
"sndscm.html#fmbell",
"sndscm.html#fmdrum",
@@ -3178,6 +3184,7 @@ static const char *help_urls[HELP_NAMES_SIZE] = {
"sndclm.html#make-filtered-comb",
"sndclm.html#make-fir-filter",
"sndclm.html#make-firmant",
+ "sndclm.html#make-flocsig",
"sndclm.html#make-formant",
"sndclm.html#make-frame",
"sndclm.html#make-frame!",
@@ -3259,9 +3266,8 @@ static const char *help_urls[HELP_NAMES_SIZE] = {
"sndscm.html#markloops",
"extsnd.html#markname",
"sndscm.html#marknametoid",
- "sndscm.html#markproperties",
"extsnd.html#markproperties",
- "sndscm.html#markproperty",
+ "extsnd.html#markproperty",
"extsnd.html#marksample",
"extsnd.html#marksync",
"extsnd.html#marksyncmax",
@@ -3300,7 +3306,7 @@ static const char *help_urls[HELP_NAMES_SIZE] = {
"sndscm.html#mixnametoid",
"extsnd.html#mixposition",
"extsnd.html#mixproperties",
- "sndscm.html#mixproperty",
+ "extsnd.html#mixproperty",
"extsnd.html#mixregion",
"extsnd.html#mixreleasehook",
"extsnd.html#mixsamplerQ",
@@ -3801,7 +3807,7 @@ static const char *help_urls[HELP_NAMES_SIZE] = {
"sndscm.html#sound-let",
"extsnd.html#soundloopinfo",
"extsnd.html#soundproperties",
- "sndscm.html#soundproperty",
+ "extsnd.html#soundproperty",
"extsnd.html#soundwidgets",
"extsnd.html#soundp",
"extsnd.html#soundfontinfo",
diff --git a/snd.c b/snd.c
index bd5e8cf..83e820d 100644
--- a/snd.c
+++ b/snd.c
@@ -357,7 +357,7 @@ static void snd_sigusr1(int ignored)
XEN_ERROR(XEN_ERROR_TYPE("snd-top-level"), XEN_EMPTY_LIST);
}
-#if HAVE_S7
+#if HAVE_SCHEME
static void jump_to_top_level(void)
{
top_level_catch(1);
@@ -415,23 +415,6 @@ static void snd_gsl_error(const char *reason, const char *file, int line, int gs
gsl_set_error_handler(snd_gsl_error);
#endif
-#if ENABLE_NLS && HAVE_GETTEXT && defined(LOCALE_DIR)
- /* both flags needed to avoid idiotic confusion on the Sun */
- #if HAVE_SETLOCALE
- setlocale (LC_ALL, "");
- #endif
- bindtextdomain(SND_PACKAGE, LOCALE_DIR);
- textdomain (SND_PACKAGE);
- /*
- (bindtextdomain "snd" "/usr/local/share/locale")
- (textdomain "snd")
- (define _ gettext)
- (display (_ "no selection"))
-
- but that is limited to Snd's messages
- */
-#endif
-
ss = (snd_state *)calloc(1, sizeof(snd_state)); /* not calloc! */
ss->fam_ok = false;
ss->cg_seen = false;
@@ -440,7 +423,7 @@ static void snd_gsl_error(const char *reason, const char *file, int line, int gs
mus_sound_initialize(); /* has to precede version check (mus_audio_moniker needs to be setup in Alsa/Oss) */
xen_initialize();
-#if HAVE_S7 && HAVE_SETJMP_H
+#if HAVE_SCHEME && HAVE_SETJMP_H
s7_set_error_exiter(s7, jump_to_top_level);
#endif
@@ -499,7 +482,7 @@ static void snd_gsl_error(const char *reason, const char *file, int line, int gs
ss->xen_error_handler = NULL;
ss->update_sound_channel_style = NOT_A_CHANNEL_STYLE;
-#if USE_NO_GUI || HAVE_RUBY || HAVE_FORTH || HAVE_S7
+#if USE_NO_GUI || HAVE_RUBY || HAVE_FORTH || HAVE_SCHEME
ss->catch_exists = 1; /* scm_shell for USE_NO_GUI case */
#else
ss->catch_exists = 0;
@@ -520,7 +503,7 @@ static void snd_gsl_error(const char *reason, const char *file, int line, int gs
signal(SIGUSR1, snd_sigusr1);
#endif
-#if HAVE_S7 && defined(SIGQUIT)
+#if HAVE_SCHEME && defined(SIGQUIT)
sigaction(SIGQUIT, NULL, &old_act);
if (old_act.sa_handler != SIG_IGN)
{
@@ -530,15 +513,11 @@ static void snd_gsl_error(const char *reason, const char *file, int line, int gs
}
#endif
-#ifdef SND_AS_PD_EXTERNAL
- return;
+#ifdef SND_AS_WIDGET
+ return(ss);
#else
- #ifdef SND_AS_WIDGET
- return(ss);
- #else
- snd_doit(argc, argv);
- return(0);
- #endif
+ snd_doit(argc, argv);
+ return(0);
#endif
}
@@ -549,16 +528,6 @@ static void snd_gsl_error(const char *reason, const char *file, int line, int gs
#endif
-#ifdef SND_AS_PD_EXTERNAL
-int snd_pd_main(void)
-{
- char *argv[] = {"pd", "-noglob", "-noinit"};
- snd_main(NULL, 3, argv);
- return(0);
-}
-#endif
-
-
void g_init_base(void)
{
#define H_mus_error_hook S_mus_error_hook " (error-type error-message): called upon mus_error. \
diff --git a/snd.h b/snd.h
index 507f720..95bfa2a 100644
--- a/snd.h
+++ b/snd.h
@@ -71,11 +71,11 @@
#include "snd-strings.h"
-#define SND_DATE "5-Jan-10"
+#define SND_DATE "11-Feb-10"
#ifndef SND_VERSION
-#define SND_VERSION "11.2"
+#define SND_VERSION "11.3"
#endif
#define SND_MAJOR_VERSION "11"
-#define SND_MINOR_VERSION "2"
+#define SND_MINOR_VERSION "3"
#endif
diff --git a/snd_conffile.scm b/snd_conffile.scm
deleted file mode 100644
index 9a949eb..0000000
--- a/snd_conffile.scm
+++ /dev/null
@@ -1,2389 +0,0 @@
-;; My config file for snd.
-;; -Kjetil S. Matheussen.
-
-;; Should work for gtk and perhaps motif.
-(define srfi-loaded #f)
-(define common-list-loaded #f)
-
-(define (atleast-version a b c)
- (let ((version (map string->number (string-split (version) #\.))))
- (or (> (car version) a)
- (and (= (car version) a)
- (or (> (cadr version) b)
- (and (= b (cadr version))
- (>= (caddr version) c)))))))
-
-(define (atleast1.8.0?)
- (atleast-version 1 8 0))
-
-(define (atleast1.6.4?)
- (atleast-version 1 6 4))
-
-(if (not (atleast1.6.4?))
- (begin
- (display "Warning, snd_conffile.scm has not been tested with earlier versions of Guile than 1.6.4.")(newline)
- (display "In case of problems, please upgrade Guile to the latest version, and recompile Snd.")(newline)))
-
-(if (not (atleast1.8.0?))
- (display "Warning. snd_conffile.scm should be run using Guile at least v1.8. This might not work.\n"))
-
-
-
-(use-modules (ice-9 debug))
-(use-modules (ice-9 rdelim))
-
-(provide 'snd-snd_conffile.scm)
-
-
-(set! (show-backtrace) #t)
-(debug-enable 'debug)
-(read-enable 'positions)
-(if #f
- (begin
- (read-enable 'positions)
- (debug-enable 'debug)
- (debug-enable 'backtrace)
- (debug-set! frames 28)
- (debug-set! depth 250)))
-
-;(use-modules (ice-9 readline))
-;(activate-readline)
-
-
-(define c-initializing
- (let ((num 33))
- (lambda ()
- (gtk_window_set_title (GTK_WINDOW (cadr (main-widgets))) (string-append "Initializing: " (number->string num)))
- (while (= 1 (gtk_events_pending))
- (gtk_main_iteration))
- (set! num (1- num)))))
-
-(c-initializing)
-(define c-old-load-from-path load-from-path)
-(define (load-from-path filename)
- (c-old-load-from-path filename)
- (c-initializing))
-
-
-(define (c-for init pred least add proc)
- (do ((n init (+ n add)))
- ((not (pred n least)))
- (proc n)))
-
-(set! (window-height) 600)
-(while (= 1 (gtk_events_pending))
- (gtk_main_iteration))
-(set! (window-width) 800)
-(while (= 1 (gtk_events_pending))
- (gtk_main_iteration))
-
-(set! (show-listener) #t)
-(while (= 1 (gtk_events_pending))
- (gtk_main_iteration))
-
-
-(set! (window-width) 800)
-(while (= 1 (gtk_events_pending))
- (gtk_main_iteration))
-
-;(gtk_paned_set_position (GTK_PANED (list-ref (main-widgets) 3)) 100)
-;(while (= 1 (gtk_events_pending))
-; (gtk_main_iteration))
-
-
-#!
-
-(set! (show-listener) #f)
-(gtk_main_iteration_do #f)
-!#
-
-
-;;##############################################################
-;; c-define is used instead of define when theres a variable the
-;; user might want to define before loading this file.
-;;##############################################################
-
-(define-macro (c-define name val)
- (if (not (defined? name))
- `(define ,name ,val)))
-
-
-
-;;##############################################################
-;; Let everything that is printed to the listener go to stdout
-;; as well. (Error printing from hooks and timed callbacks)
-;;##############################################################
-
-(add-hook! print-hook
- (lambda (msg)
- (display msg)
- #f))
-
-
-;(add-hook! snd-error-hook
-; (lambda (msg)
-; (display "snd-error!")(newline)
-; (display msg)
-; #f))
-
-;;##############################################################
-;; Various settings.
-;; (ladspa-dir), %load-path, (temp-dir) and (save-dir) are
-;; variables you might want to set in your .snd file.
-;;##############################################################
-
-(if (defined? 'notam-settings)
- ;; This is the settings used at Notam/Oslo. May not suite your setup.
- (begin
- (set! (ladspa-dir) "/usr/lib/ladspa")
- (set! %load-path (cons "/hom/kjetism/snd-run" %load-path))
- (set! (temp-dir) "/lyd/local/tmp")
- (set! (save-dir) "/lyd/local/tmp")))
-
-(if (defined? 'kjetil-settings)
- ;; This is for my personal computers settings. May not suite your setup.
- (begin
- (set! %load-path (cons "/home/kjetil/snd-run" %load-path))
- (primitive-eval '(define *eval-c-CFLAGS* "-march=athlon-xp"))
- ))
-
-
-
-
-
-
-;;##############################################################
-;; Load various files
-;;##############################################################
-
-
-;;(if (not (provided? 'snd-snd-hobbit.scm))
-;; (load-from-path "snd-hobbit.scm"))
-
-
-
-(if (not (provided? 'snd-gui.scm))
- (load-from-path "gui.scm"))
-
-
-(if (not use-gtk)
- (c-display "Motif is currently not much supported in snd_conffile.scm."
- "You should compile up Snd using the --with-gtk and --with-static-xm configure options."))
-
-
-
-
-(c-load-from-path rgb)
-
-
-(define-macro (c-show-times time force)
- `(call-non-cons c-show-times-das ,time ,force))
-
-
-
-
-;;(load-from-path "bird.scm")
-
-
-
-
-;;##############################################################
-;; Set various variables
-;;##############################################################
-
-;;(set! *snd-remember-paths* #t)
-
-(set! (just-sounds) #t)
-
-(c-define c-default-output-srate 44100)
-(set! (default-output-srate) c-default-output-srate)
-
-(if (defined? 'c-default-output-type)
- (c-display "Warning: c-default-output-type replaced with c-default-output-header-type"))
-(c-define c-default-output-header-type mus-riff)
-(set! (default-output-header-type) c-default-output-header-type)
-
-(c-define c-default-output-chans 2)
-(set! (default-output-chans) c-default-output-chans)
-
-(if (defined? 'c-default-output-format)
- (c-display "Warning: c-default-output-format replaced with c-default-output-data-format"))
-(c-define c-default-output-data-format mus-lfloat)
-(set! (default-output-data-format) c-default-output-data-format)
-
-(c-define c-show-backtrace #t)
-(set! (show-backtrace) c-show-backtrace)
-
-(c-define c-show-indices #t)
-(set! (show-indices) c-show-indices)
-
-(c-define c-auto-resize #f)
-(set! (auto-resize) c-auto-resize)
-
-; Regions are created when needed when using the ctrl+y and ctrl+w keybindings.
-(set! (selection-creates-region) #f)
-
-;; Less than 64 seems to be very unreliable.
-(c-define *c-minimum-dac-size* 2048)
-(if (< (dac-size) *c-minimum-dac-size*)
- (set! (dac-size) *c-minimum-dac-size*))
-
-
-;; Set graph-style to filled.
-(set! (graph-style) graph-filled)
-
-;; This is the value for the loop-button.
-(c-define *c-islooping* #t)
-
-(c-define *c-backgroundcolor* (make-color 0.8 0.8 0.78))
-(c-define *c-selectioncolor* white)
-
-(c-define *c-restore-previous-session* #t)
-(c-define *c-use-envelope* #f)
-(c-define *c-cursor-color* blue)
-
-(c-define *c-zoomfactor* 1.2)
-
-;; Percent of the window to move the cursor forward/backward using which keys.
-(c-define *c-cursormovetime-rightleft* 2)
-(c-define *c-cursormovetime-updown* 10)
-(c-define *c-cursormovetime-pageupdown* 50)
-
-
-
-(c-define *c-show-sonogram-cursor* #t)
-(set! (show-sonogram-cursor) *c-show-sonogram-cursor*)
-
-#!
-;; Workaround for transform-hook bug
-(add-hook! before-transform-hook
- (lambda (snd chn)
- (if (show-sonogram-cursor)
- (set! (show-sonogram-cursor) #f))))
-
-(add-hook! after-transform-hook
- (lambda (snd chn scaler)
- (c-display "scaler" scaler)
- (if (not (eq? (show-sonogram-cursor) *c-show-sonogram-cursor*))
- (set! (show-sonogram-cursor) *c-show-sonogram-cursor*))))
-!#
-
-
-(c-define *c-show-transform-peaks* #t)
-(set! (show-transform-peaks) *c-show-transform-peaks*)
-
-(c-define *c-transform-graph-type* graph-as-sonogram)
-(set! (transform-graph-type) *c-transform-graph-type*)
-
-(c-define *c-fft-log-magnitude* #t)
-(set! (fft-log-magnitude) *c-fft-log-magnitude*)
-
-(c-define *c-color-inverted* #f)
-(set! (color-inverted) *c-color-inverted*)
-
-(c-define *c-color-scale* 0.5)
-(set! (color-scale) *c-color-scale*)
-
-(c-define *c-color-cutoff* 0.0)
-(set! (color-cutoff) *c-color-cutoff*)
-
-(c-define *c-colormap* bone-colormap)
-(set! (colormap) *c-colormap*)
-
-(c-define *c-transform-size* 1024)
-(set! (transform-size) *c-transform-size*)
-
-
-
-;; Hopefully this will change.
-(define c-setting-cursor-color-cause-redraw #t)
-
-(define c-is-stop-hooks-here #f)
-;;(defined? 'stop-playing-hook))
-
-
-(define *c-is-starting-up* #t)
-
-
-;; We need our own after-open-hook, because its too complicated to ensure
-;; that the c-snd-putgetdata hook is run first.
-(define *c-after-open-hook* (<hook>))
-
-
-;;##############################################################
-;; Documentation for this configuration file.
-;;##############################################################
-
-
-
-(add-to-menu 4 "--------------------------------" (lambda () #t) 0)
-(add-to-menu 4 "But! How do I..."
- (lambda ()
- (help-dialog "How do I..."
- (apply string-append (map (lambda (s) (string-append s (string #\newline)))
- '(
- "Play:"
- " <Space>"
- ""
- "Play selection:"
- " <Space>"
- ""
- "Stop playing:"
- " <Space>"
- ""
- "Play from cursor:"
- " p"
- ""
- "Pause playing:"
- " p"
- ""
- "Play starting from mousepointer position:"
- " <Mouse Scroll Up/Down>"
- ""
- "Cut:"
- " <Ctrl>+w"
- ""
- "Paste:"
- " <Ctrl>+y"
- ""
- "Mix-Paste:"
- " <Ctrl>+x+y"
- ""
- "Zoom in:"
- " +"
- ""
- "Zoom out:"
- " -"
- ""
- "Show all:"
- " a"
- ""
- "Show selection:"
- " s"
- ""
- "Show/hide controls:"
- " c"
- ""
- "Show/hide listener:"
- " l"
- ""
- "Undo:"
- " <Ctrl>+_"
- ""
- "Make mark"
- " m"
- ""
- "Move cursor 2 percent forward"
- " <Arrow right>"
- ""
- "Move cursor 2 percent backward"
- " <Arrow left>"
- ""
- "Move cursor 10 percent forward"
- " <Arrow up>"
- ""
- "Move cursor 10 percent backward"
- " <Arrow down>"
- ""
- "Move cursor 50 percent forward"
- " <Page Up>"
- ""
- "Move cursor 50 percent backward"
- " <Page Down>"
- ""
- "Set cursor at beginning:"
- " <"
- ""
- "Set cursor at end:"
- " >"
- ""
- "Change selection without destroying the old one:"
- " <Ctrl> + <Mouse>"
- ""
- "Move selected area:"
- " <Shift> + <Mouse>"
- ""
- "Remove Node"
- " <Right Mouse click> OR <Shift> + <Right Mouse>"
- ""
- "Set Node at Middle position:"
- " <Shift> + <Mouse>"
- ""
- "Finetune Node position:"
- " <Ctrl> + <Mouse>"
- ""
- "Move node only in x or y directioy"
- " <Right Mouse button>"
- ""
- "Apply Envelope:"
- " v"
- ))))
- )
- 0)
-
-
-
-
-
-;;##############################################################
-;; Various more or less general functions
-;;##############################################################
-
-
-(define (c-get-nameform snd)
- (if use-gtk
- (GTK_BOX (list-ref (sound-widgets snd) 10))
- (find-child (list-ref (sound-widgets snd) 2) "snd-name-form")))
-
-(define (c-for-each-nameform-button snd name func)
- (for-each-child (c-get-nameform snd)
- (lambda (w)
- (if use-gtk
- (if (and (GTK_IS_BUTTON w)
- (string=? name (gtk_button_get_label (GTK_BUTTON w))))
- (func (GTK_BUTTON w)))
- (if (string=? (XtName w) name)
- (func w))))))
-
-(define (c-get-nameform-button snd name)
- (call-with-current-continuation
- (lambda (return)
- (c-for-each-nameform-button snd name return)
- #f)))
-
-
-(define (c-redraw)
- (set! (cursor-color) (cursor-color)))
-
-;; Selection-position and selection-frames doesn't allways work properly.
-(define (c-selection-position)
- (selection-position (c-selected-sound)))
-(define (c-selection-frames)
- (selection-frames (c-selected-sound)))
-
-(define* (c-set-selection-position! snd ch val #:optional (dassync (c-sync? snd)))
- (let ((mustredraw #f))
- (c-for 0 < (chans snd) 1
- (lambda (n)
- (if (or dassync
- (= n ch))
- (set! (selection-position snd n) val)
- (if (selection-member? snd n)
- (begin
- (set! mustredraw #t)
- (set! (selection-member? snd n) #f))))))
- (if mustredraw
- (c-redraw))))
-
-
-(define* (c-set-selection-frames! snd ch val #:optional (dassync (c-sync? snd)))
- (c-for 0 < (chans snd) 1
- (lambda (n)
- (if (or dassync
- (= n ch))
- (set! (selection-frames snd n) val)))))
-
-
-(define* (c-set-selection! snd ch start end #:optional (dassync (c-sync? snd)))
- (c-set-selection-position! snd ch start dassync)
- (c-set-selection-frames! snd ch (- end start -1) dassync))
-
-;; Like (selection?) but only for the selected sound.
-(define (c-selection?)
- (selection-member? (c-selected-sound)))
-
-
-
-;; Returns true if file is allready loaded. Necesarry to unscrew up open-hook handling.
-(define (c-isloaded? filename)
- (member filename (map (lambda (snd) (file-name snd))
- (sounds))))
-
-
-(define (c-set-cursor-pos pos)
- (c-for-each-channel2 (c-selected-sound)
- (lambda (ch)
- (set! (cursor (c-selected-sound) ch) (c-integer pos)))))
-
-
-(define* (c-use-rt-player? #:optional (snd (c-selected-sound)))
- (and (defined? '*rt-use-rt-player*)
- *rt-use-rt-player*
- (<= num-running-ladspas 0)
- (not (expand-control? snd))
- (not (filter-control? snd))
- (not (contrast-control? snd))
- (not (reverb-control? snd))))
-
-
-(define (c-playing)
- (or (playing)
- (and (c-use-rt-player?)
- (rt-snd-is-playing?))))
-
-;; Like (set-cursor-pos pos), but legalize pos and
-;; calls c-show-times as well. Also works when playing.
-(define (c-set-cursor-pos2 pos)
- (let ((isplaying (c-playing))
- (legalpos (min (frames) (max 0 pos))))
- (if isplaying
- (-> (c-p) set-cursor legalpos)
- (begin
- (c-show-times legalpos #f)
- (c-set-cursor-pos legalpos)))))
-
-
-(define c-snd-putgetdata (make-hash-table 32))
-
-(define (c-put snd name data)
- (hash-set! (hash-ref c-snd-putgetdata snd) name data))
-
-
-(define* (c-get snd name #:optional default)
- (hash-ref (hash-ref c-snd-putgetdata snd) name default))
-
-
-
-;; This following command had to be moved nearly to the end of this file, before opening previous files:
-;(add-hook! after-open-hook
-; (lambda (snd)
-; (hash-set! c-snd-putgetdata snd (make-hash-table 16))
-; #f))
-
-
-
-
-
-
-;;##############################################################
-;; Customize the cursor look
-;;##############################################################
-
-(if (not c-setting-cursor-color-cause-redraw)
- (add-hook! start-playing-hook
- (lambda (snd)
- (set! (cursor-color) yellow)
- #f)))
-
-(set! (cursor-color) *c-cursor-color*)
-
-(if (not c-setting-cursor-color-cause-redraw)
- (add-hook! stop-playing-hook
- (lambda (snd)
- (set! (cursor-color) blue)
- ;;(gc)
- #f)))
-
-;; Set different color on the cursor when playing selection.
-(if (not c-setting-cursor-color-cause-redraw)
- (add-hook! start-playing-selection-hook
- (lambda ()
- ;;(display "Start playing selection")(newline)
- (set! (cursor-color) green)
- #f)))
-
-
-(if (not c-setting-cursor-color-cause-redraw)
- (add-hook! stop-playing-selection-hook
- (lambda ()
- ;;(display "Stop playing selection")(newline)
- (set! (cursor-color) blue)
- #f)))
-
-
-
-;; Let the cursor move when playing. (copied from the manual)
-(add-hook! after-open-hook
- (lambda (snd)
- (c-for-each-channel2 snd
- (lambda (i)
- (set! (cursor snd i) 0)))
- (c-set-sound-cursor snd cursor-line)
- #f))
-
-(set! (cursor-follows-play) #t)
-
-
-
-
-
-
-
-
-
-
-
-
-;;##############################################################
-;; Various mouse handling
-;;##############################################################
-
-
-;; Removes default mouse-click-hook handling. The possibility to paste with
-;; mouse-button 2 is really annoying when using a wheel mouse.
-(add-hook! mouse-click-hook (lambda (snd chn button state x y axis)
- #t))
-
-
-;; Moves the playing position when clicking in the editor if clicking button 1 or 4.
-;; Moves cursor and stops playing if clicking buttton 5. (wheel down)
-;; Moves cursor and starts playing if clicking button 4. (wheel up)
-
-(add-hook! mouse-click-hook
- (lambda (snd chn button state x y axis)
- (if (and (not (= state 260))
- (= axis time-graph))
- (let ((samp (max 0 (c-integer (* (srate snd) (position->x x snd chn)))))
- (dasspeed (speed-control))
- (play (selected-sound) :start (c-p snd)))
- (cond ((= button 4)
- (if (< dasspeed 0)
- (set! (speed-control) (* -1 dasspeed)))
- (-> play play2 samp))
- ((= button 5)
- (if (> dasspeed 0)
- (set! (speed-control) (* -1 dasspeed)))
- (-> play play2 samp))
- (else
- (c-show-times samp #t)
- (if (-> play isplaying)
- (-> play stop samp)
- (set! (cursor snd) samp))))))
- #f))
-
-
-#!
-(set! (speed-control) -1)
-(play (selected-sound) (- (frames) 1000) 1000)
-!#
-
-
-;;##############################################################
-;; Playing
-;;##############################################################
-
-
-(def-class (<play> snd)
- (define isplaying #f)
- (define startplaypos 0)
- (define playtype 'song)
-
- (define (get-selection-start)
- (if (c-use-rt-player?)
- (if (selection-member? snd)
- (selection-position snd)
- 0)
- (if (selection-member? snd)
- (if (< (speed-control snd) 0)
- (+ (selection-position snd) (selection-frames snd))
- (selection-position snd))
- (if (< (speed-control snd) 0)
- (1- (frames snd))
- 0))))
-
- (define (get-selection-end)
- (if (c-use-rt-player?)
- (if (selection-member? snd)
- (+ (selection-position snd) (selection-frames snd))
- (frames snd))
- (if (selection-member? snd)
- (if (< (speed-control snd) 0)
- (selection-position snd)
- (+ (selection-position snd) (selection-frames snd)))
- (if (< (speed-control snd) 0)
- 0
- (1- (frames snd))))))
-
- (define (my-stop-playing)
- (if (c-use-rt-player?)
- (rt-snd-stop-playing))
- (stop-playing))
-
- (def-method (play pos)
- (define (das-play)
- (play (selected-sound) 0 :stop das-callback))
- (define (das-callback x)
- (if (and (= x 0) *c-islooping*)
- (das-play)
- (set! isplaying #f)))
- (set! isplaying #t)
- (set! startplaypos (if pos (c-integer pos) (cursor snd)))
- (set! playtype 'song)
-
- (if (c-use-rt-player?)
- (rt-snd-play snd 0 #f startplaypos)
- (play (selected-sound) startplaypos :stop das-callback)))
-
- ;; Stops if allready playing
- (def-method (play2 pos)
- (if isplaying
- (begin
- (set! (cursor-follows-play) #f)
- (my-stop-playing)
- (set! (cursor-follows-play) #t)))
- (this->play pos))
-
- (def-method (play-selection #:optional (pos (get-selection-start)))
- (define (das-play)
- (play (selected-sound) :start (get-selection-start) :end (get-selection-end) :stop das-callback))
- (define (das-callback x)
- (if (and (= x 0) *c-islooping*)
- (das-play)
- (set! isplaying #f)))
- (set! isplaying #t)
- (set! startplaypos (c-integer pos))
- (set! playtype 'selection)
- (if (c-use-rt-player?)
- (rt-snd-play snd (get-selection-start) (get-selection-end) (if (>= (speed-control snd) 0)
- pos
- (1- (get-selection-end))))
- (play (selected-sound) pos (get-selection-end) :stop das-callback)))
-
- (def-method (stop #:optional pos)
- (set! (cursor-follows-play) #f)
- (my-stop-playing)
- (set! (cursor) (if pos (c-integer pos) startplaypos))
- (c-show-times (cursor) #t)
- (set! (cursor-follows-play) #t))
-
- (def-method (pause)
- (set! (cursor-follows-play) #f)
- (let ((pos (cursor snd)))
- (my-stop-playing)
- (set! (cursor snd) pos)
- (set! (cursor-follows-play) #t)))
-
- (def-method (continue #:optional (pos (cursor snd)))
- (if (eq? playtype 'song)
- (this->play pos)
- (this->play-selection pos)))
-
-
- (def-method (isplaying)
- (c-playing))
-
- (def-method (set-cursor pos)
- (set! (cursor-follows-play) #f)
- (my-stop-playing)
- (this->continue pos)
- (set! (cursor-follows-play) #t))
-
- (def-method (dosomepause thunk)
- (if (this->isplaying)
- (begin
- (this->pause)
- (thunk)
- (this->continue))
- (thunk)))
-
- (def-method (selection-is-changed)
- (if (this->isplaying)
- (begin
- (set! (cursor-follows-play) #f)
- (my-stop-playing)
- (this->continue (get-selection-start))
- (set! (cursor-follows-play) #t))))
-
- )
-
-
-
-(add-hook! after-open-hook
- (lambda (snd)
- (c-put snd 'play (<play> snd))))
-
-(define* (c-p #:optional (snd (c-selected-sound)))
- (c-get snd 'play))
-
-(define* (c-play #:optional samp)
- (-> (c-p) play samp))
-(define (c-stop)
- (-> (c-p) stop))
-(define (c-pause)
- (-> (c-p) pause))
-(define (c-continue)
- (-> (c-p) continue))
-(define (c-play-selection)
- (-> (c-p) play-selection))
-
-
-
-;; Can't play many minutes before memory is used up: (and allocating memory stops the world as well)
-(if (defined? 'c-stop-gc-when-playing)
- (begin
- (add-hook! stop-dac-hook
- (lambda ()
- (c-gc-on)))
- (add-hook! stop-playing-hook
- (lambda (snd)
- (c-gc-on)))
- (add-hook! stop-playing-selection-hook
- (lambda ()
- (c-gc-on)))
- (add-hook! start-playing-hook
- (lambda (snd)
- (c-gc-off #f)))
- (add-hook! start-playing-selection-hook
- (lambda ()
- (c-gc-off #f)))))
-
-
-#!
-Doesnt work any more.
-(add-hook! stop-playing-hook
- (lambda (snd)
- (c-display "stop-playing-hook")
- (set! (cursor-follows-play) #f)
- (c-set-cursor-pos (cursor))
- (c-show-times (cursor) #t)
- (set! (cursor-follows-play) #t)))
-!#
-
-
-;; Replace the old space binding with one that starts playing from the current cursor position,
-;; all channels. And stops playing if allready playing.
-(bind-key (char->integer #\ ) 0
- (lambda ()
- (if (-> (c-p) isplaying)
- (-> (c-p) stop)
- (if (c-selection?)
- (-> (c-p) play-selection)
- (-> (c-p) play #f)))))
-
-
-#!
-(-> (c-p) stop)
-(-> (c-p) play #f)
-(-> (c-p) isplaying)
-(in 50
- (lambda ()
- (asdfasdf)))
-!#
-
-;; Makes the P key a pause button. If playing, stops playing, but doesn't reset the cursor pos.
-;; If not playing, starts playing from cursor.
-(bind-key (char->integer #\p) 0
- (lambda x
- (if (-> (c-p) isplaying)
- (-> (c-p) pause)
- (-> (c-p) continue))))
-
-
-
-
-;;##############################################################
-;; View
-;;##############################################################
-
-;; Let the "a" key be a "show-all" key.
-(bind-key (char->integer #\a) 0
- (lambda ()
- (set! (x-bounds) (list 0.0 (/ (frames) (srate))))))
-
-
-;; Let the "s" key be a "show-selection" key.
-(bind-key (char->integer #\s) 0
- (lambda ()
- (set! (x-bounds) (list (/ (c-selection-position) (srate))
- (/ (+ (c-selection-position) (c-selection-frames)) (srate))))))
-
-
-(define (c-set-x-bounds! x1 x2)
- (let* ((all (/ (frames) (srate)))
- (n-x1 (max 0 x1))
- (n-x2 (min all (+ (- n-x1 x1) x2))))
- (if (> x2 all)
- (set! n-x1 (max 0 (- n-x1 (- x2 all)))))
- (if (and (or (>= (* (abs (- n-x1 (car (x-bounds)))) (srate)) 1)
- (>= (* (abs (- n-x2 (cadr (x-bounds)))) (srate)) 1))
- (>= (* (srate) (- n-x2 n-x1)) (if (< (- (frames) (cursor)) 10) 10 1)))
- (set! (x-bounds) (list n-x1 n-x2)))))
-
-(define (c-zoom zoomfactor)
- (let* ((cursor (/ (cursor) (srate)))
- (x1 (car (x-bounds)))
- (x2 (cadr (x-bounds)))
- (length (- x2 x1))
- (n-length (* zoomfactor length))
- (n-x2 (/ (+ (* 2 cursor) n-length) 2))
- (n-x1 (- n-x2 n-length)))
- (c-set-x-bounds! n-x1 n-x2)))
-
-;; -: Zoom out
-(bind-key (char->integer #\-) 0
- (lambda x
- (c-zoom *c-zoomfactor*)))
-
-;; +: Zoom in
-(bind-key (char->integer #\+) 0
- (lambda ()
- (c-zoom (/ 1 *c-zoomfactor*))))
-
-
-
-;; Shows the full sound after opening.
-(add-hook! after-open-hook
- (lambda (n)
- (set! (x-bounds) (list 0.0 (/ (+ (frames) 1) (srate))))
- #f))
-
-;(add-hook! initial-graph-hook
-; (lambda (snd chn dur)
-; (list 0.0 dur)))
-
-
-
-
-
-
-;;##############################################################
-;; Cursor position
-;;##############################################################
-
-(let ((m (lambda (func percent)
- (lambda ()
- (c-set-cursor-pos2 (func (cursor) (* (srate)
- (- (cadr (x-bounds)) (car (x-bounds)))
- 0.01
- percent)))))))
- (bind-key #xFF56 0
- (m - *c-cursormovetime-pageupdown*))
-
- (bind-key #xFF55 0
- (m + *c-cursormovetime-pageupdown*))
-
- (bind-key #xFF52 0
- (m + *c-cursormovetime-updown*))
-
- (bind-key #xFF54 0
- (m - *c-cursormovetime-updown*))
-
- (bind-key #xFF51 0
- (m - *c-cursormovetime-rightleft*))
-
- (bind-key #xFF53 0
- (m + *c-cursormovetime-rightleft*))
-
- (bind-key #xFF57 0
- (lambda () (c-set-cursor-pos2 0)))
-
- (bind-key (char->integer #\<) 0
- (lambda () (c-set-cursor-pos2 0))))
-
-#!
-Does not work.
-(bind-key (char->integer #\>) 0
- (lambda ()
- (c-set-cursor-pos2 (frames))))
-!#
-
-
-
-
-
-
-
-;;##############################################################
-;; Various key-bindings
-;;##############################################################
-
-;; Make snd quit when pressing C-x-c, just like emacs.
-(bind-key (char->integer #\c) 4
- (lambda ()
- (exit))
- #t)
-
-
-(bind-key (char->integer #\y) 4
- (lambda ()
- (mix-selection (cursor)))
- #t)
-
-
-;; Let "c" turn on/off controls
-(bind-key (char->integer #\c) 0
- (lambda ()
- (set! (show-controls)
- (if (show-controls)
- #f
- #t))
- (focus-widget (c-editor-widget (c-selected-sound)))))
-
-;; Let "l" turn on/off listener
-(bind-key (char->integer #\l) 0
- (lambda ()
- (set! (show-listener)
- (if (show-listener #f)
- #f
- #t))
- (focus-widget (c-editor-widget (c-selected-sound)))))
-
-#!
-(add-hook! key-press-hook
- (lambda (snd chn key state)
- (c-display "key: " key)))
-!#
-
-
-
-
-;; Key-bindings to have fun.
-
-(bind-key (char->integer #\z) 0
- (lambda ()
- (set! (speed-control) (* -1 (speed-control)))))
-
-
-(bind-key (char->integer #\q) 0
- (lambda ()
- (set! (speed-control) (* 0.75 (speed-control)))))
-(bind-key (char->integer #\w) 0
- (lambda ()
- (set! (speed-control) (* (if (< (speed-control) 0)
- (if (= 1 (random 10)) 1 -1)
- (if (= 1 (random 10)) -1 1))
- (/ (random 1000) 500)))))
-(bind-key (char->integer #\e) 0
- (lambda ()
- (set! (speed-control) (* 1.25 (speed-control)))))
-
-
-
-
-
-
-;;##############################################################
-;; Set some colors
-;;##############################################################
-
-;; Bacground
-(set! (selected-graph-color) *c-backgroundcolor*)
-(set! (graph-color) *c-backgroundcolor*)
-
-;; Selection
-(set! (selection-color) *c-selectioncolor*)
-
-
-
-
-;;##############################################################
-;; Minibuffer-stuff
-;;##############################################################
-
-(define c-is-prompting-in-minibuffer #f)
-(define prompt-in-minibuffer-old prompt-in-minibuffer)
-(define report-in-minibuffer-old report-in-minibuffer)
-
-(define (prompt-in-minibuffer question func . rest)
- (set! c-is-prompting-in-minibuffer #t)
- (apply prompt-in-minibuffer-old (append (list question
- (lambda (response)
- (let ((ret (func response)))
- (set! c-is-prompting-in-minibuffer #f)
- ret)))
- rest)))
-(define (report-in-minibuffer . args)
- (if (not c-is-prompting-in-minibuffer)
- (apply report-in-minibuffer-old args)))
-
-
-
-;;##############################################################
-;; Marks
-;;##############################################################
-
-; Let m make a named mark, and sync it if the current sound is synced.
-(bind-key (char->integer #\m) 0
- (lambda ()
- (define (my-add-mark sample snd ch syncnum name)
- (if (> ch -1)
- (let ((newmark (add-mark sample snd ch)))
- (set! (mark-sync newmark) syncnum)
- (set! (mark-name newmark) name)
- (my-add-mark sample snd (1- ch) syncnum name))))
- (define my-mark-sync-max
- (let ((max-mark-sync 1000))
- (lambda ()
- (set! max-mark-sync (max (1+ (mark-sync-max)) (1+ max-mark-sync)))
- max-mark-sync)))
- (report-in-minibuffer "")
- (prompt-in-minibuffer "mark: "
- (lambda (ret)
- (if (> (sync) 0)
- (my-add-mark (cursor) (c-selected-sound) (1- (channels)) (my-mark-sync-max) ret)
- (set! (mark-name (add-mark (cursor))) ret)))
- (c-selected-sound)
- #t)))
-
-
-(c-load-from-path marks)
-
-;; The following mark-related lines are copied from marks.scm. For some reason the functions was commented away.
-
-(define (eval-header sndf)
- (and (string? (comment sndf))
- (catch #t
- (lambda ()
- (eval-string (comment sndf)))
- (lambda args #f))))
-
-
-(define (marks->string sndf)
- (let ((str (format #f "(if (not (defined? 'mark-property)) (load \"marks.scm\"))~%(let ((m #f))~%"))
- (chan 0))
- (for-each
- (lambda (chan-marks)
- (for-each
- (lambda (m)
- (set! str
- (string-append str
- (format #f
- " (set! m (add-mark ~A #f ~D))~%"
- (mark-sample m)
- chan)))
- (if (and (string? (mark-name m))
- (> (string-length (mark-name m)) 0))
- (set! str
- (string-append str
- (format #f
- " (set! (mark-name m) ~S)~%"
- (mark-name m)))))
- (if (not (null? (mark-properties m)))
- (set! str
- (string-append str
- (format #f
- " (set! (mark-properties m) '~A)~%"
- (mark-properties m))))))
- chan-marks)
- (set! chan (1+ chan)))
- (marks sndf))
- (string-append str (format #f " m)~%"))))
-
-(add-hook! output-comment-hook (lambda (str) (marks->string (c-selected-sound)) #f))
-(add-hook! after-open-hook (lambda (snd) (eval-header snd) #f))
-
-
-
-
-
-
-;;##############################################################
-;; Replace mouse-selection handling. (probably broken for motif)
-;;##############################################################
-
-
-(let ((about-to-move #f)
- (selection-starting-point #f)
- (dassync #f))
-
- (define (mouse-press-callback snd ch x y button state)
- (if (c-leftbutton? button)
- (let ((samp (c-integer (* (srate snd) (position->x x snd ch))))
- (selmember (selection-member? snd ch)))
- (set! dassync (> (position->y y snd 0) 0))
- (if (< samp 0) (set! samp 0))
- (if (and (c-ctrl? state) selmember)
- (let ((selpos (selection-position snd ch))
- (selframes (selection-frames snd ch)))
- (if (< samp (+ (/ selframes 2) selpos))
- (set! selection-starting-point (+ selpos selframes))
- (set! selection-starting-point selpos))
- (mouse-motion-callback snd ch x y button state))
- (if (and (c-shift? state) selmember)
- (let ((selpos (selection-position snd ch))
- (selframes (selection-frames snd ch)))
- (color-samples-allchans (channels) green selpos selframes)
- (set! about-to-move (<array> selpos selframes)))
- (set! selection-starting-point samp)))
- 'allways-stop!)))
-
- (define (mouse-motion-callback snd ch x y button state)
- (-> (c-p snd) selection-is-changed)
- (let ((samp (max 0 (c-integer (* (srate snd) (position->x x snd ch))))))
- (if about-to-move
- (c-set-selection! snd ch samp (+ samp (about-to-move 1)) dassync)
- (begin
- (if (not (selection-member? snd ch))
- (if (< x selection-starting-point)
- (c-set-selection! snd ch x selection-starting-point dassync)
- (c-set-selection! snd ch selection-starting-point x dassync))
- (let* ((selstart (selection-position snd ch))
- (selframes (selection-frames snd ch))
- (newselstart (if (< samp selection-starting-point)
- samp
- selection-starting-point))
- (newselframes (if (< samp selection-starting-point)
- (- selection-starting-point samp)
- (1+ (- samp selection-starting-point)))))
- (if (and (or (not (= selstart newselstart))
- (not (= selframes newselframes)))
- (not (= samp selection-starting-point)))
- (begin
- (c-put snd 'region-generation (1+ (c-get snd 'region-generation 0)))
- (c-set-selection! snd ch newselstart (+ newselstart newselframes) dassync)))))
- (c-show-times (cursor) #t)))))
-
- (define (mouse-release-callback snd ch x y button state)
- (define (nofunc . x)
- #t)
- (let ((samp (max 0 (c-integer (* (srate snd) (position->x x snd ch))))))
- (if about-to-move
- (begin
- (add-hook! graph-hook nofunc)
- (c-set-selection! snd ch (about-to-move 0) (+ (about-to-move 0) (about-to-move 1)) dassync)
- (c-cut)
- (c-set-cursor-pos samp)
- (remove-hook! graph-hook nofunc)
- (c-paste)
- (c-set-selection! snd ch samp (+ samp (about-to-move 1)) dassync)
- (set! about-to-move #f))
- (begin
- (if selection-starting-point
- (if (not (= samp selection-starting-point))
- (begin
- (if (< samp selection-starting-point)
- (c-set-selection! snd ch samp selection-starting-point dassync)
- (c-set-selection! snd ch selection-starting-point samp dassync))
- (c-gc-on)
- (gc))))
- (c-show-times (cursor) #t)
- (set! selection-starting-point #f))))
- (-> (c-p snd) selection-is-changed)
- (c-gc-on))
-
-
- (<mouse-cycle> mouse-press-callback mouse-motion-callback mouse-release-callback)
-
- )
-
-
-
-
-
-
-
-
-;;##############################################################
-;; Cut and Paste
-;;##############################################################
-
-
-;; Replace the C-y and C-w keybindings. These are equal, but writes
-;; "Please wait" to the window bar, colorize the inserted region and
-;; automaticly creates regions when needed if (selection-creates-region) is false.
-
-(define c-iscolorized #f)
-
-(define (color-samples-allchans chans color start end)
- (if (> chans 0)
- (begin
- (if (eq? color 'black)
- (uncolor-samples (c-selected-sound) (- chans 1))
- (color-samples color start end (c-selected-sound) (- chans 1)))
- (color-samples-allchans (- chans 1) color start end))))
-
-
-
-(define (c-clear-report-hook snd ch)
- (remove-hook! after-graph-hook c-clear-report-hook)
- (c-report " ")
- #f)
-
-
-;; Prints a message to the title-bar, and takes it away when the graph-hook is called.
-(define (c-report-and-clear message)
- (c-report message)
- (add-hook! after-graph-hook c-clear-report-hook))
-
-
-
-#!
-;;This one could have been very nice, but the graph-hook is called very often,
-;;and then the window bar changes title too often too, which is disturbing.
-(add-hook! graph-hook
- (lambda (snd ch y0 y1)
- (c-report-and-clear "Please wait, updating time graph...")
- #f))
-!#
-
-
-(define (c-make-region)
- (if (not (selection-creates-region))
- (if (> (c-get (c-selected-sound) 'region-generation 0) 0)
- (begin
- (c-put (c-selected-sound) 'region-generation 0)
- (c-report-and-clear "Please wait, making region...")
- (make-region)))))
-
-(bind-key (char->integer #\r) 0
- c-make-region)
-
-
-(define (c-paste)
- (if (c-selection?)
- (c-make-region))
- (if (> (length (regions)) 0)
- (begin
- (c-report "Please wait, inserting region...")
- (color-samples-allchans (channels) 'black 0 0)
- (let ((length (region-frames))
- (curspos (cursor)))
- (if (> length 5000000)
- (begin
- (set! (with-background-processes) #f) ;; To prevent using horrible long time, and the little picture not to update properly.
- (insert-region curspos)
- (set! (with-background-processes) #t))
- (insert-region curspos)) ;; The little picture might not update properly. But turning off background-processes slows down pasting of small regions a lot.
- (if (> (sync) 0)
- (color-samples-allchans (channels) green curspos (region-frames))
- (color-samples green curspos (region-frames)))
- (set! c-iscolorized #t)
- (c-report-and-clear "Please wait, updating time graph...")
- (update-time-graph)))))
-
-(bind-key (char->integer #\y) 4
- c-paste)
-
-
-(define (c-cut)
- (if (c-selection?)
- (let ((curspos (c-selection-position)))
- (color-samples-allchans (channels) 'black 0 0)
- (c-set-cursor-pos curspos)
- (c-make-region)
- (c-report-and-clear "Please wait, deleting selection...")
- (delete-selection)
- (set! c-iscolorized #f))))
-
-(bind-key (char->integer #\w) 4
- c-cut)
-
-
-
-
-
-
-
-
-;;##############################################################
-;; Progress reporting (graphic)
-;;##############################################################
-
-(define c-last-report-value 0.0)
-
-(define (progress-report pct . various) ;name current-channel channels snd)
- (c-get-bounds (c-selected-sound) 0
- (lambda (minx miny maxx maxy)
- (let ((width (- maxx minx)))
- (if (> (abs (- pct c-last-report-value)) (/ 1 width))
- (let ((old-color (foreground-color))
- (height 10)
- (new-report-value (/ (floor (* 100 pct)) 100)))
- (if (and (defined? 'rational?)
- (rational? new-report-value))
- (set! new-report-value (exact->inexact new-report-value)))
- (set! (foreground-color) blue)
- (fill-rectangle minx miny (* pct width) height)
- (set! (foreground-color) old-color)
- (report-in-minibuffer (string-append (number->string new-report-value)
- (if (member new-report-value '(0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9))
- "0"
- "")))
- (set! c-last-report-value pct)))))))
-
-(define (start-progress-report . snd)
- (set! c-last-report-value 0.0)
- (report-in-minibuffer "0.00"))
-
-
-
-(define (finish-progress-report . snd)
- (report-in-minibuffer ""))
-
-
-
-
-
-
-;;##############################################################
-;; Show times
-;;##############################################################
-
-;; Show cursor and selection position in minutes, seconds and 1/10th seconds.
-;; This function is often called when playing, so I have tried as much as possible to avoid triggering a garbage collection.
-;; (without very much (if any) success by the way).
-;; The garbage collector can't just be turned off while playing either. I have tried many times,
-;; but theres a huge chance everything goes bananas because of a swapping hell that is eventually
-;; going to happen. Its a scary amount of memory that is allocated by guile just doing small things.
-
-(define c-show-times-das
-
- (let (
-
- (c-dodasprint
- (let* ((lastpainted (list-tabulate 3 (lambda (n) (list-tabulate 4 (lambda (n) #f)))))
- (fontwidth 9)
- (fontheight 12)
- (stringlen (* fontwidth 7))
-
- (sound-widget #f)
- (width #f)
- (x #f)
- (dim #f)
-
- (old-color #f)
- (height #f)
- (y #f))
-
- (lambda-non-cons (string level color framepos force)
- (set! sound-widget (c-editor-widget (c-selected-sound)))
- (set! width (- (car (widget-size sound-widget)) fontwidth))
- (set! x (min (- width stringlen) (x->position (/ framepos (srate)))))
- (set! dim (list-ref lastpainted level))
-
- (if (or force
- (not (car dim))
- (not (= x (car dim))))
- (begin
- (set! old-color (foreground-color))
- (set! y (+ (list-ref (axis-info (c-selected-sound) 0) 11)
- 2
- (* fontheight level)))
- (if (car dim)
- (begin
- (set! (foreground-color) *c-backgroundcolor*)
- ;(c-draw-string sound-widget
- ; (list-ref (snd-gcs) 1)
- ; (car dim) (+ fontheight (cadr dim))
- ; (cadddr dim))
- (fill-rectangle (car dim) (cadr dim) (caddr dim) (+ 2 fontheight))
- ))
- (c-draw-string sound-widget
- color
- x (+ fontheight y)
- string)
-
- (set-car! dim x)
- (set-car! (cdr dim) y)
- (set-car! (cddr dim) stringlen)
- (set-car! (cdddr dim) string)
- (set! (foreground-color) old-color))))))
-
- (get-time-string
- (let* ((ret-string " ")
- (intdiv (lambda-non-cons (a b)
- (c-integer (/ a b))))
- (int->char (lambda-non-cons (i)
- (integer->char (+ (char->integer #\0) i))))
-
- (time #f)
- (minutes #f)
- (minutes100 #f)
- (minutes10 #f)
- (minutes1 #f)
- (seconds #f)
- (seconds10 #f)
- (seconds1 #f)
- (seconds-1 #f)
-
- (p (lambda-non-cons (n)
- (if (< minutes 10)
- (max 0 (- n 2))
- (if (< minutes 100)
- (max 0 (- n 1))
- n)))))
-
- (lambda-non-cons (dastime)
- (set! time (/ (floor (* 10 (/ dastime (srate (c-selected-sound))))) 10))
- (set! minutes (call-non-cons intdiv time 60))
- (set! minutes100 (call-non-cons intdiv minutes 100))
- (set! minutes10 (call-non-cons intdiv (- minutes (* minutes100 100)) 10))
- (set! minutes1 (- minutes (* minutes100 100) (* minutes10 10)))
- (set! seconds (/ (floor (* 10 (- time (* minutes 60)))) 10))
- (set! seconds10 (call-non-cons intdiv seconds 10))
- (set! seconds1 (c-integer (floor (- seconds (* seconds10 10)))))
- (set! seconds-1 (c-integer (floor (* 10 (- seconds (* 10 seconds10) seconds1)))))
-
- (if (< minutes 100)
- (string-set! ret-string 7 #\ )
- (string-set! ret-string 0 (call-non-cons int->char minutes100)))
- (if (< minutes 10)
- (string-set! ret-string 6 #\ )
- (string-set! ret-string (call-non-cons p 1) (call-non-cons int->char minutes10)))
-
- (string-set! ret-string (call-non-cons p 2) (call-non-cons int->char minutes1))
- (string-set! ret-string (call-non-cons p 3) #\:)
- (string-set! ret-string (call-non-cons p 4) (call-non-cons int->char seconds10))
- (string-set! ret-string (call-non-cons p 5) (call-non-cons int->char seconds1))
- (string-set! ret-string (call-non-cons p 6) #\.)
- (string-set! ret-string (call-non-cons p 7) (call-non-cons int->char seconds-1))
-
- ret-string)))
-
-
- (last-time-showed 0)
- (largestring " ")
-
- (largetimechange #f)
- (stereocombined #f)
- (wanttoupdate #f))
-
-
- (lambda-non-cons (dastime force)
- (set! largetimechange (>= (abs (- dastime last-time-showed))
- (/ (srate (c-selected-sound)) 5)))
- (set! stereocombined (and (= (channels) 2)
- (= (channel-style (c-selected-sound)) channels-combined)))
- (set! wanttoupdate (or force largetimechange))
- (if wanttoupdate
- (set! last-time-showed dastime))
-
- (if stereocombined
- (begin
- (call-non-cons c-dodasprint (call-non-cons get-time-string dastime) 0 (list-ref (snd-gcs) 9) dastime wanttoupdate)
- (if (and force (c-selection?))
- (begin
- (call-non-cons c-dodasprint (call-non-cons get-time-string (c-selection-position)) 1 (list-ref (snd-gcs) 3) (c-selection-position) #t)
- (call-non-cons c-dodasprint (call-non-cons get-time-string (+ (c-selection-position) (c-selection-frames))) 2 (list-ref (snd-gcs) 3) (+ (c-selection-position) (c-selection-frames)) #t))))
- (if wanttoupdate
- (report-in-minibuffer (if (c-selection?)
- (begin
- (substring-move! (call-non-cons get-time-string dastime) 0 7 largestring 0)
- (substring-move! (call-non-cons get-time-string (c-selection-position)) 0 7 largestring 9)
- (substring-move! (call-non-cons get-time-string (+ (c-selection-position) (c-selection-frames))) 0 7 largestring 18)
- largestring)
- (call-non-cons get-time-string dastime))))))))
-
-
-
-
-
-
-;; Show the time in the minibuffer when playing
-(let ((samplecount 0))
- (add-hook! play-hook
- (lambda (samples)
- (set! samplecount (+ samplecount (* 40 samples)))
- (if (> samplecount (srate (c-selected-sound)))
- (begin
- (set! samplecount 0)
- (c-show-times (cursor) #f)))
- #f)))
-
-
-;; ..And when updating the graphics.
-(add-hook! after-graph-hook
- (lambda (snd ch)
- (if (= 0 ch)
- (c-show-times (cursor snd) #t))
- #f))
-
-
-
-
-
-
-
-;;##############################################################
-;; The Sync and Loop buttons
-;;##############################################################
-
-;; Doing several things after opening a file.
-;; -Sync and Unite newly loaded files by default.
-;; The sync value should be unique for each sound.
-;; -Replace the sync button with a new one that uses get-unique-sync-num
-;; as the sync-number. Simply using (+ 1 snd) doesn't work when a sound is closed
-;; in certain situations.
-;; -Remove the play button. Its useless now with the way p, space and the mouse scroll-button is configured.
-;; -Added a loop button where the play button was.
-
-(define c-get-unique-sync-num
- (let ((unique-sync-num 0))
- (lambda ()
- (set! unique-sync-num (+ unique-sync-num 1))
- unique-sync-num)))
-
-#!
-(display-widget-tree (list-ref (sound-widgets (c-selected-sound)) 2))
-(find-child (list-ref (sound-widgets (c-selected-sound)) 2) "snd-name-form")
-!#
-
-(add-hook! close-hook
- (lambda (snd)
- (c-for-each-nameform-button snd "loop" checkbutton-remove)
- (c-for-each-nameform-button snd "sync" checkbutton-remove)
- #f))
-
-#!
-(checkbutton-remove (c-get-nameform-button (c-selected-sound) "sync"))
-!#
-
-(define *loop-on-off-hook* (<hook>))
-
-
-(let ((not-now #f))
- (add-hook! after-open-hook
- (lambda (snd)
-
- (checkbutton-remove (c-get-nameform-button snd "unite"))
-
- (let ((oldplay (c-get-nameform-button snd "play")))
- (<checkbutton> (c-get-nameform snd)
- "loop"
- (lambda (on)
- (if (not not-now) ;; checkbutton-set or focus-widget triggers a button-get-active callback, which again
- ;;;;;;;;;;;;;;;; cause checkbutton-set or focus-widget to be called for all other sounds, which again... etc.: and stack runs out.
- (begin
- (set! not-now #t)
- (set! *c-islooping* on)
- (-> *loop-on-off-hook* run on)
- (for-each (lambda (s)
- (if (not (= s snd)) (c-for-each-nameform-button s "loop"
- (lambda (b)
- (checkbutton-set b *c-islooping*)))))
- (sounds))
- (focus-widget (c-editor-widget snd))
- (set! not-now #f))))
- *c-islooping*
- (if use-gtk '() (list XmNx (car (widget-position oldplay)))))
- (checkbutton-remove oldplay))
-
- (if (> (channels snd) 1)
- (set! (channel-style snd) channels-combined))
- (set! (sync snd) (c-get-unique-sync-num))
-
- (let ((oldsync (c-get-nameform-button snd "sync")))
- (<checkbutton> (c-get-nameform snd)
- "sync"
- (lambda (on)
- (if on
- (set! (sync snd) (c-get-unique-sync-num))
- (set! (sync snd) 0))
-
- (focus-widget (c-editor-widget snd)))
- #t
- (if use-gtk '() (list XmNx (car (widget-position oldsync)))))
- (checkbutton-remove oldsync))
-
- #f)))
-
-
-
-
-
-
-;;##############################################################
-;; Gain node-line
-;;##############################################################
-
-(define c-apply-envelope
- (let ((isenving #f))
- (lambda* (snd #:optional (upperval 2) (lowerval 0))
- (if (not isenving)
- (let* ((snd (c-selected-sound))
- (nodelines (c-get snd 'nodelines))
- (doit (lambda (ch)
- (let* ((nodeline (nodelines ch))
- (sel (selection-member? snd ch))
- (start (if sel (selection-position snd ch) 0))
- (start2 (c-scale start 0 (frames snd ch) 0 1))
- (length (if sel (selection-frames snd ch) (frames snd ch))))
- (env-channel (apply append (map (lambda (xy) (list (- (car xy) start2) (c-scale (cadr xy) 0 1 upperval lowerval)))
- (-> nodeline get-graph
- start2
- (c-scale (+ start length) 0 (frames snd ch) 0 1))))
- start length snd ch)))))
- (set! isenving #t)
- (c-for-each-channel snd doit)
- (set! isenving #f))))))
-
-
-(define (c-make-envelope snd)
- (c-put snd 'nodelines
- (<array/map> (channels snd)
- (lambda (ch)
- (<editor-nodeline> snd ch 0.5
- (lambda (val)
- (format #f "~1,3f" (c-scale val 0 1 2 0)))
- (lambda (this)
- (if (c-sync? snd)
- (c-for-each-channel2 snd
- (lambda (newch)
- (if (not (= ch newch))
- (-> ((c-get snd 'nodelines) newch) set-graph!
- (-> this get-graph))))))))))))
-
-(define (c-envfunc1)
- (lambda ()
- (c-apply-envelope (c-selected-sound))))
-(define (c-envfunc-hook snd)
- (c-display "c-envfunc3 c-snd" snd)
- (c-make-envelope snd)
- #f)
-
-(define *c-envelope-enabled* #f)
-
-(define (c-enable-envelope)
- (if (not *c-envelope-enabled*)
- (begin
- (set! *c-envelope-enabled* #t)
- (for-each (lambda (snd)
- (c-make-envelope snd))
- (sounds))
- (bind-key (char->integer #\v) 0 c-envfunc1)
- (-> *c-after-open-hook* add! c-envfunc-hook))))
-
-(define (c-disable-envelope)
- (if *c-envelope-enabled*
- (begin
- (set! *c-envelope-enabled* #f)
- (bind-key (char->integer #\v) 0 (lambda x x))
- (for-each (lambda (snd)
- (let ((envbutton (c-get snd 'envbutton)))
- (if envbutton
- (-> envbutton remove)))
- (let ((nodelines (c-get snd 'nodelines)))
- (if nodelines
- (begin
- (-> nodelines for-each
- (lambda (n nodeline)
- (-> nodeline delete!)))))))
- (sounds))
- (c-redraw)
- (-> *c-after-open-hook* remove! c-envfunc-hook))))
-
-(add-hook! after-open-hook
- (lambda (snd)
- (c-put snd 'envbutton (<button> (c-get-nameform snd)
- "Env"
- (lambda ()
- (if (not *c-envelope-enabled*)
- (c-enable-envelope)
- (c-apply-envelope snd)))))
- (gtk_widget_set_name (-> (c-get snd 'envbutton) button) "doit_button")))
-
-(add-hook! close-hook
- (lambda (snd)
- (-> (c-get snd 'envbutton) remove)))
-
-(if *c-use-envelope*
- (c-enable-envelope))
-
-
-;;(add-hook! after-open-hook
-;; (lambda (snd)
-
-#!
-(c-disable-envelope)
-(c-enable-envelope)
-!#
-
-
-
-;;##################################################################
-;; Focus
-;;##################################################################
-
-#!
-;; The brutal method:
-(define (fokus-right)
- (let ((snd (c-selected-sound)))
- (if snd
- (focus-widget (c-editor-widget snd))))
- (in 100 fokus-right))
-
-(fokus-right)
-!#
-
-(add-hook! mouse-enter-graph-hook
- (lambda (snd chn)
- (if (sound? snd) (focus-widget (car (channel-widgets snd chn))))))
-
-(add-hook! mouse-leave-text-hook
- (lambda (w)
- (in 100
- (lambda ()
- (let ((snd (c-selected-sound)))
- (if snd
- (focus-widget (c-editor-widget snd))))))))
-
-(add-hook! mouse-enter-listener-hook
- (lambda (widget)
- (focus-widget widget)))
-
-
-(define *c-control-hook* (<hook>))
-(define *c-controls-on-off-hook* (<hook>))
-
-;; All checkbuttons in the control-panel and the channel widgets.
-(add-hook! after-open-hook
- (lambda (snd)
- (let ((ws '()))
- (define (fixit w)
- (if (not (member w ws))
- (begin
- (set! ws (cons w ws))
- (for-each-child w
- (lambda (w)
- (if (and (GTK_IS_BUTTON w)
- (string? (gtk_button_get_label (GTK_BUTTON w)))
- (string=? "Apply" (gtk_button_get_label (GTK_BUTTON w))))
- (begin
- (c-remove-handler w "clicked")
- (g_signal_connect w "clicked"
- (lambda (w c)
- (if (selection-member? snd)
- (apply-controls snd 2)
- (apply-controls))
- (focus-widget (c-editor-widget snd))
- #t)))
- (if (GTK_IS_CHECK_BUTTON w)
- (g_signal_connect w "button_release_event"
- (lambda (w e i)
- (-> (c-p snd) dosomepause (lambda ()
- (gtk_button_released (GTK_BUTTON w))
- (-> *c-controls-on-off-hook* run)
- (focus-widget (c-editor-widget snd))))))))
-
- (if (and (GTK_IS_SCROLLBAR w)
- (GTK_IS_RANGE w))
- (let ((adj (gtk_range_get_adjustment (GTK_RANGE w))))
- (g_signal_connect adj "value_changed"
- (lambda (w d)
- (-> *c-control-hook* run)))))
-
- (if (GTK_IS_CONTAINER w)
- (fixit w)))))))
- (c-for-each-channel2 snd
- (lambda (ch)
- (for-each (lambda (w)
- (if (GTK_IS_CONTAINER w)
- (fixit w)))
- (channel-widgets snd ch))))
- (fixit (caddr (sound-widgets snd))))))
-
-
-
-;;##############################################################
-;; dac-size slider in the control-panel
-;;##############################################################
-
-(add-to-menu 3 "Set dac size"
- (lambda ()
- (letrec ((d (<dialog> "Set dac size" #f
- "Close" (lambda () (-> d hide))))
- (snd (c-selected-sound))
- (must-wait-more #f)
- (iswaiting #f))
- (define (waitfunc)
- (in 50
- (lambda ()
- (if must-wait-more
- (begin
- (set! must-wait-more #f)
- (waitfunc))
- (begin
- (-> (c-p snd) continue)
- (set! iswaiting #f))))))
- (<slider> d "dac-size" 1 (dac-size) 8192
- (lambda (val)
- (let ((isplaying (c-playing)))
- (if isplaying
- (-> (c-p snd) pause))
- (set! (dac-size) (c-integer val))
- (focus-widget (c-editor-widget snd))
- (if isplaying
- (if iswaiting
- (set! must-wait-more #t)
- (begin
- (set! iswaiting #t)
- (waitfunc))))))
- 1)
- (-> d show)
- (gtk_window_resize (GTK_WINDOW (-> d dialog)) (window-width) (cadr (widget-size (-> d dialog)))))
- ))
-
-#!
-(set! (verbose-cursor) #t)
-(set! (with-tracking-cursor) #f)
-(cursor-update-interval)
-(set! (tracking-cursor-style 0 0) 1)
-!#
-
-
-
-
-;;##############################################################
-;; Buffer-menu
-;;##############################################################
-
-;; Makes the buffer-menu a bit more pleasent to use. This is code
-;; copied from examp.scm and modified.
-
-(c-load-from-path examp)
-
-
-;;;;;;;;;;;;;;;;
-;;(set! last-height 500)
-;;(set! last-width 700)
-
-(define c-sounds-in-menu '())
-(define (c-remove-sounds-in-menu filename)
- (set! c-sounds-in-menu (remove (lambda (name) (string=? name filename))
- c-sounds-in-menu)))
-
-;; For gtk, the -notebook switch doesn't seem to work very well.
-;; For motif, the -notebook switch doesn't seem to work very well either.
-
-(if (or (not use-gtk)
- (not (string=? "GtkNotebook" (gtk_widget_get_name (list-ref (main-widgets) 5)))))
-
- (let ((buffer-menu (add-to-main-menu "Buffers")))
-
- (define* (c-switch-to-buf filename #:optional from-select-sound)
- (let* ((width (car (widget-size (car (sound-widgets (car current-buffer))))))
- (height (cadr (widget-size (car (sound-widgets (car current-buffer)))))))
-
- ;;(c-display "saving:" (c-selected-sound))
- (if (selection-member? (c-selected-sound))
- (begin
- (c-put (c-selected-sound) 'selection-position (c-selection-position))
- (c-put (c-selected-sound) 'selection-frames (c-selection-frames))))
-
- (call-with-current-continuation
- (lambda (give-up)
- (if (or (not (string? filename))
- (= (string-length filename) 0))
- (let ((temp current-buffer))
- (if last-buffer
- (set! current-buffer last-buffer)
- (let ((index (new-sound)))
- (set! current-buffer (list index 0))))
- (set! last-buffer temp))
- (let ((index (find-sound filename)))
- (if index
- (begin
- (set! last-buffer current-buffer)
- (set! current-buffer (list index 0)))
- (give-up (report-in-minibuffer (format #f "can't find ~A" response))))))
- (close-all-buffers)
- (report-in-minibuffer "")
- (open-current-buffer width height)
- (set! (selection-member? #t) #f)
- (let ((selpos (c-get (c-selected-sound) 'selection-position)))
- ;;(c-display (c-selected-sound) selpos)
- (if selpos
- (begin
- (c-set-selection-position! (c-selected-sound) 0 selpos #t)
- (c-set-selection-frames! (c-selected-sound) 0 (c-get (c-selected-sound) 'selection-frames) #t))))))))
-
-
- ;;(set! (widget-size (car (sound-widgets (car current-buffer)))) (list 1000 1000) )
- (define position 0)
- ;;(define num 0)
- (define (c-open-buffer filename)
- (if (c-isloaded? filename)
- (begin
- (c-switch-to-buf filename)
- #t)
- (letrec ((was-starting-up? *c-is-starting-up*)
- (is-in-menu? (member filename c-sounds-in-menu))
- (add-buffer-menu (lambda (position addstar?)
- (let ((gen-filename filename ));; (let ((ret (string-append (number->string num) " " filename))) (set! num (1+ num)) ret)))
- (add-to-menu buffer-menu
- gen-filename
- (lambda ()
- (if was-starting-up?
- (begin
- ;;(c-display "here")
- (c-remove-sounds-in-menu filename)
- (remove-from-menu buffer-menu gen-filename)
- (open-sound filename))
- (begin
- ;;(c-display "not here")
- (remove-from-menu buffer-menu gen-filename)
- (add-buffer-menu position #t)
- (c-switch-to-buf filename))))
- position)))))
- (if *c-is-starting-up*
- (set! c-sounds-in-menu (cons filename c-sounds-in-menu)))
- (add-buffer-menu position #f)
- ;;(c-display "position" position)
- (if (not was-starting-up?)
- (set! position (1+ position)))
- *c-is-starting-up*)))
-
- (define (c-close-buffer snd)
- "(close-buffer snd) removes the menu item associated with snd (use with close-hook)"
- (let ((filename (file-name snd)))
- ;;(remove-from-menu buffer-menu (string-append "* " filename))
- (remove-from-menu buffer-menu filename)
- (remove-from-menu buffer-menu filename)
- (c-remove-sounds-in-menu filename))
- (if (and (= 1 (length (sounds)))
- (> (length c-sounds-in-menu) 1))
- (let ((filename (find (lambda (name)
- (not (member name (map file-name (sounds)))))
- c-sounds-in-menu)))
- (if filename
- (begin
- ;;(c-display "opening " filename)
- (open-sound filename)))))
- #f)
-
- (add-hook! select-sound-hook (lambda (snd)
- (if current-buffer
- (let* ((width (car (widget-size (car (sound-widgets (car current-buffer))))))
- (height (cadr (widget-size (car (sound-widgets (car current-buffer)))))))
- (set! current-buffer (list snd 0))
- (let ((sound-pane (car (sound-widgets (car current-buffer)))))
- (if sound-pane
- (begin
- (close-all-buffers)
- (show-widget sound-pane))))))))
-
- (add-hook! open-hook c-open-buffer)
- (add-hook! close-hook c-close-buffer)
- ;;(bind-key (char->integer #\b) 0 (lambda (x) (switch-to-buf)))
- (add-hook! close-hook xb-close)
- (add-hook! after-open-hook
- (lambda (snd)
- (set! (selection-member? #t) #f)))
- (add-hook! after-open-hook xb-open)))
-
-
-
-
-
-;;##############################################################
-;; Various
-;;##############################################################
-
-;;"various generally useful Snd extensions". See source.
-(c-load-from-path extensions)
-
-
-;; When exiting.
-(check-for-unsaved-edits #t)
-
-
-(c-load-from-path edit-menu)
-
-
-;;Show the little picture of the whole sound in the upper right corner.
-(set! (with-inset-graph) #t)
-
-
-;; The background-process slows things down when the little picture is active and loading large files.
-;; Better turn off the background-process when loading.
-(add-hook! open-hook (lambda (filename) (if (c-isloaded? filename)
- #t
- (begin
- (c-report (string-append "Please wait, making waveform-data for \"" filename "\"."))
- (set! (with-background-processes) #f)
- #f))))
-(add-hook! after-open-hook (lambda (filename)
- (set! (with-background-processes) #t)
- (c-report " ")
- #f))
-
-
-
-;; Adds a lot of things when pressing the right mouse button. Very nice.
-(if use-gtk
- (c-load-from-path gtk-popup)
- (c-load-from-path popup))
-
-
-(if use-gtk
- (c-load-from-path gtk-effects)
- (c-load-from-path new-effects))
-
-
-(if (provided? 'snd-ladspa)
- (c-load-from-path ladspa))
-
-
-
-;; Stores the peak information for sounds in the ~/peaks/ directory. Seems to work correctly. I have tried
-;; to fool it in many ways, but it seems to be very intelligent. Extremely nice.
-;; The point is to decrease the loading time.
-; First make sure the peaks directory is present
-(system (string-append "mkdir " (getenv "HOME") "/peaks >/dev/null 2>/dev/null"))
-(set! (peak-env-dir) "/peaks")
-
-(if use-gtk
- (c-load-from-path snd-gtk)
- (c-load-from-path snd-motif))
-
-
-;; Shows diskspace for the partition the opened sound was placed on.
-;(add-hook! after-open-hook show-disk-space)
-
-;; Add extra control for the controls dialog.
-(make-hidden-controls-dialog)
-
-;; Add rename option to the file menu.
-(if (not use-gtk)
- (add-rename-option))
-
-
-
-;; Dave Phillips fft-menu.
-(if (not (provided? 'snd-fft-menu.scm))
- (load-from-path "fft-menu.scm"))
-
-;; Dave Phillips panic-menu
-(if (not (provided? 'snd-panic.scm))
- (load-from-path "panic.scm"))
-
-;; Dave Phillips special-menu
-;;(if (not (provided? 'snd-special-menu.scm))
-;; (load-from-path "special-menu.scm"))
-
-
-;; (load-from-path "plugins-menu.scm")
-
-
-;; All of Dave Phillips nice things.
-;; Uncomment to try. (Most of it is already present)
-;;(if (not (defined? 'change-selection-popup-color))
-;; (load-from-path "misc.scm"))
-
-
-(add-hook! after-save-as-hook
- (lambda (snd filename from-dialog)
- (if from-dialog
- (open-sound filename))))
-
-
-
-;;##############################################################
-;; Add/Remove things to the edit-menu
-;;##############################################################
-
-;;; -------- Insert/append file
-;;; Code copied from dlp/special-menu
-
-(add-to-menu edit-menu #f #f)
-
-;;; this is now built-in (27-Jul-05)
-#!
-(add-to-menu edit-menu "Insert file"
- (lambda ()
- (select-file
- (lambda (filename)
- (let ((chans (mus-sound-chans filename)))
- (if (= 1 chans)
- (insert-sound filename (cursor) 0 (c-selected-sound) (selected-channel))
- (insert-sound filename))))
- "Insert file" "." "*" "File will be inserted at cursor location.")))
-!#
-
-(define (append-sound filename)
- ;; appends sound file
- (insert-sound filename (frames)))
-
-(add-to-menu edit-menu "Append file"
- (lambda ()
- (select-file
- (lambda (filename)
- (append-sound filename)))))
-
-(add-to-menu edit-menu #f #f)
-
-(for-each (lambda (name) (remove-from-menu edit-menu name))
- (list "Delete Selection"
- "Insert Selection"
- "Play Selection"
- "Mix Selection"))
-
-
-
-;;##############################################################
-;; Load rt-player. Takes some time.
-;;##############################################################
-
-
-(eval-c (string-append "-I" snd-header-files-path)
- "#include <_sndlib.h>"
- (proto->public "int mus_audio_api(void)")
- (variables->public
- (<int> MUS_JACK_API MUS_ALSA_API MUS_OSS_API)))
-
-(if (= (mus_audio_api) (MUS_JACK_API))
- (load-from-path "rt-player.scm"))
-
-
-
-;;(c-display "GGGGGGGGGG1")
-
-
-;;##############################################################
-;; Store and restore list of used sound-files
-;;##############################################################
-
-(define (c-open-sounds-filename)
- (string-append (getenv "HOME") "/.snd_soundfilelist"))
-
-
-;; Save all filenames when exiting.
-(define (c-save-all-filenames filename)
- (let ((fd (open-file filename "w")))
- (if (c-selected-sound)
- (for-each (lambda (filename)
- (write-line filename fd))
- (reverse (delete-duplicates (append (map (lambda (snd) (file-name snd))
- (cons (c-selected-sound) (sounds)))
- c-sounds-in-menu)))))
- (close fd)))
-
-
-(add-hook! exit-hook (lambda args
- (c-save-all-filenames (c-open-sounds-filename))
- #f))
-
-
-(add-hook! after-open-hook (lambda args
- (if (not *c-is-starting-up*)
- (c-save-all-filenames (c-open-sounds-filename)))
- #f))
-
-
-(add-hook! after-open-hook
- (lambda (snd)
- (hash-set! c-snd-putgetdata snd (make-hash-table 16))
- (-> *c-after-open-hook* run snd)
- #f))
-
-
-;; Load GTK mnemonics code from Maxim Krikun.
-(load-from-path "kmenu.scm")
-
-
-
-;;##############################################################
-;; Load files from previous session.
- ;;##############################################################
-
-(if *c-restore-previous-session*
- (let ((filename #f))
- (system (string-append "touch " (c-open-sounds-filename) " >/dev/null 2>/dev/null"))
- (for-each-line-in-file (c-open-sounds-filename)
- (lambda (line)
- (if (not (access? line F_OK))
- (c-display "File \"" line "\" not found.")
- (catch #t
- (lambda ()
- (if filename
- (open-sound filename))
- (set! filename line))
- (lambda (key . args)
- (c-display "File \"" line "\" not found.")
- #f)))))
- (if filename
- (begin
- (set! *c-is-starting-up* #f)
- (open-sound filename)
- (set! *c-is-starting-up* #t)))
- (in (if use-gtk 0 2000)
- (lambda ()
- (set! (window-width) 800)
- (set! (window-height) 600)))))
-
-
-
-
-
-
-;;##############################################################
-;; Try to make the window-size stay the same.
-;; Seems to work for me at least.
-;;##############################################################
-
-(let ((width 800)
- (height 600)
- (num-retries 0)
- (isretrying #f))
-
-
- (define (dotheretry)
- (if (> num-retries 0)
- (begin
- (if (not (= (window-width) width))
- (set! (window-width) width))
- (if (not (= (window-height) height))
- (set! (window-height) height))
- (set! num-retries (1- num-retries))
- (in 2 dotheretry))
- (set! isretrying #f)))
-
- (add-hook! open-hook
- (lambda (filename)
- (set! height (window-height))
- (set! width (window-width))
- (set! num-retries 250)))
-
- (add-hook! close-hook
- (lambda (snd)
- (set! height (window-height))
- (set! width (window-width))
- (set! num-retries 250)))
-
- (add-hook! graph-hook
- (lambda (snd chn y0 y1)
- (if (not isretrying)
- (begin
- (set! isretrying #t)
- (dotheretry))))))
-
-
-(set! load-from-path c-old-load-from-path)
-
-
-(set! *c-is-starting-up* #f)
-
-
-
-;(define dhg
-; (lambda (snd)
-; (if (show-controls)
-; (gtk_paned_set_position (GTK_PANED (car (sound-widgets snd))) (c-integer (max 100 (min (- (window-height) 400) (* (window-height) 0.5))))))
-; (if (show-listener)
-; (gtk_paned_set_position (GTK_PANED (list-ref (main-widgets) 3)) (c-integer (* (window-height) 0.75))))))
-;
-;(add-hook! graph-hook (lambda x (dhg (car x))))
-
-
-(if #f
- (begin
- (c-display "ai")
- (while (= 1 (gtk_events_pending))
- (gtk_main_iteration))
-
- (if (= (mus_audio_api) (JACK_API))
- (load-from-path "rt-player.scm"))))
-
-
-(c-display)
-(c-display "#:snd_conffile.scm loaded.")
-(c-display (if (not (provided? 'snd-rt-player.scm))
- "SND is currently not using jack, so the RT-Player is not initialized."
- "The RT-Player is currently configured only to run when not using\n LADSPA or the Expand, Contrast, Reverb or Filter control."))
-
-
-
-(set! (show-listener) #f)
-
-;;(gtk_window_set_title (GTK_WINDOW (cadr (main-widgets))) "Snd")
-
-(while (= 1 (gtk_events_pending))
- (gtk_main_iteration))
-
-
-(let ((selected-sound (c-selected-sound)))
- (if selected-sound
- (focus-widget (c-editor-widget selected-sound))))
-
-
-
diff --git a/snd_pd_external.c b/snd_pd_external.c
deleted file mode 100644
index ddbe90b..0000000
--- a/snd_pd_external.c
+++ /dev/null
@@ -1,1151 +0,0 @@
-/* --------------------------- snd_pd_external ------------------------------- */
-/* Made by Kjetil S. Matheussen, 2005. */
-/* */
-/* Based on: */
-/* */
-/* --------------------------- k_guile ----------------------------------- */
-/* ;; Kjetil S. Matheussen, 2004. */
-/* */
-/* 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. */
-/* */
-/* ---------------------------------------------------------------------------- */
-
-
-/* INFO: SND runs in its own thread. Communication between PD and SND happens
- by sending messages back and forth on two ringbuffer. All functions running
- in the PD thread (ie. main program) have the prefix "pd0_", and all functions
- running in the SND thread have the prefix "snd0_".
-
- TOPIC: Is gensym() (in m_class.c) thread-safe? It looks so, but I'm not sure.
- (no it's not)
-
- TOPIC: scm_gc is called here and there, and also scm_cons. Shouldn't scm_remember_up_to_here be called?
- TOPIC: Perhaps 1.0 is too small in pd0_das_dispatcher
-*/
-
-
-#include "snd.h"
-
-
-/* Need some more macros. */
-
-#define POINTER_P(x) (((int) (x) & 3) == 0)
-#define INTEGER_P(x) (! POINTER_P (x))
-
-#define GET_INTEGER SCM_INUM
-#define MAKE_INTEGER SCM_MAKINUM
-
-#define MAKE_STRING(a) scm_mem2string(a,strlen(a))
-#define EVAL(a) scm_eval_string(MAKE_STRING(a))
-#define CATCH_EVAL(a,error) snd_catch_any(eval_str_wrapper,a,error)
-
-#define MAKE_SYM(a) snd0_gensym(SCM_SYMBOL_CHARS(a))
-
-#if 0
-# define MAKE_STRING_rt(a) scm_protect_object(scm_mem2string(a,strlen(a)))
-# define GET_POINTER3(a) (scm_is_false(a)?NULL:(void *)scm_num2ulong(a,0,"GET_POINTER3()"))
-# define GET_POINTER(a) (scm_is_false(a)?NULL:GET_POINTER3(SCM_CAR(SCM_CDR(a))))
-# define GET_POINTER2(a) GET_POINTER(a)
-# define MAKE_POINTER(a) scm_cons(MAKE_STRING_rt("A_POINTER"),scm_cons(scm_ulong2num((unsigned long)a),SCM_EOL))
-
-# define GET_POINTER_rt(a) GET_POINTER(a)
-
-#else
-
-# define MAKE_POINTER(a) scm_ulong2num((unsigned long)a)
-# define GET_POINTER(a) (void*)scm_num2ulong(a,0,"GET_POINTER()")
-# define GET_POINTER_rt(a) (void *)scm_num2ulong(SCM_CAR(SCM_CDR(a)),0,"GET_POINTER()")
-
-#endif
-
-#define GET_X(a) ((t_snd_pd *)GET_POINTER(a))
-
-#define RU_ return SCM_UNSPECIFIED
-
-
-#include <m_pd.h>
-//#include <s_stuff.h>
-#include <pthread.h>
-#include <jack/ringbuffer.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#include <stdbool.h>
-#include <stdarg.h>
-
-#include "snd_pd_external.h"
-
-static char *version = "Snd " SND_VERSION " made by Bill Schottstaedt, bil@ccrma.stanford.edu.\nSnd as a PD external made by Kjetil S. Matheussen, kjetil@ccrma.stanford.edu.";
-
-static t_class *snd_pd_class, *snd_pd_workaroundclass;
-
-static SCM eval_string_func;
-
-static t_clock *snd_pd_clock;
-
-static pthread_t pthread={0};
-static pthread_t pthread_repl={0};
-static jack_ringbuffer_t *rb_snd_to_pd;
-static jack_ringbuffer_t *rb_pd_to_snd;
-static pthread_cond_t thread_cond=PTHREAD_COND_INITIALIZER;
-static pthread_mutex_t thread_mutex=PTHREAD_MUTEX_INITIALIZER;
-
-struct dispatch{
- void (*func)(struct dispatch *d);
- t_snd_pd *x;
- union{
- char *filename;
- int inlet_num;
- int outlet_num;
- t_class **class;
- t_snd_pd_workaround *x2;
- SCM func;
- }data;
- union{
- t_float val;
- int list_length;
- t_symbol *symbol;
- SCM func;
- }data2;
-};
-
-
-
-t_symbol *snd0_gensym(char *symbol){
- t_symbol *ret;
- struct sched_param par;
-
- {
- par.sched_priority = sched_get_priority_max(SCHED_FIFO);
- if(sched_setscheduler(0,SCHED_FIFO,&par)==-1){
- post("snd0_gensym: Unable to aquire SCHED_FIFO priority");
- }
- }{
- sys_lock();{
-
- ret=gensym(symbol);
-
- }sys_unlock();
- }sched_setscheduler(0,SCHED_OTHER,&par);
-
- return ret;
-}
-
-
-
-/*****************************************************************************************************
- *****************************************************************************************************
- * Functions to evaluate large amount of scheme code from C.
- *****************************************************************************************************
- *****************************************************************************************************/
-
-static char *evalstring=NULL;
-static void snd0_eval2(char *string){
- char *new;
- if(evalstring==NULL){
- new=malloc(strlen(string)+1);
- sprintf(new,"%s",string);
- }else{
- new=malloc(strlen(evalstring)+strlen(string)+1);
- sprintf(new,"%s%s",evalstring,string);
- free(evalstring);
- }
- evalstring=new;
-}
-static void snd0_eval_file(char *filename){
- FILE *file=fopen(filename,"r");
- char line[50000];
- if(file==NULL){
- fprintf(stderr,"Error! snd_pd_external.c/snd0_eval_file: Could not open file \"%s\".\n",filename);
- return;
- }
- for(;;){
- int c=fgetc(file);
- if(c==EOF) break;
- ungetc(c,file);
- fgets(line,49999,file);
- snd0_eval2(line);
- }
- fclose(file);
-}
-static SCM snd0_eval_do(void){
- //post(evalstring);
- SCM ret=EVAL(evalstring);
- free(evalstring);
- evalstring=NULL;
- return ret;
-}
-
-
-
-
-/*****************************************************************************************************
- *****************************************************************************************************
- * Pd dispatcher. pd0_das_dispatcher is called pretty often from pd (~1000 times per second)
- * and checks the snd->pd ringbuffer.
- *****************************************************************************************************
- *****************************************************************************************************/
-
-static void pd0_das_dispatcher(void *something){
- jack_ringbuffer_t *rb=rb_snd_to_pd;
- struct dispatch d;
- int num_nondispatched=128; // Make sure too much work is not done at once in the realtime thread.
-
- while(jack_ringbuffer_read_space(rb) >= sizeof(struct dispatch)){
- //printf("pd0: I got something to dispatch!\n");
- jack_ringbuffer_read (rb, (char *)&d, sizeof(struct dispatch));
- d.func(&d);
- num_nondispatched--;
- if(num_nondispatched==0)
- break;
- }
-
- clock_delay(snd_pd_clock, 1.0);
-}
-
-
-static void snd0_send_message(struct dispatch *d){
- jack_ringbuffer_t *rb=rb_snd_to_pd;
- size_t bytes;
- int retries=0;
-
- tryagain:
- // if(jack_ringbuffer_write_space(rb)<sizeof(struct dispatch)){
- //scm_gc();
- while(jack_ringbuffer_write_space(rb)<sizeof(struct dispatch)){
- post("Warning. Ringbuffer full. Could not send message to PD. Trying again in one second.");
- sleep(1);
- }
- // }
- if((bytes=jack_ringbuffer_write (rb, (char*)d, sizeof(struct dispatch))) < sizeof(struct dispatch)){
- if(bytes>0)
- post("Catastrophe snd0_send_message!!! (please report this to k.s.matheussen@notam02.no");
- goto tryagain;
- }
-}
-
-
-
-/*****************************************************************************************************
- *****************************************************************************************************
- * Snd dispatcher
- *****************************************************************************************************
- *****************************************************************************************************/
-
-static jack_ringbuffer_t *rb_repl;
-
-static void snd0_das_dispatcher(void){
- jack_ringbuffer_t *rb=rb_pd_to_snd;
- char repl_some[500];
- int bytes;
- struct dispatch d;
- while(1){
- //fprintf(stderr,"snd0: waiting for something to dispatch\n");
- while(jack_ringbuffer_read_space(rb) >= sizeof(struct dispatch)){
- //fprintf(stderr,"snd0: I got something to dispatch\n");
- jack_ringbuffer_read (rb, (char *)&d, sizeof(struct dispatch));
- d.func(&d);
- }
- while((bytes=jack_ringbuffer_read(rb_repl,repl_some,498))>0){
- repl_some[bytes]=0;
- snd_eval_stdin_str(repl_some);
- }
- pthread_cond_wait (&thread_cond, &thread_mutex);
- }
-}
-
-
-static void *read_eval_print_loop(void *arg){
- char repl_some[5000];
- int len;
- while(1){
- fgets(repl_some,4950,stdin);
- len=strlen(repl_some);
- if(len>4950)
- fprintf(stderr,"WARNING, repl buffer probably too small (%d>4950). Please report to k.s.matheussen@notam02.no\n",len);
- while(jack_ringbuffer_write_space(rb_repl)<len){
- usleep(50000);
- }
- jack_ringbuffer_write(rb_repl,repl_some,len);
- pthread_cond_broadcast(&thread_cond);
- }
- return NULL;
-}
-
-
-
-static void pd0_send_message(struct dispatch *d){
- jack_ringbuffer_t *rb=rb_pd_to_snd;
- size_t bytes;
-
- if(jack_ringbuffer_write_space(rb)<sizeof(struct dispatch)){
- post("Error. Ringbuffer full. Could not send message to SND.");
- post("This behaviour could be changed. Please send me a note if giving up is the wrong behaviour for you. k.s.matheussen@notam02.no");
- goto end;
- }
-
- if( (bytes=jack_ringbuffer_write (rb, (char*)d, sizeof(struct dispatch))) < sizeof(struct dispatch)){
- if(bytes>0)
- post("Catastrophe pd0_send_message!!! (please report this to k.s.matheussen@notam02.no");
- }
-
- end:
- pthread_cond_broadcast(&thread_cond);
-
-}
-
-
-
-
-/*****************************************************************************************************
- *****************************************************************************************************
- * Got data from PD, on its way to Guile. Called either via bind or an inlet.
- *****************************************************************************************************
- *****************************************************************************************************/
-
-static jack_ringbuffer_t *rb_anything;
-
-static void snd0_anything_do(struct dispatch *d){
- int lokke;
- t_int argc;
- SCM applyarg=SCM_EOL;
- t_symbol *s;
- int index=d->data.inlet_num;
-
-
- jack_ringbuffer_read(rb_anything,(char *)&s,sizeof(t_symbol*));
- jack_ringbuffer_read(rb_anything,(char *)&argc,sizeof(t_int));
-
- for(lokke=argc-1;lokke>=0;lokke--){
- SCM to=SCM_BOOL_F;
- t_atom argv;
- jack_ringbuffer_read(rb_anything,(char *)&argv,sizeof(t_atom));
- switch(argv.a_type){
- case A_NULL:
- to=SCM_EOL;
- break;
- case A_FLOAT:
- to=scm_make_real(atom_getfloat(&argv));
- break;
- case A_SYMBOL:
- to=scm_string_to_symbol(MAKE_STRING(atom_getsymbol(&argv)->s_name));
- break;
- default:
- post("Strange");
- break;
- }
- applyarg=scm_cons(to,applyarg);
- }
-
- if(index>=0){
- // Inlet
- //scm_call_3(d->x->inlet_func,MAKE_INTEGER(index),scm_string_to_symbol(MAKE_STRING(s->s_name)),applyarg);
- g_call3(d->x->inlet_func,MAKE_INTEGER(index),scm_string_to_symbol(MAKE_STRING(s->s_name)),applyarg,"Inlet\n");
- }else{
- // Binding
- if(s!=&s_float && s!=&s_list && s!=&s_symbol){
- applyarg=scm_cons(scm_string_to_symbol(MAKE_STRING(s->s_name)),applyarg);
- }
- if(s!=&s_list && GET_INTEGER(scm_length(applyarg))==1)
- applyarg=SCM_CAR(applyarg);
- //scm_call_1(d->data2.func,applyarg);
- g_call1(d->data2.func,applyarg,"Binding or inlet.\n");
- }
-}
-
-static void pd0_anything_do(t_snd_pd *x,int index,SCM func,t_symbol *s, t_int argc, t_atom* argv){
- int lokke;
-
- if(jack_ringbuffer_write_space(rb_anything) < sizeof(t_symbol*)+sizeof(t_int)+(sizeof(t_atom)*argc)){
- post("Error in function pd0_anything_do. Ringbuffer full. Can't send message to SND.");
- return;
- }
-
- // Yes, it can be done in many steps. (as long as pd is singlethreaded at least, but I think it is....)
- jack_ringbuffer_write(rb_anything,(char *)&s,sizeof(t_symbol*));
- jack_ringbuffer_write(rb_anything,(char *)&argc,sizeof(t_int));
-
- for(lokke=argc-1;lokke>=0;lokke--){
- jack_ringbuffer_write(rb_anything,(char *)&argv[lokke],sizeof(t_atom));
- }
-
- {
- struct dispatch d;
- d.func=snd0_anything_do;
- d.x=x;
- d.data.inlet_num=index;
- d.data2.func=func;
- pd0_send_message(&d);
- }
-
-}
-
-// Handles inlet>0 and bindings
-static void pd0_anything(t_snd_pd_workaround *x2,t_symbol *s, t_int argc, t_atom* argv){
- if(x2->x!=NULL && x2->x->isworking==false){
- post("Object not functional. No scheme file was loaded.");
- return;
- }
-
- if(x2->index>=0){
- // Inlet
- pd0_anything_do(x2->x,x2->index,0,s,argc,argv);
- }else{
- // Binding
- pd0_anything_do(NULL,x2->index,x2->func,s,argc,argv);
- }
-}
-
-// Handles first inlet
-static void pd0_anything_first(t_snd_pd *x,t_symbol *s, t_int argc, t_atom* argv){
- if(x->isworking==false){
- post("Object not functional. No scheme file was loaded.");
- return;
- }
-
- pd0_anything_do(x,0,0,s,argc,argv);
-}
-
-
-
-
-
-
-/*****************************************************************************************************
- *****************************************************************************************************
- * Binding and unbinding. Called from the guile side.
- *****************************************************************************************************
- *****************************************************************************************************/
-
-static volatile int snd_pd_is_binding=0;
-static volatile int snd_pd_is_unbinding=0;
-static t_snd_pd_workaround *snd_pd_bind_x2;
-
-static void pd0_bind(struct dispatch *d){
- t_snd_pd_workaround *x2;
- x2=(t_snd_pd_workaround*)pd_new(snd_pd_workaroundclass);
- x2->x=NULL;
- x2->index=-1;
- x2->func=d->data.func;
- pd_bind((t_pd*)x2, d->data2.symbol);
-
- //post("pd0_bind \"%s\"",d->data2.symbol->s_name);
- snd_pd_bind_x2=x2;
- snd_pd_is_binding=0;
-}
-
-static SCM snd0_bind(SCM symname,SCM func){
- struct dispatch d;
-
- //post("Trying to bind \"%s\"",SCM_SYMBOL_CHARS(symname));
- snd_pd_is_binding=1;
-
- scm_protect_object(func);
-
- d.func=pd0_bind;
- d.data.func=func;
- d.data2.symbol=MAKE_SYM(symname);
- snd0_send_message(&d);
-
- if(snd_pd_is_binding!=0){
- int num_retries=0;
- scm_gc();
- while(snd_pd_is_binding!=0){
- num_retries++;
- if(num_retries>(1000000/50000)*5){
- post("snd0_bind: Waited 5 seconds for pd. Something is probably wrong. Could not bind(?).");
- RU_;
- }
- usleep(50000);
- }
- }
-
- return MAKE_POINTER(snd_pd_bind_x2);
-}
-
-static void pd0_unbind(struct dispatch *d){
- pd_unbind((t_pd *)d->data.x2,d->data2.symbol);
- pd_free((t_pd*)d->data.x2);
- snd_pd_is_unbinding=0;
-}
-
-static SCM snd0_unbind(SCM scm_x2,SCM symname){
- struct dispatch d;
- SCM func;
-
- snd_pd_is_unbinding=1;
-
- d.func=pd0_unbind;
- d.data.x2=GET_POINTER(scm_x2);
- d.data2.symbol=MAKE_SYM(symname);
- func=d.data.x2->func;
- snd0_send_message(&d);
-
- if(snd_pd_is_unbinding!=0){
- int num_retries=0;
- scm_gc();
- while(snd_pd_is_unbinding!=0){
- num_retries++;
- if(num_retries>(1000000/50000)*5){
- post("snd0_unbind: Waited 5 seconds for pd. Something is probably wrong. Could not unbind.");
- RU_;
- }
- usleep(50000);
- }
- }
-
- scm_unprotect_object(func);
-
- RU_;
-}
-
-
-
-
-
-
-
-/*****************************************************************************************************
- *****************************************************************************************************
- * Got data from the guile side. Distributing to outlets or receivers.
- * The guile side is responsible for checking that the arguments are correct.
- *****************************************************************************************************
- *****************************************************************************************************/
-
-#define GET_CLASS() (INTEGER_P(symbol)?(t_symbol*)GET_POINTER(symbol):MAKE_SYM(symbol))->s_thing
-#define CLASS_INIT t_class **s=GET_CLASS();if(s==NULL) post("no receiver"); else
-#define GET_OUTLET() GET_X(instance)->outlets[GET_INTEGER(outlet)]
-
-
-/* Number -> float */
-static void pd0_outlet_number(struct dispatch *d){
- outlet_float(d->x->outlets[d->data.outlet_num],d->data2.val);
-}
-
-static SCM snd0_outlet_number(SCM instance,SCM outlet,SCM val){
- struct dispatch d;
- d.func=pd0_outlet_number;
- d.x=GET_X(instance);
- d.data.outlet_num=GET_INTEGER(outlet);
- d.data2.val=scm_num2dbl(val,"snd0_outlet_number:");
- snd0_send_message(&d);
- RU_;
-}
-
-
-static void pd0_send_number(struct dispatch *d){
- pd_float(d->data.class,d->data2.val);
-}
-static SCM snd0_send_number(SCM symbol,SCM val){
- CLASS_INIT
- {
- struct dispatch d;
- d.func=pd0_send_number;
- d.data.class=s;
- d.data2.val=scm_num2dbl(val,"snd0_send_number:");
- snd0_send_message(&d);
- }
- RU_;
-}
-
-
-static t_atom snd_pd_atom[5000]; // Should be huge enough.
-static volatile int snd_pd_atom_in_use=0; // lock variable for snd_pd_atom.
-
-/* List -> list */
-static void snd0_make_list(SCM val){
- t_atom *atom=snd_pd_atom;
- int lokke;
- int length=GET_INTEGER(scm_length(val));
-
- for(lokke=0;lokke<length;lokke++){
- SCM el=scm_list_ref(val,MAKE_INTEGER(lokke));
- t_atom *to=&atom[lokke];
- if(SCM_INUMP(el)){
- SETFLOAT(to,(float)GET_INTEGER(el));
- }else{
- if(SCM_UNBNDP(el)){
- SETSYMBOL(to,snd0_gensym("undefined"));
- }else{
- if(SCM_STRINGP(el)){
- SETSYMBOL(to,snd0_gensym(SCM_STRING_CHARS(el)));
- }else{
- if(SCM_SYMBOLP(el)){
- SETSYMBOL(to,MAKE_SYM(el));
- }else{
- if(scm_number_p(el)){
- if(scm_real_p(el)){
- SETFLOAT(to,(float)scm_num2dbl(el,"snd0_outlet_or_send_list"));
- }else{
- post("Illegal argument to gdp_outlet_or_send_list. Setting atom to 0.");
- SETFLOAT(to,0.0f);
- }
- }
- }
- }
- }
- }
- }
-}
-static void pd0_outlet_list(struct dispatch *d){
- outlet_list(d->x->outlets[d->data.outlet_num], &s_list, d->data2.list_length, snd_pd_atom);
- snd_pd_atom_in_use=0;
-}
-static SCM snd0_outlet_list(SCM instance,SCM outlet,SCM val){
- if(snd_pd_atom_in_use==1){
- int num_retries=0;
- scm_gc();
- while(snd_pd_atom_in_use==1){
- num_retries++;
- if(num_retries>(1000000/50000)*5){
- post("snd0_outlet_list: Waited 5 seconds for pd to process a list. Something is probably wrong. Could not send list to outlet.");
- RU_;
- }
- usleep(50000);
- }
- }
- snd_pd_atom_in_use=1;
- {
- struct dispatch d;
- d.func=pd0_outlet_list;
- d.x=GET_X(instance);
- d.data.outlet_num=GET_INTEGER(outlet);
- d.data2.list_length=GET_INTEGER(scm_length(val));
- snd0_make_list(val);
- snd0_send_message(&d);
- }
- RU_;
-}
-static void pd0_send_list(struct dispatch *d){
- pd_list(d->data.class, &s_list, d->data2.list_length, snd_pd_atom);
- snd_pd_atom_in_use=0;
-}
-static SCM snd0_send_list(SCM symbol,SCM val){
- if(snd_pd_atom_in_use==1){
- int num_retries=0;
- scm_gc();
- while(snd_pd_atom_in_use==1){
- num_retries++;
- if(num_retries>(1000000/50000)*5){
- post("snd0_send_list: Waited 5 seconds for pd to process a list. Something is probably wrong. Could not send list to receiver.");
- RU_;
- }
- usleep(50000);
- }
- }
- snd_pd_atom_in_use=1;
- {
- CLASS_INIT
- {
- struct dispatch d;
- d.func=pd0_send_list;
- d.data.class=s;
- d.data2.list_length=GET_INTEGER(scm_length(val));
- snd0_make_list(val);
- snd0_send_message(&d);
- }
- }
- RU_;
-}
-
-/* Symbol -> symbol */
-static void pd0_outlet_symbol(struct dispatch *d){
- outlet_symbol(d->x->outlets[d->data.outlet_num],d->data2.symbol);
-}
-static SCM snd0_outlet_symbol(SCM instance,SCM outlet,SCM val){
- struct dispatch d;
- d.func=pd0_outlet_symbol;
- d.x=GET_X(instance);
- d.data.outlet_num=GET_INTEGER(outlet);
- d.data2.symbol=MAKE_SYM(val);
- snd0_send_message(&d);
- RU_;
-}
-static void pd0_send_symbol(struct dispatch *d){
- pd_symbol(d->data.class,d->data2.symbol);
-}
-static SCM snd0_send_symbol(SCM symbol,SCM val){
- CLASS_INIT
- {
- struct dispatch d;
- d.func=pd0_send_symbol;
- d.data.class=s;
- d.data2.symbol=MAKE_SYM(val);
- snd0_send_message(&d);
- }
- RU_;
-}
-
-/* String -> symbol */
-static SCM snd0_outlet_string(SCM instance,SCM outlet,SCM val){
- struct dispatch d;
- d.func=pd0_outlet_symbol;
- d.x=GET_X(instance);
- d.data.outlet_num=GET_INTEGER(outlet);
- d.data2.symbol=snd0_gensym(SCM_STRING_CHARS(val));
- snd0_send_message(&d);
- RU_;
-}
-static SCM snd0_send_string(SCM symbol,SCM val){
- CLASS_INIT
- {
- struct dispatch d;
- d.func=pd0_send_symbol;
- d.data.class=s;
- d.data2.symbol=snd0_gensym(SCM_STRING_CHARS(val));
- snd0_send_message(&d);
- }
- RU_;
-}
-
-/* Bang -> bang */
-static void pd0_outlet_bang(struct dispatch *d){
- outlet_bang(d->x->outlets[d->data.outlet_num]);
-}
-static SCM snd0_outlet_bang(SCM instance,SCM outlet){
- struct dispatch d;
- d.func=pd0_outlet_bang;
- d.x=GET_X(instance);
- d.data.outlet_num=GET_INTEGER(outlet);
- snd0_send_message(&d);
- RU_;
-}
-static void pd0_send_bang(struct dispatch *d){
- pd_bang(d->data.class);
-}
-static SCM snd0_send_bang(SCM symbol){
- CLASS_INIT
- {
- struct dispatch d;
- d.func=pd0_send_bang;
- d.data.class=s;
- snd0_send_message(&d);
- }
- RU_;
-}
-
-/* <- symbol */
-static SCM snd0_get_symbol(SCM symname){
- return MAKE_POINTER(MAKE_SYM(symname));
-}
-
-
-
-/*****************************************************************************************************
- *****************************************************************************************************
- * Setting up global guile functions.
- *****************************************************************************************************
- *****************************************************************************************************/
-
-
-static void *snd0_init_in_guile(void *arg){
- snd_pd_main();
- XEN_YES_WE_HAVE("snd-pd-external");
-
- scm_c_define_gsubr("pd-c-bind",2,0,0,snd0_bind);
- scm_c_define_gsubr("pd-c-unbind",2,0,0,snd0_unbind);
- scm_c_define_gsubr("pd-c-outlet-number",3,0,0,snd0_outlet_number);
- scm_c_define_gsubr("pd-c-outlet-list",3,0,0,snd0_outlet_list);
- scm_c_define_gsubr("pd-c-outlet-symbol",3,0,0,snd0_outlet_symbol);
- scm_c_define_gsubr("pd-c-outlet-string",3,0,0,snd0_outlet_string);
- scm_c_define_gsubr("pd-c-outlet-bang",2,0,0,snd0_outlet_bang);
- scm_c_define_gsubr("pd-c-send-number",2,0,0,snd0_send_number);
- scm_c_define_gsubr("pd-c-send-list",2,0,0,snd0_send_list);
- scm_c_define_gsubr("pd-c-send-symbol",2,0,0,snd0_send_symbol);
- scm_c_define_gsubr("pd-c-send-string",2,0,0,snd0_send_string);
- scm_c_define_gsubr("pd-c-send-bang",1,0,0,snd0_send_bang);
- scm_c_define_gsubr("pd-c-get-symbol",1,0,0,snd0_get_symbol);
-
-
- EVAL("(set! %load-path (cons \"" SND_PD_PATH "\" %load-path))"
- "(if (not (provided? 'snd-pd-global.scm)) (load-from-path \"pd-global.scm\"))");
-
- eval_string_func=EVAL("eval-string");
-
- if(pthread_create(&pthread_repl,NULL,read_eval_print_loop,NULL)!=0){
- post("Could not make pthread. (disaster!)\n");
- }
-
- snd0_das_dispatcher();
-
- return NULL;
-}
-
-static void *snd0_init(void *arg){
- return scm_with_guile(snd0_init_in_guile,arg);
-}
-
-static void pd0_init(void){
- rb_snd_to_pd = jack_ringbuffer_create(sizeof(struct dispatch)*1024);
- rb_pd_to_snd = jack_ringbuffer_create(sizeof(struct dispatch)*1024);
- rb_anything = jack_ringbuffer_create(1024*64);
- rb_repl = jack_ringbuffer_create(504);
-
- snd_pd_clock = clock_new(NULL,(t_method)pd0_das_dispatcher);
- clock_delay(snd_pd_clock, 1.0);
-
- //scm_init_guile();
-
- if(pthread_create(&pthread,NULL,snd0_init,NULL)!=0){
- post("Could not make pthread. (disaster!)\n");
- }
-
- return;
-}
-
-
-
-
-
-/*****************************************************************************************************
- *****************************************************************************************************
- * DSP
- *****************************************************************************************************
- *****************************************************************************************************/
-
-typedef void (*PD_RT_PROCESS)(int num_ins,float **ins,int num_outs,float **outs,void *inbus,void *outbus,int nframes);
-static PD_RT_PROCESS pd_rt_process=NULL;
-typedef void (*PD_RT_RUN)(int nframes);
-static PD_RT_RUN pd_rt_run=NULL;
-
-extern void snd_pd_set_rt_funcs(PD_RT_RUN r,PD_RT_PROCESS p){
- pd_rt_run=r;
- pd_rt_process=p;
-}
-
-static t_int *snd_pd_perform(t_int *w){
- t_snd_pd *x=(t_snd_pd*)w[1];
- int ch,lokke;
- int length=(int)w[2];
- t_float **ins;
- t_float **outs;
- static double last_time=0.0;
-
- ins=(t_float**)&w[3];
- outs=(t_float**)&w[3+x->num_ins];
-
- if(x->isworking==true){
- if(pd_rt_run!=NULL && (0 || last_time!=clock_getlogicaltime())){
- last_time=clock_getlogicaltime();
- pd_rt_run(length);
- }
-
- if(pd_rt_process!=NULL){
- pd_rt_process(x->num_ins,ins,x->num_outs,outs,x->inbus,x->outbus,length);
- }
- }else{
- for(ch=0;ch<x->num_outs;ch++){
- memset(outs[ch],0,sizeof(t_float)*length);
- }
- }
-
- return w+x->num_ins+x->num_outs+3;
-}
-
-static void snd_pd_dsp(t_snd_pd *x, t_signal **sp)
-{
- t_int vec[x->num_ins+x->num_outs+2];
- int lokke=0;
- vec[0]=(int)x;
- vec[1]=(int)sp[0]->s_n;
-
- int i;
- for (i = 2; i < x->num_ins+x->num_outs+2; i++) {
- vec[i] = (t_int)(sp[i - 1]->s_vec);
- }
-
- dsp_addv(snd_pd_perform,
- x->num_ins+x->num_outs+2,
- vec);
-}
-
-
-
-
-/*****************************************************************************************************
- *****************************************************************************************************
- * Starting and stopping new guile script
- *****************************************************************************************************
- *****************************************************************************************************/
-
-static void snd0_load(struct dispatch *d){
- SCM evalret;
- bool ret=false;
- char code[500];
- char errormessage[500];
-
- FILE *file=fopen(d->data.filename,"r");
- if(file==NULL){
- post("file \"%s\" not found.\n",d->data.filename);
- goto exit;
- }
- fclose(file);
-
-
- // Let the file live in its own name-space (or something like that).
- snd0_eval2("(define (pd-instance-func pd-instance pd-num-inlets pd-num-outlets) (fix-defines ");
- snd0_eval_file(SND_PD_PATH "/pd-local.scm");
- snd0_eval_file(d->data.filename);
- snd0_eval2(" (list pd-inlet-func pd-cleanup-func (if (defined? '*rt-engine*)"
- "*in-bus* 0)"
- "(if (defined? '*rt-engine*)"
- "*out-bus* 0))))");
- // snd0_eval2(" (list pd-inlet-func pd-cleanup-func (if (defined? '*rt-engine*)"
- // "(SCM_SMOB_DATA *in-bus*) (list \"POINTER\" 0))"
- // "(if (defined? '*rt-engine*)"
- // "(SCM_SMOB_DATA *out-bus*) (list \"POINTER\" 0))))");
- snd0_eval2("1");
-
- if(1!=GET_INTEGER(snd0_eval_do())){
- post("Failed.");
- goto exit;
- }
-
- sprintf(code,"(pd-instance-func %d %d %d)",(int)d->x,d->x->num_ins,d->x->num_outs);
- sprintf(errormessage,"When loading file \"%s\"\n",d->data.filename);
- evalret=CATCH_EVAL(code,errormessage);
-
- if(!SCM_CONSP(evalret)){
- post("Failed.");
- goto exit;
- }
- d->x->inlet_func=SCM_CAR(evalret);
- d->x->cleanup_func=SCM_CAR(SCM_CDR(evalret));
- d->x->scm_inbus=SCM_CAR(SCM_CDR(SCM_CDR(evalret)));
- d->x->scm_outbus=SCM_CAR(SCM_CDR(SCM_CDR(SCM_CDR(evalret))));
-
- scm_gc_protect_object(d->x->inlet_func);
- scm_gc_protect_object(d->x->cleanup_func);
- scm_gc_protect_object(d->x->scm_inbus);
- scm_gc_protect_object(d->x->scm_outbus);
-
- d->x->inbus=(void*)SCM_SMOB_DATA(d->x->scm_inbus);
- d->x->outbus=(void*)SCM_SMOB_DATA(d->x->scm_outbus);
-
- ret=true;
- post("\"%s\" loaded by snd.",d->data.filename);
-
- exit:
- d->x->isworking=ret;
-
- // return ret;
- return;
-}
-
-static bool pd0_load(t_snd_pd *x,char *filename){
- struct dispatch d;
- d.func=snd0_load;
- d.x=x;
- d.data.filename=filename;
- pd0_send_message(&d);
- return true;
-}
-
-static void *pd0_new(t_symbol *s, t_int argc, t_atom* argv){
- int lokke;
- t_snd_pd *x;
-
- if(argc==0){
- post("Usage: snd [filename] <num_inlets> <num_outlets>");
- return NULL;
- }
-
- x= (t_snd_pd *)pd_new(snd_pd_class);
- //x->isinited=false;
- x->filename=atom_getsymbolarg(0,argc,argv)->s_name;
-
-
- /************** inlets ****************/
- x->num_ins=1;
- if(argc>1)
- x->num_ins=atom_getfloatarg(1,argc,argv);
-
- x->inlets=calloc(sizeof(t_snd_pd_workaround*),x->num_ins);
- for(lokke=1;lokke<x->num_ins;lokke++){
- t_snd_pd_workaround *x2;
- x2=(t_snd_pd_workaround*)pd_new(snd_pd_workaroundclass);
- x->inlets[lokke]=x2;
- x2->x=x;
- x2->index=lokke;
- x2->inlet=inlet_new(&x->x_obj,(t_pd*)x2,0,0);
- //x2->inlet=inlet_new(&x->x_obj,(t_pd*)x2,&s_signal,&s_signal);
- //inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal);
- }
- for(lokke=0;lokke<x->num_ins;lokke++){
- inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal);
- }
-
- /************* outlets ****************/
- x->num_outs=1;
- if(argc>2)
- x->num_outs=atom_getfloatarg(2,argc,argv);
- x->outlets=calloc(sizeof(t_outlet*),x->num_outs);
-
-
- for(lokke=0;lokke<x->num_outs;lokke++){
- x->outlets[lokke] = outlet_new(&x->x_obj, gensym("anything"));
- }
-
- for(lokke=0;lokke<x->num_outs;lokke++){
- outlet_new(&x->x_obj, gensym("signal"));
- }
-
-
-
- if(pd0_load(x,x->filename)==true){
- //x->isinited=true;
- return x;
- }
-
- return NULL;
-}
-
-static void snd0_free(struct dispatch *d){
- if(d->x->isworking==true){
- g_call0(d->x->cleanup_func,"cleanup func.\n");
- scm_gc_unprotect_object(d->x->inlet_func);
- scm_gc_unprotect_object(d->x->cleanup_func);
- scm_gc_unprotect_object(d->x->scm_inbus);
- scm_gc_unprotect_object(d->x->scm_outbus);
- }
-
- free(d->x->inlets);
- free(d->x->outlets);
- free(d->x);
-}
-
-static void pd0_free(t_snd_pd *x){
- int lokke;
- struct dispatch d;
- t_snd_pd *new_x=malloc(sizeof(t_snd_pd));
-
- memcpy(new_x,x,sizeof(t_snd_pd));
- d.func=snd0_free;
- d.x=new_x;
-
- for(lokke=1;lokke<x->num_ins;lokke++){
- inlet_free(x->inlets[lokke]->inlet);
- pd_free((t_pd*)x->inlets[lokke]);
- }
- for(lokke=0;lokke<x->num_outs;lokke++){
- outlet_free(x->outlets[lokke]);
- }
-
- pd0_send_message(&d);
-
-}
-
-
-static void snd0_reload(struct dispatch *d){
- //scm_call_1(pd_backtrace_run,d->x->cleanup_func);
- if(d->x->isworking==true){
- g_call0(d->x->cleanup_func,"in snd0_reload\n");
- scm_gc_unprotect_object(d->x->inlet_func);
- scm_gc_unprotect_object(d->x->cleanup_func);
- }
- snd0_load(d);
-}
-
-static void pd0_reload(t_snd_pd *x){
- struct dispatch d;
- d.func=snd0_reload;
- d.x=x;
- d.data.filename=x->filename;
- pd0_send_message(&d);
-}
-
-static void snd0_eval(struct dispatch *d){
- //scm_call_2(pd_backtrace_run1,eval_string_func,MAKE_STRING(d->data2.symbol->s_name));
- g_call1(eval_string_func,MAKE_STRING(d->data2.symbol->s_name),"in snd0_eval\n");
-}
-
-static void pd0_eval(t_snd_pd *x,t_symbol *s){
- struct dispatch d;
- d.func=snd0_eval;
- d.data2.symbol=s;
- pd0_send_message(&d);
-}
-
-//static void snd_pd_evalfile(t_snd_pd *x,t_symbol *s){
-//}
-
-
-
-static void pd0_at_exit(void){
- //fprintf(stderr,"upp\n");
-}
-
-static void finish(int sig){
- pd0_at_exit();
- exit(0);
-}
-static void sigusr2callback(int sig){
- fprintf(stderr,"%s/%d: pd just got the SIGUSR2 signal. This might that a sched_fifo thread is sleeping or something.\n", __FILE__,__LINE__);
- fprintf(stderr,"(don't bother reporting this, unless you hear clicks at the same time, its not an error.)\n");
-}
-
-
-/*****************************************************************************************************
- *****************************************************************************************************
- * Das setup
- *****************************************************************************************************
- *****************************************************************************************************/
-void snd_setup(void){ // (pd0_setup)
-
- if(0==SCM_USE_PTHREAD_THREADS){
- post("Error. Snd/Pd needs to be built against Guile configured with \"--with-threads\". (see manual)");
- return;
- }
-
- pd0_init();
-
- snd_pd_class = class_new(gensym("snd"), (t_newmethod)pd0_new,
- (t_method)pd0_free, sizeof(t_snd_pd), 0, A_GIMME, 0);
-
- class_addanything(snd_pd_class, (t_method)pd0_anything_first);
- class_addmethod(snd_pd_class, (t_method)pd0_reload, gensym("reload"), 0);
- class_addmethod(snd_pd_class, (t_method)pd0_eval, gensym("eval"), A_DEFSYM,0);
- //class_addmethod(snd_pd_class, (t_method)snd_pd_evalfile, gensym("evalfile"), A_DEFSYM,0);
- class_sethelpsymbol(snd_pd_class, gensym("help-snd_pd.pd"));
-
-
- /* This trick(?) is taken from the flext source. (I don't understand what happens...) */
- snd_pd_workaroundclass=class_new(gensym("indexworkaround"),NULL,NULL,sizeof(t_snd_pd_workaround),CLASS_PD|CLASS_NOINLET, A_NULL);
- class_addanything(snd_pd_workaroundclass,pd0_anything);
-
- // class_domainsignalin(snd_pd_class, -1);
- // class_addfloat(snd_pd_class, 0);
-
- //CLASS_MAINSIGNALIN(snd_pd_class, t_snd_pd, x_float);
- class_addmethod(snd_pd_class, (t_method)snd_pd_dsp, gensym("dsp"), 0);
-
-
- /* Following 6 lines taken from the plugin external source. -Kjetil. */
- /* We have to make a "null" callback for signal input to the first
- inlet or otherwise Pd'll gracefully fuck the inlets up */
- class_addmethod (snd_pd_class,
- nullfn,
- gensym ("signal"),
- 0);
-
- atexit(pd0_at_exit);
- signal(SIGINT,finish);
- signal(SIGUSR2,sigusr2callback);
- post(version);
-}
-
-
diff --git a/snd_pd_external.h b/snd_pd_external.h
deleted file mode 100644
index 2e6ad6e..0000000
--- a/snd_pd_external.h
+++ /dev/null
@@ -1,49 +0,0 @@
-
-/* --------------------------- snd_pd_external ------------------------------- */
-/* Made by Kjetil S. Matheussen, 2005/2006. */
-
-struct snd_pd_workaround;
-
-typedef struct snd_pd
-{
- t_object x_obj;
-
- int num_ins;
- int num_outs;
-
- struct snd_pd_workaround **inlets;
- t_outlet **outlets;
-
- SCM inlet_func;
- SCM cleanup_func;
-
- void* inbus;
- void* outbus;
-
- char *filename;
-
- bool isworking;
-
- float x_float;
-
- // Keep pointer to these to be able to unprotect from the garbage collector when freeing the object.
- SCM scm_inbus;
- SCM scm_outbus;
-
-} t_snd_pd;
-
-typedef struct snd_pd_workaround{
- t_object x_obj;
- t_snd_pd *x;
- t_inlet *inlet;
- int index;
- SCM func;
-} t_snd_pd_workaround;
-
-
-
-
-#define KG_MAX(a,b) (((a)>(b))?(a):(b))
-#define KG_MIN(a,b) (((a)<(b))?(a):(b))
-
-
diff --git a/sndclm.html b/sndclm.html
index 5b7f2ea..f660f77 100644
--- a/sndclm.html
+++ b/sndclm.html
@@ -8331,7 +8331,8 @@ To have full output to both channels,</p>
</td></tr></table>
<p>For a moving sound
-source, see either move-locsig, or Fernando Lopez Lezcano's <a class=def href="http://ccrma.stanford.edu/~nando/clm/dlocsig/index.html">dlocsig</a>.
+source, see either move-locsig, Fernando Lopez Lezcano's <a class=def href="http://ccrma.stanford.edu/~nando/clm/dlocsig/index.html">dlocsig</a>,
+or <a href="#flocsig">flocsig</a> (flanged locsig) in generators.scm.
Here is an example of move-locsig:
</p>
@@ -10133,6 +10134,93 @@ via mus-data.
<p>moving-scentroid provides a generator that mimics Bret Battey's scentroid instrument (in dsp.scm or scentroid.ins).
</p>
+<br>
+
+
+<pre style="background-color: #f2f4ff">
+ <a class=def name="make-flocsig">make-flocsig</a> (reverb-amount 0.0) (frequency 1.0) (amplitude 2.0) offset
+ <a class=def name="flocsig">flocsig</A> gen i val
+ <a class=def name="flocsig?">flocsig?</A> gen
+</pre>
+
+<p>flocsig is a version of locsig that adds changing delays between the channels (flanging).
+The delay amount is set by a rand-interp centered around 'offset', moving as many as 'amplitude'
+samples (this also affects signal placement), and moving at a speed set by 'frequency'.
+Currently flocsig assumes stereo output and stereo reverb output.
+This generator is trying to open up the space in the same manner that flanging does, but
+hopefully unobtrusively. Here is an example, including a stereo reverb:
+</p>
+
+<pre>
+(definstrument (jcrev2)
+ (let* (
+ (allpass11 (make-all-pass -0.700 0.700 1051))
+ (allpass21 (make-all-pass -0.700 0.700 337))
+ (allpass31 (make-all-pass -0.700 0.700 113))
+ (comb11 (make-comb 0.742 4799))
+ (comb21 (make-comb 0.733 4999))
+ (comb31 (make-comb 0.715 5399))
+ (comb41 (make-comb 0.697 5801))
+ (outdel11 (make-delay (seconds-&gt;samples .01)))
+
+ (allpass12 (make-all-pass -0.700 0.700 1051))
+ (allpass22 (make-all-pass -0.700 0.700 337))
+ (allpass32 (make-all-pass -0.700 0.700 113))
+ (comb12 (make-comb 0.742 4799))
+ (comb22 (make-comb 0.733 4999))
+ (comb32 (make-comb 0.715 5399))
+ (comb42 (make-comb 0.697 5801))
+ (outdel12 (make-delay (seconds-&gt;samples .01)))
+
+ (file-dur (frames *reverb*))
+ (decay-dur (mus-srate))
+ (len (floor (+ decay-dur file-dur))))
+
+ (run
+ (lambda ()
+ (do ((i 0 (+ 1 i)))
+ ((= i len))
+
+ (let* ((allpass-sum (all-pass allpass31
+ (all-pass allpass21
+ (all-pass allpass11
+ (ina i *reverb*)))))
+ (comb-sum (+ (comb comb11 allpass-sum)
+ (comb comb21 allpass-sum)
+ (comb comb31 allpass-sum)
+ (comb comb41 allpass-sum))))
+ (outa i (delay outdel11 comb-sum)))
+
+ (let* ((allpass-sum (all-pass allpass32
+ (all-pass allpass22
+ (all-pass allpass12
+ (inb i *reverb*)))))
+ (comb-sum (+ (comb comb12 allpass-sum)
+ (comb comb22 allpass-sum)
+ (comb comb32 allpass-sum)
+ (comb comb42 allpass-sum))))
+ (outb i (delay outdel12 comb-sum))))))))
+
+(definstrument (simp beg dur (amp 0.5) (freq 440.0) (ramp 2.0) (rfreq 1.0) offset)
+ (let* ((os (make-pulse-train freq))
+ (floc (<em class=red>make-flocsig</em> :reverb-amount 0.1
+ :frequency rfreq
+ :amplitude ramp
+ :offset offset))
+ (start (seconds-&gt;samples beg))
+ (end (+ start (seconds-&gt;samples dur))))
+ (run
+ (lambda ()
+ (do ((i start (+ i 1)))
+ ((= i end))
+ (<em class=red>flocsig</em> floc i (* amp (pulse-train os))))))))
+
+
+(with-sound (:channels 2 :reverb-channels 2 :reverb jcrev2)
+ (simp 0 1))
+
+</pre>
+
<br><br>
diff --git a/sndlib-ws.scm b/sndlib-ws.scm
index 930ca09..4d8be0c 100644
--- a/sndlib-ws.scm
+++ b/sndlib-ws.scm
@@ -607,7 +607,6 @@ symbol: 'e4 for example. If 'pythagorean', the frequency calculation uses small
(defmacro with-threaded-sound (args . body)
(if (and (provided? 'threads)
- (provided? 's7)
(not (= (optimization) 0)))
(let ((split
(lambda (l n k)
diff --git a/sndlib.h.in b/sndlib.h.in
index 56da7c8..02fe313 100644
--- a/sndlib.h.in
+++ b/sndlib.h.in
@@ -420,7 +420,7 @@ MUS_EXPORT mus_float_t mus_run_evaluate_ptree_1f1v1b2f(struct ptree *pt, mus_flo
MUS_EXPORT mus_float_t mus_run_evaluate_ptreec(struct ptree *pt, mus_float_t arg, XEN object, bool dir, int type);
MUS_EXPORT int mus_run_xen_to_run_type(XEN val);
-#if HAVE_S7
+#if HAVE_SCHEME
MUS_EXPORT struct ptree *mus_run_form_to_ptree_1_b_without_env(XEN code);
MUS_EXPORT mus_float_t mus_run_evaluate_ptree_0f2f(struct ptree *pt);
MUS_EXPORT struct ptree *mus_run_form_to_ptree_0_f(XEN code);
diff --git a/sndlib2xen.c b/sndlib2xen.c
index d0a4d30..04d9275 100644
--- a/sndlib2xen.c
+++ b/sndlib2xen.c
@@ -1427,14 +1427,14 @@ static void g_new_sound_hook(const char *filename)
{
if (XEN_HOOKED(new_sound_hook))
{
-#if HAVE_S7
+#if HAVE_SCHEME
int gc_loc;
#endif
XEN procs = XEN_HOOK_PROCEDURES(new_sound_hook);
XEN fname;
fname = C_TO_XEN_STRING(filename);
-#if HAVE_S7
+#if HAVE_SCHEME
gc_loc = s7_gc_protect(s7, fname);
#endif
@@ -1445,7 +1445,7 @@ static void g_new_sound_hook(const char *filename)
S_new_sound_hook);
procs = XEN_CDR (procs);
}
-#if HAVE_S7
+#if HAVE_SCHEME
s7_gc_unprotect_at(s7, gc_loc);
#endif
}
@@ -1554,7 +1554,7 @@ bool sound_data_equalp(sound_data *v1, sound_data *v2)
return(false);
}
-#if HAVE_S7
+#if HAVE_SCHEME
static bool s7_equalp_sound_data(void *s1, void *s2)
{
return(sound_data_equalp((sound_data *)s1, (sound_data *)s2));
@@ -1750,7 +1750,7 @@ static XEN sound_data_apply(XEN obj, XEN chan, XEN i)
}
#endif
-#if HAVE_S7
+#if HAVE_SCHEME
static XEN g_sound_data_set(XEN obj, XEN chan, XEN frame_num, XEN val);
static XEN g_sound_data_copy(XEN obj);
static XEN g_sound_data_fillB(XEN sdobj, XEN scl);
@@ -2585,7 +2585,7 @@ void mus_sndlib_xen_initialize(void)
{
mus_sound_initialize();
-#if HAVE_S7
+#if HAVE_SCHEME
sound_data_tag = XEN_MAKE_OBJECT_TYPE("<sound-data>", print_sound_data, free_sound_data, s7_equalp_sound_data, NULL,
sound_data_apply, s7_sound_data_set, s7_sound_data_length, s7_sound_data_copy, s7_sound_data_fill);
#else
diff --git a/sndplay.c b/sndplay.c
index 58e89ae..4f35edd 100644
--- a/sndplay.c
+++ b/sndplay.c
@@ -16,7 +16,6 @@
#endif
#include <string.h>
#endif
-#include <errno.h>
#if MUS_MAC_OSX
#define BUFFER_SIZE 256
diff --git a/sndrt_lac2008.pdf b/sndrt_lac2008.pdf
deleted file mode 100644
index f99d2d7..0000000
--- a/sndrt_lac2008.pdf
+++ /dev/null
Binary files differ
diff --git a/sndscm.html b/sndscm.html
index fe87c4f..2d6e06e 100644
--- a/sndscm.html
+++ b/sndscm.html
@@ -104,53 +104,47 @@ For help with Forth and Snd/CLM, see the Forth documentation section "Snd, CLM,
<tr><td><a href="#dspdoc">dsp</a></td>
<td onmouseout="UnTip()" onmouseover="Tip(dsp_doc_tip)">various DSP-related procedures</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="#dotsnd">edit123.scm, snd_conffile.scm, snd_frg.scm</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(dot_snd_doc_tip)">.snd examples (Tom Roth, Kjetil S. Matheussen, Olivier Doare)</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="#envdoc">env</a></td>
+ <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(env_doc_tip)">envelope functions</td></tr>
-<tr><td><a href="#envdoc">env</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(env_doc_tip)">envelope functions</td></tr>
+<tr><td><a href="#enveddoc">enved</a></td>
+ <td onmouseout="UnTip()" onmouseover="Tip(enved_doc_tip)">envelope editor</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="#enveddoc">enved</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(enved_doc_tip)">envelope editor</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="#exampdoc">examp</a></td>
+ <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(examp_doc_tip)">many examples</td></tr>
-<tr><td><a href="#exampdoc">examp</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(examp_doc_tip)">many examples</td></tr>
+<tr><td><a href="#extensionsdoc">extensions</a></td>
+ <td onmouseout="UnTip()" onmouseover="Tip(extensions_doc_tip)">various generally useful Snd extensions</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="#extensionsdoc">extensions</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(extensions_doc_tip)">various generally useful Snd extensions</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="#fadedoc">fade</a></td>
+ <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(fade_doc_tip)">frequency-domain cross-fades</td></tr>
-<tr><td><a href="#fadedoc">fade</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(fade_doc_tip)">frequency-domain cross-fades</td></tr>
+<tr><td><a href="#framedoc">frame</a></td>
+ <td onmouseout="UnTip()" onmouseover="Tip(frame_doc_tip)">frames, vcts, sound-data objects</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="#framedoc">frame</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(frame_doc_tip)">frames, vcts, sound-data objects</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="#freeverbdoc">freeverb</a></td>
+ <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(freeverb_doc_tip)">a reverb</td></tr>
-<tr><td><a href="#freeverbdoc">freeverb</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(freeverb_doc_tip)">a reverb</td></tr>
+<tr><td><a href="sndclm.html#othergenerators">generators.scm</a></td>
+ <td onmouseout="UnTip()" onmouseover="Tip(generators_doc_tip)">a bunch of generators</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="sndclm.html#othergenerators">generators.scm</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(generators_doc_tip)">a bunch of generators</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="#granidoc">grani</a></td>
+ <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(grani_doc_tip)">CLM's grani (Fernando Lopez-Lezcano) translated by Mike Scholz</td></tr>
-<tr><td><a href="#granidoc">grani</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(grani_doc_tip)">CLM's grani (Fernando Lopez-Lezcano) translated by Mike Scholz</td></tr>
+<tr><td><a href="#heartdoc">heart</a></td>
+ <td onmouseout="UnTip()" onmouseover="Tip(heart_doc_tip)">use Snd with non-sound (arbitrary range) data</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="#heartdoc">heart</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(heart_doc_tip)">use Snd with non-sound (arbitrary range) data</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="#hooksdoc">hooks</a></td>
+ <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(hooks_doc_tip)">functions related to hooks</td></tr>
-<tr><td><a href="#hooksdoc">hooks</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(hooks_doc_tip)">functions related to hooks</td></tr>
+<tr><td><a href="#indexdoc">index</a></td>
+ <td onmouseout="UnTip()" onmouseover="Tip(index_doc_tip)">snd-help extension</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="#indexdoc">index</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(index_doc_tip)">snd-help extension</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="#dotemacs">inf-snd.el, DotEmacs</a></td>
+ <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(inf_snd_doc_tip)">Emacs subjob support (Michael Scholz, Fernando Lopez-Lezcano)</td></tr>
-<tr><td><a href="#dotemacs">inf-snd.el, DotEmacs</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(inf_snd_doc_tip)">Emacs subjob support (Michael Scholz, Fernando Lopez-Lezcano)</td></tr>
-
-<tr><td bgcolor="#f2f4ff"><a href="#jcrevdoc">jcrev</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(jcrev_doc_tip)">John Chowning's ancient reverb</td></tr>
-
-<tr><td><a href="#ladspadoc">ladspa.scm, ladspa-help.scm, gui.scm</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(ladspa_doc_tip)">Kjetil S. Matheussen's LADSPA GUI-builder and previewer.</td></tr>
+<tr><td><a href="#jcrevdoc">jcrev</a></td>
+ <td onmouseout="UnTip()" onmouseover="Tip(jcrev_doc_tip)">John Chowning's ancient reverb</td></tr>
<tr><td bgcolor="#f2f4ff"><a href="#maracadoc">maraca</a></td>
<td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(maraca_doc_tip)">Perry Cook's maraca physical model</td></tr>
@@ -212,56 +206,53 @@ For help with Forth and Snd/CLM, see the Forth documentation section "Snd, CLM,
<tr><td><a href="#rgbdoc">rgb</a></td>
<td onmouseout="UnTip()" onmouseover="Tip(rgb_doc_tip)">color names</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="#rtexdoc">rt-examples and friends</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(rtex_doc_tip)">hard real-time support</td></tr>
-
-<tr><td><a href="#rtiodoc">rtio</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(rtio_doc_tip)">real-time stuff</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="#rtiodoc">rtio</a></td>
+ <td bgcolor="#f2f4ff"onmouseout="UnTip()" onmouseover="Tip(rtio_doc_tip)">real-time stuff</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="#rubberdoc">rubber</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(rubber_doc_tip)">rubber-sound</td></tr>
+<tr><td><a href="#rubberdoc">rubber</a></td>
+ <td onmouseout="UnTip()" onmouseover="Tip(rubber_doc_tip)">rubber-sound</td></tr>
-<tr><td><a href="#selectiondoc">selection</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(selection_doc_tip)">functions acting on the current selection</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="#selectiondoc">selection</a></td>
+ <td bgcolor="#f2f4ff"onmouseout="UnTip()" onmouseover="Tip(selection_doc_tip)">functions acting on the current selection</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="#singerdoc">singer</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(singer_doc_tip)">Perry Cook's vocal-tract physical model</td></tr>
+<tr><td><a href="#singerdoc">singer</a></td>
+ <td onmouseout="UnTip()" onmouseover="Tip(singer_doc_tip)">Perry Cook's vocal-tract physical model</td></tr>
-<tr><td><a href="#sndolddoc">snd6|7|8|9|10.scm</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(sndold_doc_tip)">Backwards compatibility</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="#sndolddoc">snd6|7|8|9|10.scm</a></td>
+ <td bgcolor="#f2f4ff"onmouseout="UnTip()" onmouseover="Tip(sndold_doc_tip)">Backwards compatibility</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="#snddiffdoc">snddiff</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(snddiff_doc_tip)">sound difference detection</td></tr>
+<tr><td><a href="#snddiffdoc">snddiff</a></td>
+ <td onmouseout="UnTip()" onmouseover="Tip(snddiff_doc_tip)">sound difference detection</td></tr>
-<tr><td><a href="#sndgldoc">snd-gl</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(snd_gl_doc_tip)">OpenGL examples (gl.c)</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="#sndgldoc">snd-gl</a></td>
+ <td bgcolor="#f2f4ff"onmouseout="UnTip()" onmouseover="Tip(snd_gl_doc_tip)">OpenGL examples (gl.c)</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="#sndmotifdoc">snd-motif, snd-gtk, snd-xm</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(snd_motif_doc_tip)">Motif/Gtk module (xm.c, xg.c)</td></tr>
+<tr><td><a href="#sndmotifdoc">snd-motif, snd-gtk, snd-xm</a></td>
+ <td onmouseout="UnTip()" onmouseover="Tip(snd_motif_doc_tip)">Motif/Gtk module (xm.c, xg.c)</td></tr>
-<tr><td><a href="#sndtestdoc">snd-test</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(snd_test_doc_tip)">Snd regression tests</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="#sndtestdoc">snd-test</a></td>
+ <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(snd_test_doc_tip)">Snd regression tests</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="#sndwarpdoc">sndwarp</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(sndwarp_doc_tip)">Bret Battey's sndwarp instrument</td></tr>
+<tr><td><a href="#sndwarpdoc">sndwarp</a></td>
+ <td onmouseout="UnTip()" onmouseover="Tip(sndwarp_doc_tip)">Bret Battey's sndwarp instrument</td></tr>
-<tr><td><a href="#spectrdoc">spectr</a></td>
- <td>instrument steady state spectra</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="#spectrdoc">spectr</a></td>
+ <td bgcolor="#f2f4ff">instrument steady state spectra</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="#stochasticdoc">stochastic</a></td>
- <td bgcolor="#f2f4ff">Bill Sack's dynamic stochastic synthesis</td></tr>
+<tr><td><a href="#stochasticdoc">stochastic</a></td>
+ <td>Bill Sack's dynamic stochastic synthesis</td></tr>
-<tr><td><a href="#straddoc">strad</a></td>
- <td>string physical model (from CLM)</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="#straddoc">strad</a></td>
+ <td bgcolor="#f2f4ff">string physical model (from CLM)</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="#vdoc">v</a></td>
- <td bgcolor="#f2f4ff">fm-violin</td></tr>
+<tr><td><a href="#vdoc">v</a></td>
+ <td>fm-violin</td></tr>
-<tr><td><a href="#wsdoc">ws</a></td>
- <td onmouseout="UnTip()" onmouseover="Tip(ws_doc_tip)">with-sound</td></tr>
+<tr><td bgcolor="#f2f4ff"><a href="#wsdoc">ws</a></td>
+ <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(ws_doc_tip)">with-sound</td></tr>
-<tr><td bgcolor="#f2f4ff"><a href="#zipdoc">zip</a></td>
- <td bgcolor="#f2f4ff" onmouseout="UnTip()" onmouseover="Tip(zip_doc_tip)">the zipper (the anti-cross-fader)</td></tr>
+<tr><td><a href="#zipdoc">zip</a></td>
+ <td onmouseout="UnTip()" onmouseover="Tip(zip_doc_tip)">the zipper (the anti-cross-fader)</td></tr>
</table>
</td></tr></table>
@@ -2223,7 +2214,7 @@ the differences between the CL and Scheme instruments.
<table bgcolor="aliceblue" border=0><tr>
<td>
<pre>see also: <a href="#birddoc" onmouseout="UnTip()" onmouseover="Tip('bird and bigbird')">bird</a> <a href="sndclm.html#sndclmtop" onmouseout="UnTip()" onmouseover="Tip('many examples')">clm</a> <a href="#dlocsigdoc" onmouseout="UnTip()" onmouseover="Tip('moving sounds')">dlocsig</a> <a href="#exampdoc" onmouseout="UnTip()" onmouseover="Tip('sound effects')">examp</a> <a href="#fadedoc" onmouseout="UnTip()" onmouseover="Tip('frequency domain cross fade')">fade</a> <a href="fm.html#fmintro" onmouseout="UnTip()" onmouseover="Tip('FM examples')">fm</a> <a href="#vdoc" onmouseout="UnTip()" onmouseover="Tip('realtime fm-violin controls')">fmv</a> <a href="#freeverbdoc" onmouseout="UnTip()" onmouseover="Tip('a reverberator')">freeverb</a> <a href="#grapheqdoc" onmouseout="UnTip()" onmouseover="Tip('graphic equalizer')">graphEq</a> <a href="#granidoc" onmouseout="UnTip()" onmouseover="Tip('granular synthesis')">grani</a> <a href="#jcrevdoc" onmouseout="UnTip()" onmouseover="Tip('an old reverberator')">jcrev</a> <a href="#maracadoc" onmouseout="UnTip()" onmouseover="Tip('maraca physical models')">maraca</a>
- <a href="#maxfdoc" onmouseout="UnTip()" onmouseover="Tip('a resonator')">maxf</a> <a href="#noisedoc" onmouseout="UnTip()" onmouseover="Tip('noise-maker')">noise</a> <a href="#pianodoc" onmouseout="UnTip()" onmouseover="Tip('piano physical model')">piano</a> <a href="#prc95doc" onmouseout="UnTip()" onmouseover="Tip('several physical models')">prc95</a> <a href="#pvocdoc" onmouseout="UnTip()" onmouseover="Tip('phase-vocoder')">pvoc</a> <a href="#rtexdoc" onmouseout="UnTip()" onmouseover="Tip('real-time examples')">rt-examples</a> <a href="#singerdoc" onmouseout="UnTip()" onmouseover="Tip('singer physical model')">singer</a> <a href="#sndwarpdoc" onmouseout="UnTip()" onmouseover="Tip('sound effect')">sndwarp</a> <a href="#stochasticdoc" onmouseout="UnTip()" onmouseover="Tip('dynamic stochastic synthesis')">stochastic</a> <a href="#straddoc" onmouseout="UnTip()" onmouseover="Tip('violin physical model')">strad</a> <a href="#wsdoc" onmouseout="UnTip()" onmouseover="Tip('with-sound')">ws</a>
+ <a href="#maxfdoc" onmouseout="UnTip()" onmouseover="Tip('a resonator')">maxf</a> <a href="#noisedoc" onmouseout="UnTip()" onmouseover="Tip('noise-maker')">noise</a> <a href="#pianodoc" onmouseout="UnTip()" onmouseover="Tip('piano physical model')">piano</a> <a href="#prc95doc" onmouseout="UnTip()" onmouseover="Tip('several physical models')">prc95</a> <a href="#pvocdoc" onmouseout="UnTip()" onmouseover="Tip('phase-vocoder')">pvoc</a> <a href="#singerdoc" onmouseout="UnTip()" onmouseover="Tip('singer physical model')">singer</a> <a href="#sndwarpdoc" onmouseout="UnTip()" onmouseover="Tip('sound effect')">sndwarp</a> <a href="#stochasticdoc" onmouseout="UnTip()" onmouseover="Tip('dynamic stochastic synthesis')">stochastic</a> <a href="#straddoc" onmouseout="UnTip()" onmouseover="Tip('violin physical model')">strad</a> <a href="#wsdoc" onmouseout="UnTip()" onmouseover="Tip('with-sound')">ws</a>
</pre>
</td></tr></table>
@@ -3215,38 +3206,6 @@ There's also a dialog to experiment with this:
<br>
-<!-- ---------------------------------------- FILE: edit123.scm, snd_conffile.scm, snd_frg.scm ---------------------------------------- -->
-
-<table border=0 bordercolor="lightgreen" width=100% cellpadding=2 cellspacing=0><tr><td bgcolor="lightgreen">
-<A NAME="dotsnd"></a><table width="100%" border=0><tr><td bgcolor="beige" align="center" valign="middle"><h2>edit123.scm, snd_conffile.scm, snd_frg.scm</h2></td></tr></table>
-</td></tr></table>
-
-<p>These files are examples of Snd customization files, suitable for inclusion in ~/.snd.
-edit123.scm is by Tom Roth, snd_conffile.scm is by Kjetil S. Matheussen, and
-snd_frg.scm is by Olivier Doare.
-There are other examples in <a href="grfsnd.html#sndinitfile">Snd init file</a>.
-Olivier Doare describes snd_frg.scm:
-</p>
-<blockquote>
-<pre>
-[It] tries to emulate the workflow i had with Sound Forge:
-
-Main features are:
-
-- mouse wheel zooming (+ctrl to zoom vertically)
-- up/down arrows to zoom (+ctrl to zoom vertically)
-- left/right key to move one pixel (or one sample at high zoom ratios) (+ctrl to extend selection)
-- double click between marks to select range
-- m to make a mark (named mark is now done with M)
-- ctrl-x , ctrl-c , ctrl-v , ctrl-b to cut, copy, paste, mix.
-- many other shortcuts
-</pre>
-</blockquote>
-
-<br>
-
-
-
<!-- ---------------------------------------- FILE: env ---------------------------------------- -->
<table border=0 bordercolor="lightgreen" width=100% cellpadding=2 cellspacing=0><tr><td bgcolor="lightgreen">
@@ -4837,36 +4796,6 @@ in one channel are compared with 0.0 (that is, the shorter channel is padded out
</td></tr><tr><td colspan=2 height=16></td></tr>
-<!-- channel-property -->
-<tr><td colspan=2 bgcolor="#f2f4ff">
-<a class=def name="channelproperty">channel-property</a> <code>key snd chn</code>
-</td></tr><tr><td></td><td>
-channel-property returns the value associated with 'key' in the given channel's
-<a href="extsnd.html#channelproperties">property list</a>. To add or change a property, use set! with this procedure.
-<pre>
- Scheme:
- :<em class=typing>(set! (channel-property 'info 0 0) "this is sound 0, first channel")</em>
- <em class=listener>"this is sound 0, first channel"</em>
- :<em class=typing>(channel-property 'info 0 0)</em>
- <em class=listener>"this is sound 0, first channel"</em>
-
- Ruby:
- ><em class=typing>set_channel_property(:info, "this is info", 0, 0)</em>
- <em class=listener>this is info</em>
- ><em class=typing>channel_property(:info, 0, 0)</em>
- <em class=listener>this is info</em>
-
- Forth:
- ><em class=typing>'info "this is info" 0 0 set-channel-property</em>
- <em class=listener>'( '( 'info . this is info ) )</em>
- ><em class=typing>'info 0 0 channel-property</em>
- <em class=listener>this is info</em>
-</pre>
-The property list is convenient because the associated information goes away automatically
-when the channel is closed, and the property lists are saved by <a href="extsnd.html#savestate">save-state</a>.
-</td></tr><tr><td colspan=2 height=16></td></tr>
-
-
<!-- channel-sync -->
<tr><td colspan=2 bgcolor="#f2f4ff">
<a class=def name="channelsync">channel-sync</a> <code>snd chn</code>
@@ -4923,18 +4852,6 @@ It is the multichannel version of <a href="#ditherchannel">dither-channel</a>.
</td></tr><tr><td colspan=2 height=16></td></tr>
-<!-- edit-property -->
-<tr><td colspan=2 bgcolor="#f2f4ff">
-<a class=def name="editproperty">edit-property</a> <code>key snd chn edpos</code>
-</td></tr><tr><td></td><td>
-edit-property returns the value associated with 'key' in the given channel's edit history list
-<a href="extsnd.html#editproperties">property list</a> at edit location 'edpos'. To add or change a property, use set! with this procedure
-as in <a href="#channelproperty">channel-property</a>.
-The edit list property list is convenient because the associated information goes away automatically
-when the given edit is no longer accessible.
-</td></tr><tr><td colspan=2 height=16></td></tr>
-
-
<!-- enveloped-mix -->
<tr><td colspan=2 bgcolor="#f2f4ff">
<a class=def name="envelopedmix">enveloped-mix</a> <code>filename beg env</code><br>
@@ -5149,17 +5066,6 @@ or all channels (across all sounds) ('choice' == 1). 'choice' == 0 turns off th
</td></tr><tr><td colspan=2 height=16></td></tr>
-<!-- sound-property -->
-<tr><td colspan=2 bgcolor="#f2f4ff">
-<a class=def name="soundproperty">sound-property</a> <code>key snd</code>
-</td></tr><tr><td></td><td>
-sound-property provides access to a sound's <a href="extsnd.html#soundproperties">property list</a>.
-These properties are saved when Snd's state is saved (via <a href="extsnd.html#savestate">save-state</a>
-or the Options:Save session menu). To omit a given property at that time, add its name (a symbol) to
-the property 'save-state-ignore (a list of symbols); see 'inset-envelope in extensions.scm.
-</td></tr><tr><td colspan=2 height=16></td></tr>
-
-
<!-- undo-channel -->
<tr><td colspan=2 bgcolor="#f2f4ff">
<em class=emdef>undo-channel</em> <code>(edits 1) snd chn</code>
@@ -6147,27 +6053,6 @@ plate-reverb: ladspa.scm (a LADSPA effect)<br>
<br>
-<!-- ---------------------------------------- FILE: ladspa.scm, ladspa-help.scm, gui.scm ---------------------------------------- -->
-
-<table border=0 bordercolor="lightgreen" width=100% cellpadding=2 cellspacing=0><tr><td bgcolor="lightgreen">
-<A NAME="ladspadoc"></a><table width="100%" border=0><tr><td bgcolor="beige" align="center" valign="middle"><h2>ladspa.scm, ladspa-help.scm, gui.scm</h2></td></tr></table>
-</td></tr></table>
-
-<p>ladspa.scm, written by Kjetil Matheussen, takes your LADSPA library and builds a set of dialogs
-to control and preview each effect. Some of the related help strings are in ladspa-help.scm, and
-the GUI extensions are in gui.scm. This file currently works best if you're running the Gtk
-version of Snd with the xg module already loaded (configure with --with-gtk and --with-static-xg).
-If you don't have librdf, you need to comment out the line (provide 'snd-lrdf). Before loading
-ladspa.scm, be sure you've set either <a href="extsnd.html#ladspadir">ladspa-dir</a> or the
-environment variable LADSPA_PATH. Once loaded, you get a new top-level menu "Ladspa" with
-an alphabetical set of submenus. Some of the functions assume you have a sound open.
-</p>
-<p>ladspa.scm loads gui.scm which changes a lot of things in Snd's user interface.
-</p>
-
-<br>
-
-
<!-- ---------------------------------------- FILE: maraca ---------------------------------------- -->
@@ -6323,29 +6208,6 @@ If a such a mark doesn't exist, it returns <code>'no-such-mark</code>.
</td></tr><tr><td colspan=2 height=16></td></tr>
-<!-- mark-properties -->
-<tr><td colspan=2 bgcolor="#f2f4ff">
-<a class=def name="markproperties">mark-properties</a> <code>mark</code>
-</td></tr><tr><td></td><td>
-mark-properties accesses the property list associated with the mark.
-This list is created, if necessary, by mark-property.
-</td></tr><tr><td colspan=2 height=16></td></tr>
-
-
-<!-- mark-property -->
-<tr><td colspan=2 bgcolor="#f2f4ff">
-<a class=def name="markproperty">mark-property</a> <code>key mark</code>
-</td></tr><tr><td></td><td>
-mark-property accesses the property 'key' in the property list associated with the mark.
-<pre>
- :<em class=typing>(set! (mark-property :weight m0) 2.5)</em> ; m0 is the mark
- <em class=listener>2.5</em>
- :<em class=typing>(mark-property :weight m0)</em>
- <em class=listener>2.5</em>
-</pre>
-</td></tr><tr><td colspan=2 height=16></td></tr>
-
-
<!-- move-syncd-marks -->
<tr><td colspan=2 bgcolor="#f2f4ff">
<A class=def NAME="movesyncdmarks">move-syncd-marks</a> <code>sync samples-to-move</code>
@@ -6672,7 +6534,7 @@ you want to your initialization file.
<table bgcolor="aliceblue" border=0><tr><td>
-<pre>see also: <a href="extsnd.html#addtomainmenu" onmouseout="UnTip()" onmouseover="Tip('add-to-main-menu and add-to-menu documentation')">add-to-main-menu</a> <a href="#withreopenmenu">Reopen menu</a> <a href="#openbuffer">Buffers menu</a> <a href="#ladspadoc">Ladspa menu</a> <a href="#popupdoc">Popup menus</a>
+<pre>see also: <a href="extsnd.html#addtomainmenu" onmouseout="UnTip()" onmouseover="Tip('add-to-main-menu and add-to-menu documentation')">add-to-main-menu</a> <a href="#withreopenmenu">Reopen menu</a> <a href="#openbuffer">Buffers menu</a> <a href="#popupdoc">Popup menus</a>
</pre></td>
</tr></table>
@@ -6774,20 +6636,6 @@ mix-name-&gt;id returns the mix with the given name, or 'no-such-mix if none can
</td></tr><tr><td colspan=2 height=16></td></tr>
-<!-- mix-property -->
-<tr><td colspan=2 bgcolor="#f2f4ff">
-<a class=def name="mixproperty">mix-property</a> <code>key mix</code>
-</td></tr><tr><td></td><td>
-mix-property associates a property with each mix.
-<pre>
- :<em class=typing>(set! (mix-property :info mx) "this is a mix")</em>
- <em class=listener>"this is a mix"</em>
- :<em class=typing>(mix-property :info mx)</em>
- <em class=listener>"this is a mix"</em>
-</pre>
-</td></tr><tr><td colspan=2></td></tr>
-
-
<!-- mix-sound -->
<tr><td colspan=2 bgcolor="#f2f4ff">
<a class=def name="mixsound">mix-sound</a> <code>file start</code>
@@ -7905,47 +7753,53 @@ in a few cases, it is possible to get below the square root (see peak-phases.scm
n peak (log peak n) n peak (log peak n)
all 20 4.2901 0.4861, odd 11 3.1771 0.4821
-all 14 3.6133 0.4868, odd 9 2.8865 0.4824
-all 23 4.6081 0.4873, odd 17 3.9278 0.4829
-all 11 3.2185 0.4875, odd 10 3.0538 0.4848
-all 16 3.8753 0.4886, odd 19 4.1739 0.4853
-all 24 4.7311 0.4890, odd 14 3.5994 0.4853
-all 15 3.7692 0.4900, odd 13 3.4755 0.4857
-all 17 4.0148 0.4906, odd 18 4.0712 0.4857
-all 25 4.8564 0.4909, odd 16 3.8582 0.4870
-all 13 3.5250 0.4912, odd 15 3.7398 0.4871
-all 12 3.3894 0.4912, odd 12 3.3627 0.4880
-all 10 3.1027 0.4917, odd 28 5.0941 0.4886
-all 19 4.2581 0.4921, odd 21 4.4509 0.4904
-all 29 5.2459 0.4922, odd 23 4.6639 0.4911
-all 18 4.1494 0.4923, odd 20 4.3661 0.4920
-all 27 5.0681 0.4924, odd 31 5.4255 0.4925
-all 21 4.4849 0.4929, odd 22 4.5831 0.4925
-all 22 4.5894 0.4930, odd 24 4.7900 0.4929
-all 35 5.7718 0.4931, odd 25 4.8902 0.4931
-all 37 5.9364 0.4933, odd 33 5.6093 0.4932
-all 32 5.5308 0.4935, odd 8 2.7908 0.4936
-all 9 2.9618 0.4942, odd 30 5.3588 0.4936
-all 8 2.7947 0.4942, odd 29 5.2720 0.4937
-all 33 5.6374 0.4946, odd 27 5.0929 0.4939
-all 34 5.7254 0.4948, odd 26 5.0101 0.4946
-all 26 5.0233 0.4954, odd 7 2.6184 0.4947
-all 31 5.4854 0.4957, odd 32 5.5682 0.4954
-all 39 6.1482 0.4957, odd 34 5.7531 0.4962
-all 30 5.3987 0.4958, odd 35 5.8431 0.4965
-all 36 5.9366 0.4970, odd 41 6.3347 0.4971
-all 28 5.2422 0.4972, odd 50 6.9978 0.4973
-all 46 6.7149 0.4974, odd 42 6.4179 0.4974
-all 44 6.5714 0.4975, odd 43 6.4970 0.4975
-all 41 6.3450 0.4975, odd 46 6.7262 0.4978
-all 43 6.5068 0.4979, odd 37 6.0366 0.4979
-all 53 7.2324 0.4983, odd 39 6.1977 0.4979
-all 52 7.1751 0.4987, odd 40 6.2855 0.4983
-all 7 2.6394 0.4988, odd 45 6.6676 0.4984
-all 38 6.1464 0.4992, odd 52 7.1876 0.4992
-all 57 7.5465 0.4999, odd 57 7.5335 0.4995
- odd 44 6.6217 0.4995
- odd 38 6.1582 0.4997
+all 14 3.6131 0.4868, odd 9 2.8865 0.4824
+all 23 4.6077 0.4872, odd 17 3.9278 0.4829
+all 11 3.2184 0.4875, odd 10 3.0538 0.4848
+all 17 3.9815 0.4877, odd 19 4.1739 0.4853
+all 16 3.8751 0.4886, odd 14 3.5994 0.4853
+all 24 4.7308 0.4890, odd 13 3.4755 0.4857
+all 19 4.2237 0.4893, odd 18 4.0712 0.4857
+all 15 3.7690 0.4899, odd 16 3.8582 0.4870
+all 25 4.8556 0.4909, odd 15 3.7398 0.4871
+all 13 3.5249 0.4912, odd 12 3.3627 0.4880
+all 12 3.3891 0.4912, odd 28 5.0926 0.4885
+all 10 3.1027 0.4917, odd 21 4.4504 0.4904
+all 18 4.1454 0.4920, odd 23 4.6639 0.4911
+all 29 5.2447 0.4922, odd 20 4.3601 0.4915
+all 27 5.0665 0.4923, odd 31 5.4235 0.4924
+all 28 5.1610 0.4925, odd 22 4.5828 0.4925
+all 22 4.5881 0.4929, odd 24 4.7891 0.4929
+all 21 4.4844 0.4929, odd 25 4.8892 0.4930
+all 35 5.7695 0.4929, odd 33 5.6070 0.4931
+all 37 5.9340 0.4931, odd 29 5.2674 0.4934
+all 32 5.5298 0.4934, odd 30 5.3569 0.4935
+all 30 5.3667 0.4940, odd 8 2.7908 0.4936
+all 9 2.9618 0.4942, odd 27 5.0916 0.4938
+all 8 2.7947 0.4942, odd 26 5.0085 0.4945
+all 26 5.0083 0.4945, odd 7 2.6184 0.4947
+all 33 5.6351 0.4945, odd 32 5.5676 0.4954
+all 34 5.7213 0.4946, odd 52 7.0875 0.4956
+all 39 6.1310 0.4950, odd 50 6.9553 0.4958
+all 31 5.4835 0.4956, odd 34 5.7451 0.4958
+all 44 6.5525 0.4968, odd 35 5.8382 0.4963
+all 36 5.9314 0.4968, odd 41 6.3276 0.4968
+all 46 6.6997 0.4968, odd 43 6.4809 0.4969
+all 43 6.4824 0.4969, odd 45 6.6310 0.4970
+all 41 6.3364 0.4972, odd 42 6.4085 0.4970
+all 53 7.2114 0.4976, odd 37 6.0249 0.4974
+all 52 7.1497 0.4978, odd 74 8.5058 0.4974
+all 7 2.6394 0.4988, odd 46 6.7167 0.4975
+all 38 6.1411 0.4990, odd 39 6.1875 0.4975
+all 68 8.2113 0.4990, odd 40 6.2779 0.4980
+all 57 7.5207 0.4990, odd 57 7.4982 0.4983
+all 56 7.4565 0.4991, odd 56 7.4388 0.4985
+all 47 6.8394 0.4994, odd 44 6.6048 0.4989
+all 74 8.5821 0.4995, odd 77 8.7389 0.4991
+all 63 7.9218 0.4995, odd 78 8.8023 0.4992
+all 59 7.6748 0.4998, odd 38 6.1502 0.4994
+all 45 6.7031 0.4998, odd 58 7.6006 0.4995
+all 62 7.8677 0.4998, odd 49 6.9979 0.4999
</pre>
</td></tr></table>
@@ -7957,33 +7811,50 @@ all 57 7.5465 0.4999, odd 57 7.5335 0.4995
<pre>
n peak (log peak n) n peak (log peak n)
-all 63 7.9637 0.5008, odd 58 7.6278 0.5004
-all 45 6.7332 0.5010, odd 36 6.0167 0.5008
-all 59 7.7246 0.5014, odd 49 7.0329 0.5012
-all 40 6.3653 0.5017, odd 74 8.6882 0.5023
-all 55 7.4707 0.5018, odd 48 6.9921 0.5024
-all 42 6.5282 0.5020, odd 54 7.4203 0.5024
-all 56 7.5447 0.5020, odd 53 7.3536 0.5025
-all 50 7.1313 0.5022, odd 77 8.8724 0.5025
-all 68 8.3311 0.5024, odd 62 7.9634 0.5027
-all 48 6.9953 0.5025, odd 59 7.7746 0.5030
-all 71 8.5275 0.5028, odd 70 8.4754 0.5030
-all 62 7.9684 0.5029, odd 51 7.2281 0.5031
-all 74 8.7103 0.5029, odd 61 7.9121 0.5032
-all 47 6.9355 0.5030, odd 78 8.9603 0.5033
-all 49 7.1060 0.5039, odd 56 7.5879 0.5034
-all 51 7.2537 0.5040, odd 63 8.0558 0.5036
-all 73 8.6988 0.5042, odd 66 8.2794 0.5045
-all 54 7.4739 0.5042, odd 60 7.8934 0.5046
-all 66 8.2772 0.5045, odd 64 8.1551 0.5046
-all 72 8.6509 0.5045, odd 55 7.5634 0.5049
-all 65 8.2237 0.5048, odd 65 8.2295 0.5049
-all 58 7.7689 0.5049, odd 47 6.9880 0.5050
+all 71 8.4360 0.5003, odd 76 8.7191 0.5000
+all 72 8.5241 0.5011, odd 63 7.9481 0.5003
+all 55 7.4513 0.5012, odd 36 6.0075 0.5003
+all 50 7.1043 0.5012, odd 48 6.9398 0.5004
+all 42 6.5169 0.5015, odd 82 9.0785 0.5006
+all 40 6.3596 0.5015, odd 62 7.8988 0.5008
+all 48 6.9776 0.5018, odd 55 7.4464 0.5010
+all 85 9.2995 0.5019, odd 70 8.4041 0.5011
+all 88 9.4757 0.5022, odd 110 10.5415 0.5011
+all 70 8.4480 0.5023, odd 51 7.1723 0.5011
+all 99 10.0579 0.5023, odd 54 7.3828 0.5012
+all 73 8.6308 0.5024, odd 80 8.9976 0.5014
+all 105 10.3634 0.5024, odd 61 7.8579 0.5015
+all 75 8.7553 0.5025, odd 53 7.3284 0.5017
+all 49 7.0801 0.5029, odd 59 7.7420 0.5019
+all 64 8.1003 0.5030, odd 73 8.6184 0.5020
+all 51 7.2265 0.5030, odd 91 9.6446 0.5024
+all 66 8.2275 0.5030, odd 69 8.3939 0.5025
+all 79 9.0078 0.5031, odd 68 8.3369 0.5026
+all 54 7.4406 0.5031, odd 66 8.2137 0.5026
+all 60 7.8545 0.5034, odd 102 10.2336 0.5029
+all 65 8.1853 0.5036, odd 64 8.1024 0.5031
+all 61 7.9335 0.5038, odd 81 9.1247 0.5031
+all 69 8.4511 0.5041, odd 65 8.1727 0.5033
+all 58 7.7458 0.5042, odd 95 9.8952 0.5033
+all 76 8.8781 0.5042, odd 60 7.8577 0.5035
+all 91 9.7258 0.5043, odd 83 9.2563 0.5036
+all 90 9.6752 0.5044, odd 79 9.0327 0.5037
+all 92 9.7876 0.5045, odd 105 10.4360 0.5039
+all 87 9.5259 0.5047, odd 113 10.8308 0.5040
+all 81 9.1899 0.5048, odd 114 10.8934 0.5042
+all 93 9.8545 0.5048, odd 47 6.9739 0.5044
+all 83 9.3080 0.5049, odd 75 8.8302 0.5045
+all 111 10.7804 0.5049, odd 96 10.0051 0.5046
+ odd 92 9.7926 0.5046
+ odd 89 9.6377 0.5048
+ odd 106 10.5347 0.5049
+ odd 101 10.2811 0.5049
</pre>
</td></tr></table>
<p>I don't want to jinx myself, but maybe that initial guess wasn't so bad! These values
-(and those in peak-phases.scm) represent about 400 GHz years of computing.
+(and those in peak-phases.scm) represent about 400 GHz years of computing, probably only
+possible at an enlightened institution like CCRMA.
</p>
<p>
@@ -8020,6 +7891,44 @@ phase to 0.0). If you then search around this set of phases, you'll find very g
(fpsap 2 n new-phases))) ; search that vicinity for a good set (2 = even harmonics)
</pre>
+<p>fpsap here was using 6000 starting points and an initial increment (search radius) of .06 (times pi of course). These are the best
+values I've found so far. When I started this search more than a year ago, I tried random phases
+and evenly spaced phases (brute force), but that led to nothing useful.
+Next I tried the genetic algorithm with 2000 or so starting points and an initial increment
+of 1.0. These are pretty good choices, but after a few months of searching, I reached a point of almost no
+returns. I tried variants of the basic algorithm and other search methods, but the results were not very good until
+I noticed that in the
+graphs of the peaks, the good values are more or less clustered together. So I tried centering
+the genetic search on the best phases I had found to that point, then iterating
+the search each time from the new best point, slowly reducing the search radius.
+In code:
+</p>
+
+<pre>
+(define (iterated-peak choice n)
+ (let ((phases (make-vector n 0.0))
+ (cur-best n)
+ (cur-incr 1.0))
+ (do ((i 1 (+ i 1)))
+ ((= i n))
+ (set! (phases i) (random 1.0)))
+ (do ()
+ ((&lt; cur-incr .001))
+ (let ((vals (fpsap (if (eq? choice :all) 0
+ (if (eq? choice :odd) 1
+ (if (eq? choice :even) 2 3)))
+ n phases 5000 cur-incr)))
+ (let ((pk (car vals))
+ (new-phases (cadr vals)))
+ (let ((down (- cur-best pk)))
+ (if (&lt; down (/ cur-best 10))
+ (set! cur-incr (* 0.5 cur-incr))))
+ (if (&lt; pk cur-best)
+ (begin
+ (set! cur-best pk)
+ (set! phases (vct-&gt;vector new-phases)))))))
+ (list cur-best phases)))
+</pre>
<!--
(if (not (provided? 'snd-rgb.scm)) (load "rgb.scm"))
@@ -8655,11 +8564,10 @@ convolution the infinitely slow way is poly*:
<p>
gtk-popup.scm is the Gtk/xg version; popup.scm is Motif/xm based.
-These files create a set of context-sensitive popup menus. Which menu
-is posted under the mouse depends on where the mouse is: there are
+These files create a set of context-sensitive popup menus. If you click the right mouse button (button 3), a menu
+is posted under the mouse; that menu's contents depends on where the mouse is. There are
special menus for the current selection, the fft, the time domain window
-other than the selection, the edit history list, and the listener.
-Press button3 in one of these areas to get a menu.
+other than the selection, and the listener.
Here are the selection and fft popups:
</p>
@@ -8833,25 +8741,6 @@ this color is named "tawny" in rgb.scm.
-<!-- ---------------------------------------- FILE: rt-examples and friends ---------------------------------------- -->
-
-<table border=0 bordercolor="lightgreen" width=100% cellpadding=2 cellspacing=0><tr><td bgcolor="lightgreen">
-<A NAME="rtexdoc"></a><table width="100%" border=0><tr><td bgcolor="beige" align="center" valign="middle"><h2>rt-examples and friends</h2></td></tr></table>
-</td></tr></table>
-
-<p>This depends on Guile, so it is currently broken.
-</p>
-
-<!--
-<p>The files rt-compile.scm, rt-engine.scm, rt-examples.scm, oo.scm, gui.scm, and eval-c.scm, all
-written by Kjetil Matheussen, provide hard (glitch-free) real-time support for CLM instruments,
-as well as numerous other extensions of Snd for user interface development, optimization, etc.
-See rt.tex for complete details.
-</p>
--->
-<br>
-
-
<!-- ---------------------------------------- FILE: rtio ---------------------------------------- -->
<table border=0 bordercolor="lightgreen" width=100% cellpadding=2 cellspacing=0><tr><td bgcolor="lightgreen">
@@ -9715,22 +9604,6 @@ channel number.
</td></tr><tr><td colspan=2 height=16></td></tr>
-<!-- make-color-selector-dialog -->
-<tr><td colspan=2 bgcolor="#f2f4ff">
-<A class=def NAME="makecolorselectordialog">make-color-selector-dialog</a><br>
-<A class=def NAME="makefontselectordialog">make-font-selector-dialog</a>
-</td></tr><tr><td></td><td>
-snd-gtk.scm defines make-font-selector-dialog that creates a dialog
-showing a list of available fonts with sample output, and a set of toggle buttons;
-to start the dialog, click the Options:Choose Font menu option;
-choose which of Snd's fonts you want to change, then click 'ok'. This isn't available
-in snd-motif.scm because the corresponding font selection widget in Motif is still
-under development.
-The corresponding color selector is make-color-selector-dialog, but some of the
-color variables don't actually work.
-</td></tr><tr><td colspan=2 height=16></td></tr>
-
-
<!-- make-hidden-controls-dialog -->
<tr><td colspan=2 bgcolor="#f2f4ff">
<a class=def name="makehiddencontrolsdialog">make-hidden-controls-dialog</a>
diff --git a/tools/compsnd b/tools/compsnd
index 93551bc..e1612f1 100755
--- a/tools/compsnd
+++ b/tools/compsnd
@@ -911,71 +911,6 @@ rm -f config.cache
rm -f makefile
rm -f mus-config.h
-echo ' -------------------------------------------------------------------------------- '
-echo ' ----- --disable-nls ---- '
-echo ' -------------------------------------------------------------------------------- '
-./configure --quiet LDFLAGS="-L/usr/X11R6/lib" CFLAGS="-Wall -I/usr/X11R6/include" --disable-nls
-make
-./snd --version
-./snd -noinit --features "'clm 'snd-s7"
-make allclean
-echo ' '
-echo ' '
-
-echo ' -------------------------------------------------------------------------------- '
-echo ' ---- g++ --with-gtk --disable-nls ---- '
-echo ' -------------------------------------------------------------------------------- '
-./configure LDFLAGS="-L/usr/X11R6/lib" CFLAGS="-I/usr/X11R6/include" --quiet CC=g++ --with-gtk --disable-nls
-make
-./snd --version
-./snd -noinit --features "'clm 'snd-gtk"
-make allclean
-echo ' '
-echo ' '
-
-echo ' -------------------------------------------------------------------------------- '
-echo ' ---- g++ --with-no-gui --disable-nls ---- '
-echo ' -------------------------------------------------------------------------------- '
-./configure LDFLAGS="-L/usr/X11R6/lib" CFLAGS="-I/usr/X11R6/include" --quiet CC=g++ --with-no-gui --disable-nls
-make
-./snd --version
-./snd -noinit --features "'clm 'snd-nogui 'snd-s7"
-make allclean
-echo ' '
-echo ' '
-
-echo ' -------------------------------------------------------------------------------- '
-echo ' ----- g++ --without-extension-language --disable-nls ---- '
-echo ' -------------------------------------------------------------------------------- '
-./configure LDFLAGS="-L/usr/X11R6/lib" CFLAGS="-I/usr/X11R6/include" --quiet CC=g++ --without-extension-language --disable-nls
-make
-./snd --version
-make allclean
-echo ' '
-echo ' '
-
-echo ' -------------------------------------------------------------------------------- '
-echo ' ---- g++ --with-static-xm --disable-nls ---- '
-echo ' -------------------------------------------------------------------------------- '
-./configure LDFLAGS="-L/usr/X11R6/lib" CFLAGS="-I/usr/X11R6/include" --quiet CC=g++ --with-static-xm --disable-nls
-make
-./snd --version
-./snd -noinit --features "'clm 'xm"
-./snd -e "(begin (display (+ 1 2 3)) (exit))"
-make allclean
-echo ' '
-echo ' '
-
-echo ' -------------------------------------------------------------------------------- '
-echo ' ----- --with-ruby --disable-nls ---- '
-echo ' -------------------------------------------------------------------------------- '
-./configure --quiet LDFLAGS="-L/usr/X11R6/lib" CFLAGS="-Wall -I/usr/X11R6/include" --with-ruby --disable-nls
-make
-./snd --version
-./snd -noinit --features ":clm, :snd_ruby"
-make allclean
-cp makefile.gettext makefile.in
-
echo ' '
echo ' '
echo ' -------------------------------------------------------------------------------- '
diff --git a/tools/crossref.c b/tools/crossref.c
index c47e3e6..6e884ce 100644
--- a/tools/crossref.c
+++ b/tools/crossref.c
@@ -4,7 +4,6 @@
#include <stddef.h>
#include <math.h>
#include <stdio.h>
-#include <errno.h>
#include <stdlib.h>
#include <fcntl.h>
#include <string.h>
diff --git a/tools/index.cl b/tools/index.cl
index a441793..2d70419 100644
--- a/tools/index.cl
+++ b/tools/index.cl
@@ -37,7 +37,7 @@
(setf gfiles (make-array array-length :initial-element nil))
(setf topics (make-array array-length :initial-element nil))
-(defstruct ind name sortby topic file general indexed)
+(defstruct ind name sortby topic file general indexed char)
(defun html-length (str)
(if (find #\& str :test #'char=)
@@ -461,9 +461,8 @@
(progn
(setf (aref new-names j) (make-ind :name nil :topic nil :file nil :sortby nil))
(setf j (+ j 1))
- (setf (aref new-names j) (make-ind :name " "
-;;; (format nil "<table width=50% border=1><tr><td bgcolor=\"beige\" align=\"center\" valign=\"middle\"><em class=tab>~A</em></td></tr></table>" (char-upcase this-char))
-;;; this is too elaborate
+ (setf (aref new-names j) (make-ind :name " "
+ :char (char-upcase this-char)
:topic nil :file nil :sortby nil))
(setf j (+ j 1))
(setf (aref new-names j) (make-ind :name nil :topic nil :file nil :sortby nil))
@@ -517,15 +516,24 @@
(if (< x n)
(progn
(format ofil
- "<td~A><em class=tab>~A</em></td>"
+ "<td~A>~A~A~A</td>"
(if (not (ind-name name))
""
(if (not (ind-sortby name))
" bgcolor=\"lightgreen\""
""))
- (if (ind-name name)
- (ind-name name)
- " "))
+ (if (ind-char name)
+ "<center>"
+ "<em class=tab>")
+ (if (ind-char name)
+ (ind-char name)
+ (if (ind-name name)
+ (ind-name name)
+ " "))
+ (if (ind-char name)
+ "</center>"
+ "</em>")
+ )
(if (ind-indexed name) (format t "~A indexed twice~%" (ind-name name)))
(setf (ind-indexed name) t))
(format ofil "~%")))
diff --git a/tools/makegl.scm b/tools/makegl.scm
index 3cecd8a..dee5e49 100755
--- a/tools/makegl.scm
+++ b/tools/makegl.scm
@@ -859,7 +859,7 @@
(hey "/* ---------------------------------------- constants ---------------------------------------- */~%~%")
(hey "static void define_integers(void)~%")
(hey "{~%~%")
-(hey "#if HAVE_S7~%")
+(hey "#if HAVE_SCHEME~%")
(hey "#define DEFINE_INTEGER(Name) s7_define_constant(s7, XL_PRE #Name XL_POST, C_TO_XEN_INT(Name))~%")
(hey "#else~%")
(hey "#define DEFINE_INTEGER(Name) XEN_DEFINE(XL_PRE #Name XL_POST, C_TO_XEN_INT(Name))~%")
diff --git a/tools/makexg.scm b/tools/makexg.scm
index c12b4c4..901a94d 100755
--- a/tools/makexg.scm
+++ b/tools/makexg.scm
@@ -173,8 +173,8 @@
(define all-types '())
;;; preset some types that are getting confused
-(set! types (list "GdkEventMotion*" "GtkColorSelectionDialog*" "gdouble*"))
-(set! all-types (list "GdkEventMotion*" "GtkColorSelectionDialog*" "gdouble*"))
+(set! types (list "GdkEventMotion*" "GtkColorSelectionDialog*" "gdouble*" "GdkEventAny*" "GdkEvent*"))
+(set! all-types (list "GdkEventMotion*" "GtkColorSelectionDialog*" "gdouble*" "GdkEventAny*" "GdkEvent*"))
(define idlers (list "g_source_remove" "g_idle_remove_by_data"
"gtk_quit_remove" "gtk_quit_remove_by_data"
@@ -235,7 +235,8 @@
"GdkDragAction" "GdkImageType"
"gdouble*" "GdkFill" "GdkSubwindowMode" "GdkLineStyle" "GdkCapStyle" "GdkJoinStyle"
- "GtkInfoBar*" "GtkSpinner*" "GtkToolShell*" "GtkToolPalette*" "GtkToolPaletteDragTargets" "GtkToolItemGroup*"
+ "GtkInfoBar*" "GtkSpinner*" "GtkToolShell*" "GtkToolPalette*" "GtkToolPaletteDragTargets"
+ "GdkFunction"
))
(define no-xen-p
@@ -248,7 +249,7 @@
"GValue*" "GdkByteOrder" "GdkCrossingMode" "GdkEventType" "GdkGrabStatus" "GdkNotifyType"
;"GdkOverlapType"
"GdkScrollDirection" "GdkSettingAction" "GdkVisibilityState" "GdkWindowState" "GdkWindowType"
- "GtkImageType" "GtkTreeModelFlags" "gint16" "gint8" "gshort" "guint8" "lambda"
+ "GtkImageType" "GtkTreeModelFlags" "gint8" "gshort" "guint8" "lambda"
"time_t" "GtkWindowGroup*" "GtkSettings*" "GdkDevice*" "GtkScaleButton*"
"GtkPrintOperationResult" "GtkPrintStatus"
@@ -265,7 +266,7 @@
"GValue*" "GdkByteOrder" "GdkCrossingMode" "GdkEventType" "GdkGrabStatus" "GdkNotifyType"
;"GdkOverlapType"
"GdkScrollDirection" "GdkSettingAction" "GdkVisibilityState" "GdkWindowState" "GdkWindowType"
- "GtkImageType" "GtkTreeModelFlags" "etc" "gint16" "gshort"
+ "GtkImageType" "GtkTreeModelFlags" "etc" "gshort"
"GtkWindowGroup*" "time_t" "GtkSettings*" "GdkDevice*" "GtkScaleButton*"
"GtkPrintOperationResult" "GtkPrintStatus"
@@ -751,8 +752,8 @@
(cons "guint16" "INT")
(cons "gint" "INT")
(cons "gshort" "INT")
- (cons "gint16" "INT")
- (cons "guint8" "INT")
+; (cons "gint16" "INT")
+; (cons "guint8" "INT")
(cons "guchar" "INT")
(cons "gint8" "INT")
(cons "gssize" "INT")
@@ -2087,7 +2088,7 @@
(dpy "#endif~%~%"))
(define (with-2190 dpy thunk)
- (dpy "#if HAVE_GTK_TOOL_PALETTE_NEW~%")
+ (dpy "#if HAVE_GTK_WIDGET_GET_MAPPED~%")
(thunk)
(dpy "#endif~%~%"))
@@ -2139,7 +2140,7 @@
(hey " * HAVE_GTK_INFO_BAR_NEW for 2.17.2~%")
(hey " * HAVE_GTK_STATUS_ICON_GET_TITLE for 2.17.3~%")
(hey " * HAVE_GTK_WIDGET_GET_VISIBLE for 2.17.7~%")
-(hey " * HAVE_GTK_TOOL_PALETTE_NEW for 2.19.1~%")
+(hey " * HAVE_GTK_WIDGET_GET_MAPPED for 2.19.3~%")
(hey " * HAVE_CAIRO_CREATE for cairo~%")
(hey " * HAVE_CAIRO_GET_USER_DATA for cairo 1.4.0~%")
(hey " * HAVE_CAIRO_FORMAT_STRIDE_FOR_WIDTH for cairo 1.6.4~%")
@@ -2191,6 +2192,7 @@
(hey " * win32-specific functions~%")
(hey " *~%")
(hey " * HISTORY:~%")
+(hey " * 28-Jan-10: removed the rest of the struct accessors.~%")
(hey " * --------~%")
(hey " * 16-Dec-09: removed Guile support.~%")
(hey " * --------~%")
@@ -2301,7 +2303,7 @@
(hey " free(val);~%")
(hey "}~%")
(hey "#endif~%")
-(hey "#if HAVE_S7~%")
+(hey "#if HAVE_SCHEME~%")
(hey "static void xm_obj_free(void *val)~%")
(hey "{~%")
(hey " free(val);~%")
@@ -2317,7 +2319,7 @@
(hey "}~%")
(hey "static void define_xm_obj(void)~%")
(hey "{~%")
-(hey "#if HAVE_S7~%")
+(hey "#if HAVE_SCHEME~%")
(hey " xm_obj_tag = XEN_MAKE_OBJECT_TYPE(\"<XmObj>\", NULL, xm_obj_free, s7_equalp_xm, NULL, NULL, NULL, NULL, NULL, NULL);~%")
(hey "#else~%")
(hey " xm_obj_tag = XEN_MAKE_OBJECT_TYPE(\"XmObj\", sizeof(void *));~%")
@@ -3694,7 +3696,7 @@
(hey "/* ---------------------------------------- constants ---------------------------------------- */~%~%")
(hey "static void define_integers(void)~%")
(hey "{~%")
-(hey "#if HAVE_S7~%")
+(hey "#if HAVE_SCHEME~%")
(hey " #define DEFINE_INTEGER(Name) s7_define_constant(s7, XG_PRE #Name XG_POST, C_TO_XEN_INT(Name))~%")
(hey " #define DEFINE_ULONG(Name) s7_define_constant(s7, XG_PRE #Name XG_POST, C_TO_XEN_ULONG(Name))~%")
(hey "#else~%")
@@ -3745,7 +3747,7 @@
(hey "static void define_doubles(void)~%")
(hey "{~%")
-(hey "#if HAVE_S7~%")
+(hey "#if HAVE_SCHEME~%")
(hey " #define DEFINE_DOUBLE(Name) s7_define_constant(s7, XG_PRE #Name XG_POST, C_TO_XEN_DOUBLE(Name))~%")
(hey "#else~%")
(hey " #define DEFINE_DOUBLE(Name) XEN_DEFINE(XG_PRE #Name XG_POST, C_TO_XEN_DOUBLE(Name))~%")
@@ -3763,7 +3765,7 @@
(hey "~%")
(hey "static void define_atoms(void)~%")
(hey "{~%")
-(hey "#if HAVE_S7~%")
+(hey "#if HAVE_SCHEME~%")
(hey " #define DEFINE_ATOM(Name) s7_define_constant(s7, XG_PRE #Name XG_POST, C_TO_XEN_GdkAtom(Name))~%")
(hey "#else~%")
(hey " #define DEFINE_ATOM(Name) XEN_DEFINE(XG_PRE #Name XG_POST, C_TO_XEN_GdkAtom(Name))~%")
@@ -3782,7 +3784,7 @@
(hey "static void define_strings(void)~%")
(hey "{~%")
(hey " ~%")
-(hey "#if HAVE_S7~%")
+(hey "#if HAVE_SCHEME~%")
(hey " #define DEFINE_STRING(Name) s7_define_constant(s7, XG_PRE #Name XG_POST, s7_make_permanent_string(Name))~%")
(hey "#else~%")
(hey " #define DEFINE_STRING(Name) XEN_DEFINE(XG_PRE #Name XG_POST, C_TO_XEN_STRING(Name))~%")
diff --git a/tools/sam.c b/tools/sam.c
index 3bfddbc..cdc9027 100644
--- a/tools/sam.c
+++ b/tools/sam.c
@@ -3,11 +3,13 @@
/* I assume what people really want is a good rendition from their ancient SAM files,
* not an exact replica of the Samson box output. The latter used 12, 14, 20, 24, 28, and 30-bit
* fractional and integer fields, which are a pain to deal with when we would rather use doubles.
- * The 20-bitness matters (perhaps) in the noise calculation.
*
* gcc sam.c -o sam -lm -O2
* sam TEST.SAM
- * -> test.wav ("wav" or "riff" header, quad, little-endian float data at box srate)
+ * -> TEST.wav ("wav" or "riff" header, quad, little-endian float data at box srate)
+ *
+ * to include a read-data file, convert the old SAD file to a raw file of little-endian floats,
+ * then sam TEST.SAM test.snd
*
* here's the Snd code I use to turn quad into stereo and scale the result to .9:
*
@@ -33,8 +35,9 @@
(scl (/ 0.9 mx)))
(map-channel (lambda (y) (* y scl)) 0 (frames snd) new-snd 0)
(map-channel (lambda (y) (* y scl)) 0 (frames snd) new-snd 1)))))
-
*
+ *
+ * Thanks to Michael McNabb for bug fixes and enhancements!
*/
#include <stdlib.h>
@@ -44,15 +47,13 @@
#include <math.h>
-#define OUTPUT_FILENAME "test.wav"
#define TOTAL_SAMPLES -1
-
- /* set TOTAL_SAMPLES to the number of samples you want computed, or -1 to compute all of them */
-
+/* set TOTAL_SAMPLES to the number of samples you want computed, or -1 to compute all of them */
#define DEFAULT_DESCRIBE_COMMANDS false
#define REPORT_BAD_COMMANDS true
#define FLUSH_BAD_COMMANDS false
+#define FLUSH_TRAILING_LINGERS false
static bool describe_commands = DEFAULT_DESCRIBE_COMMANDS;
static int start_describing = -1, stop_describing = -1;
@@ -77,7 +78,8 @@ static int dump_patch_at = -1;
#define DOUBLE_28(N) ((double)N / (double)(1 << 27))
#define DOUBLE_30(N) ((double)N / (double)(1 << 29))
-#define UNSIGNED_12_TO_DOUBLE(N) ((double)N / (double)(1 << 12))
+/* mmm -- slightly more accurate to use 1<<12-1, I think */
+#define UNSIGNED_12_TO_DOUBLE(N) ((double)N / (double)((1 << 12) - 1))
#define DOUBLE_TO_TWOS_20(X) ((X >= 0.0) ? (int)(X * (1 << 19)) : (int)((X + 1.0) * (1 << 19)))
@@ -100,6 +102,7 @@ typedef struct {
typedef struct {
int P, Z, Y, X, I; /* "I" = table lookup index received from modifier */
+ double xd1, xd2; /* mmm - accounts for "extra" hidden delay */
} delay;
#define SUM_MEMORY_SIZE 64
@@ -121,8 +124,10 @@ static float dac_out[4], dac_out_peak[4];
static int tick, pass, DX, processing_ticks, highest_tick_per_pass, samples = 0, srate = 1, total_commands = 0, current_command = 0;
-FILE *snd_file = NULL; /* for now just riff/wave quad, but srate depends on tick setting */
-
+FILE *snd_file = NULL; /* for now just riff/wave quad, but srate depends on tick setting */
+FILE *read_data_file = NULL;
+static char *filename = NULL; /* mmm - Keep SAM filename around */
+static char *output_filename = NULL; /* mmm - And generate matching output file name == <sam name>.wav */
static void start_clean(void)
{
@@ -173,7 +178,7 @@ static void all_done(void)
{
int header_info[1];
fclose(snd_file);
- snd_file = fopen(OUTPUT_FILENAME, "r+");
+ snd_file = fopen(output_filename, "r+"); /* mmm */
fseek(snd_file, 4L, SEEK_SET);
header_info[0] = 88 + samples * 4 * 4; /* total data bytes 4 chans, 4 bytes/float */
fwrite((void *)header_info, 4, 1, snd_file);
@@ -182,7 +187,7 @@ static void all_done(void)
fwrite((void *)header_info, 4, 1, snd_file);
fclose(snd_file);
- fprintf(stderr, "test.wav: %dHz, %d samples, %.4f secs", srate, samples, (double)samples / (double)srate);
+ fprintf(stderr, "%s: %dHz, %d samples, %.4f secs", output_filename, srate, samples, (double)samples / (double)srate); /* mmm */
fprintf(stderr, ", maxamps: %.3f %.3f %.3f %.3f\n", dac_out_peak[0], dac_out_peak[1], dac_out_peak[2], dac_out_peak[3]);
}
exit(0);
@@ -192,7 +197,8 @@ static void all_done(void)
static void dac_write(double data, int chan)
{
/* during a given pass we accumulate output to the dac */
- dac_out[chan] += (float)(data / 4.0); /* what is the correct scaling here? */
+ dac_out[chan] += (float)(data / 2.0);
+ /* mmm - /2 seems best now that other scalings have been adjusted */
}
@@ -296,6 +302,7 @@ static void dac_write(double data, int chan)
*/
#define osc_mode(gmode) (gmode & 0xf)
+
/*
SSSS: 0100 sum of cosines
0001 sawtooth
@@ -304,6 +311,7 @@ SSSS: 0100 sum of cosines
0000 sin (K)
1000 sin (J + fm)
*/
+
#define SUMCOS 4
#define SAWTOOTH 1
#define SQUARE 2
@@ -313,12 +321,14 @@ SSSS: 0100 sum of cosines
#define osc_env(gmode) ((gmode >> 4) & 0x3)
+
/*
EE: 00 L - Q
01 L + Q
10 L - 2**(-Q)
11 L + 2**(-Q)
*/
+
#define L_PLUS_Q 1
#define L_MINUS_Q 0
#define L_MINUS_2_TO_MINUS_Q 2
@@ -334,6 +344,8 @@ static void set_osc_run(int gen, int RRRR)
g = gens[gen];
/* RRRREESSSS */
g->GMODE = (g->GMODE & 0x3f) | (RRRR << 6);
+
+ if (g->GMODE == 3) g->GMODE = 2; /* if write data, send it to the DAC outputs instead */
}
/* osc. run? env. run? add to sum?
@@ -395,8 +407,8 @@ static double gen_amp(generator *g)
emode = osc_env(g->GMODE);
if ((emode == L_PLUS_2_TO_MINUS_Q) ||
(emode == L_MINUS_2_TO_MINUS_Q))
- Q = pow(2.0, -4.0 * g->f_GQ);
- else Q = g->f_GQ / 4.0;
+ Q = pow(2.0, -16.0 * g->f_GQ);
+ else Q = g->f_GQ;
if ((emode == L_PLUS_Q) ||
(emode == L_PLUS_2_TO_MINUS_Q))
@@ -405,7 +417,7 @@ static double gen_amp(generator *g)
}
-static bool read_data_warned = false, write_data_warned = true;
+static bool read_data_warned = false;
static void process_gen(int gen)
{
@@ -431,36 +443,34 @@ static void process_gen(int gen)
if (osc_run(Gmode10) == 3)
{
- if (!write_data_warned)
- {
- fprintf(stderr, "Can't write data!\n");
- write_data_warned = true;
- }
+ /* mmm - just ignore write-data generators since everything is being written out anyway */
return;
}
if ((FmSum7 >> 6) == 0)
fm = gen_ins[FmSum7 & 0x3f];
else fm = mod_ins[FmSum7 & 0x3f];
-
- if (osc_run(Gmode10) == 2)
- {
- dac_write(fm, g->GO & 0xf); /* in this case, we need the integer value of GO */
- return;
- }
+ /* fm *= 0.5; */
FmPhase20 = fm + OscFreq28;
if (osc_is_running(Gmode10))
OscFreq28 += (FrqSwp20 / 256.0); /* right adjusted 20 bit */
- if (osc_mode(Gmode10) == 9) /* sin(J+fm) */
+ if (osc_mode(Gmode10) == SIN_FM) /* sin(J+fm) */
Phase20 = FmPhase20;
else Phase20 = OscAng20;
if (osc_is_running(Gmode10))
OscAng20 += FmPhase20;
-
+
+ /* mmm - dac write goes here and does not stop the processing (probably makes no diff) */
+ if (osc_run(Gmode10) == 2)
+ {
+ dac_write(fm, g->GO & 0xf); /* in this case, we need the integer value of GO */
+ return;
+ }
+
/* probably should be osc_mode(Gmode10) == SUMCOS */
if ((osc_mode(Gmode10) != SIN_K) &&
(osc_mode(Gmode10) != SIN_FM))
@@ -497,8 +507,11 @@ static void process_gen(int gen)
case PULSE:
/* pulse mode was primarily used for triggered noise */
- if ((fmod(Phase20, 2.0) < 1.0) && (fmod(OscAng20, 2.0) > 1.0))
- OscOut13 = 0.5;
+ if ((OscAng20 >= 2.0) || (OscAng20 < -2.0))
+ {
+ OscAng20 = fmod(OscAng20, 2.0);
+ OscOut13 = 0.5;
+ }
else OscOut13 = 0.0;
break;
}
@@ -509,7 +522,7 @@ static void process_gen(int gen)
{
double old_amp;
old_amp = CurAmp24;
- CurAmp24 += (AmpSwp20 / 16.0);
+ CurAmp24 += (AmpSwp20 / 32.0); /* was 16.0 */ /* mmm - don't know why 32 but it seems to be more accurate than 16 */
/*
The envelope side of the generator can be sticky, which means
that rather than overflow it will stay at the last value it attained
@@ -557,10 +570,17 @@ static void process_gen(int gen)
if ((osc_env(Gmode10) == L_PLUS_2_TO_MINUS_Q) ||
(osc_env(Gmode10) == L_MINUS_2_TO_MINUS_Q))
- NewAmp12 = pow(2.0, -4.0 * CurAmp12);
- else NewAmp12 = CurAmp12 / 4.0;
+ NewAmp12 = pow(2.0, -16.0 * CurAmp12);
+ else NewAmp12 = CurAmp12; /* was / 4 */ /* mmm - no scaling called for here */
+
+ /* I think this matches the spec:
+ * if temp6 is 0, then 2^(-temp6) is 1, the specs say #b111111111101,
+ * which assuming 12 bit unsigned fractions is 4093/4096,
+ * if temp6 is #b000100000000 (256), 2^(-temp6) is #b011111111110,
+ * which is .5 (fractional) so we really want 2^(-16*temp6) = 2^-1
+ */
- /* in the notes: "The scaling involved is a left shift of temp6 by 4 bits", but that sounds wrong to me in the L+Q case.
+ /* in the notes: "The scaling involved is a left shift of temp6 by 4 bits".
* This scaling matters in FM since it is a multiplier on the index, and in pluck.
*/
@@ -574,16 +594,39 @@ static void process_gen(int gen)
{
if (osc_run(Gmode10) != 7)
{
+ /* "If GS is 0, the high-order 19 bits
+ of the rounded product are taken, right-adjusted with sign
+ extended; if GS is 1, the high-order 20 bits of the rounded
+ product are taken."
+ */
if (g->GS == 0)
- gen_outs[OutSum6] += OscOut13; /* what is the scaling here? */
- else gen_outs[OutSum6] += (OscOut13 * 2.0); /* just a guess */
+ gen_outs[OutSum6] += OscOut13 / 2.0; /* mmm - right-shifted high order 19 bits so divide by 2 */
+ else gen_outs[OutSum6] += OscOut13; /* mmm - no shift, so leave value alone */
}
else
{
- if (!read_data_warned)
+ /* read-data: assume we're reading floats from a raw file */
+ if (read_data_file)
{
- fprintf(stderr, "read data?!?\n");
- read_data_warned = true;
+ float read_data_value;
+ fread((void *)(&read_data_value), 4, 1, read_data_file);
+ gen_outs[OutSum6] = OscOut13 + read_data_value; /* was * 2 */
+ /*
+ "If the run mode
+ specifies adding into sum memory, Temp9 is added into the sum
+ memory location designated by GSUM; except that in run mode
+ 0111, the product is added to the next read-data item from the
+ CPU and the sum replaces the contents of the sum memory
+ location addressed."
+ */
+ }
+ else
+ {
+ if (!read_data_warned)
+ {
+ fprintf(stderr, "read data?!?\n");
+ read_data_warned = true;
+ }
}
}
}
@@ -636,7 +679,10 @@ static double mod_read(int addr)
case 1: return(mod_ins[A]);
case 2: return(mod_outs[A]);
}
+
+ /* this is happening a lot in MARS.SAM?
fprintf(stderr, "bad MIN/MRM: %d\n", addr);
+ */
return(0);
}
@@ -761,7 +807,9 @@ static void process_mod(int mod)
*
* see below -- I don't think this is correct.
*/
- IS = (m->L0 + (m->L1 * m->M0)) & 0xfffff;
+ /* IS = (m->L0 + (m->L1 * m->M0)) & 0xfffff; */
+
+ IS = (m->L0 + ((m->L1 * m->M0) >> 10)) & 0xfffff;
mod_write(m->MSUM, TWOS_20_TO_DOUBLE(IS));
m->L1 = IS;
break;
@@ -831,14 +879,14 @@ static void process_mod(int mod)
*/
tmp0 = m->f_L1 * m->f_M1;
tmp1 = m->f_L0 * m->f_M0;
- S = tmp0 + tmp1 + A;
+ S = tmp0 + tmp1 + A; /* divide A by 1024.0 here probably */
mod_write(m->MSUM, S);
m->f_L0 = m->f_L1;
m->f_L1 = S;
if (mode == M_TWO_POLE_M0)
m->f_M0 += (B / 1024.0);
/* "when a quantity is added to M0 or M1 it is added right-justified, with sign extended"
- * does that include "A" above?
+ * does that include "A" above? I think it does... (see one and two_zero below).
*/
if (mode == M_TWO_POLE_M1)
m->f_M1 += (B / 1024.0);
@@ -855,9 +903,9 @@ static void process_mod(int mod)
*/
tmp0 = m->f_L1 * m->f_M1;
tmp1 = m->f_L0 * m->f_M0;
- mod_write(m->MSUM, tmp0 + tmp1 + A);
+ mod_write(m->MSUM, tmp0 + tmp1 + A); /* divide A by 1024.0 here probably */
m->f_L0 = m->f_L1;
- m->f_L1 = A;
+ m->f_L1 = A / 1024.0;
if (mode == M_TWO_ZERO_M0)
m->f_M0 += (B / 1024.0);
if (mode == M_TWO_ZERO_M1)
@@ -901,7 +949,7 @@ static void process_mod(int mod)
tmp0 = m->f_L1 * m->f_M1;
tmp1 = m->f_L0 * m->f_M0;
m->f_L0 = m->f_L1;
- m->f_L1 = A;
+ m->f_L1 = A / 1024.0;
mod_write(m->MSUM, tmp0 + tmp1);
break;
@@ -1042,7 +1090,18 @@ static double delay_read(int dly)
case D_LINE:
case D_TAP:
/* return the value with a hidden 2 sample delay (Z+3 == total delay length + 2) */
+#if 0
return(delay_memory[d->X + d->Y]);
+#else
+ {
+ /* I originally thought this was making a raspy or crackling sound in the reverbs, but now I don't hear it (bil) */
+ double val;
+ val = d->xd2;
+ d->xd2 = d->xd1;
+ d->xd1 = delay_memory[d->X + d->Y];
+ return val;
+ }
+#endif
case D_TABLE_LOOKUP:
case D_TABLE_LOOKUP_ROUNDED:
@@ -1055,7 +1114,7 @@ static double delay_read(int dly)
}
Z_shift = d->Z & 0xf;
dY = (d->I >> Z_shift) & 0xffff;
- return(delay_memory[d->X + dY]); /* still not right -- there's a 3 sample delay */
+ return(delay_memory[d->X + dY]);
}
}
return(0);
@@ -1117,7 +1176,13 @@ static void linger(int time)
if (time < pass)
pass = pass - (1 << 20);
- if (((total_commands - current_command) < 100) &&
+ /* old SAM files had endless strings of lingers at the end generating enormous empty sound files, but
+ *
+ * mmm - this was causing the long trailing reverb of some of my files to be cut off.
+ */
+
+ if ((FLUSH_TRAILING_LINGERS) &&
+ ((total_commands - current_command) < 100) &&
(total_commands > 1000) &&
((time - pass) > (6 * srate)))
{
@@ -1169,7 +1234,7 @@ static void linger(int time)
mod_outs[i] = 0.0;
}
- fwrite((void *)dac_out, 4, 4, snd_file);
+ fwrite(dac_out, 4, 4, snd_file);
samples++;
for (i = 0; i < 4; i++)
{
@@ -1409,24 +1474,34 @@ static void ticks_command(int cmd)
if (data != 0) /* used at end of some box sequences, but that confuses srate */
{
if (Q == 0)
- processing_ticks = data;
+ processing_ticks = data + 1; /* mmm - data is highest numbered processing tick per pass, so processing_ticks is 1 greater. */
else
{
- highest_tick_per_pass = data + 2; /* why isn't this 9? */
+ if (srate <= 1)
+ {
+ /* mmm - srate can now be set from the command line in certain cases. I had some weird tick settings for some reason.
+ * mmm - highest_tick_per_pass is actually being set here to the max *number* of ticks per pass, including overhead
+ */
+ highest_tick_per_pass = data + 2; /* why isn't this 9? */
- /* "It's not clear from the documentation, so to clarify: On the # TICKS
- * command, the number to be supplied for Q=1 is the total number of ticks
- * per pass minus 2. (TVR - 7 August 1984)"
- */
+ /* "It's not clear from the documentation, so to clarify: On the # TICKS
+ * command, the number to be supplied for Q=1 is the total number of ticks
+ * per pass minus 2. (TVR - 7 August 1984)"
+ */
- /* it's a 10 bit field, and higher bits are ignored, so the slowest we
- * can run is 5010Hz or thereabouts
- */
+ /* it's a 10 bit field, and higher bits are ignored, so the slowest we
+ * can run is 5010Hz or thereabouts
+ */
- if (highest_tick_per_pass > GENERATORS)
- highest_tick_per_pass = GENERATORS;
+ if (highest_tick_per_pass > GENERATORS)
+ highest_tick_per_pass = GENERATORS; /* mmm - could it not be higher in some cases? */
- srate = (int)(1000000000.0 / (double)(highest_tick_per_pass * 195));
+ srate = (int)(1000000000.0 / (double)(highest_tick_per_pass * 195));
+ }
+ else
+ {
+ highest_tick_per_pass = (1000000000.0 / (double)srate / 195.0);
+ }
}
}
@@ -1449,9 +1524,6 @@ static void ticks_command(int cmd)
if (snd_file == NULL)
{
/* now that we know the sampling rate, open the output file */
- /* each tick takes 195 nsec, and there are 8 overhead ticks,
- * so our srate is 1000000000 / ((highest_tick + 8) * 195)
- */
int header_info[24] = {1179011410, 88, 1163280727, 1263424842,
28, 0, 0, 0,
0, 0, 0, 0,
@@ -1459,7 +1531,27 @@ static void ticks_command(int cmd)
705600, 2097168, 1635017060, 16,
0, 0, 0, 0};
header_info[15] = srate;
- snd_file = fopen(OUTPUT_FILENAME, "w");
+
+ /* mmm - generate output filename based on input filename */
+ {
+ char *dot;
+ int i, len;
+ len = strlen(filename);
+ output_filename = malloc(len + 1);
+ strcpy(output_filename, filename);
+ /* dot = strchr(output_filename, '.');
+ * can be confused by ../test/TEST.SAM
+ */
+ for (i = len - 1; i > 0; i--)
+ if (filename[i] == '.')
+ {
+ dot = (char *)(output_filename + i);
+ break;
+ }
+ strcpy(dot + 1, "wav");
+ snd_file = fopen(output_filename, "w");
+ }
+
if (!snd_file)
{
fprintf(stderr, "can't open test.snd!\n");
@@ -1499,16 +1591,23 @@ static void gq_command(int cmd)
old_f_GQ = g->f_GQ;
/* spec says "sign extended" which makes me think this number is signed, but I think it is unsigned in exp modes */
+ /* mmm - I also believe it is unsigned. */
+ /* pete:
+ * Hmm, it looks like it makes more sense to call it unsigned. Certainly
+ * the multiplication of envelope times waveform treats the envelope as
+ * unsigned (i.e. non-negative).
+ */
+
if (E == 0)
- g->GQ = (TWOS_20(data) & 0xffffff);
+ g->GQ = data; /* mmm */
else
{
- g->GQ = (data << 4) + (DX >> 16);
+ g->GQ = (data << 4) | ((DX >> 16) & 0xf); /* mmm */
old_DX = DX;
DX = 0;
}
- g->f_GQ = DOUBLE_24(g->GQ);
+ g->f_GQ = (double)(g->GQ) / (double)(1 << 24); /* mmm - proper scaling of unsigned value */
if (describe_commands)
{
@@ -1677,6 +1776,7 @@ static void gn_command(int cmd)
case 0:
g->GS = 0;
break;
+
case 1:
g->GS = 1;
break;
@@ -2028,7 +2128,7 @@ static void go_command(int cmd)
/* To avoid endless repetition in the modifier processing, I'll incorporate the scalers
* into M0 and M1 when they are set, or when the scalers are changed, but this means
- * (for simplicity) keeping track of the oiginal M0 and M1 values "o_M0" and friends)
+ * (for simplicity) keeping track of the original M0 and M1 values: ("o_M0" and friends)
*/
static void mm_command(int cmd)
@@ -2064,7 +2164,7 @@ static void mm_command(int cmd)
break;
case 2:
- m->M0 = TWOS_30(((data << 10) + (DX >> 10)));
+ m->M0 = TWOS_30(((data << 10) + ((DX >> 10) & 0x3ff)));
m->f_M0 = DOUBLE_30(m->M0);
m->o_M0 = m->M0;
m->o_f_M0 = m->f_M0;
@@ -2075,7 +2175,7 @@ static void mm_command(int cmd)
break;
case 3:
- m->M1 = TWOS_30(((data << 10) + (DX >> 10)));
+ m->M1 = TWOS_30(((data << 10) + ((DX >> 10) & 0x3ff)));
m->f_M1 = DOUBLE_30(m->M1);
m->o_M1 = m->M1;
m->o_f_M1 = m->f_M1;
@@ -2168,7 +2268,7 @@ static const char *mode_name(int m)
{
case M_INACTIVE: return("inactive");
case M_NOISE: return("noise");
- case M_TRIGGERED_NOISE: return("trignoise");
+ case M_TRIGGERED_NOISE: return("triggered-noise");
case M_LATCH: return("latch");
case M_THRESHOLD: return("thresh");
case M_DELAY: return("delay");
@@ -2267,10 +2367,6 @@ static void mmode_command(int cmd)
if (REPORT_BAD_COMMANDS)
{
- /*
- if ((MMODE >> 4) == M_TRIGGERED_NOISE)
- fprintf(stderr, "noise...");
- */
if (((MMODE >> 4) != M_INACTIVE) &&
((mod * 2) >= processing_ticks))
fprintf(stderr, "sample %d (%.3f), command %d, m%d cannot actually run (procticks: %d)\n",
@@ -2312,14 +2408,17 @@ static void mrm_command(int cmd)
m->MRM = MRM;
if (I == 0)
m->MIN = MIN;
+
switch (CC)
{
case 0:
m->T = 0;
break;
+
case 1:
m->T = 1;
break;
+
case 2:
m->L1 = 0;
m->f_L1 = 0.0;
@@ -2683,11 +2782,10 @@ static void dump_patch(void)
int main(int argc, char **argv)
{
if (argc < 2)
- fprintf(stderr, "sam filename\n");
+ fprintf(stderr, "sam filename [read_data file] [srate]\n"); /* mmm */
else
{
FILE *sam_file;
- char *filename;
filename = argv[1];
sam_file = fopen(filename, "r");
@@ -2711,6 +2809,16 @@ int main(int argc, char **argv)
unsigned char *command;
int i;
+ if (argc > 2)
+ {
+ read_data_file = fopen(argv[2], "r");
+ if (argc > 3)
+ {
+ /* mmm - set srate explicitly. I had an inexplicably high max tick setting in one sam file with read data input. */
+ sscanf(argv[3], "%d", &srate);
+ }
+ }
+
start_clean();
command = (unsigned char *)calloc(size + 1, sizeof(unsigned char));
@@ -2727,10 +2835,11 @@ int main(int argc, char **argv)
* and the possibly not-32 bit files as 32. I can't find the corresponding code in the writers
* that Nando found on the exabyte tapes.
*
- * The *.SAM.snd files are raw big-endian 24 int data (stereo?)
+ * The *.SAM.snd files are raw big-endian 24-bit int data (stereo?)
* with many (6?) renditions?
*/
+#if 1
if ((command[0] != 0) || /* just a first guess */
(command[1] != 0))
{
@@ -2767,6 +2876,25 @@ int main(int argc, char **argv)
handle_command(cmd);
}
}
+#else
+ /* another format that Mike used:
+ * cmd = (b1 << 28) | (b2 << 24) | (b3 << 16) | (b4 << 8) | b5;
+ */
+ total_commands = bytes / 5;
+ current_command = 0;
+ for (i = 0; i < bytes; i += 5)
+ {
+ int cmd;
+ int b1, b2, b3, b4, b5;
+ b1 = command[i + 0];
+ b2 = command[i + 1];
+ b3 = command[i + 2];
+ b4 = command[i + 3];
+ b5 = command[i + 4];
+ cmd = (b1 << 28) | (b2 << 24) | (b3 << 16) | (b4 << 8) | b5;
+ handle_command(cmd);
+ }
+#endif
}
all_done();
diff --git a/tools/sarchive b/tools/sarchive
index 2318120..e7eecf8 100755
--- a/tools/sarchive
+++ b/tools/sarchive
@@ -4,7 +4,7 @@ date > /home/bil/cl/hi
echo ' ' >> /home/bil/cl/hi
chdir /home/bil/dist/snd
-foreach file (*.h *.c *.cl *.el *.clm *.html makefile.* make.* *.gtkrc *.in *.scm *.lisp *.fs *.fsm *.js *.Snd Snd.ad snd.1 configure.ac *.rb *.m4 config.guess config.sub NEWS *.tex COPYING DotEmacs rt-DotEmacs *.f music5-examples)
+foreach file (*.h *.c *.cl *.el *.clm *.html makefile.* make.* *.gtkrc *.in *.scm *.lisp *.fs *.fsm *.js *.Snd Snd.ad snd.1 configure.ac *.rb *.m4 config.guess config.sub NEWS *.tex COPYING DotEmacs *.f music5-examples)
if (-e /home/bil/cl/$file) then
diff -bcw /home/bil/cl/$file /home/bil/dist/snd/$file >> /home/bil/cl/hi
find /home/bil/cl/$file -newer /home/bil/dist/snd/$file -exec echo ' updating ' $file \;
@@ -91,6 +91,3 @@ tar -chf snd.tar *
chdir /home/bil/cl
wc hi
-rm po/snd.pot
-xgettext --keyword=_ --keyword=N_ --files-from=po/POTFILES.in -o po/snd.pot
-cp po/snd.pot /home/bil/dist/snd/po/snd.pot
diff --git a/tools/va.scm b/tools/va.scm
index 66a1278..b3cbfc1 100755
--- a/tools/va.scm
+++ b/tools/va.scm
@@ -91,15 +91,6 @@
(loop (read-line file 'concat))))))))
(list "CALLOC" "MALLOC" "REALLOC" "calloc" "malloc" "realloc"))
-(system "fgrep 'setf ' *.scm > vahi")
-(call-with-input-file "vahi"
- (lambda (file)
- (let loop ((line (read-line file 'concat)))
- (or (eof-object? line)
- (begin
- (display line)
- (loop (read-line file 'concat)))))))
-
(let ((flen (string-length "snd-display "))
(line-ctr 0))
(call-with-input-file "snd-test.scm"
diff --git a/tools/xgdata.scm b/tools/xgdata.scm
index 15e76df..edc7882 100644
--- a/tools/xgdata.scm
+++ b/tools/xgdata.scm
@@ -1795,8 +1795,8 @@
(CFNC "GtkWidget* gtk_fixed_new void")
(CFNC "void gtk_fixed_put GtkFixed* fixed GtkWidget* widget gint x gint y")
(CFNC "void gtk_fixed_move GtkFixed* fixed GtkWidget* widget gint x gint y")
-(CFNC "void gtk_fixed_set_has_window GtkFixed* fixed gboolean has_window")
-(CFNC "gboolean gtk_fixed_get_has_window GtkFixed* fixed")
+;;; out 2.19.3 (CFNC "void gtk_fixed_set_has_window GtkFixed* fixed gboolean has_window")
+;;; (CFNC "gboolean gtk_fixed_get_has_window GtkFixed* fixed")
(CCAST "GTK_FONT_SELECTION(obj)" "GtkFontSelection*")
(CCHK "GTK_IS_FONT_SELECTION(obj)" "GtkFontSelection*")
(CCAST "GTK_FONT_SELECTION_DIALOG(obj)" "GtkFontSelectionDialog*")
@@ -2239,7 +2239,7 @@
(CCAST "GTK_OBJECT(object)" "GtkObject*")
(CCHK "GTK_IS_OBJECT(object)" "GtkObject*")
;(CCAST2 "GTK_OBJECT_TYPE(object)")
-(CFNC "char* GTK_OBJECT_TYPE_NAME GtkObject* object")
+;;; 2.19.3 (CFNC "char* GTK_OBJECT_TYPE_NAME GtkObject* object")
(CINT "GTK_IN_DESTRUCTION")
;(CINT "GTK_FLOATING") ; out 2.9.0
;(CINT "GTK_RESERVED_1")
@@ -3375,30 +3375,30 @@
(CCAST "GTK_WIDGET(widget)" "GtkWidget*")
(CCHK "GTK_IS_WIDGET(widget)" "GtkWidget*")
;(CCAST2 "GTK_WIDGET_TYPE(wid)")
-(CFNC "int GTK_WIDGET_STATE GtkWidget* wid")
-(CFNC "int GTK_WIDGET_SAVED_STATE GtkWidget* wid")
-(CFNC "int GTK_WIDGET_FLAGS GtkWidget* wid")
-(CFNC "gboolean GTK_WIDGET_TOPLEVEL GtkWidget* wid")
-(CFNC "gboolean GTK_WIDGET_NO_WINDOW GtkWidget* wid")
-(CFNC "gboolean GTK_WIDGET_REALIZED GtkWidget* wid")
-(CFNC "gboolean GTK_WIDGET_MAPPED GtkWidget* wid")
-(CFNC "gboolean GTK_WIDGET_VISIBLE GtkWidget* wid")
-(CFNC "gboolean GTK_WIDGET_DRAWABLE GtkWidget* wid")
-(CFNC "gboolean GTK_WIDGET_SENSITIVE GtkWidget* wid")
-(CFNC "gboolean GTK_WIDGET_PARENT_SENSITIVE GtkWidget* wid")
-(CFNC "gboolean GTK_WIDGET_IS_SENSITIVE GtkWidget* wid")
-(CFNC "gboolean GTK_WIDGET_CAN_FOCUS GtkWidget* wid")
-(CFNC "gboolean GTK_WIDGET_HAS_FOCUS GtkWidget* wid")
-(CFNC "gboolean GTK_WIDGET_CAN_DEFAULT GtkWidget* wid")
-(CFNC "gboolean GTK_WIDGET_HAS_DEFAULT GtkWidget* wid")
-(CFNC "gboolean GTK_WIDGET_HAS_GRAB GtkWidget* wid")
-(CFNC "gboolean GTK_WIDGET_RC_STYLE GtkWidget* wid")
-(CFNC "gboolean GTK_WIDGET_COMPOSITE_CHILD GtkWidget* wid")
-(CFNC "gboolean GTK_WIDGET_APP_PAINTABLE GtkWidget* wid")
-(CFNC "gboolean GTK_WIDGET_RECEIVES_DEFAULT GtkWidget* wid")
-(CFNC "gboolean GTK_WIDGET_DOUBLE_BUFFERED GtkWidget* wid")
-(CFNC "void GTK_WIDGET_SET_FLAGS GtkWidget* wid int flag")
-(CFNC "void GTK_WIDGET_UNSET_FLAGS GtkWidget* wid int flag")
+;;; 2.19.3 (CFNC "int GTK_WIDGET_STATE GtkWidget* wid")
+;;; (CFNC "int GTK_WIDGET_SAVED_STATE GtkWidget* wid")
+;;; (CFNC "int GTK_WIDGET_FLAGS GtkWidget* wid")
+;;; (CFNC "gboolean GTK_WIDGET_TOPLEVEL GtkWidget* wid")
+;;; (CFNC "gboolean GTK_WIDGET_NO_WINDOW GtkWidget* wid")
+;;; (CFNC "gboolean GTK_WIDGET_REALIZED GtkWidget* wid")
+;;; (CFNC "gboolean GTK_WIDGET_MAPPED GtkWidget* wid")
+;;; (CFNC "gboolean GTK_WIDGET_VISIBLE GtkWidget* wid")
+;;; (CFNC "gboolean GTK_WIDGET_DRAWABLE GtkWidget* wid")
+;;; (CFNC "gboolean GTK_WIDGET_SENSITIVE GtkWidget* wid")
+;;; (CFNC "gboolean GTK_WIDGET_PARENT_SENSITIVE GtkWidget* wid")
+;;; (CFNC "gboolean GTK_WIDGET_IS_SENSITIVE GtkWidget* wid")
+;;; (CFNC "gboolean GTK_WIDGET_CAN_FOCUS GtkWidget* wid")
+;;; (CFNC "gboolean GTK_WIDGET_HAS_FOCUS GtkWidget* wid")
+;;; (CFNC "gboolean GTK_WIDGET_CAN_DEFAULT GtkWidget* wid")
+;;; (CFNC "gboolean GTK_WIDGET_HAS_DEFAULT GtkWidget* wid")
+;;; (CFNC "gboolean GTK_WIDGET_HAS_GRAB GtkWidget* wid")
+;;; (CFNC "gboolean GTK_WIDGET_RC_STYLE GtkWidget* wid")
+;;; (CFNC "gboolean GTK_WIDGET_COMPOSITE_CHILD GtkWidget* wid")
+;;; (CFNC "gboolean GTK_WIDGET_APP_PAINTABLE GtkWidget* wid")
+;;; (CFNC "gboolean GTK_WIDGET_RECEIVES_DEFAULT GtkWidget* wid")
+;;; (CFNC "gboolean GTK_WIDGET_DOUBLE_BUFFERED GtkWidget* wid")
+;;; (CFNC "void GTK_WIDGET_SET_FLAGS GtkWidget* wid int flag")
+;;; (CFNC "void GTK_WIDGET_UNSET_FLAGS GtkWidget* wid int flag")
;;;;(CFNC "GType gtk_widget_get_type void")
;;; (CFNC "GtkWidget* gtk_widget_new GType type gchar* first_property_name ...")
;;; any type vals here
@@ -4337,6 +4337,7 @@
(CFNC "void g_object_set_data GObject* object gchar* key gpointer data" 'const)
;(CCAST "GPOINTER(obj)" "gpointer") ; do this by hand...
+(CCAST "GDK_EVENT(obj)" "GdkEvent*")
(CCAST "GDK_EVENT_ANY(obj)" "GdkEventAny*")
(CCAST "GDK_EVENT_EXPOSE(obj)" "GdkEventExpose*")
(CCAST "GDK_EVENT_NOEXPOSE(obj)" "GdkEventNoExpose*")
@@ -6711,83 +6712,14 @@
(CFNC-2134 "GdkModifierType gtk_accel_group_get_modifier_mask GtkAccelGroup* accel_group")
-
-;;; Gtk 3.0 will probably disable a lot of these struct field accessors, so I need to start removing them
-
-;;; removed unused fields 23-Feb-09
-(STRUCT "GdkEventAny GdkEventType type GdkWindow* window")
-(STRUCT "GdkEventMotion GdkEventType type GdkWindow* window guint32 time gdouble x gdouble y guint state gint16 is_hint")
-(STRUCT "GdkEventButton GdkEventType type GdkWindow* window guint32 time gdouble x gdouble y guint state guint button")
-(STRUCT "GdkEventScroll GdkEventType type GdkWindow* window guint32 time gdouble x gdouble y guint state GdkScrollDirection direction")
-(STRUCT "GdkEventKey GdkEventType type GdkWindow* window guint32 time guint state guint keyval")
-(STRUCT "GdkGCValues GdkFunction function")
-
-
-;;; unused?
-;(STRUCT "GdkEventFocus GdkEventType type GdkWindow* window gint8 send_event gint16 in")
-;(STRUCT "GdkEventExpose GdkEventType type GdkWindow* window gint8 send_event GdkRegion* region gint count")
-;(STRUCT "GdkEventNoExpose GdkEventType type GdkWindow* window gint8 send_event")
-;(STRUCT "GdkEventVisibility GdkEventType type GdkWindow* window gint8 send_event GdkVisibilityState state")
-;(STRUCT "GdkEventCrossing GdkEventType type GdkWindow* window gint8 send_event GdkWindow* subwindow guint32 time gdouble x gdouble y gdouble x_root gdouble y_root GdkCrossingMode mode GdkNotifyType detail gboolean focus guint state")
-;(STRUCT "GdkEventConfigure GdkEventType type GdkWindow* window gint8 send_event gint x gint y gint width gint height")
-;(STRUCT "GdkEventProperty GdkEventType type GdkWindow* window gint8 send_event GdkAtom atom guint32 time guint state")
-;(STRUCT "GdkEventSelection GdkEventType type GdkWindow* window gint8 send_event GdkAtom selection GdkAtom target GdkAtom property guint32 time GdkNativeWindow requestor")
-;(STRUCT "GdkEventProximity GdkEventType type GdkWindow* window gint8 send_event guint32 time GdkDevice* device")
-;(STRUCT "GdkEventSetting GdkEventType type GdkWindow* window gint8 send_event GdkSettingAction action char* name")
-;(STRUCT "GdkEventWindowState GdkEventType type GdkWindow* window gint8 send_event GdkWindowState changed_mask GdkWindowState new_window_state")
-;(STRUCT "GdkEventDND GdkEventType type GdkWindow* window gint8 send_event GdkDragContext* context guint32 time gshort x_root gshort y_root")
-;(STRUCT "GdkGC gint clip_x_origin gint clip_y_origin gint ts_x_origin gint ts_y_origin GdkColormap* colormap")
-;(STRUCT "GdkColormap gint size GdkColor* colors GdkVisual* visual gpointer windowing_data")
-;(STRUCT "GdkDragContext GdkDragProtocol protocol gboolean is_source GdkWindow* source_window GdkWindow* dest_window GList* targets GdkDragAction actions GdkDragAction suggested_action GdkDragAction action guint32 start_time gpointer windowing_data")
-;(STRUCT "GdkImage GdkImageType type GdkVisual* visual GdkByteOrder byte_order gint width gint height guint16 depth guint16 bpp guint16 bpl guint16 bits_per_pixel gpointer mem GdkColormap* colormap gpointer windowing_data")
-;(STRUCT "GdkKeymapKey guint keycode gint group gint level")
-;(STRUCT "GdkRgbCmap guint32* colors gint n_colors GSList* info_list")
-;(STRUCT "GdkVisual GdkVisualType type gint depth GdkByteOrder byte_order gint colormap_size gint bits_per_rgb guint32 red_mask gint red_shift gint red_prec guint32 green_mask gint green_shift gint green_prec guint32 blue_mask gint blue_shift gint blue_prec")
-;(STRUCT "GdkWindowAttr gchar* title gint event_mask gint x gint y gint width gint height GdkVisual* visual GdkColormap* colormap GdkWindowType window_type GdkCursor* cursor gchar* wmclass_name gchar* wmclass_class gboolean override_redirect")
-;(STRUCT "GdkGeometry gint min_width gint min_height gint max_width gint max_height gint base_width gint base_height gint width_inc gint height_inc gdouble min_aspect gdouble max_aspect GdkGravity win_gravity")
-;;; 2.13.6 (STRUCT "GtkAdjustment gdouble lower gdouble upper gdouble &value gdouble step_increment gdouble page_increment gdouble page_size")
-;(STRUCT "GtkFontSelectionDialog GtkWidget* action_area")
-
-;;; removed unused fields 21-Feb-09
-(STRUCT "GtkStyle GdkGC* black_gc GdkGC* white_gc")
-(STRUCT "GtkColorSelectionDialog GtkWidget* ok_button GtkWidget* cancel_button")
-(STRUCT "GtkDialog GtkWidget* vbox GtkWidget* action_area")
-(STRUCT "GtkWidget guint8 state GtkStyle* style GdkWindow* window")
-;;; gui.scm is currently the main (only?) user of these fields
-
-;;; for 3.0...
-;;;
-;;; done (except for rt-related scheme code, and the ruby/forth stuff)
-;;; window -> gtk_widget_get_window
-;;; vbox -> gtk_dialog_get_content_area
-;;; action_area -> gtk_dialog_get_action_area
-;;; colorsel -> gtk_color_selection_dialog_get_color_selection
-;;; gtk_font_selection_dialog_get_ok|apply|cancel_button
-;;;
-;;; allocation -> gtk_widget_get_allocation
-;;; value -> gtk_adjustment_get|set_value
-;;; active -> gtk_toggle_button_get_active
-;;; child -> gtk_bin_get_child
-;;; lower, upper, page_size -> gtk_adjustment
-;;;
-;;; not done:
-;;; gdk_event_get_time|state|coords[x and y]|type|button|window|keyval etc
-;;; [gdk_event_get_time|state|coords] but no accessor for button|window|keyval|type?
-;;; GdkColor ->pixel, ->red|green|blue [no accessors apparently]
-;;; color selection dialog buttons currently must go through the property access maze
-
-
(STRUCT-make "GdkColor guint32 &pixel guint16 &red guint16 &green guint16 &blue")
(STRUCT-make "GdkCursor GdkCursorType type guint ref_count")
(STRUCT-make "GdkPoint gint x gint y")
(STRUCT-make "GdkRectangle gint x gint y gint width gint height")
-
(STRUCT-make "GtkRequisition gint width gint height")
-
(STRUCT-make "GtkStockItem")
(STRUCT-make "GtkTextIter")
(STRUCT-make "GtkTreeIter")
-
(STRUCT-make "PangoColor")
(STRUCT-make "PangoRectangle")
(STRUCT-make "PangoLogAttr")
@@ -7078,12 +7010,12 @@
(CFNC-2190 "GtkSizeGroup* gtk_tool_shell_get_text_size_group GtkToolShell* shell")
;;; (CFNC-2190 "GtkWindowType gtk_window_get_window_type GtkWindow* window")
(CFNC-2190 "GtkWidget* gtk_tool_palette_new void")
-(CFNC-2190 "void gtk_tool_palette_set_group_position GtkToolPalette* palette GtkWidget* group gint position")
-(CFNC-2190 "void gtk_tool_palette_set_exclusive GtkToolPalette* palette GtkWidget* group gboolean exclusive")
-(CFNC-2190 "void gtk_tool_palette_set_expand GtkToolPalette* palette GtkWidget* group gboolean expand")
-(CFNC-2190 "gint gtk_tool_palette_get_group_position GtkToolPalette* palette GtkWidget* group")
-(CFNC-2190 "gboolean gtk_tool_palette_get_exclusive GtkToolPalette* palette GtkWidget* group")
-(CFNC-2190 "gboolean gtk_tool_palette_get_expand GtkToolPalette* palette GtkWidget* group")
+(CFNC-2190 "void gtk_tool_palette_set_group_position GtkToolPalette* palette GtkToolItemGroup* group gint position") ; these changed GtkWidget* to GtkToolItemGroup*
+(CFNC-2190 "void gtk_tool_palette_set_exclusive GtkToolPalette* palette GtkToolItemGroup* group gboolean exclusive")
+(CFNC-2190 "void gtk_tool_palette_set_expand GtkToolPalette* palette GtkToolItemGroup* group gboolean expand")
+(CFNC-2190 "gint gtk_tool_palette_get_group_position GtkToolPalette* palette GtkToolItemGroup* group")
+(CFNC-2190 "gboolean gtk_tool_palette_get_exclusive GtkToolPalette* palette GtkToolItemGroup* group")
+(CFNC-2190 "gboolean gtk_tool_palette_get_expand GtkToolPalette* palette GtkToolItemGroup* group")
(CFNC-2190 "void gtk_tool_palette_set_icon_size GtkToolPalette* palette GtkIconSize icon_size")
(CFNC-2190 "void gtk_tool_palette_unset_icon_size GtkToolPalette* palette")
(CFNC-2190 "void gtk_tool_palette_set_style GtkToolPalette* palette GtkToolbarStyle style")
@@ -7091,7 +7023,7 @@
(CFNC-2190 "GtkIconSize gtk_tool_palette_get_icon_size GtkToolPalette* palette")
(CFNC-2190 "GtkToolbarStyle gtk_tool_palette_get_style GtkToolPalette* palette")
(CFNC-2190 "GtkToolItem* gtk_tool_palette_get_drop_item GtkToolPalette* palette gint x gint y")
-(CFNC-2190 "GtkWidget* gtk_tool_palette_get_drop_group GtkToolPalette* palette gint x gint y")
+(CFNC-2190 "GtkToolItemGroup* gtk_tool_palette_get_drop_group GtkToolPalette* palette gint x gint y")
(CFNC-2190 "GtkWidget* gtk_tool_palette_get_drag_item GtkToolPalette* palette GtkSelectionData* selection")
(CFNC-2190 "void gtk_tool_palette_set_drag_source GtkToolPalette* palette GtkToolPaletteDragTargets targets")
(CFNC-2190 "void gtk_tool_palette_add_drag_dest GtkToolPalette* palette GtkWidget* widget GtkDestDefaults flags GtkToolPaletteDragTargets targets GdkDragAction actions")
@@ -7125,3 +7057,22 @@
(CFNC-2190 "gboolean gtk_window_get_mnemonics_visible GtkWindow* window")
+;;; 2.19.4
+(CFNC-2190 "GdkWindow* gtk_entry_get_text_window GtkEntry* entry")
+(CFNC-2190 "GdkWindow* gtk_entry_get_icon_window GtkEntry* entry GtkEntryIconPosition icon_pos")
+(CFNC-2190 "void gtk_range_set_slider_size_fixed GtkRange* range gboolean size_fixed")
+(CFNC-2190 "gboolean gtk_range_get_slider_size_fixed GtkRange* range")
+(CFNC-2190 "void gtk_range_set_min_slider_size GtkRange* range gboolean min_size")
+(CFNC-2190 "gint gtk_range_get_min_slider_size GtkRange* range")
+(CFNC-2190 "void gtk_range_get_range_rect GtkRange* range GdkRectangle* range_rect")
+(CFNC-2190 "void gtk_range_get_slider_range GtkRange* range gint* [slider_start] gint* [slider_end]")
+(CFNC-2190 "void gtk_status_icon_set_name GtkStatusIcon* status_icon gchar* name") ; const gchar
+(CFNC-2190 "gboolean gtk_widget_has_rc_style GtkWidget* widget")
+
+;;; 2.19.5
+(CFNC-2190 "GdkWindow* gtk_paned_get_handle_window GtkPaned* paned")
+(CFNC-2190 "void gtk_widget_style_attach GtkWidget* style")
+(CFNC-2190 "void gtk_widget_set_realized GtkWidget* widget gboolean realized")
+(CFNC-2190 "gboolean gtk_widget_get_realized GtkWidget* widget")
+(CFNC-2190 "void gtk_widget_set_mapped GtkWidget* widget gboolean mapped")
+(CFNC-2190 "gboolean gtk_widget_get_mapped GtkWidget* widget")
diff --git a/vct.c b/vct.c
index 3f832dd..979a03f 100644
--- a/vct.c
+++ b/vct.c
@@ -232,7 +232,7 @@ bool mus_vct_equalp(vct *v1, vct *v2)
static XEN g_vct_fill(XEN obj, XEN val);
-#if (HAVE_S7)
+#if (HAVE_SCHEME)
static XEN g_vct_ref(XEN obj, XEN pos);
static XEN g_vct_set(XEN obj, XEN pos, XEN val);
static XEN g_vct_length(XEN obj);
@@ -273,7 +273,7 @@ static XEN s7_mus_vct_fill(s7_scheme *sc, XEN obj, XEN val)
XEN_MAKE_OBJECT_PRINT_PROCEDURE(vct, print_vct, mus_vct_to_string)
-#if (!HAVE_S7)
+#if (!HAVE_SCHEME)
static XEN equalp_vct(XEN obj1, XEN obj2)
{
if ((!(MUS_VCT_P(obj1))) || (!(MUS_VCT_P(obj2)))) return(XEN_FALSE);
@@ -633,7 +633,7 @@ v. " vct_map_example " is the same as " vct_fill_example
XEN_ASSERT_TYPE(MUS_VCT_P(obj), obj, XEN_ARG_1, S_vct_mapB, "a vct");
v = XEN_TO_VCT(obj);
-#if HAVE_S7 && USE_SND
+#if HAVE_SCHEME && USE_SND
{
struct ptree *pt = NULL;
if ((optimization(ss)) > 0)
@@ -784,7 +784,7 @@ static XEN g_vector_to_vct(XEN vect)
mus_long_t len, i;
vct *v;
XEN scv;
-#if HAVE_S7
+#if HAVE_SCHEME
int gc_loc;
#endif
@@ -793,7 +793,7 @@ static XEN g_vector_to_vct(XEN vect)
len = (mus_long_t)XEN_VECTOR_LENGTH(vect);
if (len == 0) return(XEN_FALSE);
scv = xen_make_vct(len, (mus_float_t *)calloc(len, sizeof(mus_float_t)));
-#if HAVE_S7
+#if HAVE_SCHEME
gc_loc = s7_gc_protect(s7, scv);
#endif
@@ -801,7 +801,7 @@ static XEN g_vector_to_vct(XEN vect)
for (i = 0; i < len; i++)
v->data[i] = (mus_float_t)XEN_TO_C_DOUBLE(XEN_VECTOR_REF(vect, i));
-#if HAVE_S7
+#if HAVE_SCHEME
s7_gc_unprotect_at(s7, gc_loc);
#endif
return(scv);
@@ -814,7 +814,7 @@ static XEN g_vct_to_vector(XEN vobj)
vct *v;
mus_long_t i, len;
XEN new_vect;
-#if HAVE_S7
+#if HAVE_SCHEME
int gc_loc;
#endif
@@ -824,7 +824,7 @@ static XEN g_vct_to_vector(XEN vobj)
len = v->length;
new_vect = XEN_MAKE_VECTOR(len, C_TO_XEN_DOUBLE(0.0));
-#if HAVE_S7
+#if HAVE_SCHEME
gc_loc = s7_gc_protect(s7, new_vect);
#endif
#if HAVE_RUBY && HAVE_RB_GC_DISABLE
@@ -838,7 +838,7 @@ static XEN g_vct_to_vector(XEN vobj)
for (i = 0; i < len; i++)
XEN_VECTOR_SET(new_vect, i, C_TO_XEN_DOUBLE(v->data[i]));
-#if HAVE_S7
+#if HAVE_SCHEME
s7_gc_unprotect_at(s7, gc_loc);
#endif
#if HAVE_RUBY && HAVE_RB_GC_DISABLE
@@ -1208,7 +1208,7 @@ vct( 0.5 0.3 0.1 ) .g => #<vct[len=3]: 0.500 0.300 0.100>"
void mus_vct_init(void)
{
-#if HAVE_S7
+#if HAVE_SCHEME
vct_tag = XEN_MAKE_OBJECT_TYPE("<vct>", print_vct, free_vct, s7_mus_vct_equalp, NULL,
s7_mus_vct_apply, s7_mus_vct_set, s7_mus_vct_length,
s7_mus_vct_copy, s7_mus_vct_fill);
@@ -1294,7 +1294,7 @@ void mus_vct_init(void)
XEN_DEFINE_PROCEDURE(S_vct, g_vct_w, 0, 0, 1, H_vct);
XEN_DEFINE_SET_PROCEDURE(S_vct_reverse, g_vct_reverse_w, 1, 1, 0, H_vct_reverse);
-#if HAVE_S7 && USE_SND
+#if HAVE_SCHEME && USE_SND
XEN_DEFINE_SET_PROCEDURE(S_vct_mapB, g_vct_mapB_w, 2, 0, 0, H_vct_mapB);
#else
XEN_DEFINE_PROCEDURE(S_vct_mapB, g_vct_mapB_w, 2, 0, 0, H_vct_mapB);
diff --git a/ws.rb b/ws.rb
index 6956997..43e098a 100644
--- a/ws.rb
+++ b/ws.rb
@@ -1,6 +1,6 @@
# ws.rb -- with_sound and friends for Snd/Ruby -*- snd-ruby -*-
-# Copyright (c) 2003--2009 Michael Scholz <mi-scholz@users.sourceforge.net>
+# Copyright (c) 2003--2010 Michael Scholz <mi-scholz@users.sourceforge.net>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -412,7 +412,7 @@ __ws_verbose__ = $VERBOSE
__ws_debug__ = $DEBUG
# get rid of `undefined variable' messages
with_silence do
- $clm_version = "ruby 08-Dec-2009"
+ $clm_version = "ruby 05-Jan-2010"
$output ||= false
$reverb ||= false
$clm_array_print_length ||= 8
@@ -595,7 +595,7 @@ After finishing the body, the file will be removed.")
end
def make_default_comment
- format("Written %s by %s at %s using clm (%s)",
+ format("# Written %s by %s at %s using clm (%s)",
Time.new.localtime.strftime("%a %d-%b-%y %H:%M %Z"),
Etc.getlogin,
Socket.gethostname,
diff --git a/ws.scm b/ws.scm
index a9dc71e..8edbdd3 100644
--- a/ws.scm
+++ b/ws.scm
@@ -2,8 +2,6 @@
(provide 'snd-ws.scm)
-(if (not (provided? 'snd-extensions.scm)) (load "extensions.scm")) ; we need sound-property in with-mixed-sound
-
(defmacro ws-interrupt? ()
`(if (c-g?)
(throw 'with-sound-interrupt)))
@@ -12,32 +10,32 @@
;;; -------- with-sound defaults --------
-(define *clm-srate* (default-output-srate))
-(define *clm-file-name* "test.snd")
-(define *clm-channels* (default-output-chans))
-(define *clm-data-format* (default-output-data-format))
-(define *clm-header-type* (default-output-header-type))
-(define *clm-verbose* #f)
-(define *clm-play* #f)
-(define *clm-statistics* #f)
-(define *clm-reverb* #f)
-(define *clm-reverb-channels* 1)
-(define *clm-reverb-data* '())
-(define *clm-table-size* 512)
-(define *clm-file-buffer-size* 65536)
-(define *clm-locsig-type* mus-interp-linear)
-(define *clm-clipped* #t)
+(define *clm-srate* (default-output-srate))
+(define *clm-file-name* "test.snd")
+(define *clm-channels* (default-output-chans))
+(define *clm-data-format* (default-output-data-format))
+(define *clm-header-type* (default-output-header-type))
+(define *clm-verbose* #f)
+(define *clm-play* #f)
+(define *clm-statistics* #f)
+(define *clm-reverb* #f)
+(define *clm-reverb-channels* 1)
+(define *clm-reverb-data* '())
+(define *clm-table-size* 512)
+(define *clm-file-buffer-size* 65536)
+(define *clm-locsig-type* mus-interp-linear)
+(define *clm-clipped* #t)
(define *clm-array-print-length* (print-length))
-(define *clm-player* #f) ; default is play-and-wait (takes index of newly created sound, not the sound's file name)
-(define *clm-notehook* #f)
-(define *clm-with-sound-depth* 0) ; for CM, not otherwise used
+(define *clm-player* #f) ; default is play-and-wait (takes index of newly created sound, not the sound's file name)
+(define *clm-notehook* #f)
+(define *clm-with-sound-depth* 0) ; for CM, not otherwise used
(define *clm-default-frequency* 0.0)
-(define *clm-safety* 0) ; obsolete
-(define *clm-delete-reverb* #f) ; should with-sound clean up reverb stream
-(define *clm-threads* 4)
-(define *clm-output-safety* 0) ; if 1, assume output buffers will not need to be flushed except at the very end
+(define *clm-safety* 0) ; obsolete
+(define *clm-delete-reverb* #f) ; should with-sound clean up reverb stream
+(define *clm-threads* 4)
+(define *clm-output-safety* 0) ; if 1, assume output buffers will not need to be flushed except at the very end
-(define *to-snd* #t)
+(define *to-snd* #t)
(define (times->samples beg dur)
@@ -396,7 +394,6 @@
(defmacro with-threaded-sound (args . body)
(if (and (provided? 'snd-threads)
- (provided? 's7)
(not (= (optimization) 0)))
(let ((split
(lambda (l n k)
@@ -1046,7 +1043,6 @@ symbol: 'e4 for example. If 'pythagorean', the frequency calculation uses small
(define (with-threaded-channels snd func)
(let ((chns (channels snd)))
(if (and (provided? 'snd-threads)
- (provided? 's7)
(> chns 1))
(dynamic-wind
@@ -1079,3 +1075,35 @@ symbol: 'e4 for example. If 'pythagorean', the frequency calculation uses small
((= chn chns))
(func snd chn)))))
+
+;;; -------- *clm-search-list*
+
+;;; PERHAPS: doc/test *clm-search-list*, and use to choose output loc?
+
+(define *clm-search-list* (list "."))
+
+(define (clm-find-file name)
+ (if (file-exists? name)
+ name
+ (call-with-exit
+ (lambda (return)
+ (for-each
+ (lambda (path)
+ (let ((len (string-length path)))
+ (if (> len 0)
+ (let ((new-name (string-append path (if (not (char=? (path (- len 1)) #\/)) "/" "") name)))
+ (if (file-exists? new-name)
+ (return new-name))))))
+ *clm-search-list*)
+ #f))))
+
+#|
+(with-sound ()
+ (let ((fd (make-file->sample "oboe.snd"))
+ (len (mus-sound-frames "oboe.snd")))
+ (run
+ (lambda ()
+ (do ((i 0 (+ i 1)))
+ ((= i len))
+ (outa i (* .5 (file->sample fd i 0))))))))
+|#
diff --git a/wz_data.js b/wz_data.js
index 558c533..7e742d4 100644
--- a/wz_data.js
+++ b/wz_data.js
@@ -690,8 +690,6 @@ var extsnd_shortfilename_tip = "<code>(short-file-name snd)</code>: short form o
var extsnd_showcontrols_tip = "<code>(show-controls snd)</code>: #t if snd's control panel is known to be open";
-var extsnd_showindices_tip = "<code>(show-indices)</code>: #t if sound name should be preceded by its index in the sound display.";
-
var extsnd_showlistener_tip = "<code>(show-listener (open #t))</code>: if 'open' opens the lisp listener;<br>" +
" returns whether the listener is visible.";
@@ -716,8 +714,6 @@ var extsnd_sndspectrum_tip = "<code>(snd-spectrum data (window rectangular-windo
var extsnd_sndtempnam_tip = "<code>(snd-tempnam)</code>: return a new temp file name using temp-dir.";
-var extsnd_sounddatalength_tip = "<code>(sound-data-length sd)</code>: length (in samples) of each channel of sound-data sd";
-
var extsnd_sounddataref_tip = "<code>(sound-data-ref sd chan i)</code>: sample in channel chan at location i of sound-data sd:<br>" +
" sd[chan][i]";
@@ -808,8 +804,6 @@ var extsnd_vctcopy_tip = "<code>(vct-copy v)</code>: returns a copy of vct v";
var extsnd_vctfill_tip = "<code>(vct-fill! v val)</code>: set each element of v to val: v[i] = val, returns v";
-var extsnd_vctlength_tip = "<code>(vct-length v)</code>: length of vct v";
-
var extsnd_vctmap_tip = "<code>(vct-map! v proc)</code>: set each element of v to value of proc (a thunk):<br>" +
" v[i] = (proc), returns v.<br>" +
"<code> (vct-map! v (lambda () 3.0))</code> is the same as <code>(vct-fill! v 3.0)</code>";
@@ -1071,8 +1065,6 @@ var sndclm_make_two_zero_tip = "<code>(make-two-zero :a0 :a1 :a2 or :frequency :
var sndclm_moving_average_tip = "<code>(moving-average gen (val 0.0))</code>: moving window moving_average.";
-var sndclm_mus_channels_tip = "<code>(mus-channels gen)</code>: gen's mus-channels field";
-
var sndclm_mus_close_tip = "<code>(mus-close gen)</code>: close the IO stream managed by 'gen' (a sample-&gt;file generator, for example)";
var sndclm_mus_data_tip = "<code>(mus-data gen)</code>: gen's internal data (a vct)";
@@ -1394,9 +1386,6 @@ var draw_doc_tip = "Examples of drawing extensions, primarily one that puts a th
var dsp_doc_tip = "This has all the usual DSP stuff: filters, ffts, sample rate conversion, <br>" +
" sound effects, statistics, scanned synthesis, transforms, etc";
-var dot_snd_doc_tip = "Example initialization (~/.snd) files.<br>" +
- " snd_frg.scm sets up key bindings to imitate Soundforge.";
-
var env_doc_tip = "Various operations on envelopes: add, scale, copy, stretch";
var enved_doc_tip = "This adds an envelope editor to each displayed channel.<br>" +
@@ -1430,9 +1419,6 @@ var inf_snd_doc_tip = "this provides a Snd emacs mode implementation.<br>" +
var jcrev_doc_tip = "this is probably the first Schroeder reverb, based on all-pass and comb filters.";
-var ladspa_doc_tip = "LADSPA is the linux audio group plugin standard. <br>" +
- "There are a lot of plugin collections.";
-
var maraca_doc_tip = "this includes the maraca, tambourine, wind-chimes, etc";
var marks_doc_tip = "this includes describe-mark, eval-between-marks, mark-property,<br>" +
@@ -1486,13 +1472,6 @@ var pvoc_doc_tip = "various versions of the Moore-Klingbeil-Trevisani-Edwards ph
var rgb_doc_tip = "this translates the standard X11 color names into Snd color objects.";
-var rtex_doc_tip = "hard (glitch-free) real-time support for CLM instruments,<br>" +
- " as well as numerous other extensions of Snd for user <br>" +
- " interface development. Included are rt-compiler.scm,<br>" +
- " rt-engine.scm, rt-faust.scm, rt.tex, rt-clm-ins.scm, <br>" +
- " rt-DotEmacs, rt-examples.scm, and rt-player.scm, <br>" +
- " all thanks to Kjetil Matheussen";
-
var rtio_doc_tip = "show graph of real-time input and so on";
var rubber_doc_tip = "rubber-sound tries to stretch or contract a sound (in time);<br>" +
diff --git a/xen.c b/xen.c
index eeea060..7f73807 100644
--- a/xen.c
+++ b/xen.c
@@ -208,6 +208,44 @@ XEN xen_rb_ary_new_with_initial_element(long num, XEN element)
}
+XEN xen_set_assoc(XEN key, XEN val, XEN alist)
+{
+ /* assoc key val in alist so later rb_ary_assoc will find val given key in alist */
+ /*
+ if array?(alist)
+ if array?(item = alist.assoc(key))
+ item[1] = val
+ else
+ alist.push([key, val])
+ end
+ else
+ [[key, val]]
+ end
+ */
+ if (XEN_CONS_P(alist))
+ {
+ XEN pair;
+ pair = rb_ary_assoc(alist, key);
+ if (XEN_CONS_P(pair))
+ rb_ary_store(pair, 1, val);
+ else rb_ary_push(alist, rb_assoc_new(key, val));
+ return(alist);
+ }
+ return(rb_ary_new3(1, rb_assoc_new(key, val)));
+}
+
+
+XEN xen_assoc(XEN key, XEN alist)
+{
+ XEN val;
+ val = rb_ary_assoc(alist, key);
+ if (val != Qnil)
+ return(rb_ary_entry(val, 1));
+ return(Qfalse);
+}
+
+
+
static char *scheme_to_ruby(const char *name)
{
/* replace any non-alphanumeric except "?" with "_". "?" -> "_p". '->" -> "2" drop "!" */
@@ -1338,7 +1376,7 @@ void xen_initialize(void)
/* ------------------------------ S7 ------------------------------ */
-#if HAVE_S7
+#if HAVE_SCHEME
#if HAVE_LIMITS_H
#include <limits.h>
@@ -1556,6 +1594,36 @@ const char *xen_s7_constant_help(const char *name)
}
+XEN xen_set_assoc(s7_scheme *sc, s7_pointer key, s7_pointer val, s7_pointer alist)
+{
+ /* fixup alist, return it (caller has to make sure it is reflected in its object) */
+ /*
+ (let ((old-val (assoc key alist)))
+ (if old-val
+ (progn
+ (set-cdr! old-val new-val)
+ alist)
+ (cons (cons key new-val) alist)))
+ */
+ XEN old_val;
+ old_val = s7_assoc(sc, key, alist); /* returns #f if nothing found */
+ if (old_val == s7_f(sc))
+ return(s7_cons(sc, s7_cons(sc, key, val), alist));
+ s7_set_cdr(old_val, val);
+ return(alist);
+}
+
+
+XEN xen_assoc(s7_scheme *sc, XEN key, XEN alist)
+{
+ XEN val;
+ val = s7_assoc(sc, key, alist);
+ if (val != s7_f(sc))
+ return(s7_cdr(val));
+ return(s7_f(sc));
+}
+
+
/* hooks */
typedef struct {
@@ -2080,6 +2148,7 @@ s7_scheme *s7_xen_initialize(s7_scheme *sc)
return(s7);
}
+
void xen_initialize(void)
{
s7_xen_initialize(NULL);
diff --git a/xen.h b/xen.h
index 58e8dd8..5aed769 100644
--- a/xen.h
+++ b/xen.h
@@ -10,11 +10,13 @@
*/
#define XEN_MAJOR_VERSION 3
-#define XEN_MINOR_VERSION 3
-#define XEN_VERSION "3.3"
+#define XEN_MINOR_VERSION 4
+#define XEN_VERSION "3.4"
/* HISTORY:
*
+ * 5-Feb-10: XEN_ASSOC_REF and XEN_ASSOC_SET. XEN_ASSOC_REF returns the value, not the key/value pair.
+ * --------
* 16-Dec: removed Guile support. removed xen_return_first (a guile-ism).
* 2-Nov: XEN_VECTOR_RANK.
* 5-Oct: use s7_c_pointer etc.
@@ -145,7 +147,7 @@
/* ------------------------------ RUBY ------------------------------ */
/* other possibilities:
- * XEN_ASSOC (args reversed from Scheme), XEN_DEFINE_METHOD, XEN_DEFINE_ALIAS, rb_ary_unsift = XEN_LIST_PREPEND?,
+ * XEN_DEFINE_METHOD, XEN_DEFINE_ALIAS, rb_ary_unsift = XEN_LIST_PREPEND?,
* various property macros -- in Scheme as well, rb_const_defined, rb_yield, XEN_INCLUDE_MODULE,
* rb_id2name (XEN_SYMBOL...), rb_raise.
*/
@@ -305,6 +307,10 @@
#define XEN_MAKE_VECTOR(Num, Fill) xen_rb_ary_new_with_initial_element(Num, Fill)
#define XEN_VECTOR_TO_LIST(a) a
+#define XEN_ASSOC_REF(Item, Lst) xen_assoc(Item, Lst)
+#define XEN_ASSOC_SET(Sym, Val, Lst) xen_set_assoc(Sym, Val, Lst)
+
+
/* ---- symbols ---- */
#define XEN_SYMBOL_P(Arg) SYMBOL_P(Arg)
#define XEN_SYMBOL_TO_C_STRING(a) ((char *)rb_id2name(SYM2ID(a)))
@@ -674,6 +680,8 @@ XEN rb_set_documentation(XEN name, XEN help);
bool xen_rb_arity_ok(int rargs, int args);
void xen_rb_repl_set_prompt(const char *prompt);
XEN xen_rb_add_to_load_path(char *path);
+XEN xen_set_assoc(XEN key, XEN val, XEN alist);
+XEN xen_assoc(XEN key, XEN alist);
#ifdef __cplusplus
}
@@ -848,7 +856,9 @@ XEN xen_rb_add_to_load_path(char *path);
#define XEN_CDDR(a) FTH_CDDR(a)
#define XEN_COPY_ARG(Lst) fth_list_copy(Lst)
#define XEN_APPEND(a, b) fth_list_append(XEN_LIST_2(a, b))
-#define XEN_ASSOC(Item, Lst) fth_list_assoc_ref(Lst, Item)
+#define XEN_ASSOC_REF(Item, Lst) fth_list_assoc_ref(Lst, Item)
+#define XEN_ASSOC_SET(Sym, Val, Lst) fth_list_assoc_set(Lst, Sym, Val)
+#define XEN_ASSOC(Item, Lst) fth_list_assoc_ref(Lst, Item) /* perhaps fth_list_assoc? */
#define XEN_MEMBER(Item, Lst) fth_list_member_p(Lst, Item)
/* === Hook, Procedure === */
@@ -962,7 +972,7 @@ typedef XEN (*XEN_CATCH_BODY_TYPE) (void *data);
/* ------------------------------ s7 ------------------------------ */
-#if HAVE_S7
+#if HAVE_SCHEME
#define XEN_OK 1
@@ -1023,6 +1033,8 @@ extern XEN xen_false, xen_true, xen_nil, xen_undefined;
#define XEN_LIST_REVERSE(Lst) s7_reverse(s7, Lst)
#define XEN_COPY_ARG(Lst) Lst
#define XEN_APPEND(Arg1, Arg2) s7_append(s7, Arg1, Arg2)
+#define XEN_ASSOC_REF(Sym, Lst) xen_assoc(s7, Sym, Lst)
+#define XEN_ASSOC_SET(Sym, Val, Lst) xen_set_assoc(s7, Sym, Val, Lst)
#define XEN_ASSOC(Sym, Lst) s7_assoc(s7, Sym, Lst)
#define XEN_MEMBER(Sym, Lst) s7_member(s7, Sym, Lst)
@@ -1455,6 +1467,8 @@ s7_scheme *s7_xen_initialize(s7_scheme *sc);
void xen_s7_set_repl_prompt(const char *new_prompt);
void xen_s7_define_constant(s7_scheme *sc, const char *name, s7_pointer value, const char *help);
const char *xen_s7_constant_help(const char *name);
+XEN xen_set_assoc(s7_scheme *sc, s7_pointer key, s7_pointer val, s7_pointer alist);
+XEN xen_assoc(s7_scheme *sc, XEN key, XEN alist);
#if !(defined(__GNUC__) && (!(defined(__cplusplus))))
XEN xen_s7_c_to_xen_string(const char *str);
@@ -1633,6 +1647,8 @@ const char *xen_s7_constant_help(const char *name);
#define XEN_VECTOR_SET(a, b, c)
#define XEN_MAKE_VECTOR(Num, Fill) 0
#define XEN_VECTOR_TO_LIST(Vect) 0
+#define XEN_ASSOC_REF(Sym, Lst) 0
+#define XEN_ASSOC_SET(Sym, Val, Lst) 0
#define XEN_CHAR_P(Arg) 0
#define XEN_TO_C_CHAR(Arg) 0
#define C_TO_XEN_CHAR(Arg) 0
@@ -1707,7 +1723,7 @@ void xen_no_ext_lang_check_args(const char *name, int args, int req_args, int op
#define XEN_ARG_9 9
#define XEN_ARG_10 10
-#if (!HAVE_S7)
+#if (!HAVE_SCHEME)
#define XEN_TO_C_OFF_T_OR_ELSE(a, b) xen_to_c_off_t_or_else(a, b)
#define XEN_TO_C_INT64_T_OR_ELSE(a, b) xen_to_c_int64_t_or_else(a, b)
#define C_TO_XEN_OFF_T(a) c_to_xen_off_t(a)
@@ -1740,7 +1756,7 @@ void xen_no_ext_lang_check_args(const char *name, int args, int req_args, int op
/* (need a way to pass an uninterpreted pointer from C to XEN then back to C) */
-#if HAVE_S7
+#if HAVE_SCHEME
#define XEN_WRAP_C_POINTER(a) s7_make_c_pointer(s7, (void *)(a))
#define XEN_UNWRAP_C_POINTER(a) s7_c_pointer(a)
#define XEN_WRAPPED_C_POINTER_P(a) s7_is_c_pointer(a)
@@ -1763,7 +1779,7 @@ extern "C" {
char *xen_strdup(const char *str);
-#if (!HAVE_S7)
+#if (!HAVE_SCHEME)
int xen_to_c_int_or_else(XEN obj, int fallback);
off_t xen_to_c_off_t_or_else(XEN obj, off_t fallback);
off_t xen_to_c_off_t(XEN obj);
diff --git a/xg.c b/xg.c
index 33a047d..c211bb9 100644
--- a/xg.c
+++ b/xg.c
@@ -57,6 +57,7 @@
* win32-specific functions
*
* HISTORY:
+ * 28-Jan-10: removed the rest of the struct accessors.
* --------
* 16-Dec-09: removed Guile support.
* --------
@@ -172,7 +173,7 @@ static void xm_obj_free(XEN obj)
free(val);
}
#endif
-#if HAVE_S7
+#if HAVE_SCHEME
static void xm_obj_free(void *val)
{
free(val);
@@ -188,7 +189,7 @@ static XEN make_xm_obj(void *ptr)
}
static void define_xm_obj(void)
{
-#if HAVE_S7
+#if HAVE_SCHEME
xm_obj_tag = XEN_MAKE_OBJECT_TYPE("<XmObj>", NULL, xm_obj_free, s7_equalp_xm, NULL, NULL, NULL, NULL, NULL, NULL);
#else
xm_obj_tag = XEN_MAKE_OBJECT_TYPE("XmObj", sizeof(void *));
@@ -373,6 +374,8 @@ static XEN C_TO_XEN_GError_(GError *err)
/* ---------------------------------------- types ---------------------------------------- */
+XM_TYPE_PTR(GdkEvent_, GdkEvent*)
+XM_TYPE_PTR(GdkEventAny_, GdkEventAny*)
XM_TYPE_PTR_1(gdouble_, gdouble*)
XM_TYPE_PTR_1(GtkColorSelectionDialog_, GtkColorSelectionDialog*)
XM_TYPE_PTR_1(GdkEventMotion_, GdkEventMotion*)
@@ -381,7 +384,6 @@ XM_TYPE_PTR(GtkAccelKey_, GtkAccelKey*)
XM_TYPE_PTR(GClosure_, GClosure*)
XM_TYPE_PTR(GtkWidget_, GtkWidget*)
XM_TYPE_PTR_2(GdkXEvent_, GdkXEvent*)
-XM_TYPE_PTR(GdkEvent_, GdkEvent*)
XM_TYPE_PTR(GdkEventKey_, GdkEventKey*)
XM_TYPE_PTR(GtkMenu_, GtkMenu*)
XM_TYPE_PTR(gint_, gint*)
@@ -826,14 +828,6 @@ XM_TYPE_PTR(PangoLayoutIter_, PangoLayoutIter*)
XM_TYPE_PTR_2(PangoLayoutRun_, PangoLayoutRun*)
#define XEN_TO_C_gssize(Arg) (gssize)(XEN_TO_C_INT(Arg))
#define XEN_gssize_P(Arg) XEN_INTEGER_P(Arg)
-#define C_TO_XEN_GdkEventType(Arg) C_TO_XEN_INT(Arg)
-XM_TYPE_PTR(GdkEventAny_, GdkEventAny*)
-#define C_TO_XEN_gint16(Arg) C_TO_XEN_INT(Arg)
-XM_TYPE_PTR_1(GdkEventButton_, GdkEventButton*)
-#define C_TO_XEN_GdkScrollDirection(Arg) C_TO_XEN_INT(Arg)
-XM_TYPE_PTR_1(GdkEventScroll_, GdkEventScroll*)
-#define C_TO_XEN_guint8(Arg) C_TO_XEN_INT(Arg)
-#define XEN_TO_C_guint8(Arg) (guint8)(XEN_TO_C_INT(Arg))
#if HAVE_GDK_DRAW_PIXBUF
XM_TYPE_PTR(GdkDisplay_, GdkDisplay*)
XM_TYPE_PTR(GdkScreen_, GdkScreen*)
@@ -1016,12 +1010,12 @@ XM_TYPE_PTR_1(GtkInfoBar_, GtkInfoBar*)
XM_TYPE_PTR(GtkEntryBuffer_, GtkEntryBuffer*)
#endif
-#if HAVE_GTK_TOOL_PALETTE_NEW
+#if HAVE_GTK_ENTRY_GET_TEXT_WINDOW
XM_TYPE_PTR_1(GtkSpinner_, GtkSpinner*)
XM_TYPE_PTR_1(GtkToolShell_, GtkToolShell*)
XM_TYPE_PTR_1(GtkToolPalette_, GtkToolPalette*)
+XM_TYPE_PTR(GtkToolItemGroup_, GtkToolItemGroup*)
XM_TYPE_1(GtkToolPaletteDragTargets, GtkToolPaletteDragTargets)
-XM_TYPE_PTR_1(GtkToolItemGroup_, GtkToolItemGroup*)
#endif
#if HAVE_CAIRO_CREATE
@@ -7440,22 +7434,6 @@ static XEN gxg_gtk_fixed_move(XEN fixed, XEN widget, XEN x, XEN y)
return(XEN_FALSE);
}
-static XEN gxg_gtk_fixed_set_has_window(XEN fixed, XEN has_window)
-{
- #define H_gtk_fixed_set_has_window "void gtk_fixed_set_has_window(GtkFixed* fixed, gboolean has_window)"
- XEN_ASSERT_TYPE(XEN_GtkFixed__P(fixed), fixed, 1, "gtk_fixed_set_has_window", "GtkFixed*");
- XEN_ASSERT_TYPE(XEN_gboolean_P(has_window), has_window, 2, "gtk_fixed_set_has_window", "gboolean");
- gtk_fixed_set_has_window(XEN_TO_C_GtkFixed_(fixed), XEN_TO_C_gboolean(has_window));
- return(XEN_FALSE);
-}
-
-static XEN gxg_gtk_fixed_get_has_window(XEN fixed)
-{
- #define H_gtk_fixed_get_has_window "gboolean gtk_fixed_get_has_window(GtkFixed* fixed)"
- XEN_ASSERT_TYPE(XEN_GtkFixed__P(fixed), fixed, 1, "gtk_fixed_get_has_window", "GtkFixed*");
- return(C_TO_XEN_gboolean(gtk_fixed_get_has_window(XEN_TO_C_GtkFixed_(fixed))));
-}
-
static XEN gxg_gtk_font_selection_new(void)
{
#define H_gtk_font_selection_new "GtkWidget* gtk_font_selection_new( void)"
@@ -9819,13 +9797,6 @@ gint position)"
return(XEN_FALSE);
}
-static XEN gxg_GTK_OBJECT_TYPE_NAME(XEN object)
-{
- #define H_GTK_OBJECT_TYPE_NAME "char* GTK_OBJECT_TYPE_NAME(GtkObject* object)"
- XEN_ASSERT_TYPE(XEN_GtkObject__P(object), object, 1, "GTK_OBJECT_TYPE_NAME", "GtkObject*");
- return(C_TO_XEN_char_(GTK_OBJECT_TYPE_NAME(XEN_TO_C_GtkObject_(object))));
-}
-
static XEN gxg_GTK_OBJECT_FLAGS(XEN obj)
{
#define H_GTK_OBJECT_FLAGS "int GTK_OBJECT_FLAGS(GtkObject* obj)"
@@ -16361,20 +16332,6 @@ static XEN gxg_gtk_vseparator_new(void)
return(C_TO_XEN_GtkWidget_(gtk_vseparator_new()));
}
-static XEN gxg_GTK_WIDGET_STATE(XEN wid)
-{
- #define H_GTK_WIDGET_STATE "int GTK_WIDGET_STATE(GtkWidget* wid)"
- XEN_ASSERT_TYPE(XEN_GtkWidget__P(wid), wid, 1, "GTK_WIDGET_STATE", "GtkWidget*");
- return(C_TO_XEN_int(GTK_WIDGET_STATE(XEN_TO_C_GtkWidget_(wid))));
-}
-
-static XEN gxg_GTK_WIDGET_SAVED_STATE(XEN wid)
-{
- #define H_GTK_WIDGET_SAVED_STATE "int GTK_WIDGET_SAVED_STATE(GtkWidget* wid)"
- XEN_ASSERT_TYPE(XEN_GtkWidget__P(wid), wid, 1, "GTK_WIDGET_SAVED_STATE", "GtkWidget*");
- return(C_TO_XEN_int(GTK_WIDGET_SAVED_STATE(XEN_TO_C_GtkWidget_(wid))));
-}
-
static XEN gxg_GTK_WIDGET_FLAGS(XEN wid)
{
#define H_GTK_WIDGET_FLAGS "int GTK_WIDGET_FLAGS(GtkWidget* wid)"
@@ -16382,20 +16339,6 @@ static XEN gxg_GTK_WIDGET_FLAGS(XEN wid)
return(C_TO_XEN_int(GTK_WIDGET_FLAGS(XEN_TO_C_GtkWidget_(wid))));
}
-static XEN gxg_GTK_WIDGET_TOPLEVEL(XEN wid)
-{
- #define H_GTK_WIDGET_TOPLEVEL "gboolean GTK_WIDGET_TOPLEVEL(GtkWidget* wid)"
- XEN_ASSERT_TYPE(XEN_GtkWidget__P(wid), wid, 1, "GTK_WIDGET_TOPLEVEL", "GtkWidget*");
- return(C_TO_XEN_gboolean(GTK_WIDGET_TOPLEVEL(XEN_TO_C_GtkWidget_(wid))));
-}
-
-static XEN gxg_GTK_WIDGET_NO_WINDOW(XEN wid)
-{
- #define H_GTK_WIDGET_NO_WINDOW "gboolean GTK_WIDGET_NO_WINDOW(GtkWidget* wid)"
- XEN_ASSERT_TYPE(XEN_GtkWidget__P(wid), wid, 1, "GTK_WIDGET_NO_WINDOW", "GtkWidget*");
- return(C_TO_XEN_gboolean(GTK_WIDGET_NO_WINDOW(XEN_TO_C_GtkWidget_(wid))));
-}
-
static XEN gxg_GTK_WIDGET_REALIZED(XEN wid)
{
#define H_GTK_WIDGET_REALIZED "gboolean GTK_WIDGET_REALIZED(GtkWidget* wid)"
@@ -16445,13 +16388,6 @@ static XEN gxg_GTK_WIDGET_IS_SENSITIVE(XEN wid)
return(C_TO_XEN_gboolean(GTK_WIDGET_IS_SENSITIVE(XEN_TO_C_GtkWidget_(wid))));
}
-static XEN gxg_GTK_WIDGET_CAN_FOCUS(XEN wid)
-{
- #define H_GTK_WIDGET_CAN_FOCUS "gboolean GTK_WIDGET_CAN_FOCUS(GtkWidget* wid)"
- XEN_ASSERT_TYPE(XEN_GtkWidget__P(wid), wid, 1, "GTK_WIDGET_CAN_FOCUS", "GtkWidget*");
- return(C_TO_XEN_gboolean(GTK_WIDGET_CAN_FOCUS(XEN_TO_C_GtkWidget_(wid))));
-}
-
static XEN gxg_GTK_WIDGET_HAS_FOCUS(XEN wid)
{
#define H_GTK_WIDGET_HAS_FOCUS "gboolean GTK_WIDGET_HAS_FOCUS(GtkWidget* wid)"
@@ -16459,62 +16395,6 @@ static XEN gxg_GTK_WIDGET_HAS_FOCUS(XEN wid)
return(C_TO_XEN_gboolean(GTK_WIDGET_HAS_FOCUS(XEN_TO_C_GtkWidget_(wid))));
}
-static XEN gxg_GTK_WIDGET_CAN_DEFAULT(XEN wid)
-{
- #define H_GTK_WIDGET_CAN_DEFAULT "gboolean GTK_WIDGET_CAN_DEFAULT(GtkWidget* wid)"
- XEN_ASSERT_TYPE(XEN_GtkWidget__P(wid), wid, 1, "GTK_WIDGET_CAN_DEFAULT", "GtkWidget*");
- return(C_TO_XEN_gboolean(GTK_WIDGET_CAN_DEFAULT(XEN_TO_C_GtkWidget_(wid))));
-}
-
-static XEN gxg_GTK_WIDGET_HAS_DEFAULT(XEN wid)
-{
- #define H_GTK_WIDGET_HAS_DEFAULT "gboolean GTK_WIDGET_HAS_DEFAULT(GtkWidget* wid)"
- XEN_ASSERT_TYPE(XEN_GtkWidget__P(wid), wid, 1, "GTK_WIDGET_HAS_DEFAULT", "GtkWidget*");
- return(C_TO_XEN_gboolean(GTK_WIDGET_HAS_DEFAULT(XEN_TO_C_GtkWidget_(wid))));
-}
-
-static XEN gxg_GTK_WIDGET_HAS_GRAB(XEN wid)
-{
- #define H_GTK_WIDGET_HAS_GRAB "gboolean GTK_WIDGET_HAS_GRAB(GtkWidget* wid)"
- XEN_ASSERT_TYPE(XEN_GtkWidget__P(wid), wid, 1, "GTK_WIDGET_HAS_GRAB", "GtkWidget*");
- return(C_TO_XEN_gboolean(GTK_WIDGET_HAS_GRAB(XEN_TO_C_GtkWidget_(wid))));
-}
-
-static XEN gxg_GTK_WIDGET_RC_STYLE(XEN wid)
-{
- #define H_GTK_WIDGET_RC_STYLE "gboolean GTK_WIDGET_RC_STYLE(GtkWidget* wid)"
- XEN_ASSERT_TYPE(XEN_GtkWidget__P(wid), wid, 1, "GTK_WIDGET_RC_STYLE", "GtkWidget*");
- return(C_TO_XEN_gboolean(GTK_WIDGET_RC_STYLE(XEN_TO_C_GtkWidget_(wid))));
-}
-
-static XEN gxg_GTK_WIDGET_COMPOSITE_CHILD(XEN wid)
-{
- #define H_GTK_WIDGET_COMPOSITE_CHILD "gboolean GTK_WIDGET_COMPOSITE_CHILD(GtkWidget* wid)"
- XEN_ASSERT_TYPE(XEN_GtkWidget__P(wid), wid, 1, "GTK_WIDGET_COMPOSITE_CHILD", "GtkWidget*");
- return(C_TO_XEN_gboolean(GTK_WIDGET_COMPOSITE_CHILD(XEN_TO_C_GtkWidget_(wid))));
-}
-
-static XEN gxg_GTK_WIDGET_APP_PAINTABLE(XEN wid)
-{
- #define H_GTK_WIDGET_APP_PAINTABLE "gboolean GTK_WIDGET_APP_PAINTABLE(GtkWidget* wid)"
- XEN_ASSERT_TYPE(XEN_GtkWidget__P(wid), wid, 1, "GTK_WIDGET_APP_PAINTABLE", "GtkWidget*");
- return(C_TO_XEN_gboolean(GTK_WIDGET_APP_PAINTABLE(XEN_TO_C_GtkWidget_(wid))));
-}
-
-static XEN gxg_GTK_WIDGET_RECEIVES_DEFAULT(XEN wid)
-{
- #define H_GTK_WIDGET_RECEIVES_DEFAULT "gboolean GTK_WIDGET_RECEIVES_DEFAULT(GtkWidget* wid)"
- XEN_ASSERT_TYPE(XEN_GtkWidget__P(wid), wid, 1, "GTK_WIDGET_RECEIVES_DEFAULT", "GtkWidget*");
- return(C_TO_XEN_gboolean(GTK_WIDGET_RECEIVES_DEFAULT(XEN_TO_C_GtkWidget_(wid))));
-}
-
-static XEN gxg_GTK_WIDGET_DOUBLE_BUFFERED(XEN wid)
-{
- #define H_GTK_WIDGET_DOUBLE_BUFFERED "gboolean GTK_WIDGET_DOUBLE_BUFFERED(GtkWidget* wid)"
- XEN_ASSERT_TYPE(XEN_GtkWidget__P(wid), wid, 1, "GTK_WIDGET_DOUBLE_BUFFERED", "GtkWidget*");
- return(C_TO_XEN_gboolean(GTK_WIDGET_DOUBLE_BUFFERED(XEN_TO_C_GtkWidget_(wid))));
-}
-
static XEN gxg_GTK_WIDGET_SET_FLAGS(XEN wid, XEN flag)
{
#define H_GTK_WIDGET_SET_FLAGS "void GTK_WIDGET_SET_FLAGS(GtkWidget* wid, int flag)"
@@ -31844,7 +31724,7 @@ static XEN gxg_gdk_window_flush(XEN window)
#endif
-#if HAVE_GTK_TOOL_PALETTE_NEW
+#if HAVE_GTK_ENTRY_GET_TEXT_WINDOW
static XEN gxg_gtk_dialog_get_widget_for_response(XEN dialog, XEN response_id)
{
#define H_gtk_dialog_get_widget_for_response "GtkWidget* gtk_dialog_get_widget_for_response(GtkDialog* dialog, \
@@ -32009,61 +31889,61 @@ static XEN gxg_gtk_tool_palette_new(void)
static XEN gxg_gtk_tool_palette_set_group_position(XEN palette, XEN group, XEN position)
{
#define H_gtk_tool_palette_set_group_position "void gtk_tool_palette_set_group_position(GtkToolPalette* palette, \
-GtkWidget* group, gint position)"
+GtkToolItemGroup* group, gint position)"
XEN_ASSERT_TYPE(XEN_GtkToolPalette__P(palette), palette, 1, "gtk_tool_palette_set_group_position", "GtkToolPalette*");
- XEN_ASSERT_TYPE(XEN_GtkWidget__P(group), group, 2, "gtk_tool_palette_set_group_position", "GtkWidget*");
+ XEN_ASSERT_TYPE(XEN_GtkToolItemGroup__P(group), group, 2, "gtk_tool_palette_set_group_position", "GtkToolItemGroup*");
XEN_ASSERT_TYPE(XEN_gint_P(position), position, 3, "gtk_tool_palette_set_group_position", "gint");
- gtk_tool_palette_set_group_position(XEN_TO_C_GtkToolPalette_(palette), XEN_TO_C_GtkWidget_(group), XEN_TO_C_gint(position));
+ gtk_tool_palette_set_group_position(XEN_TO_C_GtkToolPalette_(palette), XEN_TO_C_GtkToolItemGroup_(group), XEN_TO_C_gint(position));
return(XEN_FALSE);
}
static XEN gxg_gtk_tool_palette_set_exclusive(XEN palette, XEN group, XEN exclusive)
{
#define H_gtk_tool_palette_set_exclusive "void gtk_tool_palette_set_exclusive(GtkToolPalette* palette, \
-GtkWidget* group, gboolean exclusive)"
+GtkToolItemGroup* group, gboolean exclusive)"
XEN_ASSERT_TYPE(XEN_GtkToolPalette__P(palette), palette, 1, "gtk_tool_palette_set_exclusive", "GtkToolPalette*");
- XEN_ASSERT_TYPE(XEN_GtkWidget__P(group), group, 2, "gtk_tool_palette_set_exclusive", "GtkWidget*");
+ XEN_ASSERT_TYPE(XEN_GtkToolItemGroup__P(group), group, 2, "gtk_tool_palette_set_exclusive", "GtkToolItemGroup*");
XEN_ASSERT_TYPE(XEN_gboolean_P(exclusive), exclusive, 3, "gtk_tool_palette_set_exclusive", "gboolean");
- gtk_tool_palette_set_exclusive(XEN_TO_C_GtkToolPalette_(palette), XEN_TO_C_GtkWidget_(group), XEN_TO_C_gboolean(exclusive));
+ gtk_tool_palette_set_exclusive(XEN_TO_C_GtkToolPalette_(palette), XEN_TO_C_GtkToolItemGroup_(group), XEN_TO_C_gboolean(exclusive));
return(XEN_FALSE);
}
static XEN gxg_gtk_tool_palette_set_expand(XEN palette, XEN group, XEN expand)
{
- #define H_gtk_tool_palette_set_expand "void gtk_tool_palette_set_expand(GtkToolPalette* palette, GtkWidget* group, \
+ #define H_gtk_tool_palette_set_expand "void gtk_tool_palette_set_expand(GtkToolPalette* palette, GtkToolItemGroup* group, \
gboolean expand)"
XEN_ASSERT_TYPE(XEN_GtkToolPalette__P(palette), palette, 1, "gtk_tool_palette_set_expand", "GtkToolPalette*");
- XEN_ASSERT_TYPE(XEN_GtkWidget__P(group), group, 2, "gtk_tool_palette_set_expand", "GtkWidget*");
+ XEN_ASSERT_TYPE(XEN_GtkToolItemGroup__P(group), group, 2, "gtk_tool_palette_set_expand", "GtkToolItemGroup*");
XEN_ASSERT_TYPE(XEN_gboolean_P(expand), expand, 3, "gtk_tool_palette_set_expand", "gboolean");
- gtk_tool_palette_set_expand(XEN_TO_C_GtkToolPalette_(palette), XEN_TO_C_GtkWidget_(group), XEN_TO_C_gboolean(expand));
+ gtk_tool_palette_set_expand(XEN_TO_C_GtkToolPalette_(palette), XEN_TO_C_GtkToolItemGroup_(group), XEN_TO_C_gboolean(expand));
return(XEN_FALSE);
}
static XEN gxg_gtk_tool_palette_get_group_position(XEN palette, XEN group)
{
#define H_gtk_tool_palette_get_group_position "gint gtk_tool_palette_get_group_position(GtkToolPalette* palette, \
-GtkWidget* group)"
+GtkToolItemGroup* group)"
XEN_ASSERT_TYPE(XEN_GtkToolPalette__P(palette), palette, 1, "gtk_tool_palette_get_group_position", "GtkToolPalette*");
- XEN_ASSERT_TYPE(XEN_GtkWidget__P(group), group, 2, "gtk_tool_palette_get_group_position", "GtkWidget*");
- return(C_TO_XEN_gint(gtk_tool_palette_get_group_position(XEN_TO_C_GtkToolPalette_(palette), XEN_TO_C_GtkWidget_(group))));
+ XEN_ASSERT_TYPE(XEN_GtkToolItemGroup__P(group), group, 2, "gtk_tool_palette_get_group_position", "GtkToolItemGroup*");
+ return(C_TO_XEN_gint(gtk_tool_palette_get_group_position(XEN_TO_C_GtkToolPalette_(palette), XEN_TO_C_GtkToolItemGroup_(group))));
}
static XEN gxg_gtk_tool_palette_get_exclusive(XEN palette, XEN group)
{
#define H_gtk_tool_palette_get_exclusive "gboolean gtk_tool_palette_get_exclusive(GtkToolPalette* palette, \
-GtkWidget* group)"
+GtkToolItemGroup* group)"
XEN_ASSERT_TYPE(XEN_GtkToolPalette__P(palette), palette, 1, "gtk_tool_palette_get_exclusive", "GtkToolPalette*");
- XEN_ASSERT_TYPE(XEN_GtkWidget__P(group), group, 2, "gtk_tool_palette_get_exclusive", "GtkWidget*");
- return(C_TO_XEN_gboolean(gtk_tool_palette_get_exclusive(XEN_TO_C_GtkToolPalette_(palette), XEN_TO_C_GtkWidget_(group))));
+ XEN_ASSERT_TYPE(XEN_GtkToolItemGroup__P(group), group, 2, "gtk_tool_palette_get_exclusive", "GtkToolItemGroup*");
+ return(C_TO_XEN_gboolean(gtk_tool_palette_get_exclusive(XEN_TO_C_GtkToolPalette_(palette), XEN_TO_C_GtkToolItemGroup_(group))));
}
static XEN gxg_gtk_tool_palette_get_expand(XEN palette, XEN group)
{
#define H_gtk_tool_palette_get_expand "gboolean gtk_tool_palette_get_expand(GtkToolPalette* palette, \
-GtkWidget* group)"
+GtkToolItemGroup* group)"
XEN_ASSERT_TYPE(XEN_GtkToolPalette__P(palette), palette, 1, "gtk_tool_palette_get_expand", "GtkToolPalette*");
- XEN_ASSERT_TYPE(XEN_GtkWidget__P(group), group, 2, "gtk_tool_palette_get_expand", "GtkWidget*");
- return(C_TO_XEN_gboolean(gtk_tool_palette_get_expand(XEN_TO_C_GtkToolPalette_(palette), XEN_TO_C_GtkWidget_(group))));
+ XEN_ASSERT_TYPE(XEN_GtkToolItemGroup__P(group), group, 2, "gtk_tool_palette_get_expand", "GtkToolItemGroup*");
+ return(C_TO_XEN_gboolean(gtk_tool_palette_get_expand(XEN_TO_C_GtkToolPalette_(palette), XEN_TO_C_GtkToolItemGroup_(group))));
}
static XEN gxg_gtk_tool_palette_set_icon_size(XEN palette, XEN icon_size)
@@ -32127,12 +32007,13 @@ gint x, gint y)"
static XEN gxg_gtk_tool_palette_get_drop_group(XEN palette, XEN x, XEN y)
{
- #define H_gtk_tool_palette_get_drop_group "GtkWidget* gtk_tool_palette_get_drop_group(GtkToolPalette* palette, \
+ #define H_gtk_tool_palette_get_drop_group "GtkToolItemGroup* gtk_tool_palette_get_drop_group(GtkToolPalette* palette, \
gint x, gint y)"
XEN_ASSERT_TYPE(XEN_GtkToolPalette__P(palette), palette, 1, "gtk_tool_palette_get_drop_group", "GtkToolPalette*");
XEN_ASSERT_TYPE(XEN_gint_P(x), x, 2, "gtk_tool_palette_get_drop_group", "gint");
XEN_ASSERT_TYPE(XEN_gint_P(y), y, 3, "gtk_tool_palette_get_drop_group", "gint");
- return(C_TO_XEN_GtkWidget_(gtk_tool_palette_get_drop_group(XEN_TO_C_GtkToolPalette_(palette), XEN_TO_C_gint(x), XEN_TO_C_gint(y))));
+ return(C_TO_XEN_GtkToolItemGroup_(gtk_tool_palette_get_drop_group(XEN_TO_C_GtkToolPalette_(palette), XEN_TO_C_gint(x),
+ XEN_TO_C_gint(y))));
}
static XEN gxg_gtk_tool_palette_get_drag_item(XEN palette, XEN selection)
@@ -32367,6 +32248,89 @@ static XEN gxg_gtk_window_get_mnemonics_visible(XEN window)
return(C_TO_XEN_gboolean(gtk_window_get_mnemonics_visible(XEN_TO_C_GtkWindow_(window))));
}
+static XEN gxg_gtk_entry_get_text_window(XEN entry)
+{
+ #define H_gtk_entry_get_text_window "GdkWindow* gtk_entry_get_text_window(GtkEntry* entry)"
+ XEN_ASSERT_TYPE(XEN_GtkEntry__P(entry), entry, 1, "gtk_entry_get_text_window", "GtkEntry*");
+ return(C_TO_XEN_GdkWindow_(gtk_entry_get_text_window(XEN_TO_C_GtkEntry_(entry))));
+}
+
+static XEN gxg_gtk_entry_get_icon_window(XEN entry, XEN icon_pos)
+{
+ #define H_gtk_entry_get_icon_window "GdkWindow* gtk_entry_get_icon_window(GtkEntry* entry, GtkEntryIconPosition icon_pos)"
+ XEN_ASSERT_TYPE(XEN_GtkEntry__P(entry), entry, 1, "gtk_entry_get_icon_window", "GtkEntry*");
+ XEN_ASSERT_TYPE(XEN_GtkEntryIconPosition_P(icon_pos), icon_pos, 2, "gtk_entry_get_icon_window", "GtkEntryIconPosition");
+ return(C_TO_XEN_GdkWindow_(gtk_entry_get_icon_window(XEN_TO_C_GtkEntry_(entry), XEN_TO_C_GtkEntryIconPosition(icon_pos))));
+}
+
+static XEN gxg_gtk_range_set_slider_size_fixed(XEN range, XEN size_fixed)
+{
+ #define H_gtk_range_set_slider_size_fixed "void gtk_range_set_slider_size_fixed(GtkRange* range, gboolean size_fixed)"
+ XEN_ASSERT_TYPE(XEN_GtkRange__P(range), range, 1, "gtk_range_set_slider_size_fixed", "GtkRange*");
+ XEN_ASSERT_TYPE(XEN_gboolean_P(size_fixed), size_fixed, 2, "gtk_range_set_slider_size_fixed", "gboolean");
+ gtk_range_set_slider_size_fixed(XEN_TO_C_GtkRange_(range), XEN_TO_C_gboolean(size_fixed));
+ return(XEN_FALSE);
+}
+
+static XEN gxg_gtk_range_get_slider_size_fixed(XEN range)
+{
+ #define H_gtk_range_get_slider_size_fixed "gboolean gtk_range_get_slider_size_fixed(GtkRange* range)"
+ XEN_ASSERT_TYPE(XEN_GtkRange__P(range), range, 1, "gtk_range_get_slider_size_fixed", "GtkRange*");
+ return(C_TO_XEN_gboolean(gtk_range_get_slider_size_fixed(XEN_TO_C_GtkRange_(range))));
+}
+
+static XEN gxg_gtk_range_set_min_slider_size(XEN range, XEN min_size)
+{
+ #define H_gtk_range_set_min_slider_size "void gtk_range_set_min_slider_size(GtkRange* range, gboolean min_size)"
+ XEN_ASSERT_TYPE(XEN_GtkRange__P(range), range, 1, "gtk_range_set_min_slider_size", "GtkRange*");
+ XEN_ASSERT_TYPE(XEN_gboolean_P(min_size), min_size, 2, "gtk_range_set_min_slider_size", "gboolean");
+ gtk_range_set_min_slider_size(XEN_TO_C_GtkRange_(range), XEN_TO_C_gboolean(min_size));
+ return(XEN_FALSE);
+}
+
+static XEN gxg_gtk_range_get_min_slider_size(XEN range)
+{
+ #define H_gtk_range_get_min_slider_size "gint gtk_range_get_min_slider_size(GtkRange* range)"
+ XEN_ASSERT_TYPE(XEN_GtkRange__P(range), range, 1, "gtk_range_get_min_slider_size", "GtkRange*");
+ return(C_TO_XEN_gint(gtk_range_get_min_slider_size(XEN_TO_C_GtkRange_(range))));
+}
+
+static XEN gxg_gtk_range_get_range_rect(XEN range, XEN range_rect)
+{
+ #define H_gtk_range_get_range_rect "void gtk_range_get_range_rect(GtkRange* range, GdkRectangle* range_rect)"
+ XEN_ASSERT_TYPE(XEN_GtkRange__P(range), range, 1, "gtk_range_get_range_rect", "GtkRange*");
+ XEN_ASSERT_TYPE(XEN_GdkRectangle__P(range_rect), range_rect, 2, "gtk_range_get_range_rect", "GdkRectangle*");
+ gtk_range_get_range_rect(XEN_TO_C_GtkRange_(range), XEN_TO_C_GdkRectangle_(range_rect));
+ return(XEN_FALSE);
+}
+
+static XEN gxg_gtk_range_get_slider_range(XEN range, XEN ignore_slider_start, XEN ignore_slider_end)
+{
+ #define H_gtk_range_get_slider_range "void gtk_range_get_slider_range(GtkRange* range, gint* [slider_start], \
+gint* [slider_end])"
+ gint ref_slider_start;
+ gint ref_slider_end;
+ XEN_ASSERT_TYPE(XEN_GtkRange__P(range), range, 1, "gtk_range_get_slider_range", "GtkRange*");
+ gtk_range_get_slider_range(XEN_TO_C_GtkRange_(range), &ref_slider_start, &ref_slider_end);
+ return(XEN_LIST_2(C_TO_XEN_gint(ref_slider_start), C_TO_XEN_gint(ref_slider_end)));
+}
+
+static XEN gxg_gtk_status_icon_set_name(XEN status_icon, XEN name)
+{
+ #define H_gtk_status_icon_set_name "void gtk_status_icon_set_name(GtkStatusIcon* status_icon, gchar* name)"
+ XEN_ASSERT_TYPE(XEN_GtkStatusIcon__P(status_icon), status_icon, 1, "gtk_status_icon_set_name", "GtkStatusIcon*");
+ XEN_ASSERT_TYPE(XEN_gchar__P(name), name, 2, "gtk_status_icon_set_name", "gchar*");
+ gtk_status_icon_set_name(XEN_TO_C_GtkStatusIcon_(status_icon), XEN_TO_C_gchar_(name));
+ return(XEN_FALSE);
+}
+
+static XEN gxg_gtk_widget_has_rc_style(XEN widget)
+{
+ #define H_gtk_widget_has_rc_style "gboolean gtk_widget_has_rc_style(GtkWidget* widget)"
+ XEN_ASSERT_TYPE(XEN_GtkWidget__P(widget), widget, 1, "gtk_widget_has_rc_style", "GtkWidget*");
+ return(C_TO_XEN_gboolean(gtk_widget_has_rc_style(XEN_TO_C_GtkWidget_(widget))));
+}
+
#endif
#if HAVE_CAIRO_CREATE
@@ -34456,6 +34420,7 @@ static XEN gxg_PANGO_FONT(XEN obj) {return((WRAPPED_OBJECT_P(obj)) ? XEN_LIST_2(
static XEN gxg_PANGO_FONT_MAP(XEN obj) {return((WRAPPED_OBJECT_P(obj)) ? XEN_LIST_2(C_STRING_TO_XEN_SYMBOL("PangoFontMap_"), XEN_CADR(obj)) : XEN_FALSE);}
static XEN gxg_PANGO_LAYOUT(XEN obj) {return((WRAPPED_OBJECT_P(obj)) ? XEN_LIST_2(C_STRING_TO_XEN_SYMBOL("PangoLayout_"), XEN_CADR(obj)) : XEN_FALSE);}
static XEN gxg_G_OBJECT(XEN obj) {return((WRAPPED_OBJECT_P(obj)) ? XEN_LIST_2(C_STRING_TO_XEN_SYMBOL("GObject_"), XEN_CADR(obj)) : XEN_FALSE);}
+static XEN gxg_GDK_EVENT(XEN obj) {return((WRAPPED_OBJECT_P(obj)) ? XEN_LIST_2(C_STRING_TO_XEN_SYMBOL("GdkEvent_"), XEN_CADR(obj)) : XEN_FALSE);}
static XEN gxg_GDK_EVENT_ANY(XEN obj) {return((WRAPPED_OBJECT_P(obj)) ? XEN_LIST_2(C_STRING_TO_XEN_SYMBOL("GdkEventAny_"), XEN_CADR(obj)) : XEN_FALSE);}
static XEN gxg_GDK_EVENT_EXPOSE(XEN obj) {return((WRAPPED_OBJECT_P(obj)) ? XEN_LIST_2(C_STRING_TO_XEN_SYMBOL("GdkEventExpose_"), XEN_CADR(obj)) : XEN_FALSE);}
static XEN gxg_GDK_EVENT_NOEXPOSE(XEN obj) {return((WRAPPED_OBJECT_P(obj)) ? XEN_LIST_2(C_STRING_TO_XEN_SYMBOL("GdkEventNoExpose_"), XEN_CADR(obj)) : XEN_FALSE);}
@@ -34557,7 +34522,7 @@ static XEN gxg_GTK_INFO_BAR(XEN obj) {return((WRAPPED_OBJECT_P(obj)) ? XEN_LIST_
static XEN gxg_GTK_ENTRY_BUFFER(XEN obj) {return((WRAPPED_OBJECT_P(obj)) ? XEN_LIST_2(C_STRING_TO_XEN_SYMBOL("GtkEntryBuffer_"), XEN_CADR(obj)) : XEN_FALSE);}
#endif
-#if HAVE_GTK_TOOL_PALETTE_NEW
+#if HAVE_GTK_ENTRY_GET_TEXT_WINDOW
static XEN gxg_GTK_SPINNER(XEN obj) {return((WRAPPED_OBJECT_P(obj)) ? XEN_LIST_2(C_STRING_TO_XEN_SYMBOL("GtkSpinner_"), XEN_CADR(obj)) : XEN_FALSE);}
static XEN gxg_GTK_CELL_RENDERER_SPINNER(XEN obj) {return((WRAPPED_OBJECT_P(obj)) ? XEN_LIST_2(C_STRING_TO_XEN_SYMBOL("GtkCellRendererSpinner_"), XEN_CADR(obj)) : XEN_FALSE);}
static XEN gxg_GTK_TOOL_PALETTE(XEN obj) {return((WRAPPED_OBJECT_P(obj)) ? XEN_LIST_2(C_STRING_TO_XEN_SYMBOL("GtkToolPalette_"), XEN_CADR(obj)) : XEN_FALSE);}
@@ -34772,7 +34737,7 @@ static XEN gxg_GTK_IS_INFO_BAR(XEN obj) {return(C_TO_XEN_BOOLEAN(WRAPPED_OBJECT_
static XEN gxg_GTK_IS_ENTRY_BUFFER(XEN obj) {return(C_TO_XEN_BOOLEAN(WRAPPED_OBJECT_P(obj) && GTK_IS_ENTRY_BUFFER((GTypeInstance *)XEN_UNWRAP_C_POINTER(XEN_CADR(obj)))));}
#endif
-#if HAVE_GTK_TOOL_PALETTE_NEW
+#if HAVE_GTK_ENTRY_GET_TEXT_WINDOW
static XEN gxg_GTK_IS_SPINNER(XEN obj) {return(C_TO_XEN_BOOLEAN(WRAPPED_OBJECT_P(obj) && GTK_IS_SPINNER((GTypeInstance *)XEN_UNWRAP_C_POINTER(XEN_CADR(obj)))));}
static XEN gxg_GTK_IS_CELL_RENDERER_SPINNER(XEN obj) {return(C_TO_XEN_BOOLEAN(WRAPPED_OBJECT_P(obj) && GTK_IS_CELL_RENDERER_SPINNER((GTypeInstance *)XEN_UNWRAP_C_POINTER(XEN_CADR(obj)))));}
static XEN gxg_GTK_IS_TOOL_PALETTE(XEN obj) {return(C_TO_XEN_BOOLEAN(WRAPPED_OBJECT_P(obj) && GTK_IS_TOOL_PALETTE((GTypeInstance *)XEN_UNWRAP_C_POINTER(XEN_CADR(obj)))));}
@@ -34875,12 +34840,6 @@ static XEN c_array_to_xen_list(XEN val_1, XEN clen)
if (len == -1) {for (i = 0; arr[i]; i++) {}; len = i;}
for (i = len - 1; i >= 0; i--) result = XEN_CONS(C_TO_XEN_gboolean(arr[i]), result);
}
- if (strcmp(ctype, "guint8_") == 0)
- {
- guint8* arr; arr = (guint8*)XEN_UNWRAP_C_POINTER(XEN_CADR(val));
- if (len == -1) {for (i = 0; arr[i]; i++) {}; len = i;}
- for (i = len - 1; i >= 0; i--) result = XEN_CONS(C_TO_XEN_guint8(arr[i]), result);
- }
if (strcmp(ctype, "GType_") == 0)
{
GType* arr; arr = (GType*)XEN_UNWRAP_C_POINTER(XEN_CADR(val));
@@ -35021,12 +34980,6 @@ static XEN xen_list_to_c_array(XEN val, XEN type)
for (i = 0; i < len; i++, val = XEN_CDR(val)) arr[i] = XEN_TO_C_gboolean(XEN_CAR(val));
return(XEN_LIST_3(C_STRING_TO_XEN_SYMBOL("gboolean_"), XEN_WRAP_C_POINTER(arr), make_xm_obj(arr)));
}
- if (strcmp(ctype, "guint8*") == 0)
- {
- guint8* arr; arr = (guint8*)calloc(len + 1, sizeof(guint8));
- for (i = 0; i < len; i++, val = XEN_CDR(val)) arr[i] = XEN_TO_C_guint8(XEN_CAR(val));
- return(XEN_LIST_3(C_STRING_TO_XEN_SYMBOL("guint8_"), XEN_WRAP_C_POINTER(arr), make_xm_obj(arr)));
- }
if (strcmp(ctype, "GType*") == 0)
{
GType* arr; arr = (GType*)calloc(len + 1, sizeof(GType));
@@ -35129,147 +35082,28 @@ static XEN xen_list_to_c_array(XEN val, XEN type)
static XEN gxg_type(XEN ptr)
{
- if (XEN_GdkEventAny__P(ptr)) return(C_TO_XEN_GdkEventType((GdkEventType)((XEN_TO_C_GdkEventAny_(ptr))->type)));
- if (XEN_GdkEventMotion__P(ptr)) return(C_TO_XEN_GdkEventType((GdkEventType)((XEN_TO_C_GdkEventMotion_(ptr))->type)));
- if (XEN_GdkEventButton__P(ptr)) return(C_TO_XEN_GdkEventType((GdkEventType)((XEN_TO_C_GdkEventButton_(ptr))->type)));
- if (XEN_GdkEventScroll__P(ptr)) return(C_TO_XEN_GdkEventType((GdkEventType)((XEN_TO_C_GdkEventScroll_(ptr))->type)));
- if (XEN_GdkEventKey__P(ptr)) return(C_TO_XEN_GdkEventType((GdkEventType)((XEN_TO_C_GdkEventKey_(ptr))->type)));
- if (XEN_GdkCursor__P(ptr)) return(C_TO_XEN_GdkCursorType((GdkCursorType)((XEN_TO_C_GdkCursor_(ptr))->type)));
- XEN_ASSERT_TYPE(0, ptr, XEN_ONLY_ARG, "type", "pointer to struct with type field");
- return(XEN_FALSE);
-}
-
-static XEN gxg_window(XEN ptr)
-{
- if (XEN_GdkEventAny__P(ptr)) return(C_TO_XEN_GdkWindow_((GdkWindow*)((XEN_TO_C_GdkEventAny_(ptr))->window)));
- if (XEN_GdkEventMotion__P(ptr)) return(C_TO_XEN_GdkWindow_((GdkWindow*)((XEN_TO_C_GdkEventMotion_(ptr))->window)));
- if (XEN_GdkEventButton__P(ptr)) return(C_TO_XEN_GdkWindow_((GdkWindow*)((XEN_TO_C_GdkEventButton_(ptr))->window)));
- if (XEN_GdkEventScroll__P(ptr)) return(C_TO_XEN_GdkWindow_((GdkWindow*)((XEN_TO_C_GdkEventScroll_(ptr))->window)));
- if (XEN_GdkEventKey__P(ptr)) return(C_TO_XEN_GdkWindow_((GdkWindow*)((XEN_TO_C_GdkEventKey_(ptr))->window)));
- if (XEN_GtkWidget__P(ptr)) return(C_TO_XEN_GdkWindow_((GdkWindow*)((XEN_TO_C_GtkWidget_(ptr))->window)));
- XEN_ASSERT_TYPE(0, ptr, XEN_ONLY_ARG, "window", "pointer to struct with window field");
- return(XEN_FALSE);
+ XEN_ASSERT_TYPE(XEN_GdkCursor__P(ptr), ptr, XEN_ONLY_ARG, "type", "GdkCursor");
+ return(C_TO_XEN_GdkCursorType((GdkCursorType)((XEN_TO_C_GdkCursor_(ptr))->type)));
}
-static XEN gxg_time(XEN ptr)
+static XEN gxg_ref_count(XEN ptr)
{
- if (XEN_GdkEventMotion__P(ptr)) return(C_TO_XEN_guint32((guint32)((XEN_TO_C_GdkEventMotion_(ptr))->time)));
- if (XEN_GdkEventButton__P(ptr)) return(C_TO_XEN_guint32((guint32)((XEN_TO_C_GdkEventButton_(ptr))->time)));
- if (XEN_GdkEventScroll__P(ptr)) return(C_TO_XEN_guint32((guint32)((XEN_TO_C_GdkEventScroll_(ptr))->time)));
- if (XEN_GdkEventKey__P(ptr)) return(C_TO_XEN_guint32((guint32)((XEN_TO_C_GdkEventKey_(ptr))->time)));
- XEN_ASSERT_TYPE(0, ptr, XEN_ONLY_ARG, "time", "pointer to struct with time field");
- return(XEN_FALSE);
+ XEN_ASSERT_TYPE(XEN_GdkCursor__P(ptr), ptr, XEN_ONLY_ARG, "ref_count", "GdkCursor");
+ return(C_TO_XEN_guint((guint)((XEN_TO_C_GdkCursor_(ptr))->ref_count)));
}
static XEN gxg_x(XEN ptr)
{
- if (XEN_GdkEventMotion__P(ptr)) return(C_TO_XEN_gdouble((gdouble)((XEN_TO_C_GdkEventMotion_(ptr))->x)));
- if (XEN_GdkEventButton__P(ptr)) return(C_TO_XEN_gdouble((gdouble)((XEN_TO_C_GdkEventButton_(ptr))->x)));
- if (XEN_GdkEventScroll__P(ptr)) return(C_TO_XEN_gdouble((gdouble)((XEN_TO_C_GdkEventScroll_(ptr))->x)));
+ XEN_ASSERT_TYPE(XEN_GdkPoint__P(ptr) || XEN_GdkRectangle__P(ptr), ptr, XEN_ONLY_ARG, "x", "GdkPoint" " or " "GdkRectangle");
if (XEN_GdkPoint__P(ptr)) return(C_TO_XEN_gint((gint)((XEN_TO_C_GdkPoint_(ptr))->x)));
- if (XEN_GdkRectangle__P(ptr)) return(C_TO_XEN_gint((gint)((XEN_TO_C_GdkRectangle_(ptr))->x)));
- XEN_ASSERT_TYPE(0, ptr, XEN_ONLY_ARG, "x", "pointer to struct with x field");
- return(XEN_FALSE);
+ return(C_TO_XEN_gint((gint)((XEN_TO_C_GdkRectangle_(ptr))->x)));
}
static XEN gxg_y(XEN ptr)
{
- if (XEN_GdkEventMotion__P(ptr)) return(C_TO_XEN_gdouble((gdouble)((XEN_TO_C_GdkEventMotion_(ptr))->y)));
- if (XEN_GdkEventButton__P(ptr)) return(C_TO_XEN_gdouble((gdouble)((XEN_TO_C_GdkEventButton_(ptr))->y)));
- if (XEN_GdkEventScroll__P(ptr)) return(C_TO_XEN_gdouble((gdouble)((XEN_TO_C_GdkEventScroll_(ptr))->y)));
+ XEN_ASSERT_TYPE(XEN_GdkPoint__P(ptr) || XEN_GdkRectangle__P(ptr), ptr, XEN_ONLY_ARG, "y", "GdkPoint" " or " "GdkRectangle");
if (XEN_GdkPoint__P(ptr)) return(C_TO_XEN_gint((gint)((XEN_TO_C_GdkPoint_(ptr))->y)));
- if (XEN_GdkRectangle__P(ptr)) return(C_TO_XEN_gint((gint)((XEN_TO_C_GdkRectangle_(ptr))->y)));
- XEN_ASSERT_TYPE(0, ptr, XEN_ONLY_ARG, "y", "pointer to struct with y field");
- return(XEN_FALSE);
-}
-
-static XEN gxg_state(XEN ptr)
-{
- if (XEN_GdkEventMotion__P(ptr)) return(C_TO_XEN_guint((guint)((XEN_TO_C_GdkEventMotion_(ptr))->state)));
- if (XEN_GdkEventButton__P(ptr)) return(C_TO_XEN_guint((guint)((XEN_TO_C_GdkEventButton_(ptr))->state)));
- if (XEN_GdkEventScroll__P(ptr)) return(C_TO_XEN_guint((guint)((XEN_TO_C_GdkEventScroll_(ptr))->state)));
- if (XEN_GdkEventKey__P(ptr)) return(C_TO_XEN_guint((guint)((XEN_TO_C_GdkEventKey_(ptr))->state)));
- if (XEN_GtkWidget__P(ptr)) return(C_TO_XEN_guint8((guint8)((XEN_TO_C_GtkWidget_(ptr))->state)));
- XEN_ASSERT_TYPE(0, ptr, XEN_ONLY_ARG, "state", "pointer to struct with state field");
- return(XEN_FALSE);
-}
-
-static XEN gxg_is_hint(XEN ptr)
-{
- XEN_ASSERT_TYPE(XEN_GdkEventMotion__P(ptr), ptr, XEN_ONLY_ARG, "is_hint", "GdkEventMotion");
- return(C_TO_XEN_gint16((gint16)((XEN_TO_C_GdkEventMotion_(ptr))->is_hint)));
-}
-
-static XEN gxg_button(XEN ptr)
-{
- XEN_ASSERT_TYPE(XEN_GdkEventButton__P(ptr), ptr, XEN_ONLY_ARG, "button", "GdkEventButton");
- return(C_TO_XEN_guint((guint)((XEN_TO_C_GdkEventButton_(ptr))->button)));
-}
-
-static XEN gxg_direction(XEN ptr)
-{
- XEN_ASSERT_TYPE(XEN_GdkEventScroll__P(ptr), ptr, XEN_ONLY_ARG, "direction", "GdkEventScroll");
- return(C_TO_XEN_GdkScrollDirection((GdkScrollDirection)((XEN_TO_C_GdkEventScroll_(ptr))->direction)));
-}
-
-static XEN gxg_keyval(XEN ptr)
-{
- XEN_ASSERT_TYPE(XEN_GdkEventKey__P(ptr), ptr, XEN_ONLY_ARG, "keyval", "GdkEventKey");
- return(C_TO_XEN_guint((guint)((XEN_TO_C_GdkEventKey_(ptr))->keyval)));
-}
-
-static XEN gxg_function(XEN ptr)
-{
- XEN_ASSERT_TYPE(XEN_GdkGCValues__P(ptr), ptr, XEN_ONLY_ARG, "function", "GdkGCValues");
- return(C_TO_XEN_GdkFunction((GdkFunction)((XEN_TO_C_GdkGCValues_(ptr))->function)));
-}
-
-static XEN gxg_black_gc(XEN ptr)
-{
- XEN_ASSERT_TYPE(XEN_GtkStyle__P(ptr), ptr, XEN_ONLY_ARG, "black_gc", "GtkStyle");
- return(C_TO_XEN_GdkGC_((GdkGC*)((XEN_TO_C_GtkStyle_(ptr))->black_gc)));
-}
-
-static XEN gxg_white_gc(XEN ptr)
-{
- XEN_ASSERT_TYPE(XEN_GtkStyle__P(ptr), ptr, XEN_ONLY_ARG, "white_gc", "GtkStyle");
- return(C_TO_XEN_GdkGC_((GdkGC*)((XEN_TO_C_GtkStyle_(ptr))->white_gc)));
-}
-
-static XEN gxg_ok_button(XEN ptr)
-{
- XEN_ASSERT_TYPE(XEN_GtkColorSelectionDialog__P(ptr), ptr, XEN_ONLY_ARG, "ok_button", "GtkColorSelectionDialog");
- return(C_TO_XEN_GtkWidget_((GtkWidget*)((XEN_TO_C_GtkColorSelectionDialog_(ptr))->ok_button)));
-}
-
-static XEN gxg_cancel_button(XEN ptr)
-{
- XEN_ASSERT_TYPE(XEN_GtkColorSelectionDialog__P(ptr), ptr, XEN_ONLY_ARG, "cancel_button", "GtkColorSelectionDialog");
- return(C_TO_XEN_GtkWidget_((GtkWidget*)((XEN_TO_C_GtkColorSelectionDialog_(ptr))->cancel_button)));
-}
-
-static XEN gxg_vbox(XEN ptr)
-{
- XEN_ASSERT_TYPE(XEN_GtkDialog__P(ptr), ptr, XEN_ONLY_ARG, "vbox", "GtkDialog");
- return(C_TO_XEN_GtkWidget_((GtkWidget*)((XEN_TO_C_GtkDialog_(ptr))->vbox)));
-}
-
-static XEN gxg_action_area(XEN ptr)
-{
- XEN_ASSERT_TYPE(XEN_GtkDialog__P(ptr), ptr, XEN_ONLY_ARG, "action_area", "GtkDialog");
- return(C_TO_XEN_GtkWidget_((GtkWidget*)((XEN_TO_C_GtkDialog_(ptr))->action_area)));
-}
-
-static XEN gxg_style(XEN ptr)
-{
- XEN_ASSERT_TYPE(XEN_GtkWidget__P(ptr), ptr, XEN_ONLY_ARG, "style", "GtkWidget");
- return(C_TO_XEN_GtkStyle_((GtkStyle*)((XEN_TO_C_GtkWidget_(ptr))->style)));
-}
-
-static XEN gxg_ref_count(XEN ptr)
-{
- XEN_ASSERT_TYPE(XEN_GdkCursor__P(ptr), ptr, XEN_ONLY_ARG, "ref_count", "GdkCursor");
- return(C_TO_XEN_guint((guint)((XEN_TO_C_GdkCursor_(ptr))->ref_count)));
+ return(C_TO_XEN_gint((gint)((XEN_TO_C_GdkRectangle_(ptr))->y)));
}
static XEN gxg_width(XEN ptr)
@@ -36043,8 +35877,6 @@ XEN_NARGIFY_0(gxg_gtk_event_box_new_w, gxg_gtk_event_box_new)
XEN_NARGIFY_0(gxg_gtk_fixed_new_w, gxg_gtk_fixed_new)
XEN_NARGIFY_4(gxg_gtk_fixed_put_w, gxg_gtk_fixed_put)
XEN_NARGIFY_4(gxg_gtk_fixed_move_w, gxg_gtk_fixed_move)
-XEN_NARGIFY_2(gxg_gtk_fixed_set_has_window_w, gxg_gtk_fixed_set_has_window)
-XEN_NARGIFY_1(gxg_gtk_fixed_get_has_window_w, gxg_gtk_fixed_get_has_window)
XEN_NARGIFY_0(gxg_gtk_font_selection_new_w, gxg_gtk_font_selection_new)
XEN_NARGIFY_1(gxg_gtk_font_selection_get_font_name_w, gxg_gtk_font_selection_get_font_name)
XEN_NARGIFY_2(gxg_gtk_font_selection_set_font_name_w, gxg_gtk_font_selection_set_font_name)
@@ -36312,7 +36144,6 @@ XEN_NARGIFY_3(gxg_gtk_notebook_set_menu_label_w, gxg_gtk_notebook_set_menu_label
XEN_NARGIFY_3(gxg_gtk_notebook_set_menu_label_text_w, gxg_gtk_notebook_set_menu_label_text)
XEN_NARGIFY_2(gxg_gtk_notebook_get_menu_label_text_w, gxg_gtk_notebook_get_menu_label_text)
XEN_NARGIFY_3(gxg_gtk_notebook_reorder_child_w, gxg_gtk_notebook_reorder_child)
-XEN_NARGIFY_1(gxg_GTK_OBJECT_TYPE_NAME_w, gxg_GTK_OBJECT_TYPE_NAME)
XEN_NARGIFY_1(gxg_GTK_OBJECT_FLAGS_w, gxg_GTK_OBJECT_FLAGS)
XEN_NARGIFY_2(gxg_GTK_OBJECT_SET_FLAGS_w, gxg_GTK_OBJECT_SET_FLAGS)
XEN_NARGIFY_2(gxg_GTK_OBJECT_UNSET_FLAGS_w, gxg_GTK_OBJECT_UNSET_FLAGS)
@@ -36944,11 +36775,7 @@ XEN_NARGIFY_1(gxg_gtk_vscale_new_w, gxg_gtk_vscale_new)
XEN_NARGIFY_3(gxg_gtk_vscale_new_with_range_w, gxg_gtk_vscale_new_with_range)
XEN_NARGIFY_1(gxg_gtk_vscrollbar_new_w, gxg_gtk_vscrollbar_new)
XEN_NARGIFY_0(gxg_gtk_vseparator_new_w, gxg_gtk_vseparator_new)
-XEN_NARGIFY_1(gxg_GTK_WIDGET_STATE_w, gxg_GTK_WIDGET_STATE)
-XEN_NARGIFY_1(gxg_GTK_WIDGET_SAVED_STATE_w, gxg_GTK_WIDGET_SAVED_STATE)
XEN_NARGIFY_1(gxg_GTK_WIDGET_FLAGS_w, gxg_GTK_WIDGET_FLAGS)
-XEN_NARGIFY_1(gxg_GTK_WIDGET_TOPLEVEL_w, gxg_GTK_WIDGET_TOPLEVEL)
-XEN_NARGIFY_1(gxg_GTK_WIDGET_NO_WINDOW_w, gxg_GTK_WIDGET_NO_WINDOW)
XEN_NARGIFY_1(gxg_GTK_WIDGET_REALIZED_w, gxg_GTK_WIDGET_REALIZED)
XEN_NARGIFY_1(gxg_GTK_WIDGET_MAPPED_w, gxg_GTK_WIDGET_MAPPED)
XEN_NARGIFY_1(gxg_GTK_WIDGET_VISIBLE_w, gxg_GTK_WIDGET_VISIBLE)
@@ -36956,16 +36783,7 @@ XEN_NARGIFY_1(gxg_GTK_WIDGET_DRAWABLE_w, gxg_GTK_WIDGET_DRAWABLE)
XEN_NARGIFY_1(gxg_GTK_WIDGET_SENSITIVE_w, gxg_GTK_WIDGET_SENSITIVE)
XEN_NARGIFY_1(gxg_GTK_WIDGET_PARENT_SENSITIVE_w, gxg_GTK_WIDGET_PARENT_SENSITIVE)
XEN_NARGIFY_1(gxg_GTK_WIDGET_IS_SENSITIVE_w, gxg_GTK_WIDGET_IS_SENSITIVE)
-XEN_NARGIFY_1(gxg_GTK_WIDGET_CAN_FOCUS_w, gxg_GTK_WIDGET_CAN_FOCUS)
XEN_NARGIFY_1(gxg_GTK_WIDGET_HAS_FOCUS_w, gxg_GTK_WIDGET_HAS_FOCUS)
-XEN_NARGIFY_1(gxg_GTK_WIDGET_CAN_DEFAULT_w, gxg_GTK_WIDGET_CAN_DEFAULT)
-XEN_NARGIFY_1(gxg_GTK_WIDGET_HAS_DEFAULT_w, gxg_GTK_WIDGET_HAS_DEFAULT)
-XEN_NARGIFY_1(gxg_GTK_WIDGET_HAS_GRAB_w, gxg_GTK_WIDGET_HAS_GRAB)
-XEN_NARGIFY_1(gxg_GTK_WIDGET_RC_STYLE_w, gxg_GTK_WIDGET_RC_STYLE)
-XEN_NARGIFY_1(gxg_GTK_WIDGET_COMPOSITE_CHILD_w, gxg_GTK_WIDGET_COMPOSITE_CHILD)
-XEN_NARGIFY_1(gxg_GTK_WIDGET_APP_PAINTABLE_w, gxg_GTK_WIDGET_APP_PAINTABLE)
-XEN_NARGIFY_1(gxg_GTK_WIDGET_RECEIVES_DEFAULT_w, gxg_GTK_WIDGET_RECEIVES_DEFAULT)
-XEN_NARGIFY_1(gxg_GTK_WIDGET_DOUBLE_BUFFERED_w, gxg_GTK_WIDGET_DOUBLE_BUFFERED)
XEN_NARGIFY_2(gxg_GTK_WIDGET_SET_FLAGS_w, gxg_GTK_WIDGET_SET_FLAGS)
XEN_NARGIFY_2(gxg_GTK_WIDGET_UNSET_FLAGS_w, gxg_GTK_WIDGET_UNSET_FLAGS)
XEN_NARGIFY_1(gxg_gtk_widget_destroy_w, gxg_gtk_widget_destroy)
@@ -38708,7 +38526,7 @@ XEN_NARGIFY_1(gxg_gtk_widget_get_receives_default_w, gxg_gtk_widget_get_receives
XEN_NARGIFY_1(gxg_gdk_window_flush_w, gxg_gdk_window_flush)
#endif
-#if HAVE_GTK_TOOL_PALETTE_NEW
+#if HAVE_GTK_ENTRY_GET_TEXT_WINDOW
XEN_NARGIFY_2(gxg_gtk_dialog_get_widget_for_response_w, gxg_gtk_dialog_get_widget_for_response)
XEN_NARGIFY_3(gxg_gtk_tooltip_set_icon_from_gicon_w, gxg_gtk_tooltip_set_icon_from_gicon)
XEN_NARGIFY_1(gxg_gtk_viewport_get_bin_window_w, gxg_gtk_viewport_get_bin_window)
@@ -38771,6 +38589,16 @@ XEN_NARGIFY_3(gxg_gtk_tool_item_group_get_drop_item_w, gxg_gtk_tool_item_group_g
XEN_NARGIFY_1(gxg_gdk_screen_get_primary_monitor_w, gxg_gdk_screen_get_primary_monitor)
XEN_NARGIFY_2(gxg_gtk_window_set_mnemonics_visible_w, gxg_gtk_window_set_mnemonics_visible)
XEN_NARGIFY_1(gxg_gtk_window_get_mnemonics_visible_w, gxg_gtk_window_get_mnemonics_visible)
+XEN_NARGIFY_1(gxg_gtk_entry_get_text_window_w, gxg_gtk_entry_get_text_window)
+XEN_NARGIFY_2(gxg_gtk_entry_get_icon_window_w, gxg_gtk_entry_get_icon_window)
+XEN_NARGIFY_2(gxg_gtk_range_set_slider_size_fixed_w, gxg_gtk_range_set_slider_size_fixed)
+XEN_NARGIFY_1(gxg_gtk_range_get_slider_size_fixed_w, gxg_gtk_range_get_slider_size_fixed)
+XEN_NARGIFY_2(gxg_gtk_range_set_min_slider_size_w, gxg_gtk_range_set_min_slider_size)
+XEN_NARGIFY_1(gxg_gtk_range_get_min_slider_size_w, gxg_gtk_range_get_min_slider_size)
+XEN_NARGIFY_2(gxg_gtk_range_get_range_rect_w, gxg_gtk_range_get_range_rect)
+XEN_ARGIFY_3(gxg_gtk_range_get_slider_range_w, gxg_gtk_range_get_slider_range)
+XEN_NARGIFY_2(gxg_gtk_status_icon_set_name_w, gxg_gtk_status_icon_set_name)
+XEN_NARGIFY_1(gxg_gtk_widget_has_rc_style_w, gxg_gtk_widget_has_rc_style)
#endif
#if HAVE_CAIRO_CREATE
@@ -39127,6 +38955,7 @@ XEN_NARGIFY_1(gxg_PANGO_FONT_w, gxg_PANGO_FONT)
XEN_NARGIFY_1(gxg_PANGO_FONT_MAP_w, gxg_PANGO_FONT_MAP)
XEN_NARGIFY_1(gxg_PANGO_LAYOUT_w, gxg_PANGO_LAYOUT)
XEN_NARGIFY_1(gxg_G_OBJECT_w, gxg_G_OBJECT)
+XEN_NARGIFY_1(gxg_GDK_EVENT_w, gxg_GDK_EVENT)
XEN_NARGIFY_1(gxg_GDK_EVENT_ANY_w, gxg_GDK_EVENT_ANY)
XEN_NARGIFY_1(gxg_GDK_EVENT_EXPOSE_w, gxg_GDK_EVENT_EXPOSE)
XEN_NARGIFY_1(gxg_GDK_EVENT_NOEXPOSE_w, gxg_GDK_EVENT_NOEXPOSE)
@@ -39228,7 +39057,7 @@ XEN_NARGIFY_1(gxg_GTK_INFO_BAR_w, gxg_GTK_INFO_BAR)
XEN_NARGIFY_1(gxg_GTK_ENTRY_BUFFER_w, gxg_GTK_ENTRY_BUFFER)
#endif
-#if HAVE_GTK_TOOL_PALETTE_NEW
+#if HAVE_GTK_ENTRY_GET_TEXT_WINDOW
XEN_NARGIFY_1(gxg_GTK_SPINNER_w, gxg_GTK_SPINNER)
XEN_NARGIFY_1(gxg_GTK_CELL_RENDERER_SPINNER_w, gxg_GTK_CELL_RENDERER_SPINNER)
XEN_NARGIFY_1(gxg_GTK_TOOL_PALETTE_w, gxg_GTK_TOOL_PALETTE)
@@ -39443,7 +39272,7 @@ XEN_NARGIFY_1(gxg_GTK_IS_INFO_BAR_w, gxg_GTK_IS_INFO_BAR)
XEN_NARGIFY_1(gxg_GTK_IS_ENTRY_BUFFER_w, gxg_GTK_IS_ENTRY_BUFFER)
#endif
-#if HAVE_GTK_TOOL_PALETTE_NEW
+#if HAVE_GTK_ENTRY_GET_TEXT_WINDOW
XEN_NARGIFY_1(gxg_GTK_IS_SPINNER_w, gxg_GTK_IS_SPINNER)
XEN_NARGIFY_1(gxg_GTK_IS_CELL_RENDERER_SPINNER_w, gxg_GTK_IS_CELL_RENDERER_SPINNER)
XEN_NARGIFY_1(gxg_GTK_IS_TOOL_PALETTE_w, gxg_GTK_IS_TOOL_PALETTE)
@@ -39452,24 +39281,9 @@ XEN_NARGIFY_1(gxg_GTK_IS_TOOL_ITEM_GROUP_w, gxg_GTK_IS_TOOL_ITEM_GROUP)
XEN_NARGIFY_1(gxg_height_w, gxg_height)
XEN_NARGIFY_1(gxg_width_w, gxg_width)
-XEN_NARGIFY_1(gxg_ref_count_w, gxg_ref_count)
-XEN_NARGIFY_1(gxg_style_w, gxg_style)
-XEN_NARGIFY_1(gxg_action_area_w, gxg_action_area)
-XEN_NARGIFY_1(gxg_vbox_w, gxg_vbox)
-XEN_NARGIFY_1(gxg_cancel_button_w, gxg_cancel_button)
-XEN_NARGIFY_1(gxg_ok_button_w, gxg_ok_button)
-XEN_NARGIFY_1(gxg_white_gc_w, gxg_white_gc)
-XEN_NARGIFY_1(gxg_black_gc_w, gxg_black_gc)
-XEN_NARGIFY_1(gxg_function_w, gxg_function)
-XEN_NARGIFY_1(gxg_keyval_w, gxg_keyval)
-XEN_NARGIFY_1(gxg_direction_w, gxg_direction)
-XEN_NARGIFY_1(gxg_button_w, gxg_button)
-XEN_NARGIFY_1(gxg_is_hint_w, gxg_is_hint)
-XEN_NARGIFY_1(gxg_state_w, gxg_state)
XEN_NARGIFY_1(gxg_y_w, gxg_y)
XEN_NARGIFY_1(gxg_x_w, gxg_x)
-XEN_NARGIFY_1(gxg_time_w, gxg_time)
-XEN_NARGIFY_1(gxg_window_w, gxg_window)
+XEN_NARGIFY_1(gxg_ref_count_w, gxg_ref_count)
XEN_NARGIFY_1(gxg_type_w, gxg_type)
XEN_NARGIFY_1(gxg_blue_w, gxg_blue)
XEN_NARGIFY_1(gxg_green_w, gxg_green)
@@ -40072,8 +39886,6 @@ XEN_NARGIFY_0(gxg_make_cairo_matrix_t_w, gxg_make_cairo_matrix_t)
#define gxg_gtk_fixed_new_w gxg_gtk_fixed_new
#define gxg_gtk_fixed_put_w gxg_gtk_fixed_put
#define gxg_gtk_fixed_move_w gxg_gtk_fixed_move
-#define gxg_gtk_fixed_set_has_window_w gxg_gtk_fixed_set_has_window
-#define gxg_gtk_fixed_get_has_window_w gxg_gtk_fixed_get_has_window
#define gxg_gtk_font_selection_new_w gxg_gtk_font_selection_new
#define gxg_gtk_font_selection_get_font_name_w gxg_gtk_font_selection_get_font_name
#define gxg_gtk_font_selection_set_font_name_w gxg_gtk_font_selection_set_font_name
@@ -40341,7 +40153,6 @@ XEN_NARGIFY_0(gxg_make_cairo_matrix_t_w, gxg_make_cairo_matrix_t)
#define gxg_gtk_notebook_set_menu_label_text_w gxg_gtk_notebook_set_menu_label_text
#define gxg_gtk_notebook_get_menu_label_text_w gxg_gtk_notebook_get_menu_label_text
#define gxg_gtk_notebook_reorder_child_w gxg_gtk_notebook_reorder_child
-#define gxg_GTK_OBJECT_TYPE_NAME_w gxg_GTK_OBJECT_TYPE_NAME
#define gxg_GTK_OBJECT_FLAGS_w gxg_GTK_OBJECT_FLAGS
#define gxg_GTK_OBJECT_SET_FLAGS_w gxg_GTK_OBJECT_SET_FLAGS
#define gxg_GTK_OBJECT_UNSET_FLAGS_w gxg_GTK_OBJECT_UNSET_FLAGS
@@ -40973,11 +40784,7 @@ XEN_NARGIFY_0(gxg_make_cairo_matrix_t_w, gxg_make_cairo_matrix_t)
#define gxg_gtk_vscale_new_with_range_w gxg_gtk_vscale_new_with_range
#define gxg_gtk_vscrollbar_new_w gxg_gtk_vscrollbar_new
#define gxg_gtk_vseparator_new_w gxg_gtk_vseparator_new
-#define gxg_GTK_WIDGET_STATE_w gxg_GTK_WIDGET_STATE
-#define gxg_GTK_WIDGET_SAVED_STATE_w gxg_GTK_WIDGET_SAVED_STATE
#define gxg_GTK_WIDGET_FLAGS_w gxg_GTK_WIDGET_FLAGS
-#define gxg_GTK_WIDGET_TOPLEVEL_w gxg_GTK_WIDGET_TOPLEVEL
-#define gxg_GTK_WIDGET_NO_WINDOW_w gxg_GTK_WIDGET_NO_WINDOW
#define gxg_GTK_WIDGET_REALIZED_w gxg_GTK_WIDGET_REALIZED
#define gxg_GTK_WIDGET_MAPPED_w gxg_GTK_WIDGET_MAPPED
#define gxg_GTK_WIDGET_VISIBLE_w gxg_GTK_WIDGET_VISIBLE
@@ -40985,16 +40792,7 @@ XEN_NARGIFY_0(gxg_make_cairo_matrix_t_w, gxg_make_cairo_matrix_t)
#define gxg_GTK_WIDGET_SENSITIVE_w gxg_GTK_WIDGET_SENSITIVE
#define gxg_GTK_WIDGET_PARENT_SENSITIVE_w gxg_GTK_WIDGET_PARENT_SENSITIVE
#define gxg_GTK_WIDGET_IS_SENSITIVE_w gxg_GTK_WIDGET_IS_SENSITIVE
-#define gxg_GTK_WIDGET_CAN_FOCUS_w gxg_GTK_WIDGET_CAN_FOCUS
#define gxg_GTK_WIDGET_HAS_FOCUS_w gxg_GTK_WIDGET_HAS_FOCUS
-#define gxg_GTK_WIDGET_CAN_DEFAULT_w gxg_GTK_WIDGET_CAN_DEFAULT
-#define gxg_GTK_WIDGET_HAS_DEFAULT_w gxg_GTK_WIDGET_HAS_DEFAULT
-#define gxg_GTK_WIDGET_HAS_GRAB_w gxg_GTK_WIDGET_HAS_GRAB
-#define gxg_GTK_WIDGET_RC_STYLE_w gxg_GTK_WIDGET_RC_STYLE
-#define gxg_GTK_WIDGET_COMPOSITE_CHILD_w gxg_GTK_WIDGET_COMPOSITE_CHILD
-#define gxg_GTK_WIDGET_APP_PAINTABLE_w gxg_GTK_WIDGET_APP_PAINTABLE
-#define gxg_GTK_WIDGET_RECEIVES_DEFAULT_w gxg_GTK_WIDGET_RECEIVES_DEFAULT
-#define gxg_GTK_WIDGET_DOUBLE_BUFFERED_w gxg_GTK_WIDGET_DOUBLE_BUFFERED
#define gxg_GTK_WIDGET_SET_FLAGS_w gxg_GTK_WIDGET_SET_FLAGS
#define gxg_GTK_WIDGET_UNSET_FLAGS_w gxg_GTK_WIDGET_UNSET_FLAGS
#define gxg_gtk_widget_destroy_w gxg_gtk_widget_destroy
@@ -42737,7 +42535,7 @@ XEN_NARGIFY_0(gxg_make_cairo_matrix_t_w, gxg_make_cairo_matrix_t)
#define gxg_gdk_window_flush_w gxg_gdk_window_flush
#endif
-#if HAVE_GTK_TOOL_PALETTE_NEW
+#if HAVE_GTK_ENTRY_GET_TEXT_WINDOW
#define gxg_gtk_dialog_get_widget_for_response_w gxg_gtk_dialog_get_widget_for_response
#define gxg_gtk_tooltip_set_icon_from_gicon_w gxg_gtk_tooltip_set_icon_from_gicon
#define gxg_gtk_viewport_get_bin_window_w gxg_gtk_viewport_get_bin_window
@@ -42800,6 +42598,16 @@ XEN_NARGIFY_0(gxg_make_cairo_matrix_t_w, gxg_make_cairo_matrix_t)
#define gxg_gdk_screen_get_primary_monitor_w gxg_gdk_screen_get_primary_monitor
#define gxg_gtk_window_set_mnemonics_visible_w gxg_gtk_window_set_mnemonics_visible
#define gxg_gtk_window_get_mnemonics_visible_w gxg_gtk_window_get_mnemonics_visible
+#define gxg_gtk_entry_get_text_window_w gxg_gtk_entry_get_text_window
+#define gxg_gtk_entry_get_icon_window_w gxg_gtk_entry_get_icon_window
+#define gxg_gtk_range_set_slider_size_fixed_w gxg_gtk_range_set_slider_size_fixed
+#define gxg_gtk_range_get_slider_size_fixed_w gxg_gtk_range_get_slider_size_fixed
+#define gxg_gtk_range_set_min_slider_size_w gxg_gtk_range_set_min_slider_size
+#define gxg_gtk_range_get_min_slider_size_w gxg_gtk_range_get_min_slider_size
+#define gxg_gtk_range_get_range_rect_w gxg_gtk_range_get_range_rect
+#define gxg_gtk_range_get_slider_range_w gxg_gtk_range_get_slider_range
+#define gxg_gtk_status_icon_set_name_w gxg_gtk_status_icon_set_name
+#define gxg_gtk_widget_has_rc_style_w gxg_gtk_widget_has_rc_style
#endif
#if HAVE_CAIRO_CREATE
@@ -43156,6 +42964,7 @@ XEN_NARGIFY_0(gxg_make_cairo_matrix_t_w, gxg_make_cairo_matrix_t)
#define gxg_PANGO_FONT_MAP_w gxg_PANGO_FONT_MAP
#define gxg_PANGO_LAYOUT_w gxg_PANGO_LAYOUT
#define gxg_G_OBJECT_w gxg_G_OBJECT
+#define gxg_GDK_EVENT_w gxg_GDK_EVENT
#define gxg_GDK_EVENT_ANY_w gxg_GDK_EVENT_ANY
#define gxg_GDK_EVENT_EXPOSE_w gxg_GDK_EVENT_EXPOSE
#define gxg_GDK_EVENT_NOEXPOSE_w gxg_GDK_EVENT_NOEXPOSE
@@ -43257,7 +43066,7 @@ XEN_NARGIFY_0(gxg_make_cairo_matrix_t_w, gxg_make_cairo_matrix_t)
#define gxg_GTK_ENTRY_BUFFER_w gxg_GTK_ENTRY_BUFFER
#endif
-#if HAVE_GTK_TOOL_PALETTE_NEW
+#if HAVE_GTK_ENTRY_GET_TEXT_WINDOW
#define gxg_GTK_SPINNER_w gxg_GTK_SPINNER
#define gxg_GTK_CELL_RENDERER_SPINNER_w gxg_GTK_CELL_RENDERER_SPINNER
#define gxg_GTK_TOOL_PALETTE_w gxg_GTK_TOOL_PALETTE
@@ -43472,7 +43281,7 @@ XEN_NARGIFY_0(gxg_make_cairo_matrix_t_w, gxg_make_cairo_matrix_t)
#define gxg_GTK_IS_ENTRY_BUFFER_w gxg_GTK_IS_ENTRY_BUFFER
#endif
-#if HAVE_GTK_TOOL_PALETTE_NEW
+#if HAVE_GTK_ENTRY_GET_TEXT_WINDOW
#define gxg_GTK_IS_SPINNER_w gxg_GTK_IS_SPINNER
#define gxg_GTK_IS_CELL_RENDERER_SPINNER_w gxg_GTK_IS_CELL_RENDERER_SPINNER
#define gxg_GTK_IS_TOOL_PALETTE_w gxg_GTK_IS_TOOL_PALETTE
@@ -43481,24 +43290,9 @@ XEN_NARGIFY_0(gxg_make_cairo_matrix_t_w, gxg_make_cairo_matrix_t)
#define gxg_height_w gxg_height
#define gxg_width_w gxg_width
-#define gxg_ref_count_w gxg_ref_count
-#define gxg_style_w gxg_style
-#define gxg_action_area_w gxg_action_area
-#define gxg_vbox_w gxg_vbox
-#define gxg_cancel_button_w gxg_cancel_button
-#define gxg_ok_button_w gxg_ok_button
-#define gxg_white_gc_w gxg_white_gc
-#define gxg_black_gc_w gxg_black_gc
-#define gxg_function_w gxg_function
-#define gxg_keyval_w gxg_keyval
-#define gxg_direction_w gxg_direction
-#define gxg_button_w gxg_button
-#define gxg_is_hint_w gxg_is_hint
-#define gxg_state_w gxg_state
#define gxg_y_w gxg_y
#define gxg_x_w gxg_x
-#define gxg_time_w gxg_time
-#define gxg_window_w gxg_window
+#define gxg_ref_count_w gxg_ref_count
#define gxg_type_w gxg_type
#define gxg_blue_w gxg_blue
#define gxg_green_w gxg_green
@@ -44108,8 +43902,6 @@ static void define_functions(void)
XG_DEFINE_PROCEDURE(gtk_fixed_new, gxg_gtk_fixed_new_w, 0, 0, 0, H_gtk_fixed_new);
XG_DEFINE_PROCEDURE(gtk_fixed_put, gxg_gtk_fixed_put_w, 4, 0, 0, H_gtk_fixed_put);
XG_DEFINE_PROCEDURE(gtk_fixed_move, gxg_gtk_fixed_move_w, 4, 0, 0, H_gtk_fixed_move);
- XG_DEFINE_PROCEDURE(gtk_fixed_set_has_window, gxg_gtk_fixed_set_has_window_w, 2, 0, 0, H_gtk_fixed_set_has_window);
- XG_DEFINE_PROCEDURE(gtk_fixed_get_has_window, gxg_gtk_fixed_get_has_window_w, 1, 0, 0, H_gtk_fixed_get_has_window);
XG_DEFINE_PROCEDURE(gtk_font_selection_new, gxg_gtk_font_selection_new_w, 0, 0, 0, H_gtk_font_selection_new);
XG_DEFINE_PROCEDURE(gtk_font_selection_get_font_name, gxg_gtk_font_selection_get_font_name_w, 1, 0, 0, H_gtk_font_selection_get_font_name);
XG_DEFINE_PROCEDURE(gtk_font_selection_set_font_name, gxg_gtk_font_selection_set_font_name_w, 2, 0, 0, H_gtk_font_selection_set_font_name);
@@ -44377,7 +44169,6 @@ static void define_functions(void)
XG_DEFINE_PROCEDURE(gtk_notebook_set_menu_label_text, gxg_gtk_notebook_set_menu_label_text_w, 3, 0, 0, H_gtk_notebook_set_menu_label_text);
XG_DEFINE_PROCEDURE(gtk_notebook_get_menu_label_text, gxg_gtk_notebook_get_menu_label_text_w, 2, 0, 0, H_gtk_notebook_get_menu_label_text);
XG_DEFINE_PROCEDURE(gtk_notebook_reorder_child, gxg_gtk_notebook_reorder_child_w, 3, 0, 0, H_gtk_notebook_reorder_child);
- XG_DEFINE_PROCEDURE(GTK_OBJECT_TYPE_NAME, gxg_GTK_OBJECT_TYPE_NAME_w, 1, 0, 0, H_GTK_OBJECT_TYPE_NAME);
XG_DEFINE_PROCEDURE(GTK_OBJECT_FLAGS, gxg_GTK_OBJECT_FLAGS_w, 1, 0, 0, H_GTK_OBJECT_FLAGS);
XG_DEFINE_PROCEDURE(GTK_OBJECT_SET_FLAGS, gxg_GTK_OBJECT_SET_FLAGS_w, 2, 0, 0, H_GTK_OBJECT_SET_FLAGS);
XG_DEFINE_PROCEDURE(GTK_OBJECT_UNSET_FLAGS, gxg_GTK_OBJECT_UNSET_FLAGS_w, 2, 0, 0, H_GTK_OBJECT_UNSET_FLAGS);
@@ -45009,11 +44800,7 @@ static void define_functions(void)
XG_DEFINE_PROCEDURE(gtk_vscale_new_with_range, gxg_gtk_vscale_new_with_range_w, 3, 0, 0, H_gtk_vscale_new_with_range);
XG_DEFINE_PROCEDURE(gtk_vscrollbar_new, gxg_gtk_vscrollbar_new_w, 1, 0, 0, H_gtk_vscrollbar_new);
XG_DEFINE_PROCEDURE(gtk_vseparator_new, gxg_gtk_vseparator_new_w, 0, 0, 0, H_gtk_vseparator_new);
- XG_DEFINE_PROCEDURE(GTK_WIDGET_STATE, gxg_GTK_WIDGET_STATE_w, 1, 0, 0, H_GTK_WIDGET_STATE);
- XG_DEFINE_PROCEDURE(GTK_WIDGET_SAVED_STATE, gxg_GTK_WIDGET_SAVED_STATE_w, 1, 0, 0, H_GTK_WIDGET_SAVED_STATE);
XG_DEFINE_PROCEDURE(GTK_WIDGET_FLAGS, gxg_GTK_WIDGET_FLAGS_w, 1, 0, 0, H_GTK_WIDGET_FLAGS);
- XG_DEFINE_PROCEDURE(GTK_WIDGET_TOPLEVEL, gxg_GTK_WIDGET_TOPLEVEL_w, 1, 0, 0, H_GTK_WIDGET_TOPLEVEL);
- XG_DEFINE_PROCEDURE(GTK_WIDGET_NO_WINDOW, gxg_GTK_WIDGET_NO_WINDOW_w, 1, 0, 0, H_GTK_WIDGET_NO_WINDOW);
XG_DEFINE_PROCEDURE(GTK_WIDGET_REALIZED, gxg_GTK_WIDGET_REALIZED_w, 1, 0, 0, H_GTK_WIDGET_REALIZED);
XG_DEFINE_PROCEDURE(GTK_WIDGET_MAPPED, gxg_GTK_WIDGET_MAPPED_w, 1, 0, 0, H_GTK_WIDGET_MAPPED);
XG_DEFINE_PROCEDURE(GTK_WIDGET_VISIBLE, gxg_GTK_WIDGET_VISIBLE_w, 1, 0, 0, H_GTK_WIDGET_VISIBLE);
@@ -45021,16 +44808,7 @@ static void define_functions(void)
XG_DEFINE_PROCEDURE(GTK_WIDGET_SENSITIVE, gxg_GTK_WIDGET_SENSITIVE_w, 1, 0, 0, H_GTK_WIDGET_SENSITIVE);
XG_DEFINE_PROCEDURE(GTK_WIDGET_PARENT_SENSITIVE, gxg_GTK_WIDGET_PARENT_SENSITIVE_w, 1, 0, 0, H_GTK_WIDGET_PARENT_SENSITIVE);
XG_DEFINE_PROCEDURE(GTK_WIDGET_IS_SENSITIVE, gxg_GTK_WIDGET_IS_SENSITIVE_w, 1, 0, 0, H_GTK_WIDGET_IS_SENSITIVE);
- XG_DEFINE_PROCEDURE(GTK_WIDGET_CAN_FOCUS, gxg_GTK_WIDGET_CAN_FOCUS_w, 1, 0, 0, H_GTK_WIDGET_CAN_FOCUS);
XG_DEFINE_PROCEDURE(GTK_WIDGET_HAS_FOCUS, gxg_GTK_WIDGET_HAS_FOCUS_w, 1, 0, 0, H_GTK_WIDGET_HAS_FOCUS);
- XG_DEFINE_PROCEDURE(GTK_WIDGET_CAN_DEFAULT, gxg_GTK_WIDGET_CAN_DEFAULT_w, 1, 0, 0, H_GTK_WIDGET_CAN_DEFAULT);
- XG_DEFINE_PROCEDURE(GTK_WIDGET_HAS_DEFAULT, gxg_GTK_WIDGET_HAS_DEFAULT_w, 1, 0, 0, H_GTK_WIDGET_HAS_DEFAULT);
- XG_DEFINE_PROCEDURE(GTK_WIDGET_HAS_GRAB, gxg_GTK_WIDGET_HAS_GRAB_w, 1, 0, 0, H_GTK_WIDGET_HAS_GRAB);
- XG_DEFINE_PROCEDURE(GTK_WIDGET_RC_STYLE, gxg_GTK_WIDGET_RC_STYLE_w, 1, 0, 0, H_GTK_WIDGET_RC_STYLE);
- XG_DEFINE_PROCEDURE(GTK_WIDGET_COMPOSITE_CHILD, gxg_GTK_WIDGET_COMPOSITE_CHILD_w, 1, 0, 0, H_GTK_WIDGET_COMPOSITE_CHILD);
- XG_DEFINE_PROCEDURE(GTK_WIDGET_APP_PAINTABLE, gxg_GTK_WIDGET_APP_PAINTABLE_w, 1, 0, 0, H_GTK_WIDGET_APP_PAINTABLE);
- XG_DEFINE_PROCEDURE(GTK_WIDGET_RECEIVES_DEFAULT, gxg_GTK_WIDGET_RECEIVES_DEFAULT_w, 1, 0, 0, H_GTK_WIDGET_RECEIVES_DEFAULT);
- XG_DEFINE_PROCEDURE(GTK_WIDGET_DOUBLE_BUFFERED, gxg_GTK_WIDGET_DOUBLE_BUFFERED_w, 1, 0, 0, H_GTK_WIDGET_DOUBLE_BUFFERED);
XG_DEFINE_PROCEDURE(GTK_WIDGET_SET_FLAGS, gxg_GTK_WIDGET_SET_FLAGS_w, 2, 0, 0, H_GTK_WIDGET_SET_FLAGS);
XG_DEFINE_PROCEDURE(GTK_WIDGET_UNSET_FLAGS, gxg_GTK_WIDGET_UNSET_FLAGS_w, 2, 0, 0, H_GTK_WIDGET_UNSET_FLAGS);
XG_DEFINE_PROCEDURE(gtk_widget_destroy, gxg_gtk_widget_destroy_w, 1, 0, 0, H_gtk_widget_destroy);
@@ -46773,7 +46551,7 @@ static void define_functions(void)
XG_DEFINE_PROCEDURE(gdk_window_flush, gxg_gdk_window_flush_w, 1, 0, 0, H_gdk_window_flush);
#endif
-#if HAVE_GTK_TOOL_PALETTE_NEW
+#if HAVE_GTK_ENTRY_GET_TEXT_WINDOW
XG_DEFINE_PROCEDURE(gtk_dialog_get_widget_for_response, gxg_gtk_dialog_get_widget_for_response_w, 2, 0, 0, H_gtk_dialog_get_widget_for_response);
XG_DEFINE_PROCEDURE(gtk_tooltip_set_icon_from_gicon, gxg_gtk_tooltip_set_icon_from_gicon_w, 3, 0, 0, H_gtk_tooltip_set_icon_from_gicon);
XG_DEFINE_PROCEDURE(gtk_viewport_get_bin_window, gxg_gtk_viewport_get_bin_window_w, 1, 0, 0, H_gtk_viewport_get_bin_window);
@@ -46836,6 +46614,16 @@ static void define_functions(void)
XG_DEFINE_PROCEDURE(gdk_screen_get_primary_monitor, gxg_gdk_screen_get_primary_monitor_w, 1, 0, 0, H_gdk_screen_get_primary_monitor);
XG_DEFINE_PROCEDURE(gtk_window_set_mnemonics_visible, gxg_gtk_window_set_mnemonics_visible_w, 2, 0, 0, H_gtk_window_set_mnemonics_visible);
XG_DEFINE_PROCEDURE(gtk_window_get_mnemonics_visible, gxg_gtk_window_get_mnemonics_visible_w, 1, 0, 0, H_gtk_window_get_mnemonics_visible);
+ XG_DEFINE_PROCEDURE(gtk_entry_get_text_window, gxg_gtk_entry_get_text_window_w, 1, 0, 0, H_gtk_entry_get_text_window);
+ XG_DEFINE_PROCEDURE(gtk_entry_get_icon_window, gxg_gtk_entry_get_icon_window_w, 2, 0, 0, H_gtk_entry_get_icon_window);
+ XG_DEFINE_PROCEDURE(gtk_range_set_slider_size_fixed, gxg_gtk_range_set_slider_size_fixed_w, 2, 0, 0, H_gtk_range_set_slider_size_fixed);
+ XG_DEFINE_PROCEDURE(gtk_range_get_slider_size_fixed, gxg_gtk_range_get_slider_size_fixed_w, 1, 0, 0, H_gtk_range_get_slider_size_fixed);
+ XG_DEFINE_PROCEDURE(gtk_range_set_min_slider_size, gxg_gtk_range_set_min_slider_size_w, 2, 0, 0, H_gtk_range_set_min_slider_size);
+ XG_DEFINE_PROCEDURE(gtk_range_get_min_slider_size, gxg_gtk_range_get_min_slider_size_w, 1, 0, 0, H_gtk_range_get_min_slider_size);
+ XG_DEFINE_PROCEDURE(gtk_range_get_range_rect, gxg_gtk_range_get_range_rect_w, 2, 0, 0, H_gtk_range_get_range_rect);
+ XG_DEFINE_PROCEDURE(gtk_range_get_slider_range, gxg_gtk_range_get_slider_range_w, 1, 2, 0, H_gtk_range_get_slider_range);
+ XG_DEFINE_PROCEDURE(gtk_status_icon_set_name, gxg_gtk_status_icon_set_name_w, 2, 0, 0, H_gtk_status_icon_set_name);
+ XG_DEFINE_PROCEDURE(gtk_widget_has_rc_style, gxg_gtk_widget_has_rc_style_w, 1, 0, 0, H_gtk_widget_has_rc_style);
#endif
#if HAVE_CAIRO_CREATE
@@ -47185,6 +46973,7 @@ static void define_functions(void)
XG_DEFINE_PROCEDURE(PANGO_FONT_MAP, gxg_PANGO_FONT_MAP_w, 1, 0, 0, "(PANGO_FONT_MAP obj) casts obj to PANGO_FONT_MAP");
XG_DEFINE_PROCEDURE(PANGO_LAYOUT, gxg_PANGO_LAYOUT_w, 1, 0, 0, "(PANGO_LAYOUT obj) casts obj to PANGO_LAYOUT");
XG_DEFINE_PROCEDURE(G_OBJECT, gxg_G_OBJECT_w, 1, 0, 0, "(G_OBJECT obj) casts obj to G_OBJECT");
+ XG_DEFINE_PROCEDURE(GDK_EVENT, gxg_GDK_EVENT_w, 1, 0, 0, "(GDK_EVENT obj) casts obj to GDK_EVENT");
XG_DEFINE_PROCEDURE(GDK_EVENT_ANY, gxg_GDK_EVENT_ANY_w, 1, 0, 0, "(GDK_EVENT_ANY obj) casts obj to GDK_EVENT_ANY");
XG_DEFINE_PROCEDURE(GDK_EVENT_EXPOSE, gxg_GDK_EVENT_EXPOSE_w, 1, 0, 0, "(GDK_EVENT_EXPOSE obj) casts obj to GDK_EVENT_EXPOSE");
XG_DEFINE_PROCEDURE(GDK_EVENT_NOEXPOSE, gxg_GDK_EVENT_NOEXPOSE_w, 1, 0, 0, "(GDK_EVENT_NOEXPOSE obj) casts obj to GDK_EVENT_NOEXPOSE");
@@ -47286,7 +47075,7 @@ static void define_functions(void)
XG_DEFINE_PROCEDURE(GTK_ENTRY_BUFFER, gxg_GTK_ENTRY_BUFFER_w, 1, 0, 0, "(GTK_ENTRY_BUFFER obj) casts obj to GTK_ENTRY_BUFFER");
#endif
-#if HAVE_GTK_TOOL_PALETTE_NEW
+#if HAVE_GTK_ENTRY_GET_TEXT_WINDOW
XG_DEFINE_PROCEDURE(GTK_SPINNER, gxg_GTK_SPINNER_w, 1, 0, 0, "(GTK_SPINNER obj) casts obj to GTK_SPINNER");
XG_DEFINE_PROCEDURE(GTK_CELL_RENDERER_SPINNER, gxg_GTK_CELL_RENDERER_SPINNER_w, 1, 0, 0, "(GTK_CELL_RENDERER_SPINNER obj) casts obj to GTK_CELL_RENDERER_SPINNER");
XG_DEFINE_PROCEDURE(GTK_TOOL_PALETTE, gxg_GTK_TOOL_PALETTE_w, 1, 0, 0, "(GTK_TOOL_PALETTE obj) casts obj to GTK_TOOL_PALETTE");
@@ -47508,7 +47297,7 @@ static void define_functions(void)
XG_DEFINE_PROCEDURE(GTK_IS_ENTRY_BUFFER, gxg_GTK_IS_ENTRY_BUFFER_w, 1, 0, 0, "(GTK_IS_ENTRY_BUFFER obj): " PROC_TRUE " if obj is a GTK_IS_ENTRY_BUFFER");
#endif
-#if HAVE_GTK_TOOL_PALETTE_NEW
+#if HAVE_GTK_ENTRY_GET_TEXT_WINDOW
XG_DEFINE_PROCEDURE(GTK_IS_SPINNER, gxg_GTK_IS_SPINNER_w, 1, 0, 0, "(GTK_IS_SPINNER obj): " PROC_TRUE " if obj is a GTK_IS_SPINNER");
XG_DEFINE_PROCEDURE(GTK_IS_CELL_RENDERER_SPINNER, gxg_GTK_IS_CELL_RENDERER_SPINNER_w, 1, 0, 0, "(GTK_IS_CELL_RENDERER_SPINNER obj): " PROC_TRUE " if obj is a GTK_IS_CELL_RENDERER_SPINNER");
XG_DEFINE_PROCEDURE(GTK_IS_TOOL_PALETTE, gxg_GTK_IS_TOOL_PALETTE_w, 1, 0, 0, "(GTK_IS_TOOL_PALETTE obj): " PROC_TRUE " if obj is a GTK_IS_TOOL_PALETTE");
@@ -47521,24 +47310,9 @@ static void define_structs(void)
{
XG_DEFINE_READER(height, gxg_height_w, 1, 0, 0);
XG_DEFINE_READER(width, gxg_width_w, 1, 0, 0);
- XG_DEFINE_READER(ref_count, gxg_ref_count_w, 1, 0, 0);
- XG_DEFINE_READER(style, gxg_style_w, 1, 0, 0);
- XG_DEFINE_READER(action_area, gxg_action_area_w, 1, 0, 0);
- XG_DEFINE_READER(vbox, gxg_vbox_w, 1, 0, 0);
- XG_DEFINE_READER(cancel_button, gxg_cancel_button_w, 1, 0, 0);
- XG_DEFINE_READER(ok_button, gxg_ok_button_w, 1, 0, 0);
- XG_DEFINE_READER(white_gc, gxg_white_gc_w, 1, 0, 0);
- XG_DEFINE_READER(black_gc, gxg_black_gc_w, 1, 0, 0);
- XG_DEFINE_READER(function, gxg_function_w, 1, 0, 0);
- XG_DEFINE_READER(keyval, gxg_keyval_w, 1, 0, 0);
- XG_DEFINE_READER(direction, gxg_direction_w, 1, 0, 0);
- XG_DEFINE_READER(button, gxg_button_w, 1, 0, 0);
- XG_DEFINE_READER(is_hint, gxg_is_hint_w, 1, 0, 0);
- XG_DEFINE_READER(state, gxg_state_w, 1, 0, 0);
XG_DEFINE_READER(y, gxg_y_w, 1, 0, 0);
XG_DEFINE_READER(x, gxg_x_w, 1, 0, 0);
- XG_DEFINE_READER(time, gxg_time_w, 1, 0, 0);
- XG_DEFINE_READER(window, gxg_window_w, 1, 0, 0);
+ XG_DEFINE_READER(ref_count, gxg_ref_count_w, 1, 0, 0);
XG_DEFINE_READER(type, gxg_type_w, 1, 0, 0);
XG_DEFINE_ACCESSOR(blue, gxg_blue_w, gxg_set_blue_w, 1, 0, 2, 0);
XG_DEFINE_ACCESSOR(green, gxg_green_w, gxg_set_green_w, 1, 0, 2, 0);
@@ -47565,7 +47339,7 @@ static void define_structs(void)
static void define_integers(void)
{
-#if HAVE_S7
+#if HAVE_SCHEME
#define DEFINE_INTEGER(Name) s7_define_constant(s7, XG_PRE #Name XG_POST, C_TO_XEN_INT(Name))
#define DEFINE_ULONG(Name) s7_define_constant(s7, XG_PRE #Name XG_POST, C_TO_XEN_ULONG(Name))
#else
@@ -49183,7 +48957,7 @@ static void define_integers(void)
static void define_doubles(void)
{
-#if HAVE_S7
+#if HAVE_SCHEME
#define DEFINE_DOUBLE(Name) s7_define_constant(s7, XG_PRE #Name XG_POST, C_TO_XEN_DOUBLE(Name))
#else
#define DEFINE_DOUBLE(Name) XEN_DEFINE(XG_PRE #Name XG_POST, C_TO_XEN_DOUBLE(Name))
@@ -49202,7 +48976,7 @@ static void define_doubles(void)
static void define_atoms(void)
{
-#if HAVE_S7
+#if HAVE_SCHEME
#define DEFINE_ATOM(Name) s7_define_constant(s7, XG_PRE #Name XG_POST, C_TO_XEN_GdkAtom(Name))
#else
#define DEFINE_ATOM(Name) XEN_DEFINE(XG_PRE #Name XG_POST, C_TO_XEN_GdkAtom(Name))
@@ -49232,7 +49006,7 @@ static void define_atoms(void)
static void define_strings(void)
{
-#if HAVE_S7
+#if HAVE_SCHEME
#define DEFINE_STRING(Name) s7_define_constant(s7, XG_PRE #Name XG_POST, s7_make_permanent_string(Name))
#else
#define DEFINE_STRING(Name) XEN_DEFINE(XG_PRE #Name XG_POST, C_TO_XEN_STRING(Name))
@@ -49400,7 +49174,7 @@ void Init_libxg(void)
define_atoms();
define_strings();
XEN_YES_WE_HAVE("xg");
- XEN_DEFINE("xg-version", C_TO_XEN_STRING("02-Jan-10"));
+ XEN_DEFINE("xg-version", C_TO_XEN_STRING("06-Feb-10"));
xg_already_inited = true;
#if HAVE_SCHEME
/* these are macros in glib/gobject/gsignal.h, but we want the types handled in some convenient way in the extension language */
diff --git a/xm-enved.scm b/xm-enved.scm
index 7e1e44c..6a56cb2 100644
--- a/xm-enved.scm
+++ b/xm-enved.scm
@@ -261,29 +261,33 @@
(g_signal_connect_closure_by_id (GPOINTER drawer)
(g_signal_lookup "button_press_event" (G_OBJECT_TYPE (GTK_OBJECT drawer)))
0 (g_cclosure_new (lambda (w e d)
- (let ((ev (GDK_EVENT_BUTTON e)))
- (xe-mouse-press editor (.x ev) (.y ev)))
+ (let* ((ev (GDK_EVENT_BUTTON e))
+ (coords (gdk_event_get_coords ev))
+ (x (cadr coords))
+ (y (caddr coords)))
+ (xe-mouse-press editor x y))
#f)
#f #f)
#f)
(g_signal_connect_closure_by_id (GPOINTER drawer)
(g_signal_lookup "button_release_event" (G_OBJECT_TYPE (GTK_OBJECT drawer)))
0 (g_cclosure_new (lambda (w e d)
- (let ((ev (GDK_EVENT_BUTTON e)))
- (xe-mouse-release editor (.x ev) (.y ev)))
+ (let* ((ev (GDK_EVENT_BUTTON e))
+ (coords (gdk_event_get_coords ev))
+ (x (cadr coords))
+ (y (caddr coords)))
+ (xe-mouse-release editor x y))
#f)
#f #f)
#f)
(g_signal_connect_closure_by_id (GPOINTER drawer)
(g_signal_lookup "motion_notify_event" (G_OBJECT_TYPE (GTK_OBJECT drawer)))
0 (g_cclosure_new (lambda (w e d)
- (let ((ev (GDK_EVENT_MOTION e)))
- (if (= (.is_hint ev) 1)
- (let ((xy (gdk_window_get_pointer (.window ev))))
- (if (not (= (logand (cadddr xy) GDK_BUTTON1_MASK) 0))
- (xe-mouse-drag editor (cadr xy) (caddr xy))))
- (if (not (= (logand (.state ev) GDK_BUTTON1_MASK) 0))
- (xe-mouse-drag editor (.x ev) (.y ev)))))
+ (let* ((ev (GDK_EVENT_MOTION e))
+ (coords (gdk_event_get_coords ev))
+ (x (cadr coords))
+ (y (caddr coords)))
+ (xe-mouse-drag editor x y))
#f)
#f #f)
#f)
diff --git a/xm.c b/xm.c
index 0f217eb..950d32b 100644
--- a/xm.c
+++ b/xm.c
@@ -388,7 +388,7 @@ static void xm_obj_free(XEN obj)
}
#endif
-#if HAVE_S7
+#if HAVE_SCHEME
static void xm_obj_free(void *val)
{
free(val);
@@ -407,7 +407,7 @@ static XEN make_xm_obj(void *ptr)
static void define_xm_obj(void)
{
-#if HAVE_S7
+#if HAVE_SCHEME
xm_obj_tag = XEN_MAKE_OBJECT_TYPE("<XmObj>", NULL, xm_obj_free, s7_equalp_xm, NULL, NULL, NULL, NULL, NULL, NULL);
#else
xm_obj_tag = XEN_MAKE_OBJECT_TYPE("XmObj", sizeof(void *));
@@ -25310,7 +25310,7 @@ static xm_resource_t resource_type(const char *name)
static void define_strings(void)
{
-#if HAVE_S7
+#if HAVE_SCHEME
#define DEFINE_STRING(Name) s7_define_constant(s7, XM_PREFIX #Name XM_POSTFIX, s7_make_permanent_string(Name))
#define DEFINE_RESOURCE(Name, Type) \
s7_define_constant(s7, XM_PREFIX #Name XM_POSTFIX, s7_make_permanent_string(Name)); \
@@ -26210,7 +26210,7 @@ The types are defined in xm.c around line 679. To add XmNhiho as an integer: \n
static void define_integers(void)
{
-#if HAVE_S7
+#if HAVE_SCHEME
#define DEFINE_INTEGER(Name) s7_define_constant(s7, XM_PREFIX #Name XM_POSTFIX, C_TO_XEN_INT(Name))
#define DEFINE_ULONG(Name) s7_define_constant(s7, XM_PREFIX #Name XM_POSTFIX, C_TO_XEN_ULONG(Name))
#else
@@ -27850,7 +27850,7 @@ static void define_pointers(void)
{
#if HAVE_MOTIF
-#if HAVE_S7
+#if HAVE_SCHEME
#define DEFINE_POINTER(Name) s7_define_constant(s7, XM_PREFIX #Name XM_POSTFIX, C_TO_XEN_WidgetClass(Name))
#else
#define DEFINE_POINTER(Name) XEN_DEFINE(XM_PREFIX #Name XM_POSTFIX, C_TO_XEN_WidgetClass(Name))
@@ -27947,7 +27947,7 @@ static void define_pointers(void)
static void define_Atoms(void)
{
-#if HAVE_S7
+#if HAVE_SCHEME
#define DEFINE_ATOM(Name) s7_define_constant(s7, XM_PREFIX #Name XM_POSTFIX, C_TO_XEN_Atom(Name))
#else
#define DEFINE_ATOM(Name) XEN_DEFINE(XM_PREFIX #Name XM_POSTFIX, C_TO_XEN_Atom(Name))