diff --git a/README.md b/README.md index 8a384949..4b0dc379 100644 --- a/README.md +++ b/README.md @@ -5,11 +5,11 @@ ZenGarden (ZG) is a runtime for the [Pure Data](http://puredata.info/) (Pd) audi The library is written in C++ and exposes a pure C interface described exclusively in [ZenGarden.h](https://github.com/mhroth/ZenGarden/blob/master/src/ZenGarden.h). Many audio objects are accelerated with vector operations on ARM (NEON) and x86 (SSE) platforms, and works especially well on Apple platforms (both OS X and iOS). ZenGarden allows externals to be built, also ones that override default object functionality. A language wrapper exists for [Java](https://github.com/mhroth/ZenGarden/blob/master/src/me/rjdj/zengarden/ZGContext.java). -ZenGarden is licensed under the [LGPL](http://www.gnu.org/licenses/lgpl.html). Among other things, this means that if you are going to use the libary in a public application you must: +ZenGarden is licensed under the [LGPL](http://www.gnu.org/licenses/lgpl.html). Among other things, this means that if you are going to use the library in a public application you must: + Indicate that you are using the ZenGarden library. + If you extend the library (not including externals), you must make that code public. -+ You may use this library for any application, including commerical ones. ++ You may use this library for any application, including commercial ones. ## Communication @@ -50,7 +50,7 @@ How to Get Started Running the Tests ----------------- -ZenGarden includes many tests meant to estabilsh the correct operation of the system. The test may be run by compiling the library via the included `make` file in the /src directory, and then running the `runme-test.sh` script from the base directory. +ZenGarden includes many tests meant to estabilsh the correct operation of the system. The test may be run by compiling the library via the included `make` file in the `/src` directory, and then running the `runme-test.sh` script from the base directory. API Usage =========== @@ -400,4 +400,4 @@ Many people have asked me why the ZenGarden library came into existance, and why I spend a lot of time working with the Pd audio engine at [RjDj](http://rjdj.me) and I have rarely seen such an antiquated, obfuscated, unmaintainable, and undocumented mess as Pd (the other example that I can think of is [Vorbis](http://www.vorbis.com/setup/), but that's another story). If a student or employee of mine ever wrote such code, I would fire them immediately. I have been working with Pd (the engine, not the language) for some years and I know it quite well by now. I have the highest respect for Miller that Pd works as well as it does; it is truly a technical tour-de-force. There are plenty of clever tricks and architectural innovations to learn from. But I found it incredibly difficult to find and modify functional parts of the program, for instance if you don't know where to look finding the code for something as simple as `[*~]` is not obvious, let alone anything more complex such as Pd's audio object ordering algorithm. The reason that libpd (i.e., Pd in the form of a traditional signal processing library) only appeared in 2010 is because everyone else who had tried before (at least since 2008), even people otherwise intimately familiar with the project, had failed (including myself). I am aware of at least two previous libpd-style implementations used in Spore (EAPd [[1](http://www.adigitaldreamer.com/game-development/the-beat-goes-on-dynamic-music-in-spore)] [[2](http://uk.pc.gamespy.com/pc/spore/853810p1.html)]) and early RjDj, but neither of those were public. The Pd community owes much more than a debt of gratitude to Peter Brinkmann. But ultimately no piece of software should be so difficult to modify or extend. -And so I began to work on ZenGarden. It is intended to be a completely new runtime for the Pure Data audio programming language using modern software languages and design principles. It is written in object-oriented C++, uses the C++ STL, has plenty of comments, takes direct advantage of modern processors via vector operations, and also unit tests. It should also be easy to compile and run on all major operating systems and hardware architectures. Furthermore it is completely independent of any GUI. (Naturally all of these things could be improved, but that's the goal anyway :) \ No newline at end of file +And so I began to work on ZenGarden. It is intended to be a completely new runtime for the Pure Data audio programming language using modern software languages and design principles. It is written in object-oriented C++, uses the C++ STL, has plenty of comments, takes direct advantage of modern processors via vector operations, and also unit tests. It should also be easy to compile and run on all major operating systems and hardware architectures. Furthermore it is completely independent of any GUI. (Naturally all of these things could be improved, but that's the goal anyway :)