diff --git a/extensions/Makefile b/extensions/Makefile deleted file mode 100644 index 0c54b2fefb22d000bf30678b14bfba453432234e..0000000000000000000000000000000000000000 --- a/extensions/Makefile +++ /dev/null @@ -1,124 +0,0 @@ -#==============================================================================# -# -# Centralized build system for "extensions". -# -# see for instructions: http://puredata.org/docs/developer/build -# <hans@at.or.at> -# -#==============================================================================# - -CWD := $(shell pwd) - -# these are designed to be overridden by the packages/Makefile -cvs_root_dir := $(shell cd $(CWD)/.. && pwd) -DESTDIR = $(CWD)/build/ -BUILDLAYOUT_DIR = $(cvs_root_dir)/packages - -# default target -all: gripd - -include $(BUILDLAYOUT_DIR)/Makefile.buildlayout - -#==============================================================================# -# -# OVERARCHING BUILD TARGETS -# -#==============================================================================# - -# clean up after everything is installed -final_setup: - chmod -R ugo-w $(pddocdir) - -install: $(examplesdir) $(helpdir) $(manualsdir) $(objectsdir) $(readmesdir) \ -gripd_install ix_install - @echo " " - @echo "extensions install succeeded!" - -#==============================================================================# -# -# PROJECT-SPECIFIC TARGETS -# -#==============================================================================# - -#------------------------------------------------------------------------------# -# GRIPD -GRIPD_NAME = gripd -gripd: - make -C $(extensions_src)/gripd/src -f Makefile.Linux all - -gripd_install: - install -d $(helpdir) - install -d $(objectsdir) -# it doesn't compile automatically yet <hans@at.or.at> -# install -p $(extensions_src)/gripd/*.$(EXTENSION) \ -# $(extensions_src)/gripd/*.so \ -# $(objectsdir) - install -p $(extensions_src)/gripd/examples/gripd.pd \ - $(helpdir)/gripd-help.pd -# install -d $(manualsdir)/$(GRIPD_NAME) - install -p $(extensions_src)/gripd/README.txt \ - $(readmesdir)/$(GRIPD_NAME).txt - install -d $(examplesdir)/$(GRIPD_NAME) - install -p $(extensions_src)/gripd/examples/*.* \ - $(examplesdir)/$(GRIPD_NAME) - - -gripd_clean: - make -C $(extensions_src)/gripd/src clean - - - -#------------------------------------------------------------------------------# -# IX -IX_NAME = ix -ix_install: - install -d $(objectsdir)/$(IX_NAME) - install -p $(extensions_src)/gui/ix/toxy/*.wid $(objectsdir)/$(IX_NAME) -# install -d $(manualsdir)/$(IX_NAME) -# install -d $(readmesdir)/$(IX_NAME) -# install -p $(extensions_src)/gui/ix/toxy/README \ -# $(readmesdir)/$(IX_NAME).txt - install -d $(examplesdir)/$(IX_NAME) - install -p $(extensions_src)/gui/ix/toxy/*.pd $(examplesdir)/$(IX_NAME) - - - -#==============================================================================# -# -# DEVELOPER'S TARGETS -# -#==============================================================================# - -# make the symlinks necessary to simulate the installed environment -devsymlinks: - -#==============================================================================# -# -# CLEAN TARGETS -# -#==============================================================================# - -# the destination-specific clean targets are in Makefile.buildlayout -clean: install_clean - -distclean: clean cruft_clean - - - - - -test_locations: - @echo "PD_VERSION: $(PD_VERSION)" - @echo "PACKAGE_VERSION: $(PACKAGE_VERSION)" - @echo "CWD $(CWD)" - @echo "DESTDIR $(DESTDIR)" - @echo "PREFIX $(prefix)" - @echo "BINDIR $(bindir)" - @echo "LIBDIR $(libdir)" - @echo "OBJECTSDIR $(objectsdir)" - @echo "PDDOCDIR $(pddocdir)" - @echo "LIBPDDIR $(libpddir)" - @echo "LIBPDBINDIR $(libpdbindir)" - @echo "HELPDIR $(helpdir)" - @echo "MANUALSDIR $(manualsdir)" - @echo "EXAMPLESDIR $(examplesdir)" diff --git a/extensions/gripd/.xvpics/joystickA.xpm b/extensions/gripd/.xvpics/joystickA.xpm deleted file mode 100644 index 4b12dd600d23a4a01feb80a717c3d5ebd9241187..0000000000000000000000000000000000000000 Binary files a/extensions/gripd/.xvpics/joystickA.xpm and /dev/null differ diff --git a/extensions/gripd/.xvpics/midiA.xpm b/extensions/gripd/.xvpics/midiA.xpm deleted file mode 100644 index 9865cbad56f76f549daf3e48707d28bb32dd836f..0000000000000000000000000000000000000000 Binary files a/extensions/gripd/.xvpics/midiA.xpm and /dev/null differ diff --git a/extensions/gripd/README.txt b/extensions/gripd/README.txt deleted file mode 100644 index d00f57753f3c57a5efb8855336cf9cc963b44ca9..0000000000000000000000000000000000000000 --- a/extensions/gripd/README.txt +++ /dev/null @@ -1,181 +0,0 @@ -GrIPD: Graphical Interface for Pure Data ----------------------------------------- - -v0.1.1 - --What is GrIPD- -GrIPD is a cross-platform extension to Miller Puckette's Pure Data -software that allows the one to design custom graphical user -interfaces for Pd patches. GrIPD is not a replacement for the Pd -Tcl/Tk GUI, but instead is intended to allow one to create a front end -to a Pd patch. The concept is to create your PD patch normally and -then your GUI using GrIPD. You can then lauch Pd using the -nogui -command line argument (although this is certainly not necessary) so -only your custom front end will be displayed. GrIPD, itself, consists -of two parts: the "gripd" Pd object and an external GUI -window/editor. The Pd object was written in C and the external GUI was -written in Python using the wxWindows. GrIPD is released under the -GNU General Public License. - - --How GrIPD works- -The two parts of GrIPD communicate via TCP/IP sockets so they can run -on one machine or on separate machines over a network; so, for -example, the GUI could be on a laptop on stage controlling or -displaying info from the Pd audio engine in the house next to the -mixer. The communication works through Pd's implimentation of -"send" and "receive" objects. Basically, each GrIPD control object has -a send and receive symbol associated with it. - - --Supported platforms- -GrIPD is currently available for Linux/GTK+ and MS Windows -platforms. It may work on other Unix's, but as of yet it has not been -tested. Since wxPython and C are both highly portable, most of GrIPD -is as well. The only issues should be the C socket and multi-process -code. - - --Requirements- - For Win32: - * Pd - For Linux: - * Pd - * GTK+ - - To compile under Win32: - * Python (v2.2 or later) - * wxPython- wxWindows for Python (v2.4.0 or later) - * a C/C++ compiler - * to make a stand-alone .exe file you'll also need - py2exe v0.3.1 (http://starship.python.net/crew/theller/py2exe/) - - To compile under Linux: - * Python (v2.2 or later) - * wxPython- wxWindows for Python (v2.4.0 or later) - * GTK+ and wxGTK - * C/C++ compiler - * to make a stand-alone binary executable you'll also need - Installer v5b4 (http://www.mcmillan-inc.com/install5_ann.html) - -All of the above are, of course, free. -For Windows: the package includes compiled binaries of the gripd.dll Pd object - and the gripd.exe GUI executeable. -For Linux: stand-alone binary packages are available for x86 the architecture - with either OSS or ALSA MIDI support. - - --Installation- - -Windows: - 1) Unzip contents of gripd-*.zip to .\pd\gripd\ - 2) Put gripd.dll where Pd can find it - To compile from source - 1) In .\pd\gripd\src: - a) edit makefile - b) run: nmake gripd_nt - 2) gripd.exe is included, but to recompile run: - python gripdSetup.py py2exe -w -O2 --icon icon.pic - -Linux: - 1) Ungzip/untar contents of gripd-*.tar.gz to ./pd/gripd/ - 2) Put gripd.pd_linux where Pd can find it - To compile from source: - 2) In ./pd/gripd/src - a) edit makefile - b) run: make gripd_linux - 3) to build a stand-alone binary executable of the GrIPD GUI run: - python -OO Build.py gripd.spec (Build.py is part of Installer v5b4) - -Be sure to have gripd.dll or gripd.pd_linux in your Pd path - --Using GrIPD- -To use GrIPD, launch Pd with the -lib gripd command line -argument, and put the gripd Pd object on your patch; it's scope will be -global throughout all canvases. Then send it an "open <optional -filename>" message to launch the GUI (gripd.exe or gripd.py). -You can also send a "open_locked <filename>" message which will open the -GUI in locked mode. This will prevent any changes from being made to -the GUI itself. - -You may need to set the path to gripd.py or gripd.exe by sending a -"set_path <path>" message to the gripd Pd object. For Windows users not using -gripd.exe, you may also have to set the path to python.exe by sending a -"set_python_path <path>" message. - -You may also send a "connect" message to set the gripd Pd object to wait for -an incomming connection and launch gripd.exe or gripd.py separately. - -If the path supplied to either an "open" message or a "set_path" message -is relative (i.e. begins with ./ or ../) they will be considered relative -to the directory containing the Pd executable file (pd.exe for Windows and -pd for Linux). This keeps behavior consistent no matter where Pd is launched -from. - -If the GUI is launched from PD, When the GUI window is closed you can re-open -it by sending the gripd Pd object a "show" message. You can also hide it by -sending the gripd Pd object a "hide" message. - -The GrIPD GUI itself has two modes: "Performance Mode" and "Edit -Mode". In "Edit Mode" you can add and remove controls using the -"Edit" menu, move them around by selecting them and dragging them by -their tag with the mouse or use the arrow keys (note: ctrl+<arrow key> -will move controls a greater distance). You can edit a controls -properties by either selecting "Edit" from the "Edit" menu or -right-clicking the control's tab. In "Performance Mode" the controls -properties are locked and when activated (e.g. clicked, slid, checked, -etc.) they will send a message via their send symbol. Conversely, -they will receive messages sent within the Pd patch using their -receive symbol. Look at gripd.pd and gripdExamples.pd. - -GrIPD can forward MIDI input to Pd from up to two devices. To enable MIDI -function, select "Enable MIDI" from the "Configure" menu. GrIPD will send -note information via the "midi<n>note" symbol where <n> is either 0 or 1. -It will also send controller information via "midi<n>ctl" and program change -information via "midi<n>pgm". - -GrIPD also allows for the use of up to two joysticks. To enable joystick -function, select "Enable Joystick" from the "Configure" menu. Joystick -axis and button information are sent to Pd with the send symbols -"joy<n>axis<m>" and "joy<n>button<m>" where <n> is 0 or 1 and ,<m> is -0,1,... for the number of axes and buttons your joystick supports. For -example, to read from joystick 0 axis 0, put a "r joy0axis0" object in your -Pd patch. Axes will send integers in a range that will depend on your -joystick, and buttons will send 1 when depressed and 0 when released. - -GrIPD will also catch keystrokes and send the ASCII value to Pd while in -performance mode via a "keystroke" send symbol. Simply put a "r keystroke" -object in your Pd patch. - -Note about duplicating radio buttons: -When creating radio buttons, the first button created in a group is the -group marker. Duplicating any of the buttons in a group other than the -group marker button will add a button of the last group created. -Duplicating the group marker button will start a new group. - -Note about image paths: -When a path to an image is relative (i.e. begins with ./ or ../), it is -considered relative to the .gpd file containing the image. If no file -has been opened or saved, the path is considered relative to the directory -containing the gripd executable file (gripd.exe for Windows and gripd.py -for Linux). It is therefore recommended that all images used in a GUI be -placed in a directory directly lower than the directory containing the .gpd -file. For example if your .gpd file is in c:\pd-guis put all images in -c:\pd-guis\images. This will make distributing GUIs much simpler. - -Note about MIDI and joystick input: -If problems occur due to MIDI or joystick input, you can disable them by -editing gripd.opt - --New in 0.1.1 -Added graph control -Added openpanel and savepanel -added MIDI and joystick activity blinking -Fixed zombie bug -Fixed multiple opens bug -Fixed checkbox and radio buttons bug -Fixed rectangle redrawing problem -Fixed selecting inside rectangle problem - --Contact- -Drop me a line at jsarlo@ucsd.edu diff --git a/extensions/gripd/connect.xpm b/extensions/gripd/connect.xpm deleted file mode 100644 index 34f282ca4065c7d82134ece35b9e4430e8c28b89..0000000000000000000000000000000000000000 --- a/extensions/gripd/connect.xpm +++ /dev/null @@ -1,27 +0,0 @@ -/* XPM */ -static char * connect_xpm[] = { -"21 16 8 1", -" c None", -". c #000000", -"+ c #00FF04", -"@ c #BFBFBF", -"# c #FEFEFE", -"$ c #00FEFE", -"% c #FF0000", -"& c #0000FE", -" .. ........ ", -" .+. .@@@@@@@@.", -" .....++. .@......@.", -" .+++++++..@.##$$.@.", -" .+...++. .@.#%&#.@.", -" .+. .+. .@.$#%#.@.", -" .+. .. .@......@.", -" ........ .@@@@@@@@.", -".@@@@@@@@. ........ ", -".@......@. .. .+. ", -".@.#&$$.@. .+. .+. ", -".@.#%&#.@. .++...+. ", -".@.$###.@..+++++++. ", -".@......@. .++..... ", -".@@@@@@@@. .+. ", -" ........ .. "}; diff --git a/extensions/gripd/connectX.xpm b/extensions/gripd/connectX.xpm deleted file mode 100644 index fd4f27b6c97531105f2c6bf084acc0148b5cf735..0000000000000000000000000000000000000000 --- a/extensions/gripd/connectX.xpm +++ /dev/null @@ -1,24 +0,0 @@ -/* XPM */ -static char * connectX_xpm[] = { -"21 16 5 1", -" c None", -". c #000000", -"+ c #BFBFBF", -"@ c #FF0000", -"# c #3F3F3F", -" ........ ", -" .. .++++++++.", -" ....@@. .+......+.", -" .@@@@@. .+.####.+.", -" .@..@@. .+.####.+.", -" .@. .. .+.####.+.", -" .@. .+......+.", -" ........ .++++++++.", -".++++++++. ........ ", -".+......+. .@. ", -".+.####.+. .. .@. ", -".+.####.+. .@@..@. ", -".+.####.+. .@@@@@. ", -".+......+. .@@.... ", -".++++++++. .. ", -" ........ "}; diff --git a/extensions/gripd/examples/clickme.jpg b/extensions/gripd/examples/clickme.jpg deleted file mode 100644 index 50419c31a24f5da4ae2ba0b8e774c0faa9528d06..0000000000000000000000000000000000000000 Binary files a/extensions/gripd/examples/clickme.jpg and /dev/null differ diff --git a/extensions/gripd/examples/fmlogo.gif b/extensions/gripd/examples/fmlogo.gif deleted file mode 100644 index 9fe550386489aac699eeef5e05448e349f817c01..0000000000000000000000000000000000000000 Binary files a/extensions/gripd/examples/fmlogo.gif and /dev/null differ diff --git a/extensions/gripd/examples/fmsynth.gpd b/extensions/gripd/examples/fmsynth.gpd deleted file mode 100644 index e6b25b437f8b93b6167994b6ba7e18ccc0c30e3b..0000000000000000000000000000000000000000 --- a/extensions/gripd/examples/fmsynth.gpd +++ /dev/null @@ -1,442 +0,0 @@ -328 -467 -#c0c0c0 -localhost -32781|1|2|5|10|0|1|FM Synth|0|0|0|0|1|5|0 -4 - -16 -57 -294 -259 -srectangle0 -rrectangle0 -#c0c0c0 -#000080 -22 -74 -93 -90 -0 -Arial -!END-CONTROL -5 -Carrier Freq -38 -105 -67 -20 -stext0 -rtext0 -#c0c0c0 -#000000 -12 -74 -90 -90 -0 -Arial -!END-CONTROL -2 -100 -34 -124 -24 -139 -carrier -rslider0 -#c0c0c0 -#000000 -8 -74 -90 -90 -0 -MS Sans Serif -100 -5000 -1 -!END-CONTROL -5 -Mod Freq -141 -105 -59 -20 -stext0 -rtext0 -#c0c0c0 -#000000 -12 -74 -90 -90 -0 -Arial -!END-CONTROL -2 -0 -140 -124 -24 -139 -mod -rslider0 -#c0c0c0 -#000000 -8 -74 -90 -90 -0 -MS Sans Serif -0 -500 -1 -!END-CONTROL -5 -Index -235 -105 -52 -20 -stext0 -rtext0 -#c0c0c0 -#000000 -12 -74 -90 -90 -0 -Arial -!END-CONTROL -2 -0 -243 -124 -24 -139 -index -rslider0 -#c0c0c0 -#000000 -8 -74 -90 -90 -0 -MS Sans Serif -0 -1000 -1 -!END-CONTROL -5 -Amplitude: -34 -340 -73 -20 -stext2 -rtext2 -#c0c0c0 -#000000 -12 -74 -90 -90 -0 -Arial -!END-CONTROL -3 -0 -35 -364 -140 -24 -amp -rslider1 -#c0c0c0 -#000000 -8 -74 -90 -90 -0 -MS Sans Serif -0 -100 -1 -!END-CONTROL -14 -./fmlogo.gif -77 -5 -180 -48 -simage3 -rimage3 -#c0c0c0 -#000000 -8 -74 -90 -90 -0 -MS Shell Dlg -!END-CONTROL -14 -./scale.gif -58 -124 -23 -139 -simage7 -rimage7 -#c0c0c0 -#000000 -8 -74 -90 -90 -0 -MS Shell Dlg -!END-CONTROL -14 -./scale.gif -164 -124 -23 -139 -simage7 -rimage7 -#c0c0c0 -#000000 -8 -74 -90 -90 -0 -MS Shell Dlg -!END-CONTROL -14 -./scale.gif -268 -124 -23 -139 -simage7 -rimage7 -#c0c0c0 -#000000 -8 -74 -90 -90 -0 -MS Shell Dlg -!END-CONTROL -14 -./scale2.gif -36 -389 -139 -23 -simage48 -rimage48 -#c0c0c0 -#000000 -8 -74 -90 -90 -0 -MS Shell Dlg -!END-CONTROL -4 - -16 -309 -294 -124 -srectangle10 -rrectangle10 -#c0c0c0 -#000000 -8 -74 -90 -90 -0 -MS Shell Dlg -!END-CONTROL -9 -100 -36 -267 -34 -20 -stextbox0 -carrier -#d6dcf8 -#000000 -8 -74 -90 -90 -0 -MS Shell Dlg -!END-CONTROL -9 -0 -142 -267 -34 -20 -stextbox0 -mod -#d6dcf8 -#000000 -8 -74 -90 -90 -0 -MS Shell Dlg -!END-CONTROL -9 -0 -245 -267 -34 -20 -stextbox0 -index -#d6dcf8 -#000000 -8 -74 -90 -90 -0 -MS Shell Dlg -!END-CONTROL -9 -0 -113 -337 -34 -20 -stextbox0 -amp -#d6dcf8 -#000000 -8 -74 -90 -90 -0 -MS Shell Dlg -!END-CONTROL -14 -./screw.gif -3 -2 -19 -19 -simage5 -rimage5 -#c0c0c0 -#000000 -8 -74 -90 -90 -0 -MS Shell Dlg -!END-CONTROL -14 -./screw.gif -305 -2 -19 -19 -simage5 -rimage5 -#c0c0c0 -#000000 -8 -74 -90 -90 -0 -MS Shell Dlg -!END-CONTROL -14 -./screw.gif -305 -438 -19 -19 -simage5 -rimage5 -#c0c0c0 -#000000 -8 -74 -90 -90 -0 -MS Shell Dlg -!END-CONTROL -14 -./screw.gif -3 -438 -19 -19 -simage5 -rimage5 -#c0c0c0 -#000000 -8 -74 -90 -90 -0 -MS Shell Dlg -!END-CONTROL -1 -Mute -216 -381 -81 -35 -mute -rtoggle0 -#c0c0c0 -#000000 -14 -74 -90 -90 -0 -Arial -!END-CONTROL -1 -On/Off -216 -333 -81 -35 -onoff -rtoggle0 -#c0c0c0 -#000000 -14 -74 -90 -90 -0 -Arial -!END-CONTROL diff --git a/extensions/gripd/examples/gripd.gpd b/extensions/gripd/examples/gripd.gpd deleted file mode 100644 index 4aa7645c861d8dadc7aa5bdb462bc308eecad21f..0000000000000000000000000000000000000000 --- a/extensions/gripd/examples/gripd.gpd +++ /dev/null @@ -1,380 +0,0 @@ -493 -433 -#c3c3c3 -localhost -3490|/dev/js0|/dev/js1|5|10|1|1|GrIPD|0|0|0|0|1|5|1 -4 -rectangle0 -15 -5 -462 -358 -srectangle0 -rrectangle0 -#828282 -#303030 -12 -74 -90 -90 -0 - -!END-CONTROL -0 -button0 -37 -37 -80 -22 -sbutton0 -rbutton0 -#828282 -#303030 -12 -74 -90 -90 -0 - -!END-CONTROL -1 -toggle0 -59 -75 -80 -22 -stoggle0 -rtoggle0 -#828282 -#303030 -12 -74 -90 -90 -0 - -!END-CONTROL -2 -100 -271 -31 -30 -80 -sslider0 -rslider0 -#828282 -#303030 -12 -74 -90 -90 -0 - -0 -100 -1 -!END-CONTROL -3 -0 -276 -110 -80 -30 -sslider1 -rslider1 -#828282 -#303030 -12 -74 -90 -90 -0 - -0 -100 -1 -!END-CONTROL -6 -0 -33 -225 -30 -80 -sgauge0 -rgauge0 -#a2a2a2 -#303030 -12 -74 -90 -90 -0 - -0 -100 -0 -!END-CONTROL -7 -0 -34 -313 -80 -30 -sgauge1 -rgauge1 -#a2a2a2 -#303030 -12 -74 -90 -90 -0 - -0 -100 -0 -!END-CONTROL -8 -checkbox0 -109 -232 -85 -24 -scheckbox0 -rcheckbox0 -#828282 -#303030 -12 -74 -90 -90 -0 - -!END-CONTROL -5 -text0 -167 -34 -79 -14 -stext0 -rtext0 -#828282 -#303030 -12 -74 -90 -90 -0 - -!END-CONTROL -10 -0 -96 -113 -15 -26 -sspinbutton0 -rspinbutton0 -#c3c3c3 -#000000 -12 -74 -90 -90 -0 - -0 -100 -0 -!END-CONTROL -9 - -41 -183 -80 -22 -stextbox0 -rtextbox0 -#ffffff -#000000 -12 -74 -90 -90 -0 - -!END-CONTROL -5 -<- "Enter" to send -118 -185 -120 -15 -stext1 -rtext1 -#c3c3c3 -#000000 -12 -74 -90 -90 -0 - -!END-CONTROL -11 - -265 -155 -100 -100 -smousearea0 -rmousearea0 -#9a9a9a -#000000 -12 -74 -90 -90 -0 - -!END-CONTROL -5 -<- Left click and -363 -170 -96 -19 -stext2 -rtext2 -#c3c3c3 -#000000 -12 -74 -90 -90 -0 - -!END-CONTROL -5 -drag to track -380 -185 -80 -16 -stext4 -rtext4 -#c3c3c3 -#000000 -12 -74 -90 -90 -0 - -!END-CONTROL -5 -mouse position -384 -200 -83 -22 -stext5 -rtext5 -#c3c3c3 -#000000 -12 -74 -90 -90 -0 - -!END-CONTROL -13 -radiobutton0 -164 -87 -93 -24 -sradiobutton0 -rradiobutton0 -#c3c3c3 -#000000 -12 -74 -90 -90 -0 - -!END-CONTROL -12 -radiobutton1 -164 -112 -93 -24 -sradiobutton1 -rradiobutton1 -#c3c3c3 -#000000 -12 -74 -90 -90 -0 - -!END-CONTROL -12 -radiobutton2 -164 -137 -93 -24 -sradiobutton2 -rradiobutton2 -#c3c3c3 -#000000 -12 -74 -90 -90 -0 - -!END-CONTROL -14 -./clickme.jpg -178 -276 -192 -71 -simage0 -rimage0 -#dddddd -#000000 -12 -74 -90 -90 -0 - -!END-CONTROL -15 - -366 -26 -100 -100 -sgraph0 -rgraph0 -#000000 -#00ff00 -12 -74 -90 -90 -0 - --1.0 -1.0 -[100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -!END-CONTROL diff --git a/extensions/gripd/examples/gripd.pd b/extensions/gripd/examples/gripd.pd deleted file mode 100644 index 42c75edca9f1b3658544356ef05f1e50065e49c1..0000000000000000000000000000000000000000 --- a/extensions/gripd/examples/gripd.pd +++ /dev/null @@ -1,73 +0,0 @@ -#N canvas 420 51 695 867 10; -#X obj 22 747 gripd; -#X msg 23 40 connect; -#X msg 38 75 disconnect; -#X msg 117 445 poll_send 5; -#X msg 124 470 poll_receive 5; -#X msg 126 501 set_path ../gripd; -#X msg 89 631 set_python_path c:/program files/python; -#X text 369 661 "c:/program files/python" by default.; -#X text 372 678 Linux: Does nothing.; -#X text 229 471 Time in ms to poll for info from GUI.; -#X text 199 446 Time in ms to poll for sending info to GUI.; -#X text 62 747 Takes one optional argument to specify a port.; -#X text 82 15 all backslashes must be "/".; -#X text 19 2 Windows: For paths \, spaces are ok \, but; -#X text 120 67 Set gripd object to stop waiting for a connection.; -#X text 121 80 Also closes gripd GUI opened by "open <filename>".; -#X text 86 34 Set gripd object to wait for a connection (Not needed -with "open" message.); -#X floatatom 22 802 5 0 0 0 - - -; -#X msg 105 376 lock; -#X msg 115 407 unlock; -#X msg 49 112 open ../gripd/examples/gripd.gpd; -#X msg 52 219 open_locked ../gripd/examples/gripd.gpd; -#X text 144 376 Set GUI to lock mode; -#X text 164 407 Set GUI to normal (editable) mode; -#X text 283 168 Relative paths are relative to the directory; -#X text 283 180 containing PD executable.; -#X text 255 568 Relative paths are relative to the directory; -#X text 254 583 containing PD executable.; -#X text 68 803 left outlet: 1 on connect \, 0 on disconnect; -#X floatatom 52 780 5 0 0 0 - - -; -#X text 96 781 right outlet: 1 when shown \, 0 when hidden; -#X msg 59 248 show; -#X msg 68 276 hide; -#X text 96 249 show GUI window when hidden; -#X text 106 275 hide GUI window when shown; -#X text 372 645 Normally not needed (used for gripd.py); -#X text 371 629 Windows: Path to directory containing python.exe.; -#X text 283 108 Open gripd GUI and optional .gpd file \, and connect. -; -#X text 330 219 Open gripd GUI in locked mode; -#X text 348 135 If it fails tries gripd.py via python.exe.; -#X text 284 121 Windows: first tries to execute gripd.exe.; -#X text 255 503 Path to directory containing gripd executable; -#X text 255 519 "../gripd" by default; -#X text 254 535 Windows: sets path to file gripd.exe (and gripd.py). -; -#X text 255 552 Linux: sets path to file gripd (symlink to gripd.py). -; -#X text 284 155 Linux: executes file gripd; -#X msg 79 309 openpanel; -#X msg 89 340 savepanel; -#X text 156 340 open a save file dialog and send file to savepanel -receive symbol; -#X text 152 303 open an open file dialog and send file to openpanel -receive symbol; -#X connect 0 0 17 0; -#X connect 0 1 29 0; -#X connect 1 0 0 0; -#X connect 2 0 0 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 5 0 0 0; -#X connect 6 0 0 0; -#X connect 18 0 0 0; -#X connect 19 0 0 0; -#X connect 20 0 0 0; -#X connect 21 0 0 0; -#X connect 31 0 0 0; -#X connect 32 0 0 0; -#X connect 46 0 0 0; -#X connect 47 0 0 0; diff --git a/extensions/gripd/examples/gripdExamples.pd b/extensions/gripd/examples/gripdExamples.pd deleted file mode 100644 index 950cfa3f1abb67bfb95b432f8d7504cbe18f06cb..0000000000000000000000000000000000000000 --- a/extensions/gripd/examples/gripdExamples.pd +++ /dev/null @@ -1,247 +0,0 @@ -#N canvas 249 58 823 654 10; -#X obj 19 198 r sbutton0; -#X obj 19 177 s rbutton0; -#X obj 138 176 s rtoggle0; -#X obj 138 197 r stoggle0; -#X msg 205 151 bang; -#X msg 243 151 New label; -#X msg 19 154 New label; -#X msg 170 151 1; -#X msg 138 151 0; -#X obj 23 278 s rslider0; -#X obj 23 299 r sslider0; -#X floatatom 23 257 4 0 0 0 - - -; -#X floatatom 23 320 4 0 0 0 - - -; -#X floatatom 110 257 4 0 0 0 - - -; -#X floatatom 110 320 4 0 0 0 - - -; -#X obj 110 278 s rslider1; -#X obj 110 299 r sslider1; -#X floatatom 215 257 4 0 0 0 - - -; -#X floatatom 215 299 4 0 0 0 - - -; -#X obj 215 278 s rgauge0; -#X obj 215 320 s rgauge1; -#X obj 293 283 s rtext0; -#X msg 334 262 New label; -#X floatatom 25 361 4 0 0 0 - - -; -#X floatatom 25 424 4 0 0 0 - - -; -#X obj 25 382 s rspinbutton0; -#X obj 25 403 r sspinbutton0; -#X floatatom 152 360 4 0 0 0 - - -; -#X obj 152 381 s rtextbox0; -#X msg 194 360 New text; -#X obj 152 403 r stextbox0; -#X floatatom 286 262 4 0 0 0 - - -; -#X obj 378 356 r smousearea0; -#X obj 324 406 change; -#X obj 375 405 change; -#X floatatom 324 427 4 0 0 0 - - -; -#X floatatom 375 426 4 0 0 0 - - -; -#X floatatom 697 45 7 0 0 0 - - -; -#X floatatom 698 83 5 0 0 0 - - -; -#X obj 17 480 r sradiobutton0; -#X obj 137 501 s rradiobutton0; -#X msg 137 480 bang; -#X msg 137 522 bang; -#X msg 137 564 bang; -#X obj 137 597 s rradiobutton2; -#X obj 137 543 s rradiobutton1; -#X obj 17 522 r sradiobutton1; -#X obj 17 566 r sradiobutton2; -#X obj 698 62 r joy0button0; -#X floatatom 21 131 5 0 0 0 - - -; -#X obj 697 24 r joy0axis0; -#X obj 588 23 r keystroke; -#X obj 616 519 s rimage0; -#X msg 628 495 ./clickme.jpg; -#X text 615 558 relative to directory; -#X text 615 576 containing .gpd file; -#X msg 616 472 ./poof.jpg; -#X text 615 594 Must use ./ or ../ to; -#X text 615 612 specify a relative path; -#X text 252 6 <- click here to open GUI; -#X text 615 539 Relative image paths are; -#X text 256 45 relative to directory; -#X text 256 81 Must use ./ or ../ to; -#X text 256 99 specify a relative path; -#X text 256 26 Relative paths are; -#X text 255 62 containing PD executable; -#X obj 378 377 unpack f f f f; -#X floatatom 426 405 4 0 0 0 - - -; -#X floatatom 503 405 4 0 0 0 - - -; -#X text 324 442 x \, y position; -#X text 426 421 0 - left; -#X text 426 432 1 - middle; -#X text 426 443 2 - right; -#X text 504 421 1 - down; -#X text 504 432 0 - up; -#X floatatom 76 110 5 0 0 0 - - -; -#X obj 588 45 unpack; -#X floatatom 588 72 7 0 0 0 - - -; -#X floatatom 644 72 5 0 0 0 - - -; -#X msg 39 29 show; -#X msg 76 29 hide; -#X obj 532 225 r midi0note; -#X obj 532 250 unpack f f f; -#X floatatom 532 275 5 0 0 0 - - -; -#X floatatom 575 275 5 0 0 0 - - -; -#X floatatom 618 275 5 0 0 0 - - -; -#X floatatom 659 274 5 0 0 0 - - -; -#X floatatom 702 274 5 0 0 0 - - -; -#X obj 659 224 r midi0ctl; -#X floatatom 533 200 5 0 0 0 - - -; -#X floatatom 576 200 5 0 0 0 - - -; -#X obj 533 175 unpack; -#X obj 533 150 r midi0pgm; -#X text 63 131 <- connection status; -#X text 116 108 <- shown or hidden; -#X msg 262 360 bang; -#X text 298 361 <- clear; -#X obj 326 536 change; -#X obj 377 535 change; -#X floatatom 326 557 4 0 0 0 - - -; -#X floatatom 377 556 4 0 0 0 - - -; -#X obj 380 507 unpack f f f f; -#X floatatom 428 535 4 0 0 0 - - -; -#X floatatom 505 535 4 0 0 0 - - -; -#X text 326 572 x \, y position; -#X text 428 551 0 - left; -#X text 428 562 1 - middle; -#X text 428 573 2 - right; -#X text 506 551 1 - down; -#X text 506 562 0 - up; -#X obj 380 483 r simage0; -#X msg 21 6 open ../gripd/examples/gripd.gpd; -#X obj 659 249 unpack f f f; -#X floatatom 742 274 5 0 0 0 - - -; -#X msg 549 498 show; -#X msg 576 472 hide; -#X msg 386 151 bang; -#X msg 436 151 New label; -#X msg 349 151 1; -#X msg 319 151 0; -#X obj 319 178 s rcheckbox0; -#X obj 319 200 r scheckbox0; -#X msg 17 501 0; -#X msg 17 543 1; -#X msg 17 587 2; -#X floatatom 17 617 5 0 0 0 - - -; -#X obj 19 219 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 138 221 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 -1; -#X obj 319 224 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 -1; -#X obj 631 416 s rgraph0; -#X floatatom 631 343 5 0 0 0 - - -; -#X obj 631 383 pack; -#X floatatom 674 343 5 0 0 0 - - -; -#X floatatom 682 390 5 0 0 0 - - -; -#X obj 21 86 gripd 3490; -#X text 724 390 <- set size; -#X obj 631 361 i; -#X obj 674 364 t b f; -#X obj 547 344 r sgraph0; -#X obj 547 367 unpack; -#X floatatom 547 392 5 0 0 0 - - -; -#X floatatom 587 392 5 0 0 0 - - -; -#X msg 124 33 openpanel; -#X msg 124 57 savepanel; -#X text 629 325 set data: index \, value; -#X obj 152 425 print textbox; -#X obj 456 71 r openpanel; -#X obj 456 98 print openpanel; -#X obj 458 21 r savepanel; -#X obj 458 48 print savepanel; -#X msg 453 263 New label; -#X floatatom 405 263 4 0 0 0 - - -; -#X obj 412 284 s rrectangle0; -#X connect 0 0 126 0; -#X connect 3 0 127 0; -#X connect 4 0 2 0; -#X connect 5 0 2 0; -#X connect 6 0 1 0; -#X connect 7 0 2 0; -#X connect 8 0 2 0; -#X connect 10 0 12 0; -#X connect 11 0 9 0; -#X connect 13 0 15 0; -#X connect 16 0 14 0; -#X connect 17 0 19 0; -#X connect 18 0 20 0; -#X connect 22 0 21 0; -#X connect 23 0 25 0; -#X connect 26 0 24 0; -#X connect 27 0 28 0; -#X connect 29 0 28 0; -#X connect 30 0 145 0; -#X connect 31 0 21 0; -#X connect 32 0 66 0; -#X connect 33 0 35 0; -#X connect 34 0 36 0; -#X connect 39 0 122 0; -#X connect 41 0 40 0; -#X connect 42 0 45 0; -#X connect 43 0 44 0; -#X connect 46 0 123 0; -#X connect 47 0 124 0; -#X connect 48 0 38 0; -#X connect 50 0 37 0; -#X connect 51 0 76 0; -#X connect 53 0 52 0; -#X connect 56 0 52 0; -#X connect 66 0 33 0; -#X connect 66 1 34 0; -#X connect 66 2 67 0; -#X connect 66 3 68 0; -#X connect 76 0 77 0; -#X connect 76 1 78 0; -#X connect 79 0 134 0; -#X connect 80 0 134 0; -#X connect 81 0 82 0; -#X connect 82 0 83 0; -#X connect 82 1 84 0; -#X connect 82 2 85 0; -#X connect 88 0 112 0; -#X connect 91 0 89 0; -#X connect 91 1 90 0; -#X connect 92 0 91 0; -#X connect 95 0 28 0; -#X connect 97 0 99 0; -#X connect 98 0 100 0; -#X connect 101 0 97 0; -#X connect 101 1 98 0; -#X connect 101 2 102 0; -#X connect 101 3 103 0; -#X connect 110 0 101 0; -#X connect 111 0 134 0; -#X connect 112 0 86 0; -#X connect 112 1 87 0; -#X connect 112 2 113 0; -#X connect 114 0 52 0; -#X connect 115 0 52 0; -#X connect 116 0 120 0; -#X connect 117 0 120 0; -#X connect 118 0 120 0; -#X connect 119 0 120 0; -#X connect 121 0 128 0; -#X connect 122 0 125 0; -#X connect 123 0 125 0; -#X connect 124 0 125 0; -#X connect 130 0 136 0; -#X connect 131 0 129 0; -#X connect 132 0 137 0; -#X connect 133 0 129 0; -#X connect 134 0 49 0; -#X connect 134 1 75 0; -#X connect 136 0 131 0; -#X connect 137 0 136 0; -#X connect 137 1 131 1; -#X connect 138 0 139 0; -#X connect 139 0 140 0; -#X connect 139 1 141 0; -#X connect 142 0 134 0; -#X connect 143 0 134 0; -#X connect 146 0 147 0; -#X connect 148 0 149 0; -#X connect 150 0 152 0; -#X connect 151 0 152 0; diff --git a/extensions/gripd/examples/gripdFM.pd b/extensions/gripd/examples/gripdFM.pd deleted file mode 100644 index 28cccf6159ca7108ec9114debf573189c10a71d2..0000000000000000000000000000000000000000 --- a/extensions/gripd/examples/gripdFM.pd +++ /dev/null @@ -1,135 +0,0 @@ -#N canvas 660 45 549 445 10; -#X obj 202 183 *~; -#X floatatom 202 126 0 0 0 0 - - -; -#X obj 267 161 line~; -#X floatatom 114 146 0 0 0 0 - - -; -#X obj 114 268 cos~; -#X obj 114 216 +~; -#X floatatom 143 316 0 0 0 0 - - -; -#N canvas 159 26 495 270 output 0; -#X obj 338 160 t b; -#X obj 338 110 f; -#X obj 338 60 inlet; -#X text 344 29 mute; -#X obj 338 185 f; -#X msg 425 178 0; -#X msg 338 85 bang; -#X obj 338 135 moses 1; -#X obj 425 153 t b f; -#X obj 397 117 moses 1; -#X obj 83 148 dbtorms; -#X obj 397 92 r master-lvl; -#X obj 83 42 r master-lvl; -#X obj 338 210 s master-lvl; -#X obj 22 182 inlet~; -#X obj 199 41 inlet; -#X text 199 18 level; -#X obj 199 100 s master-lvl; -#X msg 96 65 set \$1; -#X obj 96 89 outlet; -#X msg 214 64 \; pd dsp 1; -#X obj 83 194 line~; -#X obj 22 212 *~; -#X obj 22 241 dac~; -#X obj 83 171 pack 0 50; -#X text 20 159 audio; -#X text 93 110 show level; -#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 24 0; -#X connect 11 0 1 1; -#X connect 11 0 9 0; -#X connect 12 0 10 0; -#X connect 12 0 18 0; -#X connect 14 0 22 0; -#X connect 15 0 17 0; -#X connect 15 0 20 0; -#X connect 18 0 19 0; -#X connect 21 0 22 1; -#X connect 22 0 23 0; -#X connect 22 0 23 1; -#X connect 24 0 21 0; -#X restore 114 344 pd output; -#X msg 172 316 MUTE; -#X text 213 316 <-- output amplitude; -#X msg 229 262 bang; -#X text 266 263 <-- click to graph; -#X obj 114 173 phasor~ 0; -#X obj 202 151 osc~ 0; -#X text 33 8 PHASE MODULATION ("FM") USING TWO OSCILLATORS; -#X obj 229 286 tabwrite~ fm-output; -#X obj 267 135 pack 0 50; -#X floatatom 267 82 0 0 0 0 - - -; -#X obj 267 109 / 100; -#X text 263 50 modulation index; -#X text 263 65 in hundredths; -#X text 111 103 carrier; -#X text 110 121 frequency; -#X text 187 102 frequency; -#X text 188 85 modulation; -#X text 310 160 <-- signal with smoothed; -#X text 312 176 modulation index to avoid clicks; -#X text 188 345 <-- as in previous patch; -#X text 199 205 amplitude-controlled modulation; -#X text 200 222 oscillator output; -#X text 37 158 carrier; -#X text 37 173 phase -->; -#X text 18 201 phase; -#X text 17 216 modulation-->; -#X text 14 252 output; -#X text 15 268 waveform -->; -#X obj 51 81 r carrier; -#X obj 148 65 r mod; -#X obj 207 30 r index; -#X obj 129 291 r amp; -#X obj 172 245 r mute; -#X msg 438 85 \; pd dsp \$1; -#X obj 438 52 r onoff; -#X obj 27 402 gripd; -#X text 329 377 <-- Click; -#X text 341 402 open GUI; -#X text 347 389 here to; -#N canvas 132 85 450 293 array 0; -#N canvas 0 0 450 300 graph1 0; -#X array fm-output 100 float 0; -#X coords 0 1 99 -1 200 140 1; -#X restore 100 20 graph; -#X restore 417 256 pd array; -#X msg 27 374 open_locked ../gripd/examples/fmsynth.gpd; -#X msg 67 402 show; -#X msg 100 402 unlock; -#X msg 150 402 lock; -#X connect 0 0 5 1; -#X connect 1 0 13 0; -#X connect 2 0 0 1; -#X connect 3 0 12 0; -#X connect 4 0 15 0; -#X connect 4 0 7 0; -#X connect 5 0 4 0; -#X connect 6 0 7 1; -#X connect 7 0 6 0; -#X connect 8 0 7 2; -#X connect 10 0 15 0; -#X connect 12 0 5 0; -#X connect 13 0 0 0; -#X connect 16 0 2 0; -#X connect 17 0 18 0; -#X connect 18 0 16 0; -#X connect 36 0 3 0; -#X connect 37 0 1 0; -#X connect 38 0 17 0; -#X connect 39 0 6 0; -#X connect 40 0 8 0; -#X connect 42 0 41 0; -#X connect 48 0 43 0; -#X connect 49 0 43 0; -#X connect 50 0 43 0; -#X connect 51 0 43 0; diff --git a/extensions/gripd/examples/poof.jpg b/extensions/gripd/examples/poof.jpg deleted file mode 100644 index d15a262dcdb4307ce1c58fe0d24f271cbd17f65c..0000000000000000000000000000000000000000 Binary files a/extensions/gripd/examples/poof.jpg and /dev/null differ diff --git a/extensions/gripd/examples/scale.gif b/extensions/gripd/examples/scale.gif deleted file mode 100644 index 61c6def462d0c2a4f98d529975e84855112c5a3c..0000000000000000000000000000000000000000 Binary files a/extensions/gripd/examples/scale.gif and /dev/null differ diff --git a/extensions/gripd/examples/scale2.gif b/extensions/gripd/examples/scale2.gif deleted file mode 100644 index 95d1e95ade48d2be944d163f724cbd349292bad5..0000000000000000000000000000000000000000 Binary files a/extensions/gripd/examples/scale2.gif and /dev/null differ diff --git a/extensions/gripd/examples/screw.gif b/extensions/gripd/examples/screw.gif deleted file mode 100644 index 1ebd9ae9a49c2eb7e214957a343f770f1a189483..0000000000000000000000000000000000000000 Binary files a/extensions/gripd/examples/screw.gif and /dev/null differ diff --git a/extensions/gripd/gripd b/extensions/gripd/gripd deleted file mode 100755 index 3e9fb38cb5271b7130ed6772b20f1c99aa3156ff..0000000000000000000000000000000000000000 --- a/extensions/gripd/gripd +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/python -OO - -## GrIPD v0.1.1 - Graphical Interface for Pure Data -## Copyright (C) 2003 Joseph A. Sarlo -## -## 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. -## -## jsarlo@ucsd.edu - -from wxPython.wx import * -from gripdMain import * -import sys -import signal -import os - -def signalHandler(sigNum, frame): - print 'Caught signal', sigNum - try: - app.frame.eClose(wxEvent()) - except: - app.ExitMainLoop() -if (os.name == "posix"): - signal.signal(signal.SIGQUIT, signalHandler) - signal.signal(signal.SIGINT, signalHandler) - signal.signal(signal.SIGTERM, signalHandler) -app = mainApp(sys.argv) -app.MainLoop() - - - diff --git a/extensions/gripd/gripd.opt b/extensions/gripd/gripd.opt deleted file mode 100644 index 411fd79c4b41d7fb2973b041ba5cca148891012f..0000000000000000000000000000000000000000 --- a/extensions/gripd/gripd.opt +++ /dev/null @@ -1,2 +0,0 @@ -joystick = TRUE -midi = TRUE diff --git a/extensions/gripd/gripd.py b/extensions/gripd/gripd.py deleted file mode 100644 index beb604735d3abfaf6ac7e97625addca65ce0442e..0000000000000000000000000000000000000000 --- a/extensions/gripd/gripd.py +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/python -OO - -## GrIPD v0.1.1 - Graphical Interface for Pure Data -## Copyright (C) 2003 Joseph A. Sarlo -## -## 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. -## -## jsarlo@ucsd.edu - -from wxPython.wx import * -from gripdMain import * -import sys -import signal -import os - -def signalHandler(sigNum, frame): - print 'Caught signal', sigNum - try: - app.frame.eClose(wxEvent()) - except: - app.ExitMainLoop() -if (os.name == "posix"): - signal.signal(signal.SIGQUIT, signalHandler) - signal.signal(signal.SIGINT, signalHandler) - signal.signal(signal.SIGTERM, signalHandler) -app = mainApp(sys.argv) -app.MainLoop() - - - - diff --git a/extensions/gripd/gripd.spec b/extensions/gripd/gripd.spec deleted file mode 100644 index 453270c32cdba83e77af8f6d927cb3b013f40e98..0000000000000000000000000000000000000000 --- a/extensions/gripd/gripd.spec +++ /dev/null @@ -1,16 +0,0 @@ -a = Analysis(['../../support/_mountzlib.py', - '../../support/useUnicode.py', - 'src/gripd.py'], - pathex=[]) -pyz = PYZ(a.pure) -exe = EXE(pyz, - a.scripts + [('OO','','OPTION')] + [('f','','OPTION')], - exclude_binaries=1, - name='buildgripd/gripd', - debug=0, - strip=1, - console=1 ) -coll = COLLECT( exe, - a.binaries, - strip=1, - name='distgripd') diff --git a/extensions/gripd/gripdControls.py b/extensions/gripd/gripdControls.py deleted file mode 100644 index 10ebc1e8671228262b5bcf9a76f7ae9b0d14d878..0000000000000000000000000000000000000000 --- a/extensions/gripd/gripdControls.py +++ /dev/null @@ -1,1675 +0,0 @@ -## GrIPD v0.1.1 - Graphical Interface for Pure Data -## Copyright (C) 2003 Joseph A. Sarlo -## -## 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. -## -## jsarlo@ucsd.edu - -from wxPython.wx import * -from string import * -from gripdFunctions import * -import os -import math - -MBUTTONTYPE = 0 -MTOGGLETYPE = 1 -MVSLIDERTYPE = 2 -MHSLIDERTYPE = 3 -MRECTTYPE = 4 -MTEXTTYPE = 5 -MVGAUGETYPE = 6 -MHGAUGETYPE = 7 -MCHECKBOXTYPE = 8 -MTEXTBOXTYPE = 9 -MSPINBUTTONTYPE = 10 -MMOUSEAREATYPE = 11 -MRADIOBUTTONTYPE = 12 -MRADIONEWTYPE = 13 -MIMAGETYPE = 14 -MGRAPHTYPE = 15 -PAIRSEPCHAR = chr(29) -SYMMSGSEP = chr(31) -DEFCONTROLID = -1 -DEFEDITPOS = (5,7) -DEFSLIDERVALUE = 0 -DEFSLIDERMIN = 0 -DEFSLIDERMAX = 100 -DEFVSLIDERSIZE = (30, 80) -DEFHSLIDERSIZE = (80, 30) -DEFRECTSIZE = (200, 200) -DEFVGAUGESIZE = (30, 80) -DEFHGAUGESIZE = (80, 30) -DEFGAUGEMIN = 0 -DEFGAUGEMAX = 100 -DEFTAGSIZE = 9 -RESIZETAGCOLOR = "#555555" -DEFMOUSEAREASIZE = 100 -SETRCVRCOMMAND = "!setRcvr" -SETARRAYCOMMAND = "!setArray" -TEXTEDITINPUT = 0 -FONTEDITINPUT = 1 -COLOREDITINPUT = 2 -FILEEDITINPUT = 3 -DROPDOWNEDITINPUT = 4 -MAXARRAYSENDSIZE = 2000 - -lastEditWindowPosition = (-1, -1) - -# Abstract class for controls (buttons, sliders, etc) -class mControl(wxControl): - def __init__(self, parentApp, type, sSym, rSym, cnxtn): - self.editMode = False - self.selected = False - self.parentApp = parentApp - self.type = type - self.sendSymbol = sSym - self.receiveSymbol = rSym - self.connection = cnxtn - self.resetBackground = False - self.updateRSym() - self.clickedOn = False - self.grabbed = False - self.setEditMode(True) - EVT_CHAR(self, self.eChar) - EVT_KEY_UP(self, self.parentApp.eKeyUp) - EVT_KEY_DOWN(self, self.parentApp.eKeyDown) - def mDestroy(self): - if (self.editMode): - self.moveTag.Destroy() - self.BLResizeTag.Destroy() - self.BRResizeTag.Destroy() - self.TRResizeTag.Destroy() - self.Destroy() - def select(self): - if (not self.selected): - self.relocateTags() - self.moveTag.Show(True) - self.BLResizeTag.Show(True) - self.BRResizeTag.Show(True) - self.TRResizeTag.Show(True) - self.parentApp.selectedControlList.append(self) - # To keep tags above controls in Windows, repaints tags in idle time - # (i.e. after everything else has bee repainted) - self.selected = True - self.Connect(-1, -1, EVT_RAISE_TAGS_ID, self.eRepaintControlTags) - wxPostEvent(self, RaiseTagsEvent()) - def deselect(self): - if (self.selected): - self.moveTag.Show(False) - self.BLResizeTag.Show(False) - self.BRResizeTag.Show(False) - self.TRResizeTag.Show(False) - self.parentApp.selectedControlList.remove(self) - self.Disconnect(-1, EVT_RAISE_TAGS_ID) - self.selected = False - def isSelected(self): - return self.selected - def grab(self): - if (not self.grabbed): - self.grabbed = True - self.parentApp.dragging = True - EVT_MOTION(self.moveTag, self.moveTag.eMove) - self.moveTag.lastPos = wxGetMousePosition() - self.moveTag.SetCursor(wxStockCursor(self.moveTag.pointerStyle)) - self.parentApp.startMoveControls() - self.moveTag.CaptureMouse() - def ungrab(self): - if (self.grabbed): - self.grabbed = False - self.parentApp.dragging = False - self.moveTag.ReleaseMouse() - # this doesn't seem to actually disconnect - self.moveTag.Disconnect(-1, wxEVT_MOTION) - self.moveTag.SetCursor(wxSTANDARD_CURSOR) - self.parentApp.endDragMoveControls() - self.parentApp.mainFrame.mainPanel.Refresh() - self.Refresh() - def updateRSym(self): - self.connection.send(SETRCVRCOMMAND + SYMMSGSEP + \ - self.receiveSymbol + PAIRSEPCHAR) - def sendMessage(self, message): - try: - self.connection.send(self.sendSymbol + SYMMSGSEP + \ - message + PAIRSEPCHAR) - except: - pass - def PDAction(self, value): - self.SetLabel(value) - def relocateTags(self): - self.moveTag.relocate() - self.BLResizeTag.relocate() - self.BRResizeTag.relocate() - self.TRResizeTag.relocate() - def refreshTags(self): - self.moveTag.Show(True) - self.BLResizeTag.Show(True) - self.BRResizeTag.Show(True) - self.TRResizeTag.Show(True) - self.moveTag.Refresh() - self.BLResizeTag.Refresh() - self.BRResizeTag.Refresh() - self.TRResizeTag.Refresh() - def startMove(self): - self.TRResizeTag.Show(False) - self.BRResizeTag.Show(False) - self.BLResizeTag.Show(False) - def move(self, deltaPos): - if (self.editMode and self.isSelected()): - xPos = self.GetPosition()[0] + deltaPos[0] - yPos = self.GetPosition()[1] + deltaPos[1] - deltaPosMTX = xPos - self.GetPosition()[0] - deltaPosMTY = yPos - self.GetPosition()[1] - xMTPos = self.moveTag.GetPosition()[0] + deltaPosMTX - yMTPos = self.moveTag.GetPosition()[1] + deltaPosMTY - self.MoveXY(xPos, yPos) - self.moveTag.MoveXY(xMTPos, yMTPos) - def endMove(self): - self.relocateTags() - self.TRResizeTag.Show(True) - self.BRResizeTag.Show(True) - self.BLResizeTag.Show(True) - def endDragMove(self): - if (self.parentApp.snapToGrid): - self.setPosition( \ - self.parentApp.getNearestGridPoint(self.GetPosition())) - self.endMove() - def resize(self, deltaPos): - if (self.editMode): - xSize = self.GetSize()[0] + deltaPos[0] - ySize = self.GetSize()[1] + deltaPos[1] - if (xSize > 0 and ySize > 0): - self.setSize((xSize, ySize)) - def setEditMode(self, mode): - if (mode): - if (not self.editMode): - EVT_LEFT_DOWN(self, self.eLeftDown) - EVT_RIGHT_DOWN(self, self.eRightDown) - self.moveTag = controlEditTag(self, - (0,0), - wxBLACK, - wxCURSOR_CROSS) - self.BLResizeTag = controlResizeTag(self, - (1,0), - RESIZETAGCOLOR, - wxCURSOR_SIZEWE) - self.TRResizeTag = controlResizeTag(self, - (0,1), - RESIZETAGCOLOR, - wxCURSOR_SIZENS) - self.BRResizeTag = controlResizeTag(self, - (1,1), - RESIZETAGCOLOR, - wxCURSOR_SIZENWSE) - self.editMode = True - elif (self.editMode): - self.deselect() - self.moveTag.Destroy() - self.BLResizeTag.Destroy() - self.TRResizeTag.Destroy() - self.BRResizeTag.Destroy() - self.Disconnect(-1, wxEVT_LEFT_DOWN) - self.Disconnect(-1, wxEVT_RIGHT_DOWN) - self.editMode = False - def getEditMode(self): - return self.editMode - def setSendSymbol(self, sym): - self.sendSymbol = sym - def getSendSymbol(self): - return self.sendSymbol - def setReceiveSymbol(self, sym): - self.receiveSymbol = sym - self.updateRSym() - def getReceiveSymbol(self): - return self.receiveSymbol - def setConnection(self, cnxtn): - self.connection = cnxtn - def getConnection(self): - return self.connection - def getType(self): - return self.type - def setPosition(self, pos): - self.MoveXY(pos[0], pos[1]) - self.relocateTags() - def setSize(self, size): - self.SetSize(size) - if (self.selected): - self.relocateTags() - # catch GTK bug - def GetBackgroundColour(self): - color = wxControl.GetBackgroundColour(self) - if (not color.Ok()): - color = wxBLACK - return color - def editCallback(self, editValues): - try: - self.setPosition((atoi(editValues[0]), atoi(editValues[1]))) - except: - dlg = wxMessageDialog(self.parentApp.mainFrame, - "Invalid Position", - "Edit Error", - wxOK) - dlg.ShowModal() - dlg.Destroy() - try: - self.setSize(wxSize(atoi(editValues[2]), atoi(editValues[3]))) - except: - dlg = wxMessageDialog(self.parentApp.mainFrame, - "Invalid Size", - "Edit Error", - wxOK) - dlg.ShowModal() - dlg.Destroy() - self.setSendSymbol(editValues[4]) - self.setReceiveSymbol(editValues[5]) - self.SetLabel(editValues[6]) - self.SetForegroundColour(editValues[7]) - self.SetBackgroundColour(editValues[8]) - self.SetFont(editValues[9]) - def eEdit(self, event): - editor = controlEditor(self) - editor.addEditItem("X Position:", - TEXTEDITINPUT, - self.GetPosition()[0]) - editor.addEditItem("Y Position:", - TEXTEDITINPUT, - self.GetPosition()[1]) - editor.addEditItem("Width:", - TEXTEDITINPUT, - self.GetSize()[0]) - editor.addEditItem("Height:", - TEXTEDITINPUT, - self.GetSize()[1]) - editor.addEditItem("S Symbol:", - TEXTEDITINPUT, - self.getSendSymbol()) - editor.addEditItem("R Symbol:", - TEXTEDITINPUT, - self.getReceiveSymbol()) - editor.addEditItem("Label:", - TEXTEDITINPUT, - self.GetLabel()) - editor.addEditItem("F Color:", - COLOREDITINPUT, - self.GetForegroundColour()) - editor.addEditItem("B Color:", - COLOREDITINPUT, - self.GetBackgroundColour()) - editor.addEditItem("Font:", - FONTEDITINPUT, - self.GetFont()) - editor.edit() - def eChar(self, event): - self.parentApp.eChar(event) - def eLeftDown(self, event): - if (self.editMode): - if (event.ControlDown()): - if (self.isSelected()): - self.deselect() - else: - self.select() - else: - self.parentApp.deselectOthers(self.GetId()) - self.select() - else: - event.Skip() - def eRightDown(self, event): - if (self.editMode): - self.parentApp.deselectOthers(self.GetId()) - self.select() - self.eEdit(event) - else: - event.Skip() - def eRepaintControlTags(self, event): - self.refreshTags() - -# Class for little box user grabs to move/edit control -class controlEditTag(wxPanel): - def __init__(self, parentControl, position, color, pointerStyle): - wxPanel.__init__(self, - parentControl.parentApp.mainFrame.mainPanel, - -1, (0,0), - (DEFTAGSIZE, DEFTAGSIZE), 0) - self.SetBackgroundColour(color) - self.parentControl = parentControl - self.pointerStyle = pointerStyle - self.leftDownOnTag = False - self.position = position - EVT_CHAR(self, self.parentControl.parentApp.eChar) - EVT_KEY_UP(self, self.parentControl.parentApp.eKeyUp) - EVT_KEY_DOWN(self, self.parentControl.parentApp.eKeyDown) - EVT_LEFT_DOWN(self, self.eLeftDown) - EVT_LEFT_UP(self, self.eRelease) - EVT_RIGHT_DOWN(self, self.eRightDown) - EVT_ENTER_WINDOW(self, self.eEnter) - EVT_LEAVE_WINDOW(self, self.eLeave) - self.Show(False) - def relocate(self): - nuPos = [0,0] - parentPos = self.parentControl.GetPosition() - parentSize = self.parentControl.GetSize() - if (self.position[0]): - nuPos[0] = parentPos[0] + parentSize[0] - else: - nuPos[0] = parentPos[0] - DEFTAGSIZE - if (self.position[1]): - nuPos[1] = parentPos[1] + parentSize[1] - else: - nuPos[1] = parentPos[1] - DEFTAGSIZE - self.MoveXY(nuPos[0], nuPos[1]) - def eLeftDown(self, event): - self.leftDownOnTag = True - if (self.parentControl.grabbed): - self.parentControl.ungrab() - self.parentControl.deselect() - self.parentControl.parentApp.deselectOthers(-1) - else: - self.parentControl.grab() - def eRightDown(self, event): - if (not self.parentControl.grabbed): - self.parentControl.eEdit(event) - def eMove(self, event): - if (self.parentControl.grabbed): - self.newPos = wxGetMousePosition() - deltaPos = (self.newPos[0] - self.lastPos[0], - self.newPos[1] - self.lastPos[1]) - self.lastPos = self.newPos - self.parentControl.parentApp.moveSelectedControls(deltaPos) - def eRelease(self, event): - self.leftDownOnTag = False - self.parentControl.ungrab() - def eEnter(self, event): - self.SetCursor(wxStockCursor(self.pointerStyle)) - def eLeave(self, event): - self.SetCursor(wxSTANDARD_CURSOR) -# Class for little box user grabs to resize control -class controlResizeTag(controlEditTag): - def eLeftDown(self, event): - EVT_MOTION(self, self.eMove) - self.leftDownOnTag = True - self.lastPos = wxGetMousePosition() - self.SetCursor(wxStockCursor(self.pointerStyle)) - self.CaptureMouse() - def eMove(self, event): - if (event.LeftIsDown() and self.leftDownOnTag): - self.newPos = wxGetMousePosition() - deltaPos = ((self.newPos[0] - self.lastPos[0]) * self.position[0], - (self.newPos[1] - self.lastPos[1]) * self.position[1]) - self.lastPos = self.newPos - self.parentControl.parentApp.resizeSelectedControls(deltaPos) - def eRelease(self, event): - self.ReleaseMouse() - self.Disconnect(-1, wxEVT_MOTION) - self.SetCursor(wxSTANDARD_CURSOR) - self.leftDownOnTag = False - self.parentControl.parentApp.mainFrame.mainPanel.Refresh() - -# Class for regular buttons -class mButton(mControl, wxButton): - def __init__(self, parentApp, type, id, text, pos, sSym, rSym, conn): - wxButton.__init__(self, parentApp.mainFrame.mainPanel, - id, text, pos) - mControl.__init__(self, parentApp, type, sSym, rSym, conn) - EVT_BUTTON(parentApp.mainFrame.mainPanel, - self.GetId(), self.eClicked) - def eClicked(self, event): - if (not self.editMode): - self.sendMessage("bang") - -# Class for toggle buttons -# Problem with grabbing clicks with EVT_*_DOWN mouse events -# in GTK on toggle button, seems to be a wxWindows thing -class mToggle(mButton, wxToggleButton, wxButton): - def __init__(self, parentApp, type, id, text, pos, sSym, rSym, conn): - wxToggleButton.__init__(self, parentApp.mainFrame.mainPanel, - id, text, pos) - mControl.__init__(self, parentApp, type, sSym, rSym, conn) - EVT_TOGGLEBUTTON(parentApp.mainFrame.mainPanel, - self.GetId(), self.eClicked) - def toggle(self): - self.SetValue(1 - self.GetValue()) - def PDAction(self, value): - try: - num = atof(value) - if (num == 0): - self.SetValue(0) - else: - self.SetValue(1) - except: - if (value == "bang"): - self.toggle() - else: - self.SetLabel(value) - def eClicked(self, event): - # checking edit mode due to above-mentioned problem - # checking for ctrl key (308) - if (self.editMode): - try: - self.parentApp.keysDown.index(308) - if (self.selected): - self.deselect() - else: - self.select() - except: - self.parentApp.deselectOthers(-1) - self.select() - else: - self.sendMessage(repr(event.IsChecked())) - -# Class for sliders -# Screwyness since wxSliders have a maximum at down position. -# No way to change as far as I can tell. -class mSlider(mControl, wxSlider): - def __init__(self, parentApp, type, id, label, - pos, style, sSym, rSym, conn): - if (style & wxSL_HORIZONTAL): - sSize = DEFHSLIDERSIZE - if (style & wxSL_VERTICAL): - sSize = DEFVSLIDERSIZE - if (isinstance(label, list)): - try: - value = atoi(label[0]) - except: - value = 0 - min = label[1] - max = label[2] - dir = label[3] - else: - try: - value = atoi(label) - except: - value = 0 - min = DEFSLIDERMIN - max = DEFSLIDERMAX - dir = 1 - wxSlider.__init__(self, parentApp.mainFrame.mainPanel, - id, value, min, max, pos, sSize, style) - mControl.__init__(self, parentApp, type, sSym, rSym, conn) - EVT_COMMAND_SCROLL(parentApp, self.GetId(), self.eScrolled) - self.lastValue = value - self.setDirection(dir) - self.resetBackground = True - self.setSliderValue(value) - def PDAction(self, value): - try: - num = atof(value) - self.setSliderValue(num) - except: - pass - def setDirection(self, val): - if (val == 0): - self.direction = 0 - else: - self.direction = 1 - def getDirection(self): - return self.direction - def getSliderValue(self): - direction = self.direction - styleFlag = self.GetWindowStyleFlag() - if (((direction) and (styleFlag & wxSL_VERTICAL)) \ - or ((not direction) and (styleFlag & wxSL_HORIZONTAL))): - value = self.GetMax() - self.GetValue() + self.GetMin() - else: - value = self.GetValue() - return value - def setSliderValue(self, num): - if (((self.direction == 1) and (self.GetWindowStyleFlag() \ - & wxSL_VERTICAL)) \ - or ((self.direction == 0) \ - and (self.GetWindowStyleFlag() \ - & wxSL_HORIZONTAL))): - value = self.GetMax() - num + self.GetMin() - else: - value = num - self.SetValue(value) - def GetLabel(self): - return repr(self.getSliderValue()) - def SetLabel(self, value): - try: - self.setSliderValue(atoi(value)) - except: - pass - def editCallback(self, editValues): - try: - self.setPosition((atoi(editValues[0]), atoi(editValues[1]))) - except: - dlg = wxMessageDialog(self.parentApp.mainFrame, - "Invalid Position", - "Edit Error", - wxOK) - dlg.ShowModal() - dlg.Destroy() - try: - self.setSize(wxSize(atoi(editValues[2]), atoi(editValues[3]))) - except: - dlg = wxMessageDialog(self.parentApp.mainFrame, - "Invalid Size", - "Edit Error", - wxOK) - dlg.ShowModal() - dlg.Destroy() - self.setSendSymbol(editValues[4]) - self.setReceiveSymbol(editValues[5]) - self.SetForegroundColour(editValues[6]) - self.SetBackgroundColour(editValues[7]) - try: - self.SetRange(atoi(editValues[8]), - atoi(editValues[9])) - except: - dlg = wxMessageDialog(self.parentApp.mainFrame, - "Invalid Range", - "Edit Error", - wxOK) - dlg.ShowModal() - dlg.Destroy() - if (editValues[10] == "Up"): - self.setDirection(1) - elif (editValues[10] == "Down"): - self.setDirection(0) - def eEdit(self, event): - editor = controlEditor(self) - editor.addEditItem("X Position:", - TEXTEDITINPUT, - self.GetPosition()[0]) - editor.addEditItem("Y Position:", - TEXTEDITINPUT, - self.GetPosition()[1]) - editor.addEditItem("Width:", - TEXTEDITINPUT, - self.GetSize()[0]) - editor.addEditItem("Height:", - TEXTEDITINPUT, - self.GetSize()[1]) - editor.addEditItem("S Symbol:", - TEXTEDITINPUT, - self.getSendSymbol()) - editor.addEditItem("R Symbol:", - TEXTEDITINPUT, - self.getReceiveSymbol()) - editor.addEditItem("F Color:", - COLOREDITINPUT, - self.GetForegroundColour()) - editor.addEditItem("B Color:", - COLOREDITINPUT, - self.GetBackgroundColour()) - editor.addEditItem("Minimum:", - TEXTEDITINPUT, - self.GetMin()) - editor.addEditItem("Maximum:", - TEXTEDITINPUT, - self.GetMax()) - if (self.getDirection() == 1): - ddValues = ["Up", "Down"] - else: - ddValues = ["Down", "Up"] - editor.addEditItem("Direction:", - DROPDOWNEDITINPUT, - ddValues) - editor.edit() - def eScrolled(self, event): - if (not self.editMode): - value = self.getSliderValue() - if (self.lastValue != value): - self.lastValue = value - self.sendMessage(repr(value)) - -#class for `decorative' rectangle -class mRectangle(mControl, wxStaticBox): - def __init__(self, parentApp, type, id, text, pos, sSym, rSym, conn): - wxStaticBox.__init__(self, parentApp.mainFrame.mainPanel, - id, text, pos, DEFRECTSIZE) - mControl.__init__(self, parentApp, type, sSym, rSym, conn) - self.resetBackground = True - def SetValue(self, value): - self.SetLabel(value) - def eLeftDown(self, event): - if (self.editMode): - if (event.GetPosition()[0] < 20 or \ - event.GetPosition()[1] < 20 or \ - event.GetPosition()[0] > self.GetSize()[0] - 20 or\ - event.GetPosition()[1] > self.GetSize()[1] - 20): - if (event.ControlDown()): - if (self.isSelected()): - self.deselect() - else: - self.select() - else: - self.parentApp.deselectOthers(self.GetId()) - self.select() - else: - self.parentApp.eLeftDown(event) - else: - event.Skip() - - -# Class for `decorative' text -class mText(mControl, wxStaticText): - def __init__(self, parentApp, type, id, text, pos, sSym, rSym, conn): - wxStaticText.__init__(self, parentApp.mainFrame.mainPanel, - id, text, pos, wxDefaultSize, - wxALIGN_CENTRE | wxST_NO_AUTORESIZE) - mControl.__init__(self, parentApp, type, sSym, rSym, conn) - self.resetBackground = True - def SetValue(self, value): - self.SetLabel(value) - self.Refresh() - -#Class for gauges -class mGauge(wxGauge, mSlider): - def __init__(self, parentApp, type, id, label, pos, - style, sSym, rSym, conn): - if (style & wxGA_HORIZONTAL): - size = DEFHGAUGESIZE - else: - size = DEFVGAUGESIZE - if (isinstance(label, list)): - try: - value = atoi(label[0]) - except: - value = 0 - max = label[2] - else: - try: - value = atoi(label) - except: - value = 0 - max = DEFSLIDERMAX - wxGauge.__init__(self, parentApp.mainFrame.mainPanel, - id, max, pos, size, style | wxGA_SMOOTH) - mControl.__init__(self, parentApp, type, sSym, rSym, conn) - try: - self.SetValue(value) - except: - pass - def GetMin(self): - return 0 - def GetMax(self): - return self.GetRange() - def SetRange(self, min, max): - wxGauge.SetRange(self, max) - def getDirection(self): - return 0 - def setDirection(self, x): - pass - def GetLabel(self): - return repr(self.GetValue()) - def SetLabel(self, value): - try: - self.SetValue(atoi(value)) - except: - pass - def PDAction(self, value): - try: - num = atof(value) - if (num > self.GetMax()): - num = self.GetMax() - if (num < 0): - num = 0 - self.SetValue(num) - except: - self.SetLabel(value) - def editCallback(self, editValues): - try: - self.setPosition((atoi(editValues[0]), atoi(editValues[1]))) - except: - dlg = wxMessageDialog(self.parentApp.mainFrame, - "Invalid Position", - "Edit Error", - wxOK) - dlg.ShowModal() - dlg.Destroy() - try: - self.setSize(wxSize(atoi(editValues[2]), atoi(editValues[3]))) - except: - dlg = wxMessageDialog(self.parentApp.mainFrame, - "Invalid Size", - "Edit Error", - wxOK) - dlg.ShowModal() - dlg.Destroy() - self.setSendSymbol(editValues[4]) - self.setReceiveSymbol(editValues[5]) - try: - self.SetRange(0, - atoi(editValues[6])) - except: - dlg = wxMessageDialog(self.parentApp.mainFrame, - "Invalid Maximum", - "Edit Error", - wxOK) - dlg.ShowModal() - dlg.Destroy() - self.SetForegroundColour(editValues[7]) - self.SetBackgroundColour(editValues[8]) - def eEdit(self, event): - editor = controlEditor(self) - editor.addEditItem("X Position:", - TEXTEDITINPUT, - self.GetPosition()[0]) - editor.addEditItem("Y Position:", - TEXTEDITINPUT, - self.GetPosition()[1]) - editor.addEditItem("Width:", - TEXTEDITINPUT, - self.GetSize()[0]) - editor.addEditItem("Height:", - TEXTEDITINPUT, - self.GetSize()[1]) - editor.addEditItem("S Symbol:", - TEXTEDITINPUT, - self.getSendSymbol()) - editor.addEditItem("R Symbol:", - TEXTEDITINPUT, - self.getReceiveSymbol()) - editor.addEditItem("Maximum:", - TEXTEDITINPUT, - self.GetMax()) - editor.addEditItem("F Color:", - COLOREDITINPUT, - self.GetForegroundColour()) - editor.addEditItem("B Color:", - COLOREDITINPUT, - self.GetBackgroundColour()) - editor.edit() - -# Class for checkboxes -class mCheckBox(wxCheckBox, mToggle): - def __init__(self, parentApp, type, id, text, pos, sSym, rSym, conn): - wxCheckBox.__init__(self, parentApp.mainFrame.mainPanel, - id, text, pos) - mControl.__init__(self, parentApp, type, sSym, rSym, conn) - self.resetBackground = True - EVT_CHECKBOX(parentApp.mainFrame.mainPanel, - self.GetId(), self.eClicked) - -# Class for radio buttons -class mRadioButton(wxRadioButton, mToggle): - def __init__(self, parentApp, type, id, text, - pos, sSym, rSym, style, conn): - wxRadioButton.__init__(self, parentApp.mainFrame.mainPanel, - id, text, pos, wxDefaultSize, style) - mControl.__init__(self, parentApp, type, sSym, rSym, conn) - self.resetBackground = True - EVT_RADIOBUTTON(parentApp.mainFrame.mainPanel, - self.GetId(), self.eClicked) - self.SetValue(False) - def eClicked(self, event): - if (not self.editMode and (self.GetValue() > 0)): - self.sendMessage("bang") - -# Class for textboxes -class mTextBox(mControl, wxTextCtrl): - def __init__(self, parentApp, type, id, label, pos, sSym, rSym, conn): - wxTextCtrl.__init__(self, parentApp.mainFrame.mainPanel, - id, "", pos, wxDefaultSize, - wxTE_PROCESS_ENTER) - mControl.__init__(self, parentApp, type, sSym, rSym, conn) - self.SetValue(label) - EVT_TEXT_ENTER(parentApp.mainFrame.mainPanel, self.GetId(), self.eEnter) - def PDAction(self, value): - if (value == "bang"): - self.SetValue("") - else: - self.SetValue(value) - def GetLabel(self): - return self.GetValue() - def SetLabel(self, value): - self.SetValue(value) - def eEnter(self, event): - value = self.GetValue() - if (not self.editMode): - self.sendMessage(value) - -# Class for spin buttons -class mSpinButton(wxSpinButton, mSlider): - def __init__(self, parentApp, type, id, label, pos, sSym, rSym, conn): - wxSpinButton.__init__(self, parentApp.mainFrame.mainPanel, - id, pos, wxDefaultSize, - wxSP_VERTICAL) - mControl.__init__(self, parentApp, type, sSym, rSym, conn) - try: - self.SetValue(atoi(label)) - except: - pass - EVT_SPIN(parentApp.mainFrame.mainPanel, self.GetId(), self.eSpin) - def getDirection(self): - return 0 - def setDirection(self, x): - pass - def PDAction(self, value): - try: - num = atof(value) - if (num > self.GetMax()): - num = self.GetMax() - if (num < 0): - num = 0 - self.SetValue(num) - except: - self.SetLabel(value) - def GetLabel(self): - return repr(self.GetValue()) - def SetLabel(self, value): - try: - self.SetValue(atoi(value)) - except: - pass - def eSpin(self, event): - value = repr(self.GetValue()) - if (not self.editMode): - self.sendMessage(value) - def editCallback(self, editValues): - try: - self.setPosition((atoi(editValues[0]), atoi(editValues[1]))) - except: - dlg = wxMessageDialog(self.parentApp.mainFrame, - "Invalid Position", - "Edit Error", - wxOK) - dlg.ShowModal() - dlg.Destroy() - try: - self.setSize(wxSize(atoi(editValues[2]), atoi(editValues[3]))) - except: - dlg = wxMessageDialog(self.parentApp.mainFrame, - "Invalid Size", - "Edit Error", - wxOK) - dlg.ShowModal() - dlg.Destroy() - self.setSendSymbol(editValues[4]) - self.setReceiveSymbol(editValues[5]) - try: - self.SetRange(atoi(editValues[6]), - atoi(editValues[7])) - except: - dlg = wxMessageDialog(self.parentApp.mainFrame, - "Invalid Range", - "Edit Error", - wxOK) - dlg.ShowModal() - dlg.Destroy() - self.SetForegroundColour(editValues[8]) - self.SetBackgroundColour(editValues[9]) - def eEdit(self, event): - editor = controlEditor(self) - editor.addEditItem("X Position:", - TEXTEDITINPUT, - self.GetPosition()[0]) - editor.addEditItem("Y Position:", - TEXTEDITINPUT, - self.GetPosition()[1]) - editor.addEditItem("Width:", - TEXTEDITINPUT, - self.GetSize()[0]) - editor.addEditItem("Height:", - TEXTEDITINPUT, - self.GetSize()[1]) - editor.addEditItem("S Symbol:", - TEXTEDITINPUT, - self.getSendSymbol()) - editor.addEditItem("R Symbol:", - TEXTEDITINPUT, - self.getReceiveSymbol()) - editor.addEditItem("Minimum:", - TEXTEDITINPUT, - self.GetMin()) - editor.addEditItem("Maximum:", - TEXTEDITINPUT, - self.GetMax()) - editor.addEditItem("F Color:", - COLOREDITINPUT, - self.GetForegroundColour()) - editor.addEditItem("B Color:", - COLOREDITINPUT, - self.GetBackgroundColour()) - editor.edit() - -# Class for mouse capture area -class mMouseArea(wxPanel, mControl): - def __init__(self, parentApp, type, id, pos, sSym, rSym, conn): - wxPanel.__init__(self, parentApp.mainFrame.mainPanel, -1, pos, - (DEFMOUSEAREASIZE, DEFMOUSEAREASIZE), wxBORDER) - mControl.__init__(self, parentApp, type, sSym, rSym, conn) - self.mouseCaptured = False - EVT_MIDDLE_DOWN(self, self.eMiddleDown) - EVT_MIDDLE_UP(self, self.eMiddleUp) - EVT_RIGHT_UP(self, self.eRightUp) - def sendMouseInfo(self, xPos, yPos, buttonNum, buttonStatus): - xPosStr = repr(xPos) - yPosStr = repr(yPos) - if (buttonNum > -1): - buttonNumStr = repr(buttonNum) - buttonStatusStr = repr(buttonStatus) - self.sendMessage(xPosStr + " " + \ - yPosStr + " " + \ - buttonNumStr + " " + \ - buttonStatusStr) - else: - self.sendMessage(xPosStr + " " + yPosStr) - def editCallback(self, editValues): - try: - self.setPosition((atoi(editValues[0]), atoi(editValues[1]))) - except: - dlg = wxMessageDialog(self.parentApp.mainFrame, - "Invalid Position", - "Edit Error", - wxOK) - dlg.ShowModal() - dlg.Destroy() - try: - self.setSize(wxSize(atoi(editValues[2]), atoi(editValues[3]))) - except: - dlg = wxMessageDialog(self.parentApp.mainFrame, - "Invalid Size", - "Edit Error", - wxOK) - dlg.ShowModal() - dlg.Destroy() - self.setSendSymbol(editValues[4]) - self.setReceiveSymbol(editValues[5]) - self.SetBackgroundColour(editValues[6]) - def eEdit(self, event): - editor = controlEditor(self) - editor.addEditItem("X Position:", - TEXTEDITINPUT, - self.GetPosition()[0]) - editor.addEditItem("Y Position:", - TEXTEDITINPUT, - self.GetPosition()[1]) - editor.addEditItem("Width:", - TEXTEDITINPUT, - self.GetSize()[0]) - editor.addEditItem("Height:", - TEXTEDITINPUT, - self.GetSize()[1]) - editor.addEditItem("S Symbol:", - TEXTEDITINPUT, - self.getSendSymbol()) - editor.addEditItem("R Symbol:", - TEXTEDITINPUT, - self.getReceiveSymbol()) - editor.addEditItem("Color:", - COLOREDITINPUT, - self.GetBackgroundColour()) - editor.edit() - def eLeftDown(self, event): - if (self.editMode): - if (event.ControlDown()): - if (self.isSelected()): - self.deselect() - else: - self.select() - else: - self.parentApp.deselectOthers(self.GetId()) - self.select() - else: - self.sendMouseInfo(event.GetPosition()[0], - event.GetPosition()[1], - 0, - 1) - event.Skip() - self.eStartCapture(event) - def eRightDown(self, event): - if (self.editMode): - self.parentApp.deselectOthers(self.GetId()) - self.select() - self.eEdit(event) - else: - self.sendMouseInfo(event.GetPosition()[0], - event.GetPosition()[1], - 2, - 1) - def eRightUp(self, event): - if (not self.editMode): - self.sendMouseInfo(event.GetPosition()[0], - event.GetPosition()[1], - 2, - 0) - def eMiddleDown(self, event): - if (not self.editMode): - self.sendMouseInfo(event.GetPosition()[0], - event.GetPosition()[1], - 1, - 1) - def eMiddleUp(self, event): - if (not self.editMode): - self.sendMouseInfo(event.GetPosition()[0], - event.GetPosition()[1], - 1, - 0) - def eStartCapture(self, event): - if (not self.mouseCaptured): - self.CaptureMouse() - self.mouseCaptured = True - EVT_LEFT_UP(self, self.eEndCapture) - EVT_MOTION(self, self.eCaptureMouse) - def eEndCapture(self, event): - if (self.mouseCaptured): - self.ReleaseMouse() - self.mouseCaptured = False - self.sendMouseInfo(event.GetPosition()[0], - event.GetPosition()[1], - 0, - 0) - self.Disconnect(-1, wxEVT_MOTION) - self.Disconnect(-1, wxEVT_LEFT_UP) - def eCaptureMouse(self, event): - if (event.LeftIsDown() and self.mouseCaptured): - self.sendMouseInfo(event.GetPosition()[0], - event.GetPosition()[1], - -1, - -1) - -class mGraph(wxPanel, mSlider): - def __init__(self, parentApp, type, id, label, pos, sSym, rSym, conn): - wxPanel.__init__(self, parentApp.mainFrame.mainPanel, -1, pos, - (DEFMOUSEAREASIZE, DEFMOUSEAREASIZE), wxSIMPLE_BORDER) - mControl.__init__(self, parentApp, type, sSym, rSym, conn) - self.arrayLength = 0 - self.arrayRawData = [] - self.arrayDrawData = [] - self.min = -1 - self.max = 1 - self.mouseCaptured = False - if (isinstance(label, list)): - try: - value = atoi(label[0]) - except: - value = 0 - self.min = label[1] - self.max = label[2] - aData = label[3] - self.arrayLength = aData[0] - self.arrayRawData = aData[1:] - if (self.arrayLength == 0): - self.arrayLength = 100 - for i in range(0, 100): - self.arrayRawData.append(0) - for i in range(0, self.arrayLength): - drawData = self.getDrawData(i, 0) - self.arrayDrawData.append(drawData) - EVT_PAINT(self, self.ePaint) - def GetMin(self): - return self.min - def GetMax(self): - return self.max - def getDirection(self): - return [self.arrayLength] + self.arrayRawData - def PDAction(self, value): - value = strip(value) - if (lower(value) == "bang"): - self.Refresh() - else: - isAnInt = False - try: - aLen = atoi(value) - isAnInt = True - except: - pass - if (isAnInt): - if (aLen > self.arrayLength): - for i in range(self.arrayLength, aLen): - self.arrayRawData.append(0) - self.arrayDrawData.append(self.getDrawData(i, 0)) - elif (aLen < self.arrayLength): - del self.arrayRawData[aLen:] - del self.arrayDrawData[aLen:] - self.arrayLength = aLen - for i in range(0, self.arrayLength): - self.arrayDrawData[i] = self.getDrawData(i, - self.arrayRawData[i]) - else: - try: - [aIndex, aValue] = split(value, ' ') - aIndex = atoi(aIndex) - aValue = atof(aValue) - if (self.arrayRawData[aIndex] != aValue and \ - aIndex >= 0 and \ - aIndex < self.arrayLength): - self.arrayRawData[aIndex] = aValue - self.arrayDrawData[aIndex] = self.getDrawData(aIndex, - aValue) - except: - pass - self.Refresh() - def getDrawData(self, index, value): - (xSize, ySize) = self.GetSize() - div = float(self.arrayLength - 1) - if (div != 0): - xScale = xSize / div - else: - xScale = 1 - div = float(self.max - self.min) - if (div != 0): - yScale = ySize / div - else: - yScale = 1 - yOffset = int(self.max * yScale) - x = int(xScale * index) - y = yOffset - int(yScale * value) - pnt = (x,y) - return pnt - def setSize(self, size): - self.SetSize(size) - if (self.selected): - self.relocateTags() - for i in range(0, len(self.arrayRawData)): - self.arrayDrawData[i] = self.getDrawData(i, - self.arrayRawData[i]) - self.Refresh() - def editCallback(self, editValues): - try: - self.setPosition((atoi(editValues[0]), atoi(editValues[1]))) - except: - dlg = wxMessageDialog(self.parentApp.mainFrame, - "Invalid Position", - "Edit Error", - wxOK) - dlg.ShowModal() - dlg.Destroy() - try: - self.setSize(wxSize(atoi(editValues[2]), atoi(editValues[3]))) - except: - dlg = wxMessageDialog(self.parentApp.mainFrame, - "Invalid Size", - "Edit Error", - wxOK) - dlg.ShowModal() - dlg.Destroy() - try: - self.min = atof(editValues[6]) - except: - dlg = wxMessageDialog(self.parentApp.mainFrame, - "Invalid Minimum", - "Edit Error", - wxOK) - dlg.ShowModal() - dlg.Destroy() - try: - self.max = atof(editValues[7]) - except: - dlg = wxMessageDialog(self.parentApp.mainFrame, - "Invalid Maximum", - "Edit Error", - wxOK) - dlg.ShowModal() - dlg.Destroy() - self.setSendSymbol(editValues[4]) - self.setReceiveSymbol(editValues[5]) - self.SetBackgroundColour(editValues[8]) - self.SetForegroundColour(editValues[9]) - def eEdit(self, event): - editor = controlEditor(self) - editor.addEditItem("X Position:", - TEXTEDITINPUT, - self.GetPosition()[0]) - editor.addEditItem("Y Position:", - TEXTEDITINPUT, - self.GetPosition()[1]) - editor.addEditItem("Width:", - TEXTEDITINPUT, - self.GetSize()[0]) - editor.addEditItem("Height:", - TEXTEDITINPUT, - self.GetSize()[1]) - editor.addEditItem("S Symbol:", - TEXTEDITINPUT, - self.getSendSymbol()) - editor.addEditItem("R Symbol:", - TEXTEDITINPUT, - self.getReceiveSymbol()) - editor.addEditItem("Minumum:", - TEXTEDITINPUT, - repr(self.min)) - editor.addEditItem("Maximum:", - TEXTEDITINPUT, - repr(self.max)) - editor.addEditItem("B Color:", - COLOREDITINPUT, - self.GetBackgroundColour()) - editor.addEditItem("F Color:", - COLOREDITINPUT, - self.GetForegroundColour()) - editor.edit() - def ePaint(self, event): - event.Skip() - myDC = wxPaintDC(self) - myDC.BeginDrawing() - myDC.SetPen(wxPen(self.GetForegroundColour(), 1, wxSOLID)) - myDC.SetBrush(wxBrush("#000000", wxTRANSPARENT)) - myDC.DrawLines(self.arrayDrawData) - myDC.EndDrawing() - def eDrawMotion(self, event): - if (self.mouseCaptured): - (mouseX, mouseY) = event.GetPosition() - div = float(self.arrayLength - 1) - if (div != 0): - xScale = self.GetSize()[0] / div - else: - xScale = 1 - div = float(self.max - self.min) - if (div != 0): - yScale = self.GetSize()[1] / div - else: - yScale = 1 - yOffset = int(self.max * yScale) - if (xScale != 0): - x = int(mouseX / xScale) - else: - x = 0 - if (yScale != 0): - y = self.max - (mouseY / yScale) - else: - y = 0 - if (x >= 0 and x < self.arrayLength and \ - y >= self.min and y <= self.max): - self.arrayRawData[x] = y - self.arrayDrawData[x] = self.getDrawData(x, y) - self.Refresh() - self.sendMessage(repr(x) + " " + repr(y)) - def eLeftDown(self, event): - if (self.editMode): - if (event.ControlDown()): - if (self.isSelected()): - self.deselect() - else: - self.select() - else: - self.parentApp.deselectOthers(self.GetId()) - self.select() - else: - event.Skip() - self.eStartCapture(event) - def eStartCapture(self, event): - if (not self.mouseCaptured): - self.CaptureMouse() - self.mouseCaptured = True - EVT_LEFT_UP(self, self.eEndCapture) - EVT_MOTION(self, self.eDrawMotion) - def eEndCapture(self, event): - if (self.mouseCaptured): - self.ReleaseMouse() - self.mouseCaptured = False - self.Disconnect(-1, wxEVT_MOTION) - self.Disconnect(-1, wxEVT_LEFT_UP) - def eCaptureMouse(self, event): - pass - -# Class for clickable image -# seems to have problems capturing the mouse? -class mImage(mMouseArea, wxStaticBitmap): - def __init__(self, parentApp, type, id, filepath, - pos, sSym, rSym, conn): - self.filename = filepath - self.image = wxImage(self.filename, - wxBITMAP_TYPE_ANY) - tempBitmap = self.image.ConvertToBitmap() - if (not tempBitmap.Ok()): - raise Exception - wxStaticBitmap.__init__(self, parentApp.mainFrame.mainPanel, id, - tempBitmap, pos, wxDefaultSize) - mControl.__init__(self, parentApp, type, sSym, rSym, conn) - self.resetBackground = True - self.mouseCaptured = False - EVT_LEFT_DOWN(self, self.eLeftDown) - EVT_MIDDLE_DOWN(self, self.eMiddleDown) - EVT_MIDDLE_UP(self, self.eMiddleUp) - EVT_RIGHT_UP(self, self.eRightUp) - def sendMouseInfo(self, xPos, yPos, buttonNum, buttonStatus): - xPosStr = repr(xPos) - yPosStr = repr(yPos) - if (buttonNum > -1): - buttonNumStr = repr(buttonNum) - buttonStatusStr = repr(buttonStatus) - self.sendMessage(xPosStr + " " + \ - yPosStr + " " + \ - buttonNumStr + " " + \ - buttonStatusStr) - else: - self.sendMessage(xPosStr + " " + yPosStr) - def resize(self, deltaPos): - if (self.editMode): - xSize = self.GetSize()[0] + deltaPos[0] - ySize = self.GetSize()[1] + deltaPos[1] - if (xSize > 0 and ySize > 0): - if (xSize <= self.image.GetWidth() and - ySize <= self.image.GetHeight()): - self.setSize((xSize, ySize)) - elif (xSize <= self.image.GetWidth()): - self.setSize((xSize, self.GetSize()[1])) - elif (ySize <= self.image.GetHeight()): - self.setSize((self.GetSize()[0], ySize)) - def setSize(self, size): - self.SetSize(size) - if (self.selected): - self.relocateTags() - newImage = self.image.GetSubImage((0,0,size[0],size[1])) - newBitmap = newImage.ConvertToBitmap() - self.SetBitmap(newBitmap) - def setEditMode(self, mode): - if (mode): - if (not self.editMode): - EVT_RIGHT_DOWN(self, self.eRightDown) - self.moveTag = controlEditTag(self, - (0,0), - wxBLACK, - wxCURSOR_CROSS) - self.BLResizeTag = controlResizeTag(self, - (1,0), - RESIZETAGCOLOR, - wxCURSOR_SIZEWE) - self.TRResizeTag = controlResizeTag(self, - (0,1), - RESIZETAGCOLOR, - wxCURSOR_SIZENS) - self.BRResizeTag = controlResizeTag(self, - (1,1), - RESIZETAGCOLOR, - wxCURSOR_SIZENWSE) - self.editMode = True - else: - if (self.editMode): - self.Disconnect(-1, wxEVT_RIGHT_DOWN) - self.deselect() - self.moveTag.Destroy() - self.BLResizeTag.Destroy() - self.TRResizeTag.Destroy() - self.BRResizeTag.Destroy() - self.editMode = False - def Refresh(self): - if (self.filename != self.GetLabel()): - self.SetLabel(self.filename) - wxStaticBitmap.Refresh(self) - wxYield() - self.parentApp.mainFrame.mainPanel.Refresh() - def SetLabel(self, label): - self.filename = label - self.image = wxImage(self.filename, - wxBITMAP_TYPE_ANY) - tempBitmap = self.image.ConvertToBitmap() - self.SetBitmap(tempBitmap) - self.setSize((self.image.GetWidth(), self.image.GetHeight())) - wxStaticBitmap.Refresh(self) - self.parentApp.mainFrame.mainPanel.Refresh() - def GetLabel(self): - return self.filename - def PDAction(self, value): - if (value[0:4] == "hide"): - self.Show(False) - # self.parentApp.mainFrame.mainPanel.Refresh() - elif (value[0:4] == "show"): - self.Show(True) - # self.parentApp.mainFrame.mainPanel.Refresh() - elif (value[0:6] == "rotate"): - theta = atof(value[6:len(value)]) * math.pi / 180 - tempImage = wxImage(self.filename,wxBITMAP_TYPE_ANY) - bgColor = self.parentApp.mainFrame.mainPanel.GetBackgroundColour() - tempImage.SetMaskColour(bgColor.Red(), - bgColor.Green(), - bgColor.Blue()) - rotateImage = tempImage.Rotate(theta, (0,0), True) - bgColor = self.parentApp.mainFrame.mainPanel.GetBackgroundColour() - self.SetBitmap(rotateImage.ConvertToBitmap()) - wxStaticBitmap.Refresh(self) - self.parentApp.mainFrame.mainPanel.Refresh() - else: - if (value[0:2] == "./" or - value[0:3] == "../"): - value = scrubPath(self.parentApp.filepath + value) - self.SetLabel(value) - def editCallback(self, editValues): - try: - self.setPosition((atoi(editValues[0]), atoi(editValues[1]))) - except: - dlg = wxMessageDialog(self.parentApp.mainFrame, - "Invalid Size", - "Edit Error", - wxOK) - dlg.ShowModal() - dlg.Destroy() - try: - self.setSize(wxSize(atoi(editValues[2]), atoi(editValues[3]))) - except: - dlg = wxMessageDialog(self.parentApp.mainFrame, - "Invalid Size", - "Edit Error", - wxOK) - dlg.ShowModal() - dlg.Destroy() - self.setSendSymbol(editValues[4]) - self.setReceiveSymbol(editValues[5]) - self.SetLabel(editValues[6]) - def eEdit(self, event): - editor = controlEditor(self) - editor.addEditItem("X Position:", - TEXTEDITINPUT, - self.GetPosition()[0]) - editor.addEditItem("Y Position:", - TEXTEDITINPUT, - self.GetPosition()[1]) - editor.addEditItem("width:", - TEXTEDITINPUT, - self.GetSize()[0]) - editor.addEditItem("Height:", - TEXTEDITINPUT, - self.GetSize()[1]) - editor.addEditItem("S Symbol:", - TEXTEDITINPUT, - self.getSendSymbol()) - editor.addEditItem("R Symbol:", - TEXTEDITINPUT, - self.getReceiveSymbol()) - editor.addEditItem("File:", - FILEEDITINPUT, - self.GetLabel()) - editor.edit() - def eStartCapture(self, event): - if (not self.mouseCaptured): - self.mouseCaptured = True - EVT_LEFT_UP(self, self.eEndCapture) - EVT_MOTION(self, self.eCaptureMouse) - def eEndCapture(self, event): - if (self.mouseCaptured): - self.mouseCaptured = False - self.sendMouseInfo(event.GetPosition()[0], - event.GetPosition()[1], - 0, - 0) - self.Disconnect(-1, wxEVT_MOTION) - self.Disconnect(-1, wxEVT_LEFT_UP) - -class editItem: - def __init__(self, title, dataType, value): - self.title = title - self.dataType = dataType - self.value = value - def setValue(self, value): - self.value = value - -class editSetButton(wxButton): - def __init__(self, parent, position, size, value): - wxButton.__init__(self, parent, -1, "Set", position, size) - self.parent = parent - self.value = value - EVT_BUTTON(parent, self.GetId(), self.eClick) - def GetValue(self): - return self.value - -class editSetFontButton(editSetButton): - def eClick(self, event): - self.value = getFontFromDialog(self.parent, self.value) - -class editSetColorButton(editSetButton): - def eClick(self, event): - self.value = getColorFromDialog(self.parent, self.value) - -class editSetFileButton(editSetButton): - def eClick(self, event): - tempFile = getFileFromDialog(self.parent, self.value) - if (tempFile): - self.value = tempFile - -class editDropdown(wxComboBox): - def __init__(self, parent, position, size, values): - wxComboBox.__init__(self, - parent, - -1, - values[0], - position, - size, - values, - wxCB_READONLY) - self.parent = parent - -class controlEditor: - def __init__(self, control): - self.control = control - self.editItems = [] - self.valueControls = [] - def addEditItem(self, title, dataType, value): - self.editItems.append(editItem(title, dataType, value)) - def edit(self): - global lastEditWindowPosition - if (lastEditWindowPosition == (-1, -1)): - lastEditWindowPosition = ( \ - self.control.parentApp.mainFrame.GetPosition()[0] + 20, - self.control.parentApp.mainFrame.GetPosition()[1] + 20) - self.editFrame = wxMiniFrame(self.control, - -1, - "Edit Control", - lastEditWindowPosition, - (100, 200), - wxCAPTION | wxSTAY_ON_TOP) - self.editFrame.editPanel = wxPanel(self.editFrame, -1, (0,0), (-1, -1)) - labels = [] - self.valueControls = [] - count = 0 - newLabel = wxStaticText(self.editFrame.editPanel, - -1, - self.editItems[0].title, - DEFEDITPOS) - labels.append(newLabel) - if (type(self.editItems[0].value) == type(0)): - value = repr(self.editItems[0].value) - else: - value = self.editItems[0].value - if (self.editItems[0].dataType == TEXTEDITINPUT): - newControl = wxTextCtrl(self.editFrame.editPanel, - -1, - value, - (labels[0].GetPosition()[0] \ - + 65, - labels[0].GetPosition()[1] - 2), - (60,-1)) - if (self.editItems[0].dataType == FONTEDITINPUT): - newControl = editSetFontButton(self.editFrame.editPanel, - (labels[0].GetPosition()[0] + 65, - labels[0].GetPosition()[1] - 2), - (60, -1), - self.editItems[0].value) - if (self.editItems[0].dataType == COLOREDITINPUT): - newControl = editSetColorButton(self.editFrame.editPanel, - (labels[0].GetPosition()[0] + 65, - labels[0].GetPosition()[1] - 2), - (60, -1), - self.editItems[0].value) - if (self.editItems[0].dataType == FILEEDITINPUT): - newControl = editSetFileButton(self.editFrame.editPanel, - (labels[0].GetPosition()[0] + 65, - labels[0].GetPosition()[1] - 2), - (60, -1), - self.editItems[0].value) - if (self.editItems[0].dataType == DROPDOWNEDITINPUT): - newControl = editDropdown(self.editFrame.editPanel, - labels[0].GetPosition()[0] + 65, - labels[0].GetPosition()[1] - 2, - (60, -1), - self.editItems[0].value) - self.valueControls.append(newControl) - for i in self.editItems[1:]: - count = count + 1 - if (type(i.value) == type(0)): - value = repr(i.value) - else: - value = i.value - newLabel = wxStaticText(self.editFrame.editPanel, - -1, - i.title, - (labels[count - 1].GetPosition()[0], - self.valueControls[count - 1].GetPosition()[1] \ - + self.valueControls[count - 1].GetSize()[1] + 10)) - labels.append(newLabel) - if (i.dataType == TEXTEDITINPUT): - newControl = wxTextCtrl(self.editFrame.editPanel, - -1, - value, - (self.valueControls[count - 1].GetPosition()[0], - labels[count].GetPosition()[1] - 2), - self.valueControls[count - 1].GetSize()) - if (self.editItems[count].dataType == FONTEDITINPUT): - newControl = editSetFontButton(self.editFrame.editPanel, - (self.valueControls[count - 1].GetPosition()[0], - labels[count].GetPosition()[1] - 2), - self.valueControls[count - 1].GetSize(), - self.editItems[count].value) - if (self.editItems[count].dataType == COLOREDITINPUT): - newControl = editSetColorButton(self.editFrame.editPanel, - (self.valueControls[count - 1].GetPosition()[0], - labels[count].GetPosition()[1] - 2), - self.valueControls[count - 1].GetSize(), - self.editItems[count].value) - if (self.editItems[count].dataType == FILEEDITINPUT): - newControl = editSetFileButton(self.editFrame.editPanel, - (self.valueControls[count - 1].GetPosition()[0], - labels[count].GetPosition()[1] - 2), - self.valueControls[count - 1].GetSize(), - self.editItems[count].value) - if (self.editItems[count].dataType == DROPDOWNEDITINPUT): - newControl = editDropdown(self.editFrame.editPanel, - (self.valueControls[count - 1].GetPosition()[0], - labels[count].GetPosition()[1] - 2), - self.valueControls[count - 1].GetSize(), - self.editItems[count].value) - self.valueControls.append(newControl) - line = wxStaticLine(self.editFrame.editPanel, -1, - (0, self.valueControls[-1].GetPosition()[1] \ - + self.valueControls[-1].GetSize()[1] + 20), - (self.valueControls[0].GetPosition()[0] \ - + self.valueControls[0].GetSize()[0] + 10, 1)) - okButton = wxButton(self.editFrame.editPanel, -1, "OK", - (labels[0].GetPosition()[0], - line.GetPosition()[1] + 15), - (self.valueControls[0].GetPosition()[0] \ - + self.valueControls[0].GetSize()[0], -1)) - self.editFrame.SetSize((okButton.GetPosition()[0] + \ - okButton.GetSize()[0] + 10, - okButton.GetPosition()[1] + okButton.GetSize()[1] \ - + (okButton.GetPosition()[1] - line.GetPosition()[1]) \ - + 20)) - self.editFrame.editPanel.SetSize(self.editFrame.GetSize()) - EVT_BUTTON(self.editFrame.editPanel, - okButton.GetId(), - self.eOk) - self.editFrame.Show(True) - self.editFrame.MakeModal(True) - def eOk(self, event): - global lastEditWindowPosition - returnValues = [] - for i in range(0, len(self.valueControls)): - returnValues.append(self.valueControls[i].GetValue()) - lastEditWindowPosition = self.editFrame.GetPosition() - self.editFrame.MakeModal(False) - self.editFrame.Destroy() - self.control.editCallback(returnValues) - diff --git a/extensions/gripd/gripdFunctions.py b/extensions/gripd/gripdFunctions.py deleted file mode 100644 index 2bf0a551650e64b2b927443cf40d0a886b751788..0000000000000000000000000000000000000000 --- a/extensions/gripd/gripdFunctions.py +++ /dev/null @@ -1,191 +0,0 @@ -## GrIPD v0.1.1 - Graphical Interface for Pure Data -## Copyright (C) 2003 Joseph A. Sarlo -## -## 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. -## -## jsarlo@ucsd.edu - -from wxPython.wx import * -from string import * -import os -import sys - -VERSION = "0.1.1" -MAXDEC = 9 -DECTOHEXOFFSET = 87 -EVT_RAISE_TAGS_ID = wxNewId() - -debugFile = sys.stderr - -def setDebugFile(filename): - global debugFile - if (filename != ""): - debugFile = open(filename, "w", -1) - -def debugLog(logString): - debugFile.write(logString + "\n") - debugFile.flush() - -def getColorFromDialog(parent, initColor): - colorData = wxColourData() - colorData.SetColour(initColor) - colorData.SetCustomColour(0, initColor) - colorDialog = wxColourDialog(parent, colorData) - colorDialog.ShowModal() - colorData = colorDialog.GetColourData() - return colorData.GetColour() - -def getFontFromDialog(parent, initFont): - fontData = wxFontData() - fontData.SetInitialFont(initFont) - fontDialog = wxFontDialog(parent, fontData) - fontDialog.ShowModal() - fontData = fontDialog.GetFontData() - return fontData.GetChosenFont() - -def getFileFromDialog(parent, initFile): - if (initFile == ""): - initFile = parent.parentApp.filepath - fileDialog = wxFileDialog(parent, - "Open file", - getDirectory(initFile), - initFile, - "*.*", - wxOPEN) - if (fileDialog.ShowModal() == wxID_OK): - return fileDialog.GetPath() - else: - return "" - -def colorTuple2HexString(tuple): - def dec2HexString(value): - if (value > MAXDEC): - return chr(value + DECTOHEXOFFSET) - else: - return repr(value) - hexString = "" - for i in range(0, 3): - hexString = hexString + dec2HexString(int(round(tuple[i] / 16))) - hexString = hexString + dec2HexString(int(round(tuple[i] \ - - (int(tuple[i] / 16) * 16)))) - return hexString - -def selectIntersect(rect1, rect2): - left1 = rect1[0] - top1 = rect1[1] - right1 = rect1[0] + rect1[2] - bottom1 = rect1[1] + rect1[3] - left2 = rect2[0] - top2 = rect2[1] - right2 = rect2[0] + rect2[2] - bottom2 = rect2[1] + rect2[3] - if ((left1 < left2) and (right1 > right2) - and (top1 < top2) and (bottom1 > bottom2)): - return False - if (((left2 > left1) and (left2 < right1)) - or ((right2 > left1) and (right2 < right1)) - or ((left2 < left1) and (right2 > right1))): - if ((top2 > top1) and (top2 < bottom1)): - return True - elif ((bottom2 >top1) and (bottom2 < bottom1)): - return True - elif ((top2 < top1) and (bottom2 > bottom1)): - return True - return False - -def getDirectory(path): - if (os.name == "posix"): - index = rfind(path, "/") - if (index > -1): - tempPath = path[0:index] - while (tempPath[len(tempPath) - 1] == "/"): - tempPath = tempPath[0:len(tempPath) - 1] - tempPath = tempPath + "/" - else: - tempPath = "" - else: - index = max(rfind(path, "\\"), rfind(path, "/")) - if (index > -1): - tempPath = path[0:index] - while (tempPath[len(tempPath) - 1] == "/" or - tempPath[len(tempPath) - 1] == "\\"): - tempPath = tempPath[0:len(tempPath) - 1] - tempPath = tempPath + "\\" - else: - tempPath = "" - return tempPath - -def replaceSlashes(path): - path = replace(path, "/", "\\") - return path - -def scrubPath(path): - if (os.name == "posix"): - while (find(path, "/../") > 0): - index = rfind(path[0:find(path, "/../")], "/") - path = path[0:index] + path[find(path, "/../") + 3:len(path)] - while (find(path, "/./") > 0): - index = find(path, "/./") - path = path[0:index] + path[index + 2:len(path)] - path = replace(path, "//", "/") - else: - path = replaceSlashes(path) - while (find(path, "\\..\\") > 0): - index = rfind(path[0:find(path, "\\..\\")], "\\") - path = path[0:index] + path[find(path, "\\..\\") + 3:len(path)] - while (find(path, "\\.\\") > 0): - index = find(path, "\\.\\") - path = path[0:index] + path[index + 2:len(path)] - path = replace(path, "\\\\", "\\") - return path - -def makeAbsolutePath(superPath, subPath): - if (os.name == "posix"): - if (find(subPath, "./") == 0 or - find(subPath, "../") == 0): - tempPath = superPath + subPath - elif (subPath[0] != "/"): - tempPath = superPath + "/" + subPath - else: - tempPath = subPath - else: - if (find(subPath, "/") >= 0): - subPath = replaceSlashes(subPath) - if (find(subPath, ".\\") == 0 or - find(subPath, "..\\") == 0): - tempPath = superPath + subPath - elif (subPath[1] != ":"): - tempPath = superPath + "\\" + subPath - else: - tempPath = subPath - return scrubPath(tempPath) - -def makeRelativePath(superPath, subPath): - if (os.name != "posix"): - superPath = lower(superPath) - subPath = lower(subPath) - if (find(subPath, superPath) == 0 and superPath != ""): - tempPath = "./" + subPath[len(superPath):len(subPath)] - else: - tempPath = subPath - return scrubPath(tempPath) - - -class RaiseTagsEvent(wxPyEvent): - def __init__(self): - wxPyEvent.__init__(self) - self.SetEventType(EVT_RAISE_TAGS_ID) - - diff --git a/extensions/gripd/gripdMain.py b/extensions/gripd/gripdMain.py deleted file mode 100644 index 1e20cb5832f035cac6a4ed3965f4a1c07326ed0a..0000000000000000000000000000000000000000 --- a/extensions/gripd/gripdMain.py +++ /dev/null @@ -1,2337 +0,0 @@ -## GrIPD v0.1.1 - Graphical Interface for Pure Data -## Copyright (C) 2003 Joseph A. Sarlo -## -## 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. -## -## jsarlo@ucsd.edu - -from wxPython.wx import * -from gripdControls import * -from gripdFunctions import * -from socket import * -from string import * - -midi = 0 -joystick = 0 -DEFMAINFRAMESIZE = (600, 400) -DEFCONTROLPOS = (20,20) -ID_ABOUT = 100 -ID_EXIT = 101 -ID_ADD = 102 -ID_EDITMODE = 103 -ID_EDIT = 104 -ID_DELETE = 105 -ID_CONNECT = 106 -ID_OPEN = 107 -ID_SAVE = 108 -ID_OPTIONS = 109 -ID_BUTTONMENU = 110 -ID_SLIDERMENU = 111 -ID_GAUGEMENU = 112 -ID_SELECTALL = 113 -ID_NEW = 114 -ID_DUPLICATE = 115 -ID_ALIGNVERT = 116 -ID_ALIGNHORZ = 117 -ID_REFRESH = 118 -ID_BUTTON = 200 -ID_TOGGLE = 201 -ID_VSLIDER = 202 -ID_HSLIDER = 203 -ID_RECT = 204 -ID_TEXT = 205 -ID_SETOPTS = 206 -ID_DISCONNECT = 207 -ID_VGAUGE = 208 -ID_HGAUGE = 209 -ID_CHECKBOX = 210 -ID_TEXTBOX = 211 -ID_SPINBUTTON = 212 -ID_MOUSEAREA = 213 -ID_ENABLEJOY = 214 -ID_ENABLEKEY = 215 -ID_LOCKONPERF = 216 -ID_RADIOBUTTON = 217 -ID_IMAGE = 218 -ID_ALWAYSONTOP = 219 -ID_SHOWGRID = 220 -ID_SNAPTOGRID = 221 -ID_ENABLEMIDI = 222 -ID_GRAPH = 223 -COMMANDCHAR = '!' -DEFHOST = 'localhost' -DEFPORT = 3490 -CONNECTINTERVAL = 1000 -TIMEOUT = 20 -HIDECOMMAND = "!hide" -SHOWCOMMAND = "!show" -EXITCOMMAND = "!exit" -LOCKCOMMAND = "!lock" -UNLOCKCOMMAND = "!unlock" -SETTITLECOMMAND = "!settitle" -CLOSECOMMAND = "!disconnect" -PINGCOMMAND = "!ping" -OPENPANELCOMMAND = "!openpanel" -SAVEPANELCOMMAND = "!savepanel" -BEGINCONTROLMARKER = "!BEGIN-CONTROL" -ENDCONTROLMARKER = "!END-CONTROL" -DEFOPTIONSPOS = (5, 5) -DUPPOSOFFSET = (10, 10) -SMALLCHARMOVE = 1 -LARGECHARMOVE = 20 -BGCOLORDIF = 30 -DEFSOCKETTIMERTIME = 5 -DEFJOYPOLLTIME = 10 -DEFMIDIPOLLTIME = 5 -DEFMIDIDEVICE1 = 0 -DEFMIDIDEVICE2 = 1 -PAIRSEPCHAR = chr(29) -SYMMSGSEP = chr(31) -FILETOKENSEP = "|" -MAXPINGCOUNT = 10 -PINGPOLLTIME = 1000 -MIDINOTEMESSAGE = "9" -MIDICTLMESSAGE = "b" -MIDIPGMMESSAGE = "c" -SETARRAYSTRING = "!setArray" - -if (os.name == "posix"): - FUGEFACTOR = 1 - DEFJOYDEVICE1 = "/dev/js0" - DEFJOYDEVICE2 = "/dev/js1" -else: - FUGEFACTOR = 2 - DEFJOYDEVICE1 = "1" - DEFJOYDEVICE2 = "2" - -# Main application class -class mainApp(wxPySimpleApp): - def __init__(self, args): - self.args = args - wxApp.__init__(self, False) - try: - wxLog_SetLogLevel(0) - except: - pass - def OnInit(self): - global midi - global joystick - openAuto = False - newPort = 0 - filename = "" - locked = False - self.path = scrubPath(getDirectory(self.args[0])) - setDebugFile(self.path + "/log.txt") - self.filepath = "" - if (len(self.args) > 1): - filename = self.args[1] - self.filepath = getDirectory(filename) - if (self.filepath == ""): - self.filepath = self.path - self.filepath = makeAbsolutePath(self.path, self.filepath) - if (len(self.args) > 2): - newPort = atoi(self.args[2]) - if (len(self.args) > 3): - openAuto = atoi(self.args[3]) - if (len(self.args) > 4): - locked = atoi(self.args[4]) - self.midiAvailable = True - self.joystickAvailable = True - try: - optionsFile = open(self.path + "/gripd.opt", 'r', -1) - options = optionsFile.readlines() - for option in options: - [key, value] = split(option, '=') - key = strip(key) - value = strip(value) - if (lower(key) == 'midi'): - if (lower(value) == 'false'): - self.midiAvailable = False - if (lower(key) == 'joystick'): - if (lower(value) == 'false'): - self.joystickAvailable = False - except: - pass - if (self.midiAvailable): - import midi - if (self.joystickAvailable): - import joystick - wxInitAllImageHandlers() - if (not os.name == "posix"): - self.icon = wxIcon(self.path + "icon.pic", wxBITMAP_TYPE_ICO) - self.jsImage = wxImage(self.path + "joystick.xpm", - wxBITMAP_TYPE_XPM).ConvertToBitmap() - self.jsImageX = wxImage(self.path + "joystickX.xpm", - wxBITMAP_TYPE_XPM).ConvertToBitmap() - self.jsImageA = wxImage(self.path + "joystickA.xpm", - wxBITMAP_TYPE_XPM).ConvertToBitmap() - self.midiImage = wxImage(self.path + "midi.xpm", - wxBITMAP_TYPE_XPM).ConvertToBitmap() - self.midiImageX = wxImage(self.path + "midiX.xpm", - wxBITMAP_TYPE_XPM).ConvertToBitmap() - self.midiImageA = wxImage(self.path + "midiA.xpm", - wxBITMAP_TYPE_XPM).ConvertToBitmap() - self.connectImage = wxImage(self.path + "connect.xpm", - wxBITMAP_TYPE_XPM).ConvertToBitmap() - self.connectImageX = wxImage(self.path + "connectX.xpm", - wxBITMAP_TYPE_XPM).ConvertToBitmap() - self.editMode = False - # socket stuff - self.host = DEFHOST - self.port = DEFPORT - self.connection = nullConnection() - self.connected = False - # All controls (on mainPanel) - self.controlList = [] - # Selected controls, Should speed up editing - # DO NOT use to loop through selected controls to deselect - # <control>.deselect() modifies selectedControlList - self.selectedControlList = [] - # If currently using selecting with selectRect - self.selecting = False - # If currently dragging a control - self.dragging = False - # Keys currently depressed - self.keysDown = [] - # If left mouse was clicked on panel - # not on control or tag, for selectRect - self.leftDownOnPanel = False - # If current GUI has been changed since last save - self.edited = False - # control counters (for send/receive syms) - self.resetControlIndecies() - # timer to check connection status - self.pTimer = pingTimer(self) - # set ping count - self.pingCount = 0 - # timer to poll for connections - self.cTimer = connectionTimer(self) - # socket polling time - self.pollTime = DEFSOCKETTIMERTIME - # timer to poll socket for receive messages - self.sTimer = socketTimer(self) - # timer to poll joystick - self.joyTimer = joystickTimer(self) - # joystick poll time - self.joyPollTime = DEFJOYPOLLTIME - # joystick device string - self.joyDevice1 = DEFJOYDEVICE1 - self.joyDevice2 = DEFJOYDEVICE2 - # joystick device id - self.joyID1 = -1 - self.joyID2 = -1 - # joystick on - self.joystickEnabled = False - self.jsOn1 = False - self.jsOn2 = False - # timer to poll midi - self.midiTimer = midiTimer(self) - # midi poll time - self.midiPollTime = DEFMIDIPOLLTIME - # midi device numbers - self.midiDevice1 = DEFMIDIDEVICE1 - self.midiDevice2 = DEFMIDIDEVICE2 - # midi device id - self.midiID1 = -1 - self.midiID2 = -1 - # midi on - self.midiEnabled = False - self.midiOn1 = False - self.midiOn2 = False - # send keystrokes - self.sendKeys = True - # grid sized - self.gridSpace = 10 - # display grid - self.showGrid = False - # snap moved controls to grid - self.snapToGrid = False - # locked or unlocked GUI - self.locked = locked - self.openAuto = openAuto - self.frameTitle = "GrIPD" - self.alwaysOnTop = False - self.resizable = False - self.mainFrame = gripdFrame(self, -1, self.frameTitle, - (-1, -1), - self.resizable, self.locked, - self.alwaysOnTop) - self.SetTopWindow(self.mainFrame) - # for catching keystokes - EVT_CHAR(self.mainFrame.mainPanel, self.eChar) - EVT_KEY_UP(self.mainFrame.mainPanel, self.eKeyUp) - EVT_KEY_DOWN(self.mainFrame.mainPanel, self.eKeyDown) - if (not os.name == "posix"): - EVT_CHAR_HOOK(self.mainFrame, self.eChar) - EVT_CLOSE(self.mainFrame, self.eClose) - EVT_SIZE(self.mainFrame, self.eSize) - self.mainFrame.positionIcons() - if ((filename != "0") and (filename != "")): - self.openFromDisk(filename) - if (newPort): - self.port = newPort - if (self.openAuto): - self.connect() - else: - self.mainFrame.Show(True) - return True - -## Functions ## - - def createControl(self, type, tIndex, tString, filepath = ""): - if (self.editMode and not self.dragging): - indexStr = tString + repr(tIndex) - clientMousePos = self.mainFrame.mainPanel.ScreenToClient( \ - wxGetMousePosition()) - coords = (clientMousePos[0] + 4, clientMousePos[1] + 4) - control = self.addControl(type, indexStr, coords, - "s" + indexStr, "r" + indexStr, filepath) - control.select() - # I'm not sure why this is necessary - try: - wxYield() - except: - pass - control.grab() - def addControl(self, type, label, pos, sSym, rSym, filepath = ""): - tControl = NULL - if (type == MBUTTONTYPE): - self.buttonIndex = self.buttonIndex + 1 - tControl = mButton(self, type, -1, - label, pos, sSym, rSym, self.connection) - if (type == MTOGGLETYPE): - self.toggleIndex = self.toggleIndex + 1 - tControl = mToggle(self, type, -1, - label, pos, sSym, rSym, self.connection) - if (type == MVSLIDERTYPE): - self.sliderIndex = self.sliderIndex + 1 - tControl = mSlider(self, type, -1, label, pos, - wxSL_VERTICAL, sSym, rSym, self.connection) - if (type == MHSLIDERTYPE): - self.sliderIndex = self.sliderIndex + 1 - tControl = mSlider(self, type, -1, label, pos, - wxSL_HORIZONTAL, sSym, rSym, self.connection) - if (type == MRECTTYPE): - self.rectIndex = self.rectIndex + 1 - tControl = mRectangle(self, type, -1, - label, pos, sSym, rSym, self.connection) - if (type == MTEXTTYPE): - self.textIndex = self.textIndex + 1 - tControl = mText(self, type, -1, - label, pos, sSym, rSym, self.connection) - if (type == MVGAUGETYPE): - self.gaugeIndex = self.gaugeIndex + 1 - tControl = mGauge(self, type, -1, label, pos, - wxGA_VERTICAL, sSym, rSym, self.connection) - if (type == MHGAUGETYPE): - self.gaugeIndex = self.gaugeIndex + 1 - tControl = mGauge(self, type, -1, label, pos, - wxGA_HORIZONTAL, sSym, rSym, self.connection) - if (type == MCHECKBOXTYPE): - self.checkBoxIndex = self.checkBoxIndex + 1 - tControl = mCheckBox(self, type, -1, - label, pos, sSym, rSym, self.connection) - if (type == MRADIOBUTTONTYPE): - self.radioButtonIndex = self.radioButtonIndex + 1 - tControl = mRadioButton(self, type, -1, - label, pos, sSym, rSym, 0, self.connection) - if (type == MRADIONEWTYPE): - self.radioButtonIndex = self.radioButtonIndex + 1 - tControl = mRadioButton(self, type, -1, - label, pos, sSym, rSym, wxRB_GROUP, - self.connection) - if (type == MTEXTBOXTYPE): - self.textBoxIndex = self.textBoxIndex + 1 - tControl = mTextBox(self, type, -1, label, - pos, sSym, rSym, self.connection) - if (type == MSPINBUTTONTYPE): - self.spinButtonIndex = self.spinButtonIndex + 1 - tControl = mSpinButton(self, type, -1, label, - pos, sSym, rSym, self.connection) - if (type == MMOUSEAREATYPE): - self.mouseAreaIndex = self.mouseAreaIndex + 1 - tControl = mMouseArea(self, type, -1, - pos, sSym, rSym, self.connection) - if (type == MIMAGETYPE): - if (filepath == ""): - filepath = label - filepath = makeAbsolutePath(self.filepath, filepath) - self.imageIndex = self.imageIndex + 1 - try: - tControl = mImage(self, type, -1, - filepath, pos, sSym, rSym, self.connection) - except: - tControl = NULL - if (type == MGRAPHTYPE): - self.graphIndex = self.graphIndex + 1 - tControl = mGraph(self, type, -1, label, pos, sSym, - rSym, self.connection) - if (tControl != NULL): - self.controlList.append(tControl) - return (tControl) - def findControlByID(self, id): - for control in self.controlList: - if (control.GetId() == id): - return(control) - def startMoveControls(self): - for control in self.selectedControlList: - control.startMove() - def moveSelectedControls(self, deltaPos): - self.edited = True - for control in self.selectedControlList: - control.move(deltaPos) - def endMoveControls(self): - for control in self.selectedControlList: - control.endMove() - def endDragMoveControls(self): - for control in self.selectedControlList: - control.endDragMove() - def resizeSelectedControls(self, deltaPos): - self.edited = True - for control in self.selectedControlList: - control.resize(deltaPos) - def moveKey(self, deltaPos): - self.moveSelectedControls(deltaPos) - for control in self.selectedControlList: - control.endMove() - def alignControls(self, dir): - otherDir = 1 - dir - alignVal = 1 - alignPos = [0, 0] - for control in self.selectedControlList: - alignVal = max(alignVal, control.GetPosition()[dir]) - alignPos[dir] = alignVal - for control in self.selectedControlList: - alignPos[otherDir] = control.GetPosition()[otherDir] - control.setPosition(alignPos) - def deselectOthers(self, calledByID): - # Not using selectedControlList since we are removing from it - # as we cycle through the list - for control in self.controlList: - if ((control.GetId() != calledByID) and control.isSelected()): - control.deselect() - def raiseControlTags(self): - if (self.editMode): - for control in self.selectedControlList: - control.relocateTags() - control.refreshTags() - def traverseFocus(self, multi): - if ((len(self.controlList) > 0) and (self.editMode)): - i = -1 - newIndex = 0 - for control in self.controlList: - i = i + 1 - if (control.isSelected()): - newIndex = i + 1 - newIndex = newIndex % len(self.controlList) - self.controlList[newIndex].select() - if (not multi): - self.deselectOthers(self.controlList[newIndex].GetId()) - def parseReceiveBuffer(self, receiveBuffer): - # remove trailing PAIRSEPCHAR - receiveBuffer = receiveBuffer[0:-1] - messagePairs = split(receiveBuffer, PAIRSEPCHAR) - for pair in messagePairs: - (symName, value) = split(pair, SYMMSGSEP) - if (symName[0] == COMMANDCHAR): - if (symName == CLOSECOMMAND): - self.disconnect() - dlg = wxMessageDialog(self.mainFrame, - "Connection closed by PD", - "Connection", wxOK) - dlg.ShowModal() - dlg.Destroy() - if (symName == EXITCOMMAND): - self.close() - elif (symName == LOCKCOMMAND): - self.lock() - elif (symName == UNLOCKCOMMAND): - self.unlock() - elif (symName == SETTITLECOMMAND): - self.frameTitle = value - self.setFrameTitle(value) - elif (symName == HIDECOMMAND): - self.mainFrame.Show(False) - self.connection.send(HIDECOMMAND + \ - SYMMSGSEP + "0" + \ - PAIRSEPCHAR) - elif (symName == SHOWCOMMAND): - self.mainFrame.Show(True) - self.connection.send(SHOWCOMMAND + \ - SYMMSGSEP + "0" + \ - PAIRSEPCHAR) - elif (symName == PINGCOMMAND): - self.pingCount = 0 - elif (symName == OPENPANELCOMMAND): - self.mainFrame.openpanel() - elif (symName == SAVEPANELCOMMAND): - self.mainFrame.savepanel() - else: - for control in self.controlList: - if (symName == control.getReceiveSymbol()): - control.PDAction(value) - def writeControls(self, list, file): - for control in list: - file.write(repr(control.getType()) + "\n") - if (control.type == MIMAGETYPE): - file.write(makeRelativePath(self.filepath, - control.GetLabel()) + "\n") - else: - file.write(control.GetLabel() + "\n") - file.write(repr(control.GetPosition()[0]) + "\n") - file.write(repr(control.GetPosition()[1]) + "\n") - file.write(repr(control.GetSize()[0]) + "\n") - file.write(repr(control.GetSize()[1]) + "\n") - file.write(control.getSendSymbol() + "\n") - file.write(control.getReceiveSymbol() + "\n") - if (control.GetBackgroundColour().Ok()): - file.write("#" + colorTuple2HexString((control.\ - GetBackgroundColour().Red(), - control.\ - GetBackgroundColour().Green(), - control.\ - GetBackgroundColour().Blue()))\ - + "\n") - else: - file.write("#00000\n") - if (control.GetForegroundColour().Ok()): - file.write("#" + colorTuple2HexString((control.\ - GetForegroundColour().Red(), - control.\ - GetForegroundColour().Green(), - control.\ - GetForegroundColour().Blue()))\ - + "\n") - else: - file.write("#000000\n") - if (not control.GetFont().Ok()): - control.SetFont(wxNORMAL_FONT) - file.write(repr(control.GetFont().GetPointSize()) + "\n") - file.write(repr(control.GetFont().GetFamily()) + "\n") - file.write(repr(control.GetFont().GetStyle()) + "\n") - file.write(repr(control.GetFont().GetWeight()) + "\n") - file.write(repr(control.GetFont().GetUnderlined()) + "\n") - file.write(control.GetFont().GetFaceName() + "\n") - if (isinstance(control, mSlider)): - file.write(repr(control.GetMin()) + "\n") - file.write(repr(control.GetMax()) + "\n") - file.write(repr(control.getDirection()) + "\n") - file.write(ENDCONTROLMARKER + "\n") - def readControls(self, list): - newList = [] - for i in range(0, list.count(ENDCONTROLMARKER)): - params = list[0:list.index(ENDCONTROLMARKER)] - type = atoi(params[0]) - label = params[1] - pos = (atoi(params[2]), atoi(params[3])) - size = (atoi(params[4]), atoi(params[5])) - sSym = params[6] - rSym = params[7] - bColor = params[8] - fColor = params[9] - try: - fontSize = atoi(params[10]) - fontFam = atoi(params[11]) - fontStyle = atoi(params[12]) - fontWeight = atoi(params[13]) - fontULine = atoi(params[14]) - fontFace = params[15] - except: - print "Font Error!!!" - if (type == MVSLIDERTYPE or \ - type == MHSLIDERTYPE or \ - type == MVGAUGETYPE or \ - type == MHGAUGETYPE): - min = atoi(params[16]) - max = atoi(params[17]) - dir = atoi(params[18]) - label = [label, min, max, dir] - if (type == MGRAPHTYPE): - min = atof(params[16]) - max = atof(params[17]) - dir = eval(params[18]) - label = [label, min, max, dir] - control = self.addControl(type, label, pos, sSym, rSym) - control.setSize(size) - control.SetBackgroundColour(bColor) - control.SetForegroundColour(fColor) - font = wxFont(fontSize, fontFam, fontStyle, fontWeight, - fontULine, fontFace, wxFONTENCODING_SYSTEM) - control.SetFont(font) - control.setEditMode(self.editMode) - # +1 to include ENDCONTROLMARKER - del list[0:(list.index(ENDCONTROLMARKER) + 1)] - newList.append(control) - return newList - def connect(self): - if (not self.locked): - self.mainFrame.fileMenu.Enable(ID_DISCONNECT, True) - if (not self.cTimer.IsRunning()): - self.cTimer.timeCount = 0 - self.cTimer.Start(CONNECTINTERVAL) - def disconnect(self): - if (self.sTimer.IsRunning()): - self.sTimer.Stop() - try: - self.connection.send(CLOSECOMMAND + SYMMSGSEP + \ - "0" + PAIRSEPCHAR) - except: - pass - self.connection.close() - self.connection = nullConnection() - for control in self.controlList: - control.connection = self.connection - self.cTimer.Stop() - self.pTimer.Stop() - self.pingCount = 0 - if (not self.locked): - self.mainFrame.fileMenu.Enable(ID_CONNECT, True) - self.mainFrame.fileMenu.Enable(ID_DISCONNECT, False) - self.mainFrame.connectIcon.SetBitmap(self.connectImageX) - self.connected = False - def saveToDisk(self, filename): - try: - if (lower(filename[len(filename) - 4:len(filename)]) != ".gpd"): - filename = filename + ".gpd" - file = open(filename, 'w', -1) - self.filepath = getDirectory(filename) - self.filepath = makeAbsolutePath(self.path, self.filepath) - if (self.filepath == ""): - self.filepath = self.path - file.write(repr(self.mainFrame.GetSize()[0]) + "\n") - file.write(repr(self.mainFrame.GetSize()[1]) + "\n") - file.write("#" + colorTuple2HexString((self.mainFrame.mainPanel.\ - GetBackgroundColour().Red(), - self.mainFrame.mainPanel.\ - GetBackgroundColour().Green(), - self.mainFrame.mainPanel.\ - GetBackgroundColour().Blue())) + "\n") - file.write(self.host + "\n") - file.write(repr(self.port) + FILETOKENSEP + - self.joyDevice1 + FILETOKENSEP + - self.joyDevice2 + FILETOKENSEP + - repr(self.pollTime) + FILETOKENSEP + - repr(self.joyPollTime) + FILETOKENSEP + - repr(self.joystickEnabled) + FILETOKENSEP + - repr(self.sendKeys) + FILETOKENSEP + - self.frameTitle + FILETOKENSEP + - repr(self.alwaysOnTop) + FILETOKENSEP + - repr(self.showGrid) + FILETOKENSEP + - repr(self.snapToGrid) + FILETOKENSEP + - repr(self.midiDevice1) + FILETOKENSEP + - repr(self.midiDevice2) + FILETOKENSEP + - repr(self.midiPollTime) + FILETOKENSEP + - repr(self.midiEnabled) + "\n") - self.writeControls(self.controlList, file) - file.close() - self.edited = False - except Exception: - strerror = str(sys.exc_info()[1]) - dlg = wxMessageDialog(self.mainFrame, "Unable to save to " + \ - filename + ":\n\n" + strerror, - "File Error", wxOK) - dlg.ShowModal() - dlg.Destroy() - def openFromDisk(self, filename): - try: - file = open(filename, 'r', -1) - try: - self.filepath = getDirectory(filename) - self.filepath = makeAbsolutePath(self.path, self.filepath) - fullFileList = file.readlines() - for control in self.controlList: - control.mDestroy() - self.controlList = [] - self.selectedControlList = [] - self.resetControlIndecies() - # remove line endings (need Perl's chomp()) - for i in range(0, len(fullFileList)): - fullFileList[i] = replace(fullFileList[i], "\n", "") - frameSize = (atoi(fullFileList[0]), atoi(fullFileList[1])) - panelColor = (fullFileList[2]) - panelHost = (fullFileList[3]) - otherArgs = split(fullFileList[4], FILETOKENSEP) - if (len(otherArgs) > 0): - panelPort = otherArgs[0] - if (len(otherArgs) > 1): - jDev1 = otherArgs[1] - else: - jDev1 = DEFJOYDEVICE1 - if (len(otherArgs) > 2): - jDev2 = otherArgs[2] - else: - jDev2 = DEFJOYDEVICE2 - if (len(otherArgs) > 3): - sockPollTime = atoi(otherArgs[3]) - else: - sockPollTime = DEFSOCKETTIMERTIME - if (len(otherArgs) > 4): - joyPollTime = atoi(otherArgs[4]) - else: - joyPollTime = DEFJOYPOLLTIME - if (len(otherArgs) > 5 and self.joystickAvailable): - self.joystickEnabled = atoi(otherArgs[5]) - if (self.joystickEnabled): - self.startJoystick() - else: - self.stopJoystick() - if (not self.locked): - self.mainFrame.optionsMenu.Check(ID_ENABLEJOY, - self.joystickEnabled) - if (len(otherArgs) > 6): - self.sendKeys = atoi(otherArgs[6]) - if (not self.locked): - self.mainFrame.optionsMenu.Check(ID_ENABLEKEY, - self.sendKeys) - if (len(otherArgs) > 7): - self.setFrameTitle(otherArgs[7]) - if (len(otherArgs) > 8): - self.alwaysOnTop = atoi(otherArgs[8]) - if (len(otherArgs) > 9): - self.showGrid = atoi(otherArgs[9]) - if (len(otherArgs) > 10): - self.snapToGrid = atoi(otherArgs[10]) - if (len(otherArgs) > 11): - self.midiDevice1 = atoi(otherArgs[11]) - if (len(otherArgs) > 12): - self.midiDevice2 = atoi(otherArgs[12]) - if (len(otherArgs) > 13): - self.midiPollTime = atoi(otherArgs[13]) - if (len(otherArgs) > 14 and self.midiAvailable): - self.midiEnabled = atoi(otherArgs[14]) - if (self.midiEnabled): - self.startMidi() - else: - self.stopMidi() - if (not self.locked): - self.mainFrame.optionsMenu.Check(ID_ENABLEMIDI, - self.midiEnabled) - - self.mainFrame.SetSize(frameSize) - self.mainFrame.mainPanel.SetBackgroundColour(panelColor) - self.host = panelHost - self.port = atoi(panelPort) - self.joyDevice1 = jDev1 - self.joyDevice2 = jDev2 - self.pollTime = sockPollTime - self.joyPollTime = joyPollTime - del fullFileList[0:5] - self.readControls(fullFileList) - self.edited = False - self.recreateFrame() - self.mainFrame.mainPanel.Refresh() - except Exception: - strerror = "File is invalid" - #FIXME - strerror = str(sys.exc_info()[1]) - dlg = wxMessageDialog(self.mainFrame, "Unable to open file " + \ - filename + ":\n\n" + strerror, - "File Error", wxOK) - dlg.ShowModal() - dlg.Destroy() - except Exception: - strerror = str(sys.exc_info()[1]) - dlg = wxMessageDialog(self.mainFrame, "Unable to open file " + \ - filename + ":\n\n" + strerror, - "File Error", wxOK) - dlg.ShowModal() - dlg.Destroy() - self.mainFrame.positionIcons() - self.setEditMode(False) - def resetControlIndecies(self): - self.buttonIndex = 0 - self.toggleIndex = 0 - self.sliderIndex = 0 - self.textIndex = 0 - self.rectIndex = 0 - self.gaugeIndex = 0 - self.checkBoxIndex = 0 - self.textBoxIndex = 0 - self.spinButtonIndex = 0 - self.mouseAreaIndex = 0 - self.radioButtonIndex = 0 - self.imageIndex = 0 - self.graphIndex = 0 - def startJoystick(self): - self.joystickEnabled = True - self.joyID1 = joystick.openDevice(self.joyDevice1) - self.joyID2 = joystick.openDevice(self.joyDevice2) - if ((self.joyID1 > -1) or (self.joyID2 > -1)): - self.joyTimer.Start(self.joyPollTime) - if (self.joyID1 == -1): - self.jsOn1 = False - if (not self.locked): - self.mainFrame.jsIcon1.SetBitmap(self.jsImageX) - else: - self.jsOn1 = True - if (not self.locked): - self.mainFrame.jsIcon1.SetBitmap(self.jsImage) - if (self.joyID2 == -1): - self.jsOn2 = False - if (not self.locked): - self.mainFrame.jsIcon2.SetBitmap(self.jsImageX) - else: - self.jsOn2 = True - if (not self.locked): - self.mainFrame.jsIcon2.SetBitmap(self.jsImage) - if (not self.locked): - self.mainFrame.positionIcons() - self.mainFrame.jsIcon1.Show(not self.locked) - self.mainFrame.jsIcon1.Refresh() - self.mainFrame.jsIcon2.Show(not self.locked) - self.mainFrame.jsIcon2.Refresh() - def stopJoystick(self): - self.joyTimer.Stop() - joystick.closeDevice(self.joyID1) - joystick.closeDevice(self.joyID2) - self.joystickEnabled = False - self.jsOn1 = False - self.jsOn2 = False - if (not self.locked): - self.mainFrame.jsIconFlasher1.Stop() - self.mainFrame.jsIconFlasher2.Stop() - self.mainFrame.positionIcons() - self.mainFrame.jsIcon1.Show(False) - self.mainFrame.jsIcon2.Show(False) - def showJoystickActive(self, jsNum): - if (self.joystickEnabled and not self.locked): - if (jsNum == 1): - self.mainFrame.jsIconFlasher1.Start(250) - else: - self.mainFrame.jsIconFlasher2.Start(250) - def startMidi(self): - self.midiEnabled = True - self.midiID1 = midi.openDevice(self.midiDevice1) - self.midiID2 = midi.openDevice(self.midiDevice2) - if ((self.midiID1 > -1) or (self.midiID2 > -1)): - self.midiTimer.Start(self.midiPollTime) - if (self.midiID1 == -1): - self.midiOn1 = False - if (not self.locked): - self.mainFrame.midiIcon1.SetBitmap(self.midiImageX) - else: - self.midiOn1 = True - if (not self.locked): - self.mainFrame.midiIcon1.SetBitmap(self.midiImage) - if (self.midiID2 == -1): - self.midiOn2 = False - if (not self.locked): - self.mainFrame.midiIcon2.SetBitmap(self.midiImageX) - else: - self.midiOn2 = True - if (not self.locked): - self.mainFrame.midiIcon2.SetBitmap(self.midiImage) - if (not self.locked): - self.mainFrame.positionIcons() - self.mainFrame.midiIcon1.Show(not self.locked) - self.mainFrame.midiIcon1.Refresh() - self.mainFrame.midiIcon2.Show(not self.locked) - self.mainFrame.midiIcon2.Refresh() - def stopMidi(self): - self.midiTimer.Stop() - midi.closeDevice(self.midiID1) - midi.closeDevice(self.midiID2) - self.midiEnabled = False - self.midiOn1 = False - self.midiOn2 = False - if (not self.locked): - self.mainFrame.midiIconFlasher1.Stop() - self.mainFrame.midiIconFlasher2.Stop() - self.mainFrame.positionIcons() - self.mainFrame.midiIcon1.Show(False) - self.mainFrame.midiIcon2.Show(False) - def showMidiActive(self, midiNum): - if (self.midiEnabled and not self.locked): - if (midiNum == 1): - self.mainFrame.midiIconFlasher1.Start(250) - else: - self.mainFrame.midiIconFlasher2.Start(250) - def sendCharDown(self, charCode): - self.sendChar(charCode, 1) - def sendCharUp(self, charCode): - self.sendChar(charCode, 0) - def sendChar(self, charCode, downOrUp): - if (self.sendKeys): - self.connection.send("keystroke" + - SYMMSGSEP + - repr(charCode) + - " " + - repr(downOrUp) + - PAIRSEPCHAR) - def lock(self): - if (not self.locked): - if (self.editMode): - self.setEditMode(False) - self.locked = True - self.recreateFrame() - def unlock(self): - if (self.locked): - self.locked = False - self.recreateFrame() - def setEditMode(self, value): - self.editMode = value - self.resizable = value - self.mainFrame.SetCursor(wxHOURGLASS_CURSOR) - self.mainFrame.mainPanel.SetCursor(wxHOURGLASS_CURSOR) - try: - wxYield() - except: - pass - self.recreateFrame() - if (value): - EVT_PAINT(self.mainFrame.mainPanel, self.ePaint) - EVT_LEFT_DOWN(self.mainFrame.mainPanel, self.eLeftDown) - EVT_LEFT_UP(self.mainFrame.mainPanel, self.eLeftUp) - EVT_RIGHT_DOWN(self.mainFrame.mainPanel, self.eRightPopUp) - for control in self.controlList: - control.setEditMode(True) - self.editMode = True - if (not self.locked): - self.mainFrame.editMenu.Enable(ID_ADD, True) - self.mainFrame.editMenu.Enable(ID_EDIT, True) - self.mainFrame.editMenu.Enable(ID_DELETE, True) - self.mainFrame.editMenu.Enable(ID_SELECTALL, True) - self.mainFrame.editMenu.Enable(ID_DUPLICATE, True) - self.mainFrame.editMenu.Enable(ID_ALIGNVERT, True) - self.mainFrame.editMenu.Enable(ID_ALIGNHORZ, True) - self.mainFrame.setEditModeText("Edit Mode") - self.mainFrame.positionIcons() - self.selectedControlList = [] - self.edited = True - if (self.showGrid): - self.mainFrame.mainPanel.Refresh() - else: - self.mainFrame.mainPanel.Disconnect(-1, wxEVT_PAINT) - self.mainFrame.mainPanel.Disconnect(-1, wxEVT_LEFT_DOWN) - self.mainFrame.mainPanel.Disconnect(-1, wxEVT_LEFT_UP) - self.mainFrame.mainPanel.Disconnect(-1, wxEVT_RIGHT_DOWN) - for control in self.controlList: - control.setEditMode(False) - self.editMode = False - if (not self.locked): - self.mainFrame.editMenu.Enable(ID_ADD, False) - self.mainFrame.editMenu.Enable(ID_EDIT, False) - self.mainFrame.editMenu.Enable(ID_DELETE, False) - self.mainFrame.editMenu.Enable(ID_SELECTALL, False) - self.mainFrame.editMenu.Enable(ID_DUPLICATE, False) - self.mainFrame.editMenu.Enable(ID_ALIGNVERT, False) - self.mainFrame.editMenu.Enable(ID_ALIGNHORZ, False) - self.mainFrame.setEditModeText("Performance Mode") - self.mainFrame.positionIcons() - for control in self.controlList: - control.Refresh() - self.mainFrame.SetCursor(wxSTANDARD_CURSOR) - self.mainFrame.mainPanel.SetCursor(wxSTANDARD_CURSOR) - self.mainFrame.mainPanel.SetFocus() - def recreateFrame(self): - position = self.mainFrame.GetPosition() - newWindow = gripdFrame(self, - -1, - self.frameTitle, - position, - self.resizable, - self.locked, - self.alwaysOnTop) - shown = self.mainFrame.IsShown() - self.copyFrame(newWindow) - if (shown): - self.mainFrame.Show(True) - try: - wxYield() - except: - pass - self.setFrameTitle(self.frameTitle) - def copyFrame(self, newWindow): - newWindow.SetSize(self.mainFrame.GetSize()) - if (not self.locked): - newWindow.editMenu.Check(ID_EDITMODE, - self.editMode) - newWindow.optionsMenu.Check(ID_ENABLEJOY, - self.joystickEnabled) - newWindow.optionsMenu.Check(ID_ENABLEMIDI, - self.midiEnabled) - newWindow.optionsMenu.Check(ID_ENABLEKEY, - self.sendKeys) - newWindow.positionIcons() - newWindow.jsIcon1.Show(self.joystickEnabled) - newWindow.jsIcon2.Show(self.joystickEnabled) - newWindow.midiIcon1.Show(self.midiEnabled) - newWindow.midiIcon2.Show(self.midiEnabled) - if (self.jsOn1 and not self.locked): - newWindow.jsIcon1.SetBitmap(self.jsImage) - elif (not self.locked): - newWindow.jsIcon1.SetBitmap(self.jsImageX) - if (self.jsOn2 and not self.locked): - newWindow.jsIcon2.SetBitmap(self.jsImage) - elif (not self.locked): - newWindow.jsIcon2.SetBitmap(self.jsImageX) - if (self.midiOn1 and not self.locked): - newWindow.midiIcon1.SetBitmap(self.midiImage) - elif (not self.locked): - newWindow.midiIcon1.SetBitmap(self.midiImageX) - if (self.midiOn2 and not self.locked): - newWindow.midiIcon2.SetBitmap(self.midiImage) - elif (not self.locked): - newWindow.midiIcon2.SetBitmap(self.midiImageX) - newWindow.mainPanel.SetBackgroundColour(\ - self.mainFrame.mainPanel.GetBackgroundColour()) - self.mainFrame.Destroy() - if (self.connected and not self.locked): - newWindow.fileMenu.Enable(ID_CONNECT, False) - newWindow.fileMenu.Enable(ID_DISCONNECT, True) - newWindow.connectIcon.SetBitmap(self.connectImage) - elif (not self.locked): - newWindow.fileMenu.Enable(ID_CONNECT, True) - newWindow.fileMenu.Enable(ID_DISCONNECT, False) - newWindow.connectIcon.SetBitmap(self.connectImageX) - self.SetTopWindow(newWindow) - self.mainFrame = newWindow - EVT_KEY_UP(self.mainFrame.mainPanel, self.eKeyUp) - EVT_KEY_DOWN(self.mainFrame.mainPanel, self.eKeyDown) - EVT_CHAR(self.mainFrame.mainPanel, self.eChar) - if (not os.name == "posix"): - EVT_CHAR_HOOK(self.mainFrame, self.eChar) - EVT_CLOSE(self.mainFrame, self.eClose) - EVT_SIZE(self.mainFrame, self.eSize) - list = [] - container = duplicationContainer() - for control in self.controlList: - list.append(control) - self.controlList = [] - self.writeControls(list, container) - container.chomp() - self.readControls(container.getList()) - def setFrameTitle(self, value): - self.frameTitle = value - if (self.editMode): - self.mainFrame.SetTitle(value + " [ Edit ]") - else: - self.mainFrame.SetTitle(value) - def pingTimeout(self): - if (self.openAuto): - debugLog("timeout") - self.disconnect() - self.close() - else: - self.disconnect() - def getNearestGridPoint(self, point): - x = self.gridSpace * round((float(point[0]) / self.gridSpace)) - y = self.gridSpace * round((float(point[1]) / self.gridSpace)) - gridPoint = (int(x), int(y)) - return gridPoint - def close(self): - self.openAuto = False - if ((self.edited) and (len(self.controlList) > 0)): - self.mainFrame.Show(True) - dlg = wxMessageDialog(self.mainFrame, - "Current GUI not saved. Close anyway?", - "GUI Not Saved", wxOK | wxCANCEL) - if (dlg.ShowModal() == wxID_OK): - dlg.Destroy() - self.mainFrame.Destroy() - try: - self.disconnect() - except: - pass - else: - return - else: - self.mainFrame.Show(True) - self.mainFrame.Destroy() - try: - self.disconnect() - except: - pass - if (self.joystickEnabled): - self.stopJoystick() - if (self.midiEnabled): - self.stopMidi() - self.ExitMainLoop() - -## Events ## - - def eOpenConnection(self, event): - cString = "Connect to " + self.host + ":" + repr(self.port) + "\n " - dlg = wxMessageDialog(self.mainFrame.mainPanel, cString, "Connect", - wxOK | wxCANCEL) - if (dlg.ShowModal() == wxID_OK): - self.connect() - dlg.Destroy() - def eCloseConnection(self, event): - self.disconnect() - def eToggleJoystick(self, event): - if (not self.locked): - self.joystickEnabled = self.mainFrame.optionsMenu.\ - IsChecked(ID_ENABLEJOY) - if (self.joystickEnabled): - self.startJoystick() - else: - self.stopJoystick() - def eToggleMidi(self, event): - if (not self.locked): - self.midiEnabled = self.mainFrame.optionsMenu.\ - IsChecked(ID_ENABLEMIDI) - if (self.midiEnabled): - self.startMidi() - else: - self.stopMidi() - def eToggleKeySend(self, event): - if (not self.locked): - self.sendKeys = self.mainFrame.optionsMenu.IsChecked(ID_ENABLEKEY) - def eToggleAlwaysOnTop(self, event): - if (not self.locked and os.name != "posix"): - self.alwaysOnTop = self.mainFrame.optionsMenu.\ - IsChecked(ID_ALWAYSONTOP) - self.recreateFrame() - def eToggleShowGrid(self, event): - self.showGrid = self.mainFrame.optionsMenu.IsChecked(ID_SHOWGRID) - if (not self.showGrid): - self.snapToGrid = False - if (not self.locked): - self.mainFrame.optionsMenu.Check(ID_SNAPTOGRID, False) - else: - if (self.editMode): - self.mainFrame.mainPanel.Refresh() - self.mainFrame.mainPanel.Refresh() - def eToggleSnapToGrid(self, event): - self.snapToGrid = self.mainFrame.optionsMenu.IsChecked(ID_SNAPTOGRID) - if (self.snapToGrid): - self.showGrid = True - if (not self.locked): - self.mainFrame.optionsMenu.Check(ID_SHOWGRID, True) - if (self.editMode): - self.mainFrame.mainPanel.Refresh() - def eRightPopUp(self, event): - if ((not self.locked) and (not self.selecting)): - self.mainFrame.PopupMenuXY(self.mainFrame.editMenu, - event.GetX(), - event.GetY()) - def eLeftDown(self, event): - # Editing stuff (mostly for selectRect) - if (self.editMode): - EVT_MOTION(self.mainFrame.mainPanel, self.eMotion) - self.mouseDownPos = event.GetPosition() - self.mainFrame.mainPanel.CaptureMouse() - self.leftDownOnPanel = True - if (not event.m_controlDown): - self.deselectOthers(-1) - def eLeftUp(self, event): - if (self.editMode): - if (self.leftDownOnPanel): - self.mainFrame.mainPanel.ReleaseMouse() - self.mainFrame.mainPanel.Disconnect(-1, wxEVT_MOTION) - if (self.selecting): - self.selecting = False - for control in self.controlList: - if (selectIntersect(control.GetRect(), - self.mainFrame.selectRect)): - control.select() - elif ((not event.m_controlDown) and control.isSelected()): - control.deselect() - self.mainFrame.mainPanel.Refresh() - self.leftDownOnPanel = False - def eMotion(self, event): - if (event.LeftIsDown() and self.editMode and self.leftDownOnPanel): - self.selecting = True - width = abs(event.GetPosition()[0] - self.mouseDownPos[0]) - height = abs(event.GetPosition()[1] - self.mouseDownPos[1]) - leftBound = min(self.mouseDownPos[0], event.GetPosition()[0]) - topBound = min(self.mouseDownPos[1], event.GetPosition()[1]) - clearRegion = wxRegion(self.mainFrame.selectRect[0], - self.mainFrame.selectRect[1], - self.mainFrame.selectRect[2], - self.mainFrame.selectRect[3]) - self.mainFrame.selectRect = [leftBound, topBound, - width, height] - clearRegion.Union(leftBound, topBound, width, height) - self.mainFrame.mainPanel.Refresh(False, clearRegion.GetBox()) - def ePaint(self, event): - event.Skip() - myDC = wxPaintDC(self.mainFrame.mainPanel) - myDC.BeginDrawing() - if (self.editMode): - if (self.showGrid): - self.mainFrame.drawGrid(myDC) - else: - self.mainFrame.drawCleanBackground(myDC) - if (self.selecting): - self.mainFrame.drawSelectRect(myDC) - myDC.EndDrawing() - def eAddButton(self, event): - self.createControl(MBUTTONTYPE, self.buttonIndex, "button") - def eAddToggle(self, event): - self.createControl(MTOGGLETYPE, self.toggleIndex, "toggle") - def eAddVSlider(self, event): - self.createControl(MVSLIDERTYPE, self.sliderIndex, "slider") - def eAddHSlider(self, event): - self.createControl(MHSLIDERTYPE, self.sliderIndex, "slider") - def eAddRect(self, event): - self.createControl(MRECTTYPE, self.rectIndex, "rectangle") - def eAddText(self, event): - self.createControl(MTEXTTYPE, self.textIndex, "text") - def eAddVGauge(self, event): - self.createControl(MVGAUGETYPE, self.gaugeIndex, "gauge") - def eAddHGauge(self, event): - self.createControl(MHGAUGETYPE, self.gaugeIndex, "gauge") - def eAddCheckBox(self, event): - self.createControl(MCHECKBOXTYPE, self.checkBoxIndex, "checkbox") - def eAddRadioButtons(self, event): - if (self.editMode and not self.dragging): - txtDialog = wxTextEntryDialog(self.mainFrame.mainPanel, - "Number of radio buttons to add:", - "Create Radio Buttons", "2") - if (txtDialog.ShowModal() == wxID_OK): - numRadButs = atoi(txtDialog.GetValue()) - txtDialog.Destroy() - if (numRadButs > 1): - indexStr = "radiobutton" + repr(self.radioButtonIndex) - pos = self.mainFrame.mainPanel.ScreenToClient( \ - wxGetMousePosition()) - controlN = self.addControl(MRADIONEWTYPE, - indexStr, - pos, - "s" + indexStr, - "r" + indexStr) - coords = pos - for i in range(1, numRadButs): - indexStr = "radiobutton" + repr(self.radioButtonIndex) - coords = [coords[0], coords[1] + 25] - maxPos = self.mainFrame.mainPanel.GetSize()[1] - 10 - minPos = 0 - if (coords[1] > maxPos): - coords[0] = pos[0] + 40 - coords[1] = pos[1] - control = self.addControl(MRADIOBUTTONTYPE, - indexStr, - coords, - "s" + indexStr, - "r" + indexStr) - control.select() - controlN.select() - try: - wxYield() - except: - pass - controlN.grab() - def eAddTextBox(self, event): - self.createControl(MTEXTBOXTYPE, self.textBoxIndex, "textbox") - def eAddSpinButton(self, event): - self.createControl(MSPINBUTTONTYPE, self.spinButtonIndex, "spinbutton") - def eAddMouseArea(self, event): - self.createControl(MMOUSEAREATYPE, self.mouseAreaIndex, "mousearea") - def eAddImage(self, event): - if (self.editMode and not self.dragging): - dlg = wxFileDialog(self.mainFrame, "Open file", self.filepath, - "", "*.*", wxOPEN) - if (dlg.ShowModal() == wxID_OK): - filepath = dlg.GetPath() - self.createControl(MIMAGETYPE, - self.imageIndex, - "image", - filepath) - dlg.Destroy() - def eAddGraph(self, event): - self.createControl(MGRAPHTYPE, self.graphIndex, "graph") - def eEditMode(self, event): - if (not self.locked): - newEditMode = self.mainFrame.editMenu.IsChecked(ID_EDITMODE) - self.setEditMode(newEditMode) - def eEditControl(self, event): - self.edited = True - if (len(self.selectedControlList) > 0): - self.selectedControlList[0].eEdit(event) - # extra array needed because we're removing items from the array - # we are cycling through (selectedControlList) - def eDeleteControl(self, event): - deleteList = [] - for control in self.selectedControlList: - deleteList.append(control) - for control in deleteList: - self.controlList.remove(control) - self.selectedControlList.remove(control) - control.mDestroy() - def eSelectAll(self, event): - for control in self.controlList: - control.select() - def eDuplicate(self, event): - list = [] - container = duplicationContainer() - # Not using selectedControlList since we are removing from it - # as we cycle through the list - for control in self.controlList: - if (control.isSelected()): - list.append(control) - control.deselect() - self.writeControls(list, container) - container.chomp() - for control in self.readControls(container.getList()): - control.select() - control.move(DUPPOSOFFSET) - def eAlignVertical(self, event): - self.alignControls(0) - def eAlignHorizontal(self, event): - self.alignControls(1) - def eRefresh(self, event): - for control in self.controlList: - control.Refresh() - if (control.isSelected()): - control.relocateTags() - self.mainFrame.mainPanel.Refresh(True) - def eNew(self, event): - flag = 0; - if ((self.edited) and (len(self.controlList) > 0)): - flag = 1 - dlg = wxMessageDialog(self.mainFrame, - "Current GUI not saved. Clear anyway?", - "GUI Not Saved", wxOK | wxCANCEL) - if (dlg.ShowModal() == wxID_OK): - flag = 0 - if (not flag): - for control in self.controlList: - control.mDestroy() - self.controlList = [] - self.selectedControlList = [] - self.resetControlIndecies() - self.mainFrame.mainPanel.SetBackgroundColour(\ - self.mainFrame.defBgColor) - self.mainFrame.mainPanel.Refresh() - self.filepath = "" - def eOpen(self, event): - if ((self.edited) and (len(self.controlList) > 0)): - dlg2 = wxMessageDialog(self.mainFrame, - "Current GUI not saved. Open anyway?", - "GUI Not Saved", wxOK | wxCANCEL) - if (dlg2.ShowModal() == wxID_OK): - dlg = wxFileDialog(self.mainFrame, - "Open file", self.filepath, "", "*.gpd", - wxOPEN) - if (dlg.ShowModal() == wxID_OK): - self.openFromDisk(dlg.GetPath()) - # FIXME - # dlg.Destroy() - # FIXME - # dlg2.Destroy() - else: - dlg = wxFileDialog(self.mainFrame, - "Open file", self.filepath, "", "*.gpd", - wxOPEN) - if (dlg.ShowModal() == wxID_OK): - self.openFromDisk(dlg.GetPath()) - # FIXME - # dlg.Destroy() - self.mainFrame.mainPanel.Refresh() - def eSave(self, event): - dlg = wxFileDialog(self.mainFrame, "Save file", self.filepath, - "", "*.gpd", wxSAVE) - if (dlg.ShowModal() == wxID_OK): - filename = dlg.GetPath() - try: - file = open(filename, 'r', -1) - file.close() - dlg2 = wxMessageDialog(self.mainFrame, "File " + filename \ - + " already exists. Overwrite?", - "File Exists", wxOK | wxCANCEL) - if (dlg2.ShowModal() == wxID_OK): - self.saveToDisk(filename) - dlg2.Destroy() - except: - self.saveToDisk(filename) - dlg.Destroy() - def eSetOptions(self, event): - dlg = optionsDialog(self) - dlg.ShowModal() - self.host = dlg.addrBox.GetValue() - try: - self.port = atoi(dlg.portBox.GetValue()) - except: - errDlg = wxMessageDialog(self.mainFrame, - "Invalid Port", - "Options Error", - wxOK) - errDlg.ShowModal() - errDlg.Destroy() - try: - self.pollTime = atoi(dlg.pollBox.GetValue()) - except: - errDlg = wxMessageDialog(self.mainFrame, - "Invalid Socket Poll Time", - "Options Error", - wxOK) - errDlg.ShowModal() - errDlg.Destroy() - self.joyDevice1 = dlg.joyDevBox1.GetValue() - self.joyDevice2 = dlg.joyDevBox2.GetValue() - try: - self.joyPollTime = atoi(dlg.joyPollBox.GetValue()) - except: - errDlg = wxMessageDialog(self.mainFrame, - "Invalid Joystick Poll Time", - "Options Error", - wxOK) - errDlg.ShowModal() - errDlg.Destroy() - try: - self.midiDevice1 = atoi(dlg.midiDevBox1.GetValue()) - except: - errDlg = wxMessageDialog(self.mainFrame, - "Invalid MIDI Device 0\nShould be an integer.", - "Options Error", - wxOK) - errDlg.ShowModal() - errDlg.Destroy() - try: - self.midiDevice2 = atoi(dlg.midiDevBox2.GetValue()) - except: - errDlg = wxMessageDialog(self.mainFrame, - "Invalid MIDI Device 1\nShould be an integer.", - "Options Error", - wxOK) - errDlg.ShowModal() - errDlg.Destroy() - try: - self.midiPollTime = atoi(dlg.midiPollBox.GetValue()) - except: - errDlg = wxMessageDialog(self.mainFrame, - "Invalid MIDI Poll Time", - "Options Error", - wxOK) - errDlg.ShowModal() - errDlg.Destroy() - self.setFrameTitle(dlg.titleBox.GetValue()) - if (self.sTimer.IsRunning): - self.sTimer.Stop() - self.sTimer.Start(self.pollTime) - if (not self.locked): - if (self.mainFrame.optionsMenu.IsChecked(ID_ENABLEJOY)): - self.stopJoystick() - self.startJoystick() - if (self.mainFrame.optionsMenu.IsChecked(ID_ENABLEMIDI)): - self.stopMidi() - self.startMidi() - dlg.Destroy() - self.mainFrame.Refresh(True) - self.mainFrame.mainPanel.Refresh(True) - for control in self.controlList: - control.Refresh() - def eAbout(self, event): - aboutString = "GrIPD v" + VERSION + ": " - aboutString = aboutString \ - + "Graphical Interface for Pure Data\n\n" - aboutString = aboutString \ - + "(C) Copyright 2003 Joseph A. Sarlo\nGNU " - aboutString = aboutString \ - + "General Public License\njsarlo@ucsd.edu" - dlg = wxMessageDialog(self.mainFrame, aboutString , "About GrIPD", - wxOK | wxICON_INFORMATION) - dlg.ShowModal() - dlg.Destroy() - def eQuit(self, event): - self.mainFrame.Close(True) - def eKeyDown(self, event): - # already depressed - try: - self.keysDown.index(event.GetKeyCode()) - # first time - except: - self.keysDown.append(event.GetKeyCode()) - if (not self.editMode): - self.sendCharDown(event.GetKeyCode()) - event.Skip() - def eKeyUp(self, event): - try: - self.keysDown.remove(event.GetKeyCode()) - self.sendCharUp(event.GetKeyCode()) - except: - pass - event.Skip() - def eChar(self, event): - if (self.editMode and not self.dragging): - if (event.m_controlDown): - deltaPos = LARGECHARMOVE - else: - deltaPos = SMALLCHARMOVE - if (event.GetKeyCode() == WXK_LEFT): - self.moveKey((-deltaPos, 0)) - return - if (event.GetKeyCode() == WXK_RIGHT): - self.moveKey((deltaPos, 0)) - return - if (event.GetKeyCode() == WXK_UP): - self.moveKey((0, -deltaPos)) - return - if (event.GetKeyCode() == WXK_DOWN): - self.moveKey((0, deltaPos)) - return - if (event.GetKeyCode() == WXK_TAB): - self.traverseFocus(event.m_controlDown) - return - if (not self.editMode or (self.editMode and not self.dragging)): - # Allow accelerators to be called - event.Skip() - def eRepaintControlTags(self, event): - event.getControl().refreshTags() - def eClose(self, event): - if (self.openAuto and self.connected): - self.mainFrame.Show(False) - try: - self.connection.send(HIDECOMMAND + SYMMSGSEP + \ - "0" + PAIRSEPCHAR) - except: - self.close() - else: - self.close() - def eSize(self, event): - self.mainFrame.positionIcons() - event.Skip() - -# Frame class -class gripdFrame(wxFrame): -# Setup - def __init__(self, parent, ID, title, position, - resizable, locked, alwaysOnTop): - self.mParent = parent - self.resizable = resizable - self.alwaysOnTop = alwaysOnTop - self.locked = locked - if (self.resizable): - style = wxDEFAULT_FRAME_STYLE - else: - style = wxDEFAULT_FRAME_STYLE & (~wxRESIZE_BORDER) & \ - (~wxMAXIMIZE_BOX) - if (self.alwaysOnTop): - style = style | wxSTAY_ON_TOP - if (position == (-1, -1)): - position = wxDefaultPosition - wxFrame.__init__(self, NULL, ID, title, position, - DEFMAINFRAMESIZE, - style) - if (not os.name == "posix"): - self.SetIcon(self.mParent.icon) - if (not self.locked): - # Menu accelerator stuff - aclList = [] - aclList.append(wxAcceleratorEntry(wxACCEL_NORMAL, - WXK_DELETE, - ID_DELETE)) - aclList.append(wxAcceleratorEntry(wxACCEL_NORMAL, WXK_F1, - ID_BUTTON)) - aclList.append(wxAcceleratorEntry(wxACCEL_NORMAL, WXK_F2, - ID_TOGGLE)) - aclList.append(wxAcceleratorEntry(wxACCEL_NORMAL, WXK_F3, - ID_SPINBUTTON)) - aclList.append(wxAcceleratorEntry(wxACCEL_NORMAL, WXK_F4, - ID_RADIOBUTTON)) - aclList.append(wxAcceleratorEntry(wxACCEL_NORMAL, WXK_F5, - ID_VSLIDER)) - aclList.append(wxAcceleratorEntry(wxACCEL_NORMAL, WXK_F6, - ID_HSLIDER)) - aclList.append(wxAcceleratorEntry(wxACCEL_NORMAL, WXK_F7, - ID_VGAUGE)) - aclList.append(wxAcceleratorEntry(wxACCEL_NORMAL, WXK_F8, - ID_HGAUGE)) - aclList.append(wxAcceleratorEntry(wxACCEL_NORMAL, WXK_F9, - ID_CHECKBOX)) - aclList.append(wxAcceleratorEntry(wxACCEL_NORMAL, WXK_F10, - ID_TEXTBOX)) - aclList.append(wxAcceleratorEntry(wxACCEL_NORMAL, WXK_F11, - ID_MOUSEAREA)) - aclList.append(wxAcceleratorEntry(wxACCEL_NORMAL, WXK_F12, - ID_RECT)) - aclList.append(wxAcceleratorEntry(wxACCEL_ALT, ord("1"), - ID_TEXT)) - aclList.append(wxAcceleratorEntry(wxACCEL_ALT, ord("2"), - ID_IMAGE)) - self.SetAcceleratorTable(wxAcceleratorTable(aclList)) - self.menuBar = wxMenuBar() - self.SetMenuBar(self.menuBar) - self.createMenu() - self.CreateStatusBar(3) - self.jsIcon1 = wxStaticBitmap(self.GetStatusBar(), -1, - self.mParent.jsImageX, (0, 0), - wxDefaultSize) - self.jsIcon2 = wxStaticBitmap(self.GetStatusBar(), -1, - self.mParent.jsImageX, (0, 0), - wxDefaultSize) - self.midiIcon1 = wxStaticBitmap(self.GetStatusBar(), -1, - self.mParent.midiImageX, (0, 0), - wxDefaultSize) - self.midiIcon2 = wxStaticBitmap(self.GetStatusBar(), -1, - self.mParent.midiImageX, (0, 0), - wxDefaultSize) - self.connectIcon = wxStaticBitmap(self.GetStatusBar(), - -1, - self.mParent.connectImageX, - (0, 0), - wxDefaultSize) - # timers to flash icons - self.jsIconFlasher1 = iconFlasher(self.jsIcon1, - self.mParent.jsImage, - self.mParent.jsImageA, - 1) - self.jsIconFlasher2 = iconFlasher(self.jsIcon2, - self.mParent.jsImage, - self.mParent.jsImageA, - 1) - self.midiIconFlasher1 = iconFlasher(self.midiIcon1, - self.mParent.midiImage, - self.mParent.midiImageA, - 1) - self.midiIconFlasher2 = iconFlasher(self.midiIcon2, - self.mParent.midiImage, - self.mParent.midiImageA, - 1) - self.editModeText = wxStaticText(self.GetStatusBar(), - -1, - "Performance Mode", - (0, 0), - wxDefaultSize, - wxALIGN_CENTRE | \ - wxST_NO_AUTORESIZE) - self.editModeText.Show(True) - self.jsIcon1.Show(False) - self.jsIcon2.Show(False) - self.midiIcon1.Show(False) - self.midiIcon2.Show(False) - self.connectIcon.Show(True) - # left, top, width, height of selection rect (for drawing) - self.selectRect = [0, 0, 0, 0] - # mainPanel stuff - self.mainPanel = wxPanel(self, -1, wxDefaultPosition, - wxDefaultSize, - wxSTATIC_BORDER) - self.defBgColor = wxColour(self.mainPanel.GetBackgroundColour().Red() \ - - BGCOLORDIF, - self.mainPanel.GetBackgroundColour().Green() \ - - BGCOLORDIF, - self.mainPanel.GetBackgroundColour().Blue() \ - - BGCOLORDIF) - self.mainPanel.SetBackgroundColour(self.defBgColor) - self.mainPanel.Show(True) - if (self.locked): - self.lock() - else: - self.unlock() - def createMenu(self): - self.fileMenu = wxMenu() - self.fileMenu.Append(ID_NEW, "&New\tCtrl-N", "Clear current GUI") - self.fileMenu.Append(ID_OPEN, "&Open\tCtrl-O", "Open a GUI") - self.fileMenu.Append(ID_SAVE, "&Save\tCtrl-S", "Save current GUI") - self.fileMenu.AppendSeparator() - self.fileMenu.Append(ID_CONNECT, "&Connect\tAlt-C", - "Connect to PD") - self.fileMenu.Append(ID_DISCONNECT, "&Disconnect\tAlt-D", - "Disconnect from PD") - self.fileMenu.AppendSeparator() - self.fileMenu.Append(ID_EXIT, "E&xit\tCtrl-Q", "Quit GrIPD") - self.editMenu = wxMenu() - self.editMenu.Append(ID_EDITMODE, "Edit &mode\tCtrl-E", - "Toggle Edit/Performance Modes", True) - self.editMenu.AppendSeparator() - self.addMenu = wxMenu() - self.buttonMenu = wxMenu() - self.buttonMenu.Append(ID_BUTTON, "&Push Button\tF1", - "Add a push button") - self.buttonMenu.Append(ID_TOGGLE, "&Toggle Button\tF2", - "Add a toggle button") - self.buttonMenu.Append(ID_SPINBUTTON, "&Spin Button\tF3", - "Add a spin button") - self.buttonMenu.Append(ID_RADIOBUTTON, "&Radio Buttons\tF4", - "Add radio buttons") - self.addMenu.AppendMenu(ID_BUTTONMENU, "&Button", self.buttonMenu); - self.sliderMenu = wxMenu() - self.sliderMenu.Append(ID_VSLIDER, "&Vertical Slider\tF5", - "Add a vertical slider") - self.sliderMenu.Append(ID_HSLIDER, "&Horizontal Slider\tF6", - "Add a horizontal slider") - self.addMenu.AppendMenu(ID_SLIDERMENU, "&Slider", self.sliderMenu); - self.gaugeMenu = wxMenu() - self.gaugeMenu.Append(ID_VGAUGE, "&Vertical Gauge\tF7", - "Add a vertical gauge") - self.gaugeMenu.Append(ID_HGAUGE, "&Horizontal Gauge\tF8", - "Add a horizontal gauge") - self.addMenu.AppendMenu(ID_GAUGEMENU, "&Gauge", self.gaugeMenu); - self.addMenu.Append(ID_CHECKBOX, "&Checkbox\tF9", - "Add a labeld checkbox") - self.addMenu.Append(ID_TEXTBOX, "Te&xtbox\tF10", - "Add a box for entering text") - self.addMenu.Append(ID_MOUSEAREA, "&Mouse Area\tF11", - "Add a mouse capture area") - self.addMenu.Append(ID_RECT, "&Rectangle\tF12", - "Add a boundary rectangle") - self.addMenu.Append(ID_TEXT, "&Text\tAlt-1", "Add text") - self.addMenu.Append(ID_IMAGE, "&Image\tAlt-2", "Add an image") - self.addMenu.Append(ID_GRAPH, "&Graph\tAlt-3", "Add a graph") - self.editMenu.AppendMenu(ID_ADD, "&Add", self.addMenu) - self.editMenu.Append(ID_EDIT, "&Edit", "Edit selected controls") - self.editMenu.Append(ID_DELETE, "&Delete", "Delete selected controls") - self.editMenu.AppendSeparator() - self.editMenu.Append(ID_SELECTALL, "&Select All\tCtrl-A", - "Select all controls") - self.editMenu.Append(ID_DUPLICATE, "D&uplicate\tCtrl-D", - "Duplicate selected controls") - self.editMenu.AppendSeparator() - self.editMenu.Append(ID_ALIGNVERT, "Align &Vertical\tCtrl-V", - "Vertically align selected controls") - self.editMenu.Append(ID_ALIGNHORZ, "Align &Horizontal\tCtrl-H", - "Horizontally align selected controls") - self.editMenu.AppendSeparator() - self.editMenu.Append(ID_REFRESH, "&Refresh\tCtrl-R", "Refresh screen") - self.optionsMenu = wxMenu() - if (os.name != "posix"): - self.optionsMenu.Append(ID_ALWAYSONTOP, "Always On Top", - "Window will stay above all other windows", - True) - self.optionsMenu.AppendSeparator() - self.optionsMenu.Append(ID_ENABLEMIDI, "Enable &MIDI", - "Enables the use of MIDI input", - True) - self.optionsMenu.Append(ID_ENABLEJOY, "Enable &Joystick(s)", - "Enables the use of a joystick", - True) - self.optionsMenu.Append(ID_ENABLEKEY, "Send &Keystrokes", - "Send all keystrokes to PD 'keystroke' symbol", - True) - self.optionsMenu.AppendSeparator() - self.optionsMenu.Append(ID_SHOWGRID, "Show Grid", - "Show Edit Grid", True) - self.optionsMenu.Append(ID_SNAPTOGRID, "Snap To Grid", - "Snap controls to edit grid", True) - self.optionsMenu.AppendSeparator() - self.optionsMenu.Append(ID_SETOPTS, "&Configure\tCtrl-C", - "Set GUI options") - self.helpMenu = wxMenu() - self.helpMenu.Append(ID_ABOUT, "&About", - "GrIPD: Graphical Interface for Pure Data") - self.menuBar.Append(self.fileMenu, "&File") - self.menuBar.Append(self.editMenu, "&Edit") - self.menuBar.Append(self.optionsMenu, "&Options") - self.menuBar.Append(self.helpMenu, "&Help") - self.fileMenu.Enable(ID_DISCONNECT, False) - self.editMenu.Enable(ID_ADD, False) - self.editMenu.Enable(ID_EDIT, False) - self.editMenu.Enable(ID_DELETE, False) - self.editMenu.Enable(ID_SELECTALL, False) - self.editMenu.Enable(ID_DUPLICATE, False) - self.editMenu.Enable(ID_ALIGNVERT, False) - self.editMenu.Enable(ID_ALIGNHORZ, False) - if (self.mParent.joystickAvailable): - self.optionsMenu.Check(ID_ENABLEJOY, self.mParent.joystickEnabled) - if (self.mParent.midiAvailable): - self.optionsMenu.Check(ID_ENABLEMIDI, self.mParent.midiEnabled) - self.optionsMenu.Check(ID_ENABLEKEY, self.mParent.sendKeys) - if (os.name != "posix"): - self.optionsMenu.Check(ID_ALWAYSONTOP, self.alwaysOnTop) - self.optionsMenu.Check(ID_SHOWGRID, self.mParent.showGrid) - self.optionsMenu.Check(ID_SNAPTOGRID, self.mParent.snapToGrid) - self.optionsMenu.Enable(ID_ENABLEJOY, - self.mParent.joystickAvailable) - self.optionsMenu.Enable(ID_ENABLEMIDI, - self.mParent.midiAvailable) - EVT_MENU(self, ID_NEW, self.mParent.eNew) - EVT_MENU(self, ID_ABOUT, self.mParent.eAbout) - EVT_MENU(self, ID_EXIT, self.mParent.eQuit) - EVT_MENU(self, ID_CONNECT, self.mParent.eOpenConnection) - EVT_MENU(self, ID_DISCONNECT, self.mParent.eCloseConnection) - EVT_MENU(self, ID_OPEN, self.mParent.eOpen) - EVT_MENU(self, ID_SAVE, self.mParent.eSave) - EVT_MENU(self, ID_BUTTON, self.mParent.eAddButton) - EVT_MENU(self, ID_TOGGLE, self.mParent.eAddToggle) - EVT_MENU(self, ID_SPINBUTTON, self.mParent.eAddSpinButton) - EVT_MENU(self, ID_VSLIDER, self.mParent.eAddVSlider) - EVT_MENU(self, ID_HSLIDER, self.mParent.eAddHSlider) - EVT_MENU(self, ID_RECT, self.mParent.eAddRect) - EVT_MENU(self, ID_VGAUGE, self.mParent.eAddVGauge) - EVT_MENU(self, ID_HGAUGE, self.mParent.eAddHGauge) - EVT_MENU(self, ID_CHECKBOX, self.mParent.eAddCheckBox) - EVT_MENU(self, ID_RADIOBUTTON, self.mParent.eAddRadioButtons) - EVT_MENU(self, ID_TEXTBOX, self.mParent.eAddTextBox) - EVT_MENU(self, ID_TEXT, self.mParent.eAddText) - EVT_MENU(self, ID_IMAGE, self.mParent.eAddImage) - EVT_MENU(self, ID_MOUSEAREA, self.mParent.eAddMouseArea) - EVT_MENU(self, ID_GRAPH, self.mParent.eAddGraph) - EVT_MENU(self, ID_EDITMODE, self.mParent.eEditMode) - EVT_MENU(self, ID_EDIT, self.mParent.eEditControl) - EVT_MENU(self, ID_DELETE, self.mParent.eDeleteControl) - EVT_MENU(self, ID_SELECTALL, self.mParent.eSelectAll) - EVT_MENU(self, ID_DUPLICATE, self.mParent.eDuplicate) - EVT_MENU(self, ID_ALIGNVERT, self.mParent.eAlignVertical) - EVT_MENU(self, ID_ALIGNHORZ, self.mParent.eAlignHorizontal) - EVT_MENU(self, ID_REFRESH, self.mParent.eRefresh) - EVT_MENU(self, ID_SETOPTS, self.mParent.eSetOptions) - EVT_MENU(self, ID_ENABLEJOY, self.mParent.eToggleJoystick) - EVT_MENU(self, ID_ENABLEMIDI, self.mParent.eToggleMidi) - EVT_MENU(self, ID_ENABLEKEY, self.mParent.eToggleKeySend) - if (os.name != "posix"): - EVT_MENU(self, ID_ALWAYSONTOP, self.mParent.eToggleAlwaysOnTop) - EVT_MENU(self, ID_SHOWGRID, self.mParent.eToggleShowGrid) - EVT_MENU(self, ID_SNAPTOGRID, self.mParent.eToggleSnapToGrid) - def createLockedMenu(self): - self.fileMenu = wxMenu() - self.fileMenu.Append(ID_EXIT, "E&xit\tCtrl-Q", "Quit GrIPD") - self.helpMenu = wxMenu() - self.helpMenu.Append(ID_ABOUT, "&About", - "GrIPD: Graphical Interface for Pure Data") - self.menuBar.Append(self.fileMenu, "&File") - self.menuBar.Append(self.helpMenu, "&Help") - EVT_MENU(self, ID_ABOUT, self.mParent.eAbout) - EVT_MENU(self, ID_EXIT, self.mParent.eQuit) - def removeMenu(self): - for i in range(0, self.GetMenuBar().GetMenuCount()): - self.GetMenuBar().Remove(0) - def drawCleanBackground(self, myDC, rect = ()): - box = self.mainPanel.GetUpdateRegion().GetBox() - if (rect == ()): - rect = tuple((box[0], - box[1], - box[0] + box[2], - box[1] + box[3])) - myDC.SetPen(wxPen(self.mainPanel.GetBackgroundColour(), - 1, - wxTRANSPARENT)) - myDC.SetBrush(wxBrush(self.mainPanel.GetBackgroundColour(), wxSOLID)) - myDC.DrawRectangle(rect[0], - rect[1], - rect[2], - rect[3]) - def drawGrid(self, myDC, rect = ()): - box = self.mainPanel.GetUpdateRegion().GetBox() - if (rect == ()): - rect = tuple((box[0], - box[1], - box[0] + box[2], - box[1] + box[3])) - color = self.mainPanel.GetBackgroundColour() - newColorTuple = [color.Red() - 50, - color.Green() - 50, - color.Blue() - 50] - if (newColorTuple[0] < 0 or \ - newColorTuple[1] < 0 or \ - newColorTuple[2] < 0): - newColorTuple = [color.Red() + 50, - color.Green() + 50, - color.Blue() + 50] - for i in range(0, 3): - if (newColorTuple[i] > 255 or newColorTuple[i] < 0): - newColorTuple[i] = 0 - myDC.SetPen(wxPen(self.mainPanel.GetBackgroundColour(), - 1, - wxTRANSPARENT)) - myDC.SetBrush(wxBrush(self.mainPanel.GetBackgroundColour(), wxSOLID)) - myDC.DrawRectangle(rect[0], - rect[1], - rect[2], - rect[3]) - myDC.SetPen(wxPen(wxColour(newColorTuple[0], - newColorTuple[1], - newColorTuple[2]), - 1, - wxSOLID)) - myDC.SetBrush(wxBrush("#000000", wxTRANSPARENT)) - for i in range(rect[0], rect[2]): - if (i% self.mParent.gridSpace == 0): - myDC.DrawLine(i, rect[1], i, rect[3]) - for i in range(rect[1], rect[3]): - if (i % self.mParent.gridSpace == 0): - myDC.DrawLine(rect[0], i, rect[2], i) - def drawSelectRect(self, myDC): - myDC.SetPen(wxPen("#000000", 1, wxDOT)) - myDC.SetBrush(wxBrush(self.mainPanel.GetBackgroundColour(), - wxTRANSPARENT)) - myDC.DrawRectangle(self.selectRect[0], self.selectRect[1], - self.selectRect[2], self.selectRect[3]) - def setEditModeText(self, text): - if (not self.locked): - self.editModeText.SetLabel(text) - self.editModeText.SetSize(( \ - self.GetStatusBar().GetFieldRect(1)[2] - 10, - self.editModeText.GetSize()[1])) - self.editModeText.Show(True) - pos = (((self.GetStatusBar().GetFieldRect(1)[2] - \ - self.editModeText.GetSize()[0]) / 2) + \ - self.GetStatusBar().GetFieldRect(1)[0] + 1, - ((self.GetStatusBar().GetFieldRect(1)[3] - \ - self.editModeText.GetSize()[1]) / 2) + \ - self.GetStatusBar().GetFieldRect(1)[1] + \ - -1 * (FUGEFACTOR - 2)) - self.editModeText.Move(pos) - def lock(self): - self.locked = True - def unlock(self): - self.locked = False - def positionIcons(self): - if (not self.locked): - self.setEditModeText(self.editModeText.GetLabel()) - pos = (self.GetStatusBar().GetFieldRect(2)[0] + 3, - self.GetStatusBar().GetFieldRect(2)[3] - \ - self.connectIcon.GetSize()[1] + 1) - self.connectIcon.Move(pos) - self.midiIcon1.Move((self.connectIcon.GetPosition()[0] + \ - self.connectIcon.GetSize()[0] + 5, - pos[1])) - self.midiIcon2.Move((self.midiIcon1.GetPosition()[0] + \ - self.midiIcon1.GetSize()[0] + 3, pos[1])) - if (self.mParent.midiEnabled): - self.jsIcon1.Move((self.midiIcon2.GetPosition()[0] + \ - self.midiIcon2.GetSize()[0] + 5, - pos[1])) - else: - self.jsIcon1.Move((self.connectIcon.GetPosition()[0] + \ - self.connectIcon.GetSize()[0] + 5, - pos[1])) - self.jsIcon2.Move((self.jsIcon1.GetPosition()[0] + \ - self.jsIcon1.GetSize()[0] + 3, pos[1])) - - self.Refresh() - def openpanel(self): - dlg = wxFileDialog(self, "Open file", self.mParent.filepath, - "", "*.*", wxOPEN) - if (dlg.ShowModal() == wxID_OK): - filename = dlg.GetPath() - self.mParent.connection.send('openpanel' \ - + SYMMSGSEP \ - + filename \ - + PAIRSEPCHAR) - - - def savepanel(self): - dlg = wxFileDialog(self, "Save file", self.mParent.filepath, - "", "*.*", wxSAVE) - if (dlg.ShowModal() == wxID_OK): - filename = dlg.GetPath() - self.mParent.connection.send('savepanel' \ - + SYMMSGSEP \ - + filename \ - + PAIRSEPCHAR) - def stopIconFlashers(self): - self.jsIconFlasher1.Stop() - self.jsIconFlasher2.Stop() - self.midiIconFlasher1.Stop() - self.midiIconFlasher2.Stop() - def Destroy(self): - if (not self.locked): - self.stopIconFlashers() - wxFrame.Destroy(self) - - -# Classes used by mainFrame -# Class to poll for connection to server -class connectionTimer(wxTimer): - def __init__(self, parent): - wxTimer.__init__(self) - self.mParent = parent - self.timeCount = 0 - def connect(self): - try: - if (not self.mParent.locked): - self.mParent.mainFrame.fileMenu.Enable(ID_CONNECT, False) - tempConn = socket(AF_INET, SOCK_STREAM) - tempConn.connect((self.mParent.host, self.mParent.port)) - tempConn.setblocking(0) - rcvrList = self.mParent.connection.rcvrList - self.mParent.connection = tempConn - self.Stop() - self.mParent.sTimer.Start(self.mParent.pollTime) - self.mParent.connection.send(rcvrList) - for control in self.mParent.controlList: - control.connection = self.mParent.connection - self.mParent.connected = True - self.mParent.pingCount = 0 - self.mParent.pTimer.Start(PINGPOLLTIME) - if (not self.mParent.locked): - self.mParent.mainFrame.connectIcon.SetBitmap(\ - self.mParent.connectImage) - self.mParent.mainFrame.connectIcon.Refresh() - self.mParent.connection.send(SHOWCOMMAND + \ - SYMMSGSEP + "0" + \ - PAIRSEPCHAR) - self.mParent.mainFrame.Show(True) - except: - self.timeCount = self.timeCount + 1 - def Notify(self): - self.connect() - if (self.timeCount >= TIMEOUT): - self.Stop() - dlg = wxMessageDialog(self.mParent.mainFrame, "Connection Timeout", - "Connection", wxOK) - dlg.ShowModal() - dlg.Destroy() - if (not self.mParent.locked): - self.mParent.mainFrame.fileMenu.Enable(ID_CONNECT, True) - -# Class to poll socket for receive string -class socketTimer(wxTimer): - def __init__(self, parent): - wxTimer.__init__(self) - self.mParent = parent - def Notify(self): - try: - receiveBuffer = self.mParent.connection.recv(16384) - numBytes = len(strip(receiveBuffer)) - if (numBytes > 0): - self.mParent.parseReceiveBuffer(receiveBuffer) - except: - pass - -# Class to check connection status -class pingTimer(wxTimer): - def __init__(self, parent): - wxTimer.__init__(self) - self.mParent = parent - def Notify(self): - try: - self.mParent.connection.send(PINGCOMMAND + SYMMSGSEP + \ - "0" + PAIRSEPCHAR) - - except: - self.Stop() - self.mParent.pingTimeout() - -# Class to poll joystick -class joystickTimer(wxTimer): - def __init__(self, parent): - wxTimer.__init__(self) - self.mParent = parent - def Notify(self): - if (self.mParent.joyID1 > -1): - numEvents1 = joystick.readEvents(self.mParent.joyID1) - if (numEvents1 > 0): - self.mParent.showJoystickActive(1) - for i in range(0, numEvents1): - if (joystick.getEventType(self.mParent.joyID1, i) == 0): - try: - self.mParent.connection.send('joy0axis' - + repr(joystick.getEventNumber( - self.mParent.joyID1, - i)) \ - + SYMMSGSEP \ - + repr(joystick.getEventValue( - self.mParent.joyID1, - i)) \ - + PAIRSEPCHAR) - except: - self.mParent.close() - if (joystick.getEventType(self.mParent.joyID1,i) == 1): - try: - self.mParent.connection.send('joy0button' - + repr(joystick.getEventNumber( - self.mParent.joyID1, - i)) \ - + SYMMSGSEP \ - + repr(joystick.getEventValue( - self.mParent.joyID1, - i)) \ - + PAIRSEPCHAR) - except: - self.mParent.close() - if (self.mParent.joyID2 > -1): - numEvents2 = joystick.readEvents(self.mParent.joyID2) - if (numEvents2 > 0): - self.mParent.showJoystickActive(2) - for i in range(0, numEvents2): - if (joystick.getEventType(self.mParent.joyID2, i) == 0): - try: - self.mParent.connection.send('joy1axis' - + repr(joystick.getEventNumber( - self.mParent.joyID2, - i)) \ - + SYMMSGSEP \ - + repr(joystick.getEventValue( - self.mParent.joyID2, - i)) \ - + PAIRSEPCHAR) - except: - self.mParent.close() - if (joystick.getEventType(self.mParent.joyID2,i) == 1): - try: - self.mParent.connection.send('joy1button' - + repr(joystick.getEventNumber( - self.mParent.joyID2, - i)) \ - + SYMMSGSEP \ - + repr(joystick.getEventValue( - self.mParent.joyID2, - i)) \ - + PAIRSEPCHAR) - except: - self.mParent.close() - -# Class to poll midi -class midiTimer(wxTimer): - def __init__(self, parent): - wxTimer.__init__(self) - self.mParent = parent - def Notify(self): - if (self.mParent.midiID1 > -1): - numEvents1 = midi.readEvents(self.mParent.midiID1) - if (numEvents1 > 0): - self.mParent.showMidiActive(1) - for i in range(0, numEvents1): - midiCommand = midi.getEventCommand(self.mParent.midiID1, i) - midiCommand = hex(midiCommand) - midiP1 = midi.getEventP1(self.mParent.midiID1, i) - midiP2 = midi.getEventP2(self.mParent.midiID1, i) - messageType = midiCommand[2] - channel = repr(atoi(midiCommand[3]) + 1) - try: - if (messageType == MIDINOTEMESSAGE): - self.mParent.connection.send('midi0note' - + SYMMSGSEP \ - + repr(midiP1) \ - + " " \ - + repr(midiP2) \ - + " " \ - + channel \ - + PAIRSEPCHAR) - elif (messageType == MIDICTLMESSAGE): - self.mParent.connection.send('midi0ctl' - + SYMMSGSEP \ - + repr(midiP1) \ - + " " \ - + repr(midiP2) \ - + " " \ - + channel \ - + PAIRSEPCHAR) - elif (messageType == MIDIPGMMESSAGE): - self.mParent.connection.send('midi0pgm' - + SYMMSGSEP \ - + repr(midiP1) \ - + " " \ - + channel \ - + PAIRSEPCHAR) - except: - self.mParent.close() - if (self.mParent.midiID2 > -1): - numEvents2 = midi.readEvents(self.mParent.midiID2) - if (numEvents2 > 0): - self.mParent.showMidiActive(2) - for i in range(0, numEvents2): - midiCommand = midi.getEventCommand(self.mParent.midiID2, i) - midiCommand = hex(midiCommand) - midiP1 = midi.getEventP1(self.mParent.midiID2, i) - midiP2 = midi.getEventP2(self.mParent.midiID2, i) - messageType = midiCommand[2] - channel = repr(atoi(midiCommand[3]) + 1) - try: - if (messageType == MIDINOTEMESSAGE): - self.mParent.connection.send('midi1note' - + SYMMSGSEP \ - + repr(midiP1) \ - + " " \ - + repr(midiP2) \ - + " " \ - + channel \ - + PAIRSEPCHAR) - elif (messageType == MIDICTLMESSAGE): - self.mParent.connection.send('midi1ctl' - + SYMMSGSEP \ - + repr(midiP1) \ - + " " \ - + repr(midiP2) \ - + " " \ - + channel \ - + PAIRSEPCHAR) - elif (messageType == MIDIPGMMESSAGE): - self.mParent.connection.send('midi1pgm' - + SYMMSGSEP \ - + repr(midiP1) \ - + " " \ - + channel \ - + PAIRSEPCHAR) - except: - self.mParent.close() - -# Class to flash icon between 2 bitmaps -class iconFlasher(wxTimer): - def __init__(self, icon, bitmap1, bitmap2, nFlashes): - wxTimer.__init__(self) - self.icon = icon - self.bitmap1 = bitmap1 - self.bitmap2 = bitmap2 - self.nFlashes = nFlashes - self.running = False - def Start(self, ms): - if (not self.running): - self.running = True - self.flashCount = 0 - self.activeBitmap = 1 - wxTimer.Start(self, ms) - def Stop(self): - self.running = False - self.icon.SetBitmap(self.bitmap1) - wxTimer.Stop(self) - def Notify(self): - if (self.flashCount >= self.nFlashes): - self.icon.SetBitmap(self.bitmap1) - self.icon.Refresh() - self.Stop() - else: - if (self.activeBitmap == 1): - self.icon.SetBitmap(self.bitmap2) - self.icon.Refresh() - self.activeBitmap = 2 - self.flashCount = self.flashCount + 1 - else: - self.icon.SetBitmap(self.bitmap1) - self.activeBitmap = 1 - self.icon.Refresh() - -# Class to hold commands (receive names) while not connected -class nullConnection: - def __init__(self): - self.rcvrList = "" - def send(self, receiveBuffer): - (symName, value) = split(receiveBuffer,SYMMSGSEP) - if (symName[0] == COMMANDCHAR): - if (symName == SETRCVRCOMMAND): - self.rcvrList = self.rcvrList + receiveBuffer - def close(self): - pass - -# Class for holding control info for duplicate (sort of emulates file object) -class duplicationContainer: - def __init__(self): - self.list = [] - def write(self, string): - self.list.append(string) - def chomp(self): - for i in range(0, len(self.list)): - self.list[i] = replace(self.list[i], "\n", "") - def getList(self): - return self.list - -# Class for setting options -class optionsDialog(wxDialog): - def __init__(self, parent): - self.parent = parent - wxDialog.__init__(self, parent.mainFrame, -1, "Configure", - wxDefaultPosition, wxDefaultSize, - wxDIALOG_MODAL | wxCAPTION) - - titleText = wxStaticText(self, -1, "Window Title:", - (DEFOPTIONSPOS[0] + 10, - DEFOPTIONSPOS[1] + 20)) - self.titleBox = wxTextCtrl(self, -1, parent.frameTitle, - (titleText.GetPosition()[0] \ - + titleText.GetSize()[0] + 80, - titleText.GetPosition()[1] - 4)) - - addrText = wxStaticText(self, -1, "Connection Address:", - (titleText.GetPosition()[0], - titleText.GetPosition()[1] \ - + titleText.GetSize()[1] + 15)) - self.addrBox = wxTextCtrl(self, -1, parent.host, - (self.titleBox.GetPosition()[0], - addrText.GetPosition()[1] - 4)) - - portText = wxStaticText(self, -1, "Connection Port:", - (addrText.GetPosition()[0], - addrText.GetPosition()[1] \ - + addrText.GetSize()[1] + 15)) - self.portBox = wxTextCtrl(self, -1, repr(parent.port), - (self.titleBox.GetPosition()[0], - portText.GetPosition()[1] - 4)) - - pollText = wxStaticText(self, -1, "Socket Poll Time (ms): ", - (addrText.GetPosition()[0], - portText.GetPosition()[1] \ - + portText.GetSize()[1] + 15)) - self.pollBox = wxTextCtrl(self, -1, repr(parent.pollTime), - (self.titleBox.GetPosition()[0], - pollText.GetPosition()[1] - 4)) - - joyDevText1 = wxStaticText(self, -1, "Joystick Device 0: ", - (addrText.GetPosition()[0], - pollText.GetPosition()[1] \ - + pollText.GetSize()[1] + 15)) - self.joyDevBox1 = wxTextCtrl(self, -1, parent.joyDevice1, - (self.titleBox.GetPosition()[0], - joyDevText1.GetPosition()[1] - 4)) - - joyDevText2 = wxStaticText(self, -1, "Joystick Device 1: ", - (addrText.GetPosition()[0], - joyDevText1.GetPosition()[1] \ - + joyDevText1.GetSize()[1] + 15)) - self.joyDevBox2 = wxTextCtrl(self, -1, parent.joyDevice2, - (self.titleBox.GetPosition()[0], - joyDevText2.GetPosition()[1] - 4)) - - joyPollText = wxStaticText(self, -1, "Joystick Poll Time (ms): ", - (addrText.GetPosition()[0], - joyDevText2.GetPosition()[1] \ - + joyDevText2.GetSize()[1] + 15)) - self.joyPollBox = wxTextCtrl(self, -1, repr(parent.joyPollTime), - (self.titleBox.GetPosition()[0], - joyPollText.GetPosition()[1] - 4)) - - midiDevText1 = wxStaticText(self, -1, "MIDI Device 0: ", - (addrText.GetPosition()[0], - joyPollText.GetPosition()[1] \ - + joyPollText.GetSize()[1] + 15)) - self.midiDevBox1 = wxTextCtrl(self, -1, repr(parent.midiDevice1), - (self.titleBox.GetPosition()[0], - midiDevText1.GetPosition()[1] - 4)) - - midiDevText2 = wxStaticText(self, -1, "MIDI Device 1: ", - (addrText.GetPosition()[0], - midiDevText1.GetPosition()[1] \ - + midiDevText1.GetSize()[1] + 15)) - self.midiDevBox2 = wxTextCtrl(self, -1, repr(parent.midiDevice2), - (self.titleBox.GetPosition()[0], - midiDevText2.GetPosition()[1] - 4)) - - midiPollText = wxStaticText(self, -1, "MIDI Poll Time (ms): ", - (addrText.GetPosition()[0], - midiDevText2.GetPosition()[1] \ - + midiDevText2.GetSize()[1] + 15)) - self.midiPollBox = wxTextCtrl(self, -1, repr(parent.midiPollTime), - (self.titleBox.GetPosition()[0], - midiPollText.GetPosition()[1] - 4)) - - bColorText = wxStaticText(self, -1, "Background Color:", - (addrText.GetPosition()[0], - midiPollText.GetPosition()[1] \ - + midiPollText.GetSize()[1] + 15)) - bColorButton = wxButton(self, -1, "Set", - (self.titleBox.GetPosition()[0], - bColorText.GetPosition()[1] - 4), - self.midiPollBox.GetSize()) - - rect = wxStaticBox(self, -1, "Options", DEFOPTIONSPOS, - (self.addrBox.GetPosition()[0] \ - + self.addrBox.GetSize()[0] + 10, - bColorButton.GetPosition()[1] + \ - bColorButton.GetSize()[1] + 20)) - line = wxStaticLine(self, -1, (DEFOPTIONSPOS[0], - bColorButton.GetPosition()[1] \ - + bColorButton.GetSize()[1] + 30), - (rect.GetSize()[0], 1)) - okButton = wxButton(self, -1, "OK", (0, line.GetPosition()[1] + 10)) - self.SetSize((rect.GetSize()[0] + 15, - okButton.GetPosition()[1] + \ - (FUGEFACTOR * okButton.GetSize()[1]) + \ - (okButton.GetPosition()[1] - line.GetPosition()[1]) + 4)) - okButton.Center(wxHORIZONTAL) - okButton.Move((okButton.GetPosition()[0], line.GetPosition()[1] + 10)) - EVT_BUTTON(self, okButton.GetId(), self.eOK) - EVT_BUTTON(self, bColorButton.GetId(), self.eBColor) - def eOK(self, event): - self.EndModal(wxID_OK) - def eBColor(self, event): - color = getColorFromDialog(self, - self.parent.mainFrame.mainPanel.GetBackgroundColour()) - self.parent.mainFrame.mainPanel.SetBackgroundColour(color) - for control in self.parent.controlList: - if (control.resetBackground): - control.SetBackgroundColour(color) diff --git a/extensions/gripd/icon.pic b/extensions/gripd/icon.pic deleted file mode 100644 index 26e8bb232dd6614a77865128374e621125f9e764..0000000000000000000000000000000000000000 Binary files a/extensions/gripd/icon.pic and /dev/null differ diff --git a/extensions/gripd/joystick.xpm b/extensions/gripd/joystick.xpm deleted file mode 100644 index bd52354b5eb393c41be9093d6983def90e532ae5..0000000000000000000000000000000000000000 --- a/extensions/gripd/joystick.xpm +++ /dev/null @@ -1,68 +0,0 @@ -/* XPM */ -static char * joystick_xpm[] = { -"17 16 49 1", -" c None", -". c #000000", -"+ c #9C9C9C", -"@ c #FFFFFF", -"# c #444444", -"$ c #4C4C4C", -"% c #323232", -"& c #464646", -"* c #F9F9F9", -"= c #252525", -"- c #474747", -"; c #E0E0E0", -"> c #DADADA", -", c #E1E1E1", -"' c #7C0000", -") c #380000", -"! c #8A8A8A", -"~ c #DEDEDE", -"{ c #A4A4A4", -"] c #ADADAD", -"^ c #D0D0D0", -"/ c #F7FFFF", -"( c #800000", -"_ c #603B3B", -": c #C4C4C4", -"< c #81ABAB", -"[ c #4C5858", -"} c #969696", -"| c #4E4E4E", -"1 c #E9E9E9", -"2 c #5A5A5A", -"3 c #F4F4F4", -"4 c #BFBFBF", -"5 c #353535", -"6 c #5D5D5D", -"7 c #818181", -"8 c #BDBDBD", -"9 c #131313", -"0 c #181818", -"a c #5E5E5E", -"b c #838383", -"c c #8D8D8D", -"d c #535353", -"e c #E8E8E8", -"f c #696969", -"g c #8B8B8B", -"h c #AAAAAA", -"i c #6A6A6A", -"j c #070707", -" .. ", -" +@@. ", -" +@#. ", -" +@#. ", -" +@#. ", -" +@#. ", -" $%+@#.%% ", -" &%**+@##@@%%= ", -" -%;>,@.@..@')@@.", -"!@~{]^@@.@,/(_@!.", -"-@@@@:,,,,@@@<[}.", -"|12}3@@@]@4@5678.", -"9@@@}2}@@@0ab}c..", -"..dee@@}}.f}g.. ", -" h..he@@i!.. ", -" hj.... "}; diff --git a/extensions/gripd/joystickA.xpm b/extensions/gripd/joystickA.xpm deleted file mode 100644 index 9e41b76e2ad74ba348803f31158f9d00955d8fcc..0000000000000000000000000000000000000000 --- a/extensions/gripd/joystickA.xpm +++ /dev/null @@ -1,45 +0,0 @@ -/* XPM */ -static char * joystickA_xpm[] = { -"17 16 26 1", -" c None", -". c #000000", -"+ c #008200", -"@ c #00FF08", -"# c #003300", -"$ c #4C4C4C", -"% c #323232", -"& c #464646", -"* c #252525", -"= c #474747", -"- c #00C400", -"; c #7C0000", -"> c #380000", -", c #8A8A8A", -"' c #026602", -") c #009E00", -"! c #800000", -"~ c #603B3B", -"{ c #81ABAB", -"] c #004400", -"^ c #4E4E4E", -"/ c #005600", -"( c #131313", -"_ c #181818", -": c #AAAAAA", -"< c #070707", -" .. ", -" +@@. ", -" +@#. ", -" +@#. ", -" +@#. ", -" +@#. ", -" $%+@#.%% ", -" &%@@+@##@@%%* ", -" =%---@.@..@;>@@.", -",@-'')@@.@-@!~@'.", -"=@@@@+----@@@{]+.", -"^-]/@@@@'@)@#]/).", -"(@@@/]'@@@_]/+'..", -"..]--@@''.]+'.. ", -" :..+-@@]+.. ", -" :<.... "}; diff --git a/extensions/gripd/joystickX.xpm b/extensions/gripd/joystickX.xpm deleted file mode 100644 index 820e56e78c9259d28d384d638cb874b7113c47bd..0000000000000000000000000000000000000000 --- a/extensions/gripd/joystickX.xpm +++ /dev/null @@ -1,57 +0,0 @@ -/* XPM */ -static char * joystickX_xpm[] = { -"17 16 38 1", -" c None", -". c #000000", -"+ c #9C9C9C", -"@ c #FFFFFF", -"# c #FF0000", -"$ c #FF8484", -"% c #444444", -"& c #323232", -"* c #383838", -"= c #464646", -"- c #EAEAEA", -"; c #7C8F8F", -"> c #252525", -", c #474747", -"' c #CACACA", -") c #E0E0E0", -"! c #DADADA", -"~ c #7C0000", -"{ c #380000", -"] c #8A8A8A", -"^ c #DEDEDE", -"/ c #A4A4A4", -"( c #603B3B", -"_ c #4C5858", -": c #969696", -"< c #4E4E4E", -"[ c #E9E9E9", -"} c #5A5A5A", -"| c #818181", -"1 c #BDBDBD", -"2 c #131313", -"3 c #8D8D8D", -"4 c #535353", -"5 c #696969", -"6 c #AAAAAA", -"7 c #E8E8E8", -"8 c #6A6A6A", -"9 c #070707", -" .. ", -" +@@. ", -" ##$ +@%.$## ", -" ###$+@%$### ", -" ####$@$#### ", -" $####$####$ ", -" $#######$& ", -" *=-$#####$@@;> ", -" ,')!$#####$~{@@.", -"]@^/$#######$(@].", -",@@$####$####$_:.", -"<[}####$@$####|1.", -"2@@###$@@@$###3..", -"..4##$@::.5$##. ", -" 6..67@@8].. ", -" 69.... "}; diff --git a/extensions/gripd/log.txt b/extensions/gripd/log.txt deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/extensions/gripd/midi.xpm b/extensions/gripd/midi.xpm deleted file mode 100644 index cb1215c99d25a95e5c8139c1895388e0d3f08841..0000000000000000000000000000000000000000 --- a/extensions/gripd/midi.xpm +++ /dev/null @@ -1,24 +0,0 @@ -/* XPM */ -static char * midi_xpm[] = { -"17 16 5 1", -" c None", -". c #000000", -"+ c #808080", -"@ c #FFFFFF", -"# c #C0C0C0", -" ", -" ... ... ... ", -"+++............++", -"+@@...#...#...#@+", -"+@@...#...#...#@+", -"+@@...#...#...#@+", -"+@@...#...#...#@+", -"+@@...#...#...#@+", -"+@@...#...#...#@+", -"+@@@.##@.##@.##@+", -"+@@@.#@@.#@@.#@@+", -"+@@@.#@@.#@@.#@@+", -"+@@@.#@@.#@@.#@@+", -"+@@@.#@@.#@@.#@@+", -".+++.+++.+++.+++.", -"................."}; diff --git a/extensions/gripd/midiA.xpm b/extensions/gripd/midiA.xpm deleted file mode 100644 index 6779a396c511e2dbc3cfd1045ad2a0e0439da9ce..0000000000000000000000000000000000000000 --- a/extensions/gripd/midiA.xpm +++ /dev/null @@ -1,24 +0,0 @@ -/* XPM */ -static char * midiA_xpm[] = { -"17 16 5 1", -" c None", -". c #000000", -"+ c #045B0E", -"@ c #00FF08", -"# c #07BA1F", -" ", -" ... ... ... ", -"+++............++", -"+@@...#...#...#@+", -"+@@...#...#...#@+", -"+@@...#...#...#@+", -"+@@...#...#...#@+", -"+@@...#...#...#@+", -"+@@...#...#...#@+", -"+@@@.##@.##@.##@+", -"+@@@.#@@.#@@.#@@+", -"+@@@.#@@.#@@.#@@+", -"+@@@.#@@.#@@.#@@+", -"+@@@.#@@.#@@.#@@+", -".+++.+++.+++.+++.", -"................."}; diff --git a/extensions/gripd/midiX.xpm b/extensions/gripd/midiX.xpm deleted file mode 100644 index 8ee69f93198378e81d8d1de34f14b2c3dc0e74da..0000000000000000000000000000000000000000 --- a/extensions/gripd/midiX.xpm +++ /dev/null @@ -1,26 +0,0 @@ -/* XPM */ -static char * midiX_xpm[] = { -"17 16 7 1", -" c None", -". c #000000", -"+ c #808080", -"@ c #FF0000", -"# c #FF8484", -"$ c #FFFFFF", -"% c #C0C0C0", -" ", -" ... ... ... ", -"+++@@#.....#@@.++", -"+$$@@@#...#@@@%$+", -"+$$@@@@#.#@@@@%$+", -"+$$#@@@@#@@@@#%$+", -"+$$.#@@@@@@@#.%$+", -"+$$..#@@@@@#..%$+", -"+$$..#@@@@@#..%$+", -"+$$$#@@@@@@@#%%$+", -"+$$#@@@@#@@@@#$$+", -"+$$@@@@#.#@@@@$$+", -"+$$@@@#$.%#@@@$$+", -"+$$@@#$$.%$#@@$$+", -".+++.+++.+++.+++.", -"................."}; diff --git a/extensions/gripd/src/Makefile.Linux b/extensions/gripd/src/Makefile.Linux deleted file mode 100644 index 40324e7e59662ef133fce687b3fb93149142b070..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/Makefile.Linux +++ /dev/null @@ -1,48 +0,0 @@ -include makefile - -current: all - -all: gripd.pd_linux joystickmodule.so midimodule.so - -LINUXCFLAGS = -DPD -O2 -funroll-loops -fomit-frame-pointer \ - -Wall -W -Wshadow -Wstrict-prototypes \ - -Wno-unused -Wno-parentheses -Wno-switch -MIDIDEFINES = -D$(MIDIOSSUBTYPE) -DLINUX -MIDICOMPILEFLAGS = -O6 -I./midiio/include $(MIDIDEFINES) -MIDILINKFLAGS = -L$(SYSTEMLIBDIR) -lpthread -L./midiio/lib -lmidiio -ifeq ($(MIDIOSSUBTYPE), ALSA) -MIDILINKFLAGS += -lasound -endif - -gripd.pd_linux: - cc $(LINUXCFLAGS) $(PDINCLUDE) -o gripd.o -c gripd.c - ld -export_dynamic -lm -shared -o gripd.pd_linux gripd.o -lc -lm - strip --strip-unneeded gripd.pd_linux - cp gripd.pd_linux .. - -joystickmodule.so: -ifeq ($(JOYSTICK), TRUE) - cc -c joystick.c - cc $(LINUXPYTHONINCLUDE) -c -DHAVE_CONFIG_H joystick_wrap.c - ld -shared joystick.o joystick_wrap.o -o joystickmodule.so - cp joystickmodule.so .. -endif - echo "joystick = "$(JOYSTICK) > ../gripd.opt - -midimodule.so: -ifeq ($(MIDI), TRUE) - make -f Makefile.midiioLibrary.$(MIDIOSSUBTYPE) - g++ -c $(MIDICOMPILEFLAGS) midi.cpp - g++ $(LINUXPYTHONINCLUDE) -c -DHAVE_CONFIG_H midi_wrap.c - g++ -shared midi.o midi_wrap.o $(MIDILINKFLAGS) -o midimodule.so - cp midimodule.so .. -endif - echo "midi = "$(MIDI) >> ../gripd.opt - -linux_clean: - rm *.o - rm gripd.pd_linux - rm joystickmodule.so - rm midimodule.so - make -f Makefile.midiioLibrary.$(MIDIOSSUBTYPE) clean - diff --git a/extensions/gripd/src/Makefile.NT b/extensions/gripd/src/Makefile.NT deleted file mode 100644 index 497459266e09238c40173de30f23295211cdb146..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/Makefile.NT +++ /dev/null @@ -1,86 +0,0 @@ -!INCLUDE makefile - -current: all -all: gripd.dll joystick.dll midi.dll - -PDNTCFLAGS = /W3 /WX /DNT /DPD /nologo - -PDNTINCLUDE = /I. /I\tcl\include /I$(PDNTSRCDIR) /I$(VC)\include -JOYINCLUDE = /I$(PYTHONHOME)\include /I$(VC)\INCLUDE -MIDIINCLUDE = /I$(PYTHONHOME)\include /I$(VC)\INCLUDE /I.\midiio\include -PDNTLIB = $(VC)\lib\libc.lib \ - $(VC)\lib\oldnames.lib \ - $(VC)\lib\kernel32.lib \ - $(VC)\lib\wsock32.lib \ - $(VC)\lib\uuid.lib \ - $(PDNTLDIR)\pd.lib -JOYLIBS = $(VC)\LIB\kernel32.lib \ - $(VC)\LIB\advapi32.lib \ - $(VC)\LIB\user32.lib \ - $(VC)\LIB\gdi32.lib \ - $(VC)\LIB\libcmt.lib \ - $(VC)\LIB\comdlg32.lib \ - $(VC)\LIB\oldnames.lib \ - $(VC)\LIB\winmm.lib \ - $(VC)\LIB\winspool.lib \ - $(PYTHONHOME)\libs\python$(PYTHONVER).lib -MIDILIBS = midiio\lib\midiio.lib \ - $(PYTHONHOME)\libs\python$(PYTHONVER).lib \ - $(VC)\lib\kernel32.lib \ - $(VC)\lib\advapi32.lib \ - $(VC)\lib\user32.lib \ - $(VC)\lib\gdi32.lib \ - $(VC)\lib\comdlg32.lib \ - $(VC)\lib\oldnames.lib \ - $(VC)\lib\winmm.lib \ - $(VC)\lib\winspool.lib -JOYLOPT = -debug:full -debugtype:cv /NODEFAULTLIB /RELEASE /NOLOGO \ - /MACHINE:IX86 -entry:_DllMainCRTStartup@12 -dll -MIDILOPT = -debug:full -debugtype:cv /RELEASE /NOLOGO /NODEFAULTLIB:msvcrt.lib \ - /MACHINE:IX86 -entry:_DllMainCRTStartup@12 -dll - -gripd.dll: - cl $(PDNTCFLAGS) $(PDNTINCLUDE) /c gripd.c - link /dll /export:gripd_setup gripd.obj $(PDNTLIB) - copy gripd.dll .. - -joystick.dll: -!IF "$(JOYSTICK)" == "TRUE" - cl /TP /DNT /c $(JOYINCLUDE) joystick.c - cl /Z7 /Od /c /nologo /D__WIN32__ $(JOYINCLUDE) joystick_wrap.c - link $(JOYLOPT) -out:joystick.dll $(JOYLIBS) joystick_wrap.obj \ - joystick.obj - copy joystick.dll .. -!ENDIF - echo joystick = $(JOYSTICK) > ..\gripd.opt - -midi.dll: -!IF "$(MIDI)" == "TRUE" - nmake -f Makefile.midiioLibrary.NT - cl /DVISUAL /TP /DNT /c /GX $(MIDIINCLUDE) midi.cpp - cl /TP /DVISUAL /Z7 /Od /c /nologo /D__WIN32__ $(MIDIINCLUDE) midi_wrap.c - link $(MIDILOPT) -out:midi.dll $(MIDILIBS) midi_wrap.obj midi.obj - copy midi.dll .. -!ENDIF - echo midi = $(MIDI) >> ..\gripd.opt - -nt_clean: - del gripd.obj - del gripd.exp - del gripd.lib - del joystick.pdb - del joystick.obj - del joystick.lib - del joystick.exp - del joystick_wrap.obj - del midi.pdb - del midi.obj - del midi.lib - del midi.exp - del midi_wrap.obj - del gripd.dll - del joystick.dll - del midi.dll - nmake -f Makefile.midiioLibrary.NT CLEAN - - diff --git a/extensions/gripd/src/Makefile.midiioLibrary.ALSA b/extensions/gripd/src/Makefile.midiioLibrary.ALSA deleted file mode 100644 index 5a5a7b2ec8fd60b3064d5674d778fc09ff84efb5..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/Makefile.midiioLibrary.ALSA +++ /dev/null @@ -1,205 +0,0 @@ -## midiio library GNU makefile for linux. -## -## Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -## Creation Date: Sat Nov 2 19:49:57 PST 2002 -## Last Modified: Sat Nov 2 19:50:00 PST 2002 -## Filename: ...midiio/Makefile.library -## -## Description: This Makefile creates the midiio library lib/libmidiio.a -## for linux, using gcc 2.7.2.1 or higher -## -## To run this makefile, type (without quotes) "make -f Makefile.library" -## - -########################################################################### -# # -# # -# Operating System OSTYPEs available in the midiio library compilation: # -# -# LINUX = Linux running on intel computers -# VISUAL = Windows 95/NT using Microsoft Visual C++ 5/6 -# OSX = Apple Mac OS X (10.2 or higher when it is ready) -# -# The file "sigConfiguration.h" in the include directory contains additional -# defines which will be activated by the OS given by the OSTYPE variable -# below. Look at the sigConfiguration.h file for various things which need -# to be defined specifically for each OS. -# -OSTYPE = LINUX - -# The OSSUBTYPE is for determining which type of sound drivers -# are being used in linux. There are three possibilities: -# OSSUBTYPE = ALSA # ALSA 0.9 interface (http://www.alsa-project.org) -# OSSUBTYPE = ALSA05 # ALSA 0.5 interface (http://www.alsa-project.org) -# OSSUBTYPE = OSS # OSS interface (http://www.4front-tech.com) -# Note: The Improv library accesses the internal/external MIDI devices -# in OSS, but only the external MIDI devices in ALSA. OSS can be -# emulated in ALSA 0.9. -# -OSSUBTYPE = ALSA - -OBJDIR = ./midiio/obj -SRCDIR = ./midiio/src -INCDIR = ./midiio/include -LIBDIR = ./midiio/lib -LIBFILE = libmidiio.a - -COMPILER = g++ -# MAC OSX 10.2 needs this compiler: -# COMPILER = g++2 - -DEFINES = $(addprefix -D,$(OSTYPE)) $(addprefix -D,$(OSSUBTYPE)) -FLAGS = -Wall -c -O3 $(DEFINES) -I$(INCDIR) - -# # -# End of user-modifiable variables. # -# # -########################################################################### - - -# setting up the directory paths to search for dependency files -vpath %.h $(INCDIR):$(SRCDIR) -vpath %.cpp $(SRCDIR):$(INCDIR) -vpath %.o $(OBJDIR) - -# generating a list of the object files -OBJS = $(notdir $(patsubst %.cpp,%.o,$(wildcard $(SRCDIR)/*.cpp))) - -# targets which don't actually refer to files -.PHONY : all linux makeobjdir - - -########################################################################### -# # -# Hardware Configurations: # -# # - -all: makeobjdir $(OBJS) - - ifeq ($(OSTYPE),LINUX) - @echo Making midiio library file for linux ... - -mkdir -p $(LIBDIR) - -rm -f $(LIBDIR)/$(LIBFILE) - ar r $(LIBDIR)/$(LIBFILE) $(OBJDIR)/*.o - ranlib $(LIBDIR)/$(LIBFILE) - endif - - ifeq ($(OSTYPE),VISUAL) - echo "this makefile doesn't work with Visual C++." - endif - -clean: - @echo Erasing object files: - -rm -f $(OBJDIR)/*.o - @echo Erasing obj directory: - -rmdir $(OBJDIR) - -makeobjdir: - -mkdir -p $(OBJDIR) - -# defining an explicit rule for object file dependencies -%.o : %.cpp - $(COMPILER) $(FLAGS) -o $(OBJDIR)/$(notdir $@) $< - - -# # -########################################################################### - - - -########################################################################### -# # -# Dependencies -- generated with the following command in # -# the src directory (in csh shell): # -# # -# foreach i (*.cpp) # -# cc -I../include -MM $i | sed 's/\.\.\/include\///g' # -# echo "" # -# end # -# # - -FileIO.o: FileIO.cpp FileIO.h sigConfiguration.h - -MidiFile.o: MidiFile.cpp MidiFile.h FileIO.h Array.h Collection.h \ - Collection.cpp Array.cpp - -MidiFileWrite.o: MidiFileWrite.cpp MidiFileWrite.h FileIO.h SigTimer.h - -MidiIO.o: MidiIO.cpp MidiIO.h MidiInput.h MidiInPort.h MidiMessage.h \ - MidiInPort_unsupported.h CircularBuffer.h CircularBuffer.cpp \ - Array.h Collection.h Collection.cpp Array.cpp MidiOutput.h MidiOutPort.h \ - MidiOutPort_unsupported.h FileIO.h SigTimer.h - -MidiInPort_alsa.o: MidiInPort_alsa.cpp - -MidiInPort_alsa05.o: MidiInPort_alsa05.cpp - -MidiInPort_linux.o: MidiInPort_linux.cpp - -MidiInPort_oss.o: MidiInPort_oss.cpp - -MidiInPort_unsupported.o: MidiInPort_unsupported.cpp \ - MidiInPort_unsupported.h MidiMessage.h CircularBuffer.h \ - CircularBuffer.cpp Array.h Collection.h Collection.cpp \ - Array.cpp - -MidiInPort_visual.o: MidiInPort_visual.cpp - -MidiInput.o: MidiInput.cpp MidiInput.h MidiInPort.h MidiMessage.h \ - MidiInPort_unsupported.h CircularBuffer.h CircularBuffer.cpp \ - Array.h Collection.h Collection.cpp Array.cpp - -MidiMessage.o: MidiMessage.cpp MidiMessage.h - -MidiOutPort_alsa.o: MidiOutPort_alsa.cpp - -MidiOutPort_linux.o: MidiOutPort_linux.cpp - -MidiOutPort_oss.o: MidiOutPort_oss.cpp - -MidiOutPort_unsupported.o: MidiOutPort_unsupported.cpp \ - MidiOutPort_unsupported.h - -MidiOutPort_visual.o: MidiOutPort_visual.cpp - -MidiOutput.o: MidiOutput.cpp MidiOutput.h MidiOutPort.h \ - MidiOutPort_unsupported.h FileIO.h SigTimer.h Array.h Collection.h \ - Collection.cpp Array.cpp - -MidiPerform.o: MidiPerform.cpp MidiPerform.h MidiFile.h FileIO.h Array.h \ - Collection.h Collection.cpp Array.cpp CircularBuffer.h \ - CircularBuffer.cpp SigTimer.h MidiOutput.h MidiOutPort.h \ - MidiOutPort_unsupported.h - -MidiPort.o: MidiPort.cpp MidiPort.h MidiInPort.h MidiMessage.h \ - MidiInPort_unsupported.h CircularBuffer.h CircularBuffer.cpp \ - Array.h Collection.h Collection.cpp Array.cpp MidiOutPort.h \ - MidiOutPort_unsupported.h - -MultiStageEvent.o: MultiStageEvent.cpp MultiStageEvent.h Event.h \ - OneStageEvent.h MidiEvent.h TwoStageEvent.h NoteEvent.h \ - EventBuffer.h CircularBuffer.h CircularBuffer.cpp MidiOutput.h \ - MidiOutPort.h MidiOutPort_unsupported.h FileIO.h SigTimer.h Array.h \ - Collection.h Collection.cpp Array.cpp FunctionEvent.h - -Options.o: Options.cpp Options.h Array.h Collection.h Collection.cpp \ - Array.cpp Options_private.h - -Options_private.o: Options_private.cpp Options_private.h - -Sequencer_alsa.o: Sequencer_alsa.cpp - -Sequencer_alsa05.o: Sequencer_alsa05.cpp - -Sequencer_oss.o: Sequencer_oss.cpp - -SigTimer.o: SigTimer.cpp SigTimer.h - -Voice.o: Voice.cpp Voice.h MidiOutput.h MidiOutPort.h \ - MidiOutPort_unsupported.h FileIO.h SigTimer.h Array.h Collection.h \ - Collection.cpp Array.cpp - - - - - diff --git a/extensions/gripd/src/Makefile.midiioLibrary.NT b/extensions/gripd/src/Makefile.midiioLibrary.NT deleted file mode 100644 index a0900b09327ed8e15a9578d011612fe9e3fa1f8c..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/Makefile.midiioLibrary.NT +++ /dev/null @@ -1,462 +0,0 @@ -# Microsoft Developer Studio Generated NMAKE File, Based on midiio.dsp -!IF "$(CFG)" == "" -CFG = midiio - Win32 Release -!ENDIF - -!IF "$(CFG)" != "midiio - Win32 Release" && "$(CFG)" != "midiio - Win32 Debug" -!MESSAGE Invalid configuration "$(CFG)" specified. -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "midiio.mak" CFG="midiio - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "midiio - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "midiio - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE -!ERROR An invalid configuration is specified. -!ENDIF - -!IF "$(OS)" == "Windows_NT" -NULL= -!ELSE -NULL=nul -!ENDIF - -!IF "$(CFG)" == "midiio - Win32 Release" - -OUTDIR=.\midiio\lib -INTDIR=.\midiio\obj -# Begin Custom Macros -OutDir=.\midiio\lib -# End Custom Macros - -ALL : "$(OUTDIR)\midiio.lib" - - -CLEAN : - -@erase "$(INTDIR)\Array.obj" - -@erase "$(INTDIR)\CircularBuffer.obj" - -@erase "$(INTDIR)\Collection.obj" - -@erase "$(INTDIR)\FileIO.obj" - -@erase "$(INTDIR)\MidiFile.obj" - -@erase "$(INTDIR)\MidiFileWrite.obj" - -@erase "$(INTDIR)\MidiInPort_alsa.obj" - -@erase "$(INTDIR)\MidiInPort_alsa05.obj" - -@erase "$(INTDIR)\MidiInPort_linux.obj" - -@erase "$(INTDIR)\MidiInPort_oss.obj" - -@erase "$(INTDIR)\MidiInPort_unsupported.obj" - -@erase "$(INTDIR)\MidiInPort_visual.obj" - -@erase "$(INTDIR)\MidiInput.obj" - -@erase "$(INTDIR)\MidiIO.obj" - -@erase "$(INTDIR)\MidiMessage.obj" - -@erase "$(INTDIR)\MidiOutPort_alsa.obj" - -@erase "$(INTDIR)\MidiOutPort_linux.obj" - -@erase "$(INTDIR)\MidiOutPort_oss.obj" - -@erase "$(INTDIR)\MidiOutPort_unsupported.obj" - -@erase "$(INTDIR)\MidiOutPort_visual.obj" - -@erase "$(INTDIR)\MidiOutput.obj" - -@erase "$(INTDIR)\MidiPort.obj" - -@erase "$(INTDIR)\Options.obj" - -@erase "$(INTDIR)\Options_private.obj" - -@erase "$(INTDIR)\Sequencer_alsa.obj" - -@erase "$(INTDIR)\Sequencer_alsa05.obj" - -@erase "$(INTDIR)\Sequencer_oss.obj" - -@erase "$(INTDIR)\SigTimer.obj" - -@erase "$(INTDIR)\vc60.idb" - -@erase "$(INTDIR)\Voice.obj" - -@erase "$(INTDIR)\midiio.pch" - -@erase "$(OUTDIR)\midiio.lib" - -"$(OUTDIR)" : - if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" - -CPP=cl.exe -CPP_PROJ=/nologo /ML /W3 /GX /O2 /I ".\midiio\include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "VISUAL" /Fp"$(INTDIR)\midiio.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c - -.c{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cpp{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cxx{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.c{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cpp{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cxx{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -RSC=rc.exe -BSC32=bscmake.exe -BSC32_FLAGS=/nologo /o"$(OUTDIR)\midiio.bsc" -BSC32_SBRS= \ - -LIB32=link.exe -lib -LIB32_FLAGS=/nologo /out:"$(OUTDIR)\midiio.lib" -LIB32_OBJS= \ - "$(INTDIR)\Array.obj" \ - "$(INTDIR)\CircularBuffer.obj" \ - "$(INTDIR)\Collection.obj" \ - "$(INTDIR)\FileIO.obj" \ - "$(INTDIR)\MidiFile.obj" \ - "$(INTDIR)\MidiFileWrite.obj" \ - "$(INTDIR)\MidiInPort_alsa.obj" \ - "$(INTDIR)\MidiInPort_alsa05.obj" \ - "$(INTDIR)\MidiInPort_linux.obj" \ - "$(INTDIR)\MidiInPort_oss.obj" \ - "$(INTDIR)\MidiInPort_unsupported.obj" \ - "$(INTDIR)\MidiInPort_visual.obj" \ - "$(INTDIR)\MidiInput.obj" \ - "$(INTDIR)\MidiIO.obj" \ - "$(INTDIR)\MidiMessage.obj" \ - "$(INTDIR)\MidiOutPort_alsa.obj" \ - "$(INTDIR)\MidiOutPort_linux.obj" \ - "$(INTDIR)\MidiOutPort_oss.obj" \ - "$(INTDIR)\MidiOutPort_unsupported.obj" \ - "$(INTDIR)\MidiOutPort_visual.obj" \ - "$(INTDIR)\MidiOutput.obj" \ - "$(INTDIR)\MidiPort.obj" \ - "$(INTDIR)\Options.obj" \ - "$(INTDIR)\Options_private.obj" \ - "$(INTDIR)\Sequencer_alsa.obj" \ - "$(INTDIR)\Sequencer_alsa05.obj" \ - "$(INTDIR)\Sequencer_oss.obj" \ - "$(INTDIR)\SigTimer.obj" \ - "$(INTDIR)\Voice.obj" - -"$(OUTDIR)\midiio.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS) - $(LIB32) @<< - $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS) -<< - -!ELSEIF "$(CFG)" == "midiio - Win32 Debug" - -OUTDIR=.\Debug -INTDIR=.\Debug -# Begin Custom Macros -OutDir=.\Debug -# End Custom Macros - -ALL : "$(OUTDIR)\midiio.lib" - - -CLEAN : - -@erase "$(INTDIR)\Array.obj" - -@erase "$(INTDIR)\CircularBuffer.obj" - -@erase "$(INTDIR)\Collection.obj" - -@erase "$(INTDIR)\FileIO.obj" - -@erase "$(INTDIR)\MidiFile.obj" - -@erase "$(INTDIR)\MidiFileWrite.obj" - -@erase "$(INTDIR)\MidiInPort_alsa.obj" - -@erase "$(INTDIR)\MidiInPort_alsa05.obj" - -@erase "$(INTDIR)\MidiInPort_linux.obj" - -@erase "$(INTDIR)\MidiInPort_oss.obj" - -@erase "$(INTDIR)\MidiInPort_unsupported.obj" - -@erase "$(INTDIR)\MidiInPort_visual.obj" - -@erase "$(INTDIR)\MidiInput.obj" - -@erase "$(INTDIR)\MidiIO.obj" - -@erase "$(INTDIR)\MidiMessage.obj" - -@erase "$(INTDIR)\MidiOutPort_alsa.obj" - -@erase "$(INTDIR)\MidiOutPort_linux.obj" - -@erase "$(INTDIR)\MidiOutPort_oss.obj" - -@erase "$(INTDIR)\MidiOutPort_unsupported.obj" - -@erase "$(INTDIR)\MidiOutPort_visual.obj" - -@erase "$(INTDIR)\MidiOutput.obj" - -@erase "$(INTDIR)\MidiPort.obj" - -@erase "$(INTDIR)\Options.obj" - -@erase "$(INTDIR)\Options_private.obj" - -@erase "$(INTDIR)\Sequencer_alsa.obj" - -@erase "$(INTDIR)\Sequencer_alsa05.obj" - -@erase "$(INTDIR)\Sequencer_oss.obj" - -@erase "$(INTDIR)\SigTimer.obj" - -@erase "$(INTDIR)\vc60.idb" - -@erase "$(INTDIR)\vc60.pdb" - -@erase "$(INTDIR)\Voice.obj" - -@erase "$(OUTDIR)\midiio.lib" - -"$(OUTDIR)" : - if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" - -CPP=cl.exe -CPP_PROJ=/nologo /MLd /W3 /Gm /GX /ZI /Od /I ".\midiio\include" /D "VISUAL" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\midiio.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c - -.c{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cpp{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cxx{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.c{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cpp{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cxx{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -RSC=rc.exe -BSC32=bscmake.exe -BSC32_FLAGS=/nologo /o"$(OUTDIR)\midiio.bsc" -BSC32_SBRS= \ - -LIB32=link.exe -lib -LIB32_FLAGS=/nologo /out:"$(OUTDIR)\midiio.lib" -LIB32_OBJS= \ - "$(INTDIR)\Array.obj" \ - "$(INTDIR)\CircularBuffer.obj" \ - "$(INTDIR)\Collection.obj" \ - "$(INTDIR)\FileIO.obj" \ - "$(INTDIR)\MidiFile.obj" \ - "$(INTDIR)\MidiFileWrite.obj" \ - "$(INTDIR)\MidiInPort_alsa.obj" \ - "$(INTDIR)\MidiInPort_alsa05.obj" \ - "$(INTDIR)\MidiInPort_linux.obj" \ - "$(INTDIR)\MidiInPort_oss.obj" \ - "$(INTDIR)\MidiInPort_unsupported.obj" \ - "$(INTDIR)\MidiInPort_visual.obj" \ - "$(INTDIR)\MidiInput.obj" \ - "$(INTDIR)\MidiIO.obj" \ - "$(INTDIR)\MidiMessage.obj" \ - "$(INTDIR)\MidiOutPort_alsa.obj" \ - "$(INTDIR)\MidiOutPort_linux.obj" \ - "$(INTDIR)\MidiOutPort_oss.obj" \ - "$(INTDIR)\MidiOutPort_unsupported.obj" \ - "$(INTDIR)\MidiOutPort_visual.obj" \ - "$(INTDIR)\MidiOutput.obj" \ - "$(INTDIR)\MidiPort.obj" \ - "$(INTDIR)\Options.obj" \ - "$(INTDIR)\Options_private.obj" \ - "$(INTDIR)\Sequencer_alsa.obj" \ - "$(INTDIR)\Sequencer_alsa05.obj" \ - "$(INTDIR)\Sequencer_oss.obj" \ - "$(INTDIR)\SigTimer.obj" \ - "$(INTDIR)\Voice.obj" - -"$(OUTDIR)\midiio.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS) - $(LIB32) @<< - $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS) -<< - -!ENDIF - - -!IF "$(NO_EXTERNAL_DEPS)" != "1" -!IF EXISTS("midiiolib.dep") -!INCLUDE "midiiolib.dep" -!ENDIF -!ENDIF - - -!IF "$(CFG)" == "midiio - Win32 Release" || "$(CFG)" == "midiio - Win32 Debug" -SOURCE=".\midiio\include\Array.cpp" - -"$(INTDIR)\Array.obj" : $(SOURCE) "$(INTDIR)" ".\midiio\include\Collection.cpp" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\include\CircularBuffer.cpp" - -"$(INTDIR)\CircularBuffer.obj" : $(SOURCE) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\include\Collection.cpp" - -"$(INTDIR)\Collection.obj" : $(SOURCE) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\src\FileIO.cpp" - -"$(INTDIR)\FileIO.obj" : $(SOURCE) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\src\MidiFile.cpp" - -"$(INTDIR)\MidiFile.obj" : $(SOURCE) "$(INTDIR)" ".\midiio\include\Array.cpp" ".\midiio\include\Collection.cpp" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\src\MidiFileWrite.cpp" - -"$(INTDIR)\MidiFileWrite.obj" : $(SOURCE) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\src\MidiInPort_alsa.cpp" - -"$(INTDIR)\MidiInPort_alsa.obj" : $(SOURCE) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\src\MidiInPort_alsa05.cpp" - -"$(INTDIR)\MidiInPort_alsa05.obj" : $(SOURCE) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\src\MidiInPort_linux.cpp" - -"$(INTDIR)\MidiInPort_linux.obj" : $(SOURCE) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\src\MidiInPort_oss.cpp" - -"$(INTDIR)\MidiInPort_oss.obj" : $(SOURCE) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\src\MidiInPort_unsupported.cpp" - -"$(INTDIR)\MidiInPort_unsupported.obj" : $(SOURCE) "$(INTDIR)" ".\midiio\include\CircularBuffer.cpp" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\src\MidiInPort_visual.cpp" - -"$(INTDIR)\MidiInPort_visual.obj" : $(SOURCE) "$(INTDIR)" ".\midiio\include\Array.cpp" ".\midiio\include\Collection.cpp" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\src\MidiInput.cpp" - -"$(INTDIR)\MidiInput.obj" : $(SOURCE) "$(INTDIR)" ".\midiio\include\Array.cpp" ".\midiio\include\Collection.cpp" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\src\MidiIO.cpp" - -"$(INTDIR)\MidiIO.obj" : $(SOURCE) "$(INTDIR)" ".\midiio\include\Array.cpp" ".\midiio\include\Collection.cpp" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\src\MidiMessage.cpp" - -"$(INTDIR)\MidiMessage.obj" : $(SOURCE) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\src\MidiOutPort_alsa.cpp" - -"$(INTDIR)\MidiOutPort_alsa.obj" : $(SOURCE) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\src\MidiOutPort_linux.cpp" - -"$(INTDIR)\MidiOutPort_linux.obj" : $(SOURCE) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\src\MidiOutPort_oss.cpp" - -"$(INTDIR)\MidiOutPort_oss.obj" : $(SOURCE) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\src\MidiOutPort_unsupported.cpp" - -"$(INTDIR)\MidiOutPort_unsupported.obj" : $(SOURCE) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\src\MidiOutPort_visual.cpp" - -"$(INTDIR)\MidiOutPort_visual.obj" : $(SOURCE) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\src\MidiOutput.cpp" - -"$(INTDIR)\MidiOutput.obj" : $(SOURCE) "$(INTDIR)" ".\midiio\include\Array.cpp" ".\midiio\include\Collection.cpp" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\src\MidiPort.cpp" - -"$(INTDIR)\MidiPort.obj" : $(SOURCE) "$(INTDIR)" ".\midiio\include\Array.cpp" ".\midiio\include\Collection.cpp" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\src\Options.cpp" - -"$(INTDIR)\Options.obj" : $(SOURCE) "$(INTDIR)" ".\midiio\include\Array.cpp" ".\midiio\include\Collection.cpp" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\src\Options_private.cpp" - -"$(INTDIR)\Options_private.obj" : $(SOURCE) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\src\Sequencer_alsa.cpp" - -"$(INTDIR)\Sequencer_alsa.obj" : $(SOURCE) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\src\Sequencer_alsa05.cpp" - -"$(INTDIR)\Sequencer_alsa05.obj" : $(SOURCE) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\src\Sequencer_oss.cpp" - -"$(INTDIR)\Sequencer_oss.obj" : $(SOURCE) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\src\SigTimer.cpp" - -"$(INTDIR)\SigTimer.obj" : $(SOURCE) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=".\midiio\src\Voice.cpp" - -"$(INTDIR)\Voice.obj" : $(SOURCE) "$(INTDIR)" ".\midiio\include\Array.cpp" ".\midiio\include\Collection.cpp" - $(CPP) $(CPP_PROJ) $(SOURCE) - - - -!ENDIF - diff --git a/extensions/gripd/src/Makefile.midiioLibrary.OSS b/extensions/gripd/src/Makefile.midiioLibrary.OSS deleted file mode 100644 index 2f1e6e2444ba29d14b9dd7071516e56d078756f6..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/Makefile.midiioLibrary.OSS +++ /dev/null @@ -1,205 +0,0 @@ -## midiio library GNU makefile for linux. -## -## Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -## Creation Date: Sat Nov 2 19:49:57 PST 2002 -## Last Modified: Sat Nov 2 19:50:00 PST 2002 -## Filename: ...midiio/Makefile.library -## -## Description: This Makefile creates the midiio library lib/libmidiio.a -## for linux, using gcc 2.7.2.1 or higher -## -## To run this makefile, type (without quotes) "make -f Makefile.library" -## - -########################################################################### -# # -# # -# Operating System OSTYPEs available in the midiio library compilation: # -# -# LINUX = Linux running on intel computers -# VISUAL = Windows 95/NT using Microsoft Visual C++ 5/6 -# OSX = Apple Mac OS X (10.2 or higher when it is ready) -# -# The file "sigConfiguration.h" in the include directory contains additional -# defines which will be activated by the OS given by the OSTYPE variable -# below. Look at the sigConfiguration.h file for various things which need -# to be defined specifically for each OS. -# -OSTYPE = LINUX - -# The OSSUBTYPE is for determining which type of sound drivers -# are being used in linux. There are three possibilities: -# OSSUBTYPE = ALSA # ALSA 0.9 interface (http://www.alsa-project.org) -# OSSUBTYPE = ALSA05 # ALSA 0.5 interface (http://www.alsa-project.org) -# OSSUBTYPE = OSS # OSS interface (http://www.4front-tech.com) -# Note: The Improv library accesses the internal/external MIDI devices -# in OSS, but only the external MIDI devices in ALSA. OSS can be -# emulated in ALSA 0.9. -# -OSSUBTYPE = OSS - -OBJDIR = ./midiio/obj -SRCDIR = ./midiio/src -INCDIR = ./midiio/include -LIBDIR = ./midiio/lib -LIBFILE = libmidiio.a - -COMPILER = g++ -# MAC OSX 10.2 needs this compiler: -# COMPILER = g++2 - -DEFINES = $(addprefix -D,$(OSTYPE)) $(addprefix -D,$(OSSUBTYPE)) -FLAGS = -Wall -c -O3 $(DEFINES) -I$(INCDIR) - -# # -# End of user-modifiable variables. # -# # -########################################################################### - - -# setting up the directory paths to search for dependency files -vpath %.h $(INCDIR):$(SRCDIR) -vpath %.cpp $(SRCDIR):$(INCDIR) -vpath %.o $(OBJDIR) - -# generating a list of the object files -OBJS = $(notdir $(patsubst %.cpp,%.o,$(wildcard $(SRCDIR)/*.cpp))) - -# targets which don't actually refer to files -.PHONY : all linux makeobjdir - - -########################################################################### -# # -# Hardware Configurations: # -# # - -all: makeobjdir $(OBJS) - - ifeq ($(OSTYPE),LINUX) - @echo Making midiio library file for linux ... - -mkdir -p $(LIBDIR) - -rm -f $(LIBDIR)/$(LIBFILE) - ar r $(LIBDIR)/$(LIBFILE) $(OBJDIR)/*.o - ranlib $(LIBDIR)/$(LIBFILE) - endif - - ifeq ($(OSTYPE),VISUAL) - echo "this makefile doesn't work with Visual C++." - endif - -clean: - @echo Erasing object files: - -rm -f $(OBJDIR)/*.o - @echo Erasing obj directory: - -rmdir $(OBJDIR) - -makeobjdir: - -mkdir -p $(OBJDIR) - -# defining an explicit rule for object file dependencies -%.o : %.cpp - $(COMPILER) $(FLAGS) -o $(OBJDIR)/$(notdir $@) $< - - -# # -########################################################################### - - - -########################################################################### -# # -# Dependencies -- generated with the following command in # -# the src directory (in csh shell): # -# # -# foreach i (*.cpp) # -# cc -I../include -MM $i | sed 's/\.\.\/include\///g' # -# echo "" # -# end # -# # - -FileIO.o: FileIO.cpp FileIO.h sigConfiguration.h - -MidiFile.o: MidiFile.cpp MidiFile.h FileIO.h Array.h Collection.h \ - Collection.cpp Array.cpp - -MidiFileWrite.o: MidiFileWrite.cpp MidiFileWrite.h FileIO.h SigTimer.h - -MidiIO.o: MidiIO.cpp MidiIO.h MidiInput.h MidiInPort.h MidiMessage.h \ - MidiInPort_unsupported.h CircularBuffer.h CircularBuffer.cpp \ - Array.h Collection.h Collection.cpp Array.cpp MidiOutput.h MidiOutPort.h \ - MidiOutPort_unsupported.h FileIO.h SigTimer.h - -MidiInPort_alsa.o: MidiInPort_alsa.cpp - -MidiInPort_alsa05.o: MidiInPort_alsa05.cpp - -MidiInPort_linux.o: MidiInPort_linux.cpp - -MidiInPort_oss.o: MidiInPort_oss.cpp - -MidiInPort_unsupported.o: MidiInPort_unsupported.cpp \ - MidiInPort_unsupported.h MidiMessage.h CircularBuffer.h \ - CircularBuffer.cpp Array.h Collection.h Collection.cpp \ - Array.cpp - -MidiInPort_visual.o: MidiInPort_visual.cpp - -MidiInput.o: MidiInput.cpp MidiInput.h MidiInPort.h MidiMessage.h \ - MidiInPort_unsupported.h CircularBuffer.h CircularBuffer.cpp \ - Array.h Collection.h Collection.cpp Array.cpp - -MidiMessage.o: MidiMessage.cpp MidiMessage.h - -MidiOutPort_alsa.o: MidiOutPort_alsa.cpp - -MidiOutPort_linux.o: MidiOutPort_linux.cpp - -MidiOutPort_oss.o: MidiOutPort_oss.cpp - -MidiOutPort_unsupported.o: MidiOutPort_unsupported.cpp \ - MidiOutPort_unsupported.h - -MidiOutPort_visual.o: MidiOutPort_visual.cpp - -MidiOutput.o: MidiOutput.cpp MidiOutput.h MidiOutPort.h \ - MidiOutPort_unsupported.h FileIO.h SigTimer.h Array.h Collection.h \ - Collection.cpp Array.cpp - -MidiPerform.o: MidiPerform.cpp MidiPerform.h MidiFile.h FileIO.h Array.h \ - Collection.h Collection.cpp Array.cpp CircularBuffer.h \ - CircularBuffer.cpp SigTimer.h MidiOutput.h MidiOutPort.h \ - MidiOutPort_unsupported.h - -MidiPort.o: MidiPort.cpp MidiPort.h MidiInPort.h MidiMessage.h \ - MidiInPort_unsupported.h CircularBuffer.h CircularBuffer.cpp \ - Array.h Collection.h Collection.cpp Array.cpp MidiOutPort.h \ - MidiOutPort_unsupported.h - -MultiStageEvent.o: MultiStageEvent.cpp MultiStageEvent.h Event.h \ - OneStageEvent.h MidiEvent.h TwoStageEvent.h NoteEvent.h \ - EventBuffer.h CircularBuffer.h CircularBuffer.cpp MidiOutput.h \ - MidiOutPort.h MidiOutPort_unsupported.h FileIO.h SigTimer.h Array.h \ - Collection.h Collection.cpp Array.cpp FunctionEvent.h - -Options.o: Options.cpp Options.h Array.h Collection.h Collection.cpp \ - Array.cpp Options_private.h - -Options_private.o: Options_private.cpp Options_private.h - -Sequencer_alsa.o: Sequencer_alsa.cpp - -Sequencer_alsa05.o: Sequencer_alsa05.cpp - -Sequencer_oss.o: Sequencer_oss.cpp - -SigTimer.o: SigTimer.cpp SigTimer.h - -Voice.o: Voice.cpp Voice.h MidiOutput.h MidiOutPort.h \ - MidiOutPort_unsupported.h FileIO.h SigTimer.h Array.h Collection.h \ - Collection.cpp Array.cpp - - - - - diff --git a/extensions/gripd/src/gripd.c b/extensions/gripd/src/gripd.c deleted file mode 100644 index fce1aa5a9fbac31f8abe4dd63191d916612b0c6f..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/gripd.c +++ /dev/null @@ -1,1031 +0,0 @@ -/* GrIPD v0.1. - Graphical Interface for Pure Data -** Copyright (C) 2003 Joseph A. Sarlo -** -** This program is free software; you can redistribute it and/orsig -** 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. -** -** jsarlo@ucsd.edu -*/ - -#include "gripd.h" - -void gripd_setup(void) -{ - post (" \n"); - post (" .______________________________________."); - post (" | |"); - post (" | GrIPD: v%s |", VERSION); - post (" | Graphical Interface for Pure Data |"); - post (" | (C) Copyright 2003 Joseph A. Sarlo |"); - post (" | GNU General Public License |"); - post (" |______________________________________|"); - post (" \n"); -#ifndef NT - signal(SIGCHLD, gripd_sigChild); -#endif - gripd_class = class_new(gensym("gripd"), (t_newmethod)gripd_new, - (t_method)gripd_free, sizeof(t_gripd), 0, - A_DEFFLOAT, 0); - gripdRcvr_class = class_new(gensym("gripdRcvr"),0,0,sizeof(t_gripd), - 0, 0); - class_addmethod(gripd_class, (t_method)gripd_connect, - gensym("connect"), 0); - class_addmethod(gripd_class, (t_method)gripd_disconnect, - gensym("disconnect"), 0); - class_addmethod(gripd_class, (t_method)gripd_open, - gensym("open"), A_GIMME, 0); - class_addmethod(gripd_class, (t_method)gripd_openLocked, - gensym("open_locked"), A_GIMME, 0); - class_addmethod(gripd_class, (t_method)gripd_setPythonPath, - gensym("set_python_path"), A_GIMME, 0); - class_addmethod(gripd_class, (t_method)gripd_setPath, - gensym("set_path"), A_GIMME, 0); - class_addmethod(gripd_class, (t_method)gripd_setSTime, - gensym("poll_send"), A_DEFFLOAT, 0); - class_addmethod(gripd_class, (t_method)gripd_setRTime, - gensym("poll_receive"), A_DEFFLOAT, 0); - class_addmethod(gripd_class, (t_method)gripd_lock, - gensym("lock"), 0); - class_addmethod(gripd_class, (t_method)gripd_unlock, - gensym("unlock"), 0); - class_addmethod(gripd_class, (t_method)gripd_setTitle, - gensym("set_title"), A_GIMME, 0); - class_addmethod(gripd_class, (t_method)gripd_hide, - gensym("hide"), A_GIMME, 0); - class_addmethod(gripd_class, (t_method)gripd_show, - gensym("show"), A_GIMME, 0); - class_addmethod(gripd_class, (t_method)gripd_openpanel, - gensym("openpanel"), A_GIMME, 0); - class_addmethod(gripd_class, (t_method)gripd_savepanel, - gensym("savepanel"), A_GIMME, 0); - class_addbang(gripdRcvr_class, (t_method)gripdR_bang); - class_addfloat(gripdRcvr_class, (t_method)gripdR_float); - class_addsymbol(gripdRcvr_class, (t_method)gripdR_symbol); - class_addanything(gripdRcvr_class, (t_method)gripdR_anything); - class_addlist(gripdRcvr_class, (t_method)gripdR_list); -} - -void *gripd_new(t_floatarg port) -{ - t_gripd *x = (t_gripd *)pd_new(gripd_class); - - if (port == 0) - x->x_port = DEFPORT; - else - x->x_port = (int)port; - x->x_bound = 0; - x->x_connected = 0; -#ifdef NT - x->x_localOpened = (int *)malloc(sizeof(int)); -#else - x->x_childPID = 0; - x->x_localOpened = (int *)shmat(shmget(IPC_PRIVATE,sizeof(int), - IPC_CREAT | SHM_R | SHM_W), 0, - 0); -#endif - *(x->x_localOpened) = 0; - x->x_rdeltime = DEFRDELTIME; - x->x_sdeltime = DEFSDELTIME; - x->x_rclock = clock_new(x, (t_method)gripd_recv); - x->x_sclock = clock_new(x, (t_method)gripd_send); - x->x_connectionClock = clock_new(x, (t_method)gripd_trySocket); - x->x_bindClock = clock_new(x, (t_method)gripd_connect); -#ifdef NT - strcpy(x->x_pythExec, "c:\\program files\\python\\"); - strcpy(x->x_pythFile, "..\\gripd\\"); - x->x_wsockInitByMe = 0; -#else - strcpy(x->x_pythExec, ""); - strcpy(x->x_pythFile, "../gripd/"); -#endif - x->x_rcvrListMaxSize = DEFLISTSIZE; - x->x_rcvrs = (t_gripdRcvr **)calloc(x->x_rcvrListMaxSize, - sizeof(t_gripdRcvr *)); - x->x_rcvrListSize = 0; - x->x_sendBuffer[0] = '\0'; - outlet_new(&x->t_ob, &s_float); - x->x_outlet2 = outlet_new(&x->t_ob, &s_float); - gripd_getApplicationPath(x); - return (void *)x; -} - -void gripd_connect(t_gripd *x) -{ - gripd_openSocket(x); - clock_delay(x->x_rclock, x->x_rdeltime); - clock_delay(x->x_sclock, x->x_sdeltime); -} - -void gripd_openSocket(t_gripd *x) -{ -#ifdef NT - char my_name[DEFSTRSIZE]; - struct sockaddr_in my_addr; - struct sockaddr_in new_addr; - struct hostent *hp; - WSADATA wsaData; - int nSize, temp = 1; - unsigned long on = 1; - - if (!x->x_bound) - { - memset(&my_addr, 0, sizeof(struct sockaddr_in)); - memset(&new_addr, 0, sizeof(struct sockaddr_in)); - gethostname(my_name, sizeof(my_name)); - hp = gethostbyname(my_name); - if (hp == NULL) - { - if (WSAGetLastError() == WSANOTINITIALISED) - { - if (WSAStartup (MAKEWORD(1,1), &wsaData) != 0) - post("GrIPD: Failed to initialize winsock"); - else - { - x->x_wsockInitByMe = 1; - gripd_openSocket(x); - return; - } - } - else - { - post("GrIPD: Gethostname Error %d", WSAGetLastError()); - gripd_disconnect(x); - } - } - my_addr.sin_family = hp->h_addrtype; - my_addr.sin_port = htons(x->x_port); - x->x_sock = socket(AF_INET, SOCK_STREAM, 0); - if (x->x_sock == INVALID_SOCKET) - { - post("GrIPD: Socket Error %d", WSAGetLastError()); - gripd_disconnect(x); - } - else - { - ioctlsocket(x->x_sock, FIONBIO, &on); - setsockopt(x->x_sock, SOL_SOCKET, SO_REUSEADDR, - (char *)&temp, sizeof(temp)); - } - if (bind(x->x_sock, (struct sockaddr *)&my_addr, - sizeof(struct sockaddr)) == SOCKET_ERROR) - { - post("GrIPD: Bind Error %d", WSAGetLastError()); - post("GrIPD: Attempting to re-bind"); - clock_delay(x->x_bindClock, REBINDTIME); - } - else - { - nSize = sizeof(struct sockaddr_in); - getsockname(x->x_sock, (struct sockaddr *)&new_addr, &nSize); - x->x_port = (int)ntohs(new_addr.sin_port); - post("GrIPD: Using port %d", x->x_port); - x->x_bound = 1; - listen(x->x_sock, BACKLOG); - post("GrIPD: Waiting for a connection..."); - clock_delay(x->x_connectionClock, CONNECTIONPOLLTIME); - } - } - else - post("GrIPD: Already waiting for a connection"); -#else - char portstr[MAXPORTSTRLEN]; - struct sockaddr_in my_addr, new_addr; - int nSize, temp = 1; - - if (!x->x_bound) - { - x->x_sock = -1; - if ((x->x_sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) - { - perror("GrIPD: Socket Error"); - gripd_disconnect(x); - } - setsockopt(x->x_sock, SOL_SOCKET, SO_REUSEADDR, - (char *)&temp, sizeof(temp)); - fcntl(x->x_sock, F_SETFL, O_NONBLOCK); - my_addr.sin_family = AF_INET; - my_addr.sin_port = htons(x->x_port); - my_addr.sin_addr.s_addr = INADDR_ANY; - bzero(&(my_addr.sin_zero), 8); - if (bind(x->x_sock, (struct sockaddr *)&my_addr, - sizeof(struct sockaddr)) == -1) - { - perror("GrIPD: Bind Error"); - clock_delay(x->x_bindClock, REBINDTIME); - } - else - { - nSize = sizeof(struct sockaddr_in); - getsockname(x->x_sock, (struct sockaddr *)&new_addr, &nSize); - x->x_port = ntohs(new_addr.sin_port); - post("GrIPD: Using port %d", x->x_port); - x->x_bound = 1; - if (listen(x->x_sock, BACKLOG) == -1) - { - perror("GrIPD: Listen Error"); - gripd_disconnect(x); - } - post("GrIPD: Waiting for a connection..."); - clock_delay(x->x_connectionClock, CONNECTIONPOLLTIME); - } - } - else - post("GrIPD: Already waiting for a connection"); -#endif -} - -void gripd_disconnect(t_gripd *x) -{ - int numbytes; - char buf[MAXDATASIZE]; - - clock_unset(x->x_sclock); - clock_unset(x->x_rclock); - clock_unset(x->x_bindClock); - clock_unset(x->x_connectionClock); - if (*(x->x_localOpened)) - { - gripd_closePyth(x); - } - else - { - sprintf(buf, "%s%c0%c", CLOSECOMMAND, SYMMSGSEP, PAIRSEPCHAR); - send(x->x_newSock, buf, strlen(buf), MSG_DONTWAIT | MSG_NOSIGNAL); - numbytes = recv(x->x_newSock, buf, MAXDATASIZE, MSG_NOSIGNAL); - } - if (x->x_bound) - { - gripd_closeSocket(x); - } -} - -void gripd_trySocket(t_gripd *x) -{ -#ifdef NT - fd_set rfds; - struct timeval tv; - unsigned long on; - - on = 1; - tv.tv_sec = 0; - tv.tv_usec = WAITTIME; - FD_ZERO(&rfds); - FD_SET(x->x_sock, &rfds); - if (select(x->x_sock + 1, &rfds, NULL, NULL, &tv) > 0) - { - x->x_newSock = accept(x->x_sock, NULL, NULL); - if (x->x_newSock == INVALID_SOCKET) - { - post("GrIPD: Accept Error %d", WSAGetLastError()); - gripd_disconnect(x); - } - else - { - ioctlsocket(x->x_newSock, FIONBIO, &on); - x->x_connected = 1; - outlet_float(x->t_ob.ob_outlet, 1); - post("GrIPD: Connected"); - } - } - else - clock_delay(x->x_connectionClock, CONNECTIONPOLLTIME); -#else - fd_set rfds; - struct timeval tv; - struct sockaddr_in their_addr; - int new_fd, sin_size; - - sin_size = sizeof(struct sockaddr_in); - tv.tv_sec = 0; - tv.tv_usec = WAITTIME; - FD_ZERO(&rfds); - FD_SET(x->x_sock, &rfds); - if (select(x->x_sock + 1, &rfds, NULL, NULL, &tv)) - { - if ((x->x_newSock = accept(x->x_sock, - (struct sockaddr *)&their_addr, - &sin_size)) == -1) - { - perror("GrIPD: Accept Error"); - gripd_disconnect(x); - } - else - { - x->x_connected = 1; - outlet_float(x->t_ob.ob_outlet, 1); - post("GrIPD: Connected"); - } - } - else - clock_delay(x->x_connectionClock, CONNECTIONPOLLTIME); -#endif -} - -void gripd_closeSocket(t_gripd *x) -{ -#ifdef NT - closesocket(x->x_newSock); - closesocket(x->x_sock); -#else - shutdown(x->x_newSock, 2); - close(x->x_newSock); - shutdown(x->x_sock, 2); - close(x->x_sock); -#endif - x->x_bound = 0; - x->x_connected = 0; - *(x->x_localOpened) = 0; - outlet_float(x->t_ob.ob_outlet, 0); - outlet_float(x->x_outlet2, 0); -} - -void gripd_recv(t_gripd *x) -{ - int numbytes, count, idx, i, j, argc; - char buf[MAXDATASIZE], symName[MAXSYMNAMELEN], - symValue[MAXSYMVALUELEN], - tempString[MAXDATASIZE]; - t_symbol *tempSym; - t_atom atomList[MAXALISTLEN]; - numbytes = count = idx = i = j = argc = 0; - tempSym = gensym(""); - - if (x->x_connected) - { - numbytes = recv(x->x_newSock, buf, MAXDATASIZE, - MSG_DONTWAIT | MSG_NOSIGNAL); - if (numbytes > 0) - { - buf[numbytes] = '\0'; - while (count <= numbytes) - { - while ((buf[count] != SYMMSGSEP) && (count <= numbytes)) - { - symName[i] = buf[count]; - count++; - i++; - } - symName[i] = '\0'; - i = 0; - count++; - while ((buf[count] != PAIRSEPCHAR) && (count <= numbytes)) - { - symValue[i] = buf[count]; - count ++; - i++; - } - symValue[i] = '\0'; - count++; - i = 0; - if (symName[0] == COMMANDCHAR) - { - if ((strcmp(SETRCVRSTRING, symName) == 0) \ - && (gripd_checkExistance(x, symValue) == 0)) - { - if (x->x_rcvrListSize \ - == (x->x_rcvrListMaxSize - 1)) - gripd_expandRcvrList(x); - gripd_makeGripdRcvr(x, gensym(symValue)); - x->x_rcvrListSize++; - } - if (strcmp(CLOSECOMMAND, symName) == 0) - { - post("GrIPD: Connection closed remotely"); - gripd_disconnect(x); - } - if (strcmp(HIDECOMMAND, symName) == 0) - { - outlet_float(x->x_outlet2, 0); - } - if (strcmp(SHOWCOMMAND, symName) == 0) - { - outlet_float(x->x_outlet2, 1); - } - if (strcmp(PINGCOMMAND, symName) == 0) - { - char pingCommandStr[64]; - - sprintf(pingCommandStr, - "%s%c0%c", - PINGCOMMAND, - SYMMSGSEP, - PAIRSEPCHAR); - gripd_appendSendBuffer(x, pingCommandStr); - gripd_send(x); - } - } - else - { - tempSym = gensym(symName); - if (tempSym->s_thing) - { - if (strcmp(BANGSTRING, symValue) == 0) - pd_bang(tempSym->s_thing); - else - { - if (strchr(symValue, ' ') == NULL) - { - if (gripd_isNumeric(symValue)) - pd_float(tempSym->s_thing, - (float)atof(symValue)); - else - typedmess(tempSym->s_thing, - gensym(symValue), - 0, - NULL); - } - else - { - idx = 0; - argc = 0; - for (j = 0; j < (int)strlen(symValue); j++) - { - if (symValue[j] != ' ') - { - tempString[idx] = symValue[j]; - idx++; - } - if ((symValue[j] == ' ') - || (j == (int)strlen(symValue) -1)) - { - tempString[idx] = '\0'; - if (gripd_isNumeric(tempString)) - { - atomList[argc].a_type = A_FLOAT; - atomList[argc].a_w.w_float = - (float)atof(tempString); - } - else - { - atomList[argc].a_type = A_SYMBOL; - atomList[argc].a_w.w_symbol - = gensym(tempString); - } - argc++; - idx = 0; - } - } - if (atomList[0].a_type == A_FLOAT) - pd_list(tempSym->s_thing, - atomList[0].a_w.w_symbol, - argc, atomList); - else - typedmess(tempSym->s_thing, - atomList[0].a_w.w_symbol, - argc - 1, &(atomList[1])); - } - } - } - } - } - } - } - clock_delay(x->x_rclock, x->x_rdeltime); -} - -void gripd_send(t_gripd *x) -{ - int charsSent, endPos; - if (x->x_connected && (strlen(x->x_sendBuffer) > 0)) - { - charsSent = send(x->x_newSock, x->x_sendBuffer, - strlen(x->x_sendBuffer), - MSG_DONTWAIT | MSG_NOSIGNAL); - if (charsSent == SOCKET_ERROR) - { - post("GrIPD: Client is not responding"); - gripd_disconnect(x); - return; - } - else if ((charsSent <= (signed int)strlen(x->x_sendBuffer)) && - (charsSent > -1)) - { - endPos = strlen(x->x_sendBuffer) - charsSent; - strcpy(x->x_sendBuffer, &(x->x_sendBuffer[charsSent])); - x->x_sendBuffer[endPos] = '\0'; - } - } - clock_delay(x->x_sclock, x->x_sdeltime); -} - -/* this does NOT take care of separator strings, sending function must - do that */ -void gripd_appendSendBuffer(t_gripd *x, char *aString) -{ - if (x->x_connected) - { - /* +1 below since strlen does not include '\0' */ - if ((strlen(x->x_sendBuffer) + strlen(aString)) + 1 > MAXDATASIZE) - post("GrIPD: Send buffer overflow"); - else - strcat(x->x_sendBuffer, aString); - } -} - -void gripd_open(t_gripd *x, t_symbol *sym, int argc, t_atom *argv) -{ - gripd_openPyth(x, sym, argc, argv, 0); -} -void gripd_openLocked(t_gripd *x, t_symbol *sym, int argc, t_atom *argv) -{ - gripd_openPyth(x, sym, argc, argv, 1); -} - -void gripd_openPyth(t_gripd *x, t_symbol *sym, int argc, - t_atom *argv, int locked) -{ -#ifdef NT - STARTUPINFO si; - PROCESS_INFORMATION pi; - char pythExec[DEFSTRSIZE], filename[DEFSTRSIZE], tempStr[DEFSTRSIZE]; - int i; - - if (!x->x_connected && !(*(x->x_localOpened))) - { - gripd_connect(x); - *(x->x_localOpened) = 1; - ZeroMemory(&si, sizeof(si)); - si.cb = sizeof(si); - ZeroMemory(&pi, sizeof(pi)); - if (argc > 0) - { - if (argv[0].a_type == A_SYMBOL) - { - strcpy(filename, argv[0].a_w.w_symbol->s_name); - for (i = 1; i < argc; i++) - if (argv[i].a_type == A_SYMBOL) - sprintf(filename, "%s %s", filename, - argv[i].a_w.w_symbol->s_name); - } - else - strcpy(filename, "0"); - } - else - strcpy(filename, "0"); - for (i = 0; i < (int)strlen(x->x_pythExec); i++) - if (x->x_pythExec[i] == '/') - x->x_pythExec[i] = '\\'; - for (i = 0; i < (int)strlen(x->x_pythFile); i++) - if (x->x_pythFile[i] == '/') - x->x_pythFile[i] = '\\'; - for (i = 0; i < (int)strlen(filename); i++) - if (filename[i] == '/') - filename[i] = '\\'; - if (filename[0] == '.' && - (filename[1] == '\\' || - (filename[1] == '.' && filename[2] == '\\'))) - { - sprintf(tempStr, "%s%s", x->x_appPath, filename); - strcpy(filename, tempStr); - } - if (x->x_pythFile[0] == '.' && - (x->x_pythFile[1] == '\\' || - (x->x_pythFile[1] == '.' && x->x_pythFile[2] == '\\'))) - { - sprintf(tempStr, "%s%s", x->x_appPath, x->x_pythFile); - strcpy(x->x_pythFile, tempStr); - } - sprintf(pythExec, "\"%sgripd.exe\" \"%s\" %d 1 %d", x->x_pythFile, - filename, x->x_port, locked); - if (!(CreateProcess(NULL, pythExec, NULL, NULL, FALSE, 0, NULL, NULL, - &si, &(x->x_childProcessInfo)) != 0)) - { - post("GrIPD: Failed to execute %sgripd.exe", x->x_pythFile); - sprintf(pythExec, "\"%spython.exe\" \"%sgripd.py\" \"%s\" %d 1 %d", - x->x_pythExec, x->x_pythFile, filename, x->x_port, locked); - if (!(CreateProcess(NULL, pythExec, NULL, NULL, FALSE, 0, NULL, - NULL, &si, &(x->x_childProcessInfo)) != 0)) - { - post("GrIPD: Failed to execute %spython.exe", x->x_pythExec); - gripd_disconnect(x); - *(x->x_localOpened) = 0; - } - } - } -#else - char pythExec[DEFSTRSIZE], filename[DEFSTRSIZE], portString[DEFSTRSIZE], - lockedString[DEFSTRSIZE], tempStr[DEFSTRSIZE]; - int i, pid; - - if (!x->x_connected && !(*(x->x_localOpened))) - { - gripd_connect(x); - pid = fork(); - if (pid == 0) - { - struct sched_param par; - int p1; - - /* Lose setuid priveliges */ - seteuid(getuid()); - *(x->x_localOpened) = 1; - /* set lowest priority, SCHED_OTHER policy, unlock mem*/ -#ifdef _POSIX_PRIORITY_SCHEDULING - p1 = sched_get_priority_min(SCHED_OTHER); - par.sched_priority = p1; - if (sched_setscheduler(0, SCHED_OTHER, &par) == -1) - post("GrIPD: unable to set priority %d scheduling.", p1); -#endif -#ifdef _POSIX_MEMLOCK - if ((munlockall() == -1) && (!getuid())) - post("GrIPD: unable to unlock memory."); -#endif - clock_free(x->x_rclock); - clock_free(x->x_sclock); - clock_free(x->x_connectionClock); - clock_free(x->x_bindClock); - for (i = 0; i < x->x_rcvrListSize; i++) - pd_unbind(&(x->x_rcvrs[i])->r_obj.ob_pd, - x->x_rcvrs[i]->r_sym); - free(x->x_rcvrs); - sprintf(pythExec, "%sgripd", x->x_pythFile); - if (argc > 0) - { - strcpy(filename, argv[0].a_w.w_symbol->s_name); - for (i = 1; i < argc; i++) - if (argv[i].a_type == A_SYMBOL) - sprintf(filename, "%s %s", filename, - argv[i].a_w.w_symbol->s_name); - } - else - strcpy(filename, "0"); - if (filename[0] == '.' && - (filename[1] == '/' || - (filename[1] == '.' && filename[2] == '/'))) - { - sprintf(tempStr, "%s%s", x->x_appPath, filename); - strcpy(filename, tempStr); - } - if (pythExec[0] == '.' && - (pythExec[1] == '/' || - (pythExec[1] == '.' && pythExec[2] == '/'))) - { - sprintf(tempStr, "%s%s", x->x_appPath, pythExec); - strcpy(pythExec, tempStr); - } - /* set x_localOpened before opened since execlp will exit - process on success */ - sprintf(portString, "%d", x->x_port); - sprintf(lockedString, "%d", locked); - if ((execlp(pythExec, pythExec, filename, portString, - "1", lockedString, (char *)0)) == -1) - { - post("GrIPD: Error launching %s", pythExec); - perror(" "); - *(x->x_localOpened) = 0; - exit(1); - } - exit(1); - } - else - { - x->x_childPID = pid; - } - } -#endif - else - { - gripd_show(x); - } -} - -void gripd_closePyth(t_gripd *x) -{ - char buf[MAXDATASIZE]; - - if (*(x->x_localOpened)) - { - sprintf(buf, "%s%c0%c", CLOSECOMMAND, SYMMSGSEP, PAIRSEPCHAR); - send(x->x_newSock, buf, strlen(buf), MSG_DONTWAIT | MSG_NOSIGNAL); - *(x->x_localOpened) = 0; -#ifdef NT - TerminateProcess(x->x_childProcessInfo.hProcess, 0); -#else - kill(x->x_childPID, SIGKILL); - x->x_childPID = 0; -#endif - } -} - -void gripd_lock(t_gripd *x) -{ - char buf[MAXDATASIZE]; - - if (x->x_connected) - { - sprintf(buf, "%s%c0%c", LOCKCOMMAND, SYMMSGSEP, PAIRSEPCHAR); - send(x->x_newSock, buf, strlen(buf), MSG_DONTWAIT | MSG_NOSIGNAL); - } -} - -void gripd_unlock(t_gripd *x) -{ - char buf[MAXDATASIZE]; - - if (x->x_connected) - { - sprintf(buf, "%s%c0%c", UNLOCKCOMMAND, SYMMSGSEP, PAIRSEPCHAR); - send(x->x_newSock, buf, strlen(buf), MSG_DONTWAIT | MSG_NOSIGNAL); - } -} - -void gripd_hide(t_gripd *x) -{ - char buf[MAXDATASIZE]; - - if (x->x_connected) - { - sprintf(buf, "%s%c0%c", HIDECOMMAND, SYMMSGSEP, PAIRSEPCHAR); - send(x->x_newSock, buf, strlen(buf), MSG_DONTWAIT | MSG_NOSIGNAL); - } -} - -void gripd_show(t_gripd *x) -{ - char buf[MAXDATASIZE]; - - if (x->x_connected) - { - sprintf(buf, "%s%c0%c", SHOWCOMMAND, SYMMSGSEP, PAIRSEPCHAR); - send(x->x_newSock, buf, strlen(buf), MSG_DONTWAIT | MSG_NOSIGNAL); - } -} - -void gripd_openpanel(t_gripd *x) -{ - char buf[MAXDATASIZE]; - - if (x->x_connected) - { - sprintf(buf, "%s%c0%c", OPENPANELCOMMAND, SYMMSGSEP, PAIRSEPCHAR); - send(x->x_newSock, buf, strlen(buf), MSG_DONTWAIT | MSG_NOSIGNAL); - } -} - -void gripd_savepanel(t_gripd *x) -{ - char buf[MAXDATASIZE]; - - if (x->x_connected) - { - sprintf(buf, "%s%c0%c", SAVEPANELCOMMAND, SYMMSGSEP, PAIRSEPCHAR); - send(x->x_newSock, buf, strlen(buf), MSG_DONTWAIT | MSG_NOSIGNAL); - } -} - -void gripd_setTitle(t_gripd *x, t_symbol *sym, int argc, t_atom *argv) -{ - int i; - char title[DEFSTRSIZE]; - char buf[MAXDATASIZE]; - - if (x->x_connected) { - if (argc > 0) - strcpy(title, argv[0].a_w.w_symbol->s_name); - for (i = 1; i < argc; i++) - if (argv[i].a_type == A_SYMBOL) - sprintf(title, "%s %s", title, - argv[i].a_w.w_symbol->s_name); - sprintf(buf, - "%s%c%s%c", - SETTITLECOMMAND, - SYMMSGSEP, - title, - PAIRSEPCHAR); - send(x->x_newSock, buf, strlen(buf), MSG_DONTWAIT | MSG_NOSIGNAL); - } -} - -void gripd_setPath(t_gripd *x, t_symbol *sym, int argc, t_atom *argv) -{ - int i; - if (argc > 0) - strcpy(x->x_pythFile, argv[0].a_w.w_symbol->s_name); - for (i = 1; i < argc; i++) - if (argv[i].a_type == A_SYMBOL) - sprintf(x->x_pythFile, "%s %s", x->x_pythFile, - argv[i].a_w.w_symbol->s_name); - sprintf(x->x_pythFile, "%s/", x->x_pythFile); -} - -void gripd_setPythonPath(t_gripd *x, t_symbol *sym, int argc, t_atom *argv) -{ - int i; - if (argc >0) - strcpy(x->x_pythExec, argv[0].a_w.w_symbol->s_name); - for (i = 1; i < argc; i++) - if (argv[i].a_type == A_SYMBOL) - sprintf(x->x_pythExec, "%s %s", x->x_pythExec, - argv[i].a_w.w_symbol->s_name); - sprintf(x->x_pythExec, "%s/", x->x_pythExec); -} - -void gripd_setSTime(t_gripd *x, t_floatarg val) -{ - if (val > 0) - x->x_sdeltime = val; - else - post("GrIPD: Illegal update time"); -} - -void gripd_setRTime(t_gripd *x, t_floatarg val) -{ - if (val > 0) - x->x_rdeltime = val; - else - post("GrIPD: Illegal update time"); -} - -void gripdR_bang(t_gripdRcvr *r) -{ - char aString[MAXDATASIZE]; - char valueString[MAXDATASIZE]; - - strcpy(aString, r->r_sym->s_name); - sprintf(valueString,"%cbang%c", SYMMSGSEP, PAIRSEPCHAR); - strcat(aString, valueString); - - gripd_appendSendBuffer((t_gripd *)(r->r_x), aString); -} - -void gripdR_float(t_gripdRcvr *r, t_float floatValue) -{ - char aString[MAXDATASIZE]; - char valueString[MAXDATASIZE]; - - strcpy(aString, r->r_sym->s_name); - sprintf(valueString,"%c%g%c", SYMMSGSEP, floatValue, PAIRSEPCHAR); - strcat(aString, valueString); - - gripd_appendSendBuffer((t_gripd *)(r->r_x), aString); -} - -void gripdR_symbol(t_gripdRcvr *r, t_symbol *sym) -{ - char aString[MAXDATASIZE]; - char valueString[MAXDATASIZE]; - - strcpy(aString, r->r_sym->s_name); - sprintf(valueString,"%c%s%c", SYMMSGSEP, sym->s_name, PAIRSEPCHAR); - strcat(aString, valueString); - - gripd_appendSendBuffer((t_gripd *)(r->r_x), aString); -} - -void gripdR_anything(t_gripdRcvr *r, t_symbol *sym, int argc, t_atom *argv) -{ - char aString[MAXDATASIZE]; - char valueString[MAXDATASIZE]; - int i; - - strcpy(aString, r->r_sym->s_name); - sprintf(valueString, "%c%s", SYMMSGSEP, sym->s_name); - strcat(aString, valueString); - for (i = 0; i < argc; i++) - { - if (argv[i].a_type == A_SYMBOL) - { - sprintf(valueString, " %s", argv[i].a_w.w_symbol->s_name); - strcat(aString, valueString); - } - else if (argv[i].a_type == A_FLOAT) - { - sprintf(valueString, " %g", argv[i].a_w.w_float); - strcat(aString, valueString); - } - } - sprintf(aString, "%s%c", aString, PAIRSEPCHAR); - gripd_appendSendBuffer((t_gripd *)(r->r_x), aString); -} - -void gripdR_list(t_gripdRcvr *r, t_symbol *sym, int argc, t_atom *argv) -{ - char aString[MAXDATASIZE]; - char valueString[MAXDATASIZE]; - int i; - - strcpy(aString, r->r_sym->s_name); - sprintf(valueString, "%c", SYMMSGSEP); - strcat(aString, valueString); - for (i = 0; i < argc; i++) - { - if (argv[i].a_type == A_SYMBOL) - { - sprintf(valueString, " %s", argv[i].a_w.w_symbol->s_name); - strcat(aString, valueString); - } - else if (argv[i].a_type == A_FLOAT) - { - sprintf(valueString, " %g", argv[i].a_w.w_float); - strcat(aString, valueString); - } - } - sprintf(aString, "%s%c", aString, PAIRSEPCHAR); - gripd_appendSendBuffer((t_gripd *)(r->r_x), aString); -} - -void gripd_makeGripdRcvr(t_gripd *x, t_symbol *s) -{ - t_gripdRcvr *r = (t_gripdRcvr *)pd_new(gripdRcvr_class); - r->r_sym = s; - pd_bind(&r->r_obj.ob_pd, s); - r->r_x = (t_gripd *)x; - x->x_rcvrs[x->x_rcvrListSize] = r; -} - -int gripd_checkExistance(t_gripd *x, char *name) -{ - int i, flag; - - flag = 0; - for (i = 0; i < x->x_rcvrListSize; i++) - { - if (strcmp(name, x->x_rcvrs[i]->r_sym->s_name) == 0) - flag = 1; - } - return flag; -} - -void gripd_expandRcvrList(t_gripd *x) -{ - x->x_rcvrListMaxSize *= 2; - x->x_rcvrs = (t_gripdRcvr **)realloc(x->x_rcvrs, - x->x_rcvrListMaxSize \ - * sizeof(t_gripdRcvr *)); -} - -void gripd_free(t_gripd *x) -{ - int i; - - if (*(x->x_localOpened)) - gripd_closePyth(x); - if (x->x_connected) - gripd_disconnect(x); - else if (x->x_bound) - gripd_closeSocket(x); - clock_free(x->x_rclock); - clock_free(x->x_sclock); - clock_free(x->x_connectionClock); - clock_free(x->x_bindClock); -#ifdef NT - free(x->x_localOpened); - if (x->x_wsockInitByMe != 0) - WSACleanup(); -#endif - for (i = 0; i < x->x_rcvrListSize; i++) - pd_unbind(&(x->x_rcvrs[i])->r_obj.ob_pd, x->x_rcvrs[i]->r_sym); - free(x->x_rcvrs); -} - -int gripd_isNumeric(char *string) -{ - if ((strspn(string, "0123456789.+-") == strlen(string)) && - (strchr(string, '+') == strrchr(string, '+')) && - (strchr(string, '-') == strrchr(string, '-')) && - (strchr(string, '.') == strrchr(string, '.')) && - (!((strchr(string, '+') != NULL) && - (strchr(string, '-') != NULL)))) - return 1; - else - return 0; -} - -#ifndef NT -void gripd_sigChild(int sig) -{ - wait(NULL); -} -#endif - -void gripd_getApplicationPath(t_gripd *x) -{ - char rawStr[MAXDATASIZE]; -#ifdef NT - GetModuleFileName(NULL, rawStr, sizeof(rawStr)); - rawStr[strrchr(rawStr, '\\') - rawStr + 1] = '\0'; - strcpy(x->x_appPath, rawStr); -#else - char *pathStr; - FILE *fp; - fp = fopen("/proc/self/maps", "r"); - fgets(rawStr, MAXDATASIZE, fp); - fclose(fp); - pathStr = index(rawStr, '/'); - pathStr[index(pathStr, '\n') - pathStr] = '\0'; - pathStr[rindex(pathStr, '/') - pathStr + 1] = '\0'; - strcpy(x->x_appPath, pathStr); -#endif -} - diff --git a/extensions/gripd/src/gripd.h b/extensions/gripd/src/gripd.h deleted file mode 100644 index 67ef16b210e0f5d1113ce83e81a246c4d3c5b657..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/gripd.h +++ /dev/null @@ -1,227 +0,0 @@ -/* GrIPD v0.1.1 - Graphical Interface for Pure Data -** Copyright (C) 2003 Joseph A. Sarlo -** -** This program is free software; you can redistribute it and/orsig -** 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. -** -** jsarlo@ucsd.edu -*/ - -#include "m_pd.h" -#include <stdio.h> -#include <stdlib.h> -#include <errno.h> -#include <string.h> -#include <math.h> -#ifdef NT -#include <windows.h> -#include <winsock.h> -#else -#include <signal.h> -#include <unistd.h> -#include <sys/wait.h> -#include <sys/time.h> -#include <netinet/in.h> -#include <sys/socket.h> -#include <fcntl.h> -#include <sys/types.h> -#include <sys/ipc.h> -#include <sys/shm.h> -#include <sched.h> -#include <sys/mman.h> -#endif - -#define VERSION "0.1.1" -#define DEFPORT 0 -/* maxiumum connections */ -#define BACKLOG 1 -/* max size of send buffer */ -#define MAXDATASIZE 16384 -#define MAXPORTSTRLEN 16 -#define MAXSYMNAMELEN 128 -#define MAXSYMVALUELEN 128 -/* separates send/recv object names from value they send/recv */ -#define SYMMSGSEP 31 -/* separates send/recv value pairs */ -#define PAIRSEPCHAR 29 -#define BANGSTRING "bang" -/* if 1st char, indicates send/recv name is actually a command */ -#define COMMANDCHAR '!' -/* command to add value to recv list */ -#define SETRCVRSTRING "!setRcvr" -/* command to close connection */ -#define CLOSECOMMAND "!disconnect" -/* command to close python app */ -#define EXITCOMMAND "!exit" -/* command to lock GUI */ -#define LOCKCOMMAND "!lock" -/* command to unlock GUI */ -#define UNLOCKCOMMAND "!unlock" -/* command to set title */ -#define SETTITLECOMMAND "!settitle" -/* command to hide GUI window */ -#define HIDECOMMAND "!hide" -/* command to show GUI window */ -#define SHOWCOMMAND "!show" -/* command for connection status */ -#define PINGCOMMAND "!ping" -// command to have GUI open a open file dialog -#define OPENPANELCOMMAND "!openpanel" -// command to have GUI open a save file dialog -#define SAVEPANELCOMMAND "!savepanel" -/* initial size of rcvr object list */ -#define DEFLISTSIZE 16 -/* poll time in ms to re-try accept() */ -#define CONNECTIONPOLLTIME 100 -/* blocking time us for accept() */ -#define WAITTIME 1 -/* poll time in ms to re-try bind after "address already in use" */ -#define REBINDTIME 1000 -/* default receive poll time in ms */ -#define DEFRDELTIME 5 -#define DEFSDELTIME 1 -/* default send poll time in ms */ -#define DEFSTRSIZE 256 -#define MAXALISTLEN 64 - -#ifdef NT -#define MSG_DONTWAIT 0 -#define MSG_NOSIGNAL 0 -#define MSG_WAITALL 0 -#else -#define SOCKET_ERROR -1 -#endif - -/* Individual "receive" class */ -typedef struct _gripdRcvr -{ - t_object r_obj; - t_symbol *r_sym; - /* gripd object, needed so recevied symbol functions can access - gripd data (socket)*/ - void *r_x; -}t_gripdRcvr; - -/* Main object class */ -typedef struct _gripd -{ - t_object t_ob; - t_outlet *x_outlet2; - unsigned short int x_port; -#ifdef NT - SOCKET x_sock; - SOCKET x_newSock; - /* for Windows, 1 if WSAStartup is called */ - int x_wsockInitByMe; - PROCESS_INFORMATION x_childProcessInfo; -#else - int x_sock; - int x_newSock; - int x_childPID; -#endif - /* 1 if socket has been bound, 0 otherwise */ - int x_bound; - /* 1 if currently connected, 0 otherwise */ - int x_connected; - /* 1 if PD opened python app, otherwise (shared mem for linux)*/ - int *x_localOpened; - /* timer for receiveing/sending */ - t_clock *x_rclock; - t_clock *x_sclock; - /* timer for polling accept() */ - t_clock *x_connectionClock; - /* timer for re-binding after "address already in use" error */ - t_clock *x_bindClock; - /* path to python.exe for Windows */ - char x_pythExec[DEFSTRSIZE]; - /* path to gripd.py (or gripd.exe and gripd.py in Windows) */ - char x_pythFile[DEFSTRSIZE]; - /* send/receive poll times */ - double x_sdeltime; - double x_rdeltime; - /* current number of receive "objects" being used */ - int x_rcvrListSize; - /* size currently allocated for receiver objects */ - int x_rcvrListMaxSize; - /* pointer to list of receiver objects */ - t_gripdRcvr **x_rcvrs; - /* buffer to be sent */ - char x_sendBuffer[MAXDATASIZE]; - /* path to application */ - char x_appPath[MAXDATASIZE]; -}t_gripd; - -t_class *gripd_class; -t_class *gripdRcvr_class; - -void gripd_setup(void); -void *gripd_new(t_floatarg port); -void gripd_connect(t_gripd *x); -/* initialize "server" */ -void gripd_openSocket(t_gripd *x); -/* shutdown server */ -void gripd_disconnect(t_gripd *x); -/* poll accept() */ -void gripd_trySocket(t_gripd *x); -void gripd_closeSocket(t_gripd *x); -void gripd_recv(t_gripd *x); -void gripd_send(t_gripd *x); -/* add name:value pair to send string */ -void gripd_appendSendBuffer(t_gripd *x, char *aString); -/* open gripd.py (or gripd.exe inWindows) unlocked mode*/ -void gripd_open(t_gripd *x, t_symbol *sym, int argc, t_atom *argv); -/* open gripd.py (or gripd.exe inWindows) locked mode*/ -void gripd_openLocked(t_gripd *x, t_symbol *sym, int argc, t_atom *argv); -/* actually open gripd.py (or gripd.exe inWindows)*/ -void gripd_openPyth(t_gripd *x, t_symbol *sym, int argc, - t_atom *argv, int locked); -/* tell python app to close itself */ -void gripd_closePyth(t_gripd *x); -/* lock GUI */ -void gripd_lock(t_gripd *x); -/* unlock GUI */ -void gripd_unlock(t_gripd *x); -/* hide GUI */ -void gripd_hide(t_gripd *x); -/* show GUI */ -void gripd_show(t_gripd *x); -/* set GUI window title */ -void gripd_setTitle(t_gripd *x, t_symbol *sym, int argc, t_atom *argv); -/* set path to gripd.py (or gripd.exe in Windows) */ -void gripd_setPath(t_gripd *x, t_symbol *sym, int argc, t_atom *argv); -/* set path to python.exe for Windows */ -void gripd_setPythonPath(t_gripd *x, t_symbol *sym, int argc, - t_atom *argv); -void gripd_setSTime(t_gripd *x, t_floatarg val); -void gripd_setRTime(t_gripd *x, t_floatarg val); -void gripd_openpanel(t_gripd *x); -void gripd_savepanel(t_gripd *x); -void gripdR_bang(t_gripdRcvr *r); -void gripdR_float(t_gripdRcvr *r, t_float floatValue); -void gripdR_symbol(t_gripdRcvr *r, t_symbol *sym); -void gripdR_anything(t_gripdRcvr *r, t_symbol *sym, int argc, - t_atom *argv); -void gripdR_list(t_gripdRcvr *r, t_symbol *sym, int argc, t_atom *argv); -/* instantiate new rcv object */ -void gripd_makeGripdRcvr(t_gripd *x, t_symbol *s); -/* check is rcv object has already been created */ -int gripd_checkExistance(t_gripd *x, char *name); -/* allocate more mem for recv objects */ -void gripd_expandRcvrList(t_gripd *x); -void gripd_free(t_gripd *x); -int gripd_isNumeric(char *string); -#ifndef NT -void gripd_sigChild(int signum); -#endif -void gripd_getApplicationPath(t_gripd *x); diff --git a/extensions/gripd/src/joystick.c b/extensions/gripd/src/joystick.c deleted file mode 100644 index 02fddb7b74ae4a82cc3ed05045dd1f56b7bd62b5..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/joystick.c +++ /dev/null @@ -1,296 +0,0 @@ -/* GrIPD v0.1.1 - Graphical Interface for Pure Data -** Copyright (C) 2002 Joseph A. Sarlo -** -** 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. -** -** jsarlo@ucsd.edu -*/ - -#include <stdio.h> -#define MAXEVENTS 4096 -#define MAXDEVS 16 -#ifdef NT -#include <STRING.H> -#include <WINDOWS.H> -#include <MMSYSTEM.H> -#include <stdlib.h> -#define MAX_AXIS_OUTS 10 -#define MAX_BUTTON_OUTS 32 -#else -#include <strings.h> -#include <unistd.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <sys/ioctl.h> -#define JOYSTICK_DEVICE "/dev/js0" -#define JS_EVENT_BUTTON 0x01 -#define JS_EVENT_AXIS 0x02 -#define JS_EVENT_INTI 0x80 -#define DEFSCALE 1 -#define DEFTRANSLATION 0 -#define JSIOCGAXES _IOR('j', 0x11, unsigned char) -#define JSIOCGBUTTONS _IOR('j', 0x12, unsigned char) -#define MAXAXES 4 -#endif - -static int eventValue[MAXEVENTS][MAXDEVS]; -static int eventNumber[MAXEVENTS][MAXDEVS]; -static int eventType[MAXEVENTS][MAXDEVS]; -static int eventCount[MAXDEVS]; -static int devCount = 0; -static int devList[MAXDEVS]; -#ifdef NT -static JOYINFOEX joyInfoEx[MAXDEVS]; -static int joyDevNum[MAXDEVS]; -static int joy_buttons[MAXDEVS]; -static int joy_axes[MAXDEVS]; -static int button_val[MAX_BUTTON_OUTS][MAXDEVS]; -static int axis_val[MAX_AXIS_OUTS][MAXDEVS]; -/* FIXME */ -static DWORD *axes_ptr[MAX_AXIS_OUTS][MAXDEVS]; -#else -static int joy_fd[MAXDEVS]; -struct js_event -{ - unsigned int time; - signed short value; - unsigned char type; - unsigned char number; -}; -static struct js_event joy_e[MAXDEVS]; -#endif - -#ifdef NT -extern "C" { -#endif - -int closeDevice(int devno) -{ - if (devList[devno]) - { - devCount--; - devList[devno] = 0; -#ifdef NT - return (1); -#else - if (close(joy_fd[devno]) < 0) - return (0); - else - { - joy_fd[devno] = -1; - return(1); - } -#endif - } -} - -int openDevice(char *dev) -{ -#ifdef NT - int i, num_axes, num_buttons, devId; - JOYCAPS jscaps; - MMRESULT errCode; - if (devCount == 0) - { - for (i = 0; i < MAXDEVS; i++) - { - devList[i] = 0; - } - } - for (i = 0; i < MAXDEVS; i++) - { - if (devList[i] == 0) - { - devId = i; - i = MAXDEVS; - } - } - joyInfoEx[devId].dwSize = sizeof(joyInfoEx); - joyInfoEx[devId].dwFlags = JOY_RETURNALL; - joyDevNum[devId] = (JOYSTICKID1 - 1) + atoi(dev); - errCode = joyGetPosEx(joyDevNum[devId], &joyInfoEx[devId]); - if ((errCode == MMSYSERR_NOERROR) && (devCount < MAXDEVS)) - { - joyGetDevCaps(joyDevNum[devId], &jscaps, sizeof(jscaps)); - if (jscaps.wNumAxes > MAX_AXIS_OUTS) - joy_axes[devId] = MAX_AXIS_OUTS; - else - joy_axes[devId] = jscaps.wNumAxes; - if (jscaps.wNumButtons > MAX_BUTTON_OUTS) - joy_buttons[devId] = MAX_BUTTON_OUTS; - else - joy_buttons[devId] = jscaps.wNumButtons; - for (i = 0; i < joy_axes[devId]; i++) - axis_val[i][devId] = 0; - for (i = 0; i < joy_buttons[devId]; i++) - button_val[i][devId] = 0; - axes_ptr[0][devId] = &(joyInfoEx[devId].dwXpos); - axes_ptr[1][devId] = &(joyInfoEx[devId].dwYpos); - axes_ptr[2][devId] = &(joyInfoEx[devId].dwZpos); - axes_ptr[3][devId] = &(joyInfoEx[devId].dwRpos); - axes_ptr[4][devId] = &(joyInfoEx[devId].dwUpos); - axes_ptr[5][devId] = &(joyInfoEx[devId].dwVpos); - eventCount[devId] = 0; - devCount++; - devList[devId] = 1; - return (devId); - } - else - return (-1); -#else - int i, devId; - char joy_dev[256]; - - if (devCount == 0) - { - for (i = 0; i < MAXDEVS; i++) - { - devList[i] = 0; - } - } - for (i = 0; i < MAXDEVS; i++) - { - if (devList[i] == 0) - { - devId = i; - i = MAXDEVS; - } - } - if (strcmp(dev, "") == 0) - strcpy(joy_dev, JOYSTICK_DEVICE); - else - strcpy(joy_dev, dev); - joy_fd[devId] = open (joy_dev, O_RDONLY | O_NONBLOCK); - if ((joy_fd[devId] == -1) || (devCount >= MAXDEVS)) - { - return (-1); - } - else - { - devCount++; - eventCount[devId] = 0; - devList[devId] = 1; - return (devId); - } -#endif -} - -int readEvents(int devno) -{ -#ifdef NT - int i; - - eventCount[devno] = 0; - joyGetPosEx(joyDevNum[devno], &(joyInfoEx[devno])); - for (i = 0; i < joy_axes[devno]; i++) - if (((int)(*(axes_ptr[i][devno])) != axis_val[i][devno]) && - (eventCount[devno] < MAXEVENTS)) - { - eventType[eventCount[devno]][devno] = 0; - eventNumber[eventCount[devno]][devno] = i; - eventValue[eventCount[devno]][devno] = (int)(*(axes_ptr[i][devno])); - eventCount[devno]++; - axis_val[i][devno] = (int)(*(axes_ptr[i][devno])); - } - for (i = 0; i < joy_buttons[devno]; i ++) - { - if (joyInfoEx[devno].dwButtons & (1 << i)) - { - if ((button_val[i][devno] == 0) && (eventCount[devno] < MAXEVENTS)) - { - eventType[eventCount[devno]][devno] = 1; - eventNumber[eventCount[devno]][devno] = i; - eventValue[eventCount[devno]][devno] = 1; - eventCount[devno]++; - button_val[i][devno] = 1; - } - } - else - if ((button_val[i][devno] == 1) && (eventCount[devno] < MAXEVENTS)) - { - eventType[eventCount[devno]][devno] = 1; - eventNumber[eventCount[devno]][devno] = i; - eventValue[eventCount[devno]][devno] = 0; - eventCount[devno]++; - button_val[i][devno] = 0; - } - } - return (eventCount[devno]); -#else - int i; - - eventCount[devno] = 0; - if (joy_fd[devno] > -1) - { - while (read (joy_fd[devno], &(joy_e[devno]), sizeof(struct js_event)) > -1) - { - if (eventCount[devno] < MAXEVENTS) - { - if (joy_e[devno].type == JS_EVENT_AXIS) - eventType[eventCount[devno]][devno] = 0; - if (joy_e[devno].type == JS_EVENT_BUTTON) - eventType[eventCount[devno]][devno] = 1; - eventNumber[eventCount[devno]][devno] = joy_e[devno].number; - eventValue[eventCount[devno]][devno] = joy_e[devno].value; - eventCount[devno]++; - } - } - } - return eventCount[devno]; -#endif -} - -int getEventCount(int devno) -{ - return (eventCount[devno]); -} - -int getEventType(int devno, int eNum) -{ - int returnVal = 0; - - if (eNum >= 0 && eNum < eventCount[devno]) - { - returnVal = eventType[eNum][devno]; - } - return (returnVal); -} - -int getEventNumber(int devno, int eNum) -{ - int returnVal = 0; - - if (eNum >= 0 && eNum < eventCount[devno]) - { - returnVal = eventNumber[eNum][devno]; - } - return (returnVal); -} - -int getEventValue(int devno, int eNum) -{ - int returnVal = 0; - - if (eNum >= 0 && eNum < eventCount[devno]) - { - returnVal = eventValue[eNum][devno]; - } - return (returnVal); -} -#ifdef NT -} -#endif - diff --git a/extensions/gripd/src/joystick_wrap.c b/extensions/gripd/src/joystick_wrap.c deleted file mode 100644 index b2e2087b44f3d9ad9a7615b7a0cfd573a91627df..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/joystick_wrap.c +++ /dev/null @@ -1,692 +0,0 @@ -/* - * FILE : joystick_wrap.c - * - * This file was automatically generated by : - * Simplified Wrapper and Interface Generator (SWIG) - * Version 1.1 (Patch 5) - * - * Portions Copyright (c) 1995-1998 - * The University of Utah and The Regents of the University of California. - * Permission is granted to distribute this file in any manner provided - * this notice remains intact. - * - * Do not make changes to this file--changes will be lost! - * - */ - - -#define SWIGCODE -/* Implementation : PYTHON */ - -#define SWIGPYTHON -#include <string.h> -#include <stdlib.h> -/*********************************************************************** - * $Header: /home/zmoelnig/cvs2svn/pure-data/puredata_cvsbackup/extensions/gripd/src/joystick_wrap.c,v 1.1.1.1 2005-11-10 05:52:09 eighthave Exp $ - * swig_lib/python/python.cfg - * - * This file contains coded needed to add variable linking to the - * Python interpreter. C variables are added as a new kind of Python - * datatype. - * - * Also contains supporting code for building python under Windows - * and things like that. - * - * $Log: not supported by cvs2svn $ - ************************************************************************/ - -#ifdef __cplusplus -extern "C" { -#endif -#include "Python.h" -#ifdef __cplusplus -} -#endif - -/* Definitions for Windows/Unix exporting */ -#if defined(__WIN32__) -# if defined(_MSC_VER) -# define SWIGEXPORT(a,b) __declspec(dllexport) a b -# else -# if defined(__BORLANDC__) -# define SWIGEXPORT(a,b) a _export b -# else -# define SWIGEXPORT(a,b) a b -# endif -# endif -#else -# define SWIGEXPORT(a,b) a b -#endif - -#ifdef SWIG_GLOBAL -#ifdef __cplusplus -#define SWIGSTATIC extern "C" -#else -#define SWIGSTATIC -#endif -#endif - -#ifndef SWIGSTATIC -#define SWIGSTATIC static -#endif - -typedef struct { - char *name; - PyObject *(*get_attr)(void); - int (*set_attr)(PyObject *); -} swig_globalvar; - -typedef struct swig_varlinkobject { - PyObject_HEAD - swig_globalvar **vars; - int nvars; - int maxvars; -} swig_varlinkobject; - -/* ---------------------------------------------------------------------- - swig_varlink_repr() - - Function for python repr method - ---------------------------------------------------------------------- */ - -static PyObject * -swig_varlink_repr(swig_varlinkobject *v) -{ - v = v; - return PyString_FromString("<Global variables>"); -} - -/* --------------------------------------------------------------------- - swig_varlink_print() - - Print out all of the global variable names - --------------------------------------------------------------------- */ - -static int -swig_varlink_print(swig_varlinkobject *v, FILE *fp, int flags) -{ - - int i = 0; - flags = flags; - fprintf(fp,"Global variables { "); - while (v->vars[i]) { - fprintf(fp,"%s", v->vars[i]->name); - i++; - if (v->vars[i]) fprintf(fp,", "); - } - fprintf(fp," }\n"); - return 0; -} - -/* -------------------------------------------------------------------- - swig_varlink_getattr - - This function gets the value of a variable and returns it as a - PyObject. In our case, we'll be looking at the datatype and - converting into a number or string - -------------------------------------------------------------------- */ - -static PyObject * -swig_varlink_getattr(swig_varlinkobject *v, char *n) -{ - int i = 0; - char temp[128]; - - while (v->vars[i]) { - if (strcmp(v->vars[i]->name,n) == 0) { - return (*v->vars[i]->get_attr)(); - } - i++; - } - sprintf(temp,"C global variable %s not found.", n); - PyErr_SetString(PyExc_NameError,temp); - return NULL; -} - -/* ------------------------------------------------------------------- - swig_varlink_setattr() - - This function sets the value of a variable. - ------------------------------------------------------------------- */ - -static int -swig_varlink_setattr(swig_varlinkobject *v, char *n, PyObject *p) -{ - char temp[128]; - int i = 0; - while (v->vars[i]) { - if (strcmp(v->vars[i]->name,n) == 0) { - return (*v->vars[i]->set_attr)(p); - } - i++; - } - sprintf(temp,"C global variable %s not found.", n); - PyErr_SetString(PyExc_NameError,temp); - return 1; -} - -statichere PyTypeObject varlinktype = { -/* PyObject_HEAD_INIT(&PyType_Type) Note : This doesn't work on some machines */ - PyObject_HEAD_INIT(0) - 0, - "varlink", /* Type name */ - sizeof(swig_varlinkobject), /* Basic size */ - 0, /* Itemsize */ - 0, /* Deallocator */ - (printfunc) swig_varlink_print, /* Print */ - (getattrfunc) swig_varlink_getattr, /* get attr */ - (setattrfunc) swig_varlink_setattr, /* Set attr */ - 0, /* tp_compare */ - (reprfunc) swig_varlink_repr, /* tp_repr */ - 0, /* tp_as_number */ - 0, /* tp_as_mapping*/ - 0, /* tp_hash */ -}; - -/* Create a variable linking object for use later */ - -SWIGSTATIC PyObject * -SWIG_newvarlink(void) -{ - swig_varlinkobject *result = 0; - result = PyMem_NEW(swig_varlinkobject,1); - varlinktype.ob_type = &PyType_Type; /* Patch varlinktype into a PyType */ - result->ob_type = &varlinktype; - /* _Py_NewReference(result); Does not seem to be necessary */ - result->nvars = 0; - result->maxvars = 64; - result->vars = (swig_globalvar **) malloc(64*sizeof(swig_globalvar *)); - result->vars[0] = 0; - result->ob_refcnt = 0; - Py_XINCREF((PyObject *) result); - return ((PyObject*) result); -} - -SWIGSTATIC void -SWIG_addvarlink(PyObject *p, char *name, - PyObject *(*get_attr)(void), int (*set_attr)(PyObject *p)) -{ - swig_varlinkobject *v; - v= (swig_varlinkobject *) p; - - if (v->nvars >= v->maxvars -1) { - v->maxvars = 2*v->maxvars; - v->vars = (swig_globalvar **) realloc(v->vars,v->maxvars*sizeof(swig_globalvar *)); - if (v->vars == NULL) { - fprintf(stderr,"SWIG : Fatal error in initializing Python module.\n"); - exit(1); - } - } - v->vars[v->nvars] = (swig_globalvar *) malloc(sizeof(swig_globalvar)); - v->vars[v->nvars]->name = (char *) malloc(strlen(name)+1); - strcpy(v->vars[v->nvars]->name,name); - v->vars[v->nvars]->get_attr = get_attr; - v->vars[v->nvars]->set_attr = set_attr; - v->nvars++; - v->vars[v->nvars] = 0; -} - - - -/***************************************************************************** - * $Header: /home/zmoelnig/cvs2svn/pure-data/puredata_cvsbackup/extensions/gripd/src/joystick_wrap.c,v 1.1.1.1 2005-11-10 05:52:09 eighthave Exp $ - * - * swigptr.swg - * - * This file contains supporting code for the SWIG run-time type checking - * mechanism. The following functions are available : - * - * SWIG_RegisterMapping(char *origtype, char *newtype, void *(*cast)(void *)); - * - * Registers a new type-mapping with the type-checker. origtype is the - * original datatype and newtype is an equivalent type. cast is optional - * pointer to a function to cast pointer values between types (this - * is typically used to cast pointers from derived classes to base classes in C++) - * - * SWIG_MakePtr(char *buffer, void *ptr, char *typestring); - * - * Makes a pointer string from a pointer and typestring. The result is returned - * in buffer which is assumed to hold enough space for the result. - * - * char * SWIG_GetPtr(char *buffer, void **ptr, char *type) - * - * Gets a pointer value from a string. If there is a type-mismatch, returns - * a character string to the received type. On success, returns NULL. - * - * - * You can remap these functions by making a file called "swigptr.swg" in - * your the same directory as the interface file you are wrapping. - * - * These functions are normally declared static, but this file can be - * can be used in a multi-module environment by redefining the symbol - * SWIGSTATIC. - *****************************************************************************/ - -#include <stdlib.h> - -#ifdef SWIG_GLOBAL -#ifdef __cplusplus -#define SWIGSTATIC extern "C" -#else -#define SWIGSTATIC -#endif -#endif - -#ifndef SWIGSTATIC -#define SWIGSTATIC static -#endif - - -/* SWIG pointer structure */ - -typedef struct SwigPtrType { - char *name; /* Datatype name */ - int len; /* Length (used for optimization) */ - void *(*cast)(void *); /* Pointer casting function */ - struct SwigPtrType *next; /* Linked list pointer */ -} SwigPtrType; - -/* Pointer cache structure */ - -typedef struct { - int stat; /* Status (valid) bit */ - SwigPtrType *tp; /* Pointer to type structure */ - char name[256]; /* Given datatype name */ - char mapped[256]; /* Equivalent name */ -} SwigCacheType; - -/* Some variables */ - -static int SwigPtrMax = 64; /* Max entries that can be currently held */ - /* This value may be adjusted dynamically */ -static int SwigPtrN = 0; /* Current number of entries */ -static int SwigPtrSort = 0; /* Status flag indicating sort */ -static int SwigStart[256]; /* Starting positions of types */ - -/* Pointer table */ -static SwigPtrType *SwigPtrTable = 0; /* Table containing pointer equivalences */ - -/* Cached values */ - -#define SWIG_CACHESIZE 8 -#define SWIG_CACHEMASK 0x7 -static SwigCacheType SwigCache[SWIG_CACHESIZE]; -static int SwigCacheIndex = 0; -static int SwigLastCache = 0; - -/* Sort comparison function */ -static int swigsort(const void *data1, const void *data2) { - SwigPtrType *d1 = (SwigPtrType *) data1; - SwigPtrType *d2 = (SwigPtrType *) data2; - return strcmp(d1->name,d2->name); -} - -/* Binary Search function */ -static int swigcmp(const void *key, const void *data) { - char *k = (char *) key; - SwigPtrType *d = (SwigPtrType *) data; - return strncmp(k,d->name,d->len); -} - -/* Register a new datatype with the type-checker */ - -SWIGSTATIC -void SWIG_RegisterMapping(char *origtype, char *newtype, void *(*cast)(void *)) { - - int i; - SwigPtrType *t = 0,*t1; - - /* Allocate the pointer table if necessary */ - - if (!SwigPtrTable) { - SwigPtrTable = (SwigPtrType *) malloc(SwigPtrMax*sizeof(SwigPtrType)); - SwigPtrN = 0; - } - /* Grow the table */ - if (SwigPtrN >= SwigPtrMax) { - SwigPtrMax = 2*SwigPtrMax; - SwigPtrTable = (SwigPtrType *) realloc((char *) SwigPtrTable,SwigPtrMax*sizeof(SwigPtrType)); - } - for (i = 0; i < SwigPtrN; i++) - if (strcmp(SwigPtrTable[i].name,origtype) == 0) { - t = &SwigPtrTable[i]; - break; - } - if (!t) { - t = &SwigPtrTable[SwigPtrN]; - t->name = origtype; - t->len = strlen(t->name); - t->cast = 0; - t->next = 0; - SwigPtrN++; - } - - /* Check for existing entry */ - - while (t->next) { - if ((strcmp(t->name,newtype) == 0)) { - if (cast) t->cast = cast; - return; - } - t = t->next; - } - - /* Now place entry (in sorted order) */ - - t1 = (SwigPtrType *) malloc(sizeof(SwigPtrType)); - t1->name = newtype; - t1->len = strlen(t1->name); - t1->cast = cast; - t1->next = 0; - t->next = t1; - SwigPtrSort = 0; -} - -/* Make a pointer value string */ - -SWIGSTATIC -void SWIG_MakePtr(char *_c, const void *_ptr, char *type) { - static char _hex[16] = - {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', - 'a', 'b', 'c', 'd', 'e', 'f'}; - unsigned long _p, _s; - char _result[20], *_r; /* Note : a 64-bit hex number = 16 digits */ - _r = _result; - _p = (unsigned long) _ptr; - if (_p > 0) { - while (_p > 0) { - _s = _p & 0xf; - *(_r++) = _hex[_s]; - _p = _p >> 4; - } - *_r = '_'; - while (_r >= _result) - *(_c++) = *(_r--); - } else { - strcpy (_c, "NULL"); - } - if (_ptr) - strcpy (_c, type); -} - -/* Define for backwards compatibility */ - -#define _swig_make_hex SWIG_MakePtr - -/* Function for getting a pointer value */ - -SWIGSTATIC -char *SWIG_GetPtr(char *_c, void **ptr, char *_t) -{ - unsigned long _p; - char temp_type[256]; - char *name; - int i, len; - SwigPtrType *sp,*tp; - SwigCacheType *cache; - int start, end; - _p = 0; - - /* Pointer values must start with leading underscore */ - if (*_c == '_') { - _c++; - /* Extract hex value from pointer */ - while (*_c) { - if ((*_c >= '0') && (*_c <= '9')) - _p = (_p << 4) + (*_c - '0'); - else if ((*_c >= 'a') && (*_c <= 'f')) - _p = (_p << 4) + ((*_c - 'a') + 10); - else - break; - _c++; - } - - if (_t) { - if (strcmp(_t,_c)) { - if (!SwigPtrSort) { - qsort((void *) SwigPtrTable, SwigPtrN, sizeof(SwigPtrType), swigsort); - for (i = 0; i < 256; i++) { - SwigStart[i] = SwigPtrN; - } - for (i = SwigPtrN-1; i >= 0; i--) { - SwigStart[(int) (SwigPtrTable[i].name[1])] = i; - } - for (i = 255; i >= 1; i--) { - if (SwigStart[i-1] > SwigStart[i]) - SwigStart[i-1] = SwigStart[i]; - } - SwigPtrSort = 1; - for (i = 0; i < SWIG_CACHESIZE; i++) - SwigCache[i].stat = 0; - } - - /* First check cache for matches. Uses last cache value as starting point */ - cache = &SwigCache[SwigLastCache]; - for (i = 0; i < SWIG_CACHESIZE; i++) { - if (cache->stat) { - if (strcmp(_t,cache->name) == 0) { - if (strcmp(_c,cache->mapped) == 0) { - cache->stat++; - *ptr = (void *) _p; - if (cache->tp->cast) *ptr = (*(cache->tp->cast))(*ptr); - return (char *) 0; - } - } - } - SwigLastCache = (SwigLastCache+1) & SWIG_CACHEMASK; - if (!SwigLastCache) cache = SwigCache; - else cache++; - } - /* We have a type mismatch. Will have to look through our type - mapping table to figure out whether or not we can accept this datatype */ - - start = SwigStart[(int) _t[1]]; - end = SwigStart[(int) _t[1]+1]; - sp = &SwigPtrTable[start]; - while (start < end) { - if (swigcmp(_t,sp) == 0) break; - sp++; - start++; - } - if (start >= end) sp = 0; - /* Try to find a match for this */ - if (sp) { - while (swigcmp(_t,sp) == 0) { - name = sp->name; - len = sp->len; - tp = sp->next; - /* Try to find entry for our given datatype */ - while(tp) { - if (tp->len >= 255) { - return _c; - } - strcpy(temp_type,tp->name); - strncat(temp_type,_t+len,255-tp->len); - if (strcmp(_c,temp_type) == 0) { - - strcpy(SwigCache[SwigCacheIndex].mapped,_c); - strcpy(SwigCache[SwigCacheIndex].name,_t); - SwigCache[SwigCacheIndex].stat = 1; - SwigCache[SwigCacheIndex].tp = tp; - SwigCacheIndex = SwigCacheIndex & SWIG_CACHEMASK; - - /* Get pointer value */ - *ptr = (void *) _p; - if (tp->cast) *ptr = (*(tp->cast))(*ptr); - return (char *) 0; - } - tp = tp->next; - } - sp++; - /* Hmmm. Didn't find it this time */ - } - } - /* Didn't find any sort of match for this data. - Get the pointer value and return the received type */ - *ptr = (void *) _p; - return _c; - } else { - /* Found a match on the first try. Return pointer value */ - *ptr = (void *) _p; - return (char *) 0; - } - } else { - /* No type specified. Good luck */ - *ptr = (void *) _p; - return (char *) 0; - } - } else { - if (strcmp (_c, "NULL") == 0) { - *ptr = (void *) 0; - return (char *) 0; - } - *ptr = (void *) 0; - return _c; - } -} - -/* Compatibility mode */ - -#define _swig_get_hex SWIG_GetPtr - -#define SWIG_init initjoystick - -#define SWIG_name "joystick" - -extern int closeDevice(int); -extern int openDevice(char *); -extern int readEvents(int); -extern int getEventCount(int); -extern int getEventType(int, int); -extern int getEventNumber(int, int); -extern int getEventValue(int, int); -static PyObject *_wrap_closeDevice(PyObject *self, PyObject *args) { - PyObject * _resultobj; - int _result; - int _arg0; - - self = self; - if(!PyArg_ParseTuple(args,"i:closeDevice",&_arg0)) - return NULL; - _result = (int )closeDevice(_arg0); - _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyObject *_wrap_openDevice(PyObject *self, PyObject *args) { - PyObject * _resultobj; - int _result; - char * _arg0; - - self = self; - if(!PyArg_ParseTuple(args,"s:openDevice",&_arg0)) - return NULL; - _result = (int )openDevice(_arg0); - _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyObject *_wrap_readEvents(PyObject *self, PyObject *args) { - PyObject * _resultobj; - int _result; - int _arg0; - - self = self; - if(!PyArg_ParseTuple(args,"i:readEvents",&_arg0)) - return NULL; - _result = (int )readEvents(_arg0); - _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyObject *_wrap_getEventCount(PyObject *self, PyObject *args) { - PyObject * _resultobj; - int _result; - int _arg0; - - self = self; - if(!PyArg_ParseTuple(args,"i:getEventCount",&_arg0)) - return NULL; - _result = (int )getEventCount(_arg0); - _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyObject *_wrap_getEventType(PyObject *self, PyObject *args) { - PyObject * _resultobj; - int _result; - int _arg0; - int _arg1; - - self = self; - if(!PyArg_ParseTuple(args,"ii:getEventType",&_arg0,&_arg1)) - return NULL; - _result = (int )getEventType(_arg0,_arg1); - _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyObject *_wrap_getEventNumber(PyObject *self, PyObject *args) { - PyObject * _resultobj; - int _result; - int _arg0; - int _arg1; - - self = self; - if(!PyArg_ParseTuple(args,"ii:getEventNumber",&_arg0,&_arg1)) - return NULL; - _result = (int )getEventNumber(_arg0,_arg1); - _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyObject *_wrap_getEventValue(PyObject *self, PyObject *args) { - PyObject * _resultobj; - int _result; - int _arg0; - int _arg1; - - self = self; - if(!PyArg_ParseTuple(args,"ii:getEventValue",&_arg0,&_arg1)) - return NULL; - _result = (int )getEventValue(_arg0,_arg1); - _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyMethodDef joystickMethods[] = { - { "getEventValue", _wrap_getEventValue, 1 }, - { "getEventNumber", _wrap_getEventNumber, 1 }, - { "getEventType", _wrap_getEventType, 1 }, - { "getEventCount", _wrap_getEventCount, 1 }, - { "readEvents", _wrap_readEvents, 1 }, - { "openDevice", _wrap_openDevice, 1 }, - { "closeDevice", _wrap_closeDevice, 1 }, - { NULL, NULL } -}; -static PyObject *SWIG_globals; -#ifdef __cplusplus -extern "C" -#endif -SWIGEXPORT(void,initjoystick)() { - PyObject *m, *d; - SWIG_globals = SWIG_newvarlink(); - m = Py_InitModule("joystick", joystickMethods); - d = PyModule_GetDict(m); -/* - * These are the pointer type-equivalency mappings. - * (Used by the SWIG pointer type-checker). - */ - SWIG_RegisterMapping("_signed_long","_long",0); - SWIG_RegisterMapping("_long","_unsigned_long",0); - SWIG_RegisterMapping("_long","_signed_long",0); - SWIG_RegisterMapping("_unsigned_long","_long",0); - SWIG_RegisterMapping("_signed_int","_int",0); - SWIG_RegisterMapping("_unsigned_short","_short",0); - SWIG_RegisterMapping("_signed_short","_short",0); - SWIG_RegisterMapping("_unsigned_int","_int",0); - SWIG_RegisterMapping("_short","_unsigned_short",0); - SWIG_RegisterMapping("_short","_signed_short",0); - SWIG_RegisterMapping("_int","_unsigned_int",0); - SWIG_RegisterMapping("_int","_signed_int",0); -} diff --git a/extensions/gripd/src/makefile b/extensions/gripd/src/makefile deleted file mode 100644 index f44bf91ba87853c510e45f7d57b14a71937eab18..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/makefile +++ /dev/null @@ -1,44 +0,0 @@ -#-------------------------------------------------------------- - -current: gripd_linux -clean: clean_linux - -#----------- Options (all OS) -------------------------------- - -MIDI = TRUE -#MIDI = FALSE -JOYSTICK = TRUE -#JOYSTICK = FALSE - -#----------- Settings (Linux) -------------------------------- - -MIDIOSSUBTYPE = ALSA -#MIDIOSSUBTYPE = OSS -PDINCLUDE = -I../../src -I../../../pd/src -LINUXPYTHONINCLUDE = -I/usr/include/python2.5 -SYSTEMLIBDIR = /usr/lib - -#----------- Settings (Windows) ------------------------------- - -VC = "C:\Program Files\Microsoft Visual Studio\VC98" -PYTHONHOME = C:\python22 -PYTHONVER = 22 -PDNTSRCDIR = C:\pd-37\src -PDNTLDIR = C:\pd-37\bin - -#----------- Linux -------------------------------------------- - -gripd_linux: - make -f Makefile.Linux all -clean_linux: - make -f Makefile.Linux linux_clean - -#----------- Win32--------------------------------------------- - -gripd_nt: - nmake -f Makefile.NT all -clean_nt: - nmake -f Makefile.NT nt_clean - - - diff --git a/extensions/gripd/src/midi.cpp b/extensions/gripd/src/midi.cpp deleted file mode 100644 index 1d634467ec86f8ca7142911480eaa8d7d8a610af..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midi.cpp +++ /dev/null @@ -1,146 +0,0 @@ -/* GrIPD v0.1.1 - Graphical Interface for Pure Data -** Copyright (C) 2003 Joseph A. Sarlo -** -** 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. -** -** jsarlo@ucsd.edu -*/ - -#include "midiiolib.h" -#include <stdio.h> -#ifndef NT -#include <unistd.h> -#endif -#define MAXDEVS 16 -#define MAXEVENTS 4096 - -#ifndef VISUAL -using namespace std; -#endif - -static int eventCount[MAXDEVS]; -static int eventCommand[MAXEVENTS][MAXDEVS]; -static int eventP0[MAXEVENTS][MAXDEVS]; -static int eventP1[MAXEVENTS][MAXDEVS]; -static int eventP2[MAXEVENTS][MAXDEVS]; -static int eventP3[MAXEVENTS][MAXDEVS]; -static MidiInput mInput[MAXDEVS]; -static int devCount = 0; -static int devList[MAXDEVS]; - -int openDevice(int dev) { - int i, devId, numPorts; - - numPorts = MidiInPort::getNumPorts(); - if (dev >= numPorts || dev < 0) { - return (-1); - } - else { - if (devCount == 0) { - for (i = 0; i < MAXDEVS; i++) { - devList[i] = 0; - } - } - for (i = 0; i < MAXDEVS; i++) { - if (devList[i] == 0) { - devId = i; - i = MAXDEVS; - } - } - devCount++; - eventCount[devId] = 0; - devList[devId] = 1; - mInput[devId].setPort(dev); - mInput[devId].open(); - return (devId); - } -} - -int closeDevice(int devno) { - if (devList[devno]) { - devCount--; - devList[devno] = 0; -#ifndef LINUX - mInput[devno].close(); -#endif - return (1); - } - else - return (-1); -} - -int readEvents(int devno) { - int i; - MidiMessage message; - - if (devno < 0 || devno >= MAXDEVS) - return (-1); - eventCount[devno] = mInput[devno].getCount(); - if (eventCount[devno] > MAXEVENTS) { - eventCount[devno] = MAXEVENTS; - } - for (i = 0; i < eventCount[devno]; i++) { - message = mInput[devno].extract(); - eventCommand[i][devno] = message.getCommand(); - eventP0[i][devno] = message.getP0(); - eventP1[i][devno] = message.getP1(); - eventP2[i][devno] = message.getP2(); - eventP3[i][devno] = message.getP3(); - } - return (eventCount[devno]); -} - -int getEventCount(int devno) { - if (devno < 0 || devno >= MAXDEVS) - return (-1); - else - return (eventCount[devno]); -} - -int getEventCommand(int devno, int eNum) { - if (eNum < 0 || eNum >= eventCount[devno] || devno < 0 || devno >= MAXDEVS) - return (-1); - else - return eventCommand[eNum][devno]; -} - -int getEventP0(int devno, int eNum) { - if (eNum < 0 || eNum >= eventCount[devno] || devno < 0 || devno >= MAXDEVS) - return (-1); - else - return eventP0[eNum][devno]; -} - -int getEventP1(int devno, int eNum) { - if (eNum < 0 || eNum >= eventCount[devno] || devno < 0 || devno >= MAXDEVS) - return (-1); - else - return eventP1[eNum][devno]; -} - -int getEventP2(int devno, int eNum) { - if (eNum < 0 || eNum >= eventCount[devno] || devno < 0 || devno >= MAXDEVS) - return (-1); - else - return eventP2[eNum][devno]; -} - -int getEventP3(int devno, int eNum) { - if (eNum < 0 || eNum >= eventCount[devno] || devno < 0 || devno >= MAXDEVS) - return (-1); - else - return eventP3[eNum][devno]; -} - diff --git a/extensions/gripd/src/midi_wrap.c b/extensions/gripd/src/midi_wrap.c deleted file mode 100644 index 7b4ad15ce67f59a2a7944435f08a9dfbd2a0be90..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midi_wrap.c +++ /dev/null @@ -1,723 +0,0 @@ -/* - * FILE : midi_wrap.c - * - * This file was automatically generated by : - * Simplified Wrapper and Interface Generator (SWIG) - * Version 1.1 (Patch 5) - * - * Portions Copyright (c) 1995-1998 - * The University of Utah and The Regents of the University of California. - * Permission is granted to distribute this file in any manner provided - * this notice remains intact. - * - * Do not make changes to this file--changes will be lost! - * - */ - - -#define SWIGCODE -/* Implementation : PYTHON */ - -#define SWIGPYTHON -#include <string.h> -#include <stdlib.h> -/*********************************************************************** - * $Header: /home/zmoelnig/cvs2svn/pure-data/puredata_cvsbackup/extensions/gripd/src/midi_wrap.c,v 1.1.1.1 2005-11-10 05:52:09 eighthave Exp $ - * swig_lib/python/python.cfg - * - * This file contains coded needed to add variable linking to the - * Python interpreter. C variables are added as a new kind of Python - * datatype. - * - * Also contains supporting code for building python under Windows - * and things like that. - * - * $Log: not supported by cvs2svn $ - ************************************************************************/ - -#ifdef __cplusplus -#include "Python.h" -extern "C" { -#endif -#ifdef __cplusplus -} -#endif - -/* Definitions for Windows/Unix exporting */ -#if defined(__WIN32__) -# if defined(_MSC_VER) -# define SWIGEXPORT(a,b) __declspec(dllexport) a b -# else -# if defined(__BORLANDC__) -# define SWIGEXPORT(a,b) a _export b -# else -# define SWIGEXPORT(a,b) a b -# endif -# endif -#else -# define SWIGEXPORT(a,b) a b -#endif - -#ifdef SWIG_GLOBAL -#ifdef __cplusplus -#define SWIGSTATIC extern "C" -#else -#define SWIGSTATIC -#endif -#endif - -#ifndef SWIGSTATIC -#define SWIGSTATIC static -#endif - -typedef struct { - char *name; - PyObject *(*get_attr)(void); - int (*set_attr)(PyObject *); -} swig_globalvar; - -typedef struct swig_varlinkobject { - PyObject_HEAD - swig_globalvar **vars; - int nvars; - int maxvars; -} swig_varlinkobject; - -/* ---------------------------------------------------------------------- - swig_varlink_repr() - - Function for python repr method - ---------------------------------------------------------------------- */ - -static PyObject * -swig_varlink_repr(swig_varlinkobject *v) -{ - v = v; - return PyString_FromString("<Global variables>"); -} - -/* --------------------------------------------------------------------- - swig_varlink_print() - - Print out all of the global variable names - --------------------------------------------------------------------- */ - -static int -swig_varlink_print(swig_varlinkobject *v, FILE *fp, int flags) -{ - - int i = 0; - flags = flags; - fprintf(fp,"Global variables { "); - while (v->vars[i]) { - fprintf(fp,"%s", v->vars[i]->name); - i++; - if (v->vars[i]) fprintf(fp,", "); - } - fprintf(fp," }\n"); - return 0; -} - -/* -------------------------------------------------------------------- - swig_varlink_getattr - - This function gets the value of a variable and returns it as a - PyObject. In our case, we'll be looking at the datatype and - converting into a number or string - -------------------------------------------------------------------- */ - -static PyObject * -swig_varlink_getattr(swig_varlinkobject *v, char *n) -{ - int i = 0; - char temp[128]; - - while (v->vars[i]) { - if (strcmp(v->vars[i]->name,n) == 0) { - return (*v->vars[i]->get_attr)(); - } - i++; - } - sprintf(temp,"C global variable %s not found.", n); - PyErr_SetString(PyExc_NameError,temp); - return NULL; -} - -/* ------------------------------------------------------------------- - swig_varlink_setattr() - - This function sets the value of a variable. - ------------------------------------------------------------------- */ - -static int -swig_varlink_setattr(swig_varlinkobject *v, char *n, PyObject *p) -{ - char temp[128]; - int i = 0; - while (v->vars[i]) { - if (strcmp(v->vars[i]->name,n) == 0) { - return (*v->vars[i]->set_attr)(p); - } - i++; - } - sprintf(temp,"C global variable %s not found.", n); - PyErr_SetString(PyExc_NameError,temp); - return 1; -} - -statichere PyTypeObject varlinktype = { -/* PyObject_HEAD_INIT(&PyType_Type) Note : This doesn't work on some machines */ - PyObject_HEAD_INIT(0) - 0, - "varlink", /* Type name */ - sizeof(swig_varlinkobject), /* Basic size */ - 0, /* Itemsize */ - 0, /* Deallocator */ - (printfunc) swig_varlink_print, /* Print */ - (getattrfunc) swig_varlink_getattr, /* get attr */ - (setattrfunc) swig_varlink_setattr, /* Set attr */ - 0, /* tp_compare */ - (reprfunc) swig_varlink_repr, /* tp_repr */ - 0, /* tp_as_number */ - 0, /* tp_as_mapping*/ - 0, /* tp_hash */ -}; - -/* Create a variable linking object for use later */ - -SWIGSTATIC PyObject * -SWIG_newvarlink(void) -{ - swig_varlinkobject *result = 0; - result = PyMem_NEW(swig_varlinkobject,1); - varlinktype.ob_type = &PyType_Type; /* Patch varlinktype into a PyType */ - result->ob_type = &varlinktype; - /* _Py_NewReference(result); Does not seem to be necessary */ - result->nvars = 0; - result->maxvars = 64; - result->vars = (swig_globalvar **) malloc(64*sizeof(swig_globalvar *)); - result->vars[0] = 0; - result->ob_refcnt = 0; - Py_XINCREF((PyObject *) result); - return ((PyObject*) result); -} - -SWIGSTATIC void -SWIG_addvarlink(PyObject *p, char *name, - PyObject *(*get_attr)(void), int (*set_attr)(PyObject *p)) -{ - swig_varlinkobject *v; - v= (swig_varlinkobject *) p; - - if (v->nvars >= v->maxvars -1) { - v->maxvars = 2*v->maxvars; - v->vars = (swig_globalvar **) realloc(v->vars,v->maxvars*sizeof(swig_globalvar *)); - if (v->vars == NULL) { - fprintf(stderr,"SWIG : Fatal error in initializing Python module.\n"); - exit(1); - } - } - v->vars[v->nvars] = (swig_globalvar *) malloc(sizeof(swig_globalvar)); - v->vars[v->nvars]->name = (char *) malloc(strlen(name)+1); - strcpy(v->vars[v->nvars]->name,name); - v->vars[v->nvars]->get_attr = get_attr; - v->vars[v->nvars]->set_attr = set_attr; - v->nvars++; - v->vars[v->nvars] = 0; -} - - - -/***************************************************************************** - * $Header: /home/zmoelnig/cvs2svn/pure-data/puredata_cvsbackup/extensions/gripd/src/midi_wrap.c,v 1.1.1.1 2005-11-10 05:52:09 eighthave Exp $ - * - * swigptr.swg - * - * This file contains supporting code for the SWIG run-time type checking - * mechanism. The following functions are available : - * - * SWIG_RegisterMapping(char *origtype, char *newtype, void *(*cast)(void *)); - * - * Registers a new type-mapping with the type-checker. origtype is the - * original datatype and newtype is an equivalent type. cast is optional - * pointer to a function to cast pointer values between types (this - * is typically used to cast pointers from derived classes to base classes in C++) - * - * SWIG_MakePtr(char *buffer, void *ptr, char *typestring); - * - * Makes a pointer string from a pointer and typestring. The result is returned - * in buffer which is assumed to hold enough space for the result. - * - * char * SWIG_GetPtr(char *buffer, void **ptr, char *type) - * - * Gets a pointer value from a string. If there is a type-mismatch, returns - * a character string to the received type. On success, returns NULL. - * - * - * You can remap these functions by making a file called "swigptr.swg" in - * your the same directory as the interface file you are wrapping. - * - * These functions are normally declared static, but this file can be - * can be used in a multi-module environment by redefining the symbol - * SWIGSTATIC. - *****************************************************************************/ - -#include <stdlib.h> - -#ifdef SWIG_GLOBAL -#ifdef __cplusplus -#define SWIGSTATIC extern "C" -#else -#define SWIGSTATIC -#endif -#endif - -#ifndef SWIGSTATIC -#define SWIGSTATIC static -#endif - - -/* SWIG pointer structure */ - -typedef struct SwigPtrType { - char *name; /* Datatype name */ - int len; /* Length (used for optimization) */ - void *(*cast)(void *); /* Pointer casting function */ - struct SwigPtrType *next; /* Linked list pointer */ -} SwigPtrType; - -/* Pointer cache structure */ - -typedef struct { - int stat; /* Status (valid) bit */ - SwigPtrType *tp; /* Pointer to type structure */ - char name[256]; /* Given datatype name */ - char mapped[256]; /* Equivalent name */ -} SwigCacheType; - -/* Some variables */ - -static int SwigPtrMax = 64; /* Max entries that can be currently held */ - /* This value may be adjusted dynamically */ -static int SwigPtrN = 0; /* Current number of entries */ -static int SwigPtrSort = 0; /* Status flag indicating sort */ -static int SwigStart[256]; /* Starting positions of types */ - -/* Pointer table */ -static SwigPtrType *SwigPtrTable = 0; /* Table containing pointer equivalences */ - -/* Cached values */ - -#define SWIG_CACHESIZE 8 -#define SWIG_CACHEMASK 0x7 -static SwigCacheType SwigCache[SWIG_CACHESIZE]; -static int SwigCacheIndex = 0; -static int SwigLastCache = 0; - -/* Sort comparison function */ -static int swigsort(const void *data1, const void *data2) { - SwigPtrType *d1 = (SwigPtrType *) data1; - SwigPtrType *d2 = (SwigPtrType *) data2; - return strcmp(d1->name,d2->name); -} - -/* Binary Search function */ -static int swigcmp(const void *key, const void *data) { - char *k = (char *) key; - SwigPtrType *d = (SwigPtrType *) data; - return strncmp(k,d->name,d->len); -} - -/* Register a new datatype with the type-checker */ - -SWIGSTATIC -void SWIG_RegisterMapping(char *origtype, char *newtype, void *(*cast)(void *)) { - - int i; - SwigPtrType *t = 0,*t1; - - /* Allocate the pointer table if necessary */ - - if (!SwigPtrTable) { - SwigPtrTable = (SwigPtrType *) malloc(SwigPtrMax*sizeof(SwigPtrType)); - SwigPtrN = 0; - } - /* Grow the table */ - if (SwigPtrN >= SwigPtrMax) { - SwigPtrMax = 2*SwigPtrMax; - SwigPtrTable = (SwigPtrType *) realloc((char *) SwigPtrTable,SwigPtrMax*sizeof(SwigPtrType)); - } - for (i = 0; i < SwigPtrN; i++) - if (strcmp(SwigPtrTable[i].name,origtype) == 0) { - t = &SwigPtrTable[i]; - break; - } - if (!t) { - t = &SwigPtrTable[SwigPtrN]; - t->name = origtype; - t->len = strlen(t->name); - t->cast = 0; - t->next = 0; - SwigPtrN++; - } - - /* Check for existing entry */ - - while (t->next) { - if ((strcmp(t->name,newtype) == 0)) { - if (cast) t->cast = cast; - return; - } - t = t->next; - } - - /* Now place entry (in sorted order) */ - - t1 = (SwigPtrType *) malloc(sizeof(SwigPtrType)); - t1->name = newtype; - t1->len = strlen(t1->name); - t1->cast = cast; - t1->next = 0; - t->next = t1; - SwigPtrSort = 0; -} - -/* Make a pointer value string */ - -SWIGSTATIC -void SWIG_MakePtr(char *_c, const void *_ptr, char *type) { - static char _hex[16] = - {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', - 'a', 'b', 'c', 'd', 'e', 'f'}; - unsigned long _p, _s; - char _result[20], *_r; /* Note : a 64-bit hex number = 16 digits */ - _r = _result; - _p = (unsigned long) _ptr; - if (_p > 0) { - while (_p > 0) { - _s = _p & 0xf; - *(_r++) = _hex[_s]; - _p = _p >> 4; - } - *_r = '_'; - while (_r >= _result) - *(_c++) = *(_r--); - } else { - strcpy (_c, "NULL"); - } - if (_ptr) - strcpy (_c, type); -} - -/* Define for backwards compatibility */ - -#define _swig_make_hex SWIG_MakePtr - -/* Function for getting a pointer value */ - -SWIGSTATIC -char *SWIG_GetPtr(char *_c, void **ptr, char *_t) -{ - unsigned long _p; - char temp_type[256]; - char *name; - int i, len; - SwigPtrType *sp,*tp; - SwigCacheType *cache; - int start, end; - _p = 0; - - /* Pointer values must start with leading underscore */ - if (*_c == '_') { - _c++; - /* Extract hex value from pointer */ - while (*_c) { - if ((*_c >= '0') && (*_c <= '9')) - _p = (_p << 4) + (*_c - '0'); - else if ((*_c >= 'a') && (*_c <= 'f')) - _p = (_p << 4) + ((*_c - 'a') + 10); - else - break; - _c++; - } - - if (_t) { - if (strcmp(_t,_c)) { - if (!SwigPtrSort) { - qsort((void *) SwigPtrTable, SwigPtrN, sizeof(SwigPtrType), swigsort); - for (i = 0; i < 256; i++) { - SwigStart[i] = SwigPtrN; - } - for (i = SwigPtrN-1; i >= 0; i--) { - SwigStart[(int) (SwigPtrTable[i].name[1])] = i; - } - for (i = 255; i >= 1; i--) { - if (SwigStart[i-1] > SwigStart[i]) - SwigStart[i-1] = SwigStart[i]; - } - SwigPtrSort = 1; - for (i = 0; i < SWIG_CACHESIZE; i++) - SwigCache[i].stat = 0; - } - - /* First check cache for matches. Uses last cache value as starting point */ - cache = &SwigCache[SwigLastCache]; - for (i = 0; i < SWIG_CACHESIZE; i++) { - if (cache->stat) { - if (strcmp(_t,cache->name) == 0) { - if (strcmp(_c,cache->mapped) == 0) { - cache->stat++; - *ptr = (void *) _p; - if (cache->tp->cast) *ptr = (*(cache->tp->cast))(*ptr); - return (char *) 0; - } - } - } - SwigLastCache = (SwigLastCache+1) & SWIG_CACHEMASK; - if (!SwigLastCache) cache = SwigCache; - else cache++; - } - /* We have a type mismatch. Will have to look through our type - mapping table to figure out whether or not we can accept this datatype */ - - start = SwigStart[(int) _t[1]]; - end = SwigStart[(int) _t[1]+1]; - sp = &SwigPtrTable[start]; - while (start < end) { - if (swigcmp(_t,sp) == 0) break; - sp++; - start++; - } - if (start >= end) sp = 0; - /* Try to find a match for this */ - if (sp) { - while (swigcmp(_t,sp) == 0) { - name = sp->name; - len = sp->len; - tp = sp->next; - /* Try to find entry for our given datatype */ - while(tp) { - if (tp->len >= 255) { - return _c; - } - strcpy(temp_type,tp->name); - strncat(temp_type,_t+len,255-tp->len); - if (strcmp(_c,temp_type) == 0) { - - strcpy(SwigCache[SwigCacheIndex].mapped,_c); - strcpy(SwigCache[SwigCacheIndex].name,_t); - SwigCache[SwigCacheIndex].stat = 1; - SwigCache[SwigCacheIndex].tp = tp; - SwigCacheIndex = SwigCacheIndex & SWIG_CACHEMASK; - - /* Get pointer value */ - *ptr = (void *) _p; - if (tp->cast) *ptr = (*(tp->cast))(*ptr); - return (char *) 0; - } - tp = tp->next; - } - sp++; - /* Hmmm. Didn't find it this time */ - } - } - /* Didn't find any sort of match for this data. - Get the pointer value and return the received type */ - *ptr = (void *) _p; - return _c; - } else { - /* Found a match on the first try. Return pointer value */ - *ptr = (void *) _p; - return (char *) 0; - } - } else { - /* No type specified. Good luck */ - *ptr = (void *) _p; - return (char *) 0; - } - } else { - if (strcmp (_c, "NULL") == 0) { - *ptr = (void *) 0; - return (char *) 0; - } - *ptr = (void *) 0; - return _c; - } -} - -/* Compatibility mode */ - -#define _swig_get_hex SWIG_GetPtr - -#define SWIG_init initmidi - -#define SWIG_name "midi" -extern int openDevice(int ); -extern int closeDevice(int ); -extern int readEvents(int ); -extern int getEventCount(int ); -extern int getEventCommand(int ,int ); -extern int getEventP0(int ,int ); -extern int getEventP1(int ,int ); -extern int getEventP2(int ,int ); -extern int getEventP3(int ,int ); -static PyObject *_wrap_openDevice(PyObject *self, PyObject *args) { - PyObject * _resultobj; - int _result; - int _arg0; - - self = self; - if(!PyArg_ParseTuple(args,"i:openDevice",&_arg0)) - return NULL; - _result = (int )openDevice(_arg0); - _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyObject *_wrap_closeDevice(PyObject *self, PyObject *args) { - PyObject * _resultobj; - int _result; - int _arg0; - - self = self; - if(!PyArg_ParseTuple(args,"i:closeDevice",&_arg0)) - return NULL; - _result = (int )closeDevice(_arg0); - _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyObject *_wrap_readEvents(PyObject *self, PyObject *args) { - PyObject * _resultobj; - int _result; - int _arg0; - - self = self; - if(!PyArg_ParseTuple(args,"i:readEvents",&_arg0)) - return NULL; - _result = (int )readEvents(_arg0); - _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyObject *_wrap_getEventCount(PyObject *self, PyObject *args) { - PyObject * _resultobj; - int _result; - int _arg0; - - self = self; - if(!PyArg_ParseTuple(args,"i:getEventCount",&_arg0)) - return NULL; - _result = (int )getEventCount(_arg0); - _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyObject *_wrap_getEventCommand(PyObject *self, PyObject *args) { - PyObject * _resultobj; - int _result; - int _arg0; - int _arg1; - - self = self; - if(!PyArg_ParseTuple(args,"ii:getEventCommand",&_arg0,&_arg1)) - return NULL; - _result = (int )getEventCommand(_arg0,_arg1); - _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyObject *_wrap_getEventP0(PyObject *self, PyObject *args) { - PyObject * _resultobj; - int _result; - int _arg0; - int _arg1; - - self = self; - if(!PyArg_ParseTuple(args,"ii:getEventP0",&_arg0,&_arg1)) - return NULL; - _result = (int )getEventP0(_arg0,_arg1); - _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyObject *_wrap_getEventP1(PyObject *self, PyObject *args) { - PyObject * _resultobj; - int _result; - int _arg0; - int _arg1; - - self = self; - if(!PyArg_ParseTuple(args,"ii:getEventP1",&_arg0,&_arg1)) - return NULL; - _result = (int )getEventP1(_arg0,_arg1); - _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyObject *_wrap_getEventP2(PyObject *self, PyObject *args) { - PyObject * _resultobj; - int _result; - int _arg0; - int _arg1; - - self = self; - if(!PyArg_ParseTuple(args,"ii:getEventP2",&_arg0,&_arg1)) - return NULL; - _result = (int )getEventP2(_arg0,_arg1); - _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyObject *_wrap_getEventP3(PyObject *self, PyObject *args) { - PyObject * _resultobj; - int _result; - int _arg0; - int _arg1; - - self = self; - if(!PyArg_ParseTuple(args,"ii:getEventP3",&_arg0,&_arg1)) - return NULL; - _result = (int )getEventP3(_arg0,_arg1); - _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyMethodDef midiMethods[] = { - { "getEventP3", _wrap_getEventP3, 1 }, - { "getEventP2", _wrap_getEventP2, 1 }, - { "getEventP1", _wrap_getEventP1, 1 }, - { "getEventP0", _wrap_getEventP0, 1 }, - { "getEventCommand", _wrap_getEventCommand, 1 }, - { "getEventCount", _wrap_getEventCount, 1 }, - { "readEvents", _wrap_readEvents, 1 }, - { "closeDevice", _wrap_closeDevice, 1 }, - { "openDevice", _wrap_openDevice, 1 }, - { NULL, NULL } -}; -static PyObject *SWIG_globals; -#ifdef __cplusplus -extern "C" -#endif -SWIGEXPORT(void,initmidi)() { - PyObject *m, *d; - SWIG_globals = SWIG_newvarlink(); - m = Py_InitModule("midi", midiMethods); - d = PyModule_GetDict(m); -/* - * These are the pointer type-equivalency mappings. - * (Used by the SWIG pointer type-checker). - */ - SWIG_RegisterMapping("_signed_long","_long",0); - SWIG_RegisterMapping("_long","_unsigned_long",0); - SWIG_RegisterMapping("_long","_signed_long",0); - SWIG_RegisterMapping("_unsigned_long","_long",0); - SWIG_RegisterMapping("_signed_int","_int",0); - SWIG_RegisterMapping("_unsigned_short","_short",0); - SWIG_RegisterMapping("_signed_short","_short",0); - SWIG_RegisterMapping("_unsigned_int","_int",0); - SWIG_RegisterMapping("_short","_unsigned_short",0); - SWIG_RegisterMapping("_short","_signed_short",0); - SWIG_RegisterMapping("_int","_unsigned_int",0); - SWIG_RegisterMapping("_int","_signed_int",0); -} diff --git a/extensions/gripd/src/midiio/include/Array.cpp b/extensions/gripd/src/midiio/include/Array.cpp deleted file mode 100644 index 005ed9bea92008563345adda86d80673389e66da..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/Array.cpp +++ /dev/null @@ -1,379 +0,0 @@ -// -// Copyright 1997-1999 by Craig Stuart Sapp, All Rights Reserved. -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Wed Feb 5 19:42:53 PST 1997 -// Last Modified: Sun May 11 20:41:28 GMT-0800 1997 -// Last Modified: Wed Jul 7 11:44:50 PDT 1999 (added setAll() function) -// Filename: ...sig/maint/code/base/Array/Array.cpp -// Web Address: http://sig.sapp.org/src/sigBase/Array.cpp -// Syntax: C++ -// -// Description: An array which can grow dynamically. Array is derived from -// the Collection class and adds various mathematical operators -// to the Collection class. The Array template class is used for -// storing numbers of any type which can be added, multiplied -// and divided into one another. -// - -#ifndef _ARRAY_CPP_INCLUDED -#define _ARRAY_CPP_INCLUDED - -#include "Array.h" -#include <iostream> -#include <stdlib.h> - -using namespace std; - -////////////////////////////// -// -// Array::Array -// - -template<class type> -Array<type>::Array(void) : Collection<type>(4) { } - -template<class type> -Array<type>::Array(int arraySize) : Collection<type>(arraySize) { } - -template<class type> -Array<type>::Array(Array<type>& anArray) : Collection<type>(anArray) { } - -template<class type> -Array<type>::Array(int arraySize, type *anArray) : - Collection<type>(arraySize, anArray) { } - - - - -////////////////////////////// -// -// Array::~Array -// - -template<class type> -Array<type>::~Array() { } - - - -////////////////////////////// -// -// Array::setAll -- sets the contents of each element to the -// specified value -// - -template<class type> -void Array<type>::setAll(type aValue) { - for (int i=0; i<this->getSize(); i++) { - this->array[i] = aValue; - } -} - - - -////////////////////////////// -// -// Array::sum -// - -template<class type> -type Array<type>::sum(void) { - type theSum = 0; - for (int i=0; i<this->getSize(); i++) { - theSum += this->array[i]; - } - return theSum; -} - -template<class type> -type Array<type>::sum(int loIndex, int hiIndex) { - type theSum = 0; - for (int i=loIndex; i<=hiIndex; i++) { - theSum += this->array[i]; - } - return theSum; -} - - - -////////////////////////////// -// -// Array::zero(-1, -1) -// - -template<class type> -void Array<type>::zero(int minIndex, int maxIndex) { - if (this->size == 0) return; - if (minIndex == -1) minIndex = 0; - if (maxIndex == -1) maxIndex = this->size - 1; - - if (minIndex < 0 || maxIndex < 0 || minIndex > maxIndex || - maxIndex >= this->size) { - cerr << "Error in zero function: min = " << minIndex - << " max = " << maxIndex << " size = " << this->size << this->endl; - exit(1); - } - - for (int i=minIndex; i<=maxIndex; i++) { - this->array[i] = 0; - } -} - - -//////////////////////////////////////////////////////////////////////////// -// -// operators -// - - -template<class type> -int Array<type>::operator==(const Array<type>& aArray) { - if (this->getSize() != aArray.getSize()) { - return 0; - } - Array<type>& t = *this; - int i; - for (i=0; i<this->getSize(); i++) { - if (t[i] != aArray[i]) { - return 0; - } - } - return 1; -} - - - -////////////////////////////// -// -// Array::operator= -// - -template<class type> -Array<type>& Array<type>::operator=(const Array<type>& anArray) { - if (this->allocSize < anArray.size) { - if (this->allocSize != 0) { - delete [] this->array; - } - this->allocSize = anArray.size; - this->size = anArray.size; - this->array = new type[this->size]; - this->allowGrowthQ = anArray.allowGrowthQ; - this->growthAmount = anArray.growthAmount; - this->maxSize = anArray.maxSize; - } - this->size = anArray.size; - for (int i=0; i<this->size; i++) { - this->array[i] = anArray.array[i]; - } - - return *this; -} - - - -////////////////////////////// -// -// Array::operator+= -// - -template<class type> -Array<type>& Array<type>::operator+=(const Array<type>& anArray) { - if (this->size != anArray.size) { - cerr << "Error: different size arrays " << this->size << " and " - << anArray.size << endl; - exit(1); - } - - for (int i=0; i<this->size; i++) { - this->array[i] += anArray.array[i]; - } - - return *this; -} - - - -////////////////////////////// -// -// Array::operator+ -// - -template<class type> -Array<type> Array<type>::operator+(const Array<type>& anArray) const { - if (this->size != anArray.size) { - cerr << "Error: different size arrays " << this->size << " and " - << anArray.size << endl; - exit(1); - } - - Array<type> bArray(*this); - bArray += anArray; - return bArray; -} - - -template<class type> -Array<type> Array<type>::operator+(type aNumber) const { - Array<type> anArray(*this); - for (int i=0; i<this->size; i++) { - anArray[i] += aNumber; - } - return anArray; -} - - - -////////////////////////////// -// -// Array::operator-= -// - -template<class type> -Array<type>& Array<type>::operator-=(const Array<type>& anArray) { - if (this->size != anArray.size) { - cerr << "Error: different size arrays " << this->size << " and " - << anArray.size << endl; - exit(1); - } - - for (int i=0; i<this->size; i++) { - this->array[i] -= anArray.array[i]; - } - - return *this; -} - - - -////////////////////////////// -// -// Array::operator- -// - -template<class type> -Array<type> Array<type>::operator-(const Array<type>& anArray) const { - if (this->size != anArray.size) { - cerr << "Error: different size arrays " << this->size << " and " - << anArray.size << endl; - exit(1); - } - - Array<type> bArray(*this); - bArray -= anArray; - return bArray; -} - - -template<class type> -Array<type> Array<type>::operator-(void) const { - Array<type> anArray(*this); - for (int i=0; i<this->size; i++) { - anArray[i] = -anArray[i]; - } - return anArray; -} - -template<class type> -Array<type> Array<type>::operator-(type aNumber) const { - Array<type> anArray(*this); - for (int i=0; i<this->size; i++) { - anArray[i] -= aNumber; - } - return anArray; -} - - - -////////////////////////////// -// -// Array::operator*= -// - -template<class type> -Array<type>& Array<type>::operator*=(const Array<type>& anArray) { - if (this->size != anArray.size) { - cerr << "Error: different size arrays " << this->size << " and " - << anArray.size << endl; - exit(1); - } - - for (int i=0; i<this->size; i++) { - this->array[i] *= anArray.array[i]; - } - - return *this; -} - - - -////////////////////////////// -// -// Array::operator* -// - -template<class type> -Array<type> Array<type>::operator*(const Array<type>& anArray) const { - if (this->size != anArray.size) { - cerr << "Error: different size arrays " << this->size << " and " - << anArray.size << endl; - exit(1); - } - - Array<type> bArray(*this); - bArray *= anArray; - return bArray; -} - - -template<class type> -Array<type> Array<type>::operator*(type aNumber) const { - Array<type> anArray(*this); - for (int i=0; i<this->size; i++) { - anArray[i] *= aNumber; - } - return anArray; -} - -////////////////////////////// -// -// Array::operator/= -// - -template<class type> -Array<type>& Array<type>::operator/=(const Array<type>& anArray) { - if (this->size != anArray.size) { - cerr << "Error: different size arrays " << this->size << " and " - << anArray.size << endl; - exit(1); - } - - for (int i=0; i<this->size; i++) { - this->array[i] /= anArray.array[i]; - } - - return *this; -} - -////////////////////////////// -// -// Array::operator/ -// - -template<class type> -Array<type> Array<type>::operator/(const Array<type>& anArray) const { - if (this->size != anArray.size) { - cerr << "Error: different size arrays " << this->size << " and " - << anArray.size << endl; - exit(1); - } - - Array<type> bArray(*this); - bArray /= anArray; - return bArray; -} - - -#endif /* _ARRAY_CPP_INCLUDED */ - - - -// md5sum: 8f52a167c93f51702ce316204fd6e722 - Array.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/Array.h b/extensions/gripd/src/midiio/include/Array.h deleted file mode 100644 index 75e08ebf458c70814cc8331d86325ac666f4b306..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/Array.h +++ /dev/null @@ -1,67 +0,0 @@ -// -// Copyright 1997-1999 by Craig Stuart Sapp, All Rights Reserved. -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Wed Feb 5 19:42:53 PST 1997 -// Last Modified: Sun May 11 20:33:13 GMT-0800 1997 -// Last Modified: Wed Jul 7 11:44:50 PDT 1999 (added setAll() function) -// Last Modified: Mon Jul 29 22:08:32 PDT 2002 (added operator==) -// Filename: ...sig/maint/code/base/Array/Array.h -// Web Address: http://sig.sapp.org/include/sigBase/Array.h -// Documentation: http://sig.sapp.org/doc/classes/Array -// Syntax: C++ -// -// Description: An array which can grow dynamically. Array is derived from -// the Collection class and adds various mathematical operators -// to the Collection class. The Array template class is used for -// storing numbers of any type which can be added, multiplied -// and divided into one another. -// - -#ifndef _ARRAY_H_INCLUDED -#define _ARRAY_H_INCLUDED - -#include "Collection.h" - - -template<class type> -class Array : public Collection<type> { - public: - Array (void); - Array (int arraySize); - Array (Array<type>& aArray); - Array (int arraySize, type *anArray); - ~Array (); - - void setAll (type aValue); - type sum (void); - type sum (int lowIndex, int hiIndex); - void zero (int minIndex = -1, int maxIndex = -1); - - int operator== (const Array<type>& aArray); - Array<type>& operator= (const Array<type>& aArray); - Array<type>& operator+= (const Array<type>& aArray); - Array<type>& operator-= (const Array<type>& aArray); - Array<type>& operator*= (const Array<type>& aArray); - Array<type>& operator/= (const Array<type>& aArray); - - Array<type> operator+ (const Array<type>& aArray) const; - Array<type> operator+ (type aNumber) const; - Array<type> operator- (const Array<type>& aArray) const; - Array<type> operator- (void) const; - - Array<type> operator- (type aNumber) const; - Array<type> operator* (const Array<type>& aArray) const; - Array<type> operator* (type aNumber) const; - Array<type> operator/ (const Array<type>& aArray) const; -}; - - -#include "Array.cpp" /* necessary for templates */ - - - -#endif /* _ARRAY_H_INCLUDED */ - - - -// md5sum: 09d1b1f8e70ecde53f484548e48f33c3 - Array.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/CircularBuffer.cpp b/extensions/gripd/src/midiio/include/CircularBuffer.cpp deleted file mode 100644 index 9f4aca687a747b381cc33b6b108ee875383bf087..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/CircularBuffer.cpp +++ /dev/null @@ -1,291 +0,0 @@ -// -// Copyright 1997-1998 by Craig Stuart Sapp, All Rights Reserved. -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: 19 December 1997 -// Last Modified: Wed Jan 21 23:16:54 GMT-0800 1998 -// Filename: ...sig/maint/code/base/CircularBuffer/CircularBuffer.cpp -// Web Address: http://sig.sapp.org/src/sigBase/CircularBuffer.cpp -// Syntax: C++ -// -// Description: A Circular buffer designed to handle MIDI input, -// but able to store any type of object. Elements -// can be read out of the buffer in two ways. -// (1) from a read pointer which extracts the -// elements in order by following the write pointer, -// and (2) from an index operator related to the -// write pointer's location, for example, -// object[0] is the last value written into the -// buffer and object[-1] (or object[1]) is the -// item written just before that. -// -// - -#ifndef _CIRCULARBUFFER_CPP_INCLUDED -#define _CIRCULARBUFFER_CPP_INCLUDED - -#include "CircularBuffer.h" -#include <stdlib.h> -#include <iostream> - - -////////////////////////////// -// -// CircularBuffer::CircularBuffer -- Constructor. -// - -template<class type> -CircularBuffer<type>::CircularBuffer(void) { - size = 0; - buffer = NULL; - reset(); -} - - -template<class type> -CircularBuffer<type>::CircularBuffer(int maxElements) { - if (maxElements < 0) { - std::cerr << "Error: cannot have a negative number of elements: " - << maxElements << std::endl; - exit(1); - } - if (maxElements == 0) { - size = 0; - buffer = NULL; - reset(); - } else { - size = maxElements; - buffer = new type[maxElements]; - reset(); - } -} - - -template<class type> -CircularBuffer<type>::CircularBuffer(const CircularBuffer<type>& anotherBuffer) { - size = anotherBuffer.size; - if (getSize() == 0) { - buffer = NULL; - reset(); - } else { - buffer = new type[getSize()]; - writeIndex = anotherBuffer.writeIndex; - readIndex = anotherBuffer.readIndex; - itemCount = anotherBuffer.itemCount; - for (int i=0; i<getSize(); i++) { - buffer[i] = anotherBuffer.buffer[i]; - } - } -} - - - -////////////////////////////// -// -// CircularBuffer::~CircularBuffer -- Destructor. -// deallocates buffer memory. -// - -template<class type> -CircularBuffer<type>::~CircularBuffer() { - if (buffer != NULL) { - delete [] buffer; - } -} - - - -////////////////////////////// -// -// CircularBuffer::capacity -- returns the number of items which -// can be added to the buffer. Returns a positive number -// if the buffer has empty locations available. Returns 0 if the -// buffer is 100% full. Returns a negative number if the -// buffer has overflowed. - -template<class type> -int CircularBuffer<type>::capacity(void) const { - return getSize() - getCount(); -} - - - -////////////////////////////// -// -// CircularBuffer::extract -- reads the next value from the buffer. -// - -template<class type> -type CircularBuffer<type>::extract(void) { - itemCount--; - if (itemCount < 0) { - std::cerr << "Error: no elements in buffer to extract." << std::endl; - exit(1); - } - increment(readIndex); - return buffer[readIndex]; -} - - - -////////////////////////////// -// -// CircularBuffer::getCount -- returns the number of elements -// between the write index and the read index. -// - -template<class type> -int CircularBuffer<type>::getCount(void) const { - return itemCount; -} - - - -////////////////////////////// -// -// CircularBuffer::getSize -- returns the allocated size of the buffer. -// - -template<class type> -int CircularBuffer<type>::getSize(void) const { - return size; -} - - - -////////////////////////////// -// -// CircularBuffer::insert -- add an element to the circular buffer -// - -template<class type> -void CircularBuffer<type>::insert(const type& anItem) { - itemCount++; - increment(writeIndex); - buffer[writeIndex] = anItem; -} - - - -////////////////////////////// -// -// CircularBuffer::operator[] -- access an element relative to the -// currently written element -// - -template<class type> -type& CircularBuffer<type>::operator[](int index) { - if (buffer == NULL) { - std::cerr << "Error: buffer has no allocated space" << std::endl; - exit(1); - } - int realIndex = (index < 0) ? -index : index; - if (realIndex >= getSize()) { - std::cerr << "Error: Invalid access: " << realIndex << ", maximum is " - << getSize()-1 << std::endl; - exit(1); - } - realIndex = writeIndex - realIndex; - - // should need to go through this loop a max of one time: - while (realIndex < 0) { - realIndex += getSize(); - } - - return buffer[realIndex]; -} - - - -////////////////////////////// -// -// CircularBuffer::read -- an alias for the extract function. -// - -template<class type> -type CircularBuffer<type>::read(void) { - return extract(); -} - - - -////////////////////////////// -// -// CircularBuffer::reset -- throws out all previous data and -// sets the read/write/count to initial values. The size -// data variable must be valid before this function is -// called. -// - -template<class type> -void CircularBuffer<type>::reset(void) { - readIndex = writeIndex = getSize() - 1; - itemCount = 0; -} - - - -////////////////////////////// -// -// CircularBuffer::setSize -- warning: will throw out all previous data -// stored in buffer. -// - -template<class type> -void CircularBuffer<type>::setSize(int aSize) { - if (aSize < 0) { - std::cerr << "Error: cannot have a negative buffer size: " << aSize << std::endl; - exit(1); - } - if (buffer != NULL) { - delete [] buffer; - } - - if (aSize == 0) { - size = aSize; - buffer = NULL; - reset(); - } else { - size = aSize; - buffer = new type[aSize]; - reset(); - } -} - - - -////////////////////////////// -// -// CircularBuffer::write -- an alias for the insert function. -// - -template<class type> -void CircularBuffer<type>::write(const type& anElement) { - write(anElement); -} - - -/////////////////////////////////////////////////////////////////////////// -// -// private functions -// - -////////////////////////////// -// -// CircularBuffer::increment -- adds one to specified index and -// will automatically wrap the index when it gets too large. -// - -template<class type> -void CircularBuffer<type>::increment(int& index) { - index++; - if (index >= getSize()) { - index = 0; - } -} - - -#endif /* _CIRCULARBUFFER_CPP_INCLUDED */ - - - -// md5sum: 31b2e8d6efe7398a12ddb0a1b5680ca2 - CircularBuffer.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/CircularBuffer.h b/extensions/gripd/src/midiio/include/CircularBuffer.h deleted file mode 100644 index 6bb3071aa22e59f582f1fe7bf272b3da99d8b31b..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/CircularBuffer.h +++ /dev/null @@ -1,66 +0,0 @@ -// -// Copyright 1997-1998 by Craig Stuart Sapp, All Rights Reserved. -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: 19 December 1997 -// Last Modified: Wed Jan 21 23:08:13 GMT-0800 1998 -// Filename: ...sig/maint/code/base/CircularBuffer/CircularBuffer.h -// Web Address: http://sig.sapp.org/include/sigBase/CircularBuffer.cpp -// Documentation: http://sig.sapp.org/doc/classes/CircularBuffer -// Syntax: C++ -// -// Description: A Circular buffer designed to handle MIDI input, -// but able to store any type of object. Elements -// can be read out of the buffer in two ways. -// (1) from a read pointer which extracts the -// elements in order by following the write pointer, -// and (2) from an index operator related to the -// write pointer's location, for example, -// object[0] is the last value written into the -// buffer and object[-1] (or object[1]) is the -// item written just before that. -// - -#ifndef _CIRCULARBUFFER_H_INCLUDED -#define _CIRCULARBUFFER_H_INCLUDED - - -template<class type> -class CircularBuffer { - public: - CircularBuffer (void); - CircularBuffer (int maxElements); - CircularBuffer (const CircularBuffer<type>& - anotherBuffer); - ~CircularBuffer (); - - int capacity (void) const; - type extract (void); - int getCount (void) const; - int getSize (void) const; - void insert (const type& aMessage); - type& operator[] (int index); - type read (void); - void reset (void); - void setSize (int aSize); - void write (const type& aMessage); - - protected: - type* buffer; - int size; - int writeIndex; - int readIndex; - int itemCount; - - void increment (int& index); -}; - - -#include "CircularBuffer.cpp" - - - -#endif /* _CIRCULARBUFFER_H_INCLUDED */ - - - -// md5sum: 2857693ec37fdcb6df09db479faf110b - CircularBuffer.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/Collection.cpp b/extensions/gripd/src/midiio/include/Collection.cpp deleted file mode 100644 index 74eef1658d9036426652053eb1d55814d3d30087..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/Collection.cpp +++ /dev/null @@ -1,355 +0,0 @@ -// -// Copyright 1997 by Craig Stuart Sapp, All Rights Reserved. -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Wed Feb 5 19:42:53 PST 1997 -// Last Modified: Wed Apr 23 22:08:34 GMT-0800 1997 -// Last Modified: Fri Sep 14 15:50:52 PDT 2001 (added last() function) -// Filename: ...sig/maint/code/base/Collection/Collection.cpp -// Web Address: http://sig.sapp.org/src/sigBase/Collection.cpp -// Syntax: C++ -// -// Description: A dynamic array which can grow as necessary. -// This class can hold any type of item, but the -// derived Array class is specifically for collections -// of numbers. -// - -#ifndef _COLLECTION_CPP_INCLUDED -#define _COLLECTION_CPP_INCLUDED - -#include "Collection.h" -#include <iostream> -#include <stdlib.h> - - -////////////////////////////// -// -// Collection::Collection -// - -template<class type> -Collection<type>::Collection(void) { - allocSize = 0; - size = 0; - array = NULL; - allowGrowthQ = 0; - growthAmount = 8; - maxSize = 0; -} - -template<class type> -Collection<type>::Collection(int arraySize) { - array = new type[arraySize]; - size = arraySize; - allocSize = arraySize; - allowGrowthQ = 0; - growthAmount = arraySize; - maxSize = 0; -} - - -template<class type> -Collection<type>::Collection(int arraySize, type *aCollection) { - size = arraySize; - allocSize = arraySize; - array = new type[size]; - for (int i=0; i<size; i++) { - array[i] = aCollection[i]; - } - growthAmount = arraySize; - allowGrowthQ = 0; - maxSize = 0; -} - - -template<class type> -Collection<type>::Collection(Collection<type>& aCollection) { - size = aCollection.size; - allocSize = size; - array = new type[size]; - for (int i=0; i<size; i++) { - array[i] = aCollection.array[i]; - } - allowGrowthQ = aCollection.allowGrowthQ; - growthAmount = aCollection.growthAmount; - maxSize = aCollection.maxSize; -} - - - -////////////////////////////// -// -// Collection::~Collection -// - -template<class type> -Collection<type>::~Collection() { - if (getAllocSize() != 0) { - delete [] array; - } -} - - - -////////////////////////////// -// -// Collection::allowGrowth -// default value: status = 1 -// - -template<class type> -void Collection<type>::allowGrowth(int status) { - if (status == 0) { - allowGrowthQ = 0; - } else { - allowGrowthQ = 1; - } -} - - - -////////////////////////////// -// -// Collection::append -// - -template<class type> -void Collection<type>::append(type& element) { - if (size == getAllocSize()) { - grow(); - } - array[size] = element; - size++; -} - -template<class type> -void Collection<type>::appendcopy(type element) { - if (size == getAllocSize()) { - grow(); - } - array[size] = element; - size++; -} - -template<class type> -void Collection<type>::append(type *element) { - if (size == getAllocSize()) { - grow(); - } - array[size] = *element; - size++; -} - - - -////////////////////////////// -// -// Collection::grow -// default parameter: growamt = -1 -// - -template<class type> -void Collection<type>::grow(long growamt) { - allocSize += growamt > 0 ? growamt : growthAmount; - if (maxSize != 0 && getAllocSize() > maxSize) { - std::cerr << "Error: Maximum size allowed for array exceeded." << std::endl; - exit(1); - } - - type *temp = new type[getAllocSize()]; - for (int i=0; i<size; i++) { - temp[i] = array[i]; - } - array = temp; -} - - - -////////////////////////////// -// -// Collection::pointer -// - -template<class type> -type* Collection<type>::pointer(void) { - return array; -} - - - -////////////////////////////// -// -// Collection::getBase -// - -template<class type> -type* Collection<type>::getBase(void) { - return array; -} - - - -////////////////////////////// -// -// Collection::getAllocSize -// - -template<class type> -long Collection<type>::getAllocSize(void) const { - return allocSize; -} - - - -////////////////////////////// -// -// Collection::getSize -- -// - -template<class type> -long Collection<type>::getSize(void) const { - return size; -} - - - -////////////////////////////// -// -// Collection::last -- -// - -template<class type> -type& Collection<type>::last(void) { - return array[getSize()-1]; -} - - - -////////////////////////////// -// -// Collection::setAllocSize -// - -template<class type> -void Collection<type>::setAllocSize(long aSize) { - if (aSize < getSize()) { - std::cerr << "Error: cannot set allocated size smaller than actual size." - << std::endl; - exit(1); - } - - if (aSize <= getAllocSize()) { - shrinkTo(aSize); - } else { - grow(aSize-getAllocSize()); - size = aSize; - } -} - - - -////////////////////////////// -// -// Collection::setGrowth -// default parameter: growth = -1 -// - -template<class type> -void Collection<type>::setGrowth(long growth) { - if (growth > 0) { - growthAmount = growth; - } -} - - - -////////////////////////////// -// -// Collection::setSize -// - -template<class type> -void Collection<type>::setSize(long newSize) { - if (newSize <= getAllocSize()) { - size = newSize; - } else { - grow(newSize-getAllocSize()); - size = newSize; - } -} - - - -//////////////////////////////////////////////////////////////////////////////// -// -// Collection operators -// - -////////////////////////////// -// -// Collection::operator[] -// - -template<class type> -type& Collection<type>::operator[](int elementIndex) { - if (allowGrowthQ && elementIndex == size) { - if (size == getAllocSize()) { - grow(); - } - size++; - } else if (elementIndex >= size) { - std::cerr << "Error: accessing invalid array location " - << elementIndex - << " Maximum is " << size-1 << std::endl; - exit(1); - } - return array[elementIndex]; -} - - -////////////////////////////// -// -// Collection::operator[] const -// - -template<class type> -type Collection<type>::operator[](int elementIndex) const { - if (elementIndex >= size) { - std::cerr << "Error: accessing invalid array location " - << elementIndex - << " Maximum is " << size-1 << std::endl; - exit(1); - } - return array[elementIndex]; -} - -////////////////////////////// -// -// shrinkTo -// - -template<class type> -void Collection<type>::shrinkTo(long aSize) { - if (aSize < getSize()) { - exit(1); - } - - type *temp = new type[aSize]; - for (int i=0; i<size; i++) { - temp[i] = array[i]; - } - delete [] array; - array = temp; - - allocSize = aSize; - if (size > allocSize) { - size = allocSize; - } -} - - -#endif /* _COLLECTION_CPP_INCLUDED */ - - - -// md5sum: 9929fee30b1bede4305e1fb46303ddc1 - Collection.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/Collection.h b/extensions/gripd/src/midiio/include/Collection.h deleted file mode 100644 index 6775366f08a570d964bc2fdbf90b80ecea53cd78..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/Collection.h +++ /dev/null @@ -1,70 +0,0 @@ -// -// Copyright 1997 by Craig Stuart Sapp, All Rights Reserved. -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Wed Feb 5 19:42:53 PST 1997 -// Last Modified: Tue Apr 22 20:28:16 GMT-0800 1997 -// Last Modified: Fri Sep 14 15:50:52 PDT 2001 (added last() function) -// Filename: ...sig/maint/code/base/Collection/Collection.h -// Web Address: http://sig.sapp.org/include/sigBase/Collection.h -// Documentation: http://sig.sapp.org/doc/classes/Collection -// Syntax: C++ -// -// Description: A dynamic array which can grow as necessary. -// This class can hold any type of item, but the -// derived Array class is specifically for collections -// of numbers. -// - -#ifndef _COLLECTION_H_INCLUDED -#define _COLLECTION_H_INCLUDED - - -template<class type> -class Collection { - public: - Collection (void); - Collection (int arraySize); - Collection (int arraySize, type *aCollection); - Collection (Collection<type>& aCollection); - ~Collection (); - - void allowGrowth (int status = 1); - void append (type& element); - void appendcopy (type element); - void append (type* element); - type *getBase (void); - long getAllocSize (void) const; - long getSize (void) const; - type *pointer (void); - void setAllocSize (long aSize); - void setGrowth (long growth); - void setSize (long newSize); - type& operator[] (int arrayIndex); - type operator[] (int arrayIndex) const; - void grow (long growamt = -1); - type& last (void); - - - protected: - long size; // actual array size - long allocSize; // maximum allowable array size - type *array; // where the array data is stored - char allowGrowthQ; // allow/disallow growth - long growthAmount; // number of elements to grow by if index - // element one beyond max size is accessed - long maxSize; // the largest size the array is allowed - // to grow to, if 0, then ignore max - - void shrinkTo (long aSize); -}; - - -#include "Collection.cpp" - - - -#endif /* _COLLECTION_H_INCLUDED */ - - - -// md5sum: 01bec04835c0bd117f40c2bfe51c4abd - Collection.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/FileIO.h b/extensions/gripd/src/midiio/include/FileIO.h deleted file mode 100644 index fdec5deec8cc32ec4857f6a49e5e7a56412107c6..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/FileIO.h +++ /dev/null @@ -1,148 +0,0 @@ -// -// Copyright 1997 by Craig Stuart Sapp, All Rights Reserved. -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Fri May 9 22:30:32 PDT 1997 -// Last Modified: Sun Dec 14 05:26:16 GMT-0800 1997 -// Filename: ...sig/maint/code/base/FileIO/FileIO.h -// Web Address: http://sig.sapp.org/include/sigBase/FileIO.h -// Documentation: http://sig.sapp.org/doc/classes/FileIO -// Syntax: C++ -// -// Description: Derived from the fstream class, this class has -// functions which allow writing binary files in -// both little and big endian formats. Useful for -// writing files such as soundfiles and MIDI files -// which require numbers to be stored in a particular -// endian format. -// - -#ifndef _FILEIO_H_INCLUDED -#define _FILEIO_H_INCLUDED - - -#include <fstream> - -typedef unsigned char uchar; -typedef unsigned short ushort; -typedef unsigned long ulong; -typedef unsigned int uint; - -// templates would be nice to use here, but they don't seem -// to work intuitively... - -class FileIO : public std::fstream { - public: - FileIO (void); - FileIO (const char* filename, std::ios::openmode state); - ~FileIO (); - - void readBigEndian (char& aNumber); - void readBigEndian (uchar& aNumber); - void readBigEndian (short& aNumber); - void readBigEndian (ushort& aNumber); - void readBigEndian (long& aNumber); - void readBigEndian (ulong& aNumber); - void readBigEndian (int& aNumber); - void readBigEndian (uint& aNumber); - void readBigEndian (float& aNumber); - void readBigEndian (double& aNumber); - - void readLittleEndian (char& aNumber); - void readLittleEndian (uchar& aNumber); - void readLittleEndian (short& aNumber); - void readLittleEndian (ushort& aNumber); - void readLittleEndian (long& aNumber); - void readLittleEndian (ulong& aNumber); - void readLittleEndian (int& aNumber); - void readLittleEndian (uint& aNumber); - void readLittleEndian (float& aNumber); - void readLittleEndian (double& aNumber); - - void readMachineEndian (char& aNumber); - void readMachineEndian (uchar& aNumber); - void readMachineEndian (short& aNumber); - void readMachineEndian (ushort& aNumber); - void readMachineEndian (long& aNumber); - void readMachineEndian (ulong& aNumber); - void readMachineEndian (int& aNumber); - void readMachineEndian (uint& aNumber); - void readMachineEndian (float& aNumber); - void readMachineEndian (double& aNumber); - - void readNotMachineEndian (char& aNumber); - void readNotMachineEndian (uchar& aNumber); - void readNotMachineEndian (short& aNumber); - void readNotMachineEndian (ushort& aNumber); - void readNotMachineEndian (long& aNumber); - void readNotMachineEndian (ulong& aNumber); - void readNotMachineEndian (int& aNumber); - void readNotMachineEndian (uint& aNumber); - void readNotMachineEndian (float& aNumber); - void readNotMachineEndian (double& aNumber); - - void writeBigEndian (char aNumber); - void writeBigEndian (uchar aNumber); - void writeBigEndian (short aNumber); - void writeBigEndian (ushort aNumber); - void writeBigEndian (long aNumber); - void writeBigEndian (ulong aNumber); - void writeBigEndian (int aNumber); - void writeBigEndian (uint aNumber); - void writeBigEndian (float aNumber); - void writeBigEndian (double aNumber); - - void writeLittleEndian (char aNumber); - void writeLittleEndian (uchar aNumber); - void writeLittleEndian (short aNumber); - void writeLittleEndian (ushort aNumber); - void writeLittleEndian (long aNumber); - void writeLittleEndian (ulong aNumber); - void writeLittleEndian (int aNumber); - void writeLittleEndian (uint aNumber); - void writeLittleEndian (float aNumber); - void writeLittleEndian (double aNumber); - - void writeMachineEndian (char aNumber); - void writeMachineEndian (uchar aNumber); - void writeMachineEndian (short aNumber); - void writeMachineEndian (ushort aNumber); - void writeMachineEndian (long aNumber); - void writeMachineEndian (ulong aNumber); - void writeMachineEndian (int aNumber); - void writeMachineEndian (uint aNumber); - void writeMachineEndian (float aNumber); - void writeMachineEndian (double aNumber); - - void writeNotMachineEndian (char aNumber); - void writeNotMachineEndian (uchar aNumber); - void writeNotMachineEndian (short aNumber); - void writeNotMachineEndian (ushort aNumber); - void writeNotMachineEndian (long aNumber); - void writeNotMachineEndian (ulong aNumber); - void writeNotMachineEndian (int aNumber); - void writeNotMachineEndian (uint aNumber); - void writeNotMachineEndian (float aNumber); - void writeNotMachineEndian (double aNumber); - - protected: - - char flipBytes (char aNumber); - uchar flipBytes (uchar aNumber); - short flipBytes (short aNumber); - ushort flipBytes (ushort aNumber); - long flipBytes (long aNumber); - ulong flipBytes (ulong aNumber); - int flipBytes (int aNumber); - uint flipBytes (uint aNumber); - float flipBytes (float aNumber); - double flipBytes (double aNumber); - -}; - - - -#endif /* _FILEIO_H_INCLUDED */ - - - -// md5sum: 0a146ebe5c6bd0850be973f612827d20 - FileIO.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/MidiFile.h b/extensions/gripd/src/midiio/include/MidiFile.h deleted file mode 100644 index 10794d50d54bf9cfb308c195a7659827d961907e..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/MidiFile.h +++ /dev/null @@ -1,108 +0,0 @@ -// -// Copyright 1999-2000 by Craig Stuart Sapp, All Rights Reserved. -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Fri Nov 26 14:12:01 PST 1999 -// Last Modified: Fri Dec 2 13:26:44 PST 1999 -// Last Modified: Fri Nov 10 12:13:15 PST 2000 (added some more editing cap.) -// Last Modified: Thu Jan 10 10:03:39 PST 2002 (added allocateEvents()) -// Last Modified: Mon Jun 10 22:43:10 PDT 2002 (added clear()) -// Filename: ...sig/include/sigInfo/MidiFile.h -// Web Address: http://sig.sapp.org/include/sigInfo/MidiFile.h -// Syntax: C++ -// -// Description: A class which can read/write Standard MIDI files. -// MIDI data is stored by track in an array. This -// class is used for example in the MidiPerform class. -// - -#ifndef _MIDIfILE_H_INCLUDED -#define _MIDIfILE_H_INCLUDED - -#include "FileIO.h" -#include "Array.h" -#include "Collection.h" - -typedef unsigned char uchar; -typedef unsigned short ushort; -typedef unsigned long ulong; - -#define TIME_STATE_DELTA 0 -#define TIME_STATE_ABSOLUTE 1 - -#define TRACK_STATE_SPLIT 0 -#define TRACK_STATE_JOINED 1 - - -class _MFEvent { - public: - _MFEvent (void); - _MFEvent (int command); - _MFEvent (int command, int param1); - _MFEvent (int command, int param1, int param2); - _MFEvent (int track, int command, int param1, int param2); - _MFEvent (int aTime, int aTrack, int command, int param1, int param2); - ~_MFEvent (); - int time; - int track; - Array<uchar> data; -}; - - - -class MidiFile { - public: - MidiFile (void); - MidiFile (char* aFile); - ~MidiFile (); - - void absoluteTime (void); - int addEvent (int aTrack, int aTime, - Array<uchar>& midiData); - int addTrack (void); - int addTrack (int count); - void allocateEvents (int track, int aSize); - void deltaTime (void); - void deleteTrack (int aTrack); - void erase (void); - void clear (void); - _MFEvent& getEvent (int aTrack, int anIndex); - int getTimeState (void); - int getTrackState (void); - int getTicksPerQuarterNote (void); - int getTrackCount (void); - int getNumTracks (void); - int getNumEvents (int aTrack); - void joinTracks (void); - void mergeTracks (int aTrack1, int aTrack2); - int read (char* aFile); - void setTicksPerQuarterNote (int ticks); - void sortTrack (Collection<_MFEvent>& trackData); - void sortTracks (void); - void splitTracks (void); - int write (const char* aFile); - - protected: - Collection<Collection<_MFEvent>*> events; // midi file events - int ticksPerQuarterNote; // time base of file - int trackCount; // # of tracks in file - int theTrackState; // joined or split - int theTimeState; // absolute or delta - char* readFileName; // read file name - - private: - void extractMidiData (FileIO& inputfile, Array<uchar>& array, - uchar& runningCommand); - ulong extractVlvTime (FileIO& inputfile); - ulong unpackVLV (uchar a, uchar b, uchar c, uchar d, uchar e); - void writeVLValue (long aValue, Array<uchar>& data); -}; - - -int eventcompare(const void* a, const void* b); -std::ostream& operator<<(std::ostream& out, MidiFile& aMidiFile); - -#endif /* _MIDIfILE_H_INCLUDED */ - - - -// md5sum: ff46e64698e2d9e88ebeef3efa9927d0 - MidiFile.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/MidiFileWrite.h b/extensions/gripd/src/midiio/include/MidiFileWrite.h deleted file mode 100644 index a213fdf2b672cf40d2b85705df2553731bef77e6..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/MidiFileWrite.h +++ /dev/null @@ -1,61 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Sun Mar 15 10:55:56 GMT-0800 1998 -// Last Modified: Sun Mar 15 10:55:56 GMT-0800 1998 -// Filename: ...sig/code/control/MidiFileWrite/MidiFileWrite.h -// Web Address: http://www-ccrma.stanford.edu/~craig/improv/include/MidiFileWrite.h -// Syntax: C++ -// -// Description: The MidiFileWrite class will write out a Type 0 MidiFile. -// Used for recording MIDI data streams into Standard -// MIDI files. -// - -#ifndef _MIDIFILEWRITE_INCLUDED -#define _MIDIFILEWRITE_INCLUDED - - -#include "FileIO.h" - - -class MidiFileWrite { - public: - MidiFileWrite (void); - MidiFileWrite (const char* aFilename, int startTime = -1); - ~MidiFileWrite (); - - void close (void); - void setup (const char* aFilename, int startTime = -1); - void start (int startTime = -1); - void writeAbsolute (int aTime, int command, int p1, int p2); - void writeAbsolute (int aTime, int command, int p1); - void writeAbsolute (int aTime, int command); - void writeRaw (uchar aByte); - void writeRaw (uchar aByte, uchar Byte); - void writeRaw (uchar aByte, uchar Byte, uchar cByte); - void writeRaw (uchar aByte, uchar Byte, uchar cByte, - uchar dByte); - void writeRaw (uchar aByte, uchar Byte, uchar cByte, - uchar dByte, uchar eByte); - void writeRaw (uchar* anArray, int arraySize); - void writeRelative (int aTime, int command, int p1, int p2); - void writeRelative (int aTime, int command, int p1); - void writeRelative (int aTime, int command); - void writeVLValue (long aValue); - - - protected: - FileIO *midifile; // file stream for MIDI file - long trackSize; // size count for MIDI track - int lastPlayTime; // for calculating delta times - int openQ; // for checking file status - -}; - - - -#endif /* _MIDIFILEWRITE_INCLUDED */ - - - -// md5sum: 44ac572078bff648d096c7e7867d1b3c - MidiFileWrite.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/MidiIO.h b/extensions/gripd/src/midiio/include/MidiIO.h deleted file mode 100644 index 80c9168ce30125acb05735914d711409f7201bb8..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/MidiIO.h +++ /dev/null @@ -1,58 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: 21 December 1997 -// Last Modified: Sun Jan 25 15:44:35 GMT-0800 1998 -// Filename: ...sig/code/control/MidiIO/MidiIO.h -// Web Address: http://www-ccrma.stanford.edu/~craig/improv/include/MidiIO.h -// Syntax: C++ -// -// Description: A unified class for MidiInput and MidiOutput that handles -// MIDI input and output connections. The Synthesizer -// and RadioBaton classes are derived from this class. -// - -#ifndef _MIDIIO_H_INCLUDED -#define _MIDIIO_H_INCLUDED - - -#include "MidiInput.h" -#include "MidiOutput.h" - - -class MidiIO : public MidiOutput, public MidiInput { - public: - MidiIO (void); - MidiIO (int outPort, int inPort); - ~MidiIO (); - - void close (void); - void closeInput (void); - void closeOutput (void); - int getChannelInOffset (void) const; - int getChannelOutOffset (void) const; - int getInputPort (void); - int getInputTrace (void); - int getNumInputPorts (void); - int getNumOutputPorts (void); - int getOutputPort (void); - int getOutputTrace (void); - int open (void); - int openInput (void); - int openOutput (void); - void setChannelOffset (int anOffset); - void setInputPort (int aPort); - void setInputTrace (int aState); - void setOutputPort (int aPort); - void setOutputTrace (int aState); - void toggleInputTrace (void); - void toggleOutputTrace (void); - -}; - - - -#endif /* _MIDIIO_H_INCLUDED */ - - - -// md5sum: 9f6122405c4d9e83994457210217ff22 - MidiIO.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/MidiInPort.h b/extensions/gripd/src/midiio/include/MidiInPort.h deleted file mode 100644 index ac225c4fb71987e5f0b0569055148abbe46f8fd1..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/MidiInPort.h +++ /dev/null @@ -1,98 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Wed Jan 21 22:35:31 GMT-0800 1998 -// Last Modified: Thu Jan 22 23:13:54 GMT-0800 1998 -// Last Modified: Sat Nov 7 16:09:18 PST 1998 -// Last Modified: Tue Jun 29 16:14:50 PDT 1999 (added Sysex input) -// Last Modified: Tue May 23 23:08:44 PDT 2000 (oss/alsa selection added) -// Filename: ...sig/maint/code/control/MidiInPort/MidiInPort.h -// Web Address: http://sig.sapp.org/include/sig/MidiInPort.h -// Syntax: C++ -// -// Description: An interface for MIDI input capabilities of an -// operating-system specific MIDI input method. -// Provides control of all low-level MIDI input -// functionality such that it will work on all -// computers in the same manner. -// - -#ifndef _MIDIINPORT_H_INCLUDED -#define _MIDIINPORT_H_INCLUDED - - -#include "MidiMessage.h" - -#ifdef VISUAL - #define MIDIINPORT MidiInPort_visual - #include "MidiInPort_visual.h" -#elif defined(LINUX) && defined(ALSA) && defined(OSS) - #define MIDIINPORT MidiInPort_linux - #include "MidiInPort_linux.h" -#elif defined(LINUX) && defined(ALSA) && !defined(OSS) - #define MIDIINPORT MidiInPort_alsa - #include "MidiInPort_alsa.h" -#elif defined (LINUX) && defined(OSS) && !defined(ALSA) - #define MIDIINPORT MidiInPort_oss - #include "MidiInPort_oss.h" -#elif defined(LINUX) - #define MIDIINPORT MidiInPort_oss - #include "MidiInPort_oss.h" -#else - #define MIDIINPORT MidiInPort_unsupported - #include "MidiInPort_unsupported.h" -#endif - - -class MidiInPort : protected MIDIINPORT { - public: - MidiInPort (void) : MIDIINPORT() {} - MidiInPort (int aPort, int autoOpen = 1) : - MIDIINPORT(aPort, autoOpen) {} - ~MidiInPort() { } - - void clearSysex(void) { MIDIINPORT::clearSysex(); } - void clearSysex(int buffer) { MIDIINPORT::clearSysex(buffer); } - void close(void) { MIDIINPORT::close(); } - void closeAll(void) { MIDIINPORT::closeAll(); } - MidiMessage extract(void) { return MIDIINPORT::extract(); } - int getBufferSize(void) { return MIDIINPORT::getBufferSize(); } - int getChannelOffset(void) const { - return MIDIINPORT::getChannelOffset(); } - int getCount(void) { return MIDIINPORT::getCount(); } - const char* getName(void) { return MIDIINPORT::getName(); } - static const char* getName(int i) { return MIDIINPORT::getName(i); } - static int getNumPorts(void) { - return MIDIINPORT::getNumPorts(); } - int getPort(void) { return MIDIINPORT::getPort(); } - int getPortStatus(void){ - return MIDIINPORT::getPortStatus(); } - uchar* getSysex(int buffer) { return MIDIINPORT::getSysex(buffer); } - int getSysexSize(int buffer) { return MIDIINPORT::getSysexSize(buffer); } - int getTrace(void) { return MIDIINPORT::getTrace(); } - void insert(const MidiMessage& aMessage) { - MIDIINPORT::insert(aMessage); } - int installSysex(uchar* anArray, int aSize) { - return MIDIINPORT::installSysex(anArray, aSize); } - int open(void) { return MIDIINPORT::open(); } - MidiMessage& operator[](int index) { - return MIDIINPORT::message(index); } - void pause(void) { MIDIINPORT::pause(); } - void setBufferSize(int aSize) { - MIDIINPORT::setBufferSize(aSize); } - void setChannelOffset(int anOffset) { - MIDIINPORT::setChannelOffset(anOffset); } - void setAndOpenPort(int aPort) { setPort(aPort); open(); } - void setPort(int aPort) { MIDIINPORT::setPort(aPort); } - int setTrace(int aState) { - return MIDIINPORT::setTrace(aState); } - void toggleTrace(void) { MIDIINPORT::toggleTrace(); } - void unpause(void) { MIDIINPORT::unpause(); } -}; - - - -#endif /* _MIDIINPORT_H_INCLUDED */ - - - -// md5sum: 96f8a2b4411a356d1b73cd96421b8931 - MidiInPort.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/MidiInPort_alsa.h b/extensions/gripd/src/midiio/include/MidiInPort_alsa.h deleted file mode 100644 index 5a165daa03b24eb1e71210241e6ff7b0da460a7f..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/MidiInPort_alsa.h +++ /dev/null @@ -1,108 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Sun May 14 22:05:27 PDT 2000 -// Last Modified: Sat Oct 13 16:11:24 PDT 2001 (updated for ALSA 0.9) -// Last Modified: Sat Nov 2 20:35:50 PST 2002 (added #ifdef ALSA) -// Filename: ...sig/maint/code/control/MidiInPort/linux/MidiInPort_alsa.h -// Web Address: http://sig.sapp.org/include/sig/MidiInPort_alsa.h -// Syntax: C++ -// -// Description: An interface for MIDI input capabilities of -// linux ALSA sound driver's specific MIDI input methods. -// This class is inherited privately by the MidiInPort class. -// - -#ifndef _MIDIINPORT_ALSA_H_INCLUDED -#define _MIDIINPORT_ALSA_H_INCLUDED - -#ifdef LINUX -#ifdef ALSA - -#include "MidiMessage.h" -#include "CircularBuffer.h" -#include "Array.h" -#include "Sequencer_alsa.h" -#include "SigTimer.h" -#include <pthread.h> - -typedef unsigned char uchar; -typedef void (*MIDI_Callback_function)(int arrivalPort); - -void *interpretMidiInputStreamPrivateALSA(void * x); - -class MidiInPort_alsa : public Sequencer_alsa { - public: - MidiInPort_alsa (void); - MidiInPort_alsa (int aPort, int autoOpen = 1); - ~MidiInPort_alsa (); - - void clearSysex (int buffer); - void clearSysex (void); - void close (void); - void closeAll (void); - MidiMessage extract (void); - int getBufferSize (void); - int getChannelOffset (void) const; - int getCount (void); - const char* getName (void); - static const char* getName (int i); - static int getNumPorts (void); - int getPort (void); - int getPortStatus (void); - uchar* getSysex (int buffer); - int getSysexSize (int buffer); - int getTrace (void); - void insert (const MidiMessage& aMessage); - int installSysex (uchar* anArray, int aSize); - MidiMessage& message (int index); - int open (void); - void pause (void); - void setBufferSize (int aSize); - void setChannelOffset (int anOffset); - void setPort (int aPort); - int setTrace (int aState); - void toggleTrace (void); - void unpause (void); - - static Array<int> threadinitport; - - protected: - int port; // the port to which this object belongs - - static MIDI_Callback_function callbackFunction; - - static int installSysexPrivate (int port, - uchar* anArray, int aSize); - - static int objectCount; // num of similar objects in existence - static int* portObjectCount; // objects connected to particular port - static int* trace; // for verifying input - static std::ostream* tracedisplay; // stream for displaying trace - static int numDevices; // number of input ports - static CircularBuffer<MidiMessage>** midiBuffer; // MIDI storage frm ports - static int channelOffset; // channel offset, either 0 or 1 - // not being used right now. - static int* pauseQ; // for adding items to Buffer or not - static SigTimer midiTimer; // for timing MIDI input - static Array<pthread_t> midiInThread; // for MIDI input thread function - static int* sysexWriteBuffer; // for MIDI sysex write location - static Array<uchar>** sysexBuffers; // for MIDI sysex storage - - private: - void deinitialize (void); - void initialize (void); - - - friend void *interpretMidiInputStreamPrivateALSA(void * x); - -}; - - -#endif /* ALSA */ -#endif /* LINUX */ - -#endif /* _MIDIINPORT_ALSA_H_INCLUDED */ - - - -// md5sum: 260a0accd6b08b638a00904c382293bc - MidiInPort_alsa.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/MidiInPort_alsa05.h b/extensions/gripd/src/midiio/include/MidiInPort_alsa05.h deleted file mode 100644 index 27af5692b58c5e5c8af87e5c0cf555f1da12cfea..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/MidiInPort_alsa05.h +++ /dev/null @@ -1,107 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Sun May 14 22:05:27 PDT 2000 -// Last Modified: Wed Oct 3 22:28:20 PDT 2001 (frozen for ALSA 0.5) -// Last Modified: Thu Jan 2 18:55:12 PST 2003 (added #ifdef ALSA05) -// Filename: ...sig/maint/code/control/MidiInPort/linux/MidiInPort_alsa05.h -// Web Address: http://sig.sapp.org/include/sig/MidiInPort_alsa05.h -// Syntax: C++ -// -// Description: An interface for MIDI input capabilities of -// linux ALSA sound driver's specific MIDI input methods. -// This class is inherited privately by the MidiInPort class. -// - -#ifndef _MIDIINPORT_ALSA05_H_INCLUDED -#define _MIDIINPORT_ALSA05_H_INCLUDED - -#ifdef LINUX -#ifdef ALSA05 - -#include "MidiMessage.h" -#include "CircularBuffer.h" -#include "Array.h" -#include "Sequencer_alsa05.h" -#include "SigTimer.h" -#include <pthread.h> - -typedef unsigned char uchar; -typedef void (*MIDI_Callback_function)(int arrivalPort); - - -class MidiInPort_alsa05 : public Sequencer_alsa05 { - public: - MidiInPort_alsa05 (void); - MidiInPort_alsa05 (int aPort, int autoOpen = 1); - ~MidiInPort_alsa05 (); - - void clearSysex (int buffer); - void clearSysex (void); - void close (void); - void closeAll (void); - MidiMessage extract (void); - int getBufferSize (void); - int getChannelOffset (void) const; - int getCount (void); - const char* getName (void); - static const char* getName (int i); - static int getNumPorts (void); - int getPort (void); - int getPortStatus (void); - uchar* getSysex (int buffer); - int getSysexSize (int buffer); - int getTrace (void); - void insert (const MidiMessage& aMessage); - int installSysex (uchar* anArray, int aSize); - MidiMessage& message (int index); - int open (void); - void pause (void); - void setBufferSize (int aSize); - void setChannelOffset (int anOffset); - void setPort (int aPort); - int setTrace (int aState); - void toggleTrace (void); - void unpause (void); - - static Array<int> threadinitport; - - protected: - int port; // the port to which this object belongs - - static MIDI_Callback_function callbackFunction; - - static int installSysexPrivate (int port, - uchar* anArray, int aSize); - - static int objectCount; // num of similar objects in existence - static int* portObjectCount; // objects connected to particular port - static int* trace; // for verifying input - static ostream* tracedisplay; // stream for displaying trace - static int numDevices; // number of input ports - static CircularBuffer<MidiMessage>** midiBuffer; // MIDI storage frm ports - static int channelOffset; // channel offset, either 0 or 1 - // not being used right now. - static int* pauseQ; // for adding items to Buffer or not - static SigTimer midiTimer; // for timing MIDI input - static Array<pthread_t> midiInThread; // for MIDI input thread function - static int* sysexWriteBuffer; // for MIDI sysex write location - static Array<uchar>** sysexBuffers; // for MIDI sysex storage - - private: - void deinitialize (void); - void initialize (void); - - - friend void *interpretMidiInputStreamPrivateALSA05(void * x); - -}; - - -#endif /* ALSA05 */ -#endif /* LINUX */ - -#endif /* _MIDIINPORT_ALSA05_H_INCLUDED */ - - - -// md5sum: 7b85b4a658c6f1d45dc1da7752f25cae - MidiInPort_alsa05.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/MidiInPort_linux.h b/extensions/gripd/src/midiio/include/MidiInPort_linux.h deleted file mode 100644 index 589d27af8d0a38541b13b52baa2b0e6afdfa404b..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/MidiInPort_linux.h +++ /dev/null @@ -1,94 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Sun May 14 22:30:04 PDT 2000 -// Last Modified: Thu May 18 23:36:07 PDT 2000 (added ifdef LINUX lines) -// Last Modified: Sat Nov 2 20:37:49 PST 2002 (added ifdef ALSA OSS) -// Filename: ...sig/maint/code/control/MidiInPort/MidiInPort_linux.h -// Web Address: http://sig.sapp.org/include/sig/MidiInPort_linux.h -// Syntax: C++ -// -// Description: An interface for MIDI input capabilities of an -// operating-system specific MIDI input method. -// Provides control of all low-level MIDI input -// functionality such that it will work on all -// computers in the same manner. -// - -#ifndef _MIDIINPORT_LINUX_H_INCLUDED -#define _MIDIINPORT_LINUX_H_INCLUDED - -#ifdef LINUX -#if defined(ALSA) && defined(OSS) - -#define MIDI_IN_UNKNOWN_SELECT 0 -#define MIDI_IN_OSS_SELECT 1 -#define MIDI_IN_ALSA_SELECT 2 - -#include "MidiInPort_oss.h" -#include "MidiInPort_alsa.h" -#include "MidiInPort_unsupported.h" -#include "MidiMessage.h" - - -class MidiInPort_linux { - public: - MidiInPort_linux(void); - MidiInPort_linux(int aPort, int autoOpen = 1); - ~MidiInPort_linux(); - - void clearSysex (void); - void clearSysex (int buffer); - void close (void); - void closeAll (void); - MidiMessage extract (void); - int getBufferSize (void); - int getChannelOffset (void) const; - int getCount (void); - const char* getName (void); - static const char* getName (int i); - static int getNumPorts (void); - int getPort (void); - int getPortStatus (void); - uchar* getSysex (int buffer); - int getSysexSize (int buffer); - int getTrace (void); - void insert (const MidiMessage& aMessage); - int installSysex (uchar* anArray, int aSize); - MidiMessage& message (int index); - int open (void); - MidiMessage& operator[] (int index); - void pause (void); - void setBufferSize (int aSize); - void setChannelOffset (int anOffset); - void setAndOpenPort (int aPort); - void setPort (int aPort); - int setTrace (int aState); - void toggleTrace (void); - void unpause (void); - - static int getSelect (void); - static int selectOSS (void); - static int selectALSA (void); - static int selectUnknown (void); - - private: - - static int current; // the type of MIDI out selected - static int alsaQ; // boolean for if ALSA is present - static int ossQ; // boolean for if OSS is present - static int objectCount; // keeps track of static variables - - static MidiInPort_oss *oss_input; - static MidiInPort_alsa *alsa_input; - static MidiInPort_unsupported *unknown_input; - - void determineDrivers (void); -}; - -#endif /* ALSA and OSS def */ -#endif /* LINUX def */ - -#endif /* _MIDIINPORT_LINUX_H_INCLUDED */ - - -// md5sum: cc3608fb63ccf222f018efc89a4275f0 - MidiInPort_linux.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/MidiInPort_oss.h b/extensions/gripd/src/midiio/include/MidiInPort_oss.h deleted file mode 100644 index 4387c353e56d3d5a404c965414375394d4947d81..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/MidiInPort_oss.h +++ /dev/null @@ -1,106 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Fri Jan 8 08:33:57 PST 1999 -// Last Modified: Fri Jan 8 08:34:01 PST 1999 -// Last Modified: Tue Jun 29 16:18:02 PDT 1999 (added sysex capability) -// Last Modified: Wed May 10 17:10:05 PDT 2000 (name change from _linux to _oss) -// Filename: ...sig/maint/code/control/MidiInPort/linux/MidiInPort_oss.h -// Web Address: http://sig.sapp.org/include/sig/MidiInPort_oss.h -// Syntax: C++ -// -// Description: An interface for MIDI input capabilities of -// linux OSS sound driver's specific MIDI input methods. -// This class is inherited privately by the MidiInPort class. -// - -#ifndef _MIDIINPORT_OSS_H_INCLUDED -#define _MIDIINPORT_OSS_H_INCLUDED - -#ifdef LINUX - -#include "MidiMessage.h" -#include "CircularBuffer.h" -#include "Array.h" -#include "Sequencer_oss.h" -#include "SigTimer.h" -#include <pthread.h> - -typedef unsigned char uchar; -typedef void (*MIDI_Callback_function)(int arrivalPort); - -void *interpretMidiInputStreamPrivate(void * x); - -class MidiInPort_oss : public Sequencer_oss { - public: - MidiInPort_oss (void); - MidiInPort_oss (int aPort, int autoOpen = 1); - ~MidiInPort_oss (); - - void clearSysex (int buffer); - void clearSysex (void); - void close (void); - void close (int i) { close(); } - void closeAll (void); - MidiMessage extract (void); - int getBufferSize (void); - int getChannelOffset (void) const; - int getCount (void); - const char* getName (void); - static const char* getName (int i); - static int getNumPorts (void); - int getPort (void); - int getPortStatus (void); - uchar* getSysex (int buffer); - int getSysexSize (int buffer); - int getTrace (void); - void insert (const MidiMessage& aMessage); - int installSysex (uchar* anArray, int aSize); - MidiMessage& message (int index); - int open (void); - void pause (void); - void setBufferSize (int aSize); - void setChannelOffset (int anOffset); - void setPort (int aPort); - int setTrace (int aState); - void toggleTrace (void); - void unpause (void); - - protected: - int port; // the port to which this object belongs - - static MIDI_Callback_function callbackFunction; - - static int installSysexPrivate (int port, - uchar* anArray, int aSize); - - static int objectCount; // num of similar objects in existence - static int* portObjectCount; // objects connected to particular port - static int* trace; // for verifying input - static std::ostream* tracedisplay; // stream for displaying trace - static int numDevices; // number of input ports - static CircularBuffer<MidiMessage>** midiBuffer; // MIDI storage frm ports - static int channelOffset; // channel offset, either 0 or 1 - // not being used right now. - static int* pauseQ; // for adding items to Buffer or not - static SigTimer midiTimer; // for timing MIDI input - static pthread_t midiInThread; // for MIDI input thread function - static int* sysexWriteBuffer; // for MIDI sysex write location - static Array<uchar>** sysexBuffers; // for MIDI sysex storage - - private: - void deinitialize (void); - void initialize (void); - - - friend void *interpretMidiInputStreamPrivate(void * x); - -}; - - -#endif /* LINUX */ - -#endif /* _MIDIINPORT_OSS_H_INCLUDED */ - - - -// md5sum: 05331ff5c3806fc753ebebaeffa3c377 - MidiInPort_oss.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/MidiInPort_unsupported.h b/extensions/gripd/src/midiio/include/MidiInPort_unsupported.h deleted file mode 100644 index 1f3bcf06b97f3d9751121fd08a234a0c9d729348..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/MidiInPort_unsupported.h +++ /dev/null @@ -1,89 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Fri Jan 23 00:04:51 GMT-0800 1998 -// Last Modified: Fri Jan 23 00:04:58 GMT-0800 1998 -// Last Modified: Wed Jun 30 11:42:59 PDT 1999 (added sysex capability) -// Filename: ...sig/code/control/MidiInPort/unsupported/MidiInPort_unsupported.h -// Web Address: http://www-ccrma.stanford.edu/~craig/improv/include/MidiInPort_unsupported.h -// Syntax: C++ -// -// Description: An interface for MIDI input capabilities of -// an unknown sound driver's specific MIDI input methods. -// This class is inherited privately by the MidiInPort class. -// This class is used when there is no MIDI input, so -// that MIDI programs can otherwise be compiled and run. -// This file can also serve as a template for creating -// an OS specific class for MIDI input. -// - -#ifndef _MIDIINPUT_UNSUPPORTED_H_INCLUDED -#define _MIDIINPUT_UNSUPPORTED_H_INCLUDED - -#include "MidiMessage.h" -#include "CircularBuffer.h" -#include "Array.h" - -class MidiInPort_unsupported { - public: - MidiInPort_unsupported (void); - MidiInPort_unsupported (int aPort, int autoOpen = 1); - ~MidiInPort_unsupported (); - - void clearSysex (int index) { } - void clearSysex (void) { } - int getSysexSize (int index) { return 0; } - uchar* getSysex (int buffer) { return NULL; } - int installSysex (unsigned char *&, int &) { return 0; } - int getBufferSize (void) { return 0; } - void close (void); - void close (int i) { close(); } - void closeAll (void); - MidiMessage extract (void); - int getChannelOffset (void) const; - int getCount (void); - const char* getName (void); - static const char* getName (int i); - int getNumPorts (void); - int getPort (void); - int getPortStatus (void); - int getTrace (void); - void insert (const MidiMessage& aMessage); - MidiMessage& message (int index); - int open (void); - void pause (void); - void setBufferSize (int aSize); - void setChannelOffset (int anOffset); - void setPort (int aPort); - int setTrace (int aState); - void toggleTrace (void); - void unpause (void); - - protected: - int port; // the port to which this object belongs - int trace; - - static int objectCount; // num of similar objects in existence - static int* portObjectCount; // objects connected to particular port - static int* openQ; // for open/close status of port - static int numDevices; // number of input ports - static CircularBuffer<MidiMessage>* midiBuffer; // MIDI storage from ports - static int channelOffset; // channel offset, either 0 or 1 - // not being used right now. - static int* sysexWriteBuffer; // for MIDI sysex write location - static Array<uchar>** sysexBuffers; // for MIDI sysex storage - - private: - void deinitialize (void); - void initialize (void); - void setPortStatus (int aStatus); - - -}; - - - -#endif /* _MIDIINPUT_UNSUPPORTED_H_INCLUDED */ - - - -// md5sum: ff5492fbd59a47e48e2c0ce06705add1 - MidiInPort_unsupported.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/MidiInPort_visual.h b/extensions/gripd/src/midiio/include/MidiInPort_visual.h deleted file mode 100644 index 398a1870e4dc21acda4062e8b32b6376de4be9c8..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/MidiInPort_visual.h +++ /dev/null @@ -1,114 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Sun Dec 28 15:18:46 GMT-0800 1997 -// Last Modified: Mon Jan 12 20:05:27 GMT-0800 1998 -// Last Modified: Wed Jun 30 11:29:51 PDT 1999 (added sysex capability) -// Filename: ...sig/code/control/MidiInPort/visual/MidiInPort_visual.h -// Web Address: http://www-ccrma.stanford.edu/~craig/improv/include/MidiInPort_visual.h -// Syntax: C++ -// -// Description: An interface for MIDI input capabilities of -// Windows 95/NT/98 specific MIDI input methods. -// as defined in winmm.lib. This class is inherited -// privately by the MidiInPort class. -// - -#ifndef _MIDIINPUT_VISUAL_H_INCLUDED -#define _MIDIINPUT_VISUAL_H_INCLUDED - - -#ifdef VISUAL - -#define DEFAULT_INPUT_BUFFER_SIZE (1024) - -#include <windows.h> -#include <mmsystem.h> - -#include "MidiMessage.h" -#include "CircularBuffer.h" -#include "Array.h" - -class MidiInPort_visual { - public: - MidiInPort_visual (void); - MidiInPort_visual (int aPort, int autoOpen = 1); - ~MidiInPort_visual (); - - void clearSysex (void); - void clearSysex (int buffer); - void close (void); - void closeAll (void); - MidiMessage extract (void); - int getBufferSize (void); - int getChannelOffset (void) const; - int getCount (void); - const char* getName (void); - static const char* getName (int i); - static int getNumPorts (void); - int getPort (void); - int getPortStatus (void); - uchar* getSysex (int buffer); - int getSysexSize (int buffer); - int getTrace (void); - void insert (const MidiMessage& aMessage); - int installSysex (uchar* anArray, int aSize); - MidiMessage& message (int index); - int open (void); - void pause (void); - void setBufferSize (int aSize); - void setChannelOffset (int anOffset); - void setPort (int aPort); - int setTrace (int aState); - void toggleTrace (void); - void unpause (void); - - protected: - int port; // the port to which this object belongs - int trace; - - int installSysexPrivate (int port, uchar* anArray, int aSize); - void installSysexStuff (HMIDIIN dev, int port); - void uninstallSysexStuff (HMIDIIN dev, int port); - - static int objectCount; // num of similar objects in existence - static int* portObjectCount; // objects connected to particular port - static int* openQ; // for open/close status of port - static int* inrunningQ; // for running open input port - static int numDevices; // number of input ports - static HMIDIIN* device; // Windoze MIDI-in device structure - static MIDIHDR** sysexDriverBuffer1; // for Windoze driver sysex buffers - static MIDIHDR** sysexDriverBuffer2; // for Windoze driver sysex buffers - static int* sysexDBnumber; // for Windoze driver sysex buffers - static HANDLE* hMutex; // mutual exclusive - static CircularBuffer<MidiMessage>* midiBuffer; // MIDI storage from ports - static int channelOffset; // channel offset from either 0 or 1. - // not being used right now. - static int* sysexWriteBuffer; // for MIDI sysex write location - static Array<uchar>** sysexBuffers;// for MIDI sysex storage - static int* sysexStatus; // tracing multiple MIM_LONGDATA messgs - - private: - void deinitialize (void); - void initialize (void); - void releaseMutex (void); - void setPortStatus (int aStatus); - void waitForMutex (void); - - - friend void CALLBACK midiInputCallback(HMIDIIN hMidiIn, UINT inputStatus, - DWORD instancePtr, DWORD midiMessage, DWORD timestamp); -}; - - -// This is the command which is called by the driver when there is -// MIDI data being received from the MIDI input port: - void CALLBACK midiInputCallback(HMIDIIN hMidiIn, UINT inputStatus, - DWORD instancePtr, DWORD midiMessage, DWORD timestamp); - - -#endif /* VISUAL */ -#endif /* _MIDIINPUT_VISUAL_H_INCLUDED */ - - - -// md5sum: d5aee7a88c4a054b3e2d4d40622fdc42 - MidiInPort_visual.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/MidiInput.h b/extensions/gripd/src/midiio/include/MidiInput.h deleted file mode 100644 index 4425f750596988bbdf7654f3aa2168953d20d743..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/MidiInput.h +++ /dev/null @@ -1,53 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: 18 December 1997 -// Last Modified: Sun Jan 25 15:27:02 GMT-0800 1998 -// Last Modified: Thu Apr 20 16:23:24 PDT 2000 (added scale function) -// Filename: ...sig/code/control/MidiInput/MidiInput.h -// Web Address: http://sig.sapp.org/include/sig/MidiInput.h -// Syntax: C++ -// -// Description: A higher-level MIDI input interface than the -// MidiInPort class. Can be used to allow multiple -// objects to share a single MIDI input stream, or -// to fake a MIDI input connection. -// - -#ifndef _MIDIINPUT_H_INCLUDED -#define _MIDIINPUT_H_INCLUDED - - -#include "MidiInPort.h" - - -class MidiInput : public MidiInPort { - public: - MidiInput (void); - MidiInput (int aPort, int autoOpen = 1); - ~MidiInput (); - - int getBufferSize (void); - int getCount (void); - MidiMessage extract (void); - void insert (const MidiMessage& aMessage); - int isOrphan (void) const; - void makeOrphanBuffer (int aSize = 1024); - void removeOrphanBuffer(void); - void setBufferSize (int aSize); - - int scale (int value, int min, int max); - double fscale (int value, double min, double max); - int scale14 (int value, int min, int max); - double fscale14 (int value, double min, double max); - - protected: - CircularBuffer<MidiMessage>* orphanBuffer; - -}; - - -#endif /* _MIDIINPUT_H_INCLUDED */ - - - -// md5sum: 73972cc29d7bcf0fba136b098c0419a0 - MidiInput.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/MidiMessage.h b/extensions/gripd/src/midiio/include/MidiMessage.h deleted file mode 100644 index e4b59ba1602125641188e101fe8b8aff9e0c1e22..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/MidiMessage.h +++ /dev/null @@ -1,78 +0,0 @@ -// -// Copyright 1997 by Craig Stuart Sapp, All Rights Reserved. -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: 19 December 1997 -// Last Modified: Fri Jan 23 00:21:24 GMT-0800 1998 -// Last Modified: Sun Sep 20 20:30:53 PDT 1998 -// Last Modified: Mon Oct 15 14:29:12 PDT 2001 (added is_note functions) -// Filename: ...sig/include/sigInfo/MidiMessage.h -// Web Address: http://sig.sapp.org/include/sigInfo/MidiMessage.h -// Syntax: C++ -// -// Description: A structure for handling MIDI input messages. -// This class stores a time stamp plus up to -// four MIDI message bytes. System Exclusive messages -// are stored in a separate array in the MidiInPort -// class, and their storage index is passed to the -// user through a MIDI message for later extraction -// of the full sysex message. -// - -#ifndef _MIDIMESSAGE_H_INCLUDED -#define _MIDIMESSAGE_H_INCLUDED - -#include <iostream> - -typedef unsigned char uchar; -typedef unsigned long ulong; - -class MidiMessage { - public: - ulong time; // timestamp - ulong data; // MIDI command and parameters - - MidiMessage (void); - MidiMessage (int aCommand, int aP1, int aP2, - int aTime = 0); - MidiMessage (const MidiMessage& aMessage); - ~MidiMessage (); - - uchar& command (void); - MidiMessage& operator= (const MidiMessage& aMessage); - uchar& operator[] (int index); - uchar& p0 (void); - uchar& p1 (void); - uchar& p2 (void); - uchar& p3 (void); - int getArgCount (void) const; - int getParameterCount (void) const; - - uchar getCommand (void) const; - uchar getP0 (void) const; - uchar getP1 (void) const; - uchar getP2 (void) const; - uchar getP3 (void) const; - - void setCommand (uchar aCommand); - void setData (uchar aCommand, uchar aP1 = 0, - uchar aP2 = 0, uchar aP3 = 0); - void setP0 (uchar aP0); - void setP1 (uchar aP1); - void setP2 (uchar aP2); - void setP3 (uchar aP3); - - int is_note (void); - int is_note_on (void); - int is_note_off (void); - -}; - - -std::ostream& operator<<(std::ostream& out, MidiMessage& aMessage); - - -#endif /* _MIDIMESSAGE_H_INCLUDED */ - - - -// md5sum: 4738e957fb8a233f6dbaeebda490e6a4 - MidiMessage.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/MidiOutPort.h b/extensions/gripd/src/midiio/include/MidiOutPort.h deleted file mode 100644 index 0287dfd869bcdf8d063ff1cd79427acf64aa193e..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/MidiOutPort.h +++ /dev/null @@ -1,92 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Sun Dec 28 15:04:24 GMT-0800 1997 -// Last Modified: Fri Jan 23 10:56:18 GMT-0800 1998 -// Last Modified: Sat Nov 7 16:15:54 PST 1998 -// Last Modified: Tue May 23 23:08:44 PDT 2000 (oss/alsa selection added) -// Last Modified: Mon Jun 19 10:32:11 PDT 2000 (oss/alsa define fix) -// Filename: ...sig/code/control/MidiOutPort/MidiOutPort.h -// Web Address: http://sig.sapp.org/include/sig/MidiOutPort.h -// Syntax: C++ -// -// Description: Operating-System independent interface for -// basic MIDI output capabilities. Privately -// inherits the operating-system specific class -// for MIDI output. -// - -#ifndef _MIDIOUTPORT_H_INCLUDED -#define _MIDIOUTPORT_H_INCLUDED - - -#ifdef VISUAL - #define MIDIOUTPORT MidiOutPort_visual - #include "MidiOutPort_visual.h" -#elif defined(LINUX) && defined(ALSA) && defined(OSS) - #define MIDIOUTPORT MidiOutPort_linux - #include "MidiOutPort_linux.h" -#elif defined(LINUX) && defined(ALSA) && !defined(OSS) - #define MIDIOUTPORT MidiOutPort_alsa - #include "MidiOutPort_alsa.h" -#elif defined (LINUX) && defined(OSS) && !defined(ALSA) - #define MIDIOUTPORT MidiOutPort_oss - #include "MidiOutPort_oss.h" -#elif defined(LINUX) - #define MIDIOUTPORT MidiOutPort_oss - #include "MidiOutPort_oss.h" -#else - #define MIDIOUTPORT MidiOutPort_unsupported - #include "MidiOutPort_unsupported.h" -#endif - - -class MidiOutPort : protected MIDIOUTPORT { - public: - MidiOutPort (void) : MIDIOUTPORT() {} - MidiOutPort (int aPort, int autoOpen = 1) : - MIDIOUTPORT(aPort, autoOpen) {} - ~MidiOutPort() { } - - void close(void) { MIDIOUTPORT::close(); } - void closeAll(void) { MIDIOUTPORT::closeAll(); } - int getChannelOffset(void) const { - return MIDIOUTPORT::getChannelOffset(); } - const char* getName(void) { return MIDIOUTPORT::getName(); } - static const char* getName(int i) { return MIDIOUTPORT::getName(i); } - static int getNumPorts(void) { return MIDIOUTPORT::getNumPorts(); } - int getPort(void) { return MIDIOUTPORT::getPort(); } - int getPortStatus(void) { - return MIDIOUTPORT::getPortStatus(); } - int getTrace(void) { - return MIDIOUTPORT::getTrace(); } - int open(void) { return MIDIOUTPORT::open(); } - int rawsend(int command, int p1, int p2) { - return MIDIOUTPORT::rawsend(command, p1, p2); } - int rawsend(int command, int p1) { - return MIDIOUTPORT::rawsend(command, p1); } - int rawsend(int command) { - return MIDIOUTPORT::rawsend(command); } - int rawsend(uchar* array, int size) { - return MIDIOUTPORT::rawsend(array, size); } - void setAndOpenPort(int aPort) { setPort(aPort); open(); } -// void setChannelOffset(int aChannel) { -// MIDIOUTPORT::setChannelOffset(aChannel); } - void setPort(int aPort) { MIDIOUTPORT::setPort(aPort); } - int setTrace(int aState) { - return MIDIOUTPORT::setTrace(aState); } - int sysex(uchar* array, int size) { - return MIDIOUTPORT::sysex(array, size); } - void toggleTrace(void) { MIDIOUTPORT::toggleTrace(); } - MidiOutPort& operator=(MidiOutPort& other) { - setPort(other.getPort()); - if (other.getPortStatus()) { open(); } - return *this; } -}; - - - - -#endif /* _MIDIOUTPORT_H_INCLUDED */ - - -// md5sum: 2f7b8aa8ef705eab57179b626ce1d62d - MidiOutPort.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/MidiOutPort_alsa.h b/extensions/gripd/src/midiio/include/MidiOutPort_alsa.h deleted file mode 100644 index 34139a3f37f4bf8a1a2f3df635835a868ae43076..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/MidiOutPort_alsa.h +++ /dev/null @@ -1,79 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Wed May 10 16:22:00 PDT 2000 -// Last Modified: Sun May 14 20:43:44 PDT 2000 -// Last Modified: Sat Nov 2 20:39:01 PST 2002 (added ALSA def) -// Filename: ...sig/maint/code/control/MidiOutPort/linux/MidiOutPort_alsa.h -// Web Address: http://sig.sapp.org/include/sig/MidiOutPort_alsa.h -// Syntax: C++ -// -// Description: Operating-System specific interface for -// basic MIDI output capabilities in Linux using -// OSS sound drivers. Privately inherited by the -// MidiOutPort class. -// - -#ifndef _MIDIOUTPORT_ALSA_H_INCLUDED -#define _MIDIOUTPORT_ALSA_H_INCLUDED - -#ifdef LINUX -#ifdef ALSA - -#include "Sequencer_alsa.h" -#include <iostream> - -typedef unsigned char uchar; - - -class MidiOutPort_alsa : public Sequencer_alsa { - public: - MidiOutPort_alsa (void); - MidiOutPort_alsa (int aPort, int autoOpen = 1); - ~MidiOutPort_alsa (); - - void close (void); - void closeAll (void); - int getChannelOffset (void) const; - const char* getName (void); - static const char* getName (int i); - int getPort (void); - static int getNumPorts (void); - int getPortStatus (void); - int getTrace (void); - int rawsend (int command, int p1, int p2); - int rawsend (int command, int p1); - int rawsend (int command); - int rawsend (uchar* array, int size); - int open (void); - void setChannelOffset (int aChannel); - void setPort (int aPort); - int setTrace (int aState); - int sysex (uchar* array, int size); - void toggleTrace (void); - - protected: - int port; // the port to which this object belongs - - static int objectCount; // num of similar objects in existence - static int* portObjectCount; // objects connected to particular port - static int numDevices; // number of output ports - static int* trace; // for printing messages to output - static std::ostream* tracedisplay; // for printing trace messages - - private: - void deinitialize (void); - void initialize (void); - void setPortStatus (int aStatus); - - static int channelOffset; // channel offset, either 0 or 1. - // not being used right now. -}; - - - -#endif /* ALSA */ -#endif /* LINUX */ -#endif /* _MIDIOUTPUT_ALSA_H_INCLUDED */ - - -// md5sum: 5b7648c7b493df7cb0d1fae3bbb8be24 - MidiOutPort_alsa.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/MidiOutPort_linux.h b/extensions/gripd/src/midiio/include/MidiOutPort_linux.h deleted file mode 100644 index a02dc22a5d1500e07a9b26b64f5e82003e290a3d..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/MidiOutPort_linux.h +++ /dev/null @@ -1,80 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Wed May 10 16:03:52 PDT 2000 -// Last Modified: Thu May 18 23:37:17 PDT 2000 -// Last Modified: Sat Nov 2 20:40:01 PST 2002 (added ALSA OSS def) -// Filename: ...sig/code/control/MidiOutPort_linux/MidiOutPort_linux.h -// Web Address: http://sig.sapp.org/include/sig/MidiOutPort_linux.h -// Syntax: C++ -// -// Description: Linux MIDI output class which detects which -// type of MIDI drivers are available: either -// ALSA or OSS. -// - -#ifndef _MIDIOUTPORT_LINUX_H_INCLUDED -#define _MIDIOUTPORT_LINUX_H_INCLUDED - -#ifdef LINUX -#if defined(ALSA) && defined(OSS) - -#include "MidiOutPort_oss.h" -#include "MidiOutPort_alsa.h" -#include "MidiOutPort_unsupported.h" - -#define UNKNOWN_MIDI_SELECT 0 /* use dummy MIDI output */ -#define OSS_MIDI_SELECT 1 /* use OSS MIDI output */ -#define ALSA_MIDI_SELECT 2 /* use ALSA MIDI output */ - -class MidiOutPort_linux { - public: - MidiOutPort_linux (void); - MidiOutPort_linux (int aPort, int autoOpen = 1); - ~MidiOutPort_linux (); - - void close (void); - void closeAll (void); - int getChannelOffset (void) const; - const char* getName (void); - static const char* getName (int i); - static int getNumPorts (void); - int getPort (void); - int getPortStatus (void); - int getTrace (void); - int open (void); - int rawsend (int command, int p1, int p2); - int rawsend (int command, int p1); - int rawsend (int command); - int rawsend (uchar* array, int size); - void setAndOpenPort (int aPort); - void setChannelOffset (int aChannel); - void setPort (int aPort); - int setTrace (int aState); - int sysex (uchar* array, int size); - void toggleTrace (void); - - static int getSelect (void); - static int selectOSS (void); - static int selectALSA (void); - static int selectUnknown (void); - - private: - static int current; // the type of MIDI out selected - static int alsaQ; // boolean for if ALSA is present - static int ossQ; // boolean for if OSS is present - - static int objectCount; - static MidiOutPort_oss *oss_output; - static MidiOutPort_alsa *alsa_output; - static MidiOutPort_unsupported *unknown_output; - - void determineDrivers (void); -}; - -#endif /* ALSA and OSS */ -#endif /* LINUX */ - -#endif /* _MIDIOUTPORT_LINUX_H_INCLUDED */ - - -// md5sum: c80f9f47c45a6d4a20b6549743cae9fb - MidiOutPort_linux.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/MidiOutPort_oss.h b/extensions/gripd/src/midiio/include/MidiOutPort_oss.h deleted file mode 100644 index 22cf32de2337a391c051c03da8132c73ae33981f..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/MidiOutPort_oss.h +++ /dev/null @@ -1,75 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Fri Dec 18 19:15:00 PST 1998 -// Last Modified: Wed May 10 17:00:11 PDT 2000 (name change from _linux to _oss) -// Filename: ...sig/maint/code/control/MidiOutPort/linux/MidiOutPort_oss.h -// Web Address: http://sig.sapp.org/include/sig/MidiOutPort_oss.h -// Syntax: C++ -// -// Description: Operating-System specific interface for -// basic MIDI output capabilities in Linux using -// OSS sound drivers. Privately inherited by the -// MidiOutPort class. -// - -#ifndef _MIDIOUTPORT_OSS_H_INCLUDED -#define _MIDIOUTPORT_OSS_H_INCLUDED - -#ifdef LINUX - -#include "Sequencer_oss.h" - -typedef unsigned char uchar; - - -class MidiOutPort_oss : public Sequencer_oss { - public: - MidiOutPort_oss (void); - MidiOutPort_oss (int aPort, int autoOpen = 1); - ~MidiOutPort_oss (); - - void close (void); - void closeAll (void); - int getChannelOffset (void) const; - const char* getName (void); - static const char* getName (int i); - int getPort (void); - static int getNumPorts (void); - int getPortStatus (void); - int getTrace (void); - int rawsend (int command, int p1, int p2); - int rawsend (int command, int p1); - int rawsend (int command); - int rawsend (uchar* array, int size); - int open (void); - void setChannelOffset (int aChannel); - void setPort (int aPort); - int setTrace (int aState); - int sysex (uchar* array, int size); - void toggleTrace (void); - - protected: - int port; // the port to which this object belongs - - static int objectCount; // num of similar objects in existence - static int* portObjectCount; // objects connected to particular port - static int numDevices; // number of output ports - static int* trace; // for printing messages to output - static std::ostream* tracedisplay; // for printing trace messages - - private: - void deinitialize (void); - void initialize (void); - void setPortStatus (int aStatus); - - static int channelOffset; // channel offset, either 0 or 1. - // not being used right now. -}; - - - -#endif /* LINUX */ -#endif /* _MIDIOUTPUT_OSS_H_INCLUDED */ - - -// md5sum: f60183e23c49741e93d9b965bbe9a6d8 - MidiOutPort_oss.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/MidiOutPort_unsupported.h b/extensions/gripd/src/midiio/include/MidiOutPort_unsupported.h deleted file mode 100644 index a5e8c35d99cc4eea399f7f05bd18f4438a538db2..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/MidiOutPort_unsupported.h +++ /dev/null @@ -1,71 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Mon Jan 12 21:36:26 GMT-0800 1998 -// Last Modified: Mon Jan 12 21:36:31 GMT-0800 1998 -// Filename: ...sig/code/control/MidiOutPort/unsupported/MidiOutPort_unsupported.h -// Web Address: http://www-ccrma.stanford.edu/~craig/improv/include/MidiOutPort_unsupported.h -// Syntax: C++ -// -// Description: Operating-System specific interface for basic MIDI output -// capabilities in an unknown operating system. Privately -// inherited by the MidiOutPort class. Used for compiling -// and running MIDI programs on a computer with no -// MIDI output. -// - -#ifndef _MIDIOUTPUT_UNSUPPORTED_H_INCLUDED -#define _MIDIOUTPUT_UNSUPPORTED_H_INCLUDED - -typedef unsigned char uchar; - -class MidiOutPort_unsupported { - public: - MidiOutPort_unsupported (void); - MidiOutPort_unsupported (int aPort, int autoOpen = 1); - ~MidiOutPort_unsupported (); - - void close (void); - void closeAll (void); - int getChannelOffset (void) const; - const char* getName (void) const; - const char* getName (int i) const; - int getPort (void) const; - int getNumPorts (void) const; - int getPortStatus (void) const; - int getTrace (void) const; - int rawsend (int command, int p1, int p2); - int rawsend (int command, int p1); - int rawsend (int command); - int rawsend (uchar* array, int size); - int open (void); - void setChannelOffset (int aChannel); - void setPort (int aPort); - int setTrace (int aState); - int sysex (uchar* array, int size); - void toggleTrace (void); - - protected: - int port; // the port to which this object belongs - int trace; // for printing out midi messages to standard output - - static int objectCount; // num of similar objects in existence - static int* portObjectCount; // objects connected to particular port - static int* openQ; // for open/close status of port - static int numDevices; // number of output ports - - private: - void deinitialize (void); - void initialize (void); - void setPortStatus (int aStatus); - - static int channelOffset; // channel offset, either 0 or 1 - // not being used right now. -}; - - - -#endif /* _MIDIOUTPUT_UNSUPPORTED_H_INCLUDED */ - - - -// md5sum: e244688a99d220addc7b1c6f6f6a8022 - MidiOutPort_unsupported.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/MidiOutPort_visual.h b/extensions/gripd/src/midiio/include/MidiOutPort_visual.h deleted file mode 100644 index d6a398405044212ab0dd8d8e3ac75faeff00cfd1..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/MidiOutPort_visual.h +++ /dev/null @@ -1,75 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Sun Dec 28 15:18:46 GMT-0800 1997 -// Last Modified: Mon Jan 12 20:05:27 GMT-0800 1998 -// Filename: ...sig/code/control/MidiOutPort/visual/MidiOutPort_visual.h -// Web Address: http://www-ccrma.stanford.edu/~craig/improv/include/MidiOutPort_visual.h -// Syntax: C++ -// -// Description: Operating-System specific interface for -// basic MIDI output capabilities in Windows 95/NT/98 -// using winmm.lib. Privately inherited by the -// MidiOutPort class. -// - -#ifndef _MIDIOUTPUT_VISUAL_H_INCLUDED -#define _MIDIOUTPUT_VISUAL_H_INCLUDED - -#ifdef VISUAL - -typedef unsigned char uchar; - -#include <windows.h> -#include <mmsystem.h> - -class MidiOutPort_visual { - public: - MidiOutPort_visual (void); - MidiOutPort_visual (int aPort, int autoOpen = 1); - ~MidiOutPort_visual (); - - void close (void); - void closeAll (void); - int getChannelOffset (void) const; - const char* getName (void); - static const char* getName (int i); - int getPort (void); - static int getNumPorts (void); - int getPortStatus (void); - int getTrace (void); - int rawsend (int command, int p1, int p2); - int rawsend (int command, int p1); - int rawsend (int command); - int rawsend (uchar* array, int size); - int open (void); - void setChannelOffset (int aChannel); - void setPort (int aPort); - int setTrace (int aState); - int sysex (uchar* array, int size); - void toggleTrace (void); - - protected: - int port; // the port to which this object belongs - int trace; // for printing out Midi messages to standard output - - static int objectCount; // num of similar objects in existence - static int* portObjectCount; // objects connected to particular port - static int* openQ; // for open/close status of port - static int numDevices; // number of output ports - static HMIDIOUT* device; // Windoze midi out device structure - - private: - void deinitialize (void); - void initialize (void); - void setPortStatus (int aStatus); - - static int channelOffset; // channel offset, either 0 or 1. - // not being used right now. -}; - - -#endif /* VISUAL */ -#endif /* _MIDIOUTPUT_VISUAL_H_INCLUDED */ - - -// md5sum: 47799e340effa57676be8a3943cabb70 - MidiOutPort_visual.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/MidiOutput.h b/extensions/gripd/src/midiio/include/MidiOutput.h deleted file mode 100644 index d42481678ba922953eedabbc3d5a1ab48048a116..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/MidiOutput.h +++ /dev/null @@ -1,140 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: 18 December 1997 -// Last Modified: Mon Jan 26 23:53:05 GMT-0800 1998 -// Last Modified: Sat Jan 30 14:00:29 PST 1999 -// Last Modified: Sun Jul 18 18:52:42 PDT 1999 (added RPN functions) -// Filename: ...sig/maint/code/control/MidiOutput/MidiOutput.h -// Web Address: http://www-ccrma.stanford.edu/~craig/improv/include/MidiOutput.h -// Syntax: C++ -// -// Description: The MIDI output interface for MIDI synthesizers/equipment -// which has many convienience functions defined for -// various types of MIDI output. -// - -#ifndef _MIDIOUTPUT_H_INCLUDED -#define _MIDIOUTPUT_H_INCLUDED - -#include "MidiOutPort.h" -#include "FileIO.h" -#include "SigTimer.h" -#include "Array.h" - - -class MidiOutput : public MidiOutPort { - public: - MidiOutput (void); - MidiOutput (int aPort, int autoOpen = 1); - ~MidiOutput (); - - // Basic user MIDI output commands: - int cont (int channel, int controller, int data); - int off (int channel, int keynum, int releaseVelocity); - int pc (int channel, int timbre); - int play (int channel, int keynum, int velocity); - int pw (int channel, int mostByte, int leastByte); - int pw (int channel, int tuningData); - int pw (int channel, double tuningData); - void recordStart (char *filename, int format); - void recordStop (void); - void reset (void); - int send (int command, int p1, int p2); - int send (int command, int p1); - int send (int command); - void silence (int aChannel = -1); - void sustain (int channel, int status); - int sysex (char* data, int length); - int sysex (uchar* data, int length); - - protected: - int outputRecordQ; // boolean for recording - int outputRecordType; // what form to record MIDI data in - int lastFlushTime; // for recording midi data - FileIO outputRecordFile; // file for recording midi data - static SigTimer timer; // for recording midi data - static Array<int>* rpn_lsb_status; // for RPN messages - static Array<int>* rpn_msb_status; // for RPN messages - static int objectCount; // for RPN messages - - void deinitializeRPN (void); - void initializeRPN (void); - void writeOutputAscii (int channel, int p1, int p2); - void writeOutputBinary (int channel, int p1, int p2); - void writeOutputMidifile(int channel, int p1, int p2); - - public: // RPN controller functions - int NRPN (int channel, int nrpn_msb, int nrpn_lsb, - int data_msb, int data_lsb); - int NRPN (int channel, int nrpn_msb, int nrpn_lsb, - int data_msb); - int NRPN (int channel, int nrpn_msb, int nrpn_lsb, - double data); - int NRPN_null (int channel); - int NRPN_attack (int channel, double value); - int NRPN_attack (int channel, int value); - int NRPN_decay (int channel, double value); - int NRPN_decay (int channel, int value); - int NRPN_drumAttack (int drum, double value); - int NRPN_drumAttack (int drum, int value); - int NRPN_drumChorus (int drum, double value); - int NRPN_drumChorus (int drum, int value); - int NRPN_drumDecay (int drum, double value); - int NRPN_drumDecay (int drum, int value); - int NRPN_drumLevel (int drum, double value); - int NRPN_drumLevel (int drum, int value); - int NRPN_drumPan (int drum, double value); - int NRPN_drumPan (int drum, int value); - int NRPN_drumPitch (int drum, double value); - int NRPN_drumPitch (int drum, int value); - int NRPN_drumFilterCutoff (int drum, double value); - int NRPN_drumFilterCutoff (int drum, int value); - int NRPN_drumFilterResonance(int drum, double value); - int NRPN_drumFilterResonance(int drum, int value); - int NRPN_drumReverb (int drum, double value); - int NRPN_drumReverb (int drum, int value); - int NRPN_drumVariation (int drum, double value); - int NRPN_drumVariation (int drum, int value); - int NRPN_filterCutoff (int channel, double value); - int NRPN_filterCutoff (int channel, int value); - int NRPN_release (int channel, double value); - int NRPN_release (int channel, int value); - int NRPN_vibratoDelay (int channel, double value); - int NRPN_vibratoDelay (int channel, int value); - int NRPN_vibratoDepth (int channel, double value); - int NRPN_vibratoDepth (int channel, int value); - int NRPN_vibratoRate (int channel, double value); - int NRPN_vibratoRate (int channel, int value); - - int RPN (int channel, int rpn_msb, int rpn_lsb, - int data_msb, int data_lsb); - int RPN (int channel, int rpn_msb, int rpn_lsb, - int data_msb); - int RPN (int channel, int rpn_msb, int rpn_lsb, - double data); - int RPN_null (void); - int RPN_null (int channel); - int pbRange (int channel, int steps); - int tuneFine (int channel, int cents); - int fineTune (int channel, int cents); - int tuneCoarse (int channel, int steps); - int coarseTune (int channel, int steps); - int tuningProgram (int channel, int program); - int tuningBank (int channel, int bank); - -}; - - -#endif /* _MIDIOUTPUT_H_INCLUDED */ - -// Brief description of MidiOutput public member functions: -// -// send: sends a MIDI command to the MIDI output with up to two parameters -// play: sends a playnote command to the MIDI output -// pc: Patch Change. changes the timbre (instrument) on the given channel -// cont: sends a CONTinuous CONTroller MIDI command -// sysex: sends a system exclusive command to the MIDI output -// - - -// md5sum: 12ee02c32563ae219aaa8c7599de55db - MidiOutput.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/MidiPort.h b/extensions/gripd/src/midiio/include/MidiPort.h deleted file mode 100644 index 834877ed8497de917e172ce2bb882d914491259a..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/MidiPort.h +++ /dev/null @@ -1,49 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: 21 December 1997 -// Last Modified: Fri Jan 23 10:21:25 GMT-0800 1998 -// Filename: .../sig/code/control/MidiPort/MidiPort.h -// Web Address: http://www-ccrma.stanford.edu/~craig/improv/include/MidiPort.h -// Syntax: C++ -// -// Description: A unified object that handles basic MIDI input and output. -// Derived from the MidiInPort and MidiOutPort classes. -// - -#ifndef _MIDIPORT_H_INCLUDED -#define _MIDIPORT_H_INCLUDED - - -#include "MidiInPort.h" -#include "MidiOutPort.h" - - -class MidiPort : public MidiOutPort, public MidiInPort { - public: - MidiPort (void); - MidiPort (int outputPort, int inputPort); - ~MidiPort (); - - int getChannelInOffset (void) const; - int getChannelOutOffset (void) const; - int getInputPort (void); - int getInputTrace (void); - int getOutputPort (void); - int getOutputTrace (void); - void setChannelOffset (int anOffset); - void setInputPort (int aPort); - int setInputTrace (int aState); - void setOutputPort (int aPort); - int setOutputTrace (int aState); - void toggleInputTrace (void); - void toggleOutputTrace (void); - -}; - - - -#endif /* _MIDIPORT_H_INCLUDED */ - - - -// md5sum: 84d8155528b06c9aa902e8f06649385f - MidiPort.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/Options.h b/extensions/gripd/src/midiio/include/Options.h deleted file mode 100644 index 71754fb48a0b1915ba5405de7fad39db412e6754..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/Options.h +++ /dev/null @@ -1,106 +0,0 @@ -// -// Copyright 1998-2000 by Craig Stuart Sapp, All Rights Reserved. -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Sun Apr 5 13:07:18 PDT 1998 -// Last Modified: Fri Jan 15 07:24:00 PST 1999 -// Last Modified: Sat Mar 27 18:17:59 PST 1999 -// Last Modified: Thu Apr 13 14:02:52 PDT 2000 (added 2nd define function) -// Last Modified: Fri May 5 17:57:50 PDT 2000 (added --options suppression) -// Filename: ...sig/maint/code/base/Options/Options.h -// Web Address: http://sig.sapp.org/include/sigBase/Options.h -// Documentation: http://sig.sapp.org/doc/classes/Options -// Syntax: C++ -// -// Description: Handles command-line options in a graceful manner. -// - -#ifndef _OPTIONS_H_INCLUDED -#define _OPTIONS_H_INCLUDED - -#include "Array.h" - -class option_list; -class option_register; - - -class Options { - public: - Options (void); - Options (int argc, char** argv); - ~Options (); - - int argc (void) const; - char** argv (void) const; - void define (const char* aDefinition); - void define (const char* aDefinition, - const char* description); - char* getArg (int index); - char* getArgument (int index); - int getArgCount (void); - int getArgumentCount (void); - int getBoolean (const char* optionName); - const char* getCommand (void); - const char* getCommandLine (void); - const char* getString (void); - const char* getDefinition (const char* optionName); - double getDouble (const char* optionName); - char getFlag (void); - float getFloat (const char* optionName); - int getInt (const char* optionName); - int getInteger (const char* optionName); - const char* getString (const char* optionName); - char getType (const char* optionName); - int optionsArg (void); - void print (void); - void process (int error_check = 1, int suppress = 0); - void process (int argc, char** argv, - int error_check = 1, - int suppress = 0); - void reset (void); - void verify (int argc, char** argv, - int error_check = 1, - int suppress = 0); - void verify (int error_check = 1, - int suppress = 0); - void setFlag (char aFlag); - void setModified (const char* optionName, - const char* optionValue); - void setOptions (int argc, char** argv); - - protected: - int options_error_check; // for verify command - int gargc; - char** gargv; - char* commandString; - char optionFlag; - Array<char*> argument; - Array<option_register*> optionRegister; - Array<option_list*> optionList; - int processedQ; - int sortedQ; - int suppressQ; // prevent the --options option - int optionsArgument; // indicates --options present - - int getRegIndex (const char* optionName); - int optionQ (const char* aString, int& argp); - void sortOptionNames (void); - int storeOption (int gargp, int& position, - int& running); - -}; - -#define OPTION_BOOLEAN_TYPE 'b' -#define OPTION_CHAR_TYPE 'c' -#define OPTION_DOUBLE_TYPE 'd' -#define OPTION_FLOAT_TYPE 'f' -#define OPTION_INT_TYPE 'i' -#define OPTION_STRING_TYPE 's' -#define OPTION_UNKNOWN_TYPE 'x' - - - -#endif /* _OPTIONS_H_INCLUDED */ - - - -// md5sum: c59d297a8081cb48f61b534484819f48 - Options.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/Options_private.h b/extensions/gripd/src/midiio/include/Options_private.h deleted file mode 100644 index 8349d5549a8f77ebea3c5450043a91fe264344d6..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/Options_private.h +++ /dev/null @@ -1,73 +0,0 @@ -// -// Copyright 1998-1999 by Craig Stuart Sapp, All Rights Reserved. -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Sun Apr 5 13:07:18 PDT 1998 -// Last Modified: Sun Jan 10 05:44:48 PST 1999 -// Filename: ...sig/maint/code/base/Options/Options_private.h -// Web Address: http://sig.sapp.org/include/sigBase/Options_private.h -// Syntax: C++ -// -// Description: A private function for use in the Options class. -// - -#ifndef _OPTIONS_PRIVATE_H_INCLUDED -#define _OPTIONS_PRIVATE_H_INCLUDED - - -class option_register { - public: - option_register (void); - option_register (const char* aDefinition, char aType, - const char* aDefaultOption, - const char* aModifiedOption); - ~option_register (); - void clearModified (void); - const char* getDefinition (void); - const char* getDefault (void); - const char* getOption (void); - const char* getModified (void); - int getModifiedQ (void); - char getType (void); - void reset (void); - void setDefault (const char* aString); - void setDefinition (const char* aString); - void setModified (const char* aString); - void setType (char aType); - - protected: - char* definition; - char* defaultOption; - char* modifiedOption; - char type; - -}; - - -///////////////////////////////////////////////////////////////////////////// -///////////////////////////////////////////////////////////////////////////// - - -class option_list { - public: - option_list (void); - option_list (const char* optionName, int anIndex); - ~option_list (); - - int getIndex (void); - const char* getName (void); - void setName (const char* aString); - void setIndex (int anIndex); - - protected: - char* name; - int index; - -}; - - - -#endif /* _OPTIONS_PRIVATE_H_INCLUDED */ - - - -// md5sum: b440ad2158e9921d0e31463a8c3e1ae0 - Options_private.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/Sequencer_alsa.h b/extensions/gripd/src/midiio/include/Sequencer_alsa.h deleted file mode 100644 index 4ac213684498b2ede61b1cef0b17773031fc17bc..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/Sequencer_alsa.h +++ /dev/null @@ -1,139 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Thu May 11 21:06:21 PDT 2000 -// Last Modified: Sat Oct 13 14:50:04 PDT 2001 (updated for ALSA 0.9 interface) -// Filename: ...sig/maint/code/control/MidiOutPort/Sequencer_alsa.h -// Web Address: http://sig.sapp.org/include/sig/Sequencer_alsa.h -// Syntax: C++ -// -// Description: Basic MIDI input/output functionality for the -// Linux ALSA midi device /dev/snd/midiXX. This class -// is inherited by the classes MidiInPort_alsa and -// MidiOutPort_alsa. -// -// to get information of status a alsa hardware & software -// cat /proc/asound/version -// cat /proc/asound/devices -// cat /proc/asound/card0/midi0 -// - -#ifndef _SEQUENCER_ALSA_H_INCLUDED -#define _SEQUENCER_ALSA_H_INCLUDED - -#include <iostream> - -#ifdef ALSA - -#include <alsa/asoundlib.h> -#include "Collection.h" - -#define MIDI_EXTERNAL (1) -#define MIDI_INTERNAL (2) - -typedef unsigned char uchar; - - -class Sequencer_alsa { - public: - Sequencer_alsa (int autoOpen = 1); - ~Sequencer_alsa (); - - void close (void); - void closeInput (int index); - void closeOutput (int index); - void displayInputs (std::ostream& out = std::cout, - char* initial = "\t"); - void displayOutputs (std::ostream& out = std::cout, - char* initial = "\t"); - static const char* getInputName (int aDevice); - static const char* getOutputName (int aDevice); - static int getNumInputs (void); - static int getNumOutputs (void); - int is_open (int mode, int index); - int is_open_in (int index); - int is_open_out (int index); - int open (int direction, int index); - int openInput (int index); - int openOutput (int index); - void read (int dev, uchar* buf, int count); - void rebuildInfoDatabase (void); - int write (int aDevice, int aByte); - int write (int aDevice, uchar* bytes, int count); - int write (int aDevice, char* bytes, int count); - int write (int aDevice, int* bytes, int count); - - int getInCardValue (int aDevice) const; - int getOutCardValue (int aDevice) const; - protected: - static int class_count; // number of existing classes using - static int indevcount; // number of MIDI input devices - static int outdevcount; // number of MIDI output devices - static int initialized; // for starting buileinfodatabase - - static Collection<snd_rawmidi_t*> rawmidi_in; - static Collection<snd_rawmidi_t*> rawmidi_out; - static Collection<int> midiincard; - static Collection<int> midioutcard; - static Collection<int> midiindevice; - static Collection<int> midioutdevice; - static Collection<char*> midiinname; - static Collection<char*> midioutname; - - private: - static void buildInfoDatabase (void); - static void getPossibleMidiStreams(Collection<int>& cards, - Collection<int>& devices); - int getInDeviceValue (int aDevice) const; - int getInputType (int aDevice) const; - int getOutDeviceValue (int aDevice) const; - int getOutputType (int aDevice) const; - void removeInfoDatabase (void); - - - friend void *interpretMidiInputStreamPrivateALSA(void * x); - -}; - -#else /* ALSA is not defined */ - -typedef unsigned char uchar; - -class Sequencer_alsa { - public: - Sequencer_alsa (int autoOpen = 1) { } - ~Sequencer_alsa () { } - - void close (void) { }; - void displayInputs (std::ostream& out = std::cout, - char* initial = "\t") - { out << initial << "NONE\n"; } - void displayOutputs (std::ostream& out = std::cout, - char* initial = "\t") - { out << initial << "NONE\n"; } - static const char* getInputName (int aDevice) { return ""; } - static const char* getOutputName (int aDevice) { return ""; } - static int getNumInputs (void) { return 0; } - static int getNumOutputs (void) { return 0; } - int is_open (int mode, int index) { return 0; } - int is_open_in (int index) { return 0; } - int is_open_out (int index) { return 0; } - int open (void) { return 0; } - void read (int dev, uchar* buf, int count) { } - void rebuildInfoDatabase (void) { } - int write (int aDevice, int aByte) { return 0; } - int write (int aDevice, uchar* bytes, int count) { return 0; } - int write (int aDevice, char* bytes, int count) { return 0; } - int write (int aDevice, int* bytes, int count) { return 0; } - int getInCardValue (int aDevice) const { return 0; } - int getOutCardValue (int aDevice) const { return 0; } - -}; - - -#endif /* ALSA */ - - -#endif /* _SEQUENCER_ALSA_H_INCLUDED */ - - -// md5sum: 6147020b0646fca8245f653505308949 - Sequencer_alsa.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/Sequencer_oss.h b/extensions/gripd/src/midiio/include/Sequencer_oss.h deleted file mode 100644 index 5f269a7f9f1cb46cefd3dbb682bb9a5955d1cbe7..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/Sequencer_oss.h +++ /dev/null @@ -1,92 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Sun Jan 3 21:02:02 PST 1999 -// Last Modified: Sat Jan 30 14:11:18 PST 1999 -// Last Modified: Wed May 10 17:00:11 PDT 2000 (name change from _oss to _oss) -// Filename: ...sig/maint/code/control/MidiOutPort/Sequencer_oss.h -// Web Address: http://sig.sapp.org/include/sig/Sequencer_oss.h -// Syntax: C++ -// -// Description: Basic MIDI input/output functionality for the -// Linux OSS midi device /dev/sequencer. This class -// is inherited by the classes MidiInPort_oss and -// MidiOutPort_oss. -// - -#ifndef _SEQUENCER_OSS_H_INCLUDED -#define _SEQUENCER_OSS_H_INCLUDED - -#include <iostream> - -#define MIDI_EXTERNAL (1) -#define MIDI_INTERNAL (2) - -typedef unsigned char uchar; - - -class Sequencer_oss { - public: - Sequencer_oss (int autoOpen = 1); - ~Sequencer_oss (); - - void close (void); - void displayInputs (std::ostream& out = std::cout, - char* initial = "\t"); - void displayOutputs (std::ostream& out = std::cout, - char* initial = "\t"); - static int getNumInputs (void); - static int getNumOutputs (void); - static const char* getInputName (int aDevice); - static const char* getOutputName (int aDevice); - int is_open (void); - int open (void); - void read (uchar* buf, uchar* dev, int count); - void rawread (uchar* buf, int packetCount); - void rebuildInfoDatabase (void); - int write (int aDevice, int aByte); - int write (int aDevice, uchar* bytes, int count); - int write (int aDevice, char* bytes, int count); - int write (int aDevice, int* bytes, int count); - - protected: - static const char* sequencer; // name of sequencer device - static int sequencer_fd; // sequencer file descriptor - static int class_count; // number of existing classes using - static uchar midi_write_packet[4]; // for writing MIDI bytes out - static uchar midi_read_packet[4]; // for reading MIDI bytes out - static uchar synth_write_message[8]; // for writing to internal seq - static int indevcount; // number of MIDI input devices - static int outdevcount; // number of MIDI output devices - static char** indevnames; // MIDI input device names - static char** outdevnames; // MIDI output device names - static int* indevnum; // total number of MIDI inputs - static int* outdevnum; // total number of MIDI outputs - static int* indevtype; // 1 = External, 2 = Internal - static int* outdevtype; // 1 = External, 2 = Internal - static uchar synth_message_buffer[1024]; // hold bytes for synth dev - static int synth_message_buffer_count; // count of synth buffer - static int synth_message_bytes_expected; // expected count of synth - static int synth_message_curr_device; // for keeping track of dev - static int initialized; // for starting buileinfodatabase - - private: - static void buildInfoDatabase (void); - static int getFd (void); - int getInDeviceValue (int aDevice) const; - int getInputType (int aDevice) const; - int getOutDeviceValue (int aDevice) const; - int getOutputType (int aDevice) const; - void removeInfoDatabase (void); - void setFd (int anFd); - - int writeInternal(int aDevice, int aByte); - int transmitMessageToInternalSynth(void); - int transmitVoiceMessage(void); - int transmitCommonMessage(void); -}; - - -#endif /* _SEQUENCER_OSS_H_INCLUDED */ - - -// md5sum: 1df08cd946c609b9b42aadbc96b7a296 - Sequencer_oss.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/SigTimer.h b/extensions/gripd/src/midiio/include/SigTimer.h deleted file mode 100644 index e93345c0f769f26c548126e353e0a484c837a858..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/SigTimer.h +++ /dev/null @@ -1,104 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Thanks to: Erik Neuenschwander <erikn@leland.stanford.edu> -// for Windows 95 assembly code for Pentium clock cycles. -// Ozgur Izmirli <ozgur@ccrma.stanford.edu> -// for concept of periodic timer. -// Creation Date: Mon Oct 13 11:34:57 GMT-0800 1997 -// Last Modified: Tue Feb 10 21:05:19 GMT-0800 1998 -// Last Modified: Sat Sep 19 15:56:48 PDT 1998 -// Last Modified: Mon Feb 22 04:44:25 PST 1999 -// Last Modified: Sun Nov 28 12:39:39 PST 1999 (added adjustPeriod()) -// Filename: .../sig/code/control/SigTimer/SigTimer.h -// Web Address: http://www-ccrma.stanford.edu/~craig/improv/include/SigTimer.h -// Syntax: C++ -// -// Description: This class can only be used on Motorola Pentinum 75 Mhz -// chips or better because the timing information is -// extracted from the clock cycle count from a register -// on the CPU itself. This class will estimate the -// speed of the computer, but it would be better if there -// was a way of finding out the speed from some function. -// This class is used primarily for timing of MIDI input -// and output at a millisecond resolution. -// -// Interesting: http://www.datasilicon.nl/I786/timer_1.htm -// - -#ifndef _SIGTIMER_H_INCLUDED -#define _SIGTIMER_H_INCLUDED - - -#ifdef VISUAL - #include <wtypes.h> - typedef LONGLONG int64bits; -#else - typedef long long int int64bits; - #include <unistd.h> /* for millisleep function */ -#endif - - -class SigTimer { - public: - SigTimer (void); - SigTimer (int aSpeed); - SigTimer (SigTimer& aTimer); - ~SigTimer (); - - void adjustPeriod (double periodDelta); - int expired (void) const; - double getPeriod (void) const; - double getPeriodCount (void) const; - double getTempo (void) const; - int getTicksPerSecond (void) const; - int getTime (void) const; - double getTimeInSeconds (void) const; - int getTimeInTicks (void) const; - void reset (void); - void setPeriod (double aPeriod); - void setTempo (double beatsPerMinute); - void setPeriodCount (double aCount); - void setTicksPerSecond (int aTickRate); - void start (void); - void sync (SigTimer& aTimer); - void update (void); - void update (int periodCount); - - // The following functions are semi-private. They do not have - // anything to do with timing themselves, but are a by-product - // of the timer implementation. They are useful, so they have - // been left public; however, they should be used judiciously. - static int getCpuSpeed (void); - static int measureCpuSpeed (int quantize = 0); - static void setCpuSpeed (int aSpeed); - - // the following function is hardware specific to Intel Pentium - // computers with a processor speed of at least 75 MHz. - // This function is the only non-portable function in this - // class, but everything else is based on it. - static int64bits clockCycles (void); - - protected: - static int64bits globalOffset; - static int cpuSpeed; - - int64bits offset; - int ticksPerSecond; - double period; - - // protected functions - double getFactor (void) const; - -}; - - -// The following function is mostly for Linux: -void millisleep(int milliseconds); -void millisleep(float milliseconds); - - -#endif /* _SIGTIMER_H_INCLUDED */ - - - -// md5sum: 601fa3caae4e3bacc4e6fb87f545c86b - SigTimer.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/Voice.h b/extensions/gripd/src/midiio/include/Voice.h deleted file mode 100644 index 3cddf9f3fc2b1be1e9748b566f16869b77c4553e..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/Voice.h +++ /dev/null @@ -1,70 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Sun Oct 11 18:21:46 PDT 1998 -// Last Modified: Sun Oct 11 18:33:04 PDT 1998 -// Filename: ...sig/maint/code/control/Voice/Voice.h -// Web Address: http://www-ccrma.stanford.edu/~craig/improv/include/Voice.h -// Syntax: C++ -// -// Description: The Voice class is a MIDI output class which keeps -// track of the last note played in to it. If the last -// note was not turned off when a new note is played, -// then the old note will be turned off before the -// new note is played. -// - -#ifndef _VOICE_H_INCLUDED -#define _VOICE_H_INCLUDED - -#include "MidiOutput.h" - -class Voice : public MidiOutput { - public: - Voice (int aChannel); - Voice (const Voice& aVoice); - Voice (void); - ~Voice (); - - void cont (int controler, int data); - int getChan (void) const; - int getChannel (void) const; - int getKey (void) const; - int getKeynum (void) const; - int getOffTime (void) const; - int getOnTime (void) const; - int getVel (void) const; - int getVelocity (void) const; - void off (void); - void pc (int aTimbre); - void play (int aChannel, int aKeyno, int aVelocity); - void play (int aKeyno, int aVelocity); - void play (void); - void setChan (int aChannel); - void setChannel (int aChannel); - void setKey (int aKeyno); - void setKeynum (int aKeyno); - void setVel (int aVelocity); - void setVelocity (int aVelocity); - int status (void) const; - void sustain (int aStatus); - - protected: - int chan; // the current channel number - int key; // the current key number - int vel; // the current velocity value - - int onTime; // last note on message sent - int offTime; // last note off message sent - - int oldChan; // last channel played on - int oldKey; // last key to be played - int oldVel; // last velocity of last key - - static SigTimer timer; // for recording on/off times -}; - - -#endif /* _VOICE_H_INCLUDED */ - - -// md5sum: 8a5495ecc10d42be6b1832492e107723 - Voice.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/gminstruments.h b/extensions/gripd/src/midiio/include/gminstruments.h deleted file mode 100644 index 0e567da299de914698a89f44a1b19a261a23e2b3..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/gminstruments.h +++ /dev/null @@ -1,251 +0,0 @@ -// -// Copyright 1997-2000 by Craig Stuart Sapp, All Rights Reserved. -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> (from 18Dec1997) -// Creation Date: 26 December 1997 -// Last Modified: Tue Apr 18 11:38:28 PDT 2000 (put CH_X defines here) -// Filename: ...sig/include/sigInfo/gminstruments.h -// Web Address: http://sig.sapp.org/include/sigInfo/gminstruments.h -// Syntax: C -// -// Description: Defines names for instruments as arranged in General MIDI. -// - -#ifndef _GMINSTRUMENTS_H_INCLUDED -#define _GMINSTRUMENTS_H_INCLUDED - -#define CH_1 0 -#define CH_2 1 -#define CH_3 2 -#define CH_4 3 -#define CH_5 4 -#define CH_6 5 -#define CH_7 6 -#define CH_8 7 -#define CH_9 8 -#define CH_10 9 -#define CH_11 10 -#define CH_12 11 -#define CH_13 12 -#define CH_14 13 -#define CH_15 14 -#define CH_16 15 - -#define GM_PIANO(X) (0+(X)) -#define GM_ACOUSTIC_GRAND_PIANO (0) -#define GM_BRIGHT_ACOUSTIC_PIANO (1) -#define GM_ELECTRIC_GRAND_PIANO (1) -#define GM_HONKYTONK_PIANO (2) -#define GM_HONKY_TONK_PIANO (3) -#define GM_ELECTRIC_PIANO_1 (4) -#define GM_ELECTRIC_PIANO_2 (5) -#define GM_HARPSICHORD (6) -#define GM_CLAVI (7) - -#define GM_CHROMATIC(X) (8+(X)) -#define GM_CELESTA (8) -#define GM_GLOCKENSPIEL (9) -#define GM_MUSIC_BOX (10) -#define GM_VIBRAPHONE (11) -#define GM_MARIMBA (12) -#define GM_XYLOPHONE (13) -#define GM_TUBULAR_BELLS (14) -#define GM_DULCIMER (15) - -#define GM_ORGAN(X) (16+(X)) -#define GM_DRAWBAR_ORGAN (16) -#define GM_PERCUSSIVE_ORGAN (17) -#define GM_ROCK_ORGAN (18) -#define GM_CHURCH_ORGAN (19) -#define GM_REED_ORGAN (20) -#define GM_ACCORDION (21) -#define GM_HARMONICA (22) -#define GM_TANGO_ACCORDION (23) - -#define GM_GUITAR(X) (24+(X)) -#define GM_ACOUSTIC_GUITAR_NYLON (24) -#define GM_ACOUSTIC_GUITAR_STEEL (25) -#define GM_ELECTRIC_GUITAR_JAZZ (26) -#define GM_ELECTRIC_GUITAR_CLEAN (27) -#define GM_ELECTRIC_GUITAR_MUTED (28) -#define GM_OVERDRIVEN_GUITAR (29) -#define GM_DISTORTION_GUITAR (30) -#define GM_GUITAR_HARMONICS (31) - -#define GM_BASS(X) (32+(X)) -#define GM_ACOUSTIC_BASS (32) -#define GM_ELECTRIC_BASS_FINGER (33) -#define GM_ELECTRIC_BASS_PICK (34) -#define GM_FRETLESS_BASS (35) -#define GM_SLAP_BASS_1 (36) -#define GM_SLAP_BASS_2 (37) -#define GM_SYNTH_BASS_1 (38) -#define GM_SYNTH_BASS_2 (39) - -#define GM_STRINGS(X) (40+(X)) -#define GM_VIOLIN (40) -#define GM_VIOLA (41) -#define GM_CELLO (42) -#define GM_CONTRABASS (43) -#define GM_TREMOLO_STRINGS (44) -#define GM_PIZZACATO_STRINGS (45) -#define GM_ORCHESTRAL_HARP (46) -#define GM_TIMPANI (47) - -#define GM_ENSEMBLE(X) (48+(X)) -#define GM_STRING_ENSEMBLE_1 (48) -#define GM_STRING_ENSEMBLE_2 (49) -#define GM_SYNTHSTRINGS_1 (50) -#define GM_SYNTHSTRINGS_2 (51) -#define GM_CHOIR_AAHS (52) -#define GM_VOICE_OOHS (53) -#define GM_SYNTH_VOICE (54) -#define GM_ORCHESTRA_HIT (55) - -#define GM_BRASS(X) (56+(X)) -#define GM_TRUMPET (56) -#define GM_TROMBONE (57) -#define GM_TUBA (58) -#define GM_MUTED_TRUMPED (59) -#define GM_FRENCH_HORN (60) -#define GM_BRASS_SECTION (61) -#define GM_SYNTHBRASS_1 (62) -#define GM_SYNTHBRASS_2 (63) - -#define GM_REED(X) (64+(X)) -#define GM_SOPRANO_SAX (64) -#define GM_ALTO_SAX (65) -#define GM_TENOR_SAX (66) -#define GM_BARITONE_SAX (67) -#define GM_OBOE (68) -#define GM_ENGLISH_HORN (69) -#define GM_BASSOON (70) -#define GM_CLARINET (71) - -#define GM_PIPE(X) (72+(X)) -#define GM_PICCOLO (72) -#define GM_FLUTE (73) -#define GM_RECORDER (74) -#define GM_PAN_FLUTE (75) -#define GM_BLOWN_BOTTLE (76) -#define GM_SHAKUHACHI (77) -#define GM_WHISTLE (78) -#define GM_OCARINA (79) - -#define GM_LEAD(X) (80+(X)) -#define GM_LEAD_SQUARE (80) -#define GM_LEAD_SAWTOOTH (81) -#define GM_LEAD_CALLIOPE (82) -#define GM_LEAD_CHIFF (83) -#define GM_LEAD_CHARANG (84) -#define GM_LEAD_VOICE (85) -#define GM_LEAD_FIFTHS (86) -#define GM_LEAD_BASS (87) - -#define GM_PAD(X) (88+(X)) -#define GM_PAD_NEW_AGE (88) -#define GM_PAD_WARM (89) -#define GM_PAD_POLYSYNTH (90) -#define GM_PAD_CHOIR (91) -#define GM_PAD_BOWED (92) -#define GM_PAD_METALLIC (93) -#define GM_PAD_HALO (94) -#define GM_PAD_SWEEP (95) - -#define GM_FX(X) (96+(X)) -#define GM_FX_TRAIN (96) -#define GM_FX_SOUNDTRACK (97) -#define GM_FX_CRYSTAL (98) -#define GM_FX_ATMOSPHERE (99) -#define GM_FX_BRIGHTNESS (100) -#define GM_FX_GOBLINS (101) -#define GM_FX_ECHOES (102) -#define GM_FX_SCI_FI (103) - -#define GM_ETHNIC(X) (104+(X)) -#define GM_SITAR (104) -#define GM_BANJO (105) -#define GM_SHAMISEN (106) -#define GM_KOTO (107) -#define GM_KALIMBA (108) -#define GM_BAGPIPE (109) -#define GM_FIDDLE (110) -#define GM_SHANAI (111) - -#define GM_PERCUSSION(X) (112+(X)) -#define GM_TINKLE_BELL (112) -#define GM_AGOGO (113) -#define GM_STEEL_DRUMS (114) -#define GM_WOODBLOCKS (115) -#define GM_TAIKO_DRUM (116) -#define GM_MELODIC_DRUM (117) -#define GM_SYNTH_DRUM (118) -#define GM_REVERSE_CYMBAL (119) - -#define GM_SOUNDEFFECT(X) (120+(X)) -#define GM_GUITAR_FRET_NOISE (120) -#define GM_BREATH_NOISE (121) -#define GM_SEASHORE (122) -#define GM_BIRD_TWEET (123) -#define GM_TELEPHONE_RING (124) -#define GM_HELICOPTER (125) -#define GM_APPLAUSE (126) -#define GM_GUNSHOT (127) - -// -// Percussion instruments on channel 10 -// - -#define GM_ACOUSTIC_BASS_DRUM (35) -#define GM_BASS_DRUM_1 (36) -#define GM_SIDE_STICK (37) -#define GM_ACOUSTIC_SNARE (38) -#define GM_HAND_CLAP (39) -#define GM_ELECTRIC_SNARE (40) -#define GM_LOW_FLOOR_TOM (41) -#define GM_CLOSED_HI_HAT (42) -#define GM_HIGH_FLOOR_TOM (43) -#define GM_PEDAL_HI_HAT (44) -#define GM_LOW_TOM (45) -#define GM_OPEN_HI_HAT (46) -#define GM_LOW_MID_TOM (47) -#define GM_HIGH_MID_TOM (48) -#define GM_CRASH_CYMBAL_1 (49) -#define GM_HIGH_TOM (50) -#define GM_RIDE_CYMBAL_1 (51) -#define GM_CHINESE_CYMBAL (52) -#define GM_RIDE_BELL (53) -#define GM_TAMBOURINE (54) -#define GM_SPLASH_CYMBAL (55) -#define GM_COWBELL (56) -#define GM_CRASH_CYMBAL_2 (57) -#define GM_VIBRASLAP (58) -#define GM_RIDE_CYMBAL_2 (59) -#define GM_HI_BONGO (60) -#define GM_LOW_BONGO (61) -#define GM_MUTE_HI_CONGA (62) -#define GM_OPEN_HI_CONGA (63) -#define GM_LOW_CONGA (64) -#define GM_HIGH_TIMBALE (65) -#define GM_LOW_TIMBALE (66) -#define GM_HIGH_AGOGO (67) -#define GM_LOW_AGOGO (68) -#define GM_CABASA (69) -#define GM_MARACAS (70) -#define GM_SHORT_WHISTLE (71) -#define GM_LONG_WHISTLE (72) -#define GM_SHORT_GUIRO (73) -#define GM_LONG_GUIRO (74) -#define GM_CLAVES (75) -#define GM_HI_WOOD_BLOCK (76) -#define GM_LOW_WOOD_BLOCK (77) -#define GM_MUTE_CUICA (78) -#define GM_OPEN_CUICA (79) -#define GM_MUTE_TRIANGLE (80) -#define GM_OPEN_TRIANGLE (81) - - -#endif /* _GMINSTRUMENTS_H_INCLUDED */ - - - -// md5sum: 6299d04892a6899533b9164aa9e1a874 - gminstruments.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/midichannels.h b/extensions/gripd/src/midiio/include/midichannels.h deleted file mode 100644 index 45268133544142001be8531ccfe4443fc74760c3..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/midichannels.h +++ /dev/null @@ -1,42 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: 21 December 1997 -// Last Modified: Wed Feb 11 22:49:59 GMT-0800 1998 -// Filename: ...sig/code/control/misc/midichannels.h -// Web Address: http://www-ccrma.stanford.edu/~craig/improv/include/midichannels.h -// Syntax: C++ -// -// Description: Offset by 1 MIDI channel names. -// - -#ifndef _MIDICHANNELS_H_INCLUDED -#define _MIDICHANNELS_H_INCLUDED - -/* temporarily changed : - -// channel defines: offset from 0 -#define CH_1 (0x00) -#define CH_2 (0x01) -#define CH_3 (0x02) -#define CH_4 (0x03) -#define CH_5 (0x04) -#define CH_6 (0x05) -#define CH_7 (0x06) -#define CH_8 (0x07) -#define CH_9 (0x08) -#define CH_10 (0x09) -#define CH_11 (0x0a) -#define CH_12 (0x0b) -#define CH_13 (0x0c) -#define CH_14 (0x0d) -#define CH_15 (0x0e) -#define CH_16 (0x0f) - -*/ - -#endif /* _MIDICHANNELS_H_INCLUDED */ - - - - -// md5sum: 5267399f7ff90a6ea3ad2dc132afae3e - midichannels.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/mididefines.h b/extensions/gripd/src/midiio/include/mididefines.h deleted file mode 100644 index 4161c2fe4c5ac70a3034548464735120ad19dd3c..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/mididefines.h +++ /dev/null @@ -1,34 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: 21 December 1997 -// Last Modified: Wed Feb 11 22:49:59 GMT-0800 1998 -// Filename: ...sig/code/control/misc/mididefines.h -// Web Address: http://www-ccrma.stanford.edu/~craig/improv/include/mididefines.h -// Syntax: C++ -// -// Description: Collection of all of the MIDI convienience defines. -// - -#ifndef _MIDIDEFINES_H_INCLUDED -#define _MIDIDEFINES_H_INCLUDED - - -// include channel defines -#include "midichannels.h" - - -// include note name defines -#include "notenames.h" - - -// include General MIDI instrument names -#include "gminstruments.h" - - - -#endif /* _MIDIDEFINES_H_INCLUDED */ - - - - -// md5sum: 0f081c8e0b386a11e448b6088bfcd489 - mididefines.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/midiiolib.h b/extensions/gripd/src/midiio/include/midiiolib.h deleted file mode 100644 index 17d0430937ca5359a634a40f770f6f4f3e032ba6..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/midiiolib.h +++ /dev/null @@ -1,57 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Sat Nov 2 20:20:24 PST 2002 -// Last Modified: Thu Jan 2 18:51:20 PST 2003 (changed name from midio.h) -// Filename: ...sig/code/misc/midiiolib.h -// Web Address: http://sig.sapp.org/include/sig/midiiolib.h -// Syntax: C++ -// -// Description: Includes all of the header files for using the midiio -// Library. -// - -#ifndef _MIDIIOLIB_H_INCLUDED -#define _MIDIIOLIB_H_INCLUDED - -#include "Array.h" -#include "CircularBuffer.h" -#include "Collection.h" -#include "FileIO.h" -#include "gminstruments.h" -#include "midichannels.h" -#include "mididefines.h" -#include "MidiFile.h" -#include "MidiFileWrite.h" -#include "MidiInPort_alsa05.h" -#include "MidiInPort_alsa.h" -#include "MidiInPort.h" -#include "MidiInPort_linux.h" -#include "MidiInPort_oss.h" -#include "MidiInPort_unsupported.h" -#include "MidiInPort_visual.h" -#include "MidiInput.h" -#include "MidiIO.h" -#include "MidiMessage.h" -#include "MidiOutPort_alsa.h" -#include "MidiOutPort.h" -#include "MidiOutPort_linux.h" -#include "MidiOutPort_oss.h" -#include "MidiOutPort_unsupported.h" -#include "MidiOutPort_visual.h" -#include "MidiOutput.h" -#include "MidiPort.h" -#include "notenames.h" -#include "Options.h" -#include "Options_private.h" -#include "Sequencer_alsa.h" -#include "Sequencer_oss.h" -#include "sigConfiguration.h" -#include "SigTimer.h" -#include "Voice.h" - - -#endif /* _MIDIIO_H_INCLUDED */ - - - -// md5sum: b389c20c620865344d827a88a0fb048d - midiiolib.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/notenames.h b/extensions/gripd/src/midiio/include/notenames.h deleted file mode 100644 index ce9d505cd4163cfd6ed541de3c1f512850c1d465..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/notenames.h +++ /dev/null @@ -1,219 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> (from 18Dec1997) -// Creation Date: 26 December 1997 -// Last Modified: 26 December 1997 -// Filename: ...sig/code/control/misc/notenames.h -// Web Address: http://www-ccrma.stanford.edu/~craig/improv/include/notenames.h -// Syntax: C -// -// Description: Defines for pitch names of midi key numbers -// - -#ifndef _NOTENAMES_H_INCLUDED -#define _NOTENAMES_H_INCLUDED - -#define C00 (0) -#define Cs00 (1) -#define Db00 (1) -#define D00 (2) -#define Ds00 (3) -#define Eb00 (3) -#define E00 (4) -#define F00 (5) -#define Fs00 (6) -#define Gb00 (6) -#define G00 (7) -#define Gs00 (8) -#define Ab00 (8) -#define A00 (9) -#define As00 (10) -#define Bb00 (10) -#define B00 (11) - -#define C0 (12) -#define Cs0 (13) -#define Db0 (13) -#define D0 (14) -#define Ds0 (15) -#define Eb0 (15) -#define E0 (16) -#define F0 (17) -#define Fs0 (18) -#define Gb0 (18) -#define G0 (19) -#define Gs0 (20) -#define Ab0 (20) -#define A0 (21) -#define As0 (22) -#define Bb0 (22) - -/* - * Note that the following symbol B0 is used in - * unix in the file /usr/include/termios.h also as - * a symbol, so It is disabled for now in this file. - * termios.h is need in Unix for the KeyboardInput.h file - */ - -// #define B0 (23) - -#define C1 (24) -#define Cs1 (25) -#define Db1 (25) -#define D1 (26) -#define Ds1 (27) -#define Eb1 (27) -#define E1 (28) -#define F1 (29) -#define Fs1 (30) -#define Gb1 (30) -#define G1 (31) -#define Gs1 (32) -#define Ab1 (32) -#define A1 (33) -#define As1 (34) -#define Bb1 (34) -#define B1 (35) - -#define C2 (36) -#define Cs2 (37) -#define Db2 (37) -#define D2 (38) -#define Ds2 (39) -#define Eb2 (39) -#define E2 (40) -#define F2 (41) -#define Fs2 (42) -#define Gb2 (42) -#define G2 (43) -#define Gs2 (44) -#define Ab2 (44) -#define A2 (45) -#define As2 (46) -#define Bb2 (46) -#define B2 (47) - -#define C3 (48) -#define Cs3 (49) -#define Db3 (49) -#define D3 (50) -#define Ds3 (51) -#define Eb3 (51) -#define E3 (52) -#define F3 (53) -#define Fs3 (54) -#define Gb3 (54) -#define G3 (55) -#define Gs3 (56) -#define Ab3 (56) -#define A3 (57) -#define As3 (58) -#define Bb3 (58) -#define B3 (59) - -#define C4 (60) -#define Cs4 (61) -#define Db4 (61) -#define D4 (62) -#define Ds4 (63) -#define Eb4 (63) -#define E4 (64) -#define F4 (65) -#define Fs4 (66) -#define Gb4 (66) -#define G4 (67) -#define Gs4 (68) -#define Ab4 (68) -#define A4 (69) -#define As4 (70) -#define Bb4 (70) -#define B4 (71) - -#define C5 (72) -#define Cs5 (73) -#define Db5 (73) -#define D5 (74) -#define Ds5 (75) -#define Eb5 (75) -#define E5 (76) -#define F5 (77) -#define Fs5 (78) -#define Gb5 (78) -#define G5 (79) -#define Gs5 (80) -#define Ab5 (81) -#define A5 (81) -#define As5 (82) -#define Bb5 (82) -#define B5 (83) - -#define C6 (84) -#define Cs6 (85) -#define Db6 (85) -#define D6 (86) -#define Ds6 (87) -#define Eb6 (87) -#define E6 (88) -#define F6 (89) -#define Fs6 (90) -#define Gb6 (90) -#define G6 (91) -#define Gs6 (92) -#define Ab6 (92) -#define A6 (93) -#define As6 (94) -#define Bb6 (94) -#define B6 (95) - -#define C7 (96) -#define Cs7 (97) -#define Db7 (97) -#define D7 (98) -#define Ds7 (99) -#define Eb7 (99) -#define E7 (100) -#define F7 (101) -#define Fs7 (102) -#define Gb7 (102) -#define G7 (103) -#define Gs7 (104) -#define Ab7 (104) -#define A7 (105) -#define As7 (106) -#define Bb7 (106) -#define B7 (107) - -#define C8 (108) -#define Cs8 (109) -#define Db8 (109) -#define D8 (110) -#define Ds8 (111) -#define Eb8 (111) -#define E8 (112) -#define F8 (113) -#define Fs8 (114) -#define Gb8 (114) -#define G8 (115) -#define Gs8 (116) -#define Ab8 (116) -#define A8 (117) -#define As8 (118) -#define Bb8 (118) -#define B8 (119) - -#define C9 (120) -#define Cs9 (121) -#define Db9 (121) -#define D9 (122) -#define Ds9 (123) -#define Eb9 (123) -#define E9 (124) -#define F9 (125) -#define Fs9 (126) -#define Gb9 (126) -#define G9 (127) - - -#endif /* _NOTENAMES_H_INCLUDED */ - - -// md5sum: c0f727163d32e04212a0ce5c8b6c4a6f - notenames.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/include/sigConfiguration.h b/extensions/gripd/src/midiio/include/sigConfiguration.h deleted file mode 100644 index b1e5f1757866f548f4bdb9b3ff9d047a55527e7d..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/include/sigConfiguration.h +++ /dev/null @@ -1,100 +0,0 @@ -// -// Copyright 1997 by Craig Stuart Sapp, All Rights Reserved. -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Mon Dec 1 18:16:57 GMT-0800 1997 -// Last Modified: Mon Dec 1 18:16:57 GMT-0800 1997 -// Filename: ...sig/maint/code/misc/sigConfiguration.h -// Web Address: http://sig.sapp.org/include/sig/sigConfiguration.h -// Syntax: C -// -// Description: This file defines flags for different code setups: -// You specify the OS in a compiler flag and this file takes care -// of the rest of the defines for that OS. This file should -// automatically be included in any file which uses any of the -// define flags below. -// -// OS setup defines to use in compiling files: -// -// -DLINUX: Linux running on intel computers -// -DNEXTI: NeXT OS on Intel Hardware -// -DNEXTM: NeXT OS on Motorola Hardware -// -DSUN: Sun SPARCstations -// -DVISUAL: Windows 95/NT using Microsoft Visual C++ 5.0 -// -DHPUX: Hewlett-Packard Unix Workstations. -// -DIRIX: SGI computers with IRIX OS. -// -// -// Various options that can be defined for each OS. These -// defines may be mixed and matched in different OSes: -// -// -DOTHEREND: If the computer is little-endian, then this -// define switches the byte ordering behavior for writing/reading -// soundfiles. Intel computers need this define, most others -// will not.need this define. -// -// -DSHORTRAND: Indicates that the rand() function generates -// numbers between 0 and 0x7fff. The default without this -// option is a range between 0 and 0x7fffffff. -// -// -DINTEL: Indicates that the computer hardware uses an -// intel x86 CPU. Not used for anything right now except to -// define the endian flag (OTHEREND). -// -// -DMOTOROLA: Indicates that the computer hardware uses a -// Motorola 68k CPU. Not used for anything right now. -// -// - -#ifndef _SIGCONFIGURATION_H_INCLUDED -#define _SIGCONFIGURATION_H_INCLUDED - - -#ifdef LINUX - #define INTEL -#endif - - -#ifdef NEXTI - #define INTEL -#endif - - -#ifdef NEXT - #define MOTOROLA -#endif - - -#ifdef VISUAL - #define INTEL -#endif - - -#ifdef SUN - #define SHORTRAND -#endif - - -#ifdef HPUX - #define SHORTRAND -#endif - - -#ifdef IRIX - #define SHORTRAND -#endif - - -// These defines must come after the previous defines: - - -#ifdef INTEL - #define OTHEREND -#endif - - - -#endif /* _SIGCONFIGURATION_H_INCLUDED */ - - - -// md5sum: 32f74a7c264b158b83ff38db1ea885f8 - sigConfiguration.h =css= 20030102 diff --git a/extensions/gripd/src/midiio/src/FileIO.cpp b/extensions/gripd/src/midiio/src/FileIO.cpp deleted file mode 100644 index 93ef153ddf7e5cb95314011c5a059e4754963e8d..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/src/FileIO.cpp +++ /dev/null @@ -1,761 +0,0 @@ -// -// Copyright 1997 by Craig Stuart Sapp, All Rights Reserved. -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Fri May 9 22:30:32 PDT 1997 -// Last Modified: Sun Dec 14 03:29:39 GMT-0800 1997 -// Filename: ...sig/maint/code/sigBase/FileIO.cpp -// Web Address: http://sig.sapp.org/src/sigBase/FileIO.cpp -// Documentation: http://sig.sapp.org/doc/classes/FileIO -// Syntax: C++ -// -// Description: Derived from the fstream class, this class has -// functions which allow writing binary files in -// both little and big endian formats. Useful for -// writing files such as soundfiles and MIDI files -// which require numbers to be stored in a particular -// endian format. -// - -#include "FileIO.h" -#include "sigConfiguration.h" - -////////////////////////////// -// -// FileIO::FileIO -- -// - -FileIO::FileIO(void) { - // do nothing -}; - -FileIO::FileIO(const char* filename, std::ios::openmode state) : -#ifdef VISUAL /* for stupid LF-CR prevention in DOS */ - std::fstream(filename, state | ios::binary) { -#else - std::fstream(filename, state) { -#endif - // do nothing -}; - - - -////////////////////////////// -// -// FileIO::~FileIO -- -// - -FileIO::~FileIO() { - // do nothing -} - - - -////////////////////////////// -// -// FileIO::readBigEndian -- -// Read numbers from a file as big endian -// - -void FileIO::readBigEndian(char& aNumber) { - #ifdef OTHEREND - readNotMachineEndian(aNumber); - #else - readMachineEndian(aNumber); - #endif -} - -void FileIO::readBigEndian(uchar& aNumber) { - #ifdef OTHEREND - readNotMachineEndian(aNumber); - #else - readMachineEndian(aNumber); - #endif -} - -void FileIO::readBigEndian(short& aNumber) { - #ifdef OTHEREND - readNotMachineEndian(aNumber); - #else - readMachineEndian(aNumber); - #endif -} - -void FileIO::readBigEndian(ushort& aNumber) { - #ifdef OTHEREND - readNotMachineEndian(aNumber); - #else - readMachineEndian(aNumber); - #endif -} - -void FileIO::readBigEndian(long& aNumber) { - #ifdef OTHEREND - readNotMachineEndian(aNumber); - #else - readMachineEndian(aNumber); - #endif -} - -void FileIO::readBigEndian(ulong& aNumber) { - #ifdef OTHEREND - readNotMachineEndian(aNumber); - #else - readMachineEndian(aNumber); - #endif -} - -void FileIO::readBigEndian(int& aNumber) { - #ifdef OTHEREND - readNotMachineEndian(aNumber); - #else - readMachineEndian(aNumber); - #endif -} - -void FileIO::readBigEndian(uint& aNumber) { - #ifdef OTHEREND - readNotMachineEndian(aNumber); - #else - readMachineEndian(aNumber); - #endif -} - -void FileIO::readBigEndian(float& aNumber) { - #ifdef OTHEREND - readNotMachineEndian(aNumber); - #else - readMachineEndian(aNumber); - #endif -} - -void FileIO::readBigEndian(double& aNumber) { - #ifdef OTHEREND - readNotMachineEndian(aNumber); - #else - readMachineEndian(aNumber); - #endif -} - - - -////////////////////////////// -// -// FileIO::readLittleEndian -- -// Read numbers from a file as little endian -// - -void FileIO::readLittleEndian(char& aNumber) { - #ifdef OTHEREND - readMachineEndian(aNumber); - #else - readNotMachineEndian(aNumber); - #endif -} - -void FileIO::readLittleEndian(uchar& aNumber) { - #ifdef OTHEREND - readMachineEndian(aNumber); - #else - readNotMachineEndian(aNumber); - #endif -} - -void FileIO::readLittleEndian(short& aNumber) { - #ifdef OTHEREND - readMachineEndian(aNumber); - #else - readNotMachineEndian(aNumber); - #endif -} - -void FileIO::readLittleEndian(ushort& aNumber) { - #ifdef OTHEREND - readMachineEndian(aNumber); - #else - readNotMachineEndian(aNumber); - #endif -} - -void FileIO::readLittleEndian(long& aNumber) { - #ifdef OTHEREND - readMachineEndian(aNumber); - #else - readNotMachineEndian(aNumber); - #endif -} - -void FileIO::readLittleEndian(ulong& aNumber) { - #ifdef OTHEREND - readMachineEndian(aNumber); - #else - readNotMachineEndian(aNumber); - #endif -} - -void FileIO::readLittleEndian(int& aNumber) { - #ifdef OTHEREND - readMachineEndian(aNumber); - #else - readNotMachineEndian(aNumber); - #endif -} - -void FileIO::readLittleEndian(uint& aNumber) { - #ifdef OTHEREND - readMachineEndian(aNumber); - #else - readNotMachineEndian(aNumber); - #endif -} - -void FileIO::readLittleEndian(float& aNumber) { - #ifdef OTHEREND - readMachineEndian(aNumber); - #else - readNotMachineEndian(aNumber); - #endif -} - -void FileIO::readLittleEndian(double& aNumber) { - #ifdef OTHEREND - readMachineEndian(aNumber); - #else - readNotMachineEndian(aNumber); - #endif -} - - - -////////////////////////////// -// -// FileIO::readMachineEndian -- -// Read numbers from a file in the same endian as the computer. -// - -void FileIO::readMachineEndian(char& aNumber) { - this->read(&aNumber, sizeof(aNumber)); -} - -void FileIO::readMachineEndian(uchar& aNumber) { - this->read((char*)&aNumber, sizeof(aNumber)); -} - -void FileIO::readMachineEndian(short& aNumber) { - this->read((char*)&aNumber, sizeof(aNumber)); -} - -void FileIO::readMachineEndian(ushort& aNumber) { - this->read((char*)&aNumber, sizeof(aNumber)); -} - -void FileIO::readMachineEndian(long& aNumber) { - this->read((char*)&aNumber, sizeof(aNumber)); -} - -void FileIO::readMachineEndian(ulong& aNumber) { - this->read((char*)&aNumber, sizeof(aNumber)); -} - -void FileIO::readMachineEndian(int& aNumber) { - this->read((char*)&aNumber, sizeof(aNumber)); -} - -void FileIO::readMachineEndian(uint& aNumber) { - this->read((char*)&aNumber, sizeof(aNumber)); -} - -void FileIO::readMachineEndian(float& aNumber) { - this->read((char*)&aNumber, sizeof(aNumber)); -} - -void FileIO::readMachineEndian(double& aNumber) { - this->read((char*)&aNumber, sizeof(aNumber)); -} - - - -////////////////////////////// -// -// FileIO::readNotMachineEndian -- -// Read numbers from a file with different endian from the computer. -// - -void FileIO::readNotMachineEndian(char& aNumber) { - this->read(&aNumber, sizeof(aNumber)); - aNumber = flipBytes(aNumber); -} - -void FileIO::readNotMachineEndian(uchar& aNumber) { - this->read((char*)&aNumber, sizeof(aNumber)); - aNumber = flipBytes(aNumber); -} - -void FileIO::readNotMachineEndian(short& aNumber) { - this->read((char*)&aNumber, sizeof(aNumber)); - aNumber = flipBytes(aNumber); -} - -void FileIO::readNotMachineEndian(ushort& aNumber) { - this->read((char*)&aNumber, sizeof(aNumber)); - aNumber = flipBytes(aNumber); -} - -void FileIO::readNotMachineEndian(long& aNumber) { - this->read((char*)&aNumber, sizeof(aNumber)); - aNumber = flipBytes(aNumber); -} - -void FileIO::readNotMachineEndian(ulong& aNumber) { - this->read((char*)&aNumber, sizeof(aNumber)); - aNumber = flipBytes(aNumber); -} - -void FileIO::readNotMachineEndian(int& aNumber) { - this->read((char*)&aNumber, sizeof(aNumber)); - aNumber = flipBytes(aNumber); -} - -void FileIO::readNotMachineEndian(uint& aNumber) { - this->read((char*)&aNumber, sizeof(aNumber)); - aNumber = flipBytes(aNumber); -} - -void FileIO::readNotMachineEndian(float& aNumber) { - this->read((char*)&aNumber, sizeof(aNumber)); - aNumber = flipBytes(aNumber); -} - -void FileIO::readNotMachineEndian(double& aNumber) { - this->read((char*)&aNumber, sizeof(aNumber)); - aNumber = flipBytes(aNumber); -} - - - -////////////////////////////// -// -// FileIO::writeBigEndian -- -// - -void FileIO::writeBigEndian(char aNumber) { - #ifdef OTHEREND - writeNotMachineEndian(aNumber); - #else - writeMachineEndian(aNumber); - #endif -} - -void FileIO::writeBigEndian(uchar aNumber) { - #ifdef OTHEREND - writeNotMachineEndian(aNumber); - #else - writeMachineEndian(aNumber); - #endif -} - -void FileIO::writeBigEndian(short aNumber) { - #ifdef OTHEREND - writeNotMachineEndian(aNumber); - #else - writeMachineEndian(aNumber); - #endif -} - -void FileIO::writeBigEndian(ushort aNumber) { - #ifdef OTHEREND - writeNotMachineEndian(aNumber); - #else - writeMachineEndian(aNumber); - #endif -} - -void FileIO::writeBigEndian(long aNumber) { - #ifdef OTHEREND - writeNotMachineEndian(aNumber); - #else - writeMachineEndian(aNumber); - #endif -} - -void FileIO::writeBigEndian(ulong aNumber) { - #ifdef OTHEREND - writeNotMachineEndian(aNumber); - #else - writeMachineEndian(aNumber); - #endif -} - -void FileIO::writeBigEndian(int aNumber) { - #ifdef OTHEREND - writeNotMachineEndian(aNumber); - #else - writeMachineEndian(aNumber); - #endif -} - -void FileIO::writeBigEndian(uint aNumber) { - #ifdef OTHEREND - writeNotMachineEndian(aNumber); - #else - writeMachineEndian(aNumber); - #endif -} - -void FileIO::writeBigEndian(float aNumber) { - #ifdef OTHEREND - writeNotMachineEndian(aNumber); - #else - writeMachineEndian(aNumber); - #endif -} - -void FileIO::writeBigEndian(double aNumber) { - #ifdef OTHEREND - writeNotMachineEndian(aNumber); - #else - writeMachineEndian(aNumber); - #endif -} - - - -////////////////////////////// -// -// FileIO::writeLittleEndian -- -// - -void FileIO::writeLittleEndian(char aNumber) { - #ifdef OTHEREND - writeMachineEndian(aNumber); - #else - writeNotMachineEndian(aNumber); - #endif -} - -void FileIO::writeLittleEndian(uchar aNumber) { - #ifdef OTHEREND - writeMachineEndian(aNumber); - #else - writeNotMachineEndian(aNumber); - #endif -} - -void FileIO::writeLittleEndian(short aNumber) { - #ifdef OTHEREND - writeMachineEndian(aNumber); - #else - writeNotMachineEndian(aNumber); - #endif -} - -void FileIO::writeLittleEndian(ushort aNumber) { - #ifdef OTHEREND - writeMachineEndian(aNumber); - #else - writeNotMachineEndian(aNumber); - #endif -} - -void FileIO::writeLittleEndian(long aNumber) { - #ifdef OTHEREND - writeMachineEndian(aNumber); - #else - writeNotMachineEndian(aNumber); - #endif -} - -void FileIO::writeLittleEndian(ulong aNumber) { - #ifdef OTHEREND - writeMachineEndian(aNumber); - #else - writeNotMachineEndian(aNumber); - #endif -} - -void FileIO::writeLittleEndian(int aNumber) { - #ifdef OTHEREND - writeMachineEndian(aNumber); - #else - writeNotMachineEndian(aNumber); - #endif -} - -void FileIO::writeLittleEndian(uint aNumber) { - #ifdef OTHEREND - writeMachineEndian(aNumber); - #else - writeNotMachineEndian(aNumber); - #endif -} - -void FileIO::writeLittleEndian(float aNumber) { - #ifdef OTHEREND - writeMachineEndian(aNumber); - #else - writeNotMachineEndian(aNumber); - #endif -} - -void FileIO::writeLittleEndian(double aNumber) { - #ifdef OTHEREND - writeMachineEndian(aNumber); - #else - writeNotMachineEndian(aNumber); - #endif -} - - - -////////////////////////////// -// -// FileIO::writeMachineEndian -- -// - -void FileIO::writeMachineEndian(char aNumber) { - this->write(&aNumber, sizeof(aNumber)); -} - -void FileIO::writeMachineEndian(uchar aNumber) { - this->write((char*)&aNumber, sizeof(aNumber)); -} - -void FileIO::writeMachineEndian(short aNumber) { - this->write((char*)&aNumber, sizeof(aNumber)); -} - -void FileIO::writeMachineEndian(ushort aNumber) { - this->write((char*)&aNumber, sizeof(aNumber)); -} - -void FileIO::writeMachineEndian(long aNumber) { - this->write((char*)&aNumber, sizeof(aNumber)); -} - -void FileIO::writeMachineEndian(ulong aNumber) { - this->write((char*)&aNumber, sizeof(aNumber)); -} - -void FileIO::writeMachineEndian(int aNumber) { - this->write((char*)&aNumber, sizeof(aNumber)); -} - -void FileIO::writeMachineEndian(uint aNumber) { - this->write((char*)&aNumber, sizeof(aNumber)); -} - -void FileIO::writeMachineEndian(float aNumber) { - this->write((char*)&aNumber, sizeof(aNumber)); -} - -void FileIO::writeMachineEndian(double aNumber) { - this->write((char*)&aNumber, sizeof(aNumber)); -} - - - -////////////////////////////// -// -// FileIO::writeNotMachineEndian -- -// - -void FileIO::writeNotMachineEndian(char aNumber) { - // aNumber = flipBytes(aNumber); - this->write(&aNumber, sizeof(aNumber)); -} - -void FileIO::writeNotMachineEndian(uchar aNumber) { - // aNumber = flipBytes(aNumber); - this->write((char*)&aNumber, sizeof(aNumber)); -} - -void FileIO::writeNotMachineEndian(short aNumber) { - aNumber = flipBytes(aNumber); - this->write((char*)&aNumber, sizeof(aNumber)); -} - -void FileIO::writeNotMachineEndian(ushort aNumber) { - aNumber = flipBytes(aNumber); - this->write((char*)&aNumber, sizeof(aNumber)); -} - -void FileIO::writeNotMachineEndian(long aNumber) { - aNumber = flipBytes(aNumber); - this->write((char*)&aNumber, sizeof(aNumber)); -} - -void FileIO::writeNotMachineEndian(ulong aNumber) { - aNumber = flipBytes(aNumber); - this->write((char*)&aNumber, sizeof(aNumber)); -} - -void FileIO::writeNotMachineEndian(int aNumber) { - aNumber = flipBytes(aNumber); - this->write((char*)&aNumber, sizeof(aNumber)); -} - -void FileIO::writeNotMachineEndian(uint aNumber) { - aNumber = flipBytes(aNumber); - this->write((char*)&aNumber, sizeof(aNumber)); -} - -void FileIO::writeNotMachineEndian(float aNumber) { - aNumber = flipBytes(aNumber); - this->write((char*)&aNumber, sizeof(aNumber)); -} - -void FileIO::writeNotMachineEndian(double aNumber) { - aNumber = flipBytes(aNumber); - this->write((char*)&aNumber, sizeof(aNumber)); -} - - -/////////////////////////////////////////////////////////////////////////// -// -// private functions -// - - -////////////////////////////// -// -// flipBytes -- flip the bytes in a number -// - -char FileIO::flipBytes(char aNumber) { - return aNumber; -} - - -uchar FileIO::flipBytes(uchar aNumber) { - return aNumber; -} - - -short FileIO::flipBytes(short aNumber) { - static uchar output[2]; - static uchar* input; - input = (uchar*)(&aNumber); - - output[0] = input[1]; - output[1] = input[0]; - - return *((short*)(&output)); -} - - -ushort FileIO::flipBytes(ushort aNumber) { - static uchar output[2]; - static uchar* input; - input = (uchar*)(&aNumber); - - output[0] = input[1]; - output[1] = input[0]; - - return *((ushort*)(&output)); -} - - -long FileIO::flipBytes(long aNumber) { - static uchar output[4]; - static uchar* input; - input = (uchar*)(&aNumber); - - output[0] = input[3]; - output[1] = input[2]; - output[2] = input[1]; - output[3] = input[0]; - - return *((long*)(&output)); -} - - -ulong FileIO::flipBytes(ulong aNumber) { - static uchar output[4]; - static uchar* input; - input = (uchar*)(&aNumber); - - output[0] = input[3]; - output[1] = input[2]; - output[2] = input[1]; - output[3] = input[0]; - - return *((ulong*)(&output)); -} - - -int FileIO::flipBytes(int aNumber) { - static uchar output[sizeof(uint)]; - static uchar* input; - input = (uchar*)(&aNumber); - - for(uint i=0; i<sizeof(int); i++) { - output[i] = input[sizeof(int)-1-i]; - } - - return *((int*)(&output)); -} - - -uint FileIO::flipBytes(uint aNumber) { - static uchar output[sizeof(uint)]; - static uchar* input; - input = (uchar*)(&aNumber); - - for(uint i=0; i<sizeof(uint); i++) { - output[i] = input[sizeof(uint)-1-i]; - } - - return *((uint*)(&output)); -} - - - -float FileIO::flipBytes(float aNumber) { - static uchar output[4]; - static uchar* input; - input = (uchar*)(&aNumber); - - output[0] = input[3]; - output[1] = input[2]; - output[2] = input[1]; - output[3] = input[0]; - - return *((float*)(&output)); -} - - -double FileIO::flipBytes(double aNumber) { - static uchar output[8]; - static uchar* input; - input = (uchar*)(&aNumber); - - output[0] = input[7]; - output[1] = input[6]; - output[2] = input[5]; - output[3] = input[4]; - output[4] = input[3]; - output[5] = input[2]; - output[6] = input[1]; - output[7] = input[0]; - - return *((double*)(&output)); -} - - - -/* This is what I want to use -template<class type> -type FileIO::flipBytes(type aThing) { - uchar* input = (uchar*)(&aNumber); - uchar output[sizeof(aThing)]; - - for(int i=0; i<sizeof(aThing); i++) { - output[i] = input[sizeof(aThing) - 1 - i]; - } - - return *((type*)(&output)); -} -*/ - - - -// md5sum: a82bcb961043a48d2cae34d5eaac0101 - FileIO.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/src/MidiFile.cpp b/extensions/gripd/src/midiio/src/MidiFile.cpp deleted file mode 100644 index e3307cafbc088c60f66f402314227a295d1becfa..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/src/MidiFile.cpp +++ /dev/null @@ -1,1200 +0,0 @@ -// -// Copyright 1999 by Craig Stuart Sapp, All Rights Reserved. -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Fri Nov 26 14:12:01 PST 1999 -// Last Modified: Fri Dec 2 13:26:29 PST 1999 -// Last Modified: Wed Dec 13 10:33:30 PST 2000 (modified sorting routine) -// Last Modified: Tue Jan 22 23:23:37 PST 2002 (allowed reading of meta events) -// Filename: ...sig/src/sigInfo/MidiFile.cpp -// Web Address: http://sig.sapp.org/src/sigInfo/MidiFile.cpp -// Syntax: C++ -// -// Description: A class which can read/write Standard MIDI files. -// MIDI data is stored by track in an array. This -// class is used for example in the MidiPerform class. -// - -#include "MidiFile.h" -#include <iomanip> - -////////////////////////////// -// -// _MFEvent::_MFEvent -- -// - -_MFEvent::_MFEvent(void) { - time = 0; - track = 0; - data.allowGrowth(); - data.setSize(0); -} - -_MFEvent::_MFEvent(int command) { - time = 0; - track = 0; - data.allowGrowth(); - data.setSize(1); - data[0] = (uchar)command; -} - -_MFEvent::_MFEvent(int command, int param1) { - time = 0; - track = 0; - data.allowGrowth(); - data.setSize(2); - data[0] = (uchar)command; - data[1] = (uchar)param1; -} - -_MFEvent::_MFEvent(int command, int param1, int param2) { - time = 0; - track = 0; - data.allowGrowth(); - data.setSize(3); - data[0] = (uchar)command; - data[1] = (uchar)param1; - data[2] = (uchar)param2; -} - -_MFEvent::_MFEvent(int aTrack, int command, int param1, int param2) { - time = 0; - track = aTrack; - data.allowGrowth(); - data.setSize(3); - data[0] = (uchar)command; - data[1] = (uchar)param1; - data[2] = (uchar)param2; -} - -_MFEvent::_MFEvent(int aTime, int aTrack, int command, int param1, int param2) { - time = aTime; - track = aTrack; - data.allowGrowth(); - data.setSize(3); - data[0] = (uchar)command; - data[1] = (uchar)param1; - data[2] = (uchar)param2; -} - - - -////////////////////////////// -// -// _MFEvent::~MFEvent -// - -_MFEvent::~_MFEvent() { - time = -1; - track = -1; - data.setSize(0); -} - - - -////////////////////////////// -// -// MidiFile::MidiFile -- -// - -MidiFile::MidiFile(void) { - ticksPerQuarterNote = 48; // time base of file - trackCount = 1; // # of tracks in file - theTrackState = TRACK_STATE_SPLIT; // joined or split - theTimeState = TIME_STATE_DELTA; // absolute or delta - events.setSize(1); - events[0] = new Collection<_MFEvent>; - events[0]->setSize(0); - events[0]->allowGrowth(1); - readFileName = new char[1]; - readFileName[0] = '\0'; -} - - -MidiFile::MidiFile(char* aFile) { - ticksPerQuarterNote = 48; // time base of file - trackCount = 1; // # of tracks in file - theTrackState = TRACK_STATE_SPLIT; // joined or split - theTimeState = TIME_STATE_DELTA; // absolute or delta - events.setSize(1); - events[0] = new Collection<_MFEvent>; - events[0]->setSize(0); - events[0]->allowGrowth(1); - readFileName = new char[1]; - readFileName[0] = '\0'; - read(aFile); -} - - - -////////////////////////////// -// -// MidiFile::~MidiFile -- -// - -MidiFile::~MidiFile() { - if (readFileName != NULL) { - delete [] readFileName; - readFileName = NULL; - } - - erase(); - - if (events[0] != NULL) { - delete events[0]; - events[0] = NULL; - } - -} - - - -////////////////////////////// -// -// MidiFile::absoluteTime -- convert the time data to -// absolute time, which means that the time field -// in the _MFEvent struct represents the exact tick -// time to play the event rather than the time since -// the last event to wait untill playing the current -// event. -// - -void MidiFile::absoluteTime(void) { - if (getTimeState() == TIME_STATE_ABSOLUTE) { - return; - } - int i, j; - int length = getNumTracks(); - int* timedata = new int[length]; - for (i=0; i<length; i++) { - timedata[i] = 0; - if (events[i]->getSize() > 0) { - timedata[i] = (*events[i])[0].time; - } else { - continue; - } - for (j=1; j<events[i]->getSize(); j++) { - timedata[i] += (*events[i])[j].time; - (*events[i])[j].time = timedata[i]; - } - } - theTimeState = TIME_STATE_ABSOLUTE; - delete [] timedata; -} - -////////////////////////////// -// -// MidiFile::addEvent -- -// - -int MidiFile::addEvent(int aTrack, int aTime, Array<uchar>& midiData) { - _MFEvent anEvent; - anEvent.time = aTime; - anEvent.track = aTrack; - anEvent.data = midiData; - - events[aTrack]->append(anEvent); - return events[aTrack]->getSize() - 1; -} - - - -////////////////////////////// -// -// MidiFile::addTrack -- adds a blank track at end of the -// track list. Returns the track number of the added -// track. -// - -int MidiFile::addTrack(void) { - int length = getNumTracks(); - events.setSize(length+1); - events[length] = new Collection<_MFEvent>; - events[length]->setSize(10000); - events[length]->setSize(0); - events[length]->allowGrowth(1); - return length; -} - -int MidiFile::addTrack(int count) { - int length = getNumTracks(); - events.setSize(length+count); - int i; - for (i=0; i<count; i++) { - events[length + i] = new Collection<_MFEvent>; - events[length + i]->setSize(10000); - events[length + i]->setSize(0); - events[length + i]->allowGrowth(1); - } - return length + count - 1; -} - - -////////////////////////////// -// -// MidiFile::allocateEvents -- -// - -void MidiFile::allocateEvents(int track, int aSize) { - int oldsize = events[track]->getSize(); - if (oldsize < aSize) { - events[track]->setSize(aSize); - events[track]->setSize(oldsize); - } -} - - - -////////////////////////////// -// -// MidiFile::deleteTrack -- remove a track from the MidiFile. -// Tracks are numbered starting at track 0. -// - -void MidiFile::deleteTrack(int aTrack) { - int length = getNumTracks(); - if (aTrack < 0 || aTrack >= length) { - return; - } - if (length == 1) { - return; - } - delete events[aTrack]; - for (int i=aTrack; i<length-1; i++) { - events[i] = events[i+1]; - } - - events[length] = NULL; - events.setSize(length-1); -} - - - -////////////////////////////// -// -// MidiFile::deltaTime -- convert the time data to -// delta time, which means that the time field -// in the _MFEvent struct represents the time -// since the last event was played. When a MIDI file -// is read from a file, this is the default setting. -// - -void MidiFile::deltaTime(void) { - if (getTimeState() == TIME_STATE_DELTA) { - return; - } - int i, j; - int temp; - int length = getNumTracks(); - int *timedata = new int[length]; - for (i=0; i<length; i++) { - timedata[i] = 0; - if (events[i]->getSize() > 0) { - timedata[i] = (*events[i])[0].time; - } else { - continue; - } - for (j=1; j<events[i]->getSize(); j++) { - temp = (*events[i])[j].time; - (*events[i])[j].time = temp - timedata[i]; - timedata[i] = temp; - } - } - theTimeState = TIME_STATE_DELTA; - delete [] timedata; -} - - - -////////////////////////////// -// -// MidiFile::erase -- make the MIDI file empty with one -// track with no data in it. -// - -void MidiFile::erase(void) { - int length = getNumTracks(); - for (int i=0; i<length; i++) { - delete events[i]; - events[i] = NULL; - } - events.setSize(1); - events[0] = new Collection<_MFEvent>; - events[0]->setSize(0); - events[0]->allowGrowth(1); -} - - -void MidiFile::clear(void) { - MidiFile::erase(); -} - - - -////////////////////////////// -// -// MidiFile::getEvent -- return the event at the given index in the -// specified track. -// - -_MFEvent& MidiFile::getEvent(int aTrack, int anIndex) { - return (*events[aTrack])[anIndex]; -} - - - -////////////////////////////// -// -// MidiFile::getTicksPerQuarterNote -- returns the number of -// time units that are supposed to occur during a quarternote. -// - -int MidiFile::getTicksPerQuarterNote(void) { - return ticksPerQuarterNote; -} - - - -////////////////////////////// -// -// MidiFile::getTrackCount -- return the number of tracks in -// the Midi File. -// - -int MidiFile::getTrackCount(void) { - return events.getSize(); -} - -int MidiFile::getNumTracks(void) { - return events.getSize(); -} - - - -////////////////////////////// -// -// MidiFile::getNumEvents -- returns the number of events -// in a given track. -// - -int MidiFile::getNumEvents(int aTrack) { - return events[aTrack]->getSize(); -} - - - -////////////////////////////// -// -// MidiFile::joinTracks -- merge the data from all tracks, -// but keeping the identity of the tracks unique so that -// the function splitTracks can be called to split the -// tracks into separate units again. The style of the -// MidiFile when read from a file is with tracks split. -// - -void MidiFile::joinTracks(void) { - if (getTrackState() == TRACK_STATE_JOINED) { - return; - } - if (getNumTracks() == 1) { - return; - } - - Collection <_MFEvent>* joinedTrack; - joinedTrack = new Collection<_MFEvent>; - joinedTrack->setSize(200000); - joinedTrack->setSize(0); - int oldTimeState = getTimeState(); - if (oldTimeState == TIME_STATE_DELTA) { - absoluteTime(); - } - int i, j; - int length = getNumTracks(); - for (i=0; i<length; i++) { - for (j=0; j<events[i]->getSize(); j++) { - joinedTrack->append((*events[i])[j]); - } - } - - erase(); - - delete events[0]; - events[0] = joinedTrack; - sortTracks(); - if (oldTimeState == TIME_STATE_DELTA) { - deltaTime(); - } -} - - - -////////////////////////////// -// -// MidiFile::mergeTracks -- combine the data from two -// tracks into one. Placing the data in the first -// track location listed, and Moving the other tracks -// in the file around to fill in the spot where Track2 -// used to be. The results of this function call cannot -// be reversed. -// - -void MidiFile::mergeTracks(int aTrack1, int aTrack2) { - Collection <_MFEvent>* mergedTrack; - mergedTrack = new Collection<_MFEvent>; - mergedTrack->setSize(0); - int oldTimeState = getTimeState(); - if (oldTimeState == TIME_STATE_DELTA) { - absoluteTime(); - } - int i, j; - int length = getNumTracks(); - for (i=0; i<events[aTrack1]->getSize(); i++) { - mergedTrack->append((*events[aTrack1])[i]); - } - for (j=0; j<events[aTrack2]->getSize(); i++) { - (*events[aTrack2])[i].track = aTrack1; - mergedTrack->append((*events[aTrack2])[i]); - } - - sortTrack(*mergedTrack); - - delete events[aTrack1]; - - events[aTrack1] = mergedTrack; - - for (i=aTrack2; i<length-1; i++) { - events[i] = events[i+1]; - } - - events[length] = NULL; - events.setSize(length-1); - - if (oldTimeState == TIME_STATE_DELTA) { - deltaTime(); - } -} - - - -////////////////////////////// -// -// MidiFile::read -- read a MIDI file and store its contents. -// - -int MidiFile::read(char* aFile) { - - #ifdef VISUAL - FileIO inputfile(aFile, std::ios::in | std::ios::nocreate | std::ios::binary); - #else - // ios::nocreate does not exists anymore in GCC 3.x - FileIO inputfile(aFile, std::ios::in /*| std::ios::nocreate */); - #endif - - if (!inputfile.is_open()) { - return 0; - } - - // Read the MIDI header (4 bytes of ID, 4 byte data size, 6 bytes - // of data. - - ulong longdata; - uchar chardata; - ushort shortdata; - - inputfile.readBigEndian(chardata); - if (chardata != 'M') { - std::cout << "File: " << aFile << " is not a MIDI file" << std::endl; - std::cout << "Chara data is" << chardata << std::endl; - return 0; - } - - inputfile.readBigEndian(chardata); - if (chardata != 'T') { - std::cout << "File: " << aFile << " is not a MIDI file" << std::endl; - return 0; - } - - inputfile.readBigEndian(chardata); - if (chardata != 'h') { - std::cout << "File: " << aFile << " is not a MIDI file" << std::endl; - return 0; - } - - inputfile.readBigEndian(chardata); - if (chardata != 'd') { - std::cout << "File: " << aFile << " is not a MIDI file" << std::endl; - return 0; - } - - // read header size - inputfile.readBigEndian(longdata); - if (longdata != 6) { - std::cout << "File: " << aFile - << " is not a MIDI 1.0 Standard MIDI file." << std::endl; - std::cout << "The header size is: " << longdata << std::endl; - return 0; - } - - // read file type - int type; - inputfile.readBigEndian(shortdata); - switch (shortdata) { - case 0: - type = 0; - break; - case 1: - type = 1; - break; - default: - std::cout << "Error: cannot handle type " << shortdata - << " MIDI file" << std::endl; - return 0; - } - - // read number of tracks - int tracks; - inputfile.readBigEndian(shortdata); - if (type == 0 && shortdata != 1) { - std::cout << "Error: Type 0 MIDI file can only contain one track" << std::endl; - return 0; - } else { - tracks = shortdata; - } - // std::cout << "Track count is: " << tracks << std::endl; - erase(); - if (events[0] != NULL) { - delete events[0]; - } - events.setSize(tracks); - for (int z=0; z<tracks; z++) { - events[z] = new Collection<_MFEvent>; - events[z]->setAllocSize(10000); - events[z]->setSize(0); - events[z]->allowGrowth(1); - } - - // read ticks per quarter note - short signeddata; - inputfile.readBigEndian(signeddata); - if (signeddata <= 0) { - std::cout << "Error: cannot handle SMTP tick values for quarter notes" - " yet" << std::endl; - return 0; - } - ticksPerQuarterNote = signeddata; - - ////////////////////////////////////////////////// - // - // now read individual tracks: - // - - uchar runningCommand = 0; - _MFEvent event; - int absticks; - int barline; - - for (int i=0; i<tracks; i++) { - // std::cout << "\nReading Track: " << i + 1 << flush; - // read track header... - - inputfile.readBigEndian(chardata); - if (chardata != 'M') { - std::cout << "File: " << aFile << " has bad track info" << std::endl; - std::cout << "character 1 is: " << (int)chardata << std::endl; - inputfile.readBigEndian(chardata); - if (inputfile.eof()) { - std::cout << "End of file reached" << std::endl; - } - return 0; - } - - inputfile.readBigEndian(chardata); - if (chardata != 'T') { - std::cout << "File: " << aFile << " has bad track info" << std::endl; - std::cout << "character 2 is: " << (int)chardata << std::endl; - return 0; - } - - inputfile.readBigEndian(chardata); - if (chardata != 'r') { - std::cout << "File: " << aFile << " has bad track info" << std::endl; - std::cout << "character 3 is: " << (int)chardata << std::endl; - return 0; - } - - inputfile.readBigEndian(chardata); - if (chardata != 'k') { - std::cout << "File: " << aFile << " has bad track info" << std::endl; - std::cout << "character 4 is: " << (int)chardata << std::endl; - return 0; - } - - // Now read track chunk size and throw it away because it is - // not really necessary since the track MUST end with an - // end of track meta event, and 50% of Midi files or so - // do not correctly give the track size. - inputfile.readBigEndian(longdata); - - // set the size of the track allocation so that it might - // approximately fit the data. - events[i]->setSize(longdata/2); - events[i]->setSize(0); - - // process the track - absticks = 0; - barline = 1; - while (!inputfile.eof()) { - longdata = extractVlvTime(inputfile); -//std::cout << "ticks = " << longdata << std::endl; - absticks += longdata; - extractMidiData(inputfile, event.data, runningCommand); -//std::cout << "command = " << std::hex << (int)event.data[0] << std::dec << std::endl; - if (event.data[0] == 0xff && (event.data[1] == 1 || - event.data[1] == 2 || event.data[1] == 3 || event.data[1] == 4)) { - // mididata.append('\0'); - // std::cout << '\t'; - // for (int m=0; m<event.data[2]; m++) { - // std::cout << event.data[m+3]; - // } - // std::cout.flush(); - } else if (event.data[0] == 0xff && event.data[1] == 0x2f) { - break; - } - - if (event.data[0] != 0xff && event.data[0] != 0xf0) { - event.time = absticks; - if ((event.data[0] & 0xf0) == 0x90) { - if (event.data[1] < 12) { - event.data[0] = event.data[1]; - switch (event.data[0]) { - case 2: event.data[2] = barline++; // barline - break; - case 0: break; // beat - } - } - } - event.track = i; - events[i]->append(event); - } else { - event.time = absticks; - event.track = i; - events[i]->append(event); - } - - } - - } - // std::cout << std::endl; - - theTimeState = TIME_STATE_ABSOLUTE; - return 1; -} - - - -////////////////////////////// -// -// MidiFile::setTicksPerQuarterNote -- -// - -void MidiFile::setTicksPerQuarterNote(int ticks) { - ticksPerQuarterNote = ticks; -} - - - -////////////////////////////// -// -// MidiFile::sortTrack -- -// - -void MidiFile::sortTrack(Collection<_MFEvent>& trackData) { - qsort(trackData.getBase(), trackData.getSize(), - sizeof(_MFEvent), eventcompare); -} - - - -////////////////////////////// -// -// MidiFile::sortTracks -- sort all tracks in the MidiFile. -// - -void MidiFile::sortTracks(void) { - for (int i=0; i<getTrackCount(); i++) { - sortTrack(*events[i]); - } -} - - - -////////////////////////////// -// -// MidiFile::splitTracks -- take the joined tracks and split them -// back into their separate track identities. -// - -void MidiFile::splitTracks(void) { - if (getTrackState() == TRACK_STATE_SPLIT) { - return; - } - - int oldTimeState = getTimeState(); - if (oldTimeState == TIME_STATE_DELTA) { - absoluteTime(); - } - - int maxTrack = 0; - int i; - int length = events[0]->getSize(); - for (i=0; i<length; i++) { - if ((*events[0])[i].track > maxTrack) { - maxTrack = (*events[0])[i].track; - } - } - - Collection<_MFEvent>* olddata = events[0]; - events[0] = NULL; - events.setSize(maxTrack); - for (i=0; i<maxTrack; i++) { - events[i] = new Collection<_MFEvent>; - events[i]->setSize(0); - events[i]->allowGrowth(); - } - - int trackValue = 0; - for (i=0; length; i++) { - trackValue = (*olddata)[i].track; - events[trackValue]->append((*olddata)[i]); - } - - delete olddata; - - if (oldTimeState == TIME_STATE_DELTA) { - deltaTime(); - } -} - - - -////////////////////////////// -// -// MidiFile::timeState -- returns what type of time method is -// being used: either TIME_STATE_ABSOLUTE or TIME_STATE_DELTA. -// - -int MidiFile::getTimeState(void) { - return theTimeState; -} - - - -////////////////////////////// -// -// MidiFile::getTrackState -- returns what type of track method -// is being used: either TRACK_STATE_JOINED or TRACK_STATE_SPLIT. -// - -int MidiFile::getTrackState(void) { - return theTrackState; -} - - - -////////////////////////////// -// -// MidiFile::write -- write a standard MIDI file from data. -// - -int MidiFile::write(const char* aFile) { - int oldTimeState = getTimeState(); - if (oldTimeState == TIME_STATE_ABSOLUTE) { - deltaTime(); - } - - #ifdef VISUAL - FileIO outputfile(aFile, ios::out | ios::noreplace | ios::binary); - #else - // ios::noreplace does not exists anymore in GCC 3.x - FileIO outputfile(aFile, std::ios::out /* | std::ios::noreplace */); - #endif - - if (!outputfile.is_open()) { - std::cout << "Error: could not write: " << aFile << std::endl; - exit(1); - } - - // write the header of the Standard MIDI File - - char ch; - // 1. The characters "MThd" - ch = 'M'; - outputfile.writeBigEndian(ch); - ch = 'T'; - outputfile.writeBigEndian(ch); - ch = 'h'; - outputfile.writeBigEndian(ch); - ch = 'd'; - outputfile.writeBigEndian(ch); - - // 2. write the size of the header (alwas a "6" stored in unsigned long - ulong longdata = 6; - outputfile.writeBigEndian(longdata); - - // 3. MIDI file format, type 0, 1, or 2 - ushort shortdata; - if (getNumTracks() == 1) { - shortdata = 0; - } else { - shortdata = 1; - } - outputfile.writeBigEndian(shortdata); - - // 4. write out the number of tracks. - shortdata = getNumTracks(); - outputfile.writeBigEndian(shortdata); - - // 5. write out the number of ticks per quarternote. (avoiding SMTPE for now) - shortdata = getTicksPerQuarterNote(); - outputfile.writeBigEndian(shortdata); - - // now write each track. - Array<uchar> trackdata; - uchar endoftrack[4] = {0, 0xff, 0x2f, 0x00}; - int i, j, k; - int size; - for (i=0; i<getNumTracks(); i++) { - trackdata.setSize(1000000); // make the track data larger than - // expected data input - trackdata.setGrowth(1000000); - trackdata.setSize(0); - trackdata.allowGrowth(); - for (j=0; j<events[i]->getSize(); j++) { - writeVLValue((*events[i])[j].time, trackdata); - for (k=0; k<(*events[i])[j].data.getSize(); k++) { - trackdata.append((*events[i])[j].data[k]); - } - } - size = trackdata.getSize(); - if ((trackdata[size-3] != 0xff) && (trackdata[size-2] != 0x2f)) { - trackdata.append(endoftrack[0]); - trackdata.append(endoftrack[1]); - trackdata.append(endoftrack[2]); - trackdata.append(endoftrack[3]); - } - - // now ready to write to MIDI file. - - // first write the track ID marker "MTrk": - ch = 'M'; - outputfile.writeBigEndian(ch); - ch = 'T'; - outputfile.writeBigEndian(ch); - ch = 'r'; - outputfile.writeBigEndian(ch); - ch = 'k'; - outputfile.writeBigEndian(ch); - - // A. write the size of the MIDI data to follow: - longdata = trackdata.getSize(); - outputfile.writeBigEndian(longdata); - - // B. write the actual data - outputfile.write((char*)trackdata.getBase(), trackdata.getSize()); - } - - if (oldTimeState == TIME_STATE_ABSOLUTE) { - absoluteTime(); - } - - outputfile.close(); - - return 1; -} - - - -/////////////////////////////////////////////////////////////////////////// -// -// private functions -// - - -////////////////////////////// -// -// MidiF::extractMidiData -- -// - -void MidiFile::extractMidiData(FileIO& inputfile, Array<uchar>& array, - uchar& runningCommand) { - - uchar byte; - array.setSize(0); - array.allowGrowth(); - int runningQ; - - inputfile.readBigEndian(byte); - - if (byte < 0x80) { - runningQ = 1; - if (runningCommand == 0) { - std::cout << "Error: running command with no previous command" << std::endl; - exit(1); - } - } else { - runningCommand = byte; - runningQ = 0; - } - - array.append(runningCommand); - if (runningQ) { - array.append(byte); - } - - uchar metai; - switch (runningCommand & 0xf0) { - case 0x80: // note off (2 more bytes) - case 0x90: // note on (2 more bytes) - case 0xA0: // aftertouch (2 more bytes) - case 0xB0: // cont. controller (2 more bytes) - case 0xE0: // pitch wheel (2 more bytes) - inputfile.readBigEndian(byte); - array.append(byte); - if (!runningQ) { - inputfile.readBigEndian(byte); - array.append(byte); - } - break; - case 0xC0: // patch change (1 more byte) - case 0xD0: // channel pressure (1 more byte) - if (!runningQ) { - inputfile.readBigEndian(byte); - array.append(byte); - } - break; - case 0xF0: - switch (runningCommand) { - case 0xff: // meta event - { - if (!runningQ) { - inputfile.readBigEndian(byte); // meta type - array.append(byte); - } - inputfile.readBigEndian(metai); // meta size - array.append(metai); - for (uchar j=0; j<metai; j++) { - inputfile.readBigEndian(byte); // meta data - array.append(byte); - } - } - break; - case 0xf0: // sysex - // read until you find a 0xf7 character - byte = 0; - while (byte != 0xf7 && !inputfile.eof()) { - inputfile.readBigEndian(byte); // meta data - } - break; - } - break; - default: - std::cout << "Error reading midifile" << std::endl; - std::cout << "Command byte was " << (int)runningCommand << std::endl; - exit(1); - } -} - - - -////////////////////////////// -// -// MidiF::extractVlvTime -- -// - -ulong MidiFile::extractVlvTime(FileIO& inputfile) { - uchar b[5] = {0}; - - for (int i=0; i<5; i++) { - inputfile.readBigEndian(b[i]); - if (b[i] < 0x80) { - break; - } - } - - return unpackVLV(b[0], b[1], b[2], b[3], b[4]); -} - - - -////////////////////////////// -// -// MidiF::unpackVLV -- converts a VLV value to pure unsigned long value. -// default values: a = b = c = d = e = 0; -// - -ulong MidiFile::unpackVLV(uchar a, uchar b, uchar c, uchar d, uchar e) { - if (e > 0x7f) { - std::cout << "Error: VLV value was too long" << std::endl; - exit(1); - } - - uchar bytes[5] = {a, b, c, d, e}; - int count = 0; - while (bytes[count] > 0x7f && count < 5) { - count++; - } - count++; - - ulong output = 0; - for (int i=0; i<count; i++) { - output = output << 7; - output = output | (bytes[i] & 0x7f); - } - - return output; -} - - -////////////////////////////// -// -// MidiFileWrite::writeVLValue -- write a number to the midifile -// as a variable length value which segments a file into 7-bit -// values. Maximum size of aValue is 0x7fffffff -// - -void MidiFile::writeVLValue(long aValue, Array<uchar>& outdata) { - uchar bytes[5] = {0}; - bytes[0] = (uchar)(((ulong)aValue >> 28) & 0x7f); // most significant 5 bits - bytes[1] = (uchar)(((ulong)aValue >> 21) & 0x7f); // next largest 7 bits - bytes[2] = (uchar)(((ulong)aValue >> 14) & 0x7f); - bytes[3] = (uchar)(((ulong)aValue >> 7) & 0x7f); - bytes[4] = (uchar)(((ulong)aValue) & 0x7f); // least significant 7 bits - - int start = 0; - while (start<5 && bytes[start] == 0) start++; - - for (int i=start; i<4; i++) { - bytes[i] = bytes[i] | 0x80; - outdata.append(bytes[i]); - } - outdata.append(bytes[4]); -} - - -///////////////////////////////////////////////////////////////////////////////////////////////////////// -// -// external functions -// - - -////////////////////////////// -// -// eventcompare -- for sorting the tracks -// - -int eventcompare(const void* a, const void* b) { - _MFEvent& aevent = *((_MFEvent*)a); - _MFEvent& bevent = *((_MFEvent*)b); - - if (aevent.time > bevent.time) { - return 1; - } else if (aevent.time < bevent.time) { - return -1; - } else if (aevent.data[0] == 0xff && bevent.data[0] != 0xff) { - return 1; - } else if (bevent.data[0] == 0xff && aevent.data[0] != 0xff) { - return -1; - } else if (bevent.data[0] == 0xff && bevent.data[1] == 0x2f) { - return -1; - } else if (aevent.data[0] == 0xff && aevent.data[1] == 0x2f) { - return 1; - } else { - return 0; - } -} - - - -////////////////////////////// -// -// operator<< -- for printing an ASCII version of the MIDI file -// - -std::ostream& operator<<(std::ostream& out, MidiFile& aMidiFile) { - int i, j, k; - out << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n"; - out << "Number of Tracks: " << aMidiFile.getTrackCount() << "\n"; - out << "Time method: " << aMidiFile.getTimeState(); - if (aMidiFile.getTimeState() == TIME_STATE_DELTA) { - out << " (Delta timing)"; - } else if (aMidiFile.getTimeState() == TIME_STATE_ABSOLUTE) { - out << " (Absolute timing)"; - } else { - out << " (unknown method)"; - } - out << "\n"; - - out << "Divisions per Quarter Note: " << std::dec << aMidiFile.getTicksPerQuarterNote() << "\n"; - for (i=0; i<aMidiFile.getNumTracks(); i++) { - out << "\nTrack " << i - << " +++++++++++++++++++++++++++++++++++++++++++++++++++\n\n"; - for (j=0; j<aMidiFile.getNumEvents(i); j++) { - out << std::dec << aMidiFile.getEvent(i, j).time << "\t" - << "0x" << std::hex << (int)aMidiFile.getEvent(i, j).data[0] << " "; - if (aMidiFile.getEvent(i, j).data[0] == 0xff) { - - if (aMidiFile.getEvent(i, j).data[1] == 0x01) { - out << "TEXT ["; - for (k=3; k<aMidiFile.getEvent(i, j).data.getSize(); k++) { - out << (char)aMidiFile.getEvent(i, j).data[k]; - } - out << "]"; - - } else if (aMidiFile.getEvent(i, j).data[1] == 0x02) { - out << "COPY ["; - for (k=3; k<aMidiFile.getEvent(i, j).data.getSize(); k++) { - out << (char)aMidiFile.getEvent(i, j).data[k]; - } - out << "]"; - - } else if (aMidiFile.getEvent(i, j).data[1] == 0x03) { - out << "TRACK ["; - for (k=3; k<aMidiFile.getEvent(i, j).data.getSize(); k++) { - out << (char)aMidiFile.getEvent(i, j).data[k]; - } - out << "]"; - - } else if (aMidiFile.getEvent(i, j).data[1] == 0x04) { - out << "INSTR ["; - for (k=3; k<aMidiFile.getEvent(i, j).data.getSize(); k++) { - out << (char)aMidiFile.getEvent(i, j).data[k]; - } - out << "]"; - - } else if (aMidiFile.getEvent(i, j).data[1] == 0x05) { - out << "LYRIC ["; - for (k=3; k<aMidiFile.getEvent(i, j).data.getSize(); k++) { - out << (char)aMidiFile.getEvent(i, j).data[k]; - } - out << "]"; - - } else { - for (k=1; k<aMidiFile.getEvent(i, j).data.getSize(); k++) { - out << std::dec << (int)aMidiFile.getEvent(i, j).data[k] << " "; - } - } - - } else { - for (k=1; k<aMidiFile.getEvent(i, j).data.getSize(); k++) { - out << std::dec << (int)aMidiFile.getEvent(i, j).data[k] << " "; - } - } - out << "\n"; - } - } - out << "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n"; - return out; -} - - - -// md5sum: cd4fb330dd874cc263921ec55222a199 - MidiFile.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/src/MidiFileWrite.cpp b/extensions/gripd/src/midiio/src/MidiFileWrite.cpp deleted file mode 100644 index a22e70c900a2680f3d56e88f80ddb5b4b0e28496..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/src/MidiFileWrite.cpp +++ /dev/null @@ -1,259 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Sun Mar 15 10:55:56 GMT-0800 1998 -// Last Modified: Sun Mar 15 10:55:56 GMT-0800 1998 -// Filename: ...sig/code/control/MidiFileWrite/MidiFileWrite.cpp -// Web Address: http://www-ccrma.stanford.edu/~craig/improv/src/MidiFileWrite.cpp -// Syntax: C++ -// -// Description: The MidiFileWrite class will write out a Type 0 MidiFile. -// Used for recording MIDI data streams into Standard -// MIDI files. -// - -#include "MidiFileWrite.h" -#include "SigTimer.h" -#include <assert.h> - - -////////////////////////////// -// -// MidiFileWrite::MidiFileWrite -// default value: startTime = -1 -// - -MidiFileWrite::MidiFileWrite(void) { - trackSize = 0; - lastPlayTime = 0; - midifile = NULL; - openQ = 0; -} - - -MidiFileWrite::MidiFileWrite(const char* aFilename, int startTime) { - trackSize = 0; - lastPlayTime = 0; - midifile = NULL; - openQ = 0; - setup(aFilename, startTime); -} - - - -////////////////////////////// -// -// MidiFileWrite::~MidiFileWrite -// - -MidiFileWrite::~MidiFileWrite() { - close(); -} - - - -////////////////////////////// -// -// MidiFileWrite::close -// - -void MidiFileWrite::close(void) { - writeRaw(0, 0xff, 0x2f, 0); // end of track meta event - - midifile->seekg(18); - midifile->writeBigEndian(trackSize); - - midifile->close(); - - midifile = NULL; - openQ = 0; -} - - - -////////////////////////////// -// -// MidiFileWrite::setup -- writes the Midi file header and -// prepares the midifile for writing of data -// default value: startTime = -1 -// - -void MidiFileWrite::setup(const char* aFilename, int startTime) { - if (openQ) { - close(); - } - - if (midifile != NULL) delete midifile; - midifile = new FileIO; - midifile->open(aFilename, std::ios::out); - - // write the header chunk - *midifile << "MThd"; // file identification: MIDI file - midifile->writeBigEndian(6L); // size of header (always 6) - midifile->writeBigEndian((short)0); // format: type 0; - midifile->writeBigEndian((short)0); // num of tracks (always 0 for type 0) - midifile->writeBigEndian((short)1000); // divisions per quarter note - - - // write the track header - *midifile << "MTrk"; - midifile->writeBigEndian(0xffffL); // the track size which will - // be corrected with close() - - - // the midifile stream is now setup for writing - // track events - - openQ = 1; - - start(); // start can be called later and will behave well - // as long as no track events have been written -} - - - -////////////////////////////// -// -// MidiFileWrite::start -// default value: startTime = -1; -// - -void MidiFileWrite::start(int startTime) { - if (startTime < 0) { - SigTimer localTime; - lastPlayTime = localTime.getTime(); - } else { - lastPlayTime = startTime; - } -} - - - -////////////////////////////// -// -// MidiFileWrite::writeAbsolute -- considers the time data -// to be the current time. It will generate a difference -// time with the previously stored last playing time. -// - -void MidiFileWrite::writeAbsolute(int aTime, int command, int p1, int p2) { - writeVLValue(aTime - lastPlayTime); - writeRaw((uchar)command, (uchar)p1, (uchar)p2); - lastPlayTime = aTime; -} - -void MidiFileWrite::writeAbsolute(int aTime, int command, int p1) { - writeVLValue(aTime - lastPlayTime); - writeRaw((uchar)command, (uchar)p1); - lastPlayTime = aTime; -} - -void MidiFileWrite::writeAbsolute(int aTime, int command) { - writeVLValue(aTime - lastPlayTime); - writeRaw((uchar)command); - lastPlayTime = aTime; -} - - - -////////////////////////////// -// -// MidiFileWrite::writeRaw -- write an event byte to the midifile -// - -void MidiFileWrite::writeRaw(uchar aByte) { - assert(midifile != NULL); - *midifile << aByte; - trackSize++; -} - - -void MidiFileWrite::writeRaw(uchar aByte, uchar bByte) { - writeRaw(aByte); - writeRaw(bByte); -} - - -void MidiFileWrite::writeRaw(uchar aByte, uchar bByte, uchar cByte) { - writeRaw(aByte); - writeRaw(bByte); - writeRaw(cByte); -} - - -void MidiFileWrite::writeRaw(uchar aByte, uchar bByte, uchar cByte, - uchar dByte) { - writeRaw(aByte); - writeRaw(bByte); - writeRaw(cByte); - writeRaw(dByte); -} - - -void MidiFileWrite::writeRaw(uchar aByte, uchar bByte, uchar cByte, - uchar dByte, uchar eByte) { - writeRaw(aByte); - writeRaw(bByte); - writeRaw(cByte); - writeRaw(dByte); - writeRaw(eByte); -} - - -void MidiFileWrite::writeRaw(uchar* anArray, int arraySize) { - for (int i=0; i<arraySize; i++) { - writeRaw(anArray[i]); - } -} - - - -////////////////////////////// -// -// MidiFileWrite::writeRelative -- cosiders the time data -// to be a delta time from the last input message. -// - -void MidiFileWrite::writeRelative(int aTime, int command, int p1, int p2) { - writeVLValue(aTime); - writeRaw((uchar)command, (uchar)p1, (uchar)p2); - lastPlayTime += aTime; -} - -void MidiFileWrite::writeRelative(int aTime, int command, int p1) { - writeVLValue(aTime); - writeRaw((uchar)command, (uchar)p1); - lastPlayTime += aTime; -} - -void MidiFileWrite::writeRelative(int aTime, int command) { - writeVLValue(aTime); - writeRaw((uchar)command); - lastPlayTime += aTime; -} - - -////////////////////////////// -// -// MidiFileWrite::writeVLValue -- write a number to the midifile -// as a variable length value which segments a file into 7-bit -// values. Maximum size of aValue is 0x7fffffff -// - -void MidiFileWrite::writeVLValue(long aValue) { - uchar bytes[5]; - bytes[0] = (uchar)((aValue >> 28) & 0x7f); // most significant 5 bits - bytes[1] = (uchar)((aValue >> 21) & 0x7f); // next largest 7 bits - bytes[2] = (uchar)((aValue >> 14) & 0x7f); - bytes[3] = (uchar)((aValue >> 7) & 0x7f); - bytes[4] = (uchar)((aValue) & 0x7f); // least significant 7 bits - - int start = 0; - while (start<5 && bytes[start] == 0) start++; - - for (int i=start; i<4; i++) { - writeRaw((uchar)(bytes[i] | 0x80)); - } - writeRaw(bytes[4]); -} - -// md5sum: 251468fa23862745f0cf36f359bccc17 - MidiFileWrite.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/src/MidiIO.cpp b/extensions/gripd/src/midiio/src/MidiIO.cpp deleted file mode 100644 index 26363f2b6645073f885c252237fd6600f4dbce3d..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/src/MidiIO.cpp +++ /dev/null @@ -1,283 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: 21 December 1997 -// Last Modified: Sun Jan 25 15:45:18 GMT-0800 1998 -// Filename: ...sig/code/control/MidiIO/MidiIO.cpp -// Web Address: http://www-ccrma.stanford.edu/~craig/improv/src/MidiIO.cpp -// Syntax: C++ -// -// Description: A unified class for MidiInput and MidiOutput that handles -// MIDI input and output connections. The Synthesizer -// and RadioBaton classes are derived from this class. -// - -#include "MidiIO.h" - - -////////////////////////////// -// -// MidiIO::MidiIO -// - -MidiIO::MidiIO(void) : MidiOutput(), MidiInput() { - // does nothing -} - - -MidiIO::MidiIO(int outPort, int inPort) : - MidiOutput(outPort), MidiInput(inPort) { - // does nothing -} - - - -////////////////////////////// -// -// MidiIO::~MidiIO -// - -MidiIO::~MidiIO() { - // does nothing -} - - - -////////////////////////////// -// -// MidiIO::close -// - -void MidiIO::close(void) { - MidiInput::close(); - MidiOutput::close(); -} - - - -////////////////////////////// -// -// MidiIO::closeInput -// - -void MidiIO::closeInput(void) { - MidiInput::close(); -} - - - -////////////////////////////// -// -// MidiIO::closeOutput -// - -void MidiIO::closeOutput(void) { - MidiOutput::close(); -} - - - -////////////////////////////// -// -// MidiIO::getChannelInOffset -- return the MIDI channel offset of -// the MIDI input. -// - -int MidiIO::getChannelInOffset(void) const { - return MidiInPort::getChannelOffset(); -} - - - -////////////////////////////// -// -// MidiIO::getChannelOutOffset -- return the MIDI channel offset of -// the MIDI output. -// - -int MidiIO::getChannelOutOffset (void) const { - return MidiOutPort::getChannelOffset(); -} - - - -////////////////////////////// -// -// MidiIO::getInputPort -// - -int MidiIO::getInputPort(void) { - return MidiInput::getPort(); -} - - - -////////////////////////////// -// -// MidiIO::getInputTrace -// - -int MidiIO::getInputTrace(void) { - return MidiInput::getTrace(); -} - - - -////////////////////////////// -// -// MidiIO::getNumInputPorts -// - -int MidiIO::getNumInputPorts(void) { - return MidiInput::getNumPorts(); -} - - - -////////////////////////////// -// -// MidiIO::getNumOutputPorts -// - -int MidiIO::getNumOutputPorts(void) { - return MidiOutput::getNumPorts(); -} - - - -////////////////////////////// -// -// MidiIO::getOutputPort -// - -int MidiIO::getOutputPort(void) { - return MidiOutput::getPort(); -} - - - -////////////////////////////// -// -// MidiIO::getOutputTrace -// - -int MidiIO::getOutputTrace(void) { - return MidiOutput::getTrace(); -} - - - -////////////////////////////// -// -// MidiIO::open -// - -int MidiIO::open(void) { - if (MidiInput::open()) { - return MidiOutput::open(); - } else { - return 0; - } -} - - - -////////////////////////////// -// -// MidiIO::openInput -// - -int MidiIO::openInput(void) { - return MidiInput::open(); -} - - - -////////////////////////////// -// -// MidiIO::openOutput -// - -int MidiIO::openOutput(void) { - return MidiOutput::open(); -} - - - -////////////////////////////// -// -// MidiIO::setChannelOffset -- sets the MIDI channel offset -// - -void MidiIO::setChannelOffset(int anOffset) { - MidiInPort::setChannelOffset(anOffset); - MidiOutPort::setChannelOffset(anOffset); -} - - - -////////////////////////////// -// -// MidiIO::setInputPort -// - -void MidiIO::setInputPort(int aPort) { - MidiInput::setPort(aPort); -} - - - -////////////////////////////// -// -// MidiIO::setInputTrace -// - -void MidiIO::setInputTrace(int aState) { - MidiInput::setTrace(aState); -} - - - -////////////////////////////// -// -// MidiIO::setOutputPort -// - -void MidiIO::setOutputPort(int aPort) { - MidiOutput::setPort(aPort); -} - - - -////////////////////////////// -// -// MidiIO::setOutputTrace -// - -void MidiIO::setOutputTrace(int aState) { - MidiOutput::setTrace(aState); -} - - - -////////////////////////////// -// -// MidiIO::toggleInputTrace -// - -void MidiIO::toggleInputTrace(void) { - MidiInput::toggleTrace(); -} - - -////////////////////////////// -// -// MidiIO::toggleOutputTrace -// - -void MidiIO::toggleOutputTrace(void) { - MidiOutput::toggleTrace(); -} - - - -// md5sum: 860227c67236eb6f8897ae67f1338cb0 - MidiIO.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/src/MidiInPort_alsa.cpp b/extensions/gripd/src/midiio/src/MidiInPort_alsa.cpp deleted file mode 100644 index 55d22b058a83bba98ea3e0370e4eb9f2a204b1d8..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/src/MidiInPort_alsa.cpp +++ /dev/null @@ -1,1038 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Sun May 14 22:03:16 PDT 2000 -// Last Modified: Sat Oct 13 16:11:10 PDT 2001 (updated for ALSA 0.9) -// Last Modified: Fri Oct 26 14:41:36 PDT 2001 (running status for 0xa0 and 0xd0 -// fixed by Daniel Gardner) -// Last Modified: Mon Nov 19 17:52:15 PST 2001 (thread on exit improved) -// Filename: ...sig/code/control/MidiInPort/linux/MidiInPort_alsa.cpp -// Web Address: http://sig.sapp.org/src/sig/MidiInPort_alsa.cpp -// Syntax: C++ -// -// Description: An interface for MIDI input capabilities of -// linux ALSA sound driver's specific MIDI input methods. -// This class is inherited privately by the MidiInPort class. -// - -#if defined(LINUX) && defined(ALSA) - -#include "MidiInPort_alsa.h" -#include <iostream> -#include <stdlib.h> -#include <pthread.h> -#include <alsa/asoundlib.h> -#include <unistd.h> - -#define DEFAULT_INPUT_BUFFER_SIZE (1024) - -// initialized static variables - -int MidiInPort_alsa::numDevices = 0; -int MidiInPort_alsa::objectCount = 0; -int* MidiInPort_alsa::portObjectCount = NULL; -CircularBuffer<MidiMessage>** MidiInPort_alsa::midiBuffer = NULL; -int MidiInPort_alsa::channelOffset = 0; -SigTimer MidiInPort_alsa::midiTimer; -int* MidiInPort_alsa::pauseQ = NULL; -int* MidiInPort_alsa::trace = NULL; -std::ostream* MidiInPort_alsa::tracedisplay = &std::cout; -Array<pthread_t> MidiInPort_alsa::midiInThread; -int* MidiInPort_alsa::sysexWriteBuffer = NULL; -Array<uchar>** MidiInPort_alsa::sysexBuffers = NULL; - -Array<int> MidiInPort_alsa::threadinitport; - - - -////////////////////////////// -// -// MidiInPort_alsa::MidiInPort_alsa -// default values: autoOpen = 1 -// - -MidiInPort_alsa::MidiInPort_alsa(void) { - if (objectCount == 0) { - initialize(); - } - objectCount++; - - port = -1; - setPort(0); -} - - -MidiInPort_alsa::MidiInPort_alsa(int aPort, int autoOpen) { - if (objectCount == 0) { - initialize(); - } - objectCount++; - - port = -1; - setPort(aPort); - if (autoOpen) { - open(); - } -} - - - -////////////////////////////// -// -// MidiInPort_alsa::~MidiInPort_alsa -// - -MidiInPort_alsa::~MidiInPort_alsa() { - objectCount--; - if (objectCount == 0) { - deinitialize(); - } else if (objectCount < 0) { - std::cerr << "Error: bad MidiInPort_alsa object count!: " - << objectCount << std::endl; - exit(1); - } -} - - - -////////////////////////////// -// -// MidiInPort_alsa::clearSysex -- clears the data from a sysex -// message and sets the allocation size to the default size (of 32 -// bytes). -// - -void MidiInPort_alsa::clearSysex(int buffer) { - buffer = 0x7f | buffer; // limit buffer range from 0 to 127 - - if (getPort() == -1) { - return; - } - - sysexBuffers[getPort()][buffer].setSize(0); - if (sysexBuffers[getPort()][buffer].getAllocSize() != 32) { - // shrink the storage buffer's size if necessary - sysexBuffers[getPort()][buffer].setAllocSize(32); - } -} - - -void MidiInPort_alsa::clearSysex(void) { - // clear all sysex buffers - for (int i=0; i<128; i++) { - clearSysex(i); - } -} - - - -////////////////////////////// -// -// MidiInPort_alsa::close -// - -void MidiInPort_alsa::close(void) { - if (getPort() == -1) return; - - pauseQ[getPort()] = 1; - Sequencer_alsa::closeInput(getPort()); -} - - - -////////////////////////////// -// -// MidiInPort_alsa::closeAll -- -// - -void MidiInPort_alsa::closeAll(void) { - for (int i=0; i<getNumPorts(); i++) { - pauseQ[i] = 1; - Sequencer_alsa::closeInput(i); - } -} - - - -////////////////////////////// -// -// MidiInPort_alsa::extract -- returns the next MIDI message -// received since that last extracted message. -// - -MidiMessage MidiInPort_alsa::extract(void) { - if (getPort() == -1) { - MidiMessage temp; - return temp; - } - - return midiBuffer[getPort()]->extract(); -} - - - -////////////////////////////// -// -// MidiInPort_alsa::getBufferSize -- returns the maximum possible number -// of MIDI messages that can be stored in the buffer -// - -int MidiInPort_alsa::getBufferSize(void) { - if (getPort() == -1) return 0; - - return midiBuffer[getPort()]->getSize(); -} - - - -////////////////////////////// -// -// MidiInPort_alsa::getChannelOffset -- returns zero if MIDI channel -// offset is 0, or 1 if offset is 1. -// - -int MidiInPort_alsa::getChannelOffset(void) const { - return channelOffset; -} - - - -////////////////////////////// -// -// MidiInPort_alsa::getCount -- returns the number of unexamined -// MIDI messages waiting in the input buffer. -// - -int MidiInPort_alsa::getCount(void) { - if (getPort() == -1) return 0; - return midiBuffer[getPort()]->getCount(); -} - - - -////////////////////////////// -// -// MidiInPort_alsa::getName -- returns the name of the port. -// returns "" if no name. Name is valid until all instances -// of MIDI classes are. -// - -const char* MidiInPort_alsa::getName(void) { - if (getPort() == -1) { - return "Null ALSA MIDI Input"; - } - return getInputName(getPort()); -} - - -const char* MidiInPort_alsa::getName(int i) { - return getInputName(i); -} - - - -////////////////////////////// -// -// MidiInPort_alsa::getNumPorts -- returns the number of available -// ports for MIDI input -// - -int MidiInPort_alsa::getNumPorts(void) { - return getNumInputs(); -} - - - -////////////////////////////// -// -// MidiInPort_alsa::getPort -- returns the port to which this -// object belongs (as set with the setPort function). -// - -int MidiInPort_alsa::getPort(void) { - return port; -} - - - -////////////////////////////// -// -// MidiInPort_alsa::getPortStatus -- 0 if closed, 1 if open -// - -int MidiInPort_alsa::getPortStatus(void) { - return is_open_in(getPort()); -} - - - -////////////////////////////// -// -// MidiInPort_alsa::getSysex -- returns the sysex message contents -// of a given buffer. You should check to see that the size is -// non-zero before looking at the data. The data pointer will -// be NULL if there is no data in the buffer. -// - -uchar* MidiInPort_alsa::getSysex(int buffer) { - buffer &= 0x7f; // limit the buffer access to indices 0 to 127. - if (getPort() == -1) { - return NULL; - } - - if (sysexBuffers[getPort()][buffer].getSize() < 2) { - return NULL; - } else { - return sysexBuffers[getPort()][buffer].getBase(); - } -} - - - -////////////////////////////// -// -// MidiInPort_alsa::getSysexSize -- returns the sysex message byte -// count of a given buffer. Buffers are in the range from -// 0 to 127. -// - -int MidiInPort_alsa::getSysexSize(int buffer) { - if (getPort() == -1) { - return 0; - } else { - return sysexBuffers[getPort()][buffer & 0x7f].getSize(); - } -} - - - -////////////////////////////// -// -// MidiInPort_alsa::getTrace -- returns true if trace is on or false -// if trace is off. if trace is on, then prints to standard -// output the Midi message received. -// - -int MidiInPort_alsa::getTrace(void) { - if (getPort() == -1) return -1; - - return trace[getPort()]; -} - - - -////////////////////////////// -// -// MidiInPort_alsa::insert -// - -void MidiInPort_alsa::insert(const MidiMessage& aMessage) { - if (getPort() == -1) return; - - midiBuffer[getPort()]->insert(aMessage); -} - - - -////////////////////////////// -// -// MidiInPort_alsa::installSysex -- put a sysex message into a -// buffer. The buffer number that it is put into is returned. -// - -int MidiInPort_alsa::installSysex(uchar* anArray, int aSize) { - if (getPort() == -1) { - return -1; - } else { - return installSysexPrivate(getPort(), anArray, aSize); - } -} - - - -////////////////////////////// -// -// MidiInPort_alsa::installSysexPrivate -- put a sysex message into a -// buffer. The buffer number that it is put into is returned. -// - -int MidiInPort_alsa::installSysexPrivate(int port, uchar* anArray, int aSize) { - // choose a buffer to install sysex data into: - int bufferNumber = sysexWriteBuffer[port]; - sysexWriteBuffer[port]++; - if (sysexWriteBuffer[port] >= 128) { - sysexWriteBuffer[port] = 0; - } - - // copy contents of sysex message into the chosen buffer - sysexBuffers[port][bufferNumber].setSize(aSize); - uchar* dataptr = sysexBuffers[port][bufferNumber].getBase(); - uchar* indataptr = anArray; - for (int i=0; i<aSize; i++) { - *dataptr = *indataptr; - dataptr++; - indataptr++; - } - - // return the buffer number that was used - return bufferNumber; -} - - - -////////////////////////////// -// -// MidiInPort_alsa::message -- look at an incoming MIDI message -// without extracting it from the input buffer. -// - -MidiMessage& MidiInPort_alsa::message(int index) { - if (getPort() == -1) { - static MidiMessage x; - return x; - } - - CircularBuffer<MidiMessage>& temp = *midiBuffer[getPort()]; - return temp[index]; -} - - - -////////////////////////////// -// -// MidiInPort_alsa::open -- returns true if MIDI input port was -// opened. -// - -int MidiInPort_alsa::open(void) { - if (getPort() == -1) return 0; - - int status = Sequencer_alsa::openInput(getPort()); - if (status) { - pauseQ[getPort()] = 0; - return 1; - } else { - pauseQ[getPort()] = 1; - return 0; - } - - return 0; -} - - - -////////////////////////////// -// -// MidiInPort_alsa::pause -- stop the Midi input port from -// inserting MIDI messages into the buffer, but keeps the -// port open. Use unpause() to reverse the effect of pause(). -// - -void MidiInPort_alsa::pause(void) { - if (getPort() == -1) return; - - pauseQ[getPort()] = 1; -} - - - -////////////////////////////// -// -// MidiInPort_alsa::setBufferSize -- sets the allocation -// size of the MIDI input buffer. -// - -void MidiInPort_alsa::setBufferSize(int aSize) { - if (getPort() == -1) return; - - midiBuffer[getPort()]->setSize(aSize); -} - - - -////////////////////////////// -// -// MidiInPort_alsa::setChannelOffset -- sets the MIDI chan offset, -// either 0 or 1. -// - -void MidiInPort_alsa::setChannelOffset(int anOffset) { - switch (anOffset) { - case 0: channelOffset = 0; break; - case 1: channelOffset = 1; break; - default: - std::cout << "Error: Channel offset can be only 0 or 1." << std::endl; - exit(1); - } -} - - - -////////////////////////////// -// -// MidiInPort_alsa::setPort -- -// - -void MidiInPort_alsa::setPort(int aPort) { -// if (aPort == -1) return; - if (aPort < -1 || aPort >= getNumPorts()) { -// std::cerr << "Error: maximum port number is: " << getNumPorts()-1 -// << ", but you tried to access port: " << aPort << std::endl; -// exit(1); - } - else { - if (port != -1) { - portObjectCount[port]--; - } - port = aPort; - if (port != -1) { - portObjectCount[port]++; - } - } -} - - - -////////////////////////////// -// -// MidiInPort_alsa::setTrace -- if false, then don't print MIDI messages -// to the screen. -// - -int MidiInPort_alsa::setTrace(int aState) { - if (getPort() == -1) return -1; - - - int oldtrace = trace[getPort()]; - if (aState == 0) { - trace[getPort()] = 0; - } else { - trace[getPort()] = 1; - } - return oldtrace; -} - - - -////////////////////////////// -// -// MidiInPort_alsa::toggleTrace -- switches the state of trace -// Returns the previous value of the trace variable. -// - -void MidiInPort_alsa::toggleTrace(void) { - if (getPort() == -1) return; - - trace[getPort()] = !trace[getPort()]; -} - - - -////////////////////////////// -// -// MidiInPort_alsa::unpause -- enables the Midi input port -// to inserting MIDI messages into the buffer after the -// port is already open. -// - -void MidiInPort_alsa::unpause(void) { - if (getPort() == -1) return; - - pauseQ[getPort()] = 0; -} - - - -/////////////////////////////////////////////////////////////////////////// -// -// Private functions -// - - - -////////////////////////////// -// -// MidiInPort_alsa::deinitialize -- sets up storage if necessary -// This function should be called if the current object is -// the first object to be created. -// - -void MidiInPort_alsa::deinitialize(void) { - closeAll(); - - for (int i=0; i<getNumPorts(); i++) { - if (sysexBuffers != NULL && sysexBuffers[i] != NULL) { - delete [] sysexBuffers[i]; - sysexBuffers[i] = NULL; - } - } - - if (sysexBuffers != NULL) { - delete [] sysexBuffers; - sysexBuffers = NULL; - } - - if (midiBuffer != NULL) { - delete [] midiBuffer; - midiBuffer = NULL; - } - - if (portObjectCount != NULL) { - delete [] portObjectCount; - portObjectCount = NULL; - } - - if (trace != NULL) { - delete [] trace; - trace = NULL; - } - - if (pauseQ != NULL) { - delete [] pauseQ; - pauseQ = NULL; - } -} - - - -////////////////////////////// -// -// MidiInPort_alsa::initialize -- sets up storage if necessary -// This function should be called if the current object is -// the first object to be created. -// - -void MidiInPort_alsa::initialize(void) { - // set the number of ports - numDevices = Sequencer_alsa::indevcount; - - if (getNumPorts() <= 0) { -// std::cerr << "Warning: no MIDI input devices" << std::endl; - } else { - - // allocate space for pauseQ, the port pause status - if (pauseQ != NULL) { - delete [] pauseQ; - } - pauseQ = new int[numDevices]; - - // allocate space for object count on each port: - if (portObjectCount != NULL) { - delete [] portObjectCount; - } - portObjectCount = new int[numDevices]; - - // allocate space for object count on each port: - if (trace != NULL) { - delete [] trace; - } - trace = new int[numDevices]; - - // allocate space for the Midi input buffers - if (midiBuffer != NULL) { - delete [] midiBuffer; - } - midiBuffer = new CircularBuffer<MidiMessage>*[numDevices]; - - // allocate space for Midi input sysex buffer write indices - if (sysexWriteBuffer != NULL) { - delete [] sysexWriteBuffer; - } - sysexWriteBuffer = new int[numDevices]; - - // allocate space for Midi input sysex buffers - if (sysexBuffers != NULL) { - std::cout << "Error: memory leak on sysex buffers initialization" << std::endl; - exit(1); - } - sysexBuffers = new Array<uchar>*[numDevices]; - - int flag; - midiInThread.setSize(getNumPorts()); - threadinitport.setSize(getNumPorts()); - // initialize the static arrays - for (int i=0; i<getNumPorts(); i++) { - portObjectCount[i] = 0; - trace[i] = 0; - pauseQ[i] = 0; - midiBuffer[i] = new CircularBuffer<MidiMessage>; - midiBuffer[i]->setSize(DEFAULT_INPUT_BUFFER_SIZE); - - sysexWriteBuffer[i] = 0; - sysexBuffers[i] = new Array<uchar>[128]; - for (int n=0; n<128; n++) { - sysexBuffers[i][n].allowGrowth(0); // shouldn't need to grow - sysexBuffers[i][n].setAllocSize(32); - sysexBuffers[i][n].setSize(0); - sysexBuffers[i][n].setGrowth(32); // in case it will ever grow - } - - threadinitport[i] = i; - flag = pthread_create(&midiInThread[i], NULL, - interpretMidiInputStreamPrivateALSA, &threadinitport[i]); - if (flag == -1) { - std::cout << "Unable to create MIDI input thread." << std::endl; - exit(1); - } - } - - } -} - - - -/////////////////////////////////////////////////////////////////////////// -// -// friendly functions -// - - -////////////////////////////// -// -// interpretMidiInputStreamPrivateALSA -- handles the MIDI input stream -// for the various input devices from the ALSA MIDI driver. -// -// Note about system exclusive messages: -// System Exclusive messages are stored in a separate buffer from -// Other Midi messages since they can be variable in length. If -// The Midi Input returns a message with command byte 0xf0, then -// the p1() byte indicates the system exclusive buffer number that is -// holding the system exclusive data for that Midi message. There -// are 128 system exclusive buffers that are numbered between -// 0 and 127. These buffers are filled in a cycle. -// To extract a System exclusive message from MidiInPort_alsa, -// you first will receive a Message with a command byte of 0xf0. -// you can then access the data for that sysex by the command: -// MidiInPort_alsa::getSysex(buffer_number), this will return -// a pointer to the beginning of the sysex data. The first byte -// of the sysex data should be 0xf0, and the last byte of the data -// is 0xf7. All other bytes of data should be in the range from -// 0 to 127. You can also get the size of the sysex buffer by the -// following command: MidiInPort_alsa::getSysexSize(buffer_number). -// This command will tell you the number of bytes in the system -// exclusive message including the starting 0xf0 and the ending 0xf7. -// -// If you want to minimize memory useage of the system exclusive -// buffers you can run the command: -// MidiInPort_alsa::clearSysex(buffer_number); Otherwise the sysex -// buffer will be erased automatically the next time that the -// buffer number is cycled through when receiving more system exclusives. -// Allocated the allocated size of the system exclusive storage will -// not be adjusted when the computer replaces the system exclusive -// message unless more storage size is needed, clearSysex however, -// will resize the sysex buffer to its default size (currently 32 bytes). -// clearSysex() without arguments will resize all buffers so that -// they are allocated to the default size and will erase data from -// all buffers. You can spoof a system exclusive message coming in -// by installing a system exclusive message and then inserting -// the system message command into the input buffer of the MidiInPort -// class, int sysex_buffer = MidiInPort_alsa::installSysex( -// uchar *data, int size); will put the data into a sysex buffer and -// return the buffer number that it was placed into. -// -// This function assumes that System Exclusive messages cannot be sent -// as a running status messages. -// -// Note about MidiMessage time stamps: -// The MidiMessage::time field is a recording of the time that the -// first byte of the MidiMessage arrived. If the message is from -// running status mode, then the time that the first parameter byte -// arrived is stored. System exclusive message arrival times are -// recoreded at the time of the last byte (0xf7) arriving. This is -// because other system messages can be coming in while the sysex -// message is coming in. Anyway, sysex messages are not really to -// be used for real time MIDI messaging, so the exact moment that the -// first byte of the sysex came in is not important to me. -// -// - -void *interpretMidiInputStreamPrivateALSA(void * arg) { - int portToWatch = *(int*)arg; - if (portToWatch < 0 || portToWatch > 1000) { - // the port to watch is invalid -- because the program has died - // before the thread function could start. Cause of invalid port - // data should be examined more carefully. - return NULL; - } - - int* argsExpected = NULL; // MIDI parameter bytes expected to follow - int* argsLeft = NULL; // MIDI parameter bytes left to wait for - uchar packet[1]; // bytes for sequencer driver - MidiMessage* message = NULL; // holder for current MIDI message - int newSigTime = 0; // for millisecond timer - int lastSigTime = -1; // for millisecond timer - int zeroSigTime = -1; // for timing incoming events - int device = -1; // for sorting out the bytes by input device - Array<uchar>* sysexIn; // MIDI Input sysex temporary storage - - // Note on the use of argsExpected and argsLeft for sysexs: - // If argsExpected is -1, then a sysex message is coming in. - // If argsLeft < 0, then the sysex message has not finished comming - // in. If argsLeft == 0 and argsExpected == -1, then the sysex - // has finished coming in and is to be sent to the correct - // location. - - // allocate space for MIDI messages, each device has a different message - // holding spot in case the messages overlap in the input stream - message = new MidiMessage[MidiInPort_alsa::numDevices]; - argsExpected = new int[MidiInPort_alsa::numDevices]; - argsLeft = new int[MidiInPort_alsa::numDevices]; - - sysexIn = new Array<uchar>[MidiInPort_alsa::numDevices]; - for (int j=0; j<MidiInPort_alsa::numDevices; j++) { - sysexIn[j].allowGrowth(); - sysexIn[j].setSize(32); - sysexIn[j].setSize(0); - sysexIn[j].setGrowth(512); - } - - // interpret MIDI bytes as they come into the computer - // and repackage them as MIDI messages. - int packetReadCount; - while (1) { -top_of_loop: - packetReadCount = 0; - - // If the all Sequencer_alsa classes have been deleted, - // then Sequencer_alsa::rawmidi_in will have zero size. - // If the size is zero, then that means the thread will be - // killed soon, and we do not want any processing to happen - // in this thread. If the port to watch is NULL, then that - // means that the MIDI input is not open, and we should not - // add any MIDI data to the input buffers. These cases are - // handled by the following if-else statement: - if (Sequencer_alsa::rawmidi_in.getSize() > 0 && - Sequencer_alsa::rawmidi_in[portToWatch] != NULL) { - packetReadCount = snd_rawmidi_read( - Sequencer_alsa::rawmidi_in[portToWatch], packet, 1); - } else { - usleep(100000); // sleep for 1/10th of a second if the Input - // port is not open. - continue; - } - - - if (packetReadCount != 1) { - // this if statement is used to prevent cases where the - // read function above will time out and return 0 bytes - // read. This if statment will also take care of -1 - // error return values by ignoring them. - continue; - } - - if (Sequencer_alsa::initialized == 0) { - continue; - } - - // determination of a full MIDI message from the input MIDI - // stream is based here on the observation that MIDI status - // bytes and subsequent data bytes are NOT returned in the same - // read() call. Rather, they are spread out over multiple read() - // returns, with only a single value per return. So if we - // find a status byte, we then determine the number of expected - // operands and process that number of subsequent read()s to - // to determine the complete midi message. - - // store the MIDI input device to which the incoming MIDI - // byte belongs. - device = portToWatch; - - // ignore the active sensing 0xfe and MIDI clock 0xf8 commands: - if (packet[0] == 0xfe || packet[0] == 0xf8) { - continue; - } - - if (packet[0] & 0x80) { // a command byte has arrived - switch (packet[0] & 0xf0) { - case 0xf0: - if (packet[0] == 0xf0) { - argsExpected[device] = -1; - argsLeft[device] = -1; - if (sysexIn[device].getSize() != 0) { - // ignore the command for now. It is most - // likely an active sensing message. - goto top_of_loop; - } else { - uchar datum = 0xf0; - sysexIn[device].append(datum); - } - } if (packet[0] == 0xf7) { - argsLeft[device] = 0; // indicates sysex is done - uchar datum = 0xf7; - sysexIn[device].append(datum); - } else if (argsExpected[device] != -1) { - // this is a system message that may or may - // not be coming while a sysex is coming in - argsExpected[device] = 0; - } else { - // this is a system message that is not coming - // while a system exclusive is coming in - //argsExpected[device] = 0; - } - break; - case 0xc0: - if (argsExpected[device] < 0) { - std::cout << "Error: received program change during sysex" - << std::endl; - exit(1); - } else { - argsExpected[device] = 1; - } - break; - case 0xd0: - if (argsExpected[device] < 0) { - std::cout << "Error: received aftertouch message during" - " sysex" << std::endl; - exit(1); - } else { - argsExpected[device] = 1; - } - break; - default: - if (argsExpected[device] < 0) { - std::cout << "Error: received another message during sysex" - << std::endl; - exit(1); - } else { - argsExpected[device] = 2; - } - break; - } - if (argsExpected[device] >= 0) { - argsLeft[device] = argsExpected[device]; - } - - newSigTime = MidiInPort_alsa::midiTimer.getTime(); - message[device].time = newSigTime - zeroSigTime; - - if (packet[0] != 0xf7) { - message[device].p0() = packet[0]; - } - message[device].p1() = 0; - message[device].p2() = 0; - message[device].p3() = 0; - - if (packet[0] == 0xf7) { - goto sysex_done; - } - } else if (argsLeft[device]) { // not a command byte coming in - if (message[device].time == 0) { - // store the receipt time of the first message byte - newSigTime = MidiInPort_alsa::midiTimer.getTime(); - message[device].time = newSigTime - zeroSigTime; - } - - if (argsExpected[device] < 0) { - // continue processing a sysex message - sysexIn[device].append(packet[0]); - } else { - // handle a message other than a sysex message - if (argsLeft[device] == argsExpected[device]) { - message[device].p1() = packet[0]; - } else { - message[device].p2() = packet[0]; - } - argsLeft[device]--; - } - - // if MIDI message is complete, setup for running status, and - // insert note into proper buffer. - - if (argsExpected[device] >= 0 && !argsLeft[device]) { - - // store parameter data for running status - switch (message[device].p0() & 0xf0) { - case 0xc0: argsLeft[device] = 1; break; - case 0xd0: argsLeft[device] = 1; break; // fix by dan - default: argsLeft[device] = 2; break; - // 0x80 expects two arguments - // 0x90 expects two arguments - // 0xa0 expects two arguments - // 0xb0 expects two arguments - // 0xe0 expects two arguments - } - - lastSigTime = newSigTime; - - sysex_done: // come here when a sysex is completely done - - // insert the MIDI message into the appropriate buffer - // do not insert into buffer if the MIDI input device - // is paused (which can mean closed). Or if the - // pauseQ array is pointing to NULL (which probably means that - // things are about to shut down). - if (MidiInPort_alsa::pauseQ != NULL && - MidiInPort_alsa::pauseQ[device] == 0) { - if (argsExpected[device] < 0) { - // store the sysex in the MidiInPort_alsa - // buffer for sysexs and return the storage - // location: - int sysexlocation = - MidiInPort_alsa::installSysexPrivate(device, - sysexIn[device].getBase(), - sysexIn[device].getSize()); - - message[device].p0() = 0xf0; - message[device].p1() = sysexlocation; - - sysexIn[device].setSize(0); // empty the sysex storage - argsExpected[device] = 0; // no run status for sysex - argsLeft[device] = 0; // turn off sysex input flag - } - MidiInPort_alsa::midiBuffer[device]->insert( - message[device]); -// if (MidiInPort_alsa::callbackFunction != NULL) { -// MidiInPort_alsa::callbackFunction(device); -// } - if (MidiInPort_alsa::trace[device]) { - std::cout << '[' << std::hex << (int)message[device].p0() - << ':' << std::dec << (int)message[device].p1() - << ',' << (int)message[device].p2() << ']' - << std::flush; - } - message[device].time = 0; - } else { - if (MidiInPort_alsa::trace[device]) { - std::cout << '[' << std::hex << (int)message[device].p0() - << 'P' << std::dec << (int)message[device].p1() - << ',' << (int)message[device].p2() << ']' - << std::flush; - } - } - } - } - - } // end while (1) - - // This code is not yet reached, but should be made to do so eventually - - if (message != NULL) { - delete message; - message = NULL; - } - - if (argsExpected != NULL) { - delete argsExpected; - argsExpected = NULL; - } - - if (argsLeft != NULL) { - delete argsLeft; - argsLeft = NULL; - } - - if (sysexIn != NULL) { - delete sysexIn; - sysexIn = NULL; - } - - - return NULL; -} - - - -#endif // LINUX && ALSA - - - -// md5sum: 14663a91d1f5283e05ca36399d5ab767 - MidiInPort_alsa.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/src/MidiInPort_alsa05.cpp b/extensions/gripd/src/midiio/src/MidiInPort_alsa05.cpp deleted file mode 100644 index 1aad84951b33e32317a7108124f5cded7faf68c2..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/src/MidiInPort_alsa05.cpp +++ /dev/null @@ -1,995 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Sun May 14 22:03:16 PDT 2000 -// Last Modified: Wed Oct 3 22:28:20 PDT 2001 (frozen for ALSA 0.5) -// Last Modified: Fri Oct 26 14:41:36 PDT 2001 (running status for 0xa0 and 0xd0 -// fixed by Daniel Gardner) -// Filename: ...sig/code/control/MidiInPort/linux/MidiInPort_alsa05.cpp -// Web Address: http://sig.sapp.org/src/sig/MidiInPort_alsa05.cpp -// Syntax: C++ -// -// Description: An interface for MIDI input capabilities of -// linux ALSA sound driver's specific MIDI input methods. -// This class is inherited privately by the MidiInPort class. -// - -#if defined(LINUX) && defined(ALSA05) - -#include "MidiInPort_alsa05.h" -#include <iostream.h> -#include <stdlib.h> -#include <pthread.h> -#include <sys/asoundlib.h> - -#define DEFAULT_INPUT_BUFFER_SIZE (1024) - -// initialized static variables - -int MidiInPort_alsa05::numDevices = 0; -int MidiInPort_alsa05::objectCount = 0; -int* MidiInPort_alsa05::portObjectCount = NULL; -CircularBuffer<MidiMessage>** MidiInPort_alsa05::midiBuffer = NULL; -int MidiInPort_alsa05::channelOffset = 0; -SigTimer MidiInPort_alsa05::midiTimer; -int* MidiInPort_alsa05::pauseQ = NULL; -int* MidiInPort_alsa05::trace = NULL; -ostream* MidiInPort_alsa05::tracedisplay = &cout; -Array<pthread_t> MidiInPort_alsa05::midiInThread; -int* MidiInPort_alsa05::sysexWriteBuffer = NULL; -Array<uchar>** MidiInPort_alsa05::sysexBuffers = NULL; - -Array<int> MidiInPort_alsa05::threadinitport; - - - -////////////////////////////// -// -// MidiInPort_alsa05::MidiInPort_alsa05 -// default values: autoOpen = 1 -// - -MidiInPort_alsa05::MidiInPort_alsa05(void) { - if (objectCount == 0) { - initialize(); - } - objectCount++; - - port = -1; - setPort(0); -} - - -MidiInPort_alsa05::MidiInPort_alsa05(int aPort, int autoOpen) { - if (objectCount == 0) { - initialize(); - } - objectCount++; - - port = -1; - setPort(aPort); - if (autoOpen) { - open(); - } -} - - - -////////////////////////////// -// -// MidiInPort_alsa05::~MidiInPort_alsa05 -// - -MidiInPort_alsa05::~MidiInPort_alsa05() { - objectCount--; - if (objectCount == 0) { - deinitialize(); - } else if (objectCount < 0) { - cerr << "Error: bad MidiInPort_alsa05 object count!: " - << objectCount << endl; - exit(1); - } -} - - - -////////////////////////////// -// -// MidiInPort_alsa05::clearSysex -- clears the data from a sysex -// message and sets the allocation size to the default size (of 32 -// bytes). -// - -void MidiInPort_alsa05::clearSysex(int buffer) { - buffer = 0x7f | buffer; // limit buffer range from 0 to 127 - - if (getPort() == -1) { - return; - } - - sysexBuffers[getPort()][buffer].setSize(0); - if (sysexBuffers[getPort()][buffer].getAllocSize() != 32) { - // shrink the storage buffer's size if necessary - sysexBuffers[getPort()][buffer].setAllocSize(32); - } -} - - -void MidiInPort_alsa05::clearSysex(void) { - // clear all sysex buffers - for (int i=0; i<128; i++) { - clearSysex(i); - } -} - - - -////////////////////////////// -// -// MidiInPort_alsa05::close -// - -void MidiInPort_alsa05::close(void) { - if (getPort() == -1) return; - - pauseQ[getPort()] = 1; -} - - - -////////////////////////////// -// -// MidiInPort_alsa05::closeAll -- -// - -void MidiInPort_alsa05::closeAll(void) { - Sequencer_alsa05::close(); -} - - - -////////////////////////////// -// -// MidiInPort_alsa05::extract -- returns the next MIDI message -// received since that last extracted message. -// - -MidiMessage MidiInPort_alsa05::extract(void) { - if (getPort() == -1) { - MidiMessage temp; - return temp; - } - - return midiBuffer[getPort()]->extract(); -} - - - -////////////////////////////// -// -// MidiInPort_alsa05::getBufferSize -- returns the maximum possible number -// of MIDI messages that can be stored in the buffer -// - -int MidiInPort_alsa05::getBufferSize(void) { - if (getPort() == -1) return 0; - - return midiBuffer[getPort()]->getSize(); -} - - - -////////////////////////////// -// -// MidiInPort_alsa05::getChannelOffset -- returns zero if MIDI channel -// offset is 0, or 1 if offset is 1. -// - -int MidiInPort_alsa05::getChannelOffset(void) const { - return channelOffset; -} - - - -////////////////////////////// -// -// MidiInPort_alsa05::getCount -- returns the number of unexamined -// MIDI messages waiting in the input buffer. -// - -int MidiInPort_alsa05::getCount(void) { - if (getPort() == -1) return 0; - return midiBuffer[getPort()]->getCount(); -} - - - -////////////////////////////// -// -// MidiInPort_alsa05::getName -- returns the name of the port. -// returns "" if no name. Name is valid until all instances -// of MIDI classes are. -// - -const char* MidiInPort_alsa05::getName(void) { - if (getPort() == -1) { - return "Null ALSA MIDI Input"; - } - return getInputName(getPort()); -} - - -const char* MidiInPort_alsa05::getName(int i) { - return getInputName(i); -} - - - -////////////////////////////// -// -// MidiInPort_alsa05::getNumPorts -- returns the number of available -// ports for MIDI input -// - -int MidiInPort_alsa05::getNumPorts(void) { - return getNumInputs(); -} - - - -////////////////////////////// -// -// MidiInPort_alsa05::getPort -- returns the port to which this -// object belongs (as set with the setPort function). -// - -int MidiInPort_alsa05::getPort(void) { - return port; -} - - - -////////////////////////////// -// -// MidiInPort_alsa05::getPortStatus -- 0 if closed, 1 if open -// - -int MidiInPort_alsa05::getPortStatus(void) { - return is_open_in(0); -} - - - -////////////////////////////// -// -// MidiInPort_alsa05::getSysex -- returns the sysex message contents -// of a given buffer. You should check to see that the size is -// non-zero before looking at the data. The data pointer will -// be NULL if there is no data in the buffer. -// - -uchar* MidiInPort_alsa05::getSysex(int buffer) { - buffer &= 0x7f; // limit the buffer access to indices 0 to 127. - if (getPort() == -1) { - return NULL; - } - - if (sysexBuffers[getPort()][buffer].getSize() < 2) { - return NULL; - } else { - return sysexBuffers[getPort()][buffer].getBase(); - } -} - - - -////////////////////////////// -// -// MidiInPort_alsa05::getSysexSize -- returns the sysex message byte -// count of a given buffer. Buffers are in the range from -// 0 to 127. -// - -int MidiInPort_alsa05::getSysexSize(int buffer) { - if (getPort() == -1) { - return 0; - } else { - return sysexBuffers[getPort()][buffer & 0x7f].getSize(); - } -} - - - -////////////////////////////// -// -// MidiInPort_alsa05::getTrace -- returns true if trace is on or false -// if trace is off. if trace is on, then prints to standard -// output the Midi message received. -// - -int MidiInPort_alsa05::getTrace(void) { - if (getPort() == -1) return -1; - - return trace[getPort()]; -} - - - -////////////////////////////// -// -// MidiInPort_alsa05::insert -// - -void MidiInPort_alsa05::insert(const MidiMessage& aMessage) { - if (getPort() == -1) return; - - midiBuffer[getPort()]->insert(aMessage); -} - - - -////////////////////////////// -// -// MidiInPort_alsa05::installSysex -- put a sysex message into a -// buffer. The buffer number that it is put into is returned. -// - -int MidiInPort_alsa05::installSysex(uchar* anArray, int aSize) { - if (getPort() == -1) { - return -1; - } else { - return installSysexPrivate(getPort(), anArray, aSize); - } -} - -////////////////////////////// -// -// MidiInPort_alsa05::installSysexPrivate -- put a sysex message into a -// buffer. The buffer number that it is put into is returned. -// - -int MidiInPort_alsa05::installSysexPrivate(int port, uchar* anArray, int aSize) { - // choose a buffer to install sysex data into: - int bufferNumber = sysexWriteBuffer[port]; - sysexWriteBuffer[port]++; - if (sysexWriteBuffer[port] >= 128) { - sysexWriteBuffer[port] = 0; - } - - // copy contents of sysex message into the chosen buffer - sysexBuffers[port][bufferNumber].setSize(aSize); - uchar* dataptr = sysexBuffers[port][bufferNumber].getBase(); - uchar* indataptr = anArray; - for (int i=0; i<aSize; i++) { - *dataptr = *indataptr; - dataptr++; - indataptr++; - } - - // return the buffer number that was used - return bufferNumber; -} - - - -////////////////////////////// -// -// MidiInPort_alsa05::message -// - -MidiMessage& MidiInPort_alsa05::message(int index) { - if (getPort() == -1) { - static MidiMessage x; - return x; - } - - CircularBuffer<MidiMessage>& temp = *midiBuffer[getPort()]; - return temp[index]; -} - - - -////////////////////////////// -// -// MidiInPort_alsa05::open -- returns true if MIDI input port was -// opened. -// - -int MidiInPort_alsa05::open(void) { - if (getPort() == -1) return 0; - - return Sequencer_alsa05::open(); - pauseQ[getPort()] = 0; -} - - - -////////////////////////////// -// -// MidiInPort_alsa05::pause -- stop the Midi input port from -// inserting MIDI messages into the buffer, but keeps the -// port open. Use unpause() to reverse the effect of pause(). -// - -void MidiInPort_alsa05::pause(void) { - if (getPort() == -1) return; - - pauseQ[getPort()] = 1; -} - - - -////////////////////////////// -// -// MidiInPort_alsa05::setBufferSize -- sets the allocation -// size of the MIDI input buffer. -// - -void MidiInPort_alsa05::setBufferSize(int aSize) { - if (getPort() == -1) return; - - midiBuffer[getPort()]->setSize(aSize); -} - - - -////////////////////////////// -// -// MidiInPort_alsa05::setChannelOffset -- sets the MIDI chan offset, -// either 0 or 1. -// - -void MidiInPort_alsa05::setChannelOffset(int anOffset) { - switch (anOffset) { - case 0: channelOffset = 0; break; - case 1: channelOffset = 1; break; - default: - cout << "Error: Channel offset can be only 0 or 1." << endl; - exit(1); - } -} - - - -////////////////////////////// -// -// MidiInPort_alsa05::setPort -- -// - -void MidiInPort_alsa05::setPort(int aPort) { -// if (aPort == -1) return; - if (aPort < -1 || aPort >= getNumPorts()) { - cerr << "Error: maximum port number is: " << getNumPorts()-1 - << ", but you tried to access port: " << aPort << endl; - exit(1); - } - - if (port != -1) { - portObjectCount[port]--; - } - port = aPort; - if (port != -1) { - portObjectCount[port]++; - } -} - - - -////////////////////////////// -// -// MidiInPort_alsa05::setTrace -- if false, then don't print MIDI messages -// to the screen. -// - -int MidiInPort_alsa05::setTrace(int aState) { - if (getPort() == -1) return -1; - - - int oldtrace = trace[getPort()]; - if (aState == 0) { - trace[getPort()] = 0; - } else { - trace[getPort()] = 1; - } - return oldtrace; -} - - - -////////////////////////////// -// -// MidiInPort_alsa05::toggleTrace -- switches the state of trace -// Returns the previous value of the trace variable. -// - -void MidiInPort_alsa05::toggleTrace(void) { - if (getPort() == -1) return; - - trace[getPort()] = !trace[getPort()]; -} - - - -////////////////////////////// -// -// MidiInPort_alsa05::unpause -- enables the Midi input port -// to inserting MIDI messages into the buffer after the -// port is already open. -// - -void MidiInPort_alsa05::unpause(void) { - if (getPort() == -1) return; - - pauseQ[getPort()] = 0; -} - - - -/////////////////////////////////////////////////////////////////////////// -// -// Private functions -// - - - -////////////////////////////// -// -// MidiInPort_alsa05::deinitialize -- sets up storage if necessary -// This function should be called if the current object is -// the first object to be created. -// - -void MidiInPort_alsa05::deinitialize(void) { - closeAll(); - - for (int i=0; i<getNumPorts(); i++) { - if (sysexBuffers != NULL && sysexBuffers[i] != NULL) { - delete [] sysexBuffers[i]; - sysexBuffers[i] = NULL; - } - } - - if (sysexBuffers != NULL) { - delete [] sysexBuffers; - sysexBuffers = NULL; - } - - if (midiBuffer != NULL) { - delete [] midiBuffer; - midiBuffer = NULL; - } - - if (portObjectCount != NULL) { - delete [] portObjectCount; - portObjectCount = NULL; - } - - if (trace != NULL) { - delete [] trace; - trace = NULL; - } - - if (pauseQ != NULL) { - delete [] pauseQ; - pauseQ = NULL; - } -} - - - -////////////////////////////// -// -// MidiInPort_alsa05::initialize -- sets up storage if necessary -// This function should be called if the current object is -// the first object to be created. -// - -void MidiInPort_alsa05::initialize(void) { - // set the number of ports - numDevices = Sequencer_alsa05::indevcount; - - if (getNumPorts() <= 0) { - cerr << "Warning: no MIDI input devices" << endl; - } else { - - // allocate space for pauseQ, the port pause status - if (pauseQ != NULL) { - delete [] pauseQ; - } - pauseQ = new int[numDevices]; - - // allocate space for object count on each port: - if (portObjectCount != NULL) { - delete [] portObjectCount; - } - portObjectCount = new int[numDevices]; - - // allocate space for object count on each port: - if (trace != NULL) { - delete [] trace; - } - trace = new int[numDevices]; - - // allocate space for the Midi input buffers - if (midiBuffer != NULL) { - delete [] midiBuffer; - } - midiBuffer = new CircularBuffer<MidiMessage>*[numDevices]; - - // allocate space for Midi input sysex buffer write indices - if (sysexWriteBuffer != NULL) { - delete [] sysexWriteBuffer; - } - sysexWriteBuffer = new int[numDevices]; - - // allocate space for Midi input sysex buffers - if (sysexBuffers != NULL) { - cout << "Error: memory leak on sysex buffers initialization" << endl; - exit(1); - } - sysexBuffers = new Array<uchar>*[numDevices]; - - int flag; - midiInThread.setSize(getNumPorts()); - threadinitport.setSize(getNumPorts()); - // initialize the static arrays - for (int i=0; i<getNumPorts(); i++) { - portObjectCount[i] = 0; - trace[i] = 0; - pauseQ[i] = 0; - midiBuffer[i] = new CircularBuffer<MidiMessage>; - midiBuffer[i]->setSize(DEFAULT_INPUT_BUFFER_SIZE); - - sysexWriteBuffer[i] = 0; - sysexBuffers[i] = new Array<uchar>[128]; - for (int n=0; n<128; n++) { - sysexBuffers[i][n].allowGrowth(0); // shouldn't need to grow - sysexBuffers[i][n].setAllocSize(32); - sysexBuffers[i][n].setSize(0); - sysexBuffers[i][n].setGrowth(32); // in case it will ever grow - } - - threadinitport[i] = i; - flag = pthread_create(&midiInThread[i], NULL, - interpretMidiInputStreamPrivateALSA05, &threadinitport[i]); - if (flag == -1) { - cout << "Unable to create MIDI input thread." << endl; - exit(1); - } - } - - } -} - - - -/////////////////////////////////////////////////////////////////////////// -// -// friendly functions -// - - -////////////////////////////// -// -// interpretMidiInputStreamPrivateALSA05 -- handles the MIDI input stream -// for the various input devices from the ALSA MIDI driver. -// -// Note about system exclusive messages: -// System Exclusive messages are stored in a separate buffer from -// Other Midi messages since they can be variable in length. If -// The Midi Input returns a message with command byte 0xf0, then -// the p1() byte indicates the system exclusive buffer number that is -// holding the system exclusive data for that Midi message. There -// are 128 system exclusive buffers that are numbered between -// 0 and 127. These buffers are filled in a cycle. -// To extract a System exclusive message from MidiInPort_alsa05, -// you first will receive a Message with a command byte of 0xf0. -// you can then access the data for that sysex by the command: -// MidiInPort_alsa05::getSysex(buffer_number), this will return -// a pointer to the beginning of the sysex data. The first byte -// of the sysex data should be 0xf0, and the last byte of the data -// is 0xf7. All other bytes of data should be in the range from -// 0 to 127. You can also get the size of the sysex buffer by the -// following command: MidiInPort_alsa05::getSysexSize(buffer_number). -// This command will tell you the number of bytes in the system -// exclusive message including the starting 0xf0 and the ending 0xf7. -// -// If you want to minimize memory useage of the system exclusive -// buffers you can run the command: -// MidiInPort_alsa05::clearSysex(buffer_number); Otherwise the sysex -// buffer will be erased automatically the next time that the that -// buffer number is cycled through when receiving more system exclusives. -// Allocated the allocated size of the system exclusive storage will -// not be adjusted when the computer replaces the system exclusive -// message unless more storage size is needed, clearSysex however, -// will resize the sysex buffer to its default size (currently 32 bytes). -// clearSysex() without arguments will resize all buffers so that -// they are allocated to the default size and will erase data from -// all buffers. You can spoof a system exclusive message coming in -// by installing a system exclusive message and then inserting -// the system message command into the input buffer of the MidiInPort -// class, int sysex_buffer = MidiInPort_alsa05::installSysex( -// uchar *data, int size); will put the data into a sysex buffer and -// return the buffer number that it was placed into. -// -// This function assumes that System Exclusive messages cannot be sent -// as a running status messages. -// -// Note about MidiMessage time stamps: -// The MidiMessage::time field is a recording of the time that the -// first byte of the MidiMessage arrived. If the message is from -// running status mode, then the time that the first parameter byte -// arrived is stored. System exclusive message arrival times are -// recoreded at the time of the last byte (0xf7) arriving. This is -// because other system messages can be coming in while the sysex -// message is coming in. Anyway, sysex messages are not really to -// be used for real time MIDI messaging, so the exact moment that the -// first byte of the sysex came in is not important to me. -// -// - -void *interpretMidiInputStreamPrivateALSA05(void * arg) { - int portToWatch = *(int*)arg; - - int* argsExpected = NULL; // MIDI parameter bytes expected to follow - int* argsLeft = NULL; // MIDI parameter bytes left to wait for - uchar packet[1]; // bytes for sequencer driver - MidiMessage* message = NULL; // holder for current MIDI message - int newSigTime = 0; // for millisecond timer - int lastSigTime = -1; // for millisecond timer - int zeroSigTime = -1; // for timing incoming events - int device = -1; // for sorting out the bytes by input device - Array<uchar>* sysexIn; // MIDI Input sysex temporary storage - - // Note on the use of argsExpected and argsLeft for sysexs: - // If argsExpected is -1, then a sysex message is coming in. - // If argsLeft < 0, then the sysex message has not finished comming - // in. If argsLeft == 0 and argsExpected == -1, then the sysex - // has finished coming in and is to be sent to the correct - // location. - - // allocate space for MIDI messages, each device has a different message - // holding spot in case the messages overlap in the input stream - message = new MidiMessage[MidiInPort_alsa05::numDevices]; - argsExpected = new int[MidiInPort_alsa05::numDevices]; - argsLeft = new int[MidiInPort_alsa05::numDevices]; - - sysexIn = new Array<uchar>[MidiInPort_alsa05::numDevices]; - for (int j=0; j<MidiInPort_alsa05::numDevices; j++) { - sysexIn[j].allowGrowth(); - sysexIn[j].setSize(32); - sysexIn[j].setSize(0); - sysexIn[j].setGrowth(512); - } - - // interpret MIDI bytes as they come into the computer - // and repackage them as MIDI messages. - int packetReadCount; - while (1) { -top_of_loop: - packetReadCount = snd_rawmidi_read( - Sequencer_alsa05::rawmidi_in[portToWatch], packet, 1); - if (packetReadCount != 1) { - // this if statement is used to prevent cases where the - // read function above will time out and return 0 bytes - // read. This if statment will also take care of -1 - // error return values by ignoring them. - continue; - } - - if (Sequencer_alsa05::initialized == 0) { - continue; - } - - // determination of a full MIDI message from the input MIDI - // stream is based here on the observation that MIDI status - // bytes and subsequent data bytes are NOT returned in the same - // read() call. Rather, they are spread out over multiple read() - // returns, with only a single value per return. So if we - // find a status byte, we then determine the number of expected - // operands and process that number of subsequent read()s to - // to determine the complete midi message. - - // store the MIDI input device to which the incoming MIDI - // byte belongs. - device = portToWatch; - - // ignore the active sensing 0xfe and MIDI clock 0xf8 commands: - if (packet[0] == 0xfe || packet[0] == 0xf8) { - continue; - } - - if (packet[0] & 0x80) { // a command byte has arrived - switch (packet[0] & 0xf0) { - case 0xf0: - if (packet[0] == 0xf0) { - argsExpected[device] = -1; - argsLeft[device] = -1; - if (sysexIn[device].getSize() != 0) { - // ignore the command for now. It is most - // likely an active sensing message. - goto top_of_loop; - } else { - uchar datum = 0xf0; - sysexIn[device].append(datum); - } - } if (packet[0] == 0xf7) { - argsLeft[device] = 0; // indicates sysex is done - uchar datum = 0xf7; - sysexIn[device].append(datum); - } else if (argsExpected[device] != -1) { - // this is a system message that may or may - // not be coming while a sysex is coming in - argsExpected[device] = 0; - } else { - // this is a system message that is not coming - // while a system exclusive is coming in - //argsExpected[device] = 0; - } - break; - case 0xc0: - if (argsExpected[device] < 0) { - cout << "Error: received program change during sysex" - << endl; - exit(1); - } else { - argsExpected[device] = 1; - } - break; - case 0xd0: - if (argsExpected[device] < 0) { - cout << "Error: received aftertouch message during" - " sysex" << endl; - exit(1); - } else { - argsExpected[device] = 1; - } - break; - default: - if (argsExpected[device] < 0) { - cout << "Error: received another message during sysex" - << endl; - exit(1); - } else { - argsExpected[device] = 2; - } - break; - } - if (argsExpected[device] >= 0) { - argsLeft[device] = argsExpected[device]; - } - - newSigTime = MidiInPort_alsa05::midiTimer.getTime(); - message[device].time = newSigTime - zeroSigTime; - - if (packet[0] != 0xf7) { - message[device].p0() = packet[0]; - } - message[device].p1() = 0; - message[device].p2() = 0; - message[device].p3() = 0; - - if (packet[0] == 0xf7) { - goto sysex_done; - } - } else if (argsLeft[device]) { // not a command byte coming in - if (message[device].time == 0) { - // store the receipt time of the first message byte - newSigTime = MidiInPort_alsa05::midiTimer.getTime(); - message[device].time = newSigTime - zeroSigTime; - } - - if (argsExpected[device] < 0) { - // continue processing a sysex message - sysexIn[device].append(packet[0]); - } else { - // handle a message other than a sysex message - if (argsLeft[device] == argsExpected[device]) { - message[device].p1() = packet[0]; - } else { - message[device].p2() = packet[0]; - } - argsLeft[device]--; - } - - // if MIDI message is complete, setup for running status, and - // insert note into proper buffer. - - if (argsExpected[device] >= 0 && !argsLeft[device]) { - - // store parameter data for running status - switch (message[device].p0() & 0xf0) { - case 0xc0: argsLeft[device] = 1; break; - case 0xd0: argsLeft[device] = 1; break; // fix by dan - default: argsLeft[device] = 2; break; - // 0x80 expects two arguments - // 0x90 expects two arguments - // 0xa0 expects two arguments - // 0xb0 expects two arguments - // 0xe0 expects two arguments - } - - lastSigTime = newSigTime; - - sysex_done: // come here when a sysex is completely done - - // insert the MIDI message into the appropriate buffer - // do not insert into buffer if the MIDI input device - // is paused (which can mean closed). Or if the - // pauseQ array is pointing to NULL (which probably means that - // things are about to shut down). - if (MidiInPort_alsa05::pauseQ != NULL && - MidiInPort_alsa05::pauseQ[device] == 0) { - if (argsExpected[device] < 0) { - // store the sysex in the MidiInPort_alsa05 - // buffer for sysexs and return the storage - // location: - int sysexlocation = - MidiInPort_alsa05::installSysexPrivate(device, - sysexIn[device].getBase(), - sysexIn[device].getSize()); - - message[device].p0() = 0xf0; - message[device].p1() = sysexlocation; - - sysexIn[device].setSize(0); // empty the sysex storage - argsExpected[device] = 0; // no run status for sysex - argsLeft[device] = 0; // turn off sysex input flag - } - MidiInPort_alsa05::midiBuffer[device]->insert( - message[device]); -// if (MidiInPort_alsa05::callbackFunction != NULL) { -// MidiInPort_alsa05::callbackFunction(device); -// } - if (MidiInPort_alsa05::trace[device]) { - cout << '[' << hex << (int)message[device].p0() - << ':' << dec << (int)message[device].p1() - << ',' << (int)message[device].p2() << ']' - << flush; - } - message[device].time = 0; - } else { - if (MidiInPort_alsa05::trace[device]) { - cout << '[' << hex << (int)message[device].p0() - << 'P' << dec << (int)message[device].p1() - << ',' << (int)message[device].p2() << ']' - << flush; - } - } - } - } - - } // end while (1) - - // This code is not yet reached, but should be made to do so eventually - - if (message != NULL) { - delete message; - message = NULL; - } - - if (argsExpected != NULL) { - delete argsExpected; - argsExpected = NULL; - } - - if (argsLeft != NULL) { - delete argsLeft; - argsLeft = NULL; - } - - if (sysexIn != NULL) { - delete sysexIn; - sysexIn = NULL; - } - - - return NULL; -} - - - -#endif /* LINUX and ALSA05 */ - - - -// md5sum: cc5ea6a6078cb534fc6c39543aa57a83 - MidiInPort_alsa05.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/src/MidiInPort_linux.cpp b/extensions/gripd/src/midiio/src/MidiInPort_linux.cpp deleted file mode 100644 index 01274e2e72302a62aa90c7b6e5058fd394e5682b..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/src/MidiInPort_linux.cpp +++ /dev/null @@ -1,491 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Sun May 14 22:35:27 PDT 2000 -// Last Modified: Thu May 18 23:36:00 PDT 2000 -// Last Modified: Sat Nov 2 20:37:49 PST 2002 (added ifdef ALSA OSS) -// Filename: ...sig/maint/code/control/MidiInPort/MidiInPort_linux.cpp -// Web Address: http://sig.sapp.org/include/sig/MidiInPort_linux.cpp -// Syntax: C++ -// -// Description: An interface for MIDI input capabilities of an -// operating-system specific MIDI input method. -// Provides control of all low-level MIDI input -// functionality such that it will work on all -// computers in the same manner. -// - -#ifdef LINUX -#if defined(ALSA) && defined(OSS) - -#include <sys/types.h> -#include <sys/stat.h> -#include "MidiInPort_linux.h" - - -// initialize static variables oss_input->close(); break; -int MidiInPort_linux::objectCount = 0; -int MidiInPort_linux::current = MIDI_IN_OSS_SELECT; -int MidiInPort_linux::alsaQ = 0; -int MidiInPort_linux::ossQ = 0; -MidiInPort_oss *MidiInPort_linux::oss_input = NULL; -MidiInPort_alsa *MidiInPort_linux::alsa_input = NULL; -MidiInPort_unsupported *MidiInPort_linux::unknown_input = NULL; - - -MidiInPort_linux::MidiInPort_linux(void) { - if (objectCount == 0) { - determineDrivers(); - } else if (objectCount < 0) { - cout << "Error: unusual MidiInPort_linux object count" << endl; - exit(1); - } - - objectCount++; -} - - -MidiInPort_linux::MidiInPort_linux(int aPort, int autoOpen = 1) { - if (objectCount == 0) { - determineDrivers(); - setAndOpenPort(aPort); - } else if (objectCount < 0) { - cout << "Error: unusual MidiInPort_linux object count" << endl; - exit(1); - } - - objectCount++; -} - - -MidiInPort_linux::~MidiInPort_linux() { - objectCount--; - if (objectCount == 0) { - if (oss_input != NULL) { - delete oss_input; - oss_input = NULL; - } - if (alsa_input != NULL) { - delete alsa_input; - alsa_input = NULL; - } - if (unknown_input != NULL) { - delete unknown_input; - unknown_input = NULL; - } - } - - if (objectCount < 0) { - cout << "Error: unusual MidiOutPort_linux count when destructing" << endl; - exit(1); - } -} - - -void MidiInPort_linux::clearSysex(void) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: oss_input->clearSysex(); break; - case MIDI_IN_ALSA_SELECT: alsa_input->clearSysex(); break; - default: unknown_input->clearSysex(); break; - } -} - - -void MidiInPort_linux::clearSysex(int buffer) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: oss_input->clearSysex(); break; - case MIDI_IN_ALSA_SELECT: alsa_input->clearSysex(); break; - default: unknown_input->clearSysex(); break; - } -} - - -void MidiInPort_linux::close(void) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: oss_input->close(); break; - case MIDI_IN_ALSA_SELECT: alsa_input->close(); break; - default: unknown_input->close(); break; - } -} - - -void MidiInPort_linux::closeAll(void) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: oss_input->closeAll(); break; - case MIDI_IN_ALSA_SELECT: alsa_input->closeAll(); break; - default: unknown_input->closeAll(); break; - } -} - - -MidiMessage MidiInPort_linux::extract(void) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: return oss_input->extract(); break; - case MIDI_IN_ALSA_SELECT: return alsa_input->extract(); break; - default: return unknown_input->extract(); break; - } -} - - -int MidiInPort_linux::getBufferSize(void) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: return oss_input->getBufferSize(); break; - case MIDI_IN_ALSA_SELECT: return alsa_input->getBufferSize(); break; - default: return unknown_input->getBufferSize(); break; - } -} - - -int MidiInPort_linux::getChannelOffset(void) const { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: return oss_input->getChannelOffset(); break; - case MIDI_IN_ALSA_SELECT: return alsa_input->getChannelOffset(); break; - default: return unknown_input->getChannelOffset(); break; - } -} - - -int MidiInPort_linux::getCount(void) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: return oss_input->getCount(); break; - case MIDI_IN_ALSA_SELECT: return alsa_input->getCount(); break; - default: return unknown_input->getCount(); break; - } -} - - -const char* MidiInPort_linux::getName(void) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: return oss_input->getName(); break; - case MIDI_IN_ALSA_SELECT: return alsa_input->getName(); break; - default: return unknown_input->getName(); break; - } -} - - -const char* MidiInPort_linux::getName(int i) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: return oss_input->getName(i); break; - case MIDI_IN_ALSA_SELECT: return alsa_input->getName(i); break; - default: return unknown_input->getName(i); break; - } -} - - -int MidiInPort_linux::getNumPorts(void) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: return oss_input->getNumPorts(); break; - case MIDI_IN_ALSA_SELECT: return alsa_input->getNumPorts(); break; - default: return unknown_input->getNumPorts(); break; - } -} - - -int MidiInPort_linux::getPort(void) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: return oss_input->getPort(); break; - case MIDI_IN_ALSA_SELECT: return alsa_input->getPort(); break; - default: return unknown_input->getPort(); break; - } -} - - -int MidiInPort_linux::getPortStatus(void) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: return oss_input->getPortStatus(); break; - case MIDI_IN_ALSA_SELECT: return alsa_input->getPortStatus(); break; - default: return unknown_input->getPortStatus(); break; - } -} - - -uchar* MidiInPort_linux::getSysex(int buffer) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: return oss_input->getSysex(buffer); break; - case MIDI_IN_ALSA_SELECT: return alsa_input->getSysex(buffer); break; - default: return unknown_input->getSysex(buffer); break; - } -} - - -int MidiInPort_linux::getSysexSize(int buffer) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: return oss_input->getSysexSize(buffer); break; - case MIDI_IN_ALSA_SELECT: return alsa_input->getSysexSize(buffer); break; - default: return unknown_input->getSysexSize(buffer); break; - } -} - - -int MidiInPort_linux::getTrace(void) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: return oss_input->getTrace(); break; - case MIDI_IN_ALSA_SELECT: return alsa_input->getTrace(); break; - default: return unknown_input->getTrace(); break; - } -} - - -void MidiInPort_linux::insert(const MidiMessage& aMessage) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: oss_input->insert(aMessage); break; - case MIDI_IN_ALSA_SELECT: alsa_input->insert(aMessage); break; - default: unknown_input->insert(aMessage); break; - } -} - - -int MidiInPort_linux::installSysex(uchar* anArray, int aSize) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: - return oss_input->installSysex(anArray, aSize); - break; - case MIDI_IN_ALSA_SELECT: - return alsa_input->installSysex(anArray, aSize); - break; - default: - return unknown_input->installSysex(anArray, aSize); - break; - } -} - - -MidiMessage& MidiInPort_linux::message(int index) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: return oss_input->message(index); break; - case MIDI_IN_ALSA_SELECT: return alsa_input->message(index); break; - default: return unknown_input->message(index); break; - } -} - -int MidiInPort_linux::open(void) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: return oss_input->open(); break; - case MIDI_IN_ALSA_SELECT: return alsa_input->open(); break; - default: return unknown_input->open(); break; - } -} - - -MidiMessage& MidiInPort_linux::operator[](int index) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: return oss_input->message(index); break; - case MIDI_IN_ALSA_SELECT: return alsa_input->message(index); break; - default: return unknown_input->message(index); break; - } -} - - -void MidiInPort_linux::pause(void) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: oss_input->pause(); break; - case MIDI_IN_ALSA_SELECT: alsa_input->pause(); break; - default: unknown_input->pause(); break; - } -} - - -void MidiInPort_linux::setBufferSize(int aSize) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: oss_input->setBufferSize(aSize); break; - case MIDI_IN_ALSA_SELECT: alsa_input->setBufferSize(aSize); break; - default: unknown_input->setBufferSize(aSize); break; - } -} - - -void MidiInPort_linux::setChannelOffset(int anOffset) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: oss_input->setChannelOffset(anOffset); break; - case MIDI_IN_ALSA_SELECT: alsa_input->setChannelOffset(anOffset); break; - default: unknown_input->setChannelOffset(anOffset); break; - } -} - - -void MidiInPort_linux::setAndOpenPort(int aPort) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: - oss_input->setPort(aPort); - oss_input->open(); - break; - case MIDI_IN_ALSA_SELECT: - alsa_input->setPort(aPort); - alsa_input->open(); - break; - default: - unknown_input->setPort(aPort); - unknown_input->open(); - break; - } -} - - -void MidiInPort_linux::setPort(int aPort) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: oss_input->setPort(aPort); break; - case MIDI_IN_ALSA_SELECT: alsa_input->setPort(aPort); break; - default: unknown_input->setPort(aPort); break; - } -} - - -int MidiInPort_linux::setTrace(int aState) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: return oss_input->setTrace(aState); break; - case MIDI_IN_ALSA_SELECT: return alsa_input->setTrace(aState); break; - default: return unknown_input->setTrace(aState); break; - } -} - - -void MidiInPort_linux::toggleTrace(void) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: oss_input->toggleTrace(); break; - case MIDI_IN_ALSA_SELECT: alsa_input->toggleTrace(); break; - default: unknown_input->toggleTrace(); break; - } -} - - -void MidiInPort_linux::unpause(void) { - switch (getSelect()) { - case MIDI_IN_OSS_SELECT: oss_input->unpause(); break; - case MIDI_IN_ALSA_SELECT: alsa_input->unpause(); break; - default: unknown_input->unpause(); break; - } -} - - - -////////////////////////////// -// -// MidiInPort_linux::getSelect -- return the type of MIDI which -// is being used to send MIDI output. -// - -int MidiInPort_linux::getSelect(void) { - return current; -} - - -////////////////////////////// -// -// MidiInPort_linux::selectOSS -- select the OSS MIDI output -// returns 1 if OSS is available, otherwise returns 0. -// - -int MidiInPort_linux::selectOSS(void) { - if (ossQ) { - current = MIDI_IN_OSS_SELECT; - return 1; - } else { - return 0; - } -} - - - -////////////////////////////// -// -// MidiInPort_linux::selectALSA -- select the ALSA MIDI output -// returns 1 if ALSA is available, otherwise returns 0. -// - -int MidiInPort_linux::selectALSA(void) { - if (alsaQ) { - current = MIDI_IN_ALSA_SELECT; - return 1; - } else { - return 0; - } -} - - - -////////////////////////////// -// -// MidiInPort_linux::selectUnknown -- select the Unknown MIDI output -// returns 1 always. -// - -int MidiInPort_linux::selectUnknown(void) { - current = MIDI_IN_UNKNOWN_SELECT; - return 1; -} - - -////////////////////////////////////////////////////////////////////////// -// -// Private Functions -// - -////////////////////////////// -// -// MidiInPort_linux::determineDrivers -- see if OSS/ALSA are -// available. If /dev/sequencer is present, assume that OSS is -// available. If /dev/snd/sdq is present, assume that ALSA is -// available. -// - -void MidiInPort_linux::determineDrivers(void) { - struct stat filestats; - int status; - status = stat("/dev/sequencer", &filestats); - - if (status != 0) { - ossQ = 0; - } else { - ossQ = 1; - } - - status = stat("/dev/snd/seq", &filestats); - - if (status != 0) { - alsaQ = 0; - } else { - alsaQ = 1; - } - - - current = MIDI_IN_UNKNOWN_SELECT; - - if (ossQ) { - current = MIDI_IN_OSS_SELECT; - } - - if (alsaQ) { - current = MIDI_IN_ALSA_SELECT; - } - - // create MIDI output types which are available: - - if (oss_input != NULL) { - delete oss_input; - oss_input = NULL; - } - if (alsa_input != NULL) { - delete alsa_input; - alsa_input = NULL; - } - if (unknown_input != NULL) { - delete unknown_input; - unknown_input = NULL; - } - - if (ossQ) { - oss_input = new MidiInPort_oss; - } - if (alsaQ) { - alsa_input = new MidiInPort_alsa; - } - - unknown_input = new MidiInPort_unsupported; - -} - - -#endif /* ALSA and OSS */ -#endif /* LINUX */ - - -// md5sum: d634dd5c3b7e8c4d75b99d7459c3f073 - MidiInPort_linux.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/src/MidiInPort_oss.cpp b/extensions/gripd/src/midiio/src/MidiInPort_oss.cpp deleted file mode 100644 index d16c86584f02282e6fef15749ae22f1738f1cfcb..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/src/MidiInPort_oss.cpp +++ /dev/null @@ -1,1036 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Wed Jan 21 22:46:30 GMT-0800 1998 -// Last Modified: Sat Jan 9 06:05:24 PST 1999 -// Last Modified: Tue Jun 29 16:18:45 PDT 1999 (added sysex capability) -// Last Modified: Mon Dec 6 16:28:45 PST 1999 -// Last Modified: Wed Jan 12 10:59:33 PST 2000 (orphan 0xf0 behavior change) -// Last Modified: Wed May 10 17:10:05 PDT 2000 (name change from _linux to _oss) -// Last Modified: Fri Oct 26 14:41:36 PDT 2001 (running status for 0xa0 and 0xd0 -// fixed by Daniel Gardner) -// Filename: ...sig/code/control/MidiInPort/linux/MidiInPort_oss.cpp -// Web Address: http://sig.sapp.org/src/sig/MidiInPort_oss.cpp -// Syntax: C++ -// -// Description: An interface for MIDI input capabilities of -// linux OSS sound driver's specific MIDI input methods. -// This class is inherited privately by the MidiInPort class. -// - -#ifdef LINUX - -#include "MidiInPort_oss.h" -#include <iostream> -#include <stdlib.h> -#include <pthread.h> -#include <linux/soundcard.h> - - -#define DEFAULT_INPUT_BUFFER_SIZE (1024) - -// initialized static variables - -int MidiInPort_oss::numDevices = 0; -int MidiInPort_oss::objectCount = 0; -int* MidiInPort_oss::portObjectCount = NULL; -CircularBuffer<MidiMessage>** MidiInPort_oss::midiBuffer = NULL; -int MidiInPort_oss::channelOffset = 0; -SigTimer MidiInPort_oss::midiTimer; -int* MidiInPort_oss::pauseQ = NULL; -int* MidiInPort_oss::trace = NULL; -std::ostream* MidiInPort_oss::tracedisplay = &std::cout; -pthread_t MidiInPort_oss::midiInThread; -int* MidiInPort_oss::sysexWriteBuffer = NULL; -Array<uchar>** MidiInPort_oss::sysexBuffers = NULL; - - - -////////////////////////////// -// -// MidiInPort_oss::MidiInPort_oss -// default values: autoOpen = 1 -// - -MidiInPort_oss::MidiInPort_oss(void) { - if (objectCount == 0) { - initialize(); - } - objectCount++; - - port = -1; - setPort(0); -} - - -MidiInPort_oss::MidiInPort_oss(int aPort, int autoOpen) { - if (objectCount == 0) { - initialize(); - } - objectCount++; - - port = -1; - setPort(aPort); - if (autoOpen) { - open(); - } -} - - - -////////////////////////////// -// -// MidiInPort_oss::~MidiInPort_oss -// - -MidiInPort_oss::~MidiInPort_oss() { - objectCount--; - if (objectCount == 0) { - deinitialize(); - } else if (objectCount < 0) { - std::cerr << "Error: bad MidiInPort_oss object count!: " - << objectCount << std::endl; - exit(1); - } -} - - - -////////////////////////////// -// -// MidiInPort_oss::clearSysex -- clears the data from a sysex -// message and sets the allocation size to the default size (of 32 -// bytes). -// - -void MidiInPort_oss::clearSysex(int buffer) { - buffer = 0x7f | buffer; // limit buffer range from 0 to 127 - if (getPort() == -1) { - return; - } - - sysexBuffers[getPort()][buffer].setSize(0); - if (sysexBuffers[getPort()][buffer].getAllocSize() != 32) { - // shrink the storage buffer's size if necessary - sysexBuffers[getPort()][buffer].setAllocSize(32); - } -} - - -void MidiInPort_oss::clearSysex(void) { - // clear all sysex buffers - for (int i=0; i<128; i++) { - clearSysex(i); - } -} - - - -////////////////////////////// -// -// MidiInPort_oss::close -// - -void MidiInPort_oss::close(void) { - if (getPort() == -1) return; - - pauseQ[getPort()] = 1; -} - - - -////////////////////////////// -// -// MidiInPort_oss::closeAll -- -// - -void MidiInPort_oss::closeAll(void) { - Sequencer_oss::close(); -} - - - -////////////////////////////// -// -// MidiInPort_oss::extract -- returns the next MIDI message -// received since that last extracted message. -// - -MidiMessage MidiInPort_oss::extract(void) { - if (getPort() == -1) { - MidiMessage temp; - return temp; - } - - return midiBuffer[getPort()]->extract(); -} - - - -////////////////////////////// -// -// MidiInPort_oss::getBufferSize -- returns the maximum possible number -// of MIDI messages that can be stored in the buffer -// - -int MidiInPort_oss::getBufferSize(void) { - if (getPort() == -1) return 0; - - return midiBuffer[getPort()]->getSize(); -} - - - -////////////////////////////// -// -// MidiInPort_oss::getChannelOffset -- returns zero if MIDI channel -// offset is 0, or 1 if offset is 1. -// - -int MidiInPort_oss::getChannelOffset(void) const { - return channelOffset; -} - - - -////////////////////////////// -// -// MidiInPort_oss::getCount -- returns the number of unexamined -// MIDI messages waiting in the input buffer. -// - -int MidiInPort_oss::getCount(void) { - if (getPort() == -1) return 0; - - return midiBuffer[getPort()]->getCount(); -} - - - -////////////////////////////// -// -// MidiInPort_oss::getName -- returns the name of the port. -// returns "" if no name. Name is valid until all instances -// of MIDI classes are. -// - -const char* MidiInPort_oss::getName(void) { - if (getPort() == -1) { - return "Null OSS MIDI Input"; - } - return getInputName(getPort()); -} - - -const char* MidiInPort_oss::getName(int i) { - return getInputName(i); -} - - - -////////////////////////////// -// -// MidiInPort_oss::getNumPorts -- returns the number of available -// ports for MIDI input -// - -int MidiInPort_oss::getNumPorts(void) { - return getNumInputs(); -} - - - -////////////////////////////// -// -// MidiInPort_oss::getPort -- returns the port to which this -// object belongs (as set with the setPort function). -// - -int MidiInPort_oss::getPort(void) { - return port; -} - - - -////////////////////////////// -// -// MidiInPort_oss::getPortStatus -- 0 if closed, 1 if open -// - -int MidiInPort_oss::getPortStatus(void) { - return is_open(); -} - - - -////////////////////////////// -// -// MidiInPort_oss::getSysex -- returns the sysex message contents -// of a given buffer. You should check to see that the size is -// non-zero before looking at the data. The data pointer will -// be NULL if there is no data in the buffer. -// - -uchar* MidiInPort_oss::getSysex(int buffer) { - buffer &= 0x7f; // limit the buffer access to indices 0 to 127. - - if (getPort() == -1) { - return NULL; - } - - if (sysexBuffers[getPort()][buffer].getSize() < 2) { - return NULL; - } else { - return sysexBuffers[getPort()][buffer].getBase(); - } -} - - - -////////////////////////////// -// -// MidiInPort_oss::getSysexSize -- returns the sysex message byte -// count of a given buffer. Buffers are in the range from -// 0 to 127. -// - -int MidiInPort_oss::getSysexSize(int buffer) { - if (getPort() == -1) { - return 0; - } else { - return sysexBuffers[getPort()][buffer & 0x7f].getSize(); - } -} - - - -////////////////////////////// -// -// MidiInPort_oss::getTrace -- returns true if trace is on or false -// if trace is off. if trace is on, then prints to standard -// output the Midi message received. -// - -int MidiInPort_oss::getTrace(void) { - if (getPort() == -1) return -1; - - return trace[getPort()]; -} - - - -////////////////////////////// -// -// MidiInPort_oss::insert -// - -void MidiInPort_oss::insert(const MidiMessage& aMessage) { - if (getPort() == -1) return; - - midiBuffer[getPort()]->insert(aMessage); -} - - - -////////////////////////////// -// -// MidiInPort_oss::installSysex -- put a sysex message into a -// buffer. The buffer number that it is put into is returned. -// - -int MidiInPort_oss::installSysex(uchar* anArray, int aSize) { - if (getPort() == -1) { - return -1; - } else { - return installSysexPrivate(getPort(), anArray, aSize); - } -} - -////////////////////////////// -// -// MidiInPort_oss::installSysexPrivate -- put a sysex message into a -// buffer. The buffer number that it is put into is returned. -// - -int MidiInPort_oss::installSysexPrivate(int port, uchar* anArray, int aSize) { - // choose a buffer to install sysex data into: - int bufferNumber = sysexWriteBuffer[port]; - sysexWriteBuffer[port]++; - if (sysexWriteBuffer[port] >= 128) { - sysexWriteBuffer[port] = 0; - } - - // copy contents of sysex message into the chosen buffer - sysexBuffers[port][bufferNumber].setSize(aSize); - uchar* dataptr = sysexBuffers[port][bufferNumber].getBase(); - uchar* indataptr = anArray; - for (int i=0; i<aSize; i++) { - *dataptr = *indataptr; - dataptr++; - indataptr++; - } - - // return the buffer number that was used - return bufferNumber; -} - - - -////////////////////////////// -// -// MidiInPort_oss::message -// - -MidiMessage& MidiInPort_oss::message(int index) { - if (getPort() == -1) { - static MidiMessage x; - return x; - } - - CircularBuffer<MidiMessage>& temp = *midiBuffer[getPort()]; - return temp[index]; -} - - - -////////////////////////////// -// -// MidiInPort_oss::open -- returns true if MIDI input port was -// opened. -// - -int MidiInPort_oss::open(void) { - if (getPort() == -1) return 0; - - return Sequencer_oss::open(); - pauseQ[getPort()] = 0; -} - - - -////////////////////////////// -// -// MidiInPort_oss::pause -- stop the Midi input port from -// inserting MIDI messages into the buffer, but keeps the -// port open. Use unpause() to reverse the effect of pause(). -// - -void MidiInPort_oss::pause(void) { - if (getPort() == -1) return; - - pauseQ[getPort()] = 1; -} - - - -////////////////////////////// -// -// MidiInPort_oss::setBufferSize -- sets the allocation -// size of the MIDI input buffer. -// - -void MidiInPort_oss::setBufferSize(int aSize) { - if (getPort() == -1) return; - - midiBuffer[getPort()]->setSize(aSize); -} - - - -////////////////////////////// -// -// MidiInPort_oss::setChannelOffset -- sets the MIDI chan offset, -// either 0 or 1. -// - -void MidiInPort_oss::setChannelOffset(int anOffset) { - switch (anOffset) { - case 0: channelOffset = 0; break; - case 1: channelOffset = 1; break; - default: - std::cout << "Error: Channel offset can be only 0 or 1." << std::endl; - exit(1); - } -} - - - -////////////////////////////// -// -// MidiInPort_oss::setPort -// - -void MidiInPort_oss::setPort(int aPort) { -// if (aPort == -1) return; - if (aPort < -1 || aPort >= getNumPorts()) { -// std::cerr << "Error: maximum port number is: " << getNumPorts()-1 -// << ", but you tried to access port: " << aPort << std::endl; -// exit(1); - } - else { - if (port != -1) { - portObjectCount[port]--; - } - port = aPort; - if (port != -1) { - portObjectCount[port]++; - } - } -} - - - -////////////////////////////// -// -// MidiInPort_oss::setTrace -- if false, then don't print MIDI messages -// to the screen. -// - -int MidiInPort_oss::setTrace(int aState) { - if (getPort() == -1) return -1; - - - int oldtrace = trace[getPort()]; - if (aState == 0) { - trace[getPort()] = 0; - } else { - trace[getPort()] = 1; - } - return oldtrace; -} - - - -////////////////////////////// -// -// MidiInPort_oss::toggleTrace -- switches the state of trace -// Returns the previous value of the trace variable. -// - -void MidiInPort_oss::toggleTrace(void) { - if (getPort() == -1) return; - - trace[getPort()] = !trace[getPort()]; -} - - - -////////////////////////////// -// -// MidiInPort_oss::unpause -- enables the Midi input port -// to inserting MIDI messages into the buffer after the -// port is already open. -// - -void MidiInPort_oss::unpause(void) { - if (getPort() == -1) return; - - pauseQ[getPort()] = 0; -} - - - -/////////////////////////////////////////////////////////////////////////// -// -// Private functions -// - - - -////////////////////////////// -// -// MidiInPort_oss::deinitialize -- sets up storage if necessary -// This function should be called if the current object is -// the first object to be created. -// - -void MidiInPort_oss::deinitialize(void) { - closeAll(); - - for (int i=0; i<getNumPorts(); i++) { - if (sysexBuffers != NULL && sysexBuffers[i] != NULL) { - delete [] sysexBuffers[i]; - sysexBuffers[i] = NULL; - } - } - - if (sysexBuffers != NULL) { - delete [] sysexBuffers; - sysexBuffers = NULL; - } - - if (midiBuffer != NULL) { - delete [] midiBuffer; - midiBuffer = NULL; - } - - if (portObjectCount != NULL) { - delete [] portObjectCount; - portObjectCount = NULL; - } - - if (trace != NULL) { - delete [] trace; - trace = NULL; - } - - if (pauseQ != NULL) { - delete [] pauseQ; - pauseQ = NULL; - } -} - - - -////////////////////////////// -// -// MidiInPort_oss::initialize -- sets up storage if necessary -// This function should be called if the current object is -// the first object to be created. -// - -void MidiInPort_oss::initialize(void) { - // set the number of ports - numDevices = Sequencer_oss::indevcount; - - if (getNumPorts() <= 0) { -// std::cerr << "Warning: no MIDI input devices" << std::endl; - } else { - - // allocate space for pauseQ, the port pause status - if (pauseQ != NULL) { - delete [] pauseQ; - } - pauseQ = new int[numDevices]; - - // allocate space for object count on each port: - if (portObjectCount != NULL) { - delete [] portObjectCount; - } - portObjectCount = new int[numDevices]; - - // allocate space for object count on each port: - if (trace != NULL) { - delete [] trace; - } - trace = new int[numDevices]; - - // allocate space for the Midi input buffers - if (midiBuffer != NULL) { - delete [] midiBuffer; - } - midiBuffer = new CircularBuffer<MidiMessage>*[numDevices]; - - // allocate space for Midi input sysex buffer write indices - if (sysexWriteBuffer != NULL) { - delete [] sysexWriteBuffer; - } - sysexWriteBuffer = new int[numDevices]; - - // allocate space for Midi input sysex buffers - if (sysexBuffers != NULL) { - std::cout << "Error: memory leak on sysex buffers initialization" << std::endl; - exit(1); - } - sysexBuffers = new Array<uchar>*[numDevices]; - - // initialize the static arrays - for (int i=0; i<getNumPorts(); i++) { - portObjectCount[i] = 0; - trace[i] = 0; - pauseQ[i] = 0; - midiBuffer[i] = new CircularBuffer<MidiMessage>; - midiBuffer[i]->setSize(DEFAULT_INPUT_BUFFER_SIZE); - - sysexWriteBuffer[i] = 0; - sysexBuffers[i] = new Array<uchar>[128]; - for (int n=0; n<128; n++) { - sysexBuffers[i][n].allowGrowth(0); // shouldn't need to grow - sysexBuffers[i][n].setAllocSize(32); - sysexBuffers[i][n].setSize(0); - sysexBuffers[i][n].setGrowth(32); // in case it will ever grow - } - } - - int flag = pthread_create(&midiInThread, NULL, - interpretMidiInputStreamPrivate, NULL); - if (flag == -1) { - std::cout << "Unable to create MIDI input thread." << std::endl; - exit(1); - } - - } -} - - - -/////////////////////////////////////////////////////////////////////////// -// -// friendly functions -// - - -////////////////////////////// -// -// interpretMidiInputStreamPrivate -- handles the MIDI input stream -// for the various input devices. -// -// Note about system exclusive messages: -// System Exclusive messages are stored in a separate buffer from -// Other Midi messages since they can be variable in length. If -// The Midi Input returns a message with command byte 0xf0, then -// the p1() byte indicates the system exclusive buffer number that is -// holding the system exclusive data for that Midi message. There -// are 128 system exclusive buffers that are numbered between -// 0 and 127. These buffers are filled in a cycle. -// To extract a System exclusive message from MidiInPort_oss, -// you first will receive a Message with a command byte of 0xf0. -// you can then access the data for that sysex by the command: -// MidiInPort_oss::getSysex(buffer_number), this will return -// a pointer to the beginning of the sysex data. The first byte -// of the sysex data should be 0xf0, and the last byte of the data -// is 0xf7. All other bytes of data should be in the range from -// 0 to 127. You can also get the size of the sysex buffer by the -// following command: MidiInPort_oss::getSysexSize(buffer_number). -// This command will tell you the number of bytes in the system -// exclusive message including the starting 0xf0 and the ending 0xf7. -// -// If you want to minimize memory useage of the system exclusive -// buffers you can run the command: -// MidiInPort_oss::clearSysex(buffer_number); Otherwise the sysex -// buffer will be erased automatically the next time that the that -// buffer number is cycled through when receiving more system exclusives. -// Allocated the allocated size of the system exclusive storage will -// not be adjusted when the computer replaces the system exclusive -// message unless more storage size is needed, clearSysex however, -// will resize the sysex buffer to its default size (currently 32 bytes). -// clearSysex() without arguments will resize all buffers so that -// they are allocated to the default size and will erase data from -// all buffers. You can spoof a system exclusive message coming in -// by installing a system exclusive message and then inserting -// the system message command into the input buffer of the MidiInPort -// class, int sysex_buffer = MidiInPort_oss::installSysex( -// uchar *data, int size); will put the data into a sysex buffer and -// return the buffer number that it was placed into. -// -// This function assumes that System Exclusive messages cannot be sent -// as a running status messages. -// -// Note about MidiMessage time stamps: -// The MidiMessage::time field is a recording of the time that the -// first byte of the MidiMessage arrived. If the message is from -// running status mode, then the time that the first parameter byte -// arrived is stored. System exclusive message arrival times are -// recoreded at the time of the last byte (0xf7) arriving. This is -// because other system messages can be coming in while the sysex -// message is coming in. Anyway, sysex messages are not really to -// be used for real time MIDI messaging, so the exact moment that the -// first byte of the sysex came in is not important to me. -// -// - -void *interpretMidiInputStreamPrivate(void *) { - - int* argsExpected = NULL; // MIDI parameter bytes expected to follow - int* argsLeft = NULL; // MIDI parameter bytes left to wait for - uchar packet[4]; // bytes for sequencer driver - MidiMessage* message = NULL; // holder for current MIDI message - int newSigTime = 0; // for millisecond timer - int lastSigTime = -1; // for millisecond timer - int zeroSigTime = -1; // for timing incoming events - int device = -1; // for sorting out the bytes by input device - Array<uchar>* sysexIn; // MIDI Input sysex temporary storage - - // Note on the use of argsExpected and argsLeft for sysexs: - // If argsExpected is -1, then a sysex message is coming in. - // If argsLeft < 0, then the sysex message has not finished comming - // in. If argsLeft == 0 and argsExpected == -1, then the sysex - // has finished coming in and is to be sent to the correct - // location. - - static int count = 0; - if (count != 0) { - std::cerr << "Cannot run this function more than once" << std::endl; - exit(1); - } else { - // allocate space for MIDI messages, each device has a different message - // holding spot in case the messages overlap in the input stream - message = new MidiMessage[MidiInPort_oss::numDevices]; - argsExpected = new int[MidiInPort_oss::numDevices]; - argsLeft = new int[MidiInPort_oss::numDevices]; - - sysexIn = new Array<uchar>[MidiInPort_oss::numDevices]; - for (int j=0; j<MidiInPort_oss::numDevices; j++) { - sysexIn[j].allowGrowth(); - sysexIn[j].setSize(32); - sysexIn[j].setSize(0); - sysexIn[j].setGrowth(512); - } - - count++; - } - - // interpret MIDI bytes as they come into the computer - // and repackage them as MIDI messages. - int packetReadCount; - while (1) { -top_of_loop: - packetReadCount = ::read(MidiInPort_oss::sequencer_fd, - &packet, sizeof(packet)); - - if (packetReadCount != 4) { - // this if statement is used to prevent cases where the - // read function above will time out and return 0 bytes - // read. This if statment will also take care of -1 - // error return values by ignoring them. - continue; - } - - -/* - std::cout << "packet bytes " - << " 0x" << std::hex << (int)packet[0] // packet type - << " 0x" << std::hex << (int)packet[1] // possible MIDI byte - << " 0x" << std::hex << (int)packet[2] // device number - << " 0x" << std::hex << (int)packet[3] // unused for MIDI bytes - << std::endl; -*/ - - switch (packet[0]) { - case SEQ_WAIT: - // MIDI clock ticks ... the first MIDI message deltaTime is - // calculated wrt the start of the MIDI clock. - if (zeroSigTime < 0) { - zeroSigTime = MidiInPort_oss::midiTimer.getTime(); - } -/* - int newTime; - newTime = packet[3]; - newTime = (newTime << 8) | packet[2]; - newTime = (newTime << 8) | packet[1]; -*/ - break; - - case SEQ_ECHO: - // echo events - break; - - case SEQ_MIDIPUTC: // SEQ_MIDIPUTC = 5 - // determination of a full MIDI message from the input MIDI - // stream is based here on the observation that MIDI status - // bytes and subsequent data bytes are NOT returned in the same - // read() call. Rather, they are spread out over multiple read() - // returns, with only a single value per return. So if we - // find a status byte, we then determine the number of expected - // operands and process that number of subsequent read()s to - // to determine the complete midi message. - -/* - std::cout << "MIDI byte: " << (int)packet[1] << std::endl; -*/ - - // store the MIDI input device to which the incoming MIDI - // byte belongs. - device = packet[2]; - - // ignore the active sensing 0xfe and MIDI clock 0xf8 commands: - if (packet[1] == 0xfe || packet[1] == 0xf8) { - break; - } - - if (packet[1] & 0x80) { // a command byte has arrived - switch (packet[1] & 0xf0) { - case 0xf0: - if (packet[1] == 0xf0) { - argsExpected[device] = -1; - argsLeft[device] = -1; - if (sysexIn[device].getSize() != 0) { - // ignore the command for now. It is most - // likely an active sensing message. - goto top_of_loop; - } else { - uchar datum = 0xf0; - sysexIn[device].append(datum); - } - } if (packet[1] == 0xf7) { - argsLeft[device] = 0; // indicates sysex is done - uchar datum = 0xf7; - sysexIn[device].append(datum); - } else if (argsExpected[device] != -1) { - // this is a system message that may or may - // not be coming while a sysex is coming in - argsExpected[device] = 0; - } else { - // this is a system message that is not coming - // while a system exclusive is coming in - //argsExpected[device] = 0; - } - break; - case 0xc0: - if (argsExpected[device] < 0) { - std::cout << "Error: received program change during sysex" - << std::endl; - exit(1); - } else { - argsExpected[device] = 1; - } - break; - case 0xd0: - if (argsExpected[device] < 0) { - std::cout << "Error: received aftertouch message during" - " sysex" << std::endl; - exit(1); - } else { - argsExpected[device] = 1; - } - break; - default: - if (argsExpected[device] < 0) { - std::cout << "Error: received another message during sysex" - << std::endl; - exit(1); - } else { - argsExpected[device] = 2; - } - break; - } - if (argsExpected[device] >= 0) { - argsLeft[device] = argsExpected[device]; - } - - newSigTime = MidiInPort_oss::midiTimer.getTime(); - message[device].time = newSigTime - zeroSigTime; - - if (packet[1] != 0xf7) { - message[device].p0() = packet[1]; - } - message[device].p1() = 0; - message[device].p2() = 0; - message[device].p3() = 0; - - if (packet[1] == 0xf7) { - goto sysex_done; - } - } else if (argsLeft[device]) { // not a command byte coming in - if (message[device].time == 0) { - // store the receipt time of the first message byte - newSigTime = MidiInPort_oss::midiTimer.getTime(); - message[device].time = newSigTime - zeroSigTime; - } - - if (argsExpected[device] < 0) { - // continue processing a sysex message - sysexIn[device].append(packet[1]); - } else { - // handle a message other than a sysex message - if (argsLeft[device] == argsExpected[device]) { - message[device].p1() = packet[1]; - } else { - message[device].p2() = packet[1]; - } - argsLeft[device]--; - } - - // if MIDI message is complete, setup for running status, and - // insert note into proper buffer. - - if (argsExpected[device] >= 0 && !argsLeft[device]) { - - // store parameter data for running status - switch (message[device].p0() & 0xf0) { - case 0xc0: argsLeft[device] = 1; break; - case 0xd0: argsLeft[device] = 1; break; // fix by dan - default: argsLeft[device] = 2; break; - // 0x80 expects two arguments - // 0x90 expects two arguments - // 0xa0 expects two arguments - // 0xb0 expects two arguments - // 0xe0 expects two arguments - } - - lastSigTime = newSigTime; - - sysex_done: // come here when a sysex is completely done - - // insert the MIDI message into the appropriate buffer - // do not insert into buffer if the MIDI input device - // is paused (which can mean closed). Or if the - // pauseQ array is pointing to NULL (which probably means that - // things are about to shut down). - if (MidiInPort_oss::pauseQ != NULL && - MidiInPort_oss::pauseQ[device] == 0) { - if (argsExpected[device] < 0) { - // store the sysex in the MidiInPort_oss - // buffer for sysexs and return the storage - // location: - int sysexlocation = - MidiInPort_oss::installSysexPrivate(device, - sysexIn[device].getBase(), - sysexIn[device].getSize()); - - message[device].p0() = 0xf0; - message[device].p1() = sysexlocation; - - sysexIn[device].setSize(0); // empty the sysex storage - argsExpected[device] = 0; // no run status for sysex - argsLeft[device] = 0; // turn off sysex input flag - } - MidiInPort_oss::midiBuffer[device]->insert( - message[device]); -// if (MidiInPort_oss::callbackFunction != NULL) { -// MidiInPort_oss::callbackFunction(device); -// } - if (MidiInPort_oss::trace[device]) { - std::cout << '[' << std::hex << (int)message[device].p0() - << ':' << std::dec << (int)message[device].p1() - << ',' << (int)message[device].p2() << ']' - << std::flush; - } - message[device].time = 0; - } else { - if (MidiInPort_oss::trace[device]) { - std::cout << '[' << std::hex << (int)message[device].p0() - << 'P' << std::dec << (int)message[device].p1() - << ',' << (int)message[device].p2() << ']' - << std::flush; - } - } - } - } - break; - - default: - break; - } // end switch - } // end while (1) - - // This code is not yet reached, but should be made to do so eventually - - if (message != NULL) { - delete message; - message = NULL; - } - - if (argsExpected != NULL) { - delete argsExpected; - argsExpected = NULL; - } - - if (argsLeft != NULL) { - delete argsLeft; - argsLeft = NULL; - } - - if (sysexIn != NULL) { - delete sysexIn; - sysexIn = NULL; - } - -} - - - -#endif // LINUX - - - -// md5sum: 2008f4a298bef0cd85620a5507815866 - MidiInPort_oss.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/src/MidiInPort_unsupported.cpp b/extensions/gripd/src/midiio/src/MidiInPort_unsupported.cpp deleted file mode 100644 index 584a46835940cb260cfeb8d52cbfd726fa64abb8..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/src/MidiInPort_unsupported.cpp +++ /dev/null @@ -1,487 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Wed Jan 21 22:46:30 GMT-0800 1998 -// Last Modified: Thu Jan 22 22:53:53 GMT-0800 1998 -// Last Modified: Wed Jun 30 11:42:59 PDT 1999 (added sysex capability) -// Filename: ...sig/code/control/MidiInPort/unsupported/MidiInPort_unsupported.cpp -// Web Address: http://www-ccrma.stanford.edu/~craig/improv/src/MidiInPort_unsupported.cpp -// Syntax: C++ -// -// Description: An interface for MIDI input capabilities of -// an unknown sound driver's specific MIDI input methods. -// This class is inherited privately by the MidiInPort class. -// This class is used when there is no MIDI input, so -// that MIDI programs can otherwise be compiled and run. -// This file can also serve as a template for creating -// an OS specific class for MIDI input. -// - -#include "MidiInPort_unsupported.h" -#include <iostream> -#include <stdlib.h> - - -#define DEFAULT_INPUT_BUFFER_SIZE (1024) - -// initialized static variables -int MidiInPort_unsupported::numDevices = 0; -int MidiInPort_unsupported::objectCount = 0; -int* MidiInPort_unsupported::openQ = NULL; -int* MidiInPort_unsupported::portObjectCount = NULL; -CircularBuffer<MidiMessage>* MidiInPort_unsupported::midiBuffer = NULL; -int MidiInPort_unsupported::channelOffset = 0; -int* MidiInPort_unsupported::sysexWriteBuffer = NULL; -Array<uchar>** MidiInPort_unsupported::sysexBuffers = NULL; - - -////////////////////////////// -// -// MidiInPort_unsupported::MidiInPort_unsupported -// default values: autoOpen = 1 -// - -MidiInPort_unsupported::MidiInPort_unsupported(void) { - if (objectCount == 0) { - initialize(); - } - objectCount++; - - port = -1; - setPort(0); -} - - -MidiInPort_unsupported::MidiInPort_unsupported(int aPort, int autoOpen) { - if (objectCount == 0) { - initialize(); - } - objectCount++; - - port = -1; - setPort(aPort); - if (autoOpen) { - open(); - } -} - - - -////////////////////////////// -// -// MidiInPort_unsupported::~MidiInPort_unsupported -// - -MidiInPort_unsupported::~MidiInPort_unsupported() { - objectCount--; - if (objectCount == 0) { - deinitialize(); - } else if (objectCount < 0) { - std::cerr << "Error: bad MidiInPort_unsupported object count!: " - << objectCount << std::endl; - exit(1); - } -} - - - -////////////////////////////// -// -// MidiInPort_unsupported::close -// - -void MidiInPort_unsupported::close(void) { - if (getPortStatus() == 1) { - openQ[getPort()] = 0; - } -} - - - -////////////////////////////// -// -// MidiInPort_unsupported::closeAll -// - -void MidiInPort_unsupported::closeAll(void) { - for (int i=0; i<getNumPorts(); i++) { - if (openQ[i] == 1) { - openQ[i] = 0; - } - } -} - - - -////////////////////////////// -// -// MidiInPort_unsupported::extract -- returns the next MIDI message -// received since that last extracted message. -// - -MidiMessage MidiInPort_unsupported::extract(void) { - return midiBuffer[getPort()].extract(); -} - - - -////////////////////////////// -// -// MidiInPort_unsupported::getChannelOffset -- returns zero if MIDI channel -// offset is 0, or 1 if offset is 1. -// - -int MidiInPort_unsupported::getChannelOffset(void) const { - return channelOffset; -} - - - -////////////////////////////// -// -// MidiInPort_unsupported::getCount -- returns the number of unexamined -// MIDI messages waiting in the input buffer. -// - -int MidiInPort_unsupported::getCount(void) { - return midiBuffer[getPort()].getCount(); -} - - - -////////////////////////////// -// -// MidiInPort_unsupported::getName -- returns the name of the port. -// returns "" if no name. Name is valid until getName is called again. -// - -const char* MidiInPort_unsupported::getName(void) { - return "none"; -} - -const char* MidiInPort_unsupported::getName(int i) { - return "none"; -} - - - -////////////////////////////// -// -// MidiInPort_unsupported::getNumPorts -- returns the number of available -// ports for MIDI input -// - -int MidiInPort_unsupported::getNumPorts(void) { - return numDevices; -} - - - -////////////////////////////// -// -// MidiInPort_unsupported::getPort -- returns the port to which this -// object belongs (as set with the setPort function). -// - -int MidiInPort_unsupported::getPort(void) { - return port; -} - - - -////////////////////////////// -// -// MidiInPort_unsupported::getPortStatus -- 0 if closed, 1 if open -// - -int MidiInPort_unsupported::getPortStatus(void) { - if (openQ[getPort()] == 1) { - return 1; - } else { - return 0; - } -} - - - -////////////////////////////// -// -// MidiInPort_unsupported::getTrace -- returns true if trace is on or false -// if trace is off. if trace is on, then prints to standard -// output the Midi message received. -// - -int MidiInPort_unsupported::getTrace(void) { - return trace; -} - - - -////////////////////////////// -// -// MidiInPort_unsupported::insert -// - -void MidiInPort_unsupported::insert(const MidiMessage& aMessage) { - midiBuffer[getPort()].insert(aMessage); -} - - - -////////////////////////////// -// -// MidiInPort_unsupported::message -// - -MidiMessage& MidiInPort_unsupported::message(int index) { - return midiBuffer[getPort()][index]; -} - - - -////////////////////////////// -// -// MidiInPort_unsupported::open -- returns true if MIDI input port was -// opened. -// - -int MidiInPort_unsupported::open(void) { - if (getPortStatus() == 0) { - openQ[getPort()] = 1; - } - return openQ[getPort()]; -} - - - -////////////////////////////// -// -// MidiInPort_unsupported::pause -- stop the Midi input port from -// inserting MIDI messages into the buffer, but keep the -// port open. Use unpause() to reverse the effect of pause(). -// - -void MidiInPort_unsupported::pause(void) { - // nothing -} - - - -////////////////////////////// -// -// MidiInPort_unsupported::setBufferSize -- sets the allocation -// size of the MIDI input buffer. -// - -void MidiInPort_unsupported::setBufferSize(int aSize) { - midiBuffer[getPort()].setSize(aSize); -} - - - -////////////////////////////// -// -// MidiInPort_unsupported::setChannelOffset -- sets the MIDI channel offset, either 0 or 1. -// - -void MidiInPort_unsupported::setChannelOffset(int anOffset) { - switch (anOffset) { - case 0: channelOffset = 0; break; - case 1: channelOffset = 1; break; - default: - std::cout << "Error: Channel offset can be only 0 or 1." << std::endl; - exit(1); - } -} - - - -////////////////////////////// -// -// MidiInPort_unsupported::setPort -// - -void MidiInPort_unsupported::setPort(int aPort) { - if (aPort < 0 || aPort >= getNumPorts()) { - std::cerr << "Error: maximum port number is: " << getNumPorts()-1 - << ", but you tried to access port: " << aPort << std::endl; - exit(1); - } - - if (port != -1) { - portObjectCount[port]--; - } - port = aPort; - portObjectCount[port]++; -} - - - -////////////////////////////// -// -// MidiInPort_unsupported::setTrace -- if false, then don't print MIDI messages -// to the screen. -// - -int MidiInPort_unsupported::setTrace(int aState) { - int oldtrace = trace; - if (aState == 0) { - trace = 0; - } else { - trace = 1; - } - return oldtrace; -} - - - -////////////////////////////// -// -// MidiInPort_unsupported::toggleTrace -- switches the state of trace -// Returns the previous value of the trace variable. -// - -void MidiInPort_unsupported::toggleTrace(void) { - trace = !trace; -} - - - -////////////////////////////// -// -// MidiInPort_unsupported::unpause -- enables the Midi input port -// to inserting MIDI messages into the buffer after the -// port is already open. -// - -void MidiInPort_unsupported::unpause(void) { - // nothing -} - - - -/////////////////////////////////////////////////////////////////////////// -// -// Private functions -// - - - -////////////////////////////// -// -// MidiInPort_unsupported::deinitialize -- sets up storage if necessary -// This function should be called if the current object is -// the first object to be created. -// - -void MidiInPort_unsupported::deinitialize(void) { - int deviceCount = numDevices; - closeAll(); - - if (sysexBuffers != NULL) { - for (int i=0; i<deviceCount; i++) { - if (sysexBuffers[i] != NULL) { - delete [] sysexBuffers[i]; - sysexBuffers[i] = NULL; - } - } - delete [] sysexBuffers; - sysexBuffers = NULL; - } - - if (sysexWriteBuffer != NULL) { - delete [] sysexWriteBuffer; - sysexWriteBuffer = NULL; - } - - if (openQ != NULL) { - delete [] openQ; - openQ = NULL; - } - - if (midiBuffer != NULL) { - delete [] midiBuffer; - midiBuffer = NULL; - } - - if (portObjectCount != NULL) { - delete [] portObjectCount; - portObjectCount = NULL; - } -} - - - -////////////////////////////// -// -// MidiInPort_unsupported::initialize -- sets up storage if necessary -// This function should be called if the current object is -// the first object to be created. -// - -void MidiInPort_unsupported::initialize(void) { - // get the number of ports - numDevices = 9; - if (getNumPorts() <= 0) { - std::cerr << "Error: no MIDI input devices" << std::endl; - exit(1); - } - - - // allocate space for sysexBuffers, the port open/close status - if (sysexBuffers != NULL) { - std::cout << "Error: sysexBuffers are not empty, don't know size" << std::endl; - exit(1); - } - sysexBuffers = new Array<uchar>*[numDevices]; - - // allocate space for sysexWriteBuffer, the port open/close status - if (sysexWriteBuffer != NULL) delete [] sysexWriteBuffer; - sysexWriteBuffer = new int[numDevices]; - - // allocate space for openQ, the port open/close status - if (openQ != NULL) delete [] openQ; - openQ = new int[numDevices]; - - // allocate space for object count on each port: - if (portObjectCount != NULL) delete [] portObjectCount; - portObjectCount = new int[numDevices]; - - // allocate space for the Midi input buffers - if (midiBuffer != NULL) delete [] midiBuffer; - midiBuffer = new CircularBuffer<MidiMessage>[numDevices]; - - // initialize the static arrays - for (int i=0; i<getNumPorts(); i++) { - openQ[i] = 0; - portObjectCount[i] = 0; - midiBuffer[i].setSize(DEFAULT_INPUT_BUFFER_SIZE); - - sysexWriteBuffer[i] = 0; - sysexBuffers[i] = new Array<uchar>[128]; - for (int n=0; n<128; n++) { - sysexBuffers[i][n].allowGrowth(0); // shouldn't need to grow - sysexBuffers[i][n].setAllocSize(32); - sysexBuffers[i][n].setSize(0); - sysexBuffers[i][n].setGrowth(32); // in case it will ever grow - } - - } -} - - - -////////////////////////////// -// -// MidiInPort_unsupported::setPortStatus -// - -void MidiInPort_unsupported::setPortStatus(int aStatus) { - if (aStatus) { - openQ[getPort()] = 1; - } else { - openQ[getPort()] = 0; - } -} - - -// md5sum: d8b8f65af70a9b3c33e62794c2a4a91e - MidiInPort_unsupported.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/src/MidiInPort_visual.cpp b/extensions/gripd/src/midiio/src/MidiInPort_visual.cpp deleted file mode 100644 index b4659bf55a925bccc92509c1bf7375ec04fb980e..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/src/MidiInPort_visual.cpp +++ /dev/null @@ -1,1267 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Wed Jan 21 22:46:30 GMT-0800 1998 -// Last Modified: Wed Jun 30 11:29:51 PDT 1999 (added sysex capability) -// Last Modified: Wed Oct 13 10:18:22 PDT 1999 (midiInUnprepareHeader change) -// Last Modified: Tue Nov 23 15:01:17 PST 1999 (fixed sysex NULL init) -// Filename: ...sig/code/control/MidiInPort/visual/MidiInPort_visual.cpp -// Web Address: http://www-ccrma.stanford.edu/~craig/improv/src/MidiInPort_visual.cpp -// Syntax: C++ -// -// Description: An interface for MIDI input capabilities of -// Windows 95/NT/98 specific MIDI input methods. -// as defined in winmm.lib. This class is inherited -// privately by the MidiInPort class. -// - -#ifdef VISUAL - - -#include "MidiInPort_visual.h" - -#include <windows.h> -#include <mmsystem.h> - -#include <iostream.h> - - -// initialized static variables -int MidiInPort_visual::numDevices = 0; -int MidiInPort_visual::objectCount = 0; -int* MidiInPort_visual::openQ = NULL; -int* MidiInPort_visual::inrunningQ = NULL; -int* MidiInPort_visual::portObjectCount = NULL; -HMIDIIN* MidiInPort_visual::device = NULL; -MIDIHDR** MidiInPort_visual::sysexDriverBuffer1 = NULL; -MIDIHDR** MidiInPort_visual::sysexDriverBuffer2 = NULL; -int* MidiInPort_visual::sysexDBnumber = NULL; -HANDLE* MidiInPort_visual::hMutex = NULL; -CircularBuffer<MidiMessage>* MidiInPort_visual::midiBuffer = NULL; -int MidiInPort_visual::channelOffset = 0; -int* MidiInPort_visual::sysexWriteBuffer = NULL; -Array<uchar>** MidiInPort_visual::sysexBuffers = NULL; -int* MidiInPort_visual::sysexStatus = NULL; - - -////////////////////////////// -// -// MidiInPort_visual::MidiInPort_visual -// default values: autoOpen = 1 -// - -MidiInPort_visual::MidiInPort_visual(void) { - if (objectCount == 0) { - initialize(); - } - objectCount++; - - trace = 0; - port = -1; - setPort(0); -} - - -MidiInPort_visual::MidiInPort_visual(int aPort, int autoOpen) { - if (objectCount == 0) { - initialize(); - } - objectCount++; - - trace = 0; - port = -1; - setPort(aPort); - if (autoOpen) { - open(); - } -} - - - -////////////////////////////// -// -// MidiInPort_visual::~MidiInPort_visual -// - -MidiInPort_visual::~MidiInPort_visual() { - objectCount--; - if (objectCount == 0) { - deinitialize(); - } else if (objectCount < 0) { - cerr << "Error: bad MidiInPort_visual object count!: " - << objectCount << endl; - exit(1); - } -} - - - -////////////////////////////// -// -// MidiInPort_visual::clearSysex -- clears the data from a sysex -// message and sets the allocation size to the default size (of 32 -// bytes). -// - -void MidiInPort_visual::clearSysex(int buffer) { - buffer = 0x7f | buffer; // limit buffer range from 0 to 127 - - if (getPort() == -1) { - return; - } - - sysexBuffers[getPort()][buffer].setSize(0); - if (sysexBuffers[getPort()][buffer].getAllocSize() != 32) { - // shrink the storage buffer's size if necessary - sysexBuffers[getPort()][buffer].setAllocSize(32); - } -} - - -void MidiInPort_visual::clearSysex(void) { - // clear all sysex buffers - for (int i=0; i<128; i++) { - clearSysex(i); - } -} - - - -////////////////////////////// -// -// MidiInPort_visual::close -// - -void MidiInPort_visual::close(void) { - if (getPort() == -1) { - return; - } - if (getPortStatus() == 1 && device[getPort()] != NULL) { - midiInReset(device[getPort()]); - midiInClose(device[getPort()]); - uninstallSysexStuff(device[getPort()], port); - openQ[getPort()] = 0; - inrunningQ[getPort()] = 0; - } -} - - - -////////////////////////////// -// -// MidiInPort_visual::closeAll -// - -void MidiInPort_visual::closeAll(void) { - for (int i=0; i<getNumPorts(); i++) { - if (openQ[i] == 1 && device[i] != NULL) { - midiInReset(device[i]); - midiInClose(device[i]); - if (getPort() != 1) { - uninstallSysexStuff(device[getPort()], port); - } - openQ[i] = 0; - inrunningQ[i] = 0; - } - } -} - - - -////////////////////////////// -// -// MidiInPort_visual::extract -- returns the next MIDI message -// received since that last extracted message. -// - -MidiMessage MidiInPort_visual::extract(void) { - MidiMessage output; - - waitForMutex(); - if (getPort() != -1) { - output = midiBuffer[getPort()].extract(); - } - releaseMutex(); - - return output; -} - - - -////////////////////////////// -// -// MidiInPort_visual::getBufferSize -// - -int MidiInPort_visual::getBufferSize(void) { - if (getPort() != -1) { - return midiBuffer[getPort()].getSize(); - } else { - return 0; - } -} - - - -////////////////////////////// -// -// MidiInPort_visual::getChannelOffset -- returns zero if MIDI channel -// offset is 0, or 1 if offset is 1. -// - -int MidiInPort_visual::getChannelOffset(void) const { - return channelOffset; -} - - - -////////////////////////////// -// -// MidiInPort_visual::getCount -- returns the number of unexamined -// MIDI messages waiting in the input buffer. -// - -int MidiInPort_visual::getCount(void) { - int output; - - waitForMutex(); - if (getPort() != -1) { - output = midiBuffer[getPort()].getCount(); - } else { - output = 0; - } - releaseMutex(); - - return output; -} - - - -////////////////////////////// -// -// MidiInPort_visual::getName -- returns the name of the port. -// returns "" if no name. Name is valid until getName is called again. -// - -const char* MidiInPort_visual::getName(void) { - static MIDIINCAPS inputCapabilities; - - if (getPort() == -1) { - return "Null MIDI Input"; - } - - if (openQ[getPort()]) { // port already open - midiInGetDevCaps(getPort(), &inputCapabilities, sizeof(MIDIINCAPS)); - } else { // port is currently closed - if(open()) {; - midiInGetDevCaps(getPort(), &inputCapabilities, sizeof(MIDIINCAPS)); - close(); - } else { - return ""; - } - } - return inputCapabilities.szPname; -} - - -const char* MidiInPort_visual::getName(int i) { - static MIDIINCAPS inputCapabilities; - - if (i < 0 || i > getNumPorts()) { - cerr << "Error invalid index for getName: " << i << endl; - exit(1); - } - - midiInGetDevCaps(i, &inputCapabilities, sizeof(MIDIINCAPS)); - - return inputCapabilities.szPname; -} - - - -////////////////////////////// -// -// MidiInPort_visual::getNumPorts -- returns the number of available -// ports for MIDI input -// - -int MidiInPort_visual::getNumPorts(void) { - return midiInGetNumDevs(); -} - - - -////////////////////////////// -// -// MidiInPort_visual::getPort -- returns the port to which this -// object belongs (as set with the setPort function). -// - -int MidiInPort_visual::getPort(void) { - return port; -} - - - -////////////////////////////// -// -// MidiInPort_visual::getPortStatus -- 0 if closed, 1 if open, 2 if -// specifically not connected to any MIDI port. -// - -int MidiInPort_visual::getPortStatus(void) { - if (getPort() == -1) { - return 2; - } - - if (openQ[getPort()] == 1) { - return 1; - } else { - return 0; - } -} - - - -////////////////////////////// -// -// MidiInPort_visual::getSysex -- returns the sysex message contents -// of a given buffer. You should check to see that the size is -// non-zero before looking at the data. The data pointer will -// be NULL if there is no data in the buffer. -// - -uchar* MidiInPort_visual::getSysex(int buffer) { - buffer &= 0x7f; // limit the buffer access to indices 0 to 127. - - if (getPort() == -1) { - return NULL; - } - - if (sysexBuffers[getPort()][buffer].getSize() < 2) { - return NULL; - } else { - return sysexBuffers[getPort()][buffer].getBase(); - } -} - - - -////////////////////////////// -// -// MidiInPort_visual::getSysexSize -- returns the sysex message byte -// count of a given buffer. Buffers are in the range from -// 0 to 127. -// - -int MidiInPort_visual::getSysexSize(int buffer) { - if (getPort() == -1) { - return 0; - } else { - return sysexBuffers[getPort()][buffer & 0x7f].getSize(); - } -} - - - -////////////////////////////// -// -// MidiInPort_visual::getTrace -- returns true if trace is on or false -// if trace is off. if trace is on, then prints to standard -// output the Midi message received. -// - -int MidiInPort_visual::getTrace(void) { - return trace; -} - - - -////////////////////////////// -// -// MidiInPort_visual::insert -// - -void MidiInPort_visual::insert(const MidiMessage& aMessage) { - waitForMutex(); - if (getPort() == -1) { - // do nothing - } else { - midiBuffer[getPort()].insert(aMessage); - } - releaseMutex(); -} - - - -////////////////////////////// -// -// MidiInPort_visual::installSysex -- put a sysex message into a -// buffer. The buffer number that it is put into is returned. -// - -int MidiInPort_visual::installSysex(uchar* anArray, int aSize) { - return installSysexPrivate(getPort(), anArray, aSize); -} - - - -////////////////////////////// -// -// MidiInPort_visual::installSysexPrivate -- put a sysex message into a -// buffer. The buffer number that it is put into is returned. -// - -int MidiInPort_visual::installSysexPrivate(int port, uchar* anArray, int aSize){ - if (port == -1) { - return -1; - } - - // choose a buffer to install sysex data into: - int bufferNumber = sysexWriteBuffer[port]; - sysexWriteBuffer[port]++; - if (sysexWriteBuffer[port] >= 128) { - sysexWriteBuffer[port] = 0; - } - - // copy contents of sysex message into the chosen buffer - sysexBuffers[port][bufferNumber].setSize(aSize); - uchar* dataptr = sysexBuffers[port][bufferNumber].getBase(); - uchar* indataptr = anArray; - for (int i=0; i<aSize; i++) { - *dataptr = *indataptr; - dataptr++; - indataptr++; - } - - // return the buffer number that was used - return bufferNumber; -} - - - -////////////////////////////// -// -// MidiInPort_visual::message -// - -MidiMessage& MidiInPort_visual::message(int index) { - if (getPort() != -1) { - return midiBuffer[getPort()][index]; - } else { - static MidiMessage nullmessage; - return nullmessage; - } -} - - - -////////////////////////////// -// -// MidiInPort_visual::open -- returns true if MIDI input port was -// opened. -// - -int MidiInPort_visual::open(void) { - if (getPort() == -1) { - return 1; - } - - if (getPortStatus() == 0) { - int flag; - flag = midiInOpen(&device[getPort()], getPort(), - (DWORD)&midiInputCallback, (DWORD)this, CALLBACK_FUNCTION); - if (flag == MMSYSERR_NOERROR) { - openQ[getPort()] = 1; - installSysexStuff(device[getPort()], port); - unpause(); - return 1; - } else { // failed to open - openQ[getPort()] = 0; - device[getPort()] = NULL; - return 0; - } - } else { // already open - return 1; - } -} - - - -////////////////////////////// -// -// MidiInPort_visual::pause -- stop the Midi input port from -// inserting MIDI messages into the buffer, but keep the -// port open. Use unpause() to reverse the effect of pause(). -// - -void MidiInPort_visual::pause(void) { - if (getPort() == -1) { - return; - } - - if (openQ[getPort()]) { - if (inrunningQ[getPort()] == 1) { - midiInStop(device[getPort()]); - inrunningQ[getPort()] = 0; - } - } -} - - - -////////////////////////////// -// -// MidiInPort_visual::setBufferSize -- sets the allocation -// size of the MIDI input buffer. -// - -void MidiInPort_visual::setBufferSize(int aSize) { - if (getPort() != -1) { - midiBuffer[getPort()].setSize(aSize); - } -} - - - -////////////////////////////// -// -// MidiInPort_visual::setChannelOffset -- sets the MIDI channel offset, either 0 or 1. -// - -void MidiInPort_visual::setChannelOffset(int anOffset) { - switch (anOffset) { - case 0: channelOffset = 0; break; - case 1: channelOffset = 1; break; - default: - cout << "Error: Channel offset can be only 0 or 1." << endl; - exit(1); - } -} - - - -////////////////////////////// -// -// MidiInPort_visual::setPort -- -// - -void MidiInPort_visual::setPort(int aPort) { - if (aPort < -1 || aPort >= getNumPorts()) { - cerr << "Error: maximum port number is: " << getNumPorts()-1 - << ", but you tried to access port: " << aPort << endl; - exit(1); - } - - if (port != -1) { - portObjectCount[port]--; - } - port = aPort; - if (port != -1) { - portObjectCount[port]++; - } -} - - - -////////////////////////////// -// -// MidiInPort_visual::setTrace -- if false, then don't print MIDI messages -// to the screen. -// - -int MidiInPort_visual::setTrace(int aState) { - int oldtrace = trace; - if (aState == 0) { - trace = 0; - } else { - trace = 1; - } - return oldtrace; -} - - - -////////////////////////////// -// -// MidiInPort_visual::toggleTrace -- switches the state of trace -// Returns the previous value of the trace variable. -// - -void MidiInPort_visual::toggleTrace(void) { - trace = !trace; -} - - - -////////////////////////////// -// -// MidiInPort_visual::unpause -- enables the Midi input port -// to inserting MIDI messages into the buffer after the -// port is already open. -// - -void MidiInPort_visual::unpause(void) { - if (getPort() == -1) { - return; - } - - if (openQ[getPort()]) { - if (inrunningQ[getPort()] == 0) { - midiInStart(device[getPort()]); - inrunningQ[getPort()] = 1; - } - } -} - - - -/////////////////////////////////////////////////////////////////////////// -// -// Private functions -// - - - -////////////////////////////// -// -// MidiInPort_visual::deinitialize -- sets up storage if necessary -// This function should be called if the current object is -// the first object to be created. -// - -void MidiInPort_visual::deinitialize(void) { - int num = numDevices; - - closeAll(); - - if (sysexBuffers != NULL) { - for (int i=0; i<numDevices; i++) { - if (sysexBuffers[i] != NULL) { - delete sysexBuffers[i]; - sysexBuffers[i] = NULL; - } - } - delete [] sysexBuffers; - sysexBuffers = NULL; - } - - - if (sysexDriverBuffer1 != NULL) { - for (int i=0; i<numDevices; i++) { - if (sysexDriverBuffer1[i] != NULL) { - delete sysexDriverBuffer1[i]; - sysexDriverBuffer1[i] = NULL; - } - } - delete [] sysexDriverBuffer1; - sysexDriverBuffer1 = NULL; - } - - if (sysexDriverBuffer2 != NULL) { - for (int i=0; i<numDevices; i++) { - if (sysexDriverBuffer2[i] != NULL) { - delete sysexDriverBuffer2[i]; - sysexDriverBuffer2[i] = NULL; - } - } - delete [] sysexDriverBuffer2; - sysexDriverBuffer2 = NULL; - } - - if (sysexDBnumber != NULL) { - delete [] sysexDBnumber; - sysexDBnumber = NULL; - } - - - if (sysexWriteBuffer != NULL) { - delete [] sysexWriteBuffer; - sysexWriteBuffer = NULL; - } - - if (sysexStatus != NULL) { - delete [] sysexStatus; - sysexStatus = NULL; - } - - if (device != NULL) { - delete [] device; - device = NULL; - } - - if (openQ != NULL) { - delete [] openQ; - openQ = NULL; - } - - if (inrunningQ != NULL) { - delete [] inrunningQ; - inrunningQ = NULL; - } - - if (hMutex != NULL) { - delete [] hMutex; - hMutex = NULL; - } - - if (midiBuffer != NULL) { - delete [] midiBuffer; - midiBuffer = NULL; - } - - if (portObjectCount != NULL) { - delete [] portObjectCount; - portObjectCount = NULL; - } -} - - - -////////////////////////////// -// -// MidiInPort_visual::initialize -- sets up storage if necessary -// This function should be called if the current object is -// the first object to be created. -// - -void MidiInPort_visual::initialize(void) { - int i; - - // get the number of ports - numDevices = midiInGetNumDevs(); - if (getNumPorts() <= 0) { - cerr << "Error: no MIDI input devices" << endl; - exit(1); - } - - // allocate space for Windoze MIDI input structures - if (device != NULL) { - cerr << "Error: device array should be NULL when calling " - << "initialize() in MidiInPort_visual." << endl; - exit(1); - } - device = new HMIDIIN[numDevices]; - - // allocate space for openQ, the port open/close status - if (openQ != NULL) delete [] openQ; - openQ = new int[numDevices]; - - // allocate space to keep track of an active/inactive input port - if (inrunningQ != NULL) delete [] inrunningQ; - inrunningQ = new int[numDevices]; - - // allocate space for object count on each port: - if (portObjectCount != NULL) delete [] portObjectCount; - portObjectCount = new int[numDevices]; - - // allocate space for mutual exclusive - if (hMutex != NULL) delete [] hMutex; - hMutex = new HANDLE[numDevices]; - - // allocate space for the Midi input buffers - if (midiBuffer != NULL) delete [] midiBuffer; - midiBuffer = new CircularBuffer<MidiMessage>[numDevices]; - - // allocate space for the MIDI sysex buffer indices - if (sysexWriteBuffer != NULL) delete [] sysexWriteBuffer; - sysexWriteBuffer = new int[numDevices]; - - // allocate space for the sysex MIM_LONGDATA message tracking - if (sysexStatus != NULL) delete [] sysexStatus; - sysexStatus = new int[numDevices]; - - // allocate space for sysex buffers - if (sysexBuffers != NULL) { - cout << "Error: memory leak on sysex buffers initialization" << endl; - exit(1); - } - sysexBuffers = new Array<uchar>*[numDevices]; - - // allocate system exclusive buffers for MIDI driver - if (sysexDriverBuffer1 != NULL) { - cout << "Error: memory leak on sysex buffer for drivers creation" << endl; - exit(1); - } - sysexDriverBuffer1 = new MIDIHDR*[numDevices]; - for (i=0; i<numDevices; i++) { - sysexDriverBuffer1[i] = NULL; - } - - // allocate system exclusive buffers for MIDI driver - if (sysexDriverBuffer2 != NULL) { - cout << "Error: memory leak on sysex buffer for drivers creation" << endl; - exit(1); - } - sysexDriverBuffer2 = new MIDIHDR*[numDevices]; - for (i=0; i<numDevices; i++) { - sysexDriverBuffer2[i] = NULL; - } - - // allocate space for keeping track of which buffer to look at - if (sysexDBnumber != NULL) delete [] sysexDBnumber; - sysexDBnumber = new int[numDevices]; - - - // initialize the static arrays - for (i=0; i<getNumPorts(); i++) { - device[i] = NULL; - openQ[i] = 0; - inrunningQ[i] = 0; - portObjectCount[i] = 0; - hMutex[i] = CreateMutex(NULL, FALSE, "M"); - midiBuffer[i].setSize(DEFAULT_INPUT_BUFFER_SIZE); - - sysexStatus[i] = -1; - sysexWriteBuffer[i] = 0; - sysexDBnumber[i] = 0; - sysexBuffers[i] = new Array<uchar>[128]; - for (int n=0; n<128; n++) { - sysexBuffers[i][n].allowGrowth(0); // shouldn't need to grow - sysexBuffers[i][n].setAllocSize(32); - sysexBuffers[i][n].setSize(0); - sysexBuffers[i][n].setGrowth(32); // in case it will ever grow - } - - } -} - - - -////////////////////////////// -// -// MidiInPort_visual::installSysexStuff -- install all the mess that -// a MIDIIN structure needs in order to receive system exclusives. -// - -void MidiInPort_visual::installSysexStuff(HMIDIIN dev, int port) { - if (sysexDriverBuffer1 != NULL) { - if (sysexDriverBuffer1[port] != NULL) { - // some memory leaks here - delete sysexDriverBuffer1[port]; - sysexDriverBuffer1[port] = NULL; - } - } - if (sysexDriverBuffer2 != NULL) { - if (sysexDriverBuffer2[port] != NULL) { - // some memory leaks here - delete sysexDriverBuffer2[port]; - sysexDriverBuffer2[port] = NULL; - } - } - - // allocate space for Drivers sysex byte buffer - sysexDriverBuffer1[port] = (LPMIDIHDR)GlobalLock(GlobalAlloc(GMEM_MOVEABLE | - GMEM_SHARE, sizeof(MIDIHDR))); - sysexDriverBuffer2[port] = (LPMIDIHDR)GlobalLock(GlobalAlloc(GMEM_MOVEABLE | - GMEM_SHARE, sizeof(MIDIHDR))); - - if (sysexDriverBuffer1[port] == NULL) { - cout << "Error: could not allocate sysex driver's buffer" << endl; - exit(1); - } - - if (sysexDriverBuffer2[port] == NULL) { - cout << "Error: could not allocate sysex driver's buffer" << endl; - exit(1); - } - - // allocate buffer inside of sysexDriverBuffer - sysexDriverBuffer1[port]->lpData = (LPSTR)GlobalLock(GlobalAlloc( - GMEM_MOVEABLE | GMEM_SHARE, (DWORD)1024)); - sysexDriverBuffer2[port]->lpData = (LPSTR)GlobalLock(GlobalAlloc( - GMEM_MOVEABLE | GMEM_SHARE, (DWORD)1024)); - - if (sysexDriverBuffer1[port]->lpData == NULL) { - cout << "Error: there was not enought space to allocate sysex buffer" - << endl; - // leaking memory here - exit(1); - } - - if (sysexDriverBuffer2[port]->lpData == NULL) { - cout << "Error: there was not enought space to allocate sysex buffer" - << endl; - // leaking memory here - exit(1); - } - - - // setup other sysexDriverBuffer data fields - sysexDriverBuffer1[port]->dwBufferLength = 1024; // total size of buffer - sysexDriverBuffer1[port]->dwBytesRecorded = 0L; // number of byte in buffer - sysexDriverBuffer1[port]->dwFlags = 0L; // initialize flags - sysexDriverBuffer1[port]->dwUser = 0L; // userdata: used for sysex time - - // setup other sysexDriverBuffer data fields - sysexDriverBuffer2[port]->dwBufferLength = 1024; // total size of buffer - sysexDriverBuffer2[port]->dwBytesRecorded = 0L; // number of byte in buffer - sysexDriverBuffer2[port]->dwFlags = 0L; // initialize flags - sysexDriverBuffer2[port]->dwUser = 0L; // userdata: used for sysex time - - // prepare the header - int status = midiInPrepareHeader(device[port], sysexDriverBuffer1[port], - sizeof(MIDIHDR)); - - if (status != 0) { - cout << "Error preparing sysex buffer number: " << port << endl; - // leaking some memory here? - exit(1); - } - - // prepare the header - status = midiInPrepareHeader(device[port], sysexDriverBuffer2[port], - sizeof(MIDIHDR)); - - if (status != 0) { - cout << "Error preparing sysex buffer number: " << port << endl; - // leaking some memory here? - exit(1); - } - - // add the sysex buffer to the driver - status = midiInAddBuffer(device[port], sysexDriverBuffer1[port], - sizeof(MIDIHDR)); - - if (status != 0) { - cout << "Error adding sysex buffer to driver: " << port << endl; - // leaking some memory here? - exit(1); - } - - status = midiInAddBuffer(device[port], sysexDriverBuffer2[port], - sizeof(MIDIHDR)); - - if (status != 0) { - cout << "Error adding sysex buffer to driver: " << port << endl; - // leaking some memory here? - exit(1); - } - -} - - - -////////////////////////////// -// -// MidiInPort_visual::uninstallSysexStuff -- uninstalls all the mess that -// a MIDIIN structure needs in order to receive system exclusives. -// - -void MidiInPort_visual::uninstallSysexStuff(HMIDIIN dev, int port) { - if (port == -1) { - return; - } - // unprepare the headers - midiInUnprepareHeader(device[port], sysexDriverBuffer1[port], - sizeof(MIDIHDR)); - midiInUnprepareHeader(device[port], sysexDriverBuffer2[port], - sizeof(MIDIHDR)); - - // deallocate buffer inside of sysexDriverBuffer - /* Following code caused problems: perhaps lpData was deleted by driver - delete [] sysexDriverBuffer1[port]->lpData; - sysexDriverBuffer1[port]->lpData = NULL; - delete [] sysexDriverBuffer2[port]->lpData; - sysexDriverBuffer2[port]->lpData = NULL; - */ - - // deallocate space for Drivers sysex byte buffer - delete sysexDriverBuffer1[port]; - delete sysexDriverBuffer2[port]; - sysexDriverBuffer1[port] = NULL; - sysexDriverBuffer2[port] = NULL; -} - - - -////////////////////////////// -// -// MidiInPort_visual::releaseMutex -// - -void MidiInPort_visual::releaseMutex(void) { -/* int flag = */ ReleaseMutex(hMutex[getPort()]); -/* - if (flag != 0) { - cerr << "Error relasing mutex in MIDI input; flag was: " << flag << endl; - } -*/ -} - - - -////////////////////////////// -// -// MidiInPort_visual::setPortStatus -// - -void MidiInPort_visual::setPortStatus(int aStatus) { - if (getPort() == -1) { - return; - } - - if (aStatus) { - openQ[getPort()] = 1; - } else { - openQ[getPort()] = 0; - } -} - - - -////////////////////////////// -// -// MidiInPort_visual::waitForMutex -// - -void MidiInPort_visual::waitForMutex(void) { -/* - DWORD mutexResult = WaitForSingleObject(hMutex[getPort()], 5000L); - if (mutexResult != WAIT_OBJECT_0) { - cerr << "Error waiting for mutex in MIDI input" << endl; - } -*/ -} - - - -/////////////////////////////////////////////////////////////////////////// - - -////////////////////////////// -// -// midiInputCallback -- the function the MIDI input driver calls when -// it has a message from the Midi in cable ready -// - -void CALLBACK midiInputCallback(HMIDIIN hMidiIn, UINT inputStatus, - DWORD instancePtr, DWORD midiMessage, DWORD timestamp) { - static MidiMessage newMessage; - - switch (inputStatus) { - case MIM_MOREDATA: - // There is more data waiting at the device. - // If this case is exists, then that means that the MIDI - // device is too slow and some data was lost. - // Windows sends a MIM_MOREDATA event only if you specify - // the MIDI_IO_STATUS flag to midiInOpen(). - - // no break; - case MIM_DATA: - - // One regular (non sysex) message has been completely - // received. - - // ignore the Yamaha Active Sensing command and MIDI time clock - // at least for now. - if ((midiMessage & 0xff) == 0xfe || (midiMessage & 0xff) == 0xf8) { - break; - } - - newMessage.time = timestamp; - newMessage.data = midiMessage; - ((MidiInPort_visual*)instancePtr)->insert(newMessage); - if (((MidiInPort_visual*)instancePtr)->getTrace()) { - cout << "[" << hex << (int)newMessage.command() << dec - << ":" << (int)newMessage.p1() << "," - << (int)newMessage.p2() << "]"; - cout.flush(); - } - break; - - case MIM_LONGDATA: - { - // A sysex or part of a sysex message is coming in. - // The timestamp variable contains a pointer to a - // MIDIHDR pointer - - MIDIHDR* midiheader = (MIDIHDR*)midiMessage; - int dataCount = midiheader->dwBytesRecorded; - char* data = midiheader->lpData; - int port = ((MidiInPort_visual*)instancePtr)->getPort(); - if (port == -1) { - break; - } - int* sysexStatus = ((MidiInPort_visual*)instancePtr)->sysexStatus; -// MIDIHDR** sysexDriverBuffer = ((MidiInPort_visual*)instancePtr)-> -// sysexDriverBuffer; - HMIDIIN devicex = ((MidiInPort_visual*)instancePtr)->device[port]; - - if (dataCount == 0) { - // can't handle a zero-length sysex - break; - } - - // step 1: determine if this is the first part of the sysex - // message or a continuation - int continuation = 0; - if (data[0] == (char)0xf0) { - continuation = 0; - if (sysexStatus[port] != -1) { - cout << "Error: there is another sysex command being " - "received on port " << port << endl; - exit(1); - } - } else { - if (sysexStatus[port] == -1) { - cout << "Error: no sysex command is being " - "received on port " << port << endl; - if (data[0] < 128) { - cout << "First byte is: " << dec << (int)data[0] << endl; - } else { - cout << "First byte is: " << hex << (int)data[0] << endl; - } - if (data[1] < 128) { - cout << "Second byte is: " << dec << (int)data[1] << endl; - } else { - cout << "Second byte is: " << hex << (int)data[1] << endl; - } - - exit(1); - } - continuation = 1; - } - - // step 2: if continuing, add the data to the preallocated - // sysex buffer, otherwise, get a new buffer location - int buffer = -1; - if (continuation) { - buffer = sysexStatus[port]; - if (buffer < 0 || buffer > 127) { - cout << "Sysex buffer was out of range: " << buffer << endl; - } - for (int i=0; i<dataCount; i++) { - unsigned char datum = data[i]; - ((MidiInPort_visual*)instancePtr)-> - sysexBuffers[port][buffer].append(datum); - if (datum == 0xf7) { - for (int k=i; k<dataCount; k++) { - data[k-i] = data[k]; - } - midiheader->dwBytesRecorded = dataCount - i - 1; - - goto insert_sysex_message; - } - } - } else { // if not a continuation of a sysex event - buffer = ((MidiInPort_visual*)instancePtr)->sysexWriteBuffer[port]; - ((MidiInPort_visual*)instancePtr)->sysexWriteBuffer[port]++; - if (buffer == 127) { - ((MidiInPort_visual*)instancePtr)->sysexWriteBuffer[port] = 0; - } - - ((MidiInPort_visual*)instancePtr)-> - sysexBuffers[port][buffer].setSize(0); - for (int j=0; j<dataCount; j++) { - unsigned char datum = data[j]; - ((MidiInPort_visual*)instancePtr)-> - sysexBuffers[port][buffer].append(datum); - if (datum == 0xf7) { - for (int k=j; k<dataCount; k++) { - data[k-j] = data[k]; - } - - goto insert_sysex_message; - } - } - - } - - // recycle the MIDI input buffer for the driver - { - midiInPrepareHeader(devicex, midiheader, sizeof(MIDIHDR)); - int dstatus = midiInAddBuffer(devicex, midiheader, sizeof(MIDIHDR)); - if (dstatus != MMSYSERR_NOERROR) { - cout << "Error when calling midiInAddBuffer" << endl; - exit(1); - } - } - - break; - - insert_sysex_message: - - // recycle the MIDI input buffer for the driver - { - midiInPrepareHeader(devicex, midiheader, sizeof(MIDIHDR)); - int estatus = midiInAddBuffer(devicex, midiheader, sizeof(MIDIHDR)); - if (estatus != MMSYSERR_NOERROR) { - cout << "Error when calling midiInAddBuffer" << endl; - exit(1); - } - } - - // now that a sysex message is finished, send a midimessage - // out to the instancePtr MIDI buffer telling the user - // that a sysex message has come in. - - // newMessage.time = timestamp; use last time stamp that came - // in because the timestamp variable is used for storing - // the pointer of the sysex data. - - newMessage.time = timestamp; - newMessage.p0() = 0xf0; - newMessage.p1() = buffer; - newMessage.p2() = 0; - newMessage.p3() = 0; - - ((MidiInPort_visual*)instancePtr)->insert(newMessage); - if (((MidiInPort_visual*)instancePtr)->getTrace()) { - cout << "[" << hex << (int)newMessage.command() << dec - << ":" << (int)newMessage.p1() << "," - << (int)newMessage.p2() << "]"; - cout.flush(); - } - - } // end of local variable range - break; - - case MIM_ERROR: - // An invalid regular MIDI message was received. - - break; - - case MIM_LONGERROR: - { - // An invalid sysex MIDI message was received. - - // if a sysex message was continuing from a previous part, - // then kill that message. - - int port = ((MidiInPort_visual*)instancePtr)->getPort(); - if (port == -1) { - break; - } - int buffer = ((MidiInPort_visual*)instancePtr)->sysexStatus[port]; - if (buffer != -1) { - ((MidiInPort_visual*)instancePtr)-> - sysexBuffers[port][buffer].setSize(0); - ((MidiInPort_visual*)instancePtr)->sysexStatus[port] = -1; - } - - HMIDIIN devicex = ((MidiInPort_visual*)instancePtr)->device[port]; - MIDIHDR* midiheader = (MIDIHDR*)midiMessage; - - // recycle the MIDI input buffer for the driver - midiInPrepareHeader(devicex, midiheader, sizeof(MIDIHDR)); - int status = midiInAddBuffer(devicex, midiheader, sizeof(MIDIHDR)); - if (status != MMSYSERR_NOERROR) { - cout << "Error when calling midiInAddBuffer" << endl; - exit(1); - } - - - break; - } - default: ; - // case MIM_OPEN: // MIDI device is opening - // case MIM_CLOSE: // MIDI device is closing - } -} - - - -#endif // VISUAL - - -// md5sum: db55d9f375b86f54c0c8340547c5701f - MidiInPort_visual.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/src/MidiInput.cpp b/extensions/gripd/src/midiio/src/MidiInput.cpp deleted file mode 100644 index 93fce870c27df85ee095d2b8d75aabd13a6cd48b..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/src/MidiInput.cpp +++ /dev/null @@ -1,224 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: 18 December 1997 -// Last Modified: Sun Jan 25 15:31:49 GMT-0800 1998 -// Last Modified: Thu Apr 27 17:56:03 PDT 2000 (added scale function) -// Filename: ...sig/code/control/MidiInput/MidiInput.cpp -// Web Address: http://sig.sapp.org/src/sig/MidiInput.cpp -// Syntax: C++ -// -// Description: A higher-level MIDI input interface than the -// MidiInPort class. Can be used to allow multiple -// objects to share a single MIDI input stream, or -// to fake a MIDI input connection. -// - -#include "MidiInput.h" -#include <stdlib.h> -#include <iostream> - - -////////////////////////////// -// -// MidiInput::MidiInput -- opens the specified MIDI input device and -// sets the size of the input buffer. -// - -MidiInput::MidiInput(void) : MidiInPort() { - orphanBuffer = NULL; -} - - -MidiInput::MidiInput(int aPort, int autoOpen) : MidiInPort(aPort, autoOpen) { - orphanBuffer = NULL; -} - - - -////////////////////////////// -// -// MidiInput::~MidiInput -// - -MidiInput::~MidiInput() { - if (orphanBuffer != NULL) { - delete orphanBuffer; - orphanBuffer = NULL; - } -} - - - -////////////////////////////// -// -// MidiInput::getBufferSize -// - -int MidiInput::getBufferSize(void) { - if (isOrphan()) { - return orphanBuffer->getSize(); - } else { - return MidiInPort::getBufferSize(); - } -} - - - -////////////////////////////// -// -// MidiInput::getCount -// - -int MidiInput::getCount(void) { - if (isOrphan()) { - return orphanBuffer->getCount(); - } else { - return MidiInPort::getCount(); - } -} - - - -////////////////////////////// -// -// MidiInput::extract -// - -MidiMessage MidiInput::extract(void) { - if (isOrphan()) { - return orphanBuffer->extract(); - } else { - return MidiInPort::extract(); - } -} - - - -////////////////////////////// -// -// fscale -- converts a value in the range from 0 to 127 -// into a number in a new range. For example the value -// 64 scaled to the range from 0 to 2 would be 1. -// - -double MidiInput::fscale(int value, double min, double max) { - return value >= 127 ? max : (value/127.0*(max-min)+min); -} - - - -////////////////////////////// -// -// fscale14 -- converts a value in the range from 0 to 2^15-1 -// into a number in a new range. -// - -double MidiInput::fscale14(int value, double min, double max) { - return value >= 16383 ? max : (value/16383.0*(max-min)+min); -} - - - -////////////////////////////// -// -// MidiInput::insert -// - -void MidiInput::insert(const MidiMessage& aMessage) { - if (isOrphan()) { - orphanBuffer->insert(aMessage); - } else { - MidiInPort::insert(aMessage); - } -} - - - -////////////////////////////// -// -// MidiInput::isOrphan -// - -int MidiInput::isOrphan(void) const { - if (orphanBuffer == NULL) { - return 0; - } else { - return 1; - } -} - - - -////////////////////////////// -// -// MidiInput::makeOrphanBuffer -// default value: aSize = 1024 -// - -void MidiInput::makeOrphanBuffer(int aSize) { - if (!isOrphan()) { - if (orphanBuffer == NULL) { - delete orphanBuffer; - orphanBuffer = NULL; - } - orphanBuffer = new CircularBuffer<MidiMessage>(aSize); - } -} - - - -////////////////////////////// -// -// MidiInput::removeOrphanBuffer -// - -void MidiInput::removeOrphanBuffer(void) { - if (isOrphan()) { - delete orphanBuffer; - orphanBuffer = NULL; - } -} - - - -////////////////////////////// -// -// scale -- converts a value in the range from 0 to 127 -// into a number in a new range. For example the value -// 64 scaled to the range from 0 to 2 would be 1. -// - -int MidiInput::scale(int value, int min, int max) { - return value >= 127 ? max : (int)(value/127.0*(max-min+1)+min); -} - - - -////////////////////////////// -// -// scale14 -- converts a value in the range from 0 to 2^15-1 -// into a number in a new range. -// - -int MidiInput::scale14(int value, int min, int max) { - return value >= 16383 ? max : (int)(value/16383.0*(max-min+1)+min); -} - - - -////////////////////////////// -// -// MidiInput::setBufferSize -// - -void MidiInput::setBufferSize(int aSize) { - if (isOrphan()) { - orphanBuffer->setSize(aSize); - } else { - MidiInPort::setBufferSize(aSize); - } -} - - - -// md5sum: 826d403708263eaf0089b4742179c58c - MidiInput.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/src/MidiMessage.cpp b/extensions/gripd/src/midiio/src/MidiMessage.cpp deleted file mode 100644 index 5f3df193983ef70a29e81f0aeb7fa44036a02437..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/src/MidiMessage.cpp +++ /dev/null @@ -1,406 +0,0 @@ -// -// Copyright 1997-1998 by Craig Stuart Sapp, All Rights Reserved. -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: 19 December 1997 -// Last Modified: Fri Jan 23 00:26:12 GMT-0800 1998 -// Last Modified: Sun Sep 20 12:17:26 PDT 1998 -// Last Modified: Mon Oct 15 14:29:12 PDT 2001 (added is_note functions) -// Filename: ...sig/src/sigControl/MidiMessage.cpp -// Web Address: http://sig.sapp.org/src/sigControl/MidiMessage.cpp -// Syntax: C++ -// -// Description: A structure for handling MIDI input messages. -// This class stores a time stamp plus up to -// four MIDI message bytes. System Exclusive messages -// are stored in a separate array in the MidiInPort -// class, and their storage index is passed to the -// user through a MIDI message for later extraction -// of the full sysex message. -// - -#include "MidiMessage.h" - - -////////////////////////////// -// -// MidiMessage::MidiMessage -// - -MidiMessage::MidiMessage(void) { - // no initialization. Note that the default contents are undefined. -} - - -// default value aTime = 0 -MidiMessage::MidiMessage(int aCommand, int aP1, int aP2, int aTime) { - time = aTime; - command() = (uchar)aCommand; - p1() = (uchar)aP1; - p2() = (uchar)aP2; -} - - -MidiMessage::MidiMessage(const MidiMessage& aMessage) { - time = aMessage.time; - data = aMessage.data; -} - - - -////////////////////////////// -// -// MidiMessage::~MidiMessage -- Destructor. -// - -MidiMessage::~MidiMessage() { - // do nothing -} - - - -////////////////////////////// -// -// MidiMessage::command -- returns the MIDI command byte -// - -uchar& MidiMessage::command(void) { - return p0(); -} - - - -////////////////////////////// -// -// MidiMessage::operator= -- defines how objects are to be copied -// - -MidiMessage& MidiMessage::operator=(const MidiMessage& aMessage) { - time = aMessage.time; - data = aMessage.data; - return *this; -} - - - -////////////////////////////// -// -// MidiMessage::operator[] -- access to byte data -// can only access index 0 to 3, other number will be -// chopped. -// - -uchar& MidiMessage::operator[](int index) { - return *(((uchar*)&data)+(index & 0x3)); -} - - - -////////////////////////////// -// -// MidiMessage::p0 -- returns the command byte of the -// midi message. Same as the command() function. -// - -uchar& MidiMessage::p0(void) { - return *(((uchar*)&data)+0); -} - - - -////////////////////////////// -// -// MidiMessage::p1 -- returns the first parameter of the -// midi message. Valid if the command requires a parameter. -// - -uchar& MidiMessage::p1(void) { - return *(((uchar*)&data)+1); -} - - - -////////////////////////////// -// -// MidiMessage::p2 -- returns the second parameter of the -// midi message. Valid if the command requires two parameters. -// - -uchar& MidiMessage::p2(void) { - return *(((uchar*)&data)+2); -} - - -////////////////////////////// -// -// MidiMessage::p3 -- returns the third parameter of the -// midi message. Valid if the command requires three parameters -// (but none of the MIDI command do). -// - -uchar& MidiMessage::p3(void) { - return *(((uchar*)&data)+3); -} - - - -////////////////////////////// -// -// MidiMessage:getArgCount -- -// - -int MidiMessage::getArgCount(void) const { - return getParameterCount(); -} - - - -////////////////////////////// -// -// MidiMessage::getParameterCount -- returns the number -// of valid parameters for the assiciated MIDI command -// stored in p0. Returns -1 if MIDI command is invalid, -// or the number of valid parameters is unknown. -// - -int MidiMessage::getParameterCount(void) const { - int output = -1; - switch (*(((uchar*)&data)+0) & 0xf0) { - case 0x80: // note-off - case 0x90: // note-on - case 0xa0: // aftertouch - case 0xb0: // continuous controller - case 0xe0: // pitch wheel - output = 2; - break; - case 0xc0: // patch change - case 0xd0: // channel pressure - output = 1; - break; - case 0xf0: - switch (*(((uchar*)&data)+0)) { - // System Common Messages - case 0xf0: return -1; // variable for sysex - case 0xf1: return 1; // MIDI Time Code Quarter Frame - case 0xf2: return 2; // Song Position Pointer - case 0xf3: return 1; // Song Select - case 0xf4: return 0; // Undefined - case 0xf5: return 0; // Undefined - case 0xf6: return 0; // Tune Request - case 0xf7: return 0; // End of System exclusive - // System Real-Time Messages - case 0xf8: return 0; // Timing Clock - case 0xf9: return 0; // Undefined - case 0xfa: return 0; // Start - case 0xfb: return 0; // Continue - case 0xfc: return 0; // Stop - case 0xfd: return 0; // Undefined - case 0xfe: return 0; // Active Sensing - case 0xff: return 0; // System Reset - } - return -1; - break; - default: // don't know or invalid command - output = -1; - break; - } - - return output; -} - - - -////////////////////////////// -// -// MidiMessage::getCommand -- same as command(). -// - -uchar MidiMessage::getCommand(void) const { - return getP0(); -} - - - -////////////////////////////// -// -// MidiMessage::getP0 -- same as p0(). -// - -uchar MidiMessage::getP0(void) const { - return *(((uchar*)&data)+0); -} - - - -////////////////////////////// -// -// MidiMessage::getP1 -- same as p1(). -// - -uchar MidiMessage::getP1(void) const { - return *(((uchar*)&data)+1); -} - - - -////////////////////////////// -// -// MidiMessage::getP2 -- same as p2(). -// - -uchar MidiMessage::getP2(void) const { - return *(((uchar*)&data)+2); -} - - - -////////////////////////////// -// -// MidiMessage::getP3 -- same as p3(). -// - -uchar MidiMessage::getP3(void) const { - return *(((uchar*)&data)+3); -} - - - -////////////////////////////// -// -// MidiMessage::setCommand -- same as command(). -// - -void MidiMessage::setCommand(uchar aCommand) { - command() = aCommand; -} - - - -////////////////////////////// -// -// MidiMessage::setData -- sets the message bytes -// default values: aP1 = 0, aP2 = 0, aP3 = 0. -// - -void MidiMessage::setData(uchar aCommand, uchar aP1, uchar aP2, uchar aP3) { - setCommand(aCommand); - setP1(aP1); - setP2(aP2); - setP3(aP3); -} - - - -////////////////////////////// -// -// MidiMessage::setP0 -- same as p0(). -// - -void MidiMessage::setP0(uchar aP0) { - p0() = aP0; -} - - - -////////////////////////////// -// -// MidiMessage::setP1 -- same as p1(). -// - -void MidiMessage::setP1(uchar aP1) { - p1() = aP1; -} - - - -////////////////////////////// -// -// MidiMessage::setP2 -- same as p2(). -// - -void MidiMessage::setP2(uchar aP2) { - p2() = aP2; -} - - - -////////////////////////////// -// -// MidiMessage::setP3 -- same as p3(). -// - -void MidiMessage::setP3(uchar aP3) { - p3() = aP3; -} - - - -////////////////////////////// -// -// MidiMessage::is_note -- Returns true if the MIDI command is 0x80 or 0x90. -// - -int MidiMessage::is_note(void) { - if ((p0() & 0xf0) == 0x90) { // note-on or note-off - return 1; - } else if ((p0() & 0xf0) == 0x80) { // note-off - return 1; - } else { - return 0; - } -} - - - -////////////////////////////// -// -// MidiMessage::is_note_on -- Returns true if the MIDI command is a note -// on message (0x90 series with p2() > 0). -// - -int MidiMessage::is_note_on(void) { - if (((p0() & 0xf0) == 0x90) && p2() > 0) { - return 1; - } else { - return 0; - } -} - - - -////////////////////////////// -// -// MidiMessage::is_note_off -- Returns true if the MIDI command is a note -// off message (0x80 series or 0x90 series with p2() == 0). -// - -int MidiMessage::is_note_off(void) { - if ((p0() & 0xf0) == 0x80) { - return 1; - } else if (((p0() & 0xf0) == 0x90) && (p2() == 0)) { - return 1; - } else { - return 0; - } -} - - -/////////////////////////////////////////////////////////////////////////// - -////////////////////////////// -// -// operator<< MidiMessage -// - -std::ostream& operator<<(std::ostream& out, MidiMessage& aMessage) { - out << "(" << aMessage.time << ") " - << std::hex << (int)aMessage.getP0() << ": "; - for (int i=1; i<=aMessage.getArgCount(); i++) { - out << std::dec << (int)aMessage[i] << ' '; - } - - return out; -} - - - -// md5sum: 487f0fddeb8db20d81f9c039e2a460c9 - MidiMessage.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/src/MidiOutPort_alsa.cpp b/extensions/gripd/src/midiio/src/MidiOutPort_alsa.cpp deleted file mode 100644 index 07f4e5d0b2e76260456d8bfc28d2cddc70e07663..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/src/MidiOutPort_alsa.cpp +++ /dev/null @@ -1,469 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Wed May 10 16:16:21 PDT 2000 -// Last Modified: Sun May 14 20:44:12 PDT 2000 -// Filename: ...sig/code/control/MidiOutPort/alsa/MidiOutPort_alsa.cpp -// Web Address: http://sig.sapp.org/src/sig/MidiOutPort_alsa.cpp -// Syntax: C++ -// -// Description: Operating-System specific interface for -// basic MIDI output capabilities in Linux using -// ALSA sound drivers. Privately inherited by the -// MidiOutPort class via the MidiOutPort_alsa class. -// - -#if defined(LINUX) && defined(ALSA) - -#include "MidiOutPort_alsa.h" -#include <iostream> -#include <stdlib.h> - -// initialized static variables -int MidiOutPort_alsa::numDevices = 0; -int MidiOutPort_alsa::objectCount = 0; -int* MidiOutPort_alsa::portObjectCount = NULL; -int MidiOutPort_alsa::channelOffset = 0; -int* MidiOutPort_alsa::trace = NULL; -std::ostream* MidiOutPort_alsa::tracedisplay = &std::cout; - - - -////////////////////////////// -// -// MidiOutPort_alsa::MidiOutPort_alsa -// default values: autoOpen = 1 -// - -#include <unistd.h> - -MidiOutPort_alsa::MidiOutPort_alsa(void) { - if (objectCount == 0) { - initialize(); - } - objectCount++; - - port = -1; - setPort(0); -} - - -MidiOutPort_alsa::MidiOutPort_alsa(int aPort, int autoOpen) { - if (objectCount == 0) { - initialize(); - } - objectCount++; - - port = -1; - setPort(aPort); - if (autoOpen) { - open(); - } -} - - - -////////////////////////////// -// -// MidiOutPort_alsa::~MidiOutPort_alsa -- -// - -MidiOutPort_alsa::~MidiOutPort_alsa() { - objectCount--; - if (objectCount == 0) { - deinitialize(); - } else if (objectCount < 0) { - std::cout << "Error: bad MidiOutPort object count!: " << objectCount << std::endl; - exit(1); - } -} - - - -////////////////////////////// -// -// MidiOutPort_alsa::close -- -// - -void MidiOutPort_alsa::close(void) { - Sequencer_alsa::closeOutput(getPort()); -} - - - -////////////////////////////// -// -// MidiOutPort_alsa::closeAll -- -// - -void MidiOutPort_alsa::closeAll(void) { - int i; - for (i=0; i<getNumPorts(); i++) { - Sequencer_alsa::closeOutput(i); - } -} - - - -////////////////////////////// -// -// MidiOutPort_alsa::getChannelOffset -- returns zero if MIDI channel -// offset is 0, or 1 if offset is 1. -// - -int MidiOutPort_alsa::getChannelOffset(void) const { - return channelOffset; -} - - - -////////////////////////////// -// -// MidiOutPort_alsa::getName -- returns the name of the port. -// returns "" if no name. Name is valid until getName is called again. -// - -const char* MidiOutPort_alsa::getName(void) { - if (getPort() == -1) { - return "Null ALSA Midi Output"; - } - return getOutputName(getPort()); -} - - -const char* MidiOutPort_alsa::getName(int i) { - return Sequencer_alsa::getOutputName(i); -} - - - -////////////////////////////// -// -// MidiOutPort_alsa::getNumPorts -- returns the number of available -// ports for MIDI output -// - -int MidiOutPort_alsa::getNumPorts(void) { - return Sequencer_alsa::getNumOutputs(); -} - - - -////////////////////////////// -// -// MidiOutPort_alsa::getPort -- returns the port to which this -// object belongs (as set with the setPort function). -// - -int MidiOutPort_alsa::getPort(void) { - return port; -} - - - -////////////////////////////// -// -// MidiOutPort_alsa::getPortStatus -- 0 if closed, 1 if open -// - -int MidiOutPort_alsa::getPortStatus(void) { - return is_open_out(getPort()); -} - - - -////////////////////////////// -// -// MidiOutPort_alsa::getTrace -- returns true if trace is on or -// false if off. If trace is on, then prints to standard output -// the Midi message being sent. -// - -int MidiOutPort_alsa::getTrace(void) { - if (getPort() == -1) return -1; - - return trace[getPort()]; -} - - - -////////////////////////////// -// -// MidiOutPort_alsa::rawsend -- send the Midi command and its parameters -// - -int MidiOutPort_alsa::rawsend(int command, int p1, int p2) { - if (getPort() == -1) return 0; - - int status; - uchar mdata[3] = {(uchar)command, (uchar)p1, (uchar)p2}; - status = write(getPort(), mdata, 3); - - if (getTrace()) { - if (status == 1) { - std::cout << "(" << std::hex << (int)mdata[0] << std::dec << ":" - << (int)mdata[1] << "," << (int)mdata[2] << ")"; - std::cout.flush(); - } else { - std::cout << "(" << std::hex << (int)mdata[0] << std::dec << "X" - << (int)mdata[1] << "," << (int)mdata[2] << ")"; - std::cout.flush(); - } - } - - return status; -} - - -int MidiOutPort_alsa::rawsend(int command, int p1) { - if (getPort() == -1) return 0; - - int status; - uchar mdata[2] = {(uchar)command, (uchar)p1}; - - status = write(getPort(), mdata, 2); - - if (getTrace()) { - if (status == 1) { - std::cout << "(" << std::hex << (int)mdata[0] << std::dec << ":" - << (int)mdata[1] << ")"; - std::cout.flush(); - } else { - std::cout << "(" << std::hex << (int)mdata[0] << std::dec << "X" - << (int)mdata[1] << "," << (int)mdata[2] << ")"; - std::cout.flush(); - } - } - - return status; -} - - -int MidiOutPort_alsa::rawsend(int command) { - if (getPort() == -1) return 0; - - int status; - uchar mdata[1] = {(uchar)command}; - - status = write(getPort(), mdata, 1); - - if (getTrace()) { - if (status == 1) { - std::cout << "(" << std::hex << (int)mdata[0] << ")"; - std::cout.flush(); - } else { - std::cout << "(" << std::hex << (int)mdata[0] << ")"; - std::cout.flush(); - } - } - - return status; -} - - -int MidiOutPort_alsa::rawsend(uchar* array, int size) { - if (getPort() == -1) return 0; - - int status; - status = write(getPort(), array, size); - - if (getTrace()) { - if (status == 1) { - std::cout << "(array)"; - std::cout.flush(); - } else { - std::cout << "(XarrayX)"; - std::cout.flush(); - } - } - - return status; -} - - - -////////////////////////////// -// -// MidiOutPort_alsa::open -- returns true if MIDI output port was -// opened. -// - -int MidiOutPort_alsa::open(void) { - if (getPort() == -1) { - return 2; - } else { - return Sequencer_alsa::openOutput(getPort()); - } -} - - - -////////////////////////////// -// -// MidiOutPort_alsa::setChannelOffset -- sets the MIDI channel offset, -// either 0 or 1. -// - -void MidiOutPort_alsa::setChannelOffset(int anOffset) { - switch (anOffset) { - case 0: channelOffset = 0; break; - case 1: channelOffset = 1; break; - default: - std::cout << "Error: Channel offset can be only 0 or 1." << std::endl; - exit(1); - } -} - - - -////////////////////////////// -// -// MidiOutPort_alsa::setPort -- -// - -void MidiOutPort_alsa::setPort(int aPort) { - if (aPort == -1) return; - - if (aPort < 0 || aPort >= getNumPorts()) { - std::cout << "Error: maximum port number is: " << getNumPorts()-1 - << ", but you tried to access port: " << aPort << std::endl; - exit(1); - } - - if (port != -1) { - portObjectCount[port]--; - } - port = aPort; - if (port != -1) { - portObjectCount[port]++; - } -} - - - -////////////////////////////// -// -// MidiOutPort_alsa::setTrace -- if false, then won't print -// Midi messages to standard output. -// - -int MidiOutPort_alsa::setTrace(int aState) { - if (getPort() == -1) return -1; - - int oldtrace = trace[getPort()]; - if (aState == 0) { - trace[getPort()] = 0; - } else { - trace[getPort()] = 1; - } - return oldtrace; -} - - - -////////////////////////////// -// -// MidiOutPort_alsa::sysex -- send a system exclusive message. -// The message must start with a 0xf0 byte and end with -// a 0xf7 byte. -// - -int MidiOutPort_alsa::sysex(uchar* array, int size) { - if (getPort() == -1) { - return 2; - } - - if (size == 0 || array[0] != 0xf0 || array[size-1] != 0xf7) { - std::cout << "Error: invalid sysex message" << std::endl; - exit(1); - } - - return rawsend(array,size); -} - - - -////////////////////////////// -// -// MidiOutPort_alsa::toggleTrace -- -// - -void MidiOutPort_alsa::toggleTrace(void) { - if (getPort() == -1) return; - - trace[getPort()] = !trace[getPort()]; -} - - - -/////////////////////////////////////////////////////////////////////////// -// -// Private functions -// - - - -////////////////////////////// -// -// MidiOutPort_alsa::deinitialize -- sets up storage if necessary -// This function should be called if the current object is -// the first object to be created. -// - -void MidiOutPort_alsa::deinitialize(void) { - closeAll(); - if (portObjectCount != NULL) delete [] portObjectCount; - portObjectCount = NULL; - if (trace != NULL) delete [] trace; - trace = NULL; -} - - - -////////////////////////////// -// -// MidiOutPort_alsa::initialize -- sets up storage if necessary -// This function should be called if the current object is -// the first object to be created. -// - -void MidiOutPort_alsa::initialize(void) { - // get the number of ports - numDevices = getNumOutputs(); - if (getNumPorts() <= 0) { - std::cout << "Warning: no MIDI output devices" << std::endl; - portObjectCount = NULL; - trace = NULL; - } else { - // allocate space for object count on each port: - if (portObjectCount != NULL) delete [] portObjectCount; - portObjectCount = new int[numDevices]; - - // allocate space for trace variable for each port: - if (trace != NULL) delete [] trace; - trace = new int[numDevices]; - - // initialize the static arrays - for (int i=0; i<getNumPorts(); i++) { - portObjectCount[i] = 0; - trace[i] = 0; - } - } -} - - - -////////////////////////////// -// -// MidiOutPort_alsa::setPortStatus -- -// - -void MidiOutPort_alsa::setPortStatus(int aStatus) { - // not used in Linux implementation -} - - -#endif /* LINUX and ALSA */ - - - -// md5sum: 6f5d0ce75ae6e086ad949178e7deefcb - MidiOutPort_alsa.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/src/MidiOutPort_linux.cpp b/extensions/gripd/src/midiio/src/MidiOutPort_linux.cpp deleted file mode 100644 index 43bba905de12539483700cf84e155f3561f2155b..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/src/MidiOutPort_linux.cpp +++ /dev/null @@ -1,381 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Sun May 14 20:58:32 PDT 2000 -// Last Modified: Thu May 18 23:37:11 PDT 2000 -// Last Modified: Sat Nov 2 20:40:01 PST 2002 (added ALSA OSS def) -// Filename: ...sig/code/control/MidiOutPort_linux/MidiOutPort_linux.cpp -// Web Address: http://sig.sapp.org/include/sig/MidiOutPort_linux.cpp -// Syntax: C++ -// -// Description: Linux MIDI output class which detects which -// type of MIDI drivers are available: either -// ALSA or OSS. -// - -#ifdef LINUX -#if defined(ALSA) && defined(OSS) - -#include "MidiOutPort_linux.h" -#include <sys/types.h> -#include <sys/stat.h> -#include <stdlib.h> - - -// initialize static members -int MidiOutPort_linux::objectCount = 0; -int MidiOutPort_linux::current = UNKNOWN_MIDI_SELECT; // MIDI out selected -int MidiOutPort_linux::alsaQ = 0; // boolean for if ALSA is present -int MidiOutPort_linux::ossQ = 0; // boolean for if OSS is present - -MidiOutPort_oss *MidiOutPort_linux::oss_output = NULL; -MidiOutPort_alsa *MidiOutPort_linux::alsa_output = NULL; -MidiOutPort_unsupported *MidiOutPort_linux::unknown_output = NULL; - - -MidiOutPort_linux::MidiOutPort_linux(void) { - if (objectCount == 0) { - determineDrivers(); - } else if (objectCount < 0) { - cout << "Error: unusual MidiOutPort_linux object count" << endl; - exit(1); - } - - objectCount++; -} - -MidiOutPort_linux::MidiOutPort_linux(int aPort, int autoOpen = 1) { - determineDrivers(); - setAndOpenPort(aPort); -} - -MidiOutPort_linux::~MidiOutPort_linux() { - objectCount--; - if (objectCount == 0) { - if (oss_output != NULL) { - delete oss_output; - oss_output = NULL; - } - - if (alsa_output != NULL) { - delete alsa_output; - alsa_output = NULL; - } - - if (unknown_output != NULL) { - delete unknown_output; - unknown_output = NULL; - } - } - - if (objectCount < 0) { - cout << "Error: unusual MidiOutPort_linux count when destructing" << endl; - exit(1); - } -} - - -void MidiOutPort_linux::close(void) { - switch (getSelect()) { - case OSS_MIDI_SELECT: oss_output->close(); break; - case ALSA_MIDI_SELECT: alsa_output->close(); break; - default: unknown_output->close(); break; - } -} - -void MidiOutPort_linux::closeAll(void) { - switch (getSelect()) { - case OSS_MIDI_SELECT: oss_output->closeAll(); break; - case ALSA_MIDI_SELECT: alsa_output->closeAll(); break; - default: unknown_output->closeAll(); break; - } -} - -int MidiOutPort_linux::getChannelOffset(void) const { - switch (getSelect()) { - case OSS_MIDI_SELECT: return oss_output->getChannelOffset(); break; - case ALSA_MIDI_SELECT: return alsa_output->getChannelOffset(); break; - default: return unknown_output->getChannelOffset(); break; - } -} - -const char* MidiOutPort_linux::getName(void) { - switch (getSelect()) { - case OSS_MIDI_SELECT: return oss_output->getName(); break; - case ALSA_MIDI_SELECT: return alsa_output->getName(); break; - default: return unknown_output->getName(); break; - } -} - -const char* MidiOutPort_linux::getName(int i) { - switch (getSelect()) { - case OSS_MIDI_SELECT: return oss_output->getName(i); break; - case ALSA_MIDI_SELECT: return alsa_output->getName(i); break; - default: return unknown_output->getName(i); break; - } -} - -int MidiOutPort_linux::getNumPorts(void) { - switch (getSelect()) { - case OSS_MIDI_SELECT: return oss_output->getNumPorts(); break; - case ALSA_MIDI_SELECT: return alsa_output->getNumPorts(); break; - default: return unknown_output->getNumPorts(); break; - } -} - -int MidiOutPort_linux::getPort(void) { - switch (getSelect()) { - case OSS_MIDI_SELECT: return oss_output->getPort(); break; - case ALSA_MIDI_SELECT: return alsa_output->getPort(); break; - default: return unknown_output->getPort(); break; - } -} - -int MidiOutPort_linux::getPortStatus(void) { - switch (getSelect()) { - case OSS_MIDI_SELECT: return oss_output->getPortStatus(); break; - case ALSA_MIDI_SELECT: return alsa_output->getPortStatus(); break; - default: return unknown_output->getPortStatus(); break; - } -} - -int MidiOutPort_linux::getTrace(void) { - switch (getSelect()) { - case OSS_MIDI_SELECT: return oss_output->getTrace(); break; - case ALSA_MIDI_SELECT: return alsa_output->getTrace(); break; - default: return unknown_output->getTrace(); break; - } -} - -int MidiOutPort_linux::open(void) { - switch (getSelect()) { - case OSS_MIDI_SELECT: return oss_output->open(); break; - case ALSA_MIDI_SELECT: return alsa_output->open(); break; - default: return unknown_output->open(); break; - } -} - -int MidiOutPort_linux::rawsend(int command, int p1, int p2) { - switch (getSelect()) { - case OSS_MIDI_SELECT: return oss_output->rawsend(command, p1, p2); break; - case ALSA_MIDI_SELECT: return alsa_output->rawsend(command, p1, p2); break; - default: return unknown_output->rawsend(command, p1, p2); break; - } -} - -int MidiOutPort_linux::rawsend(int command, int p1) { - switch (getSelect()) { - case OSS_MIDI_SELECT: return oss_output->rawsend(command, p1); break; - case ALSA_MIDI_SELECT: return alsa_output->rawsend(command, p1); break; - default: return unknown_output->rawsend(command, p1); break; - } -} - -int MidiOutPort_linux::rawsend(int command) { - switch (getSelect()) { - case OSS_MIDI_SELECT: return oss_output->rawsend(command); break; - case ALSA_MIDI_SELECT: return alsa_output->rawsend(command); break; - default: return unknown_output->rawsend(command); break; - } -} - -int MidiOutPort_linux::rawsend(uchar* array, int size) { - switch (getSelect()) { - case OSS_MIDI_SELECT: return oss_output->rawsend(array, size); break; - case ALSA_MIDI_SELECT: return alsa_output->rawsend(array, size); break; - default: return unknown_output->rawsend(array, size); break; - } -} - -void MidiOutPort_linux::setAndOpenPort(int aPort) { - switch (getSelect()) { - case OSS_MIDI_SELECT: - oss_output->setPort(aPort); - oss_output->open(); - break; - case ALSA_MIDI_SELECT: - alsa_output->setPort(aPort); - alsa_output->open(); - break; - default: - unknown_output->setPort(aPort); - unknown_output->open(); - break; - } -} - -void MidiOutPort_linux::setChannelOffset(int aChannel) { - switch (getSelect()) { - case OSS_MIDI_SELECT: oss_output->setChannelOffset(aChannel); break; - case ALSA_MIDI_SELECT: alsa_output->setChannelOffset(aChannel); break; - default: unknown_output->setChannelOffset(aChannel); break; - } -} - -void MidiOutPort_linux::setPort(int aPort) { - switch (getSelect()) { - case OSS_MIDI_SELECT: oss_output->setPort(aPort); break; - case ALSA_MIDI_SELECT: - alsa_output->setPort(aPort); break; - default: unknown_output->setPort(aPort); break; - } -} - -int MidiOutPort_linux::setTrace(int aState) { - switch (getSelect()) { - case OSS_MIDI_SELECT: return oss_output->setTrace(aState); break; - case ALSA_MIDI_SELECT: return alsa_output->setTrace(aState); break; - default: return unknown_output->setTrace(aState); break; - } -} - -int MidiOutPort_linux::sysex(uchar* array, int size) { - switch (getSelect()) { - case OSS_MIDI_SELECT: return oss_output->sysex(array, size); break; - case ALSA_MIDI_SELECT: return alsa_output->sysex(array, size); break; - default: return unknown_output->sysex(array, size); break; - } -} - -void MidiOutPort_linux::toggleTrace(void) { - switch (getSelect()) { - case OSS_MIDI_SELECT: oss_output->toggleTrace(); break; - case ALSA_MIDI_SELECT: alsa_output->toggleTrace(); break; - default: unknown_output->toggleTrace(); break; - } -} - - - -////////////////////////////// -// -// MidiOutPort_linux::getSelect -- return the type of MIDI which -// is being used to send MIDI output. -// - -int MidiOutPort_linux::getSelect(void) { - return current; -} - - - -////////////////////////////// -// -// MidiOutPort_linux::selectOSS -- select the OSS MIDI output -// returns 1 if OSS is available, otherwise returns 0. -// - -int MidiOutPort_linux::selectOSS(void) { - if (ossQ) { - current = OSS_MIDI_SELECT; - return 1; - } else { - return 0; - } -} - - - -////////////////////////////// -// -// MidiOutPort_linux::selectALSA -- select the ALSA MIDI output -// returns 1 if ALSA is available, otherwise returns 0. -// - -int MidiOutPort_linux::selectALSA(void) { - if (alsaQ) { - current = ALSA_MIDI_SELECT; - return 1; - } else { - return 0; - } -} - - - -////////////////////////////// -// -// MidiOutPort_linux::selectUnknown -- select the Unknown MIDI output -// returns 1 always. -// - -int MidiOutPort_linux::selectUnknown(void) { - current = UNKNOWN_MIDI_SELECT; - return 1; -} - - - -/////////////////////////////////////////////////////////////////////////// -// -// Private Functions -// - -#include <unistd.h> - -////////////////////////////// -// -// MidiOutPort_linux::determineDrivers -- see if OSS/ALSA are -// available. If /dev/sequencer is present, assume that OSS is -// available. If /dev/snd/sdq is present, assume that ALSA is -// available. -// - -void MidiOutPort_linux::determineDrivers(void) { - struct stat filestats; - int status; - status = stat("/dev/sequencer", &filestats); - - if (status != 0) { - ossQ = 0; - } else { - ossQ = 1; - } - - status = stat("/dev/snd/seq", &filestats); - - if (status != 0) { - alsaQ = 0; - } else { - alsaQ = 1; - } - - - current = UNKNOWN_MIDI_SELECT; - - if (ossQ) { - current = OSS_MIDI_SELECT; - } - - if (alsaQ) { - current = ALSA_MIDI_SELECT; - } - - // create MIDI output types which are available: - - if (oss_output != NULL) { - delete oss_output; - oss_output = NULL; - } - if (alsa_output != NULL) { - delete alsa_output; - alsa_output = NULL; - } - if (unknown_output != NULL) { - delete unknown_output; - unknown_output = NULL; - } - - if (ossQ) { - oss_output = new MidiOutPort_oss; - } - if (alsaQ) { - alsa_output = new MidiOutPort_alsa; - } - unknown_output = new MidiOutPort_unsupported; -} - - -#endif /* ALSA and OSS */ -#endif /* LINUX */ - -// md5sum: be1ccf667122f1c9cf56a95b2ffb8e79 - MidiOutPort_linux.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/src/MidiOutPort_oss.cpp b/extensions/gripd/src/midiio/src/MidiOutPort_oss.cpp deleted file mode 100644 index 74f17c4e99ae46216fd15eb6388716b807568611..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/src/MidiOutPort_oss.cpp +++ /dev/null @@ -1,462 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Fri Dec 18 19:22:20 PST 1998 -// Last Modified: Fri Jan 8 04:26:16 PST 1999 -// Last Modified: Wed May 10 17:00:11 PDT 2000 (name change from _linux to _oss) -// Filename: ...sig/code/control/MidiOutPort/linux/MidiOutPort_oss.cpp -// Web Address: http://sig.sapp.org/src/sig/MidiOutPort_oss.cpp -// Syntax: C++ -// -// Description: Operating-System specific interface for -// basic MIDI output capabilities in Linux using -// OSS sound drivers. Privately inherited by the -// MidiOutPort class. -// - -#ifdef LINUX - -#include "MidiOutPort_oss.h" -#include <iostream> -#include <stdlib.h> - -// initialized static variables -int MidiOutPort_oss::numDevices = 0; -int MidiOutPort_oss::objectCount = 0; -int* MidiOutPort_oss::portObjectCount = NULL; -int MidiOutPort_oss::channelOffset = 0; -int* MidiOutPort_oss::trace = NULL; -std::ostream* MidiOutPort_oss::tracedisplay = &std::cout; - - - -////////////////////////////// -// -// MidiOutPort_oss::MidiOutPort_oss -// default values: autoOpen = 1 -// - - -MidiOutPort_oss::MidiOutPort_oss(void) { - if (objectCount == 0) { - initialize(); - } - objectCount++; - - port = -1; - setPort(0); -} - - -MidiOutPort_oss::MidiOutPort_oss(int aPort, int autoOpen) { - if (objectCount == 0) { - initialize(); - } - objectCount++; - - port = -1; - setPort(aPort); - if (autoOpen) { - open(); - } -} - - - -////////////////////////////// -// -// MidiOutPort_oss::~MidiOutPort_oss -// - -MidiOutPort_oss::~MidiOutPort_oss() { - objectCount--; - if (objectCount == 0) { - deinitialize(); - } else if (objectCount < 0) { - std::cerr << "Error: bad MidiOutPort object count!: " << objectCount << std::endl; - exit(1); - } -} - - - -////////////////////////////// -// -// MidiOutPort_oss::close -// - -void MidiOutPort_oss::close(void) { - // don't close anything, because the - // Linux driver keeps all of the ports open while the - // midi driver (/dev/sequencer) is running. -} - - - -////////////////////////////// -// -// MidiOutPort_oss::closeAll -// - -void MidiOutPort_oss::closeAll(void) { - // the Linux MIDI driver will close the /dev/sequencer device - // which will close all MIDI output ports at the same time. - Sequencer_oss::close(); -} - - - -////////////////////////////// -// -// MidiOutPort_oss::getChannelOffset -- returns zero if MIDI channel -// offset is 0, or 1 if offset is 1. -// - -int MidiOutPort_oss::getChannelOffset(void) const { - return channelOffset; -} - - - -////////////////////////////// -// -// MidiOutPort_oss::getName -- returns the name of the port. -// returns "" if no name. Name is valid until getName is called again. -// - -const char* MidiOutPort_oss::getName(void) { - if (getPort() == -1) { - return "Null OSS MIDI Output"; - } - return getOutputName(getPort()); -} - - -const char* MidiOutPort_oss::getName(int i) { - return Sequencer_oss::getOutputName(i); -} - - - -////////////////////////////// -// -// MidiOutPort_oss::getNumPorts -- returns the number of available -// ports for MIDI output -// - -int MidiOutPort_oss::getNumPorts(void) { - return Sequencer_oss::getNumOutputs(); -} - - - -////////////////////////////// -// -// MidiOutPort_oss::getPort -- returns the port to which this -// object belongs (as set with the setPort function). -// - -int MidiOutPort_oss::getPort(void) { - return port; -} - - - -////////////////////////////// -// -// MidiOutPort_oss::getPortStatus -- 0 if closed, 1 if open -// - -int MidiOutPort_oss::getPortStatus(void) { - // Linux MIDI devices are all open at the same time, - // so if one is open, then they all are. - return is_open(); -} - - - -////////////////////////////// -// -// MidiOutPort_oss::getTrace -- returns true if trace is on or -// false if off. If trace is on, then prints to standard output -// the Midi message being sent. -// - -int MidiOutPort_oss::getTrace(void) { - if (getPort() == -1) return -1; - - return trace[getPort()]; -} - - - -////////////////////////////// -// -// MidiOutPort_oss::rawsend -- send the Midi command and its parameters -// - -int MidiOutPort_oss::rawsend(int command, int p1, int p2) { - if (getPort() == -1) return 0; - - int status; - uchar mdata[3] = {(uchar)command, (uchar)p1, (uchar)p2}; - status = write(getPort(), mdata, 3); - - if (getTrace()) { - if (status == 1) { - std::cout << "(" << std::hex << (int)mdata[0] << std::dec << ":" - << (int)mdata[1] << "," << (int)mdata[2] << ")"; - std::cout.flush(); - } else { - std::cout << "(" << std::hex << (int)mdata[0] << std::dec << "X" - << (int)mdata[1] << "," << (int)mdata[2] << ")"; - std::cout.flush(); - } - } - - return status; -} - - -int MidiOutPort_oss::rawsend(int command, int p1) { - if (getPort() == -1) return 0; - - int status; - uchar mdata[2] = {(uchar)command, (uchar)p1}; - - status = write(getPort(), mdata, 2); - - if (getTrace()) { - if (status == 1) { - std::cout << "(" << std::hex << (int)mdata[0] << std::dec << ":" - << (int)mdata[1] << ")"; - std::cout.flush(); - } else { - std::cout << "(" << std::hex << (int)mdata[0] << std::dec << "X" - << (int)mdata[1] << "," << (int)mdata[2] << ")"; - std::cout.flush(); - } - } - - return status; -} - - -int MidiOutPort_oss::rawsend(int command) { - if (getPort() == -1) return 0; - - int status; - uchar mdata[1] = {(uchar)command}; - - status = write(getPort(), mdata, 1); - - if (getTrace()) { - if (status == 1) { - std::cout << "(" << std::hex << (int)mdata[0] << ")"; - std::cout.flush(); - } else { - std::cout << "(" << std::hex << (int)mdata[0] << ")"; - std::cout.flush(); - } - } - - return status; -} - - -int MidiOutPort_oss::rawsend(uchar* array, int size) { - if (getPort() == -1) return 0; - - int status; - status = write(getPort(), array, size); - - if (getTrace()) { - if (status == 1) { - std::cout << "(array)"; - std::cout.flush(); - } else { - std::cout << "(XarrayX)"; - std::cout.flush(); - } - } - - return status; -} - - - -////////////////////////////// -// -// MidiOutPort_oss::open -- returns true if MIDI output port was -// opened. -// - -int MidiOutPort_oss::open(void) { - return Sequencer_oss::open(); -} - - - -////////////////////////////// -// -// MidiOutPort_oss::setChannelOffset -- sets the MIDI channel offset, -// either 0 or 1. -// - -void MidiOutPort_oss::setChannelOffset(int anOffset) { - switch (anOffset) { - case 0: channelOffset = 0; break; - case 1: channelOffset = 1; break; - default: - std::cout << "Error: Channel offset can be only 0 or 1." << std::endl; - exit(1); - } -} - - - -////////////////////////////// -// -// MidiOutPort_oss::setPort -- -// - -void MidiOutPort_oss::setPort(int aPort) { - if (aPort < -1 || aPort >= getNumPorts()) { - std::cerr << "Error: maximum port number is: " << getNumPorts()-1 - << ", but you tried to access port: " << aPort << std::endl; - exit(1); - } - - if (port != -1) { - portObjectCount[port]--; - } - port = aPort; - if (port != -1) { - portObjectCount[port]++; - } -} - - - -////////////////////////////// -// -// MidiOutPort_oss::setTrace -- if false, then won't print -// Midi messages to standard output. -// - -int MidiOutPort_oss::setTrace(int aState) { - if (getPort() == -1) return -1; - - int oldtrace = trace[getPort()]; - if (aState == 0) { - trace[getPort()] = 0; - } else { - trace[getPort()] = 1; - } - return oldtrace; -} - - - -////////////////////////////// -// -// MidiOutPort_oss::sysex -- send a system exclusive message. -// The message must start with a 0xf0 byte and end with -// a 0xf7 byte. -// - -int MidiOutPort_oss::sysex(uchar* array, int size) { - if (size == 0 || array[0] != 0xf0) { - std::cout << "Error: invalid sysex message" << std::endl; - exit(1); - } - - return rawsend(array,size); -} - - - -////////////////////////////// -// -// MidiOutPort_oss::toggleTrace -// - -void MidiOutPort_oss::toggleTrace(void) { - if (getPort() == -1) return; - - trace[getPort()] = !trace[getPort()]; -} - - - -/////////////////////////////////////////////////////////////////////////// -// -// Private functions -// - - - -////////////////////////////// -// -// MidiOutPort_oss::deinitialize -- sets up storage if necessary -// This function should be called if the current object is -// the first object to be created. -// - -void MidiOutPort_oss::deinitialize(void) { - closeAll(); - if (portObjectCount != NULL) delete [] portObjectCount; - portObjectCount = NULL; - if (trace != NULL) delete [] trace; - trace = NULL; -} - - - -////////////////////////////// -// -// MidiOutPort_oss::initialize -- sets up storage if necessary -// This function should be called if the current object is -// the first object to be created. -// - -void MidiOutPort_oss::initialize(void) { - // get the number of ports - numDevices = getNumOutputs(); - if (getNumPorts() <= 0) { - std::cerr << "Warning: no MIDI output devices" << std::endl; - portObjectCount = NULL; - trace = NULL; - } else { - // allocate space for object count on each port: - if (portObjectCount != NULL) delete [] portObjectCount; - portObjectCount = new int[numDevices]; - - // allocate space for trace variable for each port: - if (trace != NULL) delete [] trace; - trace = new int[numDevices]; - - // initialize the static arrays - for (int i=0; i<getNumPorts(); i++) { - portObjectCount[i] = 0; - trace[i] = 0; - } - } -} - - - -////////////////////////////// -// -// MidiOutPort_oss::setPortStatus -// - -void MidiOutPort_oss::setPortStatus(int aStatus) { - // not used in Linux implementation -} - - -#endif // LINUX - - - -// md5sum: c09dbe18ce8a0ff6ff11030d43a98c4a - MidiOutPort_oss.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/src/MidiOutPort_unsupported.cpp b/extensions/gripd/src/midiio/src/MidiOutPort_unsupported.cpp deleted file mode 100644 index f4b8c284bc6b9c76c5bd3c102e4036effe28014e..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/src/MidiOutPort_unsupported.cpp +++ /dev/null @@ -1,402 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Mon Jan 12 21:40:35 GMT-0800 1998 -// Last Modified: Mon Jan 12 21:40:39 GMT-0800 1998 -// Filename: ...sig/code/control/MidiOutPort/unsupported/MidiOutPort_unsupported.cpp -// Web Address: http://www-ccrma.stanford.edu/~craig/improv/src/MidiOutPort_unsupported.cpp -// Syntax: C++ -// -// Description: Operating-System specific interface for basic MIDI output -// capabilities in an unknown operating system. Privately -// inherited by the MidiOutPort class. Used for compiling -// and running MIDI programs on a computer with no -// MIDI output. -// - -#include "MidiOutPort_unsupported.h" - -#include <iostream> -#include <stdlib.h> -#include <string.h> -#include <sstream> - -// initialized static variables -int MidiOutPort_unsupported::numDevices = 0; -int MidiOutPort_unsupported::objectCount = 0; -int* MidiOutPort_unsupported::openQ = NULL; -int* MidiOutPort_unsupported::portObjectCount = NULL; -int MidiOutPort_unsupported::channelOffset = 0; - - -////////////////////////////// -// -// MidiOutPort_unsupported::MidiOutPort_unsupported -// default values: autoOpen = 1 -// - - -MidiOutPort_unsupported::MidiOutPort_unsupported(void) { - if (objectCount == 0) { - initialize(); - } - objectCount++; - - port = -1; - setPort(0); -} - - -MidiOutPort_unsupported::MidiOutPort_unsupported(int aPort, int autoOpen) { - if (objectCount == 0) { - initialize(); - } - objectCount++; - - port = -1; - setPort(aPort); - if (autoOpen) { - open(); - } -} - - - -////////////////////////////// -// -// MidiOutPort_unsupported::~MidiOutPort_unsupported -// - -MidiOutPort_unsupported::~MidiOutPort_unsupported() { - objectCount--; - if (objectCount == 0) { - deinitialize(); - } else if (objectCount < 0) { - std::cerr << "Error: bad MidiOutPort object count!: " << objectCount << std::endl; - exit(1); - } -} - - - -////////////////////////////// -// -// MidiOutPort_unsupported::close -// - -void MidiOutPort_unsupported::close(void) { - if (getPortStatus() == 1) { - setPortStatus(0); - } -} - - - -////////////////////////////// -// -// MidiOutPort_unsupported::closeAll -// - -void MidiOutPort_unsupported::closeAll(void) { - for (int i=0; i<getNumPorts(); i++) { - if (openQ[i] == 1) { - openQ[i] = 0; - } - } -} - - - -////////////////////////////// -// -// MidiOutPort_unsupported::getChannelOffset -- returns zero if MIDI channel -// offset is 0, or 1 if offset is 1. -// - -int MidiOutPort_unsupported::getChannelOffset(void) const { - return channelOffset; -} - - - -////////////////////////////// -// -// MidiOutPort_unsupported::getName -- returns the name of the port. -// returns "" if no name. Name is valid until getName is called again. -// - -const char* MidiOutPort_unsupported::getName(void) const { - static char* name = NULL; - std::stringstream temp; - temp << "Inactive MIDI output test port #"; - temp << getPort(); - if (name != NULL) delete [] name; - name = new char[temp.str().length()+1]; - strcpy(name, temp.str().c_str()); - return name; -} - -const char* MidiOutPort_unsupported::getName(int i) const { - static char* name = NULL; - std::stringstream temp; - temp << "Inactive MIDI output test port #"; - temp << i; - if (name != NULL) delete [] name; - name = new char[temp.str().length()+1]; - strcpy(name, temp.str().c_str()); - return name; -} - - - -////////////////////////////// -// -// MidiOutPort_unsupported::getNumPorts -- returns the number of available -// ports for MIDI output -// - -int MidiOutPort_unsupported::getNumPorts(void) const { - return numDevices; -} - - - -////////////////////////////// -// -// MidiOutPort_unsupported::getPort -- returns the port to which this -// object belongs (as set with the setPort function). -// - -int MidiOutPort_unsupported::getPort(void) const { - return port; -} - - - -////////////////////////////// -// -// MidiOutPort_unsupported::getPortStatus -- 0 if closed, 1 if open -// - -int MidiOutPort_unsupported::getPortStatus(void) const { - if (openQ[getPort()] == 1) { - return 1; - } else { - return 0; - } -} - - - -////////////////////////////// -// -// MidiOutPort_unsupported::getTrace -- returns true if trace is on or -// false if off. If trace is on, then prints to standard output -// the Midi message being sent. -// - -int MidiOutPort_unsupported::getTrace(void) const { - return trace; -} - - - -////////////////////////////// -// -// MidiOutPort_unsupported::rawsend -- send the Midi command and its parameters -// - -int MidiOutPort_unsupported::rawsend(int command, int p1, int p2) { - if (getTrace()) { - std::cout << "{" << std::hex << command << std::dec << ":" << (p1 & 0xff) - << "," << (p2 & 0xff) << "}"; - std::cout.flush(); - } - - return 1; -} - - -int MidiOutPort_unsupported::rawsend(int command, int p1) { - return 1; -} - - -int MidiOutPort_unsupported::rawsend(int command) { - return 1; -} - - -int MidiOutPort_unsupported::rawsend(uchar* array, int size) { - return 1; -} - - - -////////////////////////////// -// -// MidiOutPort_unsupported::open -- returns true if MIDI output port was -// opened. -// - -int MidiOutPort_unsupported::open(void) { - if (getPortStatus() == 0) { - openQ[getPort()] = 1; - } - return 1; -} - - - -////////////////////////////// -// -// MidiOutPort_unsupported::setChannelOffset -- sets the MIDI channel offset, either 0 or 1. -// - -void MidiOutPort_unsupported::setChannelOffset(int anOffset) { - switch (anOffset) { - case 0: channelOffset = 0; break; - case 1: channelOffset = 1; break; - default: - std::cout << "Error: Channel offset can be only 0 or 1." << std::endl; - exit(1); - } -} - - - -////////////////////////////// -// -// MidiOutPort_unsupported::setPort -- -// - -void MidiOutPort_unsupported::setPort(int aPort) { - if (aPort < 0 || aPort >= getNumPorts()) { - std::cerr << "Error: maximum port number is: " << getNumPorts()-1 - << ", but you tried to access port: " << aPort << std::endl; - exit(1); - } - - if (port != -1) { - portObjectCount[port]--; - } - port = aPort; - portObjectCount[port]++; -} - - - -////////////////////////////// -// -// MidiOutPort_unsupported::setTrace -- if false, then won't print -// Midi messages to standard output. -// - -int MidiOutPort_unsupported::setTrace(int aState) { - int oldtrace = trace; - if (aState == 0) { - trace = 0; - } else { - trace = 1; - } - return oldtrace; -} - - - -////////////////////////////// -// -// MidiOutPort_unsupported::sysex -- -// - -int MidiOutPort_unsupported::sysex(uchar* array, int size) { - return 1; -} - - - -////////////////////////////// -// -// MidiOutPort_unsupported::toggleTrace -- -// - -void MidiOutPort_unsupported::toggleTrace(void) { - trace = !trace; -} - - - -/////////////////////////////////////////////////////////////////////////// -// -// Private functions -// - - - -////////////////////////////// -// -// MidiOutPort_unsupported::deinitialize -- sets up storage if necessary -// This function should be called if the current object is -// the first object to be created. -// - -void MidiOutPort_unsupported::deinitialize(void) { - closeAll(); - if (openQ != NULL) delete [] openQ; - openQ = NULL; - if (portObjectCount != NULL) delete [] portObjectCount; - portObjectCount = NULL; -} - - - -////////////////////////////// -// -// MidiOutPort_unsupported::initialize -- sets up storage if necessary -// This function should be called if the current object is -// the first object to be created. -// - -void MidiOutPort_unsupported::initialize(void) { - // get the number of ports - numDevices = 16; - if (getNumPorts() <= 0) { - std::cerr << "Error: no MIDI output devices" << std::endl; - exit(1); - } - - - // allocate space for openQ, the port open/close status - if (openQ != NULL) delete [] openQ; - openQ = new int[numDevices]; - - // allocate space for object count on each port: - if (portObjectCount != NULL) delete [] portObjectCount; - portObjectCount = new int[numDevices]; - - - // initialize the static arrays - for (int i=0; i<getNumPorts(); i++) { - openQ[i] = 0; - portObjectCount[i] = 0; - } -} - - - -////////////////////////////// -// -// MidiOutPort_unsupported::setPortStatus(int aStatus) { -// - -void MidiOutPort_unsupported::setPortStatus(int aStatus) { - if (aStatus) { - openQ[getPort()] = 1; - } else { - openQ[getPort()] = 0; - } -} - - - - -// md5sum: eff3d6cd2cab4c2def6ca60ef0ca197f - MidiOutPort_unsupported.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/src/MidiOutPort_visual.cpp b/extensions/gripd/src/midiio/src/MidiOutPort_visual.cpp deleted file mode 100644 index d0808174e23b8de9eb4b7d5dfac61f1d26d40ebb..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/src/MidiOutPort_visual.cpp +++ /dev/null @@ -1,532 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Sun Dec 28 15:18:46 GMT-0800 1997 -// Last Modified: Mon Jan 12 15:42:44 GMT-0800 1998 -// Last Modified: Tue Jun 29 13:10:30 PDT 1999 (verified sysex sending) -// Last Modified: Tue Jun 4 22:10:16 PDT 2002 (getNumPorts fix for static use) -// Filename: ...sig/code/control/MidiOutPort/visual/MidiOutPort_visual.cpp -// Web Address: http://www-ccrma.stanford.edu/~craig/improv/src/MidiOutPort_visual.cpp -// Syntax: C++ -// -// Description: Operating-System specific interface for -// basic MIDI output capabilities in Windows 95/NT/98 -// using winmm.lib. Privately inherited by the -// MidiOutPort class. -// - - -#ifdef VISUAL - -#include <iostream.h> -#include "MidiOutPort_visual.h" - -typedef unsigned long ulong; -typedef unsigned char uchar; - - -// initialized static variables -int MidiOutPort_visual::numDevices = 0; -int MidiOutPort_visual::objectCount = 0; -int* MidiOutPort_visual::openQ = NULL; -int* MidiOutPort_visual::portObjectCount = NULL; -HMIDIOUT* MidiOutPort_visual::device = NULL; -int MidiOutPort_visual::channelOffset = 0; - - - -////////////////////////////// -// -// MidiOutPort_visual::MidiOutPort_visual -// default values: autoOpen = 1 -// - - -MidiOutPort_visual::MidiOutPort_visual(void) { - if (objectCount == 0) { - initialize(); - } - objectCount++; - - port = -1; - setPort(0); -} - - -MidiOutPort_visual::MidiOutPort_visual(int aPort, int autoOpen) { - if (objectCount == 0) { - initialize(); - } - objectCount++; - - port = -1; - setPort(aPort); - if (autoOpen) { - open(); - } -} - - - -////////////////////////////// -// -// MidiOutPort_visual::~MidiOutPort_visual -// - -MidiOutPort_visual::~MidiOutPort_visual() { - objectCount--; - if (objectCount == 0) { - deinitialize(); - } else if (objectCount < 0) { - cerr << "Error: bad MidiOutPort object count!: " << objectCount << endl; - exit(1); - } -} - - - -////////////////////////////// -// -// MidiOutPort_visual::close -// - -void MidiOutPort_visual::close(void) { - if (getPort() == -1) { - return; - } - - if (getPortStatus() == 1 && device[getPort()] != NULL) { - - // The following function, midiOutClose, is not what I like. - // It will send note offs to any note which it thinks is - // on when the port is closed. Uncomment the line if - // you want this feature. - // midiOutReset(device[getPort()]); - - midiOutClose(device[getPort()]); - setPortStatus(0); - } -} - - - -////////////////////////////// -// -// MidiOutPort_visual::closeAll -// - -void MidiOutPort_visual::closeAll(void) { - for (int i=0; i<getNumPorts(); i++) { - if (openQ[i] == 1 && device[i] != NULL) { - midiOutReset(device[i]); - midiOutClose(device[i]); - openQ[i] = 0; - } - } -} - - - -////////////////////////////// -// -// MidiOutPort_visual::getChannelOffset -- returns zero if MIDI channel -// offset is 0, or 1 if offset is 1. -// - -int MidiOutPort_visual::getChannelOffset(void) const { - return channelOffset; -} - - - -////////////////////////////// -// -// MidiOutPort_visual::getName -- returns the name of the port. -// returns "" if no name. Name is valid until getName is called again. -// - -const char* MidiOutPort_visual::getName(void) { - static MIDIOUTCAPS outputCapabilities; - - if (getPort() == -1) { - return "Null MIDI Output"; - } - - if (openQ[getPort()]) { // port already open - midiOutGetDevCaps(getPort(), &outputCapabilities, sizeof(MIDIOUTCAPS)); - } else { // port is currently closed - if(open()) {; - midiOutGetDevCaps(getPort(), &outputCapabilities, sizeof(MIDIOUTCAPS)); - close(); - } else { - return ""; - } - } - return outputCapabilities.szPname; -} - - -const char* MidiOutPort_visual::getName(int i) { - static MIDIOUTCAPS outputCapabilities; - - midiOutGetDevCaps(i, &outputCapabilities, sizeof(MIDIOUTCAPS)); - - return outputCapabilities.szPname; -} - - - -////////////////////////////// -// -// MidiOutPort_visual::getNumPorts -- returns the number of available -// ports for MIDI output -// - -int MidiOutPort_visual::getNumPorts(void) { - if (numDevices <= 0) { - return midiOutGetNumDevs(); - } - return numDevices; -} - - - -////////////////////////////// -// -// MidiOutPort_visual::getPort -- returns the port to which this -// object belongs (as set with the setPort function). -// - -int MidiOutPort_visual::getPort(void) { - return port; -} - - - -////////////////////////////// -// -// MidiOutPort_visual::getPortStatus -- 0 if closed, 1 if open -// 2 if null connection -// - -int MidiOutPort_visual::getPortStatus(void) { - if (getPort() == -1) { - return 2; - } - - if (openQ[getPort()] == 1) { - return 1; - } else { - return 0; - } -} - - - -////////////////////////////// -// -// MidiOutPort_visual::getTrace -- returns true if trace is on or -// false if off. If trace is on, then prints to standard output -// the Midi message being sent. -// - -int MidiOutPort_visual::getTrace(void) { - return trace; -} - - - -////////////////////////////// -// -// MidiOutPort_visual::rawsend -- send the Midi command and its parameters -// - -int MidiOutPort_visual::rawsend(int command, int p1, int p2) { - union { ulong word; uchar data[4]; } u; - u.data[0] = (uchar)command; - u.data[1] = (uchar)(p1 & 0x7f); // parameter limited to range 0-127; - u.data[2] = (uchar)(p2 & 0x7f); // parameter limited to range 0-127; - u.data[3] = 0; - - if (getPort() == -1) { - return 2; - } - - int flag = midiOutShortMsg(device[getPort()], u.word); - - if (getTrace()) { - if (flag == MMSYSERR_NOERROR) { - cout << "(" << hex << (int)u.data[0] << dec << ":" - << (int)u.data[1] << "," << (int)u.data[2] << ")"; - cout.flush(); - } else { - cout << "(" << hex << (int)u.data[0] << dec << "X" - << (int)u.data[1] << "," << (int)u.data[2] << ")"; - cout.flush(); - } - } - - return flag; -} - - -int MidiOutPort_visual::rawsend(int command, int p1) { - return rawsend(command, p1, 0); -} - - -int MidiOutPort_visual::rawsend(int command) { - return rawsend(command, 0, 0); -} - - -int MidiOutPort_visual::rawsend(uchar* array, int size) { - // Note: this function will work in Windows 95 and Windows NT. - // This function will not work in Windows 3.x because a - // different memory model is necessary. - - if (size > 64000 || size < 1) { - cerr << "Warning: cannot write a MIDI stream larger than 64kB" << endl; - return 0; - } - - MIDIHDR midiheader; // structure for sending an array of MIDI bytes - - midiheader.lpData = (char *)array; - midiheader.dwBufferLength = size; - // midiheader.dwBytesRecorded = size; // example program doesn't set - midiheader.dwFlags = 0; // flags must be set to 0 - - if (getPort() == -1) { - return -1; - } - - int status = midiOutPrepareHeader(device[getPort()], &midiheader, - sizeof(MIDIHDR)); - - if (status != MMSYSERR_NOERROR) { - return 0; - } - - status = midiOutLongMsg(device[getPort()], &midiheader, sizeof(MIDIHDR)); - - if (status != MMSYSERR_NOERROR) { - return 0; - } - - while (MIDIERR_STILLPLAYING == midiOutUnprepareHeader(device[getPort()], - &midiheader, sizeof(MIDIHDR))) { - Sleep(1); // sleep for 1 millisecond - } - - return 1; -} - - - -////////////////////////////// -// -// MidiOutPort_visual::open -- returns true if MIDI output port was -// opened. -// - -int MidiOutPort_visual::open(void) { - if (getPort() == -1) { - return 2; - } - - if (getPortStatus() == 0) { - int flag; - flag = midiOutOpen(&device[getPort()], getPort(), 0, 0, CALLBACK_NULL); - if (flag == MMSYSERR_NOERROR) { - openQ[getPort()] = 1; - return 1; - } else { // faied to open - openQ[getPort()] = 0; - device[getPort()] = NULL; - return 0; - } - } else { // already open - return 1; - } -} - - - -////////////////////////////// -// -// MidiOutPort_visual::setChannelOffset -- sets the MIDI channel offset, -// either 0 or 1. -// - -void MidiOutPort_visual::setChannelOffset(int anOffset) { - switch (anOffset) { - case 0: channelOffset = 0; break; - case 1: channelOffset = 1; break; - default: - cout << "Error: Channel offset can be only 0 or 1." << endl; - exit(1); - } -} - - - -////////////////////////////// -// -// MidiOutPort_visual::setPort -// - -void MidiOutPort_visual::setPort(int aPort) { - if (aPort < 0 || aPort >= getNumPorts()) { - cerr << "Error: maximum port number is: " << getNumPorts()-1 - << ", but you tried to access port: " << aPort << endl; - exit(1); - } - - if (port != -1) { - portObjectCount[port]--; - } - port = aPort; - portObjectCount[port]++; -} - - - -////////////////////////////// -// -// MidiOutPort_visual::setTrace -- if false, then won't print -// Midi messages to standard output. -// - -int MidiOutPort_visual::setTrace(int aState) { - int oldtrace = trace; - if (aState == 0) { - trace = 0; - } else { - trace = 1; - } - return oldtrace; -} - - - -////////////////////////////// -// -// MidiOutPort_visual::sysex -- send a system exclusive message. -// The first byte of the message must be a 0xf0 byte. -// - -int MidiOutPort_visual::sysex(uchar* array, int size) { - if (size == 0 || array[0] != 0xf0) { - cout << "Error: invalid system exclusive message," - " first byte must be 0xf0" << endl; - exit(1); - } - - return rawsend(array, size); -} - - - -////////////////////////////// -// -// MidiOutPort_visual::toggleTrace -// - -void MidiOutPort_visual::toggleTrace(void) { - trace = !trace; -} - - - -/////////////////////////////////////////////////////////////////////////// -// -// Private functions -// - - - -////////////////////////////// -// -// MidiOutPort_visual::deinitialize -- sets up storage if necessary -// This function should be called if the current object is -// the first object to be created. -// - -void MidiOutPort_visual::deinitialize(void) { - closeAll(); - if (device != NULL) delete [] device; - device = NULL; - if (openQ != NULL) delete [] openQ; - openQ = NULL; - if (portObjectCount != NULL) delete [] portObjectCount; - portObjectCount = NULL; -} - - - -////////////////////////////// -// -// MidiOutPort_visual::initialize -- sets up storage if necessary -// This function should be called if the current object is -// the first object to be created. -// - -void MidiOutPort_visual::initialize(void) { - // get the number of ports - numDevices = midiOutGetNumDevs(); - if (getNumPorts() <= 0) { - cerr << "Error: no MIDI output devices" << endl; - exit(1); - } - - // allocate space for Windoze MIDI output structures - if (device != NULL) { - cerr << "Error: device array should be NULL when calling " - << "initialize() in MidiOutPort." << endl; - exit(1); - } - device = new HMIDIOUT[numDevices]; - - // allocate space for openQ, the port open/close status - if (openQ != NULL) delete [] openQ; - openQ = new int[numDevices]; - - // allocate space for object count on each port: - if (portObjectCount != NULL) delete [] portObjectCount; - portObjectCount = new int[numDevices]; - - - // initialize the static arrays - for (int i=0; i<getNumPorts(); i++) { - device[i] = NULL; - openQ[i] = 0; - portObjectCount[i] = 0; - } -} - - - -////////////////////////////// -// -// MidiOutPort_visual::setPortStatus -// - -void MidiOutPort_visual::setPortStatus(int aStatus) { - if (getPort() == -1) { - return; - } - - if (aStatus) { - openQ[getPort()] = 1; - } else { - openQ[getPort()] = 0; - } -} - - -#endif // VISUAL - - - - -// md5sum: 8cb60bfb5dc9ea42808ffa4540e0fc52 - MidiOutPort_visual.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/src/MidiOutput.cpp b/extensions/gripd/src/midiio/src/MidiOutput.cpp deleted file mode 100644 index d78460f61a789c890afa0aa5fef4cddbfd7217b7..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/src/MidiOutput.cpp +++ /dev/null @@ -1,1082 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: 18 December 1997 -// Last Modified: Mon Jan 26 23:54:36 GMT-0800 1998 -// Last Modified: Tue Feb 2 08:30:28 PST 1999 -// Last Modified: Sun Jul 18 18:52:29 PDT 1999 (added RPN functions) -// Last Modified: Sun Dec 9 15:01:33 PST 2001 (switched con/des code) -// Filename: ...sig/code/control/MidiOutput/MidiOutput.cpp -// Web Address: http://sig.sapp.org/src/sig/MidiOutput.cpp -// Syntax: C++ -// -// Description: The MIDI output interface for MIDI synthesizers/equipment -// which has many convienience functions defined for -// various types of MIDI output. -// - -#include "MidiOutput.h" -#include <iostream> -#include <iomanip> - -#define RECORD_ASCII (0) -#define RECORD_BINARY (1) -#define RECORD_MIDI_FILE (2) - - -// declaration of static variables -SigTimer MidiOutput::timer; -Array<int>* MidiOutput::rpn_lsb_status = NULL; -Array<int>* MidiOutput::rpn_msb_status = NULL; -int MidiOutput::objectCount = 0; - - -////////////////////////////// -// -// MidiOutput::MidiOutput -- -// - - -MidiOutput::MidiOutput(void) : MidiOutPort() { - outputRecordQ = 0; - - if (objectCount == 0) { - initializeRPN(); - } - objectCount++; -} - - - -MidiOutput::MidiOutput(int aPort, int autoOpen) : MidiOutPort(aPort, autoOpen) { - outputRecordQ = 0; - - if (objectCount == 0) { - initializeRPN(); - } - objectCount++; -} - - - -////////////////////////////// -// -// MidiOutput::~MidiOutput -// - -MidiOutput::~MidiOutput() { - objectCount--; - if (objectCount == 0) { - deinitializeRPN(); - } else if (objectCount < 0) { - std::cout << "Error in MidiOutput decontruction" << std::endl; - } - -} - - - -////////////////////////////// -// -// MidiOutput::cont -- send a controller command MIDI message. -// -// channel = the Midi channel ofset from 0 [0..15] -// controller = the continuous controller number [0..127] -// data = the value of the specified controller [0..127] -// - -int MidiOutput::cont(int channel, int controller, int data) { - return send(0xb0 | (channel & 0x0f), controller, data); -} - - - -////////////////////////////// -// -// MidiOutput::off -- sends a Note Off MIDI message (0x80). -// -// channel = MIDI channel to send note on. range is [0..15] -// keynum = MIDI key number to play (middle C = 60, C# = 61, etc.) [0..127] -// velocity = release velocity of the note, 127 = quickest possible -// -// Note: The more common method of turning off a note is to use the -// play() function (midi command 0x90) but send an attack velocity of 0. -// - -int MidiOutput::off(int channel, int keynum, int releaseVelocity) { - return send(0x80 | (channel & 0x0f), keynum, releaseVelocity); -} - - - -////////////////////////////// -// -// MidiOutput::pc -- send a patch change MIDI message. changes the timbre -// on the specified channel. -// -// channel = MIDI channel to which to send the patch change [0..15] -// timbre = the voice to select on the specified channel [0..127] -// - -int MidiOutput::pc(int channel, int timbre) { - return send(0xc0 | (channel & 0x0f), timbre); -} - - - -////////////////////////////// -// -// MidiOutput::play -- sends a Note On/Off MIDI message. -// -// channel = MIDI channel to send note on. range is [0..15] -// keynum = MIDI key number to play (middle C = 60, C# = 61, etc.) [0..127] -// velocity = attack velocity of the note, 0 = 0ff, 127 = loudest possible -// - -int MidiOutput::play(int channel, int keynum, int velocity) { - return send(0x90 | (channel & 0x0f), keynum, velocity); -} - - - -////////////////////////////// -// -// MidiOutput::pw -- Pitch Wheel: send a MIDI pitch bend. -// Parameters are: -// 1. channel -- MIDI channel offset from 0. -// 2. mostByte -- most significant 7 bits (coarse tuning) -// 3. leastByte -- least significant 7 bits (fine tuning) -// - -int MidiOutput::pw(int channel, int mostByte, int leastByte) { - return send(0xe0 | (channel & 0x0f), leastByte, mostByte); -} - - - -////////////////////////////// -// -// MidiOutput::pw -- Pitch Wheel: 14 bit number given as input -// range for 14 bit number is 0 to 16383. -// - -int MidiOutput::pw(int channel, int tuningData) { - uchar greaterBits = (uchar)((tuningData >> 7) & 0x7f); - uchar lesserBits = (uchar)(tuningData & 0x7f); - return pw(channel, greaterBits, lesserBits); -} - - - -////////////////////////////// -// -// MidiOutput::pw -- Pitch Wheel: range between -1 to 1 given as input. -// Range is then converted to a 14 bit number. -// +1 = highest value of pitch wheel -// 0 = rest position of pitch wheel -// -1 = lowest value of pitch wheel -// - -int MidiOutput::pw(int channel, double tuningData) { - if (tuningData < -1.0 || tuningData > 1.0) { - std::cerr << "Error: pitch wheel data is out of range: " << tuningData << std::endl; - exit(1); - } - - int output = (int)((tuningData+1.0)/2.0*16383 + 0.5); - return pw(channel, output); -} - - - -////////////////////////////// -// -// MidiOutput::recordStart -// - -void MidiOutput::recordStart(char *filename, int format) { - if (outputRecordQ) { // already recording, so close old file - recordStop(); - } - - outputRecordFile.open(filename, std::ios::out); - if (!outputRecordFile) { // open file failed - std::cerr << "Error: cannot open file " << filename << std::endl; - outputRecordQ = 0; - } else { - outputRecordQ = 1; - } - - if (outputRecordQ) { - switch (format) { - case RECORD_ASCII: // ascii - outputRecordType = RECORD_ASCII; - outputRecordFile <<"; delta time/MIDI output at delta time" << std::endl; - break; - case RECORD_BINARY: // binary - outputRecordType = RECORD_BINARY; - // record the magic number for binary format - outputRecordFile << (uchar)0xf8 << (uchar)0xf8 - << (uchar)0xf8 << (uchar)0xf8; - break; - case RECORD_MIDI_FILE: // standard MIDI file, type 0 - default: - outputRecordType = RECORD_MIDI_FILE; - // header stuff to be written here - break; - } - } - - lastFlushTime = timer.getTime(); -} - - - -////////////////////////////// -// -// MidiOutput::recordStop -// - -void MidiOutput::recordStop(void) { - if (outputRecordQ) { - outputRecordQ = 0; - outputRecordFile.close(); - } -} - - - -////////////////////////////// -// -// MidiOutput::reset -- sends the MIDI command 0xFF which -// should force the MIDI devices on the other side of the -// MIDI cable into their power-on reset condition, clear running -// status, turn off any sounding notes, set Local Control on, and -// otherwise clean up the state of things. -// - -void MidiOutput::reset(void) { - send(0xff, 0, 0); -} - - - -////////////////////////////// -// -// MidiOutput::send -- send a byte to the MIDI port but record it -// first. -// - -int MidiOutput::send(int command, int p1, int p2) { - if (outputRecordQ) { - switch (outputRecordType) { - case 0: // ascii - writeOutputAscii(command, p1, p2); - break; - case 1: // binary - writeOutputBinary(command, p1, p2); - break; - case 2: // standard MIDI file type 0 - writeOutputMidifile(command, p1, p2); - break; - } - lastFlushTime = timer.getTime(); // only keep track if recording - } - return rawsend(command, p1, p2); -} - - -int MidiOutput::send(int command, int p1) { - if (outputRecordQ) { - switch (outputRecordType) { - case 0: // ascii - writeOutputAscii(command, p1, -1); - break; - case 1: // binary - writeOutputBinary(command, p1, -1); - break; - case 2: // standard MIDI file type 0 - writeOutputMidifile(command, p1, -1); - break; - } - lastFlushTime = timer.getTime(); // only keep track if recording - } - return rawsend(command, p1); -} - - -int MidiOutput::send(int command) { - if (outputRecordQ) { - switch (outputRecordType) { - case 0: // ascii - writeOutputAscii(command, -1, -1); - break; - case 1: // binary - writeOutputBinary(command, -1, -1); - break; - case 2: // standard MIDI file type 0 - writeOutputMidifile(command, -1, -1); - break; - } - lastFlushTime = timer.getTime(); // only keep track if recording - } - return rawsend(command); -} - - - -////////////////////////////// -// -// MidiOutput::silence -- send a note off to all notes on all channels. -// default value: aChannel = -1 -// - -void MidiOutput::silence(int aChannel) { - int keyno; - if (aChannel == -1) { - for (int channel=0; channel<16; channel++) { - for (keyno=0; keyno<128; keyno++) { - play(channel, keyno, 0); - } - } - } else { - for (keyno=0; keyno<128; keyno++) { - play(aChannel, keyno, 0); - } - } -} - - - -////////////////////////////// -// -// MidiOutput::sustain -- set the MIDI sustain continuous controller on or off. -// Equivalent to the command cont(channel, 0x40, status). -// - -void MidiOutput::sustain(int channel, int status) { - if (status) { // turn on sustain - cont(channel, 0x40, 127); - } else { // turn off sustain - cont(channel, 0x40, 0); - } -} - - - -/////////////////////////////// -// -// MidiOutput::sysex -- sends a system exclusive MIDI message. -// you must supply the 0xf0 at the start of the array -// and the 0xf7 at the end of the array. -// - -int MidiOutput::sysex(char* data, int length) { - return rawsend((uchar*)data, length); -} - - -int MidiOutput::sysex(uchar* data, int length) { - return rawsend(data, length); -} - - -/////////////////////////////////////////////////////////////////////////// -// -// RPN functions -// - - -////////////////////////////// -// -// NRPN -- sends a Non-registered parameter number where: -// parameter #1: channel (0-15) -// parameter #2: NRPN MSB indicator (controller #99 data) -// parameter #3: NRPN LSB indicator (controller #98 data) -// parameter #4: NRPN MSB data (controller #6 data) -// [parameter #5: NRPN LSB data (controller #38 data)] -// or: -// parameter #1: channel (0-15) -// parameter #2: NRPN MSB indicator (controller #99 data) -// parameter #3: NRPN LSB indicator (controller #98 data) -// parameter #4: NRPN Floating point in range (-1..1) (ccont#6 and #38 data) -// -// -// NRPN (Non-registered parameter number) -- General MIDI and -// Extended MIDI mess. It becomes the receiving synthesizer's -// responsibility to determine the meaning of continuous -// controller (ccont) #6 from data sent with cconts #98,99 (for -// NRPNS) and cconts #100,101 (for RPNS). NRPN parameters -// are not reset when the ccont#121 is sent to reset controllers. -// -// NRPN's are "non-standard" meaning that any synthesizer could -// do whatever they want with a given NRPN; However, the -// GS and XG specifications are given in the table further below. -// -// The data for NRPNs are transfered to synthesizer with -// data slider ccont #6(MSB) and ccont #38(LSB). Also data increment -// ccont#96 (data increment) and ccont#97 (data decrement) are in -// relation to the RPN or NRPN in effect. Increment and Decrement -// are not recommend to use with RPN's because of confusion in the -// MIDI industry over which 7-bit data (#6 or #38) to increment. -// -// Once you have selected an NRPN on a given channel, the -// channel will apply subsequent Data Entry to the -// selected parameter. After making the necessary settings -// you should set NRPN to NULL to reduce the risk of -// operational errors. a NUL RPN will disable the previous -// values of either RPN or NRPN data. -// -// The following NRPN values are supported in Yamaha's XG specification: -// CCont #98 = LSB of NRPN parameter ID -// CCont #99 = MSB of NRPN parameter ID -// -// NRPN -// MSB LSB Data Range -// #99 #98 Parameter (ccont#6=MSB, ccont#38=LSB) -// === ===== ====================== ====================== -// 1 8 Vibrato Rate -64.. 0..+63 logical range or (-50..+50) -// 0..64..127 MIDI data range ( 14..114) -// 1 9 Vibrato Depth same ranges as above -// 1 10 Vibrato Delay same ranges as above -// 1 32 Filter Cutoff Freq. same ranges as above -// 1 33 Filter Resonance same ranges as above -// 1 99 EG Attack Time same ranges as above -// 1 100 EG Decay Time same ranges as above -// 1 102 EG Release Time same ranges as above -// 20 xx Drum Filter Cutoff Freq same ranges as above -// xx = drum MIDI key number -// 21 xx Drum Filter Resonance same ranges as above -// xx = drum MIDI key number -// 22 xx Drum EG Attack Rage same ranges as above -// xx = drum MIDI key number -// 23 xx Drum EG Decay Rate same ranges as above -// xx = drum MIDI key number -// 24 xx Drum Pitch Coarse same ranges as above -// xx = drum MIDI key number -// 25 xx Drum Pitch Fine same ranges as above -// xx = drum MIDI key number -// 26 xx Drum Level 0..64..127 MIDI data range -// xx = drum MIDI key number -// 28 xx Drum Pan Random, Left..Center..Right -// 0.......1.....64......127 MIDI data range -// xx = drum MIDI key number -// 29 xx Drum Reverb Send Level 0..64..127 MIDI data range -// xx = drum MIDI key number -// 30 xx Drum Chorus Send Level 0..64..127 MIDI data range -// xx = drum MIDI key number -// 31 xx Drum Variation Send Level 0..64..127 MIDI data range -// xx = drum MIDI key number -// 127 127 Null RPN (disables RPN/NRPN parameters from being altered). -// -// - -int MidiOutput::NRPN(int channel, int nrpn_msb, int nrpn_lsb, - int data_msb, int data_lsb) { - channel = channel & 0x0f; - nrpn_msb = nrpn_msb & 0x7f; - nrpn_lsb = nrpn_msb & 0x7f; - data_msb = nrpn_msb & 0x7f; - data_lsb = nrpn_msb & 0x7f; - - int status = 1; - - // check to see if the nrpn_msb and nrpn_lsb are the same - // as the last call to this function, if not, then send - // the appropriate MIDI controller values. - if (rpn_msb_status[getPort()][channel] != nrpn_msb) { - status &= cont(channel, 99, nrpn_msb); - rpn_msb_status[getPort()][channel] = nrpn_msb; - } - if (rpn_lsb_status[getPort()][channel] != nrpn_lsb) { - status &= cont(channel, 98, nrpn_lsb); - rpn_lsb_status[getPort()][channel] = nrpn_lsb; - } - - // now that the NRPN state is set, send the NRPN data values - // but do not bother sending any data if the Null RPN is in effect. - if (nrpn_msb != 127 && nrpn_lsb != 127) { - status &= cont(channel, 6, data_msb); - status &= cont(channel, 38, data_msb); - } - - return status; -} - - -int MidiOutput::NRPN(int channel, int nrpn_msb, int nrpn_lsb, int data_msb) { - channel = channel & 0x0f; - nrpn_msb = nrpn_msb & 0x7f; - nrpn_lsb = nrpn_msb & 0x7f; - data_msb = nrpn_msb & 0x7f; - - int status = 1; - - // check to see if the nrpn_msb and nrpn_lsb are the same - // as the last call to this function, if not, then send - // the appropriate MIDI controller values. - if (rpn_msb_status[getPort()][channel] != nrpn_msb) { - status &= cont(channel, 99, nrpn_msb); - rpn_msb_status[getPort()][channel] = nrpn_msb; - } - if (rpn_lsb_status[getPort()][channel] != nrpn_lsb) { - status &= cont(channel, 98, nrpn_lsb); - rpn_lsb_status[getPort()][channel] = nrpn_lsb; - } - - // now that the NRPN state is set, send the NRPN data value, - // but do not bother sending any data if the Null RPN is in effect. - if (nrpn_msb != 127 && nrpn_lsb != 127) { - status &= cont(channel, 6, data_msb); - } - - return status; -} - - -int MidiOutput::NRPN(int channel, int nrpn_msb, int nrpn_lsb, double data) { - channel = channel & 0x0f; - nrpn_msb = nrpn_msb & 0x7f; - nrpn_lsb = nrpn_msb & 0x7f; - if (data < -1.0) { - data = -1.0; - } else if (data > 1.0) { - data = 1.0; - } - - int status = 1; - - // check to see if the nrpn_msb and nrpn_lsb are the same - // as the last call to this function, if not, then send - // the appropriate MIDI controller values. - if (rpn_msb_status[getPort()][channel] != nrpn_msb) { - status &= cont(channel, 99, nrpn_msb); - rpn_msb_status[getPort()][channel] = nrpn_msb; - } - if (rpn_lsb_status[getPort()][channel] != nrpn_lsb) { - status &= cont(channel, 98, nrpn_lsb); - rpn_lsb_status[getPort()][channel] = nrpn_lsb; - } - - // convert data into 14 bit number - int data14 = (int)((data+1.0)/2.0*16383 + 0.5); - - // send the NRPN data values, two message of 7 bits each - // but do not bother sending any data if the Null RPN is in effect. - if (nrpn_msb != 127 && nrpn_lsb != 127) { - status &= cont(channel, 6, data14 >> 7); - status &= cont(channel, 38, data14 & 0x7f); - } - - return status; -} - - -////////// -// -// Convenience functions for use of NRPN function. Note that these -// are "Non-Registered" Parameter Numbers which means that each -// synthesizer manufacture can do whatever they want, so these -// functions might not behave the way you expect them to do so. -// Yamaha XG and Roland GS NRPN specifications are given below. -// - -int MidiOutput::NRPN_null(int channel) { - return NRPN(channel, 127, 127, 0); -} - -int MidiOutput::NRPN_vibratoRate(int channel, int value) { - // value in range -64..+63 - return NRPN(channel, 1, 8, value+64); -} - -int MidiOutput::NRPN_vibratoRate(int channel, double value) { - // value in range -1.0..+1.0 - return NRPN(channel, 1, 8, value); -} - -int MidiOutput::NRPN_vibratoDepth(int channel, int value) { - // value in range -64..+63 - return NRPN(channel, 1, 9, value+64); -} - -int MidiOutput::NRPN_vibratoDepth(int channel, double value) { - // value in range -1.0..+1.0 - return NRPN(channel, 1, 9, value); -} - -int MidiOutput::NRPN_vibratoDelay(int channel, int value) { - // value in range -64..+63 - return NRPN(channel, 1, 32, value+64); -} - -int MidiOutput::NRPN_vibratoDelay(int channel, double value) { - // value in range -1.0..+1.0 - return NRPN(channel, 1, 32, value); -} - -int MidiOutput::NRPN_filterCutoff(int channel, int value) { - // value in range -64..+63 - return NRPN(channel, 1, 33, value+64); -} - -int MidiOutput::NRPN_filterCutoff(int channel, double value) { - // value in range -1.0..+1.0 - return NRPN(channel, 1, 33, value); -} - -int MidiOutput::NRPN_attack(int channel, int value) { - // value in range -64..+63 - return NRPN(channel, 1, 99, value+64); -} - -int MidiOutput::NRPN_attack(int channel, double value) { - // value in range -1.0..+1.0 - return NRPN(channel, 1, 99, value); -} - -int MidiOutput::NRPN_decay(int channel, int value) { - // value in range -64..+63 - return NRPN(channel, 1, 100, value+64); -} - -int MidiOutput::NRPN_decay(int channel, double value) { - // value in range -1.0..+1.0 - return NRPN(channel, 1, 100, value); -} - -int MidiOutput::NRPN_release(int channel, int value) { - // value in range -64..+63 - return NRPN(channel, 1, 102, value+64); -} - -int MidiOutput::NRPN_release(int channel, double value) { - // value in range -1.0..+1.0 - return NRPN(channel, 1, 102, value); -} - -int MidiOutput::NRPN_drumFilterCutoff(int drum, int value) { - // value in range -64..+63 - return NRPN(9, 20, drum, value+64); -} - -int MidiOutput::NRPN_drumFilterCutoff(int drum, double value) { - // value in range -1.0..+1.0 - return NRPN(9, 20, drum, value); -} - -int MidiOutput::NRPN_drumFilterResonance(int drum, int value) { - // value in range -64..+63 - return NRPN(9, 21, drum, value+64); -} - -int MidiOutput::NRPN_drumFilterResonance(int drum, double value) { - // value in range -1.0..+1.0 - return NRPN(9, 21, drum, value); -} - -int MidiOutput::NRPN_drumAttack(int drum, int value) { - // value in range -64..+63 - return NRPN(9, 22, drum, value+64); -} - -int MidiOutput::NRPN_drumAttack(int drum, double value) { - // value in range -1.0..+1.0 - return NRPN(9, 22, drum, value); -} - -int MidiOutput::NRPN_drumDecay(int drum, int value) { - // value in range -64..+63 - return NRPN(9, 23, drum, value+64); -} - -int MidiOutput::NRPN_drumDecay(int drum, double value) { - // value in range -1.0..+1.0 - return NRPN(9, 23, drum, value); -} - -int MidiOutput::NRPN_drumPitch(int drum, int value) { - // value in range -64..+63 - return NRPN(9, 24, drum, value+64); -} - -int MidiOutput::NRPN_drumPitch(int drum, double value) { - // value in range -1.0..+1.0 - return NRPN(9, 24, drum, value); -} - -int MidiOutput::NRPN_drumLevel(int drum, int value) { - // value in range -64..+63 - return NRPN(9, 26, drum, value+64); -} - -int MidiOutput::NRPN_drumLevel(int drum, double value) { - // value in range -1.0..+1.0 - return NRPN(9, 26, drum, value); -} - -int MidiOutput::NRPN_drumPan(int drum, int value) { - return NRPN(9, 28, drum, value+64); -} - -int MidiOutput::NRPN_drumPan(int drum, double value) { - // value in range -1.0..+1.0 - return NRPN(9, 28, drum, value); -} - -int MidiOutput::NRPN_drumReverb(int drum, int value) { - // note offset from 0 not -64 - return NRPN(9, 29, drum, value); -} - -int MidiOutput::NRPN_drumReverb(int drum, double value) { - // value in range -1.0..+1.0 - return NRPN(9, 29, drum, value); -} - -int MidiOutput::NRPN_drumChorus(int drum, int value) { - // note offset from 0 not -64 - return NRPN(9, 30, drum, value); -} - -int MidiOutput::NRPN_drumChorus(int drum, double value) { - // value in range -1.0..+1.0 - return NRPN(9, 30, drum, value); -} - -int MidiOutput::NRPN_drumVariation(int drum, int value) { - // note offset from 0 not -64 - return NRPN(9, 31, drum, value); -} - -int MidiOutput::NRPN_drumVariation(int drum, double value) { - // value in range -1.0..+1.0 - return NRPN(9, 31, drum, value); -} - -// -// Convenience functions for use of NRPN function. -// -////////// - - - -////////////////////////////// -// -// RPN -- sends a registered parameter number where: -// parameter #1: channel (0-15) -// parameter #2: RPN MSB indicator (controller #101 data) -// parameter #3: RPN LSB indicator (controller #100 data) -// parameter #4: RPN MSB data (controller #6 data) -// [parameter #5: RPN LSB data (controller #38 data)] -// or: -// parameter #1: channel (0-15) -// parameter #2: NRPN MSB indicator (controller #99 data) -// parameter #3: NRPN LSB indicator (controller #98 data) -// parameter #4: NRPN Floating point in range (-1..1) (ccont#6 and #38 data) -// -// -// RPN (registered parameter number) -- General MIDI and -// Extended MIDI mess. It becomes the receiving synthesizer's -// responsibility to determine the meaning of continuous -// controller (ccont) #6 from data sent with cconts #100,101 (for -// RPNS) and cconts #98,99 (for NRPNS). -// -// The data for RPNs are transfered to synthesizer with -// data slider ccont #6(MSB) and ccont #38(LSB). Also data increment -// ccont#96 (data increment) and ccont#97 (data decrement) are in -// relation to the RPN or NRPN in effect. Increment and Decrement -// are not recommend to use with RPN's because of confusion in the -// MIDI industry over which 7-bit data (#6 or #38) to increment. -// -// Once you have selected an RPN on a given channel, the -// channel will apply subsequent Data Entry to the -// selected parameter. After making the necessary settings -// you should set RPN's to NULL to reduce the risk of -// operational errors. a NULL RPN will disable the previous -// values of either RPN or NRPN data. -// -// The following RPN values are registered: -// CCont #100 = LSB of RPN parameter ID -// CCont #101 = MSB of RPN parameter ID -// -// RPN Data Range -// MSB LSB Parameter (ccont#6=MSB, ccont#38=LSB) -// === ===== ====================== ====================== - -// 0 0 Pitchbend Sensitivity 0-127 (default 2) (LSB ignored) -// (The number of +/- half steps in -// pitch wheel range). -// 0 1 Fine Tune -64.. 0..+63 logical range -// 0..64..127 MIDI data range -// 0 2 Coarse Tune same range as above. -// 0 3 Change Tuning Program 0..127 -// 0 4 Change Tuning Bank 0..127 -// - -int MidiOutput::RPN(int channel, int rpn_msb, int rpn_lsb, - int data_msb, int data_lsb) { - channel = channel & 0x0f; - rpn_msb = rpn_msb & 0x7f; - rpn_lsb = rpn_msb & 0x7f; - data_msb = rpn_msb & 0x7f; - data_lsb = rpn_msb & 0x7f; - - int status = 1; - - // check to see if the rpn_msb and rpn_lsb are the same - // as the last call to this function, if not, then send - // the appropriate MIDI controller values. - if (rpn_msb_status[getPort()][channel] != rpn_msb) { - status &= cont(channel, 101, rpn_msb); - rpn_msb_status[getPort()][channel] = rpn_msb; - } - if (rpn_lsb_status[getPort()][channel] != rpn_lsb) { - status &= cont(channel, 100, rpn_lsb); - rpn_lsb_status[getPort()][channel] = rpn_lsb; - } - - // now that the RPN state is set, send the RPN data values - // but do not bother sending any data if the Null RPN is in effect. - if (rpn_msb != 127 && rpn_lsb != 127) { - status &= cont(channel, 6, data_msb); - status &= cont(channel, 38, data_msb); - } - - return status; -} - - -int MidiOutput::RPN(int channel, int rpn_msb, int rpn_lsb, int data_msb) { - channel = channel & 0x0f; - rpn_msb = rpn_msb & 0x7f; - rpn_lsb = rpn_msb & 0x7f; - data_msb = rpn_msb & 0x7f; - - int status = 1; - - // check to see if the rpn_msb and rpn_lsb are the same - // as the last call to this function, if not, then send - // the appropriate MIDI controller values. - if (rpn_msb_status[getPort()][channel] != rpn_msb) { - status &= cont(channel, 101, rpn_msb); - rpn_msb_status[getPort()][channel] = rpn_msb; - } - if (rpn_lsb_status[getPort()][channel] != rpn_lsb) { - status &= cont(channel, 100, rpn_lsb); - rpn_lsb_status[getPort()][channel] = rpn_lsb; - } - - // now that the RPN state is set, send the RPN data value, - // but do not bother sending any data if the Null RPN is in effect. - if (rpn_msb != 127 && rpn_lsb != 127) { - status &= cont(channel, 6, data_msb); - } - - return status; -} - - -int MidiOutput::RPN(int channel, int rpn_msb, int rpn_lsb, double data) { - channel = channel & 0x0f; - rpn_msb = rpn_msb & 0x7f; - rpn_lsb = rpn_msb & 0x7f; - if (data < -1.0) { - data = -1.0; - } else if (data > 1.0) { - data = 1.0; - } - - int status = 1; - - // check to see if the rpn_msb and rpn_lsb are the same - // as the last call to this function, if not, then send - // the appropriate MIDI controller values. - if (rpn_msb_status[getPort()][channel] != rpn_msb) { - status &= cont(channel, 101, rpn_msb); - rpn_msb_status[getPort()][channel] = rpn_msb; - } - if (rpn_lsb_status[getPort()][channel] != rpn_lsb) { - status &= cont(channel, 100, rpn_lsb); - rpn_lsb_status[getPort()][channel] = rpn_lsb; - } - - // convert data into 14 bit number - int data14 = (int)((data+1.0)/2.0*16383 + 0.5); - - // send the RPN data values, two message of 7 bits each - // but do not bother sending any data if the Null RPN is in effect. - if (rpn_msb != 127 && rpn_lsb != 127) { - status &= cont(channel, 6, data14 >> 7); - status &= cont(channel, 38, data14 & 0x7f); - } - - return status; -} - - -////////// -// -// Convenience functions for use of RPN function. -// - -int MidiOutput::RPN_null(void) { - int status = 1; - for (int i=0; i<16; i++) { - status &= RPN_null(i); - } - return status; -} - -int MidiOutput::RPN_null(int channel) { - return RPN(channel, 127, 127, 0); -} - -int MidiOutput::pbRange(int channel, int steps) { - // default value for pitch bend sensitivity is 2 semitones. - return RPN(channel, 0, 0, steps); -} - -int MidiOutput::tuneFine(int channel, int cents) { - // data from -64 to + 63 - return RPN(channel, 0, 1, cents+64); -} - -int MidiOutput::fineTune(int channel, int cents) { - return tuneFine(channel, cents); -} - -int MidiOutput::tuneCoarse(int channel, int steps) { - // data from -64 to + 63 - return RPN(channel, 0, 1, steps+64); -} - -int MidiOutput::coarseTune(int channel, int steps) { - return tuneCoarse(channel, steps); -} - -int MidiOutput::tuningProgram(int channel, int program) { - return RPN(channel, 0, 3, program); -} - -int MidiOutput::tuningBank(int channel, int bank) { - return RPN(channel, 0, 4, bank); -} - - -/////////////////////////////////////////////////////////////////////////// -// -// private functions -// - - -////////////////////////////// -// -// MidiOutput::initializeRPN -- set up the RPN status arrays -// ignores initiaization request if already initialized. -// - -void MidiOutput::initializeRPN(void) { - int i, channel; - - if (rpn_lsb_status == NULL) { - rpn_lsb_status = new Array<int>[getNumPorts()]; - for (i=0; i<getNumPorts(); i++) { - rpn_lsb_status[i].setSize(16); - rpn_lsb_status[i].allowGrowth(0); - for (channel=0; channel<16; channel++) { - rpn_lsb_status[i][channel] = 127; - } - } - } - - if (rpn_msb_status == NULL) { - rpn_msb_status = new Array<int>[getNumPorts()]; - for (i=0; i<getNumPorts(); i++) { - rpn_msb_status[i].setSize(16); - rpn_msb_status[i].allowGrowth(0); - for (channel=0; channel<16; channel++) { - rpn_msb_status[i][channel] = 127; - } - } - } -} - - - -////////////////////////////// -// -// MidiOutput::deinitializeRPN -- destroy the RPN status arrays -// do nothing if the arrays are not initialized -// - -void MidiOutput::deinitializeRPN(void) { - if (rpn_msb_status != NULL) { - delete [] rpn_msb_status; - rpn_msb_status = NULL; - } - - if (rpn_msb_status != NULL) { - delete [] rpn_msb_status; - rpn_msb_status = NULL; - } -} - - - -////////////////////////////// -// -// MidiOutput::writeOutputAscii -// - -void MidiOutput::writeOutputAscii(int command, int p1, int p2) { - outputRecordFile << std::dec; - outputRecordFile.width(6); - outputRecordFile << (timer.getTime()-lastFlushTime) <<'\t'; - outputRecordFile << "0x" << std::hex; - outputRecordFile.width(2); - outputRecordFile << command << ' '; - outputRecordFile << std::dec; - outputRecordFile.width(3); - outputRecordFile << p1 << ' '; - outputRecordFile << std::dec; - outputRecordFile.width(3); - outputRecordFile<< p2; - outputRecordFile << std::endl; -} - - - -////////////////////////////// -// -// MidiOutput::writeOutputBinary -// - -void MidiOutput::writeOutputBinary(int command, int p1, int p2) { - // don't store 0xf8 command since it will be used to mark the end of the - if (command == 0xf8) return; - - // write the delta time (four bytes) - outputRecordFile.writeBigEndian((ulong)(timer.getTime() - lastFlushTime)); - - // write midi data - // don't store 0xf8 command since it will be used to mark the end of the - // delta time data. - outputRecordFile << (uchar)p1; - outputRecordFile << (uchar)p2; - outputRecordFile << (uchar)0xf8; -} - - - -////////////////////////////// -// -// MidiOutput::writeOutputMidifile -// - -void MidiOutput::writeOutputMidifile(int command, int p1, int p2) { - // not yet implemented -} - - - -// md5sum: 1c518e5130ac9ba0d79c4e9ce7fa41cf - MidiOutput.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/src/MidiPort.cpp b/extensions/gripd/src/midiio/src/MidiPort.cpp deleted file mode 100644 index 1a03dac7f46b723c137f7a453b83237206bdec22..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/src/MidiPort.cpp +++ /dev/null @@ -1,189 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: 21 December 1997 -// Last Modified: Fri Jan 23 10:24:35 GMT-0800 1998 -// Filename: .../sig/code/control/MidiPort/MidiPort.cpp -// Web Address: http://www-ccrma.stanford.edu/~craig/improv/src/MidiPort.cpp -// Syntax: C++ -// -// Description: A unified object that handles basic MIDI input and output. -// Derived from the MidiInPort and MidiOutPort classes. -// - -#include "MidiPort.h" - - -////////////////////////////// -// -// MidiPort::MidiPort -// - -MidiPort::MidiPort(void) : MidiOutPort(), MidiInPort() { - // nothing -} - - -MidiPort::MidiPort(int outputPort, int inputPort) : - MidiOutPort(outputPort), MidiInPort(inputPort) { - // nothing -} - - - -////////////////////////////// -// -// MidiPort::~MidiPort -// - -MidiPort::~MidiPort() { - // nothing -} - - - -////////////////////////////// -// -// MidiPort::getChannelInOffset -- return the MIDI channel offset of -// the MIDI input. -// - -int MidiPort::getChannelInOffset(void) const { - return MidiInPort::getChannelOffset(); -} - - - -////////////////////////////// -// -// MidiPort::getChannelOutOffset -- return the MIDI channel offset of -// the MIDI output. -// - -int MidiPort::getChannelOutOffset (void) const { - return MidiOutPort::getChannelOffset(); -} - - - -////////////////////////////// -// -// MidiPort::getInputPort -// - -int MidiPort::getInputPort(void) { - return MidiInPort::getPort(); -} - - - -////////////////////////////// -// -// MidiPort::getInputTrace -// - -int MidiPort::getInputTrace(void) { - return MidiInPort::getTrace(); -} - - - -////////////////////////////// -// -// MidiPort::getOutputPort -// - -int MidiPort::getOutputPort(void) { - return MidiOutPort::getPort(); -} - - - -////////////////////////////// -// -// MidiPort::getOutputTrace -// - -int MidiPort::getOutputTrace(void) { - return MidiOutPort::getTrace(); -} - - - -////////////////////////////// -// -// MidiPort::setChannelOffset -- sets the MIDI channel offset -// - -void MidiPort::setChannelOffset(int anOffset) { - MidiInPort::setChannelOffset(anOffset); - MidiOutPort::setChannelOffset(anOffset); -} - - - -////////////////////////////// -// -// MidiPort::setInputPort -// - -void MidiPort::setInputPort(int aPort) { - MidiInPort::setPort(aPort); -} - - - -////////////////////////////// -// -// MidiPort::setInputTrace -// - -int MidiPort::setInputTrace(int aState) { - return MidiInPort::setTrace(aState); -} - - - -////////////////////////////// -// -// MidiPort::setOutputPort -// - -void MidiPort::setOutputPort(int aPort) { - MidiOutPort::setPort(aPort); -} - - - -////////////////////////////// -// -// MidiPort::setOutputTrace -// - -int MidiPort::setOutputTrace(int aState) { - return MidiOutPort::setTrace(aState); -} - - - -////////////////////////////// -// -// MidiPort::toggleInputTrace -// - -void MidiPort::toggleInputTrace(void) { - MidiInPort::toggleTrace(); -} - - -////////////////////////////// -// -// MidiPort::toggleOutputTrace -// - -void MidiPort::toggleOutputTrace(void) { - MidiOutPort::toggleTrace(); -} - - - -// md5sum: c2583f3ed21e238ba6b298915cb728aa - MidiPort.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/src/Options.cpp b/extensions/gripd/src/midiio/src/Options.cpp deleted file mode 100644 index 0341fe392994d91daa28b39a9ddb177834abd19e..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/src/Options.cpp +++ /dev/null @@ -1,887 +0,0 @@ -// -// Copyright 1998-2000 by Craig Stuart Sapp, All Rights Reserved. -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Sun Apr 5 13:07:18 PDT 1998 -// Last Modified: Sat Mar 27 18:17:06 PST 1999 -// Last Modified: Thu Apr 13 14:02:52 PDT 2000 (added 2nd define function) -// Last Modified: Fri May 5 17:52:01 PDT 2000 (added --options suppression) -// Last Modified: Tue May 1 01:25:58 PDT 2001 (fixed getArgumentCount()) -// Filename: ...sig/maint/code/sigBase/Options.cpp -// Web Address: http://sig.sapp.org/src/sigBase/Options.cpp -// Documentation: http://sig.sapp.org/doc/classes/Options -// Syntax: C++ -// -// Description: Handles command-line options in a graceful manner. -// - -int optionListCompare(const void* a, const void* b); - -#include "Options.h" -#include "Options_private.h" -#include <stdlib.h> -#include <string.h> -#include <ctype.h> -#include <iostream> - - -////////////////////////////// -// -// Options::Options -- -// - -Options::Options(void) { - optionFlag = '-'; - gargc = -1; - gargv = NULL; - argument.setSize(0); - argument.allowGrowth(); - optionRegister.setSize(0); - optionRegister.allowGrowth(); - optionList.setSize(0); - optionList.allowGrowth(); - processedQ = 0; - sortedQ = 0; - commandString = NULL; - options_error_check = 1; - suppressQ = 0; - optionsArgument = 0; -} - - -Options::Options(int argc, char** argv) { - optionFlag = '-'; - gargc = -1; - gargv = NULL; - argument.setSize(0); - argument.allowGrowth(); - optionRegister.setSize(0); - optionRegister.allowGrowth(); - optionList.setSize(0); - optionList.allowGrowth(); - processedQ = 0; - sortedQ = 0; - commandString = NULL; - options_error_check = 1; - suppressQ = 0; - optionsArgument = 0; - - setOptions(argc, argv); -} - - - -////////////////////////////// -// -// Options::~Options -- -// - -Options::~Options() { - reset(); -} - - - -////////////////////////////// -// -// Options::argc -- returns the argument count as from main(). -// - -int Options::argc(void) const { - return gargc; -} - - - -////////////////////////////// -// -// Options::argv -- returns the arguments strings as from main(). -// - -char** Options::argv(void) const { - return gargv; -} - - - -////////////////////////////// -// -// Options::define -- define an option entry in the option register -// - -void Options::define(const char* aDefinition) { - sortedQ = 0; // have to sort option list later - option_register* definitionEntry; - option_list* optionListEntry; - - - // error if the definition string doesn't contain an equals sign. - if (strchr(aDefinition, '=') == NULL) { - std::cout << "Error: no \"=\" in option definition: " << aDefinition << std::endl; - exit(1); - } - - // get the length of the definition string - int len = strlen(aDefinition); - - // put space before and after the equals sign so that strtok works - char* definitionString; - definitionString = new char[len + 3]; - int i = 0; - while (aDefinition[i] != '=' && i < len) { - definitionString[i] = aDefinition[i]; - i++; - } - definitionString[i] = ' '; - i++; - definitionString[i] = '='; - i++; - definitionString[i] = ' '; - for (int k=i; k<len+2; k++) { - definitionString[k+1] = aDefinition[k-1]; - } - len += 2; - - // determine the registry index for the definition - int definitionIndex = optionRegister.getSize(); - - - // set up space for a definition entry - definitionEntry = new option_register(aDefinition, OPTION_UNKNOWN_TYPE, - "", NULL); - - - char *tempstr; // temporary storage for strtok use on defaultString - tempstr = new char[len + 1]; - strncpy(tempstr, definitionString, len); - - char *optionName; // option name to add to list - - // get the first option name - optionName = strtok(tempstr, " \t\n|"); - if (optionName[0] == '=') { - std::cout << "Error: must specify an option name in definition: " - << aDefinition << std::endl; - exit(1); - } - // store an entry for each option name alias - const char* tempsearch; - while (optionName != NULL && optionName[0] != '=') { - tempsearch = getDefinition(optionName); - if (tempsearch != NULL) { - std::cerr << "option name \"" << optionName - << "\" from definition: " << aDefinition << std::endl; - std::cerr << "is already defined in definition: " - << tempsearch << std::endl; - exit(1); - } - optionListEntry = new option_list(optionName, definitionIndex); - optionList.append(optionListEntry); - optionName = strtok(NULL, " \t\n|"); - } - if (optionName == NULL) { - std::cout << "Error: unknown error in definition: " << aDefinition << std::endl; - exit(1); - } - - // now process the option type and any default value. - i = 0; - - // find the equals sign - while (definitionString[i] != '=' && i < len) { - i++; - } - i++; - // skip over any white space - while (isspace(definitionString[i]) && i < len) { - i++; - } - - // this character must be the option type - char optionType = (char)tolower(definitionString[i]); - definitionEntry->setType(optionType); - i++; - - - // check to make sure that the type is correct. - if (optionType != OPTION_STRING_TYPE && - optionType != OPTION_INT_TYPE && - optionType != OPTION_FLOAT_TYPE && - optionType != OPTION_DOUBLE_TYPE && - optionType != OPTION_BOOLEAN_TYPE && - optionType != OPTION_CHAR_TYPE ) { - std::cout << "Error: unknown option type \'" << optionType - << "\' in defintion: " << aDefinition << std::endl; - exit(1); - } - - // skip any white space after option type. - while (isspace(definitionString[i]) && i < len) { - i++; - } - - - // there can only be two characters now: '\0' or ':' - if (i >= len || definitionString[i] == '\0') { - goto option_finish; - } else if (i<len && definitionString[i] == ':') { - i++; - } else { - std::cout << "Unknown error in definition: " << aDefinition << std::endl; - exit(1); - } - - - // now proces the default string. store it in a temp storage for copying - - // skip any white space after option type. - while (i < len && isspace(definitionString[i])) { - i++; - } - if (i >= len || definitionString[i] == '\0') { - goto option_finish; - } - - - // now at beginnng of default option string which continues - // until the end of the definition string. - definitionEntry->setDefault(&definitionString[i]); - -option_finish: - - optionRegister.append(definitionEntry); - - - delete [] definitionString; - delete [] tempstr; - -} - - -void Options::define(const char* aDefinition, const char* description) { - define(aDefinition); - - // now find some place to store the description... -} - - - -////////////////////////////// -// -// Options::getArg -- returns the specified argument. -// argurment 0 is the command name. -// - -char* Options::getArg(int index) { - if (index < 0 || index >= argument.getSize()) { - std::cout << "Error: argument " << index << " does not exist." << std::endl; - exit(1); - } - return argument[index]; -} - - - -////////////////////////////// -// -// Options::getArgument -- same as getArg -// - -char* Options::getArgument(int index) { - return getArg(index); -} - - - -////////////////////////////// -// -// Options::getArgCount -- number of arguments on command line. -// does not count the options or the command name. -// - -int Options::getArgCount(void) { - return argument.getSize() - 1; -} - - - -////////////////////////////// -// -// Options::getArgumentCount -- Same as getArgCount(). -// - -int Options::getArgumentCount(void) { - return getArgCount(); -} - - - -////////////////////////////// -// -// Options::getBoolean -- returns true if the option was -// used on the command line. -// - -int Options::getBoolean(const char* optionName) { - int index = getRegIndex(optionName); - if (index < 0) { - return 0; - } - if (optionRegister[index]->getModifiedQ() == 1) { - return 1; - } else { - return 0; - } -} - - - -////////////////////////////// -// -// Options::getCommand -- returns argv[0] -// - -const char* Options::getCommand(void) { - if (argument.getSize() == 0) { - return ""; - } else { - return argument[0]; - } -} - - - -////////////////////////////// -// -// Options::getCommandLine -- returns a string which contains the -// command-line call to the program. -// - -const char* Options::getCommandLine(void) { - if (commandString != NULL) { - return commandString; - } - - int length = 0; - int i; - for (i=0; i<gargc; i++) { - length += strlen(gargv[i]) + 1; - } - length--; // remove the last space - commandString = new char[length + 1]; - strcpy(commandString, gargv[0]); - for (i=1; i<gargc; i++) { - strcat(commandString, " "); - strcat(commandString, gargv[i]); - } - - return commandString; -} - - - - -////////////////////////////// -// -// Options::getDefinition -- returns the definition -// for the specified option name. Returns NULL -// if there is no entry for the option name. -// It is assumed that the option list is unsorted. -// spaces count in the input option name. -// - -const char* Options::getDefinition(const char* optionName) { - int i; - for (i=0; i<optionList.getSize(); i++) { - if (strcmp(optionName, optionList[i]->getName()) == 0) { - return optionRegister[optionList[i]->getIndex()]->getDefinition(); - } - } - return (const char*)NULL; -} - - - -////////////////////////////// -// -// Options::getDouble -- returns the double float associated -// with the given option. Returns 0 if there is no -// number associated with the option. -// - -double Options::getDouble(const char* optionName) { - return strtod(getString(optionName), (char**)NULL); -} - - - -////////////////////////////// -// -// Options::getFlag -- -// - -char Options::getFlag(void) { - return optionFlag; -} - - - -////////////////////////////// -// -// Options::getFloat -- returns the floating point number -// associated with the given option. -// - -float Options::getFloat(const char* optionName) { - return (float)getDouble(optionName); -} - - - -////////////////////////////// -// -// Options::getInt -- returns the integer argument. Can handle -// hexadecimal, decimal, and octal written in standard -// C syntax. -// - -int Options::getInt(const char* optionName) { - return (int)strtol(getString(optionName), (char**)NULL, 0); -} - -int Options::getInteger(const char* optionName) { - return getInt(optionName); -} - - - -////////////////////////////// -// -// Options::getString -- -// - -const char* Options::getString(const char* optionName) { - int index = getRegIndex(optionName); - if (index < 0) { - return "UNKNOWN OPTION"; - } else { - return optionRegister[index]->getOption(); - } -} - - - -////////////////////////////// -// -// Options::optionsArg -- returns true if the --options is present -// on the command line, otherwise returns false. -// - -int Options::optionsArg(void) { - return optionsArgument; -} - - - -////////////////////////////// -// -// Options::print -- -// - -void Options::print(void) { - for (int i=0; i<optionRegister.getSize(); i++) { - std::cout << optionRegister[i]->getDefinition() << std::endl; - } -} - - - -////////////////////////////// -// -// Options::reset -- -// - -void Options::reset(void) { - int i; - for (i=0; i<optionRegister.getSize(); i++) { - delete optionRegister[i]; - } - optionRegister.setSize(0); - for (i=0; i<optionList.getSize(); i++) { - delete optionList[i]; - } - optionList.setSize(0); - for (i=0; i<argument.getSize(); i++) { - delete [] argument[i]; - } - argument.setSize(0); - - if (commandString != NULL) { - delete [] commandString; - } -} - - - -////////////////////////////// -// -// Options::setFlag -- set the character used to indicate an -// option. For unix this is usually '-', in MS-DOS, -// this is usually '/'; But the syntax of the Options -// class is for Unix-style options. -// - -void Options::setFlag(char aFlag) { - optionFlag = aFlag; -} - - - - -////////////////////////////// -// -// setModified -- -// - -void Options::setModified(const char* optionName, const char* aString) { - int index = getRegIndex(optionName); - if (index < 0) { - return; - } - - optionRegister[getRegIndex(optionName)]->setModified(aString); -} - - - - -////////////////////////////// -// -// setOptions -- -// - -void Options::setOptions(int argc, char** argv) { - processedQ = 0; - - gargc = argc; - gargv = argv; -} - - - -////////////////////////////// -// -// Options:getType -- returns the type of the option -// - -char Options::getType(const char* optionName) { - int index = getRegIndex(optionName); - if (index < 0) { - return -1; - } else { - return optionRegister[getRegIndex(optionName)]->getType(); - } -} - - - -////////////////////////////// -// -// Options::process -- same as verify -// default values: error_check = 1, suppress = 0; -// - -void Options::process(int argc, char** argv, int error_check, int suppress) { - setOptions(argc, argv); - verify(error_check, suppress); -} - - -void Options::process(int error_check, int suppress) { - verify(error_check, suppress); -} - - - -////////////////////////////// -// -// Options::verify -- -// default value: error_check = 1, suppress = 0; -// - -void Options::verify(int error_check, int suppress) { - options_error_check = error_check; - int gargp = 1; - int optionend = 0; - - if (suppress) { - suppressQ = 1; - } else { - suppressQ = 0; - } - - // if calling verify again, must remove previous argument list. - if (argument.getSize() != 0) { - for (int j=0; j<argument.getSize(); j++) { - delete argument[j]; - } - argument.setSize(0); - } - - char* tempargument; - tempargument = new char[strlen(gargv[0])+1]; - strcpy(tempargument, gargv[0]); - argument.append(tempargument); - - int oldgargp; - int position = 0; - int running = 0; - while (gargp < gargc && optionend == 0) { - if (optionQ(gargv[gargp], gargp)) { - oldgargp = gargp; - gargp = storeOption(gargp, position, running); - if (gargp != oldgargp) { - running = 0; - position = 0; - } - } else { - if ( strlen(gargv[gargp]) == 2 && gargv[gargp][0] == getFlag() && - gargv[gargp][2] == getFlag() ) { - optionend = 1; - gargp++; - break; - } else { // this is an argument - tempargument = new char[strlen(gargv[gargp])+1]; - strcpy(tempargument, gargv[gargp]); - argument.append(tempargument); - gargp++; - } - } - } - - while (gargp < gargc) { - tempargument = new char[strlen(gargv[gargp])+1]; - strcpy(tempargument, gargv[gargp]); - argument.append(tempargument); - gargp++; - } - -} - - -void Options::verify(int argc, char** argv, int error_check, int suppress) { - setOptions(argc, argv); - verify(error_check, suppress); -} - - - - -/////////////////////////////////////////////////////////////////////////// -// -// private functions -// - - -////////////////////////////// -// -// getRegIndex -- returns the index of the option associated -// with this name. -// - -int Options::getRegIndex(const char* optionName) { - if (suppressQ && strcmp("options", optionName) == 0) { - return -1; - } - - if (sortedQ == 0) { - sortOptionNames(); - } - option_list key(optionName, -1); - option_list* keyp = &key; - void* searchresult; - searchresult = bsearch(&keyp, optionList.getBase(), - optionList.getSize(), sizeof(option_list*), optionListCompare); - if (searchresult != NULL) { - return (*((option_list**)searchresult))->getIndex(); - } else if (strcmp("options", optionName) == 0) { - print(); - exit(1); - } - - if (options_error_check) { - std::cout << "Error: unknown option \"" << optionName << "\"." << std::endl; - print(); - exit(1); - } - - return -1; -} - - - -////////////////////////////// -// -// optionQ -- returns true if the string is an option -// "--" is not an option, also '-' is not an option. -// aString is assumed to not be NULL. -// - -int Options::optionQ(const char* aString, int& argp) { - if (aString[0] == getFlag()) { - if (aString[1] == '\0') { - argp++; - return 0; - } else if (aString[1] == getFlag()) { - if (aString[2] == '\0') { - argp++; - return 0; - } else { - return 1; - } - } else { - return 1; - } - } else { - return 0; - } -} - - - - -////////////////////////////// -// -// sortOptionNames -- -// - -void Options::sortOptionNames(void) { - qsort(optionList.getBase(), optionList.getSize(), - sizeof(option_list*), optionListCompare); - sortedQ = 1; -} - - - -////////////////////////////// -// -// storeOption -- -// - -#define OPTION_FORM_SHORT 0 -#define OPTION_FORM_LONG 1 -#define OPTION_FORM_CONTINUE 2 - -int Options::storeOption(int gargp, int& position, int& running) { - int optionForm; - char tempname[1024]; - char optionType = '\0'; - - if (running) { - optionForm = OPTION_FORM_CONTINUE; - } else if (gargv[gargp][1] == getFlag()) { - optionForm = OPTION_FORM_LONG; - } else { - optionForm = OPTION_FORM_SHORT; - } - - switch (optionForm) { - case OPTION_FORM_CONTINUE: - position++; - tempname[0] = gargv[gargp][position]; - tempname[1] = '\0'; - optionType = getType(tempname); - if (optionType != OPTION_BOOLEAN_TYPE) { - running = 0; - position++; - } - break; - case OPTION_FORM_SHORT: - position = 1; - tempname[0] = gargv[gargp][position]; - tempname[1] = '\0'; - optionType = getType(tempname); - if (optionType != OPTION_BOOLEAN_TYPE) { - position++; - } - break; - case OPTION_FORM_LONG: - position = 2; - while (gargv[gargp][position] != '=' && - gargv[gargp][position] != '\0') { - tempname[position-2] = gargv[gargp][position]; - position++; - } - tempname[position-2] = '\0'; - optionType = getType(tempname); - if (optionType == -1) { // suppressed --options option - optionsArgument = 1; - break; - } - if (gargv[gargp][position] == '=') { - if (optionType == OPTION_BOOLEAN_TYPE) { - std::cout << "Error: boolean variable cannot have any options: " - << tempname << std::endl; - exit(1); - } - position++; - } - break; - } - - if (optionType == -1) { // suppressed --options option - optionsArgument = 1; - gargp++; - position = 0; - return gargp; - } - - if (gargv[gargp][position] == '\0' && - optionType != OPTION_BOOLEAN_TYPE) { - gargp++; - position = 0; - } - - if (optionForm != OPTION_FORM_LONG && optionType == OPTION_BOOLEAN_TYPE && - gargv[gargp][position+1] != '\0') { - running = 1; - } else if (optionType == OPTION_BOOLEAN_TYPE && - gargv[gargp][position+1] == '\0') { - running = 0; - } - - if (gargp >= gargc) { - std::cout << "Error: last option requires a parameter" << std::endl; - exit(1); - } - setModified(tempname, &gargv[gargp][position]); - - if (!running) { - gargp++; - } - return gargp; -} - - -/////////////////////////////////////////////////////////////////////////// -// -// helping function -// - -////////////////////////////// -// -// optionListCompare -- for sorting the option list -// - -int optionListCompare(const void* a, const void* b) { -//cerr << " comparing: " << (*((option_list**)a))->getName() -// << " i=" << (*((option_list**)a))->getIndex() -// << " :to: " -// << (*((option_list**)b))->getName() -// << " i=" << (*((option_list**)b))->getIndex() << std::endl; - return strcmp((*((option_list**)a))->getName(), - (*((option_list**)b))->getName()); -} - - - -// md5sum: 63584ffabc92170fdb9ef5caedb5a3f6 - Options.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/src/Options_private.cpp b/extensions/gripd/src/midiio/src/Options_private.cpp deleted file mode 100644 index 5a875a8bf86c025bd36782c7e80978ade6de55ff..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/src/Options_private.cpp +++ /dev/null @@ -1,358 +0,0 @@ -// -// Copyright 1998-1999 by Craig Stuart Sapp, All Rights Reserved. -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Sun Apr 5 13:07:18 PDT 1998 -// Last Modified: Sun Jan 10 05:43:24 PST 1999 -// Filename: ...sig/maint/code/sigBase/Options_private.cpp -// Web Address: http://sig.sapp.org/src/sigBase/Options_private.cpp -// Syntax: C++ -// -// Description: A private set of functions for use in the Options class. -// - -#include "Options_private.h" -#include <iostream> -#include <stdlib.h> -#include <string.h> - - -////////////////////////////// -// -// option_register::option_register -- -// - -option_register::option_register(void) { - definition = NULL; - defaultOption = NULL; - modifiedOption = NULL; - type = 's'; -} - - -option_register::option_register(const char* aDefinition, char aType, - const char* aDefaultOption, const char* aModifiedOption) { - definition = NULL; - defaultOption = NULL; - modifiedOption = NULL; - - setType(aType); - setDefinition(aDefinition); - setDefault(aDefaultOption); - setModified(aModifiedOption); -} - - - -////////////////////////////// -// -// option_register::~option_register -- -// - -option_register::~option_register() { - if (definition != NULL) { - delete [] definition; - } - definition = NULL; - - if (defaultOption != NULL) { - delete [] defaultOption; - } - defaultOption = NULL; - - if (modifiedOption != NULL) { - delete [] modifiedOption; - } - modifiedOption = NULL; -} - - - -////////////////////////////// -// -// option_register::clearModified -- sets the modified string to -// NULL. -// - -void option_register::clearModified(void) { - if (modifiedOption != NULL) { - delete [] modifiedOption; - } - modifiedOption = NULL; -} - - - -////////////////////////////// -// -// option_register::getDefinition -- returns the initial definition -// string used to define this entry. -// - -const char* option_register::getDefinition(void) { - return definition; -} - - - -////////////////////////////// -// -// option_register::getDefault -- returns the default string -// to be returned. Will never return a NULL; -// - -const char* option_register::getDefault(void) { - return defaultOption; -} - - - -////////////////////////////// -// -// option_register::getModified -- return the modified -// option string -// - -const char* option_register::getModified(void) { - return modifiedOption; -} - - - -////////////////////////////// -// -// option_register::getModifiedQ -- returns true if -// modified string is not null, false otherwise. -// - -int option_register::getModifiedQ(void) { - if (modifiedOption == NULL) { - return 0; - } else { - return 1; - } -} - - - -////////////////////////////// -// -// option_register::getType -- -// - -char option_register::getType(void) { - return type; -} - - - -////////////////////////////// -// -// option_register::getOption -- return the modified option -// or the default option if no modified option. -// - -const char* option_register::getOption(void) { - if (getModifiedQ()) { - return getModified(); - } else { - return getDefault(); - } -} - - - -////////////////////////////// -// -// option_register::reset -- deallocate space for all -// strings in object. (but default string is set to "") -// - -void option_register::reset(void) { - if (definition != NULL) { - delete [] definition; - } - definition = NULL; - - if (defaultOption != NULL) { - delete [] defaultOption; - } - defaultOption = NULL; - defaultOption = new char[1]; - defaultOption[0] = '\0'; - - if (modifiedOption != NULL) { - delete [] modifiedOption; - } - modifiedOption = NULL; -} - - - -////////////////////////////// -// -// option_register::setDefault -- -// - -void option_register::setDefault(const char* aString) { - if (aString == NULL) { - std::cout << "Error: default string cannot be null" << std::endl; - exit(1); - } - - if (defaultOption != NULL) { - delete [] defaultOption; - } - if (aString == NULL) { - defaultOption = NULL; - } else { - defaultOption = new char[strlen(aString) + 1]; - strcpy(defaultOption, aString); - } -} - - - -////////////////////////////// -// -// option_register::setDefinition -- -// - -void option_register::setDefinition(const char* aString) { - - if (definition != NULL) { - delete [] definition; - } - if (aString == NULL) { - definition = NULL; - } else { - definition = new char[strlen(aString) + 1]; - strcpy(definition, aString); - } - -} - - - -////////////////////////////// -// -// option_register::setModified -- -// - -void option_register::setModified(const char* aString) { - if (modifiedOption != NULL) { - delete [] modifiedOption; - } - if (aString == NULL) { - modifiedOption = NULL; - } else { - modifiedOption = new char[strlen(aString) + 1]; - strcpy(modifiedOption, aString); - } -} - - - -////////////////////////////// -// -// option_register::setType -- -// - -void option_register::setType(char aType) { - type = aType; -} - - - -///////////////////////////////////////////////////////////////////////////// -/// option_list class definitions /////////////////////////////////////////// -///////////////////////////////////////////////////////////////////////////// - - -////////////////////////////// -// -// option_list::option_list -- -// - -option_list::option_list(void) { - name = NULL; - index = -1; -} - - - -////////////////////////////// -// -// option_list::option_list -- -// - -option_list::option_list(const char* optionName, int anIndex) { - name = NULL; - setIndex(anIndex); - setName(optionName); -} - - - -////////////////////////////// -// -// option_list::~option_list -- -// - -option_list::~option_list() { - if (name != NULL) { - delete [] name; - } - name = NULL; -} - - - -////////////////////////////// -// -// option_list::getIndex -- -// - -int option_list::getIndex(void) { - return index; -} - - - -////////////////////////////// -// -// option_list::getName -- -// - -const char* option_list::getName(void) { - return name; -} - - - -////////////////////////////// -// -// option_list::setName -- -// - -void option_list::setName(const char* aString) { - if (name != NULL) { - delete [] name; - } - name = new char[strlen(aString) + 1]; - strcpy(name, aString); -} - - - -////////////////////////////// -// -// option_list::setIndex -- -// - -void option_list::setIndex(int anIndex) { - index = anIndex; -} - - - -// md5sum: be3cc8ad0380820a9ea96739dc989657 - Options_private.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/src/Sequencer_alsa.cpp b/extensions/gripd/src/midiio/src/Sequencer_alsa.cpp deleted file mode 100644 index 4c80e22d05e13b426be5414b22d3da0dfa5078f0..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/src/Sequencer_alsa.cpp +++ /dev/null @@ -1,643 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Thu May 11 21:10:02 PDT 2000 -// Last Modified: Sat Oct 13 14:51:43 PDT 2001 (updated for ALSA 0.9 interface) -// Filename: ...sig/maint/code/control/Sequencer_alsa.cpp -// Web Address: http://sig.sapp.org/src/sig/Sequencer_alsa.cpp -// Syntax: C++ -// -// Description: Basic MIDI input/output functionality for the -// Linux ALSA raw midi devices. This class -// is inherited by the classes MidiInPort_alsa and -// MidiOutPort_alsa. -// - -#if defined(LINUX) && defined(ALSA) - -#include "Collection.h" -#include <alsa/asoundlib.h> -#include <unistd.h> -#include <sys/ioctl.h> -#include <fcntl.h> -#include <string.h> -#include <iostream> -#include <stdio.h> -#include <dirent.h> /* for reading filename for MIDI info */ -#include "Sequencer_alsa.h" - -typedef unsigned char uchar; - -// define static variables: -int Sequencer_alsa::class_count = 0; -int Sequencer_alsa::initialized = 0; - -// static variables for MIDI I/O information database -int Sequencer_alsa::indevcount = 0; -int Sequencer_alsa::outdevcount = 0; - -Collection<snd_rawmidi_t*> Sequencer_alsa::rawmidi_in; -Collection<snd_rawmidi_t*> Sequencer_alsa::rawmidi_out; -Collection<int> Sequencer_alsa::midiincard; -Collection<int> Sequencer_alsa::midioutcard; -Collection<int> Sequencer_alsa::midiindevice; -Collection<int> Sequencer_alsa::midioutdevice; -Collection<char*> Sequencer_alsa::midiinname; -Collection<char*> Sequencer_alsa::midioutname; - - - -/////////////////////////////// -// -// Sequencer_alsa::Sequencer_alsa -- -// default value: autoOpen = 1; -// - -Sequencer_alsa::Sequencer_alsa(int autoOpen) { - if (class_count < 0) { - std::cerr << "Unusual class instantiation count: " << class_count << std::endl; - exit(1); - } else if (class_count == 0) { - buildInfoDatabase(); - } - - // will not autoOpen - - class_count++; -} - - - -////////////////////////////// -// -// Sequencer_alsa::~Sequencer_alsa -- -// - -Sequencer_alsa::~Sequencer_alsa() { - - if (class_count == 1) { - close(); - removeInfoDatabase(); - } else if (class_count <= 0) { - std::cerr << "Unusual class instantiation count: " << class_count << std::endl; - exit(1); - } - - class_count--; -} - - - -////////////////////////////// -// -// Sequencer_alsa::close -- close the sequencer device. The device -// automatically closes once the program ends. -// - -void Sequencer_alsa::close(void) { - int i; - - for (i=0; i<getNumInputs(); i++) { - if (rawmidi_in[i] != NULL) { - snd_rawmidi_close(rawmidi_in[i]); - rawmidi_in[i] = NULL; - } - } - - for (i=0; i<getNumOutputs(); i++) { - if (rawmidi_out[i] != NULL) { - snd_rawmidi_close(rawmidi_out[i]); - rawmidi_out[i] = NULL; - } - } - -} - - -void Sequencer_alsa::closeInput(int index) { - if (index < 0 || index >= rawmidi_in.getSize()) { - return; - } - - if (rawmidi_in[index] != NULL) { - snd_rawmidi_close(rawmidi_in[index]); - rawmidi_in[index] = NULL; - } -} - - -void Sequencer_alsa::closeOutput(int index) { - if (index < 0 || index >= rawmidi_out.getSize()) { - return; - } - - if (rawmidi_out[index] != NULL) { - snd_rawmidi_close(rawmidi_out[index]); - rawmidi_out[index] = NULL; - } -} - - - -////////////////////////////// -// -// Sequencer_alsa::displayInputs -- display a list of the -// available MIDI input devices. -// default values: out = std::cout, initial = "\t" -// - -void Sequencer_alsa::displayInputs(std::ostream& out, char* initial) { - for (int i=0; i<getNumInputs(); i++) { - out << initial << i << ": " << getInputName(i) << '\n'; - } -} - - - -////////////////////////////// -// -// Sequencer_alsa::displayOutputs -- display a list of the -// available MIDI output devices. -// default values: out = std::cout, initial = "\t" -// - -void Sequencer_alsa::displayOutputs(std::ostream& out, char* initial) { - for (int i=0; i<getNumOutputs(); i++) { - out << initial << i << ": " << getOutputName(i) << '\n'; - } -} - - - -////////////////////////////// -// -// Sequencer_alsa::getInputName -- returns a string to the name of -// the specified input device. The string will remain valid as -// long as there are any sequencer devices in existence. -// - -const char* Sequencer_alsa::getInputName(int aDevice) { - if (initialized == 0) { - buildInfoDatabase(); - } - return midiinname[aDevice]; -} - - - -////////////////////////////// -// -// Sequencer_alsa::getNumInputs -- returns the total number of -// MIDI inputs that can be used. -// - -int Sequencer_alsa::getNumInputs(void) { - if (initialized == 0) { - buildInfoDatabase(); - } - return indevcount; -} - - - -////////////////////////////// -// -// Sequencer_alsa::getNumOutputs -- returns the total number of -// MIDI inputs that can be used. -// - -int Sequencer_alsa::getNumOutputs(void) { - if (initialized == 0) { - buildInfoDatabase(); - } - return outdevcount; -} - - - -////////////////////////////// -// -// Sequencer_alsa::getOutputName -- returns a string to the name of -// the specified output device. The string will remain valid as -// long as there are any sequencer devices in existence. -// - -const char* Sequencer_alsa::getOutputName(int aDevice) { - if (initialized == 0) { - buildInfoDatabase(); - } - return midioutname[aDevice]; -} - - - -////////////////////////////// -// -// Sequencer_alsa::is_open -- returns true if the -// sequencer device is open, false otherwise. -// - -int Sequencer_alsa::is_open(int mode, int index) { - if (mode == 0) { - // midi output - if (rawmidi_out[index] != NULL) { - return 1; - } else { - return 0; - } - } else { - if (rawmidi_in[index] != NULL) { - return 1; - } else { - return 0; - } - } -} - - -int Sequencer_alsa::is_open_in(int index) { - return is_open(1, index); -} - - -int Sequencer_alsa::is_open_out(int index) { - return is_open(0, index); -} - - - -///////////////////////////// -// -// Sequencer_alsa::open -- returns true if the device -// was successfully opended (or already opened) -// - -int Sequencer_alsa::open(int direction, int index) { - if (direction == 0) { - return openOutput(index); - } else { - return openInput(index); - } -} - - -int Sequencer_alsa::openInput(int index) { - if (rawmidi_in[index] != NULL) { - return 1; - } - int status; - char devname[128] = {0}; - sprintf(devname, "hw:%d,%d", midiincard[index], midiindevice[index]); - status = snd_rawmidi_open(&rawmidi_in[index], NULL, devname, 0); - if (status == 0) { - return 1; - } else { - return 0; - } -} - - -int Sequencer_alsa::openOutput(int index) { - if (rawmidi_out[index] != NULL) { - return 1; - } - int status; - char devname[128] = {0}; - sprintf(devname, "hw:%d,%d", midioutcard[index], midioutdevice[index]); - status = snd_rawmidi_open(NULL, &rawmidi_out[index], devname, 0); - if (status == 0) { - return 1; - } else { - return 0; - } -} - - - -////////////////////////////// -// -// Sequencer_alsa::read -- reads MIDI bytes and also stores the -// device from which the byte was read from. Timing is not -// saved from the device. If needed, then it would have to -// be saved in this function, or just return the raw packet -// data (use rawread function). -// - -void Sequencer_alsa::read(int dev, uchar* buf, int count) { - if (is_open_in(dev)) { - snd_rawmidi_read(rawmidi_in[dev], buf, count); - } else { - std::cout << "Warning: MIDI input " << dev << " is not open for reading" - << std::endl; - } -} - - - -////////////////////////////// -// -// Sequencer_alsa::rebuildInfoDatabase -- rebuild the internal -// database that keeps track of the MIDI input and output devices. -// - -void Sequencer_alsa::rebuildInfoDatabase(void) { - removeInfoDatabase(); - buildInfoDatabase(); -} - - - -/////////////////////////////// -// -// Sequencer_alsa::write -- Send a byte out the specified MIDI -// port which can be either an internal or an external synthesizer. -// - -int Sequencer_alsa::write(int aDevice, int aByte) { - uchar byte[1]; - byte[0] = (uchar)aByte; - return write(aDevice, byte, 1); -} - - -int Sequencer_alsa::write(int aDevice, uchar* bytes, int count) { - if (is_open_out(aDevice)) { - int status = snd_rawmidi_write(rawmidi_out[aDevice], bytes, count); - return status == count ? 1 : 0; - } else { - std::cout << "Warning: MIDI output " << aDevice << " is not open for writing" - << std::endl; - return 0; - } - - return 0; -} - - -int Sequencer_alsa::write(int aDevice, char* bytes, int count) { - return write(aDevice, (uchar*)bytes, count); -} - - -int Sequencer_alsa::write(int aDevice, int* bytes, int count) { - uchar *newBytes; - newBytes = new uchar[count]; - for (int i=0; i<count; i++) { - newBytes[i] = (uchar)bytes[i]; - } - int status = write(aDevice, newBytes, count); - delete [] newBytes; - return status; -} - - - -/////////////////////////////////////////////////////////////////////////// -// -// private functions -// - -////////////////////////////// -// -// Sequencer_alsa::buildInfoDatabase -- determines the number -// of MIDI input and output devices available from -// /dev/snd/midiC%dD%d, and determines their names. -// - -void Sequencer_alsa::buildInfoDatabase(void) { - if (initialized) { - return; - } - - initialized = 1; - - if (indevcount != 0 || outdevcount != 0) { - std::cout << "Error: Sequencer_alsa is already running" << std::endl; - std::cout << "Indevcout = " << indevcount << " and " - << " outdevcount = " << outdevcount << std::endl; - exit(1); - } - - indevcount = 0; - outdevcount = 0; - - midiincard.setSize(0); - midiincard.allowGrowth(); - midioutcard.setSize(0); - midioutcard.allowGrowth(); - - midiindevice.setSize(0); - midiindevice.allowGrowth(); - midioutdevice.setSize(0); - midioutdevice.allowGrowth(); - - midiinname.setSize(0); - midiinname.allowGrowth(); - midioutname.setSize(0); - midioutname.allowGrowth(); - - rawmidi_in.setSize(256); - rawmidi_out.setSize(256); - - // read number of MIDI inputs/output available - Collection<int> cards; - Collection<int> devices; - getPossibleMidiStreams(cards, devices); - char devname[128] = {0}; - - // check for MIDI input streams - int i; - for (i=0; i<cards.getSize(); i++) { - sprintf(devname, "hw:%d,%d", cards[i], devices[i]); - if (snd_rawmidi_open(&rawmidi_in[indevcount], NULL, devname, 0) == 0){ - midiincard.append(cards[i]); - midiindevice.append(devices[i]); - snd_rawmidi_close(rawmidi_in[indevcount]); - rawmidi_in[indevcount] = NULL; - indevcount++; - } - } - for (i=0; i<rawmidi_in.getSize(); i++) { - rawmidi_in[i] = NULL; - } - - // check for MIDI output streams - for (i=0; i<cards.getSize(); i++) { - sprintf(devname, "hw:%d,%d", cards[i], devices[i]); - if (snd_rawmidi_open(NULL, &rawmidi_out[outdevcount], devname, 0) == 0) { - midioutcard.append(cards[i]); - midioutdevice.append(devices[i]); - snd_rawmidi_close(rawmidi_out[outdevcount]); - rawmidi_out[indevcount] = NULL; - outdevcount++; - } - } - for (i=0; i<rawmidi_out.getSize(); i++) { - rawmidi_out[i] = NULL; - } - - char buffer[256] = {0}; - char* temp; - for (i=0; i<indevcount; i++) { - sprintf(buffer, "MIDI input %d: card %d, device %d", i, - midiincard[i], midiindevice[i]); - temp = new char[strlen(buffer) + 1]; - strcpy(temp, buffer); - midiinname.append(temp); - } - - for (i=0; i<outdevcount; i++) { - sprintf(buffer, "MIDI output %d: card %d, device %d", i, - midioutcard[i], midioutdevice[i]); - temp = new char[strlen(buffer) + 1]; - strcpy(temp, buffer); - midioutname.append(temp); - } - - midiincard.allowGrowth(0); - midioutcard.allowGrowth(0); - midiindevice.allowGrowth(0); - midioutdevice.allowGrowth(0); - midiinname.allowGrowth(0); - midioutname.allowGrowth(0); - rawmidi_in.allowGrowth(0); - rawmidi_out.allowGrowth(0); - -} - - - -////////////////////////////// -// -// Sequencer_alsa::getInDeviceValue -- -// - -int Sequencer_alsa::getInDeviceValue(int aDevice) const { - return midiindevice[aDevice]; -} - - - -////////////////////////////// -// -// Sequencer_alsa::getInCardValue -- -// - -int Sequencer_alsa::getInCardValue(int aDevice) const { - return midiincard[aDevice]; -} - - - -////////////////////////////// -// -// Sequencer_alsa::getOutDeviceValue -- -// - -int Sequencer_alsa::getOutDeviceValue(int aDevice) const { - return midioutdevice[aDevice]; -} - - - -////////////////////////////// -// -// Sequencer_alsa::getOutCardValue -- -// - -int Sequencer_alsa::getOutCardValue(int aDevice) const { - return midioutcard[aDevice]; -} - - - -////////////////////////////// -// -// Sequencer_alsa::removeInfoDatabase -- -// - -void Sequencer_alsa::removeInfoDatabase(void) { - if (rawmidi_in.getSize() != 0) { - close(); - } - - if (rawmidi_out.getSize() != 0) { - close(); - } - - rawmidi_in.setSize(0); - rawmidi_out.setSize(0); - midiincard.setSize(0); - midioutcard.setSize(0); - midiindevice.setSize(0); - midioutdevice.setSize(0); - - int i; - for (i=0; i<midiinname.getSize(); i++) { - if (midiinname[i] != NULL) { - delete [] midiinname[i]; - } - } - - for (i=0; i<midioutname.getSize(); i++) { - if (midioutname[i] != NULL) { - delete [] midioutname[i]; - } - } - - indevcount = 0; - outdevcount = 0; - initialized = 0; -} - - - -////////////////////////////// -// -// getPossibleMidiStreams -- read the directory /dev/snd for files -// that match the pattern midiC%dD%d, and extract the card/device -// numbers from these filenames. -// - -void Sequencer_alsa::getPossibleMidiStreams(Collection<int>& cards, - Collection<int>& devices) { - - cards.setSize(0); - devices.setSize(0); - cards.allowGrowth(1); - devices.allowGrowth(1); - - DIR* dir = opendir("/dev/snd"); - if (dir == NULL) { -// std::cout << "Error determining ALSA MIDI info: no directory called /dev/snd" -// << std::endl; -// exit(1); - } - - // read each file in the directory and store information if it is a MIDI dev - else { - int card; - int device; - struct dirent *dinfo; - dinfo = readdir(dir); - int count; - while (dinfo != NULL) { - if (strncmp(dinfo->d_name, "midi", 4) == 0) { - count = sscanf(dinfo->d_name, "midiC%dD%d", &card, &device); - if (count == 2) { - cards.append(card); - devices.append(device); - } - } - dinfo = readdir(dir); - } - - closedir(dir); - cards.allowGrowth(0); - devices.allowGrowth(0); - } -} - - -#endif /* LINUX and ALSA */ - -// md5sum: 8ccf0e750be06aeea90cdc8a7cc4499c - Sequencer_alsa.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/src/Sequencer_alsa05.cpp b/extensions/gripd/src/midiio/src/Sequencer_alsa05.cpp deleted file mode 100644 index ad4ef2dd680892240b988f20b0784f5f89ca59a0..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/src/Sequencer_alsa05.cpp +++ /dev/null @@ -1,518 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Thu May 11 21:10:02 PDT 2000 -// Last Modified: Wed Oct 3 22:18:27 PDT 2001 (frozen to ALSA 0.5) -// Filename: ...sig/maint/code/control/Sequencer_alsa05.cpp -// Web Address: http://sig.sapp.org/src/sig/Sequencer_alsa05.cpp -// Syntax: C++ -// -// Description: Basic MIDI input/output functionality for the -// Linux ALSA raw midi devices. This class -// is inherited by the classes MidiInPort_alsa05 and -// MidiOutPort_alsa05. -// - -#if defined(LINUX) && defined(ALSA05) - -#include "Collection.h" -#include <sys/asoundlib.h> -#include <unistd.h> -#include <sys/ioctl.h> -#include <fcntl.h> -#include <string.h> -#include <iostream.h> -#include <stdio.h> -#include "Sequencer_alsa05.h" - -typedef unsigned char uchar; - -// define static variables: -int Sequencer_alsa05::class_count = 0; -int Sequencer_alsa05::initialized = 0; - -// static variables for MIDI I/O information database -int Sequencer_alsa05::indevcount = 0; -int Sequencer_alsa05::outdevcount = 0; - -Collection<snd_rawmidi_t*> Sequencer_alsa05::rawmidi_in; -Collection<snd_rawmidi_t*> Sequencer_alsa05::rawmidi_out; -Collection<int> Sequencer_alsa05::midiincard; -Collection<int> Sequencer_alsa05::midioutcard; -Collection<int> Sequencer_alsa05::midiindevice; -Collection<int> Sequencer_alsa05::midioutdevice; -Collection<char*> Sequencer_alsa05::midiinname; -Collection<char*> Sequencer_alsa05::midioutname; - - - -/////////////////////////////// -// -// Sequencer_alsa05::Sequencer_alsa05 -- -// default value: autoOpen = 1; -// - -Sequencer_alsa05::Sequencer_alsa05(int autoOpen) { - if (class_count < 0) { - cerr << "Unusual class instatiation count: " << class_count << endl; - exit(1); - } else if (class_count == 0) { - buildInfoDatabase(); - } - - if (autoOpen) { - open(); - } - - class_count++; -} - - - -////////////////////////////// -// -// Sequencer_alsa05::~Sequencer_alsa05 -- -// - -Sequencer_alsa05::~Sequencer_alsa05() { - - if (class_count == 1) { - close(); - removeInfoDatabase(); - } else if (class_count <= 0) { - cerr << "Unusual class instatiation count: " << class_count << endl; - exit(1); - } - - class_count--; -} - - - -////////////////////////////// -// -// Sequencer_alsa05::close -- close the sequencer device. The device -// automatically closes once the program ends. -// - -void Sequencer_alsa05::close(void) { - int i; - - for (i=0; i<getNumInputs(); i++) { - if (rawmidi_in[i] != NULL) { - snd_rawmidi_close(rawmidi_in[i]); - rawmidi_in[i] = NULL; - } - } - - for (i=0; i<getNumOutputs(); i++) { - if (rawmidi_out[i] != NULL) { - snd_rawmidi_close(rawmidi_out[i]); - rawmidi_out[i] = NULL; - } - } - -} - - - -////////////////////////////// -// -// Sequencer_alsa05::displayInputs -- display a list of the -// available MIDI input devices. -// default values: out = cout, initial = "\t" -// - -void Sequencer_alsa05::displayInputs(ostream& out, char* initial) { - for (int i=0; i<getNumInputs(); i++) { - out << initial << i << ": " << getInputName(i) << '\n'; - } -} - - - -////////////////////////////// -// -// Sequencer_alsa05::displayOutputs -- display a list of the -// available MIDI output devices. -// default values: out = cout, initial = "\t" -// - -void Sequencer_alsa05::displayOutputs(ostream& out, char* initial) { - for (int i=0; i<getNumOutputs(); i++) { - out << initial << i << ": " << getOutputName(i) << '\n'; - } -} - - - -////////////////////////////// -// -// Sequencer_alsa05::getInputName -- returns a string to the name of -// the specified input device. The string will remain valid as -// long as there are any sequencer devices in existence. -// - -const char* Sequencer_alsa05::getInputName(int aDevice) { - if (initialized == 0) { - buildInfoDatabase(); - } - return midiinname[aDevice]; -} - - - -////////////////////////////// -// -// Sequencer_alsa05::getNumInputs -- returns the total number of -// MIDI inputs that can be used. -// - -int Sequencer_alsa05::getNumInputs(void) { - if (initialized == 0) { - buildInfoDatabase(); - } - return indevcount; -} - - - -////////////////////////////// -// -// Sequencer_alsa05::getNumOutputs -- returns the total number of -// MIDI inputs that can be used. -// - -int Sequencer_alsa05::getNumOutputs(void) { - if (initialized == 0) { - buildInfoDatabase(); - } - return outdevcount; -} - - - -////////////////////////////// -// -// Sequencer_alsa05::getOutputName -- returns a string to the name of -// the specified output device. The string will remain valid as -// long as there are any sequencer devices in existence. -// - -const char* Sequencer_alsa05::getOutputName(int aDevice) { - if (initialized == 0) { - buildInfoDatabase(); - } - return midioutname[aDevice]; -} - - - -////////////////////////////// -// -// Sequencer_alsa05::is_open -- returns true if the -// sequencer device is open, false otherwise. -// - -int Sequencer_alsa05::is_open(int mode, int index) { - if (mode == 0) { - // midi output - if (rawmidi_out[index] != NULL) { - return 1; - } else { - return 0; - } - } else { - if (rawmidi_in[index] != NULL) { - return 1; - } else { - return 0; - } - } -} - - -int Sequencer_alsa05::is_open_in(int index) { - return is_open(1, index); -} - - -int Sequencer_alsa05::is_open_out(int index) { - return is_open(0, index); -} - - - -///////////////////////////// -// -// Sequencer_alsa05::open -- returns true if the device -// was successfully opended (or already opened) -// - -int Sequencer_alsa05::open(void) { - if (rawmidi_out.getSize() != 0 || rawmidi_in.getSize() != 0) { - return 1; - } else { - return 0; - } -} - - - -////////////////////////////// -// -// Sequencer_alsa05::read -- reads MIDI bytes and also stores the -// device from which the byte was read from. Timing is not -// saved from the device. If needed, then it would have to -// be saved in this function, or just return the raw packet -// data (use rawread function). -// - -void Sequencer_alsa05::read(int dev, uchar* buf, int count) { - snd_rawmidi_read(rawmidi_in[dev], buf, count); -} - - - -////////////////////////////// -// -// Sequencer_alsa05::rebuildInfoDatabase -- rebuild the internal -// database that keeps track of the MIDI input and output devices. -// - -void Sequencer_alsa05::rebuildInfoDatabase(void) { - removeInfoDatabase(); - buildInfoDatabase(); -} - - - -/////////////////////////////// -// -// Sequencer_alsa05::write -- Send a byte out the specified MIDI -// port which can be either an internal or an external synthesizer. -// - -int Sequencer_alsa05::write(int aDevice, int aByte) { - uchar byte[1]; - byte[0] = (uchar)aByte; - return write(aDevice, byte, 1); -} - - -int Sequencer_alsa05::write(int aDevice, uchar* bytes, int count) { - int status = snd_rawmidi_write(rawmidi_out[aDevice], bytes, count); - return status == count ? 1 : 0; -} - - -int Sequencer_alsa05::write(int aDevice, char* bytes, int count) { - return write(aDevice, (uchar*)bytes, count); -} - - -int Sequencer_alsa05::write(int aDevice, int* bytes, int count) { - uchar *newBytes; - newBytes = new uchar[count]; - for (int i=0; i<count; i++) { - newBytes[i] = (uchar)bytes[i]; - } - int status = write(aDevice, newBytes, count); - delete [] newBytes; - return status; -} - - - -/////////////////////////////////////////////////////////////////////////// -// -// private functions -// - -////////////////////////////// -// -// Sequencer_alsa05::buildInfoDatabase -- determines the number -// of MIDI input and output devices available from -// /dev/snd/midiXX, and determines their names. -// - -void Sequencer_alsa05::buildInfoDatabase(void) { - if (initialized) { - return; - } - - initialized = 1; - - if (indevcount != 0 || outdevcount != 0) { - cout << "Error: Sequencer_alsa05 is already running" << endl; - cout << "Indevcout = " << indevcount << " and " - << " outdevcount = " << outdevcount << endl; - exit(1); - } - - indevcount = 0; - outdevcount = 0; - - midiincard.setSize(0); - midiincard.allowGrowth(); - midioutcard.setSize(0); - midioutcard.allowGrowth(); - - midiindevice.setSize(0); - midiindevice.allowGrowth(); - midioutdevice.setSize(0); - midioutdevice.allowGrowth(); - - midiinname.setSize(0); - midiinname.allowGrowth(); - midioutname.setSize(0); - midioutname.allowGrowth(); - - rawmidi_in.setSize(256); - rawmidi_out.setSize(256); - - // read number of MIDI inputs/output available - int card; - int device; - - for (card=0; card<16; card++) { - for (device=0; device<16; device++) { - if (snd_rawmidi_open(&rawmidi_in[indevcount], card, device, - O_RDONLY | O_APPEND | O_NONBLOCK) == 0){ - midiincard.append(card); - midiindevice.append(device); - indevcount++; - } - } - } - rawmidi_in.setSize(indevcount); - - for (card=0; card<16; card++) { - for (device=0; device<16; device++) { - if (snd_rawmidi_open(&rawmidi_out[outdevcount], card, - device, O_WRONLY | O_APPEND | O_NONBLOCK) == 0) { - midioutcard.append(card); - midioutdevice.append(device); - outdevcount++; - } - } - } - rawmidi_out.setSize(indevcount); - - int i; - char buffer[256] = {0}; - char* temp; - for (i=0; i<indevcount; i++) { - sprintf(buffer, "MIDI input %d", i); - temp = new char[strlen(buffer) + 1]; - strcpy(temp, buffer); - midiinname.append(temp); - } - - for (i=0; i<outdevcount; i++) { - sprintf(buffer, "MIDI output %d", i); - temp = new char[strlen(buffer) + 1]; - strcpy(temp, buffer); - midioutname.append(temp); - } - - midiincard.allowGrowth(0); - midioutcard.allowGrowth(0); - midiindevice.allowGrowth(0); - midioutdevice.allowGrowth(0); - midiinname.allowGrowth(0); - midioutname.allowGrowth(0); - rawmidi_in.allowGrowth(0); - rawmidi_out.allowGrowth(0); - -} - - - -////////////////////////////// -// -// Sequencer_alsa05::getInDeviceValue -- -// - -int Sequencer_alsa05::getInDeviceValue(int aDevice) const { - return midiindevice[aDevice]; -} - - - -////////////////////////////// -// -// Sequencer_alsa05::getInCardValue -- -// - -int Sequencer_alsa05::getInCardValue(int aDevice) const { - return midiincard[aDevice]; -} - - - -////////////////////////////// -// -// Sequencer_alsa05::getOutDeviceValue -- -// - -int Sequencer_alsa05::getOutDeviceValue(int aDevice) const { - return midioutdevice[aDevice]; -} - - - -////////////////////////////// -// -// Sequencer_alsa05::getOutCardValue -- -// - -int Sequencer_alsa05::getOutCardValue(int aDevice) const { - return midioutcard[aDevice]; -} - - - -////////////////////////////// -// -// Sequencer_alsa05::removeInfoDatabase -- -// - -void Sequencer_alsa05::removeInfoDatabase(void) { - if (rawmidi_in.getSize() != 0) { - close(); - } - - if (rawmidi_out.getSize() != 0) { - close(); - } - - rawmidi_in.setSize(0); - rawmidi_out.setSize(0); - midiincard.setSize(0); - midioutcard.setSize(0); - midiindevice.setSize(0); - midioutdevice.setSize(0); - - int i; - for (i=0; i<midiinname.getSize(); i++) { - if (midiinname[i] != NULL) { - delete [] midiinname[i]; - } - } - - for (i=0; i<midioutname.getSize(); i++) { - if (midioutname[i] != NULL) { - delete [] midioutname[i]; - } - } - - indevcount = 0; - outdevcount = 0; - initialized = 0; -} - - -#endif /* LINUX and ALSA05 */ - - -// md5sum: b47021f0b71b2bc1555755584777c9a8 - Sequencer_alsa05.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/src/Sequencer_oss.cpp b/extensions/gripd/src/midiio/src/Sequencer_oss.cpp deleted file mode 100644 index db9258ee56a20f97665b3be71750cd404dd89f50..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/src/Sequencer_oss.cpp +++ /dev/null @@ -1,809 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Sun Jan 3 21:02:02 PST 1999 -// Last Modified: Fri Jan 8 04:50:05 PST 1999 -// Last Modified: Wed May 10 17:00:11 PDT 2000 (name change from _linux to _oss) -// Filename: ...sig/maint/code/control/MidiOutPort/Sequencer_oss.cpp -// Web Address: http://sig.sapp.org/src/sig/Sequencer_oss.cpp -// Syntax: C++ -// -// Description: Basic MIDI input/output functionality for the -// Linux OSS midi device /dev/sequencer. This class -// is inherited by the classes MidiInPort_oss and -// MidiOutPort_oss. -// - -#ifdef LINUX - -#include <stdlib.h> - - -#include <linux/soundcard.h> -#include <unistd.h> -#include <sys/ioctl.h> -#include <fcntl.h> -#include <string.h> -#include <iostream> -#include "Sequencer_oss.h" - - -// define static variables: -const char* Sequencer_oss::sequencer = "/dev/sequencer"; -int Sequencer_oss::sequencer_fd = -1; -int Sequencer_oss::class_count = 0; -int Sequencer_oss::initialized = 0; -uchar Sequencer_oss::midi_write_packet[4] = {SEQ_MIDIPUTC, 0, 0, 0}; -uchar Sequencer_oss::midi_read_packet[4]; - - -// static variables for MIDI I/O information database -int Sequencer_oss::indevcount = 0; -int Sequencer_oss::outdevcount = 0; - -int* Sequencer_oss::indevnum = NULL; -int* Sequencer_oss::outdevnum = NULL; - -int* Sequencer_oss::indevtype = NULL; -int* Sequencer_oss::outdevtype = NULL; - -char** Sequencer_oss::indevnames = NULL; -char** Sequencer_oss::outdevnames = NULL; - - - -/////////////////////////////// -// -// Sequencer_oss::Sequencer_oss -- -// default value: autoOpen = 1; -// - -Sequencer_oss::Sequencer_oss(int autoOpen) { - if (autoOpen) { - open(); - } - - if (class_count < 0) { - std::cerr << "Unusual class instatiation count: " << class_count << std::endl; - exit(1); - } else if (class_count == 0) { - buildInfoDatabase(); - } - - class_count++; -} - - - -////////////////////////////// -// -// Sequencer_oss::~Sequencer_oss -- -// - -Sequencer_oss::~Sequencer_oss() { - class_count--; - - if (class_count == 0) { - close(); - removeInfoDatabase(); - } else if (class_count < 0) { - std::cerr << "Unusual class instatiation count: " << class_count << std::endl; - exit(1); - } -} - - - -////////////////////////////// -// -// Sequencer_oss::close -- close the sequencer device. The device -// automatically closes once the program ends, but you can close it -// so that other programs can use it. -// - -void Sequencer_oss::close(void) { - ::close(getFd()); -} - - - -////////////////////////////// -// -// Sequencer_oss::displayInputs -- display a list of the -// available MIDI input devices. -// default values: out = cout, initial = "\t" -// - -void Sequencer_oss::displayInputs(std::ostream& out, char* initial) { - for (int i=0; i<getNumInputs(); i++) { - out << initial << i << ": " << getInputName(i) << '\n'; - } -} - - - -////////////////////////////// -// -// Sequencer_oss::displayOutputs -- display a list of the -// available MIDI output devices. -// default values: out = cout, initial = "\t" -// - -void Sequencer_oss::displayOutputs(std::ostream& out, char* initial) { - for (int i=0; i<getNumOutputs(); i++) { - out << initial << i << ": " << getOutputName(i) << '\n'; - } -} - - - -////////////////////////////// -// -// Sequencer_oss::getInputName -- returns a string to the name of -// the specified input device. The string will remain valid as -// long as there are any sequencer devices in existence. -// - -const char* Sequencer_oss::getInputName(int aDevice) { - if (initialized == 0) { - buildInfoDatabase(); - } - if (aDevice >= getNumInputs()) { - std::cerr << "Error: " << aDevice << " is greater than max in (" - << getNumInputs() << ")" << std::endl; - exit(1); - } - - return indevnames[aDevice]; -} - - - -////////////////////////////// -// -// Sequencer_oss::getNumInputs -- returns the total number of -// MIDI inputs that can be used. -// - -int Sequencer_oss::getNumInputs(void) { - if (initialized == 0) { - buildInfoDatabase(); - } - return indevcount; -} - - - -////////////////////////////// -// -// Sequencer_oss::getNumOutputs -- returns the total number of -// MIDI inputs that can be used. -// - -int Sequencer_oss::getNumOutputs(void) { - if (initialized == 0) { - buildInfoDatabase(); - } - return outdevcount; -} - - - -////////////////////////////// -// -// Sequencer_oss::getOutputName -- returns a string to the name of -// the specified output device. The string will remain valid as -// long as there are any sequencer devices in existence. -// - -const char* Sequencer_oss::getOutputName(int aDevice) { - if (initialized == 0) { - buildInfoDatabase(); - } - if (aDevice >= getNumOutputs()) { - std::cerr << "Error: " << aDevice << " is greater than max out (" - << getNumOutputs() << ")" << std::endl; - exit(1); - } - - return outdevnames[aDevice]; -} - - - -////////////////////////////// -// -// Sequencer_oss::is_open -- returns true if the -// sequencer device is open, false otherwise. -// - -int Sequencer_oss::is_open(void) { - if (getFd() > 0) { - return 1; - } else { - return 0; - } -} - - - -///////////////////////////// -// -// Sequencer_oss::open -- returns true if the device -// was successfully opended (or already opened) -// - -int Sequencer_oss::open(void) { - if (getFd() <= 0) { - setFd(::open(sequencer, O_RDWR, 0)); - } - - return is_open(); -} - - - -////////////////////////////// -// -// Sequencer_oss::read -- reads MIDI bytes and also stores the -// device from which the byte was read from. Timing is not -// saved from the device. If needed, then it would have to -// be saved in this function, or just return the raw packet -// data (use rawread function). -// - -void Sequencer_oss::read(uchar* buf, uchar* dev, int count) { - int i = 0; - while (i < count) { - ::read(getFd(), midi_read_packet, sizeof(midi_read_packet)); - if (midi_read_packet[1] == SEQ_MIDIPUTC) { - buf[i] = midi_read_packet[1]; - dev[i] = midi_read_packet[2]; - i++; - } - } -} - - - -////////////////////////////// -// -// Sequencer_oss::rawread -- read Input MIDI packets. -// each packet contains 4 bytes. -// - -void Sequencer_oss::rawread(uchar* buf, int packetCount) { - ::read(getFd(), buf, packetCount * 4); -} - - - -////////////////////////////// -// -// Sequencer_oss::rebuildInfoDatabase -- rebuild the internal -// database that keeps track of the MIDI input and output devices. -// - -void Sequencer_oss::rebuildInfoDatabase(void) { - removeInfoDatabase(); - buildInfoDatabase(); -} - - - -/////////////////////////////// -// -// Sequencer_oss::write -- Send a byte out the specified MIDI -// port which can be either an internal or an external synthesizer. -// - -int Sequencer_oss::write(int device, int aByte) { - int status = 0; - - switch (getOutputType(device)) { - case MIDI_EXTERNAL: - midi_write_packet[1] = (uchar) (0xff & aByte); - midi_write_packet[2] = getOutDeviceValue(device); - status = ::write(getFd(), midi_write_packet,sizeof(midi_write_packet)); - break; - case MIDI_INTERNAL: - status = writeInternal(getOutDeviceValue(device), aByte); - break; - } - - if (status > 0) { - return 1; - } else { - return 0; - } - -} - - -int Sequencer_oss::write(int device, uchar* bytes, int count) { - int status = 1; - for (int i=0; i<count; i++) { - status &= write(device, bytes[i]); - } - return status; -} - - -int Sequencer_oss::write(int device, char* bytes, int count) { - return write(device, (uchar*)bytes, count); -} - - -int Sequencer_oss::write(int device, int* bytes, int count) { - int status = 1; - for (int i=0; i<count; i++) { - status &= write(device, bytes[i]); - } - return status; -} - - - -/////////////////////////////////////////////////////////////////////////// -// -// private functions -// - -////////////////////////////// -// -// Sequencer_oss::buildInfoDatabase -- determines the number -// of MIDI input and output devices available from -// /dev/sequencer, and determines their names. -// - -void Sequencer_oss::buildInfoDatabase(void) { - int status; - initialized = 1; - - int startup = sequencer_fd == -1 ? 0 : 1; - if (startup == 0) { - // setup the file descriptor for /dev/sequencer - sequencer_fd = ::open(sequencer, O_RDWR); - if (sequencer_fd < 0) { -// std::cout << "Error: cannot open " << sequencer << std::endl; -// exit(1); - } - else { - // read number of inputs available (external MIDI devices only) - status = ioctl(getFd(), SNDCTL_SEQ_NRMIDIS, &indevcount); - if (status!= 0) { - std::cerr << "Error determining the number of MIDI inputs" << std::endl; - exit(1); - } - - // read number of output available - int extmidi = indevcount; - int intmidi; - status = ioctl(getFd(), SNDCTL_SEQ_NRSYNTHS, &intmidi); - if (status!= 0) { - std::cerr << "Error determining the number of MIDI inputs" << std::endl; - exit(1); - } - outdevcount = extmidi + intmidi; - - // allocate space for names and device number arrays - if (indevnum != NULL || outdevnum != NULL || indevnames != NULL || - outdevnames != NULL || indevtype != NULL || outdevtype != NULL) { - std::cerr << "Error: buildInfoDatabase called twice." << std::endl; - exit(1); - } - - indevnum = new int[indevcount]; - outdevnum = new int[outdevcount]; - - indevtype = new int[indevcount]; - outdevtype = new int[outdevcount]; - - indevnames = new char*[indevcount]; - outdevnames = new char*[outdevcount]; - - - // fill in the device translation table and fill in the device names - int i; - struct midi_info midiinfo; - for (i=0; i<indevcount; i++) { - midiinfo.device = i; - status = ioctl(getFd(), SNDCTL_MIDI_INFO, &midiinfo); - if (status != 0) { - std::cerr << "Error while reading MIDI device " << i << std::endl; - exit(1); - } - - indevnum[i] = midiinfo.device; - outdevnum[i] = midiinfo.device; - indevtype[i] = MIDI_EXTERNAL; - outdevtype[i] = MIDI_EXTERNAL; - indevnames[i] = new char[strlen(midiinfo.name) + 1 + 10]; - outdevnames[i] = new char[strlen(midiinfo.name) + 1 + 11]; - strcpy(indevnames[i], midiinfo.name); - strcpy(outdevnames[i], midiinfo.name); - strcat(indevnames[i], " (MIDI In)"); - strcat(outdevnames[i], " (MIDI Out)"); - } - - char tempstring[1024] = {0}; - struct synth_info synthinfo; - for (i=0; i<intmidi; i++) { - synthinfo.device = i; - status = ioctl(getFd(), SNDCTL_SYNTH_INFO, &synthinfo); - if (status != 0) { - std::cerr << "Error while reading MIDI device " << i << std::endl; - exit(1); - } - outdevnum[extmidi+i] = i; - outdevtype[extmidi + i] = MIDI_INTERNAL; - - strcpy(tempstring, synthinfo.name); - switch (synthinfo.synth_type) { - case SYNTH_TYPE_FM: // 0 - strcat(tempstring, " (FM"); - switch (synthinfo.synth_subtype) { - case FM_TYPE_ADLIB: // 0 - strcat(tempstring, " Adlib"); - break; - case FM_TYPE_OPL3: // 1 - strcat(tempstring, " OPL3"); - break; - } - strcat(tempstring, ")"); - break; - case SYNTH_TYPE_SAMPLE: // 1 - strcat(tempstring, " (Wavetable)"); - break; - case SYNTH_TYPE_MIDI: // 2 - strcat(tempstring, " (MIDI Interface"); - switch (synthinfo.synth_subtype) { - case SYNTH_TYPE_MIDI: // 0x401 - strcat(tempstring, " MPU401"); - break; - } - strcat(tempstring, ")"); - break; - } - outdevnames[i+extmidi] = new char[strlen(tempstring) + 1]; - strcpy(outdevnames[i+extmidi], tempstring); - } - - - if (startup == 0) { - ::close(sequencer_fd); - } - } - } -} - - -////////////////////////////// -// -// Sequencer_oss::getFd -- returns the file descriptor of the -// sequencer device. -// - -int Sequencer_oss::getFd(void) { - return sequencer_fd; -} - - - -////////////////////////////// -// -// Sequencer_oss::getInDeviceValue -- -// - -int Sequencer_oss::getInDeviceValue(int aDevice) const { - if (aDevice >= getNumInputs()) { - std::cerr << "Error: " << aDevice << " is greater than max in (" - << getNumInputs() << ")" << std::endl; - exit(1); - } - - return indevnum[aDevice]; -} - - - -////////////////////////////// -// -// Sequencer_oss::getInputType -- returns 1 = external MIDI, -// 2 = internal MIDI -// - -int Sequencer_oss::getInputType(int aDevice) const { - if (aDevice >= getNumInputs()) { - std::cerr << "Error: " << aDevice << " is greater than max in (" - << getNumInputs() << ")" << std::endl; - exit(1); - } - - return indevtype[aDevice]; -} - - - -////////////////////////////// -// -// Sequencer_oss::getOutDeviceValue -- -// - -int Sequencer_oss::getOutDeviceValue(int aDevice) const { - if (aDevice >= getNumOutputs()) { - std::cerr << "Error: " << aDevice << " is greater than max out (" - << getNumOutputs() << ")" << std::endl; - exit(1); - } - - return outdevnum[aDevice]; -} - - - -////////////////////////////// -// -// Sequencer_oss::getOutputType -- returns 1 = external MIDI, -// 2 = internal MIDI -// - -int Sequencer_oss::getOutputType(int aDevice) const { - if (aDevice >= getNumOutputs()) { - std::cerr << "Error: " << aDevice << " is greater than max out (" - << getNumOutputs() << ")" << std::endl; - exit(1); - } - - return outdevtype[aDevice]; -} - - - -////////////////////////////// -// -// Sequencer_oss::removeInfoDatabase -- -// - -void Sequencer_oss::removeInfoDatabase(void) { - initialized = 0; - - if (indevnum != NULL) delete [] indevnum; - if (outdevnum != NULL) delete [] outdevnum; - if (indevtype != NULL) delete [] indevtype; - if (outdevtype != NULL) delete [] outdevtype; - - int i; - if (indevnames != NULL) { - for (i=0; i<indevcount; i++) { - if (indevnames[i] != NULL) delete [] indevnames[i]; - } - delete [] indevnames; - } - - if (outdevnames != NULL) { - for (i=0; i<outdevcount; i++) { - if (outdevnames[i] != NULL) delete [] outdevnames[i]; - } - delete [] outdevnames; - } - - indevnum = NULL; - outdevnum = NULL; - indevtype = NULL; - outdevtype = NULL; - indevnames = NULL; - outdevnames = NULL; - - indevcount = 0; - outdevcount = 0; -} - - - -////////////////////////////// -// -// Sequencer_oss::setFd -- -// - -void Sequencer_oss::setFd(int anFd) { - sequencer_fd = anFd; -} - - - - -/////////////////////////////////////////////////////////////////////////// -// -// private functions dealing with the stupid internal sythesizer messages -// which have to be processed as complete messages as opposed to -// external MIDI devices which are processed on the driver level as -// discrete bytes. -// - -// static variables related to the processing of message for internal MIDI: -uchar Sequencer_oss::synth_write_message[8]; -uchar Sequencer_oss::synth_message_buffer[1024] = {0}; -int Sequencer_oss::synth_message_buffer_count = 0; -int Sequencer_oss::synth_message_bytes_expected = 0; -int Sequencer_oss::synth_message_curr_device = -1; - - -////////////////////////////// -// -// Sequencer_oss::writeInternal -- the device number is the -// driver's device number *NOT* this class's device numbering -// system. MIDI bytes are stored in a buffer until a complete -// message is received, then a synth message is generated. -// While a complete message is being received, the device number -// cannot change. The first byte of a message must be a MIDI -// command (i.e., no running status). -// - -int Sequencer_oss::writeInternal(int aDevice, int aByte) { - int status = 0; - - if (synth_message_bytes_expected == 0) { - // a new message is coming in. - synth_message_curr_device = aDevice; - if (aByte < 128) { - std::cerr << "Error: MIDI output byte: " << aByte - << " is not a command byte." << std::endl; - exit(1); - } else { - synth_message_buffer[0] = aByte; - synth_message_buffer_count = 1; - } - - switch (aByte & 0xf0) { - case 0x80: synth_message_bytes_expected = 3; break; - case 0x90: synth_message_bytes_expected = 3; break; - case 0xA0: synth_message_bytes_expected = 3; break; - case 0xB0: synth_message_bytes_expected = 3; break; - case 0xC0: synth_message_bytes_expected = 2; break; - case 0xD0: synth_message_bytes_expected = 2; break; - case 0xE0: synth_message_bytes_expected = 3; break; - case 0xF0: std::cerr << "Can't handle 0xE0 yet" << std::endl; exit(1); - default: std::cerr << "Unknown error" << std::endl; exit(1); - } - } - - // otherwise expecting at least one more byte for the MIDI message - else { - if (synth_message_curr_device != aDevice) { - std::cerr << "Error: device number changed during message" << std::endl; - exit(1); - } - if (aByte > 127) { - std::cerr << "Error: expecting MIDI data but got MIDI command: " - << aByte << std::endl; - exit(1); - } - - synth_message_buffer[synth_message_buffer_count++] = aByte; - } - - // check to see if the message is complete: - if (synth_message_bytes_expected == synth_message_buffer_count) { - status = transmitMessageToInternalSynth(); - synth_message_bytes_expected = 0; - synth_message_buffer_count = 0; - } - - return status; -} - - - -////////////////////////////// -// -// Sequencer_oss::transmitMessageToInternalSynth -- send the stored -// MIDI message to the internal synthesizer. -// - -int Sequencer_oss::transmitMessageToInternalSynth(void) { - int status; - switch (synth_message_buffer[0] & 0xf0) { - case 0x80: // Note-off - case 0x90: // Note-on - case 0xA0: // Aftertouch - status = transmitVoiceMessage(); - break; - case 0xB0: // Control change - case 0xC0: // Patch change - case 0xD0: // Channel pressure - case 0xE0: // Pitch wheel - status = transmitCommonMessage(); - break; - case 0xF0: - std::cerr << "Cannot handle 0xf0 commands yet" << std::endl; - exit(1); - break; - default: - std::cerr << "Error: unknown MIDI command" << std::endl; - exit(1); - } - - return status; -} - - - -////////////////////////////// -// -// Sequencer_oss::transmitVoiceMessage -- send a voice-type MIDI -// message to an internal synthesizer. -// - -int Sequencer_oss::transmitVoiceMessage(void) { - synth_write_message[0] = EV_CHN_VOICE; - synth_write_message[1] = synth_message_curr_device; - synth_write_message[2] = synth_message_buffer[0] & 0xf0; - synth_write_message[3] = synth_message_buffer[0] & 0x0f; - synth_write_message[4] = synth_message_buffer[1]; - synth_write_message[5] = synth_message_buffer[2]; - synth_write_message[6] = 0; - synth_write_message[7] = 0; - - int status; - status = ::write(getFd(), synth_write_message, sizeof(synth_write_message)); - - if (status > 0) { - return 1; - } else { - return 0; - } -} - - - -////////////////////////////// -// -// Sequencer_oss::transmitCommonMessage -- send a common-type MIDI -// message to an internal synthesizer. -// - -int Sequencer_oss::transmitCommonMessage(void) { - synth_write_message[0] = EV_CHN_COMMON; - synth_write_message[1] = synth_message_curr_device; - synth_write_message[2] = synth_message_buffer[0] & 0xf0; - synth_write_message[3] = synth_message_buffer[0] & 0x0f; - - switch (synth_write_message[2]) { - case 0xB0: // Control change - synth_write_message[4] = synth_message_buffer[1]; - synth_write_message[5] = 0; - synth_write_message[6] = synth_message_buffer[2]; - synth_write_message[7] = 0; - break; - case 0xC0: // Patch change - case 0xD0: // Channel pressure - synth_write_message[4] = synth_message_buffer[1]; - synth_write_message[5] = 0; - synth_write_message[6] = 0; - synth_write_message[7] = 0; - break; - case 0xE0: // Pitch wheel - synth_write_message[4] = 0; - synth_write_message[5] = 0; - synth_write_message[6] = synth_message_buffer[1]; - synth_write_message[7] = synth_message_buffer[2]; - break; - default: - std::cerr << "Unknown Common MIDI message" << std::endl; - exit(1); - } - - int status; - status = ::write(getFd(), synth_write_message, sizeof(synth_write_message)); - - if (status > 0) { - return 1; - } else { - return 0; - } -} - - - -#endif // LINUX -// md5sum: bc7b96041137b22f3d3c35376b5912c6 - Sequencer_oss.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/src/SigTimer.cpp b/extensions/gripd/src/midiio/src/SigTimer.cpp deleted file mode 100644 index 5786098b46d70127371778333b2b246ecd9f511e..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/src/SigTimer.cpp +++ /dev/null @@ -1,498 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Thanks to: Erik Neuenschwander <erikn@leland.stanford.edu> -// for Windows 95 assembly code for Pentium clock cycles. -// Ozgur Izmirli <ozgur@ccrma.stanford.edu> -// for concept of periodic timer. -// Creation Date: Mon Oct 13 11:34:57 GMT-0800 1997 -// Last Modified: Tue Feb 10 21:05:19 GMT-0800 1998 -// Last Modified: Sat Sep 19 15:56:48 PDT 1998 -// Last Modified: Mon Feb 22 04:44:25 PST 1999 -// Last Modified: Sun Nov 28 12:39:39 PST 1999 (added adjustPeriod()) -// Filename: .../sig/code/control/SigTimer/SigTimer.cpp -// Web Address: http://www-ccrma.stanford.edu/~craig/improv/src/SigTimer.cpp -// Syntax: C++ -// -// Description: This class can only be used on Motorola Pentinum 75 Mhz -// chips or better because the timing information is -// extracted from the clock cycle count from a register -// on the CPU itself. This class will estimate the -// speed of the computer, but it would be better if there -// was a way of finding out the speed from some function. -// This class is used primarily for timing of MIDI input -// and output at a millisecond resolution. -// - - -#include "SigTimer.h" -#include <iostream> -#include <stdlib.h> - - -// get Sleep or usleep function definition for measureCpu function: -#ifdef VISUAL - #define WIN32_LEAN_AND_MEAN - #include <windows.h> - #undef WIN32_LEAN_AND_MEAN -#else - #include <unistd.h> -#endif - - -// declare static variables -int64bits SigTimer::globalOffset = 0; -int SigTimer::cpuSpeed = 0; // in cycles per second - - - -////////////////////////////// -// -// SigTimer::SigTimer -// - -SigTimer::SigTimer(void) { - if (globalOffset == 0) { // coordinate offset between timers - globalOffset = clockCycles(); - } - if (cpuSpeed <= 0) { // initialize CPU speed value - cpuSpeed = measureCpuSpeed(1); - if (cpuSpeed <= 0) { - cpuSpeed = 100000000; - } - } - - offset = globalOffset; // initialize the start time of timer - ticksPerSecond = 1000; // default of 1000 ticks per second - period = 1000.0; // default period of once per second -} - - -SigTimer::SigTimer(int aSpeed) { - if (globalOffset == 0) { - globalOffset = clockCycles(); - } - cpuSpeed = aSpeed; - - offset = globalOffset; - ticksPerSecond = 1000; - period = 1000.0; // default period of once per second -} - - -SigTimer::SigTimer(SigTimer& aTimer) { - offset = aTimer.offset; - ticksPerSecond = aTimer.ticksPerSecond; - period = aTimer.period; -} - - - -////////////////////////////// -// -// SigTimer::~SigTimer -// - -SigTimer::~SigTimer() { - // do nothing -} - - - -////////////////////////////// -// -// SigTimer::adjustPeriod -- adjust the period of the timer. -// - -void SigTimer::adjustPeriod(double periodDelta) { - offset -= (int64bits)(getCpuSpeed() * getPeriod() * periodDelta / - getTicksPerSecond()); -} - - - -////////////////////////////// -// -// SigTimer::clockCycles -- returns the number of clock cycles since last reboot -// HARDWARE DEPENDENT -- currently for Pentiums only. -// static function. -// - - -int64bits SigTimer::clockCycles() { -#ifndef VISUAL - int64bits output; - - // For Pentiums, you can get the number of clock cycles elapsed - // since the last reboot with the following assembler code: - __asm__ volatile (".byte 0x0f, 0x31" : "=A" (output)); - -#else - int64bits output; - unsigned long high_end, low_end; - __asm { - __asm _emit 0x0f __asm _emit 0x31 - mov high_end, edx - mov low_end, eax - } - output = high_end; - output = output << 32; - output += low_end; -#endif - - return output; -} - - - -////////////////////////////// -// -// SigTimer::expired -- returns the integral number of periods -// That have passed since the last update or reset. -// See getPeriodCount which returns a floating point -// count of the period position. -// - - -int SigTimer::expired(void) const { - return (int)(getTime()/period); -} - - - -////////////////////////////// -// -// SigTimer::getCpuSpeed -- returns the CPU speed of the computer. -// (static function) -// - -int SigTimer::getCpuSpeed(void) { - return cpuSpeed; -} - - - -////////////////////////////// -// -// SigTimer::getPeriod -- returns the timing period of the timer, -// if the timer is being used as a periodic timer. -// - -double SigTimer::getPeriod(void) const { - return period; -} - - - -////////////////////////////// -// -// SigTimer::getPeriodCount -- returns the current period count -// of the timer as a double. Similar in behavior to expired -// function but lists the current fraction of a period. -// - -double SigTimer::getPeriodCount(void) const { - return (double)getTime()/period; -} - - - -////////////////////////////// -// -// SigTimer::getTempo -- returns the current tempo in terms -// of beats (ticks) per minute. -// - -double SigTimer::getTempo(void) const { - return getTicksPerSecond() * 60.0 / getPeriod(); -} - - - -////////////////////////////// -// -// SigTimer::getTicksPerSecond -- return the number of ticks per -// second. -// - -int SigTimer::getTicksPerSecond(void) const { - return ticksPerSecond; -} - - - -////////////////////////////// -// -// SigTimer::getTime -- returns time in milliseconds by default. -// time can be altered to be in some other unit of time -// by using the setTicksPerSecond function. -// (Default is 1000 ticks per second.) -// - -int SigTimer::getTime(void) const { - return (int)((clockCycles()-offset)/getFactor()); -} - - - -////////////////////////////// -// -// SigTimer::getTimeInSeconds -// - -double SigTimer::getTimeInSeconds(void) const { - return ((clockCycles()-offset)/(double)cpuSpeed); -} - - - -////////////////////////////// -// -// SigTimer::getTimeInTicks -// - -int SigTimer::getTimeInTicks(void) const { - return (int)((clockCycles()-offset)/getFactor()); -} - - - -////////////////////////////// -// -// SigTimer::measureCpuSpeed -- returns the number of clock cycles in -// one second. Accuracy to about +/- 5%. -// default value: quantize = 0. -// - -int SigTimer::measureCpuSpeed(int quantize) { - int64bits a, b; - a = clockCycles(); - #ifdef VISUAL - Sleep(1000/4); - #else - usleep(1000000/4); - #endif - b = clockCycles(); - - int output = (int)(4*(b-a-140100-450000)); - - if (quantize) { - // quantize to a known computer CPU speed - if (output < 78000000) { - output = 75000000; - } else if (output < 95000000) { - output = 90000000; - } else if (output < 110000000) { - output = 100000000; - } else if (output < 140000000) { - output = 133000000; - } else if (output < 155000000) { - output = 150000000; - } else if (output < 180000000) { - output = 166000000; - } else if (output < 215000000) { - output = 200000000; - } else if (output < 250000000) { - output = 233000000; - } else if (output < 280000000) { - output = 266000000; - } else if (output < 325000000) { - output = 300000000; - } else if (output < 375000000) { - output = 350000000; - } else if (output < 425000000) { - output = 400000000; - } else { - output = output; - } - } // end if quantize - - return output; -} - - - -////////////////////////////// -// -// SigTimer::reset -- set the timer to 0. -// - -void SigTimer::reset(void) { - offset = clockCycles(); -} - - - -////////////////////////////// -// -// SigTimer::setCpuSpeed -- You can also vary the CPU speed here to cause the -// getTime function to output different units of time, but the -// setTicksPerSecond is a more appropriate place to do such a thing. -// - -void SigTimer::setCpuSpeed(int aSpeed) { - if (aSpeed <= 0) { - std::cerr << "Error: Cannot set the cpu speed to be negative: " - << aSpeed << std::endl; - exit(1); - } - cpuSpeed = aSpeed; -} - - - -////////////////////////////// -// -// SigTimer::setPeriod -- sets the period length of the timer. -// input value cannot be less than 1.0. -// - -void SigTimer::setPeriod(double aPeriod) { - if (aPeriod < 1.0) { - std::cerr << "Error: period too small: " << aPeriod << std::endl; - exit(1); - } - period = aPeriod; -} - - - -////////////////////////////// -// -// SigTimer::setPeriodCount -- adjusts the offset time according -// to the current period to match the specified period count. -// - -void SigTimer::setPeriodCount(double aCount) { - offset = (int64bits)(clockCycles() - aCount * getPeriod() * - getCpuSpeed() / getTicksPerSecond()); -} - - - -////////////////////////////// -// -// SigTimer::setTempo -- sets the period length in terms of -// beats per minute. -// - -void SigTimer::setTempo(double beatsPerMinute) { - if (beatsPerMinute < 1.0) { - std::cerr << "Error: tempo is too slow: " << beatsPerMinute << std::endl; - exit(1); - } - double count = getPeriodCount(); - period = getTicksPerSecond() * 60.0 / beatsPerMinute; - setPeriodCount(count); -} - - - -////////////////////////////// -// -// SigTimer::setTicksPerSecond -// - -void SigTimer::setTicksPerSecond(int aTickRate) { - if (aTickRate <= 0) { - std::cerr << "Error: Cannot set the tick rate to be negative: " - << aTickRate << std::endl; - exit(1); - } - ticksPerSecond = aTickRate; -} - - - -////////////////////////////// -// -// SigTimer::start -// - -void SigTimer::start(void) { - reset(); -} - - - -////////////////////////////// -// -// SigTimer::sync -// - -void SigTimer::sync(SigTimer& aTimer) { - offset = aTimer.offset; -} - - - -////////////////////////////// -// -// SigTimer::update -- set the timer start to the next period. -// - -void SigTimer::update(void) { - if (getTime() >= getPeriod()) { - offset += (int64bits)(getPeriod() * getFactor()); - } -} - - -// update(int) will do nothing if the periodCount is greater than -// than the expired period count - -void SigTimer::update(int periodCount) { - if (periodCount > expired()) { - return; - } else { - offset += (int64bits)(getPeriod() * getFactor() * periodCount); - } -} - - - -/////////////////////////////////////////////////////////////////////////// -// -// protected functions: -// - - -////////////////////////////// -// -// SigTimer::getFactor -- -// - -double SigTimer::getFactor(void) const { - return (double)((double)getCpuSpeed()/(double)getTicksPerSecond()); -} - - - -/////////////////////////////////////////////////////////////////////////// -// -// Miscellaneous timing functions are located here untill a better -// place can be found: -// - -void millisleep(int milliseconds) { - #ifdef VISUAL - Sleep(milliseconds); - #else - usleep( milliseconds * 1000); - #endif -} - - -void millisleep(float milliseconds) { - #ifdef VISUAL - // cannot convert to microseconds in Visual C++ yet. - // Tell me how and I'll fix the following line - Sleep((unsigned long)milliseconds); - #else - usleep((int)(milliseconds * 1000.0)); - #endif -} - - - - -// md5sum: b35e9e6a8d6fd16636d7fca5d565f284 - SigTimer.cpp =css= 20030102 diff --git a/extensions/gripd/src/midiio/src/Voice.cpp b/extensions/gripd/src/midiio/src/Voice.cpp deleted file mode 100644 index ed05bcecafbc49275c654e5db5d3a6a2ec426797..0000000000000000000000000000000000000000 --- a/extensions/gripd/src/midiio/src/Voice.cpp +++ /dev/null @@ -1,334 +0,0 @@ -// -// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> -// Creation Date: Sun Oct 11 18:39:14 PDT 1998 -// Last Modified: Sun Oct 11 18:39:18 PDT 1998 -// Filename: ...sig/maint/code/control/Voice/Voice.cpp -// Web Address: http://www-ccrma.stanford.edu/~craig/improv/src/Voice.cpp -// Syntax: C++ -// -// Description: The Voice class is a MIDI output class which keeps -// track of the last note played in to it. If the last -// note was not turned off when a new note is played, -// then the old note will be turned off before the -// new note is played. -// - -#include "Voice.h" - - -// declare static variables: -SigTimer Voice::timer; - -////////////////////////////// -// -// Voice::Voice -// - -Voice::Voice(int aChannel) { - chan = oldChan = aChannel; - vel = oldVel = key = oldKey = 0; -} - - -Voice::Voice(const Voice& aVoice) { - chan = aVoice.chan; - vel = aVoice.vel; - key = aVoice.key; - oldChan = 0; - oldVel = 0; - oldKey = 0; -} - - -Voice::Voice(void) { - chan = oldChan = key = oldKey = vel = oldVel = 0; -} - - -////////////////////////////// -// -// Voice::~Voice -// - -Voice::~Voice() { - off(); -} - - - -////////////////////////////// -// -// Voice::cont -- use default channel if none specified for -// the continuous controller message. -// - -void Voice::cont(int controller, int data) { - MidiOutput::cont(getChannel(), controller, data); -} - - - -////////////////////////////// -// -// Voice::getChan -- returns the channel of the voice. -// Synonym for getChannel. -// - -int Voice::getChan(void) const { - return chan; -} - - - -////////////////////////////// -// -// Voice::getChannel -- returs the channel of the voice. -// - -int Voice::getChannel(void) const { - return chan; -} - - - -////////////////////////////// -// -// Voice::getKey -- returns the current MIDI key number of the voice. -// Synonym for getKeynum. -// - -int Voice::getKey(void) const { - return key; -} - - - -////////////////////////////// -// -// Voice::getKeynum -- returns the current MIDI key number of the voice. -// - -int Voice::getKeynum(void) const { - return key; -} - - -////////////////////////////// -// -// Voice::getOffTime -- returns the last note off message sent -// out of the voice object -// - -int Voice::getOffTime(void) const { - return offTime; -} - - - -////////////////////////////// -// -// Voice::getOnTime -- returns the last note on message sent -// out of the voice object. -// - -int Voice::getOnTime(void) const { - return onTime; -} - - - -////////////////////////////// -// -// Voice::getVel -- returns the current velocity of the MIDI key. -// Synonym for getVelocity. -// - -int Voice::getVel(void) const { - return vel; -} - - - -////////////////////////////// -// -// Voice::getVelocity -- returns the current velocity of the MIDI key. -// - -int Voice::getVelocity(void) const { - return vel; -} - - - -////////////////////////////// -// -// Voice::off -// - -void Voice::off(void) { - if (status() != 0) { - offTime = timer.getTime(); - MidiOutput::play(oldChan, oldKey, 0); - oldVel = 0; - } -} - - - -////////////////////////////// -// -// Voice::pc -- use default channel if none is specified -// - -void Voice::pc(int aTimbre) { - MidiOutput::pc(getChannel(), aTimbre); -} - - - -////////////////////////////// -// -// Voice::play -// - -void Voice::play(int aChannel, int aKeyno, int aVelocity) { - off(); - MidiOutput::play(aChannel, aKeyno, aVelocity); - oldChan = aChannel; - oldKey = aKeyno; - oldVel = aVelocity; - setChannel(aChannel); - setKeynum(aKeyno); - setVelocity(aVelocity); - - if (aVelocity != 0) { - onTime = timer.getTime(); - } else { - offTime = timer.getTime(); - } -} - - -void Voice::play(int aKeyno, int aVelocity) { - off(); - MidiOutput::play(getChannel(), aKeyno, aVelocity); - oldChan = getChannel(); - oldKey = aKeyno; - oldVel = aVelocity; - setKeynum(aKeyno); - setVelocity(aVelocity); - - if (aVelocity != 0) { - onTime = timer.getTime(); - } else { - offTime = timer.getTime(); - } -} - - -void Voice::play(void) { - off(); - MidiOutput::play(getChannel(), getKey(), getVel()); - oldChan = getChannel(); - oldKey = getKey(); - oldVel = getVel(); - - if (getVel() != 0) { - onTime = timer.getTime(); - } else { - offTime = timer.getTime(); - } -} - - - -////////////////////////////// -// -// Voice::setChan -- set the MIDI channel. Synonym for setChannel. -// - -void Voice::setChan(int aChannel) { - chan = aChannel; -} - - - -////////////////////////////// -// -// Voice::setChannel -- set the MIDI channel of the voice. -// - -void Voice::setChannel(int aChannel) { - chan = aChannel; -} - - - -////////////////////////////// -// -// Voice::setKey -- set the keynumber of the voice -// Synonym for setKeyno. -// - -void Voice::setKey(int aKeynum) { - key = aKeynum; -} - - - -////////////////////////////// -// -// Voice::setKeynum -- set the keynumber of the voice -// - -void Voice::setKeynum(int aKeynum) { - key = aKeynum; -} - - - -////////////////////////////// -// -// Voice::setVel -- set the MIDI velocity of the voice. -// Synonym for setVelocity. -// - -void Voice::setVel(int aVelocity) { - vel = aVelocity; -} - - - -////////////////////////////// -// -// Voice::setVelocity -// - -void Voice::setVelocity(int aVelocity) { - vel = aVelocity; -} - - - -////////////////////////////// -// -// Voice::status -- returns zero if off or positive if on. -// - -int Voice::status(void) const { - return oldVel; -} - - - -////////////////////////////// -// -// Voice::sustain -- uses default channel if none specified. -// - -void Voice::sustain(int aStatus) { - MidiOutput::sustain(getChannel(), aStatus); -} - - -// md5sum: d02ca41ae3b4e07efe7fedc720e52573 - Voice.cpp =css= 20030102 diff --git a/extensions/gui/ix/README b/extensions/gui/ix/README deleted file mode 100644 index 1e979cd7256729434b8269dec032616722a7bbfe..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/README +++ /dev/null @@ -1,13 +0,0 @@ -pd_base.tk: a pure TCL/Tk PD gui -pd_objects.tk: objects for above GUI - -*.wid: original widget prototypes, considered 'stable', all are working on: - - linux - \- pd 0.0.39 - \- toxy 0.1.19 - \- tk 8.5 - \- handful of tk extensions: grep require *.wid - - -screenshots: -http://whats-your.name/pd/gui/ diff --git a/extensions/gui/ix/index.psp b/extensions/gui/ix/index.psp deleted file mode 100644 index 72c9f175caf9ae93651dffdc921b3fc1d25d5093..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/index.psp +++ /dev/null @@ -1,88 +0,0 @@ -<html><head><title>::ix::{gui}</title></head> -<% -import random, re, string -sys.stdout=req -def rc(): return "#%06x" % random.randint(0,16777216) -things = {'control' : { - 'kbd' : {'desc' : 'resizable, velocity sensitive keyboard. right click adds a note to the chord, middle click resets..'}, - 'grid' : {'desc' : 'x-y control surface'}, - 'ngrid' : {'desc' : 'multi-parameter x-y control surface'}, - 'filter' : {'desc' : """since im no mathemetician, biquad was very useless. straight RBJ rip here, middle click on the squares to change filter type, right click drag to adjust Q.."""}, - 'nob' : {'desc' : """ this was the first knob but it requires Tkzinc"""}, - 'knob' : {'desc' : """knob..multiple levels of precision: left button 1.0, middle 10.0, right 0.1"""} - }, 'edit' : { - 'mat' : {'desc' : 'general purpose editing surface'}, - 'lg' : {'desc' : 'multi-set vector editor'}, - 'tile' : {'desc' : 'drum/grid/list editor'} - }, 'analyze' : { - 'sp' : {'desc' : 'rgb-pixmap'}, - 'spectrum' : {'desc' : 'dual-band spectrum graph'}, - 'img' : {'desc' : """ -create an empty img and you will get the broken-image icon, which sets up dnd - just drop some images in<br><br> -they output a symbol which is filename sans extension when clicked.. -"""} - }, 'container' : { - 'dd' : {'desc' : 'drag\'n\'drop'}, - 'tree' : {'desc': 'heirarchical data management'}, - 'q' : {'desc' : 'queue'}, - 'dm' : {'desc' : 'dropdownmenu'} - }, '?' : { - 'README' :{'desc' : """ - these are my pd gui objects, designed to be patchable on the fly for modular, rearrangable interfaces for composition, analysis, whatever you need.. suggested input is a 3 button mouse or a touch-screen (although i haven't tested on one, so if you have an extra, let me know..) - to use them in a patch, if the widget is 'thingy', create an object [widget thingy thingy1]. the id doesnt have to be unique, but its not a bad idea.. all the attributes are settable via normal messages... some might like an inspector, this wouldnt be too hard to add..also id love if X windows and the toolkits above supported multiple cursors with independent focii for larger or multipoint-touch applications, but such is not the case currently...so enjoy the 2d single-cursor goodness - """}, 'INSTALL' : {'desc' : """ -<b>cd /usr/local/lib/pd && cvs -d :pserver:anonymous@cvs.sf.net:/cvsroot/pure-data co extensions/gui/ix</b><br><b>echo -path /usr/local/lib/pd/extensions/gui/ix >> ~/.pdrc</b><br> -install any missing DEPS -"""}, 'DEPS' : {'desc' : """ -tcl >=8.5:<br> -<b>cvs -d :pserver:anonymous@cvs.sf.net:/cvsroot/tcl co tcl <font size=-1>&& cd tcl/unix&& ./configure && make install & cd ../..</font></b><br> -<b>cvs -d :pserver:anonymous@cvs.sf.net:/cvsroot/tktoolkit co tk <font size=-1>&& cd tk/unix&& ./configure --enable-xft && make install & cd ../..</font></b><br><br> -widgets are currently hosted by the [widget] external<br><b>cvs -d :pserver:anonymous@cvs.sf.net:/cvsroot/pure-data co externals/miXed <font size=-1>&& cd externals/miXed && make && cp bin/* /usr/local/lib/pd/extra</font></b><br><i>-or-</i> checkout all of externals and in <font size=-1><b>cd externals/build && scons install</b></font><br><br>a cornucopia of Tk libraries are utilised<br> -<b>for ext in blt snack tkdnd tkimg tkpath tktable tktreectrl ; do cvs -d :pserver:anonymous@cvs.sf.net:/cvsroot/$ext co $ext; cd $ext && ./configure && make install && cd ..; done</b><br> -last i checked tkpath was actually a module in tclbitprint<br>and thats all.. -"""} - }} - -script = [] -for cat in things.iterkeys(): - script.append("""document.getElementById('%s_items').style.display='none'""" % cat) - script.append("""document.getElementById('cat_%s').style.backgroundColor='gray'""" % cat) -print "<script>\nfunction hideCats() {\n" + str.join(";\n",script) + "\n}\n</script>" - -script = [] -for cat in things.iterkeys(): - for item in things[cat].iterkeys(): - script.append("""document.getElementById('item_info_%s').style.display='none'""" % item) - script.append("""document.getElementById('item_%s').style.backgroundColor='gray'""" % item) -print "<script>\nfunction hideItems() {\n" + str.join(";\n",script) + "\n}\n</script>" - -def getprops(item): - props = "" - for line in re.findall(r"#\.[^@]*\n",open("/usr/local/lib/pd/extensions/gui/ix/" + item + ".wid").read()): - props += re.sub("#\.","",line) - return props - -%> -<style>span {font: bitstream vera sans, tahoma, helvetica, sans-serif}</style> -<body bgcolor=<%print rc()%> topmargin=0 leftmargin=0 marginwidth=0 marginheight=0> -<div style="text-align: right; background-color:<%print rc()%>" width=100%> -<% -for cat in things.iterkeys(): - print """<span id="cat_%(cat)s" style="background-color: gray; padding: 6px"><span style="font-size: 14px; padding: 4px; color: %(fg)s; background-color: %(bg)s" onmouseover="hideCats();document.getElementById('%(cat)s_items').style.display='';document.getElementById('cat_%(cat)s').style.backgroundColor='white'"> - %(cat)s - </span></span> """ % {'fg' : rc(), 'bg' : rc(), 'cat' : cat} - -print """</div><div style="padding: 10px; text-align: right; background-color %(bg)s">""" % {'bg' : rc()} - -for cat in things.iterkeys(): - print """<span id=%(cat)s_items style="display: none">""" % {'cat' : cat} - for item in things[cat].iterkeys(): - print """<span id=item_%(item)s style="padding: 3px; backgound-color: black" onmouseover="hideItems();document.getElementById('item_info_%(item)s').style.display='';document.getElementById('item_%(item)s').style.backgroundColor='white'">%(item)s</span>""" % {'item' : item} - print "</span>" - -print "<br>" - -for cat in things.iterkeys(): - for item in things[cat].iterkeys(): - print """<div id=item_info_%(item)s style="display: none"><div style="float: left"><img src=c.png onmouseover="document.getElementById('img_%(item)s').src='%(item)s.PNG'"><img src=a.png onmouseover="document.getElementById('img_%(item)s').src='%(item)s.gif'"><img id=img_%(item)s src=%(item)s.PNG style="float: left; border-width: 12px; border-style: solid; border-color: gray"></div><div style="padding-top: 4px"><span style="background-color: #cccccc; color: black">%(content)s</span><br><br><span style="color: #cccccc; background-color: black">%(props)s</span></div></div>""" % {'item' : item, 'props' : getprops(item), 'content' : things[cat][item]['desc']} - -%> diff --git a/extensions/gui/ix/osc.tcl b/extensions/gui/ix/osc.tcl deleted file mode 100644 index e5830ec427444b321a73c2e9d682a01f4f3c66f7..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/osc.tcl +++ /dev/null @@ -1,43 +0,0 @@ -#OSC tcl 2005 ix -package require udp -namespace eval osc { - proc encode {type data} { - switch $type { - i {set format I } - f {set format R } - s {set len [string length $data] - set format a[expr $len + 4 - $len % 4]} - } - return [binary format $format $data] - } - proc message {args} { - set path [encode s [lindex $args 0]] - set typetags "," - set body "" - foreach arg [lrange $args 1 end] { - if [string is integer $arg] { - set type i - } elseif [string is double $arg] { - set type f - } else { - set type s - } - append typetags $type - append body [encode $type $arg] - } - set typetags [encode s $typetags] - return $path$typetags$body - } - proc connect {host port} { - set s [udp_open] - fconfigure $s -remote [list $host $port] -buffering none -translation binary - return $s - } - proc disconnect {socket} { - close $socket - } - proc send {socket msg} { - puts -nonewline $socket $msg - } - -} diff --git a/extensions/gui/ix/pd_base.tk b/extensions/gui/ix/pd_base.tk deleted file mode 100755 index 84e07402c36df1ec47ebb713991141ae4d567e6f..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/pd_base.tk +++ /dev/null @@ -1,398 +0,0 @@ -# http://whats-your.name/pd - -foreach pkg {Img snack tkdnd tkpath} { - if {[catch {package require $pkg}]} {set has_$pkg 0} {set has_$pkg 1}} - -source pre8.5.tcl - -namespace eval ::pd { - source pd_objects.tk - - foreach type [dict keys $obj] { - if {[dict exists $obj $type methods]} { - eval [dict get $obj $type methods]}} - - proc rc {} {return [format "\#%06x" [expr "int(floor(rand() * 16777216.))"]]} - proc rgb {} {return [list [expr "int(floor(rand() * 256))"] [expr "int(floor(rand() * 256))"] [expr "int(floor(rand() * 256))"]]} - proc lighten {rgb r} {set l {}; foreach c $rgb {lappend l [expr {(256 - $c) * $r + $c}]}; return $l} - proc darken {rgb r} {set l {}; foreach c $rgb {lappend l [expr {$c - ($c * $r)}]}; return $l} - proc color {rgb} {return [format "\#%02x%02x%02x" [expr int([lindex $rgb 0])] [expr int([lindex $rgb 1])] [expr int([lindex $rgb 2])]]} - proc hsvToRgb {hue sat value} { - set v [format %.0f [expr {255.0*$value}]] - if {$sat == 0} {return "$v $v $v"} else { - set hue [expr {$hue*6.0}] - if {$hue >= 6.0} {set hue 0.0} - scan $hue. %d i - set f [expr {$hue-$i}] - set p [format %.0f [expr {255.0*$value*(1 - $sat)}]] - set q [format %.0f [expr {255.0*$value*(1 - ($sat*$f))}]] - set t [format %.0f [expr {255.0*$value*(1 - ($sat*(1 - $f)))}]] - switch $i { - 0 {return "$v $t $p"} - 1 {return "$q $v $p"} - 2 {return "$p $v $t"} - 3 {return "$p $q $v"} - 4 {return "$t $p $v"} - 5 {return "$v $p $q"} - default {error "i value $i is out of range"}}}} - proc random_txt {n} { - set i 0 - set text "" - while {$i < $n} { - set int [expr "int(floor(rand()*62))"] - if {$int < 10} {incr int 48} elseif {$int < 36} {incr int 55} else {incr int 61} - set text "$text[format %c $int]" - incr i} - return $text} - option add *borderWidth 0 - option add *font {{bitstream vera sans} 10} - - proc item_new {_ a} { - variable "" - variable obj - foreach local [dict keys $a] {set $local [dict get $a $local]} - if {[dict exists $obj $type attributes]} {set da [dict get $obj $type attributes]} {set da {}} - if {$id eq "-"} { - if {[dict keys $($_)] eq ""} {set id 0} else {set id -1 - while true {if {[lsearch [dict keys $($_)] [incr id]] == -1} {break}}}} - - if {![info exists x]} {set x 13; set y 31} - if {[dict exists $da x]} {set sx [dict get $da x]} {set sx 0} - if {[dict exists $da y]} {set sy [dict get $da y]} {set sy 0} - - update $_ $id abs [dict merge [dict merge [dict merge {class item ins 0 outs 0 color {128 128 128}} $da] [dict remove $a id]] [dict create x $x xx [expr $x + $sx] y $y yy [expr $y + $sy]]] 0 - item_draw $_ $id - return $id} - - proc item_draw {_ is} { - variable "" - variable obj - if {$is eq "all"} {set is [dict keys $($_)]} - foreach id $is { - set type [dict get $($_) $id type] - if {[dict exists $obj $type init]} { - foreach local [dict keys [dict get $($_) $id]] { - set $local [dict get $($_) $id $local]} - set tags [list $class i$id $id] - set rgb $color; set color [color $rgb] - eval [dict get $obj $type init] - if {$class eq "item" && ($ins > 0 || $outs > 0)} { - eval [dict get $obj io init] - } - } - redraw $_ $id - } - } - - proc redraw {_ items} { - variable "" - variable obj - switch $items { - all {set items [dict keys $($_)]} - default {}} - foreach id $items { - foreach local [dict keys [dict get $($_) $id]] { - set $local [dict get $($_) $id $local]} - set x [tr $_ x t $x];set y [tr $_ y t $y];set xx [tr $_ x t $xx];set yy [tr $_ y t $yy] - if {[expr $x > $xx]} {lassign "$x $xx" xx x} - if {[expr $y > $yy]} {lassign "$y $yy" yy y} - set sx [expr $xx - $x]; set sy [expr $yy - $y] - if {[lsearch [getsel $_] $id] >= 0} {set rgb {233 233 233};set color [set [l $_ canvas sc]];set selected 1} else { - set rgb [dict get $($_) $id color];set color [color $rgb];set selected 0} - set atags [concat $class i$id $id] - set tags [concat $class && i$id && $id] - set item [$_ find withtag $tags] - if {[dict exists $obj $type tags]} { - foreach tag [dict get $obj $type tags] { - set $tag [$_ find withtag "$tags && $tag"]}} - if {[dict exists $obj $type redraw]} { - eval [dict get $obj $type redraw]} - if {$class eq "item" && ($ins > 0 || $outs > 0)} { - eval [dict get $obj io redraw] - foreach i [dict keys $($_)] { - if {[dict get $($_) $i class] eq "cable"} { - if {[lindex [dict get $($_) $i from] 0] eq $id || [lindex [dict get $($_) $i to] 0] eq $id} { - redraw $_ $i - } - } - } - } - } - } - - proc item_delete {_ {items ""}} { - variable "" - variable obj - if {$items eq ""} {set items [getsel $_]} - foreach id $items { - foreach i [$_ find withtag i$id] { - $_ delete $i - } - set type [dict get $($_) $id type] - if {[dict exists $obj $type destroy]} { - eval [dict get $obj $type destroy]} - dict unset ($_) $id - set sel [lremove [dict get $($_) canvas sel] $id]; up $_ canvas sel - send "delete $_:$id" - } - } - - proc update {_ item r u redraw} { - variable "" - foreach a [dict keys $u] { - switch $r { - abs {dict set ($_) $item $a [dict get $u $a]} - rel {dict set ($_) $item $a [expr {[dict get $($_) $item $a] + [dict get $u $a]}]} - } -# send [concat update $_:$item $a [dict get $($_) $item $a]] - } - send [concat update $_:$item $u] - if {$redraw == 1} {redraw $_ $item} - } - - proc up {_ id args} { - variable "" - foreach arg $args { - upvar $arg var - dict set ($_) $id $arg $var - send [concat update $_:$id $arg $var] - } - } - - proc item_mua {_ r u redraw {items -}} { - variable "" - if {$items eq "-"} {set items [getsel $_]} - foreach item $items {update $_ $item $r $u $redraw} - } - - proc l {_ id args} { - variable "" - foreach arg $args { - upvar $arg var - set var [dict get $($_) $id $arg] - } - return $args - } - - proc msg {} { - if {![winfo exists .msg]} { - toplevel .msg - grid [entry .msg.text] - bind .msg.text <KeyPress-Return> {::pd::send [.msg.text get]}}} - - proc inspector {_} { - variable "" - set p .ic - if {![winfo exists $p]} { - toplevel $p - if {[info exists ($_:inspect)]} {unset ($_:inspect)}}} - - proc inspect {_ id} { - set p .ic - if {![winfo exists $p]} {return} - variable "" - if {![dict exists $($_) $id]} {return} - set keys [dict keys [dict get $($_) $id]] - if {![info exists ($_:inspect)] || ($($_:inspect:type) ne [dict get $($_) $id type])} { - foreach c [winfo children $p] {destroy $c} - set n 0 - foreach k [concat id $keys] { - entry $p.$k -width 8 -bd 0 -font {{Bitstream Vera Sans} 11} - $p.$k insert 0 $k - $p.$k configure -state disabled - entry $p.${k}v -width 16 -bd 0 -bg gray94 -font {{Bitstream Vera Sans} 10} - if {$n == 0} {set cmd "::pd::inspect $_ \[$p.${k}v get\]";set cmdT $cmd} { - set cmd "::pd::item_mua $_ abs \[dict create $k \[$p.${k}v get\] \] 1 \[$p.idv get\]" - set cmdT "::pd::item_mua $_ abs \[dict create $k \[$p.${k}v get\] \] 1"} - bind $p.${k}v <Any-KeyRelease> $cmd - bind $p.${k}v <Tab> $cmdT - grid $p.$k $p.${k}v -sticky nsew - grid columnconfigure $p 1 -weight 3 - grid columnconfigure $p 0 -weight 1 - grid rowconfigure $p $n -weight 1 - incr n - } - set ($_:inspect:type) [dict get $($_) $id type] - } - set ($_:inspect) $id - $p.idv delete 0 end - $p.idv insert 0 $id - foreach k $keys { - $p.${k}v delete 0 end - $p.${k}v insert 0 [dict get $($_) $id $k]}} - - - - proc rmenu {_ x y X Y} { - variable "" - variable obj - destroy $_.rmenu - if {[winfo exists $_.rmenu] != 1} { - set m [menu $_.rmenu -tearoff yes] - - - $m add cascade -label "edit" -menu [set me [menu $m.edit -tearoff no]] - foreach a {copy cut paste selecta} { - $me add command -label $a -command "::pd::clip $_ $a"} - - $m add cascade -label "object" -menu [set mo [menu $m.object -tearoff no]] - foreach type [dict keys $obj] { - $mo add command -label $type -command "::pd::item_new $_ \{id - type $type x [tr $_ x i $x] y [tr $_ y i $y]\}"} - - $m add cascade -label "view" -menu [set mv [menu $m.view -tearoff no]] - $mv add command -label "zoom to fit" -command "::pd::viewpoint $_ {action fit}" - $mv add command -label "flip x" -command "::pd::viewpoint $_ {action mirror_x}" - $mv add command -label "flip y" -command "::pd::viewpoint $_ {action mirror_y}" - $mv add command -label "reset" -command "::pd::viewpoint $_ {action reset}" - - $m add command -label reload -command {source pd_base.tk} - $m add command -label "console" -command {source /usr/local/bin/tkcon.tcl; tkcon show} - $m add command -label "inspector" -command "::pd::inspector $_" - $m add command -label "msg" -command "::pd::msg" - } else { - # $_.rmenu entryconfigure 0 -label $x - } - - tk_popup $_.rmenu $X $Y - } - - proc tr {_ d inv v} { - variable "" - array set dm {x width y height} - l $_ canvas xa xb ya yb - switch $inv { - t {return [expr ($v - $${d}a) / ($${d}b - $${d}a + 0.0) * [winfo $dm($d) $_]]} - i {return [expr ($${d}b - $${d}a) * $v /([winfo $dm($d) $_] + 0.0) + $${d}a]} - d {return [expr ($${d}b - $${d}a) * $v /([winfo $dm($d) $_] + 0.0)]} - id {return [expr $v / ($${d}b - $${d}a + 0.0) * [winfo $dm($d) $_]]}}} - - proc viewpoint {_ opts} { - variable "" - l $_ canvas xa xb ya yb xao yao xbo ybo - switch [dict get $opts action] { - fit { - lassign [$_ bbox item] xa ya xb yb - foreach z {xa xb ya yb} {set $z [tr $_ [string range $z 0 0] i [set $z]]} - } - mirror_x { - lassign "$xb $xa" xa xb - } - mirror_y { - lassign "$yb $ya" ya yb - } - reset { - lassign "$xao $xbo $yao $ybo" xa xb ya yb - } - square { - - } - move { - foreach xy {x y} { - set mvt [tr $_ $xy d [expr {[dict get $opts $xy] - $($_:c$xy)}]] - foreach ab {a b} {set ${xy}$ab [expr $${xy}$ab - $mvt]}} - } - zoom { - array set dir {in 0.5 out 1.5} - foreach xy [dict get $opts axe] { - set radius [expr ($${xy}b - $${xy}a) / 2. * $dir([dict get $opts dir])] - set center [tr $_ $xy i [dict get $opts $xy]] - set ${xy}a [expr {$center - $radius}] - set ${xy}b [expr {$center + $radius}] - } - } - resize { - foreach xy {x y} { - set mvt [tr $_ $xy d [expr {[dict get $opts $xy] - $($_:c$xy)}]] - set ${xy}a [expr $${xy}a - $mvt] - set ${xy}b [expr $${xy}b + $mvt]} - } - scroll { - set xy [dict get $opts axis] - set mv [expr ($${xy}b - $${xy}a) / 4.0] - foreach ab {a b} {set ${xy}$ab [expr [dict get $opts units] > 0 ? $${xy}$ab + $mv : $${xy}$ab - $mv ]} - } - } - up $_ canvas xa xb ya yb - redraw $_ all - } - - proc clip {_ action} { - variable "" - switch $action { - selecta { - set items {} - foreach i [dict keys $($_)] {if {[dict get $($_) $i class] eq "item"} {lappend items $i}} - updatesel $_ $items - } - cut { - set ($_:c) [dict create] - set i 0 - foreach item [getsel $_] { - dict set ($_:c) $i [dict get $($_) $item] - incr i - } - item_delete $_ - } - copy { - set ($_:c) [dict create] - set i 0 - foreach item [getsel $_] { - dict set ($_:c) $i [dict get $($_) $item] - incr i - } - } - paste { - set pasted {} - foreach item [dict keys $($_:c)] { - item_new $_ [dict merge [dict get $($_:c) $item] {id -}] - } - } - } - } - - proc new {_} { - variable "" - variable obj - if {[info exists ($_)] != 1} {set ($_) {}} - if {[winfo exists $_] != 1} { - item_new $_ [dict create type canvas id canvas] - item_new $_ [dict create type gridlines id grid] - } - } - - variable pd_send - set pd_send -1 - proc connect {} { - if {[catch {set pd_send [socket localhost 13665]}]} {set pd_send -1} {puts "connected $pd_send"} - catch {set pd_receive [socket -server ::pd::receive_conn 13666]} - exec pd -guiport 13666 & - } - proc receive_conn {s addr port} { - fileevent $s readable [list ::pd::receive $s] - fconfigure $s -buffering line -blocking 0 - puts "connection from $addr" - } - proc receive {s} { - set l [gets $s] - if {[eof $s]} { - close $s - } else { - if {[catch {eval $l}]} {puts "error in: $l"} - } - } - proc send {msg} { -# puts [concat s: $msg] - variable pd_send - if {$pd_send ne -1} { - puts $pd_send [concat $msg \;] - flush $pd_send - } - } - - if {![winfo exists .c]} { - toplevel .c -width 512 -height 512 - new .c.c -# connect - } - -} diff --git a/extensions/gui/ix/pd_objects.tk b/extensions/gui/ix/pd_objects.tk deleted file mode 100755 index a6574050be95cf1f03079ff1b9b4bcd17b07ad8f..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/pd_objects.tk +++ /dev/null @@ -1,730 +0,0 @@ -variable obj -set obj { - - rect { - tags { - box img - } - attributes { - x 1 y 1 - color {123 232 4} - zero_x 0 - zero_y 1 - zs_x 0.5 - zs_y 0.5 - img "" - } - hints { - color rgb - zero_x bool - zero_y bool - zs_x float 0.1 10 - zs_y float 0.1 10 - } - init { - $_ create rect $x $y $xx $yy -tags [concat $tags box] - if {$img ne ""} { - package require Img - image create photo photo$id - $_ create image 0 0 -tags [concat $tags img] - } - } - redraw { - if {[expr $zero_x == 1]} {set zs_x [tr $_ x id $zs_x]; set xx [expr $x + $zs_x]; set x [expr $x - $zs_x]} - if {[expr $zero_y == 1]} {set zs_y [tr $_ y id $zs_y]; set yy [expr $y + $zs_y]; set y [expr $y - $zs_y]} - $_ coords $box $x $y $xx $yy - $_ coords $img $x $y - if {$img ne ""} { - photo$id configure -file $img - set photo photo$id - } {set photo ""} - $_ itemconfigure $img -image $photo - $_ itemconfigure $box -fill $color -outline [color [lighten $rgb 0.3]] -width [expr $selected + 1] - } - } - - colors { - attributes {ins 1 out 1 x 1 y 3} - tags {box subwin} - init { - $_ create rect 0 0 0 0 -tags [concat $tags box] - set p [frame $_.$id] - $_ create window 0 0 -tags [concat $tags subwin] -window $_.$id -anchor nw - set picker {iVBORw0KGgoAAAANSUhEUgAAADIAAAEACAIAAAB+mLL0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1QkNDBMQBB81AgAAELhJREFUeNqtnVty47wOhMGL/5nZ29n/ZkYiz0MsBQTQTciZFMulyE7SISEQpPAJ5X+//vwq5Xcpv0R+lfKrlF9S3mfWk+8z7w/I9VPfJ0VE/vyWP3+u9vz49/u4i5S1VXcm30TkJfIS6SJdHbTrtYnU67Vef666XyJdna0JifzMLesWZDR5ZV5TQbLIAX9XyzLKjLiKO+zdW0W9Hb5uP3C/ish/So1pXlMFNvPuLfPb/UHyPO8tPYJkEEWk9PW3k+PMW8a2Xq63qustYwN2EMNG3qpUVqcmH16PgcmT1nKy2g8GMXYQhepoT94Ke4ubfCEmX9xfMgfJ86KsKuMgYu9wm3w4Iua14bfCQbxNPuNOa3IQ2+4gPCngMkSTjxlK8X7LKPMiMmfCySe0emRbonurAF/QHrakrL2j7wkRPX0yM4hZ26q0n3p0jE7KqsmYfM9pKsjkvQ0ZQf5Vywp7y49gI+a17a0GBIXfEtvKmJdok/futOGu0jr8MZKVMfZqTB4NorGwUIpp4gzLdGfo5X80iHd75WT13Wwd9hk0+XAQSXs5WX1n8j4GrGiJUaPJ2BtWKOgVyQobCdfYILbdZWg0mVfBV8a2w77DB2TyFbuuUJmXhXxbo0HzxuRD22pg+JAsNBm0TDhv1ol5w3+5BbSXxceu5YNmHiCgK/Gr/Sci+JdUoK/wdaKPzb2aBgR9abp7KxNL7oPmgoNmYmGvSJyAYB8tCB4ENuYXdXAZGkFeVnLVVEjQXBIzD3GkxraeNhg0Z+bp5nzEKxrEcC1edot1FjTnewuNoyS2T0o0fPUnYWDGtsgO1PZbG0EUGjSjQQz91qPNxAp2OtlUXXcm781LPtputfZONpK2EQSyrfCPER3xxzoQVHeB/Mt5h5faNzPbaCXxlt12qzvXRaL4l7Mt0b89cRCfRybfProYzVeR4Cs8KaFtlSn1amXaM+82pM21DdXme0GW+iq7D/Qh4tsJ2kGXfObvlUgEP3kf97nTdNDlcItkFWw74et0x32IzFUT6rCDbspWcF0hN3AfzEhfH06Tl3LkIibJ+VNBe23X8fSDeO70kX0goXfYyJ236i6IHtr7cILOS5PfAUKyzMEAb8n11mLyX1Lmzuq3AZSRpT92C5rXmam2juo1cIvJT6Xp3LVjtx2L7goNpWZeUr7Oy3VSQpM/RVqitw4a7ZLQeF5NW5I+L+o49lvNaTq2W1JKVovm/7k2/9WIl781NafpiO5tGt9Yry7XsduXjrYK0m7Wy+2hvdfr9T64lRXsG0WZUVstqV3K/OQ4lLLb9vt0gpo61sN3YPeoB2JcIsaqZjq3WZSjD3prRL1VVzPfCpLLA93N2FPYVQWIgxFEzdzpBrK4dRv/Hn5y8VvDmdRWUAGyxvqXtKWf6vcMJU7Uj3TfScbquY2LMVXnh7QHv3/8XCeAobpNSLxVsIvyY2cUTPevhxHOwJpm6LfK1VXh3OI1hbKQVXk7rtFPwal6v8QE4+UFFZASM9wlwky+pN2BFjfcwAlY/HtBA/WWFoQ6LOwnP2QT+EwT89yXl+/yxeS9oJNq0uJG5MT9CNb1SkeD+Db5omSdShBa0HnrHgm3adoAvvd7EKuSVZQyiWw8FDQu20KddKxBzlgdr++w9yCaUTuj4UBjp2URezqUVTU3GdgIYqy/5cTWjex9AFnewHWA2cA4SiiLu4PpPNxwsgq2qq2gJWjW48id01TBnffAAtQ0tzjw/5J1pwNvNOkrtikpOsrTc0goSy96T7el4D3qYvISeYS5atJx8FCB6L0CEHqjJuytCTxqHyByMuN9a7rD86FWE1X9b+H2sNd00pixDzW3ozl4Kk23oKo0VWVbfG8YmZcR1/VEG9p4BT66RhtJ4R71mVYjprfI5WZcFNmMkOiu34HFTXcZTm9bU+1SeGXD9ZPPkNW99VfJ6ter2ahitmWuRKOmKE1jlz0sUT8dlyZyJY4wgrin6nvpXZUs/YFKd7Ak2jQ/co7URhDaxc91I2q6ZdOgt5REmflxtXM9DjtsIi9f1g3We+1W3JqObEDe6QZ/V2WkwyYwLzhVT7wDW/CiyNy10h12RvY+1ihymiXG41tY0Vs68efY9dbJg+ZZpBSRIpP+8ftjIu/j90/J+3gWEZHRZXQZ7d3mV6uugShqXjJ6FgmRNCFiUprN7Vu+WV3uW1F1Z8n58z/Phr2soacYkOQHCE/TXIfR9OG+h0EywAhHMXgmXhSn9zhN4bOT8lGaddRnfUN/lCcnicm3hLh4EPOECDpPsmE7SE5iJv9PIBFi8v1pfuc9iOT2Q/4DxOSRawB3aTrMzvjgQCg/tmVX1O5Fh1I+eBVKRG3RI2byGUIEnResqdN85poxeZT9uH0rafIp20KC8oRIjQiR1y53uLEpv++zynpCGcnib4mL0Vl9j3dYkKZOjzMmT2xL0CBmcsDJt5x56LkrcTH5ks7+Jine4nLznnJRgnqrJjQhTkQwbZe/Eq07Jd4BZZU1gGK8KJvYaIaHmOj0gxRPT4ggp/UMFCa9lUmFJbI+JttYBEHoIyNIdw8nRHJRPI4gUCIlgUS0rAb6KROjLibPvQOBaUyILJQ0ewJO4ql6S/q8HJMhO39L8JBqIogtP9YoEeWz+Dlfydn4QtxphhN5YbiAgyHbuJn5rS1ME/aZ5MDizWMEiJev2EG8EihGEsneLzFKYkIk9m5QjJZbrcCHZxB3+ggh03BBfplZiG09HcSOORF58uQGuiHVf8SPebig0odtkL0MGzR/4B0IQvbBA0r2QfMjiixEyJL7dYU+p+bB5EMA0wwhkt+htavqtiOrM5hPJq06ceajwIYgZNvkdNmdD0w+GQYShIyn72dS/OWHQTMiRArlLnLf/myJwcGVH3x1nApyJrCMv26X8t90V89RK8cO+/WyksY1w297RBaEwIMRh/Z0P7sUbYf1aAQ19mA0HTRA+cxNTSdxdnWrEeEhISHS8Kz2gZu3iXKot3yHHTiA8rL85DfopLgx+RPY/uESjDiNgUKI6f6HuoIrscmPh5CIj3lReDXUXfm5QlQeboF+6xGy4mWF4akhRPSxTrz4NnkvyEMip+NEakJWiIfMtcP8W4Hfag5fqY4WKXDJElwW0+kzudcGFRHttyaARDQbwgWJWihqduVOSpMo4dl02PszHQAPLQeJ+HltrJxIXdPlGpBllDGTz0Ai3h8aPKRiSKSEgr6Oe5oQqeyWd8yuDImBWDQNLL0VChoYEiFJ/foXhsnqsuZLQ3yl0xE8MYZImAyUBC+OxvCcyGLy012AJ3n8wC6HfuTy+ofKWnvQW+cuK0oiRoUQR6FhxahIaFuDavLmEqaphvpqLr8z9ltPU8In7jDTSTUCVwYaRLTE2CqbILccsXV1p2kaLx8iK2dCkODrrrjY0PBpKAE8kKVREaHDJw7IEMdnbQmRuMP6mu967iARATnFc40FCsAyECcyw94qjhNBkAhCMYysEMg4VtygkRRPbfKEE0G9NYCsEISqK/HLUjw7SHPNwFlGXMMg1IEhkTjF08jij7gI+0kzGbKjVkzriEbrDlwJXfnEnIjmH4U+ozSZbx2YPPICJqyrjl0JaQy9BD8Uu0ISm5cIIuOcDMCtCZGBaYyQExkOMYARRIYZqyvBMlYYvroFmQZDjlXcoCnNb5PnF11z6ztEi0iCWhlJ2wrBFY6vkFTKGgEZjWIPPqB921YFmE8F1ApJPK0AXCGQyEDrRP0oiy0kwtN0CbhCEAMbROhBLM4FGEgkREXMNpXupyMCV0JBw0cQw61uawSJhISITwE3O+YIMTgjisxugMs6BU13YAgRkjCvBd2oyOmAjE1E3ymRMp/jBZ4QCbtqZEy+5EiQDCrSFVLTV9KHcIDOQZTr6MJAimJAiojcPMgFg3yxIUXs8df1fFQ5qpxfrbzbcC1eihWZX2/1f8WGFPosfvJM6zCrudef3S41VNRrV0Ykl9/pZNXcswcrltUfYg/hDmwnBN3T86T8BBEXhuqd5AB8kDDwisbxYXKn6q08DFIozfmUPiruUVnfJv/osaScfeXP4q+7sjmLyf+wrkn9tLcKqvPwNYjlObXSsKyflFIQ01tl92DezElk8o+efl+8baFHFydPZp7Fn6pcoK9E8mzy7clGTX57JQZUKEkaqTs8xJyUKzOJMA9oQqy+t0qursn2LXlIAIaP+Ns4iGTdEC+rP8G1UKjSM8/QTTIjyfITGeyhl11CEqpr4g+4yfdE+YnF5MuOXem5V3lYGY0kLfb6UBM5+AwU3kQQ28xTwoa0CMV4YXvfooA9TEp/VLKjORRjW4isAlB477c+qCQS1hBpOVbYDmLy4dHk0fehrJ4u1lFJBPEx8EBktVxpk2cmTy7GF3gVcIW2J1N1EDQ3nHnacwngbVfXhCR/7afqmqhu8sLMA5mgUsXR0FT98YPJk0xqNmj+gGnbgit19y0LmjPlJ3hhDF9xZRvW1syCLFmsoyUqFzwtcZgKmh+VNkFVMTLo/763toVgSK68r1xQf9AkNPnMPN12lQsyJVFLIslw8VvtCSGC4IKnGz6V7EGU5zxNiJAlSwCT2KEQv5Whj3hvPX2+/Mbkk+W+Xrgqxs/3iONVdYYcQwjZB7ULhOw0J9dk2wjis0oPEgbNTwvvvXAE8c/qYjwqU5isuPIPqoh83d0o42pTijlztXpKWVtVrZz/sOTKJSuVl54EVz4rULP+bJdtqYfD3XpGEd1PyvnIUuqhp4AHLe7Ihb2Pih/JWuPkPYgjVw7miEI7U6H9aamoiR4lgEiakMYgGy7108JakdUDkx+RoBDFqA4uIPeuJqiGIvY59F1Gmh/LRJa8SttcnzEprsAJNPmRRla2snwaznSoSFXZHwoS6cEItmgQPSRScoRIdbnUNcopXm9ed+i0akSI8BCOl0+c+Kn47nyXR9VNeGkTUePV1KOAW1TdxJcRUTljXUgtGFPdpGBOxMjykIgnRLQ7NQVOlt4ylXM8HhIWXTFf56pJlzZpGDEoNt+tx8U6wnYkElQRAkVKm0RPre02XwlJJGoMTzPp42h9dnlx1YYE+S3CiRWc7SwkNxKblMbxBJn8lhMpuHqAPBTky4hMNFVXWt2ElzPwRVcEVzcpjg1RiYk9xtoI80CSi4XWgkLVTaIOBn4raeBCmQdS3aTy9C0SQZA178RlRDgIVVWhmUqS3UKTLyuQgazbZ6oLrbhSHAw7IezTvy8Hg2JkKhp4WZkyIqFVDR9BmAInvrpJwfWE7l/ad7BfxZCIK47Sv7P4x8qrnLiTJCptMunYabqnrVMwHESfWHrm4CxfRiTUpKMjQ4hMZPIjwatwNaSMiIFEzohdiR3EjJCaJDM2qayKIZG2oci6xUOIE/eZ6qaSiFADPylZYIPmuSZbI0IkrHEyVs5LsCZCiESlHjosbeI9gsdDmgNXw13rAxMig0w+BdfrEIyHNFeWQvD+3bmK47WPvoNmZNeC8ZDhjmW3obi1LTuIxC9k7tecFFzpbgTPZGATdlXBpU0KKJOr99ANHnImAKTFnRo8RKIyRxVDIkjW37WYSE+CWuhKJIQIv6skUSGYYzeIk5i8L23imYyxu58kyiMcuAhForpJ5OU9ITLWYJfcRjL3ro6IEDn39dH6stw2f2ZGKDu/h6TvE/kaIueucs4SNIvdjNvfzhIqy/M0B74GB4+3kne0yAfE3YHJ1IKJXPf/ARXN6/ssS+vjAAAAAElFTkSuQmCC} - image create photo colorpicker$id - colorpicker$id configure -data $picker - label $p.colors -bd 0 - entry $p.rgb -bd 0 -width 10 -font {{bitstream vera sans mono} 8} - bind $p.colors <B1-Motion> "::pd::colors:pick $_ $id %x %y" - bind $p.colors <1> "::pd::colors:pick $_ $id %x %y" - grid $p.colors -sticky nsew - grid $p.rgb -stick nsew - $p.colors configure -image colorpicker$id - } - - redraw { - $_ coords $box [expr $x - 10] $y $xx $yy - $_ itemconfigure $box -fill $color - $_ coords $subwin $x $y - set w [expr $xx - $x] - set h [expr $yy - $y] - if {[expr abs($w - [$_.$id cget -width]) >= 1 || abs($h - [$_.$id cget -height]) >= 1]} { - $_.$id configure -width $w -height $h - } - } - - destroy { - destroy $_.$id - } - methods { - proc colors:pick {_ id x y} { - if {![expr $y <= 255 && $y >= 0 && $x >= 0 && $x <= 50]} {return} - set p $_.$id - set rgb [hsvToRgb [expr (255 - $y) / 255.] [expr $x <= 25 ? 1. : ($x - 50) / -25.] [expr $x <= 25 ? $x / 25. : 1.]] - $p.rgb delete 0 end - $p.rgb insert 0 $rgb - $p.rgb configure -bg [color $rgb] - } - - } - } - - canvas { - attributes { - color {222 222 222} - sc orange - mode edit - sel {} - xa 0 xb 100 ya 0 yb 100 xao 0 xbo 100 yao 0 ybo 100 - } - init { - canvas $_ - place $_ -relwidth 1 -relheight 1 - # bind $_ <Configure> "::pd::redraw $_ all" - bind $_ <Enter> "focus $_" - bind $_ <Key> "::pd::key $_ %k 1" - bind $_ <KeyRelease> "::pd::key $_ %k 0" - bind $_ <Motion> "::pd::hover $_ %x %y" - bind $_ <4> "::pd::viewpoint $_ {action scroll units 1 axis x}" - bind $_ <5> "::pd::viewpoint $_ {action scroll units -1 axis x}" - bind $_ <Control-4> "::pd::viewpoint $_ {action zoom dir in axe x x %x y %y}" - bind $_ <Control-5> "::pd::viewpoint $_ {action zoom dir out axe x x %x y %y}" - bind $_ <Alt-4> "::pd::viewpoint $_ {action zoom dir in axe {x y} x %x y %y}" - bind $_ <Alt-5> "::pd::viewpoint $_ {action zoom dir out axe {x y} x %x y %y}" - bind $_ <Control-Shift-4> "::pd::viewpoint $_ {action zoom dir in axe y x %x y %y}" - bind $_ <Control-Shift-5> "::pd::viewpoint $_ {action zoom dir out axe y x %x y %y}" - bind $_ <Shift-4> "::pd::viewpoint $_ {action scroll units -1 axis y}" - bind $_ <Shift-5> "::pd::viewpoint $_ {action scroll units 1 axis y}" - foreach m {"Control-" "" "Shift-" "Double-"} { - foreach bn {1 2 3} { - set b [list [concat $bn first] [concat B${bn}-Motion motion] [concat ButtonRelease-$bn release]] - foreach ba {0 1 2} { - bind $_ <$m[lindex [lindex $b $ba] 0]> "::pd::click [list [string tolower [string trimright $m -1]]] $bn [lindex [lindex $b $ba] 1] $_ %x %y %X %Y"}}} - if {$::has_tkdnd == 1} {dnd bindtarget $_ text/plain <Drop> "::pd::drop $_ %D %x %y"} - } - redraw { - set bd [expr {[$_ cget -bd] * 2}] - $_ configure -bg $color -width [expr {[winfo width $_] + $bd}] -height [expr {[winfo height $_] + $bd}] - } - methods { - proc item_pos {_ item r x y xx yy} { - update $_ $item $r [dict create x $x y $y xx $xx yy $yy] 1} - - proc pencil {_ a x y} { - variable "" - switch $a { - motion { - item_pos $_ $($_:ci) abs [tr $_ x i $x] [tr $_ y i $y] [tr $_ x i $($_:fx)] [tr $_ y i $y] - } - first {set ($_:ci) [item_new $_ [dict create type rect id -]]}}} - - proc resize_canvas {_ a x y} {viewpoint $_ [dict create action resize x $x y $y]} - - proc item_v {_ a x y} { - variable "" - variable obj - foreach id [getsel $_] { - set type [dict get $($_) $id type] - if {[dict exists $obj $type defaults]} { - foreach local [dict keys [dict get $obj $type defaults]] { - set $local [dict get $obj $type defaults $local]}} - if {[dict exists $obj $type control Button-1]} {eval [dict get $obj $type control Button-1]} - } - } - - proc move_canvas {_ a x y} {viewpoint $_ [dict create action move x $x y $y]} - - proc move_object {_ a x y} { - variable "" - set mx [tr $_ x d [expr {$x - $($_:cx)}]] - set my [tr $_ y d [expr {$y - $($_:cy)}]] - foreach item [getsel $_] {item_pos $_ $item rel $mx $my $mx $my} - } - - proc resize_left {_ a x y} {item_resize $_ x $x $y} - proc resize_right {_ a x y} {item_resize $_ xx $x $y} - proc resize_top {_ a x y} {item_resize $_ y $x $y} - proc resize_bottom {_ a x y} {item_resize $_ yy $x $y} - proc resize_tl {_ a x y} {item_resize $_ x $x $y; item_resize $_ y $x $y} - proc resize_tr {_ a x y} {item_resize $_ x $x $y; item_resize $_ yy $x $y} - proc resize_bl {_ a x y} {item_resize $_ xx $x $y; item_resize $_ y $x $y} - proc resize_br {_ a x y} {item_resize $_ xx $x $y; item_resize $_ yy $x $y} - - proc item_resize {_ e x y} { - variable "" - array set ax {x x xx x y y yy y} - set m [tr $_ $ax($e) d [expr $$ax($e) - $($_:c$ax($e))]] - item_mua $_ rel [dict create $e $m] 1 - } - - - proc item_scale {_ a x y} { - - - } - - proc click {m button action _ x y X Y} { - variable "" - set clicked [cleansel $_ [$_ find overlapping $x $y $x $y]] - set a $($_:submode) - switch $action { - first { - foreach xy {x y} {set ($_:f$xy) [set $xy]} - switch $button { - 1 {if {$m eq "control"} { - mode $_ pencil; pencil $_ $action $x $y - } elseif {$m eq "double" || $m eq "shift"} { - if {[llength $clicked] > 0} { - togglesel $_ $clicked - } else { - item_new $_ [dict create type sel id sel xa $x ya $y xb $x yb $y] - } - } elseif {[$_ find withtag sel] ne ""} { - item_delete $_ sel - } elseif {[llength [getsel $_]] > 1 && [llength $clicked] > 0 && [lsearch [getsel $_] $clicked] == -1} { - updatesel $_ $clicked} elseif {$a eq "cabledraw"} {eval $a $_ $action $x $y}} - 2 {if {$clicked ne ""} {mode $_ item_scale} {mode $_ resize_canvas}} - 3 {if {$clicked ne ""} {mode $_ item_v} {rmenu $_ $x $y $X $Y}}}} - motion { -# puts "$a $_ $action $x $y" - eval $a $_ $action $x $y -# catch {eval $a $_ $action $x $y} - } - release { - switch $button { - 1 {if {$a eq "draw" || $a eq "cabledraw"} {eval $a $_ $action $x $y}} - 2 {mode $_ move_canvas} - 3 {mode $_ move_canvas} - } - } - } - if {$clicked ne ""} {inspect $_ [lindex $clicked end]} - foreach xy {x y} {set ($_:c$xy) [set $xy]} - } - - proc hover {_ x y} { - variable "" - if {[$_ find withtag sel] ne ""} { - update $_ sel abs [dict create xa $x ya $y] 1 - } else { - set clicked [$_ find overlapping [expr $x - 2] [expr $y - 2] [expr $x + 2] [expr $y + 2]] - set out 0 - foreach id $clicked { - if {[lindex [$_ itemcget $id -tags] 3] eq "out"} { - set out 1 - set ($_:cable) [$_ itemcget $id -tags] - break - } - } - if {$out == 1} {mode $_ cabledraw} else { - set clicked [cleansel $_ $clicked] - if {$clicked ne ""} { - set c [lindex $clicked end] - resize_modes $_ $x $y $c - if {[llength [getsel $_]] <= 1} {updatesel $_ $c} - inspect $_ $c - } else { - mode $_ move_canvas - } - } - } - } - - proc resize_modes {_ x y id} { - variable "" - set d 3 - set bbox [$_ bbox [$_ find withtag "i$id && box"]] - if {$bbox eq ""} {set bbox {0 0 0 0}} - lassign $bbox bx by bxx byy - set dx [expr {abs($bx - $x)}] - set dxx [expr {abs($bxx - $x)}] - set dy [expr {abs($by - $y)}] - set dyy [expr {abs($byy - $y)}] - if {$dx < $d && $dy < $d} { - mode $_ resize_tl - } elseif {$dxx < $d && $dy < $d} { - mode $_ resize_tr - } elseif {$dx < $d && $dyy < $d} { - mode $_ resize_bl - } elseif {$dxx < $d && $dyy < $d} { - mode $_ resize_br - } elseif {$dx < 5} { - mode $_ resize_left - } elseif {$dxx < 5} { - mode $_ resize_right - } elseif {$dy < 1} { - mode $_ resize_top - } elseif {$dyy < 1} { - mode $_ resize_bottom - } else { - mode $_ move_object - } - } - - proc mode {_ m} { - variable "" - array set cursor {pencil pencil move_canvas fleur move_object dotbox item_v box_spiral resize_canvas bogosity sel cross_reverse item_scale sizing resize_left left_side cabledraw circle resize_right right_side resize_top top_side resize_bottom bottom_side resize_tl top_left_corner resize_tr top_right_corner resize_bl bottom_left_corner resize_br bottom_right_corner} - set ($_:submode) $m - $_ configure -cursor $cursor($m) - } - proc mode_flip {_} { - variable "" - l $_ canvas mode - if {$mode eq "edit"} {set mode forward} {set mode edit} - up $_ canvas mode - redraw $_ {canvas grid} - } - - proc drop {_ dropped x y} { - foreach d [split $dropped "\n"] { - set x [tr $_ x i $x] - set y [tr $_ y i $y] - item_new $_ [dict create type sound id - g 1 v 1 x $x y $y xx $x yy $y filename [regsub -- {^file:[/]+} $d "/"]] - } - } - - - proc key {_ k b} { - # puts $k - switch $b { - 1 { - switch $k { - 9 {mode_flip $_} - 22 {item_delete $_} - 38 {clip $_ selecta} - 53 {clip $_ cut} - 54 {clip $_ copy} - 55 {clip $_ paste} - 97 {viewpoint $_ {action reset}} - 98 {viewpoint $_ {action scroll units -1 axis y}} - 100 {viewpoint $_ {action scroll units -1 axis x}} - 102 {viewpoint $_ {action scroll units 1 axis x}} - 104 {viewpoint $_ {action scroll units 1 axis y}} - 107 {item_delete $_} - } - } - } - } - } - } - - sel { - attributes { - class selrect - outline {255 255 0} - fill {255 128 0} - width 0 - stipple gray12 - } - init { - $_ create rect $xa $xb $ya $yb -tags $tags - mode $_ sel - } - redraw { - updatesel $_ [cleansel $_ [$_ find overlapping $xa $ya $xb $yb]] - $_ coords $item $xa $ya $xb $yb - $_ itemconfigure $item -fill [color $fill] -stipple $stipple -outline [color $outline] -width $width - } - methods { - proc sel {_ a x y} { - update $_ sel abs [dict create xb $x yb $y] 1 - } - - proc getsel {_} { - return [set [l $_ canvas sel]] - } - - proc cleansel {_ sel} { - set clean {} - foreach item $sel { - set class [lindex [$_ itemcget $item -tags] 0] - if {$class eq "item" || $class eq "cable"} {lappend clean [lindex [$_ itemcget $item -tags] 2]}} - set clean [lsort -unique $clean] - return $clean - } - - proc togglesel {_ d} { - variable "" - if {[lsearch [getsel $_] $d] < 0} { - set sel [concat [getsel $_] $d] - } else { - set sel [lsearch -inline -not -all [getsel $_] $d] - } - up $_ canvas sel - redraw $_ $d - } - - proc updatesel {_ sel} { - variable "" - set os [getsel $_] - up $_ canvas sel - redraw $_ [lsort -unique [concat $os $sel]] - } - - } - } - - gridlines { - attributes { - class gridlines - stipple gray50 - xq 10 yq 10 xm 15 ym 15 - } - redraw { - foreach items $item {$_ delete $items} - array set ta {x n y w} - array set tj {x center y left} - array set igx {y width x height} - l $_ canvas xa xb ya yb - foreach xy {x y} { - set range [expr abs($${xy}b - $${xy}a)] - set nSlices [expr $range / $${xy}q] - if {$nSlices > [set ${xy}m]} {set factor [expr int($nSlices / ($${xy}m + 0.0) + 1)]} else { - set factor [expr 1. / (int(1./($nSlices / ($${xy}m + 0.0) + 0.0)) + 0.0)] - } - set increment [expr $${xy}q * $factor] - for {set x [expr int($${xy}a / ($increment + 0.0) + 1)*($increment + 0.0)]} {[expr $${xy}a > $${xy}b ? $x >= $${xy}b : $x <= $${xy}b]} {set x [expr $${xy}a > $${xy}b ? $x - $increment : $x + $increment]} { - set og [tr $_ $xy t $x] - set invgeo [winfo $igx($xy) $_] - switch $xy { - y {set coords [concat 0 $og $invgeo $og]} - x {set coords [concat $og 0 $og $invgeo]}} - $_ lower [$_ create text [lrange $coords 0 1] -font {{Bitstream Vera Sans} 8} -fill [rc] -anchor $ta($xy) -text [string range $x 0 7] -justify $tj($xy) -tags $atags] - $_ lower [$_ create line $coords -fill $color -stipple $stipple -tags $atags] - } - } - } - } - subwin { - tags { - box subwin - } - attributes { - x 32 y 24 - ins 1 - outs 1 - } - init { - $_ create rect 0 0 0 0 -tags [concat $tags box] - new $_.$id - $_ create window 0 0 -tags [concat $tags subwin] -window $_.$id -anchor nw - } - redraw { - $_ coords $box [expr $x - 10] $y $xx $yy - $_ coords $subwin $x $y - set w [expr $xx - $x] - set h [expr $yy - $y] - if {[expr abs($w - [$_.$id cget -width]) >= 1 || abs($h - [$_.$id cget -height]) >= 1]} { - $_.$id configure -width $w -height $h - } - $_ itemconfigure $box -fill $color - } - } - kbd { - attributes { - ins 1 outs 1 - x 60 - y 12 - octaves 5 - color {0 0 0} - color_bg {255 255 255} - lp -1 - } - tags {box subwin} - init { - $_ create rect 0 0 0 0 -tags [concat $tags box] - set path [frame $_.$id] - $_ create window 0 0 -tags [concat $tags subwin] -window $_.$id -anchor nw - set bw {0 1 0 1 0 0 1 0 1 0 1 0} ; set npl {0 1 1 2 2 3 4 4 5 5 6 6} - set keys [dict create 1 [dict create fg $color_bg bg $rgb rw 0.1 rh 0.6 an "-anchor n"] 0 [dict create fg $rgb bg $color_bg rw [expr 1 / 7.] rh 1. an "; lower \$wk"]] - for {set o 0} {$o < $octaves} {incr o} { - set w $path.f$o ; frame $w -bd 0 -height 66 -width 66 - for {set on 0} {$on < 12} {incr on} { - set wk $w.[expr $o * 12 + $on] ; set n [lindex $bw $on] - eval "label $wk -bg [color [dict get $keys $n bg]] -fg [color [dict get $keys $n bg]] -bd 1 -relief raised;place $wk -relx [expr [lindex $npl $on] / 7.] -y 0 -relwidth [dict get $keys $n rw] -relheight [dict get $keys $n rh] [dict get $keys $n an]" - bind $wk <1> "::pd::kbd_play $_ $id 0 1 %X %Y"; bind $wk <B1-Motion> [bind $wk <1>];bind $wk <ButtonRelease-1> "::pd::kbd_play $_ $id 0 0 %X %Y"; bind $wk <Enter> "::pd::kbd_play $_ $id 1 0 %X %Y"; bind $wk <3> "::pd::kbd_play $_ $id 1 1 %X %Y"; bind $wk <B3-Motion> [bind $wk <3>]; bind $wk <2> "::pd::kbd_off $_ $id $octaves" - } - place $w -y 0 -relheight 1.0 -relx [expr $o / $octaves.0] -relwidth [expr 1 / $octaves.0] - } - } - redraw { - $_ coords $box [expr $x - 10] $y $xx $yy - $_ itemconfigure $box -fill $color - $_ coords $subwin $x $y - set w [expr $xx - $x] - set h [expr $yy - $y] - if {[expr abs($w - [$_.$id cget -width]) >= 1 || abs($h - [$_.$id cget -height]) >= 1]} { - $_.$id configure -width $w -height $h - } - } - methods { - proc kbd_play {_ id m b x y} { - l $_ $id lp - foreach a {{rs {0 sunken 1 raised}} {v {0 0 1 {($y - [winfo rooty $w]) / ([winfo height $w] + 0.0)}}}} {array set [lindex $a 0] [lindex $a 1]} - set w [winfo containing $x $y] - if {$m != 1 && $lp != -1 && $lp ne $w} {kbd_action $_ $id $lp 0} - if {[$w cget -relief] eq $rs($b)} {kbd_action $_ $id $w [eval expr $v($b)]} - set lp $w - up $_ $id lp - } - - proc kbd_action {_ id w v} { - if {$v == 0} {set relief raised} {set relief sunken} - $w config -relief $relief -# pd [concat $t.rp _cb [winfo name $w] $v \;] - } - - proc kbd_off {_ id octaves} { - for {set o 0} {$o < $octaves} {incr o} { - for {set on 0} {$on < 12} {incr on} { - set w $_.$id.f$o.[expr $o * 12 + $on] - if {[$w cget -relief] eq "sunken"} {kbd_action $_ $id $w 0}}}} - } - } - - xy { - tags { - box loc - } - attributes { - x 10 y 10 - ins 1 - outs 1 - } - init { - $_ create rect 0 0 0 0 -tags [concat $tags box] -fill gray90 - $_ create rect 0 0 0 0 -tags [concat $tags loc] -fill red - } - redraw { - $_ coords $box $x $y $xx $yy - $_ coords $loc $x $y [expr $x + ($xx - $x) / 12.] [expr $y + ($yy - $y)/12.] - $_ itemconfigure $box -outline $color - } - } - - cable { - attributes { - class cable - x 0 y 0 - from "" - to "" - arrow last - width 1 - } - init { - $_ create line 0 0 0 0 -tags $tags -fill green -arrow $arrow -width $width - } - redraw { - if {[llength $from] == 2 } { - lassign [ioloc $_ [lindex $from 0] [lindex $from 1] outs] x y - } - if {[llength $to] == 2 } { - lassign [ioloc $_ [lindex $to 0] [lindex $to 1] ins] xx yy - } - $_ coords $item $x $y $xx $yy - } - control { - - } - methods { - proc cabledraw {_ a x y} { - variable "" - lassign $($_:cable) class iid id io ioid ionum cur - switch $a { - first { - set ($_:cable:id) [item_new $_ [dict create type cable id - from [list $id $ionum]]] - } - motion { - update $_ $($_:cable:id) abs [dict create xx [tr $_ x i $x] yy [tr $_ y i $y]] 1 - } - release {} - } - } - } - } - - io { - attributes { - class io - width 1 - height 0.3 - incolor {255 0 0} - outcolor {0 0 255} - } - init { - l $_ $id ins outs - foreach io {in out} { - for {set i 0} {$i < [set ${io}s]} {incr i} { - set port [$_ create rect $x $y $x $y -tags [concat $tags $io $io$i $i] -width 0 -fill [color [dict get $obj io attributes ${io}color]]] -# $_ bind $port <1> "puts lolport" - } - } - } - redraw { - set w [tr $_ x id [dict get $obj io attributes width]] - set h [tr $_ x id [dict get $obj io attributes height]] - foreach io {in out} { - for {set i 0} {$i < [set ${io}s]} {incr i} { - lassign [ioloc $_ $id $i ${io}s] x y - $_ coords [$_ find withtag "$tags && $io$i"] [expr $x - $w] [expr $y - $h] [expr $x + $w] [expr $y + $h] - } - } - } - methods { - proc ioloc {_ id n io} { - variable "" - foreach c {x xx y yy} { - set $c [tr $_ [string range $c 0 0] t [dict get $($_) $id $c]]} - if {$io eq "ins"} {set py $y} {set py $yy} - set px [expr ($n / ([dict get $($_) $id $io] + 0.0)) * ($xx - $x + 0.0) + $x] - return [list $px $py] - } - } - } - - button { - tags {box button} - attributes {x 3 y 3 ins 1 outs 1} - init { - $_ create rect 0 0 0 0 -tags [concat $tags box] -width 0 - $_ create oval 0 0 0 0 -tags [concat $tags button] - } - redraw { - $_ itemconfigure $box -fill $color -width $selected -outline [color $rgb] - $_ coords $box $x $y $xx $yy - $_ coords $button $x $y $xx $yy - } - methods { - proc button:flash {} { - - } - } - } - - msg { - tags { - box txt - } - attributes { - x 2 y 2 - ins 1 - outs 1 - msg msg - } - init { - $_ create polygon 0 0 0 0 -tags [concat $tags box] - $_ create text 0 0 -tags [concat $tags txt] -fill white -anchor nw -justify left - } - redraw { - $_ coords $txt $x $y - $_ itemconfigure $box -fill $color - $_ itemconfigure $txt -font [list {bitstream vera sans} [expr int($sy)]] -text $msg - lassign [$_ bbox $txt] x y xx yy - set flare [expr $xx + ($xx - $x) / 12.] - $_ coords $box $x $y $flare $y $xx [expr $y + ($yy - $y)/2.] $flare $yy $x $yy -# foreach z {x xx y yy} {set $z [tr $_ [string range $z 0 0] i [set $z]]} -# up $_ $id x y xx yy - } - methods { - proc msg_updatetext {_} { - - } - } - } - - slider { - tags { - pos box - } - attributes { - x 2 y 10 - min 1 - v 48 - max 69 - ins 1 - outs 1 - } - init { - $_ create rect 0 0 0 0 -tags [concat $tags box] -fill $color - $_ create rect 0 0 0 0 -tags [concat $tags pos] -fill green -width 0 - } - redraw { - $_ coords $box $x $y $xx $yy - if {[expr ($xx - $x) > ($yy - $y)]} {set orient h} {set orient v} - set v [expr ($v - $min + 0.) / ($max - $min + 0.)] - switch $orient { - v { - set loc [expr $y + ($yy - $y) * $v] - set coords [concat $x $loc $xx $loc] - } - h { - set loc [expr $x + ($xx - $x) * $v] - set coords [concat $loc $y $loc $yy] - } - } - $_ coords $pos $coords - } - control { - Button-1 { - update $_ $id rel [dict create v [expr {($x - $($_:cx)) / 100.0 * ($max - $min + 0.)}]] 1 - } - } - } - - sound { - tags { - tl tlr tf tfr r w - } - attributes { - ins 0 - outs 0 - } - init { - snack::sound s$id - set filename [dict get $($_) $id filename] - s$id read $filename - $_ create path [::tkpath::coords rect 0 0 0 0 -rx 3 -ry 3] -tags [concat $tags r] -strokewidth 0 -fill $color -fillopacity 0.08 - $_ create waveform 0 0 -tags [concat $tags w] -sound s$id -fill white - set length [expr [s$id length] / ($($_:samplerate) + 0.0) * 1000] - update $_ $id abs [dict create xx [expr [dict get $($_) $id x] + $length]] 0 - $_ create text 0 0 -tags [concat $tags tl] -font {{bitstream vera sans} 8} -fill HotPink -anchor nw -justify left -text "[string range $length 0 10] s" - $_ create rectangle 0 0 0 0 -tags [concat $tags tlr] -fill LightGreen -width 0 - $_ raise $tl - $_ create text 0 0 -tags [concat $tags tf] -font {{bitstream vera sans} 8} -fill NavyBlue -anchor ne -justify right -text $filename - $_ create rectangle 0 0 0 0 -tags [concat $tags tfr] -fill gray90 -width 0 - $_ raise $tf - } - redraw { - set ro 6 - $_ coords $r [::tkpath::coords rect $x $y $sx $sy -rx $ro -ry $ro] - $_ itemconfigure $r -fillopacity [dict get $($_) $id v] -fill $color - $_ coords $w $x $y - $_ itemconfigure $w -width $sx -height [expr int($sy)] - $_ coords $tl [expr $x + 4] [expr $y + 4] - $_ coords $tlr [$_ bbox $tl] - $_ coords $tf [expr $x + $sx] [expr $y + 4] - $_ coords $tfr [$_ bbox $tf] - } - } - -} diff --git a/extensions/gui/ix/toxy/dd-demo.pd b/extensions/gui/ix/toxy/dd-demo.pd deleted file mode 100644 index fb59154fd78a0fea1084244c8cc2132e1a6d1004..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/dd-demo.pd +++ /dev/null @@ -1,33 +0,0 @@ -#N canvas 170 459 559 300 12; -#X obj 11 9 widget dd dt -bg black -width 38 -fg orange; -#X obj 9 99 dac~; -#X obj 10 77 *~ 0.3; -#X obj 52 77 *~ 0.3; -#X msg 11 33 open \$1 \, 1; -#X obj 11 55 readsf~ 2; -#X obj 290 33 widget dd df -bg purple -fg white -width 11; -#X obj 99 65 widget dd dl2 -bg green -fg purple -width 22; -#X symbolatom 93 96 30 0 0 0 - - -; -#X obj 114 110 print; -#X text 98 50 drop some files here..; -#X obj 3 184 widget dd d12; -#X msg 4 162 list la la la la; -#X floatatom 326 82 5 0 0 0 - - -; -#X msg 372 88 -width \$1; -#X obj 344 114 tow . dd df; -#X text 329 10 < drag amongst widgets; -#X msg 273 96 clear; -#X obj 169 137 widget q q -width 64 -height 12 -bg gray90 -fg blue -; -#X connect 0 0 4 0; -#X connect 2 0 1 0; -#X connect 3 0 1 1; -#X connect 4 0 5 0; -#X connect 5 0 2 0; -#X connect 5 1 3 0; -#X connect 7 0 8 0; -#X connect 7 0 9 0; -#X connect 7 0 18 0; -#X connect 12 0 11 0; -#X connect 13 0 14 0; -#X connect 14 0 15 0; diff --git a/extensions/gui/ix/toxy/dd.wid b/extensions/gui/ix/toxy/dd.wid deleted file mode 100755 index b82252ac22604d2458e8f619a3e38a2fa61500d1..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/dd.wid +++ /dev/null @@ -1,32 +0,0 @@ -namespace eval ::ix { -proc dd {path target symbol args} { - set sym [join [lrange $args 0 end] " "] - $path delete 0 end - $path insert 0 $sym - ddp $target $symbol $sym -} -proc ddp {target symbol stuff} { - if {$symbol == 1} { - pd "$target.rp _cb symbol [pdtk_enquote $stuff];" - } else { - pd "$target.rp _cb $stuff;" - } -} -} -#> dd entry -#. -selectforeground black -selectbackground green -#. -bg blue -font .(helvetica 10.) -width 24 -borderwidth 0 -#. #symbol 1 -#. @bang ::ix::ddp .| .#symbol [.- get] -#. @list ::ix::dd .- .| 0 .#args -#. @symbol ::ix::dd .- .| 1 .#1 -#. @clear .- delete 0 end -package require tkdnd -puts "dd .- .|" -bind .- <ButtonPress-1> {focus .-} -dnd bindtarget .- text/uri-list <Drop> {foreach i %D {::ix::dd .- .| .#symbol [regsub -- "^file://" $i ""]}} -dnd bindtarget .- text/plain <Drop> {::ix::dd .- .| .#symbol %D} -dnd bindsource .- text/plain {return [.- get]} -dnd bindsource .- text/uri-list {return "\{[.- get]\}"} -bind .- <Button1-Leave> {dnd drag %W} -bind .- <Return> {::ix::ddp .| .#symbol [.- get]} diff --git a/extensions/gui/ix/toxy/dm-demo.pd b/extensions/gui/ix/toxy/dm-demo.pd deleted file mode 100644 index b128e211d3638a5c27ea0e56b24d1db14d4fdb36..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/dm-demo.pd +++ /dev/null @@ -1,32 +0,0 @@ -#N canvas 45 442 370 233 10; -#X msg 190 127 clear; -#X symbolatom 187 203 10 0 0 0 - - -; -#X obj 187 155 widget dm dm1 #items .( zero one two three four five -six seven eight nine ten eleven twelve thirteen i14 i15 i16 i17 i18 -i19 i20 i21 i22 i23 i24 i25 i26 i27 i28 i29 i30.) #arrows 0; -#X obj 140 17 widget dm dm1 #items .(0 1 2 3 4 5 6 7 8 9 10 11 12.) --bg gray; -#X obj 187 185 l2s; -#X obj 56 119 l2s; -#X msg 56 76 zero one two three four five six seven eight nine ten -eleven twelve thirteen i14 i15 i16 i17 i18 i19 i20 i21 i22 i23 i24 -i25 i26 i27 i28 i29 i30; -#X msg 4 60 list ichi ni san chi; -#X msg 56 136 #items .( \$1.); -#X msg 92 25 5; -#X msg 89 8 12; -#X msg 259 138 #arrows \$1; -#X obj 258 122 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 -1; -#X connect 0 0 2 0; -#X connect 2 0 4 0; -#X connect 3 0 2 0; -#X connect 4 0 1 0; -#X connect 5 0 8 0; -#X connect 6 0 5 0; -#X connect 7 0 2 0; -#X connect 8 0 2 0; -#X connect 9 0 3 0; -#X connect 10 0 3 0; -#X connect 11 0 2 0; -#X connect 12 0 11 0; diff --git a/extensions/gui/ix/toxy/dm.wid b/extensions/gui/ix/toxy/dm.wid deleted file mode 100755 index 389e31bb548be5567e7c35d4a36c4c5c432950d9..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/dm.wid +++ /dev/null @@ -1,84 +0,0 @@ -#console show -namespace eval ::ix { - variable _ - proc spin_resize {w} { -# update - $w config -height [winfo height $w] -width [winfo width $w] - } - proc spin {c w t bg fg font items arrows} { - if {[winfo exists $w.m] != 1} { - variable _ - set _($t:p) 0 - array set arrow "up \u25b2 dn \u25bc"; array set anchor "up n dn s" - menubutton $w.m -menu $w.m.m -textvariable _($t:t) -relief raised \ - -bg $bg -fg $fg -font $font -padx 0 -pady 0 - menu $w.m.m -bd 0 -bg $bg -fg $fg; pack $w.m -side left -fill y - if {$arrows == 1} { - foreach i {up dn} { - button $w.$i -padx 0 -pady 0 -text $arrow($i) \ - -command "::ix::spinclick $w $t $i" \ - -bd 0 -bg $bg -fg $fg -font {Times 6} - pack $w.$i -anchor $anchor($i) - } - } - spin_resize $w - foreach item $items {spinitem $w $t $item} - $w.m.m activate 0; $w.m.m invoke 0 - } - } - proc spinitem {w t item} { - variable _ - set len [$w.m.m index end]; - if {$len ne "none"} {set n [expr $len + 1]} else {set n 0} - $w.m.m add radiobutton -selectcolor green -font {Tahoma 8} -label $item -variable _($t:t) -command "::ix::spinout $w $t $n" - set wider [string length $item]; set wide [$w.m cget -width] - if {$wide < $wider && $wider <= 31 } { - $w.m configure -width $wider - spin_resize $w - } - $w.m.m activate $n - } - proc spinout {w t i} { - set sym [$w.m.m entrycget $i -label] - pd [concat $t.rp _cb $sym \;] - $w.m.m activate $i - } - proc spinclick {w t d} { - variable _ - array set shift "up -1 dn 1" - set len [$w.m.m index end]; - set pos $_($t:p) - if {$pos != "none"} { - incr pos $shift($d) - if {$pos > $len} {set pos 0} - if {$pos < 0} {set pos $len} - $w.m.m activate $pos - $w.m.m invoke $pos - } - set _($t:p) $pos - } - proc spinclear {w} { - $w.m.m delete 0 end - $w.m configure -width 0 - } -} -#> dm frame -#. -bg green -padx 4 -pady 4 -height 40 -width 86 #arrows 1 -#. #bg black #fg "#8888ff" #items {} #font {Tahoma 10} -#. @list foreach x [list .#args] {::ix::spinitem .- .| $x} -#. @symbol ::ix::spinitem .- .| {.#1} -#. @float .-.m.m invoke .#1 .: set ::ix::_(.|:p) .#1 -#. @clear ::ix::spinclear .- -puts "dm .- .|" -::ix::spin .^ .- .| .#bg .#fg .#font .#items .#arrows -bind .- <Enter> {focus .-} -bind .- <Leave> {focus .^.c} -bind .- <<spin-dn>> {::ix::spinclick .- .| dn} -bind .- <<spin-up>> {::ix::spinclick .- .| up} -event add <<spin-dn>> <Key-space> <Key-Down> <Key-Right> -event add <<spin-up>> <Key-Up> <Key-Left> -foreach el {.- .-.m} { - bind $el <MouseWheel> {if {%D > 0} {::ix::spinclick .- .| up} else {::ix::spinclick .- .| dn}} - bind $el <Button-4> {::ix::spinclick .- .| up} - bind $el <Button-5> {::ix::spinclick .- .| dn} -} diff --git a/extensions/gui/ix/toxy/filter-demo.pd b/extensions/gui/ix/toxy/filter-demo.pd deleted file mode 100644 index c98ec40738d38c9b37c92aed1e700e8daae52fed..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/filter-demo.pd +++ /dev/null @@ -1,72 +0,0 @@ -#N canvas 218 245 450 232 10; -#X obj 51 67 widget filter f1 #div 8 #log 6.53061 #rate 44100 #n 5 -; -#X msg 11 42 redefine; -#X obj 185 259 biquad~; -#X obj 223 259 biquad~; -#X obj 261 259 biquad~; -#X obj 298 259 biquad~; -#X obj 336 259 biquad~; -#X obj 52 276 multiplex~ 0 99 23 44 88 22; -#X msg 35 18 #log \$1; -#X obj 23 7 hsl 50 10 5 10 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 0 1; -#X msg 41 -10 10; -#X msg 20 -10 0; -#X floatatom 80 29 3 1 5 0 - - -; -#X obj 189 278 biquad~; -#X obj 225 278 biquad~; -#X obj 263 278 biquad~; -#X obj 300 278 biquad~; -#X obj 337 278 biquad~; -#X obj 52 293 multiplex~ 0 99 23 44 88 22; -#X obj 51 225 route n params; -#X msg 80 43 #n \$1; -#X obj 206 242 route 1 2 3 4 5; -#X obj 184 242 adc~; -#X obj 52 310 dac~; -#X connect 0 0 19 0; -#X connect 1 0 0 0; -#X connect 2 0 3 0; -#X connect 2 0 7 1; -#X connect 3 0 4 0; -#X connect 3 0 7 2; -#X connect 4 0 5 0; -#X connect 4 0 7 3; -#X connect 5 0 6 0; -#X connect 5 0 7 4; -#X connect 6 0 7 5; -#X connect 7 0 23 0; -#X connect 8 0 0 0; -#X connect 9 0 8 0; -#X connect 10 0 9 0; -#X connect 11 0 8 0; -#X connect 12 0 20 0; -#X connect 13 0 14 0; -#X connect 13 0 18 1; -#X connect 14 0 15 0; -#X connect 14 0 18 2; -#X connect 15 0 16 0; -#X connect 15 0 18 3; -#X connect 16 0 17 0; -#X connect 16 0 18 4; -#X connect 17 0 18 5; -#X connect 18 0 23 1; -#X connect 19 0 7 0; -#X connect 19 0 18 0; -#X connect 19 1 21 0; -#X connect 20 0 0 0; -#X connect 21 0 2 0; -#X connect 21 0 13 0; -#X connect 21 1 3 0; -#X connect 21 1 14 0; -#X connect 21 2 4 0; -#X connect 21 2 15 0; -#X connect 21 3 5 0; -#X connect 21 3 16 0; -#X connect 21 4 6 0; -#X connect 21 4 17 0; -#X connect 22 0 7 0; -#X connect 22 0 2 0; -#X connect 22 1 18 0; -#X connect 22 1 13 0; diff --git a/extensions/gui/ix/toxy/filter.wid b/extensions/gui/ix/toxy/filter.wid deleted file mode 100755 index b05c938a9656ecf21c5506c0bc9ef730478571ad..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/filter.wid +++ /dev/null @@ -1,286 +0,0 @@ -namespace eval ::ix { - proc random_int {} { - return [expr "int(floor(rand()*16))"] - } - proc random_clr {} { - return [format "\#%1X%1X%1X%1X%1X%1X" [random_int] [random_int] [random_int] [random_int] [random_int] [random_int]] - } - variable _ - proc filter_update {path target n} { - set type [$path.filter itemcget type_$n -text] - set q [$path.filter itemcget q_$n -text] - set loc [$path.filter coords sqr_$n] - set x [expr 5 + [lindex $loc 0]] - set y [expr 5 + [lindex $loc 1]] - set inv [filter_invtr $path $target $x $y] - set freq [lindex $inv 0] - set mag [lindex $inv 1] - filter_bqp $path $target $n $type $freq $mag $q - } - proc filter_bqp {path target n type f0 dBgain Q} { - variable _ - set A [expr pow(10,($dBgain/40.0))] - set Fs $_($target:rate) - set pi [expr {atan(1) * 4}] - set w0 [expr 2 * $pi * $f0 / $Fs] - set alpha [expr sin($w0) / (2 * $Q)] - switch $type { - notch { - set b0 1 - set b1 [expr -2 * cos($w0)] - set b2 1 - set a0 [expr 1 + $alpha] - set a1 $b1 - set a2 [expr 1 - $alpha] - } - lowpass { - set b0 [expr (1 - cos($w0))/2] - set b1 [expr 1 - cos($w0)] - set b2 $b0 - set a0 [expr 1 + $alpha] - set a1 [expr -2 * cos($w0)] - set a2 [expr 1 - $alpha] - } - highpass { - set b0 [expr (1 + cos($w0))/2] - set b1 [expr -(1 + cos($w0))] - set b2 $b0 - set a0 [expr 1 + $alpha] - set a1 [expr -2 * cos($w0)] - set a2 [expr 1 - $alpha] - } - qbandpass { - set b0 [expr sin($w0)/2] - set b1 0 - set b2 [expr -$b0] - set a0 [expr 1 + $alpha] - set a1 [expr -2 * cos($w0)] - set a2 [expr 1 - $alpha] - } - bandpass { - set b0 $alpha - set b1 0 - set b2 [expr -$alpha] - set a0 [expr 1 + $alpha] - set a1 [expr -2 * cos($w0)] - set a2 [expr 1 - $alpha] - } - allpass { - set b0 [expr 1 - $alpha] - set b1 [expr -2 * cos($w0)] - set b2 [expr 1 + $alpha] - set a0 $b2 - set a1 $b1 - set a2 $b0 - } - peakingEQ { - set b0 [expr 1 + $alpha * $A] - set b1 [expr -2 * cos($w0)] - set b2 [expr 1 - $alpha * $A] - set a0 [expr 1 + $alpha / $A] - set a1 $b1 - set a2 [expr 1 - $alpha / $A] - } - lowShelf { - set b0 [expr $A*(($A+1)-($A-1)*cos($w0)+2*sqrt($A)*$alpha)] - set b1 [expr 2*$A*(($A-1)-($A+1)*cos($w0))] - set b2 [expr $A*(($A+1)-($A-1)*cos($w0)-2*sqrt($A)*$alpha)] - set a0 [expr ($A+1)+($A-1)*cos($w0)+2*sqrt($A)*$alpha] - set a1 [expr -2*(($A-1)+($A+1)*cos($w0))] - set a2 [expr ($A+1)+($A-1)*cos($w0) - 2*sqrt($A)*$alpha ] - } - highShelf { - set b0 [expr $A*(($A+1)+($A-1)*cos($w0)+2*sqrt($A)*$alpha)] - set b1 [expr -2*$A*(($A-1)+($A+1)*cos($w0))] - set b2 [expr $A*(($A+1)+($A-1)*cos($w0)-2*sqrt($A)*$alpha)] - set a0 [expr ($A+1)-($A-1)*cos($w0)+2*sqrt($A)*$alpha] - set a1 [expr 2*(($A-1)-($A+1)*cos($w0))] - set a2 [expr ($A+1)-($A-1)*cos($w0) - 2*sqrt($A)*$alpha ] - } - } - set f 0 - set fr {} - set _($target:fmag_$n) {1} - set h [winfo height $path.filter] - set h2 [expr $h / 2] - while {$f < [winfo width $path.filter]} { - incr f - set w [expr $pi * [filter_invtr_x $path $target $f] / $_($target:nyquist)] - set mag [expr sqrt(pow(($b0+$b1*cos($w)+$b2*cos(2*$w)),2)+pow(($b1*sin($w)+$b2*sin(2*$w)),2))/sqrt(pow(($a0+$a1*cos($w)+$a2*cos(2*$w)),2)+pow(($a1*sin($w)+$a2*sin(2*$w)),2))] - lappend fr $f [expr $h - $h2 * $mag] - lappend _($target:fmag_$n) $mag - } - $path.filter coords resp_$n $fr - pd [concat $target.rp _cb params $n [expr -1 * $a1 / $a0] [expr -1 * $a2 / $a0] [expr $b0 / $a0] [expr $b1 / $a0] [expr $b2 / $a0] \;] - filter_resp $path $target - } - proc filter_resp {path target} { - variable _ - if {$_($target:init) == 1} { - set f 0 - set fr {} - set h [winfo height $path.filter] - set h2 [expr $h / 2] - while {$f < [winfo width $path.filter]} { - incr f - set cx 0 - set ci 1 - while {$cx < $_($target:n)} { - incr cx - set ci [expr $ci * [lindex $_($target:fmag_$cx) $f]] - } - lappend fr $f [expr $h - $h2 * $ci] - } - $path.filter coords resp $fr - } - } - proc filter_motion {path target x y} { - set v [filter_invtr $path $target $x $y] - $path itemconfigure freq -text "[expr int([lindex $v 0])] hz" -# $path itemconfigure dB -text "[expr int([lindex $v 1])] dB" - } - proc filter_invtr {path target x y} { - return [list [filter_invtr_x $path $target $x] [filter_invtr_y $path $target $y]] - } - proc filter_invtr_x {path target x} { - variable _ - set gw [winfo width $path] - if {$_($target:log) > 0} { - return [expr $_($target:scale) * exp($_($target:log) * $x / $gw.0)] - } else { - return freq [expr $_($target:nyquist) * $x / $gw.0] - } - } - proc filter_invtr_y {path target y} { - set gh [winfo height $path] - return [expr (12 * ($y / $gh.0 - 0.5) * - 1.0)] - } - proc filter_new {path target w h bg div log rate n} { - variable _ - set _($target:init) 0 - set _($target:n) $n - set _($target:log) $log - set _($target:rate) $rate - set _($target:nyquist) [expr $rate / 2] - set _($target:scale) [expr $_($target:nyquist) / exp($_($target:log))] - if {[winfo exists $path.filter] != 1} { - canvas $path.filter -bg $bg -width $w -height $h - pack $path.filter -side left - bind $path.filter <Motion> "::ix::filter_motion %W $target %x %y" -# bind $path.filter <ButtonRelease> "::ix::filter_resp $path $target" - bind $path.filter <Leave> { - %W itemconfigure freq -text "" - %W itemconfigure dB -text "" - } - bind $path.filter <1> "::ix::filter_click $path $target %x %y" - bind $path.filter <B1-Motion> [bind $path.filter <1>] - filter_gridlines $path $target $div - filter_filters $path $target $n - $path.filter create text 2 1 -tags freq -text "" -anchor nw -justify left -font {{Bitstream Vera Sans} 9} -# $path.filter create text 96 1 -tags dB -text "" -anchor ne -justify right -font {{Bitstream Vera Sans} 9} - $path.filter create line 0 0 0 0 -tags resp -fill grey44 -width 1.6 - set fn 0 - while {$fn < $n} { - incr fn - foreach a [list sqr_$fn type_$fn q_$fn] {$path.filter raise $a} - } - set bd [expr {[$path cget -bd] * 2}] - $path configure -bg $bg -width [expr [winfo width $path.filter] + $bd] -height [expr [winfo height $path.filter] + $bd] - } - pd "$target.rp _cb n $n;" - set _($target:init) 1 - } - proc filter_filters {path target n} { - set gh [winfo height $path.filter] - set gw [winfo width $path.filter] - set fn 0 - while {$fn < $n} { - incr fn - set px [expr $gw.0 * $fn.0 / $n.0] - set py [expr $gh.0 / 2.0] - set fill [random_clr] - $path.filter create rectangle 0 0 0 0 -tags sqr_$fn -fill $fill - $path.filter create line 0 0 0 0 -tags resp_$fn -fill $fill - $path.filter create text 0 0 -tags type_$fn -fill grey33 -font {{Bitstream Vera Sans} 8} -text "peakingEQ" -anchor e -justify right - $path.filter create text 0 0 -tags q_$fn -fill white -font {{Bitstream Vera Sans} 8} -text "1.0" -anchor w -justify left - set b1 "::ix::filter_move $path $target $fn %x %y" - set b2 "::ix::filter_menu $path $target $fn %X %Y" - set b3 "::ix::filter_move_q $path $target $fn %x %y" - set b4 "::ix::filter_locus $path $target $fn %x %y" - foreach a [list sqr_$fn type_$fn q_$fn] { - $path.filter bind $a <1> $b1 - $path.filter bind $a <2> $b2 - $path.filter bind $a <3> $b4 - $path.filter bind $a <B3-Motion> $b3 - $path.filter bind $a <B1-Motion> $b1 - } - filter_move $path $target $fn $px $py - } - } - proc filter_menu {path target n x y} { - if {[winfo exists $path.ft] == 1} { destroy $path.ft} - set m [menu $path.ft -tearoff no] - foreach ft {lowpass highpass qbandpass bandpass notch allpass peakingEQ lowShelf highShelf} { - $m add command -label $ft -command "::ix::filter_type $path $target $n $ft" - } - tk_popup $path.ft $x $y - } - proc filter_type {path target n type} { - $path.filter itemconfigure type_$n -text "$type" - filter_update $path $target $n - } - proc filter_click {path target x y} { - variable _ - filter_move $path $target $_($target:recent) $x $y - } - proc filter_move {path target n px py} { - variable _ - $path.filter coords sqr_$n [expr $px - 5] [expr $py - 5] [expr $px + 5] [expr $py + 5] - $path.filter coords type_$n [expr $px - 9] [expr $py] - $path.filter coords q_$n [expr $px + 9] [expr $py] - filter_motion $path.filter $target $px $py - set _($target:recent) $n - filter_update $path $target $n - } - proc filter_locus {path target n px py} { - variable _ - set _($target:lx) $px - } - proc filter_move_q {path target n px py} { - variable _ - set delta [expr ($px.0 - $_($target:lx).0) / 25] - set move [expr [$path.filter itemcget q_$n -text] + $delta] - if {$move > 0} { - $path.filter itemconfigure q_$n -text $move - } - filter_update $path $target $n - set _($target:lx) $px - } - proc filter_gridlines {path target lines} { - variable _ - puts "gridlines" - set color white - set w $path.filter - $w delete gridlines - set gh [winfo height $w] - set gw [winfo width $w] - for {set x 1} {$x <= $lines} {incr x} { - if {$lines < 16 && $lines > 0} { - set oh [expr $gh.0 * $x.0 / $lines.0] - set ow [expr $gw.0 * $x.0 / $lines.0] - $w create line $ow 0 $ow $gh -fill $color -tags gridlines - $w create line 0 $oh $gw $oh -fill $color -tags gridlines - set fontsize [expr int(80.0/$lines.0)] - $w create text $ow [expr $gh - $fontsize] -font [list {Bitstream Vera Sans} $fontsize] -tags gridlines -text [expr int([filter_invtr_x $path $target $ow])] - } - } - $w raise ${target}sqr - } -} -#> filter frame -#. -bd 3 #w 384 #h 144 #bg gray90 #div 6 #n 3 -#. #log 1 #rate 44100 -#. @div ::ix::filter_gridlines .- .| .#1 -#. @params ::ix::filter_lp .- .| .#args -puts "filter .- .|" -::ix::filter_new .- .| .#w .#h .#bg .#div .#log .#rate .#n diff --git a/extensions/gui/ix/toxy/grid-demo.pd b/extensions/gui/ix/toxy/grid-demo.pd deleted file mode 100644 index 24a2dc66fc4284a4b8d047d2c0242982ff914797..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/grid-demo.pd +++ /dev/null @@ -1,69 +0,0 @@ -#N canvas 361 266 709 441 12; -#X obj 88 210 pack 0 0; -#X floatatom 151 352 7 0 0 0 - - -; -#X floatatom 200 351 7 0 0 0 - - -; -#X obj 151 331 unpack; -#X obj 151 228 widget grid g5a #bg white #fg purple #div 5 #shape rectangle -#w 95 #h 95 #ln pink #x 0.889764 #size 56 -width 55 -height 55; -#X obj 270 184 widget grid g3; -#X obj 402 154 widget grid g4 #fg orange #bg black #w 264 #h 159 #div -0; -#X obj 269 53 widget grid gg #shape oval #bg orange #fg pink #ln white -#div 2 #size 67; -#X obj 136 53 widget grid bllldie #bg red #fg white #ln gray #shape -arc #size 44 #div 22; -#X floatatom 131 12 5 0 0 0 - - -; -#X msg 131 30 #div \$1; -#X msg 269 31 #size \$1; -#X floatatom 269 13 5 0 0 0 - - -; -#X floatatom 403 110 5 0 0 0 - - -; -#X msg 403 129 #w \$1; -#X floatatom 442 110 5 0 0 0 - - -; -#X msg 442 129 #h \$1; -#X obj 66 174 random 100; -#X obj 43 133 t b b; -#X obj 29 157 random 100; -#X obj 44 198 * 0.01; -#X obj 43 97 bng 33 250 50 0 empty empty empty 0 -6 0 8 -225271 -1 --1; -#X obj 135 186 / 100; -#X text 426 25 #w #h #bg #fg #ln #div #shape #size; -#X obj 530 81 tot .; -#X msg 529 57 tot console show; -#X obj 199 370 * 200; -#X obj 339 315 widget grid g3902 #bg green #fg gray #ln yellow #div -3 #w 97 #h 97; -#X obj 456 376 widget grid #bg #fg gray #w 32 #h 32; -#X obj 149 395 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 --262144 -1 -1 0.66 256; -#X obj 35 71 metro 333; -#X obj 40 46 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 -; -#X connect 0 0 4 0; -#X connect 2 0 26 0; -#X connect 3 0 1 0; -#X connect 3 0 29 0; -#X connect 3 1 2 0; -#X connect 4 0 3 0; -#X connect 5 0 8 0; -#X connect 6 0 5 0; -#X connect 7 0 5 0; -#X connect 9 0 10 0; -#X connect 10 0 8 0; -#X connect 11 0 7 0; -#X connect 12 0 11 0; -#X connect 13 0 14 0; -#X connect 14 0 6 0; -#X connect 15 0 16 0; -#X connect 16 0 6 0; -#X connect 17 0 22 0; -#X connect 18 0 19 0; -#X connect 18 1 17 0; -#X connect 19 0 20 0; -#X connect 20 0 0 0; -#X connect 21 0 18 0; -#X connect 22 0 0 1; -#X connect 25 0 24 0; -#X connect 30 0 21 0; -#X connect 31 0 30 0; -#X coords 0 0 1 1 200 140 1; diff --git a/extensions/gui/ix/toxy/grid.wid b/extensions/gui/ix/toxy/grid.wid deleted file mode 100755 index 1d177ad88d9d1a01a1497a79bb5eaa60bf469cb3..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/grid.wid +++ /dev/null @@ -1,46 +0,0 @@ -namespace eval ::ix { - proc grid_click {w target r hy hx hh ww size} { - switch $r { - 0 { set y [expr $hy / $hh.0] - set x [expr $hx / $ww.0]} - 1 { set x $hx - set y $hy - set hx [expr $ww * $hx] - set hy [expr $hh * $hy]}} - set rs [expr $size / 2] - $w coords ${target}sqr [expr $hx - $rs] [expr $hy - $rs] [expr $hx + $rs] [expr $hy + $rs] - pd "$target.rp _cb $x $y;" - } - proc grid_new {path target w h bg fg ln div shape size} { - if {[winfo exists $path.grid] != 1} { - canvas $path.grid -bg $bg - $path configure -width $w -height $h - place $path.grid -anchor nw -relwidth 1 -relheight 1 - $path.grid create $shape 0 0 0 0 -fill $fg -tags ${target}sqr - grid_click $path.grid $target 1 0.5 0.5 $h $w $size - grid_lines $path.grid $target $div $w $h $ln - bind $path.grid <1> "::ix::grid_click %W $target 0 %y %x $h $w $size" - bind $path.grid <B1-Motion> "::ix::grid_click %W $target 0 %y %x $h $w $size" - } - } - proc grid_lines {w target lines ww hw color} { - $w delete gridlines - for {set x 1} {$x <= $lines} {incr x} { - if {$lines < 64} { - set oh [expr $hw.0 * $x.0 / $lines.0] - set ow [expr $ww.0 * $x.0 / $lines.0] - $w create line $ow 0 $ow $hw -fill $color -tags gridlines - $w create line 0 $oh $ww $oh -fill $color -tags gridlines - } - } - $w raise ${target}sqr - } -} -#> grid frame -#. -bd 3 -#. #w 128 #h 128 #x 0.5 #y 0.5 -#. #fg red #bg blue #ln yellow -#. #shape rectangle #size 12 #div 5 -#. @list ::ix::grid_click .-.grid .| 1 .#2 .#1 .#h .#w .#size - -::ix::grid_new .- .| .#w .#h .#bg .#fg .#ln .#div .#shape .#size diff --git a/extensions/gui/ix/toxy/img-demo.pd b/extensions/gui/ix/toxy/img-demo.pd deleted file mode 100644 index 195d86a80c1c007df0a460147abe053eddacd373..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/img-demo.pd +++ /dev/null @@ -1,60 +0,0 @@ -#N canvas 0 0 818 675 12; -#X obj 134 121 widget img i1; -#X obj 328 135 widget img img__guns #src /var/www/_/_i/p/_guns.gif -; -#X obj 328 167 widget img img__lunch #src /var/www/_/_i/p/_lunch.gif -; -#X obj 308 205 widget img img__roast #src /var/www/_/_i/p/_roast.gif -; -#X obj 328 231 widget img img__door #src /var/www/_/_i/p/_door.gif -; -#X obj 328 263 widget img img__fruit #src /var/www/_/_i/p/_fruit.gif -; -#X obj 328 295 widget img img__crop #src /var/www/_/_i/p/_crop.gif -; -#X obj 328 327 widget img img__twogirls #src /var/www/_/_i/p/_twogirls.gif -#mouseover 1; -#X obj 328 359 widget img img__345 #src /var/www/_/_i/p/_345.gif; -#X obj 328 391 widget img img__machinery #src /var/www/_/_i/p/_machinery.gif -; -#X obj 175 252 route _roast _guns; -#X obj 175 280 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 224 275 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 170 222 a2l; -#X obj 172 174 print wtf; -#X obj 189 131 a2l; -#X obj 381 -297 widget img img_guns #src /var/www/_/_i/p/guns.jpg; -#X obj 96 132 widget img img__pissers #src /var/www/_/_i/p/_pissers.gif -; -#X obj 96 164 widget img img__w3 #src /var/www/_/_i/p/_w3.gif; -#X obj 96 196 widget img img__w1 #src /var/www/_/_i/p/_w1.gif; -#X obj 96 228 widget img img__db #src /var/www/_/_i/p/_db.gif; -#X obj 96 260 widget img img__w4 #src /var/www/_/_i/p/_w4.gif; -#X obj 96 292 widget img img__scream #src /var/www/_/_i/p/_scream.gif -; -#X obj 96 324 widget img img__chair #src /var/www/_/_i/p/_chair.gif -; -#X obj 96 356 widget img img__dog #src /var/www/_/_i/p/_dog.gif; -#X obj 96 388 widget img img__w2 #src /var/www/_/_i/p/_w2.gif; -#X obj 96 420 widget img img__h #src /var/www/_/_i/p/_h.gif; -#X obj 96 452 widget img img__shitters #src /var/www/_/_i/p/_shitters.gif -; -#X obj 96 484 widget img img__violation #src /var/www/_/_i/p/_violation.gif -; -#X obj 96 516 widget img img__melt #src /var/www/_/_i/p/_melt.gif; -#X msg 206 326 #mouseover \$1; -#X obj 209 303 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 -1; -#X connect 1 0 13 0; -#X connect 3 0 13 0; -#X connect 3 0 15 0; -#X connect 7 0 14 0; -#X connect 10 0 11 0; -#X connect 10 1 12 0; -#X connect 13 0 10 0; -#X connect 15 0 14 0; -#X connect 16 0 14 0; -#X connect 30 0 7 0; -#X connect 31 0 30 0; diff --git a/extensions/gui/ix/toxy/img.wid b/extensions/gui/ix/toxy/img.wid deleted file mode 100755 index 34c82dfe261e54fe76739f99f3d14e7340df1866..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/img.wid +++ /dev/null @@ -1,41 +0,0 @@ -#console show -package require Img -package require tkdnd -namespace eval ::ix { - variable _ - proc drop_pics {name files x y} { - set c 0 - for {set n 0} {$n < [llength $files]} {incr n} { - if {[regexp {.*/(.+)\.[a-zA-Z0-9]+$} [lindex $files $n] file obj] == 1} { - pd [concat $name obj $x [expr $y + ($c * 32)] widget img [pdtk_enquote [string tolower "img_${obj}"]] #src [pdtk_enquote [regsub -- "^file:" [lindex $files $n] ""]] \;] - incr c - } - } - } - proc pic {c p t src mouseover} { - variable _ - image create photo $t - $p configure -image $t - if {$src ne "none" && [file exists $src]} { - $t configure -file $src - set cb "pd \"$t _cb [lindex [regexp -inline {.*/(.+)\.[a-zA-Z0-9]+$} $src] 1] \;\"" - bind $p <Enter> "$t configure -gamma 2" - if {$mouseover != 0} { - bind $p <Enter> +$cb - } - bind $p <Leave> "$t configure -gamma 1" - bind $p <ButtonPress-1> "+$t configure -gamma 0.5; $cb" - bind $p <ButtonRelease-> "+$t configure -gamma 1" - } else { - $t configure -format gif -data {R0lGODdhDgAQAKIAAICAgP///8DAwAAAAP8AAP///////////ywAAAAADgAQAAADWQi63Bi6HIIDGLocggMYuhyCAxi6HIIDEUFIEUSBIQMRGEFEhKEyoBoQUUQEykBEYBARBUbIQGAEUQQSRcggYOhyCA5g6HIIDmDocggOYOhyCA6g6LLi6HInADs=} - dnd bindtarget $c.c text/uri-list <Drop> "::ix::drop_pics $c %D %x %y" - } - set _($t:loc) 0 - } -} -#> img label -#. -borderwidth 0 -#. #src none #mouseover 1 -#. @bang puts "bang" -::ix::pic .^ .- .| {.#src} .#mouseover -puts "pic .- .|" diff --git a/extensions/gui/ix/toxy/kbd-demo.pd b/extensions/gui/ix/toxy/kbd-demo.pd deleted file mode 100644 index a9baf3953befde550dc1643ba2b7cfb8bc249a41..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/kbd-demo.pd +++ /dev/null @@ -1,61 +0,0 @@ -#N canvas 360 12 574 324 12; -#X obj 56 57 widget kbd k1 #octaves 7 -width 444.094 -height 63.4421 -; -#X obj 56 134 unpack; -#X floatatom 56 155 5 0 0 0 - - -; -#X floatatom 90 155 5 0 0 0 - - -; -#X floatatom 98 135 5 0 0 0 - - -; -#X obj 56 29 pack 0 1; -#X floatatom 56 13 5 0 0 0 - - -; -#X obj 99 14 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 -; -#X floatatom 21 32 5 0 0 0 - - -; -#X obj 56 217 osc~ 440; -#X obj 56 196 mtof; -#X obj 110 217 line~; -#X msg 110 195 \$1 100; -#X obj 80 265 dac~ 1 2; -#X obj 81 242 *~; -#X obj 92 173 * 0.4; -#X floatatom 149 21 5 0 12 0 - - -; -#X msg 148 38 #octaves \$1; -#X obj 143 134 widget kbd k2 #octaves 3 #bg hotpink #fg orange -height -32; -#X obj 56 174 + 36; -#X obj 345 134 widget kbd k2 #octaves 3 #bg blue #fg cyan -height 32 -; -#X obj 207 232 * 127; -#X obj 171 230 + 36; -#X obj 171 265 noteout; -#X obj 170 203 unpack 0 0 0; -#X obj 160 172 Append 1; -#X obj 232 173 Append 2; -#X connect 0 0 1 0; -#X connect 0 0 4 0; -#X connect 1 0 2 0; -#X connect 1 1 3 0; -#X connect 2 0 19 0; -#X connect 3 0 15 0; -#X connect 5 0 0 0; -#X connect 6 0 5 0; -#X connect 7 0 5 1; -#X connect 8 0 0 0; -#X connect 9 0 14 0; -#X connect 10 0 9 0; -#X connect 11 0 14 1; -#X connect 12 0 11 0; -#X connect 14 0 13 0; -#X connect 14 0 13 1; -#X connect 15 0 12 0; -#X connect 16 0 17 0; -#X connect 17 0 0 0; -#X connect 18 0 25 0; -#X connect 19 0 10 0; -#X connect 20 0 26 0; -#X connect 21 0 23 1; -#X connect 22 0 23 0; -#X connect 24 0 22 0; -#X connect 24 1 21 0; -#X connect 24 2 23 2; -#X connect 25 0 24 0; -#X connect 26 0 24 0; diff --git a/extensions/gui/ix/toxy/kbd.wid b/extensions/gui/ix/toxy/kbd.wid deleted file mode 100755 index 06c1d7e796c564fc621951b4eed90354a61dc813..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/kbd.wid +++ /dev/null @@ -1,48 +0,0 @@ -namespace eval ::ix { - proc kbd_list {p t args} { - variable _ - set w $p.f[expr [lindex $args 0] / 12].[lindex $args 0] - if {[llength $args] == 1} {set v 1;if {$_($t:lp) != -1 && $_($t:lp) ne $w} {kbd_action $_($t:lp) $t 0}} {set v [lindex $args 1]} - kbd_action $w $t $v - set _($t:lp) $w} - - proc kbd_play {t m b x y} { - variable _ - foreach a {{rs {0 sunken 1 raised}} {v {0 0 1 {($y - [winfo rooty $w]) / ([winfo height $w] + 0.0)}}}} {array set [lindex $a 0] [lindex $a 1]} - set w [winfo containing $x $y] - if {$m != 1 && $_($t:lp) != -1 && $_($t:lp) ne $w} {kbd_action $_($t:lp) $t 0} - if {[$w cget -relief] eq $rs($b)} {kbd_action $w $t [eval expr $v($b)]} - set _($t:lp) $w} - - proc kbd_action {w t v} { - if {$v == 0} {set relief raised} {set relief sunken} - $w config -relief $relief - pd [concat $t.rp _cb [winfo name $w] $v \;]} - - proc kbd_off {p t octaves} { - for {set o 0} {$o < $octaves} {incr o} { - for {set on 0} {$on < 12} {incr on} { - set w $p.f$o.[expr $o * 12 + $on] - if {[$w cget -relief] eq "sunken"} {kbd_action $w $t 0}}}} - - proc kbd {path t octaves b f} { - $path config -width [expr $octaves * 66] - if {![winfo exists $path.f0]} { - variable _ - set _($t:lp) -1 - set bw {0 1 0 1 0 0 1 0 1 0 1 0} ; set npl {0 1 1 2 2 3 4 4 5 5 6 6} - foreach a {{bg "0 $b 1 $f"} {fg "1 $b 0 $f"} {an {0 ";lower $wk" 1 "-anchor n"}} {rw {0 {[expr 1 / 7.]} 1 {[expr 1 / 10.]}}} {rh {0 {[expr 1.]} 1 {[expr 6 / 10.]}}}} {array set [lindex $a 0] [lindex $a 1]} - for {set o 0} {$o < $octaves} {incr o} { - set w $path.f$o ; frame $w -bd 0 -height 66 -width 66 - for {set on 0} {$on < 12} {incr on} { - set wk $w.[expr $o * 12 + $on] ; set n [lindex $bw $on] - eval "label $wk -bg $bg($n) -fg $fg($n) -bd 1 -relief raised;place $wk -relx [expr [lindex $npl $on] / 7.] -y 0 -relwidth $rw($n) -relheight $rh($n) $an($n)" - bind $wk <1> "::ix::kbd_play $t 0 1 %X %Y"; bind $wk <B1-Motion> [bind $wk <1>];bind $wk <ButtonRelease-1> "::ix::kbd_play $t 0 0 %X %Y"; bind $wk <Enter> "::ix::kbd_play $t 1 0 %X %Y"; bind $wk <3> "::ix::kbd_play $t 1 1 %X %Y"; bind $wk <B3-Motion> [bind $wk <3>]; bind $wk <2> "::ix::kbd_off $path $t $octaves"} - place $w -y 0 -relheight 1.0 -relx [expr $o / $octaves.0] -relwidth [expr 1 / $octaves.0]}}}} - -#> kbd frame -#. -height 100 -width 60 -#. #octaves 6 #bg black #fg white -#. @list ::ix::kbd_list .- .| .#args -#. @float ::ix::kbd_list .- .| .#args -::ix::kbd .- .| .#octaves .#bg .#fg diff --git a/extensions/gui/ix/toxy/knob-demo.pd b/extensions/gui/ix/toxy/knob-demo.pd deleted file mode 100644 index 3d1035afa8db701c7d1eb41ed0108727a4a811a8..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/knob-demo.pd +++ /dev/null @@ -1,43 +0,0 @@ -#N canvas 403 277 313 218 12; -#X floatatom 157 24 5 16 1024 0 - - -; -#X msg 157 42 #w \$1 \, #h \$1; -#X floatatom 194 7 5 3 22 0 - - -; -#X obj 13 148 nbx 8 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 --262144 -1 -1 -0.0116279 256; -#X obj 13 39 widget knob n1 #w 88 #h 88 #th 3 #cc purple #cb black -#ca red #trans 81 #bg green #range 1 #cn navy #ny 79 #nx 43 #max 0 -#min 0 #an white -bd 1; -#X msg 135 109 #range \$1; -#X msg 157 144 1; -#X msg 184 144 10000; -#X floatatom 203 94 5 0 0 0 - - -; -#X msg 203 109 #ny \$1; -#X floatatom 203 61 5 0 0 0 - - -; -#X msg 203 76 #nx \$1; -#X msg 157 170 #max 1; -#X msg 202 170 #max 32 \, #min 16; -#X msg 157 190 #min 0 \, #max 0; -#X msg 103 107 1; -#X msg 103 85 100; -#X msg 104 63 1000; -#X msg 104 41 0.1; -#X msg 194 23 #th \$1; -#X connect 0 0 1 0; -#X connect 1 0 4 0; -#X connect 2 0 19 0; -#X connect 4 0 3 0; -#X connect 5 0 4 0; -#X connect 6 0 4 0; -#X connect 7 0 4 0; -#X connect 8 0 9 0; -#X connect 9 0 4 0; -#X connect 10 0 11 0; -#X connect 11 0 4 0; -#X connect 12 0 4 0; -#X connect 13 0 4 0; -#X connect 14 0 4 0; -#X connect 15 0 5 0; -#X connect 16 0 5 0; -#X connect 17 0 5 0; -#X connect 18 0 5 0; -#X connect 19 0 4 0; diff --git a/extensions/gui/ix/toxy/knob.wid b/extensions/gui/ix/toxy/knob.wid deleted file mode 100755 index 450f1baf958eb5117dc6815dfea38063f702e94b..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/knob.wid +++ /dev/null @@ -1,102 +0,0 @@ -namespace eval ::ix { - variable _ - proc nobfloat {path t num} { - variable _ - $path itemconfigure $t:num -text $num - pd [concat $t.rp _cb $num \;] - set _($t:num) $num - } - proc nob_mover {w t f x y} { - variable _ - if {$::ix::_($t:clickd) > 0} { - set move [expr (($x - $::ix::_($t:lx)) + (-1 * ($y - $::ix::_($t:ly)))) / ([winfo width $w].0 + [winfo height $w].0) * $f] - nob_move $w $t $move - } - set ::ix::_($t:clickd) 1 - set ::ix::_($t:lx) $x - set ::ix::_($t:ly) $y - } - proc nob_move {w t move} { - variable _ - set on [$w itemcget $t:num -text] - set no [expr $on + $_($t:range) * $move * 2] - if {$_($t:min) != $_($t:max)} { - if {$no > $_($t:max)} {set no $_($t:max);set move 0} - if {$no < $_($t:min)} {set no $_($t:min);set move 0} - } - nobfloat $w $t $no - foreach e {1 10 100} { - set a [expr [$w itemcget $t:nob$e -start] + int($move * $e * 90)] - $w itemconfigure $t:nob$e -start $a - set _($t:a$e) $a - } - } - - proc nob {path t w h range bg c1 c2 c3 cn th nx ny max min} { - variable _ - set _($t:lx) 32 - set _($t:clickd) -1 - set _($t:max) $max - set _($t:min) $min - if {$_($t:min) != $_($t:max)} { - set _($t:range) [expr abs($min - $max)] - } else { - set _($t:range) $range - } - if {[winfo exists $path.nob] != 1} { - canvas $path.nob -width $w -height $h -borderwidth 1 -bg $bg - $path configure -width $w -height $h - place $path.nob -anchor nw -relwidth 1 -relheight 1 - $path.nob delete * - set i 0 - set colors [list $c1 $c2 $c3] - set ratios {1 10 0.1} - set edge 10 - $path.nob create rectangle {1 1 8 4} -fill "#555555" - $path.nob create rectangle "1 $h 8 [expr $h - 5]" -fill "#555555" - foreach e {1 10 100} { - $path.nob create arc \ - "[expr $w / $edge / ($i + 1) + ($edge / 2)] [expr $h / $edge / ($i + 1) + ($edge / 2)] [expr $w - $w / $edge / ($i + 1) - ($edge / 2)] [expr $h - $h / $edge / ($i + 1) - ($edge / 2)]" \ - -extent [expr int(300 / $e)] -start 90 \ - -outline "[lindex $colors $i]" \ - -style arc \ - -width [expr int($h / $th)] \ - -tags $t:nob$e - bind $path.nob <B[expr $i + 1]-Motion> \ - "::ix::nob_mover $path.nob $t [lindex $ratios $i] %x %y" - incr i - bind $path.nob <ButtonRelease-$i> "set ::ix::_($t:clickd) -1" - } - bind $path <MouseWheel> {::ix::nob_move %W.nob [winfo name %W] [expr %D / 2400.]} - bind $path <Shift-MouseWheel> {::ix::nob_move %W.nob [winfo name %W] [expr %D / 24000.]} - bind $path <Control-MouseWheel> {::ix::nob_move %W.nob [winfo name %W] [expr %D / 240.]} - bind $path.nob <Shift-B1-Motion> "::ix::nob_mover $path.nob $t 10 %x %y" - bind $path.nob <Control-B1-Motion> "::ix::nob_mover $path.nob $t 0.1 %x %y" - if {$nx == 0} { - set nx [expr $w / 2] - set ny [expr $h - 20] - } - $path.nob create text $nx $ny -text "0.0" -tags $t:num -fill "$cn" -font {{Bitstream Vera Sans} 8} - } - if {[info exists _($t:num)]} { - $path.nob itemconfigure $t:num -text $_($t:num) - foreach e {1 10 100} { - $path.nob itemconfigure $t:nob$e -start $_($t:a$e) - } - } else { - foreach e {1 10 100} {set _($t:a$e) 90} - set _($t:num) 0.0} - - } -} -#> knob frame -#. -bd 1 -bg "#cccccc" -#. -highlightbackground red -#. #max 0 #min 0 -#. #w 128 #h 128 #th 5 #range 100 #nx 0 #ny 0 -#. #bg purple #ca blue #cb yellow #cc green #cn orange -#. @float ::ix::nobfloat .-.nob .| .#1 -#. @cmd eval ".-.nob .#args" -bind .- <Enter> {focus .-} -bind .- <Leave> {focus .^.c} -::ix::nob .- .| .#w .#h .#range .#bg .#ca .#cb .#cc .#cn .#th .#nx .#ny .#max .#min diff --git a/extensions/gui/ix/toxy/lg-demo.pd b/extensions/gui/ix/toxy/lg-demo.pd deleted file mode 100644 index a7c95bf40c732502f4bb4db8922ec42212f4a08c..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/lg-demo.pd +++ /dev/null @@ -1,68 +0,0 @@ -#N canvas 138 75 1019 727 12; -#X obj 5 87 widget lg lga -width 940 -height 440 -bg green; -#X obj 92 -48 bng 28 250 50 0 empty empty view 0 -6 0 8 -62784 -1 -1 -; -#X msg 58 34 clear; -#X obj 142 34 getall lga; -#X obj 366 62 srec lga; -#X msg -2 52 cmd axis configure y -logscale \$1; -#X obj -3 38 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 -; -#X msg 421 -36 190 lolp 0 \, 140 lolp 4; -#X msg 398 -18 1 kgoga 2 3 6 \, 190 kgoga 0 4 3; -#X obj 70 216; -#X msg 75 211; -#X msg 335 -28 delete lolp; -#X msg 322 -46 delete kgoga; -#X msg 25 34 dump; -#X msg 395 1 1 juba 2 3 4 5 \, 200 juba 5 6 7 8; -#X obj 9 607 pool lga; -#X obj 74 546 + 1; -#X obj 47 546 i; -#X obj 9 563 prepend; -#X obj 5 528 t a b; -#X obj 8 585 prepend set; -#X msg 106 11 reset; -#X obj 83 -12 t b b; -#X msg 118 -9 0; -#X obj 123 -49 bng 32 250 50 0 empty empty write-+ 0 -6 0 8 -24198 --1 -1; -#X obj 144 6 t b b; -#X obj 426 27 tow . lg lga; -#X msg 217 20 redefine; -#X msg 227 61 -width \$1; -#X msg 286 61 -height \$1; -#X floatatom 227 43 5 0 0 0 - - -; -#X floatatom 286 43 5 0 0 0 - - -; -#X connect 0 0 19 0; -#X connect 1 0 25 0; -#X connect 2 0 0 0; -#X connect 3 0 0 0; -#X connect 5 0 0 0; -#X connect 6 0 5 0; -#X connect 7 0 26 0; -#X connect 8 0 26 0; -#X connect 11 0 26 0; -#X connect 12 0 26 0; -#X connect 13 0 0 0; -#X connect 14 0 26 0; -#X connect 16 0 17 1; -#X connect 17 0 16 0; -#X connect 17 0 18 1; -#X connect 18 0 20 0; -#X connect 19 0 18 0; -#X connect 19 1 17 0; -#X connect 20 0 15 0; -#X connect 21 0 15 0; -#X connect 22 0 13 0; -#X connect 22 1 21 0; -#X connect 22 1 23 0; -#X connect 23 0 17 1; -#X connect 24 0 22 0; -#X connect 25 0 3 0; -#X connect 25 1 2 0; -#X connect 27 0 0 0; -#X connect 28 0 0 0; -#X connect 29 0 0 0; -#X connect 30 0 28 0; -#X connect 31 0 29 0; diff --git a/extensions/gui/ix/toxy/lg.wid b/extensions/gui/ix/toxy/lg.wid deleted file mode 100755 index c43b8012fefad3cefc1b61f415f1147d7868f775..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/lg.wid +++ /dev/null @@ -1,237 +0,0 @@ -package require BLT -namespace import blt:: -namespace eval ::ix { - variable _ - proc random_int {} { - return [expr "int(floor(rand()*16))"] - } - proc random_clr {} { - return [format "\#%1X%1X%1X%1X%1X%1X" [random_int] [random_int] [random_int] [random_int] [random_int] [random_int]] - } - proc lg_add {path tg args} { - variable _ - set e [lindex $args 1] - set l [llength $args] - for {set n 2} {$n < $l} {incr n} { - if {$l > 3} {set nm $e:[expr $n - 1]} else {set nm $e} - set _($path:$nm:e) [expr $n - 1] - set _($path:$nm:p) $e - set _($path:$e:n) [expr $l - 2] - lg_list $path $tg $nm [lindex $args 0] [lindex $args $n] - } - } - proc lg_dumper {path tg args} { - variable _ - foreach e [$path element names] { - if {$_($path:$e:e) == 1} { - lg_dump $path $tg $e - } - } - } - proc lg_dump {path tg e} { - variable _ - set p $_($path:$e:p) - set el $_($path:$e:e) - set n $_($path:$p:n) - for {set i 0} {$i < [$tg:x$e length]} {incr i} { - set out {} - lappend out [$tg:x$e index $i] - lappend out $p - if {$n > 1} { - for {set x 1} {$x <= $n} {incr x} { - lappend out [$tg:y$p:$x index $i] - } - } else { - lappend out [$tg:y$e index $i] - } - set out [join $out " "] -# puts $out - pd "$tg.rp _cb $out;" - } - } - proc lg_list {path tg e i1 i2} { - if {[$path element exists $e] != 1} {lg_nv $path $tg $e} - $tg:y$e append $i2 - $tg:x$e append $i1 - } - proc lg_zoom {path tg d x y} { - puts "$path $tg $d" - if {$d eq "in"} {set dn 4} {set dn 1} - set lx [$path axis limits x] - set dx [expr ([lindex $lx 1] - [lindex $lx 0]) / $dn] - set cx [$path axis invtransform x $x] - set cy [$path axis invtransform y $y] - set ly [$path axis limits y] - set dy [expr ([lindex $ly 1] - [lindex $ly 0]) / $dn] - $path axis configure x -min [expr $cx - $dx] -max [expr $cx + $dx] - $path axis configure y -min [expr $cy - $dy] -max [expr $cy + $dy] - } - proc lg_dr {path tg e x y} { - variable _ - if {[$path element closest $x $y cl -halo 666 -interpolate 1 -along x $e] == 1} { - set new [$path axis invtransform y $y] - set n $tg:y$cl(name) - set io $_($path:clickd) - set ic $cl(index) - $n index $ic $new - if {$io != -1 && [expr abs($io - $ic)] > 1} {lg_smooth $io $ic $n} - set _($path:clickd) $ic - } - } - proc lg_smooth {io ic n} { -# puts "smoothing $n from $io to $ic" - set vo [$n index $io] - set vc [$n index $ic] - if {$ic > $io} {set is $io; set vs $vo} else {set is $ic; set vs $vc} - set ne [expr [$n length] - 1] - if {$ic != $ne && $io != $ne} { - for {set i 1} {$i < [expr abs($io - $ic)]} {incr i} { - set nv [expr $vs + (($vc - $vo) * $i / ($ic - $io))] - set ni [expr $is + $i] - $n index $ni $nv - } - } - } - proc lg_sl {path tg e x y} { - variable _ - set t [$path invtransform $x $y] - if {$_($path:clickd) != -1} { - set dx [expr [lindex $t 0] - [lindex $_($path:clcord) 0]] - set dy [expr [lindex $t 1] - [lindex $_($path:clcord) 1]] - - set p $_($path:$e:p) - set el $_($path:$e:e) - set n $_($path:$p:n) - - if {$n > 1} { - for {set i 1} {$i <= $n} {incr i} { - set tx $tg:x$p:$i - set ty $tg:y$p:$i - $tx expr "$tx + $dx" - if {$el == $i} {$ty expr "$ty + $dy"} - } - } else { - $tg:x$e expr "$tg:x$e + $dx" - $tg:y$e expr "$tg:y$e + $dy" - } - } - set _($path:clcord) $t - set _($path:clickd) 1 - } - proc lg_draw {path tg e x y} { - variable _ - if {[$path element closest $x $y cl -halo 666 -interpolate 1 -along x $e] == 1} { - set t [$path invtransform $x $y] - set p $_($path:$e:p) - set el $_($path:$e:e) - set n $_($path:$p:n) - set io $_($path:clickd) - set ic $cl(index) - if {$n > 1} { - for {set i 1} {$i <= $n} {incr i} { - set tx $tg:x$p:$i - set ty $tg:y$p:$i - if {$el == $i} {set ny [lindex $t 1]} else { - if {[$ty length] == $ic} {set tc [expr $ic - 1]} else {set tc $ic} - set ny [$ty index $tc] - } - set nx [lindex $t 0] - $ty append $ny - $tx append $nx - $tx sort $ty - if {$i == 1} { - if {$ic < $io} {incr io} - incr ic - } - if {$io != -1 && [expr abs($io - $ic)] > 1} {lg_smooth $io $ic $ty} - } - } else { - $tg:y$e append [lindex $t 1] - $tg:x$e append [lindex $t 0] - $tg:x$e sort $tg:y$e - if {$ic < $io} {incr io} - incr ic - if {$io != -1 && [expr abs($io - $ic)] > 1} {lg_smooth $io $ic $tg:y$e} - } - set _($path:clickd) $ic - } - } - - proc lg_trim {path tg e x y} { - variable _ - if {[$path element closest $x $y cl -halo 666 -interpolate 1 -along x $e] == 1} { -# foreach name [array names cl] {puts "$name $cl($name)"} - if {[expr abs([$path axis transform x [$tg:x$e index $cl(index)]] - $x.0)] < 32} { - set p $_($path:$cl(name):p) - set n $_($path:$p:n) - if {$n > 1} { - for {set i 1} {$i <= $n} {incr i} { - $tg:y$p:$i delete $cl(index) - $tg:x$p:$i delete $cl(index) - } - } else { - $tg:y$cl(name) delete $cl(index) - $tg:x$cl(name) delete $cl(index) - } - } - } - } - proc lg_cl {path tg} { - foreach e [$path element names] {lg_dv $path $tg $e} -# pd "$tg.rp _cb symbol clear;" - } - proc lg_de {path tg e} { - variable _ - set n $_($path:$e:n) - if {$n > 1} { - for {set i 1} {$i <= $n} {incr i} { - lg_dv $path $tg $e:$i - } - } else { - lg_dv $path $tg $e - } - } - proc lg_dv {path tg e} { - blt::vector destroy $tg:x$e - blt::vector destroy $tg:y$e - $path element delete $e -# pd "$tg.rp _cb delete $e;" - } - proc lg_nv {path tg e} { - variable _ - blt::vector create $tg:x$e -variable "" - blt::vector create $tg:y$e -variable "" - set _($path:clickd) -1 - $path element create $e -x $tg:x$e -y $tg:y$e -symbol "circle" -pixels 2 -linewidth 2 -color [random_clr] -hide 0 -# puts "creating: $path $e -x $tg:x$e -y $tg:y$e -color [random_clr] -hide 0" - $path element bind $e <B1-Motion> "::ix::lg_dr $path $tg $e %x %y" - $path element bind $e <Shift-B1-Motion> "::ix::lg_sl $path $tg $e %x %y" - $path element bind $e <Control-B1-Motion> "::ix::lg_draw $path $tg $e %x %y" - $path element bind $e <Alt-B1-Motion> "::ix::lg_trim $path $tg $e %x %y" -# $path element bind $e <1> "::ix::lg_dr $path $tg $e %x %y" - $path element bind $e <ButtonRelease-1> "set ::ix::_($path:clickd) -1" -# $path element bind $e <Shift-ButtonRelease-1> "set ::ix::_($path:clickd) -1" - } - proc lg_new {path tg} { - bind $path <ButtonPress-3> {} - bind $path <Button-4> "::ix::lg_zoom $path $tg in %x %y" - bind $path <Button-5> "::ix::lg_zoom $path $tg out %x %y" - bind $path <Control-Button-4> "$path axis configure x -min {} -max {}; $path axis configure y -min {} -max {}" - bind $path <Control-Button-5> [bind $path <Control-Button-4>] - Blt_ZoomStack $path "2" "Control-2" - $path axis configure x -background [$path cget -bg] - $path axis configure y -background [$path cget -bg] - } -} -#> lg blt::graph -#. -bg yellow -halo 16 -#. @clear ::ix::lg_cl .- .| -#. @delete ::ix::lg_de .- .| .#1 -#. @list ::ix::lg_add .- .| .#args -#. @add ::ix::lg_add .- .| .#args -#. @dump ::ix::lg_dumper .- .| .#args -#. @cmd eval ".- .#args" - -::ix::lg_new .- .| - -puts "lg .- .|" \ No newline at end of file diff --git a/extensions/gui/ix/toxy/mat-demo.pd b/extensions/gui/ix/toxy/mat-demo.pd deleted file mode 100644 index eda61bc5107d107304321bfcfe4a734d1d65aba2..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/mat-demo.pd +++ /dev/null @@ -1,53 +0,0 @@ -#N canvas 80 85 910 775 12; -#X obj 15 29 widget mat n1 #w 881 #bg gray83 #divX 8 #divY 5 #h 494 -#Yb 1 #Ya 88 #qYv 2 #qYa 8 #ln white; -#X msg 1080 -13 -height 26 -width 26 -bg gray95; -#X msg 184 648 redefine; -#X obj 131 646 * 127; -#X obj 95 644 + 36; -#X obj 587 565 rr ss; -#X obj 587 546 rg; -#X obj 20 603 unpack f f f; -#X obj 47 638 * 127; -#X obj 26 668 pack f f f; -#X obj 49 692 makenote 99 250; -#X obj 102 728 noteout; -#X obj 77 559 rp ss kbd; -#X obj 158 583 rp ss kb2; -#X obj 138 537 widget kbd k1 #bg blue #fg green #ln gray50 -height -32; -#X obj 138 570 widget kbd k2 #bg orange #fg red #ln gray50 -height -32; -#X obj 108 622 unpack 0 0 0; -#X obj 108 603 Append 1; -#X obj 158 602 Append 2; -#X msg 74 575 1; -#X obj 3 533 widget dd dd1 -bg green -fg red; -#X obj 3 493 a2l; -#X obj 3 549 widget dd s2 #symbol 0; -#X connect 0 0 21 0; -#X connect 2 0 0 0; -#X connect 3 0 11 1; -#X connect 4 0 11 0; -#X connect 6 0 5 0; -#X connect 7 0 9 0; -#X connect 7 1 8 0; -#X connect 7 2 9 2; -#X connect 8 0 9 1; -#X connect 9 0 10 0; -#X connect 10 0 11 0; -#X connect 10 1 11 1; -#X connect 12 0 17 0; -#X connect 13 0 18 0; -#X connect 14 0 17 0; -#X connect 14 0 12 0; -#X connect 15 0 18 0; -#X connect 15 0 13 0; -#X connect 16 0 4 0; -#X connect 16 1 3 0; -#X connect 16 2 11 2; -#X connect 17 0 16 0; -#X connect 18 0 16 0; -#X connect 19 0 9 2; -#X connect 21 0 20 0; -#X connect 22 0 20 0; diff --git a/extensions/gui/ix/toxy/mat.wid b/extensions/gui/ix/toxy/mat.wid deleted file mode 100755 index 237bf772d8f9f95015bd61d6b2253c6fd4f916ad..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/mat.wid +++ /dev/null @@ -1,688 +0,0 @@ -foreach package {snack tkdnd tkpath} {package require $package} -namespace eval ::ix { - proc rc {} {return [format "\#%06x" [expr "int(floor(rand() * 16777216))"]]} - proc rgb {} {return [list [expr "int(floor(rand() * 256))"] [expr "int(floor(rand() * 256))"] [expr "int(floor(rand() * 256))"]]} - proc lighten {rgb r} {set l {}; foreach c $rgb {lappend l [expr {(256 - $c) * $r + $c}]}; return $l} - proc darken {rgb r} {set l {}; foreach c $rgb {lappend l [expr {$c - ($c * $r)}]}; return $l} - proc color {rgb} {return [format "\#%02x%02x%02x" [expr int([lindex $rgb 0])] [expr int([lindex $rgb 1])] [expr int([lindex $rgb 2])]]} - proc random_txt {n} { - set i 0 - set text "" - while {$i < $n} { - set int [expr "int(floor(rand()*62))"] - if {$int < 10} {incr int 48} elseif {$int < 36} {incr int 55} else {incr int 61} - set text "$text[format %c $int]" - incr i - } - return $text - } - - proc mat_sel {p t a x y} { - variable _ - set _($t:sc) [rc] - switch $a { - first { - foreach xy {x y} {set _($t:c$xy) [set $xy];set _($t:f$xy) [set $xy]} - $p.m create path [::tkpath::coords rect $_($t:cx) $_($t:cy) 0 0 -rx 12 -ry 12] \ - -tags sel -stroke $_($t:sc) -strokewidth 12 -strokeopacity 0.3} - release {$p.m delete sel} - motion { - mat_updatesel $p $t [mat_cleansel $p $t [$p.m find overlapping $_($t:fx) $_($t:fy) $x $y]] - if {$x >= $_($t:cx)} {set xa $_($t:fx);set xb $x} else {set xa $x;set xb $_($t:fx)} - if {$y >= $_($t:cy)} {set ya $_($t:fy);set yb $y} else {set ya $y;set yb $_($t:fy)} - set w [expr {abs($xb - $xa)}] - set h [expr {abs($yb - $ya)}] - $p.m coords sel [::tkpath::coords rect $xa $ya $w $h -rx 12 -ry 12] - $p.m itemconfigure sel -stroke $_($t:sc)}}} - - proc mat_item_new {p t id d} { - variable _ - if {$id eq "-"} { - if {[dict keys $_($t)] eq ""} {set id 0} else { - set id -1 - while true {if {[lsearch -integer [dict keys $_($t)] [incr id]] == -1} {break}} - } - } - set _($t:ci) $id - mat_item_ua $p $t $id abs {x 0 xx 0 y 0 yy 0 g 0 v 1} 0 - mat_item_ua $p $t $id abs $d 0 - mat_item_draw $p $t $id - } - - proc mat_item_draw {p t is} { - variable _ - if {$is eq "all"} {set is [dict keys $_($t)]} - foreach id $is { - set tags [list item i$id $id] - set color [dict get $_($t:g) $_($t:cg) color] - switch [dict get $_($t) $id type] { - note { - $p.m create path [::tkpath::coords rect 0 0 0 0 -rx 3 -ry 3] -tags [concat $tags r] -stroke [color [lighten $color 0.4]] -strokeopacity 1.0 -fill [color $color] -fillopacity 0.08 - $p.m create path [::tkpath::coords rect 0 0 0 0 -rx 3 -ry 3] -tags [concat $tags q] -fill [color $color] -strokewidth 0 -fillopacity 0.8 - } - sound { - snack:::sound s$id - set filename [dict get $_($t) $id filename] - s$id read $filename - $p.m create path [::tkpath::coords rect 0 0 0 0 -rx 3 -ry 3] -tags [concat $tags r] -strokewidth 0 -fill [color $color] -fillopacity 0.08 - $p.m create waveform 0 0 -tags [concat $tags w] -sound s$id -fill white - set length [expr [s$id length] / ($_($t:samplerate) + 0.0) * 1000] - mat_item_ua $p $t $id abs [dict create xx [expr [dict get $_($t) $id x] + $length]] 0 - $p.m create text 0 0 -tags [concat $tags tl] -font {{bitstream vera sans} 8} -fill HotPink -anchor nw -justify left -text "[string range $length 0 10] s" - $p.m create rectangle 0 0 0 0 -tags [concat $tags tlr] -fill LightGreen -width 0 - $p.m raise [$p.m find withtag "i$id && tl"] - $p.m create text 0 0 -tags [concat $tags tf] -font {{bitstream vera sans} 8} -fill NavyBlue -anchor ne -justify right -text $filename - $p.m create rectangle 0 0 0 0 -tags [concat $tags tfr] -fill gray90 -width 0 - $p.m raise [$p.m find withtag "i$id && tf"] - } - } - mat_redraw $p $t $id - } - } - - proc mat_item_delete {p t} { - variable _ - foreach item $_($t:sel) { - foreach i [$p.m find withtag i$item] { - $p.m delete $i - } - dict unset _($t) $item - set _($t:sel) {} - mat_item_info $p $t "" - pd [concat $t.rp _cb delete $item \;] - } - } - - proc mat_quant {p t y v} { - variable _ - if {$y eq "xx"} {set y x}; if {$y eq "yy"} {set y y} - if {$y eq "x" || $y eq "y"} { - set v [expr {int( ($v + $_($t:q$y) / 2.0 ) / ($_($t:q$y) + 0.0))*$_($t:q$y)}] - } - return $v - } - - proc mat_item_pos {p t item r x y xx yy} { - mat_item_ua $p $t $item $r [dict create x $x y $y xx $xx yy $yy] 1} - - proc mat_item_ua {p t item r u redraw} { - variable _ - foreach a [dict keys $u] { - switch $r {abs {dict set _($t) $item $a [dict get $u $a]} - rel {dict set _($t) $item $a [expr {[dict get $_($t) $item $a] + [dict get $u $a]}]}} - pd [concat $t.rp _cb update $item $a [pdtk_enquote [dict get $_($t) $item $a]] \;] - } - if {$redraw == 1} {mat_redraw $p $t $item} - } - - proc mat_draw {p t a x y} { - variable _ - switch $a { - motion { - if {$_($t:af) == 1} { - mat_item_pos $p $t $_($t:ci) abs [mat_tr $p $t y i $y] [mat_tr $p $t x i $x] [mat_tr $p $t y i $_($t:fy)] [mat_tr $p $t x i $x] - } else { - mat_item_pos $p $t $_($t:ci) abs [mat_tr $p $t x i $x] [mat_tr $p $t y i $y] [mat_tr $p $t x i $_($t:fx)] [mat_tr $p $t y i $y] - } - } - first {mat_item_new $p $t - [dict create type note g $_($t:cg) x 0 y 0 xx 0 yy 0 v 1]}}} - - proc mat_resize_canvas {p t a x y} {mat_viewpoint $p $t [dict create action resize x $x y $y]} - - proc mat_redraw {p t items} { - variable _ - if {$_($t:af) == 1} { - array set a {x y y x xx yy yy xx} - } else { - array set a {x x y y xx xx yy yy} - } - switch $items { - all {set items [dict keys $_($t)]} - default {}} - foreach id $items { - set x [mat_tr $p $t x t [dict get $_($t) $id $a(x)]] - set y [mat_tr $p $t y t [dict get $_($t) $id $a(y)]] - set qx [mat_tr $p $t x t [mat_quant $p $t x [dict get $_($t) $id $a(x)]]] - set qy [mat_tr $p $t y t [mat_quant $p $t y [dict get $_($t) $id $a(y)]]] - set wx [expr {[dict get $_($t) $id $a(xx)] - [dict get $_($t) $id $a(x)]}] - if {$wx == 0} {set wx 1} - set sx [expr abs([mat_tr $p $t x id $wx])] - set qsx [expr int(abs([mat_tr $p $t x id [expr {[mat_quant $p $t x [dict get $_($t) $id $a(xx)]] - [mat_quant $p $t x [dict get $_($t) $id $a(x)]]}]]))] - set wy [expr {[dict get $_($t) $id $a(yy)] - [dict get $_($t) $id $a(y)]}] - if {$wy == 0} {set wy 1} - set sy [expr abs([mat_tr $p $t y id $wy])] - set qsy [expr int(abs([mat_tr $p $t y id [expr {[mat_quant $p $t y [dict get $_($t) $id $a(yy)]] - [mat_quant $p $t y [dict get $_($t) $id $a(y)]]}]]))] - set ro [expr {int( [set s$a(y)] / 2.0 )}] - if {[lsearch -integer $_($t:sel) $id] >= 0} { - set color $_($t:sc) - } else { - set color [color [dict get $_($t:g) [dict get $_($t) $id g] color]] - } - switch [dict get $_($t) $id type] { - note { - set r [$p.m find withtag "i$id && r"] - set q [$p.m find withtag "i$id && q"] - $p.m coords $r [::tkpath::coords rect $x $y $sx $sy -rx $ro -ry $ro] - $p.m coords $q [::tkpath::coords rect $qx $qy $qsx $qsy -rx $ro -ry $ro] - $p.m itemconfigure $q -fillopacity [dict get $_($t) $id v] -fill $color - } - sound { - set waveform [$p.m find withtag "i$id && w"] - set r [$p.m find withtag "i$id && r"] -# set ro [expr int($ro / 2.)] - set ro 6 - $p.m coords $r [::tkpath::coords rect $x $y $sx $sy -rx $ro -ry $ro] - $p.m itemconfigure $r -fillopacity [dict get $_($t) $id v] -fill $color - $p.m coords $waveform $x $y - $p.m itemconfigure $waveform -width $sx -height [expr int($sy)] -# $p.m itemconfigure $waveform -width $sx - $p.m coords [$p.m find withtag "i$id && tl"] [expr $x + 4] [expr $y + 4] - $p.m coords [$p.m find withtag "i$id && tlr"] [$p.m bbox [$p.m find withtag "i$id && tl"] ] - $p.m coords [$p.m find withtag "i$id && tf"] [expr $x + $sx] [expr $y + 4] - $p.m coords [$p.m find withtag "i$id && tfr"] [$p.m bbox [$p.m find withtag "i$id && tf"] ] - } - } - } - } - - proc mat_item_v {p t a x y} { - variable _ - foreach item $_($t:sel) { - mat_item_ua $p $t $item rel [dict create v [expr {($x - $_($t:cx)) / 100.0}]] 1 - } - mat_item_info $p $t $_($t:sel) - } - - proc mat_move_canvas {p t a x y} {mat_viewpoint $p $t [dict create action move x $x y $y]} - - proc mat_move_object {p t a x y} { - variable _ - set mx [mat_tr $p $t x d [expr {$x - $_($t:cx)}]] - set my [mat_tr $p $t y d [expr {$y - $_($t:cy)}]] - if {$_($t:af) == 1} { - foreach item $_($t:sel) {mat_item_pos $p $t $item rel $my $mx $my $mx} - } else { - foreach item $_($t:sel) {mat_item_pos $p $t $item rel $mx $my $mx $my} - } - mat_item_info $p $t $_($t:sel) - } - - proc mat_resize_left {p t a x y} {mat_resize_object $p $t x $x $y} - proc mat_resize_right {p t a x y} {mat_resize_object $p $t xx $x $y} - proc mat_resize_top {p t a x y} {mat_resize_object $p $t y $x $y} - proc mat_resize_bottom {p t a x y} {mat_resize_object $p $t yy $x $y} - proc mat_resize_tl {p t a x y} {mat_resize_object $p $t x $x $y; mat_resize_object $p $t y $x $y} - proc mat_resize_tr {p t a x y} {mat_resize_object $p $t x $x $y; mat_resize_object $p $t yy $x $y} - proc mat_resize_bl {p t a x y} {mat_resize_object $p $t xx $x $y; mat_resize_object $p $t y $x $y} - proc mat_resize_br {p t a x y} {mat_resize_object $p $t xx $x $y; mat_resize_object $p $t yy $x $y} - - proc mat_resize_object {p t e x y} { - variable _ - if {$_($t:af) == 1} { - array set ax {x y xx y y x yy x} - } else { - array set ax {x x xx x y y yy y} - } - set m [mat_tr $p $t $ax($e) d [expr $$ax($e) - $_($t:c$ax($e))]] - foreach item $_($t:sel) {mat_item_ua $p $t $item rel [dict create $e $m] 1} - mat_item_info $p $t $_($t:sel) - } - - proc mat_cleansel {p t sel} { - set clean {} - foreach item $sel {if {[lindex [$p.m itemcget $item -tags] 0] eq "item"} {lappend clean [lindex [$p.m itemcget $item -tags] 2]}} - set clean [lsort -integer -unique $clean] - return $clean - } - - proc mat_loc {p t si x y} { - variable _ - if {$si == 1} { - set sy $y - set sx $x - set x [mat_tr $p $t x i $x] - set y [mat_tr $p $t y i $y] - } else { - set sy [mat_tr $p $t y t $y] - set sx [mat_tr $p $t x t $x] - } - $p.m coords lY [concat M 0 $sy L [winfo width $p.m] $sy] - $p.m coords lX [concat M $sx 0 L $sx [winfo height $p.m]] - $p.m itemconfigure loc -text [list $x $y] - } - - proc mat_hover {p t x y} { - variable _ -# mat_loc $p $t 1 $x $y - if {[$p.m find withtag sel] ne ""} { - mat_sel $p $t motion $x $y - } else { - set clicked [mat_cleansel $p $t [$p.m find overlapping [expr $x - 2] [expr $y - 2] [expr $x + 2] [expr $y + 2]]] - if {$clicked ne ""} { - mat_resize_modes $p $t $x $y [lindex $clicked end] - if {[llength $_($t:sel)] <= 1} {mat_updatesel $p $t [lindex $clicked end]} - } else { - mat_mode $p $t move_canvas - } - } - } - - proc mat_resize_modes {p t x y id} { - variable _ - set d 3 - set dx [expr {abs([mat_tr $p $t x t [dict get $_($t) $id x]] - $x)}] - set dxx [expr {abs([mat_tr $p $t x t [dict get $_($t) $id xx]] - $x)}] - set dy [expr {abs([mat_tr $p $t y t [dict get $_($t) $id y]] - $y)}] - set dyy [expr {abs([mat_tr $p $t y t [dict get $_($t) $id yy]] - $y)}] - if {$dx < $d && $dy < $d} { - mat_mode $p $t resize_tl - } elseif {$dxx < $d && $dy < $d} { - mat_mode $p $t resize_tr - } elseif {$dx < $d && $dyy < $d} { - mat_mode $p $t resize_bl - } elseif {$dxx < $d && $dyy < $d} { - mat_mode $p $t resize_br - } elseif {$dx < 5} { - mat_mode $p $t resize_left - } elseif {$dxx < 5} { - mat_mode $p $t resize_right - } elseif {$dy < 1} { - mat_mode $p $t resize_top - } elseif {$dyy < 1} { - mat_mode $p $t resize_bottom - } else { - mat_mode $p $t move_object - } - } - - proc mat_item_info {p t clicked} { - variable _ - set n 0;$p.m delete hover - foreach item $clicked { - set info "" - set data [dict get $_($t) $item] - foreach d $data {lappend info [string range $d 0 7]} - $p.m create text [list [expr [winfo width $p.m] - 8.0] [expr [winfo height $p.m] - 8.0 - 11 * $n.0]] -fill $_($t:sc) -justify right -anchor se -font {{bitstream vera sans mono} 10} -tags hover -text $info - incr n - }} - - proc mat_togglesel {p t d} { - variable _ - if {[lsearch -integer $_($t:sel) $d] < 0} { - set _($t:sel) [concat $_($t:sel) $d] - } else { - set _($t:sel) [lsearch -inline -not -all -integer $_($t:sel) $d] - } - mat_redraw $p $t $d - } - - proc mat_updatesel {p t ns} { - variable _ - set os $_($t:sel) - set _($t:sel) $ns - mat_redraw $p $t [lsort -unique -integer [concat $os $ns]] - mat_item_info $p $t $ns - } - - proc mat_click {m button action p t x y X Y} { - variable _ - set clicked [mat_cleansel $p $t [$p.m find overlapping $x $y $x $y]] - set a [$p.m itemcget mode -text] - switch $action { - first { - foreach xy {x y} {set _($t:f$xy) [set $xy]} - switch $button { - 1 {if {$m eq "control"} { - mat_mode $p $t draw; mat_draw $p $t $action $x $y - } elseif {$m eq "double" || $m eq "shift"} { - if {[llength $clicked] > 0} { - mat_togglesel $p $t $clicked - } else { - mat_sel $p $t first $x $y - mat_mode $p $t sel - } - } elseif {[$p.m find withtag sel] ne ""} { - mat_sel $p $t release $x $y - } elseif {[llength $_($t:sel)] > 1 && [llength $clicked] > 0 && [lsearch $_($t:sel) $clicked] == -1} { - mat_updatesel $p $t $clicked}} - 2 {mat_mode $p $t resize_canvas} - 3 {if {$clicked ne ""} { - mat_mode $p $t item_v } else {mat_rmenu $p $t $X $Y}}}} - motion {eval mat_$a $p $t $action $x $y} - release { - switch $button { - 1 {if {$a eq "draw" || ($a eq "sel" && [expr {abs($_($t:fx) - $x)}] >13)} {eval mat_$a $p $t $action $x $y}} - 2 {mat_mode $p $t move_canvas} - 3 {mat_mode $p $t move_canvas} - } - } - } - foreach xy {x y} {set _($t:c$xy) [set $xy]} - } - - proc mat_rmenu {p t x y} { - variable _ - if {[winfo exists $p.rmenu] != 1} { - set m [menu $p.rmenu -tearoff no] - $m add command -label "zoom to fit" -command "::ix::mat_viewpoint $p $t {action fit}" - $m add command -label "reset zoom" -command "::ix::mat_viewpoint $p $t {action reset}" - $m add command -label "add group" -command "::ix::mat_group_new $p $t -" - $m add cascade -label "sel to group" -menu [menu $p.rmenu.seltogroup -tearoff no] - $m add command -label "flip axes" -command "::ix::mat_flipaxe $p $t" - } else { - # $p.rmenu entryconfigure 0 -label $x - } - $p.rmenu.seltogroup delete 0 end - foreach group [dict keys $_($t:g)] { - $p.rmenu.seltogroup add command -label [dict get $_($t:g) $group name] -command "::ix::mat_group_assign $p $t $group" - } - tk_popup $p.rmenu $x $y - } - - proc mat_tr {p t d inv v} { - variable _ - array set dm {x width y height} - switch $inv { - t {return [expr {($v - $_($t:${d}a)) / ($_($t:${d}b) - $_($t:${d}a) + 0.0) * [winfo $dm($d) $p.m]}]} - i {return [expr {($_($t:${d}b) - $_($t:${d}a)) * $v /([winfo $dm($d) $p.m] + 0.0) + $_($t:${d}a)}]} - d {return [expr {($_($t:${d}b) - $_($t:${d}a)) * $v /([winfo $dm($d) $p.m] + 0.0)}]} - id {return [expr {$v / ($_($t:${d}b) - $_($t:${d}a) + 0.0) * [winfo $dm($d) $p.m]}]}}} - - proc mat_viewpoint {p t opts} { - variable _ - switch [dict get $opts action] { - fit { - set i 0 - dict for {s xy} $_($t) { - dict with xy { - if {$i == 0} { - set xa $x - set xb $x - set ya $y - set yb $y - } - if {$x > $xb} {set xb $x} - if {$x < $xa} {set xa $x} - if {$y > $yb} {set yb $y} - if {$y < $ya} {set ya $y} - if {$xx > $xb} {set xb $xx} - if {$xx < $xa} {set xa $xx} - if {$yy > $yb} {set yb $yy} - if {$yy < $ya} {set ya $yy} - incr i - } - } - set _($t:xa) $xa - set _($t:xb) $xb - set _($t:ya) $ya - set _($t:yb) $yb - } - reset { - set _($t:ya) $_($t:yao);set _($t:yb) $_($t:ybo);set _($t:xa) $_($t:xao);set _($t:xb) $_($t:xbo) - } - move { - foreach xy {x y} { - set mvt [mat_tr $p $t $xy d [expr {[dict get $opts $xy] - $_($t:c$xy)}]] - foreach ab {a b} {set _($t:${xy}$ab) [expr {$_($t:${xy}$ab) - $mvt}]}} - } - zoom { - array set dir {in 0.5 out 1.5} - foreach xy [dict get $opts axe] { - set radius [expr {($_($t:${xy}b) - $_($t:${xy}a)) / 2. * $dir([dict get $opts dir])}] - set center [mat_tr $p $t $xy i [dict get $opts $xy]] - set _($t:${xy}a) [expr {$center - $radius}] - set _($t:${xy}b) [expr {$center + $radius}] - } - } - resize { - foreach xy {x y} { - set mvt [mat_tr $p $t $xy d [expr {[dict get $opts $xy] - $_($t:c$xy)}]] - set _($t:${xy}a) [expr {$_($t:${xy}a) - $mvt}] - set _($t:${xy}b) [expr {$_($t:${xy}b) + $mvt}]} - } - scroll { - set xy [dict get $opts axis] - set mv [expr {($_($t:${xy}b) - $_($t:${xy}a)) / 4.0}] - foreach ab {a b} {set _($t:${xy}$ab) [expr {[dict get $opts units] > 0 ? $_($t:${xy}$ab) + $mv : $_($t:${xy}$ab) - $mv }]} - } - } - mat_redraw $p $t all - mat_gridlines $p $t - } - proc mat_flipaxe {p t} { - variable _ - set _($t:af) [expr $_($t:af) == 1 ? 0 : 1] - - set ya $_($t:ya) - set xa $_($t:xa) - set xb $_($t:xb) - set yb $_($t:yb) - set qx $_($t:qx) - set qy $_($t:qy) - set mx $_($t:mx) - set my $_($t:my) - - set _($t:ya) $xa - set _($t:xa) $ya - set _($t:yb) $xb - set _($t:xb) $yb - set _($t:qx) $qy - set _($t:qy) $qx - set _($t:mx) $my - set _($t:my) $mx - - mat_gridlines $p $t - mat_redraw $p $t all - } - proc mat_clip {p t action} { - variable _ - switch $action { - selecta { - mat_updatesel $p $t [dict keys $_($t)] - } - cut { - set _($t:c) [dict create] - set i 0 - foreach item $_($t:sel) { - dict set _($t:c) $i [dict get $_($t) $item] - incr i - } - mat_item_delete $p $t - } - copy { - set _($t:c) [dict create] - set i 0 - foreach item $_($t:sel) { - dict set _($t:c) $i [dict get $_($t) $item] - incr i - } - } - paste { - set pasted {} - foreach item [dict keys $_($t:c)] { - mat_item_new $p $t - [dict get $_($t:c) $item] - } - } - } - } - - proc mat_mode {p t m} { - array set cursor {draw pencil move_canvas fleur move_object dotbox item_v box_spiral resize_canvas bogosity sel cross_reverse resize_left left_side resize_right right_side resize_top top_side resize_bottom bottom_side resize_tl top_left_corner resize_tr top_right_corner resize_bl bottom_left_corner resize_br bottom_right_corner} - $p.m itemconfigure mode -text $m - $p.m configure -cursor $cursor($m) - } - - proc mat_group_assign {p t group} { - variable _ - foreach item $_($t:sel) { - mat_item_ua $p $t $item abs [dict create g $group] 0 - } - } - - proc mat_group_new {p t grp} { - variable _ - set exists 0 - dict for {key val} $_($t:g) {if {[dict get $val name] eq $grp} {set exists 1}} - if {$exists == 0} { - if {$grp eq "-"} {set grp [random_txt [expr "int(floor(rand() * 10 + 2))"]]} - set n -1 - while true { if {[lsearch -integer [dict keys $_($t:g)] [incr n]] == -1} {break}} - dict set _($t:g) $n name $grp - dict set _($t:g) $n color [rgb] - set _($t:cg) $n - mat_groups_view $p $t - mat_group_active $p $t $n - } - } - - proc mat_groups_view {p t} { - variable _ - $p.m delete [$p.m find withtag group] - foreach i [dict keys $_($t:g)] { - set id [$p.m create text [concat 68.0 [expr {38.0 + 11 * $i}]] -fill [color [dict get $_($t:g) $i color]] -justify right -anchor e -font {{bitstream vera sans mono} 10} -tags [concat group $i lb] -text [dict get $_($t:g) $i name]] - $p.m bind $id <Enter> "::ix::mat_group_active $p $t $i" - $p.m bind $id <1> "::ix::mat_group_assign $p $t $i" - set bx [$p.m bbox $id] - $p.m lower [$p.m create path [::tkpath::coords rect [lindex $bx 0] [lindex $bx 1] [expr [lindex $bx 2] - [lindex $bx 0]] [expr [lindex $bx 3] - [lindex $bx 1]] -rx 6 -ry 6] -tags [concat group $i bg] -strokewidth 1 -stroke white -fill white -fillopacity 0.5] - } - } - - proc mat_group_active {p t g} { - variable _ - set _($t:cg) $g - foreach n [dict keys $_($t:g)] { - if {$g == $n} {set cb black; set cl white; set tl 1} {set cb white; set cl [color [dict get $_($t:g) $n color]]; set tl 0.5} - set idb [$p.m find withtag "group && $n && bg"] - $p.m itemconfigure $idb -fill $cb -fillopacity $tl -stroke $cl - set idl [$p.m find withtag "group && $n && lb"] - $p.m itemconfigure $idl -fill $cl; - if {$g == $n} {$p.m raise $idb;$p.m raise $idl;} - } - } - - proc mat_key {p t k b} { - puts $k - switch $b { - 1 { - switch $k { - 22 {mat_item_delete $p $t} - 38 {mat_clip $p $t selecta} - 53 {mat_clip $p $t cut} - 54 {mat_clip $p $t copy} - 55 {mat_clip $p $t paste} - 97 {mat_viewpoint $p $t {action reset}} - 98 {mat_viewpoint $p $t {action scroll units -1 axis y}} - 100 {mat_viewpoint $p $t {action scroll units -1 axis x}} - 102 {mat_viewpoint $p $t {action scroll units 1 axis x}} - 104 {mat_viewpoint $p $t {action scroll units 1 axis y}} - 107 {mat_item_delete $p $t} - } - } -# 0 { -# switch $k { -# } -# } - } - } - - proc mat_drop {p t dropped x y} { -# foreach d $dropped { - foreach d [split $dropped "\n"] { - set x [mat_tr $p $t x i $x] - set y [mat_tr $p $t y i $y] - mat_item_new $p $t - [dict create type sound g 1 v 1 x $x y $y xx $x yy $y filename [regsub -- {^file:[/]+} $d "/"]] - } - } - - proc mat_new {p t w h bg ln xa xb ya yb qx qy mx my samplerate} { - variable _ - set sc orange - foreach xy {x y} {foreach ab {a b} {set ${xy}${ab}o [set ${xy}${ab}]}} - foreach a {sc ln xa xb ya yb xao xbo yao ybo qx qy mx my samplerate} {set _($t:$a) [set $a]} - if {[winfo exists $p.m] != 1} { - canvas $p.m -bg $bg -width $w -height $h - pack $p.m -side left - bind $p.m <Key> "::ix::mat_key $p $t %k 1" - bind $p.m <KeyRelease> "::ix::mat_key $p $t %k 0" -# dnd bindtarget $p.m text/uri-list <Drop> "::ix::mat_drop $p $t %D %x %y" - dnd bindtarget $p.m text/plain <Drop> "::ix::mat_drop $p $t %D %x %y" - bind $p.m <Motion> "::ix::mat_hover $p $t %x %y" - bind $p.m <4> "::ix::mat_viewpoint $p $t {action scroll units 1 axis x}" - bind $p.m <5> "::ix::mat_viewpoint $p $t {action scroll units -1 axis x}" - bind $p.m <Control-4> "::ix::mat_viewpoint $p $t {action zoom dir in axe x x %x y %y}" - bind $p.m <Control-5> "::ix::mat_viewpoint $p $t {action zoom dir out axe x x %x y %y}" - bind $p.m <Alt-4> "::ix::mat_viewpoint $p $t {action zoom dir in axe {x y} x %x y %y}" - bind $p.m <Alt-5> "::ix::mat_viewpoint $p $t {action zoom dir out axe {x y} x %x y %y}" - bind $p.m <Control-Shift-4> "::ix::mat_viewpoint $p $t {action zoom dir in axe y x %x y %y}" - bind $p.m <Control-Shift-5> "::ix::mat_viewpoint $p $t {action zoom dir out axe y x %x y %y}" - bind $p.m <Shift-4> "::ix::mat_viewpoint $p $t {action scroll units -1 axis y}" - bind $p.m <Shift-5> "::ix::mat_viewpoint $p $t {action scroll units 1 axis y}" - foreach m {"Control-" "" "Shift-" "Double-"} { - foreach bn {1 2 3} { - set b [list [concat $bn first] [concat B${bn}-Motion motion] [concat ButtonRelease-$bn release]] - foreach ba {0 1 2} { - bind $p.m <$m[lindex [lindex $b $ba] 0]> "::ix::mat_click [list [string tolower [string trimright $m -1]]] $bn [lindex [lindex $b $ba] 1] $p $t %x %y %X %Y"}}} - set bd [expr {[$p cget -bd] * 2}] -# update - $p configure -bg gray -width [expr {[winfo width $p.m] + $bd}] -height [expr {[winfo height $p.m] + $bd}] - $p.m create text {20 20} -fill blue -justify left -anchor w -font {{bitstream vera sans} 18} -tags mode -text move_canvas - $p.m create text [list [expr {$w / 2.}] 5] -fill red -justify center -anchor n -font {{bitstream vera sans} 14} -tags q -text q - $p.m create path "M 0 0" -tags lX -stroke black -strokeopacity 0.5 - $p.m create path "M 0 0" -tags lY -stroke black -strokeopacity 0.5 - $p.m create text "10 $h" -fill red -justify left -anchor sw -font {{bitstream vera sans} 12 bold} -fill purple -tags loc -text "" - if {[info exists _($t)] != 1} { - set _($t) {} - set _($t:g) {} - set af 0; set i -1; set sel {} - foreach a {af i sel} {set _($t:$a) [set $a]} - mat_group_new $p $t default - mat_group_new $p $t wavs - } - } - mat_gridlines $p $t - mat_item_draw $p $t all - mat_groups_view $p $t - } - - proc mat_gridlines {p t} { - variable _ - set w $p.m - $w delete gridlines - set gh [winfo height $w] - set gw [winfo width $w] - foreach item [$w find withtag gridline] {$w delete $item} - foreach xy {x y} { - array set ta {x n y w} - array set tj {x center y left} - array set igx {y width x height} - set range [expr {abs($_($t:${xy}b) - $_($t:${xy}a))}] - set numshits [expr {$range / $_($t:q$xy)}] - if {$numshits > $_($t:m${xy})} {set factor [expr {int($numshits / ($_($t:m${xy}) + 0.0) + 1)}]} else { - set factor [expr {1. / (int(1./($numshits / ($_($t:m${xy}) + 0.0) + 0.0)) + 0.0)}] - } - set increment [expr {$_($t:q${xy}) * $factor}] - for {set x [expr {int($_($t:${xy}a) / ($increment + 0.0) + 1)*($increment + 0.0)}]} {[expr {$_($t:${xy}a) > $_($t:${xy}b) ? $x >= $_($t:${xy}b) : $x <= $_($t:${xy}b)}]} {set x [expr {$_($t:${xy}a) > $_($t:${xy}b) ? $x - $increment : $x + $increment}]} { - set og [mat_tr $p $t $xy t $x] - set invgeo [winfo $igx($xy) $w] - switch $xy { - y {set coords [concat M [expr {int(rand()*23)}] $og L $invgeo $og]} - x {set coords [concat M $og [expr {int(rand()*16)}] L $og $invgeo]}} -# y {set coords [concat M 0 $og L $invgeo $og]} -# x {set coords [concat M $og 0 L $og $invgeo]}} - $w lower [$w create text [lrange $coords 1 2] -font {{Bitstream Vera Sans} 8} -fill [rc] -anchor $ta($xy) -text [string range $x 0 7] -justify $tj($xy) -tags gridline] - $w lower [$w create path $coords -stroke $_($t:ln) -strokedasharray [expr {int(rand()*42 + 1)}] -tags gridline -strokewidth 1] - }}}} - -#> mat frame -#. -bd 3 #w 384 #h 144 #bg gray86 #ln white -#. #samplerate 44100 -#. #Xa 123 #Xb 2000 #Ya 127 #Yb 0 #qx 50 #qy 1 #mx 12 #my 64 -#. @add ::ix::mat_item_new .- .| .#1 {type .#2} -#. @update ::ix::mat_item_ua .- .| .#1 abs {.#2 .#3} 1 -#. @updaterel ::ix::mat_item_ua .- .| .#1 rel {.#2 .#3} 1 -#. @up ::ix::mat_item_ua .- .| .#1 abs {.#2 .#3} 0 -#. @uprel ::ix::mat_item_ua .- .| .#1 rel {.#2 .#3} 0 -puts "mat .- .|" -::ix::mat_new .- .| .#w .#h .#bg .#ln .#Xa .#Xb .#Ya .#Yb .#qx .#qy .#mx .#my .#samplerate -#bind .-.m <Enter> {focus .-.m} -bind .-.m <Leave> {focus .^.c} diff --git a/extensions/gui/ix/toxy/ngrid-demo.pd b/extensions/gui/ix/toxy/ngrid-demo.pd deleted file mode 100644 index 29dacac140530eff27fcc5b277d8cb7004d741fe..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/ngrid-demo.pd +++ /dev/null @@ -1,310 +0,0 @@ -#N canvas 1333 136 79 124 12; -#X msg 785 -536 -height 26 -width 26 -bg gray95; -#N canvas 0 0 595 500 intro 1; -#X obj 9 418 osc~; -#X obj 9 456 dac~; -#X obj 9 399 line; -#X obj 9 -29 widget ngrid n1 #w 382 #h 382 #move 0 #radius 8; -#X floatatom 360 365 3 2 233 0 - - -; -#X floatatom 381 382 2 4 32 0 - - -; -#X msg 394 381 radius \$1; -#X msg 382 362 spread \$1; -#X obj 403 337 bng 23 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 --1; -#X obj 61 418 osc~; -#X obj 35 418 osc~; -#X obj 87 418 osc~; -#X obj 113 418 osc~; -#X obj 139 418 osc~; -#X obj 35 399 line; -#X obj 61 399 line; -#X obj 87 399 line; -#X obj 113 399 line; -#X obj 139 399 line; -#X obj 165 418 osc~; -#X obj 191 418 osc~; -#X obj 9 380 route 0x 0y 1x 1y 2x 2y 3x 3y 4x 4y; -#X obj 296 405 until; -#X obj 328 422 + 1; -#X obj 296 424 i; -#X msg 330 405 0; -#X obj 217 418 osc~; -#X obj 243 418 osc~; -#X obj 165 399 line; -#X obj 191 399 line; -#X obj 217 399 line; -#X obj 243 399 line; -#X obj 355 446 tow . ngrid n1; -#X obj 9 360 Append 100; -#X msg 258 363 move swarm; -#X msg 312 385 5; -#X msg 326 363 move; -#X obj 86 437 prepend set; -#X obj 86 454 prepend set; -#X obj 160 442 hsl 128 15 0 2000 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 2100 1; -#X obj 160 458 hsl 128 15 0 2000 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 0 1; -#X obj 423 50 widget ngrid m #w 64 #h 64; -#X msg 407 451 add x 1 0 10 \, add y 2 0 10; -#X obj 425 127 route x y; -#X obj 468 146 prepend set; -#X obj 400 147 prepend set; -#X obj 435 166 hsl 128 15 0 10 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 12700 1; -#X obj 435 181 hsl 128 15 0 10 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 385 1; -#X obj 496 50 widget ngrid m #w 64 #h 64; -#X obj 510 212 widget ngrid m #w 64 #h 64; -#X obj 514 286 widget ngrid m #w 64 #h 64; -#X obj 501 367 widget ngrid m #w 64 #h 64; -#X obj 512 264 prepend pos; -#X obj 503 371 prepend pos; -#X obj 425 57 prepend setpos; -#X obj 476 59 prepend setpos; -#X msg 353 406 add \$1x 1000 0 2000; -#X msg 353 425 add \$1y 1000 0 2000; -#X msg 301 465 pos 4y \$1; -#X obj 9 437 *~ 0.033; -#X obj 513 215 prepend pos; -#X obj 417 198 prepend x; -#X obj 472 197 prepend y; -#X msg 409 414 add x 1 10 0 \, add y 2 10 0; -#X msg 407 434 add x 1 0 10 \, add y 2 10 0; -#X msg 407 470 add x 1 10 0 \, add y 2 0 10; -#X msg 303 446 pos 4x \$1; -#X msg 240 472 pos 3x \$1; -#X msg 168 472 pos 3y \$1; -#X msg 195 363 move error; -#X obj 406 219 sin; -#X obj 410 240 hsl 99 15 0 6.28 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 0 1; -#X msg 404 297 pos 0x \$1; -#X obj 458 220 cos; -#X msg 456 295 pos 0y \$1; -#X obj 413 259 * 500; -#X obj 466 258 * 500; -#X obj 412 279 + 1000; -#X obj 468 278 + 1000; -#X obj 414 311 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 -1; -#X msg 451 315 6.28 1000; -#X obj 446 334 line; -#X obj 449 370 select 6.28 0; -#X obj 448 352 spigot; -#X msg 472 333 0 2000; -#X obj 49 480 switch~; -#X obj 430 324 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 -1; -#X obj 63 363 hsl 128 15 0 2000 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 12700 1; -#X obj 78 368 prepend set; -#X connect 0 0 59 0; -#X connect 2 0 0 0; -#X connect 3 0 33 0; -#X connect 4 0 7 0; -#X connect 5 0 6 0; -#X connect 6 0 32 0; -#X connect 7 0 32 0; -#X connect 8 0 35 0; -#X connect 8 0 42 0; -#X connect 8 0 63 0; -#X connect 8 0 65 0; -#X connect 8 0 64 0; -#X connect 8 0 86 0; -#X connect 9 0 59 0; -#X connect 10 0 59 0; -#X connect 11 0 59 0; -#X connect 12 0 59 0; -#X connect 13 0 59 0; -#X connect 14 0 10 0; -#X connect 15 0 9 0; -#X connect 16 0 11 0; -#X connect 17 0 12 0; -#X connect 18 0 13 0; -#X connect 19 0 59 0; -#X connect 20 0 59 0; -#X connect 21 0 2 0; -#X connect 21 1 14 0; -#X connect 21 2 15 0; -#X connect 21 3 16 0; -#X connect 21 4 17 0; -#X connect 21 5 18 0; -#X connect 21 6 28 0; -#X connect 21 7 29 0; -#X connect 21 8 30 0; -#X connect 21 8 37 0; -#X connect 21 9 31 0; -#X connect 21 9 38 0; -#X connect 22 0 24 0; -#X connect 23 0 24 1; -#X connect 24 0 23 0; -#X connect 24 0 56 0; -#X connect 24 0 57 0; -#X connect 25 0 24 1; -#X connect 26 0 59 0; -#X connect 27 0 59 0; -#X connect 28 0 19 0; -#X connect 29 0 20 0; -#X connect 30 0 26 0; -#X connect 31 0 27 0; -#X connect 33 0 21 0; -#X connect 34 0 32 0; -#X connect 35 0 25 0; -#X connect 35 0 22 0; -#X connect 36 0 32 0; -#X connect 37 0 39 0; -#X connect 38 0 40 0; -#X connect 39 0 66 0; -#X connect 39 0 68 0; -#X connect 40 0 58 0; -#X connect 40 0 67 0; -#X connect 41 0 43 0; -#X connect 41 0 55 0; -#X connect 41 0 60 0; -#X connect 42 0 41 0; -#X connect 42 0 51 0; -#X connect 43 0 45 0; -#X connect 43 1 44 0; -#X connect 44 0 47 0; -#X connect 45 0 46 0; -#X connect 46 0 61 0; -#X connect 47 0 62 0; -#X connect 48 0 43 0; -#X connect 48 0 54 0; -#X connect 48 0 60 0; -#X connect 49 0 52 0; -#X connect 50 0 53 0; -#X connect 52 0 50 0; -#X connect 53 0 51 0; -#X connect 54 0 41 0; -#X connect 55 0 48 0; -#X connect 56 0 32 0; -#X connect 57 0 32 0; -#X connect 58 0 32 0; -#X connect 59 0 1 0; -#X connect 59 0 1 1; -#X connect 60 0 49 0; -#X connect 61 0 60 0; -#X connect 61 0 55 0; -#X connect 61 0 54 0; -#X connect 62 0 60 0; -#X connect 62 0 54 0; -#X connect 62 0 55 0; -#X connect 63 0 48 0; -#X connect 64 0 50 0; -#X connect 65 0 49 0; -#X connect 66 0 32 0; -#X connect 67 0 32 0; -#X connect 68 0 32 0; -#X connect 69 0 32 0; -#X connect 70 0 75 0; -#X connect 71 0 70 0; -#X connect 71 0 73 0; -#X connect 72 0 32 0; -#X connect 73 0 76 0; -#X connect 74 0 32 0; -#X connect 75 0 77 0; -#X connect 76 0 78 0; -#X connect 77 0 72 0; -#X connect 78 0 74 0; -#X connect 79 0 83 1; -#X connect 79 0 80 0; -#X connect 80 0 81 0; -#X connect 81 0 83 0; -#X connect 82 0 84 0; -#X connect 82 1 80 0; -#X connect 83 0 82 0; -#X connect 83 0 71 0; -#X connect 84 0 81 0; -#X connect 86 0 85 0; -#X connect 87 0 88 0; -#X connect 88 0 33 0; -#X restore 18 35 pd intro; -#N canvas 0 0 442 580 om 0; -#X obj 306 502 sendOSC; -#X msg 307 426 connect localhost 16180; -#X obj 306 483 prepend send; -#X obj 23 382 dumpOSC 3339; -#X obj 22 -8 widget ngrid n2 #w 382 #h 382 #move 0 #radius 8; -#X obj 23 403 OSCroute /om; -#X obj 23 422 OSCroute /new_port; -#X obj 23 441 niagara 4; -#X obj 23 460 niagara 1; -#X obj 23 498 glue; -#X obj 23 555 prepend add; -#X obj 23 479 a2l; -#X obj 406 407 t b b b; -#X msg 306 464 /om/request/all_objects 5; -#X obj 207 388 widget dm dmngr #items .(error normal swarm trails.) -; -#X msg 154 394 move \$1; -#X msg 351 503 disconnect; -#X obj 99 459 prepend /om/synth/set_port_value 1; -#X msg 305 445 /om/engine/register_client 0 localhost 3339; -#X obj 72 479 niagara 1; -#X obj 23 517 spigot; -#X msg 72 517 1; -#X msg 92 517 0; -#X obj 72 498 route CONTROL; -#X obj 146 421 OSCroute /control_change; -#X obj 146 438 prepend setpos; -#X obj 102 401 spigot; -#X obj 133 387 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 -1; -#X obj 165 478 OSCroute /node_removal; -#X obj 112 517 niagara 1; -#X obj 23 536 spigot; -#X msg 72 536 1; -#X msg 92 536 0; -#X obj 112 536 route INPUT; -#X obj 166 497 prepend delete; -#X obj 354 406 loadbang; -#X text 266 546 www.nongnu.org/om-synth/; -#X obj 199 532 print NOSHIT; -#X connect 1 0 0 0; -#X connect 2 0 0 0; -#X connect 3 0 5 0; -#X connect 3 0 37 0; -#X connect 4 0 17 0; -#X connect 5 0 6 0; -#X connect 5 0 26 0; -#X connect 5 0 28 0; -#X connect 6 0 7 0; -#X connect 7 0 8 0; -#X connect 7 1 9 1; -#X connect 8 0 11 0; -#X connect 8 1 19 0; -#X connect 9 0 20 0; -#X connect 10 0 4 0; -#X connect 11 0 9 0; -#X connect 12 0 13 0; -#X connect 12 1 18 0; -#X connect 12 2 1 0; -#X connect 13 0 2 0; -#X connect 14 0 15 0; -#X connect 15 0 4 0; -#X connect 16 0 0 0; -#X connect 17 0 2 0; -#X connect 18 0 2 0; -#X connect 19 0 23 0; -#X connect 19 1 29 0; -#X connect 20 0 30 0; -#X connect 21 0 20 1; -#X connect 22 0 20 1; -#X connect 23 0 21 0; -#X connect 23 1 22 0; -#X connect 24 0 25 0; -#X connect 25 0 4 0; -#X connect 26 0 24 0; -#X connect 27 0 26 1; -#X connect 28 0 34 0; -#X connect 29 0 33 0; -#X connect 30 0 10 0; -#X connect 31 0 30 1; -#X connect 32 0 30 1; -#X connect 33 0 31 0; -#X connect 33 1 32 0; -#X connect 34 0 4 0; -#X connect 35 0 12 0; -#X restore 18 59 pd om; diff --git a/extensions/gui/ix/toxy/ngrid.wid b/extensions/gui/ix/toxy/ngrid.wid deleted file mode 100755 index 6d8f16d2d88499d87a67a73df55d4922f1b90933..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/ngrid.wid +++ /dev/null @@ -1,150 +0,0 @@ -namespace eval ::ix { - proc random_int {} {return [expr "int(floor(rand()*16))"]} - proc random_clr {} { - return [format "\#%1X%1X%1X%1X%1X%1X" [random_int] [random_int] [random_int] [random_int] [random_int] [random_int]] - } - variable _ - - proc ngrid_new {path target w h bg ln div move spread radius max} { - variable _ - if {[winfo exists $path.ngrid] != 1} { - canvas $path.ngrid -bg $bg -width $w -height $h - pack $path.ngrid -side left - bind $path.ngrid <1> "::ix::ngrid_click $path $target %x %y" - bind $path.ngrid <B1-Motion> [bind $path.ngrid <1>] - ngrid_gridlines $path $target $ln $div - set bd [expr {[$path cget -bd] * 2}] - $path configure -bg $bg -width [expr [winfo width $path.ngrid] + $bd] -height [expr [winfo height $path.ngrid] + $bd] - } - set _($target:recent) 0 - set _($target:n) 0 - set _($target:move) $move - set _($target:spread) $spread - set _($target:radius) $radius - set _($target:max) $max} - - proc ngrid_find {which path target what udata} { - variable _ - array set dm {x width y height} - for {set n 0 } {$n <= $_($target:n)} {incr n} { - foreach xy {x y} { - if {[$path.ngrid find withtag name_${xy}_$n] ne "" && [string match "$what*" [lindex $_($target:box$n:$xy) 0]]} { - set x [expr [lindex [$path.ngrid coords sqr_$n] 0] + $_($target:radius)] - set y [expr [lindex [$path.ngrid coords sqr_$n] 1] + $_($target:radius)] - set $xy [expr ($udata - [lindex $_($target:box$n:$xy) 1 ] + 0.0) / ([lindex $_($target:box$n:$xy) 2] - [lindex $_($target:box$n:$xy) 1 ] + 0.0) * [winfo $dm($xy) $path.ngrid]] - switch $which { - setpos {$path.ngrid coords sqr_$n [expr $x - $_($target:radius)] [expr $y - $_($target:radius)] [expr $x + $_($target:radius)] [expr $y + $_($target:radius)]} - pos { - set _($target:recent) $n - ngrid_click $path $target $x $y - } - remove { - $path.ngrid delete name_${xy}_$n - if {[$path.ngrid find withtag name_x_$n] eq "" && [$path.ngrid find withtag name_x_$n] eq ""} { - $path.ngrid delete sqr_$n; $path.ngrid delete hist_$n}}}}}}} - - proc ngrid_vset {path target what where} {variable _; set _($target:$what) $where} - - proc ngrid_add {path target name cur min max} { - variable _ - if {$max == $min} {set max 1.0; set min 0.0} - array set justify {x left y right} - array set anchor {y e x w} - for {set n 0 } {$n <= $_($target:n)} {incr n} {foreach xy {x y} { - if {[$path.ngrid itemcget name_${xy}_$n -text] eq $name} {return}}} - - for {set n 0 } {$n <= $_($target:n)} {incr n} {foreach xy {x y} { - if {[$path.ngrid find withtag name_x_$n] eq "" && [$path.ngrid find withtag name_y_$n] eq ""} { - set fill [set _($target:box$n:fill) [random_clr]] - $path.ngrid create oval 0 0 0 0 -tags sqr_$n -fill $fill -outline white -width 2 - set rx [expr rand() * [winfo width $path.ngrid]]; set ry [expr rand() * [winfo height $path.ngrid]] - $path.ngrid create line $rx $ry $rx $ry -tags hist_$n -fill $fill - $path.ngrid bind sqr_$n <1> "set ::ix::_($target:recent) $n; ::ix::ngrid_click $path $target %x %y" - $path.ngrid bind sqr_$n <B1-Motion> [$path.ngrid bind sqr_$n <1>] - $path.ngrid bind sqr_$n <Enter> "::ix::ngrid_highlight $path $target $n grey96" - $path.ngrid bind sqr_$n <Leave> "::ix::ngrid_highlight $path $target $n -" - ngrid_move $path $target $n $rx $ry - incr _($target:n) - } - if {[$path.ngrid find withtag name_${xy}_$n] eq ""} { - set _($target:box$n:$xy) [list $name $min $max] - puts "adding $xy $n $name $min $max" - switch $xy { - x { - set tl [concat 0 [expr 5 + $n * 8.0]] - set qx [expr ($cur - $min) / ($max - $min + 0.0) * [winfo width $path.ngrid]] - set qy [expr [lindex [$path.ngrid coords sqr_$n] 1] + $_($target:radius)]} - y { - set tl [concat [winfo width $path.ngrid] [expr 5 + $n * 8.0]] - set qx [expr [lindex [$path.ngrid coords sqr_$n] 0] + $_($target:radius)] - set qy [expr ($cur - $min) / ($max - $min + 0.0) * [winfo height $path.ngrid]]}} - $path.ngrid create text $tl -tags name_${xy}_$n -fill $_($target:box$n:fill) -font {{Bitstream Vera Sans} 8} -text $name -anchor $anchor($xy) -justify $justify($xy) - $path.ngrid lower name_${xy}_$n - $path.ngrid bind name_${xy}_$n <Enter> "::ix::ngrid_highlight $path $target $n grey96" - $path.ngrid bind name_${xy}_$n <Leave> "::ix::ngrid_highlight $path $target $n -" - ngrid_move $path $target $n $qx $qy - return}}}} - - proc ngrid_highlight {path target n color} { - variable _ - foreach el [list name_y_$n name_x_$n sqr_$n] { - if {$color eq "-"} {set color $_($target:box$n:fill)} - $path.ngrid itemconfigure $el -fill $color - set _($target:recent) $n}} - - proc ngrid_click {path target x y} { - variable _ - switch $_($target:move) { - swarm { - for {set n 0} {$n <= $_($target:n)} {incr n} { - ngrid_move $path $target $n [expr rand() * $_($target:spread) - [expr $_($target:spread) / 2.0] + $x] [expr rand() * $_($target:spread) - [expr $_($target:spread) / 2.0] + $y]}} - trails { - for {set n 0} {$n <= $_($target:n)} {incr n} { - if {[expr rand() > 0.96] == 1} { - ngrid_move $path $target $n [expr rand() * $_($target:spread) - [expr $_($target:spread) / 2.0] + $x] [expr rand() * $_($target:spread) - [expr $_($target:spread) / 2.0] + $y]}}} - error {ngrid_move $path $target $_($target:recent) [expr rand() * $_($target:spread) - [expr $_($target:spread) / 2.0] + $x] [expr rand() * $_($target:spread) - [expr $_($target:spread) / 2.0] + $y]} - default {ngrid_move $path $target $_($target:recent) $x $y}}} - - proc ngrid_move {path target n px py} { - variable _ - $path.ngrid coords sqr_$n [expr $px - $_($target:radius)] [expr $py - $_($target:radius)] [expr $px + $_($target:radius)] [expr $py + $_($target:radius)] - set h [winfo height $path.ngrid] - set w [winfo width $path.ngrid] - foreach xy {x y} { - if {[$path.ngrid find withtag name_${xy}_$n] ne ""} { - set l $_($target:box$n:$xy) - set name [lindex $l 0] - set min [lindex $l 1] - set max [lindex $l 2] - if {[expr $min == 0] && [expr $max == 0]} {set max $_($target:max)} - pd "$target.rp _cb [pdtk_enquote $name] [expr ($max - $min) * [set p$xy] / $w.0 + $min] \;"}}} - - proc ngrid_gridlines {path target ln lines} { - variable _ - puts "gridlines $ln $lines" - set w $path.ngrid - $w delete gridlines - set gh [winfo height $w] - set gw [winfo width $w] - for {set x 1} {$x <= $lines} {incr x} { - if {$lines < 16 && $lines > 0} { - set oh [expr $gh.0 * $x.0 / $lines.0] - set ow [expr $gw.0 * $x.0 / $lines.0] - $w create line $ow 0 $ow $gh -fill $ln -tags gridlines - $w create line 0 $oh $gw $oh -fill $ln -tags gridlines}}}} - -#> ngrid frame -#. -bd 3 #w 384 #h 144 #bg gray10 #ln gray35 #div 6 #n 3 -#. #move normal #spread 96 #radius 9 #max 1 -#. @list ::ix::ngrid_add .- .| {.#1} .#2 .#3 .#4 -#. @add ::ix::ngrid_add .- .| {.#1} .#2 .#3 .#4 -#. @pos ::ix::ngrid_find pos .- .| {.#1} .#2 -#. @setpos ::ix::ngrid_find setpos .- .| {.#1} .#2 -#. @delete ::ix::ngrid_find remove .- .| {.#1} 0 -#. @clear ::ix::ngrid_clear .- .| all -#. @radius ::ix::ngrid_vset .- .| radius .#1 -#. @spread ::ix::ngrid_vset .- .| spread .#1 -#. @move ::ix::ngrid_vset .- .| move .#1 -#. @max ::ix::ngrid_vset .- .| max .#1 -puts "ngrid .- .|" -::ix::ngrid_new .- .| .#w .#h .#bg .#ln .#div .#move .#spread .#radius .#max diff --git a/extensions/gui/ix/toxy/nob-demo.pd b/extensions/gui/ix/toxy/nob-demo.pd deleted file mode 100644 index 901001a87255a6b426c6a2ab3add93c191dd57d4..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/nob-demo.pd +++ /dev/null @@ -1,74 +0,0 @@ -#N canvas 151 325 465 268 12; -#X floatatom 234 44 5 16 1024 0 - - -; -#X msg 234 62 #w \$1 \, #h \$1; -#X msg 14 209 #trans \$1; -#X floatatom 14 191 5 22 100 0 - - -; -#X obj 356 150 widget nob n2 #w 34 #h 35 #ca "#ff4a9c" #cb "#83f735" -#cc "#fff74a" #trans 100 #th 8 #bg "#446dfd" #cn "#83f735" #nx -30 -#ny -30 -bd 1; -#X obj 103 198 nbx 8 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 --262144 -1 -1 31.6832 256; -#X obj 103 89 widget nob n1 #w 100 #h 100 #th 7 #cc purple #cb black -#ca red #trans 81 #bg orange #range 1 #cn yellow #ny 82 #nx 50 #max -0 #min 0 -bd 1; -#X msg 225 159 #range \$1; -#X msg 247 194 1; -#X msg 274 194 10000; -#X floatatom 234 6 5 1 50 0 - - -; -#X msg 234 21 #th \$1; -#X obj 338 18 tot .; -#X msg 338 0 query tk_chooseColor; -#X obj 333 36 makefilename "%s"; -#X obj 183 29 widget nob n3 #size #1 #w 30 #h 30 #ny 87 #nx 33 #th -8 #bg orange #cc green #trans 134; -#X floatatom 280 114 5 0 0 0 - - -; -#X msg 280 129 #ny \$1; -#X floatatom 183 11 5 0 0 0 - - -; -#X floatatom 183 62 5 0 0 0 - - -; -#X floatatom 280 81 5 0 0 0 - - -; -#X msg 280 96 #nx \$1; -#X msg 247 220 #max 1; -#X obj 8 -2 widget dm color #arrows 0 #items .(bg ca cb cc cn.); -#X obj 108 2 loadbang; -#X obj 37 -2 widget dm bg #arrows 0 #items .(green red purple blue -orange yellow black white pink.); -#X obj 41 53 prepend; -#X msg 108 21 bg; -#X obj 285 152 widget dm range #arrow 0 #items .(1 100 1000 0.1.) #arrows -0; -#X msg 292 220 #max 32 \, #min 16; -#X msg 247 240 #min 0 \, #max 0; -#X obj 7 29 makefilename #%s; -#X text 347 87 right = 1/10th; -#X text 347 76 middle = 10; -#X text 357 99 left = 1; -#X connect 0 0 1 0; -#X connect 1 0 6 0; -#X connect 2 0 6 0; -#X connect 3 0 2 0; -#X connect 6 0 5 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 6 0; -#X connect 10 0 11 0; -#X connect 11 0 6 0; -#X connect 12 0 14 0; -#X connect 13 0 12 0; -#X connect 14 0 26 0; -#X connect 15 0 19 0; -#X connect 16 0 17 0; -#X connect 17 0 6 0; -#X connect 18 0 15 0; -#X connect 19 0 6 0; -#X connect 20 0 21 0; -#X connect 21 0 6 0; -#X connect 22 0 6 0; -#X connect 23 0 31 0; -#X connect 24 0 27 0; -#X connect 25 0 26 0; -#X connect 26 0 6 0; -#X connect 27 0 31 0; -#X connect 28 0 7 0; -#X connect 29 0 6 0; -#X connect 30 0 6 0; -#X connect 31 0 26 1; diff --git a/extensions/gui/ix/toxy/nob.wid b/extensions/gui/ix/toxy/nob.wid deleted file mode 100755 index 9d2565376fc7aaf62910d6148910ad32b22de165..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/nob.wid +++ /dev/null @@ -1,105 +0,0 @@ -#console show -package require Tkzinc 3.3 -package require zincGraphics -namespace eval ::ix { - variable _ - proc nobfloat {path t num} { - variable _ - $path itemconfigure $t:num -text $num - pd [concat $t.rp _cb $num \;] - set _($t:num) $num - } - proc nob_mover {w t f x y} { - variable _ - if {$::ix::_($t:clickd) > 0} { - set move [expr (($x - $::ix::_($t:lx)) + (-1 * ($y - $::ix::_($t:ly)))) / ([winfo width $w].0 + [winfo height $w].0) * $f] - nob_move $w $t $move - } - set ::ix::_($t:clickd) 1 - set ::ix::_($t:lx) $x - set ::ix::_($t:ly) $y - } - proc nob_move {w t move} { - variable _ - set on [$w itemcget $t:num -text] - set no [expr $on + $_($t:range) * $move * 2] - if {$_($t:min) != $_($t:max)} { - if {$no > $_($t:max)} {set no $_($t:max);set move 0} - if {$no < $_($t:min)} {set no $_($t:min);set move 0} - } - nobfloat $w $t $no - foreach e {1 10 100} { - set a [expr [$w itemcget $t:nob$e -startangle] + int($move * $e * 90)] - $w itemconfigure $t:nob$e -startangle $a - set _($t:a$e) $a - } - } - - proc nob {path t w h range bg c1 c2 c3 cn trans th nx ny max min} { - variable _ - set _($t:lx) 32 - set _($t:clickd) -1 - set _($t:max) $max - set _($t:min) $min - if {$_($t:min) != $_($t:max)} { - set _($t:range) [expr abs($min - $max)] - } else { - set _($t:range) $range - } - if {[winfo exists $path.nob] != 1} { - zinc $path.nob -render 1 -width $w -height $h -borderwidth 1 -lightangle 140 -backcolor $bg - $path configure -width $w -height $h - place $path.nob -anchor nw -relwidth 1 -relheight 1 - $path.nob remove * - set i 0 - set colors [list $c1 $c2 $c3] - set ratios {1 10 0.1} - set edge 10 - $path.nob add rectangle 1 {1 1 8 4} -filled 1 -fillcolor "#555555" - $path.nob add rectangle 1 "1 $h 8 [expr $h - 5]" -filled 1 -fillcolor "#555555" - foreach e {1 10 100} { - $path.nob add arc 1 \ - "[expr $w / $edge / ($i + 1) + ($edge / 2)] [expr $h / $edge / ($i + 1) + ($edge / 2)] [expr $w - $w / $edge / ($i + 1) - ($edge / 2)] [expr $h - $h / $edge / ($i + 1) - ($edge / 2)]" \ - -closed 0 -filled 0 -extent [expr int(300 / $e)] -startangle 90 \ - -linecolor "[lindex $colors $i];$trans" \ - -linewidth [expr int($h / $th)] \ - -tags $t:nob$e - bind $path.nob <B[expr $i + 1]-Motion> \ - "::ix::nob_mover $path.nob $t [lindex $ratios $i] %x %y" - incr i - bind $path.nob <ButtonRelease-$i> "set ::ix::_($t:clickd) -1" - } - bind $path <MouseWheel> {::ix::nob_move %W.nob [winfo name %W] [expr %D / 2400.]} - bind $path <Shift-MouseWheel> {::ix::nob_move %W.nob [winfo name %W] [expr %D / 24000.]} - bind $path <Control-MouseWheel> {::ix::nob_move %W.nob [winfo name %W] [expr %D / 240.]} - bind $path.nob <Shift-B1-Motion> "::ix::nob_mover $path.nob $t 10 %x %y" - bind $path.nob <Control-B1-Motion> "::ix::nob_mover $path.nob $t 0.1 %x %y" - if {$nx == 0} { - set nx [expr $w / 2] - set ny [expr $h - 20] - } - $path.nob add text 1 -text "0.0" \ - -position "$nx $ny" -tags $t:num -color "$cn;$trans" - } - if {[info exists _($t:num)]} { - $path.nob itemconfigure $t:num -text $_($t:num) - foreach e {1 10 100} { - $path.nob itemconfigure $t:nob$e -startangle $_($t:a$e) - } - } else { - foreach e {1 10 100} {set _($t:a$e) 90} - set _($t:num) 0.0} - - } -} -#> nob frame -#. -height 128 -width 128 -bd 1 -bg "#cccccc" -#. -highlightbackground red -#. #max 0 #min 0 -#. #w 128 #h 128 #trans 70 #th 5 #range 100 #nx 0 #ny 0 -#. #bg purple #ca blue #cb yellow #cc green #cn orange -#. @float ::ix::nobfloat .-.nob .| .#1 -#. @cmd eval ".-.nob .#args" -bind .- <Enter> {focus .-} -bind .- <Leave> {focus .^.c} -::ix::nob .- .| .#w .#h .#range .#bg .#ca .#cb .#cc .#cn .#trans .#th .#nx .#ny .#max .#min diff --git a/extensions/gui/ix/toxy/q-demo.pd b/extensions/gui/ix/toxy/q-demo.pd deleted file mode 100644 index 492c538e1c17818d0770a0a624f697f93319743d..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/q-demo.pd +++ /dev/null @@ -1,90 +0,0 @@ -#N canvas 46 0 792 949 12; -#X obj 20 352 widget q q1 -width 37 -height 56 -font .(Tahoma 8.) -bg -white -fg cyan; -#X obj 58 332 popen; -#X msg 58 313 grep \$1 wavs.d; -#X obj 56 276 widget dd d1 -width 30; -#X msg 16 313 clear; -#X obj 18 278 t s b; -#X obj 312 363 player w; -#X obj 353 242 loadbang; -#X msg 387 313 \; pd dsp 1; -#X floatatom 258 335 5 0 0 0 - - -; -#X obj 210 584 widget q lb2 -width 24 -height 26; -#X obj 17 56 widget q x0; -#X obj 148 56 widget q x1; -#X obj 278 57 widget q x2; -#X obj 408 57 widget q x3; -#X obj 537 57 widget q x5; -#X obj 19 32 pool w; -#X msg 19 11 chdir \, getsub; -#X obj 280 238 l2s; -#X msg 306 260 symbol /; -#X obj 19 210 ndx; -#X obj 670 57 widget q q5; -#X msg 384 352 load wavs.dat; -#X obj 280 211 ndx; -#X obj 150 210 ndx; -#X obj 411 211 ndx; -#X obj 539 211 ndx; -#X obj 672 211 ndx; -#X text 54 263 search; -#X text 220 564 <-right click starts drag; -#X obj 310 409 widget q -bg -fg white -width 41 -bg black; -#X obj 212 409 widget q -width -bg "#2f3351" -fg "#ff8617" -width 16 -; -#X msg 151 296 clear; -#X msg 102 259 bang; -#X obj 348 382 outlet~; -#X obj 394 382 outlet~; -#X msg 222 352 next; -#X msg 222 334 prev; -#X msg 263 362 stop; -#X connect 0 0 6 1; -#X connect 1 0 0 0; -#X connect 2 0 1 0; -#X connect 3 0 5 0; -#X connect 4 0 0 0; -#X connect 5 0 2 0; -#X connect 5 1 4 0; -#X connect 6 2 30 0; -#X connect 6 3 31 0; -#X connect 6 4 36 0; -#X connect 6 5 34 0; -#X connect 6 6 35 0; -#X connect 7 0 8 0; -#X connect 7 0 19 0; -#X connect 7 0 22 0; -#X connect 9 0 0 0; -#X connect 11 0 20 1; -#X connect 12 0 24 1; -#X connect 13 0 23 1; -#X connect 14 0 25 1; -#X connect 15 0 26 1; -#X connect 16 1 11 0; -#X connect 17 0 16 0; -#X connect 18 0 6 1; -#X connect 19 0 18 1; -#X connect 20 0 18 0; -#X connect 20 0 24 0; -#X connect 20 1 12 0; -#X connect 21 0 27 1; -#X connect 22 0 6 2; -#X connect 23 0 18 0; -#X connect 23 0 25 0; -#X connect 23 1 14 0; -#X connect 24 0 18 0; -#X connect 24 0 23 0; -#X connect 24 1 13 0; -#X connect 25 0 18 0; -#X connect 25 0 26 0; -#X connect 25 1 15 0; -#X connect 26 0 18 0; -#X connect 26 0 27 0; -#X connect 26 1 21 0; -#X connect 27 0 18 0; -#X connect 32 0 3 0; -#X connect 33 0 3 0; -#X connect 36 0 0 0; -#X connect 37 0 0 0; -#X connect 38 0 6 0; diff --git a/extensions/gui/ix/toxy/q.wid b/extensions/gui/ix/toxy/q.wid deleted file mode 100755 index 8a971c6e7d3294c4e91eca43bd4e144926ca575e..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/q.wid +++ /dev/null @@ -1,84 +0,0 @@ -#console show -package require tkdnd -namespace eval ::ix { - proc qo {p t e} { - set s [$p get $e] - if {$s ne ""} { - pd [concat $t.rp _cb symbol [pdtk_enquote $s] \;] - } else {pd [concat $t.rp _cb bang \;]} - } - proc qi {p t i} { - $p selection clear 0 end - $p selection set $i - qo $p $t $i - } - proc q_go {p t d} { - array set direction "next 1 prev -1" - array set edge "next end prev 0" - set cs [$p curselection] - if {$cs eq "" && [$p index end] != 0} { - set go 0 } else { - set go [expr $direction($d) + [lindex $cs $edge($d)]]} - if {$go >= [$p index end]} {set go 0} - if {$go < 0} {set go [expr [$p index end] - 1]} - qi $p $t $go - } -} -#> q listbox -#. -selectmode extended -font {{Bitstream Vera Sans} 8} -exportselection 0 -#. -relief flat -borderwidth 0 -selectborderwidth 0 -bg "#ccffcc" -fg black -#. @list foreach x [list .#args] {.- insert end $x} -#. @add .- insert end [join [lrange [list .#args] 0 end] " "] -#. @scroll .- yview scroll .#1 units -#. @symbol .- insert end {.#1} -#. @float ::ix::qi .- .| .#1 -#. @clear .- delete 0 end -#. @next ::ix::q_go .- .| next -#. @prev ::ix::q_go .- .| prev -#. @cmd eval ".- .#args" -bind .- <Enter> {focus .-} -bind .- <Leave> {focus .^.c} -bind .- <4> { pd [concat .|.rp _cb scroll -5 \;]} -bind .- <5> { pd [concat .|.rp _cb scroll 5 \;]} -bind .- <Shift-MouseWheel> {.- xview scroll [expr {- (%D / 120) * 4}] units} -bind .- <ButtonPress-3> {} -bind .- <Button3-Leave> {dnd drag %W} -dnd bindtarget .- text/plain <Drop> { - foreach l [split %D "\n"] {.- insert end [regsub -- {^file:[/]+} $l "/"]} -} -dnd bindtarget .- text/uri-list <Drop> {foreach d %D {.- insert end [regsub -- {^file:[/]+} $d "/"]}} -dnd bindsource .- text/uri-list { - set sel [.- curselection] - if {$sel ne ""} { - set dd {} - foreach el $sel { - lappend dd [.- get $el] - } - return $dd - } -} -bind .- <<ListboxSelect>> { - set sel [.- curselection] - if {$sel ne ""} { - ::ix::qo .- .| [lindex $sel end] -# foreach el $sel { -# ::ix::qo .- .| $el -# } - } -} -bind .- <<delete>> { - set sel [.- curselection] - if {$sel ne ""} { - for {set i [expr [llength $sel] - 1]} {0 <= $i} {incr i -1} { - .- delete [lindex $sel $i] - } - } -} -bind .- <<selectAll>> { - .- selection set 0 end -} -event add <<selectAll>> <KeyPress-a> -event add <<delete>> <Delete> -event add <<delete>> <BackSpace> -event add <<delete>> <KeyPress-d> -puts "q .- .|" diff --git a/extensions/gui/ix/toxy/sp-demo.pd b/extensions/gui/ix/toxy/sp-demo.pd deleted file mode 100644 index 28bd546435d7187985c5a1732da12c8fa748132d..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/sp-demo.pd +++ /dev/null @@ -1,325 +0,0 @@ -#N canvas 387 298 580 364 10; -#X obj 40 102 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 -; -#X obj -196 21 loadbang; -#X obj -196 111 until; -#X obj -299 225 textfile; -#X obj -299 207 prepend add2; -#X msg -307 171 clear; -#X msg -307 171 bang; -#X obj -299 243 prepend draw; -#X obj -307 153 t b b b; -#X obj -196 129 f 512; -#X obj -196 147 mod 512; -#X obj -196 147 - 1; -#X obj -176 75 samplerate~; -#X obj -251 71 * 1000; -#X obj -196 75 /; -#X obj -273 89 metro 46; -#X msg -77 218 img configure -height \$1 \, -height \$1; -#X obj -196 93 i 512; -#X obj 63 33 hsl 128 15 0 1000 0 1 empty empty hue -2 -6 0 8 -1 -262144 --1 6200 1; -#X obj -149 200 exp; -#X obj 42 32 tgl 15 1 empty empty empty 0 -6 0 8 -99865 -195568 -1 -1 1; -#X obj -174 165 demux; -#X obj -129 182 log; -#X obj -149 182 *; -#X obj -129 164 t f f; -#X obj -129 200 /; -#X msg -248 129 -1; -#X msg -225 129 1; -#X obj 197 33 hsl 128 15 30 300 0 1 empty empty gain -2 -6 0 8 -262144 --1 -1 4200 1; -#X obj -129 254 +; -#X obj 59 49 widget sp sp1 -height 303; -#X obj -162 236 sqrt; -#X obj -157 272 mod 1000; -#X obj -157 290 demux; -#X obj 42 50 tgl 15 1 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 -; -#X obj -129 326 abs; -#X obj -129 308 - 1000; -#X obj -129 236 * 110; -#X msg -196 39 512; -#X obj -147 129 i; -#X obj -196 57 t f b; -#X obj 3 75 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10 -262144 --1 -1 303 256; -#X obj -322 17 mp3amp~; -#X msg -271 -1 disconnect; -#X msg -209 -1 connecturl live365.com:80/play/wfmu1; -#X obj 61 -5 widget dd d1 #width 25 -width 73; -#X obj -271 37 readsf~ 2; -#X msg -271 17 open \$1 \, 1; -#X obj -329 55 dac~; -#X text 6 30 log/lin; -#X text 11 100 start; -#X text 2 52 palette; -#X text 3 44 inverse; -#N canvas 845 38 435 259 1000sp 0; -#X obj 96 113 inlet; -#X obj 12 -13 inlet~; -#X obj 11 68 rfft~; -#X obj 5 103 *~; -#X obj 12 135 sqrt~; -#X obj 32 103 *~; -#X obj 94 27 loadbang; -#X obj 94 48 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 -; -#X obj 105 65 prepend set; -#X obj 122 47 pack 1 1 1; -#X obj 166 21 inlet; -#X obj 95 83 switch~ 512 1 1; -#X obj 247 1 table \$0sp 512; -#X obj 11 166 tabwrite~ \$0sp; -#X obj 36 9 tabreceive~ \$0w; -#X obj 338 1 table \$0w; -#X msg 310 112 0; -#X obj 267 130 osc~; -#X obj 267 83 samplerate~; -#X obj 267 107 / 256; -#X obj 267 152 *~ -0.5; -#X obj 267 174 +~ 0.5; -#X obj 253 41 loadbang; -#X obj 23 31 *~; -#X obj 252 203 tabwrite~ \$0w; -#X obj 338 25 pack f \$0; -#X msg 338 43 \; \$2w resize \$1; -#X obj 193 45 t b f; -#X msg 253 63 bang; -#X obj 338 101 pack f \$0; -#X msg 338 119 \; \$2sp resize \$1; -#X obj 338 83 / 2; -#X connect 0 0 13 0; -#X connect 1 0 23 0; -#X connect 2 0 3 1; -#X connect 2 0 3 0; -#X connect 2 1 5 1; -#X connect 2 1 5 0; -#X connect 3 0 4 0; -#X connect 4 0 13 0; -#X connect 5 0 4 0; -#X connect 6 0 7 0; -#X connect 7 0 11 0; -#X connect 8 0 11 0; -#X connect 9 0 8 0; -#X connect 10 0 9 0; -#X connect 10 0 27 0; -#X connect 14 0 23 1; -#X connect 16 0 17 1; -#X connect 17 0 20 0; -#X connect 18 0 19 0; -#X connect 19 0 17 0; -#X connect 20 0 21 0; -#X connect 21 0 24 0; -#X connect 22 0 28 0; -#X connect 23 0 2 0; -#X connect 25 0 26 0; -#X connect 27 0 28 0; -#X connect 27 1 19 1; -#X connect 27 1 25 0; -#X connect 27 1 31 0; -#X connect 28 0 16 0; -#X connect 28 0 18 0; -#X connect 28 0 24 0; -#X connect 29 0 30 0; -#X connect 31 0 29 0; -#X restore -285 112 pd \$0sp; -#X obj -162 218 tabread4 \$0sp; -#X msg -170 39 1024; -#X obj -157 343 * 0.255; -#N canvas 0 0 356 499 hsv2rgb 0; -#X obj 152 455 sprintf symbol #%02x%02x%02x; -#X obj 41 14 inlet; -#X obj 153 471 outlet; -#X obj 53 75 / 42.5; -#X obj 18 55 t f f; -#X obj 31 33 unpack f f f; -#X obj 16 85 / 42.5; -#X obj 23 115 -; -#X obj 56 97 i; -#X obj 115 78 / 255; -#X obj 96 112 *; -#X obj 70 143 *; -#X text 14 39 h; -#X text 58 46 s; -#X text 88 42 v; -#X text 75 102 i; -#X text 16 120 f; -#X text 145 83 vf; -#X text 115 117 vs; -#X text 90 148 vsf; -#X text 147 185 p; -#X text 73 225 q; -#X text 132 212 t; -#X obj 122 139 t b f; -#X obj 124 162 f; -#X obj 126 183 -; -#X obj 52 192 f; -#X obj 52 169 t b f; -#X obj 54 220 -; -#X obj 112 207 +; -#X obj 131 272 f; -#X obj 162 271 f; -#X obj 197 272 f; -#X obj 231 271 f; -#X text 250 277 v; -#X text 218 275 p; -#X text 146 279 t; -#X text 182 278 q; -#X obj 92 278 i; -#X obj 214 293 prepend add2; -#X msg 193 321 96.8999 0 255; -#X obj 77 325 t b b b; -#X obj 79 252 t b b f b; -#X msg 191 295 set; -#X obj 90 345 t b b b; -#X obj 116 367 t b b b; -#X obj 138 387 t b b b; -#X obj 153 414 t b b b; -#X obj 167 435 t b b b; -#X obj 79 300 route 1 2 3 4 5; -#X connect 0 0 2 0; -#X connect 1 0 5 0; -#X connect 3 0 8 0; -#X connect 4 0 6 0; -#X connect 4 1 3 0; -#X connect 5 0 4 0; -#X connect 5 1 10 0; -#X connect 5 2 9 0; -#X connect 5 2 24 1; -#X connect 5 2 26 1; -#X connect 5 2 33 1; -#X connect 6 0 7 0; -#X connect 7 0 11 0; -#X connect 8 0 7 1; -#X connect 8 0 38 1; -#X connect 9 0 10 1; -#X connect 10 0 11 1; -#X connect 10 0 23 0; -#X connect 11 0 27 0; -#X connect 23 0 24 0; -#X connect 23 1 25 1; -#X connect 24 0 25 0; -#X connect 25 0 29 1; -#X connect 25 0 32 1; -#X connect 26 0 28 0; -#X connect 27 0 26 0; -#X connect 27 1 28 1; -#X connect 27 1 29 0; -#X connect 28 0 42 0; -#X connect 29 0 30 1; -#X connect 30 0 39 0; -#X connect 31 0 39 0; -#X connect 32 0 39 0; -#X connect 33 0 39 0; -#X connect 38 0 49 0; -#X connect 39 0 40 0; -#X connect 40 0 0 0; -#X connect 41 0 32 0; -#X connect 41 1 33 0; -#X connect 41 2 31 0; -#X connect 42 0 40 0; -#X connect 42 1 38 0; -#X connect 42 2 31 1; -#X connect 42 3 43 0; -#X connect 43 0 40 0; -#X connect 44 0 30 0; -#X connect 44 1 33 0; -#X connect 44 2 32 0; -#X connect 45 0 33 0; -#X connect 45 1 31 0; -#X connect 45 2 32 0; -#X connect 46 0 33 0; -#X connect 46 1 32 0; -#X connect 46 2 30 0; -#X connect 47 0 31 0; -#X connect 47 1 32 0; -#X connect 47 2 33 0; -#X connect 48 0 32 0; -#X connect 48 1 30 0; -#X connect 48 2 33 0; -#X connect 49 0 41 0; -#X connect 49 1 44 0; -#X connect 49 2 45 0; -#X connect 49 3 46 0; -#X connect 49 4 47 0; -#X connect 49 5 48 0; -#X restore -268 186 pd hsv2rgb; -#X obj -313 74 adc~; -#X obj -268 167 pack 0 255 255; -#X connect 0 0 15 0; -#X connect 1 0 38 0; -#X connect 2 0 9 0; -#X connect 3 0 7 0; -#X connect 4 0 3 0; -#X connect 5 0 3 0; -#X connect 6 0 3 0; -#X connect 7 0 30 0; -#X connect 8 0 6 0; -#X connect 8 1 17 0; -#X connect 8 2 5 0; -#X connect 9 0 11 0; -#X connect 10 0 9 1; -#X connect 10 0 21 0; -#X connect 11 0 10 0; -#X connect 12 0 14 1; -#X connect 13 0 15 1; -#X connect 14 0 13 0; -#X connect 15 0 53 1; -#X connect 15 0 8 0; -#X connect 16 0 30 0; -#X connect 17 0 2 0; -#X connect 18 0 29 1; -#X connect 19 0 54 0; -#X connect 20 0 21 1; -#X connect 21 0 54 0; -#X connect 21 1 23 0; -#X connect 22 0 25 0; -#X connect 23 0 19 0; -#X connect 24 0 22 0; -#X connect 24 1 25 1; -#X connect 25 0 23 1; -#X connect 26 0 11 1; -#X connect 27 0 11 1; -#X connect 28 0 37 1; -#X connect 29 0 32 0; -#X connect 31 0 37 0; -#X connect 32 0 33 0; -#X connect 33 0 56 0; -#X connect 33 1 36 0; -#X connect 34 0 33 1; -#X connect 35 0 56 0; -#X connect 36 0 35 0; -#X connect 37 0 29 0; -#X connect 38 0 40 0; -#X connect 39 0 10 1; -#X connect 39 0 9 1; -#X connect 39 0 16 0; -#X connect 39 0 17 1; -#X connect 39 0 24 0; -#X connect 40 0 14 0; -#X connect 40 0 53 2; -#X connect 40 1 12 0; -#X connect 41 0 39 0; -#X connect 42 0 48 0; -#X connect 42 0 53 0; -#X connect 42 1 48 1; -#X connect 42 1 53 0; -#X connect 43 0 42 0; -#X connect 44 0 42 0; -#X connect 45 0 47 0; -#X connect 46 0 48 0; -#X connect 46 0 53 0; -#X connect 46 1 48 1; -#X connect 46 1 53 0; -#X connect 47 0 46 0; -#X connect 54 0 31 0; -#X connect 55 0 40 0; -#X connect 56 0 59 0; -#X connect 57 0 4 0; -#X connect 58 0 53 0; -#X connect 59 0 57 0; -#X coords 0 0 2.71716e-06 4.15856e-06 535 500 0; diff --git a/extensions/gui/ix/toxy/sp.wid b/extensions/gui/ix/toxy/sp.wid deleted file mode 100755 index 2b41902f16118f0ce6630942861da65ac9e30dae..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/sp.wid +++ /dev/null @@ -1,36 +0,0 @@ -#console show -namespace eval ::ix { - variable _ - proc sp {p t} { - variable _ - image create photo $t - $p configure -image $t - set _($t:loc) 0 - } - proc spl {t args} { - variable _ - incr _($t:loc) - if {$_($t:loc) > 511} {set _($t:loc) 0} - set draw {} - foreach pixel $args { - set pixel [expr int($pixel)] - lappend draw [format #%02x%02x%02x $pixel $pixel $pixel] - } - $t put $draw -to $_($t:loc) 0 - } - proc spd {t args} { - variable _ - incr _($t:loc) - if {$_($t:loc) > 511} {set _($t:loc) 0} - $t put $args -to $_($t:loc) 0 - } -} -#> sp label -#. @list ::ix::spl .| .#args -#. @draw ::ix::spd .| .#args -#. @clear .- delete 0 end -#. @img eval ".| .#args" -#. @cmd eval ".- .#args" -bind .- <B1-Motion> {.| put #eeeeee -to %x %y} -::ix::sp .- .| -puts "setup" \ No newline at end of file diff --git a/extensions/gui/ix/toxy/spectrum-demo.pd b/extensions/gui/ix/toxy/spectrum-demo.pd deleted file mode 100644 index 98c5a385a91ad53a24aec75af61bfbff4ebca6da..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/spectrum-demo.pd +++ /dev/null @@ -1,171 +0,0 @@ -#N canvas 62 98 623 209 10; -#X obj -28 29 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 -; -#X obj -115 21 loadbang; -#X obj -95 69 samplerate~; -#X obj -115 85 * 1000; -#X obj -115 69 /; -#X obj -115 101 metro 46; -#X obj 86 29 tgl 15 1 \$0loglin empty empty 0 -6 0 8 -99865 -195568 --1 0 1; -#X obj 112 30 hsl 128 15 1 100 0 1 \$0gain empty empty -2 -6 0 8 -262144 --1 -1 3500 1; -#X obj -28 46 widget spectrum sp1 #ca "#ffff4c" #cb "#0ebcd8" #tb 57 -#w 480 #h 160 -height 269; -#X obj -115 53 t f b; -#X text 57 30 log/lin; -#N canvas 755 38 493 259 1000sp 0; -#X obj 96 113 inlet; -#X obj 12 -13 inlet~; -#X obj 11 68 rfft~; -#X obj 5 103 *~; -#X obj 12 135 sqrt~; -#X obj 32 103 *~; -#X obj 94 27 loadbang; -#X obj 94 48 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 -; -#X obj 105 65 prepend set; -#X obj 122 47 pack 1 1 1; -#X obj 166 21 inlet; -#X obj 95 83 switch~ 512 1 1; -#X obj 36 9 tabreceive~ \$0w; -#X obj 338 1 table \$0w; -#X msg 310 112 0; -#X obj 267 130 osc~; -#X obj 267 83 samplerate~; -#X obj 267 107 / 256; -#X obj 267 152 *~ -0.5; -#X obj 267 174 +~ 0.5; -#X obj 253 41 loadbang; -#X obj 16 32 *~; -#X obj 252 203 tabwrite~ \$0w; -#X obj 338 25 pack f \$0; -#X msg 338 43 \; \$2w resize \$1; -#X obj 193 45 t b f; -#X msg 253 63 bang; -#X obj 338 101 pack f \$0; -#X obj 338 83 / 2; -#X obj 51 -14 inlet~; -#X obj 53 68 rfft~; -#X obj 47 103 *~; -#X obj 54 135 sqrt~; -#X obj 74 103 *~; -#X obj 58 32 *~; -#X obj 94 166 tabwrite~ \$0sp1; -#X obj 11 166 tabwrite~ \$0sp0; -#X msg 338 119 \; \$2sp0 resize \$1 \; \$2sp1 resize \$1; -#X obj 247 1 table \$0sp0 512; -#X obj 247 17 table \$0sp1 512; -#X connect 0 0 36 0; -#X connect 0 0 35 0; -#X connect 1 0 21 0; -#X connect 2 0 3 1; -#X connect 2 0 3 0; -#X connect 2 1 5 1; -#X connect 2 1 5 0; -#X connect 3 0 4 0; -#X connect 4 0 36 0; -#X connect 5 0 4 0; -#X connect 6 0 7 0; -#X connect 7 0 11 0; -#X connect 8 0 11 0; -#X connect 9 0 8 0; -#X connect 10 0 9 0; -#X connect 10 0 25 0; -#X connect 12 0 21 1; -#X connect 12 0 34 1; -#X connect 14 0 15 1; -#X connect 15 0 18 0; -#X connect 16 0 17 0; -#X connect 17 0 15 0; -#X connect 18 0 19 0; -#X connect 19 0 22 0; -#X connect 20 0 26 0; -#X connect 21 0 2 0; -#X connect 23 0 24 0; -#X connect 25 0 26 0; -#X connect 25 1 17 1; -#X connect 25 1 23 0; -#X connect 25 1 28 0; -#X connect 26 0 14 0; -#X connect 26 0 16 0; -#X connect 26 0 22 0; -#X connect 27 0 37 0; -#X connect 28 0 27 0; -#X connect 29 0 34 0; -#X connect 30 0 31 1; -#X connect 30 0 31 0; -#X connect 30 1 33 1; -#X connect 30 1 33 0; -#X connect 31 0 32 0; -#X connect 32 0 35 0; -#X connect 33 0 32 0; -#X connect 34 0 30 0; -#X restore -144 155 pd \$0sp; -#X msg -115 37 2048; -#X text -10 31 power; -#X obj -145 76 adc~; -#X msg 289 30 #ca \$1; -#X obj 358 30 tot .; -#X msg 353 15 query tk_chooseColor; -#X obj 387 31 makefilename "%s"; -#X obj 289 14 demux; -#X obj 338 15 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 -; -#X msg 323 30 #cb \$1; -#X floatatom 258 17 5 33 100 0 - - -; -#X msg 249 30 #tb \$1; -#X floatatom 7 1 5 30 500 0 - - -; -#X floatatom -20 1 5 64 640 0 - - -; -#X msg 94 15 #w \$1; -#X obj 22 14 spr \$0 \$0sp1 2; -#X msg 125 15 #h \$1; -#X obj -50 14 spr \$0 \$0sp0 1; -#X msg -115 5 480; -#X msg -92 5 160; -#X obj -132 132 biquad~; -#X obj -103 135 notch 4000 42; -#X obj -139 118 hsl 106 15 0 10000 0 0 empty empty empty -2 -6 0 8 --262144 -1 -1 8600 1; -#X connect 0 0 5 0; -#X connect 1 0 12 0; -#X connect 1 0 30 0; -#X connect 1 0 31 0; -#X connect 2 0 4 1; -#X connect 3 0 5 1; -#X connect 4 0 3 0; -#X connect 5 0 11 2; -#X connect 5 0 27 0; -#X connect 5 0 29 0; -#X connect 9 0 4 0; -#X connect 9 0 11 3; -#X connect 9 1 2 0; -#X connect 12 0 9 0; -#X connect 14 0 11 0; -#X connect 14 1 32 0; -#X connect 15 0 8 0; -#X connect 16 0 18 0; -#X connect 17 0 16 0; -#X connect 18 0 19 0; -#X connect 19 0 15 0; -#X connect 19 1 21 0; -#X connect 20 0 19 1; -#X connect 21 0 8 0; -#X connect 22 0 23 0; -#X connect 23 0 8 0; -#X connect 24 0 28 0; -#X connect 24 0 29 2; -#X connect 24 0 27 2; -#X connect 25 0 26 0; -#X connect 25 0 27 1; -#X connect 25 0 29 1; -#X connect 26 0 8 0; -#X connect 27 0 8 0; -#X connect 28 0 8 0; -#X connect 29 0 8 0; -#X connect 30 0 25 0; -#X connect 31 0 24 0; -#X connect 32 0 11 1; -#X connect 33 0 32 0; -#X connect 34 0 33 0; -#X coords 0 0 2.71716e-06 4.15856e-06 535 500 0; diff --git a/extensions/gui/ix/toxy/spectrum.wid b/extensions/gui/ix/toxy/spectrum.wid deleted file mode 100755 index e42af02690fff0cb5149405acf971ce2d15bfc98..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/spectrum.wid +++ /dev/null @@ -1,42 +0,0 @@ -#console show -package require Tkzinc 3.3 -package require zincGraphics -namespace eval ::ix { - variable _ - proc spectrum_sub {t sub} { - variable _ - set _($t:use) $sub - } - proc spectrum_floats {path t w h args} { - variable _ - set coords "0 $h" - set i 0 - foreach num $args { - incr i - lappend coords $i $num - } - lappend coords $w $h - $path coords $t:sub$_($t:use) $coords - - } - proc spectrum {path t w h bg c1 c2 t1 t2} { - if {[winfo exists $path.nob] != 1} { - zinc $path.nob -render 1 -width $w -height $h -borderwidth 1 -lightangle 140 -backcolor $bg - $path configure -width $w -height $h - place $path.nob -anchor nw -relwidth 1 -relheight 1 - $path.nob remove * - $path.nob add curve 1 {1 1 8 4} -filled 1 -linewidth 0 -fillcolor "$c1;$t1" -closed 1 -tags $t:sub1 - $path.nob add curve 1 {1 1 8 4} -filled 1 -linewidth 0 -fillcolor "$c2;$t2" -closed 1 -tags $t:sub2 - } - } -} -#> spectrum frame -#. -height 160 -width 480 -bd 1 -bg "#cccccc" -#. #h 160 #w 480 #bg gray20 #ca yellow #cb red #ta 100 #tb 50 -#. @list ::ix::spectrum_floats .-.nob .| .#w .#h .#args -#. @use ::ix::spectrum_sub .| .#1 -#. @cmd eval ".-.nob .#args" -bind .- <Enter> {focus .-} -bind .- <Leave> {focus .^.c} -::ix::spectrum .- .| .#w .#h .#bg .#ca .#cb .#ta .#tb -puts "spectrum .- .|" diff --git a/extensions/gui/ix/toxy/tile-demo.pd b/extensions/gui/ix/toxy/tile-demo.pd deleted file mode 100644 index 4e7c845bcdf5e5c00f19e54b3e052da08b03eb6e..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/tile-demo.pd +++ /dev/null @@ -1,74 +0,0 @@ -#N canvas 265 374 607 366 12; -#X obj 135 73 widget tile t1 #e non -colwidth -13 -rows 12 -cols 16 --width 16 -height 12 -rowheight -13 -bd 1 -bg red; -#X msg 80 87 redefine; -#X msg 198 53 clr; -#X msg 100 54 #e \$1; -#X obj 137 46 widget dm #items #items .(rows columns non.) #arrows -0 -bg pink; -#X floatatom 428 3 2 0 64 0 - - -; -#X floatatom 271 14 5 0 0 0 - - -; -#X floatatom 271 -2 5 0 0 0 - - -; -#X obj 459 9 * -1; -#X msg 419 27 -colwidth \$1 \, -rowheight \$1; -#X msg 271 30 -cols \$1 \, -width \$1 \, clr; -#X msg 270 49 -rows \$1 \, -height \$1 \, clr; -#X obj 199 -10 bng 55 250 50 0 empty empty empty 0 -6 0 8 -241291 -1 --1; -#X obj 441 277 osc~ 440; -#X obj 462 165 mtof; -#X obj 499 297 line~; -#X obj 465 325 dac~ 1 2; -#X obj 466 302 *~; -#X obj 462 106 - 12; -#X obj 462 125 abs; -#X obj 422 78 unpack f f f; -#X obj 436 188 pack 0 0 0; -#X obj 440 254 pipe 0 0 1000; -#X obj 422 100 * 100; -#X msg 438 210 \$2 \$3 \$1; -#X obj 438 231 unpack f f f; -#X obj 462 144 + 48; -#X obj 495 154 * 0.25; -#X msg 538 277 0 2; -#X obj 540 258 del 98; -#X msg 503 276 \$1 2; -#X obj 540 236 t b; -#X connect 0 0 20 0; -#X connect 1 0 0 0; -#X connect 2 0 0 0; -#X connect 3 0 0 0; -#X connect 4 0 3 0; -#X connect 5 0 8 0; -#X connect 6 0 10 0; -#X connect 7 0 11 0; -#X connect 8 0 9 0; -#X connect 9 0 0 0; -#X connect 10 0 0 0; -#X connect 11 0 0 0; -#X connect 12 0 0 0; -#X connect 13 0 17 0; -#X connect 14 0 21 1; -#X connect 15 0 17 1; -#X connect 17 0 16 0; -#X connect 17 0 16 1; -#X connect 18 0 19 0; -#X connect 19 0 26 0; -#X connect 20 0 23 0; -#X connect 20 1 18 0; -#X connect 20 2 27 0; -#X connect 21 0 24 0; -#X connect 22 0 13 0; -#X connect 22 1 31 0; -#X connect 22 1 30 0; -#X connect 23 0 21 0; -#X connect 24 0 25 0; -#X connect 25 0 22 0; -#X connect 25 1 22 1; -#X connect 25 2 22 2; -#X connect 26 0 14 0; -#X connect 27 0 21 2; -#X connect 28 0 15 0; -#X connect 29 0 28 0; -#X connect 30 0 15 0; -#X connect 31 0 29 0; diff --git a/extensions/gui/ix/toxy/tile.wid b/extensions/gui/ix/toxy/tile.wid deleted file mode 100755 index 5bf3cecdbebf0e449806e94bf08b453b38f95801..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/tile.wid +++ /dev/null @@ -1,87 +0,0 @@ -#console show -package require Tktable -namespace eval ::ix { - variable _ - proc tile {t tg bg fg ac sb sf e} { - variable _ - $t tag configure active -bg $ac - $t tag configure OFF -bg $bg -relief ridge - $t tag configure ON -bg $fg -relief sunken - $t tag configure sel -bg $sb -fg $sf -relief flat - if {$e eq "columns"} { - bind $t <Motion> { - %W selection clear all - set sel [%W index @%x,%y row] - %W selection set $sel,0 $sel,[%W cget -cols] - } - } elseif {$e eq "rows"} { - bind $t <Motion> { - %W selection clear all - set sel [%W index @%x,%y col] - %W selection set 0,$sel [%W cget -rows],$sel - } - } else { - bind $t <Motion> { - %W selection clear all - %W selection set @%x,%y - } - } - set _($t:e) $e - bind $t <Leave> {%W selection clear all} - bind $t <2> {%W configure -state [if {[%W cget -state] eq "normal"} {list disabled} {list normal}]} - bind $t <3> {::ix::tile_clk %W %x %y OFF} - bind $t <1> {::ix::tile_clk %W %x %y ON} - bind $t <B3-Motion> [bind $t <3>] - bind $t <B1-Motion> [bind $t <1>] - - tile_clr $t - } - proc tile_dump {t id} { - puts "$t $id" - for {set c 0} {$c < [$t cget -cols]} {incr c} { - for {set r 0} {$r < [$t cget -rows]} {incr r} { - if {[$t tag includes ON $r,$c] == 1} { - pd [concat $id.rp _cb $c $r 1\;] - } - } - } - } - proc tile_clk {t x y v} { - variable _ - if {[$t cget -state] eq "disabled"} { - switch $_($t:e) { - rows { - for {set row 0} {$row < [$t cget -rows]} {incr row} { - $t tag celltag OFF $row,[$t index @$x,$y col] - } - } - columns { - for {set col 0} {$col < [$t cget -cols]} {incr col} { - $t tag celltag OFF [$t index @$x,$y row],$col - } - } - } - $t tag celltag $v [$t index @$x,$y] - } - } - proc tile_clr {t} { - for {set i 0} {$i < [$t cget -rows]} {incr i} { - for {set j 0} {$j < [$t cget -cols]} {incr j} { - $t tag celltag OFF $i,$j - } - } - } - -} -#> tile table -#. -rows 8 -cols 16 -resizeborders none -fg blue -#. -borderwidth 2 -titlerows 0 -titlecols 0 -roworigin 0 -colorigin 0 -colwidth 4 -#. -width 16 -height 8 -variable tab -flashmode off -font {Tahoma 8} -#. #bg "#a4e75a" #fg "#fefdff" #cb yellow #ac yellow #sb "#aaff88" #sf green -#. #e none -#. @bang ::ix::tile_dump .- .| -#. @clear ::ix::tile_clr .- -#. @clr ::ix::tile_clr .- - -::ix::tile .- .| .#bg .#fg .#ac .#sb .#sf .#e -puts "tile .- .|" diff --git a/extensions/gui/ix/toxy/tree-demo.pd b/extensions/gui/ix/toxy/tree-demo.pd deleted file mode 100644 index cdfa6fecd8d1bfb11a075b5b1e580c19eff03746..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/tree-demo.pd +++ /dev/null @@ -1,184 +0,0 @@ -#N canvas 402 155 495 621 10; -#X obj 36 131 widget tree t1 -height 300 -selectmode single -width -205 -bd 2 -border 1 -font .(verdana 8.) -bg yellow -fg blue; -#X obj 215 16 tow . tree t1; -#X msg 13 8 0 juice; -#X msg 21 24 1 coffee; -#X msg 32 41 2 apples; -#X msg 43 58 3 plantains; -#X msg 27 74 2 arugula; -#X msg 22 90 1 byte; -#X obj 251 117 bng 15 250 50 0 empty empty empty 0 -6 0 8 -260818 -1 --1; -#X msg 107 101 clear; -#X msg 178 113 path \$1; -#X msg 178 93 auto \$1; -#X obj 224 78 tgl 15 0 empty empty empty 0 -6 0 8 -225271 -1 -1 0 1 -; -#X obj 225 98 tgl 15 0 empty empty empty 0 -6 0 8 -225280 -1 -1 0 1 -; -#X obj 266 168 widget dd dt -bg gray -fg pink; -#X obj 11 113 prepend add; -#X msg 171 0 cmd collapse -recurse all \, cmd expand 0; -#X msg 255 -16 cmd expand all; -#X obj 17 -10 t b b b b b; -#X msg 80 -23 16; -#X obj 81 -8 until; -#X obj 78 9 random 6; -#X obj 73 24 route 0 1 2 3 4 5; -#X obj 24 -47 bng 31 250 50 0 empty empty empty 0 -6 0 8 -193787 -1 --1; -#X obj 56 -48 bng 27 250 50 0 empty empty empty 0 -6 0 8 -258699 -1 --1; -#X obj 146 453 s2l /; -#X msg 240 453 resynth \; supatrigga \;; -#X msg 215 473 set; -#X msg 201 453 add \$1; -#X obj 176 453 drip; -#X symbolatom 40 492 39 0 0 0 - - -; -#X obj 96 453 l2s; -#X obj 116 453 t s b; -#N canvas 17 433 316 238 pooledit 1; -#X obj 18 50 prepend mkchdir; -#X obj 18 9 inlet; -#X obj 28 66 prepend rmdir; -#X obj 168 173 outlet; -#X obj 89 103 l2s; -#X obj 48 82 niagara 1; -#X obj 61 139 glue; -#X obj 89 123 s2l /; -#X obj 48 101 a2l; -#X obj 61 158 route list; -#X obj 61 174 pool tt; -#X obj 197 66 prepend chdir; -#X obj 18 26 route new delete cut copy paste; -#X msg 169 66 paste; -#X msg 132 66 copyall; -#X msg 100 66 cutall; -#X obj 100 50 t a a; -#X obj 132 50 t a a; -#X obj 169 50 t a a; -#X connect 0 0 5 0; -#X connect 1 0 12 0; -#X connect 2 0 5 0; -#X connect 4 0 7 0; -#X connect 5 0 8 0; -#X connect 5 1 4 0; -#X connect 6 0 9 0; -#X connect 7 0 6 1; -#X connect 8 0 6 0; -#X connect 9 0 10 0; -#X connect 11 0 5 0; -#X connect 12 0 0 0; -#X connect 12 1 2 0; -#X connect 12 2 16 0; -#X connect 12 3 17 0; -#X connect 12 4 18 0; -#X connect 12 5 3 0; -#X connect 13 0 10 0; -#X connect 14 0 10 0; -#X connect 15 0 10 0; -#X connect 16 0 15 0; -#X connect 16 1 11 0; -#X connect 17 0 14 0; -#X connect 17 1 11 0; -#X connect 18 0 13 0; -#X connect 18 1 11 0; -#X restore 37 437 pd pooledit; -#N canvas 185 447 106 167 poolview 1; -#X obj 3 84 packel -1; -#X msg 4 23 chdir \, getsub -1; -#X obj 53 84 length; -#X obj 11 63 t a a; -#X obj 3 137 outlet; -#X obj 4 3 inlet; -#X obj 62 2 inlet; -#X obj 4 44 pool tt; -#X obj 3 119 prepend; -#X obj 53 102 - 1; -#X connect 0 0 8 0; -#X connect 1 0 7 0; -#X connect 2 0 9 0; -#X connect 3 0 0 0; -#X connect 3 1 2 0; -#X connect 5 0 1 0; -#X connect 6 0 7 0; -#X connect 7 1 3 0; -#X connect 8 0 4 0; -#X connect 9 0 8 1; -#X restore 267 116 pd poolview; -#X text 266 154 drag an item here; -#X obj 158 -33 tot .; -#X msg 136 -50 tot console show; -#X obj 267 79 widget dd dfd -width 19; -#X msg 282 -43 -bg yellow -fg blue; -#X msg 317 101 reset \, load \$1; -#X msg 118 64 0 jip jop; -#X obj 348 281 pool tt; -#X obj 272 225 prepend chdir; -#X msg 348 260 getall; -#X obj 272 244 t b b a; -#X msg 317 278 set; -#X msg 253 333 ins 2 \; name supatrigga \; synth 0 \; vendor Bram @ -Smartelectronix \; version 1 \; dll c:/local/wbin/vst/resynth/supatrigga.dll -\; editor 0 \; outs 2 \;; -#X obj 306 317 prepend add2; -#X obj 368 317 prepend add; -#X connect 0 0 33 0; -#X connect 2 0 15 0; -#X connect 3 0 15 0; -#X connect 4 0 15 0; -#X connect 5 0 15 0; -#X connect 6 0 15 0; -#X connect 7 0 15 0; -#X connect 8 0 34 0; -#X connect 9 0 0 0; -#X connect 10 0 0 0; -#X connect 11 0 0 0; -#X connect 12 0 11 0; -#X connect 13 0 10 0; -#X connect 15 0 0 0; -#X connect 16 0 1 0; -#X connect 17 0 1 0; -#X connect 18 0 19 0; -#X connect 18 1 5 0; -#X connect 18 2 4 0; -#X connect 18 3 3 0; -#X connect 18 4 2 0; -#X connect 19 0 20 0; -#X connect 20 0 21 0; -#X connect 21 0 22 0; -#X connect 22 0 2 0; -#X connect 22 1 3 0; -#X connect 22 2 4 0; -#X connect 22 3 5 0; -#X connect 22 4 6 0; -#X connect 22 5 7 0; -#X connect 23 0 18 0; -#X connect 24 0 9 0; -#X connect 25 0 29 0; -#X connect 25 0 43 0; -#X connect 27 0 26 0; -#X connect 28 0 26 0; -#X connect 29 0 28 0; -#X connect 31 0 32 0; -#X connect 32 0 25 0; -#X connect 32 0 30 0; -#X connect 32 1 27 0; -#X connect 33 0 31 0; -#X connect 34 0 15 0; -#X connect 37 0 36 0; -#X connect 38 0 40 0; -#X connect 39 0 1 0; -#X connect 40 0 34 1; -#X connect 41 0 15 0; -#X connect 42 0 49 0; -#X connect 42 1 48 0; -#X connect 43 0 45 0; -#X connect 44 0 42 0; -#X connect 45 0 44 0; -#X connect 45 1 46 0; -#X connect 45 2 42 0; -#X connect 46 0 47 0; -#X connect 48 0 47 0; -#X connect 49 0 47 0; diff --git a/extensions/gui/ix/toxy/tree.wid b/extensions/gui/ix/toxy/tree.wid deleted file mode 100755 index 809b267088b3c1624e0424b1b53c6b4edd184699..0000000000000000000000000000000000000000 --- a/extensions/gui/ix/toxy/tree.wid +++ /dev/null @@ -1,184 +0,0 @@ -package require treectrl -package require tkdnd -namespace eval ::ix { - variable _ - proc tree {t target title auto echo path delim} { - variable _ - puts "$t $target $title $echo $path $delim" - if {[$t element names] != "el1"} { - $t column create -text $title - $t element create el1 text -fill [list green {selected focus}] - $t style create s1 - $t style elements s1 el1 - } - bind $t <Button1-Leave> {dnd drag %W} - bind $t <ButtonPress-1> { - set id [lindex [%W identify %x %y] 1] - if {$id ne "" && $id ne "tail"} { - %W activate $id - ::ix::tree_click %W [winfo name %W] - } - } - - dnd bindsource $t text/plain "return \[::ix::tree_get $t $target -1 -1\]" - bind $t <Tab> "::ix::tree_out $t $target -1" - bind $t <KeyPress-Right> "::ix::tree_out $t $target -1" - bind $t <Double-1> "::ix::tree_out $t $target -1" - bind $t <ButtonPress-3> {} - bind $t <ButtonPress-3> { - variable _ - focus %W - set target [winfo name %W] - set id [lindex [%W identify %x %y] 1] - if {$id ne ""} { - %W activate $id - %W selection clear all - %W selection add $id - set path [::ix::tree_get %W $target 1 -1] - if {[winfo exists %W.rc] != 1} { - set m [menu %W.rc -tearoff no] - $m add command -label "path [::ix::tree_get %W $target -1 $id]" -state disabled - $m add command -label delete -command { - ::ix::tree_msg $target "delete [pdtk_enquote $path]" - set p [%W item parent $id] - %W item delete $id - if {[%W item numchildren $p] < 1} { - %W item configure $p -button no - } - } - $m add command -label new -command { - ::ix::tree_nameitem %W $target $path $id - } - $m add command -label copy -command {::ix::tree_msg $target "copy [pdtk_enquote $path]"} - $m add command -label cut -command {::ix::tree_msg $target "cut [pdtk_enquote $path]"} - $m add command -label paste -command {::ix::tree_msg $target "paste [pdtk_enquote $path]"} - } else { - %W.rc entryconfigure 0 -label "path [::ix::tree_get %W $target -1 $id]" - } - tk_popup %W.rc %X %Y - } else { - if {[winfo exists %W.rroot] != 1} { - set m [menu %W.rroot -tearoff no] - $m add command -label "new root" -command { - ::ix::tree_nameitem %W $target "" 0 - } - } - tk_popup %W.rroot %X %Y - } - } - set _($target:parentList) [list root {} {} {} {} {} {}] - set _($target:auto) $auto - set _($target:echo) $echo - set _($target:path) $path - set _($target:delim) $delim - } - proc tree_nameitem {t target path id} { - set path "$path/" - destroy .$path - toplevel .$path - entry .$path.entry -textvariable send_textvariable - .$path.entry delete 0 end - .$path.entry insert 0 [::ix::random_txt 6] - .$path.entry select from 0 - .$path.entry select adjust end -# if {$path == "/"} {set pathname ""} else {set pathname path} - set submit "::ix::tree_msg $target \"new \[pdtk_enquote \"$path\$send_textvariable\"\]\";::ix::tree_item $t $id \$send_textvariable;destroy .$path" - bind .$path.entry <KeyPress-Return> $submit - button .$path.ok -text "OK" -command $submit - button .$path.cancel -text cancel -command "destroy .$path" - pdtk_standardkeybindings .$path.entry - grid .$path.entry -sticky news -columnspan 2 - grid .$path.ok .$path.cancel -sticky news - grid columnconfigure .$path 1 -weight 1 - focus .$path.entry - } - proc random_txt {n} { - set i 0 - set text "" - while {$i < $n} { - set int [expr "int(floor(rand()*62))"] - if {$int < 10} {incr int 48} elseif {$int < 36} {incr int 55} else {incr int 61} - set text "$text[format %c $int]" - incr i - } - return $text - } - proc tree_item {t p text} { - set ti [$t item create] - $t item style set $ti 0 s1 - $t item text $ti 0 $text - $t item lastchild $p $ti - $t item configure $p -button yes - return $ti - } - proc tree_add {t target args} { - variable _ - set depth [lindex $args 0] - set text [lrange $args 1 end] - set p [lindex $_($target:parentList) $depth] - set ti [tree_item $t $p $text] - incr depth - set _($target:parentList) [lreplace $_($target:parentList) $depth $depth $ti] -# if {$_($target:auto) == 1} { -# tree_msg $target "new [tree_get $t $target -1 $ti]" -# } - } - proc tree_click {t target} { - variable _ - if {$_($target:auto) == 1} {tree_out $t $target -1} - } - proc tree_cmd {t target args} { - variable _ - puts "$t $args" - set r [eval "$t $args"] - if {$_($target:echo) == 1} {pd "$target.rp _cb $r;"} - } - proc tree_out {t target rec} { - tree_msg $target [tree_get $t $target $rec -1] - } - proc tree_msg {target msg} { - pd "$target.rp _cb $msg;" - } - proc tree_get {t target rec it} { - variable _ - if {$it < 0} {set it [$t index active]} - if {$rec < 0} {set rec $_($target:path)} - if {$rec > 0} {return [tree_getrec $t $target $it ""]} else { - set item [$t item text $it 0] - return $item - } - } - proc tree_getrec {t target tr dl} { - variable _ - if {$tr > 0} { - lappend dl $tr - tree_getrec $t $target [$t item parent $tr] $dl - } else { - set tr "" - for {set i [expr [llength $dl] - 1]} {0 <= $i} {incr i -1} { - set tr "$tr$_($target:delim)[$t item text [lindex $dl $i] 0]" - } - return $tr - } - } - proc tree_cfg {target item arg} { - variable _ - set _($target:$item) $arg - } - -} - -#> tree treectrl -#. -height 400 -width 200 -#. #title 1 #auto 1 #echo 0 #path 1 #delim "/" -#. -font {tahoma 8} -showroot yes -showrootbutton no -selectmode single -#. @list ::ix::tree_list .- .| .#args -#. @clear .- item delete all -#. @add ::ix::tree_add .- .| .#args -#. @cmd ::ix::tree_cmd .- .| .#args -#. @auto ::ix::tree_cfg .| auto .#1 -#. @echo ::ix::tree_cfg .| echo .#1 -#. @path ::ix::tree_cfg .| path .#1 -#. @delim ::ix::tree_cfg .| delim .#1 - -::ix::tree .- .| .#title .#auto .#echo .#path .#delim diff --git a/extensions/xgui/AUTHORS.txt b/extensions/xgui/AUTHORS.txt deleted file mode 100644 index 5bc32953b1035ac1d49b906ad5c910ccc0e64c06..0000000000000000000000000000000000000000 --- a/extensions/xgui/AUTHORS.txt +++ /dev/null @@ -1,3 +0,0 @@ -Damien HENRY : Main contributor -Olaff Matthes : The sendto object + good ideas - diff --git a/extensions/xgui/INSTALL.txt b/extensions/xgui/INSTALL.txt deleted file mode 100644 index d05c9fbc4c2418c9a10d7fb26771f6cdee2e4cee..0000000000000000000000000000000000000000 --- a/extensions/xgui/INSTALL.txt +++ /dev/null @@ -1,34 +0,0 @@ -copy xgui in your pd directory. - -[linux] - it's better to do a make uninstall with your old version of xgui before installing the new one. - - from a terminal : - make - make install - - Thats all !!! - it will copy the right files @ the rigth places, - but only if you have install pd with make install too. - - Test it by running pdx from a terminal - - make uninstall - will remove all the files created by "make install" - -[windows] - extract the xgui_x.xx.tar.gz into your pd-path - for ex.: c:/pd/ - - Run "install.bat", it will copy the right files @ the rigth places. - - Test it by running pdx.bat - -[other & all] - Seg is very easy to install just have a look into makefile & install.bat - and you'll have all the information to install it manually. - - In fact you d'ont really need to install anything : - just extract the archive in your pd directory. - Then run xgui & pd with the right options : check pdx.* for details. - diff --git a/extensions/xgui/LICENSE.txt b/extensions/xgui/LICENSE.txt deleted file mode 100644 index 715c2cb743bad44a9b9f9edb8dbbfe4bf706e7ef..0000000000000000000000000000000000000000 --- a/extensions/xgui/LICENSE.txt +++ /dev/null @@ -1,26 +0,0 @@ -This software is copyrighted by Damien Henry and others. The following -terms apply to all files associated with the software unless explicitly -disclaimed in individual files. - -The authors hereby grant permission to use, copy, modify, distribute, -and license this software and its documentation for any purpose, provided -that existing copyright notices are retained in all copies and that this -notice is included verbatim in any distributions. No written agreement, -license, or royalty fee is required for any of the authorized uses. -Modifications to this software may be copyrighted by their authors -and need not follow the licensing terms described here, provided that -the new terms are clearly indicated on the first page of each file where -they apply. - -IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY -FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES -ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY -DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - -THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE -IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE -NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR -MODIFICATIONS. diff --git a/extensions/xgui/README.txt b/extensions/xgui/README.txt deleted file mode 100644 index 95398b53fc36699f2d08ce523dd0b642fc3dcf58..0000000000000000000000000000000000000000 --- a/extensions/xgui/README.txt +++ /dev/null @@ -1,150 +0,0 @@ -This is the README file for Xgui_0.10b, an experimental GUI (Graphical User Interface) server for pure data. - -The goal of Xgui is not to replace the existing GUI, but to add some graphicals functionality to pd. - -Xgui is designed to run on all platforms supported by pure data. -It is working very well on linux, well on win2000 and not so well on win98 (something make it slow). - -All this documentation is write in a poor english. - -1) Here a try to explain what Xgui is : - - Xgui is a graphical server that wait for some orders from a socket. - I cames with somes pd objects that allow to make the connection with the server. - For example the "canvas" object allow to create a new windows. - - GOALS : - To allow users of pure-data to disgn their own gui objects. - PARADIGME : - The gui-object will be entirely describe in pd patchs. - One graphical object <=> One object in a pd patch. - HOW : - By provided some atom objects can that can : - * creates somes windows - * put some basics graphicals objects in it. - * receive events in relations with the graphicals objects. - -2) Quick start - - 1. Run pdx - This will load the Xgui server - Then it will load pure-data - Then it open the patch pdx_connect.pd - Then it connect pd with the Xgui server via a loadbang. - - 2. load one of the patch in the doc/Xgui directory - - 3. Then play with the patchs - and enjoy the result in the Xgui window. - - -2) Some more technical info : - - On a technical point view all of this is very simple. - - Xgui is divided into 2 part : - * The Xgui server (Xgui.sh) is a tcl/tk script that exchange data with pd via socket - - * Some pd abstractions that are uses to establish the conection between pd and the Xgui server.(pdx_connect.pd) - - * some pd abstractions that represent a graphical object : - - the "Canvas.pd" abstraction that is the object to open a Xgui windows. - - The "seg.pd" abstraction that is the basic object to draw a line in the canvas. - - -3) Why Xgui is diferent from the iem/grip way ? - - Because in iem or grip, the basic elements for buildings a GUI are on a very hight level : - Sliders, and so much more. - Xgui didn't provide this king of high level features but allow the pd user to disgn their own ones. - -4) Why Xgui is close to the data features of pure-data, and why it's different. - - The goals of the experimental data features of pure-data is certainly the same as Xgui : - Provide a tools to compositor to create their own representation for their own musical language. And more. - - Pure data will be THE PERFECT TOOL for writting music and not only to generate RT sound. And more. - - The data approch is based on the Concept of template : The user will disgn the template of an object. - The HUGE good point is that the user got the ablility to dynamicly cut and paste any objects. - pure-data will automaticaly manage the duplication of the data. - The bad point is that today the code that will manage the object is not inside the template. - This mean that the way to write patch that use the data feature is not very easy. - -Miller, please corect me if i'm wrong. - - - The Xgui approch is base on his paradigm : One pd object <=> one graphical object. - This imply that the pd object will provide properties, methods and events of the graphical side. - And this make very easy to make complex GUI with very few simples objects. - But it's not possible to duplicate a graphical object without duplicate the pd object... - - As you can see thoses two way of thinking are very complementary, and i hope to find a solution - to have the best of both world - -5) Releases : - - seg_0.01 : 17 of febuary 2002 : First release: basic idea. - seg_0.02 : 20 of febuary 2002 : Structured basic idea. - No functionality have been added, but the project is reorganised into folders. - Some installations script are provided. - seg_0.03 : 20 of march 2002 : multi windows - Now seg offer the abollity to open as many windows as needed, to resize them, and draw into the rigth one. - There is no compatibility between version 0.03 & 0.02 But it's easy to change the patchs - seg_0.04 : 26 of march 2002 : bug correction & better doc - seg_0.05 : 08 of april 2002 : add some basics physics modeling tools & examples - Xgui_0.06 : 28 of april 2002 : add 3 objects (arc,rect,text) + doc + examples + event Rigth click - Rename the project cause it doesn't deals with only the seg object now. - Xgui_0.07 : 30 of April 2002 : Add the canvas color methods and corect some smalls bug - Xgui_0.08 : 6 of june 2002 : Add the ability to syncronise many xgui windows with some peer2peer facility. - Xgui_0.09 : 23 of july 2002 : Add the ability to save some preset. - Xgui_0.10 : 10 of novembre 2002 : add the ability to share some windows with other computer on the web. - -6) Todo list : - - * Add some objects :pictures, menu, etc... - * Add some methodes : nearest object, nearest point onto the object,etc... - * add some behaviors : colision, stick, etc... - * add some event : keyboard, dblclick, etc.. - * integrate Xgui closer into pd.(concatenate the pd.tk and Xgui.sh for ex. Thats working !!!!) - * why not rewrite it in java ? - * Or write a policy to put the Xgui code into html using the tcl/tk plugins ? - * a real doc. - * Etc... - * & even more. - -7) Future : - - xgui will be more and more internet oriented in a sharing/colaborative/real-time/ point of view. - But I still whant it be able to : - * disgn very complex object like sequencer or mixing table. - * disgn experimental object for driving experimental synthesis methods - * be used for creating realtime graphics linked with music. - * be used for writing experimental music - * be open to be used for something I've not think about. - - -8) Contact : http://dh7.free.fr - - Please don't hesitate to contact me if you need some help or some info about Xgui. - Don't hesitate to reports bugs too... - - Any feedback welcome. - - Damien HENRY : dh7@free.fr ; dh@dh7.net - -8) Thanks : - -* Miller Puckette -* Olaff Matthes for giving me the code of his remote object. -* Everybody involved in pure-data. -* & + ... - -9) COPYRIGHT. - - Except as otherwise noted, all files in the Xgui distribution are - - Copyright (c) 2002 damien Henry and others. - -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "LICENSE.txt," included in the Xgui distribution. diff --git a/extensions/xgui/adapters_in/xy2coord.pd b/extensions/xgui/adapters_in/xy2coord.pd deleted file mode 100644 index 2915389f2e2bc619c04bed91cb7aff32dd9685ba..0000000000000000000000000000000000000000 --- a/extensions/xgui/adapters_in/xy2coord.pd +++ /dev/null @@ -1,38 +0,0 @@ -#N canvas 528 314 372 265 10; -#X text 267 228 dh20020106; -#X text 10 6 coord : convert x1 y1 x2 y2 to a coord command; -#X obj 164 36 inlet; -#X obj 35 179 pack f f f f; -#X msg 35 202 coord \$1 \$2 \$3 \$4; -#X obj 178 133 f; -#X obj 135 133 f; -#X obj 92 133 f; -#X obj 164 60 t b f; -#X obj 121 36 inlet; -#X obj 121 60 t b f; -#X obj 78 36 inlet; -#X obj 78 60 t b f; -#X obj 35 36 inlet; -#X obj 35 134 f; -#X obj 78 98 t b b b b; -#X obj 35 227 outlet; -#X connect 2 0 8 0; -#X connect 3 0 4 0; -#X connect 4 0 16 0; -#X connect 5 0 3 3; -#X connect 6 0 3 2; -#X connect 7 0 3 1; -#X connect 8 0 15 0; -#X connect 8 1 5 1; -#X connect 9 0 10 0; -#X connect 10 0 15 0; -#X connect 10 1 6 1; -#X connect 11 0 12 0; -#X connect 12 0 15 0; -#X connect 12 1 7 1; -#X connect 13 0 14 0; -#X connect 14 0 3 0; -#X connect 15 0 14 0; -#X connect 15 1 7 0; -#X connect 15 2 6 0; -#X connect 15 3 5 0; diff --git a/extensions/xgui/adapters_in/xy2move.pd b/extensions/xgui/adapters_in/xy2move.pd deleted file mode 100644 index bafabb52edd2bb7bf8727a4d652d48ac5bd13127..0000000000000000000000000000000000000000 --- a/extensions/xgui/adapters_in/xy2move.pd +++ /dev/null @@ -1,12 +0,0 @@ -#N canvas 584 581 299 140 10; -#X text 199 97 dh20020106; -#X obj 112 36 inlet; -#X obj 35 36 inlet; -#X obj 70 95 outlet; -#X text 10 6 move : convert x1 y1 to a move command; -#X msg 35 62 move \$1 0; -#X msg 112 61 move 0 \$1; -#X connect 1 0 6 0; -#X connect 2 0 5 0; -#X connect 5 0 3 0; -#X connect 6 0 3 0; diff --git a/extensions/xgui/adapters_in/xy2xy1.pd b/extensions/xgui/adapters_in/xy2xy1.pd deleted file mode 100644 index e408136b763113c1dba3494ebfdcee74a561711f..0000000000000000000000000000000000000000 --- a/extensions/xgui/adapters_in/xy2xy1.pd +++ /dev/null @@ -1,15 +0,0 @@ -#N canvas 540 374 413 171 10; -#X obj 78 36 inlet; -#X obj 35 36 inlet; -#X obj 35 136 outlet; -#X obj 35 88 pack f f; -#X obj 78 58 t b f; -#X msg 35 111 xy1 \$1 \$2; -#X text 91 138 dh20020108; -#X text 10 6 xy2xy1; -#X connect 0 0 4 0; -#X connect 1 0 3 0; -#X connect 3 0 5 0; -#X connect 4 0 3 0; -#X connect 4 1 3 1; -#X connect 5 0 2 0; diff --git a/extensions/xgui/adapters_in/xy2xy2.pd b/extensions/xgui/adapters_in/xy2xy2.pd deleted file mode 100644 index 04ad49f237e73eb6bec7d9f225cd159b146d7414..0000000000000000000000000000000000000000 --- a/extensions/xgui/adapters_in/xy2xy2.pd +++ /dev/null @@ -1,15 +0,0 @@ -#N canvas 544 394 413 171 10; -#X obj 78 36 inlet; -#X obj 35 36 inlet; -#X obj 35 136 outlet; -#X obj 35 88 pack f f; -#X obj 78 58 t b f; -#X text 91 138 dh20020108; -#X text 10 6 xy2xy1; -#X msg 35 111 xy2 \$1 \$2; -#X connect 0 0 4 0; -#X connect 1 0 3 0; -#X connect 3 0 7 0; -#X connect 4 0 3 0; -#X connect 4 1 3 1; -#X connect 7 0 2 0; diff --git a/extensions/xgui/adapters_out/click2bxy.pd b/extensions/xgui/adapters_out/click2bxy.pd deleted file mode 100644 index 2a38c05fa016253afe03c930202b6482188edf3a..0000000000000000000000000000000000000000 --- a/extensions/xgui/adapters_out/click2bxy.pd +++ /dev/null @@ -1,16 +0,0 @@ -#N canvas 31 132 308 276 12; -#X text 15 7 click filter; -#X obj 21 34 inlet; -#X obj 21 63 route click; -#X obj 21 91 unpack f f; -#X obj 96 122 outlet; -#X obj 56 150 outlet; -#X text 93 177 dh20020111; -#X obj 21 119 t b f; -#X obj 21 177 outlet; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 3 0 7 0; -#X connect 3 1 4 0; -#X connect 7 0 8 0; -#X connect 7 1 5 0; diff --git a/extensions/xgui/adapters_out/coord2xy.pd b/extensions/xgui/adapters_out/coord2xy.pd deleted file mode 100644 index 0ba3c9be72bbe0fd4776b7bbdebfa9f753e52fcf..0000000000000000000000000000000000000000 --- a/extensions/xgui/adapters_out/coord2xy.pd +++ /dev/null @@ -1,16 +0,0 @@ -#N canvas 349 396 294 247 10; -#X text 16 10 coords2xy; -#X obj 16 30 inlet; -#X obj 108 133 outlet; -#X obj 15 103 unpack f f f f; -#X obj 77 158 outlet; -#X obj 46 133 outlet; -#X obj 15 158 outlet; -#X text 104 9 dh2002106; -#X obj 15 81 route coord; -#X connect 1 0 8 0; -#X connect 3 0 6 0; -#X connect 3 1 5 0; -#X connect 3 2 4 0; -#X connect 3 3 2 0; -#X connect 8 0 3 0; diff --git a/extensions/xgui/adapters_out/drag2move.pd b/extensions/xgui/adapters_out/drag2move.pd deleted file mode 100644 index 45cd2aeb66759ba3b7c9e4c24d51ad5d8851ba97..0000000000000000000000000000000000000000 --- a/extensions/xgui/adapters_out/drag2move.pd +++ /dev/null @@ -1,10 +0,0 @@ -#N canvas 298 205 450 300 10; -#X text 22 10 drag2move; -#X obj 24 35 inlet; -#X obj 24 110 outlet; -#X obj 24 62 route move; -#X msg 24 86 move \$1 \$2; -#X text 97 115 dh20020401; -#X connect 1 0 3 0; -#X connect 3 0 4 0; -#X connect 4 0 2 0; diff --git a/extensions/xgui/adapters_out/drag2strength.pd b/extensions/xgui/adapters_out/drag2strength.pd deleted file mode 100644 index 20468163f2baa9ec61e15bdfec55236904bba474..0000000000000000000000000000000000000000 --- a/extensions/xgui/adapters_out/drag2strength.pd +++ /dev/null @@ -1,10 +0,0 @@ -#N canvas 298 205 450 300 10; -#X obj 24 35 inlet; -#X obj 24 110 outlet; -#X obj 24 62 route move; -#X text 97 115 dh20020401; -#X msg 24 86 strength \$1 \$2; -#X text 22 10 drag2strength; -#X connect 0 0 2 0; -#X connect 2 0 4 0; -#X connect 4 0 1 0; diff --git a/extensions/xgui/adapters_out/move2xy.pd b/extensions/xgui/adapters_out/move2xy.pd deleted file mode 100644 index eb14b1be405704272613932dfb8ace799e02ff6a..0000000000000000000000000000000000000000 --- a/extensions/xgui/adapters_out/move2xy.pd +++ /dev/null @@ -1,12 +0,0 @@ -#N canvas 240 231 188 178 10; -#X text 13 11 move2xy; -#X obj 18 58 route move; -#X obj 18 35 inlet; -#X obj 18 81 unpack f f; -#X obj 18 107 outlet; -#X obj 82 108 outlet; -#X text 22 135 dh20020106; -#X connect 1 0 3 0; -#X connect 2 0 1 0; -#X connect 3 0 4 0; -#X connect 3 1 5 0; diff --git a/extensions/xgui/behaviors/dragable.pd b/extensions/xgui/behaviors/dragable.pd deleted file mode 100644 index c797e23aba0a92e402927e4a37361ef4aa75353c..0000000000000000000000000000000000000000 --- a/extensions/xgui/behaviors/dragable.pd +++ /dev/null @@ -1,10 +0,0 @@ -#N canvas 521 551 292 171 10; -#X text 120 114 dh20020106; -#X obj 35 36 inlet; -#X obj 35 111 outlet; -#X text 10 6 move : filter move command; -#X msg 35 87 move \$1 \$2; -#X obj 35 63 route drag; -#X connect 1 0 5 0; -#X connect 4 0 2 0; -#X connect 5 0 4 0; diff --git a/extensions/xgui/behaviors/light_over.pd b/extensions/xgui/behaviors/light_over.pd deleted file mode 100644 index 9caf83ad985c9e497e3c8f275fc6c7b705dd0f82..0000000000000000000000000000000000000000 --- a/extensions/xgui/behaviors/light_over.pd +++ /dev/null @@ -1,34 +0,0 @@ -#N canvas 681 249 333 272 10; -#X text 17 8 change color when enter and leave; -#X obj 24 44 inlet; -#X obj 214 107 inlet; -#X obj 24 79 route enter leave; -#X obj 67 217 outlet; -#X msg 69 189 color \$1; -#X obj 81 128 symbol Black; -#X msg 24 104 bang; -#X msg 81 103 bang; -#X obj 160 45 inlet; -#X text 247 198 dh20020109; -#X obj 208 137 symbol; -#X obj 160 69 symbol; -#X obj 100 160 symbol SteelBlue2; -#X obj 183 220 outlet; -#X msg 167 196 1; -#X msg 198 195 0; -#X connect 1 0 3 0; -#X connect 2 0 11 0; -#X connect 3 0 7 0; -#X connect 3 1 8 0; -#X connect 5 0 4 0; -#X connect 6 0 5 0; -#X connect 7 0 13 0; -#X connect 7 0 15 0; -#X connect 8 0 6 0; -#X connect 8 0 16 0; -#X connect 9 0 12 0; -#X connect 11 0 13 1; -#X connect 12 0 6 1; -#X connect 13 0 5 0; -#X connect 15 0 14 0; -#X connect 16 0 14 0; diff --git a/extensions/xgui/behaviors/ma_2d.pd b/extensions/xgui/behaviors/ma_2d.pd deleted file mode 100644 index aae992921d1640119ded1818f29315c62e57725d..0000000000000000000000000000000000000000 --- a/extensions/xgui/behaviors/ma_2d.pd +++ /dev/null @@ -1,130 +0,0 @@ -#N canvas 152 56 773 603 10; -#X obj -233 305 float; -#X floatatom -202 208 0 0 0; -#X floatatom -233 329 0 0 0; -#X text -201 279 X(n); -#X text -200 331 X(n-1); -#X obj -233 254 float; -#X floatatom -234 279 0 0 0; -#X obj -232 229 t b; -#X obj 31 112 inlet; -#X obj -36 484 outlet; -#X floatatom -41 186 0 0 0; -#X obj -191 6 loadbang; -#X text -36 87 M; -#X obj 16 327 /; -#X obj -14 358 +; -#X obj -14 328 * 2; -#X obj -14 387 -; -#X obj 18 484 outlet; -#X obj 18 456 -; -#X text -279 139 bang; -#X floatatom 16 298 0 0 0; -#X text -22 503 X; -#X obj -45 359 t b; -#X obj -43 106 inlet; -#X obj 16 268 f; -#X obj -277 186 t b b; -#X obj -43 129 r mm; -#X obj -41 160 \$1; -#X obj -256 6 r initm; -#X msg -231 73 0; -#X obj -263 32 t b b b; -#X text 29 504 Vx; -#X text 41 86 Fx; -#X obj 202 311 float; -#X floatatom 233 214 0 0 0; -#X floatatom 202 335 0 0 0; -#X obj 202 260 float; -#X floatatom 201 285 0 0 0; -#X obj 203 235 t b; -#X obj 352 120 inlet; -#X obj 285 492 outlet; -#X obj 337 335 /; -#X obj 307 366 +; -#X obj 307 336 * 2; -#X obj 307 395 -; -#X obj 339 492 outlet; -#X obj 339 464 -; -#X floatatom 337 306 0 0 0; -#X obj 276 367 t b; -#X obj 337 276 f; -#X text 234 285 Y(n); -#X text 235 337 Y(n-1); -#X msg 135 59 0; -#X text 358 89 Fy; -#X text 299 511 Y; -#X text 350 512 Vy; -#X msg -273 121 bang; -#X obj -277 161 r b_mass; -#X connect 0 0 2 0; -#X connect 0 0 7 0; -#X connect 0 0 16 1; -#X connect 0 0 22 0; -#X connect 1 0 5 1; -#X connect 1 0 18 0; -#X connect 5 0 6 0; -#X connect 5 0 0 1; -#X connect 5 0 15 0; -#X connect 5 0 18 1; -#X connect 7 0 5 0; -#X connect 8 0 24 1; -#X connect 10 0 13 1; -#X connect 10 0 41 1; -#X connect 11 0 27 0; -#X connect 11 0 29 0; -#X connect 11 0 52 0; -#X connect 13 0 14 1; -#X connect 14 0 16 0; -#X connect 15 0 14 0; -#X connect 16 0 1 0; -#X connect 16 0 9 0; -#X connect 18 0 17 0; -#X connect 20 0 13 0; -#X connect 22 0 16 0; -#X connect 23 0 10 0; -#X connect 24 0 20 0; -#X connect 25 0 0 0; -#X connect 25 0 33 0; -#X connect 25 1 24 0; -#X connect 25 1 49 0; -#X connect 26 0 10 0; -#X connect 27 0 10 0; -#X connect 28 0 30 0; -#X connect 29 0 1 0; -#X connect 29 0 6 0; -#X connect 29 0 2 0; -#X connect 29 0 24 1; -#X connect 29 0 20 0; -#X connect 30 0 25 0; -#X connect 30 1 29 0; -#X connect 30 1 52 0; -#X connect 30 2 27 0; -#X connect 33 0 35 0; -#X connect 33 0 38 0; -#X connect 33 0 44 1; -#X connect 33 0 48 0; -#X connect 34 0 36 1; -#X connect 34 0 46 0; -#X connect 36 0 37 0; -#X connect 36 0 33 1; -#X connect 36 0 43 0; -#X connect 36 0 46 1; -#X connect 38 0 36 0; -#X connect 39 0 49 1; -#X connect 41 0 42 1; -#X connect 42 0 44 0; -#X connect 43 0 42 0; -#X connect 44 0 34 0; -#X connect 44 0 40 0; -#X connect 46 0 45 0; -#X connect 47 0 41 0; -#X connect 48 0 44 0; -#X connect 49 0 47 0; -#X connect 52 0 34 0; -#X connect 52 0 47 0; -#X connect 52 0 49 1; -#X connect 52 0 37 0; -#X connect 52 0 35 0; -#X connect 56 0 25 0; -#X connect 57 0 25 0; diff --git a/extensions/xgui/behaviors/move.pd b/extensions/xgui/behaviors/move.pd deleted file mode 100644 index 03723e634e5af1d452746268094ba8e14f0567b7..0000000000000000000000000000000000000000 --- a/extensions/xgui/behaviors/move.pd +++ /dev/null @@ -1,10 +0,0 @@ -#N canvas 517 531 267 171 10; -#X text 120 114 dh20020106; -#X obj 35 36 inlet; -#X obj 35 111 outlet; -#X text 10 6 move : filter move command; -#X msg 35 87 move \$1 \$2; -#X obj 35 63 route drag; -#X connect 1 0 5 0; -#X connect 4 0 2 0; -#X connect 5 0 4 0; diff --git a/extensions/xgui/behaviors/move_x.pd b/extensions/xgui/behaviors/move_x.pd deleted file mode 100644 index 4703c7a0fd2fc3b4456c40c90a68b7b99a1adf1b..0000000000000000000000000000000000000000 --- a/extensions/xgui/behaviors/move_x.pd +++ /dev/null @@ -1,10 +0,0 @@ -#N canvas 525 571 292 171 10; -#X text 120 114 dh20020106; -#X obj 35 36 inlet; -#X obj 35 111 outlet; -#X text 10 6 move : filter move command; -#X msg 35 87 move \$1 0; -#X obj 35 63 route drag; -#X connect 1 0 5 0; -#X connect 4 0 2 0; -#X connect 5 0 4 0; diff --git a/extensions/xgui/behaviors/move_y.pd b/extensions/xgui/behaviors/move_y.pd deleted file mode 100644 index 3adce9814ca17ddb591de5dbc2c94a682b183069..0000000000000000000000000000000000000000 --- a/extensions/xgui/behaviors/move_y.pd +++ /dev/null @@ -1,10 +0,0 @@ -#N canvas 456 433 292 171 10; -#X text 120 114 dh20020106; -#X obj 35 36 inlet; -#X obj 35 111 outlet; -#X text 10 6 move : filter move command; -#X msg 35 87 move 0 \$2; -#X obj 35 63 route drag; -#X connect 1 0 5 0; -#X connect 4 0 2 0; -#X connect 5 0 4 0; diff --git a/extensions/xgui/behaviors/width_over.pd b/extensions/xgui/behaviors/width_over.pd deleted file mode 100644 index 469cc52f448dfbd677ed4b27e75ccf902e42b69c..0000000000000000000000000000000000000000 --- a/extensions/xgui/behaviors/width_over.pd +++ /dev/null @@ -1,30 +0,0 @@ -#N canvas 406 227 335 274 10; -#X text 17 8 change color when enter and leave; -#X obj 24 44 inlet; -#X obj 214 107 inlet; -#X obj 24 79 route enter leave; -#X obj 67 217 outlet; -#X msg 24 104 bang; -#X msg 81 103 bang; -#X obj 160 45 inlet; -#X text 247 198 dh20020109; -#X obj 183 220 outlet; -#X msg 167 196 1; -#X msg 198 195 0; -#X obj 81 128 float \$1; -#X obj 100 160 float \$2; -#X msg 69 189 width \$1; -#X connect 1 0 3 0; -#X connect 2 0 13 1; -#X connect 3 0 5 0; -#X connect 3 1 6 0; -#X connect 5 0 10 0; -#X connect 5 0 13 0; -#X connect 6 0 11 0; -#X connect 6 0 12 0; -#X connect 7 0 12 1; -#X connect 10 0 9 0; -#X connect 11 0 9 0; -#X connect 12 0 14 0; -#X connect 13 0 14 0; -#X connect 14 0 4 0; diff --git a/extensions/xgui/bin/pdx.sh b/extensions/xgui/bin/pdx.sh deleted file mode 100755 index 0c893b65b0fe6a8c79e3caa11a20b1117188e562..0000000000000000000000000000000000000000 --- a/extensions/xgui/bin/pdx.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -/usr/local/bin/xgui & -/usr/local/bin/pd -open /usr/local/lib/pdx/main/pdx_connect.pd \ - -path /usr/local/lib/pdx/main/ \ - -path /usr/local/lib/pdx/patch4pdx/ - diff --git a/extensions/xgui/bin/xgui-client.sh b/extensions/xgui/bin/xgui-client.sh deleted file mode 100644 index 120901877e826e5f1d8c367ebb2645e96d70a779..0000000000000000000000000000000000000000 --- a/extensions/xgui/bin/xgui-client.sh +++ /dev/null @@ -1,867 +0,0 @@ -#!/bin/sh -# the next line restarts using wish \ -exec wish "$0" "$@" - - -################################################# -puts "pd(x) - Step 2 : xgui-client" -puts "xgui b0.10 dh200209xx" -puts "Damien HENRY (c)" - -################################################# -# define the globals variables needed for a node -global xgui_gui -global xgui_cmd_out -global data_data - -global from_all - -global host_name -global host_port -global xgui_me -set host_name localhost -set host_port 4877 -set xgui_me "$host_name:$host_port" - -global pd_name -global pd_port -global pd_sok -global xgui_pd -set pd_name xxx -set pd_port 000 -set xgui_pd "$pd_name:$pd_port" -set pd_sok -1 - -global neibourg_list -global neibourg_data -set neibourg_list [list] -set neibourg_data [list] -set data_data [list] -set xgui_gui 1 -set xgui_cmd_out 0 - -################################################# -# Read what are the argument -if { [lsearch argv --help] != -1 } { puts "xgui localhost 4877 -nogui -no_cmd_out" } - -################################################# -# puts up my windows -if { $xgui_gui } { - global text2out - global text_from_outside - global text_comment - wm title . "Xgui b0.09" - frame .haut - frame .config1 - frame .config2 - frame .bas - entry .haut.e_in -width 50 -textvariable text2in - entry .haut.e_fo -width 50 -textvariable text_from_outside -state disabled - entry .haut.e_rem -width 50 -textvariable text_comment -state disabled - entry .haut.t_out -width 50 -textvariable text2out -state disabled - - entry .config1.host -width 10 -textvariable host_name - entry .config1.port -width 5 -textvariable host_port - - entry .config2.host -width 10 -textvariable pd_name - entry .config2.port -width 5 -textvariable pd_port - - button .config1.do -text "change" -command { - global xgui_me - global host_name - global host_port - global from_all - set xgui_me "$host_name:$host_port" - catch {close $from_all} - set from_all [socket -server seg_receive $host_port] - } - - button .config2.do -text "change" -command { - global xgui_pd - global pd_name - global pd_port - set xgui_pd "$pd_name:$pd_port" - catch {close $pd_sok} - catch {set pd_sok [socket $pd_name $pd_port]} - } - - button .bas.b_quit -text "quit" -width 7 -command { - send2nodes / */ "# $xgui_me disconnected" - do_this "$xgui_me/ ~/ disconnect *" xgui - exit - } - button .bas.b_do -text do -width 7 -command { do_this $text2in xgui} - button .bas.b_clear -text clear -width 7 -command { set text2in "" } - - pack .haut.e_in .haut.e_fo .haut.t_out .haut.e_rem - pack .config1.host .config1.port .config1.do -side left - pack .config2.host .config2.port .config2.do -side left - pack .bas.b_do .bas.b_clear .bas.b_quit -side left -pady 2 -padx 5 - pack .haut .config1 .config2 .bas -pady 2 - wm resizable . false false -} - -################################################# -# definition de la partie serveur - -catch {set from_all [socket -server seg_receive $host_port]} - -proc seg_receive {channel addr port} { - global xgui_me - fileevent $channel readable "readLine $channel $addr $port" - do_this "/ */ # $xgui_me connected from $channel $addr $port" 0 -} - -proc readLine {channel addr port} { - global neibourg_list - global neibourg_data - global xgui_me - global text_from_outside - if {[gets $channel line]<0} { - fileevent $channel readable {} - after idle "close $channel" - set n [lsearch $neibourg_data $channel] - if {$n != -1 } { - set neibourg_list [lreplace $neibourg_list $n $n] - set neibourg_data [lreplace $neibourg_data $n $n] - } - send2nodes / */ "# $xgui_me disconnected from $addr:$port" - } else { -# catch { do_this $line $channel } - set text_from_outside "$addr:$port $line" -# set text_from_outside "$line" - do_this $line $channel - } -} - - -################################################# -# tell that every thing OK -set text_comment "$xgui_me created" - -# end of the initialisations -######################################################################################## - -################################################# -#methods for xgui_node -proc xgui_node_add_canvas {canvas_name} { - set canvas_name [string trim $canvas_name "/"] - set canvas_name [split $canvas_name "/"] - set canvas_name [lindex $canvas_name end] - destroy .$canvas_name - data_forget ~/$canvas_name - toplevel .$canvas_name - wm title .$canvas_name $canvas_name - wm resizable .$canvas_name false false - canvas .$canvas_name.$canvas_name - pack .$canvas_name.$canvas_name - data_remember ~/$canvas_name/ "~/$canvas_name add_canvas" - send2nodes / */ "# added ~/$canvas_name" - - set c .$canvas_name.$canvas_name - $c bind all <Any-Enter> "itemEnter $c" - $c bind all <Any-Leave> "itemLeave $c" - bind $c <1> "itemStartDrag $c %x %y click" - bind $c <2> "itemStartDrag $c %x %y m-click" - bind $c <3> "itemStartDrag $c %x %y r_click" - bind $c <Shift-1> "itemStartDrag $c %x %y s-click" - bind $c <Shift-2> "itemStartDrag $c %x %y s-m-click" - bind $c <Shift-3> "itemStartDrag $c %x %y s-r-click" - bind $c <Control-1> "itemStartDrag $c %x %y c-click" - bind $c <Control-2> "itemStartDrag $c %x %y c-m-click" - bind $c <Control-3> "itemStartDrag $c %x %y c-r-click" - bind $c <B1-Motion> "itemDrag $c %x %y drag" - bind $c <B2-Motion> "itemDrag $c %x %y m-drag" - bind $c <B3-Motion> "itemDrag $c %x %y r-drag" - bind $c <Shift-B1-Motion> "itemDrag $c %x %y s-drag" - bind $c <Shift-B2-Motion> "itemDrag $c %x %y s-m-drag" - bind $c <Shift-B3-Motion> "itemDrag $c %x %y s-r-drag" - bind $c <Key> "itemKeyPress $c %A %k" -} - -proc xgui_node_del_canvas {canvas_name } { - global text_comment - set canvas_name [string trim $canvas_name "/"] - set canvas_name [split $canvas_name "/"] - set canvas_name [lindex $canvas_name end] - destroy .$canvas_name - data_forget ~/$canvas_name - set text_comment "deleted $canvas_name" -} - -proc xgui_node_error {from error} { - global text_comment - set text_comment "# error : unable to do <$error> ($from)" -} - -proc xgui_node_connect { c_who c_from channel } { - global neibourg_list - global neibourg_data - global xgui_me - global text_comment - set c_from [string trim $c_from "/"] - switch $c_who { - "me" { - set n [lsearch $neibourg_data $channel] - if { $n == -1 } { - lappend neibourg_list $c_from - lappend neibourg_data $channel - set text_comment "$xgui_me connect himself to $c_from onto channel $channel" - } else { - set text_comment "$xgui_me already connected to $c_from onto channel $channel" - } - } - "pd" { - global pd_name - global pd_port - global pd_sok - global xgui_pd - set c_host [split $c_from ":"] - set pd_name [lindex $c_host 0] - set pd_port [lindex $c_host 1] - set xgui_pd "$pd_name:$pd_port" - set pd_sok [socket -async $pd_name $pd_port] - # set pd_sok [socket $pd_name $pd_port] - if { $pd_sok != -1 } { - set text_comment " $xgui_me connected to pd" - } else { set text_comment "connection refused with pd" } - } - default { - set c_host [split $c_who ":"] - set c_name [lindex $c_host 0] - set c_port [lindex $c_host 1] - set sok -1 - catch {set sok [socket -async $c_name $c_port]} - if { $sok != -1 } { - lappend neibourg_list $c_who - lappend neibourg_data $sok - fileevent $sok readable [list read_and_do $sok] - set text_comment "$xgui_me connected $c_who" - } else { set text_comment "connection refused with $c_who" } - } - } -} - -proc xgui_node_disconnect { d_who d_from channel} { - global neibourg_list - global neibourg_data - global text_comment - switch $d_who { - "me" { - set d_who [string trim $d_from "/"] - set n [lsearch $neibourg_list $d_who] - if {$n != -1 } { - catch { close [lrange $neibourg_data $n $n] } - set neibourg_list [lreplace $neibourg_list $n $n] - set neibourg_data [lreplace $neibourg_data $n $n] - set text_comment "$d_who disconnected himself" - } else { set text_comment "error $d_from not a neibourg" } - } - - "pd" { - global pd_name - global pd_port - global pd_sok - global xgui_pd - set pd_name none - set pd_port none - set xgui_pd "$pd_name:$pd_port" - set pd_sok -1 - catch {close pd_sok} - } - "*" { - foreach sok $neibourg_data { close $sok } - set neibourg_list [list] - set neibourg_data [list] - set text_comment "$d_from disconnect *" - } - default { - set n [lsearch $neibourg_list $d_who] - if {$n != -1 } { - catch { close [lrange $neibourg_data $n $n] } - set neibourg_list [lreplace $neibourg_list $n $n] - set neibourg_data [lreplace $neibourg_data $n $n] - set text_comment "$d_who disconnected $d_from" - } else { set text_comment "error $d_who not a neibourg" } - } - } -} - -proc xgui_node_hide { canvas } { - set canvas_name [string trim $canvas_name "/"] - set canvas_name [split $canvas_name "/"] - set canvas_name [lindex $canvas_name end] - destroy .$canvas_name -} - -proc xgui_node_neibourg { w_from } { - global neibourg_list - global neibourg_data - global xgui_me - foreach name $neibourg_list { - send2nodes / $w_from "# $xgui_me connected to $name" - } -} - -proc xgui_node_clone { obj new_obj } { - data_clone $obj $new_obj -} - -proc xgui_node_load { file } { - data_load $file -} - -proc xgui_node_save { obj file } { - data_save $obj $file -} - -proc xgui_node_load_coord { file } { - data_load_send $file -} - -proc xgui_node_save_coord { obj file } { - data_save_param $obj coord $file -} - -proc xgui_node_debug { from var } { - global host_name - global host_port - global xgui_me - global neibourg_list - global neibourg_data - global xgui_gui - global xgui_cmd_out - global data_data - global text_comment - global pd_name - global pd_port - global pd_sok - global xgui_pd - global from_all - set text_comment "$var = [subst $var ]" -} - -proc xgui_node_help { w_from } { - send2nodes / $w_from "# method: connect who" - send2nodes / $w_from "# method: disconnect who" - send2nodes / $w_from "# method: neibourg" - send2nodes / $w_from "# method: ping" - send2nodes / $w_from "# method: add_canvas" - send2nodes / $w_from "# method: del_canvas" -} -################################################# -#methods for canvas - -proc canvas_size {canvas_name x y} { - .$canvas_name.$canvas_name configure -width $x - .$canvas_name.$canvas_name configure -height $y - wm geometry .$canvas_name - data_remember ~/$canvas_name//size "~/$canvas_name size $x $y" -} - -proc canvas_color {canvas_name color} { - .$canvas_name.$canvas_name configure -bg $color - data_remember ~/$canvas_name//color "~/$canvas_name color $color" - } - -################################################# -#methods for all objects - -proc obj_move {canvas gobj_name x y } { - global xgui_pd - catch {.$canvas.$canvas move $gobj_name $x $y - send2pd / pd/$canvas/$gobj_name "coord [.$canvas.$canvas coords $gobj_name]" - data_remember ~/$canvas/$gobj_name//coord "~/$canvas/$gobj_name coord [.$canvas.$canvas coords $gobj_name]" - } -} - -proc obj_color {canvas gobj_name new_color} { - .$canvas.$canvas itemconfigure $gobj_name -fill $new_color - data_remember ~/$canvas/$gobj_name//color "~/$canvas/$gobj_name color $new_color" -} - -proc obj_border {canvas gobj_name new_color} { - .$canvas.$canvas itemconfigure $gobj_name -outline $new_color - data_remember ~/$canvas/$gobj_name//border "~/$canvas/$gobj_name border $new_color" -} - -proc obj_raise {canvas gobj_name } { - .$canvas.$canvas raise $gobj_name - data_remember ~/$canvas/$gobj_name//raise "~/$canvas/$gobj_name raise" -} - -proc obj_coord {canvas gobj_name x1 y1 x2 y2 } { - catch { - .$canvas.$canvas coords $gobj_name $x1 $y1 $x2 $y2 - data_remember ~/$canvas/$gobj_name//coord "~/$canvas/$gobj_name coord $x1 $y1 $x2 $y2" - } -} - -proc obj_xy1 {canvas gobj_name x1 y1 } { - catch { - set old_coord [.$canvas.$canvas coords $gobj_name] - .$canvas.$canvas coords $gobj_name $x1 $y1 [lindex $old_coord 2] [lindex $old_coord 3] - data_remember ~/$canvas/$gobj_name//coord "~/$canvas/$gobj_name coord $x1 $y1 [lindex $old_coord 2] [lindex $old_coord 3]" - } -} - -proc obj_xy2 {canvas gobj_name x2 y2 } { - catch { - set old_coord [.$canvas.$canvas coords $gobj_name] - .$canvas.$canvas coords $gobj_name [lindex $old_coord 0] [lindex $old_coord 1] $x2 $y2 - data_remember ~/$canvas/$gobj_name//coord "~/$canvas/$gobj_name coord [lindex $old_coord 0] [lindex $old_coord 1] $x2 $y2" - } -} - -proc obj_width {canvas gobj_name new_width} { - .$canvas.$canvas itemconfigure $gobj_name -width $new_width - data_remember ~/$canvas/$gobj_name//width "~/$canvas/$gobj_name width $new_width" -} - -proc obj_near {canvas gobj_name x y} { - # to be done... -} - -proc obj_del {canvas obj_name} { - .$canvas.$canvas delete $obj_name - send2nodes /$canvas */$canvas "# deleted $obj_name" - data_forget ~/$canvas/$obj_name -} - -################################################# -#methods for seg - -proc seg_add {canvas gobj_name x1 y1 x2 y2 } { - .$canvas.$canvas delete $gobj_name - data_forget ~/$canvas/$gobj_name - .$canvas.$canvas create line $x1 $y1 $x2 $y2 -width 3 -tags $gobj_name -capstyle round - # send2nodes /$canvas */$canvas "added $gobj_name" - data_remember ~/$canvas/$gobj_name/ "~/$canvas/$gobj_name add_seg" -} - -proc seg_caps {canvas gobj_name new_cap} { - .$canvas.$canvas itemconfigure $gobj_name -capstyle $new_cap - data_remember ~/$canvas/$gobj_name//caps "~/$canvas/$gobj_name caps $new_cap" -} - -################################################# -#methods for text - -proc text_add {canvas gobj_name x1 y1 text } { - .$canvas.$canvas delete $gobj_name - data_forget ~/$canvas/$gobj_name - .$canvas.$canvas create text $x1 $y1 -text $text -tags $gobj_name -anchor sw - # send2nodes /$canvas */$canvas "added $gobj_name" - data_remember ~/$canvas/$gobj_name/ "~/$canvas/$gobj_name add_text" -} - -proc text_value {canvas gobj_name value} { - .$canvas.$canvas itemconfigure $gobj_name -text $value - data_remember ~/$canvas/$gobj_name//text "~/$canvas/$gobj_name text $value" -} - -proc text_anchor {canvas gobj_name value} { - .$canvas.$canvas itemconfigure $gobj_name -anchor $value - data_remember ~/$canvas/$gobj_name//anchor "~/$canvas/$gobj_name anchor $value" -} - -proc text_justify {canvas gobj_name value} { - .$canvas.$canvas itemconfigure $gobj_name -justify $value - data_remember ~/$canvas/$gobj_name//justify "~/$canvas/$gobj_name justify $value" -} - -proc text_pos {canvas gobj_name x y} { - .$canvas.$canvas coords $gobj_name $x $y - data_remember ~/$canvas/$gobj_name//pos "~/$canvas/$gobj_name pos $x $y" -} - -################################################# -#methods for rect - -proc rect_add {canvas gobj_name x1 y1 x2 y2 } { - .$canvas.$canvas delete $gobj_name - data_forget ~/$canvas/$gobj_name - .$canvas.$canvas create rectangle $x1 $y1 $x2 $y2 -width 2 -tags $gobj_name - # send2nodes /$canvas */$canvas "# added $gobj_name" - data_remember ~/$canvas/$gobj_name/ "~/$canvas/$gobj_name add_rect" -} - -################################################# -#methods for arc - -proc arc_add {canvas gobj_name x1 y1 x2 y2 start width} { - .$canvas.$canvas delete $gobj_name - data_forget ~/$canvas/$gobj_name - .$canvas.$canvas create arc $x1 $y1 $x2 $y2 -start $start -extent $width -width 2 -tags $gobj_name - # send2nodes /$canvas */$canvas "# added $gobj_name " - data_remember ~/$canvas/$gobj_name/ "~/$canvas/$gobj_name add_arc" -} - -proc arc_start {canvas gobj_name new_start} { - .$canvas.$canvas itemconfigure $gobj_name -start $new_start - data_remember ~/$canvas/$gobj_name//start "~/$canvas/$gobj_name start $new_start"} - -proc arc_width {canvas gobj_name new_width} { - .$canvas.$canvas itemconfigure $gobj_name -extent $new_width - data_remember ~/$canvas/$gobj_name//angle "~/$canvas/$gobj_name angle $new_width"} - -proc arc_style {canvas gobj_name new_style} { - .$canvas.$canvas itemconfigure $gobj_name -style $new_style - data_remember ~/$canvas/$gobj_name//style "~/$canvas/$gobj_name style $new_style "} - -################################################ -# Set up event bindings for all canvas: - -proc itemStartDrag {c x y event} { - global xgui_pd - global lastX lastY - global my_selected - set lastX [$c canvasx $x] - set lastY [$c canvasy $y] - set my_selected [lindex [$c gettags current] 0] - set c [lindex [split $c "."] 1] - send2pd / pd/$c/$my_selected "$event $x $y" -} - -proc itemDrag {c x y event} { - global xgui_pd - global lastX lastY - global my_selected - set x [$c canvasx $x] - set y [$c canvasy $y] - set c [lindex [split $c "."] 1] - send2pd / pd/$c/$my_selected "$event [expr $x-$lastX] [expr $y-$lastY]" - set lastX $x - set lastY $y -} - -proc itemEnter {c} { - global xgui_pd - set my_item [lindex [$c gettags current] 0] - set c [lindex [split $c "."] 1] - send2pd / pd/$c/$my_item enter -} - -proc itemLeave {c} { - global xgui_pd - set my_item [lindex [$c gettags current] 0] - set c [lindex [split $c "."] 1] - send2pd / pd/$c/$my_item leave -} - -proc itemKeyPress {c ascii num} { - global xgui_pd - set my_item [lindex [$c gettags current] 0] - set c [lindex [split $c "."] 1] - send2pd / pd/$c/$my_item "keypress $ascii $num" - send2pd / pd/$c "keypress $ascii $num" -} - -##################################################################################### -# Here the procedures that keep a memory about all objectz. - -proc data_remember {obj_sel m} { - global data_data - set line_to_destroy 0 - foreach line $data_data { - if {[string match "$obj_sel/*" $line] == 1} { - set line_to_destroy $line - } - } - if { $line_to_destroy !=0 } { - set n [lsearch $data_data $line_to_destroy ] - set data_data [lreplace $data_data $n $n "$obj_sel/ $m" ] - } else { - lappend data_data "$obj_sel/ $m" - } -} - -proc data_forget { obj } { - global data_data - while { [lsearch $data_data $obj/* ] != -1} { - set n [lsearch $data_data $obj/* ] - set data_data [lreplace $data_data $n $n] - } -} - -proc data_clone { from_obj to_new_obj } { - global data_data - foreach line $data_data { - if {[string match "$from_obj/*" $line] == 1} { - set new_line [join [lreplace [split $line] 0 0 ] ] - regsub -all -- $from_obj $new_line $to_new_obj newest_line - do_this "~/ $newest_line" 0 - } - } -} - -proc data_save { from_obj file } { - global data_data - set file_chn [open $file w] - foreach line $data_data { - if {[string match "$from_obj/*" $line] == 1} { - set new_line [join [lreplace [split $line] 0 0 ] ] - puts $file_chn "$new_line" - } - } - close $file_chn -} - -proc data_save_param { from_obj selector file } { - global data_data - set file_chn [open $file w] - foreach line $data_data { - if {[string match "$from_obj/*//$selector*" $line] == 1} { - set new_line [join [lreplace [split $line] 0 0 ] ] - puts $file_chn "$new_line" - } - } - close $file_chn -} - -proc data_load { file } { - global data_data - set file_chn [open $file r] - while {[eof $file_chn]==0} { - set line [gets $file_chn] - do_this "~/ $line" 0 - } - close $file_chn -} - -proc data_load_send { file } { - global data_data - set file_chn [open $file r] - while {[eof $file_chn]==0} { - set line [gets $file_chn] - set line2s [split $line] - set line2s [join [linsert $line2s 1 update]] -# regsub -all -- ~/ $line2s */ new_line -# do_this "~/ $line" 0 - send2pd / $line2s "" - } - close $file_chn -} - - -################################################################################################ -#anything to send somewhere ??? -proc send2nodes { m_from m_to ms2send } { - global xgui_gui - global xgui_cmd_out - global text2out - global xgui_me - global neibourg_list - global neibourg_data - - global text_comment - - set m2send "$xgui_me$m_from $m_to $ms2send" - set m_to [string trim $m_to "/"] - set m_to_l [split $m_to "/"] - set m_to_node [lindex $m_to_l 0] - - if { $xgui_gui == 1 } { - set text2out $m2send - } - if { $xgui_cmd_out == 1 } { - puts $m2send - } - - switch [lindex [split $m_to "/"] 0 ] { - "*" { - foreach n $neibourg_list { - regsub -all -- {\*} $m_to $n m2 - send2nodes $m_from $m2 $ms2send - } - } - "." { - foreach n $neibourg_data { - catch {puts $n $ms2send;flush $n} - } - } - default { - set n [lsearch $neibourg_list $m_to_node] - if { $n != -1 } { - # if catch = error then we have to remove the link. - catch { - puts [lrange $neibourg_data $n $n] "$m2send;" - flush [lrange $neibourg_data $n $n] - } - } else { - set $text_comment "didn't find any coresponding neigbourg" - } - } - } -} - -proc send2pd { m_from m_to ms2send } { - global xgui_gui - global xgui_cmd_out - global text2out - global xgui_me - global pd_sok - - set m2send "$xgui_me$m_from $m_to $ms2send;" - - if { $xgui_gui == 1 } { - set text2out $m2send - } - if { $xgui_cmd_out == 1 } { - puts $m2send - } - - # catch { - puts $pd_sok $m2send ; flush $pd_sok - # } -} - - -##################################################################################### -# the 3 main proc that do every thing ########################################## -##################################################################################### - -proc read_and_do { channel } { - gets $channel message - global text_from_outside - set text_from_outside "$channel \"$message" - do_this $message $channel -} - -proc do_this { m channel} { - global xgui_me - set m [string trim $m ";"] - if {[llength $m] >= 3} { - set m_to [string trim [lindex $m 1] "/"] - set m_to_l [split $m_to "/"] - set m_to_node [lindex $m_to_l 0] - set m_from [string trim [lindex $m 0] "/"] - set m_cmd [lrange $m 2 end] - #you have to know who you are : - if { "$m_to_node" == "$xgui_me" } { set m_to_node "~" } - switch $m_to_node { - "~" { catch {do_this_here $m_from $m_to $m_cmd $channel} } - "*" { - # you too are a part of the whole !!! - catch { do_this_here $m_from $m_to $m_cmd $channel } - send2nodes / $m_to "[lrange $m 2 end]" - } - "pd" {send2pd / $m_to "[lrange $m 2 end]"} - default {send2nodes / $m_to "[lrange $m 2 end]"} - } - } else { - if {$m == "help"} { - # send2nodes / $m_to "# syntax : sender receiver method args..." - } else { - xgui_node_error "not enought args" $m - } - } -} - -proc do_this_here { m_from m_to m_cmd channel} { - global xgui_me - global xgui_pd - set m_to [split $m_to "/"] - set m_from_l [split $m_from "/"] - set m_from_node [lindex $m_from_l 0] - set m_selector [lindex $m_cmd 0] - set m_argc [llength $m_cmd]-1 - if {$m_argc >= 1} { set m_argv [lrange $m_cmd 1 end] - set a1 [lindex $m_argv 0] - if {$m_argc >=2 } { set a2 [lindex $m_argv 1] - if {$m_argc >=3 } { set a3 [lindex $m_argv 2] - if {$m_argc >=4 } { set a4 [lindex $m_argv 3] - if {$m_argc >=5 } { set a5 [lindex $m_argv 4] - if {$m_argc >=6 } { set a6 [lindex $m_argv 5] - if {$m_argc >=7 } { set a7 [lindex $m_argv 6] - if {$m_argc >=8 } { set a8 [lindex $m_argv 7] - if {$m_argc >=9 } { set a9 [lindex $m_argv 8] - if {$m_argc >=10 } { set a10 [lindex $m_argv 9] - } } } } } } } } } - } else {set m_argv "{}" } - - switch [llength $m_to] { - 1 { # this is for the node ########################## - switch $m_selector { - "add_canvas" { xgui_node_add_canvas $a1} - "del_canvas" { xgui_node_del_canvas $a1} - "show" { xgui_node_clone $a1 $a1 } - "hide" { xgui_node_hide } - "connect" { if {$a1 == "pd"} { xgui_node_connect pd $a2 $channel - } else { xgui_node_connect $a1 $m_from $channel} } - "connect_on" { xgui_node_connect $a1 $m_from $channel - send2nodes / $a1/ "connect me" - send2nodes / $a1/ "clone ~/$a2 $xgui_me/$a2" - send2nodes / $a1/ "connect_on_pd $xgui_me" } - "connect_on_pd" { send2nodes / $a1/ "connect pd $xgui_pd" } - "disconnect" { xgui_node_disconnect $a1 $m_from $channel} - - "neibourg" { xgui_node_neibourg $m_from } - "clone" { xgui_node_clone $a1 $a2 } - "save" { xgui_node_save $a1 $a2 } - "save_coord" { xgui_node_save_coord $a1 $a2 } - "load_coord" { xgui_node_load_coord $a1 } - "load" { xgui_node_load $a1 } - "help" { xgui_node_help $m_from } - "debug" { xgui_node_debug $m_from $$a1 } - "ping" { send2nodes / $m_from "# $m_from pinged" } - "#" { global text_comment ; set text_comment $m_argv} - default { xgui_node_error "node method $m_selector does not exist" $m_cmd } - } - } - 2 { # this is for the canvas $m_c ########################## - set m_c [lindex $m_to 1] - switch $m_selector { - "add_canvas" { catch {xgui_node_add_canvas $m_c }} - "del_canvas" { xgui_node_del_canvas $m_c } - "size" {canvas_size $m_c $a1 $a2} - "color" {canvas_color $m_c $a1} - "del" {obj_del $m_c $a1} - "kill" {obj_del $m_c $a1} - "add_seg" {seg_add $m_c $a1 10 10 20 20 } - "add_text" {text_add $m_c $a1 10 10 "text" } - "add_rect" {rect_add $m_c $a1 10 10 20 20 } - "add_arc" {arc_add $m_c $a1 10 10 20 20 0 90 } - default {xgui_node_error "canvas method $m_selector does not exist" $m_cmd } - } - } - 3 { # this is for the object $m_o witch is into $m_c ######## - set m_c [lindex $m_to 1] - set m_o [lindex $m_to 2] - switch $m_selector { - "add_seg" {seg_add $m_c $m_o 10 10 20 20 } - "add_text" {text_add $m_c $m_o 10 10 "text" } - "add_rect" {rect_add $m_c $m_o 10 10 20 20 } - "add_arc" {arc_add $m_c $m_o 10 10 20 20 0 90 } - "del" {obj_del $m_c $m_o} - "kill" {obj_del $m_c $m_o} - "show" {obj_show $m_c $m_o } - "hide" {obj_hide $m_c $m_o } - "move" {obj_move $m_c $m_o $a1 $a2} - "scale" {obj_scale $m_c $m_o $a1 $a2 $a3 $a4 } - "raise" {obj_raise $m_c $m_o } - "near" {obj_near $m_c $m_o $a1 $a2 } - "color" {obj_color $m_c $m_o $a1} - "width" {obj_width $m_c $m_o $a1} - "coord" {obj_coord $m_c $m_o $a1 $a2 $a3 $a4 } - "xy1" {obj_xy1 $m_c $m_o $a1 $a2 } - "xy2" {obj_xy2 $m_c $m_o $a1 $a2 } - "border" {obj_border $m_c $m_o $a1} - - "caps" {seg_caps $m_c $m_o $a1} - - "text" {text_value $m_c $m_o $a1} - "pos" {text_pos $m_c $m_o $a1 $a2 } - "anchor" {text_anchor $m_c $m_o $a1} - "justify" {text_justify $m_c $m_o $a1} - - "start" {arc_start $m_c $m_o $a1 } - "angle" { arc_width $m_c $m_o $a1 } - "style" {arc_style $m_c $m_o $a1} - - default {xgui_node_error "obj_method $m_selector does not exist" $m_argv } - } - } - } -} - diff --git a/extensions/xgui/bin/xgui.bat b/extensions/xgui/bin/xgui.bat deleted file mode 100644 index 4133fe0e025909f15be93ef840ac418c33ca30ba..0000000000000000000000000000000000000000 --- a/extensions/xgui/bin/xgui.bat +++ /dev/null @@ -1 +0,0 @@ -..\..\bin\wish83.exe .\xgui.sh --help diff --git a/extensions/xgui/bin/xgui.sh b/extensions/xgui/bin/xgui.sh deleted file mode 100755 index da0bfcd64ed947866739fcf469e13d2e86e083ab..0000000000000000000000000000000000000000 --- a/extensions/xgui/bin/xgui.sh +++ /dev/null @@ -1,908 +0,0 @@ -#!/bin/sh -# the next line restarts using wish \ -exec wish "$0" "$@" - - -################################################# -puts "pd(x) - Step 2 : xgui" -puts "xgui b0.10 dh200209xx" -puts "Damien HENRY (c)" - -################################################# -# define the globals variables needed for a node -global xgui_gui -global xgui_cmd_out -global data_data - -global from_all - -global host_name -global host_port -global xgui_me -set host_name localhost -set host_port 4877 -set xgui_me "$host_name:$host_port" - -global pd_name -global pd_port -global pd_sok -global xgui_pd -set pd_name xxx -set pd_port 000 -set xgui_pd "$pd_name:$pd_port" -set pd_sok -1 - -global neibourg_list -global neibourg_data -set neibourg_list [list] -set neibourg_data [list] -set data_data [list] -set xgui_gui 1 -set xgui_cmd_out 0 - -global time4flush -set time4flush 20 - -################################################# -# Read what are the argument -if { [lsearch argv --help] != -1 } { puts "xgui localhost 4877 -nogui -no_cmd_out" } - -################################################# -# puts up my windows -proc xgui_node_visu {onoff} { - set xgui_gui $onoff - if { $xgui_gui } { - global text2out - global text_from_outside - global text_comment - wm title . "Xgui b0.09" - frame .haut - frame .config1 - frame .config2 - frame .bas - entry .haut.e_in -width 50 -textvariable text2in - entry .haut.e_fo -width 50 -textvariable text_from_outside -state disabled - entry .haut.e_rem -width 50 -textvariable text_comment -state disabled - entry .haut.t_out -width 50 -textvariable text2out -state disabled - - entry .config1.host -width 10 -textvariable host_name - entry .config1.port -width 5 -textvariable host_port - - entry .config2.host -width 10 -textvariable pd_name - entry .config2.port -width 5 -textvariable pd_port - - button .config1.do -text "change" -command { - global xgui_me - global host_name - global host_port - global from_all - set xgui_me "$host_name:$host_port" - catch {close $from_all} - set from_all [socket -server seg_receive $host_port] - } - - button .config2.do -text "change" -command { - global xgui_pd - global pd_name - global pd_port - set xgui_pd "$pd_name:$pd_port" - catch {close $pd_sok} - catch {set pd_sok [socket $pd_name $pd_port]} - } - - button .bas.b_quit -text "quit" -width 7 -command { - send2nodes / */ "# $xgui_me disconnected" - do_this "$xgui_me/ ~/ disconnect *" xgui - exit - } - button .bas.b_do -text do -width 7 -command { do_this $text2in xgui} - button .bas.b_clear -text clear -width 7 -command { set text2in "" } - - pack .haut.e_in .haut.e_fo .haut.t_out .haut.e_rem - pack .config1.host .config1.port .config1.do -side left - pack .config2.host .config2.port .config2.do -side left - pack .bas.b_do .bas.b_clear .bas.b_quit -side left -pady 2 -padx 5 - pack .haut .config1 .config2 .bas -pady 2 - wm resizable . false false - } -} - -################################################# -# definition de la partie serveur -#catch { - set from_all [socket -server seg_receive $host_port] -#} - -proc seg_receive {channel addr port} { - global xgui_me - fileevent $channel readable "readLine $channel $addr $port" - do_this "/ */ # $xgui_me connected from $channel $addr $port" 0 -} - -proc readLine {channel addr port} { - global neibourg_list - global neibourg_data - global xgui_me - global text_from_outside - if {[gets $channel line]<0} { - fileevent $channel readable {} - after idle "close $channel" - set n [lsearch $neibourg_data $channel] - if {$n != -1 } { - set neibourg_list [lreplace $neibourg_list $n $n] - set neibourg_data [lreplace $neibourg_data $n $n] - } - send2nodes / */ "# $xgui_me disconnected from $addr:$port" - } else { - set text_from_outside "$addr:$port $line" - # catch { - do_this $line $channel - # } - } -} - - -################################################# -# tell that every thing OK -set text_comment "$xgui_me created" - -# end of the initialisations -######################################################################################## - -################################################# -#methods for xgui_node - -proc xgui_node_name { name port } { - global xgui_me - global host_name - global host_port - global from_all - set host_name $name - set host_port $port - set xgui_me "$host_name:$host_port" - catch {close $from_all} - set from_all [socket -server seg_receive $host_port] -} - -proc xgui_node_gui { on_off } { - if ( on_off == on ) { - } -} - -proc xgui_node_add_canvas {canvas_name} { - set canvas_name [string trim $canvas_name "/"] - set canvas_name [split $canvas_name "/"] - set canvas_name [lindex $canvas_name end] - destroy .$canvas_name - data_forget ~/$canvas_name - toplevel .$canvas_name - wm title .$canvas_name $canvas_name - wm resizable .$canvas_name false false - canvas .$canvas_name.$canvas_name - pack .$canvas_name.$canvas_name - data_remember ~/$canvas_name/ "~/$canvas_name add_canvas" - send2nodes / */ "# added ~/$canvas_name" - - set c .$canvas_name.$canvas_name - $c bind all <Any-Enter> "itemEnter $c" - $c bind all <Any-Leave> "itemLeave $c" - bind $c <1> "itemStartDrag $c %x %y click" - bind $c <2> "itemStartDrag $c %x %y m-click" - bind $c <3> "itemStartDrag $c %x %y r_click" - bind $c <Shift-1> "itemStartDrag $c %x %y s-click" - bind $c <Shift-2> "itemStartDrag $c %x %y s-m-click" - bind $c <Shift-3> "itemStartDrag $c %x %y s-r-click" - bind $c <Control-1> "itemStartDrag $c %x %y c-click" - bind $c <Control-2> "itemStartDrag $c %x %y c-m-click" - bind $c <Control-3> "itemStartDrag $c %x %y c-r-click" - bind $c <B1-Motion> "itemDrag $c %x %y drag" - bind $c <B2-Motion> "itemDrag $c %x %y m-drag" - bind $c <B3-Motion> "itemDrag $c %x %y r-drag" - bind $c <Shift-B1-Motion> "itemDrag $c %x %y s-drag" - bind $c <Shift-B2-Motion> "itemDrag $c %x %y s-m-drag" - bind $c <Shift-B3-Motion> "itemDrag $c %x %y s-r-drag" - bind $c <Key> "itemKeyPress $c %A %k" -} - -proc xgui_node_del_canvas {canvas_name } { - global text_comment - set canvas_name [string trim $canvas_name "/"] - set canvas_name [split $canvas_name "/"] - set canvas_name [lindex $canvas_name end] - destroy .$canvas_name - data_forget ~/$canvas_name - set text_comment "deleted $canvas_name" -} - -proc xgui_node_error {from error} { - global text_comment - set text_comment "# error : unable to do <$error> ($from)" -} - -proc xgui_node_connect { c_who c_from channel } { - global neibourg_list - global neibourg_data - global xgui_me - global text_comment - set c_from [string trim $c_from "/"] - switch $c_who { - "me" { - set n [lsearch $neibourg_data $channel] - if { $n == -1 } { - lappend neibourg_list $c_from - lappend neibourg_data $channel - set text_comment "$xgui_me connect himself to $c_from onto channel $channel" -# fconfigure $channel -blocking false -bufering line - } else { - set text_comment "$xgui_me already connected to $c_from onto channel $channel" - } - } - "pd" { - global pd_name - global pd_port - global pd_sok - global xgui_pd - set c_host [split $c_from ":"] - set pd_name [lindex $c_host 0] - set pd_port [lindex $c_host 1] - set xgui_pd "$pd_name:$pd_port" -# test perf a faire.... - set pd_sok [socket -async $pd_name $pd_port] -# set pd_sok [socket $pd_name $pd_port] - if { $pd_sok != -1 } { - set text_comment " $xgui_me connected to pd" -# fconfigure $pd_sok -blocking false -bufering line - } else { set text_comment "connection refused with pd" } - } - default { - set c_host [split $c_who ":"] - set c_name [lindex $c_host 0] - set c_port [lindex $c_host 1] - set sok -1 - catch {set sok [socket -async $c_name $c_port]} - if { $sok != -1 } { - lappend neibourg_list $c_who - lappend neibourg_data $sok - fileevent $sok readable [list read_and_do $sok] -# fconfigure $sok -blocking false -bufering line - set text_comment "$xgui_me connected $c_who" - } else { set text_comment "connection refused with $c_who" } - } - } -} - -proc xgui_node_disconnect { d_who d_from channel} { - global neibourg_list - global neibourg_data - global text_comment - switch $d_who { - "me" { - set d_who [string trim $d_from "/"] - set n [lsearch $neibourg_list $d_who] - if {$n != -1 } { - catch { close [lrange $neibourg_data $n $n] } - set neibourg_list [lreplace $neibourg_list $n $n] - set neibourg_data [lreplace $neibourg_data $n $n] - set text_comment "$d_who disconnected himself" - } else { set text_comment "error $d_from not a neibourg" } - } - - "pd" { - global pd_name - global pd_port - global pd_sok - global xgui_pd - set pd_name none - set pd_port none - set xgui_pd "$pd_name:$pd_port" - set pd_sok -1 - catch {close pd_sok} - } - "*" { - foreach sok $neibourg_data { close $sok } - set neibourg_list [list] - set neibourg_data [list] - set text_comment "$d_from disconnect *" - } - default { - set n [lsearch $neibourg_list $d_who] - if {$n != -1 } { - catch { close [lrange $neibourg_data $n $n] } - set neibourg_list [lreplace $neibourg_list $n $n] - set neibourg_data [lreplace $neibourg_data $n $n] - set text_comment "$d_who disconnected $d_from" - } else { set text_comment "error $d_who not a neibourg" } - } - } -} - -proc xgui_node_hide { canvas } { - set canvas_name [string trim $canvas_name "/"] - set canvas_name [split $canvas_name "/"] - set canvas_name [lindex $canvas_name end] - destroy .$canvas_name -} - -proc xgui_node_neibourg { w_from } { - global neibourg_list - global neibourg_data - global xgui_me - foreach name $neibourg_list { - send2nodes / $w_from "# $xgui_me connected to $name" - } -} - -proc xgui_node_clone { obj new_obj } { - data_clone $obj $new_obj -} - -proc xgui_node_load { file } { - data_load $file -} - -proc xgui_node_save { obj file } { - data_save $obj $file -} - -proc xgui_node_load_coord { file } { - data_load_send $file -} - -proc xgui_node_save_coord { obj file } { - data_save_param $obj coord $file -} - -proc xgui_node_debug { from var } { - global host_name - global host_port - global xgui_me - global neibourg_list - global neibourg_data - global xgui_gui - global xgui_cmd_out - global data_data - global text_comment - global pd_name - global pd_port - global pd_sok - global xgui_pd - global from_all - set text_comment "$var = [subst $var ]" -} - -proc xgui_node_help { w_from } { - send2nodes / $w_from "# method: connect who" - send2nodes / $w_from "# method: disconnect who" - send2nodes / $w_from "# method: neibourg" - send2nodes / $w_from "# method: ping" - send2nodes / $w_from "# method: add_canvas" - send2nodes / $w_from "# method: del_canvas" -} -################################################# -#methods for canvas - -proc canvas_size {canvas_name x y} { - .$canvas_name.$canvas_name configure -width $x - .$canvas_name.$canvas_name configure -height $y - wm geometry .$canvas_name - data_remember ~/$canvas_name//size "~/$canvas_name size $x $y" -} - -proc canvas_color {canvas_name color} { - .$canvas_name.$canvas_name configure -bg $color - data_remember ~/$canvas_name//color "~/$canvas_name color $color" - } - -################################################# -#methods for all objects - -proc obj_move {canvas gobj_name x y } { - global xgui_pd - catch {.$canvas.$canvas move $gobj_name $x $y - send2pd / pd/$canvas/$gobj_name "coord [.$canvas.$canvas coords $gobj_name]" - data_remember ~/$canvas/$gobj_name//coord "~/$canvas/$gobj_name coord [.$canvas.$canvas coords $gobj_name]" - } -} - -proc obj_color {canvas gobj_name new_color} { - .$canvas.$canvas itemconfigure $gobj_name -fill $new_color - data_remember ~/$canvas/$gobj_name//color "~/$canvas/$gobj_name color $new_color" -} - -proc obj_border {canvas gobj_name new_color} { - .$canvas.$canvas itemconfigure $gobj_name -outline $new_color - data_remember ~/$canvas/$gobj_name//border "~/$canvas/$gobj_name border $new_color" -} - -proc obj_raise {canvas gobj_name } { - .$canvas.$canvas raise $gobj_name - data_remember ~/$canvas/$gobj_name//raise "~/$canvas/$gobj_name raise" -} - -proc obj_coord {canvas gobj_name x1 y1 x2 y2 } { - catch { - .$canvas.$canvas coords $gobj_name $x1 $y1 $x2 $y2 - data_remember ~/$canvas/$gobj_name//coord "~/$canvas/$gobj_name coord $x1 $y1 $x2 $y2" - } -} - -proc obj_xy1 {canvas gobj_name x1 y1 } { - catch { - set old_coord [.$canvas.$canvas coords $gobj_name] - .$canvas.$canvas coords $gobj_name $x1 $y1 [lindex $old_coord 2] [lindex $old_coord 3] - data_remember ~/$canvas/$gobj_name//coord "~/$canvas/$gobj_name coord $x1 $y1 [lindex $old_coord 2] [lindex $old_coord 3]" - } -} - -proc obj_xy2 {canvas gobj_name x2 y2 } { - catch { - set old_coord [.$canvas.$canvas coords $gobj_name] - .$canvas.$canvas coords $gobj_name [lindex $old_coord 0] [lindex $old_coord 1] $x2 $y2 - data_remember ~/$canvas/$gobj_name//coord "~/$canvas/$gobj_name coord [lindex $old_coord 0] [lindex $old_coord 1] $x2 $y2" - } -} - -proc obj_width {canvas gobj_name new_width} { - .$canvas.$canvas itemconfigure $gobj_name -width $new_width - data_remember ~/$canvas/$gobj_name//width "~/$canvas/$gobj_name width $new_width" -} - -proc obj_near {canvas gobj_name x y} { - # to be done... -} - -proc obj_del {canvas obj_name} { - .$canvas.$canvas delete $obj_name - send2nodes /$canvas */$canvas "# deleted $obj_name" - data_forget ~/$canvas/$obj_name -} - -################################################# -#methods for seg - -proc seg_add {canvas gobj_name x1 y1 x2 y2 } { - .$canvas.$canvas delete $gobj_name - data_forget ~/$canvas/$gobj_name - .$canvas.$canvas create line $x1 $y1 $x2 $y2 -width 3 -tags $gobj_name -capstyle round - # send2nodes /$canvas */$canvas "added $gobj_name" - data_remember ~/$canvas/$gobj_name/ "~/$canvas/$gobj_name add_seg" -} - -proc seg_caps {canvas gobj_name new_cap} { - .$canvas.$canvas itemconfigure $gobj_name -capstyle $new_cap - data_remember ~/$canvas/$gobj_name//caps "~/$canvas/$gobj_name caps $new_cap" -} - -################################################# -#methods for text - -proc text_add {canvas gobj_name x1 y1 text } { - .$canvas.$canvas delete $gobj_name - data_forget ~/$canvas/$gobj_name - .$canvas.$canvas create text $x1 $y1 -text $text -tags $gobj_name -anchor sw - # send2nodes /$canvas */$canvas "added $gobj_name" - data_remember ~/$canvas/$gobj_name/ "~/$canvas/$gobj_name add_text" -} - -proc text_value {canvas gobj_name value} { - .$canvas.$canvas itemconfigure $gobj_name -text $value - data_remember ~/$canvas/$gobj_name//text "~/$canvas/$gobj_name text $value" -} - -proc text_anchor {canvas gobj_name value} { - .$canvas.$canvas itemconfigure $gobj_name -anchor $value - data_remember ~/$canvas/$gobj_name//anchor "~/$canvas/$gobj_name anchor $value" -} - -proc text_justify {canvas gobj_name value} { - .$canvas.$canvas itemconfigure $gobj_name -justify $value - data_remember ~/$canvas/$gobj_name//justify "~/$canvas/$gobj_name justify $value" -} - -proc text_pos {canvas gobj_name x y} { - .$canvas.$canvas coords $gobj_name $x $y - data_remember ~/$canvas/$gobj_name//pos "~/$canvas/$gobj_name pos $x $y" -} - -################################################# -#methods for rect - -proc rect_add {canvas gobj_name x1 y1 x2 y2 } { - .$canvas.$canvas delete $gobj_name - data_forget ~/$canvas/$gobj_name - .$canvas.$canvas create rectangle $x1 $y1 $x2 $y2 -width 2 -tags $gobj_name - # send2nodes /$canvas */$canvas "# added $gobj_name" - data_remember ~/$canvas/$gobj_name/ "~/$canvas/$gobj_name add_rect" -} - -################################################# -#methods for arc - -proc arc_add {canvas gobj_name x1 y1 x2 y2 start width} { - .$canvas.$canvas delete $gobj_name - data_forget ~/$canvas/$gobj_name - .$canvas.$canvas create arc $x1 $y1 $x2 $y2 -start $start -extent $width -width 2 -tags $gobj_name - # send2nodes /$canvas */$canvas "# added $gobj_name " - data_remember ~/$canvas/$gobj_name/ "~/$canvas/$gobj_name add_arc" -} - -proc arc_start {canvas gobj_name new_start} { - .$canvas.$canvas itemconfigure $gobj_name -start $new_start - data_remember ~/$canvas/$gobj_name//start "~/$canvas/$gobj_name start $new_start"} - -proc arc_width {canvas gobj_name new_width} { - .$canvas.$canvas itemconfigure $gobj_name -extent $new_width - data_remember ~/$canvas/$gobj_name//angle "~/$canvas/$gobj_name angle $new_width"} - -proc arc_style {canvas gobj_name new_style} { - .$canvas.$canvas itemconfigure $gobj_name -style $new_style - data_remember ~/$canvas/$gobj_name//style "~/$canvas/$gobj_name style $new_style "} - -################################################ -# Set up event bindings for all canvas: - -proc itemStartDrag {c x y event} { - global xgui_pd - global lastX lastY - global my_selected - set lastX [$c canvasx $x] - set lastY [$c canvasy $y] - set my_selected [lindex [$c gettags current] 0] - set c [lindex [split $c "."] 1] - send2pd / pd/$c/$my_selected "$event $x $y" -} - -proc itemDrag {c x y event} { - global xgui_pd - global lastX lastY - global my_selected - set x [$c canvasx $x] - set y [$c canvasy $y] - set c [lindex [split $c "."] 1] - send2pd / pd/$c/$my_selected "$event [expr $x-$lastX] [expr $y-$lastY]" - set lastX $x - set lastY $y -} - -proc itemEnter {c} { - global xgui_pd - set my_item [lindex [$c gettags current] 0] - set c [lindex [split $c "."] 1] - send2pd / pd/$c/$my_item enter -} - -proc itemLeave {c} { - global xgui_pd - set my_item [lindex [$c gettags current] 0] - set c [lindex [split $c "."] 1] - send2pd / pd/$c/$my_item leave -} - -proc itemKeyPress {c ascii num} { - global xgui_pd - set my_item [lindex [$c gettags current] 0] - set c [lindex [split $c "."] 1] - send2pd / pd/$c/$my_item "keypress $ascii $num" - send2pd / pd/$c "keypress $ascii $num" -} - -##################################################################################### -# Here the procedures that keep a memory about all objectz. - -proc data_remember {obj_sel m} { - global data_data - set line_to_destroy 0 - foreach line $data_data { - if {[string match "$obj_sel/*" $line] == 1} { - set line_to_destroy $line - } - } - if { $line_to_destroy !=0 } { - set n [lsearch $data_data $line_to_destroy ] - set data_data [lreplace $data_data $n $n "$obj_sel/ $m" ] - } else { - lappend data_data "$obj_sel/ $m" - } -} - -proc data_forget { obj } { - global data_data - while { [lsearch $data_data $obj/* ] != -1} { - set n [lsearch $data_data $obj/* ] - set data_data [lreplace $data_data $n $n] - } -} - -proc data_clone { from_obj to_new_obj } { - global data_data - foreach line $data_data { - if {[string match "$from_obj/*" $line] == 1} { - set new_line [join [lreplace [split $line] 0 0 ] ] - regsub -all -- $from_obj $new_line $to_new_obj newest_line - do_this "~/ $newest_line" 0 - } - } -} - -proc data_save { from_obj file } { - global data_data - set file_chn [open $file w] - foreach line $data_data { - if {[string match "$from_obj/*" $line] == 1} { - set new_line [join [lreplace [split $line] 0 0 ] ] - puts $file_chn "$new_line" - } - } - close $file_chn -} - -proc data_save_param { from_obj selector file } { - global data_data - set file_chn [open $file w] - foreach line $data_data { - if {[string match "$from_obj/*//$selector*" $line] == 1} { - set new_line [join [lreplace [split $line] 0 0 ] ] - puts $file_chn "$new_line" - } - } - close $file_chn -} - -proc data_load { file } { - global data_data - set file_chn [open $file r] - while {[eof $file_chn]==0} { - set line [gets $file_chn] - do_this "~/ $line" 0 - } - close $file_chn -} - -proc data_load_send { file } { - global data_data - set file_chn [open $file r] - while {[eof $file_chn]==0} { - set line [gets $file_chn] - set line2s [split $line] - set line2s [join [linsert $line2s 1 update]] -# regsub -all -- ~/ $line2s */ new_line -# do_this "~/ $line" 0 - send2pd / $line2s "" - } - close $file_chn -} - - -################################################################################################ -#anything to send somewhere ??? -proc send2nodes { m_from m_to ms2send } { - global xgui_gui - global xgui_cmd_out - global text2out - global xgui_me - global neibourg_list - global neibourg_data - - global text_comment - - global time4flush - - set m2send "$xgui_me$m_from $m_to $ms2send" - set m_to [string trim $m_to "/"] - set m_to_l [split $m_to "/"] - set m_to_node [lindex $m_to_l 0] - - if { $xgui_gui == 1 } { - set text2out $m2send - } - if { $xgui_cmd_out == 1 } { - puts $m2send - } - - switch [lindex [split $m_to "/"] 0 ] { - "*" { - foreach n $neibourg_list { - regsub -all -- {\*} $m_to $n m2 - send2nodes $m_from $m2 $ms2send - } - } - "." { - foreach n $neibourg_data { - catch { - puts $n $ms2send - #after cancel {flush $n} - #after $time4flush {flush $n} - flush $n - } - } - } - default { - set n [lsearch $neibourg_list $m_to_node] - if { $n != -1 } { - # if catch = error then we have to remove the link. - catch { - puts [lrange $neibourg_data $n $n] "$m2send;" - #after cancel {flush [lrange $neibourg_data $n $n]} - #after $time4flush {flush [lrange $neibourg_data $n $n]} - flush [lrange $neibourg_data $n $n] - } - } else { - set $text_comment "didn't find any coresponding neigbourg" - } - } - } -} - -proc send2pd { m_from m_to ms2send } { - global xgui_gui - global xgui_cmd_out - global text2out - global xgui_me - global pd_sok - - set m2send "$xgui_me$m_from $m_to $ms2send;" - - if { $xgui_gui == 1 } { - set text2out $m2send - } - if { $xgui_cmd_out == 1 } { - puts $m2send - } - - # catch { - puts $pd_sok $m2send - flush $pd_sok - # } -} - - -##################################################################################### -# the 3 main proc that do every thing ########################################## -##################################################################################### - -proc read_and_do { channel } { - gets $channel message - global text_from_outside - set text_from_outside "$channel \"$message" - do_this $message $channel -} - -proc do_this { m channel} { - global xgui_me - set m [string trim $m ";"] - if {[llength $m] >= 3} { - set m_to [string trim [lindex $m 1] "/"] - set m_to_l [split $m_to "/"] - set m_to_node [lindex $m_to_l 0] - set m_from [string trim [lindex $m 0] "/"] - set m_cmd [lrange $m 2 end] - #you have to know who you are : - if { "$m_to_node" == "$xgui_me" } { set m_to_node "~" } - switch $m_to_node { - "~" { catch {do_this_here $m_from $m_to $m_cmd $channel} } - "*" { - # you too are a part of the whole !!! - catch { do_this_here $m_from $m_to $m_cmd $channel } - send2nodes / $m_to "[lrange $m 2 end]" - } - "pd" {send2pd / $m_to "[lrange $m 2 end]"} - default {send2nodes / $m_to "[lrange $m 2 end]"} - } - } else { - if {$m == "help"} { - # send2nodes / $m_to "# syntax : sender receiver method args..." - } else { - xgui_node_error "not enought args" $m - } - } -} - -proc do_this_here { m_from m_to m_cmd channel} { - global xgui_me - global xgui_pd - set m_to [split $m_to "/"] - set m_from_l [split $m_from "/"] - set m_from_node [lindex $m_from_l 0] - set m_selector [lindex $m_cmd 0] - set m_argc [llength $m_cmd]-1 - if {$m_argc >= 1} { set m_argv [lrange $m_cmd 1 end] - set a1 [lindex $m_argv 0] - if {$m_argc >=2 } { set a2 [lindex $m_argv 1] - if {$m_argc >=3 } { set a3 [lindex $m_argv 2] - if {$m_argc >=4 } { set a4 [lindex $m_argv 3] - if {$m_argc >=5 } { set a5 [lindex $m_argv 4] - if {$m_argc >=6 } { set a6 [lindex $m_argv 5] - if {$m_argc >=7 } { set a7 [lindex $m_argv 6] - if {$m_argc >=8 } { set a8 [lindex $m_argv 7] - if {$m_argc >=9 } { set a9 [lindex $m_argv 8] - if {$m_argc >=10 } { set a10 [lindex $m_argv 9] - } } } } } } } } } - } else {set m_argv "{}" } - - switch [llength $m_to] { - 1 { # this is for the node ########################## - switch $m_selector { - "rename" { xgui_node_name $a1 $a2 } - - "add_canvas" { xgui_node_add_canvas $a1} - "del_canvas" { xgui_node_del_canvas $a1} - "show" { xgui_node_clone $a1 $a1 } - "hide" { xgui_node_hide } - "connect" { if {$a1 == "pd"} { xgui_node_connect pd $a2 $channel - } else { xgui_node_connect $a1 $m_from $channel} } - "connect_on" { xgui_node_connect $a1 $m_from $channel - send2nodes / $a1/ "connect me" - send2nodes / $a1/ "clone ~/$a2 $xgui_me/$a2" - send2nodes / $a1/ "connect_on_pd $xgui_me" } - "connect_on_pd" { send2nodes / $a1/ "connect pd $xgui_pd" } - "disconnect" { xgui_node_disconnect $a1 $m_from $channel} - - "neibourg" { xgui_node_neibourg $m_from } - "clone" { xgui_node_clone $a1 $a2 } - "save" { xgui_node_save $a1 $a2 } - "save_coord" { xgui_node_save_coord $a1 $a2 } - "load_coord" { xgui_node_load_coord $a1 } - "load" { xgui_node_load $a1 } - "help" { xgui_node_help $m_from } - "debug" { xgui_node_debug $m_from $$a1 } - "ping" { send2nodes / $m_from "# $m_from pinged" } - "#" { global text_comment ; set text_comment $m_argv} - default { xgui_node_error "node method $m_selector does not exist" $m_cmd } - } - } - 2 { # this is for the canvas $m_c ########################## - set m_c [lindex $m_to 1] - switch $m_selector { - "add_canvas" { catch {xgui_node_add_canvas $m_c }} - "del_canvas" { xgui_node_del_canvas $m_c } - "size" {canvas_size $m_c $a1 $a2} - "color" {canvas_color $m_c $a1} - "del" {obj_del $m_c $a1} - "kill" {obj_del $m_c $a1} - "add_seg" {seg_add $m_c $a1 10 10 20 20 } - "add_text" {text_add $m_c $a1 10 10 "text" } - "add_rect" {rect_add $m_c $a1 10 10 20 20 } - "add_arc" {arc_add $m_c $a1 10 10 20 20 0 90 } - default {xgui_node_error "canvas method $m_selector does not exist" $m_cmd } - } - } - 3 { # this is for the object $m_o witch is into $m_c ######## - set m_c [lindex $m_to 1] - set m_o [lindex $m_to 2] - switch $m_selector { - "add_seg" {seg_add $m_c $m_o 10 10 20 20 } - "add_text" {text_add $m_c $m_o 10 10 "text" } - "add_rect" {rect_add $m_c $m_o 10 10 20 20 } - "add_arc" {arc_add $m_c $m_o 10 10 20 20 0 90 } - "del" {obj_del $m_c $m_o} - "kill" {obj_del $m_c $m_o} - "show" {obj_show $m_c $m_o } - "hide" {obj_hide $m_c $m_o } - "move" {obj_move $m_c $m_o $a1 $a2} - "scale" {obj_scale $m_c $m_o $a1 $a2 $a3 $a4 } - "raise" {obj_raise $m_c $m_o } - "near" {obj_near $m_c $m_o $a1 $a2 } - "color" {obj_color $m_c $m_o $a1} - "width" {obj_width $m_c $m_o $a1} - "coord" {obj_coord $m_c $m_o $a1 $a2 $a3 $a4 } - "xy1" {obj_xy1 $m_c $m_o $a1 $a2 } - "xy2" {obj_xy2 $m_c $m_o $a1 $a2 } - "border" {obj_border $m_c $m_o $a1} - - "caps" {seg_caps $m_c $m_o $a1} - - "text" {text_value $m_c $m_o $a1} - "pos" {text_pos $m_c $m_o $a1 $a2 } - "anchor" {text_anchor $m_c $m_o $a1} - "justify" {text_justify $m_c $m_o $a1} - - "start" {arc_start $m_c $m_o $a1 } - "angle" { arc_width $m_c $m_o $a1 } - "style" {arc_style $m_c $m_o $a1} - - default {xgui_node_error "obj_method $m_selector does not exist" $m_argv } - } - } - } -} - diff --git a/extensions/xgui/doc/01_first_seg.pd b/extensions/xgui/doc/01_first_seg.pd deleted file mode 100644 index b38a64aeb73cca831f271cfd589a1bd34bb01be3..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/01_first_seg.pd +++ /dev/null @@ -1,123 +0,0 @@ -#N canvas 485 37 638 682 10; -#X floatatom 27 382 3 0 100; -#X msg 27 406 width \$1; -#X msg 108 424 caps butt; -#X msg 108 402 caps round; -#X msg 108 380 caps projecting; -#X msg 28 545 color \$1; -#X msg 28 523 list Blue; -#X msg 28 479 list Black; -#X text 518 640 dh20020212; -#X obj 28 567 alias my_first_seg; -#X obj 27 451 alias my_first_seg; -#X obj 20 314 alias my_first_seg; -#X msg 20 292 width 10; -#X text 23 337 this is an alias; -#X msg 27 186 show; -#X msg 67 186 hide; -#X msg 25 39 show; -#X msg 65 39 hide; -#X text 124 188 then you can draw a segment into it.; -#X text 39 249 this is the real seg object; -#X text 170 355 try thoses too.; -#X text 8 3 This example shows differents to modify a segment in a -canvas.; -#X msg 20 270 coord 20 10 100 150; -#X floatatom 311 528 5 0 0; -#X floatatom 354 528 5 0 0; -#X floatatom 401 528 5 0 0; -#X floatatom 447 528 5 0 0; -#X obj 311 603 alias my_first_seg; -#X obj 312 504 line; -#X msg 355 314 bang; -#X obj 357 505 line; -#X obj 407 506 line; -#X obj 452 507 line; -#X obj 311 554 xy2coord; -#X msg 109 40 size 500 500; -#X text 174 277 Here some values you can change; -#X obj 354 471 route 0 1 2 3 4; -#X obj 353 366 t b b; -#X obj 499 504 line; -#X obj 499 529 int; -#X floatatom 499 552 3 0 100; -#X msg 499 576 width \$1; -#X msg 394 315 stop; -#X obj 383 418 random 500; -#X msg 207 40 color white; -#X msg 207 62 color blue; -#X msg 104 545 color green; -#X msg 479 348 500; -#X msg 478 325 500; -#X obj 353 340 metro 500; -#X obj 353 445 pack f f 500; -#X msg 512 324 5; -#X msg 511 348 5; -#X msg 106 523 color red; -#X msg 28 501 list grey; -#X msg 208 84 color lightgrey; -#X obj 353 393 random 5; -#X obj 25 109 canvas */my_first_canvas; -#X obj 25 133 print canvas; -#X obj 24 226 seg my_first_seg */my_first_canvas/my_first_seg; -#X obj 25 613 alias my_first_seg; -#X obj 25 636 print my_first_seg; -#X obj 216 147 i-seg */my_first_canvas; -#X msg 216 123 show; -#X msg 283 40 color black; -#X connect 0 0 1 0; -#X connect 1 0 10 0; -#X connect 2 0 10 0; -#X connect 3 0 10 0; -#X connect 4 0 10 0; -#X connect 5 0 9 0; -#X connect 6 0 5 0; -#X connect 7 0 5 0; -#X connect 12 0 11 0; -#X connect 14 0 59 0; -#X connect 15 0 59 0; -#X connect 16 0 57 0; -#X connect 17 0 57 0; -#X connect 22 0 11 0; -#X connect 23 0 33 0; -#X connect 24 0 33 1; -#X connect 25 0 33 2; -#X connect 26 0 33 3; -#X connect 28 0 23 0; -#X connect 29 0 49 0; -#X connect 30 0 24 0; -#X connect 31 0 25 0; -#X connect 32 0 26 0; -#X connect 33 0 27 0; -#X connect 34 0 57 0; -#X connect 36 0 28 0; -#X connect 36 1 30 0; -#X connect 36 2 31 0; -#X connect 36 3 32 0; -#X connect 36 4 38 0; -#X connect 37 0 56 0; -#X connect 37 1 43 0; -#X connect 38 0 39 0; -#X connect 39 0 40 0; -#X connect 40 0 41 0; -#X connect 41 0 27 0; -#X connect 42 0 49 0; -#X connect 43 0 50 1; -#X connect 44 0 57 0; -#X connect 45 0 57 0; -#X connect 46 0 9 0; -#X connect 46 0 9 0; -#X connect 47 0 50 2; -#X connect 48 0 49 1; -#X connect 49 0 37 0; -#X connect 50 0 36 0; -#X connect 51 0 49 1; -#X connect 52 0 50 2; -#X connect 53 0 9 0; -#X connect 54 0 5 0; -#X connect 55 0 57 0; -#X connect 56 0 50 0; -#X connect 57 0 58 0; -#X connect 60 0 61 0; -#X connect 63 0 62 0; -#X connect 64 0 57 0; diff --git a/extensions/xgui/doc/02_behaviors.pd b/extensions/xgui/doc/02_behaviors.pd deleted file mode 100644 index 8c4367abde71289c59bed5c203180d080caca189..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/02_behaviors.pd +++ /dev/null @@ -1,49 +0,0 @@ -#N canvas 418 -8 563 706 10; -#X obj 22 628 light_over; -#X text 404 671 dh20020212; -#X text 7 30 This example shows the diferent properties oand methodes -of a seg object; -#X floatatom 87 651 1 0 1; -#X obj 22 588 spigot; -#X floatatom 59 564 1 0 1; -#X msg 27 166 show; -#X msg 67 166 hide; -#X msg 27 89 show; -#X msg 67 89 hide; -#X text 9 9 Patch "pdx_connect.pd" must be loaded and connected; -#X text 244 88 First create the canvas.; -#X text 246 108 uses the show method; -#X text 255 171 then you can draw a segment into it.; -#X text 20 315 You'll receive here all the event from the seg windows -; -#X msg 111 90 size 500 500; -#X obj 24 270 alias a_seg; -#X obj 25 292 print a_seg; -#X obj 24 384 alias a_seg; -#X obj 24 474 alias a_seg; -#X text 50 404 a_seg detect a move; -#X text 49 451 and send it to himselve; -#X text 116 474 this way you can drag and drop the seg; -#X msg 152 170 width 20; -#X obj 22 537 alias a_seg; -#X obj 22 675 alias a_seg; -#X text 81 567 breaking the link is killing the behavior; -#X text 61 334 Try to move the segment with your mouse !; -#X obj 24 427 dragable; -#X text 101 427 dragable is a behaviors; -#X obj 27 120 canvas */my_canvas; -#X obj 26 208 seg a_seg */my_canvas/a_seg; -#X connect 0 0 25 0; -#X connect 0 1 3 0; -#X connect 4 0 0 0; -#X connect 5 0 4 1; -#X connect 6 0 31 0; -#X connect 7 0 31 0; -#X connect 8 0 30 0; -#X connect 9 0 30 0; -#X connect 15 0 30 0; -#X connect 16 0 17 0; -#X connect 18 0 28 0; -#X connect 23 0 31 0; -#X connect 24 0 4 0; -#X connect 28 0 19 0; diff --git a/extensions/xgui/doc/03_low_level.pd b/extensions/xgui/doc/03_low_level.pd deleted file mode 100644 index dad23536a4affbf2db0daa074d32b9383cd28901..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/03_low_level.pd +++ /dev/null @@ -1,28 +0,0 @@ -#N canvas 323 157 503 508 12; -#X obj 72 455 print from_seg; -#X text 18 12 This example show how to use seg using the low level -interface.; -#X text 73 406 The events from seg arrives there; -#X text 553 471 dh20020317; -#X obj 79 346 send to_node; -#X msg 79 84 do */ add_canvas */test; -#X msg 79 111 do */test add_seg foo; -#X obj 72 428 r */test/foo; -#X msg 79 137 do */test size 100 100; -#X msg 79 163 do */test/foo width 10; -#X msg 79 194 do */test/foo move 10 10; -#X msg 79 221 do */test/foo color blue; -#X msg 79 252 do */test/foo caps butt; -#X msg 79 279 do */test/foo coord 10 10 20 20; -#X msg 79 303 do */test color white; -#X text 385 469 dh20020530; -#X connect 5 0 4 0; -#X connect 6 0 4 0; -#X connect 7 0 0 0; -#X connect 8 0 4 0; -#X connect 9 0 4 0; -#X connect 10 0 4 0; -#X connect 11 0 4 0; -#X connect 12 0 4 0; -#X connect 13 0 4 0; -#X connect 14 0 4 0; diff --git a/extensions/xgui/doc/04_classic.pd b/extensions/xgui/doc/04_classic.pd deleted file mode 100644 index c76a3c36af93bcc89e8dc3ca449e4018f087f509..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/04_classic.pd +++ /dev/null @@ -1,98 +0,0 @@ -#N canvas 25 191 968 433 10; -#X floatatom 10 178 5 0 0; -#X floatatom 10 122 5 0 0; -#X floatatom 234 122 5 0 0; -#X floatatom 468 123 5 0 0; -#X floatatom 731 121 5 0 0; -#X text 17 23 This example show how to create some simples sliders -with diferent look and diferent behavior; -#X obj 415 15 loadbang; -#X msg 807 21 hide; -#X msg 49 122 show; -#X msg 85 123 hide; -#X msg 279 122 show; -#X msg 317 122 hide; -#X msg 513 123 show; -#X msg 552 123 hide; -#X msg 776 121 show; -#X msg 812 121 hide; -#X obj 415 37 t b b b; -#X text 731 177 dh20020318; -#X text 17 -2 Patch "pdx_connect.pd" must be loaded and connected; -#X msg 7 283 show; -#X msg 43 283 hide; -#X floatatom 191 220 5 0 0; -#X msg 236 220 show; -#X msg 272 220 hide; -#X floatatom 190 279 5 0 0; -#X floatatom 429 217 5 0 0; -#X msg 474 217 show; -#X msg 510 217 hide; -#X floatatom 428 276 5 0 0; -#X floatatom 672 216 5 0 0; -#X msg 717 216 show; -#X msg 753 216 hide; -#X floatatom 671 275 5 0 0; -#X obj 7 336 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1 --1; -#X msg 321 303 show; -#X msg 357 303 hide; -#X obj 322 367 print; -#X msg 538 16 show \, size 300 157 \, color lightgrey; -#X obj 538 39 canvas */sliders; -#X obj 10 150 slider2 sl1 */sliders 20 20 127 1270; -#X obj 468 149 my_slider2 sl3 */sliders 70 20 127 127 127; -#X obj 730 148 my_slider2 sl4 */sliders 90 20 127 127; -#X obj 7 311 button b1 */sliders OK 120 20 30 20; -#X obj 321 342 pad pd1 */sliders 170 20 297 147 1000 1000; -#X obj 430 251 potar pt2 */sliders 120 80; -#X obj 672 250 potar pt3 */sliders 120 110; -#X obj 189 254 potar pt1 */sliders 120 50; -#X obj 234 150 my_slider2 sl2 */sliders 50 20 127 127; -#X connect 1 0 39 0; -#X connect 2 0 47 0; -#X connect 3 0 40 0; -#X connect 4 0 41 0; -#X connect 6 0 16 0; -#X connect 7 0 38 0; -#X connect 8 0 39 0; -#X connect 9 0 39 0; -#X connect 10 0 47 0; -#X connect 11 0 47 0; -#X connect 12 0 40 0; -#X connect 13 0 40 0; -#X connect 14 0 41 0; -#X connect 15 0 41 0; -#X connect 16 0 8 0; -#X connect 16 0 10 0; -#X connect 16 0 14 0; -#X connect 16 0 19 0; -#X connect 16 0 22 0; -#X connect 16 0 26 0; -#X connect 16 0 12 0; -#X connect 16 0 30 0; -#X connect 16 0 34 0; -#X connect 16 2 37 0; -#X connect 19 0 42 0; -#X connect 20 0 42 0; -#X connect 21 0 46 0; -#X connect 22 0 46 0; -#X connect 23 0 46 0; -#X connect 25 0 44 0; -#X connect 26 0 44 0; -#X connect 27 0 44 0; -#X connect 29 0 45 0; -#X connect 30 0 45 0; -#X connect 31 0 45 0; -#X connect 34 0 43 0; -#X connect 35 0 43 0; -#X connect 37 0 38 0; -#X connect 39 0 0 0; -#X connect 40 0 25 0; -#X connect 41 0 29 0; -#X connect 42 0 33 0; -#X connect 43 0 36 0; -#X connect 44 0 28 0; -#X connect 45 0 32 0; -#X connect 46 0 24 0; -#X connect 47 0 21 0; diff --git a/extensions/xgui/doc/05_xseq.pd b/extensions/xgui/doc/05_xseq.pd deleted file mode 100644 index 92f08043636ed96d47c767cfaa232a1a93120a0b..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/05_xseq.pd +++ /dev/null @@ -1,315 +0,0 @@ -#N canvas 186 5 737 541 10; -#X floatatom 251 85 3 0 100; -#X msg 16 195 width \$1; -#X msg 223 180 color red; -#X obj 185 256 metro 100; -#X msg 185 279 move 1 0; -#X obj 185 371 s play_pos; -#X obj 185 325 coord2xy; -#X floatatom 185 348 5 0 0; -#X msg 109 86 stop; -#X text 251 64 size; -#X obj 204 226 alias cursor; -#X text 16 35 This patch show how to create a simple sequencer.; -#N canvas 248 263 301 267 save 0; -#X obj 32 56 inlet; -#X obj 32 190 outlet; -#X obj 117 54 inlet; -#X obj 32 79 route coord; -#X msg 32 163 coord 467 107 70 21; -#X msg 32 103 set coord \$1 \$2 \$3 \$4; -#X text 36 12 save some value using the classicle saving feature instead -of state; -#X text 148 186 dh20020216; -#X obj 165 68 loadbang; -#X msg 161 164 move 0 0; -#X obj 117 133 t b b; -#X connect 0 0 3 0; -#X connect 2 0 10 0; -#X connect 3 0 5 0; -#X connect 4 0 1 0; -#X connect 5 0 4 0; -#X connect 8 0 10 0; -#X connect 9 0 1 0; -#X connect 10 0 9 0; -#X connect 10 1 4 0; -#X restore 115 225 pd save; -#N canvas 240 223 602 402 save 0; -#X obj 32 56 inlet; -#X obj 32 190 outlet; -#X obj 117 54 inlet; -#X obj 32 79 route coord; -#X msg 32 163 coord 393 153 84 40; -#X msg 32 103 set coord \$1 \$2 \$3 \$4; -#X text 36 12 save some value using the classicle saving feature instead -of state; -#X text 148 186 dh20020216; -#X obj 208 74 loadbang; -#X obj 117 133 bang; -#X obj 209 96 t b b; -#X msg 209 120 move 0 0; -#X connect 0 0 3 0; -#X connect 2 0 9 0; -#X connect 3 0 5 0; -#X connect 4 0 1 0; -#X connect 5 0 4 0; -#X connect 8 0 10 0; -#X connect 9 0 4 0; -#X connect 10 0 11 0; -#X connect 10 1 4 0; -#X connect 11 0 1 0; -#X restore 115 248 pd save; -#N canvas 240 223 602 402 save 0; -#X obj 32 56 inlet; -#X obj 32 190 outlet; -#X obj 117 54 inlet; -#X obj 32 79 route coord; -#X msg 32 163 coord 11 177 505 16; -#X msg 32 103 set coord \$1 \$2 \$3 \$4; -#X obj 117 133 bang; -#X text 36 12 save some value using the classicle saving feature instead -of state; -#X text 148 186 dh20020216; -#X obj 208 74 loadbang; -#X obj 209 96 t b b; -#X msg 209 120 move 0 0; -#X connect 0 0 3 0; -#X connect 2 0 6 0; -#X connect 3 0 5 0; -#X connect 4 0 1 0; -#X connect 5 0 4 0; -#X connect 6 0 4 0; -#X connect 9 0 10 0; -#X connect 10 0 11 0; -#X connect 10 1 4 0; -#X connect 11 0 1 0; -#X restore 115 271 pd save; -#N canvas 240 223 602 402 save 0; -#X obj 32 56 inlet; -#X obj 32 190 outlet; -#X obj 117 54 inlet; -#X obj 32 79 route coord; -#X msg 32 163 coord 453 196 70 19; -#X msg 32 103 set coord \$1 \$2 \$3 \$4; -#X obj 117 133 bang; -#X text 36 12 save some value using the classicle saving feature instead -of state; -#X text 148 186 dh20020216; -#X obj 208 74 loadbang; -#X obj 209 96 t b b; -#X msg 209 120 move 0 0; -#X connect 0 0 3 0; -#X connect 2 0 6 0; -#X connect 3 0 5 0; -#X connect 4 0 1 0; -#X connect 5 0 4 0; -#X connect 6 0 4 0; -#X connect 9 0 10 0; -#X connect 10 0 11 0; -#X connect 10 1 4 0; -#X connect 11 0 1 0; -#X restore 115 294 pd save; -#N canvas 240 223 600 400 save 0; -#X obj 32 56 inlet; -#X obj 32 190 outlet; -#X obj 117 54 inlet; -#X obj 32 79 route coord; -#X msg 32 163 coord 70 27 475 133; -#X msg 32 103 set coord \$1 \$2 \$3 \$4; -#X obj 117 133 bang; -#X text 36 12 save some value using the classicle saving feature instead -of state; -#X text 148 186 dh20020216; -#X obj 153 133 loadbang; -#X connect 0 0 3 0; -#X connect 2 0 6 0; -#X connect 3 0 5 0; -#X connect 4 0 1 0; -#X connect 5 0 4 0; -#X connect 6 0 4 0; -#X connect 9 0 4 0; -#X restore 115 317 pd save; -#N canvas 240 223 602 402 save 0; -#X obj 32 56 inlet; -#X obj 32 190 outlet; -#X obj 117 54 inlet; -#X obj 32 79 route coord; -#X msg 32 163 coord 93 232 381 10; -#X msg 32 103 set coord \$1 \$2 \$3 \$4; -#X obj 117 133 bang; -#X text 36 12 save some value using the classicle saving feature instead -of state; -#X text 148 186 dh20020216; -#X obj 208 74 loadbang; -#X obj 209 96 t b b; -#X msg 209 120 move 0 0; -#X connect 0 0 3 0; -#X connect 2 0 6 0; -#X connect 3 0 5 0; -#X connect 4 0 1 0; -#X connect 5 0 4 0; -#X connect 6 0 4 0; -#X connect 9 0 10 0; -#X connect 10 0 11 0; -#X connect 10 1 4 0; -#X connect 11 0 1 0; -#X restore 115 340 pd save; -#N canvas 447 269 604 404 save 0; -#X obj 32 56 inlet; -#X obj 32 190 outlet; -#X obj 117 54 inlet; -#X obj 32 79 route coord; -#X msg 32 163 coord 66 120 484 50; -#X msg 32 103 set coord \$1 \$2 \$3 \$4; -#X obj 117 133 bang; -#X text 36 12 save some value using the classicle saving feature instead -of state; -#X text 148 186 dh20020216; -#X obj 208 74 loadbang; -#X obj 209 96 t b b; -#X msg 209 120 move 0 0; -#X connect 0 0 3 0; -#X connect 2 0 6 0; -#X connect 3 0 5 0; -#X connect 4 0 1 0; -#X connect 5 0 4 0; -#X connect 6 0 4 0; -#X connect 9 0 10 0; -#X connect 10 0 11 0; -#X connect 10 1 4 0; -#X connect 11 0 1 0; -#X restore 115 363 pd save; -#N canvas 240 223 602 402 save 0; -#X obj 32 56 inlet; -#X obj 32 190 outlet; -#X obj 117 54 inlet; -#X obj 32 79 route coord; -#X msg 32 163 coord 425 22 54 217; -#X msg 32 103 set coord \$1 \$2 \$3 \$4; -#X obj 117 133 bang; -#X text 36 12 save some value using the classicle saving feature instead -of state; -#X text 148 186 dh20020216; -#X obj 208 74 loadbang; -#X obj 209 96 t b b; -#X msg 209 120 move 0 0; -#X connect 0 0 3 0; -#X connect 2 0 6 0; -#X connect 3 0 5 0; -#X connect 4 0 1 0; -#X connect 5 0 4 0; -#X connect 6 0 4 0; -#X connect 9 0 10 0; -#X connect 10 0 11 0; -#X connect 10 1 4 0; -#X connect 11 0 1 0; -#X restore 115 386 pd save; -#X msg 153 86 bang; -#X text 139 64 load preset; -#X obj 185 136 t b b b b; -#X obj 346 302 move_x; -#X text 362 365 You can modify what's in the seg windows.; -#X text 362 385 If you save this patch \, what's in the seg windows -will be saved too.; -#X msg 243 162 show; -#X msg 16 162 show; -#X obj 360 130 loadbang; -#X msg 470 195 show; -#X msg 488 86 hide; -#X msg 449 86 bang; -#X msg 470 218 size 510 240; -#X obj 16 248 i-seg */xseq; -#X obj 16 271 i-seg */xseq; -#X obj 16 294 i-seg */xseq; -#X obj 16 317 i-seg */xseq; -#X obj 16 340 i-seg */xseq; -#X obj 16 363 i-seg */xseq; -#X obj 16 386 i-seg */xseq; -#X obj 185 302 seg cursor */xseq/cursor; -#X msg 204 203 coord 10 10 10 230; -#X msg 287 431 \; pd dsp 1; -#X obj 360 153 t b b b b b; -#X obj 15 109 t b b; -#X msg 72 86 bang; -#X msg 15 86 restart; -#X text 9 9 Patch "pdx_connect.pd" must be loaded and connected; -#X text 363 441 click here if you whant to hear what's generated ! -; -#X obj 470 241 canvas */xseq; -#X obj 16 225 i-seg */xseq; -#X obj 16 479 preset p3 */xseq set03 10 80 40 20; -#X obj 16 505 preset p4 */xseq set04 10 110 40 20; -#X obj 16 428 preset p1 */xseq set01 10 20 40 20; -#X obj 16 454 preset p2 */xseq set02 10 50 40 20; -#X connect 0 0 1 0; -#X connect 1 0 33 0; -#X connect 1 0 34 0; -#X connect 1 0 35 0; -#X connect 1 0 36 0; -#X connect 1 0 37 0; -#X connect 1 0 38 0; -#X connect 1 0 39 0; -#X connect 1 0 50 0; -#X connect 2 0 10 0; -#X connect 3 0 4 0; -#X connect 4 0 40 0; -#X connect 6 0 7 0; -#X connect 7 0 5 0; -#X connect 8 0 3 0; -#X connect 12 0 50 0; -#X connect 13 0 33 0; -#X connect 14 0 34 0; -#X connect 15 0 35 0; -#X connect 16 0 36 0; -#X connect 17 0 37 0; -#X connect 18 0 38 0; -#X connect 19 0 39 0; -#X connect 20 0 12 1; -#X connect 20 0 13 1; -#X connect 20 0 14 1; -#X connect 20 0 15 1; -#X connect 20 0 16 1; -#X connect 20 0 17 1; -#X connect 20 0 18 1; -#X connect 20 0 19 1; -#X connect 22 0 3 0; -#X connect 22 0 42 0; -#X connect 22 1 41 0; -#X connect 22 2 2 0; -#X connect 22 3 26 0; -#X connect 23 0 40 0; -#X connect 26 0 10 0; -#X connect 27 0 33 0; -#X connect 27 0 34 0; -#X connect 27 0 35 0; -#X connect 27 0 36 0; -#X connect 27 0 37 0; -#X connect 27 0 38 0; -#X connect 27 0 39 0; -#X connect 27 0 50 0; -#X connect 28 0 43 0; -#X connect 29 0 49 0; -#X connect 30 0 49 0; -#X connect 31 0 43 0; -#X connect 32 0 49 0; -#X connect 33 0 13 0; -#X connect 34 0 14 0; -#X connect 35 0 15 0; -#X connect 36 0 16 0; -#X connect 37 0 17 0; -#X connect 38 0 18 0; -#X connect 39 0 19 0; -#X connect 40 0 6 0; -#X connect 40 0 23 0; -#X connect 41 0 10 0; -#X connect 43 0 46 0; -#X connect 43 1 20 0; -#X connect 43 1 22 0; -#X connect 43 2 27 0; -#X connect 43 3 32 0; -#X connect 43 4 29 0; -#X connect 44 0 3 0; -#X connect 44 1 41 0; -#X connect 45 0 3 0; -#X connect 46 0 44 0; -#X connect 50 0 12 0; diff --git a/extensions/xgui/doc/06_physics.pd b/extensions/xgui/doc/06_physics.pd deleted file mode 100644 index e883c7ce139c8e82791182582537c1325fb8ee7c..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/06_physics.pd +++ /dev/null @@ -1,24 +0,0 @@ -#N canvas 168 295 427 332 10; -#X text 11 24 Here a small example to shows that the behaviors generated -with pure-data can be very funny !!!; -#X text 224 197 dh20020210; -#X text 13 -1 Patch "pdx_connect.pd" must be loaded and connected; -#X msg 21 175 show; -#X obj 22 60 loadbang; -#X msg 104 103 show; -#X msg 262 63 hide; -#X msg 227 62 bang; -#X obj 21 82 t b b b; -#X msg 55 125 size 400 400; -#X text 26 247 Try to move the thing on the seg windows to ma; -#X obj 77 151 canvas */physics; -#X obj 21 197 i-seg_mp */physics 150 150; -#X connect 3 0 12 0; -#X connect 4 0 8 0; -#X connect 5 0 11 0; -#X connect 6 0 11 0; -#X connect 7 0 8 0; -#X connect 8 0 3 0; -#X connect 8 1 9 0; -#X connect 8 2 5 0; -#X connect 9 0 11 0; diff --git a/extensions/xgui/doc/07_speak.pd b/extensions/xgui/doc/07_speak.pd deleted file mode 100644 index bbf87318663073b3073b75386685469642e9d571..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/07_speak.pd +++ /dev/null @@ -1,54 +0,0 @@ -#N canvas 386 128 534 423 10; -#X floatatom 360 236 3 0 100; -#X msg 360 259 width \$1; -#X text 361 320 dh20020212; -#X text 9 9 Patch "pdx_connect.pd" must be loaded and connected; -#X obj 360 75 adc~; -#X obj 360 148 env~; -#X obj 360 171 - 55; -#X obj 360 192 * 3; -#X obj 360 281 alias mouth; -#X obj 360 214 max 5; -#X text 371 330 dh20020319; -#X obj 24 61 loadbang; -#X text 7 30 Just say "hoooo" into your microphone !!!; -#X obj 55 297 move; -#X obj 160 295 move; -#X msg 232 65 bang; -#X obj 49 131 canvas */speak; -#X msg 49 108 show \, size 300 300; -#X msg 35 154 show \, coord 100 210 200 210; -#X msg 24 206 show \, coord 110 100 110 100 \, width 20; -#X msg 84 237 show \, coord 190 100 190 100 \, width 20; -#X obj 24 83 t b b; -#X obj 35 181 seg mouth */speak/m; -#X obj 24 268 seg le */speak/le; -#X obj 137 269 seg re */speak/re; -#X msg 234 101 \; pd dsp 1; -#X obj 357 100 hip~ 500; -#X obj 357 124 lop~ 1000; -#X connect 0 0 1 0; -#X connect 1 0 8 0; -#X connect 4 0 26 0; -#X connect 4 1 26 0; -#X connect 5 0 6 0; -#X connect 6 0 7 0; -#X connect 7 0 9 0; -#X connect 9 0 0 0; -#X connect 11 0 21 0; -#X connect 13 0 23 0; -#X connect 14 0 24 0; -#X connect 15 0 21 0; -#X connect 17 0 16 0; -#X connect 18 0 22 0; -#X connect 19 0 23 0; -#X connect 20 0 24 0; -#X connect 21 0 18 0; -#X connect 21 0 19 0; -#X connect 21 0 20 0; -#X connect 21 1 17 0; -#X connect 21 1 25 0; -#X connect 23 0 13 0; -#X connect 24 0 14 0; -#X connect 26 0 27 0; -#X connect 27 0 5 0; diff --git a/extensions/xgui/doc/08_more_physics.pd b/extensions/xgui/doc/08_more_physics.pd deleted file mode 100644 index d771b5c643b100023325e4b39abb5138cc5f0c33..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/08_more_physics.pd +++ /dev/null @@ -1,89 +0,0 @@ -#N canvas 40 267 1010 405 12; -#X text 24 9 help physics; -#X msg 764 244 show; -#X msg 814 244 hide; -#X msg 870 246 size 500 500; -#X msg 726 300 show; -#X msg 776 300 hide; -#X msg 831 300 width 30; -#X obj 796 163 loadbang; -#X obj 795 191 t b b b b; -#X msg 736 327 coord 250 250 250 300; -#X msg 120 260 on; -#X obj 71 233 route enter leave move; -#X msg 70 260 off; -#X msg 892 191 on; -#X msg 925 299 width 50; -#X msg 542 248 on; -#X obj 493 221 route enter leave move; -#X msg 492 248 off; -#X obj 564 29 mass big 10 250 250 0 0; -#X msg 233 138 xy1 \$1 \$2; -#X msg 232 168 xy2 \$1 \$2; -#X msg 837 75 xy1 \$1 \$2; -#X msg 836 105 xy2 \$1 \$2; -#X text 880 361 dh20020404; -#X obj 194 25 damping damp2 0.1; -#X obj 794 30 damping damp1 1; -#X obj 512 151 spring spring2 10 0 250 250 250 250; -#X obj 100 87 mass mass1 1 100 100 0 0; -#X obj 386 104 spring spring1 100 100 250 250 250 300; -#X obj 170 56 force force1 0 500; -#X obj 26 324 seg A */my_canvas/my_mass; -#X obj 218 356 seg b */my_canvas/my_spring; -#X obj 459 362 seg c */my_canvas/my_big_mass; -#X obj 766 273 canvas */my_canvas; -#X connect 1 0 33 0; -#X connect 2 0 33 0; -#X connect 3 0 33 0; -#X connect 4 0 30 0; -#X connect 4 0 31 0; -#X connect 4 0 32 0; -#X connect 5 0 30 0; -#X connect 5 0 31 0; -#X connect 6 0 30 0; -#X connect 7 0 8 0; -#X connect 7 0 13 0; -#X connect 8 0 6 0; -#X connect 8 0 9 0; -#X connect 8 0 14 0; -#X connect 8 1 4 0; -#X connect 8 2 3 0; -#X connect 8 3 1 0; -#X connect 9 0 32 0; -#X connect 10 0 27 0; -#X connect 11 0 12 0; -#X connect 11 1 10 0; -#X connect 12 0 27 0; -#X connect 13 0 18 0; -#X connect 13 0 27 0; -#X connect 14 0 32 0; -#X connect 15 0 18 0; -#X connect 16 0 17 0; -#X connect 16 1 15 0; -#X connect 17 0 18 0; -#X connect 18 1 21 0; -#X connect 18 1 22 0; -#X connect 18 1 25 1; -#X connect 18 1 26 2; -#X connect 18 1 28 1; -#X connect 19 0 30 0; -#X connect 20 0 30 0; -#X connect 20 0 31 0; -#X connect 21 0 31 0; -#X connect 21 0 32 0; -#X connect 22 0 32 0; -#X connect 24 1 27 1; -#X connect 25 1 18 1; -#X connect 26 2 18 1; -#X connect 27 1 19 0; -#X connect 27 1 20 0; -#X connect 27 1 24 1; -#X connect 27 1 28 2; -#X connect 28 1 18 1; -#X connect 28 2 27 1; -#X connect 29 1 27 1; -#X connect 30 0 11 0; -#X connect 30 0 27 0; -#X connect 32 0 16 0; -#X connect 32 0 18 0; diff --git a/extensions/xgui/doc/09_more_physics2.pd b/extensions/xgui/doc/09_more_physics2.pd deleted file mode 100644 index 2e2539e6a6aa47352415176e151a86165ef37d8e..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/09_more_physics2.pd +++ /dev/null @@ -1,199 +0,0 @@ -#N canvas 54 20 729 706 12; -#X msg 466 13 show; -#X obj 7 37 loadbang; -#X obj 33 75 t b b b b; -#X msg 218 9 on; -#X msg 220 87 xy1 \$1 \$2; -#X msg 324 86 xy2 \$1 \$2; -#X text 52 202 dh20020404; -#X msg 230 168 xy1 \$1 \$2; -#X msg 326 168 xy2 \$1 \$2; -#X msg 221 406 xy1 \$1 \$2; -#X msg 314 404 xy2 \$1 \$2; -#X obj 470 91 seg l1 */my_string/l1; -#X obj 475 168 seg l2 */my_string/l2; -#X msg 216 490 xy1 \$1 \$2; -#X msg 317 490 xy2 \$1 \$2; -#X msg 209 573 xy1 \$1 \$2; -#X msg 315 572 xy2 \$1 \$2; -#X obj 482 45 seg m1 */my_string/m1; -#X msg 219 245 xy1 \$1 \$2; -#X msg 317 242 xy2 \$1 \$2; -#X obj 463 254 seg l3 */my_string/l3; -#X msg 220 320 xy1 \$1 \$2; -#X msg 321 321 xy2 \$1 \$2; -#X obj 458 337 seg l4 */my_string/l4; -#X obj 340 757 seg m2 */my_string/m2; -#X obj 452 420 seg l5 */my_string/l5; -#X obj 455 508 seg l6 */my_string/l6; -#X obj 571 14 light_over; -#X msg 515 13 raise; -#X msg 212 653 xy1 \$1 \$2; -#X msg 318 652 xy2 \$1 \$2; -#X msg 102 771 xy1 \$1 \$2; -#X msg 208 770 xy2 \$1 \$2; -#X obj 458 588 seg l7 */my_string/l7; -#X obj 450 666 seg l8 */my_string/l8; -#X msg 506 -9 width 30; -#X msg 30 662 width 10; -#X text 60 224 dh20020405; -#X text 24 9 a nice string...; -#X obj 102 745 mass m9 50 250 100 0 0; -#X obj 230 142 mass m2 1 250 240 0 0; -#X obj 219 219 mass m3 1 250 220 0 0; -#X obj 220 294 mass m4 1 250 200 0 0; -#X obj 221 380 mass m5 1 250 180 0 0; -#X obj 210 465 mass m6 1 250 160 0 0; -#X obj 209 547 mass m7 1 250 140 0 0; -#X obj 212 627 mass m8 1 250 120 0 0; -#X obj 237 36 force f1 0 10000; -#X obj 164 720 damping d9 3000; -#X obj 330 779 spring sl 5000 0 250 250 250 100; -#X obj 450 692 spring s9 1000 20; -#X obj 458 614 spring s8 1000 20; -#X obj 455 534 spring s6 1000 20; -#X obj 452 446 spring s5 1000 20; -#X obj 458 363 spring s4 1000 20; -#X obj 463 280 spring s3 1000 20; -#X obj 461 195 spring s2 1000 20; -#X obj 470 118 spring s1 1000 20; -#X obj 282 13 damping d1 10; -#X obj 291 121 damping d2 10; -#X obj 281 195 damping d3 10; -#X obj 285 270 damping d4 10; -#X obj 282 356 damping d5 10; -#X obj 285 438 damping d6 10; -#X obj 271 522 damping d7 10; -#X obj 274 602 damping d8 10; -#X obj 220 61 mass m1 10 250 260 0 0; -#X text 21 -11 This example is running OK on a PIII 800; -#X msg 51 101 show \, size 500 800; -#X msg 70 125 color white; -#X obj 53 156 canvas */my_string; -#X connect 0 0 12 0; -#X connect 0 0 17 0; -#X connect 0 0 11 0; -#X connect 0 0 24 0; -#X connect 0 0 20 0; -#X connect 0 0 23 0; -#X connect 0 0 25 0; -#X connect 0 0 26 0; -#X connect 0 0 33 0; -#X connect 0 0 34 0; -#X connect 1 0 2 0; -#X connect 2 0 35 0; -#X connect 2 0 28 0; -#X connect 2 0 36 0; -#X connect 2 0 3 0; -#X connect 2 1 0 0; -#X connect 2 2 69 0; -#X connect 2 3 68 0; -#X connect 3 0 39 0; -#X connect 3 0 40 0; -#X connect 3 0 41 0; -#X connect 3 0 42 0; -#X connect 3 0 43 0; -#X connect 3 0 44 0; -#X connect 3 0 45 0; -#X connect 3 0 46 0; -#X connect 3 0 66 0; -#X connect 4 0 11 0; -#X connect 4 0 17 0; -#X connect 5 0 17 0; -#X connect 7 0 12 0; -#X connect 8 0 11 0; -#X connect 9 0 25 0; -#X connect 10 0 23 0; -#X connect 13 0 26 0; -#X connect 14 0 25 0; -#X connect 15 0 33 0; -#X connect 16 0 26 0; -#X connect 17 0 27 0; -#X connect 17 0 66 0; -#X connect 18 0 20 0; -#X connect 19 0 12 0; -#X connect 21 0 23 0; -#X connect 22 0 20 0; -#X connect 27 0 17 0; -#X connect 28 0 17 0; -#X connect 29 0 34 0; -#X connect 30 0 33 0; -#X connect 31 0 24 0; -#X connect 32 0 34 0; -#X connect 32 0 24 0; -#X connect 35 0 17 0; -#X connect 36 0 24 0; -#X connect 39 1 31 0; -#X connect 39 1 32 0; -#X connect 39 1 48 1; -#X connect 39 1 49 1; -#X connect 39 1 50 2; -#X connect 40 1 7 0; -#X connect 40 1 8 0; -#X connect 40 1 56 1; -#X connect 40 1 57 2; -#X connect 40 1 59 1; -#X connect 41 1 18 0; -#X connect 41 1 19 0; -#X connect 41 1 55 1; -#X connect 41 1 56 2; -#X connect 41 1 60 1; -#X connect 42 1 21 0; -#X connect 42 1 22 0; -#X connect 42 1 54 1; -#X connect 42 1 55 2; -#X connect 42 1 61 1; -#X connect 43 1 9 0; -#X connect 43 1 10 0; -#X connect 43 1 53 1; -#X connect 43 1 54 2; -#X connect 43 1 62 1; -#X connect 44 1 13 0; -#X connect 44 1 14 0; -#X connect 44 1 52 1; -#X connect 44 1 53 2; -#X connect 44 1 63 1; -#X connect 45 1 15 0; -#X connect 45 1 16 0; -#X connect 45 1 51 1; -#X connect 45 1 52 2; -#X connect 45 1 64 1; -#X connect 46 1 29 0; -#X connect 46 1 30 0; -#X connect 46 1 50 1; -#X connect 46 1 51 2; -#X connect 46 1 65 1; -#X connect 47 1 66 1; -#X connect 48 1 39 1; -#X connect 49 1 39 1; -#X connect 50 1 46 1; -#X connect 50 2 39 1; -#X connect 51 1 45 1; -#X connect 51 2 46 1; -#X connect 52 1 44 1; -#X connect 52 2 45 1; -#X connect 53 1 43 1; -#X connect 53 2 44 1; -#X connect 54 1 42 1; -#X connect 54 2 43 1; -#X connect 55 1 41 1; -#X connect 55 2 42 1; -#X connect 56 1 40 1; -#X connect 56 2 41 1; -#X connect 57 1 66 1; -#X connect 57 2 40 1; -#X connect 57 2 40 1; -#X connect 58 1 66 1; -#X connect 59 1 40 1; -#X connect 60 1 41 1; -#X connect 61 1 42 1; -#X connect 62 1 43 1; -#X connect 63 1 44 1; -#X connect 64 1 45 1; -#X connect 65 1 46 1; -#X connect 66 1 4 0; -#X connect 66 1 5 0; -#X connect 66 1 57 1; -#X connect 66 1 58 1; -#X connect 68 0 70 0; -#X connect 69 0 70 0; diff --git a/extensions/xgui/doc/10_sliders.pd b/extensions/xgui/doc/10_sliders.pd deleted file mode 100644 index 9a1c27cef86d198bf38e33698fa0403340f9787c..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/10_sliders.pd +++ /dev/null @@ -1,83 +0,0 @@ -#N canvas 21 168 943 364 10; -#X floatatom 10 178 5 0 0; -#X floatatom 10 122 5 0 0; -#X obj 415 15 loadbang; -#X msg 807 21 hide; -#X msg 49 122 show; -#X msg 85 123 hide; -#X obj 415 37 t b b b; -#X text 762 189 dh20020318; -#X text 17 -2 Patch "pdx_connect.pd" must be loaded and connected; -#X obj 538 39 canvas */sliders; -#X msg 469 14 bang; -#X msg 11 221 show; -#X msg 47 221 hide; -#X floatatom 241 179 5 0 0; -#X floatatom 241 123 5 0 0; -#X msg 280 123 show; -#X msg 316 124 hide; -#X floatatom 467 179 5 0 0; -#X floatatom 467 123 5 0 0; -#X msg 506 123 show; -#X msg 542 124 hide; -#X floatatom 698 180 5 0 0; -#X floatatom 698 124 5 0 0; -#X msg 737 124 show; -#X msg 773 125 hide; -#X text 772 199 dh20020723; -#X msg 93 271 show; -#X msg 131 274 hide; -#X msg 419 238 show; -#X msg 455 238 hide; -#X msg 501 288 show; -#X msg 539 291 hide; -#X obj 241 151 slider2 sl2 */sliders 50 20 127 1270; -#X obj 467 151 slider2 sl3 */sliders 80 20 127 1270; -#X obj 698 152 slider2 sl4 */sliders 110 20 127 1270; -#X obj 11 244 preset p1 */sliders preset1.txt 140 20 70 20; -#X obj 100 293 preset p2 */sliders preset2.txt 140 50 70 20; -#X obj 419 261 preset p3 */sliders preset3.txt 140 80 70 20; -#X obj 508 310 preset p4 */sliders preset4.txt 140 110 70 20; -#X msg 538 16 show \, size 220 157 \, color lightgrey; -#X obj 11 150 slider2 sl1 */sliders 20 20 127 1270; -#X text 17 23 This example show how to create some simples persitant -preset; -#X text 14 54 USE CRTL+CLICK TO SAVE A PRESET \; CLICK TO LOAD ONE -; -#X connect 1 0 40 0; -#X connect 2 0 6 0; -#X connect 3 0 9 0; -#X connect 4 0 40 0; -#X connect 5 0 40 0; -#X connect 6 0 4 0; -#X connect 6 0 15 0; -#X connect 6 0 19 0; -#X connect 6 0 23 0; -#X connect 6 0 11 0; -#X connect 6 0 26 0; -#X connect 6 0 28 0; -#X connect 6 0 30 0; -#X connect 6 2 39 0; -#X connect 10 0 6 0; -#X connect 11 0 35 0; -#X connect 12 0 35 0; -#X connect 14 0 32 0; -#X connect 15 0 32 0; -#X connect 16 0 32 0; -#X connect 18 0 33 0; -#X connect 19 0 33 0; -#X connect 20 0 33 0; -#X connect 22 0 34 0; -#X connect 23 0 34 0; -#X connect 24 0 34 0; -#X connect 26 0 36 0; -#X connect 27 0 36 0; -#X connect 28 0 37 0; -#X connect 29 0 37 0; -#X connect 30 0 38 0; -#X connect 31 0 38 0; -#X connect 32 0 13 0; -#X connect 33 0 17 0; -#X connect 34 0 21 0; -#X connect 39 0 9 0; -#X connect 40 0 0 0; diff --git a/extensions/xgui/doc/Kroonde/K_jongle.pd b/extensions/xgui/doc/Kroonde/K_jongle.pd deleted file mode 100644 index 3ac940b195acb97d52b7f5497b2b93dd57a1b5b6..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/Kroonde/K_jongle.pd +++ /dev/null @@ -1,44 +0,0 @@ -#N canvas 238 31 407 597 16; -#X floatatom 132 81 4 0 0; -#X floatatom 185 81 4 0 0; -#X text 137 567 S01; -#X text 188 567 S02; -#X text 260 566 S05; -#X text 311 566 S06; -#X floatatom 252 82 4 0 0; -#X floatatom 305 82 4 0 0; -#X obj 132 53 r S01; -#X obj 185 53 r S02; -#X obj 252 54 r S05; -#X obj 305 54 r S06; -#X obj 132 305 vsl 50 256 0 1023 0 0 empty empty empty 20 8 0 8 -260818 --1 -1 0 1; -#X obj 185 305 vsl 50 256 0 1023 0 0 empty empty empty 20 8 0 8 -260818 --1 -1 0 1; -#X obj 252 305 vsl 50 256 0 1023 0 0 empty empty empty 20 8 0 8 -260818 --1 -1 15703 1; -#X obj 305 305 vsl 50 256 0 1023 0 0 empty empty empty 20 8 0 8 -260818 --1 -1 17297 1; -#X obj 68 150 calibration; -#X obj 79 114 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 -; -#X obj 97 182 calibration; -#X obj 166 214 calibration; -#X obj 217 255 calibration; -#X obj 40 44 K_send; -#X connect 0 0 16 1; -#X connect 1 0 18 1; -#X connect 6 0 19 1; -#X connect 7 0 20 1; -#X connect 8 0 0 0; -#X connect 9 0 1 0; -#X connect 10 0 6 0; -#X connect 11 0 7 0; -#X connect 16 0 12 0; -#X connect 17 0 16 0; -#X connect 17 0 18 0; -#X connect 17 0 19 0; -#X connect 17 0 20 0; -#X connect 18 0 13 0; -#X connect 19 0 14 0; -#X connect 20 0 15 0; diff --git a/extensions/xgui/doc/Kroonde/K_konfig.pd b/extensions/xgui/doc/Kroonde/K_konfig.pd deleted file mode 100644 index 525db47a8ef437c09a63f603318252da073234f3..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/Kroonde/K_konfig.pd +++ /dev/null @@ -1,81 +0,0 @@ -#N canvas 0 0 959 578 12; -#X msg 242 479 255; -#X msg 192 479 255; -#X msg 145 479 255; -#X msg 97 479 255; -#X text 167 363 ip destination; -#X obj 52 409 bng 40 250 50 0 empty empty empty 20 8 0 8 -258699 -143491 --143491; -#X obj 52 533 koonfig_ip_dest; -#X floatatom 224 504 5 0 0; -#X floatatom 176 504 5 0 0; -#X floatatom 128 504 5 0 0; -#X floatatom 80 504 5 0 0; -#X obj 60 92 kroonde_ip; -#X floatatom 170 128 5 0 0; -#X floatatom 118 128 5 0 0; -#X floatatom 67 128 5 0 0; -#X floatatom 16 128 5 0 0; -#X floatatom 169 212 5 0 0; -#X floatatom 117 212 5 0 0; -#X floatatom 66 212 5 0 0; -#X floatatom 15 212 5 0 0; -#X obj 35 172 kroonde_dest_ip; -#X msg 97 454 192; -#X msg 145 454 168; -#X msg 192 454 254; -#X msg 242 454 93; -#X text 21 10 configuration du Kroonde; -#X text 371 162 Ces objets affichent la configuration du kroonde \, -lorsque celui-ci s'initialise.; -#X text 307 10 Il est necessaire de relier le Kroonde a l'ordinateur -en midi (in et out) pour configurer le Kroonde.; -#X text 291 127 <- addresse IP du Kroonde; -#X text 288 211 <- addresse IP du destinataire des message du kroonde -; -#X text 317 245 (255.255.255.255 correspond a un envoie a toutes les -machines connectees); -#X obj 508 409 bng 40 250 50 0 empty empty empty 20 8 0 8 -258699 -143491 --143491; -#X floatatom 676 504 5 0 0; -#X floatatom 628 504 5 0 0; -#X floatatom 580 504 5 0 0; -#X floatatom 532 504 5 0 0; -#X msg 532 479 192; -#X msg 580 479 168; -#X msg 628 479 254; -#X msg 676 479 92; -#X text 650 363 ip Kroonde; -#X obj 508 533 koonfig_my_ip; -#X text 105 419 <- bang pour envoyer la nouvelle addresse; -#X text 563 419 <- bang pour envoyer la nouvelle addresse; -#X connect 0 0 7 0; -#X connect 1 0 8 0; -#X connect 2 0 9 0; -#X connect 3 0 10 0; -#X connect 5 0 6 0; -#X connect 7 0 6 4; -#X connect 8 0 6 3; -#X connect 9 0 6 2; -#X connect 10 0 6 1; -#X connect 11 0 15 0; -#X connect 11 1 14 0; -#X connect 11 2 13 0; -#X connect 11 3 12 0; -#X connect 20 0 19 0; -#X connect 20 1 18 0; -#X connect 20 2 17 0; -#X connect 20 3 16 0; -#X connect 21 0 10 0; -#X connect 22 0 9 0; -#X connect 23 0 8 0; -#X connect 24 0 7 0; -#X connect 31 0 41 0; -#X connect 32 0 41 4; -#X connect 33 0 41 3; -#X connect 34 0 41 2; -#X connect 35 0 41 1; -#X connect 36 0 35 0; -#X connect 37 0 34 0; -#X connect 38 0 33 0; -#X connect 39 0 32 0; diff --git a/extensions/xgui/doc/Kroonde/K_panel.pd b/extensions/xgui/doc/Kroonde/K_panel.pd deleted file mode 100644 index 096467dcb47ef79fe6d736059fe6d29263314b55..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/Kroonde/K_panel.pd +++ /dev/null @@ -1,81 +0,0 @@ -#N canvas 13 121 882 333 16; -#X obj 443 18 vsl 50 256 0 1023 0 0 empty S09 empty 20 8 64 8 -260818 --1 -1 0 1; -#X obj 496 18 vsl 50 256 0 1023 0 0 empty S10 empty 20 8 64 8 -260818 --1 -1 0 1; -#X obj 549 18 vsl 50 256 0 1023 0 0 empty S11 empty 20 8 64 8 -260818 --1 -1 0 1; -#X obj 602 18 vsl 50 256 0 1023 0 0 empty S12 empty 20 8 64 8 -260818 --1 -1 0 1; -#X obj 655 18 vsl 50 256 0 1023 0 0 empty S13 empty 20 8 64 8 -260818 --1 -1 0 1; -#X obj 708 18 vsl 50 256 0 1023 0 0 empty S14 empty 20 8 64 8 -260818 --1 -1 0 1; -#X obj 761 18 vsl 50 256 0 1023 0 0 empty S15 empty 20 8 64 8 -260818 --1 -1 0 1; -#X obj 814 18 vsl 50 256 0 1023 0 0 empty S16 empty 20 8 64 8 -260818 --1 -1 0 1; -#X text 504 299 S10; -#X text 27 301 S01; -#X text 78 301 S02; -#X text 132 300 S03; -#X text 190 300 S04; -#X text 242 299 S05; -#X text 293 299 S06; -#X text 347 298 S07; -#X text 398 298 S08; -#X text 450 298 S09; -#X text 556 299 S11; -#X text 611 300 S12; -#X text 662 300 S13; -#X text 719 300 S14; -#X text 769 299 S15; -#X text 820 300 S16; -#X obj 19 18 vsl 50 256 0 1023 0 0 empty S01 empty 20 8 64 8 -260818 --1 -1 0 1; -#X obj 72 18 vsl 50 256 0 1023 0 0 empty S02 empty 20 8 64 8 -260818 --1 -1 0 1; -#X obj 125 18 vsl 50 256 0 1023 0 0 empty S03 empty 20 8 64 8 -260818 --1 -1 0 1; -#X obj 178 18 vsl 50 256 0 1023 0 0 empty S04 empty 20 8 64 8 -260818 --1 -1 0 1; -#X obj 231 18 vsl 50 256 0 1023 0 0 empty S05 empty 20 8 64 8 -260818 --1 -1 0 1; -#X obj 284 18 vsl 50 256 0 1023 0 0 empty S06 empty 20 8 64 8 -260818 --1 -1 0 1; -#X obj 337 18 vsl 50 256 0 1023 0 0 empty S07 empty 20 8 64 8 -260818 --1 -1 0 1; -#X obj 390 18 vsl 50 256 0 1023 0 0 empty S08 empty 20 8 64 8 -260818 --1 -1 0 1; -#X obj 20 282 nbx 4 14 -1e+037 1e+037 0 0 empty S01 empty 0 -6 64 10 --262144 -1 -1 1094 256; -#X obj 73 282 nbx 4 14 -1e+037 1e+037 0 0 empty S02 empty 0 -6 64 10 --262144 -1 -1 0 256; -#X obj 127 282 nbx 4 14 -1e+037 1e+037 0 0 empty S03 empty 0 -6 64 -10 -262144 -1 -1 0 256; -#X obj 180 282 nbx 4 14 -1e+037 1e+037 0 0 empty S04 empty 0 -6 64 -10 -262144 -1 -1 0 256; -#X obj 232 282 nbx 4 14 -1e+037 1e+037 0 0 empty S05 empty 0 -6 64 -10 -262144 -1 -1 0 256; -#X obj 285 282 nbx 4 14 -1e+037 1e+037 0 0 empty S06 empty 0 -6 64 -10 -262144 -1 -1 0 256; -#X obj 339 282 nbx 4 14 -1e+037 1e+037 0 0 empty S07 empty 0 -6 64 -10 -262144 -1 -1 0 256; -#X obj 392 282 nbx 4 14 -1e+037 1e+037 0 0 empty S08 empty 0 -6 64 -10 -262144 -1 -1 0 256; -#X obj 444 282 nbx 4 14 -1e+037 1e+037 0 0 empty S09 empty 0 -6 64 -10 -262144 -1 -1 0 256; -#X obj 497 282 nbx 4 14 -1e+037 1e+037 0 0 empty S10 empty 0 -6 64 -10 -262144 -1 -1 0 256; -#X obj 551 282 nbx 4 14 -1e+037 1e+037 0 0 empty S11 empty 0 -6 64 -10 -262144 -1 -1 0 256; -#X obj 604 282 nbx 4 14 -1e+037 1e+037 0 0 empty S12 empty 0 -6 64 -10 -262144 -1 -1 0 256; -#X obj 656 282 nbx 4 14 -1e+037 1e+037 0 0 empty S13 empty 0 -6 64 -10 -262144 -1 -1 0 256; -#X obj 709 282 nbx 4 14 -1e+037 1e+037 0 0 empty S14 empty 0 -6 64 -10 -262144 -1 -1 0 256; -#X obj 763 282 nbx 4 14 -1e+037 1e+037 0 0 empty S15 empty 0 -6 64 -10 -262144 -1 -1 0 256; -#X obj 816 282 nbx 4 14 -1e+037 1e+037 0 0 empty S16 empty 0 -6 64 -10 -262144 -1 -1 0 256; diff --git a/extensions/xgui/doc/Kroonde/K_send.pd b/extensions/xgui/doc/Kroonde/K_send.pd deleted file mode 100644 index 3758034eb5c0d86128a30ed136e732187cc14823..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/Kroonde/K_send.pd +++ /dev/null @@ -1,70 +0,0 @@ -#N canvas 95 31 427 337 12; -#X obj 15 44 route Kroonde; -#X obj 15 15 netreceive 5678 1; -#X obj 15 73 unpack 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; -#X obj 15 130 send S01; -#X obj 34 186 send S02; -#X obj 54 242 send S03; -#X obj 73 297 send S04; -#X obj 94 130 send S05; -#X obj 112 187 send S06; -#X obj 134 241 send S07; -#X obj 156 298 send S08; -#X obj 15 102 change; -#X obj 34 160 change; -#X obj 54 216 change; -#X obj 73 271 change; -#X obj 94 102 change; -#X obj 112 159 change; -#X obj 134 215 change; -#X obj 156 272 change; -#X obj 174 130 send S01; -#X obj 194 184 send S02; -#X obj 214 240 send S03; -#X obj 233 295 send S04; -#X obj 254 128 send S05; -#X obj 275 185 send S06; -#X obj 294 239 send S07; -#X obj 316 296 send S08; -#X obj 174 102 change; -#X obj 194 158 change; -#X obj 214 214 change; -#X obj 233 269 change; -#X obj 254 100 change; -#X obj 275 157 change; -#X obj 294 213 change; -#X obj 316 270 change; -#X connect 0 0 2 0; -#X connect 1 0 0 0; -#X connect 2 0 11 0; -#X connect 2 1 12 0; -#X connect 2 2 13 0; -#X connect 2 3 14 0; -#X connect 2 4 15 0; -#X connect 2 5 16 0; -#X connect 2 6 17 0; -#X connect 2 7 18 0; -#X connect 2 8 27 0; -#X connect 2 9 28 0; -#X connect 2 10 29 0; -#X connect 2 11 30 0; -#X connect 2 12 31 0; -#X connect 2 13 32 0; -#X connect 2 14 33 0; -#X connect 2 15 34 0; -#X connect 11 0 3 0; -#X connect 12 0 4 0; -#X connect 13 0 5 0; -#X connect 14 0 6 0; -#X connect 15 0 7 0; -#X connect 16 0 8 0; -#X connect 17 0 9 0; -#X connect 18 0 10 0; -#X connect 27 0 19 0; -#X connect 28 0 20 0; -#X connect 29 0 21 0; -#X connect 30 0 22 0; -#X connect 31 0 23 0; -#X connect 32 0 24 0; -#X connect 33 0 25 0; -#X connect 34 0 26 0; diff --git a/extensions/xgui/doc/Kroonde/Koonfig_ip_dest.pd b/extensions/xgui/doc/Kroonde/Koonfig_ip_dest.pd deleted file mode 100644 index c37480a070f6f69b6ed1f68df7c6a45d501f77a1..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/Kroonde/Koonfig_ip_dest.pd +++ /dev/null @@ -1,72 +0,0 @@ -#N canvas 0 0 621 596 12; -#X obj 200 65 inlet; -#X obj 251 65 inlet; -#X obj 302 65 inlet; -#X obj 360 65 inlet; -#X floatatom 302 93 5 0 0; -#X floatatom 251 93 5 0 0; -#X floatatom 200 93 5 0 0; -#X obj 200 121 >> 4; -#X obj 200 177 % 16; -#X obj 251 121 >> 4; -#X obj 251 177 % 16; -#X obj 302 121 >> 4; -#X obj 302 177 % 16; -#X obj 22 93 t b b b b b b b b; -#X obj 405 260 ctlout 50 10; -#X obj 405 288 ctlout 51 10; -#X obj 405 316 ctlout 52 10; -#X obj 405 344 ctlout 53 10; -#X obj 405 372 ctlout 54 10; -#X obj 405 400 ctlout 55 10; -#X obj 405 428 ctlout 56 10; -#X obj 405 456 ctlout 57 10; -#X obj 200 149 f; -#X obj 200 205 f; -#X obj 251 149 f; -#X obj 251 205 f; -#X obj 302 149 f; -#X obj 302 205 f; -#X floatatom 360 93 5 0 0; -#X obj 360 121 >> 4; -#X obj 360 177 % 16; -#X obj 360 149 f; -#X obj 360 205 f; -#X obj 22 65 inlet; -#X connect 0 0 6 0; -#X connect 1 0 5 0; -#X connect 2 0 4 0; -#X connect 3 0 28 0; -#X connect 4 0 11 0; -#X connect 4 0 12 0; -#X connect 5 0 9 0; -#X connect 5 0 10 0; -#X connect 6 0 7 0; -#X connect 6 0 8 0; -#X connect 7 0 22 1; -#X connect 8 0 23 1; -#X connect 9 0 24 1; -#X connect 10 0 25 1; -#X connect 11 0 26 1; -#X connect 12 0 27 1; -#X connect 13 0 22 0; -#X connect 13 1 23 0; -#X connect 13 2 24 0; -#X connect 13 3 25 0; -#X connect 13 4 26 0; -#X connect 13 5 27 0; -#X connect 13 6 31 0; -#X connect 13 7 32 0; -#X connect 22 0 21 0; -#X connect 23 0 20 0; -#X connect 24 0 19 0; -#X connect 25 0 18 0; -#X connect 26 0 17 0; -#X connect 27 0 16 0; -#X connect 28 0 29 0; -#X connect 28 0 30 0; -#X connect 29 0 31 1; -#X connect 30 0 32 1; -#X connect 31 0 15 0; -#X connect 32 0 14 0; -#X connect 33 0 13 0; diff --git a/extensions/xgui/doc/Kroonde/Koonfig_my_ip.pd b/extensions/xgui/doc/Kroonde/Koonfig_my_ip.pd deleted file mode 100644 index 20108fbddad39c8e3faba204bb47dbf33f968d98..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/Kroonde/Koonfig_my_ip.pd +++ /dev/null @@ -1,72 +0,0 @@ -#N canvas 0 0 571 536 12; -#X obj 200 65 inlet; -#X obj 251 65 inlet; -#X obj 302 65 inlet; -#X obj 360 65 inlet; -#X floatatom 302 93 5 0 0; -#X floatatom 251 93 5 0 0; -#X floatatom 200 93 5 0 0; -#X obj 200 121 >> 4; -#X obj 200 177 % 16; -#X obj 251 121 >> 4; -#X obj 251 177 % 16; -#X obj 302 121 >> 4; -#X obj 302 177 % 16; -#X obj 22 93 t b b b b b b b b; -#X obj 200 149 f; -#X obj 200 205 f; -#X obj 251 149 f; -#X obj 251 205 f; -#X obj 302 149 f; -#X obj 302 205 f; -#X floatatom 360 93 5 0 0; -#X obj 360 121 >> 4; -#X obj 360 177 % 16; -#X obj 360 149 f; -#X obj 360 205 f; -#X obj 22 65 inlet; -#X obj 405 260 ctlout 60 10; -#X obj 405 288 ctlout 61 10; -#X obj 405 316 ctlout 62 10; -#X obj 405 344 ctlout 63 10; -#X obj 405 372 ctlout 64 10; -#X obj 405 400 ctlout 65 10; -#X obj 405 428 ctlout 66 10; -#X obj 405 456 ctlout 67 10; -#X connect 0 0 6 0; -#X connect 1 0 5 0; -#X connect 2 0 4 0; -#X connect 3 0 20 0; -#X connect 4 0 11 0; -#X connect 4 0 12 0; -#X connect 5 0 9 0; -#X connect 5 0 10 0; -#X connect 6 0 7 0; -#X connect 6 0 8 0; -#X connect 7 0 14 1; -#X connect 8 0 15 1; -#X connect 9 0 16 1; -#X connect 10 0 17 1; -#X connect 11 0 18 1; -#X connect 12 0 19 1; -#X connect 13 0 14 0; -#X connect 13 1 15 0; -#X connect 13 2 16 0; -#X connect 13 3 17 0; -#X connect 13 4 18 0; -#X connect 13 5 19 0; -#X connect 13 6 23 0; -#X connect 13 7 24 0; -#X connect 14 0 33 0; -#X connect 15 0 32 0; -#X connect 16 0 31 0; -#X connect 17 0 30 0; -#X connect 18 0 29 0; -#X connect 19 0 28 0; -#X connect 20 0 21 0; -#X connect 20 0 22 0; -#X connect 21 0 23 1; -#X connect 22 0 24 1; -#X connect 23 0 27 0; -#X connect 24 0 26 0; -#X connect 25 0 13 0; diff --git a/extensions/xgui/doc/Kroonde/Kroonde.pd b/extensions/xgui/doc/Kroonde/Kroonde.pd deleted file mode 100644 index 88513d8d48ee1ec82a845f570aaabd6864fdcf7f..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/Kroonde/Kroonde.pd +++ /dev/null @@ -1,8 +0,0 @@ -#N canvas 24 49 665 135 12; -#X obj 11 11 K_send; -#X obj 11 41 K_panel; -#X text 94 10 <- reception des informations udp; -#X text 94 37 <- panneau de control des informations venant du kroonde -; -#X obj 11 71 K_konfig; -#X text 95 70 <- configuration de l'addresse IP du kroonde; diff --git a/extensions/xgui/doc/Kroonde/calibration.pd b/extensions/xgui/doc/Kroonde/calibration.pd deleted file mode 100644 index a6b0cdf46ad2a8718d33de41d3bfdef870bbc68f..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/Kroonde/calibration.pd +++ /dev/null @@ -1,47 +0,0 @@ -#N canvas 372 103 208 379 12; -#X obj 16 15 inlet; -#X obj 106 16 inlet; -#X obj 105 78 gate; -#X msg 16 77 0; -#X msg 50 77 1023; -#X obj 143 153 f; -#X obj 54 154 f; -#X obj 106 153 min; -#X obj 16 153 max; -#X obj 80 349 outlet; -#X obj 16 44 select 1; -#X obj 106 112 t f f; -#X obj 16 114 t f f; -#X obj 80 259 range; -#X msg 106 226 0; -#X msg 141 226 1023; -#X obj 106 196 loadbang; -#X obj 80 287 min 1023; -#X obj 80 317 max 0; -#X connect 0 0 2 1; -#X connect 0 0 10 0; -#X connect 1 0 2 0; -#X connect 1 0 13 0; -#X connect 2 0 7 0; -#X connect 2 0 8 0; -#X connect 3 0 12 0; -#X connect 4 0 11 0; -#X connect 5 0 7 1; -#X connect 6 0 8 1; -#X connect 7 0 5 0; -#X connect 7 0 13 1; -#X connect 8 0 6 0; -#X connect 8 0 13 2; -#X connect 10 0 3 0; -#X connect 10 0 4 0; -#X connect 11 0 7 0; -#X connect 11 1 7 1; -#X connect 12 0 8 0; -#X connect 12 1 8 1; -#X connect 13 0 17 0; -#X connect 14 0 13 3; -#X connect 15 0 13 4; -#X connect 16 0 14 0; -#X connect 16 0 15 0; -#X connect 17 0 18 0; -#X connect 18 0 9 0; diff --git a/extensions/xgui/doc/Kroonde/inv1024.pd b/extensions/xgui/doc/Kroonde/inv1024.pd deleted file mode 100644 index 716f3060d7527d19031b30068b4fb7ecd938cbbb..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/Kroonde/inv1024.pd +++ /dev/null @@ -1,8 +0,0 @@ -#N canvas 0 0 144 174 12; -#X obj 46 20 inlet; -#X obj 46 51 * -1; -#X obj 46 81 + 1024; -#X obj 46 111 outlet; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X connect 2 0 3 0; diff --git a/extensions/xgui/doc/Kroonde/kroonde_dest_ip.pd b/extensions/xgui/doc/Kroonde/kroonde_dest_ip.pd deleted file mode 100644 index 2f5dde54143faa8e2e7c84158f904e9d8a752970..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/Kroonde/kroonde_dest_ip.pd +++ /dev/null @@ -1,49 +0,0 @@ -#N canvas 334 70 578 383 12; -#X obj 404 197 outlet; -#X obj 283 197 outlet; -#X obj 170 197 outlet; -#X obj 49 197 outlet; -#X obj 404 169 +; -#X obj 422 110 << 4; -#X obj 422 138 t b f; -#X obj 283 169 +; -#X obj 302 138 t b f; -#X obj 170 169 +; -#X obj 189 138 t b f; -#X obj 49 169 +; -#X obj 68 138 t b f; -#X obj 68 110 << 4; -#X obj 189 110 << 4; -#X obj 302 110 << 4; -#X obj 49 55 ctlin 56 11; -#X obj 68 82 ctlin 57 11; -#X obj 170 55 ctlin 54 11; -#X obj 189 82 ctlin 55 11; -#X obj 283 55 ctlin 52 11; -#X obj 302 82 ctlin 53 11; -#X obj 404 55 ctlin 50 11; -#X obj 422 82 ctlin 51 11; -#X connect 4 0 0 0; -#X connect 5 0 6 0; -#X connect 6 0 4 0; -#X connect 6 1 4 1; -#X connect 7 0 1 0; -#X connect 8 0 7 0; -#X connect 8 1 7 1; -#X connect 9 0 2 0; -#X connect 10 0 9 0; -#X connect 10 1 9 1; -#X connect 11 0 3 0; -#X connect 12 0 11 0; -#X connect 12 1 11 1; -#X connect 13 0 12 0; -#X connect 14 0 10 0; -#X connect 15 0 8 0; -#X connect 16 0 11 0; -#X connect 17 0 13 0; -#X connect 18 0 9 0; -#X connect 19 0 14 0; -#X connect 20 0 7 0; -#X connect 21 0 15 0; -#X connect 22 0 4 0; -#X connect 23 0 5 0; diff --git a/extensions/xgui/doc/Kroonde/kroonde_ip.pd b/extensions/xgui/doc/Kroonde/kroonde_ip.pd deleted file mode 100644 index 7a7e9addb3d48b0724d1fd2f84bd66f6172e9a6d..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/Kroonde/kroonde_ip.pd +++ /dev/null @@ -1,49 +0,0 @@ -#N canvas 0 0 582 387 12; -#X obj 404 197 outlet; -#X obj 283 197 outlet; -#X obj 170 197 outlet; -#X obj 49 197 outlet; -#X obj 404 169 +; -#X obj 422 108 << 4; -#X obj 422 136 t b f; -#X obj 283 169 +; -#X obj 303 136 t b f; -#X obj 170 169 +; -#X obj 189 136 t b f; -#X obj 49 169 +; -#X obj 67 136 t b f; -#X obj 67 108 << 4; -#X obj 189 108 << 4; -#X obj 303 108 << 4; -#X obj 48 55 ctlin 66 11; -#X obj 67 80 ctlin 67 11; -#X obj 172 55 ctlin 64 11; -#X obj 189 80 ctlin 65 11; -#X obj 284 55 ctlin 62 11; -#X obj 303 80 ctlin 63 11; -#X obj 405 55 ctlin 60 11; -#X obj 422 80 ctlin 61 11; -#X connect 4 0 0 0; -#X connect 5 0 6 0; -#X connect 6 0 4 0; -#X connect 6 1 4 1; -#X connect 7 0 1 0; -#X connect 8 0 7 0; -#X connect 8 1 7 1; -#X connect 9 0 2 0; -#X connect 10 0 9 0; -#X connect 10 1 9 1; -#X connect 11 0 3 0; -#X connect 12 0 11 0; -#X connect 12 1 11 1; -#X connect 13 0 12 0; -#X connect 14 0 10 0; -#X connect 15 0 8 0; -#X connect 16 0 11 0; -#X connect 17 0 13 0; -#X connect 18 0 9 0; -#X connect 19 0 14 0; -#X connect 20 0 7 0; -#X connect 21 0 15 0; -#X connect 22 0 4 0; -#X connect 23 0 5 0; diff --git a/extensions/xgui/doc/Kroonde/range.pd b/extensions/xgui/doc/Kroonde/range.pd deleted file mode 100644 index 822e314196fa3655c8a7126288813906b5add634..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/Kroonde/range.pd +++ /dev/null @@ -1,43 +0,0 @@ -#N canvas 0 0 281 385 12; -#X obj 16 45 inlet; -#X obj 63 45 inlet; -#X obj 109 45 inlet; -#X obj 154 45 inlet; -#X obj 200 45 inlet; -#X obj 125 112 -; -#X obj 109 76 t b f; -#X obj 154 113 -; -#X obj 16 168 -; -#X obj 16 76 t b f; -#X obj 125 218 /; -#X obj 125 170 t b f; -#X obj 154 264 *; -#X obj 186 306 +; -#X obj 154 77 t b f f; -#X obj 154 143 t b f; -#X obj 186 337 outlet; -#X obj 63 76 t f f; -#X connect 0 0 9 0; -#X connect 1 0 17 0; -#X connect 2 0 6 0; -#X connect 3 0 14 0; -#X connect 4 0 7 0; -#X connect 5 0 11 0; -#X connect 6 0 5 0; -#X connect 6 1 5 1; -#X connect 7 0 15 0; -#X connect 8 0 10 0; -#X connect 9 0 8 0; -#X connect 9 1 8 1; -#X connect 10 0 12 0; -#X connect 11 0 10 0; -#X connect 11 1 10 1; -#X connect 12 0 13 0; -#X connect 13 0 16 0; -#X connect 14 0 7 0; -#X connect 14 1 7 1; -#X connect 14 2 13 1; -#X connect 15 0 12 0; -#X connect 15 1 12 1; -#X connect 17 0 8 0; -#X connect 17 1 5 0; diff --git a/extensions/xgui/doc/Kroonde/stom.pd b/extensions/xgui/doc/Kroonde/stom.pd deleted file mode 100644 index ef33f39742ef968f14985987a1a0e9e521006120..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/Kroonde/stom.pd +++ /dev/null @@ -1,6 +0,0 @@ -#N canvas 0 0 96 133 12; -#X obj 19 17 inlet; -#X obj 19 45 >> 3; -#X obj 19 74 outlet; -#X connect 0 0 1 0; -#X connect 1 0 2 0; diff --git a/extensions/xgui/doc/Kroonde/tst.pd b/extensions/xgui/doc/Kroonde/tst.pd deleted file mode 100644 index 91e4bb0b114b7a796defb0de2549a6762f6be22c..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/Kroonde/tst.pd +++ /dev/null @@ -1,18 +0,0 @@ -#N canvas 0 0 452 302 12; -#X obj 155 143 calibration; -#X obj 109 75 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 -; -#X floatatom 258 44 5 0 0; -#X obj 265 98 change; -#X floatatom 151 191 5 0 0; -#X msg 330 2 2; -#X obj 223 196 bang; -#X obj 224 226 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X connect 0 0 4 0; -#X connect 0 0 6 0; -#X connect 1 0 0 0; -#X connect 2 0 3 0; -#X connect 3 0 0 1; -#X connect 5 0 3 0; -#X connect 6 0 7 0; diff --git a/extensions/xgui/doc/direct_test.pd b/extensions/xgui/doc/direct_test.pd deleted file mode 100644 index d5124e51a401388d51e37beb138a6687681d08d8..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/direct_test.pd +++ /dev/null @@ -1,18 +0,0 @@ -#N canvas 410 111 454 304 12; -#X obj 9 205 netsend; -#X msg 9 7 connect localhost 4877; -#X floatatom 8 235 5 0 0; -#X msg 9 34 disconnect; -#X msg 110 35 send pd/ ~/ add_canvas my_canvas; -#X msg 110 62 send pd/ ~/my_canvas add_seg my_seg; -#X msg 110 90 send pd/ ~/my_canvas/my_seg move 2 2; -#X msg 132 145 send pd/ ~/my_canvas/my_seg width \$1; -#X floatatom 132 119 5 0 0; -#X connect 0 0 2 0; -#X connect 1 0 0 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 5 0 0 0; -#X connect 6 0 0 0; -#X connect 7 0 0 0; -#X connect 8 0 7 0; diff --git a/extensions/xgui/doc/help-send2.pd b/extensions/xgui/doc/help-send2.pd deleted file mode 100644 index c7d11764d1799888a8cf907646b8cc4be2cfc7c9..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/help-send2.pd +++ /dev/null @@ -1,18 +0,0 @@ -#N canvas 416 250 458 308 12; -#X obj 216 222 receive bla; -#X obj 321 222 receive foo; -#X obj 216 250 print bla; -#X obj 321 250 print foo; -#X msg 32 104 bla 17.3 23; -#X msg 76 183 foo 13 \, bla 4; -#X text 148 75 use message: <name> <data>; -#X text 253 91 with data of any type; -#X text 89 26 written by Olaf Matthes <olaf.matthes@gmx.de>; -#X msg 61 147 foo five is 2 more than 3; -#X text 9 9 send2 :: send data to any receive object; -#X obj 32 224 send2; -#X connect 0 0 2 0; -#X connect 1 0 3 0; -#X connect 4 0 11 0; -#X connect 5 0 11 0; -#X connect 9 0 11 0; diff --git a/extensions/xgui/doc/help_atom.pd b/extensions/xgui/doc/help_atom.pd deleted file mode 100644 index 0663218688799d40329fb8dc47cf1d8416b9b92f..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/help_atom.pd +++ /dev/null @@ -1,11 +0,0 @@ -#N canvas 356 218 450 300 10; -#X msg 34 29 move 2 3; -#X obj 42 132 print; -#X msg 53 53 ?coord; -#X text 325 257 dh20020401; -#X msg 15 8 !coord 10 10; -#X obj 42 107 atom my_first_atom 10 10; -#X connect 0 0 5 0; -#X connect 2 0 5 0; -#X connect 4 0 5 0; -#X connect 5 0 1 0; diff --git a/extensions/xgui/doc/help_convert.pd b/extensions/xgui/doc/help_convert.pd deleted file mode 100644 index efee35c4702d7f632bb5136f3300bba8ab2b9b80..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/help_convert.pd +++ /dev/null @@ -1,8 +0,0 @@ -#N canvas 494 512 450 300 12; -#X obj 78 114 convert truc bidule; -#X text 16 12 help_convert; -#X obj 78 142 print; -#X msg 78 87 truc 1 2 3; -#X text 322 256 dh20020401; -#X connect 0 0 2 0; -#X connect 3 0 0 0; diff --git a/extensions/xgui/doc/help_damping.pd b/extensions/xgui/doc/help_damping.pd deleted file mode 100644 index 2cd0dc3c665ad1567041d7e7f5d9a078ac2d663a..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/help_damping.pd +++ /dev/null @@ -1,15 +0,0 @@ -#N canvas 333 240 450 300 10; -#X text 19 11 help damping; -#X msg 62 64 !c 10; -#X msg 62 86 !c 1; -#X obj 49 132 damping my_first_damping 10; -#X obj 45 164 print; -#X msg 109 90 ?c; -#X msg 156 78 ?force; -#X msg 239 60 mass 0 0 10 10; -#X connect 1 0 3 0; -#X connect 2 0 3 0; -#X connect 3 0 4 0; -#X connect 5 0 3 0; -#X connect 6 0 3 0; -#X connect 7 0 3 1; diff --git a/extensions/xgui/doc/help_mass.pd b/extensions/xgui/doc/help_mass.pd deleted file mode 100644 index 9196b5f6aceb82735bc417e24aa6e77b4c11e7c3..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/help_mass.pd +++ /dev/null @@ -1,14 +0,0 @@ -#N canvas 356 487 450 300 10; -#X obj 90 138 mass 1 10 10 7; -#X msg 39 42 !mass 2; -#X msg 58 64 ?mass; -#X obj 90 163 print; -#X msg 119 39 !coord 10 10; -#X msg 124 61 ?coord; -#X msg 128 86 move 1 1; -#X connect 0 0 3 0; -#X connect 1 0 0 0; -#X connect 2 0 0 0; -#X connect 4 0 0 0; -#X connect 5 0 0 0; -#X connect 6 0 0 0; diff --git a/extensions/xgui/doc/help_object_arc.pd b/extensions/xgui/doc/help_object_arc.pd deleted file mode 100644 index d8ebbe34dc70430b2d92cfc4dced128bbf95fef7..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/help_object_arc.pd +++ /dev/null @@ -1,75 +0,0 @@ -#N canvas 361 147 573 502 10; -#X msg 130 65 hide; -#X msg 19 200 hide; -#X obj 9 29 t b b b; -#X obj 9 7 loadbang; -#X msg 10 65 show \, size 150 150; -#X text 426 344 dh20020426; -#X floatatom 370 146 5 0 0; -#X floatatom 424 146 5 0 0; -#X obj 9 429 print from_arc; -#X msg 213 143 start \$1; -#X floatatom 200 99 5 0 0; -#X msg 156 145 angle \$1; -#X msg 200 54 add 1 \, bang; -#X msg 200 9 bang; -#X obj 200 31 metro 10; -#X obj 212 121 * 2; -#X msg 193 277 style arc; -#X msg 193 298 style chord; -#X msg 92 222 border green; -#X msg 193 319 style pieslice; -#X floatatom 90 246 5 0 0; -#X msg 87 271 width \$1; -#X obj 200 76 number \$0-c1 0; -#X obj 10 87 canvas */c3; -#X msg 343 26 do */c3 add_arc a1; -#X obj 343 345 s to_node; -#X obj 9 406 arc a1 */c3/a1; -#X msg 9 174 show \, color black \, coord 20 20 130 130; -#X msg 343 70 do */c3/a1 coord 20 20 30 30; -#X msg 343 48 do */c3/a1 move 1 1; -#X msg 343 92 do */c3/a1 color blue; -#X msg 343 116 do */c3/a1 border red; -#X msg 343 170 do */c3/a1 start \$1; -#X msg 343 194 do */c3/a1 angle \$1; -#X msg 343 220 do */c3/a1 style arc; -#X msg 343 244 do */c3/a1 style chord; -#X msg 343 267 do */c3/a1 c3 a1 style pieslice; -#X msg 343 312 do */c3 del a1; -#X connect 0 0 23 0; -#X connect 1 0 26 0; -#X connect 2 0 27 0; -#X connect 2 2 4 0; -#X connect 3 0 2 0; -#X connect 4 0 23 0; -#X connect 6 0 32 0; -#X connect 7 0 33 0; -#X connect 9 0 26 0; -#X connect 10 0 11 0; -#X connect 10 0 15 0; -#X connect 11 0 26 0; -#X connect 12 0 22 0; -#X connect 13 0 14 0; -#X connect 14 0 12 0; -#X connect 15 0 9 0; -#X connect 16 0 26 0; -#X connect 17 0 26 0; -#X connect 18 0 26 0; -#X connect 19 0 26 0; -#X connect 20 0 21 0; -#X connect 21 0 26 0; -#X connect 22 0 10 0; -#X connect 24 0 25 0; -#X connect 26 0 8 0; -#X connect 27 0 26 0; -#X connect 28 0 25 0; -#X connect 29 0 25 0; -#X connect 30 0 25 0; -#X connect 31 0 25 0; -#X connect 32 0 25 0; -#X connect 33 0 25 0; -#X connect 34 0 25 0; -#X connect 35 0 25 0; -#X connect 36 0 25 0; -#X connect 37 0 25 0; diff --git a/extensions/xgui/doc/help_object_rect.pd b/extensions/xgui/doc/help_object_rect.pd deleted file mode 100644 index 575c2269fb45d4ce09b42ba4b9a237b4fc6f8d8b..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/help_object_rect.pd +++ /dev/null @@ -1,51 +0,0 @@ -#N canvas 336 286 557 374 10; -#X msg 130 65 hide; -#X msg 19 200 hide; -#X obj 41 289 move; -#X obj 9 29 t b b b; -#X obj 9 7 loadbang; -#X obj 358 311 s to_seg; -#X msg 10 65 show \, size 150 150; -#X text 441 310 dh20020425; -#X obj 76 290 light_over; -#X msg 358 125 send c2 add_rect r1 10 10 20 20; -#X msg 358 191 send c2 r1 color blue; -#X msg 358 169 send c2 r1 coord 20 20 30 30; -#X msg 358 147 send c2 r1 move 1 1; -#X msg 358 260 send c2 del r1; -#X msg 358 215 send c2 r1 border red; -#X obj 10 311 print from_rect; -#X msg 92 222 border red; -#X msg 9 174 show \, color black; -#X msg 92 244 width 1; -#X msg 210 163 show; -#X obj 10 87 canvas */c2; -#X obj 10 269 rect r1 */c2/r1; -#X obj 220 225 print; -#X msg 244 162 hide; -#X obj 131 117 print c3; -#X obj 209 187 i-rect */c2; -#X connect 0 0 20 0; -#X connect 1 0 21 0; -#X connect 2 0 21 0; -#X connect 3 0 17 0; -#X connect 3 2 6 0; -#X connect 4 0 3 0; -#X connect 6 0 20 0; -#X connect 8 0 21 0; -#X connect 9 0 5 0; -#X connect 10 0 5 0; -#X connect 11 0 5 0; -#X connect 12 0 5 0; -#X connect 13 0 5 0; -#X connect 14 0 5 0; -#X connect 16 0 21 0; -#X connect 17 0 21 0; -#X connect 18 0 21 0; -#X connect 19 0 25 0; -#X connect 20 0 24 0; -#X connect 21 0 15 0; -#X connect 21 0 2 0; -#X connect 21 0 8 0; -#X connect 23 0 25 0; -#X connect 25 0 22 0; diff --git a/extensions/xgui/doc/help_object_text.pd b/extensions/xgui/doc/help_object_text.pd deleted file mode 100644 index 352f36e3282c4d71505d0f0b6e001a3c86ce0fde..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/help_object_text.pd +++ /dev/null @@ -1,78 +0,0 @@ -#N canvas 305 23 561 378 10; -#X msg 142 68 hide; -#X obj 10 311 print from_text; -#X floatatom 20 239 5 0 0; -#X msg 481 46 hide; -#X obj 274 91 move; -#X obj 9 29 t b b b; -#X obj 9 7 loadbang; -#X floatatom 367 283 5 0 0; -#X msg 274 46 show \, width 10 \, coord 10 10 10 10; -#X msg 10 65 show \, size 150 150; -#X msg 86 111 coord \$1 \$2 \$1 \$2; -#X obj 274 112 coord2xy; -#X obj 109 311 print from_text; -#X floatatom 122 243 5 0 0; -#X text 441 335 dh20020425; -#X obj 410 91 light_over; -#X obj 307 91 width_over 10 13; -#X msg 20 261 text \$1; -#X msg 122 265 text \$1; -#X obj 10 288 text t1 */c1/t1; -#X obj 10 87 canvas */c1; -#X obj 274 68 seg s1 */c1/s1; -#X obj 110 289 text t2 */c1/t2; -#X msg 9 174 show \, color red \, anchor se \, pos 120 145 \, text -0; -#X msg 21 201 show \, color red \, anchor se \, pos 145 145 \, text -0; -#X msg 367 305 do */c1/t1 text \$1; -#X msg 358 147 do */c1/t1 move 1 1; -#X msg 358 169 do */c1/t1 pos 10 10; -#X msg 358 191 do */c1/t1 color blue; -#X msg 358 237 do */c1/t1 anchor ne; -#X obj 358 336 s to_node; -#X msg 358 125 do */c1 add_text t1; -#X msg 358 214 do */c1 del t1; -#X obj 86 89 route click drag; -#X msg 131 137 move \$1 \$2; -#X connect 0 0 20 0; -#X connect 2 0 17 0; -#X connect 3 0 21 0; -#X connect 4 0 21 0; -#X connect 5 0 23 0; -#X connect 5 0 24 0; -#X connect 5 1 8 0; -#X connect 5 2 9 0; -#X connect 6 0 5 0; -#X connect 7 0 25 0; -#X connect 7 0 25 0; -#X connect 8 0 21 0; -#X connect 9 0 20 0; -#X connect 10 0 21 0; -#X connect 10 0 11 0; -#X connect 11 0 2 0; -#X connect 11 1 13 0; -#X connect 13 0 18 0; -#X connect 15 0 21 0; -#X connect 16 0 21 0; -#X connect 17 0 19 0; -#X connect 18 0 22 0; -#X connect 19 0 1 0; -#X connect 20 0 33 0; -#X connect 21 0 4 0; -#X connect 21 0 11 0; -#X connect 21 0 15 0; -#X connect 21 0 16 0; -#X connect 22 0 12 0; -#X connect 23 0 19 0; -#X connect 24 0 22 0; -#X connect 25 0 30 0; -#X connect 26 0 30 0; -#X connect 27 0 30 0; -#X connect 28 0 30 0; -#X connect 29 0 30 0; -#X connect 31 0 30 0; -#X connect 32 0 30 0; -#X connect 33 0 10 0; -#X connect 33 1 34 0; diff --git a/extensions/xgui/doc/help_spring.pd b/extensions/xgui/doc/help_spring.pd deleted file mode 100644 index 3d9c6077c570bc4495af83bc1f199c50cd335016..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/help_spring.pd +++ /dev/null @@ -1,34 +0,0 @@ -#N canvas 300 301 671 472 10; -#X msg 40 26 ?l; -#X msg 189 20 ?k; -#X msg 72 27 !l 50; -#X msg 73 48 !l 100; -#X msg 41 49 l; -#X msg 222 26 ?force1; -#X msg 224 50 ?force2; -#X msg 139 48 !k 50; -#X msg 141 25 !k 1; -#X obj 423 221 print s2; -#X obj 289 225 print s1; -#X msg 438 110 mass 30 30; -#X msg 289 109 mass 20 30; -#X obj 151 215 print spring; -#X msg 298 135 mass 30 30; -#X msg 438 134 mass 20 30; -#X msg 438 86 mass 40 30; -#X obj 153 185 spring my_first_spring 1 100 10 10 20 20; -#X connect 0 0 17 0; -#X connect 1 0 17 0; -#X connect 2 0 17 0; -#X connect 3 0 17 0; -#X connect 4 0 17 0; -#X connect 5 0 17 0; -#X connect 6 0 17 0; -#X connect 7 0 17 0; -#X connect 8 0 17 0; -#X connect 11 0 17 2; -#X connect 12 0 17 1; -#X connect 14 0 17 1; -#X connect 15 0 17 2; -#X connect 16 0 17 2; -#X connect 17 0 13 0; diff --git a/extensions/xgui/doc/help_valueinit.pd b/extensions/xgui/doc/help_valueinit.pd deleted file mode 100644 index 0bbb9d39be65e0deb8c793c14eb88ed0af88d425..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/help_valueinit.pd +++ /dev/null @@ -1,8 +0,0 @@ -#N canvas 472 575 450 300 12; -#X obj 59 146 value test; -#X obj 40 40 valueinit test 10; -#X msg 60 117 bang; -#X obj 53 180 print; -#X text 180 189 comment; -#X connect 0 0 3 0; -#X connect 2 0 0 0; diff --git a/extensions/xgui/doc/help_vector.pd b/extensions/xgui/doc/help_vector.pd deleted file mode 100644 index 6ad1ae0278cb6baf014768b3820840de249d4882..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/help_vector.pd +++ /dev/null @@ -1,34 +0,0 @@ -#N canvas 380 381 745 410 10; -#X text 419 209 dh20020402; -#X msg 15 8 !xy 10 10; -#X msg 103 51 add 0 1; -#X msg 101 29 add 1 0; -#X msg 38 38 ?xy; -#X msg 223 7 !xy 10 10; -#X msg 311 50 add 0 1; -#X msg 309 28 add 1 0; -#X msg 246 37 ?xy; -#X text 22 170 same name => same object !!!!; -#X text 22 208 but be aware to have the same init value !!!; -#X obj 42 132 print a; -#X obj 250 131 print b; -#X obj 250 106 vector my_first_vector 10 10; -#X obj 42 107 vector my_first_vector 10 10; -#X msg 386 10 substract 1 1; -#X msg 410 47 ?abs; -#X msg 519 45 !abs 1; -#X msg 518 69 !abs 10; -#X connect 1 0 14 0; -#X connect 2 0 14 0; -#X connect 3 0 14 0; -#X connect 4 0 14 0; -#X connect 5 0 13 0; -#X connect 6 0 13 0; -#X connect 7 0 13 0; -#X connect 8 0 13 0; -#X connect 13 0 12 0; -#X connect 14 0 11 0; -#X connect 15 0 13 0; -#X connect 16 0 13 0; -#X connect 17 0 13 0; -#X connect 18 0 13 0; diff --git a/extensions/xgui/doc/sound/09_more_physics3.pd b/extensions/xgui/doc/sound/09_more_physics3.pd deleted file mode 100644 index d12a12d3964719334f859f020da2e7eb05da1991..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/sound/09_more_physics3.pd +++ /dev/null @@ -1,217 +0,0 @@ -#N canvas 325 6 668 671 12; -#X msg 466 13 show; -#X obj 7 37 loadbang; -#X obj 33 75 t b b b b; -#X msg 218 9 on; -#X msg 220 87 xy1 \$1 \$2; -#X msg 324 86 xy2 \$1 \$2; -#X text 52 202 dh20020404; -#X msg 230 168 xy1 \$1 \$2; -#X msg 326 168 xy2 \$1 \$2; -#X msg 221 406 xy1 \$1 \$2; -#X msg 314 404 xy2 \$1 \$2; -#X obj 470 91 seg l1 */my_string/l1; -#X obj 475 168 seg l2 */my_string/l2; -#X msg 216 490 xy1 \$1 \$2; -#X msg 317 490 xy2 \$1 \$2; -#X msg 209 573 xy1 \$1 \$2; -#X msg 315 572 xy2 \$1 \$2; -#X obj 477 50 seg m1 */my_string/m1; -#X msg 219 245 xy1 \$1 \$2; -#X msg 317 242 xy2 \$1 \$2; -#X obj 463 254 seg l3 */my_string/l3; -#X msg 220 320 xy1 \$1 \$2; -#X msg 321 321 xy2 \$1 \$2; -#X obj 458 337 seg l4 */my_string/l4; -#X obj 340 757 seg m2 */my_string/m2; -#X obj 452 420 seg l5 */my_string/l5; -#X obj 455 508 seg l6 */my_string/l6; -#X obj 571 14 light_over; -#X msg 515 13 raise; -#X msg 212 653 xy1 \$1 \$2; -#X msg 318 652 xy2 \$1 \$2; -#X msg 102 771 xy1 \$1 \$2; -#X msg 208 770 xy2 \$1 \$2; -#X obj 458 588 seg l7 */my_string/l7; -#X obj 450 666 seg l8 */my_string/l8; -#X msg 506 -9 width 30; -#X msg 30 662 width 10; -#X text 60 224 dh20020405; -#X text 24 9 a nice string...; -#X obj 102 745 mass m9 50 250 100 0 0; -#X obj 230 142 mass m2 1 250 240 0 0; -#X obj 219 219 mass m3 1 250 220 0 0; -#X obj 220 294 mass m4 1 250 200 0 0; -#X obj 221 380 mass m5 1 250 180 0 0; -#X obj 210 465 mass m6 1 250 160 0 0; -#X obj 209 547 mass m7 1 250 140 0 0; -#X obj 212 627 mass m8 1 250 120 0 0; -#X obj 237 36 force f1 0 10000; -#X obj 164 720 damping d9 3000; -#X obj 330 779 spring sl 5000 0 250 250 250 100; -#X obj 450 692 spring s9 1000 20; -#X obj 458 614 spring s8 1000 20; -#X obj 455 534 spring s6 1000 20; -#X obj 452 446 spring s5 1000 20; -#X obj 458 363 spring s4 1000 20; -#X obj 463 280 spring s3 1000 20; -#X obj 461 195 spring s2 1000 20; -#X obj 470 118 spring s1 1000 20; -#X obj 282 13 damping d1 10; -#X obj 291 121 damping d2 10; -#X obj 281 195 damping d3 10; -#X obj 285 270 damping d4 10; -#X obj 282 356 damping d5 10; -#X obj 285 438 damping d6 10; -#X obj 271 522 damping d7 10; -#X obj 274 602 damping d8 10; -#X text 21 -11 This example is running OK on a PIII 800; -#X msg 51 101 show \, size 500 800; -#X msg 70 125 color white; -#X obj 53 156 canvas */my_string; -#X obj 85 267 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -262144 --1 -1 12700 1; -#X obj 22 581 -; -#X obj 43 544 t f f; -#X obj 40 328 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 0 1; -#X obj 20 469 -; -#X obj 41 432 t f f; -#X msg 24 512 drag \$1 0; -#X msg 26 624 drag 0 \$1; -#X obj 219 61 mass m1 2 250 260 0 0; -#X connect 0 0 12 0; -#X connect 0 0 17 0; -#X connect 0 0 11 0; -#X connect 0 0 24 0; -#X connect 0 0 20 0; -#X connect 0 0 23 0; -#X connect 0 0 25 0; -#X connect 0 0 26 0; -#X connect 0 0 33 0; -#X connect 0 0 34 0; -#X connect 1 0 2 0; -#X connect 2 0 35 0; -#X connect 2 0 28 0; -#X connect 2 0 3 0; -#X connect 2 1 0 0; -#X connect 2 2 68 0; -#X connect 2 3 67 0; -#X connect 3 0 39 0; -#X connect 3 0 40 0; -#X connect 3 0 41 0; -#X connect 3 0 42 0; -#X connect 3 0 43 0; -#X connect 3 0 44 0; -#X connect 3 0 45 0; -#X connect 3 0 46 0; -#X connect 3 0 78 0; -#X connect 4 0 11 0; -#X connect 4 0 17 0; -#X connect 5 0 17 0; -#X connect 7 0 12 0; -#X connect 8 0 11 0; -#X connect 9 0 25 0; -#X connect 10 0 23 0; -#X connect 13 0 26 0; -#X connect 14 0 25 0; -#X connect 15 0 33 0; -#X connect 16 0 26 0; -#X connect 17 0 27 0; -#X connect 18 0 20 0; -#X connect 19 0 12 0; -#X connect 21 0 23 0; -#X connect 22 0 20 0; -#X connect 27 0 17 0; -#X connect 28 0 17 0; -#X connect 29 0 34 0; -#X connect 30 0 33 0; -#X connect 31 0 24 0; -#X connect 32 0 34 0; -#X connect 32 0 24 0; -#X connect 35 0 17 0; -#X connect 36 0 24 0; -#X connect 39 1 31 0; -#X connect 39 1 32 0; -#X connect 39 1 48 1; -#X connect 39 1 49 1; -#X connect 39 1 50 2; -#X connect 40 1 7 0; -#X connect 40 1 8 0; -#X connect 40 1 56 1; -#X connect 40 1 57 2; -#X connect 40 1 59 1; -#X connect 41 1 18 0; -#X connect 41 1 19 0; -#X connect 41 1 55 1; -#X connect 41 1 56 2; -#X connect 41 1 60 1; -#X connect 42 1 21 0; -#X connect 42 1 22 0; -#X connect 42 1 54 1; -#X connect 42 1 55 2; -#X connect 42 1 61 1; -#X connect 43 1 9 0; -#X connect 43 1 10 0; -#X connect 43 1 53 1; -#X connect 43 1 54 2; -#X connect 43 1 62 1; -#X connect 44 1 13 0; -#X connect 44 1 14 0; -#X connect 44 1 52 1; -#X connect 44 1 53 2; -#X connect 44 1 63 1; -#X connect 45 1 15 0; -#X connect 45 1 16 0; -#X connect 45 1 51 1; -#X connect 45 1 52 2; -#X connect 45 1 64 1; -#X connect 46 1 29 0; -#X connect 46 1 30 0; -#X connect 46 1 50 1; -#X connect 46 1 51 2; -#X connect 46 1 65 1; -#X connect 47 1 78 1; -#X connect 48 1 39 1; -#X connect 49 1 39 1; -#X connect 50 1 46 1; -#X connect 50 2 39 1; -#X connect 51 1 45 1; -#X connect 51 2 46 1; -#X connect 52 1 44 1; -#X connect 52 2 45 1; -#X connect 53 1 43 1; -#X connect 53 2 44 1; -#X connect 54 1 42 1; -#X connect 54 2 43 1; -#X connect 55 1 41 1; -#X connect 55 2 42 1; -#X connect 56 1 40 1; -#X connect 56 2 41 1; -#X connect 57 1 78 1; -#X connect 57 2 40 1; -#X connect 57 2 40 1; -#X connect 58 1 78 1; -#X connect 59 1 40 1; -#X connect 60 1 41 1; -#X connect 61 1 42 1; -#X connect 62 1 43 1; -#X connect 63 1 44 1; -#X connect 64 1 45 1; -#X connect 65 1 46 1; -#X connect 67 0 69 0; -#X connect 68 0 69 0; -#X connect 70 0 72 0; -#X connect 71 0 77 0; -#X connect 72 0 71 1; -#X connect 72 1 71 0; -#X connect 73 0 75 0; -#X connect 74 0 76 0; -#X connect 75 0 74 1; -#X connect 75 1 74 0; -#X connect 76 0 39 0; -#X connect 77 0 39 0; -#X connect 78 1 4 0; -#X connect 78 1 5 0; -#X connect 78 1 57 1; -#X connect 78 1 58 1; diff --git a/extensions/xgui/doc/sound/09_more_physics4.pd b/extensions/xgui/doc/sound/09_more_physics4.pd deleted file mode 100644 index c037e56c54bc2358fcdb6e452a761fbaf2cb1cbd..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/sound/09_more_physics4.pd +++ /dev/null @@ -1,219 +0,0 @@ -#N canvas 325 6 670 673 12; -#X msg 466 13 show; -#X obj 7 37 loadbang; -#X obj 33 75 t b b b b; -#X msg 218 9 on; -#X msg 220 87 xy1 \$1 \$2; -#X msg 324 86 xy2 \$1 \$2; -#X text 52 202 dh20020404; -#X msg 230 168 xy1 \$1 \$2; -#X msg 326 168 xy2 \$1 \$2; -#X msg 221 406 xy1 \$1 \$2; -#X msg 314 404 xy2 \$1 \$2; -#X msg 216 490 xy1 \$1 \$2; -#X msg 317 490 xy2 \$1 \$2; -#X msg 209 573 xy1 \$1 \$2; -#X msg 315 572 xy2 \$1 \$2; -#X msg 219 245 xy1 \$1 \$2; -#X msg 317 242 xy2 \$1 \$2; -#X msg 220 320 xy1 \$1 \$2; -#X msg 321 321 xy2 \$1 \$2; -#X obj 571 14 light_over; -#X msg 515 13 raise; -#X msg 212 653 xy1 \$1 \$2; -#X msg 318 652 xy2 \$1 \$2; -#X msg 102 771 xy1 \$1 \$2; -#X msg 208 770 xy2 \$1 \$2; -#X msg 506 -9 width 30; -#X msg 335 727 width 10; -#X text 60 224 dh20020405; -#X text 24 9 a nice string...; -#X text 21 -11 This example is running OK on a PIII 800; -#X msg 51 101 show \, size 500 800; -#X msg 70 125 color white; -#X obj 53 156 canvas */my_string; -#X obj 85 267 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -262144 --1 -1 9400 1; -#X obj 22 581 -; -#X obj 43 544 t f f; -#X obj 40 328 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 800 1; -#X obj 20 469 -; -#X obj 41 432 t f f; -#X msg 24 512 drag \$1 0; -#X msg 26 624 drag 0 \$1; -#X obj 13 697 loadbang; -#X obj 282 13 damping \$0d1 10; -#X obj 237 36 force \$0f1 0 10000; -#X obj 219 61 mass \$0m1 2 250 260 0 0; -#X obj 291 121 damping \$0d2 10; -#X obj 230 142 mass \$0m2 1 250 240 0 0; -#X obj 281 195 damping \$0d3 10; -#X obj 219 219 mass \$0m3 1 250 220 0 0; -#X obj 285 270 damping \$0d4 10; -#X obj 220 294 mass \$0m4 1 250 200 0 0; -#X obj 282 356 damping \$0d5 10; -#X obj 221 380 mass \$0m5 1 250 180 0 0; -#X obj 285 438 damping \$0d6 10; -#X obj 210 465 mass \$0m6 1 250 160 0 0; -#X obj 271 522 damping \$0d7 10; -#X obj 209 547 mass \$0m7 1 250 140 0 0; -#X obj 274 602 damping \$0d8 10; -#X obj 212 627 mass \$0m8 1 250 120 0 0; -#X obj 477 50 seg \$0m1 */my_string/m1; -#X obj 470 91 seg \$0l1 */my_string/l1; -#X obj 470 118 spring \$0s1 1000 20; -#X obj 475 168 seg \$0l2 */my_string/l2; -#X obj 461 195 spring \$0s2 1000 20; -#X obj 463 254 seg \$0l3 */my_string/l3; -#X obj 463 280 spring \$0s3 1000 20; -#X obj 458 337 seg \$0l4 */my_string/l4; -#X obj 458 363 spring \$0s4 1000 20; -#X obj 452 420 seg \$0l5 */my_string/l5; -#X obj 452 446 spring \$0s5 1000 20; -#X obj 455 508 seg \$0l6 */my_string/l6; -#X obj 455 534 spring \$0s6 1000 20; -#X obj 458 588 seg \$0l7 */my_string/l7; -#X obj 458 614 spring \$0s8 1000 20; -#X obj 450 666 seg \$0l8 */my_string/l8; -#X obj 450 692 spring \$0s9 1000 20; -#X obj 340 757 seg \$0m2 */my_string/m2; -#X obj 330 779 spring \$0sl 5000 0 250 250 250 100; -#X obj 102 745 mass \$0m9 50 250 100 0 0; -#X obj 164 720 damping \$0d9 3000; -#X connect 0 0 59 0; -#X connect 0 0 60 0; -#X connect 0 0 62 0; -#X connect 0 0 64 0; -#X connect 0 0 66 0; -#X connect 0 0 68 0; -#X connect 0 0 70 0; -#X connect 0 0 72 0; -#X connect 0 0 74 0; -#X connect 0 0 76 0; -#X connect 1 0 2 0; -#X connect 2 0 25 0; -#X connect 2 0 20 0; -#X connect 2 0 3 0; -#X connect 2 1 0 0; -#X connect 2 2 31 0; -#X connect 2 3 30 0; -#X connect 3 0 44 0; -#X connect 3 0 46 0; -#X connect 3 0 48 0; -#X connect 3 0 50 0; -#X connect 3 0 52 0; -#X connect 3 0 54 0; -#X connect 3 0 56 0; -#X connect 3 0 58 0; -#X connect 3 0 78 0; -#X connect 4 0 59 0; -#X connect 4 0 60 0; -#X connect 5 0 59 0; -#X connect 7 0 62 0; -#X connect 8 0 60 0; -#X connect 9 0 68 0; -#X connect 10 0 66 0; -#X connect 11 0 70 0; -#X connect 12 0 68 0; -#X connect 13 0 72 0; -#X connect 14 0 70 0; -#X connect 15 0 64 0; -#X connect 16 0 62 0; -#X connect 17 0 66 0; -#X connect 18 0 64 0; -#X connect 19 0 59 0; -#X connect 20 0 59 0; -#X connect 21 0 74 0; -#X connect 22 0 72 0; -#X connect 23 0 76 0; -#X connect 24 0 74 0; -#X connect 24 0 76 0; -#X connect 25 0 59 0; -#X connect 26 0 76 0; -#X connect 30 0 32 0; -#X connect 31 0 32 0; -#X connect 33 0 35 0; -#X connect 34 0 40 0; -#X connect 35 0 34 1; -#X connect 35 1 34 0; -#X connect 36 0 38 0; -#X connect 37 0 39 0; -#X connect 38 0 37 1; -#X connect 38 1 37 0; -#X connect 39 0 78 0; -#X connect 40 0 78 0; -#X connect 41 0 26 0; -#X connect 42 1 44 1; -#X connect 43 1 44 1; -#X connect 44 1 4 0; -#X connect 44 1 5 0; -#X connect 44 1 42 1; -#X connect 44 1 61 1; -#X connect 45 1 46 1; -#X connect 46 1 7 0; -#X connect 46 1 8 0; -#X connect 46 1 45 1; -#X connect 46 1 61 2; -#X connect 46 1 63 1; -#X connect 47 1 48 1; -#X connect 48 1 15 0; -#X connect 48 1 16 0; -#X connect 48 1 47 1; -#X connect 48 1 63 2; -#X connect 48 1 65 1; -#X connect 49 1 50 1; -#X connect 50 1 17 0; -#X connect 50 1 18 0; -#X connect 50 1 49 1; -#X connect 50 1 65 2; -#X connect 50 1 67 1; -#X connect 51 1 52 1; -#X connect 52 1 9 0; -#X connect 52 1 10 0; -#X connect 52 1 51 1; -#X connect 52 1 67 2; -#X connect 52 1 69 1; -#X connect 53 1 54 1; -#X connect 54 1 11 0; -#X connect 54 1 12 0; -#X connect 54 1 53 1; -#X connect 54 1 69 2; -#X connect 54 1 71 1; -#X connect 55 1 56 1; -#X connect 56 1 13 0; -#X connect 56 1 14 0; -#X connect 56 1 55 1; -#X connect 56 1 71 2; -#X connect 56 1 73 1; -#X connect 57 1 58 1; -#X connect 58 1 21 0; -#X connect 58 1 22 0; -#X connect 58 1 57 1; -#X connect 58 1 73 2; -#X connect 58 1 75 1; -#X connect 59 0 19 0; -#X connect 61 1 44 1; -#X connect 61 2 46 1; -#X connect 61 2 46 1; -#X connect 63 1 46 1; -#X connect 63 2 48 1; -#X connect 65 1 48 1; -#X connect 65 2 50 1; -#X connect 67 1 50 1; -#X connect 67 2 52 1; -#X connect 69 1 52 1; -#X connect 69 2 54 1; -#X connect 71 1 54 1; -#X connect 71 2 56 1; -#X connect 73 1 56 1; -#X connect 73 2 58 1; -#X connect 75 1 58 1; -#X connect 75 2 78 1; -#X connect 77 1 78 1; -#X connect 78 1 23 0; -#X connect 78 1 24 0; -#X connect 78 1 75 2; -#X connect 78 1 77 1; -#X connect 78 1 79 1; -#X connect 79 1 78 1; diff --git a/extensions/xgui/doc/sound/09_more_physics5.pd b/extensions/xgui/doc/sound/09_more_physics5.pd deleted file mode 100644 index d4a6b3923dd44490d93803b39ec5978bd01be684..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/sound/09_more_physics5.pd +++ /dev/null @@ -1,238 +0,0 @@ -#N canvas 325 6 672 675 12; -#X msg 466 13 show; -#X obj 7 37 loadbang; -#X obj 33 75 t b b b b; -#X msg 218 9 on; -#X msg 220 87 xy1 \$1 \$2; -#X msg 324 86 xy2 \$1 \$2; -#X text 52 202 dh20020404; -#X msg 230 168 xy1 \$1 \$2; -#X msg 326 168 xy2 \$1 \$2; -#X msg 221 406 xy1 \$1 \$2; -#X msg 314 404 xy2 \$1 \$2; -#X msg 216 490 xy1 \$1 \$2; -#X msg 317 490 xy2 \$1 \$2; -#X msg 209 573 xy1 \$1 \$2; -#X msg 315 572 xy2 \$1 \$2; -#X msg 219 245 xy1 \$1 \$2; -#X msg 317 242 xy2 \$1 \$2; -#X msg 220 320 xy1 \$1 \$2; -#X msg 321 321 xy2 \$1 \$2; -#X msg 515 13 raise; -#X msg 212 653 xy1 \$1 \$2; -#X msg 318 652 xy2 \$1 \$2; -#X msg 102 771 xy1 \$1 \$2; -#X msg 208 770 xy2 \$1 \$2; -#X msg 506 -9 width 30; -#X msg 335 727 width 10; -#X text 60 224 dh20020405; -#X text 24 9 a nice string...; -#X text 21 -11 This example is running OK on a PIII 800; -#X msg 51 101 show \, size 500 800; -#X msg 70 125 color white; -#X obj 53 156 canvas */my_string; -#X obj 89 276 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -262144 --1 -1 7400 1; -#X obj 22 581 -; -#X obj 43 544 t f f; -#X obj 40 323 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 5000 1; -#X obj 20 469 -; -#X obj 41 432 t f f; -#X msg 24 512 drag \$1 0; -#X msg 26 624 drag 0 \$1; -#X obj 13 697 loadbang; -#X obj 282 13 damping \$0d1 10; -#X obj 237 36 force \$0f1 0 10000; -#X obj 219 61 mass \$0m1 2 250 260 0 0; -#X obj 291 121 damping \$0d2 10; -#X obj 230 142 mass \$0m2 1 250 240 0 0; -#X obj 281 195 damping \$0d3 10; -#X obj 219 219 mass \$0m3 1 250 220 0 0; -#X obj 285 270 damping \$0d4 10; -#X obj 220 294 mass \$0m4 1 250 200 0 0; -#X obj 282 356 damping \$0d5 10; -#X obj 221 380 mass \$0m5 1 250 180 0 0; -#X obj 285 438 damping \$0d6 10; -#X obj 210 465 mass \$0m6 1 250 160 0 0; -#X obj 271 522 damping \$0d7 10; -#X obj 209 547 mass \$0m7 1 250 140 0 0; -#X obj 277 599 damping \$0d8 10; -#X obj 212 627 mass \$0m8 1 250 120 0 0; -#X obj 477 50 seg \$0m1 */my_string/m1; -#X obj 470 91 seg \$0l1 */my_string/l1; -#X obj 470 118 spring \$0s1 1000 20; -#X obj 475 168 seg \$0l2 */my_string/l2; -#X obj 461 195 spring \$0s2 1000 20; -#X obj 463 254 seg \$0l3 */my_string/l3; -#X obj 463 280 spring \$0s3 1000 20; -#X obj 458 337 seg \$0l4 */my_string/l4; -#X obj 458 363 spring \$0s4 1000 20; -#X obj 452 420 seg \$0l5 */my_string/l5; -#X obj 452 446 spring \$0s5 1000 20; -#X obj 455 508 seg \$0l6 */my_string/l6; -#X obj 455 534 spring \$0s6 1000 20; -#X obj 458 588 seg \$0l7 */my_string/l7; -#X obj 458 614 spring \$0s8 1000 20; -#X obj 450 666 seg \$0l8 */my_string/l8; -#X obj 450 692 spring \$0s9 1000 20; -#X obj 340 757 seg \$0m2 */my_string/m2; -#X obj 330 779 spring \$0sl 5000 0 250 250 250 100; -#X obj 102 745 mass \$0m9 50 250 100 0 0; -#X obj 164 720 damping \$0d9 3000; -#X obj 154 391 s xy1; -#X obj 153 417 s xy2; -#X obj 153 447 s xy3; -#X obj 152 473 s xy4; -#X obj 153 498 s xy5; -#X obj 152 525 s xy6; -#X obj 150 554 s xy7; -#X obj 149 580 s xy8; -#X obj 150 605 s xy9; -#X obj 16 260 r x1; -#X obj 17 285 r y1; -#X connect 0 0 58 0; -#X connect 0 0 59 0; -#X connect 0 0 61 0; -#X connect 0 0 63 0; -#X connect 0 0 65 0; -#X connect 0 0 67 0; -#X connect 0 0 69 0; -#X connect 0 0 71 0; -#X connect 0 0 73 0; -#X connect 0 0 75 0; -#X connect 1 0 2 0; -#X connect 2 0 24 0; -#X connect 2 0 19 0; -#X connect 2 0 3 0; -#X connect 2 1 0 0; -#X connect 2 2 30 0; -#X connect 2 3 29 0; -#X connect 3 0 43 0; -#X connect 3 0 45 0; -#X connect 3 0 47 0; -#X connect 3 0 49 0; -#X connect 3 0 51 0; -#X connect 3 0 53 0; -#X connect 3 0 55 0; -#X connect 3 0 57 0; -#X connect 3 0 77 0; -#X connect 4 0 58 0; -#X connect 4 0 59 0; -#X connect 5 0 58 0; -#X connect 7 0 61 0; -#X connect 8 0 59 0; -#X connect 9 0 67 0; -#X connect 10 0 65 0; -#X connect 11 0 69 0; -#X connect 12 0 67 0; -#X connect 13 0 71 0; -#X connect 14 0 69 0; -#X connect 15 0 63 0; -#X connect 16 0 61 0; -#X connect 17 0 65 0; -#X connect 18 0 63 0; -#X connect 19 0 58 0; -#X connect 20 0 73 0; -#X connect 21 0 71 0; -#X connect 22 0 75 0; -#X connect 23 0 73 0; -#X connect 23 0 75 0; -#X connect 24 0 58 0; -#X connect 25 0 75 0; -#X connect 29 0 31 0; -#X connect 30 0 31 0; -#X connect 32 0 34 0; -#X connect 33 0 39 0; -#X connect 34 0 33 1; -#X connect 34 1 33 0; -#X connect 35 0 37 0; -#X connect 36 0 38 0; -#X connect 37 0 36 1; -#X connect 37 1 36 0; -#X connect 38 0 77 0; -#X connect 39 0 77 0; -#X connect 40 0 25 0; -#X connect 41 1 43 1; -#X connect 42 1 43 1; -#X connect 43 1 4 0; -#X connect 43 1 5 0; -#X connect 43 1 41 1; -#X connect 43 1 60 1; -#X connect 43 1 79 0; -#X connect 44 1 45 1; -#X connect 45 1 7 0; -#X connect 45 1 8 0; -#X connect 45 1 44 1; -#X connect 45 1 60 2; -#X connect 45 1 62 1; -#X connect 45 1 80 0; -#X connect 46 1 47 1; -#X connect 47 1 15 0; -#X connect 47 1 16 0; -#X connect 47 1 46 1; -#X connect 47 1 62 2; -#X connect 47 1 64 1; -#X connect 47 1 81 0; -#X connect 48 1 49 1; -#X connect 49 1 17 0; -#X connect 49 1 18 0; -#X connect 49 1 48 1; -#X connect 49 1 64 2; -#X connect 49 1 66 1; -#X connect 49 1 82 0; -#X connect 50 1 51 1; -#X connect 51 1 9 0; -#X connect 51 1 10 0; -#X connect 51 1 50 1; -#X connect 51 1 66 2; -#X connect 51 1 68 1; -#X connect 51 1 83 0; -#X connect 52 1 53 1; -#X connect 53 1 11 0; -#X connect 53 1 12 0; -#X connect 53 1 52 1; -#X connect 53 1 68 2; -#X connect 53 1 70 1; -#X connect 53 1 84 0; -#X connect 54 1 55 1; -#X connect 55 1 13 0; -#X connect 55 1 14 0; -#X connect 55 1 54 1; -#X connect 55 1 70 2; -#X connect 55 1 72 1; -#X connect 55 1 85 0; -#X connect 56 1 57 1; -#X connect 57 1 20 0; -#X connect 57 1 21 0; -#X connect 57 1 56 1; -#X connect 57 1 72 2; -#X connect 57 1 74 1; -#X connect 57 1 86 0; -#X connect 60 1 43 1; -#X connect 60 2 45 1; -#X connect 60 2 45 1; -#X connect 62 1 45 1; -#X connect 62 2 47 1; -#X connect 64 1 47 1; -#X connect 64 2 49 1; -#X connect 66 1 49 1; -#X connect 66 2 51 1; -#X connect 68 1 51 1; -#X connect 68 2 53 1; -#X connect 70 1 53 1; -#X connect 70 2 55 1; -#X connect 72 1 55 1; -#X connect 72 2 57 1; -#X connect 74 1 57 1; -#X connect 74 2 77 1; -#X connect 76 1 77 1; -#X connect 77 1 22 0; -#X connect 77 1 23 0; -#X connect 77 1 74 2; -#X connect 77 1 76 1; -#X connect 77 1 78 1; -#X connect 77 1 87 0; -#X connect 78 1 77 1; -#X connect 88 0 37 0; -#X connect 89 0 34 0; diff --git a/extensions/xgui/doc/sound/09_more_physics6.pd b/extensions/xgui/doc/sound/09_more_physics6.pd deleted file mode 100644 index 886038ac49edeafe0e38216f10e7eedf34f164a2..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/sound/09_more_physics6.pd +++ /dev/null @@ -1,462 +0,0 @@ -#N canvas -39 6 1006 674 12; -#X msg 473 120 show; -#X obj 8 62 loadbang; -#X obj 34 100 t b b b b; -#X msg 207 73 on; -#X msg 242 127 xy1 \$1 \$2; -#X msg 346 126 xy2 \$1 \$2; -#X text 52 202 dh20020404; -#X msg 240 200 xy1 \$1 \$2; -#X msg 336 200 xy2 \$1 \$2; -#X msg 224 422 xy1 \$1 \$2; -#X msg 317 420 xy2 \$1 \$2; -#X msg 218 498 xy1 \$1 \$2; -#X msg 319 498 xy2 \$1 \$2; -#X msg 209 573 xy1 \$1 \$2; -#X msg 315 572 xy2 \$1 \$2; -#X msg 233 276 xy1 \$1 \$2; -#X msg 331 273 xy2 \$1 \$2; -#X msg 228 347 xy1 \$1 \$2; -#X msg 329 348 xy2 \$1 \$2; -#X msg 522 120 raise; -#X msg 212 653 xy1 \$1 \$2; -#X msg 318 652 xy2 \$1 \$2; -#X msg 106 732 xy1 \$1 \$2; -#X msg 212 731 xy2 \$1 \$2; -#X msg 585 119 width 30; -#X msg 339 688 width 10; -#X text 60 224 dh20020405; -#X msg 71 150 color white; -#X obj 54 181 canvas */my_string; -#X obj 89 276 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -262144 --1 -1 5900 1; -#X obj 22 581 -; -#X obj 43 544 t f f; -#X obj 40 323 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 10800 1; -#X obj 20 469 -; -#X obj 41 432 t f f; -#X msg 24 512 drag \$1 0; -#X msg 26 624 drag 0 \$1; -#X obj 121 641 loadbang; -#X obj 304 53 damping \$0d1 10; -#X obj 259 76 force \$0f1 0 10000; -#X obj 241 101 mass \$0m1 2 250 260 0 0; -#X obj 301 153 damping \$0d2 10; -#X obj 240 174 mass \$0m2 1 250 240 0 0; -#X obj 295 226 damping \$0d3 10; -#X obj 233 250 mass \$0m3 1 250 220 0 0; -#X obj 293 297 damping \$0d4 10; -#X obj 228 321 mass \$0m4 1 250 200 0 0; -#X obj 285 372 damping \$0d5 10; -#X obj 224 396 mass \$0m5 1 250 180 0 0; -#X obj 287 446 damping \$0d6 10; -#X obj 212 473 mass \$0m6 1 250 160 0 0; -#X obj 271 522 damping \$0d7 10; -#X obj 209 547 mass \$0m7 1 250 140 0 0; -#X obj 277 599 damping \$0d8 10; -#X obj 212 627 mass \$0m8 1 250 120 0 0; -#X obj 476 152 seg \$0m1 */my_string/m1; -#X obj 472 191 seg \$0l1 */my_string/l1; -#X obj 472 218 spring \$0s1 1000 20; -#X obj 472 248 seg \$0l2 */my_string/l2; -#X obj 458 275 spring \$0s2 1000 20; -#X obj 455 313 seg \$0l3 */my_string/l3; -#X obj 455 339 spring \$0s3 1000 20; -#X obj 452 373 seg \$0l4 */my_string/l4; -#X obj 452 399 spring \$0s4 1000 20; -#X obj 454 428 seg \$0l5 */my_string/l5; -#X obj 454 454 spring \$0s5 1000 20; -#X obj 455 508 seg \$0l6 */my_string/l6; -#X obj 455 534 spring \$0s6 1000 20; -#X obj 458 588 seg \$0l7 */my_string/l7; -#X obj 458 614 spring \$0s8 1000 20; -#X obj 450 666 seg \$0l8 */my_string/l8; -#X obj 450 692 spring \$0s9 1000 20; -#X obj 344 718 seg \$0m2 */my_string/m2; -#X obj 334 740 spring \$0sl 5000 0 250 250 250 100; -#X obj 106 706 mass \$0m9 50 250 100 0 0; -#X obj 168 681 damping \$0d9 3000; -#X obj 154 391 s xy1; -#X obj 153 417 s xy2; -#X obj 153 447 s xy3; -#X obj 152 473 s xy4; -#X obj 153 498 s xy5; -#X obj 152 525 s xy6; -#X obj 150 554 s xy7; -#X obj 149 580 s xy8; -#X obj 150 605 s xy9; -#X obj 16 260 r x1; -#X obj 17 285 r y1; -#X msg 1138 109 show; -#X obj 673 51 loadbang; -#X obj 1137 40 t b b b b; -#X msg 872 62 on; -#X msg 907 116 xy1 \$1 \$2; -#X msg 1011 115 xy2 \$1 \$2; -#X msg 905 189 xy1 \$1 \$2; -#X msg 1001 189 xy2 \$1 \$2; -#X msg 889 411 xy1 \$1 \$2; -#X msg 982 409 xy2 \$1 \$2; -#X msg 883 487 xy1 \$1 \$2; -#X msg 984 487 xy2 \$1 \$2; -#X msg 874 562 xy1 \$1 \$2; -#X msg 980 561 xy2 \$1 \$2; -#X msg 898 265 xy1 \$1 \$2; -#X msg 996 262 xy2 \$1 \$2; -#X msg 893 336 xy1 \$1 \$2; -#X msg 994 337 xy2 \$1 \$2; -#X msg 1187 109 raise; -#X msg 877 642 xy1 \$1 \$2; -#X msg 983 641 xy2 \$1 \$2; -#X msg 771 721 xy1 \$1 \$2; -#X msg 877 720 xy2 \$1 \$2; -#X msg 1250 108 width 30; -#X msg 1004 677 width 10; -#X obj 761 262 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -262144 --1 -1 200 1; -#X obj 687 570 -; -#X obj 708 533 t f f; -#X obj 705 312 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 7600 1; -#X obj 685 458 -; -#X obj 706 421 t f f; -#X msg 689 501 drag \$1 0; -#X msg 691 613 drag 0 \$1; -#X obj 786 630 loadbang; -#X obj 950 361 damping \$0d5 10; -#X obj 681 249 r x1; -#X obj 682 274 r y1; -#X obj 969 42 damping d1 10; -#X obj 924 65 force f1 0 10000; -#X obj 906 90 mass m1 2 350 260 0 0; -#X obj 966 144 damping d2 10; -#X obj 905 163 mass m2 1 350 240 0 0; -#X obj 960 215 damping d3 10; -#X obj 958 286 damping d4 10; -#X obj 898 239 mass m3 1 350 220 0 0; -#X obj 893 310 mass m4 1 350 200 0 0; -#X obj 889 385 mass m5 1 350 180 0 0; -#X obj 953 435 damping d6 10; -#X obj 936 511 damping d7 10; -#X obj 878 462 mass m6 1 350 160 0 0; -#X obj 875 536 mass m7 1 350 140 0 0; -#X obj 876 616 mass m8 1 350 120 0 0; -#X obj 833 670 damping d9 3000; -#X obj 771 695 mass m9 50 350 100 0 0; -#X obj 1115 681 spring s9 1000 20; -#X obj 1123 603 spring s8 1000 20; -#X obj 1120 527 spring s6 1000 20; -#X obj 1119 443 spring s5 1000 20; -#X obj 1120 328 spring s3 1000 20; -#X obj 1123 264 spring s2 1000 20; -#X obj 1136 207 spring s1 1000 20; -#X obj 1117 388 spring s4 1000 20; -#X obj 942 588 damping d8 10; -#X obj 819 380 s xy11; -#X obj 819 408 s xy12; -#X obj 819 438 s xy13; -#X obj 819 462 s xy14; -#X obj 819 488 s xy15; -#X obj 818 516 s xy16; -#X obj 817 544 s xy17; -#X obj 816 570 s xy18; -#X obj 816 594 s xy19; -#X obj 1141 141 seg m1 */my_string/1m1; -#X obj 1137 180 seg l1 */my_string/1l1; -#X obj 1124 236 seg l2 */my_string/1l2; -#X obj 1120 302 seg l3 */my_string/1l3; -#X obj 1117 362 seg l4 */my_string/1l4; -#X obj 1119 417 seg l5 */my_string/1l5; -#X obj 1119 499 seg l6 */my_string/1l6; -#X obj 1123 577 seg l7 */my_string/1l7; -#X obj 1120 656 seg l8 */my_string/1l8; -#X obj 1009 707 seg m2 */my_string/1m2; -#X msg 53 126 show \, size 500 1500; -#X obj 1001 731 spring sl 5000 0 250 250 700 100; -#X connect 0 0 55 0; -#X connect 0 0 56 0; -#X connect 0 0 58 0; -#X connect 0 0 60 0; -#X connect 0 0 62 0; -#X connect 0 0 64 0; -#X connect 0 0 66 0; -#X connect 0 0 68 0; -#X connect 0 0 70 0; -#X connect 0 0 72 0; -#X connect 1 0 2 0; -#X connect 2 0 24 0; -#X connect 2 0 19 0; -#X connect 2 0 3 0; -#X connect 2 1 0 0; -#X connect 2 2 27 0; -#X connect 2 3 169 0; -#X connect 3 0 40 0; -#X connect 3 0 42 0; -#X connect 3 0 44 0; -#X connect 3 0 46 0; -#X connect 3 0 48 0; -#X connect 3 0 50 0; -#X connect 3 0 52 0; -#X connect 3 0 54 0; -#X connect 3 0 74 0; -#X connect 4 0 55 0; -#X connect 4 0 56 0; -#X connect 5 0 55 0; -#X connect 7 0 58 0; -#X connect 8 0 56 0; -#X connect 9 0 64 0; -#X connect 10 0 62 0; -#X connect 11 0 66 0; -#X connect 12 0 64 0; -#X connect 13 0 68 0; -#X connect 14 0 66 0; -#X connect 15 0 60 0; -#X connect 16 0 58 0; -#X connect 17 0 62 0; -#X connect 18 0 60 0; -#X connect 19 0 55 0; -#X connect 20 0 70 0; -#X connect 21 0 68 0; -#X connect 22 0 72 0; -#X connect 23 0 70 0; -#X connect 23 0 72 0; -#X connect 24 0 55 0; -#X connect 25 0 72 0; -#X connect 27 0 28 0; -#X connect 29 0 31 0; -#X connect 30 0 36 0; -#X connect 31 0 30 1; -#X connect 31 1 30 0; -#X connect 32 0 34 0; -#X connect 33 0 35 0; -#X connect 34 0 33 1; -#X connect 34 1 33 0; -#X connect 35 0 74 0; -#X connect 36 0 74 0; -#X connect 37 0 25 0; -#X connect 38 1 40 1; -#X connect 39 1 40 1; -#X connect 40 1 4 0; -#X connect 40 1 5 0; -#X connect 40 1 38 1; -#X connect 40 1 57 1; -#X connect 40 1 76 0; -#X connect 41 1 42 1; -#X connect 42 1 7 0; -#X connect 42 1 8 0; -#X connect 42 1 41 1; -#X connect 42 1 57 2; -#X connect 42 1 59 1; -#X connect 42 1 77 0; -#X connect 43 1 44 1; -#X connect 44 1 15 0; -#X connect 44 1 16 0; -#X connect 44 1 43 1; -#X connect 44 1 59 2; -#X connect 44 1 61 1; -#X connect 44 1 78 0; -#X connect 45 1 46 1; -#X connect 46 1 17 0; -#X connect 46 1 18 0; -#X connect 46 1 45 1; -#X connect 46 1 61 2; -#X connect 46 1 63 1; -#X connect 46 1 79 0; -#X connect 47 1 48 1; -#X connect 48 1 9 0; -#X connect 48 1 10 0; -#X connect 48 1 47 1; -#X connect 48 1 63 2; -#X connect 48 1 65 1; -#X connect 48 1 80 0; -#X connect 49 1 50 1; -#X connect 50 1 11 0; -#X connect 50 1 12 0; -#X connect 50 1 49 1; -#X connect 50 1 65 2; -#X connect 50 1 67 1; -#X connect 50 1 81 0; -#X connect 51 1 52 1; -#X connect 52 1 13 0; -#X connect 52 1 14 0; -#X connect 52 1 51 1; -#X connect 52 1 67 2; -#X connect 52 1 69 1; -#X connect 52 1 82 0; -#X connect 53 1 54 1; -#X connect 54 1 20 0; -#X connect 54 1 21 0; -#X connect 54 1 53 1; -#X connect 54 1 69 2; -#X connect 54 1 71 1; -#X connect 54 1 83 0; -#X connect 57 1 40 1; -#X connect 57 2 42 1; -#X connect 57 2 42 1; -#X connect 59 1 42 1; -#X connect 59 2 44 1; -#X connect 61 1 44 1; -#X connect 61 2 46 1; -#X connect 63 1 46 1; -#X connect 63 2 48 1; -#X connect 65 1 48 1; -#X connect 65 2 50 1; -#X connect 67 1 50 1; -#X connect 67 2 52 1; -#X connect 69 1 52 1; -#X connect 69 2 54 1; -#X connect 71 1 54 1; -#X connect 71 2 74 1; -#X connect 73 1 74 1; -#X connect 74 1 22 0; -#X connect 74 1 23 0; -#X connect 74 1 71 2; -#X connect 74 1 73 1; -#X connect 74 1 75 1; -#X connect 74 1 84 0; -#X connect 75 1 74 1; -#X connect 85 0 34 0; -#X connect 86 0 31 0; -#X connect 87 0 159 0; -#X connect 87 0 160 0; -#X connect 87 0 161 0; -#X connect 87 0 162 0; -#X connect 87 0 163 0; -#X connect 87 0 164 0; -#X connect 87 0 165 0; -#X connect 87 0 166 0; -#X connect 87 0 167 0; -#X connect 87 0 168 0; -#X connect 88 0 89 0; -#X connect 89 0 110 0; -#X connect 89 0 105 0; -#X connect 89 0 90 0; -#X connect 89 1 87 0; -#X connect 90 0 126 0; -#X connect 90 0 128 0; -#X connect 90 0 131 0; -#X connect 90 0 132 0; -#X connect 90 0 133 0; -#X connect 90 0 136 0; -#X connect 90 0 137 0; -#X connect 90 0 138 0; -#X connect 90 0 140 0; -#X connect 91 0 159 0; -#X connect 91 0 160 0; -#X connect 92 0 159 0; -#X connect 93 0 161 0; -#X connect 94 0 160 0; -#X connect 95 0 164 0; -#X connect 96 0 163 0; -#X connect 97 0 165 0; -#X connect 98 0 164 0; -#X connect 99 0 166 0; -#X connect 100 0 165 0; -#X connect 101 0 162 0; -#X connect 102 0 161 0; -#X connect 103 0 163 0; -#X connect 104 0 162 0; -#X connect 105 0 159 0; -#X connect 106 0 167 0; -#X connect 107 0 166 0; -#X connect 108 0 168 0; -#X connect 109 0 167 0; -#X connect 109 0 168 0; -#X connect 110 0 159 0; -#X connect 111 0 168 0; -#X connect 112 0 114 0; -#X connect 113 0 119 0; -#X connect 114 0 113 1; -#X connect 114 1 113 0; -#X connect 115 0 117 0; -#X connect 116 0 118 0; -#X connect 117 0 116 1; -#X connect 117 1 116 0; -#X connect 118 0 140 0; -#X connect 119 0 140 0; -#X connect 120 0 111 0; -#X connect 121 1 133 1; -#X connect 122 0 117 0; -#X connect 123 0 114 0; -#X connect 124 1 126 1; -#X connect 125 1 126 1; -#X connect 126 1 91 0; -#X connect 126 1 92 0; -#X connect 126 1 124 1; -#X connect 126 1 147 1; -#X connect 126 1 150 0; -#X connect 127 1 128 1; -#X connect 128 1 93 0; -#X connect 128 1 94 0; -#X connect 128 1 127 1; -#X connect 128 1 146 1; -#X connect 128 1 147 2; -#X connect 128 1 151 0; -#X connect 129 1 131 1; -#X connect 130 1 132 1; -#X connect 131 1 101 0; -#X connect 131 1 102 0; -#X connect 131 1 129 1; -#X connect 131 1 145 1; -#X connect 131 1 146 2; -#X connect 131 1 152 0; -#X connect 132 1 103 0; -#X connect 132 1 104 0; -#X connect 132 1 130 1; -#X connect 132 1 145 2; -#X connect 132 1 148 1; -#X connect 132 1 153 0; -#X connect 133 1 95 0; -#X connect 133 1 96 0; -#X connect 133 1 121 1; -#X connect 133 1 144 1; -#X connect 133 1 148 2; -#X connect 133 1 154 0; -#X connect 134 1 136 1; -#X connect 135 1 137 1; -#X connect 136 1 97 0; -#X connect 136 1 98 0; -#X connect 136 1 134 1; -#X connect 136 1 143 1; -#X connect 136 1 144 2; -#X connect 136 1 155 0; -#X connect 137 1 99 0; -#X connect 137 1 100 0; -#X connect 137 1 135 1; -#X connect 137 1 142 1; -#X connect 137 1 143 2; -#X connect 137 1 156 0; -#X connect 138 1 106 0; -#X connect 138 1 107 0; -#X connect 138 1 141 1; -#X connect 138 1 142 2; -#X connect 138 1 149 1; -#X connect 138 1 157 0; -#X connect 139 1 140 1; -#X connect 140 1 108 0; -#X connect 140 1 109 0; -#X connect 140 1 139 1; -#X connect 140 1 141 2; -#X connect 140 1 158 0; -#X connect 140 1 170 1; -#X connect 141 1 138 1; -#X connect 141 2 140 1; -#X connect 142 1 137 1; -#X connect 142 2 138 1; -#X connect 143 1 136 1; -#X connect 143 2 137 1; -#X connect 144 1 133 1; -#X connect 144 2 136 1; -#X connect 145 1 131 1; -#X connect 145 2 132 1; -#X connect 146 1 128 1; -#X connect 146 2 131 1; -#X connect 147 1 126 1; -#X connect 147 2 128 1; -#X connect 147 2 128 1; -#X connect 148 1 132 1; -#X connect 148 2 133 1; -#X connect 149 1 138 1; -#X connect 169 0 28 0; -#X connect 170 1 140 1; diff --git a/extensions/xgui/doc/sound/09_more_physics7.pd b/extensions/xgui/doc/sound/09_more_physics7.pd deleted file mode 100644 index 2749467341326362a082d388e8a32d519d7fb89d..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/sound/09_more_physics7.pd +++ /dev/null @@ -1,458 +0,0 @@ -#N canvas -10 -4 1006 674 12; -#X msg 424 71 show; -#X obj 7 37 loadbang; -#X obj 33 75 t b b b b; -#X msg 191 36 on; -#X msg 220 87 xy1 \$1 \$2; -#X msg 324 86 xy2 \$1 \$2; -#X msg 232 156 xy1 \$1 \$2; -#X msg 328 156 xy2 \$1 \$2; -#X msg 228 377 xy1 \$1 \$2; -#X msg 321 375 xy2 \$1 \$2; -#X obj 423 124 seg l1 */my_string/l1; -#X obj 423 179 seg l2 */my_string/l2; -#X msg 222 452 xy1 \$1 \$2; -#X msg 323 452 xy2 \$1 \$2; -#X msg 221 529 xy1 \$1 \$2; -#X msg 327 528 xy2 \$1 \$2; -#X obj 422 98 seg m1 */my_string/m1; -#X msg 231 230 xy1 \$1 \$2; -#X msg 329 227 xy2 \$1 \$2; -#X obj 425 231 seg l3 */my_string/l3; -#X msg 227 301 xy1 \$1 \$2; -#X msg 328 302 xy2 \$1 \$2; -#X obj 427 290 seg l4 */my_string/l4; -#X obj 421 667 seg m2 */my_string/m2; -#X obj 427 351 seg l5 */my_string/l5; -#X obj 423 413 seg l6 */my_string/l6; -#X msg 473 71 raise; -#X msg 229 605 xy1 \$1 \$2; -#X msg 335 604 xy2 \$1 \$2; -#X msg 211 688 xy1 \$1 \$2; -#X msg 317 687 xy2 \$1 \$2; -#X obj 424 501 seg l7 */my_string/l7; -#X obj 428 574 seg l8 */my_string/l8; -#X msg 533 71 width 30; -#X msg 416 642 width 10; -#X obj 211 662 mass m9 50 250 100 0 0; -#X obj 232 130 mass m2 1 250 240 0 0; -#X obj 231 204 mass m3 1 250 220 0 0; -#X obj 227 275 mass m4 1 250 200 0 0; -#X obj 228 351 mass m5 1 250 180 0 0; -#X obj 216 427 mass m6 1 250 160 0 0; -#X obj 221 503 mass m7 1 250 140 0 0; -#X obj 229 579 mass m8 1 250 120 0 0; -#X obj 237 36 force f1 0 10000; -#X obj 273 637 damping d9 3000; -#X obj 411 689 spring sl 5000 0 250 250 250 100; -#X obj 428 600 spring s9 1000 20; -#X obj 424 527 spring s8 1000 20; -#X obj 423 439 spring s6 1000 20; -#X obj 427 377 spring s5 1000 20; -#X obj 427 316 spring s4 1000 20; -#X obj 425 257 spring s3 1000 20; -#X obj 426 204 spring s2 1000 20; -#X obj 435 153 spring s1 1000 20; -#X obj 427 43 damping d1 10; -#X obj 293 109 damping d2 10; -#X obj 293 180 damping d3 10; -#X obj 292 251 damping d4 10; -#X obj 289 327 damping d5 10; -#X obj 291 400 damping d6 10; -#X obj 283 478 damping d7 10; -#X obj 291 554 damping d8 10; -#X obj 216 58 mass m1 10 250 260 0 0; -#X msg 70 125 color white; -#X obj 53 156 canvas */my_string; -#X msg 58 105 show \, size 1000 700; -#X msg 1000 76 show; -#X obj 655 49 loadbang; -#X obj 681 87 t b b b b; -#X msg 767 41 on; -#X msg 796 92 xy1 \$1 \$2; -#X msg 900 91 xy2 \$1 \$2; -#X msg 808 161 xy1 \$1 \$2; -#X msg 904 161 xy2 \$1 \$2; -#X msg 804 382 xy1 \$1 \$2; -#X msg 897 380 xy2 \$1 \$2; -#X msg 798 457 xy1 \$1 \$2; -#X msg 899 457 xy2 \$1 \$2; -#X msg 797 534 xy1 \$1 \$2; -#X msg 903 533 xy2 \$1 \$2; -#X msg 807 235 xy1 \$1 \$2; -#X msg 905 232 xy2 \$1 \$2; -#X msg 803 306 xy1 \$1 \$2; -#X msg 904 307 xy2 \$1 \$2; -#X msg 1049 76 raise; -#X msg 805 610 xy1 \$1 \$2; -#X msg 911 609 xy2 \$1 \$2; -#X msg 787 693 xy1 \$1 \$2; -#X msg 893 692 xy2 \$1 \$2; -#X msg 1109 76 width 30; -#X msg 992 647 width 10; -#X obj 813 41 force 1f1 0 10000; -#X obj 869 114 damping 1d2 10; -#X obj 869 185 damping 1d3 10; -#X obj 868 256 damping 1d4 10; -#X obj 865 332 damping 1d5 10; -#X obj 867 405 damping 1d6 10; -#X obj 859 483 damping 1d7 10; -#X obj 867 559 damping 1d8 10; -#X obj 849 642 damping 1d9 3000; -#X obj 1003 48 damping 1d1 10; -#X obj 998 103 seg 1m1 */my_string/1m1; -#X obj 999 129 seg 1l1 */my_string/1l1; -#X obj 997 183 seg 1l2 */my_string/1l2; -#X obj 1001 236 seg 1l3 */my_string/1l3; -#X obj 1003 296 seg 1l4 */my_string/1l4; -#X obj 1004 356 seg 1l5 */my_string/1l5; -#X obj 999 418 seg 1l6 */my_string/1l6; -#X obj 1000 506 seg 1l7 */my_string/1l7; -#X obj 999 156 spring 1s1 1000 20; -#X obj 1005 205 spring 1s2 1000 20; -#X obj 1000 263 spring 1s3 1000 20; -#X obj 1003 318 spring 1s4 1000 20; -#X obj 1003 376 spring 1s5 1000 20; -#X obj 999 444 spring 1s6 1000 20; -#X obj 1003 530 spring 1s8 1000 20; -#X obj 1004 579 seg 1l8 */my_string/1l8; -#X obj 1005 606 spring 1s9 1000 20; -#X obj 997 672 seg 1m2 */my_string/1m2; -#X obj 796 66 mass 1m1 10 750 260 0 0; -#X obj 808 135 mass 1m2 1 750 240 0 0; -#X obj 808 210 mass 1m3 1 750 220 0 0; -#X obj 803 280 mass 1m4 1 750 200 0 0; -#X obj 804 356 mass 1m5 1 750 180 0 0; -#X obj 792 432 mass 1m6 1 750 160 0 0; -#X obj 795 508 mass 1m7 1 750 140 0 0; -#X obj 805 584 mass 1m8 1 750 120 0 0; -#X obj 787 667 mass 1m9 50 750 100 0 0; -#X obj 987 694 spring 1sl 5000 0 250 250 750 100; -#X obj 681 330 r move_x2; -#X obj 706 425 r move_y2; -#X obj 691 395 -; -#X obj 681 357 t f f; -#X obj 708 457 t f f; -#X obj 710 486 -; -#X obj 682 188 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -262144 --1 -1 11100 1; -#X obj 717 189 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -262144 --1 -1 0 1; -#X obj 85 355 r move_x2; -#X obj 125 446 r move_y2; -#X obj 95 420 -; -#X obj 85 382 t f f; -#X obj 127 478 t f f; -#X obj 129 507 -; -#X obj 86 213 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -262144 --1 -1 3800 1; -#X obj 121 214 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -262144 --1 -1 0 1; -#X msg 105 625 move \$1 0; -#X msg 119 580 move 0 \$1; -#X msg 685 604 move \$1 0; -#X msg 695 577 move 0 \$1; -#X obj 602 122 s xy11; -#X obj 605 179 s xy12; -#X obj 610 230 s xy13; -#X obj 613 289 s xy14; -#X obj 611 354 s xy15; -#X obj 614 410 s xy16; -#X obj 619 460 s xy17; -#X obj 622 519 s xy18; -#X obj 620 646 s xy19; -#X obj 1191 110 s xy11; -#X obj 1194 167 s xy12; -#X obj 1199 218 s xy13; -#X obj 1202 277 s xy14; -#X obj 1200 342 s xy15; -#X obj 1203 398 s xy16; -#X obj 1201 456 s xy17; -#X obj 1202 513 s xy18; -#X obj 1189 635 s xy19; -#X connect 0 0 11 0; -#X connect 0 0 16 0; -#X connect 0 0 10 0; -#X connect 0 0 23 0; -#X connect 0 0 19 0; -#X connect 0 0 22 0; -#X connect 0 0 24 0; -#X connect 0 0 25 0; -#X connect 0 0 31 0; -#X connect 0 0 32 0; -#X connect 1 0 2 0; -#X connect 2 0 33 0; -#X connect 2 0 26 0; -#X connect 2 0 34 0; -#X connect 2 0 3 0; -#X connect 2 1 0 0; -#X connect 2 2 63 0; -#X connect 2 3 65 0; -#X connect 3 0 35 0; -#X connect 3 0 36 0; -#X connect 3 0 37 0; -#X connect 3 0 38 0; -#X connect 3 0 39 0; -#X connect 3 0 40 0; -#X connect 3 0 41 0; -#X connect 3 0 42 0; -#X connect 3 0 62 0; -#X connect 4 0 10 0; -#X connect 4 0 16 0; -#X connect 5 0 16 0; -#X connect 6 0 11 0; -#X connect 7 0 10 0; -#X connect 8 0 24 0; -#X connect 9 0 22 0; -#X connect 12 0 25 0; -#X connect 13 0 24 0; -#X connect 14 0 31 0; -#X connect 15 0 25 0; -#X connect 17 0 19 0; -#X connect 18 0 11 0; -#X connect 20 0 22 0; -#X connect 21 0 19 0; -#X connect 26 0 16 0; -#X connect 27 0 32 0; -#X connect 28 0 31 0; -#X connect 29 0 23 0; -#X connect 30 0 32 0; -#X connect 30 0 23 0; -#X connect 33 0 16 0; -#X connect 34 0 23 0; -#X connect 35 1 29 0; -#X connect 35 1 30 0; -#X connect 35 1 44 1; -#X connect 35 1 45 1; -#X connect 35 1 46 2; -#X connect 35 1 157 0; -#X connect 36 1 6 0; -#X connect 36 1 7 0; -#X connect 36 1 52 1; -#X connect 36 1 53 2; -#X connect 36 1 55 1; -#X connect 36 1 150 0; -#X connect 37 1 17 0; -#X connect 37 1 18 0; -#X connect 37 1 51 1; -#X connect 37 1 52 2; -#X connect 37 1 56 1; -#X connect 37 1 151 0; -#X connect 38 1 20 0; -#X connect 38 1 21 0; -#X connect 38 1 50 1; -#X connect 38 1 51 2; -#X connect 38 1 57 1; -#X connect 38 1 152 0; -#X connect 39 1 8 0; -#X connect 39 1 9 0; -#X connect 39 1 49 1; -#X connect 39 1 50 2; -#X connect 39 1 58 1; -#X connect 39 1 153 0; -#X connect 40 1 12 0; -#X connect 40 1 13 0; -#X connect 40 1 48 1; -#X connect 40 1 49 2; -#X connect 40 1 59 1; -#X connect 40 1 154 0; -#X connect 41 1 14 0; -#X connect 41 1 15 0; -#X connect 41 1 47 1; -#X connect 41 1 48 2; -#X connect 41 1 60 1; -#X connect 41 1 155 0; -#X connect 42 1 27 0; -#X connect 42 1 28 0; -#X connect 42 1 46 1; -#X connect 42 1 47 2; -#X connect 42 1 61 1; -#X connect 42 1 156 0; -#X connect 43 1 62 1; -#X connect 44 1 35 1; -#X connect 45 1 35 1; -#X connect 46 1 42 1; -#X connect 46 2 35 1; -#X connect 47 1 41 1; -#X connect 47 2 42 1; -#X connect 48 1 40 1; -#X connect 48 2 41 1; -#X connect 49 1 39 1; -#X connect 49 2 40 1; -#X connect 50 1 38 1; -#X connect 50 2 39 1; -#X connect 51 1 37 1; -#X connect 51 2 38 1; -#X connect 52 1 36 1; -#X connect 52 2 37 1; -#X connect 53 1 62 1; -#X connect 53 2 36 1; -#X connect 53 2 36 1; -#X connect 54 1 62 1; -#X connect 55 1 36 1; -#X connect 56 1 37 1; -#X connect 57 1 38 1; -#X connect 58 1 39 1; -#X connect 59 1 40 1; -#X connect 60 1 41 1; -#X connect 61 1 42 1; -#X connect 62 1 4 0; -#X connect 62 1 5 0; -#X connect 62 1 53 1; -#X connect 62 1 54 1; -#X connect 62 1 149 0; -#X connect 63 0 64 0; -#X connect 65 0 64 0; -#X connect 66 0 101 0; -#X connect 66 0 102 0; -#X connect 66 0 103 0; -#X connect 66 0 104 0; -#X connect 66 0 105 0; -#X connect 66 0 106 0; -#X connect 66 0 107 0; -#X connect 66 0 108 0; -#X connect 66 0 116 0; -#X connect 66 0 118 0; -#X connect 67 0 68 0; -#X connect 68 0 89 0; -#X connect 68 0 84 0; -#X connect 68 0 69 0; -#X connect 68 0 90 0; -#X connect 68 1 66 0; -#X connect 69 0 119 0; -#X connect 69 0 120 0; -#X connect 69 0 121 0; -#X connect 69 0 122 0; -#X connect 69 0 123 0; -#X connect 69 0 124 0; -#X connect 69 0 125 0; -#X connect 69 0 126 0; -#X connect 69 0 127 0; -#X connect 70 0 101 0; -#X connect 70 0 102 0; -#X connect 71 0 101 0; -#X connect 72 0 103 0; -#X connect 73 0 102 0; -#X connect 74 0 106 0; -#X connect 75 0 105 0; -#X connect 76 0 107 0; -#X connect 77 0 106 0; -#X connect 78 0 108 0; -#X connect 79 0 107 0; -#X connect 80 0 104 0; -#X connect 81 0 103 0; -#X connect 82 0 105 0; -#X connect 83 0 104 0; -#X connect 84 0 101 0; -#X connect 85 0 116 0; -#X connect 86 0 108 0; -#X connect 87 0 118 0; -#X connect 88 0 116 0; -#X connect 88 0 118 0; -#X connect 89 0 101 0; -#X connect 90 0 118 0; -#X connect 91 1 119 1; -#X connect 92 1 120 1; -#X connect 93 1 121 1; -#X connect 94 1 122 1; -#X connect 95 1 123 1; -#X connect 96 1 124 1; -#X connect 97 1 125 1; -#X connect 97 1 164 0; -#X connect 98 1 126 1; -#X connect 99 1 127 1; -#X connect 100 1 119 1; -#X connect 109 1 119 1; -#X connect 109 2 120 1; -#X connect 109 2 120 1; -#X connect 110 1 120 1; -#X connect 110 2 121 1; -#X connect 111 1 121 1; -#X connect 111 2 122 1; -#X connect 112 1 122 1; -#X connect 112 2 123 1; -#X connect 113 1 123 1; -#X connect 113 2 124 1; -#X connect 114 1 124 1; -#X connect 114 2 125 1; -#X connect 115 1 125 1; -#X connect 115 2 126 1; -#X connect 117 1 126 1; -#X connect 117 2 127 1; -#X connect 119 1 70 0; -#X connect 119 1 71 0; -#X connect 119 1 100 1; -#X connect 119 1 109 1; -#X connect 119 1 158 0; -#X connect 120 1 72 0; -#X connect 120 1 73 0; -#X connect 120 1 92 1; -#X connect 120 1 109 2; -#X connect 120 1 110 1; -#X connect 120 1 159 0; -#X connect 121 1 80 0; -#X connect 121 1 81 0; -#X connect 121 1 93 1; -#X connect 121 1 110 2; -#X connect 121 1 111 1; -#X connect 121 1 160 0; -#X connect 122 1 82 0; -#X connect 122 1 83 0; -#X connect 122 1 94 1; -#X connect 122 1 111 2; -#X connect 122 1 112 1; -#X connect 122 1 161 0; -#X connect 123 1 74 0; -#X connect 123 1 75 0; -#X connect 123 1 95 1; -#X connect 123 1 112 2; -#X connect 123 1 113 1; -#X connect 123 1 162 0; -#X connect 124 1 76 0; -#X connect 124 1 77 0; -#X connect 124 1 96 1; -#X connect 124 1 113 2; -#X connect 124 1 114 1; -#X connect 124 1 163 0; -#X connect 125 1 78 0; -#X connect 125 1 79 0; -#X connect 125 1 97 1; -#X connect 125 1 114 2; -#X connect 125 1 115 1; -#X connect 126 1 85 0; -#X connect 126 1 86 0; -#X connect 126 1 98 1; -#X connect 126 1 115 2; -#X connect 126 1 117 1; -#X connect 126 1 165 0; -#X connect 127 1 87 0; -#X connect 127 1 88 0; -#X connect 127 1 99 1; -#X connect 127 1 117 2; -#X connect 127 1 128 1; -#X connect 127 1 166 0; -#X connect 128 1 127 1; -#X connect 129 0 132 0; -#X connect 130 0 133 0; -#X connect 131 0 147 0; -#X connect 132 0 131 1; -#X connect 132 1 131 0; -#X connect 133 0 134 1; -#X connect 133 1 134 0; -#X connect 134 0 148 0; -#X connect 135 0 132 0; -#X connect 136 0 133 0; -#X connect 137 0 140 0; -#X connect 138 0 141 0; -#X connect 139 0 145 0; -#X connect 140 0 139 1; -#X connect 140 1 139 0; -#X connect 141 0 142 1; -#X connect 141 1 142 0; -#X connect 142 0 146 0; -#X connect 143 0 140 0; -#X connect 144 0 141 0; -#X connect 145 0 35 0; -#X connect 146 0 35 0; -#X connect 147 0 127 0; -#X connect 148 0 127 0; diff --git a/extensions/xgui/doc/sound/2yoyo.pd b/extensions/xgui/doc/sound/2yoyo.pd deleted file mode 100644 index 87be4259db48b9c995cbb1c702fd7a42293f8f22..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/sound/2yoyo.pd +++ /dev/null @@ -1,464 +0,0 @@ -#N canvas -10 -4 1010 680 12; -#X msg 424 71 show; -#X obj 7 37 loadbang; -#X obj 33 75 t b b b b; -#X msg 191 36 on; -#X msg 220 87 xy1 \$1 \$2; -#X msg 324 86 xy2 \$1 \$2; -#X msg 232 156 xy1 \$1 \$2; -#X msg 328 156 xy2 \$1 \$2; -#X msg 228 377 xy1 \$1 \$2; -#X msg 321 375 xy2 \$1 \$2; -#X obj 423 124 seg l1 */my_string/l1; -#X obj 423 179 seg l2 */my_string/l2; -#X msg 222 452 xy1 \$1 \$2; -#X msg 323 452 xy2 \$1 \$2; -#X msg 221 529 xy1 \$1 \$2; -#X msg 327 528 xy2 \$1 \$2; -#X obj 422 98 seg m1 */my_string/m1; -#X msg 231 230 xy1 \$1 \$2; -#X msg 329 227 xy2 \$1 \$2; -#X obj 425 231 seg l3 */my_string/l3; -#X msg 227 301 xy1 \$1 \$2; -#X msg 328 302 xy2 \$1 \$2; -#X obj 427 290 seg l4 */my_string/l4; -#X obj 421 667 seg m2 */my_string/m2; -#X obj 427 351 seg l5 */my_string/l5; -#X obj 423 413 seg l6 */my_string/l6; -#X msg 473 71 raise; -#X msg 229 605 xy1 \$1 \$2; -#X msg 335 604 xy2 \$1 \$2; -#X msg 211 688 xy1 \$1 \$2; -#X msg 317 687 xy2 \$1 \$2; -#X obj 424 501 seg l7 */my_string/l7; -#X obj 428 574 seg l8 */my_string/l8; -#X msg 533 71 width 30; -#X msg 416 642 width 10; -#X obj 211 662 mass m9 50 250 100 0 0; -#X obj 232 130 mass m2 1 250 240 0 0; -#X obj 231 204 mass m3 1 250 220 0 0; -#X obj 227 275 mass m4 1 250 200 0 0; -#X obj 228 351 mass m5 1 250 180 0 0; -#X obj 216 427 mass m6 1 250 160 0 0; -#X obj 221 503 mass m7 1 250 140 0 0; -#X obj 229 579 mass m8 1 250 120 0 0; -#X obj 237 36 force f1 0 10000; -#X obj 273 637 damping d9 3000; -#X obj 411 689 spring sl 5000 0 250 250 250 100; -#X obj 428 600 spring s9 1000 20; -#X obj 424 527 spring s8 1000 20; -#X obj 423 439 spring s6 1000 20; -#X obj 427 377 spring s5 1000 20; -#X obj 427 316 spring s4 1000 20; -#X obj 425 257 spring s3 1000 20; -#X obj 426 204 spring s2 1000 20; -#X obj 435 153 spring s1 1000 20; -#X obj 427 43 damping d1 10; -#X obj 293 109 damping d2 10; -#X obj 293 180 damping d3 10; -#X obj 292 251 damping d4 10; -#X obj 289 327 damping d5 10; -#X obj 291 400 damping d6 10; -#X obj 283 478 damping d7 10; -#X obj 291 554 damping d8 10; -#X obj 216 58 mass m1 10 250 260 0 0; -#X msg 70 125 color white; -#X obj 53 156 canvas */my_string; -#X msg 58 105 show \, size 1000 700; -#X msg 1000 76 show; -#X obj 655 49 loadbang; -#X obj 681 87 t b b b b; -#X msg 767 41 on; -#X msg 796 92 xy1 \$1 \$2; -#X msg 900 91 xy2 \$1 \$2; -#X msg 808 161 xy1 \$1 \$2; -#X msg 904 161 xy2 \$1 \$2; -#X msg 804 382 xy1 \$1 \$2; -#X msg 897 380 xy2 \$1 \$2; -#X msg 798 457 xy1 \$1 \$2; -#X msg 899 457 xy2 \$1 \$2; -#X msg 797 534 xy1 \$1 \$2; -#X msg 903 533 xy2 \$1 \$2; -#X msg 807 235 xy1 \$1 \$2; -#X msg 905 232 xy2 \$1 \$2; -#X msg 803 306 xy1 \$1 \$2; -#X msg 904 307 xy2 \$1 \$2; -#X msg 1049 76 raise; -#X msg 805 610 xy1 \$1 \$2; -#X msg 911 609 xy2 \$1 \$2; -#X msg 787 693 xy1 \$1 \$2; -#X msg 893 692 xy2 \$1 \$2; -#X msg 1109 76 width 30; -#X msg 992 647 width 10; -#X obj 813 41 force 1f1 0 10000; -#X obj 869 114 damping 1d2 10; -#X obj 869 185 damping 1d3 10; -#X obj 868 256 damping 1d4 10; -#X obj 865 332 damping 1d5 10; -#X obj 867 405 damping 1d6 10; -#X obj 859 483 damping 1d7 10; -#X obj 867 559 damping 1d8 10; -#X obj 849 642 damping 1d9 3000; -#X obj 1003 48 damping 1d1 10; -#X obj 998 103 seg 1m1 */my_string/1m1; -#X obj 999 129 seg 1l1 */my_string/1l1; -#X obj 997 183 seg 1l2 */my_string/1l2; -#X obj 1001 236 seg 1l3 */my_string/1l3; -#X obj 1003 296 seg 1l4 */my_string/1l4; -#X obj 1004 356 seg 1l5 */my_string/1l5; -#X obj 999 418 seg 1l6 */my_string/1l6; -#X obj 1000 506 seg 1l7 */my_string/1l7; -#X obj 999 156 spring 1s1 1000 20; -#X obj 1005 205 spring 1s2 1000 20; -#X obj 1000 263 spring 1s3 1000 20; -#X obj 1003 318 spring 1s4 1000 20; -#X obj 1003 376 spring 1s5 1000 20; -#X obj 999 444 spring 1s6 1000 20; -#X obj 1003 530 spring 1s8 1000 20; -#X obj 1004 579 seg 1l8 */my_string/1l8; -#X obj 1005 606 spring 1s9 1000 20; -#X obj 997 672 seg 1m2 */my_string/1m2; -#X obj 796 66 mass 1m1 10 750 260 0 0; -#X obj 808 135 mass 1m2 1 750 240 0 0; -#X obj 808 210 mass 1m3 1 750 220 0 0; -#X obj 803 280 mass 1m4 1 750 200 0 0; -#X obj 804 356 mass 1m5 1 750 180 0 0; -#X obj 792 432 mass 1m6 1 750 160 0 0; -#X obj 795 508 mass 1m7 1 750 140 0 0; -#X obj 805 584 mass 1m8 1 750 120 0 0; -#X obj 787 667 mass 1m9 50 750 100 0 0; -#X obj 987 694 spring 1sl 5000 0 250 250 750 100; -#X obj 681 330 r move_x2; -#X obj 706 425 r move_y2; -#X obj 691 395 -; -#X obj 681 357 t f f; -#X obj 708 457 t f f; -#X obj 710 486 -; -#X obj 682 188 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -262144 --1 -1 5500 1; -#X obj 717 189 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -262144 --1 -1 12700 1; -#X obj 95 420 -; -#X obj 85 382 t f f; -#X obj 127 478 t f f; -#X obj 129 507 -; -#X obj 86 213 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -262144 --1 -1 0 1; -#X obj 121 214 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -262144 --1 -1 0 1; -#X msg 105 625 move \$1 0; -#X msg 119 580 move 0 \$1; -#X msg 685 604 move \$1 0; -#X msg 695 577 move 0 \$1; -#X obj 602 122 s xy11; -#X obj 605 179 s xy12; -#X obj 610 230 s xy13; -#X obj 613 289 s xy14; -#X obj 611 354 s xy15; -#X obj 614 410 s xy16; -#X obj 619 460 s xy17; -#X obj 622 519 s xy18; -#X obj 620 646 s xy19; -#X obj 86 356 r move_x1; -#X obj 125 446 r move_y1; -#X obj 1191 110 s xy21; -#X obj 1194 167 s xy22; -#X obj 1199 218 s xy23; -#X obj 1202 276 s xy24; -#X obj 1200 342 s xy25; -#X obj 1203 398 s xy26; -#X obj 1199 456 s xy27; -#X obj 1202 513 s xy28; -#X obj 1189 635 s xy29; -#X msg 545 44 color blue; -#X msg 1125 48 color red; -#X connect 0 0 11 0; -#X connect 0 0 16 0; -#X connect 0 0 10 0; -#X connect 0 0 23 0; -#X connect 0 0 19 0; -#X connect 0 0 22 0; -#X connect 0 0 24 0; -#X connect 0 0 25 0; -#X connect 0 0 31 0; -#X connect 0 0 32 0; -#X connect 1 0 2 0; -#X connect 2 0 33 0; -#X connect 2 0 26 0; -#X connect 2 0 34 0; -#X connect 2 0 3 0; -#X connect 2 0 167 0; -#X connect 2 1 0 0; -#X connect 2 2 63 0; -#X connect 2 3 65 0; -#X connect 3 0 35 0; -#X connect 3 0 36 0; -#X connect 3 0 37 0; -#X connect 3 0 38 0; -#X connect 3 0 39 0; -#X connect 3 0 40 0; -#X connect 3 0 41 0; -#X connect 3 0 42 0; -#X connect 3 0 62 0; -#X connect 4 0 10 0; -#X connect 4 0 16 0; -#X connect 5 0 16 0; -#X connect 6 0 11 0; -#X connect 7 0 10 0; -#X connect 8 0 24 0; -#X connect 9 0 22 0; -#X connect 12 0 25 0; -#X connect 13 0 24 0; -#X connect 14 0 31 0; -#X connect 15 0 25 0; -#X connect 17 0 19 0; -#X connect 18 0 11 0; -#X connect 20 0 22 0; -#X connect 21 0 19 0; -#X connect 26 0 16 0; -#X connect 27 0 32 0; -#X connect 28 0 31 0; -#X connect 29 0 23 0; -#X connect 30 0 32 0; -#X connect 30 0 23 0; -#X connect 33 0 16 0; -#X connect 34 0 23 0; -#X connect 35 1 29 0; -#X connect 35 1 30 0; -#X connect 35 1 44 1; -#X connect 35 1 45 1; -#X connect 35 1 46 2; -#X connect 35 1 155 0; -#X connect 36 1 6 0; -#X connect 36 1 7 0; -#X connect 36 1 52 1; -#X connect 36 1 53 2; -#X connect 36 1 55 1; -#X connect 36 1 148 0; -#X connect 37 1 17 0; -#X connect 37 1 18 0; -#X connect 37 1 51 1; -#X connect 37 1 52 2; -#X connect 37 1 56 1; -#X connect 37 1 149 0; -#X connect 38 1 20 0; -#X connect 38 1 21 0; -#X connect 38 1 50 1; -#X connect 38 1 51 2; -#X connect 38 1 57 1; -#X connect 38 1 150 0; -#X connect 39 1 8 0; -#X connect 39 1 9 0; -#X connect 39 1 49 1; -#X connect 39 1 50 2; -#X connect 39 1 58 1; -#X connect 39 1 151 0; -#X connect 40 1 12 0; -#X connect 40 1 13 0; -#X connect 40 1 48 1; -#X connect 40 1 49 2; -#X connect 40 1 59 1; -#X connect 40 1 152 0; -#X connect 41 1 14 0; -#X connect 41 1 15 0; -#X connect 41 1 47 1; -#X connect 41 1 48 2; -#X connect 41 1 60 1; -#X connect 41 1 153 0; -#X connect 42 1 27 0; -#X connect 42 1 28 0; -#X connect 42 1 46 1; -#X connect 42 1 47 2; -#X connect 42 1 61 1; -#X connect 42 1 154 0; -#X connect 43 1 62 1; -#X connect 44 1 35 1; -#X connect 45 1 35 1; -#X connect 46 1 42 1; -#X connect 46 2 35 1; -#X connect 47 1 41 1; -#X connect 47 2 42 1; -#X connect 48 1 40 1; -#X connect 48 2 41 1; -#X connect 49 1 39 1; -#X connect 49 2 40 1; -#X connect 50 1 38 1; -#X connect 50 2 39 1; -#X connect 51 1 37 1; -#X connect 51 2 38 1; -#X connect 52 1 36 1; -#X connect 52 2 37 1; -#X connect 53 1 62 1; -#X connect 53 2 36 1; -#X connect 53 2 36 1; -#X connect 54 1 62 1; -#X connect 55 1 36 1; -#X connect 56 1 37 1; -#X connect 57 1 38 1; -#X connect 58 1 39 1; -#X connect 59 1 40 1; -#X connect 60 1 41 1; -#X connect 61 1 42 1; -#X connect 62 1 4 0; -#X connect 62 1 5 0; -#X connect 62 1 53 1; -#X connect 62 1 54 1; -#X connect 62 1 147 0; -#X connect 63 0 64 0; -#X connect 65 0 64 0; -#X connect 66 0 101 0; -#X connect 66 0 102 0; -#X connect 66 0 103 0; -#X connect 66 0 104 0; -#X connect 66 0 105 0; -#X connect 66 0 106 0; -#X connect 66 0 107 0; -#X connect 66 0 108 0; -#X connect 66 0 116 0; -#X connect 66 0 118 0; -#X connect 67 0 68 0; -#X connect 67 0 168 0; -#X connect 68 0 89 0; -#X connect 68 0 84 0; -#X connect 68 0 69 0; -#X connect 68 0 90 0; -#X connect 68 1 66 0; -#X connect 69 0 119 0; -#X connect 69 0 120 0; -#X connect 69 0 121 0; -#X connect 69 0 122 0; -#X connect 69 0 123 0; -#X connect 69 0 124 0; -#X connect 69 0 125 0; -#X connect 69 0 126 0; -#X connect 69 0 127 0; -#X connect 70 0 101 0; -#X connect 70 0 102 0; -#X connect 71 0 101 0; -#X connect 72 0 103 0; -#X connect 73 0 102 0; -#X connect 74 0 106 0; -#X connect 75 0 105 0; -#X connect 76 0 107 0; -#X connect 77 0 106 0; -#X connect 78 0 108 0; -#X connect 79 0 107 0; -#X connect 80 0 104 0; -#X connect 81 0 103 0; -#X connect 82 0 105 0; -#X connect 83 0 104 0; -#X connect 84 0 101 0; -#X connect 85 0 116 0; -#X connect 86 0 108 0; -#X connect 87 0 118 0; -#X connect 88 0 116 0; -#X connect 88 0 118 0; -#X connect 89 0 101 0; -#X connect 90 0 118 0; -#X connect 91 1 119 1; -#X connect 92 1 120 1; -#X connect 93 1 121 1; -#X connect 94 1 122 1; -#X connect 95 1 123 1; -#X connect 96 1 124 1; -#X connect 97 1 125 1; -#X connect 97 1 164 0; -#X connect 98 1 126 1; -#X connect 99 1 127 1; -#X connect 100 1 119 1; -#X connect 109 1 119 1; -#X connect 109 2 120 1; -#X connect 109 2 120 1; -#X connect 110 1 120 1; -#X connect 110 2 121 1; -#X connect 111 1 121 1; -#X connect 111 2 122 1; -#X connect 112 1 122 1; -#X connect 112 2 123 1; -#X connect 113 1 123 1; -#X connect 113 2 124 1; -#X connect 114 1 124 1; -#X connect 114 2 125 1; -#X connect 115 1 125 1; -#X connect 115 2 126 1; -#X connect 117 1 126 1; -#X connect 117 2 127 1; -#X connect 119 1 70 0; -#X connect 119 1 71 0; -#X connect 119 1 100 1; -#X connect 119 1 109 1; -#X connect 119 1 158 0; -#X connect 120 1 72 0; -#X connect 120 1 73 0; -#X connect 120 1 92 1; -#X connect 120 1 109 2; -#X connect 120 1 110 1; -#X connect 120 1 159 0; -#X connect 121 1 80 0; -#X connect 121 1 81 0; -#X connect 121 1 93 1; -#X connect 121 1 110 2; -#X connect 121 1 111 1; -#X connect 121 1 160 0; -#X connect 122 1 82 0; -#X connect 122 1 83 0; -#X connect 122 1 94 1; -#X connect 122 1 111 2; -#X connect 122 1 112 1; -#X connect 122 1 161 0; -#X connect 123 1 74 0; -#X connect 123 1 75 0; -#X connect 123 1 95 1; -#X connect 123 1 112 2; -#X connect 123 1 113 1; -#X connect 123 1 162 0; -#X connect 124 1 76 0; -#X connect 124 1 77 0; -#X connect 124 1 96 1; -#X connect 124 1 113 2; -#X connect 124 1 114 1; -#X connect 124 1 163 0; -#X connect 125 1 78 0; -#X connect 125 1 79 0; -#X connect 125 1 97 1; -#X connect 125 1 114 2; -#X connect 125 1 115 1; -#X connect 126 1 85 0; -#X connect 126 1 86 0; -#X connect 126 1 98 1; -#X connect 126 1 115 2; -#X connect 126 1 117 1; -#X connect 126 1 165 0; -#X connect 127 1 87 0; -#X connect 127 1 88 0; -#X connect 127 1 99 1; -#X connect 127 1 117 2; -#X connect 127 1 128 1; -#X connect 127 1 166 0; -#X connect 128 1 127 1; -#X connect 129 0 132 0; -#X connect 130 0 133 0; -#X connect 131 0 145 0; -#X connect 132 0 131 1; -#X connect 132 1 131 0; -#X connect 133 0 134 1; -#X connect 133 1 134 0; -#X connect 134 0 146 0; -#X connect 135 0 132 0; -#X connect 136 0 133 0; -#X connect 137 0 143 0; -#X connect 138 0 137 1; -#X connect 138 1 137 0; -#X connect 139 0 140 1; -#X connect 139 1 140 0; -#X connect 140 0 144 0; -#X connect 141 0 138 0; -#X connect 142 0 139 0; -#X connect 143 0 35 0; -#X connect 144 0 35 0; -#X connect 145 0 127 0; -#X connect 146 0 127 0; -#X connect 156 0 138 0; -#X connect 157 0 139 0; -#X connect 167 0 16 0; -#X connect 168 0 101 0; diff --git a/extensions/xgui/doc/sound/2yoyos.pd b/extensions/xgui/doc/sound/2yoyos.pd deleted file mode 100644 index 9c8ae4070d1cbe4349ca4e366c1b1192bb953701..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/sound/2yoyos.pd +++ /dev/null @@ -1,462 +0,0 @@ -#N canvas 17 1 1006 674 12; -#X msg 473 120 show; -#X obj 7 84 loadbang; -#X obj 33 122 t b b b b; -#X msg 207 73 on; -#X msg 242 127 xy1 \$1 \$2; -#X msg 346 126 xy2 \$1 \$2; -#X text 51 224 dh20020404; -#X msg 240 200 xy1 \$1 \$2; -#X msg 336 200 xy2 \$1 \$2; -#X msg 224 422 xy1 \$1 \$2; -#X msg 317 420 xy2 \$1 \$2; -#X msg 218 498 xy1 \$1 \$2; -#X msg 319 498 xy2 \$1 \$2; -#X msg 209 573 xy1 \$1 \$2; -#X msg 315 572 xy2 \$1 \$2; -#X msg 233 276 xy1 \$1 \$2; -#X msg 331 273 xy2 \$1 \$2; -#X msg 228 347 xy1 \$1 \$2; -#X msg 329 348 xy2 \$1 \$2; -#X msg 522 120 raise; -#X msg 212 653 xy1 \$1 \$2; -#X msg 318 652 xy2 \$1 \$2; -#X msg 106 732 xy1 \$1 \$2; -#X msg 212 731 xy2 \$1 \$2; -#X msg 585 119 width 30; -#X msg 339 688 width 10; -#X text 59 246 dh20020405; -#X msg 70 172 color white; -#X obj 53 203 canvas */my_string; -#X obj 89 276 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -262144 --1 -1 11500 1; -#X obj 22 581 -; -#X obj 43 544 t f f; -#X obj 40 323 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 0 1; -#X obj 20 469 -; -#X obj 41 432 t f f; -#X msg 24 512 drag \$1 0; -#X msg 26 624 drag 0 \$1; -#X obj 121 641 loadbang; -#X obj 434 90 damping \$0d1 10; -#X obj 259 76 force \$0f1 0 10000; -#X obj 241 101 mass \$0m1 2 250 260 0 0; -#X obj 301 153 damping \$0d2 10; -#X obj 240 174 mass \$0m2 1 250 240 0 0; -#X obj 295 226 damping \$0d3 10; -#X obj 233 250 mass \$0m3 1 250 220 0 0; -#X obj 293 297 damping \$0d4 10; -#X obj 228 321 mass \$0m4 1 250 200 0 0; -#X obj 285 372 damping \$0d5 10; -#X obj 224 396 mass \$0m5 1 250 180 0 0; -#X obj 287 446 damping \$0d6 10; -#X obj 212 473 mass \$0m6 1 250 160 0 0; -#X obj 271 522 damping \$0d7 10; -#X obj 209 547 mass \$0m7 1 250 140 0 0; -#X obj 277 599 damping \$0d8 10; -#X obj 212 627 mass \$0m8 1 250 120 0 0; -#X obj 476 152 seg \$0m1 */my_string/m1; -#X obj 472 191 seg \$0l1 */my_string/l1; -#X obj 472 218 spring \$0s1 1000 20; -#X obj 472 248 seg \$0l2 */my_string/l2; -#X obj 458 275 spring \$0s2 1000 20; -#X obj 455 313 seg \$0l3 */my_string/l3; -#X obj 455 339 spring \$0s3 1000 20; -#X obj 452 373 seg \$0l4 */my_string/l4; -#X obj 452 399 spring \$0s4 1000 20; -#X obj 454 428 seg \$0l5 */my_string/l5; -#X obj 454 454 spring \$0s5 1000 20; -#X obj 455 508 seg \$0l6 */my_string/l6; -#X obj 455 534 spring \$0s6 1000 20; -#X obj 458 588 seg \$0l7 */my_string/l7; -#X obj 458 614 spring \$0s8 1000 20; -#X obj 450 666 seg \$0l8 */my_string/l8; -#X obj 450 692 spring \$0s9 1000 20; -#X obj 344 718 seg \$0m2 */my_string/m2; -#X obj 334 740 spring \$0sl 5000 0 250 250 250 100; -#X obj 106 706 mass \$0m9 50 250 100 0 0; -#X obj 168 681 damping \$0d9 3000; -#X msg 1138 109 show; -#X obj 691 84 loadbang; -#X obj 741 105 t b b b b; -#X msg 872 62 on; -#X msg 907 116 xy1 \$1 \$2; -#X msg 1011 115 xy2 \$1 \$2; -#X msg 905 189 xy1 \$1 \$2; -#X msg 1001 189 xy2 \$1 \$2; -#X msg 889 411 xy1 \$1 \$2; -#X msg 982 409 xy2 \$1 \$2; -#X msg 883 487 xy1 \$1 \$2; -#X msg 984 487 xy2 \$1 \$2; -#X msg 874 562 xy1 \$1 \$2; -#X msg 980 561 xy2 \$1 \$2; -#X msg 898 265 xy1 \$1 \$2; -#X msg 996 262 xy2 \$1 \$2; -#X msg 893 336 xy1 \$1 \$2; -#X msg 994 337 xy2 \$1 \$2; -#X msg 1187 109 raise; -#X msg 877 642 xy1 \$1 \$2; -#X msg 983 641 xy2 \$1 \$2; -#X msg 771 721 xy1 \$1 \$2; -#X msg 877 720 xy2 \$1 \$2; -#X msg 1250 108 width 30; -#X msg 1004 677 width 10; -#X obj 761 262 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -262144 --1 -1 10800 1; -#X obj 687 570 -; -#X obj 708 533 t f f; -#X obj 710 312 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 4800 1; -#X obj 685 458 -; -#X obj 706 421 t f f; -#X msg 689 501 drag \$1 0; -#X msg 691 613 drag 0 \$1; -#X obj 786 630 loadbang; -#X obj 1109 75 damping d1 10; -#X obj 924 65 force f1 0 10000; -#X obj 966 144 damping d2 10; -#X obj 960 215 damping d3 10; -#X obj 958 286 damping d4 10; -#X obj 953 435 damping d6 10; -#X obj 936 511 damping d7 10; -#X obj 833 670 damping d9 3000; -#X obj 771 695 mass m9 50 350 100 0 0; -#X obj 1115 681 spring s9 1000 20; -#X obj 1123 603 spring s8 1000 20; -#X obj 1120 527 spring s6 1000 20; -#X obj 1119 443 spring s5 1000 20; -#X obj 1120 328 spring s3 1000 20; -#X obj 1123 264 spring s2 1000 20; -#X obj 1136 207 spring s1 1000 20; -#X obj 1117 388 spring s4 1000 20; -#X obj 942 588 damping d8 10; -#X obj 819 380 s xy11; -#X obj 819 408 s xy12; -#X obj 819 438 s xy13; -#X obj 819 462 s xy14; -#X obj 819 488 s xy15; -#X obj 818 516 s xy16; -#X obj 817 544 s xy17; -#X obj 816 570 s xy18; -#X obj 816 594 s xy19; -#X obj 1141 141 seg m1 */my_string/1m1; -#X obj 1137 180 seg l1 */my_string/1l1; -#X obj 1124 236 seg l2 */my_string/1l2; -#X obj 1120 302 seg l3 */my_string/1l3; -#X obj 1117 362 seg l4 */my_string/1l4; -#X obj 1119 417 seg l5 */my_string/1l5; -#X obj 1119 499 seg l6 */my_string/1l6; -#X obj 1123 577 seg l7 */my_string/1l7; -#X obj 1120 656 seg l8 */my_string/1l8; -#X obj 1009 707 seg m2 */my_string/1m2; -#X msg 52 148 show \, size 1000 700; -#X obj 1001 731 spring sl 5000 0 250 250 750 100; -#X obj 17 283 r x2; -#X obj 18 259 r y2; -#X obj 681 249 r x1; -#X obj 682 274 r y1; -#X obj 154 391 s xy21; -#X obj 154 419 s xy22; -#X obj 155 448 s xy23; -#X obj 154 475 s xy24; -#X obj 155 499 s xy25; -#X obj 152 525 s xy26; -#X obj 152 556 s xy27; -#X obj 149 582 s xy28; -#X obj 151 605 s xy29; -#X obj 950 361 damping d5 10; -#X obj 906 90 mass m1 2 750 260 0 0; -#X obj 908 163 mass m2 1 750 240 0 0; -#X obj 898 239 mass m3 1 750 220 0 0; -#X obj 894 310 mass m4 1 750 200 0 0; -#X obj 889 385 mass m5 1 750 180 0 0; -#X obj 878 462 mass m6 1 750 160 0 0; -#X obj 875 536 mass m7 1 750 140 0 0; -#X obj 876 616 mass m8 1 750 120 0 0; -#X connect 0 0 55 0; -#X connect 0 0 56 0; -#X connect 0 0 58 0; -#X connect 0 0 60 0; -#X connect 0 0 62 0; -#X connect 0 0 64 0; -#X connect 0 0 66 0; -#X connect 0 0 68 0; -#X connect 0 0 70 0; -#X connect 0 0 72 0; -#X connect 1 0 2 0; -#X connect 2 0 24 0; -#X connect 2 0 19 0; -#X connect 2 0 3 0; -#X connect 2 1 0 0; -#X connect 2 2 27 0; -#X connect 2 3 147 0; -#X connect 3 0 40 0; -#X connect 3 0 42 0; -#X connect 3 0 44 0; -#X connect 3 0 46 0; -#X connect 3 0 48 0; -#X connect 3 0 50 0; -#X connect 3 0 52 0; -#X connect 3 0 54 0; -#X connect 3 0 74 0; -#X connect 4 0 55 0; -#X connect 4 0 56 0; -#X connect 5 0 55 0; -#X connect 7 0 58 0; -#X connect 8 0 56 0; -#X connect 9 0 64 0; -#X connect 10 0 62 0; -#X connect 11 0 66 0; -#X connect 12 0 64 0; -#X connect 13 0 68 0; -#X connect 14 0 66 0; -#X connect 15 0 60 0; -#X connect 16 0 58 0; -#X connect 17 0 62 0; -#X connect 18 0 60 0; -#X connect 19 0 55 0; -#X connect 20 0 70 0; -#X connect 21 0 68 0; -#X connect 22 0 72 0; -#X connect 23 0 70 0; -#X connect 23 0 72 0; -#X connect 24 0 55 0; -#X connect 25 0 72 0; -#X connect 27 0 28 0; -#X connect 29 0 31 0; -#X connect 30 0 36 0; -#X connect 31 0 30 1; -#X connect 31 1 30 0; -#X connect 32 0 34 0; -#X connect 33 0 35 0; -#X connect 34 0 33 1; -#X connect 34 1 33 0; -#X connect 35 0 74 0; -#X connect 36 0 74 0; -#X connect 37 0 25 0; -#X connect 38 1 40 1; -#X connect 39 1 40 1; -#X connect 40 1 4 0; -#X connect 40 1 5 0; -#X connect 40 1 38 1; -#X connect 40 1 57 1; -#X connect 40 1 153 0; -#X connect 41 1 42 1; -#X connect 42 1 7 0; -#X connect 42 1 8 0; -#X connect 42 1 41 1; -#X connect 42 1 57 2; -#X connect 42 1 59 1; -#X connect 42 1 154 0; -#X connect 43 1 44 1; -#X connect 44 1 15 0; -#X connect 44 1 16 0; -#X connect 44 1 43 1; -#X connect 44 1 59 2; -#X connect 44 1 61 1; -#X connect 44 1 155 0; -#X connect 45 1 46 1; -#X connect 46 1 17 0; -#X connect 46 1 18 0; -#X connect 46 1 45 1; -#X connect 46 1 61 2; -#X connect 46 1 63 1; -#X connect 46 1 156 0; -#X connect 47 1 48 1; -#X connect 48 1 9 0; -#X connect 48 1 10 0; -#X connect 48 1 47 1; -#X connect 48 1 63 2; -#X connect 48 1 65 1; -#X connect 48 1 157 0; -#X connect 49 1 50 1; -#X connect 50 1 11 0; -#X connect 50 1 12 0; -#X connect 50 1 49 1; -#X connect 50 1 65 2; -#X connect 50 1 67 1; -#X connect 50 1 158 0; -#X connect 51 1 52 1; -#X connect 52 1 13 0; -#X connect 52 1 14 0; -#X connect 52 1 51 1; -#X connect 52 1 67 2; -#X connect 52 1 69 1; -#X connect 52 1 159 0; -#X connect 53 1 54 1; -#X connect 54 1 20 0; -#X connect 54 1 21 0; -#X connect 54 1 53 1; -#X connect 54 1 69 2; -#X connect 54 1 71 1; -#X connect 54 1 160 0; -#X connect 57 1 40 1; -#X connect 57 2 42 1; -#X connect 57 2 42 1; -#X connect 59 1 42 1; -#X connect 59 2 44 1; -#X connect 61 1 44 1; -#X connect 61 2 46 1; -#X connect 63 1 46 1; -#X connect 63 2 48 1; -#X connect 65 1 48 1; -#X connect 65 2 50 1; -#X connect 67 1 50 1; -#X connect 67 2 52 1; -#X connect 69 1 52 1; -#X connect 69 2 54 1; -#X connect 71 1 54 1; -#X connect 71 2 74 1; -#X connect 73 1 74 1; -#X connect 74 1 22 0; -#X connect 74 1 23 0; -#X connect 74 1 71 2; -#X connect 74 1 73 1; -#X connect 74 1 75 1; -#X connect 74 1 161 0; -#X connect 75 1 74 1; -#X connect 76 0 137 0; -#X connect 76 0 138 0; -#X connect 76 0 139 0; -#X connect 76 0 140 0; -#X connect 76 0 141 0; -#X connect 76 0 142 0; -#X connect 76 0 143 0; -#X connect 76 0 144 0; -#X connect 76 0 145 0; -#X connect 76 0 146 0; -#X connect 77 0 78 0; -#X connect 78 0 99 0; -#X connect 78 0 94 0; -#X connect 78 0 79 0; -#X connect 78 1 76 0; -#X connect 79 0 118 0; -#X connect 79 0 163 0; -#X connect 79 0 164 0; -#X connect 79 0 165 0; -#X connect 79 0 166 0; -#X connect 79 0 167 0; -#X connect 79 0 168 0; -#X connect 79 0 169 0; -#X connect 79 0 170 0; -#X connect 80 0 137 0; -#X connect 80 0 138 0; -#X connect 81 0 137 0; -#X connect 82 0 139 0; -#X connect 83 0 138 0; -#X connect 84 0 142 0; -#X connect 85 0 141 0; -#X connect 86 0 143 0; -#X connect 87 0 142 0; -#X connect 88 0 144 0; -#X connect 89 0 143 0; -#X connect 90 0 140 0; -#X connect 91 0 139 0; -#X connect 92 0 141 0; -#X connect 93 0 140 0; -#X connect 94 0 137 0; -#X connect 95 0 145 0; -#X connect 96 0 144 0; -#X connect 97 0 146 0; -#X connect 98 0 145 0; -#X connect 98 0 146 0; -#X connect 99 0 137 0; -#X connect 100 0 146 0; -#X connect 101 0 103 0; -#X connect 102 0 108 0; -#X connect 103 0 102 1; -#X connect 103 1 102 0; -#X connect 104 0 106 0; -#X connect 105 0 107 0; -#X connect 106 0 105 1; -#X connect 106 1 105 0; -#X connect 107 0 118 0; -#X connect 108 0 118 0; -#X connect 109 0 100 0; -#X connect 110 1 163 1; -#X connect 111 1 163 1; -#X connect 112 1 164 1; -#X connect 113 1 165 1; -#X connect 114 1 166 1; -#X connect 115 1 168 1; -#X connect 116 1 169 1; -#X connect 117 1 118 1; -#X connect 118 1 97 0; -#X connect 118 1 98 0; -#X connect 118 1 117 1; -#X connect 118 1 119 2; -#X connect 118 1 136 0; -#X connect 118 1 148 1; -#X connect 119 1 170 1; -#X connect 119 2 118 1; -#X connect 120 1 169 1; -#X connect 120 2 170 1; -#X connect 121 1 168 1; -#X connect 121 2 169 1; -#X connect 122 1 167 1; -#X connect 122 2 168 1; -#X connect 123 1 165 1; -#X connect 123 2 166 1; -#X connect 124 1 164 1; -#X connect 124 2 165 1; -#X connect 125 1 163 1; -#X connect 125 2 164 1; -#X connect 125 2 164 1; -#X connect 126 1 166 1; -#X connect 126 2 167 1; -#X connect 127 1 170 1; -#X connect 147 0 28 0; -#X connect 148 1 118 1; -#X connect 149 0 34 0; -#X connect 150 0 31 0; -#X connect 151 0 106 0; -#X connect 152 0 103 0; -#X connect 162 1 167 1; -#X connect 163 1 80 0; -#X connect 163 1 81 0; -#X connect 163 1 110 1; -#X connect 163 1 125 1; -#X connect 163 1 128 0; -#X connect 164 1 82 0; -#X connect 164 1 83 0; -#X connect 164 1 112 1; -#X connect 164 1 124 1; -#X connect 164 1 125 2; -#X connect 164 1 129 0; -#X connect 165 1 90 0; -#X connect 165 1 91 0; -#X connect 165 1 113 1; -#X connect 165 1 123 1; -#X connect 165 1 124 2; -#X connect 165 1 130 0; -#X connect 166 1 92 0; -#X connect 166 1 93 0; -#X connect 166 1 114 1; -#X connect 166 1 123 2; -#X connect 166 1 126 1; -#X connect 166 1 131 0; -#X connect 167 1 84 0; -#X connect 167 1 85 0; -#X connect 167 1 122 1; -#X connect 167 1 126 2; -#X connect 167 1 132 0; -#X connect 167 1 162 1; -#X connect 168 1 86 0; -#X connect 168 1 87 0; -#X connect 168 1 115 1; -#X connect 168 1 121 1; -#X connect 168 1 122 2; -#X connect 168 1 133 0; -#X connect 169 1 88 0; -#X connect 169 1 89 0; -#X connect 169 1 116 1; -#X connect 169 1 120 1; -#X connect 169 1 121 2; -#X connect 169 1 134 0; -#X connect 170 1 95 0; -#X connect 170 1 96 0; -#X connect 170 1 119 1; -#X connect 170 1 120 2; -#X connect 170 1 127 1; -#X connect 170 1 135 0; diff --git a/extensions/xgui/doc/sound/atom.pd b/extensions/xgui/doc/sound/atom.pd deleted file mode 100644 index 561955e2299f5b6640e967936510a14d72697b96..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/sound/atom.pd +++ /dev/null @@ -1,33 +0,0 @@ -#N canvas 288 79 328 356 12; -#X obj 17 20 inlet; -#X obj 189 14 loadbang; -#X floatatom 204 81 5 0 0; -#X obj 187 43 \$1; -#X obj 108 228 osc~; -#X obj 110 119 +; -#X obj 141 301 outlet~; -#X obj 111 149 mtof; -#X obj 17 50 unpack s 0 0 0 0; -#X obj 109 200 line~; -#X obj 110 173 pack 0 50; -#X obj 203 165 / 400; -#X obj 141 271 *~; -#X obj 201 226 line~; -#X obj 202 199 pack 0 50; -#X obj 109 91 / 50; -#X connect 0 0 8 0; -#X connect 1 0 3 0; -#X connect 3 0 2 0; -#X connect 3 0 5 1; -#X connect 4 0 12 0; -#X connect 5 0 7 0; -#X connect 7 0 10 0; -#X connect 8 3 15 0; -#X connect 8 4 11 0; -#X connect 9 0 4 0; -#X connect 10 0 9 0; -#X connect 11 0 14 0; -#X connect 12 0 6 0; -#X connect 13 0 12 1; -#X connect 14 0 13 0; -#X connect 15 0 5 0; diff --git a/extensions/xgui/doc/sound/sound.pd b/extensions/xgui/doc/sound/sound.pd deleted file mode 100644 index f6a210bf4f3e8184f5e7ace6824f4d9353b36249..0000000000000000000000000000000000000000 --- a/extensions/xgui/doc/sound/sound.pd +++ /dev/null @@ -1,136 +0,0 @@ -#N canvas 28 -13 1010 170 12; -#X obj 866 32 vsl 15 128 0 127 0 0 move_y2 empty empty 0 -8 128 8 -262144 --1 -1 12700 1; -#X obj 804 88 hsl 128 15 0 127 0 0 move_x2 empty empty -2 -6 128 8 --262144 -1 -1 12700 1; -#X obj 212 153 dac~; -#X obj 212 123 *~ 0.2; -#X obj 275 152 dac~; -#X obj 275 122 *~ 0.2; -#X obj 338 153 dac~; -#X obj 338 121 *~ 0.2; -#X obj 406 152 dac~; -#X obj 402 122 *~ 0.2; -#X obj 473 154 dac~; -#X obj 467 121 *~ 0.2; -#X obj 530 156 dac~; -#X obj 530 121 *~ 0.2; -#X obj 467 82 atom 60; -#X obj 595 151 dac~; -#X obj 592 121 *~ 0.2; -#X obj 655 152 dac~; -#X obj 655 119 *~ 0.2; -#X obj 655 80 atom 24; -#X obj 592 82 atom 36; -#X obj 530 82 atom 48; -#X obj 402 83 atom 72; -#X obj 338 82 atom 65; -#X obj 275 83 atom 63; -#X obj 212 84 atom 67; -#X obj 103 33 vsl 15 128 0 127 0 0 move_y1 empty empty 0 -8 128 8 -262144 --1 -1 7200 1; -#X obj 54 91 hsl 128 15 0 127 0 0 move_x1 empty empty -2 -6 128 8 -262144 --1 -1 5700 1; -#X obj 216 12 2yoyo; -#X obj 214 307 dac~; -#X obj 214 277 *~ 0.2; -#X obj 277 306 dac~; -#X obj 277 276 *~ 0.2; -#X obj 340 307 dac~; -#X obj 340 275 *~ 0.2; -#X obj 408 306 dac~; -#X obj 404 276 *~ 0.2; -#X obj 475 308 dac~; -#X obj 469 275 *~ 0.2; -#X obj 532 310 dac~; -#X obj 532 275 *~ 0.2; -#X obj 469 236 atom 60; -#X obj 597 305 dac~; -#X obj 594 275 *~ 0.2; -#X obj 657 306 dac~; -#X obj 657 273 *~ 0.2; -#X obj 657 234 atom 24; -#X obj 594 236 atom 36; -#X obj 532 236 atom 48; -#X obj 404 237 atom 72; -#X obj 340 236 atom 65; -#X obj 277 237 atom 63; -#X obj 214 238 atom 67; -#X obj 214 206 r xy28; -#X obj 276 202 r xy27; -#X obj 339 202 r xy26; -#X obj 403 202 r xy25; -#X obj 468 201 r xy24; -#X obj 531 202 r xy23; -#X obj 594 201 r xy22; -#X obj 656 199 r xy21; -#X msg 726 84 0.05; -#X msg 728 238 0.05; -#X obj 212 52 r xy11; -#X obj 274 48 r xy12; -#X obj 337 48 r xy13; -#X obj 401 48 r xy14; -#X obj 466 47 r xy15; -#X obj 529 48 r xy16; -#X obj 592 47 r xy17; -#X obj 654 45 r xy18; -#X connect 3 0 2 0; -#X connect 5 0 4 0; -#X connect 7 0 6 0; -#X connect 9 0 8 0; -#X connect 11 0 10 0; -#X connect 13 0 12 0; -#X connect 14 0 11 0; -#X connect 16 0 15 0; -#X connect 18 0 17 0; -#X connect 19 0 18 0; -#X connect 20 0 16 0; -#X connect 21 0 13 0; -#X connect 22 0 9 0; -#X connect 23 0 7 0; -#X connect 24 0 5 0; -#X connect 25 0 3 0; -#X connect 30 0 29 1; -#X connect 32 0 31 1; -#X connect 34 0 33 1; -#X connect 36 0 35 1; -#X connect 38 0 37 1; -#X connect 40 0 39 1; -#X connect 41 0 38 0; -#X connect 43 0 42 1; -#X connect 45 0 44 1; -#X connect 46 0 45 0; -#X connect 47 0 43 0; -#X connect 48 0 40 0; -#X connect 49 0 36 0; -#X connect 50 0 34 0; -#X connect 51 0 32 0; -#X connect 52 0 30 0; -#X connect 53 0 52 0; -#X connect 54 0 51 0; -#X connect 55 0 50 0; -#X connect 56 0 49 0; -#X connect 57 0 41 0; -#X connect 58 0 48 0; -#X connect 59 0 47 0; -#X connect 60 0 46 0; -#X connect 61 0 3 1; -#X connect 61 0 5 1; -#X connect 61 0 9 1; -#X connect 61 0 13 1; -#X connect 61 0 16 1; -#X connect 61 0 18 1; -#X connect 62 0 30 1; -#X connect 62 0 32 1; -#X connect 62 0 36 1; -#X connect 62 0 40 1; -#X connect 62 0 43 1; -#X connect 62 0 45 1; -#X connect 63 0 25 0; -#X connect 64 0 24 0; -#X connect 65 0 23 0; -#X connect 66 0 22 0; -#X connect 67 0 14 0; -#X connect 68 0 21 0; -#X connect 69 0 20 0; -#X connect 70 0 19 0; diff --git a/extensions/xgui/filters/coord.pd b/extensions/xgui/filters/coord.pd deleted file mode 100644 index 58ab6271d0e1b77fbf8570137225ef133b91ed5c..0000000000000000000000000000000000000000 --- a/extensions/xgui/filters/coord.pd +++ /dev/null @@ -1,10 +0,0 @@ -#N canvas 525 571 229 169 10; -#X text 120 114 dh20020106; -#X obj 35 36 inlet; -#X obj 35 111 outlet; -#X obj 35 63 route coord; -#X msg 35 87 coord \$1 \$2 \$3 \$4; -#X text 10 6 coord : filter coord command; -#X connect 1 0 3 0; -#X connect 3 0 4 0; -#X connect 4 0 2 0; diff --git a/extensions/xgui/filters/xy1.pd b/extensions/xgui/filters/xy1.pd deleted file mode 100644 index ec45cc36caf0141da9adb2503c5f1146ad55711a..0000000000000000000000000000000000000000 --- a/extensions/xgui/filters/xy1.pd +++ /dev/null @@ -1,10 +0,0 @@ -#N canvas 525 571 290 169 10; -#X text 120 114 dh20020106; -#X obj 35 36 inlet; -#X obj 35 111 outlet; -#X text 10 6 move : filter move command; -#X obj 35 63 route xy1; -#X msg 35 87 xy1 \$1 \$2; -#X connect 1 0 4 0; -#X connect 4 0 5 0; -#X connect 5 0 2 0; diff --git a/extensions/xgui/filters/xy2.pd b/extensions/xgui/filters/xy2.pd deleted file mode 100644 index f62f4170fafd46dc7ca672750aad97454f632ee4..0000000000000000000000000000000000000000 --- a/extensions/xgui/filters/xy2.pd +++ /dev/null @@ -1,10 +0,0 @@ -#N canvas 537 631 290 169 10; -#X text 120 114 dh20020106; -#X obj 35 36 inlet; -#X obj 35 111 outlet; -#X text 10 6 move : filter move command; -#X msg 35 87 xy2 \$1 \$2; -#X obj 35 63 route xy2; -#X connect 1 0 5 0; -#X connect 4 0 2 0; -#X connect 5 0 4 0; diff --git a/extensions/xgui/install.bat b/extensions/xgui/install.bat deleted file mode 100644 index fa81b06d429d65b1148adf3683c6f8ca4ad683f2..0000000000000000000000000000000000000000 --- a/extensions/xgui/install.bat +++ /dev/null @@ -1,7 +0,0 @@ -mkdir ..\doc\xgui -copy doc\* ..\doc\xgui -cd bin -copy *.dll ..\..\extra -cd .. - - diff --git a/extensions/xgui/main/alias.pd b/extensions/xgui/main/alias.pd deleted file mode 100644 index d5c0d4672372dcda5eb12db8c5a3d787c32657c1..0000000000000000000000000000000000000000 --- a/extensions/xgui/main/alias.pd +++ /dev/null @@ -1,9 +0,0 @@ -#N canvas 0 0 454 304 12; -#X obj 10 9 inlet; -#X obj 10 90 outlet; -#X text 77 93 dh20020215; -#X text 95 7 alias an existing object; -#X obj 10 36 s \$1-in; -#X obj 10 63 r \$1-out; -#X connect 0 0 4 0; -#X connect 5 0 1 0; diff --git a/extensions/xgui/main/arc.pd b/extensions/xgui/main/arc.pd deleted file mode 100644 index 6586c96c306ebe070ce3e0f77ec2effde0245d23..0000000000000000000000000000000000000000 --- a/extensions/xgui/main/arc.pd +++ /dev/null @@ -1,59 +0,0 @@ -#N canvas 201 377 599 300 10; -#X obj 24 30 inlet; -#X obj 462 176 outlet; -#X text 454 203 dh2002010x; -#X text 465 214 dh20020316; -#X text 24 9 The SEG onject; -#X text 476 228 dh20020425; -#X obj 333 121 oname2l; -#X obj 333 144 unpack s s s; -#X obj 333 75 loadbang; -#X obj 333 236 s \$1-c; -#X obj 408 164 s \$1-o; -#X obj 52 90 r \$1-c; -#X obj 126 94 r \$1-o; -#X obj 333 167 pack s s; -#X text 486 235 dh20020530; -#X obj 332 207 a2s; -#X msg 333 190 list \$1 / \$2; -#X obj 139 228 send to_node; -#X obj 333 98 symbol \$2; -#X obj 59 30 r \$1-in; -#X obj 471 151 s \$1-out; -#X obj 195 154 concat do; -#X obj 195 131 concat \$2; -#X obj 13 145 make4seg_sss x del x; -#X obj 24 55 route show hide @; -#X obj 462 99 recv2 \$2; -#X obj 460 73 concat @; -#X obj 216 101 concat symbol; -#X obj 13 122 make4seg_sss x add_arc x; -#X connect 0 0 24 0; -#X connect 6 0 7 0; -#X connect 7 0 13 0; -#X connect 7 1 13 1; -#X connect 7 2 10 0; -#X connect 8 0 18 0; -#X connect 11 0 23 1; -#X connect 11 0 28 1; -#X connect 12 0 23 3; -#X connect 12 0 28 3; -#X connect 13 0 16 0; -#X connect 15 0 9 0; -#X connect 16 0 15 0; -#X connect 18 0 6 0; -#X connect 19 0 24 0; -#X connect 21 0 17 0; -#X connect 22 0 21 0; -#X connect 23 0 17 0; -#X connect 24 0 28 0; -#X connect 24 1 23 0; -#X connect 24 2 18 0; -#X connect 24 2 26 0; -#X connect 24 2 27 0; -#X connect 24 3 22 0; -#X connect 25 0 1 0; -#X connect 25 0 20 0; -#X connect 26 0 25 0; -#X connect 27 0 22 1; -#X connect 28 0 17 0; diff --git a/extensions/xgui/main/canvas.pd b/extensions/xgui/main/canvas.pd deleted file mode 100644 index b40a101d032c057efa40456ddfedd741cf224701..0000000000000000000000000000000000000000 --- a/extensions/xgui/main/canvas.pd +++ /dev/null @@ -1,28 +0,0 @@ -#N canvas 50 250 521 286 10; -#X obj 196 8 inlet; -#X obj 399 104 outlet; -#X obj 237 8 r \$1-in; -#X obj 423 64 s \$1-out; -#X text 406 137 dh20020316; -#X text 22 8 The CANVAS object; -#X obj 69 111 make4seg_ss */ add_canvas \$1; -#X obj 121 134 make4seg_ss */ del_canvas \$1; -#X obj 399 32 receive \$1; -#X obj 202 231 send to_node; -#X obj 399 9 receive \$1/; -#X obj 303 132 concat do; -#X obj 196 33 route show hide; -#X obj 303 107 concat \$1; -#X connect 0 0 12 0; -#X connect 2 0 12 0; -#X connect 6 0 9 0; -#X connect 7 0 9 0; -#X connect 8 0 3 0; -#X connect 8 0 1 0; -#X connect 10 0 1 0; -#X connect 10 0 3 0; -#X connect 11 0 9 0; -#X connect 12 0 6 0; -#X connect 12 1 7 0; -#X connect 12 2 13 0; -#X connect 13 0 11 0; diff --git a/extensions/xgui/main/make4seg_ss.pd b/extensions/xgui/main/make4seg_ss.pd deleted file mode 100644 index 1d6dd1f9fb1726d8d2f860b7bab82f0ab1074a73..0000000000000000000000000000000000000000 --- a/extensions/xgui/main/make4seg_ss.pd +++ /dev/null @@ -1,31 +0,0 @@ -#N canvas 353 333 341 355 12; -#X obj 21 34 inlet; -#X obj 21 294 outlet; -#X obj 43 130 symbol \$1; -#X obj 80 157 symbol \$2; -#X obj 118 182 symbol \$3; -#X obj 21 60 bang; -#X obj 110 103 inlet; -#X obj 147 130 inlet; -#X obj 184 157 inlet; -#X obj 43 208 pack s s s; -#X obj 21 86 t b b b b; -#X text 205 299 dh20020316; -#X text 25 4 make easy to concatenate 3 symbols.; -#X msg 43 234 set do \$1 \$2 \$3; -#X msg 21 268 do */ add_canvas */my_first_canvas; -#X connect 0 0 5 0; -#X connect 2 0 9 0; -#X connect 3 0 9 1; -#X connect 4 0 9 2; -#X connect 5 0 10 0; -#X connect 6 0 2 1; -#X connect 7 0 3 1; -#X connect 8 0 4 1; -#X connect 9 0 13 0; -#X connect 10 0 14 0; -#X connect 10 1 2 0; -#X connect 10 2 3 0; -#X connect 10 3 4 0; -#X connect 13 0 14 0; -#X connect 14 0 1 0; diff --git a/extensions/xgui/main/make4seg_sss.pd b/extensions/xgui/main/make4seg_sss.pd deleted file mode 100644 index 75f3027c32bb2beebb0c1afc6db455c4633ffc48..0000000000000000000000000000000000000000 --- a/extensions/xgui/main/make4seg_sss.pd +++ /dev/null @@ -1,33 +0,0 @@ -#N canvas 325 279 339 353 12; -#X obj 21 34 inlet; -#X obj 21 294 outlet; -#X obj 43 130 symbol \$1; -#X obj 80 157 symbol \$2; -#X obj 118 182 symbol \$3; -#X msg 21 268 do */my_first_canvas/my_first_seg add_seg ; -#X obj 21 60 bang; -#X obj 43 208 pack s s s; -#X obj 21 86 t b b b b; -#X text 205 299 dh20020316; -#X text 25 4 make easy to concatenate 3 symbols.; -#X obj 208 125 inlet; -#X obj 209 155 symbol; -#X msg 43 234 set do \$1 \$2 \$3; -#X obj 111 99 inlet; -#X obj 148 130 inlet; -#X connect 0 0 6 0; -#X connect 2 0 7 0; -#X connect 3 0 7 1; -#X connect 4 0 7 2; -#X connect 5 0 1 0; -#X connect 6 0 8 0; -#X connect 7 0 13 0; -#X connect 8 0 5 0; -#X connect 8 1 2 0; -#X connect 8 2 3 0; -#X connect 8 3 4 0; -#X connect 11 0 12 0; -#X connect 12 0 4 1; -#X connect 13 0 5 0; -#X connect 14 0 2 1; -#X connect 15 0 3 1; diff --git a/extensions/xgui/main/make_obj_name.pd b/extensions/xgui/main/make_obj_name.pd deleted file mode 100644 index 89c2402320519c5129b714f9b2fdf66b2925d599..0000000000000000000000000000000000000000 --- a/extensions/xgui/main/make_obj_name.pd +++ /dev/null @@ -1,23 +0,0 @@ -#N canvas 295 214 335 231 10; -#X msg 28 174 @ \$1; -#X obj 28 110 concat \$1; -#X obj 28 88 concat /; -#X obj 28 131 concat list; -#X obj 28 153 a2s; -#X obj 28 196 outlet; -#X text 253 200 dh20020602; -#X obj 28 68 concat o; -#X obj 28 46 unique; -#X msg 157 28 bang; -#X symbolatom 159 171 10 0 0; -#X obj 28 22 loadbang; -#X connect 0 0 5 0; -#X connect 1 0 3 0; -#X connect 2 0 1 0; -#X connect 3 0 4 0; -#X connect 4 0 0 0; -#X connect 4 0 10 0; -#X connect 7 0 2 0; -#X connect 8 0 7 0; -#X connect 9 0 8 0; -#X connect 11 0 8 0; diff --git a/extensions/xgui/main/node.pd b/extensions/xgui/main/node.pd deleted file mode 100644 index cb84207a98662cd37884a5333b1c15dc1d391b54..0000000000000000000000000000000000000000 --- a/extensions/xgui/main/node.pd +++ /dev/null @@ -1,100 +0,0 @@ -#N canvas 409 95 574 567 10; -#X obj 31 28 inlet; -#X text 14 10 The pd basic node; -#X obj 9 260 outlet; -#X obj 47 304 netreceive \$2; -#X obj 261 9 loadbang; -#X obj 163 141 concat send; -#X obj 261 60 symbol \$1; -#X obj 321 59 float \$2; -#X obj 261 85 pack s f; -#X obj 31 51 route connect disconnect do; -#X obj 82 163 netsend; -#X obj 9 228 r */; -#X obj 74 27 r to_node; -#X msg 261 108 list \$1 : \$2; -#X obj 261 130 a2s; -#X obj 261 33 t b b; -#X text 310 398 dh20020530; -#X obj 161 96 spigot; -#X obj 86 263 outlet; -#X obj 86 240 a2s; -#X obj 86 215 concat list; -#X obj 193 395 outlet; -#X obj 189 367 a2s; -#X obj 188 344 concat list; -#X msg 86 191 connect_to_ \$1 _other_nodes; -#X msg 188 320 connect_from_ \$1 _other_nodes; -#X obj 31 80 t a b; -#X obj 23 330 replace_selector foo; -#X obj 23 354 route foo; -#X obj 55 401 send2; -#X obj 416 344 oname2l; -#X obj 416 321 symbol; -#X obj 419 390 a2s; -#X msg 416 367 list * / \$2 / \$3; -#X obj 23 424 replace_selector foo; -#X obj 23 455 send2; -#X obj 446 414 a2s; -#X msg 443 391 list * / \$2; -#X obj 23 378 t a a a a; -#X obj 164 426 replace_selector foo; -#X obj 190 248 print in_pd; -#X obj 285 238 print out_pd; -#X obj 31 108 concat connect; -#X msg 69 132 disconnect; -#X obj 284 216 spigot; -#X obj 190 227 spigot; -#X obj 520 17 inlet; -#X obj 162 118 concat pd; -#X connect 0 0 9 0; -#X connect 3 0 45 0; -#X connect 3 0 27 0; -#X connect 3 1 25 0; -#X connect 4 0 15 0; -#X connect 5 0 44 0; -#X connect 5 0 10 0; -#X connect 6 0 8 0; -#X connect 7 0 8 1; -#X connect 8 0 13 0; -#X connect 9 0 26 0; -#X connect 9 1 43 0; -#X connect 9 2 17 0; -#X connect 10 0 24 0; -#X connect 10 0 17 1; -#X connect 11 0 2 0; -#X connect 12 0 9 0; -#X connect 13 0 14 0; -#X connect 15 0 6 0; -#X connect 15 1 7 0; -#X connect 17 0 47 0; -#X connect 19 0 18 0; -#X connect 20 0 19 0; -#X connect 22 0 21 0; -#X connect 23 0 22 0; -#X connect 24 0 20 0; -#X connect 25 0 23 0; -#X connect 26 0 42 0; -#X connect 26 1 43 0; -#X connect 27 0 28 0; -#X connect 28 0 38 0; -#X connect 30 0 33 0; -#X connect 30 0 37 0; -#X connect 31 0 30 0; -#X connect 32 0 34 1; -#X connect 33 0 32 0; -#X connect 34 0 35 0; -#X connect 36 0 39 1; -#X connect 37 0 36 0; -#X connect 38 0 34 0; -#X connect 38 1 39 0; -#X connect 38 2 29 0; -#X connect 38 3 31 0; -#X connect 39 0 35 0; -#X connect 42 0 10 0; -#X connect 43 0 10 0; -#X connect 44 0 41 0; -#X connect 45 0 40 0; -#X connect 46 0 44 1; -#X connect 46 0 45 1; -#X connect 47 0 5 0; diff --git a/extensions/xgui/main/pdx_connect.pd b/extensions/xgui/main/pdx_connect.pd deleted file mode 100644 index 54298a29b9b3e7fce33331c27ad76446e7cb6290..0000000000000000000000000000000000000000 --- a/extensions/xgui/main/pdx_connect.pd +++ /dev/null @@ -1,77 +0,0 @@ -#N canvas 60 126 1021 550 12; -#X msg 728 285 bang; -#X msg 778 285 stop; -#X obj 728 313 loadbang; -#X obj 700 475 s b_mass; -#X obj 806 393 s b_init; -#X obj 728 367 t b b b b; -#X obj 775 424 s b_spring; -#X obj 728 341 metro 50; -#X obj 672 505 valueinit time_interval 0.05; -#X obj 740 451 s b_force; -#X text 443 442 dh20020530; -#X obj 15 253 print node1; -#X obj 15 339 print node2; -#X symbolatom 25 198 30 0 0; -#X symbolatom 26 225 30 0 0; -#X obj 15 171 node localhost 4871; -#X msg 260 67 disconnect; -#X text -17 515 Keep this patch open to keep the link with xgui active. -; -#X text -18 497 Go and see Help Pure documentation /xgui to see some -demos; -#X obj 14 18 loadbang; -#X obj 14 43 t b b; -#X floatatom 199 173 1 0 1; -#X obj 15 310 node 192.168.0.5 4872; -#X msg 15 282 connect 192.168.0.4 4877 \, do */ connect 192.168.0.4:4877 -; -#X msg 64 43 do ~/ connect_on 192.168.0.4:4877 physics; -#X msg 547 59 do ~/ connect_on 192.168.0.4:4877 my_canvas; -#X msg 548 31 do ~/ connect_on pd.la-kitchen.net:4877 physics; -#X msg 448 224 do localhost:4878/ connect pd pd.la-kitchen:4871; -#X msg 450 149 do pd.la-kitchen.net:4877/ connect me; -#X msg 450 176 do pd.la-kitchen.net:4877/ clone physics ~/physics localhost:4877 -; -#X msg 446 100 do ~/ connect pd.la-kitchen.net:4877; -#X msg 259 316 connect pd.la-kitchen.net 4877; -#X symbolatom 95 366 30 0 0; -#X symbolatom 96 393 30 0 0; -#X msg 14 95 do localhost:4877/ connect pd localhost:4871; -#X msg 24 121 do localhost:4877/ disconnect pd; -#X msg 49 68 connect localhost 4877; -#X msg 447 122 do pd.la-kitchen.net:4877/ # test***; -#X msg 190 4 do ~/ rename moi 4877; -#X connect 0 0 7 0; -#X connect 1 0 7 0; -#X connect 2 0 7 0; -#X connect 5 0 3 0; -#X connect 5 1 9 0; -#X connect 5 2 6 0; -#X connect 5 3 4 0; -#X connect 7 0 5 0; -#X connect 15 0 11 0; -#X connect 15 1 13 0; -#X connect 15 2 14 0; -#X connect 16 0 15 0; -#X connect 19 0 20 0; -#X connect 20 0 34 0; -#X connect 20 1 36 0; -#X connect 21 0 15 1; -#X connect 22 0 12 0; -#X connect 22 1 32 0; -#X connect 22 2 33 0; -#X connect 23 0 22 0; -#X connect 24 0 15 0; -#X connect 25 0 15 0; -#X connect 26 0 15 0; -#X connect 27 0 15 0; -#X connect 28 0 15 0; -#X connect 29 0 15 0; -#X connect 30 0 15 0; -#X connect 31 0 22 0; -#X connect 34 0 15 0; -#X connect 35 0 15 0; -#X connect 36 0 15 0; -#X connect 37 0 15 0; -#X connect 38 0 15 0; diff --git a/extensions/xgui/main/rect.pd b/extensions/xgui/main/rect.pd deleted file mode 100644 index b964a70f4313d8f6902538433cb86e5b721d9e79..0000000000000000000000000000000000000000 --- a/extensions/xgui/main/rect.pd +++ /dev/null @@ -1,59 +0,0 @@ -#N canvas 201 377 601 302 10; -#X obj 24 30 inlet; -#X obj 462 176 outlet; -#X text 454 203 dh2002010x; -#X text 465 214 dh20020316; -#X text 476 228 dh20020425; -#X obj 333 121 oname2l; -#X obj 333 144 unpack s s s; -#X obj 333 75 loadbang; -#X obj 333 236 s \$1-c; -#X obj 408 164 s \$1-o; -#X obj 52 90 r \$1-c; -#X obj 126 94 r \$1-o; -#X obj 333 167 pack s s; -#X text 486 235 dh20020530; -#X obj 332 207 a2s; -#X msg 333 190 list \$1 / \$2; -#X obj 139 228 send to_node; -#X obj 333 98 symbol \$2; -#X obj 59 30 r \$1-in; -#X obj 471 151 s \$1-out; -#X obj 195 154 concat do; -#X obj 195 131 concat \$2; -#X obj 13 145 make4seg_sss x del x; -#X obj 24 55 route show hide @; -#X obj 462 99 recv2 \$2; -#X obj 460 73 concat @; -#X obj 216 101 concat symbol; -#X obj 13 122 make4seg_sss x add_rect x; -#X text 24 9 The Rect onject; -#X connect 0 0 23 0; -#X connect 5 0 6 0; -#X connect 6 0 12 0; -#X connect 6 1 12 1; -#X connect 6 2 9 0; -#X connect 7 0 17 0; -#X connect 10 0 22 1; -#X connect 10 0 27 1; -#X connect 11 0 22 3; -#X connect 11 0 27 3; -#X connect 12 0 15 0; -#X connect 14 0 8 0; -#X connect 15 0 14 0; -#X connect 17 0 5 0; -#X connect 18 0 23 0; -#X connect 20 0 16 0; -#X connect 21 0 20 0; -#X connect 22 0 16 0; -#X connect 23 0 27 0; -#X connect 23 1 22 0; -#X connect 23 2 17 0; -#X connect 23 2 25 0; -#X connect 23 2 26 0; -#X connect 23 3 21 0; -#X connect 24 0 1 0; -#X connect 24 0 19 0; -#X connect 25 0 24 0; -#X connect 26 0 21 1; -#X connect 27 0 16 0; diff --git a/extensions/xgui/main/seg.pd b/extensions/xgui/main/seg.pd deleted file mode 100644 index 1b44fd5db9cf0f90a60de4c1d3c247fd1315ce82..0000000000000000000000000000000000000000 --- a/extensions/xgui/main/seg.pd +++ /dev/null @@ -1,60 +0,0 @@ -#N canvas 387 -9 599 292 10; -#X obj 24 30 inlet; -#X obj 472 176 outlet; -#X text 454 203 dh2002010x; -#X text 465 214 dh20020316; -#X text 24 9 The SEG onject; -#X text 476 228 dh20020425; -#X obj 333 121 oname2l; -#X obj 333 144 unpack s s s; -#X obj 333 75 loadbang; -#X obj 333 236 s \$1-c; -#X obj 408 164 s \$1-o; -#X obj 52 90 r \$1-c; -#X obj 126 94 r \$1-o; -#X obj 333 167 pack s s; -#X text 486 235 dh20020530; -#X obj 332 207 a2s; -#X msg 333 190 list \$1 / \$2; -#X obj 139 228 send to_node; -#X obj 333 98 symbol \$2; -#X obj 59 30 r \$1-in; -#X obj 481 151 s \$1-out; -#X obj 195 154 concat do; -#X obj 195 131 concat \$2; -#X obj 13 145 make4seg_sss x del x; -#X obj 13 122 make4seg_sss x add_seg x; -#X obj 24 55 route show hide @; -#X obj 472 99 recv2 \$2; -#X obj 470 73 concat @; -#X obj 216 101 concat symbol; -#X text 18 342 today's the 14 of july; -#X connect 0 0 25 0; -#X connect 6 0 7 0; -#X connect 7 0 13 0; -#X connect 7 1 13 1; -#X connect 7 2 10 0; -#X connect 8 0 18 0; -#X connect 11 0 23 1; -#X connect 11 0 24 1; -#X connect 12 0 23 3; -#X connect 12 0 24 3; -#X connect 13 0 16 0; -#X connect 15 0 9 0; -#X connect 16 0 15 0; -#X connect 18 0 6 0; -#X connect 19 0 25 0; -#X connect 21 0 17 0; -#X connect 22 0 21 0; -#X connect 23 0 17 0; -#X connect 24 0 17 0; -#X connect 25 0 24 0; -#X connect 25 1 23 0; -#X connect 25 2 18 0; -#X connect 25 2 27 0; -#X connect 25 2 28 0; -#X connect 25 3 22 0; -#X connect 26 0 1 0; -#X connect 26 0 20 0; -#X connect 27 0 26 0; -#X connect 28 0 22 1; diff --git a/extensions/xgui/main/text.pd b/extensions/xgui/main/text.pd deleted file mode 100644 index ee3b81863801a6bcafcc3097f2f3bacd22a0feab..0000000000000000000000000000000000000000 --- a/extensions/xgui/main/text.pd +++ /dev/null @@ -1,59 +0,0 @@ -#N canvas 201 377 599 300 10; -#X obj 24 30 inlet; -#X obj 462 176 outlet; -#X text 454 203 dh2002010x; -#X text 465 214 dh20020316; -#X text 476 228 dh20020425; -#X obj 333 121 oname2l; -#X obj 333 144 unpack s s s; -#X obj 333 75 loadbang; -#X obj 333 236 s \$1-c; -#X obj 408 164 s \$1-o; -#X obj 52 90 r \$1-c; -#X obj 126 94 r \$1-o; -#X obj 333 167 pack s s; -#X text 486 235 dh20020530; -#X obj 332 207 a2s; -#X msg 333 190 list \$1 / \$2; -#X obj 139 228 send to_node; -#X obj 333 98 symbol \$2; -#X obj 59 30 r \$1-in; -#X obj 471 151 s \$1-out; -#X obj 195 154 concat do; -#X obj 195 131 concat \$2; -#X obj 13 145 make4seg_sss x del x; -#X obj 24 55 route show hide @; -#X obj 462 99 recv2 \$2; -#X obj 460 73 concat @; -#X obj 216 101 concat symbol; -#X text 24 9 The text onject; -#X obj 13 122 make4seg_sss x add_text x; -#X connect 0 0 23 0; -#X connect 5 0 6 0; -#X connect 6 0 12 0; -#X connect 6 1 12 1; -#X connect 6 2 9 0; -#X connect 7 0 17 0; -#X connect 10 0 22 1; -#X connect 10 0 28 1; -#X connect 11 0 22 3; -#X connect 11 0 28 3; -#X connect 12 0 15 0; -#X connect 14 0 8 0; -#X connect 15 0 14 0; -#X connect 17 0 5 0; -#X connect 18 0 23 0; -#X connect 20 0 16 0; -#X connect 21 0 20 0; -#X connect 22 0 16 0; -#X connect 23 0 28 0; -#X connect 23 1 22 0; -#X connect 23 2 17 0; -#X connect 23 2 25 0; -#X connect 23 2 26 0; -#X connect 23 3 21 0; -#X connect 24 0 1 0; -#X connect 24 0 19 0; -#X connect 25 0 24 0; -#X connect 26 0 21 1; -#X connect 28 0 16 0; diff --git a/extensions/xgui/makefile b/extensions/xgui/makefile deleted file mode 100644 index 2c0e1631772f9b5e3aedd5779d7860b394806046..0000000000000000000000000000000000000000 --- a/extensions/xgui/makefile +++ /dev/null @@ -1,64 +0,0 @@ -#This is the xgui makefile. - -current: - cd xgui-lib ; make pd_linux ; cd .. - -uninstall: - -# bin - rm -f /usr/local/bin/xgui - rm -f /usr/local/bin/pdx -# main - rm -f /usr/local/lib/pdx/main/* - rmdir /usr/local/lib/pdx/main -# patch4pdx - rm -f /usr/local/lib/pdx/patch4pdx/* - rmdir /usr/local/lib/pdx/patch4pdx -# lib - rm -f /usr/local/lib/pdx/* - rmdir /usr/local/lib/pdx -# doc - rm -f /usr/local/lib/pd/doc/xgui/* - rmdir /usr/local/lib/pd/doc/xgui - - - -install: - -# bin - install ./bin/xgui.sh /usr/local/bin/xgui - install ./bin/pdx.sh /usr/local/bin/pdx - -# lib - mkdir -p /usr/local/lib/pdx - -# main - mkdir -p /usr/local/lib/pdx/main - install ./main/* /usr/local/lib/pdx/main/ - -# patch4pdx - mkdir -p /usr/local/lib/pdx/patch4pdx - - install ./adapters_in/* /usr/local/lib/pdx/patch4pdx/ - install ./adapters_out/* /usr/local/lib/pdx/patch4pdx/ - install ./behaviors/* /usr/local/lib/pdx/patch4pdx/ - install ./filters/* /usr/local/lib/pdx/patch4pdx/ - install ./objects/* /usr/local/lib/pdx/patch4pdx/ - install ./utils/* /usr/local/lib/pdx/patch4pdx/ - install ./physics/* /usr/local/lib/pdx/patch4pdx/ - -# xgui-lib - install ./bin/*.pd_linux /usr/local/lib/pd/extra/ - -# doc - mkdir -p /usr/local/lib/pd/doc/xgui/ - install ./doc/* /usr/local/lib/pd/doc/xgui/ - -archive: - cd ../;tar -cf xgui.tar xgui - gzip ../xgui.tar - -4linux: - chmod 774 pdx.sh - chmod 774 bin/pdx.sh - chmod 774 bin/xgui.sh diff --git a/extensions/xgui/objects/button.pd b/extensions/xgui/objects/button.pd deleted file mode 100644 index 1b6b696e9f528b2649f39864b7efd5bcfcb9bf5f..0000000000000000000000000000000000000000 --- a/extensions/xgui/objects/button.pd +++ /dev/null @@ -1,81 +0,0 @@ -#N canvas 261 228 640 649 10; -#X obj 21 16 inlet; -#X obj 21 40 route show float hide; -#X obj 200 185 pack f f f f; -#X msg 87 181 hide; -#X obj 295 193 pack f f; -#X obj 46 65 t b b b b b; -#X msg 295 217 show \, pos \$1 \$2 \, color blue \, anchor center; -#X obj 32 522 outlet; -#X msg 74 439 color grey; -#X msg 155 440 color white; -#X obj 76 369 route click; -#X obj 154 415 delay 100; -#X obj 336 164 moy; -#X obj 293 170 moy; -#X obj 194 138 \$4; -#X obj 219 138 \$5; -#X text 444 533 dh20020428; -#X msg 200 270 show \, coord \$1 \$2 \$3 \$4 \, width 1 \, color white -; -#X obj 243 93 \$4; -#X obj 277 93 \$5; -#X obj 243 116 + \$6; -#X obj 274 117 + \$7; -#X obj 21 132 t b b; -#X msg 49 161 raise; -#X msg 25 188 raise; -#X obj 323 307 symbol \$3; -#X msg 323 332 text \$1; -#X text 95 15 button canvas name text posX posY dX dY; -#X obj 76 343 rect \$1-c; -#X obj 56 256 make_obj_name \$2; -#X obj 88 320 make_obj_name \$2; -#X obj 37 283 text \$1-t; -#X obj 200 307 alias \$1-c; -#X obj 323 357 alias \$1-t; -#X obj 295 241 alias \$1-t; -#X obj 113 478 alias \$1-c; -#X connect 0 0 1 0; -#X connect 1 0 5 0; -#X connect 1 2 3 0; -#X connect 2 0 17 0; -#X connect 3 0 28 0; -#X connect 3 0 31 0; -#X connect 4 0 6 0; -#X connect 5 0 22 0; -#X connect 5 0 25 0; -#X connect 5 1 14 0; -#X connect 5 2 15 0; -#X connect 5 3 18 0; -#X connect 5 4 19 0; -#X connect 6 0 34 0; -#X connect 8 0 35 0; -#X connect 9 0 35 0; -#X connect 10 0 11 0; -#X connect 10 0 8 0; -#X connect 10 0 7 0; -#X connect 11 0 9 0; -#X connect 12 0 4 1; -#X connect 13 0 4 0; -#X connect 14 0 2 0; -#X connect 14 0 13 0; -#X connect 15 0 2 1; -#X connect 15 0 12 0; -#X connect 17 0 32 0; -#X connect 18 0 20 0; -#X connect 19 0 21 0; -#X connect 20 0 2 2; -#X connect 20 0 13 1; -#X connect 21 0 2 3; -#X connect 21 0 12 1; -#X connect 22 0 24 0; -#X connect 22 1 23 0; -#X connect 23 0 28 0; -#X connect 24 0 31 0; -#X connect 25 0 26 0; -#X connect 26 0 33 0; -#X connect 28 0 10 0; -#X connect 29 0 31 0; -#X connect 30 0 28 0; -#X connect 31 0 10 0; diff --git a/extensions/xgui/objects/i-point.pd b/extensions/xgui/objects/i-point.pd deleted file mode 100644 index f5697cbae142153afaf8c7c3ef09baf8c22db38f..0000000000000000000000000000000000000000 --- a/extensions/xgui/objects/i-point.pd +++ /dev/null @@ -1,6 +0,0 @@ -#N canvas 371 189 536 425 10; -#X obj 55 297 move; -#X obj 24 268 seg le \$0-point */; -#X obj 87 164 make_object_name \$1; -#X connect 0 0 1 0; -#X connect 1 0 0 0; diff --git a/extensions/xgui/objects/i-rect.pd b/extensions/xgui/objects/i-rect.pd deleted file mode 100644 index 291939c5af9c563d326c3d83d00fcc637130cdab..0000000000000000000000000000000000000000 --- a/extensions/xgui/objects/i-rect.pd +++ /dev/null @@ -1,142 +0,0 @@ -#N canvas 129 132 726 510 10; -#X msg 357 111 width \$1; -#X msg 357 88 raise; -#X obj 26 73 move; -#X obj 172 73 move; -#X obj 207 97 coord2xy; -#X obj 62 96 coord2xy; -#X obj 107 294 inlet; -#X obj 110 247 outlet; -#X msg 18 371 coord \$1 \$2 \$3 \$4; -#X msg 18 348 coord \$1 \$2 \$1 \$2; -#X msg 18 394 coord \$3 \$4 \$3 \$4; -#X msg 155 354 xy1 \$1 \$2; -#X msg 156 381 xy2 \$1 \$2; -#X msg 237 376 xy1 \$1 \$2; -#X msg 237 355 xy2 \$1 \$2; -#X obj 63 195 xy2xy1; -#X obj 201 190 xy2xy2; -#X obj 240 32 light_over; -#X obj 63 50 light_over; -#X obj 357 43 bang; -#X obj 154 463 alias \$0-p2; -#X obj 153 438 alias \$0-l1; -#X obj 156 410 alias \$0-p1; -#X obj 357 180 alias \$0-p2; -#X text 352 23 default values; -#X text 169 292 methodes; -#X text 25 26 two seg for driving one :; -#X obj 54 268 move; -#X msg 357 202 coord 10 10 30 30; -#X msg 311 254 show; -#X obj 107 316 route coord xy1 xy2 show; -#X msg 357 65 5; -#X text 346 423 dh20020427; -#X obj 67 161 min; -#X obj 91 161 min; -#X obj 114 162 min; -#X obj 139 162 min; -#X obj 187 139 max; -#X obj 212 139 max; -#X obj 237 140 max; -#X obj 262 140 max; -#X obj 207 73 seg \$0-p2 \$1/p2; -#X obj 62 74 seg \$0-p1 \$1/p1; -#X obj 357 134 alias \$0-p1; -#X obj 357 157 alias \$0-l1; -#X obj 526 92 oname2l; -#X obj 526 115 unpack s s s; -#X obj 526 46 loadbang; -#X obj 526 207 s \$1-c; -#X obj 601 135 s \$1-o; -#X obj 526 138 pack s s; -#X obj 526 184 a2s; -#X msg 526 161 list \$1 / \$2; -#X obj 526 69 symbol \$2; -#X obj 111 224 rect \$0-l1 \$1/l1; -#X text 7 2 i-rect; -#X connect 0 0 23 0; -#X connect 0 0 43 0; -#X connect 0 0 44 0; -#X connect 1 0 23 0; -#X connect 1 0 43 0; -#X connect 2 0 42 0; -#X connect 3 0 41 0; -#X connect 4 0 37 1; -#X connect 4 0 38 0; -#X connect 4 0 33 1; -#X connect 4 0 34 0; -#X connect 4 1 36 0; -#X connect 4 1 35 1; -#X connect 4 1 39 1; -#X connect 4 1 40 0; -#X connect 5 0 33 0; -#X connect 5 0 37 0; -#X connect 5 0 38 1; -#X connect 5 0 34 1; -#X connect 5 1 35 0; -#X connect 5 1 36 1; -#X connect 5 1 39 0; -#X connect 5 1 40 1; -#X connect 6 0 30 0; -#X connect 8 0 21 0; -#X connect 9 0 22 0; -#X connect 10 0 20 0; -#X connect 11 0 21 0; -#X connect 11 0 22 0; -#X connect 12 0 22 0; -#X connect 13 0 20 0; -#X connect 14 0 20 0; -#X connect 14 0 21 0; -#X connect 15 0 7 0; -#X connect 15 0 54 0; -#X connect 16 0 7 0; -#X connect 16 0 54 0; -#X connect 17 0 41 0; -#X connect 18 0 42 0; -#X connect 19 0 1 0; -#X connect 19 0 31 0; -#X connect 19 0 28 0; -#X connect 27 0 30 0; -#X connect 28 0 30 0; -#X connect 29 0 22 0; -#X connect 29 0 21 0; -#X connect 29 0 20 0; -#X connect 29 0 19 0; -#X connect 30 0 9 0; -#X connect 30 0 8 0; -#X connect 30 0 10 0; -#X connect 30 1 11 0; -#X connect 30 1 12 0; -#X connect 30 2 13 0; -#X connect 30 2 14 0; -#X connect 30 3 29 0; -#X connect 30 4 20 0; -#X connect 30 4 21 0; -#X connect 30 4 22 0; -#X connect 31 0 0 0; -#X connect 33 0 15 0; -#X connect 34 0 15 0; -#X connect 35 0 15 1; -#X connect 36 0 15 1; -#X connect 37 0 16 0; -#X connect 38 0 16 0; -#X connect 39 0 16 1; -#X connect 40 0 16 1; -#X connect 41 0 3 0; -#X connect 41 0 4 0; -#X connect 41 0 17 0; -#X connect 42 0 2 0; -#X connect 42 0 5 0; -#X connect 42 0 18 0; -#X connect 45 0 46 0; -#X connect 46 0 50 0; -#X connect 46 1 50 1; -#X connect 46 2 49 0; -#X connect 47 0 53 0; -#X connect 50 0 52 0; -#X connect 51 0 48 0; -#X connect 52 0 51 0; -#X connect 53 0 45 0; -#X connect 54 0 7 0; -#X connect 54 0 27 0; diff --git a/extensions/xgui/objects/i-seg.pd b/extensions/xgui/objects/i-seg.pd deleted file mode 100644 index 4c8cebb5366022a860bae02c5d848995f0fa63c6..0000000000000000000000000000000000000000 --- a/extensions/xgui/objects/i-seg.pd +++ /dev/null @@ -1,152 +0,0 @@ -#N canvas 161 127 786 457 10; -#X msg 357 111 width \$1; -#X msg 357 88 raise; -#X obj 26 73 move; -#X obj 172 73 move; -#X obj 207 96 coord2xy; -#X obj 63 96 coord2xy; -#X msg 357 65 15; -#X obj 106 244 inlet; -#X obj 109 197 outlet; -#X text 7 2 i-seg; -#X text 698 427 dh20020107; -#X msg 17 321 coord \$1 \$2 \$3 \$4; -#X msg 17 298 coord \$1 \$2 \$1 \$2; -#X msg 17 344 coord \$3 \$4 \$3 \$4; -#X msg 154 304 xy1 \$1 \$2; -#X msg 155 331 xy2 \$1 \$2; -#X msg 236 326 xy1 \$1 \$2; -#X msg 236 305 xy2 \$1 \$2; -#X obj 63 121 xy2xy1; -#X obj 203 122 xy2xy2; -#X obj 207 52 light_over; -#X obj 63 50 light_over; -#X obj 209 174 light_over; -#X obj 357 43 bang; -#X obj 384 366 osc~; -#X obj 384 297 mtof; -#X obj 384 388 *~ 0; -#X obj 375 414 dac~; -#X obj 628 276 coord2xy; -#X obj 501 223 r play_pos; -#X obj 446 253 in; -#X obj 446 364 * 0.1; -#X msg 628 226 move 0 0; -#X obj 628 251 alias \$0-l1; -#X obj 153 413 alias \$0-p2; -#X obj 152 388 alias \$0-l1; -#X obj 155 360 alias \$0-p1; -#X obj 357 134 alias \$0-p1; -#X obj 357 157 alias \$0-l1; -#X obj 357 180 alias \$0-p2; -#X text 352 23 default values; -#X text 168 242 methodes; -#X text 25 26 two seg for driving one :; -#X obj 53 218 move; -#X obj 384 342 line~; -#X obj 384 319 pack 0 3; -#X obj 510 304 expr (($f3-$f5)/($f2-$f4))*($f1-$f2)+$f3; -#X obj 384 256 * -0.5; -#X obj 384 276 + 127; -#X msg 357 202 coord 10 10 30 30; -#X msg 311 254 show; -#X obj 106 266 route coord xy1 xy2 show; -#X obj 207 73 seg \$0-p2; -#X obj 65 73 seg \$0-p1; -#X obj 109 174 seg \$0-l1; -#X obj 557 27 make_obj_name \$1; -#X obj 558 51 make_obj_name \$1; -#X obj 558 74 make_obj_name \$1; -#X obj 270 73 route update; -#X obj 119 96 route update; -#X obj 7 173 route update; -#X connect 0 0 37 0; -#X connect 0 0 38 0; -#X connect 0 0 39 0; -#X connect 1 0 37 0; -#X connect 1 0 39 0; -#X connect 2 0 53 0; -#X connect 3 0 52 0; -#X connect 4 0 19 0; -#X connect 4 1 19 1; -#X connect 5 0 18 0; -#X connect 5 1 18 1; -#X connect 6 0 0 0; -#X connect 7 0 51 0; -#X connect 11 0 35 0; -#X connect 12 0 36 0; -#X connect 13 0 34 0; -#X connect 14 0 35 0; -#X connect 14 0 36 0; -#X connect 15 0 36 0; -#X connect 16 0 34 0; -#X connect 17 0 34 0; -#X connect 17 0 35 0; -#X connect 18 0 8 0; -#X connect 18 0 54 0; -#X connect 18 0 32 0; -#X connect 19 0 8 0; -#X connect 19 0 54 0; -#X connect 19 0 32 0; -#X connect 20 0 52 0; -#X connect 21 0 53 0; -#X connect 22 0 54 0; -#X connect 23 0 1 0; -#X connect 23 0 6 0; -#X connect 23 0 49 0; -#X connect 24 0 26 0; -#X connect 25 0 45 0; -#X connect 26 0 27 0; -#X connect 26 0 27 1; -#X connect 28 0 30 1; -#X connect 28 0 46 1; -#X connect 28 1 46 2; -#X connect 28 2 30 2; -#X connect 28 2 46 3; -#X connect 28 3 46 4; -#X connect 29 0 30 0; -#X connect 29 0 46 0; -#X connect 30 0 31 0; -#X connect 31 0 26 1; -#X connect 32 0 33 0; -#X connect 33 0 28 0; -#X connect 43 0 51 0; -#X connect 44 0 24 0; -#X connect 45 0 44 0; -#X connect 46 0 47 0; -#X connect 47 0 48 0; -#X connect 48 0 25 0; -#X connect 49 0 51 0; -#X connect 50 0 36 0; -#X connect 50 0 35 0; -#X connect 50 0 34 0; -#X connect 50 0 23 0; -#X connect 51 0 12 0; -#X connect 51 0 11 0; -#X connect 51 0 13 0; -#X connect 51 1 14 0; -#X connect 51 1 15 0; -#X connect 51 2 16 0; -#X connect 51 2 17 0; -#X connect 51 3 50 0; -#X connect 51 4 34 0; -#X connect 51 4 35 0; -#X connect 51 4 36 0; -#X connect 52 0 3 0; -#X connect 52 0 4 0; -#X connect 52 0 20 0; -#X connect 52 0 58 0; -#X connect 53 0 2 0; -#X connect 53 0 5 0; -#X connect 53 0 21 0; -#X connect 53 0 59 0; -#X connect 54 0 8 0; -#X connect 54 0 22 0; -#X connect 54 0 43 0; -#X connect 54 0 60 0; -#X connect 55 0 53 0; -#X connect 56 0 52 0; -#X connect 57 0 54 0; -#X connect 58 0 52 0; -#X connect 59 0 53 0; -#X connect 60 0 54 0; diff --git a/extensions/xgui/objects/i-seg_mp.pd b/extensions/xgui/objects/i-seg_mp.pd deleted file mode 100644 index 3ab21bbe30504fabb3351e9c1de2523ffdadab67..0000000000000000000000000000000000000000 --- a/extensions/xgui/objects/i-seg_mp.pd +++ /dev/null @@ -1,140 +0,0 @@ -#N canvas 89 288 774 438 10; -#X msg 340 168 raise; -#X obj 272 76 move; -#X obj 190 75 coord2xy; -#X obj 68 75 coord2xy; -#X obj 593 114 inlet; -#X obj 124 161 outlet; -#X msg 416 56 coord 10 10 30 30; -#X msg 416 31 coord 10 10 10 10; -#X msg 416 81 coord 30 30 30 30; -#X text 26 20 i-seg; -#X text 417 408 dh20020107; -#X msg 495 202 coord \$1 \$2 \$3 \$4; -#X msg 495 177 coord \$1 \$2 \$1 \$2; -#X msg 495 228 coord \$3 \$4 \$3 \$4; -#X msg 646 184 xy1 \$1 \$2; -#X msg 647 213 xy2 \$1 \$2; -#X msg 736 208 xy1 \$1 \$2; -#X msg 736 185 xy2 \$1 \$2; -#X obj 68 102 xy2xy1; -#X obj 186 103 xy2xy2; -#X obj 193 20 light_over; -#X obj 125 103 r \$0-l1; -#X obj 184 332 xy2xy1; -#X obj 232 336 xy2xy2; -#X obj 83 253 lia_2d 50 5 0 0 0 0 0 0 0 0 50; -#X msg 315 223 width 30; -#X msg 387 222 width 15; -#X obj 195 301 ma_2d 100 0 0; -#X obj 275 277 + 50; -#X obj 422 186 delay 0; -#X obj 436 157 bang; -#X obj 417 259 t b b b; -#X obj 406 355 xy2xy1; -#X obj 454 359 xy2xy2; -#X msg 499 295 1; -#X msg 486 142 show; -#X obj 457 312 \$3; -#X obj 415 310 \$2; -#X obj 647 245 alias \$0-p1; -#X obj 644 276 alias \$0-l1; -#X obj 641 311 alias \$0-p2; -#X obj 340 52 alias \$0-p1; -#X obj 340 102 alias \$0-p2; -#X obj 340 77 alias \$0-l1; -#X obj 593 142 route coord xy1 xy2 show; -#X obj 270 22 make_obj_name \$1; -#X obj 68 50 seg \$0-p1; -#X obj 124 135 seg \$0-l1 \$1; -#X obj 69 23 make_obj_name \$1; -#X obj 225 127 make_obj_name \$1; -#X obj 201 50 seg \$0-p2; -#X connect 0 0 41 0; -#X connect 0 0 42 0; -#X connect 1 0 50 0; -#X connect 2 0 19 0; -#X connect 2 0 24 2; -#X connect 2 1 19 1; -#X connect 2 1 24 4; -#X connect 3 0 18 0; -#X connect 3 1 18 1; -#X connect 4 0 44 0; -#X connect 6 0 43 0; -#X connect 7 0 41 0; -#X connect 8 0 42 0; -#X connect 11 0 39 0; -#X connect 12 0 38 0; -#X connect 13 0 40 0; -#X connect 14 0 38 0; -#X connect 15 0 38 0; -#X connect 16 0 40 0; -#X connect 17 0 39 0; -#X connect 17 0 40 0; -#X connect 18 0 5 0; -#X connect 18 0 47 0; -#X connect 19 0 5 0; -#X connect 19 0 47 0; -#X connect 20 0 50 0; -#X connect 21 0 47 0; -#X connect 22 0 46 0; -#X connect 22 0 47 0; -#X connect 23 0 46 0; -#X connect 24 2 27 1; -#X connect 24 3 28 0; -#X connect 25 0 41 0; -#X connect 25 0 42 0; -#X connect 26 0 43 0; -#X connect 27 0 22 0; -#X connect 27 0 23 0; -#X connect 27 0 24 6; -#X connect 27 1 24 7; -#X connect 27 2 22 1; -#X connect 27 2 23 1; -#X connect 27 2 24 8; -#X connect 27 3 24 9; -#X connect 28 0 27 2; -#X connect 29 0 0 0; -#X connect 29 0 7 0; -#X connect 29 0 6 0; -#X connect 29 0 8 0; -#X connect 29 0 25 0; -#X connect 29 0 26 0; -#X connect 29 0 31 0; -#X connect 30 0 29 0; -#X connect 31 0 37 0; -#X connect 31 1 36 0; -#X connect 31 2 34 0; -#X connect 32 0 46 0; -#X connect 32 0 47 0; -#X connect 32 0 50 0; -#X connect 33 0 46 0; -#X connect 33 0 47 0; -#X connect 33 0 50 0; -#X connect 34 0 24 9; -#X connect 34 0 24 7; -#X connect 35 0 30 0; -#X connect 35 0 38 0; -#X connect 35 0 39 0; -#X connect 35 0 40 0; -#X connect 36 0 24 8; -#X connect 36 0 32 1; -#X connect 36 0 33 1; -#X connect 37 0 32 0; -#X connect 37 0 33 0; -#X connect 44 0 12 0; -#X connect 44 0 11 0; -#X connect 44 0 13 0; -#X connect 44 1 14 0; -#X connect 44 1 15 0; -#X connect 44 2 16 0; -#X connect 44 2 17 0; -#X connect 44 3 35 0; -#X connect 45 0 50 0; -#X connect 46 0 3 0; -#X connect 47 0 5 0; -#X connect 48 0 46 0; -#X connect 49 0 47 0; -#X connect 50 0 1 0; -#X connect 50 0 2 0; -#X connect 50 0 20 0; diff --git a/extensions/xgui/objects/my_slider1.pd b/extensions/xgui/objects/my_slider1.pd deleted file mode 100644 index a40a7fcae1570d6f441b1045a0e6f10e1e6998f9..0000000000000000000000000000000000000000 --- a/extensions/xgui/objects/my_slider1.pd +++ /dev/null @@ -1,112 +0,0 @@ -#N canvas 254 54 549 522 10; -#X text 95 7 my_slider1; -#X obj 14 8 inlet; -#X obj 276 461 outlet; -#X obj 303 144 xy2coord; -#X obj 150 153 + 200; -#X obj 430 275 move_y; -#X obj 414 425 xy2coord; -#X obj 430 230 light_over; -#X obj 260 282 coord2xy; -#X text 445 493 dh20020109; -#X obj 277 411 * -1; -#X obj 277 388 -; -#X obj 277 434 +; -#X text 47 86 x pos; -#X text 127 101 y pos; -#X text 210 125 y size; -#X obj 303 190 click2bxy; -#X msg 462 208 Blue; -#N canvas 489 354 249 191 check_min_max 0; -#X obj 51 110 max; -#X obj 51 86 min; -#X obj 51 34 inlet; -#X obj 51 134 outlet; -#X obj 75 57 r \$0-y_max; -#X obj 82 80 r \$0-y_min; -#X connect 0 0 3 0; -#X connect 1 0 0 0; -#X connect 2 0 1 0; -#X connect 4 0 1 1; -#X connect 5 0 0 1; -#X restore 277 342 pd check_min_max; -#X obj 100 126 s \$0-y_min; -#X obj 150 177 s \$0-y_max; -#X obj 316 93 r \$0-y_min; -#X obj 15 101 s \$0-x_pos; -#X obj 293 365 r \$0-y_max; -#X obj 456 385 r \$0-y_max; -#X obj 293 45 r \$0-x_pos; -#X obj 413 335 r \$0-x_pos; -#X obj 14 55 t b b b b b; -#X obj 64 269 alias \$0-sld; -#X obj 84 222 alias \$0-cadre; -#X obj 414 449 alias \$0-sld; -#X obj 430 252 alias \$0-sld; -#X obj 14 31 route show float hide; -#X msg 165 52 hide; -#X obj 260 259 seg \$1 \$0-sld; -#X msg 85 199 show \, width 1 \, color white; -#X obj 303 167 rect \$1 \$0-cadre 10 10 20 20; -#X obj 325 71 + 15; -#X obj 426 363 + 15; -#X msg 63 244 show \, color Blue \, width 3; -#X obj 14 78 \$3; -#X obj 100 102 \$4; -#X obj 180 127 \$5; -#X obj 344 115 + \$5; -#X obj 22 177 -; -#X obj 22 200 * -1; -#X obj 35 154 r \$0-y_max; -#X connect 1 0 32 0; -#X connect 3 0 36 0; -#X connect 4 0 20 0; -#X connect 5 0 31 0; -#X connect 6 0 30 0; -#X connect 7 0 31 0; -#X connect 8 1 18 0; -#X connect 10 0 12 0; -#X connect 11 0 10 0; -#X connect 12 0 2 0; -#X connect 16 2 18 0; -#X connect 17 0 7 1; -#X connect 18 0 11 0; -#X connect 18 0 6 1; -#X connect 18 0 6 3; -#X connect 21 0 3 1; -#X connect 21 0 43 0; -#X connect 23 0 11 1; -#X connect 24 0 6 3; -#X connect 24 0 6 1; -#X connect 25 0 3 0; -#X connect 25 0 37 0; -#X connect 26 0 6 0; -#X connect 26 0 38 0; -#X connect 27 0 40 0; -#X connect 27 1 41 0; -#X connect 27 2 42 0; -#X connect 27 3 39 0; -#X connect 27 3 17 0; -#X connect 27 4 35 0; -#X connect 31 0 7 0; -#X connect 31 0 5 0; -#X connect 32 0 27 0; -#X connect 32 1 44 0; -#X connect 32 2 33 0; -#X connect 33 0 34 0; -#X connect 33 0 36 0; -#X connect 34 0 8 0; -#X connect 35 0 29 0; -#X connect 36 0 16 0; -#X connect 36 0 5 0; -#X connect 37 0 3 2; -#X connect 38 0 6 2; -#X connect 39 0 28 0; -#X connect 40 0 22 0; -#X connect 41 0 4 0; -#X connect 41 0 19 0; -#X connect 42 0 4 1; -#X connect 43 0 3 3; -#X connect 44 0 45 0; -#X connect 45 0 18 0; -#X connect 46 0 44 1; diff --git a/extensions/xgui/objects/my_slider2.pd b/extensions/xgui/objects/my_slider2.pd deleted file mode 100644 index 36d906d8df8833e382d97d5ed72e09bff75f87ff..0000000000000000000000000000000000000000 --- a/extensions/xgui/objects/my_slider2.pd +++ /dev/null @@ -1,112 +0,0 @@ -#N canvas 53 59 648 533 10; -#X text 95 7 my_slider1; -#X obj 14 8 inlet; -#X obj 147 446 outlet; -#X obj 431 153 xy2coord; -#X obj 350 448 xy2coord; -#X obj 322 156 coord2xy; -#X text 503 470 dh20020109; -#X text 47 86 x pos; -#X text 59 126 y pos; -#X obj 431 199 click2bxy; -#X obj 25 167 s \$0-y_min; -#X obj 69 247 s \$0-y_max; -#X obj 445 102 r \$0-y_min; -#X obj 15 101 s \$0-x_pos; -#X obj 392 408 r \$0-y_max; -#X obj 431 52 r \$0-x_pos; -#X obj 347 362 r \$0-x_pos; -#X obj 14 55 t b b b b b; -#X obj 14 31 route show float hide; -#X msg 94 54 hide; -#X obj 459 80 + 15; -#X obj 362 386 + 15; -#X obj 14 78 \$3; -#X obj 32 127 \$4; -#X obj 474 127 + \$5; -#X obj 110 221 \$6; -#X text 137 222 value size; -#X obj 62 282 pack f f f; -#X obj 59 192 + \$5; -#X text 96 191 real size; -#X msg 147 356 \$1 \, bang; -#X obj 141 323 t b f; -#X obj 360 279 t b f; -#X obj 148 380 number \$0-value; -#X obj 429 317 number \$0-value; -#X msg 44 336 bound 0 \$1; -#X text 513 480 dh20020523; -#X obj 140 114 alias \$1-c; -#X obj 137 160 alias \$1-sld; -#X obj 350 472 alias \$1-sld; -#X obj 323 107 make_obj_name \$2; -#X obj 500 175 make_obj_name \$2; -#X obj 431 176 rect \$1-c; -#X obj 323 132 seg \$1-sld; -#X obj 429 339 pack f 1000; -#X obj 429 361 line; -#X msg 141 91 show \, width 1 \, color black; -#X msg 137 136 show \, color Blue \, width 5; -#X msg 408 275 0 \, subspace 0 \$3 \$2 \$1 \, bang; -#X obj 147 402 pack f 1000; -#X obj 147 424 line; -#X obj 279 180 route update; -#X connect 1 0 18 0; -#X connect 3 0 42 0; -#X connect 4 0 39 0; -#X connect 5 1 32 0; -#X connect 9 0 34 0; -#X connect 9 2 32 0; -#X connect 12 0 3 1; -#X connect 12 0 24 0; -#X connect 14 0 4 3; -#X connect 14 0 4 1; -#X connect 15 0 3 0; -#X connect 15 0 20 0; -#X connect 16 0 4 0; -#X connect 16 0 21 0; -#X connect 17 0 22 0; -#X connect 17 1 23 0; -#X connect 17 3 47 0; -#X connect 17 3 25 0; -#X connect 17 4 46 0; -#X connect 18 0 17 0; -#X connect 18 1 31 0; -#X connect 18 2 19 0; -#X connect 19 0 37 0; -#X connect 19 0 38 0; -#X connect 20 0 3 2; -#X connect 21 0 4 2; -#X connect 22 0 13 0; -#X connect 23 0 10 0; -#X connect 23 0 28 0; -#X connect 23 0 27 0; -#X connect 24 0 3 3; -#X connect 25 0 27 2; -#X connect 25 0 35 0; -#X connect 27 0 48 0; -#X connect 28 0 11 0; -#X connect 28 0 27 1; -#X connect 30 0 33 0; -#X connect 31 0 34 0; -#X connect 31 1 30 0; -#X connect 32 0 33 0; -#X connect 32 0 34 0; -#X connect 32 1 34 0; -#X connect 33 0 49 0; -#X connect 34 0 44 0; -#X connect 35 0 33 0; -#X connect 40 0 43 0; -#X connect 41 0 42 0; -#X connect 42 0 9 0; -#X connect 43 0 5 0; -#X connect 43 0 51 0; -#X connect 44 0 45 0; -#X connect 45 0 4 1; -#X connect 45 0 4 3; -#X connect 46 0 37 0; -#X connect 47 0 38 0; -#X connect 48 0 34 0; -#X connect 49 0 50 0; -#X connect 50 0 2 0; -#X connect 51 0 5 0; diff --git a/extensions/xgui/objects/my_slider3.pd b/extensions/xgui/objects/my_slider3.pd deleted file mode 100644 index 66463cd7050765b4403b7dcb89d9d19a69eb042b..0000000000000000000000000000000000000000 --- a/extensions/xgui/objects/my_slider3.pd +++ /dev/null @@ -1,160 +0,0 @@ -#N canvas 115 125 610 479 10; -#X obj 14 8 inlet; -#X obj 245 414 outlet; -#X obj 303 144 xy2coord; -#X obj 135 154 + 200; -#X obj 279 214 move_y; -#X obj 160 336 xy2coord; -#X obj 347 243 light_over; -#X msg 59 393 color Blue; -#X obj 279 267 coord2xy; -#X obj 279 244 seg \$0-sld; -#X obj 67 332 s \$0-cadre; -#X obj 83 423 s \$0-sld; -#X obj 245 368 * -1; -#X obj 245 345 -; -#X obj 245 391 +; -#X obj 14 78 \$1; -#X obj 85 103 \$2; -#X obj 160 133 \$3; -#X text 47 86 x pos; -#X text 112 102 y pos; -#X text 185 134 y size; -#X msg 75 248 add; -#X obj 303 190 click2bxy; -#X obj 22 177 -; -#X obj 22 200 * -1; -#X msg 373 220 Blue; -#N canvas 489 354 249 191 check_min_max 0; -#X obj 51 110 max; -#X obj 51 86 min; -#X obj 51 34 inlet; -#X obj 51 134 outlet; -#X obj 75 57 r \$0-y_max; -#X obj 82 80 r \$0-y_min; -#X connect 0 0 3 0; -#X connect 1 0 0 0; -#X connect 2 0 1 0; -#X connect 4 0 1 1; -#X connect 5 0 0 1; -#X restore 245 299 pd check_min_max; -#X obj 85 127 s \$0-y_min; -#X obj 135 178 s \$0-y_max; -#X obj 317 100 r \$0-y_min; -#X obj 346 122 r \$0-y_max; -#X obj 15 101 s \$0-x_pos; -#X obj 35 154 r \$0-y_max; -#X obj 258 321 r \$0-y_max; -#X obj 192 248 r \$0-y_max; -#X obj 303 77 r \$0-x_pos; -#X obj 159 225 r \$0-x_pos; -#X obj 14 55 t b b b b b; -#X obj 351 266 r \$0-sld; -#X obj 368 144 r \$0-cadre; -#X obj 303 167 seg cadre; -#X msg 59 370 width 20; -#X msg 452 29 bang; -#X obj 456 91 t b b; -#X obj 456 139 s bangl; -#X obj 481 117 s bangm; -#X msg 486 29 stop; -#X obj 393 368 ma 100; -#X obj 456 65 metro 50; -#X text 95 7 my_slider3 mass; -#X obj 160 361 coord2xy; -#X obj 154 420 xy2coord; -#X msg 59 299 width 22; -#N canvas 489 354 249 191 check_min_max 0; -#X obj 51 110 max; -#X obj 51 86 min; -#X obj 51 34 inlet; -#X obj 51 134 outlet; -#X obj 75 57 r \$0-y_max; -#X obj 82 80 r \$0-y_min; -#X connect 0 0 3 0; -#X connect 1 0 0 0; -#X connect 2 0 1 0; -#X connect 4 0 1 1; -#X connect 5 0 0 1; -#X restore 354 296 pd check_min_max; -#X obj 520 30 loadbang; -#X text 364 420 dh20020210; -#X obj 319 397 lia 50 20 0 0 0 0 0; -#X msg 419 172 caps butt; -#X obj 14 31 route add float del; -#X msg 100 54 del; -#X connect 0 0 58 0; -#X connect 2 0 40 0; -#X connect 3 0 28 0; -#X connect 4 0 9 0; -#X connect 5 0 50 0; -#X connect 6 0 9 0; -#X connect 7 0 11 0; -#X connect 8 1 53 0; -#X connect 9 0 4 0; -#X connect 9 0 6 0; -#X connect 9 0 8 0; -#X connect 12 0 14 0; -#X connect 13 0 12 0; -#X connect 14 0 1 0; -#X connect 15 0 31 0; -#X connect 16 0 3 0; -#X connect 16 0 27 0; -#X connect 17 0 3 1; -#X connect 21 0 10 0; -#X connect 21 0 11 0; -#X connect 22 2 26 0; -#X connect 23 0 24 0; -#X connect 24 0 26 0; -#X connect 25 0 6 1; -#X connect 26 0 5 1; -#X connect 26 0 5 3; -#X connect 29 0 2 1; -#X connect 30 0 2 3; -#X connect 32 0 23 1; -#X connect 33 0 13 1; -#X connect 34 0 5 3; -#X connect 34 0 5 1; -#X connect 35 0 2 0; -#X connect 35 0 2 2; -#X connect 36 0 5 0; -#X connect 36 0 5 2; -#X connect 37 0 15 0; -#X connect 37 1 16 0; -#X connect 37 2 17 0; -#X connect 37 3 52 0; -#X connect 37 3 41 0; -#X connect 37 3 7 0; -#X connect 37 3 25 0; -#X connect 37 4 21 0; -#X connect 38 0 9 0; -#X connect 39 0 40 0; -#X connect 40 0 22 0; -#X connect 40 0 4 0; -#X connect 41 0 11 0; -#X connect 42 0 48 0; -#X connect 43 0 44 0; -#X connect 43 1 45 0; -#X connect 46 0 48 0; -#X connect 47 0 51 1; -#X connect 47 0 13 0; -#X connect 47 0 56 4; -#X connect 47 1 56 5; -#X connect 48 0 43 0; -#X connect 50 0 51 0; -#X connect 50 1 56 2; -#X connect 50 2 51 2; -#X connect 50 3 51 3; -#X connect 51 0 9 0; -#X connect 52 0 10 0; -#X connect 53 0 56 2; -#X connect 53 0 51 1; -#X connect 53 0 51 3; -#X connect 54 0 48 0; -#X connect 56 1 47 1; -#X connect 57 0 40 0; -#X connect 58 0 37 0; -#X connect 58 1 23 0; -#X connect 58 2 59 0; -#X connect 59 0 10 0; -#X connect 59 0 11 0; diff --git a/extensions/xgui/objects/pad.pd b/extensions/xgui/objects/pad.pd deleted file mode 100644 index 655b6f7d5428b2f952a8778787373a4ddf613727..0000000000000000000000000000000000000000 --- a/extensions/xgui/objects/pad.pd +++ /dev/null @@ -1,85 +0,0 @@ -#N canvas 349 58 590 576 10; -#X text 95 15 my_slider1; -#X obj 21 16 inlet; -#X obj 21 40 route show float hide; -#X obj 200 185 pack f f f f; -#X msg 102 123 hide; -#X obj 293 194 pack f f; -#X obj 21 64 t b b b b b; -#X msg 21 108 raise; -#X obj 210 478 outlet; -#X obj 336 170 moy; -#X obj 293 170 moy; -#X obj 193 331 symbol \$3; -#X msg 193 355 text \$1; -#X text 442 445 dh20020428; -#X obj 210 113 \$3; -#X obj 235 113 \$4; -#X msg 200 270 show \, coord \$1 \$2 \$3 \$4 \, width 1 \, color white -; -#X msg 22 295 coord \$1 \$2 \$1 \$2; -#X msg 293 218 show \, coord \$1 \$2 \$1 \$2 \, color blue \, width -5; -#X msg 100 323 move \$1 \$2; -#X obj 50 381 route coord; -#X obj 21 132 t a a; -#X obj 264 113 \$5; -#X obj 293 113 \$6; -#X msg 30 414 xy \$1 \$2; -#X msg 27 474 coord \$1 \$2 \$1 \$2; -#X obj 35 446 subspace \$3 \$4 \$5 \$6 0 \$8 \$7 0; -#X text 452 455 dh20020523; -#X obj 200 294 alias \$1-bord; -#X obj 193 379 alias \$1-value; -#X obj 66 231 rect \$1-bord; -#X obj 28 205 seg \$1-pos; -#X obj 293 242 alias \$1-pos; -#X obj 62 353 alias \$1-pos; -#X obj 49 182 make_obj_name \$2; -#X obj 98 209 make_obj_name \$2; -#X obj 52 263 route click drag; -#X connect 1 0 2 0; -#X connect 2 0 6 0; -#X connect 2 2 4 0; -#X connect 3 0 16 0; -#X connect 4 0 30 0; -#X connect 4 0 31 0; -#X connect 5 0 18 0; -#X connect 6 0 7 0; -#X connect 6 0 11 0; -#X connect 6 1 14 0; -#X connect 6 2 15 0; -#X connect 6 3 22 0; -#X connect 6 4 23 0; -#X connect 7 0 21 0; -#X connect 9 0 5 1; -#X connect 10 0 5 0; -#X connect 11 0 12 0; -#X connect 12 0 29 0; -#X connect 14 0 3 0; -#X connect 14 0 10 0; -#X connect 15 0 3 1; -#X connect 15 0 9 0; -#X connect 16 0 28 0; -#X connect 17 0 20 0; -#X connect 18 0 32 0; -#X connect 19 0 33 0; -#X connect 20 0 24 0; -#X connect 21 0 31 0; -#X connect 21 1 30 0; -#X connect 22 0 10 1; -#X connect 22 0 3 2; -#X connect 23 0 9 1; -#X connect 23 0 3 3; -#X connect 24 0 26 0; -#X connect 25 0 33 0; -#X connect 26 0 25 0; -#X connect 26 1 8 0; -#X connect 30 0 36 0; -#X connect 31 0 36 0; -#X connect 33 0 20 0; -#X connect 34 0 31 0; -#X connect 35 0 30 0; -#X connect 36 0 17 0; -#X connect 36 0 24 0; -#X connect 36 1 19 0; diff --git a/extensions/xgui/objects/potar.pd b/extensions/xgui/objects/potar.pd deleted file mode 100644 index dfc3ea11cfa20cb476c0fa98994c04c118b089bc..0000000000000000000000000000000000000000 --- a/extensions/xgui/objects/potar.pd +++ /dev/null @@ -1,103 +0,0 @@ -#N canvas 127 104 714 625 10; -#X text 95 15 my_slider1; -#X obj 21 16 inlet; -#X obj 21 40 route show float hide; -#X obj 288 132 \$3; -#X obj 322 132 \$4; -#X obj 249 185 pack f f f f; -#X msg 87 181 hide; -#X obj 359 132 pack f f; -#X obj 359 84 \$3; -#X obj 390 84 \$4; -#X obj 21 64 t b b b b b; -#X msg 36 515 text \$1; -#X msg 21 403 sub \$2 \, bang; -#X msg 159 505 angle \$1; -#X msg 21 108 raise; -#X msg 249 270 show \, coord \$1 \$2 \$3 \$4 \, width 1 \, style chord -\, angle 359 \, color white; -#X obj 21 132 t a a a a; -#X msg 249 209 show \, coord \$1 \$2 \$3 \$4 \, width 1 \, style arc -\, angle 359 \, border black; -#X obj 22 573 outlet; -#X obj 60 431 t b f; -#X text 595 572 dh20020427; -#X obj 36 494 int; -#X obj 288 156 + 28; -#X obj 359 108 + 14; -#X obj 390 108 + 14; -#X obj 322 156 + 28; -#X msg 359 156 show \, pos \$1 \$2 \, color blue \, anchor center \, -text 0; -#X obj 249 246 alias \$1-dessus; -#X obj 249 307 alias \$1-bord; -#X obj 249 368 alias \$1-fond; -#X obj 37 283 text \$1-value; -#X obj 21 254 arc \$1-dessus; -#X obj 51 316 arc \$1-fond; -#X obj 76 343 arc \$1-bord; -#X obj 159 530 alias \$1-fond; -#X obj 34 539 alias \$1-value; -#X obj 22 472 bounded \$1-value 0 0 127 0 -359; -#X obj 359 180 alias \$1-value; -#X obj 98 226 make_obj_name \$2; -#X obj 107 251 make_obj_name \$2; -#X obj 119 293 make_obj_name \$2; -#X obj 125 320 make_obj_name \$2; -#X msg 249 331 show \, coord \$1 \$2 \$3 \$4 \, width 0 \, start -90 -\, color grey \, border grey \, angle 0 \, start -90; -#X obj 21 379 route drag; -#X connect 1 0 2 0; -#X connect 2 0 10 0; -#X connect 2 1 19 0; -#X connect 2 2 6 0; -#X connect 3 0 22 0; -#X connect 3 0 5 0; -#X connect 4 0 5 1; -#X connect 4 0 25 0; -#X connect 5 0 15 0; -#X connect 5 0 42 0; -#X connect 5 0 17 0; -#X connect 6 0 30 0; -#X connect 6 0 31 0; -#X connect 6 0 32 0; -#X connect 6 0 33 0; -#X connect 7 0 26 0; -#X connect 8 0 23 0; -#X connect 9 0 24 0; -#X connect 10 0 14 0; -#X connect 10 1 8 0; -#X connect 10 2 9 0; -#X connect 10 3 3 0; -#X connect 10 4 4 0; -#X connect 11 0 35 0; -#X connect 12 0 36 0; -#X connect 13 0 34 0; -#X connect 14 0 16 0; -#X connect 15 0 28 0; -#X connect 16 0 31 0; -#X connect 16 1 30 0; -#X connect 16 2 32 0; -#X connect 16 3 33 0; -#X connect 17 0 27 0; -#X connect 19 0 36 0; -#X connect 19 1 36 0; -#X connect 21 0 11 0; -#X connect 22 0 5 2; -#X connect 23 0 7 0; -#X connect 24 0 7 1; -#X connect 25 0 5 3; -#X connect 26 0 37 0; -#X connect 30 0 43 0; -#X connect 31 0 43 0; -#X connect 32 0 43 0; -#X connect 33 0 43 0; -#X connect 36 0 18 0; -#X connect 36 0 21 0; -#X connect 36 1 13 0; -#X connect 38 0 31 0; -#X connect 39 0 30 0; -#X connect 40 0 32 0; -#X connect 41 0 33 0; -#X connect 42 0 29 0; -#X connect 43 0 12 0; diff --git a/extensions/xgui/objects/preset.pd b/extensions/xgui/objects/preset.pd deleted file mode 100644 index a86ba0a292b784c1da62699bf54a7221178c02c6..0000000000000000000000000000000000000000 --- a/extensions/xgui/objects/preset.pd +++ /dev/null @@ -1,112 +0,0 @@ -#N canvas 245 101 589 563 10; -#X obj 21 16 inlet; -#X obj 21 40 route show float hide; -#X obj 200 185 pack f f f f; -#X msg 87 181 hide; -#X obj 295 193 pack f f; -#X obj 46 65 t b b b b b; -#X msg 295 217 show \, pos \$1 \$2 \, color blue \, anchor center; -#X obj 32 522 outlet; -#X msg 62 465 color grey; -#X msg 61 439 color white; -#X obj 60 414 delay 100; -#X obj 336 164 moy; -#X obj 293 170 moy; -#X obj 194 138 \$4; -#X obj 219 138 \$5; -#X text 391 484 dh20020428; -#X msg 200 270 show \, coord \$1 \$2 \$3 \$4 \, width 1 \, color white -; -#X obj 243 93 \$4; -#X obj 277 93 \$5; -#X obj 243 116 + \$6; -#X obj 274 117 + \$7; -#X obj 21 132 t b b; -#X msg 49 161 raise; -#X msg 25 188 raise; -#X obj 323 307 symbol \$3; -#X msg 323 332 text \$1; -#X text 95 15 button canvas name text posX posY dX dY; -#X obj 76 343 rect \$1-c; -#X obj 56 256 make_obj_name \$2; -#X obj 88 320 make_obj_name \$2; -#X obj 37 283 text \$1-t; -#X obj 200 307 alias \$1-c; -#X obj 323 357 alias \$1-t; -#X obj 295 241 alias \$1-t; -#X obj 63 490 alias \$1-c; -#X obj 52 377 route click c-click; -#X obj 238 533 send to_node; -#X text 401 494 dh20020723; -#X msg 140 441 color white; -#X obj 139 416 delay 100; -#X obj 142 492 alias \$1-c; -#X msg 141 467 color red; -#X msg 252 508 do */ load_coord \$1; -#X obj 252 465 bang; -#X obj 238 387 symbol \$3; -#X obj 252 486 symbol \$3; -#X obj 302 387 symbol \$2; -#X obj 238 363 t b b; -#X obj 238 410 pack s s; -#X msg 238 432 do */ save_coord \$2 \$1; -#X obj 472 422 print; -#X connect 0 0 1 0; -#X connect 1 0 5 0; -#X connect 1 2 3 0; -#X connect 2 0 16 0; -#X connect 3 0 27 0; -#X connect 3 0 30 0; -#X connect 4 0 6 0; -#X connect 5 0 21 0; -#X connect 5 0 24 0; -#X connect 5 1 13 0; -#X connect 5 2 14 0; -#X connect 5 3 17 0; -#X connect 5 4 18 0; -#X connect 6 0 33 0; -#X connect 8 0 34 0; -#X connect 9 0 34 0; -#X connect 10 0 9 0; -#X connect 11 0 4 1; -#X connect 12 0 4 0; -#X connect 13 0 2 0; -#X connect 13 0 12 0; -#X connect 14 0 2 1; -#X connect 14 0 11 0; -#X connect 16 0 31 0; -#X connect 17 0 19 0; -#X connect 18 0 20 0; -#X connect 19 0 2 2; -#X connect 19 0 12 1; -#X connect 20 0 2 3; -#X connect 20 0 11 1; -#X connect 21 0 23 0; -#X connect 21 1 22 0; -#X connect 22 0 27 0; -#X connect 23 0 30 0; -#X connect 24 0 25 0; -#X connect 25 0 32 0; -#X connect 27 0 35 0; -#X connect 28 0 30 0; -#X connect 29 0 27 0; -#X connect 30 0 35 0; -#X connect 35 0 10 0; -#X connect 35 0 8 0; -#X connect 35 0 7 0; -#X connect 35 0 43 0; -#X connect 35 1 41 0; -#X connect 35 1 39 0; -#X connect 35 1 47 0; -#X connect 38 0 40 0; -#X connect 39 0 38 0; -#X connect 41 0 40 0; -#X connect 42 0 36 0; -#X connect 43 0 45 0; -#X connect 44 0 48 0; -#X connect 45 0 42 0; -#X connect 46 0 48 1; -#X connect 47 0 44 0; -#X connect 47 1 46 0; -#X connect 48 0 49 0; -#X connect 49 0 36 0; diff --git a/extensions/xgui/objects/slider2.pd b/extensions/xgui/objects/slider2.pd deleted file mode 100644 index cbbeaddffdffd257723d9ba4c4413b47a679ada6..0000000000000000000000000000000000000000 --- a/extensions/xgui/objects/slider2.pd +++ /dev/null @@ -1,141 +0,0 @@ -#N canvas 248 68 637 564 10; -#X text 95 7 my_slider1; -#X obj 14 8 inlet; -#X obj 146 409 outlet; -#X obj 431 153 xy2coord; -#X obj 521 145 move_y; -#X obj 350 448 xy2coord; -#X obj 521 100 light_over; -#X obj 359 213 coord2xy; -#X text 503 470 dh20020109; -#X text 47 86 x pos; -#X text 59 126 y pos; -#X obj 431 199 click2bxy; -#X msg 553 78 Blue; -#X obj 25 167 s \$0-y_min; -#X obj 69 247 s \$0-y_max; -#X obj 445 102 r \$0-y_min; -#X obj 15 101 s \$0-x_pos; -#X obj 392 408 r \$0-y_max; -#X obj 431 52 r \$0-x_pos; -#X obj 349 358 r \$0-x_pos; -#X obj 14 55 t b b b b b; -#X obj 14 31 route show float hide; -#X msg 94 54 hide; -#X msg 141 91 show \, width 1 \, color white; -#X obj 459 80 + 15; -#X obj 362 386 + 15; -#X msg 137 136 show \, color Blue \, width 3; -#X obj 14 78 \$3; -#X obj 32 127 \$4; -#X obj 474 127 + \$5; -#X obj 110 221 \$6; -#X text 137 222 value size; -#X obj 62 282 pack f f f; -#X obj 59 192 + \$5; -#X text 96 191 real size; -#X obj 553 57 loadbang; -#X msg 147 356 \$1 \, bang; -#X obj 141 323 t b f; -#X obj 360 279 t b f; -#X floatatom 200 411 5 0 0; -#X obj 148 380 number \$0-value; -#X obj 385 327 number \$0-value; -#X msg 408 275 0 \, subspace 0 \$3 \$2 \$1; -#X msg 44 336 bound 0 \$1; -#X obj 359 167 move_y; -#X text 513 480 dh20020523; -#X obj 359 144 alias \$1-c; -#X obj 521 122 alias \$1-sld; -#X obj 140 114 alias \$1-c; -#X obj 137 160 alias \$1-sld; -#X obj 350 472 alias \$1-sld; -#X obj 431 176 rect \$1-c; -#X obj 340 235 route update; -#X msg 324 166 @ \$1; -#X obj 359 190 seg \$1-sld; -#X obj 324 53 symbol \$1; -#X obj 347 74 symbol \$2; -#X obj 324 145 a2s; -#X obj 326 102 pack s s; -#X obj 324 10 loadbang; -#X obj 324 31 t b b; -#X msg 501 221 @ \$1; -#X obj 501 200 a2s; -#X msg 502 178 list \$2 / \$1; -#X msg 325 123 list \$2 / \$1 sdl; -#X connect 1 0 21 0; -#X connect 3 0 51 0; -#X connect 4 0 47 0; -#X connect 5 0 50 0; -#X connect 6 0 47 0; -#X connect 7 1 38 0; -#X connect 11 0 41 0; -#X connect 11 2 38 0; -#X connect 12 0 6 1; -#X connect 15 0 3 1; -#X connect 15 0 29 0; -#X connect 17 0 5 3; -#X connect 17 0 5 1; -#X connect 18 0 3 0; -#X connect 18 0 24 0; -#X connect 19 0 5 0; -#X connect 19 0 25 0; -#X connect 20 0 27 0; -#X connect 20 1 28 0; -#X connect 20 3 26 0; -#X connect 20 3 30 0; -#X connect 20 4 23 0; -#X connect 21 0 20 0; -#X connect 21 1 37 0; -#X connect 21 2 22 0; -#X connect 22 0 48 0; -#X connect 22 0 49 0; -#X connect 23 0 48 0; -#X connect 24 0 3 2; -#X connect 25 0 5 2; -#X connect 26 0 49 0; -#X connect 27 0 16 0; -#X connect 28 0 13 0; -#X connect 28 0 33 0; -#X connect 28 0 32 0; -#X connect 29 0 3 3; -#X connect 30 0 32 2; -#X connect 30 0 43 0; -#X connect 32 0 42 0; -#X connect 33 0 14 0; -#X connect 33 0 32 1; -#X connect 35 0 12 0; -#X connect 36 0 40 0; -#X connect 37 0 41 0; -#X connect 37 1 36 0; -#X connect 38 0 40 0; -#X connect 38 0 41 0; -#X connect 38 1 41 0; -#X connect 40 0 2 0; -#X connect 40 0 39 0; -#X connect 41 0 5 1; -#X connect 41 0 5 3; -#X connect 42 0 41 0; -#X connect 43 0 40 0; -#X connect 44 0 54 0; -#X connect 46 0 44 0; -#X connect 47 0 6 0; -#X connect 47 0 4 0; -#X connect 51 0 11 0; -#X connect 52 0 7 0; -#X connect 53 0 54 0; -#X connect 54 0 7 0; -#X connect 54 0 52 0; -#X connect 55 0 58 0; -#X connect 56 0 58 1; -#X connect 57 0 53 0; -#X connect 58 0 64 0; -#X connect 58 0 63 0; -#X connect 59 0 60 0; -#X connect 60 0 55 0; -#X connect 60 1 56 0; -#X connect 61 0 51 0; -#X connect 62 0 61 0; -#X connect 63 0 62 0; -#X connect 64 0 57 0; diff --git a/extensions/xgui/objects/slider_prob.pd b/extensions/xgui/objects/slider_prob.pd deleted file mode 100644 index 5e3fa11dde9dac57725bfb5d1fa52f179fd75187..0000000000000000000000000000000000000000 --- a/extensions/xgui/objects/slider_prob.pd +++ /dev/null @@ -1,118 +0,0 @@ -#N canvas 254 54 551 524 10; -#X text 95 7 my_slider1; -#X obj 14 8 inlet; -#X obj 276 461 outlet; -#X obj 303 144 xy2coord; -#X obj 150 153 + 200; -#X obj 389 294 move_y; -#X obj 414 425 xy2coord; -#X obj 430 230 light_over; -#X obj 260 282 coord2xy; -#X text 445 493 dh20020109; -#X obj 277 411 * -1; -#X obj 277 388 -; -#X obj 277 434 +; -#X text 47 86 x pos; -#X text 127 101 y pos; -#X text 210 125 y size; -#X obj 303 190 click2bxy; -#X msg 462 208 Blue; -#N canvas 489 354 249 191 check_min_max 0; -#X obj 51 110 max; -#X obj 51 86 min; -#X obj 51 34 inlet; -#X obj 51 134 outlet; -#X obj 75 57 r \$0-y_max; -#X obj 82 80 r \$0-y_min; -#X connect 0 0 3 0; -#X connect 1 0 0 0; -#X connect 2 0 1 0; -#X connect 4 0 1 1; -#X connect 5 0 0 1; -#X restore 277 342 pd check_min_max; -#X obj 100 126 s \$0-y_min; -#X obj 150 177 s \$0-y_max; -#X obj 316 93 r \$0-y_min; -#X obj 15 101 s \$0-x_pos; -#X obj 293 365 r \$0-y_max; -#X obj 456 385 r \$0-y_max; -#X obj 293 45 r \$0-x_pos; -#X obj 413 335 r \$0-x_pos; -#X obj 14 55 t b b b b b; -#X obj 64 269 alias \$0-sld; -#X obj 84 222 alias \$0-cadre; -#X obj 414 449 alias \$0-sld; -#X obj 430 252 alias \$0-sld; -#X obj 14 31 route show float hide; -#X msg 165 52 hide; -#X msg 85 199 show \, width 1 \, color white; -#X obj 303 167 rect \$1 \$0-cadre 10 10 20 20; -#X obj 325 71 + 15; -#X obj 426 363 + 15; -#X obj 14 78 \$3; -#X obj 100 102 \$4; -#X obj 180 127 \$5; -#X obj 344 115 + \$5; -#X obj 22 177 -; -#X obj 22 200 * -1; -#X obj 35 154 r \$0-y_max; -#X obj 260 259 rect \$1 \$0-sld; -#X obj 135 352 route move2; -#X obj 138 388 print; -#X msg 63 244 show \, color blue \, width 1; -#X connect 1 0 32 0; -#X connect 3 0 35 0; -#X connect 4 0 20 0; -#X connect 5 0 31 0; -#X connect 6 0 30 0; -#X connect 7 0 31 0; -#X connect 8 1 18 0; -#X connect 10 0 12 0; -#X connect 11 0 10 0; -#X connect 12 0 2 0; -#X connect 16 2 18 0; -#X connect 17 0 7 1; -#X connect 18 0 11 0; -#X connect 18 0 6 1; -#X connect 18 0 6 3; -#X connect 21 0 3 1; -#X connect 21 0 41 0; -#X connect 23 0 11 1; -#X connect 24 0 6 3; -#X connect 24 0 6 1; -#X connect 25 0 3 0; -#X connect 25 0 36 0; -#X connect 26 0 6 0; -#X connect 26 0 37 0; -#X connect 27 0 38 0; -#X connect 27 1 39 0; -#X connect 27 2 40 0; -#X connect 27 3 48 0; -#X connect 27 3 17 0; -#X connect 27 4 34 0; -#X connect 29 0 47 0; -#X connect 31 0 7 0; -#X connect 31 0 5 0; -#X connect 32 0 27 0; -#X connect 32 1 42 0; -#X connect 32 2 33 0; -#X connect 33 0 35 0; -#X connect 33 0 45 0; -#X connect 34 0 29 0; -#X connect 35 0 16 0; -#X connect 35 0 5 0; -#X connect 36 0 3 2; -#X connect 37 0 6 2; -#X connect 38 0 22 0; -#X connect 39 0 4 0; -#X connect 39 0 19 0; -#X connect 40 0 4 1; -#X connect 41 0 3 3; -#X connect 42 0 43 0; -#X connect 43 0 18 0; -#X connect 44 0 42 1; -#X connect 45 0 8 0; -#X connect 45 0 46 0; -#X connect 46 0 47 0; -#X connect 46 1 47 0; -#X connect 48 0 28 0; diff --git a/extensions/xgui/pdx.bat b/extensions/xgui/pdx.bat deleted file mode 100644 index bbe34e59466bb75675642142eb8ce7b3579f8d50..0000000000000000000000000000000000000000 --- a/extensions/xgui/pdx.bat +++ /dev/null @@ -1,5 +0,0 @@ -title pdx -start ..\bin\wish83.exe .\bin\xgui.sh -..\bin\pd.exe -audiobuf 100 -open .\main\pdx_connect.pd -path ..\externs -path .\main -path .\adapters_in -path .\adapters_out -path .\behaviors -path .\filters -path .\objects -path .\utils -path .\physics - - diff --git a/extensions/xgui/pdx.sh b/extensions/xgui/pdx.sh deleted file mode 100755 index ebd8c0179be6e343cfdb76f0ba31b8fafe887a0a..0000000000000000000000000000000000000000 --- a/extensions/xgui/pdx.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh -if test "x${PD}" = "x"; then - PD=../bin/pd -fi -./bin/xgui.sh & -${PD} -open ./main/pdx_connect.pd \ - -path ./main/ \ - -path ./adapters_in \ - -path ./adapters_out \ - -path ./behaviors \ - -path ./filters \ - -path ./objects \ - -path ./utils \ - -path ./physics \ - -path ./bin - - diff --git a/extensions/xgui/physics/atom.pd b/extensions/xgui/physics/atom.pd deleted file mode 100644 index 2defe2ff12fe98571eb6f0e700422f0ad63800cb..0000000000000000000000000000000000000000 --- a/extensions/xgui/physics/atom.pd +++ /dev/null @@ -1,21 +0,0 @@ -#N canvas 579 401 301 287 10; -#X obj 22 35 inlet; -#X text 199 245 dh20020401; -#X text 22 10 atom name x y; -#X obj 21 85 concat !xy; -#X obj 75 109 concat ?xy; -#X obj 129 133 concat add; -#X obj 18 212 convert xy= coord=; -#X obj 18 183 vector \$1-pos \$2 \$3; -#X obj 18 239 outlet; -#X obj 21 62 route !coord ?coord move drag; -#X connect 0 0 9 0; -#X connect 3 0 7 0; -#X connect 4 0 7 0; -#X connect 5 0 7 0; -#X connect 6 0 8 0; -#X connect 7 0 6 0; -#X connect 9 0 3 0; -#X connect 9 1 4 0; -#X connect 9 2 5 0; -#X connect 9 3 5 0; diff --git a/extensions/xgui/physics/damping.pd b/extensions/xgui/physics/damping.pd deleted file mode 100644 index 1e8a097356a8cd5f20757f59ffd2b6ffcae99ac0..0000000000000000000000000000000000000000 --- a/extensions/xgui/physics/damping.pd +++ /dev/null @@ -1,59 +0,0 @@ -#N canvas 605 407 505 422 10; -#X obj 26 45 inlet; -#X text 237 8 force = -c.v; -#X obj 93 45 valueinit \$1_c \$2; -#X text 23 8 damping name c; -#X obj 62 120 value \$1_c; -#X msg 62 95 bang; -#X obj 243 78 inlet; -#X obj 248 261 value \$1_c; -#X obj 248 310 *; -#X msg 243 128 ?abs; -#X obj 266 284 * -1; -#X obj 248 360 force \$1_s; -#X obj 337 389 outlet; -#X obj 248 211 r b_spring; -#X text 405 368 dh20020404; -#X obj 64 222 outlet; -#X msg 248 335 !abs \$1; -#X obj 122 150 force \$1_s; -#X obj 26 70 route !c ?c ?force; -#X msg 120 95 ?force; -#X obj 264 184 route abs=; -#X msg 284 128 !xy \$3 \$4; -#X obj 264 159 vector \$1_calcul; -#X obj 243 103 t b a a; -#X obj 332 286 vector \$1_speed; -#X msg 362 132 !xy \$3 \$4; -#X obj 385 159 vector \$1_speed; -#X obj 248 236 t b b; -#X msg 332 264 ?xy; -#X msg 332 311 !force \$1 \$2; -#X connect 0 0 18 0; -#X connect 4 0 15 0; -#X connect 5 0 4 0; -#X connect 6 0 23 0; -#X connect 7 0 8 0; -#X connect 8 0 16 0; -#X connect 9 0 22 0; -#X connect 10 0 8 1; -#X connect 11 1 12 0; -#X connect 13 0 27 0; -#X connect 16 0 11 0; -#X connect 17 0 15 0; -#X connect 18 0 4 0; -#X connect 18 1 5 0; -#X connect 18 2 19 0; -#X connect 19 0 17 0; -#X connect 20 0 10 0; -#X connect 21 0 22 0; -#X connect 22 0 20 0; -#X connect 23 0 9 0; -#X connect 23 1 21 0; -#X connect 23 2 25 0; -#X connect 24 0 29 0; -#X connect 25 0 26 0; -#X connect 27 0 7 0; -#X connect 27 1 28 0; -#X connect 28 0 24 0; -#X connect 29 0 11 0; diff --git a/extensions/xgui/physics/force.pd b/extensions/xgui/physics/force.pd deleted file mode 100644 index 7371eb9c359fc59c395b8a33852e44ab3043b191..0000000000000000000000000000000000000000 --- a/extensions/xgui/physics/force.pd +++ /dev/null @@ -1,29 +0,0 @@ -#N canvas 534 341 718 332 12; -#X obj 25 78 inlet; -#X obj 25 254 outlet; -#X text 580 265 dh20020401; -#X obj 388 143 r b_force; -#X text 17 8 force name x y; -#X obj 25 200 vector \$1_force \$2 \$3; -#X msg 388 170 ?xy; -#X obj 388 199 vector \$1_force \$2 \$3; -#X obj 388 254 outlet; -#X obj 388 226 convert xy= force; -#X obj 25 104 route !force ?force !abs; -#X obj 25 227 convert xy= force=; -#X msg 25 133 !xy \$1 \$2; -#X msg 119 132 ?xy; -#X msg 166 131 !abs \$1; -#X connect 0 0 10 0; -#X connect 3 0 6 0; -#X connect 5 0 11 0; -#X connect 6 0 7 0; -#X connect 7 0 9 0; -#X connect 9 0 8 0; -#X connect 10 0 12 0; -#X connect 10 1 13 0; -#X connect 10 2 14 0; -#X connect 11 0 1 0; -#X connect 12 0 5 0; -#X connect 13 0 5 0; -#X connect 14 0 5 0; diff --git a/extensions/xgui/physics/lia_2d.pd b/extensions/xgui/physics/lia_2d.pd deleted file mode 100644 index 8b21948aac0e2f6e8def0ea9ea09fa53959e5504..0000000000000000000000000000000000000000 --- a/extensions/xgui/physics/lia_2d.pd +++ /dev/null @@ -1,206 +0,0 @@ -#N canvas 100 156 652 628 10; -#X obj 217 36 inlet; -#X obj 443 33 inlet; -#X obj 402 32 inlet; -#X obj 259 35 inlet; -#X text 225 -17 X1; -#X text 285 -39 masse 1; -#X text 449 -43 masse 2; -#X text 412 -19 X2; -#X obj 173 552 outlet; -#X obj 384 553 outlet; -#X floatatom 616 65 0 0 0; -#X text 552 -62 longeur du resort; -#X obj -19 -9 loadbang; -#X text 276 -99 modele de liaison; -#X floatatom 218 82 0 0 0; -#X floatatom 388 61 0 0 0; -#X obj 324 186 -; -#X obj 286 184 -; -#X floatatom 66 61 0 0 0; -#X floatatom 131 60 0 0 0; -#X text 74 -43 K; -#X text 135 -41 C; -#X obj 322 353 *; -#X obj 337 328 -; -#X obj 460 422 *; -#X obj 343 464 +; -#X floatatom 259 62 0 0 0; -#X floatatom 446 62 0 0 0; -#X obj 291 499 * -1; -#X obj 67 36 inlet; -#X obj 132 35 inlet; -#X obj 36 109 float; -#X obj 101 110 float; -#X obj 187 107 float; -#X obj 229 107 float; -#X obj 372 107 float; -#X obj 413 106 float; -#X text 53 -61 raideur; -#X text 110 -60 viscosite; -#X obj 66 -12 r lk; -#X obj 132 -12 r lc; -#X obj 67 13 \$1; -#X obj 133 12 \$2; -#X obj 216 9 \$3; -#X obj 307 9 \$5; -#X obj 616 38 inlet; -#X obj 599 107 f; -#X text 596 -32 L0; -#X text 579 -49 a vide; -#X obj 306 35 inlet; -#X obj 348 35 inlet; -#X floatatom 306 83 0 0 0; -#X floatatom 348 62 0 0 0; -#X obj 276 107 float; -#X obj 318 107 float; -#X obj 529 32 inlet; -#X obj 488 31 inlet; -#X floatatom 486 61 0 0 0; -#X floatatom 526 63 0 0 0; -#X obj 458 106 float; -#X obj 499 105 float; -#X text 272 -17 Vx1; -#X text 314 -17 Y1; -#X text 361 -17 Vy1; -#X text 453 -20 Vx2; -#X text 498 -20 Y2; -#X text 539 -21 Vy2; -#X obj 260 9 \$4; -#X obj 349 8 \$6; -#X obj 403 6 \$7; -#X obj 445 6 \$8; -#X obj 488 5 \$9; -#X obj 528 6 \$10; -#X obj 612 14 \$11; -#X obj 417 185 -; -#X obj 377 185 -; -#X text 288 202 Dx; -#X text 323 205 DVx; -#X text 380 206 Dy; -#X text 416 204 DVy; -#X obj 287 230 *; -#X obj 377 230 *; -#X obj 320 258 +; -#X text 360 285 l; -#X text 352 353 FK; -#X obj 325 392 *; -#X obj 371 392 *; -#X obj 325 421 /; -#X obj 373 422 /; -#X obj 421 420 *; -#X obj 408 469 +; -#X text 321 439 FKx; -#X text 371 441 FKy; -#X text 416 442 FCx; -#X text 465 439 FCy; -#X text 190 573 F1x; -#X text 400 571 F2x; -#X obj 281 551 outlet; -#X obj 466 552 outlet; -#X obj 373 499 * -1; -#X text 286 570 F1y; -#X text 478 572 F2y; -#X obj -154 89 t b b b b b b b b b b b b; -#X obj 322 284 sqrt; -#X text 565 558 ch20020120; -#X obj -155 60 r b_spring; -#X connect 0 0 14 0; -#X connect 1 0 36 0; -#X connect 2 0 35 0; -#X connect 3 0 26 0; -#X connect 10 0 46 1; -#X connect 12 0 41 0; -#X connect 12 0 42 0; -#X connect 12 0 43 0; -#X connect 12 0 67 0; -#X connect 12 0 44 0; -#X connect 12 0 68 0; -#X connect 12 0 69 0; -#X connect 12 0 70 0; -#X connect 12 0 71 0; -#X connect 12 0 72 0; -#X connect 12 0 73 0; -#X connect 14 0 33 1; -#X connect 15 0 35 1; -#X connect 16 0 89 1; -#X connect 17 0 80 1; -#X connect 17 0 80 0; -#X connect 17 0 85 1; -#X connect 18 0 31 1; -#X connect 19 0 32 1; -#X connect 22 0 85 0; -#X connect 22 0 86 0; -#X connect 23 0 22 1; -#X connect 24 0 90 1; -#X connect 25 0 28 0; -#X connect 25 0 9 0; -#X connect 26 0 34 1; -#X connect 27 0 36 1; -#X connect 28 0 8 0; -#X connect 29 0 18 0; -#X connect 30 0 19 0; -#X connect 31 0 22 0; -#X connect 32 0 89 0; -#X connect 32 0 24 0; -#X connect 33 0 17 0; -#X connect 34 0 16 0; -#X connect 35 0 17 1; -#X connect 36 0 16 1; -#X connect 39 0 18 0; -#X connect 40 0 19 0; -#X connect 41 0 18 0; -#X connect 42 0 19 0; -#X connect 43 0 14 0; -#X connect 44 0 51 0; -#X connect 45 0 10 0; -#X connect 46 0 23 1; -#X connect 49 0 51 0; -#X connect 50 0 52 0; -#X connect 51 0 53 1; -#X connect 52 0 54 1; -#X connect 53 0 75 0; -#X connect 54 0 74 0; -#X connect 55 0 60 0; -#X connect 56 0 59 0; -#X connect 57 0 59 1; -#X connect 58 0 60 1; -#X connect 59 0 75 1; -#X connect 60 0 74 1; -#X connect 67 0 26 0; -#X connect 68 0 52 0; -#X connect 69 0 15 0; -#X connect 70 0 27 0; -#X connect 71 0 57 0; -#X connect 72 0 58 0; -#X connect 73 0 10 0; -#X connect 74 0 24 1; -#X connect 75 0 81 1; -#X connect 75 0 81 0; -#X connect 75 0 86 1; -#X connect 80 0 82 0; -#X connect 81 0 82 1; -#X connect 82 0 103 0; -#X connect 85 0 87 0; -#X connect 86 0 88 0; -#X connect 87 0 25 0; -#X connect 88 0 90 0; -#X connect 89 0 25 1; -#X connect 90 0 99 0; -#X connect 90 0 98 0; -#X connect 99 0 97 0; -#X connect 102 1 31 0; -#X connect 102 2 32 0; -#X connect 102 3 33 0; -#X connect 102 4 35 0; -#X connect 102 5 34 0; -#X connect 102 6 36 0; -#X connect 102 7 53 0; -#X connect 102 8 59 0; -#X connect 102 9 54 0; -#X connect 102 10 60 0; -#X connect 102 11 46 0; -#X connect 103 0 88 1; -#X connect 103 0 23 0; -#X connect 103 0 87 1; -#X connect 105 0 102 0; diff --git a/extensions/xgui/physics/mass.pd b/extensions/xgui/physics/mass.pd deleted file mode 100644 index bed61e42cbfc710247fb652750d04bb0947746c8..0000000000000000000000000000000000000000 --- a/extensions/xgui/physics/mass.pd +++ /dev/null @@ -1,118 +0,0 @@ -#N canvas 336 189 834 719 10; -#X obj 24 35 inlet; -#X obj 30 631 outlet; -#X text 591 652 dh20020401; -#X obj 77 86 bang; -#X msg 24 142 mass= \$1; -#X obj 466 162 r b_mass; -#X obj 561 22 valueinit \$1_m \$2; -#X obj 24 119 value \$1_m; -#X obj 126 119 concat !xy; -#X text 23 10 mass name m x y speed_x speed_y; -#X obj 291 276 concat add; -#X obj 371 275 value \$1_m; -#X msg 371 299 divide \$1 \$1; -#X msg 590 273 ?xy; -#X obj 222 276 r b_init; -#X msg 222 301 !xy 0 0; -#X obj 125 171 convert xy= speed=; -#X msg 143 87 ?xy; -#X obj 290 395 vector \$1_speed \$3 \$4; -#X obj 293 363 convert xy= add; -#X msg 620 274 ?xy; -#X obj 291 336 vector \$1_calcul1; -#X obj 288 423 unpack s f f; -#X obj 326 451 * 0.01; -#X obj 386 453 * 0.01; -#X obj 303 493 pack s f f; -#X msg 470 273 mult 0.01 0.01; -#X obj 304 517 route list; -#X msg 289 451 move; -#X obj 295 119 atom \$1_pos \$3 \$4; -#X obj 304 550 atom \$1_pos \$3 \$4; -#X msg 723 273 ?coord; -#X obj 124 145 vector \$1_speed \$5 \$6; -#X obj 337 669 outlet; -#X obj 297 158 inlet; -#X obj 297 184 route force; -#X msg 256 87 1; -#X msg 289 87 0; -#X obj 466 188 spigot; -#X obj 24 62 route !mass ?mass !speed ?speed speed on off; -#X msg 187 88 !abs \$1; -#X obj 668 301 vector \$1_speed \$5 \$6; -#X obj 466 212 t b b b b b b; -#X obj 387 597 unpack f f; -#X obj 304 597 unpack f f; -#X obj 304 574 route coord=; -#X msg 340 647 mass \$1 \$2 \$3 \$4; -#X text 507 596 mass x y speed_x speed_y; -#X obj 339 622 pack f f f f; -#X msg 668 274 ?xy; -#X obj 668 328 route xy=; -#X obj 461 394 value time_interval; -#X obj 461 371 loadbang; -#X connect 0 0 39 0; -#X connect 3 0 7 0; -#X connect 4 0 1 0; -#X connect 5 0 38 0; -#X connect 7 0 4 0; -#X connect 8 0 32 0; -#X connect 10 0 21 0; -#X connect 11 0 12 0; -#X connect 12 0 21 0; -#X connect 13 0 21 0; -#X connect 14 0 15 0; -#X connect 15 0 21 0; -#X connect 16 0 1 0; -#X connect 17 0 32 0; -#X connect 18 0 22 0; -#X connect 19 0 18 0; -#X connect 20 0 18 0; -#X connect 21 0 19 0; -#X connect 22 0 28 0; -#X connect 22 1 23 0; -#X connect 22 2 24 0; -#X connect 23 0 25 1; -#X connect 24 0 25 2; -#X connect 25 0 27 0; -#X connect 26 0 21 0; -#X connect 27 0 30 0; -#X connect 28 0 25 0; -#X connect 29 0 1 0; -#X connect 30 0 45 0; -#X connect 31 0 30 0; -#X connect 32 0 16 0; -#X connect 34 0 35 0; -#X connect 35 0 10 0; -#X connect 36 0 38 1; -#X connect 37 0 38 1; -#X connect 38 0 42 0; -#X connect 39 0 7 0; -#X connect 39 1 3 0; -#X connect 39 2 8 0; -#X connect 39 3 17 0; -#X connect 39 4 40 0; -#X connect 39 5 36 0; -#X connect 39 6 37 0; -#X connect 39 7 29 0; -#X connect 40 0 32 0; -#X connect 41 0 50 0; -#X connect 42 0 31 0; -#X connect 42 1 49 0; -#X connect 42 2 20 0; -#X connect 42 3 13 0; -#X connect 42 4 26 0; -#X connect 42 5 11 0; -#X connect 43 0 48 2; -#X connect 43 1 48 3; -#X connect 44 0 48 0; -#X connect 44 1 48 1; -#X connect 45 0 44 0; -#X connect 46 0 33 0; -#X connect 48 0 46 0; -#X connect 49 0 41 0; -#X connect 50 0 43 0; -#X connect 51 0 23 1; -#X connect 51 0 24 1; -#X connect 52 0 51 0; diff --git a/extensions/xgui/physics/spring.pd b/extensions/xgui/physics/spring.pd deleted file mode 100644 index b5f75d288ef1516f6777f2f0fedce870d9055df1..0000000000000000000000000000000000000000 --- a/extensions/xgui/physics/spring.pd +++ /dev/null @@ -1,155 +0,0 @@ -#N canvas 207 165 1045 677 10; -#X obj 13 33 inlet; -#X obj 21 119 concat !xy; -#X obj 40 144 concat ?xy; -#X obj 97 120 concat !xy; -#X obj 118 143 concat ?xy; -#X text 912 34 k : N/m; -#X obj 899 64 inlet; -#X obj 175 319 outlet; -#X obj 16 206 convert xy= xy1=; -#X obj 157 206 convert xy= xy1=; -#X obj 899 87 route mass; -#X obj 338 358 vector \$1_calcul_l; -#X obj 411 270 convert xy= add; -#X obj 353 190 t b b b b; -#X msg 453 222 !xy 0 0; -#X obj 337 405 value \$1_l; -#X obj 198 120 value \$1_l; -#X msg 198 143 l= \$1; -#X msg 375 224 ?xy; -#X msg 413 223 ?xy; -#X msg 337 225 ?abs; -#X obj 338 382 route abs=; -#X obj 292 121 value \$1_k; -#X obj 374 15 valueinit \$1_k \$2; -#X obj 292 144 concat k=; -#X msg 714 565 !abs \$1; -#X text 642 29 k : N/m; -#X obj 653 61 inlet; -#X obj 653 84 route mass; -#X obj 607 600 force \$1_s1; -#X msg 653 571 !abs \$1; -#X obj 701 632 outlet; -#X obj 376 146 force \$1_s1; -#X obj 724 537 * -1; -#X text 10 7 spring name k l x1 y1 x2 y2; -#X obj 374 40 valueinit \$1_l \$3; -#X obj 483 146 force \$1_s2; -#X msg 376 124 ?force; -#X msg 482 125 ?force; -#X obj 13 53 route !xy1 ?xy1 !xy2 ?xy2 !l ?l l !k ?k ?force1 ?force2; -#X msg 653 108 !xy \$1 \$2; -#X msg 899 111 !xy \$1 \$2; -#X obj 653 162 r b_spring; -#X obj 719 598 force \$1_s2; -#X obj 774 284 convert xy= add; -#X msg 816 236 !xy 0 0; -#X msg 738 238 ?xy; -#X msg 776 237 ?xy; -#X msg 665 236 ?abs; -#X obj 701 372 vector \$1_calcul_kl; -#X obj 683 442 value \$1_l; -#X obj 683 466 -; -#X obj 661 514 *; -#X obj 661 484 value \$1_k; -#X obj 651 193 t b b b b b b b; -#X msg 705 237 ?xy; -#X obj 700 394 route abs= xy=; -#X obj 813 625 outlet; -#X text 853 515 dh20020404; -#X obj 16 178 vector \$1_p1 \$4 \$5; -#X obj 157 179 vector \$1_p2 \$6 \$7; -#X obj 410 247 vector \$1_p1 \$4 \$5; -#X obj 376 296 vector \$1_p2 \$6 \$7; -#X obj 773 261 vector \$1_p1 \$4 \$5; -#X obj 739 310 vector \$1_p2 \$6 \$7; -#X obj 653 130 vector \$1_p1 \$4 \$5; -#X obj 899 133 vector \$1_p2 \$6 \$7; -#X msg 292 98 bang; -#X msg 198 96 bang; -#X msg 746 418 !force \$1 \$2; -#X obj 376 318 convert xy= substract; -#X obj 739 332 convert xy= substract; -#X connect 0 0 39 0; -#X connect 1 0 59 0; -#X connect 2 0 59 0; -#X connect 3 0 60 0; -#X connect 4 0 60 0; -#X connect 6 0 10 0; -#X connect 8 0 7 0; -#X connect 9 0 7 0; -#X connect 10 0 41 0; -#X connect 11 0 21 0; -#X connect 12 0 11 0; -#X connect 13 0 20 0; -#X connect 13 1 18 0; -#X connect 13 2 19 0; -#X connect 13 3 14 0; -#X connect 14 0 11 0; -#X connect 16 0 17 0; -#X connect 17 0 7 0; -#X connect 18 0 62 0; -#X connect 19 0 61 0; -#X connect 20 0 11 0; -#X connect 21 0 15 0; -#X connect 22 0 24 0; -#X connect 24 0 7 0; -#X connect 25 0 43 0; -#X connect 27 0 28 0; -#X connect 28 0 40 0; -#X connect 29 1 31 0; -#X connect 30 0 29 0; -#X connect 32 0 7 0; -#X connect 33 0 25 0; -#X connect 36 0 7 0; -#X connect 37 0 32 0; -#X connect 38 0 36 0; -#X connect 39 0 1 0; -#X connect 39 1 2 0; -#X connect 39 2 3 0; -#X connect 39 3 4 0; -#X connect 39 4 16 0; -#X connect 39 5 68 0; -#X connect 39 6 13 0; -#X connect 39 7 22 0; -#X connect 39 8 67 0; -#X connect 39 9 37 0; -#X connect 39 10 38 0; -#X connect 40 0 65 0; -#X connect 41 0 66 0; -#X connect 42 0 54 0; -#X connect 43 1 57 0; -#X connect 44 0 49 0; -#X connect 45 0 49 0; -#X connect 46 0 64 0; -#X connect 47 0 63 0; -#X connect 48 0 49 0; -#X connect 49 0 56 0; -#X connect 50 0 51 0; -#X connect 51 0 52 1; -#X connect 52 0 33 0; -#X connect 52 0 30 0; -#X connect 53 0 52 0; -#X connect 54 0 53 0; -#X connect 54 1 50 0; -#X connect 54 2 48 0; -#X connect 54 3 55 0; -#X connect 54 4 46 0; -#X connect 54 5 47 0; -#X connect 54 6 45 0; -#X connect 55 0 49 0; -#X connect 56 0 51 1; -#X connect 56 1 69 0; -#X connect 59 0 8 0; -#X connect 60 0 9 0; -#X connect 61 0 12 0; -#X connect 62 0 70 0; -#X connect 63 0 44 0; -#X connect 64 0 71 0; -#X connect 67 0 22 0; -#X connect 68 0 16 0; -#X connect 69 0 29 0; -#X connect 69 0 43 0; -#X connect 70 0 11 0; -#X connect 71 0 49 0; diff --git a/extensions/xgui/physics/vector.pd b/extensions/xgui/physics/vector.pd deleted file mode 100644 index 1195cad9cd1c9d218df7e33facce4f84124c9095..0000000000000000000000000000000000000000 --- a/extensions/xgui/physics/vector.pd +++ /dev/null @@ -1,162 +0,0 @@ -#N canvas 46 212 1098 676 12; -#X obj 23 75 inlet; -#X obj 102 619 outlet; -#X obj 24 157 unpack f f; -#X obj 42 247 pack f f; -#X obj 122 157 t b b; -#X msg 42 270 xy= \$1 \$2; -#X text 625 537 dh20020401; -#X text 19 10 vector name x y; -#X obj 24 206 value \$1_x; -#X obj 125 206 value \$1_y; -#X obj 203 244 value \$1_x; -#X obj 299 244 value \$1_y; -#X obj 305 279 +; -#X obj 206 279 +; -#X obj 256 216 unpack f f; -#X obj 203 303 value \$1_x; -#X obj 305 304 value \$1_y; -#X obj 236 185 t a b; -#X obj 285 16 valueinit \$1_x \$2; -#X obj 412 245 value \$1_x; -#X obj 508 245 value \$1_y; -#X obj 465 217 unpack f f; -#X obj 412 304 value \$1_x; -#X obj 514 305 value \$1_y; -#X obj 445 185 t a b; -#X obj 514 280 *; -#X obj 412 279 *; -#X text 635 547 dh20020402; -#X obj 420 401 value \$1_x; -#X obj 516 401 value \$1_y; -#X obj 473 373 unpack f f; -#X obj 420 460 value \$1_x; -#X obj 522 461 value \$1_y; -#X obj 521 436 /; -#X obj 420 435 /; -#X obj 417 337 t b b a; -#X obj 287 45 valueinit \$1_y \$3; -#X obj 629 338 value \$1_x; -#X obj 669 282 value \$1_y; -#X obj 664 315 *; -#X obj 622 373 *; -#X obj 629 258 t b b; -#X obj 639 403 +; -#X obj 639 431 sqrt; -#X obj 208 396 value \$1_x; -#X obj 304 396 value \$1_y; -#X obj 261 368 unpack f f; -#X obj 208 455 value \$1_x; -#X obj 310 455 value \$1_y; -#X obj 205 332 t b b a; -#X obj 309 430 -; -#X obj 208 430 -; -#X obj 756 537 value \$1_x; -#X obj 852 537 value \$1_y; -#X obj 756 596 value \$1_x; -#X obj 852 595 value \$1_y; -#X obj 784 303 value \$1_x; -#X obj 824 247 value \$1_y; -#X obj 819 280 *; -#X obj 777 338 *; -#X obj 784 223 t b b; -#X obj 776 368 +; -#X obj 776 396 sqrt; -#X obj 815 498 /; -#X obj 857 426 t b b; -#X obj 796 183 t b f b; -#X obj 852 569 *; -#X obj 755 571 *; -#X obj 639 459 concat abs=; -#X obj 24 106 route !xy ?xy add substract mult divide ?teta ?abs !teta -!abs rotate; -#X obj 776 425 select 0; -#X msg 785 456 0.7; -#X connect 0 0 69 0; -#X connect 2 0 8 0; -#X connect 2 1 9 0; -#X connect 3 0 5 0; -#X connect 4 0 8 0; -#X connect 4 1 9 0; -#X connect 5 0 1 0; -#X connect 8 0 3 0; -#X connect 9 0 3 1; -#X connect 10 0 13 1; -#X connect 11 0 12 1; -#X connect 12 0 16 0; -#X connect 13 0 15 0; -#X connect 14 0 13 0; -#X connect 14 1 12 0; -#X connect 17 0 14 0; -#X connect 17 1 11 0; -#X connect 17 1 10 0; -#X connect 19 0 26 1; -#X connect 20 0 25 1; -#X connect 21 0 26 0; -#X connect 21 1 25 0; -#X connect 24 0 21 0; -#X connect 24 1 20 0; -#X connect 24 1 19 0; -#X connect 25 0 23 0; -#X connect 26 0 22 0; -#X connect 28 0 34 0; -#X connect 29 0 33 0; -#X connect 30 0 34 1; -#X connect 30 1 33 1; -#X connect 33 0 32 0; -#X connect 34 0 31 0; -#X connect 35 0 28 0; -#X connect 35 1 29 0; -#X connect 35 2 30 0; -#X connect 37 0 40 1; -#X connect 37 0 40 0; -#X connect 38 0 39 1; -#X connect 38 0 39 0; -#X connect 39 0 42 1; -#X connect 40 0 42 0; -#X connect 41 0 37 0; -#X connect 41 1 38 0; -#X connect 42 0 43 0; -#X connect 43 0 68 0; -#X connect 44 0 51 0; -#X connect 45 0 50 0; -#X connect 46 0 51 1; -#X connect 46 1 50 1; -#X connect 49 0 44 0; -#X connect 49 1 45 0; -#X connect 49 2 46 0; -#X connect 50 0 48 0; -#X connect 51 0 47 0; -#X connect 52 0 67 0; -#X connect 53 0 66 0; -#X connect 56 0 59 1; -#X connect 56 0 59 0; -#X connect 57 0 58 1; -#X connect 57 0 58 0; -#X connect 58 0 61 1; -#X connect 59 0 61 0; -#X connect 60 0 56 0; -#X connect 60 1 57 0; -#X connect 61 0 62 0; -#X connect 62 0 70 0; -#X connect 63 0 67 1; -#X connect 63 0 66 1; -#X connect 64 0 52 0; -#X connect 64 1 53 0; -#X connect 65 0 64 0; -#X connect 65 1 63 0; -#X connect 65 2 60 0; -#X connect 66 0 55 0; -#X connect 67 0 54 0; -#X connect 68 0 1 0; -#X connect 69 0 2 0; -#X connect 69 1 4 0; -#X connect 69 2 17 0; -#X connect 69 3 49 0; -#X connect 69 4 24 0; -#X connect 69 5 35 0; -#X connect 69 7 41 0; -#X connect 69 9 65 0; -#X connect 70 0 71 0; -#X connect 70 1 63 1; -#X connect 71 0 63 1; diff --git a/extensions/xgui/preset1.txt b/extensions/xgui/preset1.txt deleted file mode 100644 index d8dd1192b1e8fac31cec65ec0d0c4dd7790cb142..0000000000000000000000000000000000000000 --- a/extensions/xgui/preset1.txt +++ /dev/null @@ -1,12 +0,0 @@ -~/sliders/sl1 coord 20 20 35 147 -~/sliders/sl1sdl coord 20 30 35 30 -~/sliders/sl2 coord 50 20 65 147 -~/sliders/sl2sdl coord 50 47 65 47 -~/sliders/sl3 coord 80 20 95 147 -~/sliders/sl3sdl coord 80 56 95 56 -~/sliders/sl4 coord 110 20 125 147 -~/sliders/sl4sdl coord 110 35 125 35 -~/sliders/o1074 coord 140 20 210 40 -~/sliders/o1092 coord 140 50 210 70 -~/sliders/o1110 coord 140 80 210 100 -~/sliders/o1128 coord 140 110 210 130 diff --git a/extensions/xgui/preset2.txt b/extensions/xgui/preset2.txt deleted file mode 100644 index 87ac92d7a23c1d35933bdbf436a87001775129db..0000000000000000000000000000000000000000 --- a/extensions/xgui/preset2.txt +++ /dev/null @@ -1,12 +0,0 @@ -~/sliders/sl1 coord 20 20 35 147 -~/sliders/sl1sdl coord 20 50 35 50 -~/sliders/sl2 coord 50 20 65 147 -~/sliders/sl2sdl coord 50 63 65 63 -~/sliders/sl3 coord 80 20 95 147 -~/sliders/sl3sdl coord 80 86 95 86 -~/sliders/sl4 coord 110 20 125 147 -~/sliders/sl4sdl coord 110 108 125 108 -~/sliders/o3505 coord 140 20 210 40 -~/sliders/o3523 coord 140 50 210 70 -~/sliders/o3541 coord 140 80 210 100 -~/sliders/o3559 coord 140 110 210 130 diff --git a/extensions/xgui/preset3.txt b/extensions/xgui/preset3.txt deleted file mode 100644 index 158588a0fde7d68ffae3a4ebf83c2fbabbf5b97f..0000000000000000000000000000000000000000 --- a/extensions/xgui/preset3.txt +++ /dev/null @@ -1,12 +0,0 @@ -~/sliders/sl1 coord 20 20 35 147 -~/sliders/sl1sdl coord 20 99 35 99 -~/sliders/sl2 coord 50 20 65 147 -~/sliders/sl2sdl coord 50 83 65 83 -~/sliders/sl3 coord 80 20 95 147 -~/sliders/sl3sdl coord 80 69 95 69 -~/sliders/sl4 coord 110 20 125 147 -~/sliders/sl4sdl coord 110 55 125 55 -~/sliders/o3505 coord 140 20 210 40 -~/sliders/o3523 coord 140 50 210 70 -~/sliders/o3541 coord 140 80 210 100 -~/sliders/o3559 coord 140 110 210 130 diff --git a/extensions/xgui/preset4.txt b/extensions/xgui/preset4.txt deleted file mode 100644 index 4e5dfd4fd2cff2be2cb66a7d26b3aca8aba8e3b2..0000000000000000000000000000000000000000 --- a/extensions/xgui/preset4.txt +++ /dev/null @@ -1,12 +0,0 @@ -~/sliders/sl1 coord 20 20 35 147 -~/sliders/sl1sdl coord 20 131 35 131 -~/sliders/sl2 coord 50 20 65 147 -~/sliders/sl2sdl coord 50 108 65 108 -~/sliders/sl3 coord 80 20 95 147 -~/sliders/sl3sdl coord 80 101 95 101 -~/sliders/sl4 coord 110 20 125 147 -~/sliders/sl4sdl coord 110 112 125 112 -~/sliders/o1074 coord 140 20 210 40 -~/sliders/o1092 coord 140 50 210 70 -~/sliders/o1110 coord 140 80 210 100 -~/sliders/o1128 coord 140 110 210 130 diff --git a/extensions/xgui/utils/bounded.pd b/extensions/xgui/utils/bounded.pd deleted file mode 100644 index b2526983d1f1ef98dac1b276548577b0bf2c6aea..0000000000000000000000000000000000000000 --- a/extensions/xgui/utils/bounded.pd +++ /dev/null @@ -1,43 +0,0 @@ -#N canvas 392 177 383 289 10; -#X obj 16 39 inlet; -#X obj 16 229 outlet; -#X text 16 4 the bounded object : Number $name $value $min $max $smin -$smax; -#X obj 96 229 outlet; -#X text 199 228 dh20020427; -#X obj 130 64 loadbang; -#X obj 131 114 \$3; -#X obj 154 114 \$4; -#X obj 177 114 \$5; -#X obj 201 114 \$6; -#X obj 16 205 number \$1; -#X obj 96 205 number \$1; -#X obj 130 88 t b b b b b; -#X obj 225 114 \$2; -#X obj 130 136 pack f f f f f; -#X obj 48 91 bang; -#X text 209 237 dh20020523; -#X msg 130 160 \$5 \, subspace \$1 \$2 \$3 \$4 \, bound \$1 \$2; -#X obj 93 39 inlet; -#X obj 48 115 bang; -#X connect 0 0 10 0; -#X connect 0 0 15 0; -#X connect 5 0 12 0; -#X connect 6 0 14 0; -#X connect 7 0 14 1; -#X connect 8 0 14 2; -#X connect 9 0 14 3; -#X connect 10 0 1 0; -#X connect 11 0 3 0; -#X connect 12 0 6 0; -#X connect 12 1 7 0; -#X connect 12 2 8 0; -#X connect 12 3 9 0; -#X connect 12 4 13 0; -#X connect 13 0 14 4; -#X connect 14 0 17 0; -#X connect 15 0 11 0; -#X connect 17 0 11 0; -#X connect 18 0 11 0; -#X connect 18 0 19 0; -#X connect 19 0 10 0; diff --git a/extensions/xgui/utils/concat_set_bang.pd b/extensions/xgui/utils/concat_set_bang.pd deleted file mode 100644 index d617e596faaba1a213bcc446c3ab44a9acc94cdf..0000000000000000000000000000000000000000 --- a/extensions/xgui/utils/concat_set_bang.pd +++ /dev/null @@ -1,22 +0,0 @@ -#N canvas 273 213 466 323 12; -#X text 11 6 concat; -#X obj 14 39 inlet; -#X text 67 38 left; -#X obj 60 115 drip; -#X msg 60 140 add2 \$1; -#X obj 142 112 bang; -#X obj 90 237 outlet; -#X msg 90 210 color blue; -#X obj 236 241 outlet; -#X obj 5 138 t b b; -#X msg 142 138 set set; -#X connect 1 0 5 0; -#X connect 1 0 3 0; -#X connect 1 0 9 0; -#X connect 3 0 4 0; -#X connect 4 0 7 0; -#X connect 5 0 10 0; -#X connect 7 0 6 0; -#X connect 9 0 8 0; -#X connect 9 1 7 0; -#X connect 10 0 7 0; diff --git a/extensions/xgui/utils/concat_value.pd b/extensions/xgui/utils/concat_value.pd deleted file mode 100644 index a9e3b83dcb71026344c22c99f4cc3913ad6d2720..0000000000000000000000000000000000000000 --- a/extensions/xgui/utils/concat_value.pd +++ /dev/null @@ -1,26 +0,0 @@ -#N canvas 269 200 470 320 12; -#X text 11 6 concat; -#X obj 14 39 inlet; -#X text 67 38 left; -#X obj 60 115 drip; -#X msg 60 140 add2 \$1; -#X obj 97 78 bang; -#X msg 157 151 set my_text_x; -#X obj 90 237 outlet; -#X msg 157 125 set set \$1; -#X obj 12 114 bang; -#X obj 157 71 loadbang; -#X msg 90 210 my_text test; -#X obj 157 98 value \$1; -#X connect 1 0 5 0; -#X connect 1 0 3 0; -#X connect 1 0 9 0; -#X connect 3 0 4 0; -#X connect 4 0 11 0; -#X connect 5 0 6 0; -#X connect 6 0 11 0; -#X connect 8 0 6 0; -#X connect 9 0 11 0; -#X connect 10 0 12 0; -#X connect 11 0 7 0; -#X connect 12 0 8 0; diff --git a/extensions/xgui/utils/convert.pd b/extensions/xgui/utils/convert.pd deleted file mode 100644 index 6affbcef2ede050dad63b1d18848bec69590b1ed..0000000000000000000000000000000000000000 --- a/extensions/xgui/utils/convert.pd +++ /dev/null @@ -1,10 +0,0 @@ -#N canvas 343 358 450 300 12; -#X text 18 10 convert truc machin; -#X obj 19 43 inlet; -#X obj 19 71 route \$1; -#X obj 19 122 outlet; -#X obj 19 96 concat \$2; -#X text 173 127 dh20020401; -#X connect 1 0 2 0; -#X connect 2 0 4 0; -#X connect 4 0 3 0; diff --git a/extensions/xgui/utils/in.pd b/extensions/xgui/utils/in.pd deleted file mode 100644 index 2d2c84dd0b61f5b7bc5478ada67f2b5ceaf854b1..0000000000000000000000000000000000000000 --- a/extensions/xgui/utils/in.pd +++ /dev/null @@ -1,37 +0,0 @@ -#N canvas 330 344 290 248 10; -#X obj 13 18 inlet; -#X obj 64 18 inlet; -#X obj 144 18 inlet; -#X obj 21 149 >=; -#X obj 64 41 init2 \$1 0; -#X obj 144 41 init2 \$2 0; -#X obj 101 148 <=; -#X obj 13 41 t f f; -#X obj 59 181 &&; -#X obj 59 212 outlet; -#X text 117 212 dh20010815; -#X obj 148 92 max; -#X obj 58 109 min; -#X obj 150 122 max; -#X obj 60 82 min; -#X text 127 222 dh20020216; -#X connect 0 0 7 0; -#X connect 1 0 4 0; -#X connect 2 0 5 0; -#X connect 3 0 8 0; -#X connect 4 0 13 1; -#X connect 4 0 11 0; -#X connect 4 0 14 0; -#X connect 4 0 12 1; -#X connect 5 0 14 1; -#X connect 5 0 13 0; -#X connect 5 0 11 1; -#X connect 5 0 12 0; -#X connect 6 0 8 1; -#X connect 7 0 3 0; -#X connect 7 1 6 0; -#X connect 8 0 9 0; -#X connect 11 0 6 1; -#X connect 12 0 3 1; -#X connect 13 0 6 1; -#X connect 14 0 3 1; diff --git a/extensions/xgui/utils/init2.pd b/extensions/xgui/utils/init2.pd deleted file mode 100644 index 97a8bd2524348f535d27ad30897d958434dea5cb..0000000000000000000000000000000000000000 --- a/extensions/xgui/utils/init2.pd +++ /dev/null @@ -1,27 +0,0 @@ -#N canvas 544 230 405 255 10; -#X text 205 173 (c) musil@iem.kug.ac.at; -#X text 246 186 IEM KUG; -#X text 221 200 graz \, austria 2001; -#X obj 154 37 inlet; -#X obj 67 86 f \$1; -#X obj 88 34 loadbang; -#X obj 67 110 t f f; -#X obj 67 139 spigot; -#X text 225 83 dh20010325; -#X obj 87 57 t b b; -#X obj 116 86 f \$2; -#X text 136 6 exemple : init \$1 0; -#X obj 154 183 f; -#X obj 154 208 outlet; -#X text 65 185 dh20010429; -#X text 267 157 tanks to; -#X connect 3 0 12 0; -#X connect 4 0 6 0; -#X connect 5 0 9 0; -#X connect 6 0 7 0; -#X connect 6 1 7 1; -#X connect 7 0 12 0; -#X connect 9 0 4 0; -#X connect 9 1 10 0; -#X connect 10 0 12 0; -#X connect 12 0 13 0; diff --git a/extensions/xgui/utils/moy.pd b/extensions/xgui/utils/moy.pd deleted file mode 100644 index 774fef0f218d8af74d07c8dc1980eeb39d7682e1..0000000000000000000000000000000000000000 --- a/extensions/xgui/utils/moy.pd +++ /dev/null @@ -1,13 +0,0 @@ -#N canvas 176 223 452 302 12; -#X text 11 7 Moy; -#X obj 34 44 inlet; -#X obj 86 44 inlet; -#X obj 51 115 / 2; -#X obj 48 80 +; -#X obj 53 142 outlet; -#X text 51 177 dh20020428; -#X text 80 193 ethanol = 2g/l; -#X connect 1 0 4 0; -#X connect 2 0 4 1; -#X connect 3 0 5 0; -#X connect 4 0 3 0; diff --git a/extensions/xgui/utils/subspace.pd b/extensions/xgui/utils/subspace.pd deleted file mode 100644 index 3f8473168783dd55ee9a2d7b2435a566dd38929a..0000000000000000000000000000000000000000 --- a/extensions/xgui/utils/subspace.pd +++ /dev/null @@ -1,50 +0,0 @@ -#N canvas 84 46 443 487 12; -#X text 21 7 subspace x1 y2 x3 y4 x5 y6 x7 y8; -#X text 44 66 sub; -#X text 52 390 sub; -#X text 239 61 space; -#X text 241 388 space; -#X text 21 26 subspace define a region as subspace with their own coords -; -#X obj 40 91 inlet; -#X obj 221 365 outlet; -#X obj 221 309 pack f f; -#X obj 40 119 route xy; -#X msg 221 337 xy \$1 \$2; -#X obj 40 147 unpack f f; -#X obj 40 177 t b f; -#X obj 39 234 t b f; -#X obj 36 362 outlet; -#X obj 36 306 pack f f; -#X msg 36 334 xy \$1 \$2; -#X obj 40 206 bounded \$0-b1 0 \$1 \$3 \$5 \$7; -#X obj 237 87 inlet; -#X obj 237 115 route xy; -#X obj 237 143 unpack f f; -#X obj 237 173 t b f; -#X obj 38 258 bounded \$0-b2 0 \$2 \$4 \$6 \$8; -#X obj 258 233 t b f; -#X connect 6 0 9 0; -#X connect 8 0 10 0; -#X connect 9 0 11 0; -#X connect 10 0 7 0; -#X connect 11 0 12 0; -#X connect 11 1 13 0; -#X connect 12 0 17 0; -#X connect 12 1 17 0; -#X connect 13 0 22 0; -#X connect 13 1 22 0; -#X connect 15 0 16 0; -#X connect 16 0 14 0; -#X connect 17 0 15 0; -#X connect 17 1 8 0; -#X connect 18 0 19 0; -#X connect 19 0 20 0; -#X connect 20 0 21 0; -#X connect 20 1 23 0; -#X connect 21 0 17 1; -#X connect 21 1 17 1; -#X connect 22 0 15 1; -#X connect 22 1 8 1; -#X connect 23 0 22 1; -#X connect 23 1 22 1; diff --git a/extensions/xgui/utils/unique.pd b/extensions/xgui/utils/unique.pd deleted file mode 100644 index 10b59a3236da89d952e4a84b354e811557c9e097..0000000000000000000000000000000000000000 --- a/extensions/xgui/utils/unique.pd +++ /dev/null @@ -1,10 +0,0 @@ -#N canvas 161 175 452 302 8; -#X obj 14 15 inlet; -#X text 14 0 unique; -#X obj 14 55 \$0; -#X obj 14 75 outlet; -#X obj 14 35 bang; -#X text 13 94 dh20200128; -#X connect 0 0 4 0; -#X connect 2 0 3 0; -#X connect 4 0 2 0; diff --git a/extensions/xgui/utils/value2.pd b/extensions/xgui/utils/value2.pd deleted file mode 100644 index dc77c858436af957f7313816235ea099ff0a01ce..0000000000000000000000000000000000000000 --- a/extensions/xgui/utils/value2.pd +++ /dev/null @@ -1,13 +0,0 @@ -#N canvas 374 432 450 300 12; -#X obj 21 43 inlet; -#X obj 78 44 inlet; -#X text 17 9 value name value; -#X obj 56 123 \$2; -#X obj 78 69 s \$1-value; -#X obj 78 96 r \$1-value; -#X obj 56 151 outlet; -#X text 342 264 dh20020401; -#X connect 0 0 3 0; -#X connect 1 0 4 0; -#X connect 3 0 6 0; -#X connect 5 0 3 1; diff --git a/extensions/xgui/utils/valueinit.pd b/extensions/xgui/utils/valueinit.pd deleted file mode 100644 index 04ef3260edfc893148b95dbc6afc1b3e7903b8fe..0000000000000000000000000000000000000000 --- a/extensions/xgui/utils/valueinit.pd +++ /dev/null @@ -1,8 +0,0 @@ -#N canvas 382 472 450 300 12; -#X text 339 262 dh20020401; -#X obj 19 87 value \$1; -#X obj 19 61 \$2; -#X obj 19 34 loadbang; -#X text 17 10 valueinit name value; -#X connect 2 0 1 0; -#X connect 3 0 2 0; diff --git a/extensions/xgui/xgui-lib/a2s.c b/extensions/xgui/xgui-lib/a2s.c deleted file mode 100644 index 55a9bc47baf10ec4b65f7cf2be2def0e5ab1e7fc..0000000000000000000000000000000000000000 --- a/extensions/xgui/xgui-lib/a2s.c +++ /dev/null @@ -1,66 +0,0 @@ -/* Copyright (c) 2002 Damien HENRY. -* For information on usage and redistribution, and for a DISCLAIMER OF ALL -* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */ - -/* code for a2s pd class */ - -#include "m_pd.h" -#include <string.h> - -typedef struct s_pd_obj_a2s -{ - t_object x_obj; -} t_pd_obj_a2s; - - -void a2s_help(t_pd_obj_a2s *x) -{ - post(" "); - post("a2s v001"); - post("+ selector list :"); - post("++ help : this help !!!"); - post("++ symbol : will return the canvas & the obj"); - post(" "); -} - -void a2s_list(t_pd_obj_a2s *x, t_symbol *s, int argc, t_atom *argv) -{ - char buffer[MAXPDSTRING] ; - char *a_string ; - int a_string_l ; - t_binbuf *bbuf ; - int i,l=0,k=0 ; - - bbuf = binbuf_new() ; - for (i=0;i<argc;i++) - { - binbuf_clear(bbuf); - binbuf_add(bbuf, 1, argv++); - binbuf_gettext(bbuf, &a_string, &a_string_l); - memcpy(&buffer[k],a_string,a_string_l) ; - freebytes(a_string,a_string_l); - k+=a_string_l ; - } - buffer[k]=0; - outlet_symbol(x->x_obj.ob_outlet,gensym(&buffer[0])); - binbuf_free(bbuf); -} - -void a2s_free(void) { } - -t_class *a2s_class; - -void *a2s_new(void) -{ - t_pd_obj_a2s *x = (t_pd_obj_a2s *)pd_new(a2s_class); - outlet_new(&x->x_obj, &s_float); - return (void *)x; -} - -void a2s_setup(void) -{ - a2s_class = class_new(gensym("a2s"), (t_newmethod)a2s_new,(t_method)a2s_free, sizeof( t_pd_obj_a2s), 0,A_DEFSYMBOL, 0); - class_addlist(a2s_class, (t_method)a2s_list); - class_addmethod(a2s_class, (t_method)a2s_help, gensym("help"), 0); - class_sethelpsymbol(a2s_class, gensym("xgui/help_a2s")); -} diff --git a/extensions/xgui/xgui-lib/concat.c b/extensions/xgui/xgui-lib/concat.c deleted file mode 100644 index 59a7098693e2290b8cdbb6294e6f7fb6ed5ea819..0000000000000000000000000000000000000000 --- a/extensions/xgui/xgui-lib/concat.c +++ /dev/null @@ -1,68 +0,0 @@ -/* Copyright (c) 2002 Damien HENRY. -* For information on usage and redistribution, and for a DISCLAIMER OF ALL -* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */ - -/* code for concat pd class */ - -#include "m_pd.h" -#include <string.h> - -typedef struct s_pd_obj_concat -{ - t_object x_obj; - t_symbol *selector ; -} t_pd_obj_concat; - - -void concat_help(t_pd_obj_concat *x) -{ - post(" "); - post("concat v001"); - post("+ selector list :"); - post("++ help : this help !!!"); - post("++ anything : will return anything + the $arg1 in first "); -} - -void concat_any_method(t_pd_obj_concat *x,t_symbol *s, int argc, t_atom *argv) -{ - int n = argc+1; - if ((s==gensym("float"))||(s==gensym("symbol"))||(s==gensym("list"))) - { - outlet_anything(x->x_obj.ob_outlet,x->selector, argc,argv); - } else { - t_atom *my_message = (t_atom *)getbytes(n * sizeof(t_atom)); - SETSYMBOL(my_message, s); - my_message++; - memcpy(my_message, argv, argc * sizeof(t_atom)); - outlet_anything(x->x_obj.ob_outlet,x->selector, n,--my_message); - freebytes(my_message, n * sizeof(t_atom)); - } -} - -void concat_set2add(t_pd_obj_concat *x, t_symbol *s) -{ - x->selector = s ; -} - -void concat_free(void) { } - -t_class *concat_class; - -void *concat_new(t_symbol *s) -{ - t_pd_obj_concat *x = (t_pd_obj_concat *)pd_new(concat_class); - x->selector = s; - outlet_new(&x->x_obj, &s_float); - inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("symbol"), gensym("s2add")); - return (void *)x; -} - -void concat_setup(void) -{ - concat_class = class_new(gensym("concat"), (t_newmethod)concat_new,(t_method)concat_free, sizeof( t_pd_obj_concat), 0,A_DEFSYMBOL, 0); - class_addanything(concat_class, concat_any_method); - class_addmethod(concat_class, (t_method)concat_set2add, gensym("s2add"), A_SYMBOL, 0); - class_addmethod(concat_class, (t_method)concat_help, gensym("help"), 0); - class_sethelpsymbol(concat_class, gensym("xgui/help_concat")); -} - diff --git a/extensions/xgui/xgui-lib/help_number.pd b/extensions/xgui/xgui-lib/help_number.pd deleted file mode 100644 index 019515107037f663fc1ef30cc4003d17b42b4438..0000000000000000000000000000000000000000 --- a/extensions/xgui/xgui-lib/help_number.pd +++ /dev/null @@ -1,60 +0,0 @@ -#N canvas 125 117 754 468 10; -#X floatatom 35 99 5 0 0; -#X msg 35 76 bang; -#X msg 124 94 mult 2 \, bang; -#X msg 124 140 sub 1 \, bang; -#X msg 124 163 div 2 \, bang; -#X msg 124 117 inv \, bang; -#X msg 124 71 add 1 \, bang; -#X msg 240 63 add 1 \, if >= 10 0 \, bang; -#X msg 241 123 \$1 \, if < 0 0 \, if >= 10 10 \, bang; -#X floatatom 241 100 5 0 0; -#X msg 35 30 help; -#X floatatom 124 25 5 0 0; -#X msg 124 48 !x \$1 \, ?x; -#X floatatom 422 151 5 0 0; -#X floatatom 70 327 5 0 0; -#X msg 70 350 !x \$1 \, ?x; -#X msg 143 331 bang; -#X obj 35 216 number my_first_number; -#X msg 210 302 set my_first_number; -#X obj 70 373 number my_second_number; -#X msg 210 325 get my_first_number \, bang; -#X floatatom 422 220 5 0 0; -#X obj 35 240 print; -#X obj 422 197 x my_first_number; -#X msg 35 53 post; -#X msg 643 211 bound 0; -#X obj 70 396 print; -#X msg 422 174 \$1 \, bang; -#X msg 575 166 subspace 0 1 100 10; -#X msg 646 237 bound 1 10; -#X msg 181 26 bound 1 10; -#X connect 0 0 17 0; -#X connect 1 0 17 0; -#X connect 2 0 17 0; -#X connect 3 0 17 0; -#X connect 4 0 17 0; -#X connect 5 0 17 0; -#X connect 6 0 17 0; -#X connect 7 0 17 0; -#X connect 8 0 17 0; -#X connect 9 0 8 0; -#X connect 10 0 17 0; -#X connect 11 0 12 0; -#X connect 12 0 17 0; -#X connect 13 0 27 0; -#X connect 14 0 15 0; -#X connect 15 0 19 0; -#X connect 16 0 19 0; -#X connect 17 0 22 0; -#X connect 18 0 19 0; -#X connect 19 0 26 0; -#X connect 20 0 19 0; -#X connect 23 0 21 0; -#X connect 24 0 17 0; -#X connect 25 0 23 0; -#X connect 27 0 23 0; -#X connect 28 0 23 0; -#X connect 29 0 23 0; -#X connect 30 0 17 0; diff --git a/extensions/xgui/xgui-lib/m_pd.h b/extensions/xgui/xgui-lib/m_pd.h deleted file mode 100644 index bbbb491a31676958eb6989b177fdf44777ee56ec..0000000000000000000000000000000000000000 --- a/extensions/xgui/xgui-lib/m_pd.h +++ /dev/null @@ -1,579 +0,0 @@ -/* Copyright (c) 1997-1999 Miller Puckette. -* For information on usage and redistribution, and for a DISCLAIMER OF ALL -* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */ - -#if defined(_LANGUAGE_C_PLUS_PLUS) || defined(__cplusplus) -extern "C" { -#endif - -#ifdef NT -// #pragma warning( disable : 4091 ) -#pragma warning( disable : 4305 ) /* uncast const double to float */ -#pragma warning( disable : 4244 ) /* uncast float/int conversion etc. */ -#pragma warning( disable : 4101 ) /* unused automatic variables */ -#endif /* NT */ - - /* the external storage class is "extern" in UNIX; in NT it's ugly. */ -#ifdef NT -#ifdef PD_INTERNAL -#define EXTERN __declspec(dllexport) extern -#else -#define EXTERN __declspec(dllimport) extern -#endif /* PD_INTERNAL */ -#else -#define EXTERN extern -#endif /* NT */ - - /* and depending on the compiler, hidden data structures are - declared differently: */ -#ifdef __GNUC__ -#define EXTERN_STRUCT struct -#else -#define EXTERN_STRUCT extern struct -#endif - - -#if !defined(_SIZE_T) && !defined(_SIZE_T_) -#include <stddef.h> /* just for size_t -- how lame! */ -#endif - -#define MAXPDSTRING 1000 /* use this for anything you want */ -#define MAXPDARG 5 /* max number of args we can typecheck today */ - - /* signed and unsigned integer types the size of a pointer: */ -#ifdef __alpha__ -typedef long t_int; -#else -typedef int t_int; -#endif - -typedef float t_float; /* a floating-point number at most the same size */ -typedef float t_floatarg; /* floating-point type for function calls */ - -typedef struct _symbol -{ - char *s_name; - struct _class **s_thing; - struct _symbol *s_next; -} t_symbol; - -EXTERN_STRUCT _array; -#define t_array struct _array /* g_canvas.h */ - -/* pointers to glist and array elements go through a "stub" which sticks -around after the glist or array is freed. The stub itself is deleted when -both the glist/array is gone and the refcount is zero, ensuring that no -gpointers are pointing here. */ - -#define GP_NONE 0 /* the stub points nowhere (has been cut off) */ -#define GP_GLIST 1 /* the stub points to a glist element */ -#define GP_ARRAY 2 /* ... or array */ - -typedef struct _gstub -{ - union - { - struct _glist *gs_glist; /* glist we're in */ - struct _array *gs_array; /* array we're in */ - } gs_un; - int gs_which; /* GP_GLIST/GP_ARRAY */ - int gs_refcount; /* number of gpointers pointing here */ -} t_gstub; - -typedef struct _gpointer /* pointer to a gobj in a glist */ -{ - union - { - struct _scalar *gp_scalar; /* scalar we're in (if glist) */ - union word *gp_w; /* raw data (if array) */ - } gp_un; - int gp_valid; /* number which must match gpointee */ - t_gstub *gp_stub; /* stub which points to glist/array */ -} t_gpointer; - -typedef union word -{ - t_float w_float; - t_symbol *w_symbol; - t_gpointer *w_gpointer; - t_array *w_array; - struct _glist *w_list; - int w_index; -} t_word; - -typedef enum -{ - A_NULL, - A_FLOAT, - A_SYMBOL, - A_POINTER, - A_SEMI, - A_COMMA, - A_DEFFLOAT, - A_DEFSYM, - A_DOLLAR, - A_DOLLSYM, - A_GIMME, - A_CANT -} t_atomtype; - -#define A_DEFSYMBOL A_DEFSYM /* better name for this */ - -typedef struct _atom -{ - t_atomtype a_type; - union word a_w; -} t_atom; - -EXTERN_STRUCT _class; -#define t_class struct _class - -EXTERN_STRUCT _outlet; -#define t_outlet struct _outlet - -EXTERN_STRUCT _inlet; -#define t_inlet struct _inlet - -EXTERN_STRUCT _binbuf; -#define t_binbuf struct _binbuf - -EXTERN_STRUCT _clock; -#define t_clock struct _clock - -EXTERN_STRUCT _outconnect; -#define t_outconnect struct _outconnect - -EXTERN_STRUCT _glist; -#define t_glist struct _glist -#define t_canvas struct _glist /* LATER lose this */ - -typedef t_class *t_pd; /* pure datum: nothing but a class pointer */ - -typedef struct _gobj /* a graphical object */ -{ - t_pd g_pd; /* pure datum header (class) */ - struct _gobj *g_next; /* next in list */ -} t_gobj; - -typedef struct _scalar /* a graphical object holding data */ -{ - t_gobj sc_gobj; /* header for graphical object */ - t_symbol *sc_template; /* template name (LATER replace with pointer) */ - t_word sc_vec[1]; /* indeterminate-length array of words */ -} t_scalar; - -typedef struct _text /* patchable object - graphical, with text */ -{ - t_gobj te_g; /* header for graphical object */ - t_binbuf *te_binbuf; /* holder for the text */ - t_outlet *te_outlet; /* linked list of outlets */ - t_inlet *te_inlet; /* linked list of inlets */ - short te_xpix; /* x&y location (within the toplevel) */ - short te_ypix; - short te_width; /* requested width in chars, 0 if auto */ - unsigned int te_type:2; /* from defs below */ -} t_text; - -#define T_TEXT 0 /* just a textual comment */ -#define T_OBJECT 1 /* a MAX style patchable object */ -#define T_MESSAGE 2 /* a MAX stype message */ -#define T_ATOM 3 /* a cell to display a number or symbol */ - -#define te_pd te_g.g_pd - - /* t_object is synonym for t_text (LATER unify them) */ - -typedef struct _text t_object; - -#define ob_outlet te_outlet -#define ob_inlet te_inlet -#define ob_binbuf te_binbuf -#define ob_pd te_g.g_pd -#define ob_g te_g - -typedef void (*t_method)(void); -typedef void *(*t_newmethod)( void); -typedef void (*t_gotfn)(void *x, ...); - -/* ---------------- pre-defined objects and symbols --------------*/ -EXTERN t_pd pd_objectmaker; /* factory for creating "object" boxes */ -EXTERN t_pd pd_canvasmaker; /* factory for creating canvases */ -EXTERN t_symbol s_pointer; -EXTERN t_symbol s_float; -EXTERN t_symbol s_symbol; -EXTERN t_symbol s_bang; -EXTERN t_symbol s_list; -EXTERN t_symbol s_anything; -EXTERN t_symbol s_signal; -EXTERN t_symbol s__N; -EXTERN t_symbol s__X; -EXTERN t_symbol s_x; -EXTERN t_symbol s_y; -EXTERN t_symbol s_; - -/* --------- prototypes from the central message system ----------- */ -EXTERN void pd_typedmess(t_pd *x, t_symbol *s, int argc, t_atom *argv); -EXTERN void pd_forwardmess(t_pd *x, int argc, t_atom *argv); -EXTERN t_symbol *gensym(char *s); -EXTERN t_gotfn getfn(t_pd *x, t_symbol *s); -EXTERN t_gotfn zgetfn(t_pd *x, t_symbol *s); -EXTERN void nullfn(void); -EXTERN void pd_vmess(t_pd *x, t_symbol *s, char *fmt, ...); -#define mess0(x, s) ((*getfn((x), (s)))((x))) -#define mess1(x, s, a) ((*getfn((x), (s)))((x), (a))) -#define mess2(x, s, a,b) ((*getfn((x), (s)))((x), (a),(b))) -#define mess3(x, s, a,b,c) ((*getfn((x), (s)))((x), (a),(b),(c))) -#define mess4(x, s, a,b,c,d) ((*getfn((x), (s)))((x), (a),(b),(c),(d))) -#define mess5(x, s, a,b,c,d,e) ((*getfn((x), (s)))((x), (a),(b),(c),(d),(e))) -void obj_list(t_object *x, t_symbol *s, int argc, t_atom *argv); - -/* --------------- memory management -------------------- */ -EXTERN void *getbytes(size_t nbytes); -EXTERN void *getzbytes(size_t nbytes); -EXTERN void *copybytes(void *src, size_t nbytes); -EXTERN void freebytes(void *x, size_t nbytes); -EXTERN void *resizebytes(void *x, size_t oldsize, size_t newsize); - -/* -------------------- atoms ----------------------------- */ - -#define SETSEMI(atom) ((atom)->a_type = A_SEMI, (atom)->a_w.w_index = 0) -#define SETCOMMA(atom) ((atom)->a_type = A_COMMA, (atom)->a_w.w_index = 0) -#define SETPOINTER(atom, gp) ((atom)->a_type = A_POINTER, \ - (atom)->a_w.w_gpointer = (gp)) -#define SETFLOAT(atom, f) ((atom)->a_type = A_FLOAT, (atom)->a_w.w_float = (f)) -#define SETSYMBOL(atom, s) ((atom)->a_type = A_SYMBOL, \ - (atom)->a_w.w_symbol = (s)) -#define SETDOLLAR(atom, n) ((atom)->a_type = A_DOLLAR, \ - (atom)->a_w.w_index = (n)) -#define SETDOLLSYM(atom, s) ((atom)->a_type = A_DOLLSYM, \ - (atom)->a_w.w_symbol= (s)) - -EXTERN t_float atom_getfloat(t_atom *a); -EXTERN t_int atom_getint(t_atom *a); -EXTERN t_symbol *atom_getsymbol(t_atom *a); -EXTERN t_symbol *atom_gensym(t_atom *a); -EXTERN t_float atom_getfloatarg(int which, int argc, t_atom *argv); -EXTERN t_int atom_getintarg(int which, int argc, t_atom *argv); -EXTERN t_symbol *atom_getsymbolarg(int which, int argc, t_atom *argv); - -EXTERN void atom_string(t_atom *a, char *buf, unsigned int bufsize); - -/* ------------------ binbufs --------------- */ - -EXTERN t_binbuf *binbuf_new(void); -EXTERN void binbuf_free(t_binbuf *x); - -EXTERN void binbuf_text(t_binbuf *x, char *text, size_t size); -EXTERN void binbuf_gettext(t_binbuf *x, char **bufp, int *lengthp); -EXTERN void binbuf_clear(t_binbuf *x); -EXTERN void binbuf_add(t_binbuf *x, int argc, t_atom *argv); -EXTERN void binbuf_addv(t_binbuf *x, char *fmt, ...); -EXTERN void binbuf_addbinbuf(t_binbuf *x, t_binbuf *y); -EXTERN void binbuf_addsemi(t_binbuf *x); -EXTERN void binbuf_restore(t_binbuf *x, int argc, t_atom *argv); -EXTERN void binbuf_print(t_binbuf *x); -EXTERN int binbuf_getnatom(t_binbuf *x); -EXTERN t_atom *binbuf_getvec(t_binbuf *x); -EXTERN void binbuf_eval(t_binbuf *x, t_pd *target, int argc, t_atom *argv); -EXTERN int binbuf_read(t_binbuf *b, char *filename, char *dirname, - int crflag); -EXTERN int binbuf_read_via_path(t_binbuf *b, char *filename, char *dirname, - int crflag); -EXTERN int binbuf_write(t_binbuf *x, char *filename, char *dir, - int crflag); -EXTERN void binbuf_evalfile(t_symbol *name, t_symbol *dir); - -/* ------------------ clocks --------------- */ - -EXTERN t_clock *clock_new(void *owner, t_method fn); -EXTERN void clock_set(t_clock *x, double systime); -EXTERN void clock_delay(t_clock *x, double delaytime); -EXTERN void clock_unset(t_clock *x); -EXTERN double clock_getlogicaltime(void); -EXTERN double clock_getsystime(void); /* OBSOLETE; use clock_getlogicaltime() */ -EXTERN double clock_gettimesince(double prevsystime); -EXTERN double clock_getsystimeafter(double delaytime); -EXTERN void clock_free(t_clock *x); - -/* ----------------- pure data ---------------- */ -EXTERN t_pd *pd_new(t_class *cls); -EXTERN void pd_free(t_pd *x); -EXTERN void pd_bind(t_pd *x, t_symbol *s); -EXTERN void pd_unbind(t_pd *x, t_symbol *s); -EXTERN t_pd *pd_findbyclass(t_symbol *s, t_class *c); -EXTERN void pd_pushsym(t_pd *x); -EXTERN void pd_popsym(t_pd *x); -EXTERN t_symbol *pd_getfilename(void); -EXTERN t_symbol *pd_getdirname(void); -EXTERN void pd_bang(t_pd *x); -EXTERN void pd_pointer(t_pd *x, t_gpointer *gp); -EXTERN void pd_float(t_pd *x, t_float f); -EXTERN void pd_symbol(t_pd *x, t_symbol *s); -EXTERN void pd_list(t_pd *x, t_symbol *s, int argc, t_atom *argv); -EXTERN void pd_anything(t_pd *x, t_symbol *s, int argc, t_atom *argv); -#define pd_class(x) (*(x)) - -/* ----------------- pointers ---------------- */ -EXTERN void gpointer_init(t_gpointer *gp); -EXTERN void gpointer_copy(const t_gpointer *gpfrom, t_gpointer *gpto); -EXTERN void gpointer_unset(t_gpointer *gp); -EXTERN int gpointer_check(const t_gpointer *gp, int headok); - -/* ----------------- patchable "objects" -------------- */ -EXTERN_STRUCT _inlet; -#define t_inlet struct _inlet -EXTERN_STRUCT _outlet; -#define t_outlet struct _outlet - -EXTERN t_inlet *inlet_new(t_object *owner, t_pd *dest, t_symbol *s1, - t_symbol *s2); -EXTERN t_inlet *pointerinlet_new(t_object *owner, t_gpointer *gp); -EXTERN t_inlet *floatinlet_new(t_object *owner, t_float *fp); -EXTERN t_inlet *symbolinlet_new(t_object *owner, t_symbol **sp); -EXTERN void inlet_free(t_inlet *x); - -EXTERN t_outlet *outlet_new(t_object *owner, t_symbol *s); -EXTERN void outlet_bang(t_outlet *x); -EXTERN void outlet_pointer(t_outlet *x, t_gpointer *gp); -EXTERN void outlet_float(t_outlet *x, t_float f); -EXTERN void outlet_symbol(t_outlet *x, t_symbol *s); -EXTERN void outlet_list(t_outlet *x, t_symbol *s, int argc, t_atom *argv); -EXTERN void outlet_anything(t_outlet *x, t_symbol *s, int argc, t_atom *argv); -EXTERN void outlet_free(t_outlet *x); - -/* -------------------- canvases -------------- */ - -EXTERN void glob_setfilename(void *dummy, t_symbol *name, t_symbol *dir); - -EXTERN void canvas_setargs(int argc, t_atom *argv); -EXTERN t_atom *canvas_getarg(int which); -EXTERN t_symbol *canvas_getcurrentdir(void); -EXTERN t_glist *canvas_getcurrent(void); -EXTERN void canvas_makefilename(t_glist *c, char *file, - char *result,int resultsize); -EXTERN t_symbol *canvas_getdir(t_glist *x); -EXTERN int sys_fontwidth(int fontsize); -EXTERN int sys_fontheight(int fontsize); -EXTERN void canvas_dataproperties(t_glist *x, t_scalar *sc, t_binbuf *b); - -/* ---------------- widget behaviors ---------------------- */ - -EXTERN_STRUCT _widgetbehavior; -#define t_widgetbehavior struct _widgetbehavior - -EXTERN_STRUCT _parentwidgetbehavior; -#define t_parentwidgetbehavior struct _parentwidgetbehavior -EXTERN t_parentwidgetbehavior *pd_getparentwidget(t_pd *x); - -/* -------------------- classes -------------- */ - -#define CLASS_DEFAULT 0 /* flags for new classes below */ -#define CLASS_PD 1 -#define CLASS_GOBJ 2 -#define CLASS_PATCHABLE 3 -#define CLASS_NOINLET 8 - -#define CLASS_TYPEMASK 3 - - -EXTERN t_class *class_new(t_symbol *name, t_newmethod newmethod, - t_method freemethod, size_t size, int flags, t_atomtype arg1, ...); -EXTERN void class_addcreator(t_newmethod newmethod, t_symbol *s, - t_atomtype type1, ...); -EXTERN void class_addmethod(t_class *c, t_method fn, t_symbol *sel, - t_atomtype arg1, ...); -EXTERN void class_addbang(t_class *c, t_method fn); -EXTERN void class_addpointer(t_class *c, t_method fn); -EXTERN void class_doaddfloat(t_class *c, t_method fn); -EXTERN void class_addsymbol(t_class *c, t_method fn); -EXTERN void class_addlist(t_class *c, t_method fn); -EXTERN void class_addanything(t_class *c, t_method fn); -EXTERN void class_sethelpsymbol(t_class *c, t_symbol *s); -EXTERN void class_setwidget(t_class *c, t_widgetbehavior *w); -EXTERN void class_setparentwidget(t_class *c, t_parentwidgetbehavior *w); -EXTERN t_parentwidgetbehavior *class_parentwidget(t_class *c); -EXTERN char *class_getname(t_class *c); -EXTERN char *class_gethelpname(t_class *c); -EXTERN void class_setdrawcommand(t_class *c); -EXTERN int class_isdrawcommand(t_class *c); -EXTERN void class_domainsignalin(t_class *c, int onset); -#define CLASS_MAINSIGNALIN(c, type, field) \ - class_domainsignalin(c, (char *)(&((type *)0)->field) - (char *)0) - -#ifndef PD_CLASS_DEF -#define class_addbang(x, y) class_addbang((x), (t_method)(y)) -#define class_addpointer(x, y) class_addpointer((x), (t_method)(y)) -#define class_addfloat(x, y) class_doaddfloat((x), (t_method)(y)) -#define class_addsymbol(x, y) class_addsymbol((x), (t_method)(y)) -#define class_addlist(x, y) class_addlist((x), (t_method)(y)) -#define class_addanything(x, y) class_addanything((x), (t_method)(y)) -#endif - -/* ------------ printing --------------------------------- */ -EXTERN void post(char *fmt, ...); -EXTERN void startpost(char *fmt, ...); -EXTERN void poststring(char *s); -EXTERN void postfloat(float f); -EXTERN void postatom(int argc, t_atom *argv); -EXTERN void endpost(void); -EXTERN void error(char *fmt, ...); -EXTERN void bug(char *fmt, ...); -EXTERN void pd_error(void *object, char *fmt, ...); -EXTERN void sys_logerror(char *object, char *s); -EXTERN void sys_unixerror(char *object); -EXTERN void sys_ouch(void); - -#ifdef __linux__ -EXTERN char* sys_get_path( void); -#endif -EXTERN void sys_addpath(const char* p); - - -/* ------------ system interface routines ------------------- */ -EXTERN int sys_isreadablefile(const char *name); -EXTERN void sys_bashfilename(const char *from, char *to); -EXTERN void sys_unbashfilename(const char *from, char *to); -EXTERN int open_via_path(const char *name, const char *ext, const char *dir, - char *dirresult, char **nameresult, unsigned int size, int bin); - -/* --------------- signals ----------------------------------- */ - -typedef float t_sample; -#define MAXLOGSIG 32 -#define MAXSIGSIZE (1 << MAXLOGSIG) - -typedef struct _signal -{ - int s_n; /* number of points in the array */ - t_sample *s_vec; /* the array */ - float s_sr; /* sample rate */ - int s_refcount; /* number of times used */ - int s_isborrowed; /* whether we're going to borrow our array */ - struct _signal *s_borrowedfrom; /* signal to borrow it from */ - struct _signal *s_nextfree; /* next in freelist */ - struct _signal *s_nextused; /* next in used list */ -} t_signal; - - -typedef t_int *(*t_perfroutine)(t_int *args); - -EXTERN t_int *plus_perform(t_int *args); -EXTERN t_int *zero_perform(t_int *args); -EXTERN t_int *copy_perform(t_int *args); - -EXTERN void dsp_add_plus(t_sample *in1, t_sample *in2, t_sample *out, int n); -EXTERN void dsp_add_copy(t_sample *in, t_sample *out, int n); -EXTERN void dsp_add_scalarcopy(t_sample *in, t_sample *out, int n); -EXTERN void dsp_add_zero(t_sample *out, int n); - -EXTERN int sys_getblksize(void); -EXTERN float sys_getsr(void); -EXTERN int sys_get_inchannels(void); -EXTERN int sys_get_outchannels(void); - -EXTERN void dsp_add(t_perfroutine f, int n, ...); -EXTERN void dsp_addv(t_perfroutine f, int n, t_int *vec); -EXTERN void pd_fft(float *buf, int npoints, int inverse); -EXTERN int ilog2(int n); - -EXTERN void mayer_fht(float *fz, int n); -EXTERN void mayer_fft(int n, float *real, float *imag); -EXTERN void mayer_ifft(int n, float *real, float *imag); -EXTERN void mayer_realfft(int n, float *real); -EXTERN void mayer_realifft(int n, float *real); - -EXTERN float *cos_table; -#define LOGCOSTABSIZE 9 -#define COSTABSIZE (1<<LOGCOSTABSIZE) - -EXTERN int canvas_suspend_dsp(void); -EXTERN void canvas_resume_dsp(int oldstate); -EXTERN void canvas_update_dsp(void); - -/* IOhannes { (up/downsampling) */ -typedef struct _resample -{ - int method; /* up/downsampling method ID */ - - t_int downsample; /* downsampling factor */ - t_int upsample; /* upsampling factor */ - - t_float *s_vec; /* here we hold the resampled data */ - int s_n; - - t_float *coeffs; /* coefficients for filtering... */ - int coefsize; - - t_float *buffer; /* buffer for filtering */ - int bufsize; -} t_resample; - -EXTERN void resample_init(t_resample *x); -EXTERN void resample_free(t_resample *x); - -EXTERN void resample_dsp(t_resample *x, t_sample *in, int insize, t_sample *out, int outsize, int method); -EXTERN void resamplefrom_dsp(t_resample *x, t_sample *in, int insize, int outsize, int method); -EXTERN void resampleto_dsp(t_resample *x, t_sample *out, int insize, int outsize, int method); -/* } IOhannes */ - -/* ----------------------- utility functions for signals -------------- */ -EXTERN float mtof(float); -EXTERN float ftom(float); -EXTERN float rmstodb(float); -EXTERN float powtodb(float); -EXTERN float dbtorms(float); -EXTERN float dbtopow(float); - -EXTERN float q8_sqrt(float); -EXTERN float q8_rsqrt(float); -#ifndef N32 -EXTERN float qsqrt(float); /* old names kept for extern compatibility */ -EXTERN float qrsqrt(float); -#endif -/* --------------------- data --------------------------------- */ - - /* graphical arrays */ -EXTERN_STRUCT _garray; -#define t_garray struct _garray - -EXTERN t_class *garray_class; -EXTERN int garray_getfloatarray(t_garray *x, int *size, t_float **vec); -EXTERN float garray_get(t_garray *x, t_symbol *s, t_int indx); -EXTERN void garray_redraw(t_garray *x); -EXTERN int garray_npoints(t_garray *x); -EXTERN char *garray_vec(t_garray *x); -EXTERN void garray_resize(t_garray *x, t_floatarg f); -EXTERN void garray_usedindsp(t_garray *x); -EXTERN void garray_setsaveit(t_garray *x, int saveit); -EXTERN t_class *scalar_class; - -EXTERN t_float *value_get(t_symbol *s); -EXTERN void value_release(t_symbol *s); - -/* ------- GUI interface - functions to send strings to TK --------- */ -EXTERN void sys_vgui(char *fmt, ...); -EXTERN void sys_gui(char *s); - -EXTERN void gfxstub_new(t_pd *owner, void *key, const char *cmd); -EXTERN void gfxstub_deleteforkey(void *key); - -/*------------- Max 0.26 compatibility --------------------*/ - -/* the following reflects the new way classes are laid out, with the class - pointing to the messlist and not vice versa. Externs shouldn't feel it. */ -typedef t_class *t_externclass; - -EXTERN void c_extern(t_externclass *cls, t_newmethod newroutine, - t_method freeroutine, t_symbol *name, size_t size, int tiny, \ - t_atomtype arg1, ...); -EXTERN void c_addmess(t_method fn, t_symbol *sel, t_atomtype arg1, ...); - -#define t_getbytes getbytes -#define t_freebytes freebytes -#define t_resizebytes resizebytes -#define typedmess pd_typedmess -#define vmess pd_vmess - -#if defined(_LANGUAGE_C_PLUS_PLUS) || defined(__cplusplus) -} -#endif diff --git a/extensions/xgui/xgui-lib/makefile b/extensions/xgui/xgui-lib/makefile deleted file mode 100644 index 56b5000c5606a84f3d00fd40a4b166b08cf7e8ed..0000000000000000000000000000000000000000 --- a/extensions/xgui/xgui-lib/makefile +++ /dev/null @@ -1,86 +0,0 @@ -current: - echo make pd_linux, pd_nt, pd_irix5, or pd_irix6 - -clean: ; rm -f *.pd_linux *.o *.obj *.bak *.dll - -# ----------------------- NT ----------------------------- - -pd_nt: number.dll concat.dll oname2l.dll \ - a2s.dll recv2.dll send2.dll replace_selector.dll - -.SUFFIXES: .dll - -PDNTCFLAGS = /W3 /WX /DNT /DPD /nologo -VC="C:\Program Files\Microsoft Visual Studio\Vc98" - -PDNTINCLUDE = /I. /I\tcl\include /I\pds\pd35-9\src /I$(VC)\include - -PDNTLDIR = $(VC)\lib -PDNTLIB = $(PDNTLDIR)\libc.lib \ - $(PDNTLDIR)\oldnames.lib \ - $(PDNTLDIR)\kernel32.lib \ - \pds\pd35-9\bin\pd.lib - -.c.dll: - cl $(PDNTCFLAGS) $(PDNTINCLUDE) /c $*.c - link /dll /export:$*_setup $*.obj $(PDNTLIB) - del $*.obj - del $*.exp - del $*.lib - move /Y $*.dll ../../extra/ - -# ----------------------- IRIX 5.x ----------------------- - -pd_irix5: number.pd_irix5 concat.pd_irix5 oname2l.pd_irix5 \ - a2s.pd_irix5 recv2.pd_irix5 send2.pd_irix5 replace_selector.pd_irix5 - -.SUFFIXES: .pd_irix5 - -SGICFLAGS5 = -o32 -DPD -DUNIX -DIRIX -O2 - - -SGIINCLUDE = -I../../src/ - -.c.pd_irix5: - cc $(SGICFLAGS5) $(SGIINCLUDE) -o $*.o -c $*.c - ld -elf -shared -rdata_shared -o $*.pd_irix5 $*.o - rm $*.o - -# ----------------------- IRIX 6.x ----------------------- - -pd_irix6: number.pd_irix6 concat.pd_irix6 oname2l.pd_irix6 \ - a2s.pd_irix6 recv2.pd_irix6 send2.pd_irix6 replace_selector.pd_irix6 - -.SUFFIXES: .pd_irix6 - -SGICFLAGS6 = -n32 -DPD -DUNIX -DIRIX -DN32 -woff 1080,1064,1185 \ - -OPT:roundoff=3 -OPT:IEEE_arithmetic=3 -OPT:cray_ivdep=true \ - -Ofast=ip32 - -.c.pd_irix6: - cc $(SGICFLAGS6) $(SGIINCLUDE) -o $*.o -c $*.c - ld -IPA -n32 -shared -rdata_shared -o $*.pd_irix6 $*.o - rm $*.o - -# ----------------------- LINUX i386 ----------------------- - -pd_linux: number.pd_linux concat.pd_linux oname2l.pd_linux \ - a2s.pd_linux recv2.pd_linux send2.pd_linux replace_selector.pd_linux - -.SUFFIXES: .pd_linux - -LINUXCFLAGS = -DPD -O2 -funroll-loops -fomit-frame-pointer \ - -Wall -W -Wshadow -Wstrict-prototypes -Werror \ - -Wno-unused -Wno-parentheses -Wno-switch - -LINUXINCLUDE = -I../../src - -.c.pd_linux: - cc $(LINUXCFLAGS) $(LINUXINCLUDE) -o $*.o -c $*.c - ld -export_dynamic -shared -o $*.pd_linux $*.o -lc -lm - strip --strip-unneeded $*.pd_linux - rm $*.o - cp $*.pd_linux ../bin/ - mv $*.pd_linux ../../extra/ - - diff --git a/extensions/xgui/xgui-lib/message.c b/extensions/xgui/xgui-lib/message.c deleted file mode 100644 index 57edc16b184477203789a171983be9d3be3a3189..0000000000000000000000000000000000000000 --- a/extensions/xgui/xgui-lib/message.c +++ /dev/null @@ -1,116 +0,0 @@ -/* Copyright (c) 2002 Damien HENRY. -* For information on usage and redistribution, and for a DISCLAIMER OF ALL -* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */ - -/* message : NOT WORKING YET */ - - -/*#include "m_pd.h"*/ - -t_class *message_class ; -typedef struct s_message -{ t_pd o_pd; - int o_refcount; - t_message ??? o_message; -} t_message; - -t_class *pd_obj_message_class ; -typedef struct s_pd_obj_message -{ - t_object x_obj; - t_symbol *x_sym; - t_float *x_message; -} t_pd_obj_message; - -t_float *message_get(t_symbol *s) -{ t_message *num = (t_message *)pd_findbyclass(s,message_class); - if (!num) { - num = (t_message *)pd_new(message_class); - num->o_message = 0; - num->o_refcount = 0; - pd_bind(&num->o_pd, s); - } - num->o_refcount++; - return (&num->o_message); -} - -void message_release(t_symbol *s) -{ t_message *num = (t_message *)pd_findbyclass(s,message_class); - if (num) { - if (!--num->o_refcount) { - pd_unbind(&num->o_pd, s); - pd_free(&num->o_pd); - } - } - else bug("value_release"); -} - -void message_help(t_seg *x) -{ - post(" "); - post("message v001"); - post("+ symbol list :"); - post("++ help : this help !!!"); - post("++ float : set the float "); - post("++ bang : send the message"); - post(" "); -} - -void message_float(t_pd_obj_message *x, t_floatarg f) -{ *x->x_message = f ;} - -void message_q_x(t_pd_obj_message *x) -{ - t_atom my_atom ; - t_atom *my_pointer = &my_atom; - SETFLOAT(my_pointer, *x->x_message); - outlet_anything(x->x_obj.ob_outlet, gensym("x="), 1,my_pointer); -} - -void message_bang(t_pd_obj_message *x) -{ outlet_float(x->x_obj.ob_outlet, *x->x_message);} - -void message_get_(t_pd_obj_message *x,t_symbol *s) -{*x->x_message = *message_get(s);} - -void message_set_(t_pd_obj_message *x,t_symbol *s) -{ x->x_message = message_get(s);} - -void message_to(t_pd_obj_message *x,t_floatarg f1,t_floatarg f2) -{ post("not implemented yet"); } - -void message_free(t_pd_obj_message *x){ message_release(x->x_sym); } - -void *message_new(t_symbol *s,t_floatarg f) -{ - t_pd_obj_message *x = (t_pd_obj_message *)pd_new(pd_obj_message_class); - x->x_sym = s; - x->x_message = message_get(s); - outlet_new(&x->x_obj, &s_float); - return (void *)x; -} - -void message_setup(void) -{ - pd_obj_message_class = class_new(gensym("message"), (t_newmethod)message_new, - (t_method)message_free, sizeof(t_pd_obj_message), 0,A_DEFSYMBOL, 0); - class_addcreator((t_newmethod)message_new, gensym("x"), A_DEFSYM, 0); - class_addfloat(pd_obj_message_class,message_float); - class_addbang(pd_obj_message_class,message_bang); - class_addmethod(pd_obj_message_class, (t_method)message_float, gensym("!x"), A_FLOAT, 0); - class_addmethod(pd_obj_message_class, (t_method)message_q_x, gensym("?x"), 0); - class_addmethod(pd_obj_message_class, (t_method)message_add, gensym("add"),A_FLOAT, 0); - class_addmethod(pd_obj_message_class, (t_method)message_sub, gensym("sub"),A_FLOAT, 0); - class_addmethod(pd_obj_message_class, (t_method)message_mult, gensym("mult"),A_FLOAT, 0); - class_addmethod(pd_obj_message_class, (t_method)message_div, gensym("div"),A_FLOAT, 0); - class_addmethod(pd_obj_message_class, (t_method)message_inv, gensym("inv"),0); - class_addmethod(pd_obj_message_class, (t_method)message_if, gensym("if"),A_DEFSYMBOL,A_FLOAT,A_FLOAT,0); - class_addmethod(pd_obj_message_class, (t_method)message_to, gensym("to"),A_FLOAT,A_FLOAT, 0); - class_addmethod(pd_obj_message_class, (t_method)message_set_, gensym("set"),A_DEFSYMBOL, 0); - class_addmethod(pd_obj_message_class, (t_method)message_get_, gensym("get"),A_DEFSYMBOL, 0); - class_addmethod(pd_obj_message_class, (t_method)message_help, gensym("help"), 0); - class_sethelpsymbol(pd_obj_message_class, gensym("xgui/help_message")); - /* Declare the class that will contain the value */ - message_class = class_new(gensym("message"), 0, 0, sizeof(t_message), CLASS_PD, 0); - -} diff --git a/extensions/xgui/xgui-lib/number.c b/extensions/xgui/xgui-lib/number.c deleted file mode 100644 index f30d10daab9712d39312962fa3c491b174f8d7c5..0000000000000000000000000000000000000000 --- a/extensions/xgui/xgui-lib/number.c +++ /dev/null @@ -1,249 +0,0 @@ -/* Copyright (c) 2002 Damien HENRY. -* For information on usage and redistribution, and for a DISCLAIMER OF ALL -* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */ - -/* number NOT FINISHED BUT FUNCTIONAL*/ - -#include "m_pd.h" - -t_class *number_class ; -typedef struct s_number -{ - t_pd o_pd; - t_int o_refcount; - t_float number; - t_float b_min; - t_float b_max; - t_int bound; -} t_number; - -t_class *pd_obj_number_class ; -typedef struct s_pd_obj_number -{ - t_object x_obj; - t_symbol *x_sym; - t_number *x_num; - t_float *x_number; - t_float *b_min; - t_float *b_max; - t_int *bound; - t_float min; - t_float max; - t_float out_min; - t_float out_max; -} t_pd_obj_number; - -t_number *number_get(t_symbol *s) -{ - t_number *num = (t_number *)pd_findbyclass(s,number_class); - if (!num) { - num = (t_number *)pd_new(number_class); - num->number = 0; - num->bound = 0; - num->b_min = 0; - num->b_max = 0; - num->o_refcount = 0; - pd_bind(&num->o_pd, s); - } - num->o_refcount++; - return (num); -} - -void number_release(t_symbol *s) -{ t_number *num = (t_number *)pd_findbyclass(s,number_class); - if (num) { - if (!--num->o_refcount) { - pd_unbind(&num->o_pd, s); - pd_free(&num->o_pd); - } - } - else bug("value_release"); -} - -void number_check_bound(t_pd_obj_number *x) -{ - if (*x->bound != 0) - { - if (*x->x_number>*x->b_max) *x->x_number = *x->b_max ; - if (*x->x_number<*x->b_min) *x->x_number = *x->b_min ; - } -} - -void number_help(t_pd_obj_number *x) -{ - post(" "); - post("number v001"); - post("+ use : number $variable_name"); - post("+ symbol list :"); - post("+l+ help : this help !!!"); - post("+g+ float $f: set the value to $f "); - post("+l+ bang : send the number"); - post("+g+ !x $f : set the value to $f"); - post("+l+ ?x : ask for the value the number"); - post("+g+ if $condition $f1 $f2 : ex.: if => 10 0"); - post("+l+ do_if $condition $value $selector : ex.: do_if => 10 test"); - post("+g+ add,sub,mult,div,inv : do some basic calculation"); - post("+l+ get : get a value from another number"); - post("+l+ set : set the name of the number"); - post("+l+ subspace $internal1 $internal2 $external1 $external1"); - post("+gl?+ round $round_value"); - post("+g+ bound $min $max"); - post("+l+ post"); - post(" "); -} - -void number_post(t_pd_obj_number *x) -{ - startpost("%s",*x->x_sym); - postfloat(*x->x_number); - endpost(); -} - -void number_x_equal(t_pd_obj_number *x, t_floatarg f) -{ - *x->x_number = f ; - number_check_bound(x); -} -void number_q_x(t_pd_obj_number *x) -{ - t_atom my_atom ; - t_atom *my_pointer = &my_atom; - SETFLOAT(my_pointer, *x->x_number); - outlet_anything(x->x_obj.ob_outlet, gensym("x="), 1,my_pointer); -} - -void number_float(t_pd_obj_number *x, t_floatarg f) -{ - *x->x_number = (f - x->out_min)*(x->max-x->min)/(x->out_max-x->out_min)+x->min ; - number_check_bound(x); -} - -void number_bang(t_pd_obj_number *x) -{ t_float temp ; - temp = (*x->x_number-x->min)/(x->max-x->min)*(x->out_max-x->out_min)+x->out_min; - outlet_float(x->x_obj.ob_outlet,temp) ; -} - -void number_bound(t_pd_obj_number *x, t_floatarg fmin, t_floatarg fmax) -{ - *x->bound = 1 ; - *x->b_min = fmin; - *x->b_max = fmax; -} - -void number_add(t_pd_obj_number *x, t_floatarg f) -{ - *(x->x_number) += f ; - number_check_bound(x); -} - -void number_sub(t_pd_obj_number *x, t_floatarg f) -{ - *(x->x_number) -= f ; - number_check_bound(x); -} - -void number_mult(t_pd_obj_number *x, t_floatarg f) -{ - *(x->x_number) *= f ; - number_check_bound(x); -} - -void number_div(t_pd_obj_number *x, t_floatarg f) -{ - *(x->x_number) /= f ; - number_check_bound(x); -} - -void number_inv(t_pd_obj_number *x) -{ - *x->x_number = 1 / *(x->x_number) ; - number_check_bound(x); -} - -void number_subspace(t_pd_obj_number *x, t_floatarg f1, t_floatarg f2, t_floatarg f3, t_floatarg f4) -{ - if ((f1==f2)|(f3==f4)) - { - x->min = 0 ; x->max = 1 ; x->out_min = 0 ; x->out_max = 1 ; - post("%s ERROR wrong Subspace",*x->x_sym); - } - else - { - x->min = f1 ; x->max = f2 ; x->out_min = f3 ; x->out_max = f4 ; - } -} - -void number_if(t_pd_obj_number *x,t_symbol *s,t_floatarg f1,t_floatarg f2) -{ - if (s == gensym("==")) {if(*x->x_number == f1) *x->x_number = f2 ;} - if (s == gensym("!=")) {if(*x->x_number != f1) *x->x_number = f2 ;} - if (s == gensym(">")) {if(*x->x_number > f1) *x->x_number = f2 ;} - if (s == gensym(">=")) {if(*x->x_number >= f1) *x->x_number = f2 ;} - if (s == gensym("<")) {if(*x->x_number < f1) *x->x_number = f2 ;} - if (s == gensym("<=")) {if(*x->x_number <= f1) *x->x_number = f2 ;} -} - -void number_do_if(t_pd_obj_number *x,t_symbol *cond,t_floatarg f1,t_symbol *sel) -{ - t_atom my_atom ; - t_atom *my_pointer = &my_atom; - SETFLOAT(my_pointer, *x->x_number); - post("t1 %f",f1); - if (cond == gensym("==")) {if(*x->x_number == f1) outlet_anything(x->x_obj.ob_outlet, sel, 1,my_pointer);} - if (cond == gensym("!=")) {if(*x->x_number != f1) outlet_anything(x->x_obj.ob_outlet, sel, 1,my_pointer);} - if (cond == gensym(">")) {if(*x->x_number > f1) outlet_anything(x->x_obj.ob_outlet, sel, 1,my_pointer);} - if (cond == gensym(">=")) {if(*x->x_number >= f1) post("test %f",f1);} - if (cond == gensym("<")) {if(*x->x_number < f1) outlet_anything(x->x_obj.ob_outlet, sel, 1,my_pointer);} - if (cond == gensym("<=")) {if(*x->x_number <= f1) outlet_anything(x->x_obj.ob_outlet, sel, 1,my_pointer);} -} - -void number_get_(t_pd_obj_number *x,t_symbol *s) -{*x->x_num = *number_get(s);} - -void number_set_(t_pd_obj_number *x,t_symbol *s) -{ x->x_num = number_get(s);} - -void number_free(t_pd_obj_number *x){ number_release(x->x_sym); } - -void *number_new(t_symbol *s) -{ - t_pd_obj_number *x = (t_pd_obj_number *)pd_new(pd_obj_number_class); - x->x_sym = s; - x->x_num = number_get(s); - x->x_number=&(x->x_num->number) ; - x->min = 0 ; x->max = 1 ; x->out_min = 0 ; x->out_max = 1 ; - x->b_min =&x->x_num->b_min ; - x->b_max =&x->x_num->b_max ; - x->bound =&x->x_num->bound ; - outlet_new(&x->x_obj, &s_float); - return (void *)x; -} - -void number_setup(void) -{ - pd_obj_number_class = class_new(gensym("number"), (t_newmethod)number_new, - (t_method)number_free, sizeof(t_pd_obj_number), 0,A_DEFSYMBOL, 0); - class_addcreator((t_newmethod)number_new, gensym("x"), A_DEFSYM, 0); - class_addfloat(pd_obj_number_class,number_float); - class_addbang(pd_obj_number_class,number_bang); - class_addmethod(pd_obj_number_class, (t_method)number_x_equal, gensym("!x"), A_FLOAT, 0); - class_addmethod(pd_obj_number_class, (t_method)number_q_x, gensym("?x"), 0); - class_addmethod(pd_obj_number_class, (t_method)number_post, gensym("post"), 0); - class_addmethod(pd_obj_number_class, (t_method)number_add, gensym("add"),A_FLOAT, 0); - class_addmethod(pd_obj_number_class, (t_method)number_sub, gensym("sub"),A_FLOAT, 0); - class_addmethod(pd_obj_number_class, (t_method)number_mult, gensym("mult"),A_FLOAT, 0); - class_addmethod(pd_obj_number_class, (t_method)number_div, gensym("div"),A_FLOAT, 0); - class_addmethod(pd_obj_number_class, (t_method)number_inv, gensym("inv"),0); - class_addmethod(pd_obj_number_class, (t_method)number_if, gensym("if"),A_DEFSYMBOL,A_FLOAT,A_FLOAT,0); - class_addmethod(pd_obj_number_class, (t_method)number_set_, gensym("set"),A_DEFSYMBOL, 0); - class_addmethod(pd_obj_number_class, (t_method)number_get_, gensym("get"),A_DEFSYMBOL, 0); - class_addmethod(pd_obj_number_class, (t_method)number_do_if, gensym("do_if"),A_DEFSYMBOL,A_FLOAT,A_DEFSYMBOL,0); - class_addmethod(pd_obj_number_class, (t_method)number_subspace, gensym("subspace"),A_FLOAT,A_FLOAT,A_FLOAT,A_FLOAT, 0); - class_addmethod(pd_obj_number_class, (t_method)number_bound, gensym("bound"),A_FLOAT,A_FLOAT, 0); - class_addmethod(pd_obj_number_class, (t_method)number_help, gensym("help"), 0); - class_sethelpsymbol(pd_obj_number_class, gensym("xgui/help_number")); - /* Declare the class that will contain the value */ - number_class = class_new(gensym("number"), 0, 0, sizeof(t_number), CLASS_PD, 0); - -} diff --git a/extensions/xgui/xgui-lib/oname2l.c b/extensions/xgui/xgui-lib/oname2l.c deleted file mode 100644 index 1b46e8a3d0af7fd3ebf3bc89e3944fd00249c92e..0000000000000000000000000000000000000000 --- a/extensions/xgui/xgui-lib/oname2l.c +++ /dev/null @@ -1,73 +0,0 @@ -/* Copyright (c) 2002 Damien HENRY. -* For information on usage and redistribution, and for a DISCLAIMER OF ALL -* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */ - -/* oname2l */ - -#include "m_pd.h" -#include <string.h> - -typedef struct s_pd_obj_oname2l -{ - t_object x_obj; -} t_pd_obj_oname2l; - - -void oname2l_help(t_pd_obj_oname2l *x) -{ - post(" "); - post("oname2l v001"); - post("+ selector list :"); - post("++ help : this help !!!"); - post("++ symbol : will return a list of symbol"); - post(" "); -} - -void oname2l_symbol(t_pd_obj_oname2l *x,t_symbol *s) -{ - int i,j,l,n=1,k=0; - t_atom *my_message ; - char *s2split ; - t_symbol *a_symbol ; - t_atom *an_atom ; - for (l=0;s->s_name[l]!=0;l++) - { - if (s->s_name[l]=='/') {n++;} ; - } - s2split = (char *)getbytes(l+1) ; - memcpy(s2split, s->s_name, l+1) ; - my_message = (t_atom *)getbytes(n * sizeof(t_atom)); - an_atom = my_message ; - for (i=0;i<n;i++) - { - for (j=k;(s2split[j]!='/')&&(j<l);j++) {} ; - s2split[j]=0 ; - a_symbol = gensym(&(s2split[k])); - SETSYMBOL(an_atom,a_symbol); - an_atom++; - k=j+1; - } - outlet_anything(x->x_obj.ob_outlet,gensym("list"), n,my_message); - freebytes(my_message, n * sizeof(t_atom)); - freebytes(s2split, l ); -} - -void oname2l_free(void) { } - -t_class *oname2l_class; - -void *oname2l_new(void) -{ - t_pd_obj_oname2l *x = (t_pd_obj_oname2l *)pd_new(oname2l_class); - outlet_new(&x->x_obj, &s_float); - return (void *)x; -} - -void oname2l_setup(void) -{ - oname2l_class = class_new(gensym("oname2l"), (t_newmethod)oname2l_new,(t_method)oname2l_free, sizeof( t_pd_obj_oname2l), 0,A_DEFSYMBOL, 0); - class_addsymbol(oname2l_class, (t_method)oname2l_symbol); - class_addmethod(oname2l_class, (t_method)oname2l_help, gensym("help"), 0); - class_sethelpsymbol(oname2l_class, gensym("xgui/help_oname2l")); -} - diff --git a/extensions/xgui/xgui-lib/recv2.c b/extensions/xgui/xgui-lib/recv2.c deleted file mode 100644 index f49e374c63fa31a2799487ee16f25ef147d1ac45..0000000000000000000000000000000000000000 --- a/extensions/xgui/xgui-lib/recv2.c +++ /dev/null @@ -1,80 +0,0 @@ -/* Copyright (c) 2002 Damien HENRY. -* For information on usage and redistribution, and for a DISCLAIMER OF ALL -* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */ - -/* recv2 */ - -#include "m_pd.h" - -static t_class *recv2_class; - -typedef struct _recv2 -{ - t_object x_obj; - t_symbol *x_sym; -} t_recv2; - -static void recv2_bang(t_recv2 *x) -{ - outlet_bang(x->x_obj.ob_outlet); -} - -static void recv2_float(t_recv2 *x, t_float f) -{ - outlet_float(x->x_obj.ob_outlet, f); -} - -static void recv2_symbol(t_recv2 *x, t_symbol *s) -{ - outlet_symbol(x->x_obj.ob_outlet, s); -} - -static void recv2_pointer(t_recv2 *x, t_gpointer *gp) -{ - outlet_pointer(x->x_obj.ob_outlet, gp); -} - -static void recv2_list(t_recv2 *x, t_symbol *s, int argc, t_atom *argv) -{ - outlet_list(x->x_obj.ob_outlet, s, argc, argv); -} - -static void recv2_anything(t_recv2 *x, t_symbol *s, int argc, t_atom *argv) -{ - outlet_anything(x->x_obj.ob_outlet, s, argc, argv); -} - -static void recv2_set(t_recv2 *x, t_symbol *s) -{ - pd_unbind(&x->x_obj.ob_pd, x->x_sym); - x->x_sym = s; - pd_bind(&x->x_obj.ob_pd, s); -} - -static void *recv2_new(t_symbol *s) -{ - t_recv2 *x = (t_recv2 *)pd_new(recv2_class); - x->x_sym = s; - pd_bind(&x->x_obj.ob_pd, s); - outlet_new(&x->x_obj, 0); - return (x); -} - -static void recv2_free(t_recv2 *x) -{ - pd_unbind(&x->x_obj.ob_pd, x->x_sym); -} - -void recv2_setup(void) -{ - recv2_class = class_new(gensym("recv2"), (t_newmethod)recv2_new, - (t_method)recv2_free, sizeof(t_recv2), 0, A_DEFSYM, 0); - class_addbang(recv2_class, recv2_bang); - class_addfloat(recv2_class, (t_method)recv2_float); - class_addsymbol(recv2_class, recv2_symbol); - class_addpointer(recv2_class, recv2_pointer); - class_addlist(recv2_class, recv2_list); - class_addanything(recv2_class, recv2_anything); - class_addmethod(recv2_class, (t_method)recv2_set, gensym("@"),A_DEFSYMBOL, 0); - class_sethelpsymbol(recv2_class, gensym("xgui/help_recv2")); -} diff --git a/extensions/xgui/xgui-lib/replace_selector.c b/extensions/xgui/xgui-lib/replace_selector.c deleted file mode 100644 index 3c78aa6bafe4dcaa13718cd941128324629d05d1..0000000000000000000000000000000000000000 --- a/extensions/xgui/xgui-lib/replace_selector.c +++ /dev/null @@ -1,60 +0,0 @@ -/* Copyright (c) 2002 Damien HENRY. -* For information on usage and redistribution, and for a DISCLAIMER OF ALL -* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */ - -/* code for replace_selector pd class */ - -#include "m_pd.h" -#include <string.h> - -typedef struct s_pd_obj_replace_selector -{ - t_object x_obj; - t_symbol *selector ; -} t_pd_obj_replace_selector; - - -void replace_selector_help(t_pd_obj_replace_selector *x) -{ - post(" "); - post("replace_selector v001"); - post("+ selector list :"); - post("++ help : this help !!!"); - post("++ anything : will return anything with a diferent selector"); -} - -void replace_selector_any_method(t_pd_obj_replace_selector *x,t_symbol *s, int argc, t_atom *argv) -{ - t_atom *my_message = (t_atom *)getbytes(argc * sizeof(t_atom)); - memcpy(my_message, argv, argc * sizeof(t_atom)); - outlet_anything(x->x_obj.ob_outlet,x->selector, argc,my_message); - freebytes(my_message, argc * sizeof(t_atom)); -} - -void replace_selector_set2add(t_pd_obj_replace_selector *x, t_symbol *s) -{ - x->selector = s ; -} - -void replace_selector_free(void) { } - -t_class *replace_selector_class; - -void *replace_selector_new(t_symbol *s) -{ - t_pd_obj_replace_selector *x = (t_pd_obj_replace_selector *)pd_new(replace_selector_class); - x->selector = s; - outlet_new(&x->x_obj, &s_float); - inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("symbol"), gensym("s2add")); - return (void *)x; -} - -void replace_selector_setup(void) -{ - replace_selector_class = class_new(gensym("replace_selector"), (t_newmethod)replace_selector_new,(t_method)replace_selector_free, sizeof( t_pd_obj_replace_selector), 0,A_DEFSYMBOL, 0); - class_addanything(replace_selector_class, replace_selector_any_method); - class_addmethod(replace_selector_class, (t_method)replace_selector_set2add, gensym("s2add"), A_SYMBOL, 0); - class_addmethod(replace_selector_class, (t_method)replace_selector_help, gensym("help"), 0); - class_sethelpsymbol(replace_selector_class, gensym("xgui/help_replace_selector")); -} - diff --git a/extensions/xgui/xgui-lib/seg.c b/extensions/xgui/xgui-lib/seg.c deleted file mode 100644 index 586662c63796877f5b878cd2ee4bbb1ac55b5695..0000000000000000000000000000000000000000 --- a/extensions/xgui/xgui-lib/seg.c +++ /dev/null @@ -1,96 +0,0 @@ -/* Copyright (c) 2002 Damien HENRY. -* For information on usage and redistribution, and for a DISCLAIMER OF ALL -* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */ - -/* code for seg pd class NOT WORKING YET*/ - -#include "m_pd.h" -#include "g_canvas.h" - - -typedef struct s_pd_obj_seg -{ - t_object t_ob; - t_symbol *seg_name; - t_float *posx; - t_float *posy; - t_float *x1; - t_float *y1; - t_float *x2; - t_float *y2; - t_float *width; - t_symbol *color; -} t_seg; - -typedef struct s_seg -{ - t_object t_ob; - t_symbol* seg_name; - t_float posx; - t_float posy; - t_float x1; - t_float y1; - t_float x2; - t_float y2; - t_float width; - t_symbol color; -} t_seg; - -void seg_help(t_seg *x) -{ - post(" "); - post("seg v001"); - post("+ symbol list :"); - post("++ help : this help !!!"); - post(" "); -} - -void seg_width(t_seg *x, t_floatarg f) -{ - post("seg: width %f",f); - t_atom my_atom ; - t_atom *my_pointer = &my_atom; - SETFLOAT(my_pointer, *f); - outlet_anything(x->x_obj.ob_outlet, gensym("!width"), 1,my_pointer); -} - - -void seg_pos(t_seg *x, t_floatarg f1, t_floatarg f2) -{ - outlet_float(x->x_outlet1, (t_float)f1+(t_float)f2); -} - -void seg_free(void) -{ - post("seg_free"); -} - -t_class *seg_class; - -void *seg_new(void) -{ - t_seg *x = (t_seg *)pd_new(seg_class); - post("seg created"); - - sys_vgui(".x%x.c create oval 10 10 20 20\n",glist_getcanvas(glist), - x->x_obj.te_xpos+1,x->x_obj.te_ypos+1, - x->x_obj.te_xpos + x->x_width -1, - x->x_obj.te_ypos + x->x_height -1,x->x_color->s_name,x); - x->posx = 0; x->posy = 0; - x->x1 = 10; x->y1 = 10; - x->x1 = 20; x->y1 = 20; - x->x_outlet1 = outlet_new(&x->t_ob, &s_float); - - return (void *)x; -} - -void seg_setup(void) -{ - post("seg_setup"); - seg_class = class_new(gensym("seg"), (t_newmethod)seg_new,(t_method)seg_free, sizeof(t_seg), 0, A_GIMME, 0); - class_addmethod(seg_class, (t_method)seg_width, gensym("width"),A_FLOAT, 0); - class_addmethod(seg_class, (t_method)seg_pos, gensym("pos"),A_FLOAT,A_FLOAT, 0); - class_addmethod(seg_class, (t_method)seg_help, gensym("help"), 0); - class_sethelpsymbol(seg_class, gensym("xgui/help_seg")); -} - diff --git a/extensions/xgui/xgui-lib/send2.c b/extensions/xgui/xgui-lib/send2.c deleted file mode 100644 index a58b87c6b50a0aaaf3602d41bd71f26338a5f729..0000000000000000000000000000000000000000 --- a/extensions/xgui/xgui-lib/send2.c +++ /dev/null @@ -1,67 +0,0 @@ -/* Copyright (c) 2002 Damien HENRY. -* For information on usage and redistribution, and for a DISCLAIMER OF ALL -* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */ - -/* ------------------------ based on remote --------------------------------- */ -/* */ -/* Send data to receive obejct <name>. */ -/* Written by Olaf Matthes (olaf.matthes@gmx.de) */ - -#include "m_pd.h" - -/*dh : -#include <string.h> -#include <stdio.h> */ - -#define MAX_REC 64 /* maximum number of receive objects */ -#define MAX_ARG 32 /* maximum number of arguments to pass on */ - -static t_class *send2_class; - -/*dh: I've removed the static *char */ - -typedef struct _send2 -{ - t_object x_obj; -} t_send2; - - /* send 'anything' to receiver */ -static void send2_anything(t_send2 *x, t_symbol *s, int argc, t_atom *argv) -{ - int i; - t_atom av[MAX_ARG]; /* the 'new' t_atom without first element */ - t_int ac = argc - 1; /* the 'new' number of arguments */ - - if(argc < 1) /* need <name> <data> */ - { - post("send2: too few arguments!"); - return; - } - if(ac > MAX_ARG) - { - post("send2: too many arguments!"); - return; - } - - for(i = 1; i < argc; i++) - { - av[i - 1] = argv[i]; /* just copy, don't care about types */ - } - /* send only argument-part to receivers */ - if (s->s_thing) pd_forwardmess(s->s_thing, argc, argv); -} - -static void *send2_new(void) -{ - t_send2 *x = (t_send2 *)pd_new(send2_class); - /*dh: I've removed the post here */ - return (x); -} - -void send2_setup(void) -{ - send2_class = class_new(gensym("send2"), (t_newmethod)send2_new, 0, - sizeof(t_send2), 0, 0); - class_addanything(send2_class, send2_anything); - class_sethelpsymbol(send2_class, gensym("xgui/help_send2.pd")); -} diff --git a/extensions/xgui/xgui-lib/test_xgui_lib.pd b/extensions/xgui/xgui-lib/test_xgui_lib.pd deleted file mode 100644 index dc28085958f3d9992fbeeecd51bb21c7c81914d0..0000000000000000000000000000000000000000 --- a/extensions/xgui/xgui-lib/test_xgui_lib.pd +++ /dev/null @@ -1,134 +0,0 @@ -#N canvas 30 89 933 636 10; -#X obj 60 123 seg; -#X msg 92 114 width \$1; -#X floatatom 92 91 5 0 0; -#X obj 60 146 print seg; -#X msg 22 91 pos 11 13; -#X floatatom 29 58 5 0 0; -#X msg 128 233 help; -#X msg 89 10 pos 1 13; -#X floatatom 235 93 5 0 0; -#X msg 235 70 bang; -#X msg 324 88 mult 2 \, bang; -#X msg 324 134 sub 1 \, bang; -#X msg 324 157 div 2 \, bang; -#X msg 324 111 inv \, bang; -#X msg 324 65 add 1 \, bang; -#X msg 421 68 add 1 \, if >= 10 0 \, bang; -#X msg 422 128 \$1 \, if < 0 0 \, if >= 10 10 \, bang; -#X floatatom 422 105 5 0 0; -#X msg 235 24 help; -#X floatatom 324 19 5 0 0; -#X msg 324 42 !x \$1 \, ?x; -#X floatatom 422 151 5 0 0; -#X floatatom 425 266 5 0 0; -#X msg 425 289 !x \$1 \, ?x; -#X msg 498 270 bang; -#X obj 235 210 number my_first_number; -#X msg 565 241 set my_first_number; -#X obj 425 312 number my_second_number; -#X msg 565 264 get my_first_number \, bang; -#X floatatom 422 220 5 0 0; -#X msg 251 273 do_if => 10 ok; -#X obj 244 241 print; -#X obj 422 197 x my_first_number; -#X msg 235 47 post; -#X msg 643 211 bound 0; -#X obj 425 335 print; -#X msg 422 174 \$1 \, bang; -#X msg 575 166 subspace 0 1 100 10; -#X msg 564 202 bound 1 10; -#X msg 381 20 bound 1 10; -#X obj 41 351 concat test; -#X obj 40 381 print; -#X msg 33 274 1 2 3; -#X floatatom 93 257 5 0 0; -#X symbolatom 12 244 10 0 0; -#X msg 75 306 bonjour truc et bidule; -#X msg 148 274 symbol alors; -#X obj 485 538 oname2l; -#X obj 486 574 print on2l; -#X msg 540 537 help; -#X msg 485 510 symbol */test1/test2; -#X obj 308 540 a2s; -#X msg 308 518 list * / test / test; -#X obj 309 562 print a2s; -#X msg 306 492 list test 1 2 3; -#X obj 523 397 print; -#X obj 525 372 recv2 test; -#X obj 614 400 send test; -#X msg 617 371 foo; -#X msg 528 350 test?; -#X msg 586 336 @ truc; -#X msg 680 376 test; -#X obj 685 402 send truc; -#X msg 637 336 @ test; -#X msg 161 443 help; -#X obj 73 591 print; -#X msg 66 484 1 2 3; -#X floatatom 126 467 5 0 0; -#X symbolatom 45 454 10 0 0; -#X msg 108 516 bonjour truc et bidule; -#X msg 181 484 symbol alors; -#X obj 74 561 replace_selector test; -#X obj 799 411 send2; -#X msg 819 363 test 2; -#X msg 756 358 truc 1; -#X connect 2 0 1 0; -#X connect 6 0 40 0; -#X connect 8 0 25 0; -#X connect 9 0 25 0; -#X connect 10 0 25 0; -#X connect 11 0 25 0; -#X connect 12 0 25 0; -#X connect 13 0 25 0; -#X connect 14 0 25 0; -#X connect 15 0 25 0; -#X connect 16 0 25 0; -#X connect 17 0 16 0; -#X connect 18 0 25 0; -#X connect 19 0 20 0; -#X connect 20 0 25 0; -#X connect 21 0 36 0; -#X connect 22 0 23 0; -#X connect 23 0 27 0; -#X connect 24 0 27 0; -#X connect 25 0 31 0; -#X connect 26 0 27 0; -#X connect 27 0 35 0; -#X connect 28 0 27 0; -#X connect 30 0 25 0; -#X connect 32 0 29 0; -#X connect 33 0 25 0; -#X connect 34 0 32 0; -#X connect 36 0 32 0; -#X connect 37 0 32 0; -#X connect 38 0 32 0; -#X connect 39 0 25 0; -#X connect 40 0 41 0; -#X connect 42 0 40 0; -#X connect 43 0 40 0; -#X connect 44 0 40 0; -#X connect 45 0 40 0; -#X connect 46 0 40 1; -#X connect 47 0 48 0; -#X connect 49 0 47 0; -#X connect 50 0 47 0; -#X connect 51 0 53 0; -#X connect 52 0 51 0; -#X connect 54 0 51 0; -#X connect 56 0 55 0; -#X connect 58 0 57 0; -#X connect 59 0 56 0; -#X connect 60 0 56 0; -#X connect 61 0 62 0; -#X connect 63 0 62 0; -#X connect 64 0 71 0; -#X connect 66 0 71 0; -#X connect 67 0 71 0; -#X connect 68 0 71 0; -#X connect 69 0 71 0; -#X connect 70 0 71 1; -#X connect 71 0 65 0; -#X connect 73 0 72 0; -#X connect 74 0 72 0; diff --git a/extensions/xgui/xgui-lib/try.sh b/extensions/xgui/xgui-lib/try.sh deleted file mode 100644 index 707f6baba36d8648f5913b7bb99f710f5301a4fb..0000000000000000000000000000000000000000 --- a/extensions/xgui/xgui-lib/try.sh +++ /dev/null @@ -1 +0,0 @@ -../../bin/pd -open ./test_xgui_lib.pd -verbose diff --git a/extensions/xgui/xgui-lib/xgui_lib.c b/extensions/xgui/xgui-lib/xgui_lib.c deleted file mode 100644 index 62940bc2db034fa2d69bd716aa29c3a6d55f7b10..0000000000000000000000000000000000000000 --- a/extensions/xgui/xgui-lib/xgui_lib.c +++ /dev/null @@ -1,17 +0,0 @@ -/* xgui */ - -#include "m_pd.h" -#include "seg.c" -#include "number.c" - -void seg_setup(); -void number_setup(); - -void xgui_lib_setup(void) -{ - post("++ Xgui - Damien HENRY"); - post("++ v0.08"); - seg_setup(); - number_setup(); -} -