NOTICE: otto is not a file sharing program. do not use otto to illegally share music. you assume all responsibility for how you choose to use this program.
otto was designed to serve two purposes:
1) to act as an easy interface to all my cds which i've encoded into
mp3s. i use otto at home to act as a jukebox which is always playing
music from my collection. i rarely put a cd into my cd player
anymore, i simply use otto instead.
2) to be a multi-user network streaming jukebox for a group of
people to upload and share their music. you could, for example, use this at work
with everyone having separate accounts for accessing otto, and
everyone having separate upload/download areas for music which they
own. people all over the office can share and listen to the same music
and everyone can have the pleasure of acting as dj for everyone else.
otto is always playing music. otto keeps a queue of songs to be
played. you can add requests to the queue, change the order of
requests, delete songs from the queue, or even kill the currently
playing song. when there are no songs left to play, otto will add 20
random songs to the queue. requests always play ahead of the random
songs otto has picked.
otto is geared toward people who have ripped+encoded entire
albums. the otto database groups together tracks from an album and
keeps them in album order. whole albums can easily be played,
or shuffled together with tracks from other albums.
otto does search
otto tries to pack a lot of information on to a single page. at first
this means otto is not always the simplest thing to use.
however, once you get the hang of it, otto makes browsing and
using your mp3 collection a straightforward task and it tries to stay
out of your way as much as possible.
an example of this is the otto search function. if you type a search
term into the search form, otto will show search results in three
separate areas indicating search matches against artist names,
album names, and song titles.
otto does lists
otto lets you create lists of songs that interest you. you can create
as many lists as you like. once you have picked a list to work with,
icons appear next to all song titles while browsing the database
allowing you to easily add or delete songs to the list.
a special 'trash' list allows you to select songs which otto should
avoid when it is randomly picking songs. if you don't like the
currently playing song, there is a trash icon for quickly adding the
current song to the trash list so you never have to hear it again.
otto is multi-user
you can issue a separate username and password to each of your otto
users. this is useful in a office workgroup environment. if you
organize your mp3s such that each user's mp3s are in a separate
directory, then otto can keep track of who's albums are who's. otto
displays the album's owner next to the album title while you are
browsing the database. the currently playing track also has the owner
displayed so you know who to blame.
when a user is browsing a song which is tagged as being owned by them,
a download link appears next to that song allowing it to be saved
locally on the user's machine. if desired, this feature can be
disabled so any user can download any song.
otto keeps a list of the 30 most recently loaded albums so you can
easily see what has been recently loaded by your fellow users.
you can also choose to configure otto not to prompt for a username +
password at all. this can be handy when using otto at home where
multi-user features don't make as much sense.
otto as radio station
otto makes a fine front end for an internet radio station. instead of
using mpg123 to play the music out of your soundcard, otto
can use icecast to stream your mp3s over the network. you can even
combine mpg123 and icecast to play music and stream to the network at
the same time.
the front page for otto is a public page which does not require a
username or password. it shows what's playing and what's coming
up. otto also parses the icecast stats file and shows how many people
are currently listening. on the request interface, you can also see a
list of the last 30 icecast listeners and how long they were
if your users log into the web interface from the same machine they
use to listening to the stream, otto automatically associates that
username with the icecast listener address. this way you can
tell who is behind a given icecast connection.
otto as database
one of the design goals for otto was to be able to gracefully browse
and search a very large database of mp3 files. otto is a pleasure to
use even if you load 20,000 tracks into it. as part of dealing with so
many songs, otto has a few options for controlling the organization of
you can arrange for artists with multiple pseudonyms to be filed
together under one name. 'AFX' and 'Caustic Window' can be filed under
'Aphex Twin', for example. or maybe you would like to file a related
artist somewhere other than under their own name, 'Morrissey' under
'The Smiths' perhaps.
if you identify specific artists names as proper names, you can have
otto file them under their last name instead of their first. like
'Charlie Parker' under 'P' instead of 'C'.
otto also has a separate various artists section and a separate
soundtracks section. if you tell otto how to parse the song and artist
names from each of your various artists collections, you can have all
your 'Banco de Gaia' tracks appear under 'Banco de Gaia' including all
his appearances on numerous various artists collections.
otto has support for running multiple icecast channels at once. each
channel is configured with a different database of songs and has a
separate icecast stream associated with it. all from a single otto
otto has some international language support. it can be configured
to use an arbitrary character set encoding. it also has an alternate navagation bar
containing the greek alphabet in the iso-8859-7 character set. if you want
to support another language this will provide a great starting point.
it is easy to write small scripts that fetch the currently playing song
and the upcoming song queue. as long as you have mysql installed and
the mysql perl module available, the script can run either on the same
machine that runs otto, or on a remote machine. this is great for
driving non-web based displays (like lcd displays attached to the
serial port). a rough example script is included.
otto was originally inspired by the globecom jukebox. if otto doesn't
quite do it for you, then perhaps the globcom one will.
please see http://www.globecom.net/jukebox/
otto would like to send props out to its peeps. a special thank you
to willg (otto logo and general look), jas (suggested the
name), mbletsas, rmadams, bfitz, jfinks, mikeg, kasco, tschroed, dbrandon,
nfields, spero, and sgunn. thank you all for your help, feedback and
encouragement. i hope i didn't forget anyone, i'm bad that way.