Commit aeb6ed6a authored by Jonathan Wilkes's avatar Jonathan Wilkes
Browse files

change unhelpful "difficulty" ratings to "challenges", remove duplicate entry

parent 285f29c9
......@@ -42,8 +42,8 @@ This will help developers catch bugs earlier in the development process,
leading to overall cleaner code in merge requests and less disruption to
users from regressions.
### Difficulty level
Moderate. One challenge is that not all classes
### Challenges
One challenge is that not all classes
have sane defaults for their methods. For example, the internal
class [until] will iterate in an infinite loop when the "bang" method is
invoked. Even with external libraries, such poor defaults are entrenched. A
......@@ -87,8 +87,8 @@ toplevel windows to display a patch and its visible subcanvases, and
properties windows for certain widgets. The framework needs to allow
viewing all of these in a container within a *single* browser window.
### Difficulty
Hard. There has been some prior art for building a WebAssembly binary
### Challenges
There has been some prior art for building a WebAssembly binary
for the core audio engine. However, the difficulty will lie in building
the GUI framework that has a workable UX within a single browser window.
......@@ -166,14 +166,24 @@ Either way, this feature vastly improves the usability of Purr Data for new
users, giving them a way to quickly generate sounds and experiment with the
interface.
### Difficulty
Hard. A lot of the initial implementation of K12 mode was made
### Challenges
A lot of the initial implementation of K12 mode was made
in the core engine in C. This will require at least reading a lot of the
source code and making sense of the changes made for K12 mode, plus possibly
refactoring some of that code so that it can be handled in the GUI instead.
On the other hand, there is a working version of the old K12 mode which can
be consulted as a reference implementation.
One additional feature is the possibility of
using a touchscreen to control the GUI while sound is being produced.
The HTML5 interface of nw.js makes this fairly straightforward to implement.
But it will take some extra work to ensure all of the common interactivity
of a Pd patch is accessible through touch.
As an additional challenge, it should be possible to edit a patch using
the touchscreen as well. K12 mode doesn't require the same UX complexity
as regular editing, so this should be doable as well.
### Languages
Javascript, C, CSS, HTML.
......@@ -235,8 +245,8 @@ Note: There may be some overlap with the other profiling idea listed below.
Developers for both ideas may therefore benefit by periodically sharing their
work with each other.
### Difficulty
Moderate to hard. The initial profiling will take some time but
### Challenges
The initial profiling will take some time but
isn't particularly challenging. Making changes to the core audio engine,
however, will require some knowledge of Linux system interfaces and some of
Purr Data's internals. Properly assessing and testing any threading techniques
......@@ -286,8 +296,8 @@ could disallow objects to overlap with each other. Still, the connections
among the various objects (i.e., the arcs which connect the nodes) could
overlap in such a way that makes unambiguous ASCII art impossible.
### Difficulty
Easy to hard. This idea runs the gamut-- a simple GUI-side
### Challenges
This idea runs the gamut-- a simple GUI-side
parser for simple ASCII art is a quick exercise. Handling some of the more
complicated art with multiple and/or crossed connections is moderate. Scanning
the mailing lists for examples and covering the majority of them is hard.
......@@ -332,8 +342,8 @@ of hyperlinks to the console. When the user clicks any hyperlink, the
corresponding object can be highlighted (or the relevant diagram brought up
with the object in it highlighted).
### Difficulty
Moderate. Purr Data's bindelem and pd_bind API are a little
### Challenges
Purr Data's bindelem and pd_bind API are a little
tricky if one hasn't used them before. However, once that interface is
understood it is all that is needed to return a complete list of all
nonlocal objects bound to a particular symbol.
......@@ -372,8 +382,8 @@ and well-documented/specified. This way Purr Data users can always interact
with and create programs easily on any embedded device, even if there is
no direct display. (This would also be very handy for debugging purposes.)
### Difficulty
Moderate. An initial REPL can be created with the current Purr
### Challenges
An initial REPL can be created with the current Purr
Data API, but it won't be particularly user-friendly. To achieve that requires
more work and an understanding of Purr Data's message dispatching system.
......@@ -406,8 +416,8 @@ Note: there may be some overlap with the REPL idea above, as the REPL could
provide a sensible way for a user to traverse the diagram as an alternative
to using the GUI.
### Difficulty
Moderate. For example, it will be necessary to study the current
### Challenges
For example, it will be necessary to study the current
GUI implementation to figure out how to extend it to add keyboard navigation.
It will also be necessary to study pre-existing approaches to making SVG
diagrams accessible and study the current state of HTML5 tools that facilitate
......@@ -457,8 +467,8 @@ Figure out a way to meaningfully profile DSP objects. DSP objects
typically process data at a high sample rate (44,100 is common) so displaying
the data in a user-friendly and meaningful way is tricky.
### Difficulty
Moderate to Hard. This feature touches the main artery of the
### Challenges
This feature touches the main artery of the
message dispatching system, and the bonus goal would touch the main DSP
routine. In both cases realtime scheduling deadlines must be taken into
account by careful profiling.
......@@ -529,7 +539,8 @@ thread every time after a new object or patch cord is created. Threading issues
may arise here, in case one of the objects is deleted while the cached map is
being built.
### Difficulty: Moderate. This project comes with a number of
### Challenges
This project comes with a number of
challenges, including: potential threading issues between the engine and the
GUI, the necessity to re-write the C code of some objects, providing complete
documentation for creators of externals, maintaining - where possible (e.g.:
......@@ -565,7 +576,10 @@ developers would be able to understand and improve the library.
There is a TIA chip emulator written in C in externals/mmonoplayer
that can be used as a starting point.
### Difficulty: Moderate.
### Challenges
Finding a common interface that makes it easy for users to leverage
these classes while at the same time being expressive enough to allow
decent control of the chip being emulated.
### Languages
Pd (Purr Data is a fork of the software Pure Data-- the visual language itself
......@@ -595,7 +609,9 @@ objects which send/receive messages by sending audio signals to/from each
other it would greatly simplify sending at least small amounts of data
between machines.
### Difficulty: Moderate.
### Challenges
Finding a decent interface for users without relying on a big set
of dependencies.
### Languages
Pd (Purr Data is a fork of the software Pure Data-- the visual language itself
......@@ -625,41 +641,13 @@ Purr Data also has all the APIs necessary to act as a plugin itself
in other applications. But work must be done to ensure this works
properly and that it is properly documented how to do it.
### Difficulty: Moderate. There is a lot of pre-existing technology
### Challenges
There is a lot of pre-existing technology
here, but it needs to be tested rigorously on all platforms.
### Languages
C. Also, familiarity with shell scripting as well as Gnu make.
Interaction with Audio Plugins
------------------------------
### Goal
Make sure that Purr Data has a well-documented way to accept input from
standard audio plugin APIs like VST, LADSP, and LV2. Also
make sure Purr Data can be used as a plugin in other environments.
### Details
There are multiple audio plugin APIs that aim at seamlessly mixing and
matching audio filters, synthesizers, and analysis tools in different
languages and applications.
Purr Data has some libraries to interface with at least two of these
standards (VST and LADSPA). There is also a library for LV2 that
Purr Data can leverage. However, not all of these libraries run on
all the supported platforms (OSX, Windows, Linux).
Purr Data also has all the APIs necessary to act as a plugin itself
in other applications. But work must be done to ensure this works
properly and that it is properly documented how to do it.
### Difficulty: Moderate. There is a lot of pre-existing technology
here, but it needs to be tested rigorously on all platforms.
### Languages
C. Also, familiarity with shell scripting as well as Gnu make.
JIT-compiled Signal Graph for the Audio Engine
----------------------------------------------
......@@ -680,7 +668,8 @@ to the current "expr" library. Extending that process to the entire
signal graph (or at least core classes within it) would benefit
performance on a greater level.
### Difficulty: Difficult
### Challenges
Finding a way to incrementally build up the functionality
Since there is pre-existing
work done with the jit "expr" library, a good start would be to help
......@@ -690,7 +679,3 @@ DSP graph itself.
### Languages
C++. Knowledge of LLVM will also come in handy here.
### Potential Mentor
Alex Norman
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