Thursday, July 7, 2011

About processes

I have been compiling a list of available tools, languages and programming libraries during the last months. For me it has been mainly motivated by the fact that one of the most important things when talking about development in general (not only games or game audio: but whatever product, service, software or piece-of-art) is the definition of a process grounded from certain workflows and pipelines.

Sure, the result is what counts most sometimes... but if the amount of effort and hours to reach a certain result matters to you, taking your time to rest, breath, learn and think about what is the best tool for a certain task really pays off in the long term.

There is a good amount of free online resources released under open source licenses (or shareware) that can help us out, for instance, to define processes or build prototypes. I discovered them while surfing and passing through blogs, tweets, conference slides, user groups and some seminars and talks at the Uni. I have only used few of them in depth, but I believe all are worth of a try. They mainly come from dedicated community contributors, independent developers and research centers (extended list).

Of course there are still a lot missing from this list. I tried to do my best with the categories classification, but some of the resources below would easily fit different scenarios and needs. If you discover additional ones that would be of help, learning or interest, I truly believe it is great to openly share their existence so we can be capable of writing, developing, creating or researching better methods, code, algorithms, assets and products.


Audio and Music languages

There are specific languages with dedicated semantics for audio and music processing or synthesis. Some of them allow generating code and algorithms that can also be used at prototyping stages.



Communication libraries

The Open Sound Control protocol is widely used to bridge communication between applications and input devices. Libraries and frameworks that implement this protocol over TCP or UDP transports are also useful to couple applications like game engines and Max/MSP or PureData, for instance.
UnityOSC (C# mono .NET) (my little contribution here!).

Dataflow

These allow to quickly prototype Digital Signal Processing (DSP) algorithms, and generate runtime code or components that can be used within an audio engine or support the development of standalone plugins and tools.

SonicFlow 


DSP libraries

Developing and implementing core DSP algorithms can be a tough labour, but less painful (and inspiring) if some external libraries are used or taken as reference for audio I/O, analysis, synthesis and processing.

Aubio (C/C++)

Standalone tools and plugins

Going beyond the typical audio editor functionality, it can be handy to extract, visualize and compute features or descriptors from an audio signal, in order to asses the best analysis parameters or salient characteristics that can be exploited at runtime or while prototyping.


Various misc tools, plug-ins, platforms


Web APIs

There is a salient amount of web services that allow carrying music analysis, synthesis and processing on the cloud. Maybe the most complete list can be found at Programmable Web (Side note: be aware of the licensing terms of each of them!). One of the most recent is Echoprint.

Edit: added additional references from a reddit talk.

No comments:

Post a Comment