MFP -- Music For Programmers
Release 0.05, "Mighty Fine Patching"
I'm pleased to announce a new version of MFP, containing many new
features, fixes and improvements. This is still a very early
release that is missing a lot of expected functionality, but it's
a significant step forward from 0.04 in every way and I thought
it might be of interest to the wider community.
A summary of changes is below. Please see the GitHub issue tracker
for complete details:
http://github.com/bgribble/mfp
This version is still source-code-only, but the new build system
should make it a bit easier for those who would like to try it.
Significant changes since release v0.04
----------------------------------------
* MFP patches can be saved as LV2 plugins that can be
live-edited while loaded in a host (see doc/README.lv2)
* New build system using 'waf' for one-line build and install
(see doc/README.build)
* Support for user patches with dynamic creation of
inlets/outlets and other objects at instantiation time (with
examples) using the "@clonescope" method
* Lazy evaluation of expressions using a leading "," syntactic
sugar is available in message boxes (i.e. the message
"datetime.now()" is a constant, but ",datetime.now()" is
evaluated each time the message is emitted)
* More sample patches, including a basic tutorial covering app
interaction, "hello, world", and patterns for things like
iteration, conditionals, etc
* Improvements to stability and error handling
* Many other bugfixes and improvements. The complete list of
60+ tickets closed since the 0.04 release is in the 0.05
milestone:
http://github.com/bgribble/mfp/issues?q=milestone%3A%22mfp+0.05%22+is%3Aclo…
About MFP
----------------------------------------
MFP is an environment for visually composing computer programs,
with an emphasis on music and real-time audio synthesis and
analysis. It's very much inspired by Miller Puckette's Pure Data
(pd) and Max/MSP, with a bit of LabView and TouchOSC for good
measure. It is targeted at musicians, recording engineers, and
software developers who like the "patching" dataflow metaphor for
coding up audio synthesis, processing, and analysis.
MFP is a completely new code base, written in Python and C, with
a Clutter UI. It has been under development by a solo developer
(me!), as a spare-time project for several years.
Compared to Pure Data, its nearest relative, MFP is superficially
pretty similar but differs in a few key ways:
* MFP uses Python data natively. Any literal data entered in the
UI is parsed by the Python evaluator, and any Python value is a
legitimate "message" on the dataflow network
* MFP provides fairly raw access to Python constructs if desired.
For example, the built-in Python console allows live coding of
Python functions as patch elements at runtime.
* Name resolution and namespacing are addressed more robustly,
with explicit support for lexical scoping
* The UI is largely keyboard-driven, with a modal input system
that feels a bit like vim. The graphical presentation is a
single-window style with layers rather than multiple windows.
* There is fairly deep integration of Open Sound Control (OSC), with
every patch element having an OSC address and the ability to learn
any other desired address.
* MFP has just a fraction of the builtin and addon functionality
provided by PD. It's not up to being a replacement except in
very limited cases!
The code and issue tracker are hosted on GitHub:
https://github.com/bgribble/mfp
You can find the LAC-2013 paper and accompanying screenshots,
some sample patches, and a few other bits of documentation in the
doc directory of the GitHub repo. The README files at the top
level of the source tree contain dependency, build, and
getting-started information.
Thanks,
Bill Gribble <grib(a)billgribble.com>