Commit 1547f941 authored by Aaron Bockover's avatar Aaron Bockover

Initial revision

Aaron Bockover ( (Core Sonance);
Jorn Baayen ( (Muine Metadata Layer);
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
2005-06-20 Aaron Bockover <>
* Project: First import to GNOME CVS as a Novell-owned project. Heavy
development ahead, starting to manage ChangeLog again.
2005-05-04 Aaron Bockover <>
* PlayerInterface.cs: Playlist renaming/delete/append
* Library.cs: Playlist renaming/delete/append
* SourceView.cs: Fixed cell editor for sources
2005-05-03 Aaron Bockover <>
* PlaylistView.cs: Reorder via DnD
2005-05-02 Aaron Bockover <>
* PlayerInterface.cs: New playlist creation support
* PlaylistView.cs: Multiple row selections supported.
2005-04-28 Aaron Bockover <>
* SimpleNotebook.cs: Very simple Notebook widget (without tabs) for the
status header widgets in the top of the main UI.
* SearchEntry.cs: Custom search entry widget with drop down menu for
simple searching
2005-04-24 Aaron Bockover <>
* SqlBuilder.cs: SQL Builder UI for searching/smart playlists.
2005-04-15 Aaron Bockover <>
* PlaylistView.cs: Column states saved, dialog to toggle column visibility
* TrackInfo.cs: Support for album information now
* Library.cs: Cache of all Library Tracks
* PlayerInterface.cs: New Interface!
2005-04-11 Aaron Bockover <>
* TrackInfo.cs: Fixed playlist loading bug
* Database.cs: SQLite connection managing for threads
2005-04-07 Aaron Bockover <>
* LibraryTransactions.cs: Playlist saving
2005-04-03 Aaron Bockover <>
* PlayerInterface.cs: Added connecting code to the LibraryTransactionStatus
* LibraryTransactionStatus.cs: Wrote UI for showing statistics in the
* ImageAnimation.cs: Wrote nice Animated Image widget
* LibraryTransactions.cs: Replaced FileLoader with LibraryTransactions
* FileLoader.cs: Removed FileLoader
* LibraryTransactionManager.cs: Wrote LibraryTransactionManager to
manage all Library IO in a safe way
2005-04-01 Aaron Bockover <>
* Preferences.cs: Wrote beginning of UI for Mimetype/Decoder handling
2005-03-31 Aaron Bockover <>
* Core.cs: Added support for global DecoderRegistry instance.
* GstMetadata.cs: Updated to use core global DecoderRegistry for supported
mimetype checking instead of old Core DB.
* DecoderRegistry.cs: Wrote DecoderRegistry class. This handles the parsing
of the GStreamer plugins registry to build a local decoders registry
for mimetype checking. The decoder registry is saved to XML for quick
loading on next run. Also will allow a UI for users to add/remove
* Database.cs, Core.cs: Removed Core database. All SQL queries are specific
to the Library database.
* Finally, a break from work to really do some hacking on Sonance again :-/
2005-03-10 Aaron Bockover <>
* PlayerInterface.cs: Progress bar for track loading/importing
* Preferences.cs: You can save/edit preferences
* Preferences.cs: New preferences dialog.
2005-03-09 Aaron Bockover <>
* FileLoader.cs: Support for SQL queries, sends IDataReader to TrackInfo.
Reduces library load times (4000 songs) to 5 seconds! Major optimization!
* TrackInfo.cs: New constructor that handles a raw IDataReader to reduce
the number of SQL queries.
* PlayerInterface.cs: Using new FileChooserDialog instead of old FileSelector
* PlaylistView.cs: Now all playlist additions are done based on a queue
and an interface timeout. This reduces load time by over 250% (vs. a
1:1 loader/UI sync). Uses FileLoader/FileLoaderManager.
* FileLoader.cs: Wrote a managed file/SQL loader. Manages a queue of
load requests, allows the cancellation of all requests. FileLoader
objects recurse directories and load TrackInfo objects, or load
them from the database.
2005-03-01 Aaron Bockover <>
* PlaylistRowRenderer.cs: Removed extern constructors... not allowed in
latest mcs.
* SourceView.cs: Removed extern constructors... not allowed in latest mcs.
* Library.cs: Removed extern constructors... not allowed in latest mcs.
* All: Changed namespaces to avoid conflicts with mcs 1.1.4. Project
now depends on gtk-sharp-2.0 (1.9.2), and the latest gst-sharp (0.2.4)
from SVN.
2005-02-28 Aaron Bockover <>
* Library.cs: Set of Source classes to define how to read data from
a given source.
* SourceDialog.cs: A window that embeds a SourceView widget, used by
the main interface to show a list of sources.
* SourceView.cs: A new TreeView widget for showing data sources (Library
and a list of Playlists)
* PlayerInterface.cs: Supports MmKeys.
* MmKeys.cs: Wraps mm-keys support in libsonance, adds MM-Keys support
to Sonance. Adapted from Muine.
* SignalUtils.cs: Wraps signal utilities in gobject-2.0. Needed for
MM-Keys. Adapted from Muine.
* NoticationAreaIcon.cs: Calls native egg-tray from libsonance
* Build System: Builds libsonance (C shared library) which includes
egg-tray support and mm-keys support. Dropped egg-sharp.dll.
* libsonance/mm-keys.c: Added to project
* libsonance/eggtrayicon.c: Added to project
* Dialogs.cs: Save playlist dialog
* PlayerInterface.cs: Can save playlist
* PlaylistView.cs: Now saves playlist to DB
* Library.cs: Playlist class saves to Library DB
* Database.cs: More DB utilities
2005-02-26 Aaron Bockover <>
* PlaylistView.cs: Fixed bug when removing item from playlist
* TrackInfo.cs: Writes metadata to Library database
* Database.cs: Supports new SQL generator objects as queries
* SqlGenerator.cs: New SQL query generator to easily generate complex and
safe SQL queries
* PlayerInterface.cs: Lots of code cleanp, and support for interfacing
with NotificationAreaIcon.
* NotificationAreaIcon.cs: Added tray icon support in GNOME through libegg.
Uses the egg-sharp.dll assembly, a wraper for
* Source/ Added rule to use gcc to build eggtrayicon.c
for the egg-sharp.dll assembly.
2005-02-24 Aaron Bockover <>
* Database.cs: Supports multiple databases (we now have a core and a library
database that are independent of eachother).
* Data/ Included Tables.sql
* Tables.sql: Defined all SQL Table construction in a SQL file, included
as resource.
* TrackProperties.cs: Updated to reflect new supported metadata. Also only
shows fields that we have data for (instead of showing "Unknown Field").
* TrackInfo.cs: Updated to reflect updated GstMetadata.
* GstMetadata.cs: Updated GStreamer metadata backend. Using a Hashtable to
store tag data.
* CommonTags.cs: Simple class containing GStreamer tag names as constant
* AboutBox.cs: Updated about box with new graphic, a tabbed information
layout, project information, and assembly information. New graphic does
not reference version, and version information is written based on the
main assembly, so no updates need to be made to this code anymore.
2005-02-21 Aaron Bockover <>
* Database.cs: Added dynamic mime type support checking based on
a GstDecoders and MimeSynonyms table in the SQL database.
If GstDecoders is empty or non-existant, it is constructed
based on the GStreamer registry.xml file. No hard-coded supported
mime types exist now.
* Database.cs: Added SQLite support. SQLite is now a dependency.
2005-02-18 Aaron Bockover <>
* PlayerInterface.cs: Fixed volume loading bug.
2005-02-18 Aaron Bockover <>
* Sonance-0.2.1: Minor release for updates below
* PlaylistView.cs: Fixed minor bug in playlist. PlayIter now ScrollToCell
to always keep the active item in view unless user manually scrolls out
of view
* PlayerInterface.cs: Statusbar now shows total number of items and duration
of entire playlist
* PlaylistView.cs: Added Update event. Fired whenever the playlist changes
* PlaylistView.cs: Added TotalDuration support to hold the length (time)
of entire playlist
2005-02-18 Aaron Bockover <>
* Sonance-0.2 - That was fast!?
2005-02-17 Aaron Bockover <>
* PlayerInterface.cs: Added a GConf client (/apps/Sonance). Now all interface
states are saved and loaded (Window size/position, volume, shuffle/repeat,
and search bar).
* PlayerInterface.cs: Added a search box, with back/forward features, and
it can be toggled via J or F3 (Similar to Firefox, live searching)
* PlaylistView.cs: Added searching support
* PlayerInterface.cs: Added support for "Add" files through Gtk.FileSelection
dialog. I hate that dialog. I can't wait for gtk-sharp2 to become stable
to use the new Gtk.FileChooser dialog. Mugh.
* PlaylistView.cs: Added directory reading and recursion for additions
* PlaylistView.cs: Added support for shuffle and repeat modes
* PlayerInterface.cs: Many UI enchancements. Interface is now
resizeable and there are shuffle/repeat toggle buttons
* TrackInfo.cs: Implemented a window for viewing selected track properties
(Shows metadata for track)
2005-02-17 Aaron Bockover <>
* Sonance-0.1 - First Public Release
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
Foundation, Inc.
This file is free documentation; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.
Basic Installation
These are generic installation instructions.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package.
It may also create one or more `.h' files containing system-dependent
definitions. Finally, it creates a shell script `config.status' that
you can run in the future to recreate the current configuration, and a
file `config.log' containing compiler output (useful mainly for
debugging `configure').
It can also use an optional file (typically called `config.cache'
and enabled with `--cache-file=config.cache' or simply `-C') that saves
the results of its tests to speed up reconfiguring. (Caching is
disabled by default to prevent problems with accidental use of stale
cache files.)
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can
be considered for the next release. If you are using the cache, and at
some point `config.cache' contains results you don't want to keep, you
may remove or edit it.
The file `' (or `') is used to create
`configure' by a program called `autoconf'. You only need
`' if you want to change it or regenerate `configure' using
a newer version of `autoconf'.
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system. If you're
using `csh' on an old version of System V, you might need to type
`sh ./configure' instead to prevent `csh' from trying to execute
`configure' itself.
Running `configure' takes awhile. While running, it prints some
messages telling which features it is checking for.
2. Type `make' to compile the package.
3. Optionally, type `make check' to run any self-tests that come with
the package.
4. Type `make install' to install the programs and any data files and
5. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
also a `make maintainer-clean' target, but that is intended mainly
for the package's developers. If you use it, you may have to get
all sorts of other programs in order to regenerate files that came
with the distribution.
Compilers and Options
Some systems require unusual options for compilation or linking that
the `configure' script does not know about. Run `./configure --help'
for details on some of the pertinent environment variables.
You can give `configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here
is an example:
./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
*Note Defining Variables::, for more details.
Compiling For Multiple Architectures
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you must use a version of `make' that
supports the `VPATH' variable, such as GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'.
If you have to use a `make' that does not support the `VPATH'
variable, you have to compile the package for one architecture at a
time in the source code directory. After you have installed the
package for one architecture, use `make distclean' before reconfiguring
for another architecture.
Installation Names
By default, `make install' will install the package's files in
`/usr/local/bin', `/usr/local/man', etc. You can specify an
installation prefix other than `/usr/local' by giving `configure' the
option `--prefix=PATH'.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
give `configure' the option `--exec-prefix=PATH', the package will use
PATH as the prefix for installing programs and libraries.
Documentation and other data files will still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=PATH' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories
you can set and what kinds of files go in them.
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Optional Features
Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
`README' should mention any `--enable-' and `--with-' options that the
package recognizes.
For packages that use the X Window System, `configure' can usually
find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.
Specifying the System Type
There may be some features `configure' cannot figure out
automatically, but needs to determine by the type of machine the package
will run on. Usually, assuming the package is built to be run on the
_same_ architectures, `configure' can figure that out, but if it prints
a message saying it cannot guess the machine type, give it the
`--build=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name which has the form:
where SYSTEM can have one of these forms:
See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
need to know the machine type.
If you are _building_ compiler tools for cross-compiling, you should
use the `--target=TYPE' option to select the type of system they will
produce code for.
If you want to _use_ a cross compiler, that generates code for a
platform different from the build platform, you should specify the
"host" platform (i.e., that on which the generated programs will
eventually be run) with `--host=TYPE'.
Sharing Defaults
If you want to set default values for `configure' scripts to share,
you can create a site shell script called `' that gives
default values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/' if it exists, then
`PREFIX/etc/' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
A warning: not all `configure' scripts look for a site script.
Defining Variables
Variables not defined in a site shell script can be set in the
environment passed to `configure'. However, some packages may run
configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set
them in the `configure' command line, using `VAR=value'. For example:
./configure CC=/usr/local2/bin/gcc
will cause the specified gcc to be used as the C compiler (unless it is
overridden in the site shell script).
`configure' Invocation
`configure' recognizes the following options to control how it
Print a summary of the options to `configure', and exit.
Print the version of Autoconf used to generate the `configure'
script, and exit.
Enable the cache: use and save the results of the tests in FILE,
traditionally `config.cache'. FILE defaults to `/dev/null' to
disable caching.
Alias for `--cache-file=config.cache'.
Do not print messages saying which checks are being made. To
suppress all normal output, redirect it to `/dev/null' (any error
messages will still be shown).
Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.
`configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details.
data \
libsonance \
src \
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = sonance.pc
Sonance.mdp \
Sonance.mds \
Sonance.prj \
DISTCLEANFILES=config.guess config.sub configure install-sh missing depcomp *.bak *~ sonance.pidb Sonance.pws mkinstalldirs aclocal.m4
18 February 2005:
* Second public release of Sonance (v0.2)
17 February 2005:
* First public release of Sonance (v0.1)
January 2005:
* GstPlayer engine is written in C#, Sonance is born (again)
November 2004:
* Sonance is started for the first time, under the original name,
Remix. It was written in C, and after two months of development,
was scrapped in favor of a complete rewrite in C# under Mono.
The C version never had a public release.
Sonance requires gst-sharp to be installed, along with the latest Mono
runtime, compiler, and libraries. Currently, gst-sharp is only available
via SVN.
Sonance MUST have:
mono-1.1.4 or better
gtk+-2.6 (or greater)
gnome-vfs-2.0 / gnome-desktop-2.0
gtk-sharp-2.0 (version 1.9.2+) ***
gst-sharp (version 0.2.4+) ***
sqlite 2.x
gtk-sharp-2.0 is a development release, but is relatively stable, and is
required by the latest gst-sharp. You can have both gtk-sharp and gtk-sharp-2.0
installed concurrently.
It is recommended that you use mono-1.1.6 or greater. At least 1.1.4 is required.
Sonance uses the SQLite database library for underlying database transactions.
You must have this library installed (2.x series).
Get mono-1.1.4 from the Mono project download page.
Get gtk-sharp-2.0 from the Gtk# project (
Mono 1.1.4:
tar zxvf mono-1.1.4.tar.gz
cd mono-1.1.4
./configure --prefix=/usr
su -c "make install"
Gtk# 2.0 (1.9.2)
tar zxvf gtk-sharp-1.9.2.tar.gz
cd gtk-sharp-1.9.2
./configure --prefix=/usr
su -c "make install"
gst-sharp (0.2.4 or greater)
As of Sonance-0.3.0, a pre-compiled gst-sharp.dll assembly
is bundled with Sonance. It is preferred that you build
gst-sharp yourself, but if this is causing problems, you
can try building Sonance with the bundled gst-sharp.dll.
** BUILD gst-sharp FROM SVN (skip if using bundled) **
svn co svn://
cd gst-sharp
./ --prefix=/usr
su -c "make install"
./configure --prefix=/usr
** OR if you want the bundled gst-sharp **
./configure --prefix=/usr --enable-bundled-gst-sharp
su -c "make install"
Also, you must have a working install of GStreamer (C libraries), and
it should be configured. Make sure you have run gst-register to register
your GStreamer plugins.
Sonance is in very early development! I am not responsible if you run
Sonance, and your computer catches fire. You have been warned.
# Anjuta Version 1.2.2
Compatibility Level: 1