Help - Search - Members - Calendar
Full Version: MSē Music Server System
Hydrogenaudio Forums > Hydrogenaudio Forum > General Audio
Qest
MSē is a set of php scripts that searches your computer for music and adds the music's information to a mysql database. This database can then be browsed remotely, and songs selected for playing (which play on the server). The purpose is to allow audiophiles to turn any old computer into a music server, tuck it away in some closet, and play their music remotely either through a computer or a pda or anything with an internet connection (or on the lan) and a browser.

[done] [in progress] [planned] [possible]

Features:
- Whenever a new artist is found, the system can be configured to steal biographies/portraits/band members from online artist databases.
- Steals album covers from online sources.
- Keeps md5 checksums (or if the format supports them (eg: flac), fingernails) so the database can detect curruption.
- Use mod_rewrite create a logical directory system for browsing database (eg artist/eminem becomes track?id=16
- A detailed playlist system.
- Optional on the fly transcoding for downloads.
- Will be able to interface with a variety of audio players.
- Detailed user permissions system that will give you complete control over your collection. You decide who (which ip's / which users) can upload/download/play music/view music, etc.
- Smarty Templating System, completely seperates the core from the gui. This means that it is very easy to make MSē look however you want it to look.
- Will be optionally packaged in one intaller (Apache + PHP + MySQL + Foobar) so that a few short clicks and you will be ready to go.
- Support for featured artists (artists who appear on a track), and bands (collection of artists). This means that when you search for <artist name>, you will get all cds/tracks by <artist name> as well as any cds/tracks by any bands that <artist name> is a member of as well as any tracks that <artist name> or a band he/her is apart of is featured on. This makes for a very in depth system. (Note: band member information will also be gathered remotely).
- Database can hold EAC log files, and can display them on album view.
- Streaming.

Qest
atici
QUOTE(Qest @ Feb 23 2005, 03:32 PM)
Current Downsides:
- No support for tags of any kind. Database is built on custom formatting strings
(Eg: D:\Lossless\%artist%\%album%<optional> [%year%]</optional>\ ... ). This means that the system will only usable by those with very organized music collections.

So that's how it works/is going to work.
*



I'm interested in using it. But it must support tags because it's impossible to store tons of information on the file path especially with classical music. Most organized collections include almost no information in the filename IMHO, for such info belongs to the tag.
beto
sorry, but in what this is differente from netjuke or jinzora?

Personally I use netjuke, but I think is always nice to have more options. Looking forward to see a release of your script.
atici
Is there any project like this that supports APEv2 tags? Most of my database is in MPC.
Qest
QUOTE
I'm interested in using it. But it must support tags because it's impossible to store tons of information on the file path especially with classical music. Most organized collections include almost no information in the filename IMHO, for such info belongs to the tag.


Well... I lean towards thinking that putting all that information into tags is a big expendature of time that I'd rather not make. More than likely I will include scripts similar to one's that gather album covers, artist biographies, etc to get extranious information that isn't in the file structure (eg: lyrics, genre, mood, etc).

QUOTE
sorry, but in what this is differente from netjuke or jinzora?


I'm designing this system to be exactly what I want. It's not that I have anything against the current systems in existance and it's not that what I'm doing is durastically different... I need a music server and I enjoy the challenge, why would I use something that's less than exactly what I want? Why would you use it? I dunno. Maybe you want exactly what I want, lol.
Preuss
QUOTE(Qest @ Feb 24 2005, 01:12 AM)
Well... I lean towards thinking that putting all that information into tags is a big expendature of time that I'd rather not make. More than likely I will include scripts similar to one's that gather album covers, artist biographies, etc to get extranious information that isn't in the file structure (eg: lyrics, genre, mood, etc).



If you decide to include support for tags (mp3s ID3 or APE).
Then there exists a script getid3.sourceforge.net they support:
  • ID3v1 (v1.0 & v1.1)
  • ID3v2 (v2.2, v2.3 & v2.4)
  • APE tags (v1 & v2)
  • (Ogg) VorbisComment
  • Lyrics3 (v1 & v2)
Qest
QUOTE(Preuss @ Feb 23 2005, 04:15 PM)
If you decide to include support for tags (mp3s ID3 or APE).
Then there exists a script getid3.sourceforge.net they support:

  • ID3v1 (v1.0 & v1.1)
  • ID3v2 (v2.2, v2.3 & v2.4)
  • APE tags (v1 & v2)
  • (Ogg) VorbisComment
  • Lyrics3 (v1 & v2)

*



Thank you. That could save me a lot of time should I change my mind.

Thanks,
Qest
Preuss
Can we try a demo of your application. I would like to test and help you , if you need any.

Have you thought of, under what license you will release your system.
encoded
Here's a feature idea for you. I often struggle with keeping my tags, files and database all up to date. What would be nice, is if when one makes a change to the database, a trigger function updates the file/dir structure accordingly, potentially updating tags as well.

You're undertaking a large endeavor, and I commend you. But consider this: you say your system doesn't do anything drastically different from what is out there. Is it better to hack on one of the already existing systems, to make it do what you want? That is one of the beautiful parts of open source after all. It also saves you a lot of work, and gets you a chunk of debugged and maintained code for free, all you have to do is maintain your changes.

Good luck, and let us know how it goes. I'd be interested in playing with it.

e.
Qest
QUOTE(Preuss @ Feb 24 2005, 06:52 AM)
Can we try a demo of your application. I would like to test and help you , if you need any.

In one or two weeks time I will post a link to my server and some screen shots so all those interested can take a look. And thanks for your offer of help, but I'm doing just fine on my own and making progressing quickly enough, so I don't think it's really necessary.

QUOTE(encoded @ Feb 24 2005, 07:14 AM)
Here's a feature idea for you.  I often struggle with keeping my tags, files and database all up to date.  What would be nice, is if when one makes a change to the database, a trigger function updates the file/dir structure accordingly, potentially updating tags as well.

That's more or less the exact opposite of what I have envisioned. I'm working around the idea of a system where there are no tags. There is just basic information stored in file structure, and the rest of the information retrieved from the internet.

For example, you file structure might be something like:
C:\My Music\%artist% - %album% - %track%

The system that takes what you give it (artist, album & track) and tries to fill in the blanks into the database. Eg: what track number? what year? album cover? artist biography? artist portrait? This seems like a really difficult idea... and yes, it probably is, but not as difficult as it would seem. Freedb can give all the album information you want. Allmusic is good from artist biographies. Amazon has good covers. In this fashion, the blanks are filled in and you have a good detailed database without any of the nitty-gritty work of editing tags. Also, after it retrieves this information from the database, it stores it as files in your directory structure in whatever format you want...

Eg: C:\My Music\Artist Portraits\%artist%.png

... So that it can be changed manually. (It looks in the filesystem for information first, and if it doesn't find it it retrieves it from remote locations, so if you already have covers for all your albums, then it doesn't need to look for them).

QUOTE(encoded @ Feb 24 2005, 07:14 AM)
You're undertaking a large endeavor, and I commend you. But consider this: you say your system doesn't do anything drastically different from what is out there.  Is it better to hack on one of the already existing systems, to make it do what you want?  That is one of the beautiful parts of open source after all.  It also saves you a lot of work, and gets you a chunk of debugged and maintained code for free, all you have to do is maintain your changes.

I'm sure your absolutely right. But the reality of the matter is that I'm doing this because I enjoy doing it. I'm sure I could hack/slash a pre-existing system to get what I want, but I enjoy the challenge and this way I can do things my own way.
jokull
The no-tag concept is brilliant IMO. Retrieving information from the internet is definately the way to go especially for an application like this. Information like dates (created and last played), ratings and times played need to be stored in a database or in tags. Foobar and other apps usually get information from 2 sources. Filenames and tags. With huge databases like allmusic and Amazon around I don't see the need for tags anymore. I think you should definately consider cuesheet support though. Many people have moved to single file FLAC backups with embedded cuesheets.

Have you considered making a foobar component to work alongside your app as a replacement for the database? It could read the backbone database from a local server, output a Foobar playlist and stream, on demand. To me this is the holy grail of music management systems. Is it possible?
Qest
I will definately include cue support, because a lot of people do seem to be moving in that directions. I suppose because it's the only real way to duplicate gap functionality, so some super-audiophiles seem to be going that way. As for the second half of what you said... I can't say I really understand. One of the great things about MSē is that it is a php system that uses an audio player rather than an audio player plug-in. Thus allowing you to do anything the system can do, from anywhere. It seems to me that getting rid of the php front-end would hinder the systems capability to do this. Or am I misunderstanding what you mean?
jokull
Sorry for extreme unclarity. I read over my reply and I don't blame you for not getting what I'm talking about.

For an ideal centrally controlled database of digital music the following is a scenario I picture.

A mix of FLAC lossless backups and MP3 albums all stored on a server computer. A php web interface for management. For playback I imagined some awesome custom Foobar2000 component installed on client computers. The job of the component would be to retrieve a list of available music along with all metadata. This way you could use Foobar2000 to stream the music to the client computer.

In short: Foobar2k component on client for database read and playback; PHP webfront for database management.

I'm not sure the foobar2000 component is a possibility.

Anyways I hope I was clearer this time about the concept.
Qest
I think I follow you. And yeah, I guess that would be kinda cool, but that's not really the purpose of this system. This system is mainly for controlling the server's playback remotely. Streaming is just an added feature because it's easy to add and increases the usefulness of the whole system.
beto
QUOTE(atici @ Feb 23 2005, 07:05 PM)
Is there any project like this that supports APEv2 tags? Most of my database is in MPC.
*



Take a look at this.
It uses getid3 to read the tags and supports APEv2.
Qest
Develope continues at a casual but determined pace. I'm posting some screenshots to give anyone interested a preview.

Basically... I have the whole building the database part of the system completed with the exception of a few fine points to work out regarding the "stealing" of information. I've also completed the user/permissions system because, well, better now than later. I'm now moved on to working on the user interface, which is what I posted shots of. It's just about complete. From there, I will work in the queue and player bridge... Final step is playlists. It's going at a good pace and I still expect to have a beta in a few months.

Note: these shots are of the pc interface, I haven't begun work on the pocketpc/palm interface yet.

I apologize in advance for the resolution. I know they are big. I didn't occure to me at the time to lower my resolution.

user posted image

Note: the below pictures don't show logs or album reviews. They are in the database, they just haven't been added to the template yet.
user posted image

user posted image

user posted image

user posted image
beto
this is looking really promising. can't wait to test it tongue.gif
Qest
I might take you up on that in a few months, lol.
madivad
Hey, just came across this and thought I would add in that I think it looks great!

I've been looking for a music server for a while and have tried some woeful products. I was even toying with writing my own, but between all the other projects I have, I don't think I'll ever get around to it.

Anyway, I'd like to offer my services to help test it for you, and also offer any assistance I might be able to give for this project as well. I am a web site developer specialising in PHP, so if you need a hand with some parts or whatever, get in touch and I'll give a hand as best I can.

I would make one suggestion though, use some rewrite rules in your .htaccess file so that you don't see the http posts, ie, where you have:

http:// localhost/MS2/artist.php?id=17

you could have:

http:// localhost/MS2/artist/17

This would get passed as the line you have and looks a little neater.

Also, if you wanted to get REALLY suave, you could probably even incorporate the actual names into the URL, although that's starting to get tricky (esp for multiple album names...) But it could be done, eg:

http:// localhost/MS2/artist/eminem

Especially with albums, multiples could come up, so you would basically implement a choices, or selections page, for example, of all the greatest hits albums if someone was to enter:

http:// localhost/MS2/album/GreatestHits or
http:// localhost/MS2/album/Greatest_Hits

depending on how you wanted to handle spaces. This would get parsed to a page as

http:// localhost/MS2/album.php?name=Greatest_Hits

Where you can access the database for name and return your id and continue on your merry way. If there are multiple albums, you would simply present a selection page.

Further, the user could further refine the search by adding more levels of directories:

http:// localhost/MS2/album/Greatest_Hits/ABBA biggrin.gif (a pun since you used einem)

Anyway, not wanting to tell you how to do your job, just thought I would offer some input. If you want more info on this let me know, or search for .htaccess redirects and such, you could start here (if you are interested):

Google search on terms htaccess, redirect, rewrite and products

Good luck and keep up the good work!

edit: I went back in and took out the links the board made out of the examples above.
Qest
@madivad: What you suggest is definately a good feature to have. It's officially "on the list". I don't expect to get around to it for a while though, as there is so much stuff to do that is more essential. In regards to your offer of assistance. I respectfully decline. This project is my favorate hobby, and I'm chugging away at a decent pace. I'm sure you understand.

An update: Project sails smoothly. I've been working on it at a steady pace, and I am I very proud to report that the system is at a usable state... as in, I'm using it for it's intended purpose! I'm currently working on fine-tuning of the (default) user interface, which features some pretty snazzy dhtml that makes the whole thing very intuative and quick to use. The only major building blocks left to add are playlists (which seems like more work than it will be), and some annoying problems I have to solve regarding executing programs with a php script when that script is called via command line. More window's permission crap to figure out. I'd say that within the next few weeks it will be ready for testing. By this, I mean that the bulk of the system will be done and in an entirely usable state. The system itself will probably never be complete... theres just too many possibilites.

I'm not going to bother with more screenshots, but rest assured that the interface is much nicer now than it was a month ago. You can also expect a live demo within the next few weeks aswell, which I will use as an opportunity to get some quality feedback.

Cheers,
Qest
Qest
One final thing I forgot to add. If anyone with some creativity can think of a better name than Music Server System, I'd be very appreciative. It's not that Music Server System is bad or anything, but the shorthand MSē reminds me too much of microsoft... Not a connection I want made.

Thanks.
Qest
madivad
QUOTE(Qest @ Apr 13 2005, 06:03 PM)
One final thing I forgot to add. If anyone with some creativity can think of a better name than Music Server System, I'd be very appreciative. It's not that Music Server System is bad or anything, but the shorthand MSē reminds me too much of microsoft... Not a connection I want made.

Ok, how about:

MēS - My Music Server, or
SMē - Serving My Music tongue.gif

(BTW, re respectfully decling. . . No problems and I fully understand)

edit: just some more:
Mē - My Music, Music Madness. . .

I like the squared though, I think you should keep it in one form or another
bxu-1i1l
What about a standalone version?
take a look at PriadoBlender

also i hope your code will be fast, i tried jinzora2 and it is extremely slow especially when loading pics.

n00b question: Where will the images retrieved from amazon be stored? is it possible to store them in mysql database? or i have to be connected to the internet all the time? or they will be written to the audio folders?
Qest
QUOTE(bxu-1i1l @ Apr 19 2005, 02:36 PM)
What about a standalone version?
take a look at PriadoBlender


This will not help. PHP must be runned as an apache module or you will not have the the capacity for remote management that is the underlying goal of this project. Thankyou for bringing this to my attention though, I didn't know that any things like that existed.

QUOTE(bxu-1i1l @ Apr 19 2005, 02:36 PM)
also i hope your code will be fast, i tried jinzora2 and it is extremely slow especially when loading pics.

n00b question: Where will the images retrieved from amazon be stored? is it possible to store them in mysql database? or i have to be connected to the internet all the time? or they will be written to the audio folders?


When covers/portraits are retrieved remotely, they are then stored as files in the directory structure of your collection (how is fully configurable -> formatting string). That file is never touched there after. Upon syncronization, these cover/portrait files are read and added and treated as though you added them to your collection yourself. The point of this is that the system can get a cover for you, but if it's not what you want, it's easy to remove/change it. Syncronization then adds the image itself to the database (at high quality -> would be 100% full resolution and lossless, but 1mb query limit so I am currently resizing to about 600x600. I'm going to have to look into this further). From there, they are displayed through scripts, resized on the fly (and soon to be cached for speed). They are displayed as png on your local area network, and jpeg (configurable quality) for remote connections. Right now the whole thing works to my satisfaction on my 60kbps upstream adsl and 1ghz 96mg ram server (and the cache hasn't even been implimented yet).

Is it the fastest way? probably not. But it's the most configurable. This way, the dimensions of images are adjustable by the style without require any sore of resizing or resyncronizing or anything.

Hope that clears a few things up. I'm not sure how clear I made myself. If you still have questions: shoot.
bxu-1i1l
thanks for replying,
you are very clear, i hope the resizing process doesn't slow the process but it is surely necessary, also i hope the cache doesn't take much space but it is not a big deal.
i heard that sites like allmusic can block ips that try to "steal" their database, is it true?
now i am really looking forward to trying MSē, please try your best to publish it as soon as possible.
ponchorage
This project is looking and sounding pretty sweet! I also created a similar project a while back but haven't looked at it for a long time. I focused on storing individual flac files and transcoding them to mp3 for streaming on the fly.

There is another similar project here:

http://www.netjukebox.nl/

It is pretty cool as well. It was created by WaldoMonster, an HA user/participant.

I can't wait to try this out. Keep us posted.
Qest
QUOTE(ponchorage @ Apr 20 2005, 12:00 PM)
There is another similar project here:

http://www.netjukebox.nl/

It is pretty cool as well. It was created by WaldoMonster, an HA user/participant.


That looks pretty neat. I'm going to take investigate it further to see if it's got anything that I should have aswell. Looks pretty neat, though... just not as configurable.
Qest
Good news. In a few days time I will post a live link so you guys can see the system in action for the first time. (in the mean time i'm just finalizing the user system. Making sure it's not possible for unauthorized users to access files in any way, etc. I don't want to get sued for copyright violation wink.gif).
bxu-1i1l
QUOTE(Qest @ Apr 21 2005, 01:11 PM)
Good news. In a few days time I will post a live link


Where is the link??!!!!!
It's been 9 days
Qest
I'm sorry for the delay. I am still closing security holes, and trying to make the system more secure before I put it on the internet.
mj-barton
This is amazing. Hoepfully it will eventually read the tags. Keep up the work.
windmiller
I have been looking for a Music server app that uses SQL databses, this is looking really good. Cant wait to see it in action!

Some ideas for a name, dont laugh

Mģ = Multi Media Manager

NMS = Nomadic Music Server.....roaming access to your music

Black Apple Music Server ...... I like the word Black Apple
christopher
Lemme add my name to the list of people that 1) loves the interface from the screenshots I've seen, 2) can't wait to try the system out, and 3) can't wait to try the system out biggrin.gif
ponchorage
Any news here? I'm sure if there was, we'd have heard so by now but I thought I'd at least ask.
Synthetic Soul
Totally OT! Please ignore.

QUOTE(windmiller @ May 7 2005, 12:52 AM)
Black Apple Music Server ...... I like the word Black Apple

Umm... that's two.

QUOTE(christopher @ May 8 2005, 11:39 PM)
Don't forget International Talk Like A Pirate Day! September the 19th!

LOL. A few of my friends went to pirate-related pubs (e.g.: The Ship) last year dressed as pirates. My daugther Romy was born on the 15th September, but if my wife had held out to the 19th she'd actually agreed to let me give her a piratey middle name. So close!
ponchorage
Hey Qest, any news?
ponchorage
Did this ever get released?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2008 Invision Power Services, Inc.