Tinara

An open source media production and archival system

This page was originally thrown together over the course of a couple of
evenings, in October of 2006. My intent was to provide a basic summary of the
Tinara project, since the only other easily accessible information was the
description on the SourceForge.net project page - which is
limited to 255 characters in length.

As of February, 2010, however, the information on this page had fallen so
far out-of-date, that I felt compelled to revise it slightly. Nonetheless,
with development progressing rather rapidly at the moment, you may yet find
this information to be lagging slightly behind reality. If you have questions
about Tinara which are not answered here, I'd encourage you to get in touch
with my via my web site. While I'm at
it, I should probably throw in a plug for my
solo banjo web site. If you're still interested in Tinara, read on.

Tinara is my ongoing effort to implement my ideas about how I'd prefer to
work, creatively, with sound and images. While the initial focus is on music
production (due to the fact that I most often work in that realm), film and
video features have always been major design considerations. Note that
although several components of Tinara are operational at least on a rudimentary
level, it's still largely "vaporware" - Tinara is a
work-in-progress.

A secondary goal of the project is to create or facilitate the creation of
custom interfaces for the use of people with special needs. One example would
be a simplified interface which could be used by those who were unable to read
(such as my younger brother, who has Down Syndrome). Another example would be
a music production interface which would allow blind users to edit and mix
their music (traditional interfaces require the user to see the locations of
faders and waveforms on the screen).

For more details on exactly what makes Tinara different from existing media
production systems, take a look at the "How does Tinara
compare to..." section.

The vast majority of Tinara is being written in Ruby. Being an interpreted language,
however, Ruby is not suitable for realtime audio work. For this reason, I have
written an audio engine (the "Tinara audio playback engine", or "Tape") in C,
which acts as a Ruby extension, adding new classes which make it easy to load
and play audio in an arbitrary order.

There are, in fact, many excellent open source media production projects
which are already in a fairly mature state. In cases where they are suitable
for what I need/want to do, I gratefully use them, and I contribute bug reports
and patches. I am, for example, a credited contributor to the
wonderful Hydrogen drum machine,
and I created a difference keying plug-in
which become part of the official versions of the Cinelerra video editor/compositor.

Great as many of these projects are, however, none of them fully address the
media production process in the manner that I desire. Additionally, Tinara has
adopted certain core design principals which are either absent from or
fundamentally incompatible with the these existing projects.

Tinara is being developed under 32-bit Linux (Ubuntu x86). I have no
immediate plans of supporting it on other platforms. Since most of Tinara is
written in Ruby, however, it should be fairly portable to other systems, should
anyone else feel inclined to undertake such a project.

At the time of writing (mid-February 2010), here is the status of each component:

DaMarcus (Digital archive Management and revision control uber
system) is functional and in active use, although I have a number of
improvements planned for later this year. The current design relies heavily on
the underlying filesystem; this reliance will be moved to YAML documents, with
the filesystem structure remaining as a safety measure to aid in data recovery
in case of corruption. The current implementation allows the creation and
updating of a repository with multiple branches; it also allows the entire
repository to be scanned for data corruption.

Alice (Application & library inline compilation engine) is able to
build simple projects with or without a special YAML makefile. Development of
the project is on hold, however, since the only C compilation I am currently
doing uses Ruby's mkmf module to generate normal makefiles. The eventual
purpose of this project will be to build LADSPA plug-ins dynamically at
run-time.

Tape (Tinara audio playback engine) is probably Tinara's most mature
component. It is an extension for Ruby, written in C, which hides all of the
complexities of realtime audio playback behind a simple, object-oriented
facade. With a few lines of Ruby code, I can play arbitrary portions of
arbitrary audio files in an arbitrary order.

Tinara's as-yet-unnamed audio recording/editing GUI is also
progressing nicely. I'm planning to put it into production use within a month
or two. My initial goal is to implement something that could be used alongside
Ardour (via JACK transport sync), to provide one single audio track with the
recording and editing workflow I've wanted for so many years. To that end, I
will also be creating a miniaturized version of this application, capable of
displaying and functioning properly on my Nokia N810 (via SSH).

The first ideas for what would become Tinara came into my mind in the fall
of 1999. Further ideas grew out of frustrations with Pro Tools in early 2001.
After incubating these thoughts for a while, I came up with the name "Tinara",
and registered my project with SourceForge.net in March of 2003.

I've burned the design to the ground and rebuilt it several times since
then, but I'm now confident that the current design is simple enough to be
realistically implemented, yet flexible enough to accommodate future design
considerations.