From: "Peron, Stéphane" <address@hidden>
To: address@hidden
Subject: RE : MusicBox-0.2.9
Date: Wed, 9 Oct 2002 16:28:26 +0200
Wouldn't be a service better than a bundle in a such case ?
Imagine that you create the service named "GSCddb" .
You send to this service :
- The path of the cdrom
- The cddb server adress
And you get in return from the pasteboard all the information providen by a
cddb server.
So, we only save the cddb server name in each application settings and
thats
all ...
What do you think about ?
-----Message d'origine-----
De : Yen-Ju Chen [mailto:address@hidden
Envoyé : mercredi 9 octobre 2002 15:53
À : address@hidden
Objet : Re: MusicBox-0.2.9
Yes, I would like to do that very much.
There is a preference bundle in musicbox/MusicBox/PrefModule/FreeDB,
which let the user set up the freedb site they want to use.
The interface of this preference bundle is the same as GNUMail,
and as far as I know, GSburn use the same interface for preference.
The only problem I can see is that all the settings in bundle
will be save in the application's domain.
Therefore, even we use the same bundle,
the saved setting will be in different domain.
If we use the service, everytime GSburn and Encod
want to use the freedb, the MusicBox will be launched first,
which might not be good because MusicBox is not a small application,
or GSburn and Encod will depend on MusicBox for freedb support.
So my suggestion is put this preference into Preference.app
as the global setting for all the GNUstep application.
But I don't know whether freedb should be in Preference.app.
And even the freedb preference is in Preference.app,
we still need a place for freedb classes.
I have also a volume control (mixer), which can be shared by
all the sound applications to control the sound volume.
But again, I don't know it should be an independent application offering
service,
or a preference bundle in Preference.app ?
What does the volume control do in *step ?
The fundamental thing is that all these stuff are in a ShengGuang
library,
which is independent from MusicBox user interface.
I don't know whether you would like to use the same library,
or would like to use a shared bundle which I can create.
But as I said above, bundles can only save setting under application's
domain.
Therefore, even we use the same bundle,
MusicBox can't read the setting of Encod or GSburn. (I may be wrong).
The ShengGuang library also use bundle to access external libraries.
Therefore, even I use SDL/SDL_sound as external libraries,
it is not hard for you to use your favor tool/libraries,
as long as your bundle conform the protocol.
Actually I would like to write a bundle
which use cdda2wav or cdparanoia (I will try it later) instead SDL for
CD
control,
if you are interested in using ShengGuang library.
To make a summary:
1. All the basic freedb and CD related stuff are in ShengGuang library,
which use bundle to access external libraries.
2. We have to decide whether we would like to use service, bundle,
or library to shared these function ?
3. For the preference (freedb and volume control),
where would you like to put it ?
Globally in Preference.app or in each application ?
The final thing is that I would like to offer a high-level method
in freedb support.
Right now, instead of give it the cddb id,
you can simply give it the information of CD.
It will calculate the cddb id itself locally or through freedb site.
The information of CD is in CDTrack classes of ShengGuang library.
It is designed for SDL, but I think not too far from other libraries
and I can change that to meet your need.
It needs the length, offset, and frames of each track for now
to calculate the cddb id.
The returned information from freedb is in SongInfo classes,
which use NSDictionary internally.
So it can be changed easily for you.
My personal idea is that we can have a multimedia library/framework for
GNUstep.
ShengGuang library can be a start, or we can design a new one.
All the MusicBox, Encod and GSburn are based on this multimedia
library/framework.
Due to the choice of external tool/libraries,
this library/framework should be like gnustep-back
so that you can decide which external libraries you want to use.
Yen-Ju