Commit f5e49e25 authored by Jonathan Wilkes's avatar Jonathan Wilkes

Merge branch 'master' into update-cyclone

parents e8b8017b 5bfda305
......@@ -106,3 +106,31 @@ osx_amd64_dmg:
expire_in: 1 day
paths:
- Pd*.dmg
osx_10.8_amd64_dmg:
tags:
- osx
- v10.8
- dmg
script:
- echo `pwd`
- cd l2ork_addons
- osx_version=10.8 ./tar_em_up.sh -X
artifacts:
expire_in: 1 day
paths:
- Pd*.dmg
debian_stable_arm_deb:
tags:
- debian
- arm
- stable
script:
- echo `pwd`
- cd l2ork_addons
- ./tar_em_up.sh -r
artifacts:
expire_in: 1 day
paths:
- pd*.deb
......@@ -12,7 +12,8 @@ maintainer: Jonathan Wilkes <jancsika@yahoo.com>
* [Flavors of Pure Data](#flavors-of-pure-data)
* [Three Paragraph Overview](#three-paragraph-overview)
* [Goals](#goals)
* [Installation Guide](#installation-guide)
* [Downloads](#downloads)
* [Build Guide](#build-guide)
* [Gnu/Linux](#linux)
* [OSX](#osx-64-bit-using-homebrew)
* [Windows](#windows-32-bit-using-msys2)
......@@ -31,15 +32,17 @@ the screen what text-based languages require you to piece together in your mind.
### Flavors of Pure Data
There are currently three main distributions of Pure Data:
There are three maintained distributions of Pure Data:
1. Pd-L2Ork. Version used by Ivica Bukvic for his laptop orchestra. This
guide is for Pd-L2Ork.
2. Pure Data "Vanilla". Miller Puckette's personal version which he hosts on
his website and maintains. It doesn't include external libraries like
objects for doing graphics, video, etc.
3. Pure Data Extended. A monolithic distribution which ships with lots of
external libraries. As of August 2015 it hasn't been updated since January 2014.
1. Purr Data. This is the 2.0 version of Pd-l2ork. It ships with lots of
external libraries and uses a modern GUI written using HTML5.
2. Pd-L2Ork 1.0, the version used by Ivica Bukvic for his laptop orchestra.
Pd-l2ork 1.0 uses tcl/tk (and tkpath) for the GUI. You can find it
[here](http://l2ork.music.vt.edu/main/make-your-own-l2ork/software/)
3. Pure Data "Vanilla". Miller Puckette's personal version which he hosts on
his website and maintains. It doesn't come with external libraries
pre-installed, but it does include an interface you can use to search
and install external libraries maintained and packaged by other developers.
### Three Paragraph Overview
......@@ -71,15 +74,62 @@ Pd-L2ork has the following goals:
bugs. Patches for new functionality that lack documentation are spam.
4. Be consistent. Consistent interfaces are themselves a kind of
documentation. We like documentation, so it follows that we like consistent
interfaces
interfaces.
### Installation Guide
### Downloads
You can download a precompiled installer for Gnu/Linux, Windows, or OSX
from the following site:
[https://github.com/agraef/purr-data/releases](https://github.com/agraef/purr-data/releases)
### Build Guide
#### Linux
Time to build: *40 minutes to 1.5 hours*
Hard drive space required: *roughly 2.5 GB*
1. Install the dependencies
sudo apt-get install bison flex automake qjackctl \
tcl8.5-dev tk8.5-dev tcl-dev tk-dev libasound2-dev \
libjack-jackd2-dev libtool libbluetooth-dev libgl1-mesa-dev \
libglu1-mesa-dev libglew-dev libmagick++-dev libftgl-dev \
libgmerlin-dev libgmerlin-avdec-dev libavifile-0.7-dev \
libmpeg3-dev libquicktime-dev libv4l-dev libraw1394-dev \
libdc1394-22-dev libfftw3-dev libvorbis-dev ladspa-sdk \
dssi-dev tap-plugins ladspa-foo-plugins \
invada-studio-plugins-ladspa blepvco swh-plugins mcp-plugins \
cmt blop slv2-jack omins ubuntustudio-audio-plugins rev-plugins \
libslv2-dev dssi-utils vco-plugins wah-plugins fil-plugins \
mda-lv2 libmp3lame-dev libspeex-dev libgsl0-dev \
portaudio19-dev python-dev libsmpeg0 libjpeg62 tkpng flite1-dev \
libgsm1-dev libfftw3-dev libgtk2.0-dev subversion git libstk0-dev \
libsndobj-dev libfluidsynth-dev tclxapian fluid-soundfont-gm \
python-tk byacc
2. Clone the Purr-Data repository *(10 minutes)*
git clone https://git.purrdata.net/jwilkes/purr-data.git
4. Change to the directory
cd purr-data/l2ork_addons
5. Run the installer *(15 minutes)*
Choose one of the following options:
* to build a deb installer, type `./tar_em_up.sh -B`
* to build an rpi deb installer, type `./tar_em_up.sh -R`
* for a generic tar installer type `./tar_em_up.sh -F`
6. When the installer finishes, type
cd ..
7. There should now be a .deb file in your current directory
To install using a pre-compiled binary, follow these instructions:
http://l2ork.music.vt.edu/main/?page_id=56
......@@ -95,7 +145,7 @@ http://l2ork.music.vt.edu/main/?page_id=56#install-dev
Time to build: *50 minutes to 1.5 hours*
Hard drive space required: *roughly 2 GB*
1. Install [Homebrew](http://brew.sh) *(15 minutes)*
1. Install [Homebrew](https://brew.sh) *(15 minutes)*
(asks for password twice-- once for command line tools, once for homebrew)
2. Install the dependencies *(10 minutes)*:
......
......@@ -42,7 +42,7 @@ debsrc = purr-data_$(debversion).orig.tar.gz
debdist = purr-data-$(debversion)
# nw.js sdk
nwjsver = 0.18.5
nwjsver = 0.22.1
nwjspkg = nwjs-sdk-v$(nwjsver)-linux
nwjs = $(nwjspkg)-ia32.tar.gz $(nwjspkg)-x64.tar.gz
......
......@@ -4,7 +4,7 @@
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
nwjsver = 0.18.5
nwjsver = 0.22.1
nwjspkg = nwjs-sdk-v$(nwjsver)-linux
ifeq ("$(shell dpkg-architecture -qDEB_HOST_ARCH)","amd64")
......@@ -40,6 +40,9 @@ override_dh_auto_install:
# Remove some unneeded files.
cd debian/purr-data/ && rm -rf Makefile README.txt etc usr/share/emacs
cd debian/purr-data$(prefix)/lib/pd-l2ork/extra && rm -rf */*.pd_linux_o */*.la
# Add the bash completion file again, and edit it accordingly.
mkdir -p debian/purr-data/etc/bash_completion.d
sed -e 's/pd-l2ork/purr-data/g' < scripts/bash_completion/pd-l2ork > debian/purr-data/etc/bash_completion.d/purr-data
# Edit the library paths in the default user.settings file.
cd debian/purr-data$(prefix)/lib/pd-l2ork && sed -e "s!/usr/lib/pd-l2ork!$(prefix)/lib/pd-l2ork!g" -i default.settings
# Replace the pd-l2ork desktop/mime files and icons with purr-data ones.
......
......@@ -43,7 +43,8 @@ DEST_PATHS = BUILDLAYOUT_DIR=$(BUILDLAYOUT_DIR) \
# this variable is to support old "win" directories, rather than "windows"
BUILDSRC_OS_NAME = $(OS_NAME)
CFLAGS = -DPD -I$(pd_src)/src -Wall -W $(DEBUG_CFLAGS) -I$(gem_src)/src
WARN_FLAGS = -Wall -W -Wno-unused-parameter
CFLAGS = -DPD -I$(pd_src)/src $(WARN_FLAGS) $(DEBUG_CFLAGS) -I$(gem_src)/src
LDFLAGS =
LIBS = -lm
......@@ -1391,6 +1392,7 @@ oscx_clean:
-$(MAKE) -C $(externals_src)/OSCx $(DEST_PATHS) clean
-$(MAKE) -C $(externals_src)/OSCx CC=gcc clean
-rm $(externals_src)/OSCx/Makefile
-rm $(externals_src)/OSCx/configure
......
This diff is collapsed.
......@@ -122,7 +122,7 @@ else
;;
*)
dnl assume unix
CFLAGS="$CFLAGS -DUNIX -Wall -Wimplicit -Wunused -Wmissing-prototypes -O1"
CFLAGS="$CFLAGS -DUNIX -Wall -Wimplicit -Wunused -Wmissing-prototypes -O1 -fPIC"
LDFLAGS="-Wl,--export-dynamic -shared"
pd_suffix=pd_linux
LIBS="-lc -lm"
......
......@@ -352,7 +352,7 @@ AC_DEFUN([AX_PD_EXTERNAL],
"
PDEXT_LFLAGS="-shared -L${pddir}/bin -L${pddir}/obj"
PDEXT_CFLAGS="-mms-bitfields -DMSW -DNT"
LIBS="$LIBS -lpd -lwsock32 -lpthreadGC2 -lkernel32 -luser32 -lgdi32 -lregex"
LIBS="$LIBS -lpd -lwsock32 -lkernel32 -luser32 -lgdi32 -lregex"
if test "$ENABLE_DEBUG" = "no" -a -z "$UCFLAGS"; then
##-- only set OFLAGS if user CFLAGS are empty
PDEXT_OFLAGS="-O2"
......
......@@ -3858,7 +3858,7 @@ echo "$as_me: WARNING: Unknown kernel type \"$uname_s\" defaults to \"Linux\"" >
"
PDEXT_LFLAGS="-shared -L${pddir}/bin -L${pddir}/obj"
PDEXT_CFLAGS="-mms-bitfields -DMSW -DNT"
LIBS="$LIBS -lpd -lwsock32 -lpthreadGC2 -lkernel32 -luser32 -lgdi32 -lregex"
LIBS="$LIBS -lpd -lwsock32 -lkernel32 -luser32 -lgdi32 -lregex"
if test "$ENABLE_DEBUG" = "no" -a -z "$UCFLAGS"; then
##-- only set OFLAGS if user CFLAGS are empty
PDEXT_OFLAGS="-O2"
......
......@@ -15,8 +15,7 @@ SUBDIRS = \
deque \
readdir \
weightmap \
sprinkler \
gfsm
sprinkler
##-- 'pdstring' and 'sprinkler' are already in 'flatspace' ... should they be moved here?
## -> 2008-08: removed any2string,string2any,pdstring from flatspace
......
......@@ -4398,7 +4398,7 @@ $as_echo "$as_me: WARNING: Unknown kernel type \"$uname_s\" defaults to \"Linux\
"
PDEXT_LFLAGS="-shared -L${pddir}/bin -L${pddir}/obj"
PDEXT_CFLAGS="-mms-bitfields -DMSW -DNT"
LIBS="$LIBS -lpd -lwsock32 -lpthreadGC2 -lkernel32 -luser32 -lgdi32 -lregex"
LIBS="$LIBS -lpd -lwsock32 -lkernel32 -luser32 -lgdi32 -lregex"
if test "$ENABLE_DEBUG" = "no" -a -z "$UCFLAGS"; then
##-- only set OFLAGS if user CFLAGS are empty
PDEXT_OFLAGS="-O2"
......
......@@ -20520,7 +20520,7 @@ echo "$as_me: WARNING: Unknown kernel type \"$uname_s\" defaults to \"Linux\"" >
"
PDEXT_LFLAGS="-shared -L${pddir}/bin -L${pddir}/obj"
PDEXT_CFLAGS="-mms-bitfields -DMSW -DNT"
LIBS="$LIBS -lpd -lwsock32 -lpthreadGC2 -lkernel32 -luser32 -lgdi32 -lregex"
LIBS="$LIBS -lpd -lwsock32 -lkernel32 -luser32 -lgdi32 -lregex"
if test "$ENABLE_DEBUG" = "no" -a -z "$UCFLAGS"; then
##-- only set OFLAGS if user CFLAGS are empty
PDEXT_OFLAGS="-O2"
......
......@@ -3858,7 +3858,7 @@ echo "$as_me: WARNING: Unknown kernel type \"$uname_s\" defaults to \"Linux\"" >
"
PDEXT_LFLAGS="-shared -L${pddir}/bin -L${pddir}/obj"
PDEXT_CFLAGS="-mms-bitfields -DMSW -DNT"
LIBS="$LIBS -lpd -lwsock32 -lpthreadGC2 -lkernel32 -luser32 -lgdi32 -lregex"
LIBS="$LIBS -lpd -lwsock32 -lkernel32 -luser32 -lgdi32 -lregex"
if test "$ENABLE_DEBUG" = "no" -a -z "$UCFLAGS"; then
##-- only set OFLAGS if user CFLAGS are empty
PDEXT_OFLAGS="-O2"
......
......@@ -3861,7 +3861,7 @@ echo "$as_me: WARNING: Unknown kernel type \"$uname_s\" defaults to \"Linux\"" >
"
PDEXT_LFLAGS="-shared -L${pddir}/bin -L${pddir}/obj"
PDEXT_CFLAGS="-mms-bitfields -DMSW -DNT"
LIBS="$LIBS -lpd -lwsock32 -lpthreadGC2 -lkernel32 -luser32 -lgdi32 -lregex"
LIBS="$LIBS -lpd -lwsock32 -lkernel32 -luser32 -lgdi32 -lregex"
if test "$ENABLE_DEBUG" = "no" -a -z "$UCFLAGS"; then
##-- only set OFLAGS if user CFLAGS are empty
PDEXT_OFLAGS="-O2"
......
......@@ -3860,7 +3860,7 @@ echo "$as_me: WARNING: Unknown kernel type \"$uname_s\" defaults to \"Linux\"" >
"
PDEXT_LFLAGS="-shared -L${pddir}/bin -L${pddir}/obj"
PDEXT_CFLAGS="-mms-bitfields -DMSW -DNT"
LIBS="$LIBS -lpd -lwsock32 -lpthreadGC2 -lkernel32 -luser32 -lgdi32 -lregex"
LIBS="$LIBS -lpd -lwsock32 -lkernel32 -luser32 -lgdi32 -lregex"
if test "$ENABLE_DEBUG" = "no" -a -z "$UCFLAGS"; then
##-- only set OFLAGS if user CFLAGS are empty
PDEXT_OFLAGS="-O2"
......
......@@ -3868,7 +3868,7 @@ echo "$as_me: WARNING: Unknown kernel type \"$uname_s\" defaults to \"Linux\"" >
"
PDEXT_LFLAGS="-shared -L${pddir}/bin -L${pddir}/obj"
PDEXT_CFLAGS="-mms-bitfields -DMSW -DNT"
LIBS="$LIBS -lpd -lwsock32 -lpthreadGC2 -lkernel32 -luser32 -lgdi32 -lregex"
LIBS="$LIBS -lpd -lwsock32 -lkernel32 -luser32 -lgdi32 -lregex"
if test "$ENABLE_DEBUG" = "no" -a -z "$UCFLAGS"; then
##-- only set OFLAGS if user CFLAGS are empty
PDEXT_OFLAGS="-O2"
......
......@@ -3860,7 +3860,7 @@ echo "$as_me: WARNING: Unknown kernel type \"$uname_s\" defaults to \"Linux\"" >
"
PDEXT_LFLAGS="-shared -L${pddir}/bin -L${pddir}/obj"
PDEXT_CFLAGS="-mms-bitfields -DMSW -DNT"
LIBS="$LIBS -lpd -lwsock32 -lpthreadGC2 -lkernel32 -luser32 -lgdi32 -lregex"
LIBS="$LIBS -lpd -lwsock32 -lkernel32 -luser32 -lgdi32 -lregex"
if test "$ENABLE_DEBUG" = "no" -a -z "$UCFLAGS"; then
##-- only set OFLAGS if user CFLAGS are empty
PDEXT_OFLAGS="-O2"
......
......@@ -102,7 +102,7 @@ if [[ $os == "darwin" ]]; then
fi
# Fetch the nw.js binary if we haven't already. We want to fetch it even
# for building with no libs, so we do it before all options
# for building with no libs, so we do it regardless of the options
echo nwjs-sdk-v0.16.0-`uname | tr '[:upper:]' '[:lower:]'`
if [ ! -d "../pd/nw/nw" ]; then
if [ `getconf LONG_BIT` -eq 32 ]; then
......@@ -122,16 +122,16 @@ if [ ! -d "../pd/nw/nw" ]; then
ext="tar.gz"
fi
if [[ $os == "win" ]]; then
if [[ $os == "win" || $osx_version == "10.8" ]]; then
# We need the lts version to be able to run on XP. For
# simplicity we use that same version for 64 bit Windows, too
nwjs_version="v0.14.7"
else
# temporary kluge for rpi-- only 0.15.1 is available atm
if [ `uname -m` == "armv7l" ]; then
nwjs_version="v0.15.1"
nwjs_version="v0.17.6"
else
nwjs_version="v0.18.4"
nwjs_version="v0.22.1"
fi
fi
......@@ -142,8 +142,8 @@ if [ ! -d "../pd/nw/nw" ]; then
nwjs_url=${nwjs_url}/$nwjs_filename
echo "Fetching the nwjs binary from"
echo "$nwjs_url"
wget $nwjs_url
if [[ $os == "win" ]]; then
wget -nv $nwjs_url
if [[ $os == "win" || $os == "osx" ]]; then
unzip $nwjs_filename
else
tar -xf $nwjs_filename
......
......@@ -2,7 +2,7 @@
"name": "purr-data",
"version": "0.1.0",
"main": "index.html",
"chromium-args": "--proxy-server=http://127.0.0.1",
"chromium-args": "--proxy-server=http://127.0.0.1 --password-store=basic",
"window": {
"icon": "./purr.png"
}
......
......@@ -19,9 +19,13 @@
<input style="display:none;" id="printDialog" type="file"
nwsaveas nwworkingdir accept=".pdf" />
</span>
<input style="display:none;" id="openpanel_dialog" type="file" />
<input style="display:none;" id="savepanel_dialog" type="file"
<span id = "openpanelSpan">
<input style="display:none;" id="openpanel_dialog" type="file" />
</span>
<span id = "savepanelSpan">
<input style="display:none;" id="savepanel_dialog" type="file"
nwsaveas nwworkingdir />
</span>
<svg xmlns="http://www.w3.org/2000/svg"
version="1.1"
id="patchsvg"
......
......@@ -304,6 +304,14 @@ var canvas_events = (function() {
},
keydown: function(evt) {
pdgui.keydown(name, evt);
// prevent the default behavior of scrolling
// on arrow keys in editmode
if (document.querySelector("#patchsvg")
.classList.contains("editmode")) {
if ([32, 37, 38, 39, 40].indexOf(evt.keyCode) > -1) {
evt.preventDefault();
}
}
},
keypress: function(evt) {
pdgui.keypress(name, evt);
......@@ -926,7 +934,7 @@ function register_window_id(cid, attr_array) {
// Initialize the zoom level to the value retrieved from the patch, if any.
nw.Window.get().zoomLevel = attr_array.zoom;
pdgui.canvas_map(cid); // side-effect: triggers gui_canvas_get_scroll
pdgui.canvas_set_editmode(cid, attr_array.editmod);
pdgui.canvas_set_editmode(cid, attr_array.editmode);
// For now, there is no way for the cord inspector to be turned on by
// default. But if this changes we need to set its menu item checkbox
// accordingly here
......
This diff is collapsed.
......@@ -297,7 +297,7 @@ void iemgui_label_getrect(t_iemgui x_gui, t_glist *x,
int *xp1, int *yp1, int *xp2, int *yp2)
{
//fprintf(stderr,"gop_redraw = %d\n", gop_redraw);
if (!gop_redraw)
if (!gop_redraw || sys_legacy)
{
//fprintf(stderr,"ignoring label\n");
return;
......
......@@ -1214,14 +1214,16 @@ void graph_checkgop_rect(t_gobj *z, t_glist *glist,
// failsafe where we cannot have a gop that is smaller than 1x1 pixels
// regardless whether the text is hidden
int in = obj_ninlets(pd_checkobject(&z->g_pd)) * IOWIDTH;
int out = obj_noutlets(pd_checkobject(&z->g_pd)) * IOWIDTH;
int minhsize = (in >= out ? in : out) + SCALE_GOP_MINWIDTH;
int minvsize = ((in > 0 ? 1 : 0) + (out > 0 ? 1 : 0)) * 2 +
SCALE_GOP_MINHEIGHT;
int in = obj_ninlets(pd_checkobject(&z->g_pd));
int out = obj_noutlets(pd_checkobject(&z->g_pd));
int max_xlets = in >= out ? in : out;
int minhsize = (max_xlets * IOWIDTH) +
((max_xlets > 1 ? max_xlets - 1 : 0) * IOWIDTH);
if (minhsize < SCALE_GOP_MINWIDTH) minhsize = SCALE_GOP_MINWIDTH;
int minvsize = ((in > 0 ? 1 : 0) + (out > 0 ? 1 : 0)) * 2;
if (minvsize < SCALE_GOP_MINHEIGHT) minvsize = SCALE_GOP_MINHEIGHT;
if (*xp2 < *xp1+minhsize) *xp2 = *xp1+minhsize;
if (*yp2 < *yp1+minvsize) *yp2 = *yp1+minvsize;
}
/* get the rectangle, enlarged to contain all the "contents" --
......
......@@ -14,7 +14,7 @@ extern "C" {
#define PD_MINOR_VERSION 47
#define PD_BUGFIX_VERSION 0
#define PD_TEST_VERSION ""
#define PD_L2ORK_VERSION "2.1.2"
#define PD_L2ORK_VERSION "2.2.1"
#define PDL2ORK
extern int pd_compatibilitylevel; /* e.g., 43 for pd 0.43 compatibility */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment