Madsonic vs. MusicCabinet?

Madsonic Mashup Mod is a fork of the Subsonic 4.7 Server Build 3090 with some Subsonic Data schema modifications!

Moderator: moderators

Madsonic vs. MusicCabinet?

Postby Boutros » Wed Jul 17, 2013 9:30 pm

Hey all -

I switched from "vanilla Subsonic" to MusicCabinet about a year ago, and mostly really love it, but it appears the developer has disappeared (or at least stopped working on this project). It's maddening, because his last release fixed a long-standing bug in creation of Share links, which is an important feature to me, but it appears to have introduced a new bug, breaking Jukebox mode (which is also important to me).

SO anyway, Madsonic is intriguing to me as an alternative, but I'm hesitant to make the switch after all of the hours I spent getting MC set up the way I like it (let alone the nightmare of backing up all my users, etc.). So, I have a few questions before I proceed:

Is it possible to run a MusicCabinet installation and a Madsonic installation in parallel without having to do a bunch of futzing around with the Registry, just to check it out (and without importing my whole terabyte+ of music)?

Do Share Links work in Madsonic?

Does Jukebox Mode work in Madsonic?

Does Madsonic play nicely with iSub Music Streamer?

Are there "Music Discovery" features in Madsonic comparable to MusicCabinet's Last.fm integration (i.e. "Artists like..." "Play <Genre> radio" etc.)

Any general "Pros and Cons" from anyone who's used both systems?

Thanks in advance for any insight anyone can offer.
Boutros
 
Posts: 119
Joined: Mon Jun 06, 2011 6:09 pm

Re: Madsonic vs. MusicCabinet?

Postby jcduss » Thu Jul 18, 2013 8:46 pm

jcduss
 
Posts: 4
Joined: Thu Jan 05, 2012 2:20 am

Re: Madsonic vs. MusicCabinet?

Postby Boutros » Thu Jul 18, 2013 9:42 pm

Hey, thanks for the insight, jcduss. Unfortunately, getting SS installed and working was pretty much already testing the outer limits of my technical abilities, so I don't really know how to integrate this new code into my installation. Any tips? Or should I just hang tight and wait for hakko to return like a conquering hero from wherever he's gone and put out a new "official" release?
Boutros
 
Posts: 119
Joined: Mon Jun 06, 2011 6:09 pm

Re: Madsonic vs. MusicCabinet?

Postby GJ51 » Fri Jul 19, 2013 12:42 am

Funny how members are noticing that Hakko seems to have fallen off the grid when the Subsonic developer hasn't been evident either. He's only made 7 posts this year, mostly related to the new pricing model in ver. 4.8

http://sourceforge.net/p/subsonic/code/ ... n/TODO.TXT

I check this once a week or so to see if anything is going on, but I can't remember how long it's been since I noticed any changes here.

Doesn't look like either developer is active anymore...

Madsonic is still actively developing and the feature set he's already put in place is so far ahead of the pack that even if he drops off for a while, it's not likely that either Subsonic or Music Cabinet are likely to catch up.

Admittedly, Music Cabinet is a bit different in approach than Subsonic or Madsonic, and it's sad to see him disappear.

Another example of why open source is always a roll of the dice.

I'm not sure about conversion from Music Cabinet to Madsonic as Music Cabinet uses a different database. You could ask MadEvil over on his forum.

http://forum.madsonic.org/index.php
Gary J

http://bios-mods.com
http://www.maplegrovepartners.com
http://theaverageguy.tv/category/tagpodcasts/cyberfrontiers/
User avatar
GJ51
 
Posts: 3492
Joined: Wed Oct 20, 2010 11:58 pm
Location: Western New York

Re: Madsonic vs. MusicCabinet?

Postby Boutros » Fri Jul 19, 2013 3:59 pm

Always good to get your perspective, GJ51.

I think the difference between hakko going missing and Sindre being less active is just that Sindre used to only roll out one or two big changes/versions per year, so I never really looked for them much, whereas for a while there, hakko was rolling out an update seemingly monthly. I don't need constant updates, I just wanted to get back the Jukebox functionality that broke in his last release. Thankfully, with a little bit of Googling, I think I've figured out how to integrate the fork that jcduss pointed me to on GitHub, so I'll probably stick with MusicCabinet for now (assuming Jukebox works - going to try updating with my new .war file when I get home tonight).

I'd still love to check out Madsonic, though. Could you (or some other friendly Madsonic user reading this thread) possibly set me up with a guest account on your server? I am very curious about what it looks like "in the wild," but not curious enough (at least at this point) to do a fresh install.

Thanks all!

- Boutros
Boutros
 
Posts: 119
Joined: Mon Jun 06, 2011 6:09 pm

Re: Madsonic vs. MusicCabinet?

Postby GJ51 » Fri Jul 19, 2013 4:21 pm

No problem - send me a PM with a username/password you want.
Gary J

http://bios-mods.com
http://www.maplegrovepartners.com
http://theaverageguy.tv/category/tagpodcasts/cyberfrontiers/
User avatar
GJ51
 
Posts: 3492
Joined: Wed Oct 20, 2010 11:58 pm
Location: Western New York

Re: Madsonic vs. MusicCabinet?

Postby Boutros » Fri Jul 19, 2013 4:41 pm

GJ51 wrote:No problem - send me a PM with a username/password you want.


You rule! Sending it to you now.
Boutros
 
Posts: 119
Joined: Mon Jun 06, 2011 6:09 pm

Re: Madsonic vs. MusicCabinet?

Postby gurutech » Fri Jul 19, 2013 5:12 pm

IF you want to create your own ID and password, you can test my site. http://bustermusic.subsonic.org Running Madsonic as well.
Image
gurutech
 
Posts: 492
Joined: Sun Jan 15, 2012 9:56 pm

Re: Madsonic vs. MusicCabinet?

Postby Boutros » Fri Jul 19, 2013 5:22 pm

gurutech wrote:IF you want to create your own ID and password, you can test my site. http://bustermusic.subsonic.org Running Madsonic as well.


Awesome! Don't mind if I do :)
Boutros
 
Posts: 119
Joined: Mon Jun 06, 2011 6:09 pm

Re: Madsonic vs. MusicCabinet?

Postby jfmus » Wed Jul 24, 2013 10:57 pm

Boutros,

I was able to get the jukebox working with the new build. I pasted the code into a new file, and replaced the file in the program folder.

Copy and paste the text below into a text file, and save the file as subsonic-servlet.xml (change the .txt to .xml)

Go to your subsonic installation, and find X:\subsonic\jetty\0.7.24\webapp\WEB-INF\subsonic-servlet.xml (rename the original file with .old at the end)

Move the file you just created to the folder. Stop your server, and re-start. That is all I did, and I can use the Jukebox feature from iSub now.

Hope this helps.

jfmus

copy and paste this:

<?xml version="1.0" encoding="ISO-8859-1"?>

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/b ... ns-3.0.xsd">

<bean id="leftController" class="net.sourceforge.subsonic.controller.LeftController">
<property name="viewName" value="left"/>
<property name="securityService" ref="securityService"/>
<property name="settingsService" ref="settingsService"/>
<property name="playerService" ref="playerService"/>
<property name="mediaFolderService" ref="mediaFolderService"/>
<property name="libraryBrowserService" ref="libraryBrowserService"/>
<property name="libraryUpdateService" ref="libraryUpdateService"/>
<property name="libraryStatusService" ref="ajaxLibraryStatusService"/>
<property name="artistIndexService" ref="artistIndexService"/>
<property name="tagService" ref="tagService"/>
</bean>
<bean id="rightController" class="net.sourceforge.subsonic.controller.RightController">
<property name="viewName" value="right"/>
<property name="securityService" ref="securityService"/>
<property name="settingsService" ref="settingsService"/>
</bean>
<bean id="statusController" class="net.sourceforge.subsonic.controller.StatusController">
<property name="viewName" value="status"/>
<property name="statusService" ref="statusService"/>
</bean>
<bean id="mainController" class="net.sourceforge.subsonic.controller.MainController">
<property name="viewName" value="main"/>
<property name="securityService" ref="securityService"/>
<property name="playerService" ref="playerService"/>
<property name="mediaFileService" ref="mediaFileService"/>
</bean>
<bean id="artistController" class="net.sourceforge.subsonic.controller.ArtistController">
<property name="viewName" value="artist"/>
<property name="playerService" ref="playerService"/>
<property name="securityService" ref="securityService"/>
<property name="settingsService" ref="settingsService"/>
<property name="mediaFileService" ref="mediaFileService"/>
<property name="artistInfoService" ref="artistInfoService"/>
<property name="artistTopTagsService" ref="artistTopTagsService"/>
<property name="libraryBrowserService" ref="libraryBrowserService"/>
<property name="starService" ref="starService"/>
</bean>
<bean id="artistGenresController" class="net.sourceforge.subsonic.controller.ArtistGenresController">
<property name="viewName" value="artistGenres"/>
<property name="securityService" ref="securityService"/>
<property name="settingsService" ref="settingsService"/>
<property name="artistInfoService" ref="artistInfoService"/>
<property name="artistTopTagsService" ref="artistTopTagsService"/>
<property name="starService" ref="starService"/>
<property name="tagService" ref="tagService"/>
</bean>
<bean id="albumController" class="net.sourceforge.subsonic.controller.AlbumController">
<property name="securityService" ref="securityService"/>
<property name="settingsService" ref="settingsService"/>
<property name="mediaFileService" ref="mediaFileService"/>
<property name="starService" ref="starService"/>
</bean>
<bean id="topController" class="net.sourceforge.subsonic.controller.TopController">
<property name="viewName" value="top"/>
<property name="settingsService" ref="settingsService"/>
<property name="securityService" ref="securityService"/>
<property name="mediaFolderService" ref="mediaFolderService"/>
</bean>
<bean id="helpController" class="net.sourceforge.subsonic.controller.HelpController">
<property name="viewName" value="help"/>
<property name="versionService" ref="versionService"/>
<property name="settingsService" ref="settingsService"/>
</bean>
<bean id="moreController" class="net.sourceforge.subsonic.controller.MoreController">
<property name="viewName" value="more"/>
<property name="mediaFolderService" ref="mediaFolderService"/>
<property name="securityService" ref="securityService"/>
</bean>
<bean id="uploadController" class="net.sourceforge.subsonic.controller.UploadController">
<property name="viewName" value="upload"/>
<property name="securityService" ref="securityService"/>
<property name="statusService" ref="statusService"/>
<property name="playerService" ref="playerService"/>
<property name="settingsService" ref="settingsService"/>
<property name="libraryUpdateService" ref="libraryUpdateService"/>
<property name="libraryStatusService" ref="ajaxLibraryStatusService"/>
</bean>
<bean id="lyricsController" class="net.sourceforge.subsonic.controller.LyricsController">
<property name="viewName" value="lyrics"/>
<property name="libraryBrowserService" ref="libraryBrowserService"/>
</bean>
<bean id="podcastController" class="net.sourceforge.subsonic.controller.PodcastController">
<property name="viewName" value="podcast"/>
<property name="playlistService" ref="playlistService"/>
<property name="settingsService" ref="settingsService"/>
</bean>
<bean id="podcastReceiverController" class="net.sourceforge.subsonic.controller.PodcastReceiverController">
<property name="viewName" value="podcastReceiver"/>
<property name="podcastService" ref="podcastService"/>
<property name="securityService" ref="securityService"/>
<property name="settingsService" ref="settingsService"/>
<property name="mediaFileService" ref="mediaFileService"/>
</bean>
<bean id="podcastReceiverAdminController"
class="net.sourceforge.subsonic.controller.PodcastReceiverAdminController">
<property name="podcastService" ref="podcastService"/>
</bean>
<bean id="shareManagementController" class="net.sourceforge.subsonic.controller.ShareManagementController">
<property name="settingsService" ref="settingsService"/>
<property name="mediaFileService" ref="mediaFileService"/>
<property name="shareService" ref="shareService"/>
<property name="playerService" ref="playerService"/>
<property name="securityService" ref="securityService"/>
</bean>
<bean id="loadPlaylistController" class="net.sourceforge.subsonic.controller.LoadPlaylistController">
<property name="securityService" ref="securityService"/>
<property name="playlistService" ref="playlistService"/>
<property name="playerService" ref="playerService"/>
</bean>
<bean id="savePlaylistController" class="net.sourceforge.subsonic.controller.SavePlaylistController">
<property name="commandName" value="command"/>
<property name="commandClass" value="net.sourceforge.subsonic.command.SavePlaylistCommand"/>
<property name="validator" ref="savePlaylistValidator"/>
<property name="formView" value="savePlaylist"/>
<property name="successView" value="nowPlaying.view"/>
<property name="playlistService" ref="playlistService"/>
<property name="playerService" ref="playerService"/>
</bean>
<bean id="changeCoverArtController" class="net.sourceforge.subsonic.controller.ChangeCoverArtController">
<property name="viewName" value="changeCoverArt"/>
<property name="mediaFileService" ref="mediaFileService"/>
</bean>
<bean id="nowPlayingController" class="net.sourceforge.subsonic.controller.NowPlayingController">
<property name="playerService" ref="playerService"/>
<property name="statusService" ref="statusService"/>
<property name="mediaFileService" ref="mediaFileService"/>
</bean>
<bean id="searchController" class="net.sourceforge.subsonic.controller.SearchController">
<property name="commandClass" value="net.sourceforge.subsonic.command.SearchCommand"/>
<property name="successView" value="search"/>
<property name="formView" value="search"/>
<property name="securityService" ref="securityService"/>
<property name="settingsService" ref="settingsService"/>
<property name="playerService" ref="playerService"/>
<property name="libraryUpdateService" ref="libraryUpdateService"/>
<property name="nameSearchService" ref="nameSearchService"/>
<property name="starService" ref="starService"/>
</bean>
<bean id="advancedSearchController" class="net.sourceforge.subsonic.controller.AdvancedSearchController">
<property name="viewName" value="advancedSearch"/>
<property name="nameSearchService" ref="nameSearchService"/>
<property name="tagService" ref="tagService"/>
<property name="mediaFolderService" ref="mediaFolderService"/>
</bean>
<bean id="advancedSearchResultController" class="net.sourceforge.subsonic.controller.AdvancedSearchResultController">
<property name="viewName" value="advancedSearchResult"/>
<property name="nameSearchService" ref="nameSearchService"/>
<property name="securityService" ref="securityService"/>
<property name="settingsService" ref="settingsService"/>
<property name="mediaFileService" ref="mediaFileService"/>
<property name="starService" ref="starService"/>
</bean>
<bean id="settingsController" class="net.sourceforge.subsonic.controller.SettingsController">
<property name="securityService" ref="securityService"/>
</bean>
<bean id="playerSettingsController" class="net.sourceforge.subsonic.controller.PlayerSettingsController">
<property name="commandClass" value="net.sourceforge.subsonic.command.PlayerSettingsCommand"/>
<property name="successView" value="playerSettings"/>
<property name="formView" value="playerSettings"/>
<property name="playerService" ref="playerService"/>
<property name="securityService" ref="securityService"/>
<property name="transcodingService" ref="transcodingService"/>
</bean>
<bean id="shareSettingsController" class="net.sourceforge.subsonic.controller.ShareSettingsController">
<property name="viewName" value="shareSettings"/>
<property name="shareService" ref="shareService"/>
<property name="securityService" ref="securityService"/>
</bean>
<bean id="mediaFolderSettingsController" class="net.sourceforge.subsonic.controller.MediaFolderSettingsController">
<property name="viewName" value="mediaFolderSettings"/>
<property name="settingsService" ref="settingsService"/>
<property name="searchService" ref="searchService"/>
<property name="mediaFolderService" ref="mediaFolderService"/>
<property name="libraryBrowserService" ref="libraryBrowserService"/>
<property name="libraryUpdateService" ref="libraryUpdateService"/>
<property name="databaseAdministrationService" ref="databaseAdministrationService"/>
</bean>
<bean id="networkSettingsController" class="net.sourceforge.subsonic.controller.NetworkSettingsController">
<property name="commandClass" value="net.sourceforge.subsonic.command.NetworkSettingsCommand"/>
<property name="successView" value="networkSettings"/>
<property name="formView" value="networkSettings"/>
<property name="settingsService" ref="settingsService"/>
<property name="networkService" ref="networkService"/>
</bean>
<bean id="transcodingSettingsController" class="net.sourceforge.subsonic.controller.TranscodingSettingsController">
<property name="viewName" value="transcodingSettings"/>
<property name="transcodingService" ref="transcodingService"/>
<property name="settingsService" ref="settingsService"/>
</bean>
<bean id="internetRadioSettingsController"
class="net.sourceforge.subsonic.controller.InternetRadioSettingsController">
<property name="viewName" value="internetRadioSettings"/>
<property name="settingsService" ref="settingsService"/>
</bean>
<bean id="podcastSettingsController" class="net.sourceforge.subsonic.controller.PodcastSettingsController">
<property name="commandClass" value="net.sourceforge.subsonic.command.PodcastSettingsCommand"/>
<property name="successView" value="podcastSettings"/>
<property name="formView" value="podcastSettings"/>
<property name="settingsService" ref="settingsService"/>
<property name="podcastService" ref="podcastService"/>
</bean>
<bean id="searchSettingsController" class="net.sourceforge.subsonic.controller.SearchSettingsController">
<property name="commandClass" value="net.sourceforge.subsonic.command.SearchSettingsCommand"/>
<property name="successView" value="searchSettings"/>
<property name="formView" value="searchSettings"/>
<property name="settingsService" ref="settingsService"/>
<property name="searchService" ref="searchService"/>
<property name="databaseAdministrationService" ref="databaseAdministrationService"/>
</bean>
<bean id="musicCabinetSettingsController" class="net.sourceforge.subsonic.controller.MusicCabinetSettingsController">
<property name="commandClass" value="net.sourceforge.subsonic.command.MusicCabinetSettingsCommand"/>
<property name="successView" value="musicCabinetSettings"/>
<property name="formView" value="musicCabinetSettings"/>
<property name="databaseAdministrationService" ref="databaseAdministrationService"/>
<property name="playlistGeneratorService" ref="playlistGeneratorService"/>
<property name="webserviceHistoryService" ref="webserviceHistoryService"/>
<property name="settingsService" ref="settingsService"/>
<property name="lastFmSettingsService" ref="lastFmSettingsService"/>
<property name="searchService" ref="searchService"/>
<property name="mediaFolderService" ref="mediaFolderService"/>
<property name="libraryUpdateService" ref="libraryUpdateService"/>
</bean>
<bean id="generalSettingsController" class="net.sourceforge.subsonic.controller.GeneralSettingsController">
<property name="commandClass" value="net.sourceforge.subsonic.command.GeneralSettingsCommand"/>
<property name="successView" value="generalSettings"/>
<property name="formView" value="generalSettings"/>
<property name="settingsService" ref="settingsService"/>
</bean>
<bean id="advancedSettingsController" class="net.sourceforge.subsonic.controller.AdvancedSettingsController">
<property name="commandClass" value="net.sourceforge.subsonic.command.AdvancedSettingsCommand"/>
<property name="successView" value="advancedSettings"/>
<property name="formView" value="advancedSettings"/>
<property name="settingsService" ref="settingsService"/>
</bean>
<bean id="personalSettingsController" class="net.sourceforge.subsonic.controller.PersonalSettingsController">
<property name="commandClass" value="net.sourceforge.subsonic.command.PersonalSettingsCommand"/>
<property name="successView" value="personalSettings"/>
<property name="formView" value="personalSettings"/>
<property name="settingsService" ref="settingsService"/>
<property name="securityService" ref="securityService"/>
</bean>
<bean id="lastFmSettingsController" class="net.sourceforge.subsonic.controller.LastFmSettingsController">
<property name="viewName" value="lastFmSettings"/>
<property name="lastFmService" ref="lastFmService"/>
<property name="securityService" ref="securityService"/>
<property name="settingsService" ref="settingsService"/>
</bean>
<bean id="avatarUploadController" class="net.sourceforge.subsonic.controller.AvatarUploadController">
<property name="viewName" value="avatarUploadResult"/>
<property name="settingsService" ref="settingsService"/>
<property name="securityService" ref="securityService"/>
</bean>
<bean id="userSettingsController" class="net.sourceforge.subsonic.controller.UserSettingsController">
<property name="sessionForm" value="true"/>
<property name="commandClass" value="net.sourceforge.subsonic.command.UserSettingsCommand"/>
<property name="validator" ref="userSettingsValidator"/>
<property name="successView" value="userSettings"/>
<property name="formView" value="userSettings"/>
<property name="securityService" ref="securityService"/>
<property name="settingsService" ref="settingsService"/>
<property name="transcodingService" ref="transcodingService"/>
</bean>
<bean id="passwordSettingsController" class="net.sourceforge.subsonic.controller.PasswordSettingsController">
<property name="sessionForm" value="true"/>
<property name="commandClass" value="net.sourceforge.subsonic.command.PasswordSettingsCommand"/>
<property name="validator" ref="passwordSettingsValidator"/>
<property name="successView" value="passwordSettings"/>
<property name="formView" value="passwordSettings"/>
<property name="securityService" ref="securityService"/>
</bean>
<bean id="homeController" class="net.sourceforge.subsonic.controller.HomeController">
<property name="viewName" value="home"/>
<property name="settingsService" ref="settingsService"/>
<property name="securityService" ref="securityService"/>
<property name="userTopArtistsService" ref="userTopArtistsService"/>
<property name="artistRecommendationService" ref="artistRecommendationService"/>
<property name="libraryUpdateService" ref="libraryUpdateService"/>
<property name="libraryBrowserService" ref="libraryBrowserService"/>
<property name="mediaFileService" ref="mediaFileService"/>
<property name="starService" ref="starService"/>
</bean>
<bean id="editTagsController" class="net.sourceforge.subsonic.controller.EditTagsController">
<property name="viewName" value="editTags"/>
<property name="mediaFileService" ref="mediaFileService"/>
</bean>
<bean id="relatedController" class="net.sourceforge.subsonic.controller.RelatedController">
<property name="viewName" value="related"/>
<property name="artistRecommendationService" ref="artistRecommendationService"/>
<property name="artistInfoService" ref="artistInfoService"/>
<property name="securityService" ref="securityService"/>
<property name="settingsService" ref="settingsService"/>
</bean>
<bean id="artistDetailsController" class="net.sourceforge.subsonic.controller.ArtistDetailsController">
<property name="viewName" value="artistDetails"/>
<property name="artistInfoService" ref="artistInfoService"/>
<property name="artistTopTagsService" ref="artistTopTagsService"/>
<property name="musicBrainzService" ref="musicBrainzService"/>
<property name="artistTopTracksService" ref="artistTopTracksService"/>
<property name="mediaFileService" ref="mediaFileService"/>
<property name="securityService" ref="securityService"/>
<property name="settingsService" ref="settingsService"/>
<property name="starService" ref="starService"/>
</bean>
<bean id="radioController" class="net.sourceforge.subsonic.controller.RadioController">
<property name="viewName" value="radio"/>
<property name="tagService" ref="tagService"/>
<property name="libraryBrowserService" ref="libraryBrowserService"/>
</bean>
<bean id="genresController" class="net.sourceforge.subsonic.controller.GenresController">
<property name="viewName" value="genres"/>
<property name="settingsService" ref="settingsService"/>
<property name="securityService" ref="securityService"/>
<property name="tagService" ref="tagService"/>
<property name="tagInfoService" ref="tagInfoService"/>
<property name="lastFmService" ref="lastFmService"/>
<property name="artistRecommendationService" ref="artistRecommendationService"/>
<property name="libraryBrowserService" ref="libraryBrowserService"/>
</bean>
<bean id="fileTreeController" class="net.sourceforge.subsonic.controller.FileTreeController">
<property name="viewName" value="fileTree"/>
<property name="settingsService" ref="settingsService"/>
<property name="securityService" ref="securityService"/>
<property name="searchService" ref="searchService"/>
<property name="mediaFileService" ref="mediaFileService"/>
<property name="starService" ref="starService"/>
<property name="libraryBrowserService" ref="libraryBrowserService"/>
<property name="directoryBrowserService" ref="directoryBrowserService"/>
</bean>
<bean id="tagSettingsController" class="net.sourceforge.subsonic.controller.TagSettingsController">
<property name="commandClass" value="net.sourceforge.subsonic.command.TagSettingsCommand"/>
<property name="successView" value="tagSettings"/>
<property name="formView" value="tagSettings"/>
<property name="tagService" ref="tagService"/>
<property name="settingsService" ref="settingsService"/>
</bean>
<bean id="groupSettingsController" class="net.sourceforge.subsonic.controller.GroupSettingsController">
<property name="viewName" value="groupSettings"/>
<property name="lastFmService" ref="lastFmService"/>
<property name="groupWeeklyArtistChartService" ref="groupWeeklyArtistChartService"/>
</bean>
<bean id="editArtistController" class="net.sourceforge.subsonic.controller.EditArtistController">
<property name="commandClass" value="net.sourceforge.subsonic.command.EditArtistCommand"/>
<property name="successView" value="editArtist"/>
<property name="formView" value="editArtist"/>
<property name="artistInfoService" ref="artistInfoService"/>
</bean>
<bean id="missingAlbumsController" class="net.sourceforge.subsonic.controller.MissingAlbumsController">
<property name="viewName" value="missingAlbums"/>
<property name="musicBrainzService" ref="musicBrainzService"/>
</bean>
<bean id="missingAlbumsSearchController" class="net.sourceforge.subsonic.controller.MissingAlbumsSearchController">
<property name="viewName" value="missingAlbumsSearch"/>
<property name="musicBrainzService" ref="musicBrainzService"/>
<property name="securityService" ref="securityService"/>
<property name="settingsService" ref="settingsService"/>
</bean>
<bean id="playlistController" class="net.sourceforge.subsonic.controller.PlaylistController">
<property name="viewName" value="playlist"/>
<property name="playerService" ref="playerService"/>
<property name="securityService" ref="securityService"/>
<property name="settingsService" ref="settingsService"/>
</bean>
<bean id="xspfPlaylistController" class="net.sourceforge.subsonic.controller.XspfPlaylistController">
<property name="viewName" value="xspfPlaylist"/>
<property name="playerService" ref="playerService"/>
<property name="mediaFileService" ref="mediaFileService"/>
</bean>
<bean id="coverArtController" class="net.sourceforge.subsonic.controller.CoverArtController">
<property name="securityService" ref="securityService"/>
<property name="audioTagService" ref="audioTagService"/>
</bean>
<bean id="avatarController" class="net.sourceforge.subsonic.controller.AvatarController">
<property name="settingsService" ref="settingsService"/>
</bean>
<bean id="proxyController" class="net.sourceforge.subsonic.controller.ProxyController"/>
<bean id="statusChartController" class="net.sourceforge.subsonic.controller.StatusChartController">
<property name="statusService" ref="statusService"/>
</bean>
<bean id="userChartController" class="net.sourceforge.subsonic.controller.UserChartController">
<property name="securityService" ref="securityService"/>
</bean>
<bean id="m3uController" class="net.sourceforge.subsonic.controller.M3UController">
<property name="playerService" ref="playerService"/>
<property name="settingsService" ref="settingsService"/>
<property name="transcodingService" ref="transcodingService"/>
</bean>
<bean id="streamController" class="net.sourceforge.subsonic.controller.StreamController">
<property name="playerService" ref="playerService"/>
<property name="playlistService" ref="playlistService"/>
<property name="statusService" ref="statusService"/>
<property name="securityService" ref="securityService"/>
<property name="settingsService" ref="settingsService"/>
<property name="mediaFileService" ref="mediaFileService"/>
<property name="transcodingService" ref="transcodingService"/>
<property name="audioScrobblerService" ref="audioScrobblerService"/>
</bean>
<bean id="hlsController" class="net.sourceforge.subsonic.controller.HLSController">
<property name="playerService" ref="playerService"/>
<property name="mediaFileService" ref="mediaFileService"/>
</bean>
<bean id="videoPlayerController" class="net.sourceforge.subsonic.controller.VideoPlayerController">
<property name="viewName" value="videoPlayer"/>
<property name="mediaFileService" ref="mediaFileService"/>
<property name="settingsService" ref="settingsService"/>
<property name="playerService" ref="playerService"/>
</bean>
<bean id="externalPlayerController" class="net.sourceforge.subsonic.controller.ExternalPlayerController">
<property name="viewName" value="externalPlayer"/>
<property name="mediaFileService" ref="mediaFileService"/>
<property name="settingsService" ref="settingsService"/>
<property name="securityService" ref="securityService"/>
<property name="playerService" ref="playerService"/>
<property name="shareDao" ref="shareDao"/>
</bean>
<bean id="downloadController" class="net.sourceforge.subsonic.controller.DownloadController">
<property name="playerService" ref="playerService"/>
<property name="statusService" ref="statusService"/>
<property name="securityService" ref="securityService"/>
<property name="playlistService" ref="playlistService"/>
<property name="settingsService" ref="settingsService"/>
<property name="mediaFileService" ref="mediaFileService"/>
</bean>
<bean id="donateController" class="net.sourceforge.subsonic.controller.DonateController">
<property name="commandClass" value="net.sourceforge.subsonic.command.DonateCommand"/>
<property name="successView" value="donate"/>
<property name="formView" value="donate"/>
<property name="validator" ref="donateValidator"/>
<property name="settingsService" ref="settingsService"/>
</bean>
<bean id="multiController" class="net.sourceforge.subsonic.controller.MultiController">
<property name="securityService" ref="securityService"/>
<property name="settingsService" ref="settingsService"/>
</bean>
<bean id="restSystemController" class="net.sourceforge.subsonic.controller.RESTSystemController">
<property name="playerService" ref="playerService"/>
<property name="settingsService" ref="settingsService"/>
</bean>
<bean id="restBrowseController" class="net.sourceforge.subsonic.controller.RESTBrowseController">
<property name="playerService" ref="playerService"/>
<property name="settingsService" ref="settingsService"/>
<property name="securityService" ref="securityService"/>
<property name="mediaFileService" ref="mediaFileService"/>
<property name="transcodingService" ref="transcodingService"/>
<property name="leftController" ref="leftController"/>
<property name="homeController" ref="homeController"/>
<property name="statusService" ref="statusService"/>
<property name="libraryBrowserService" ref="libraryBrowserService"/>
<property name="artistIndexService" ref="artistIndexService"/>
<property name="artistInfoService" ref="artistInfoService"/>
<property name="tagService" ref="tagService"/>
<property name="playlistGeneratorService" ref="playlistGeneratorService"/>
<property name="artistRecommendationService" ref="artistRecommendationService"/>
<property name="mediaFolderService" ref="mediaFolderService"/>
<property name="directoryBrowserService" ref="directoryBrowserService"/>
</bean>
<bean id="restSearchController" class="net.sourceforge.subsonic.controller.RESTSearchController">
<property name="restBrowseController" ref="restBrowseController"/>
<property name="playerService" ref="playerService"/>
<property name="nameSearchService" ref="nameSearchService"/>
<property name="libraryBrowserService" ref="libraryBrowserService"/>
</bean>
<bean id="restPlaylistController" class="net.sourceforge.subsonic.controller.RESTPlaylistController">
<property name="restBrowseController" ref="restBrowseController"/>
<property name="playerService" ref="playerService"/>
<property name="securityService" ref="securityService"/>
<property name="playlistService" ref="playlistService"/>
<property name="mediaFileService" ref="mediaFileService"/>
</bean>
<bean id="restMediaRetrievalController" class="net.sourceforge.subsonic.controller.RESTMediaRetrievalController">
<property name="playerService" ref="playerService"/>
<property name="securityService" ref="securityService"/>
<property name="downloadController" ref="downloadController"/>
<property name="streamController" ref="streamController"/>
<property name="hlsController" ref="hlsController"/>
<property name="coverArtController" ref="coverArtController"/>
<property name="libraryBrowserService" ref="libraryBrowserService"/>
<property name="mediaFileService" ref="mediaFileService"/>
<property name="avatarController" ref="avatarController"/>
</bean>
<bean id="restMediaAnnotationController" class="net.sourceforge.subsonic.controller.RESTMediaAnnotationController">
<property name="restBrowseController" ref="restBrowseController"/>
<property name="playerService" ref="playerService"/>
<property name="settingsService" ref="settingsService"/>
<property name="securityService" ref="securityService"/>
<property name="starService" ref="starService"/>
<property name="homeController" ref="homeController"/>
<property name="libraryBrowserService" ref="libraryBrowserService"/>
<property name="mediaFileService" ref="mediaFileService"/>
<property name="audioScrobblerService" ref="audioScrobblerService"/>
</bean>
<bean id="restShareController" class="net.sourceforge.subsonic.controller.RESTShareController">
<property name="restBrowseController" ref="restBrowseController"/>
<property name="playerService" ref="playerService"/>
<property name="securityService" ref="securityService"/>
<property name="shareService" ref="shareService"/>
<property name="mediaFileService" ref="mediaFileService"/>
</bean>
<bean id="restPodcastController" class="net.sourceforge.subsonic.controller.RESTPodcastController">
<property name="restBrowseController" ref="restBrowseController"/>
<property name="playerService" ref="playerService"/>
<property name="podcastService" ref="podcastService"/>
<property name="mediaFileService" ref="mediaFileService"/>
</bean>
<bean id="restJukeboxController" class="net.sourceforge.subsonic.controller.RESTJukeboxController">
<property name="restBrowseController" ref="restBrowseController"/>
<property name="playerService" ref="playerService"/>
<property name="securityService" ref="securityService"/>
<property name="playlistControlService" ref="ajaxPlaylistService"/>
<property name="jukeboxService" ref="jukeboxService"/>
<property name="mediaFileService" ref="mediaFileService"/>
</bean>
<bean id="restChatController" class="net.sourceforge.subsonic.controller.RESTChatController">
<property name="playerService" ref="playerService"/>
<property name="chatService" ref="ajaxChatService"/>
</bean>
<bean id="restUserController" class="net.sourceforge.subsonic.controller.RESTUserController">
<property name="playerService" ref="playerService"/>
<property name="settingsService" ref="settingsService"/>
<property name="securityService" ref="securityService"/>
<property name="userSettingsController" ref="userSettingsController"/>
</bean>
<bean id="restController" class="net.sourceforge.subsonic.controller.RESTController">
<property name="restSystemController" ref="restSystemController"/>
<property name="restBrowseController" ref="restBrowseController"/>
<property name="restSearchController" ref="restSearchController"/>
<property name="restPlaylistController" ref="restPlaylistController"/>
<property name="restMediaRetrievalController" ref="restMediaRetrievalController"/>
<property name="restMediaAnnotationController" ref="restMediaAnnotationController"/>
<property name="restShareController" ref="restShareController"/>
<property name="restPodcastController" ref="restPodcastController"/>
<property name="restChatController" ref="restChatController"/>
<property name="restUserController" ref="restUserController"/>
<property name="restJukeboxController" ref="restJukeboxController"/>
</bean>
<bean id="dbController" class="net.sourceforge.subsonic.controller.DBController">
<property name="viewName" value="db"/>
<property name="daoHelper" ref="daoHelper"/>
</bean>
<bean id="savePlaylistValidator" class="net.sourceforge.subsonic.validator.SavePlaylistValidator">
<property name="playlistService" ref="playlistService"/>
</bean>
<bean id="donateValidator" class="net.sourceforge.subsonic.validator.DonateValidator">
<property name="settingsService" ref="settingsService"/>
</bean>
<bean id="userSettingsValidator" class="net.sourceforge.subsonic.validator.UserSettingsValidator">
<property name="securityService" ref="securityService"/>
<property name="settingsService" ref="settingsService"/>
</bean>
<bean id="passwordSettingsValidator" class="net.sourceforge.subsonic.validator.PasswordSettingsValidator"/>

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="alwaysUseFullPath" value="true"/>
<property name="mappings">
<props>
<prop key="/main.view">mainController</prop>
<prop key="/artist.view">artistController</prop>
<prop key="/artistGenres.view">artistGenresController</prop>
<prop key="/album.view">albumController</prop>
<prop key="/help.view">helpController</prop>
<prop key="/lyrics.view">lyricsController</prop>
<prop key="/left.view">leftController</prop>
<prop key="/right.view">rightController</prop>
<prop key="/status.view">statusController</prop>
<prop key="/more.view">moreController</prop>
<prop key="/upload.view">uploadController</prop>
<prop key="/createShare.view">shareManagementController</prop>
<prop key="/top.view">topController</prop>
<prop key="/loadPlaylist.view">loadPlaylistController</prop>
<prop key="/loadPlaylistConfirm.view">loadPlaylistController</prop>
<prop key="/appendPlaylist.view">loadPlaylistController</prop>
<prop key="/appendPlaylistConfirm.view">loadPlaylistController</prop>
<prop key="/deletePlaylist.view">loadPlaylistController</prop>
<prop key="/savePlaylist.view">savePlaylistController</prop>
<prop key="/changeCoverArt.view">changeCoverArtController</prop>
<prop key="/login.view">multiController</prop>
<prop key="/accessDenied.view">multiController</prop>
<prop key="/gettingStarted.view">multiController</prop>
<prop key="/index.view">multiController</prop>
<prop key="/videoPlayer.view">videoPlayerController</prop>
<prop key="/nowPlaying.view">nowPlayingController</prop>
<prop key="/search.view">searchController</prop>
<prop key="/advancedSearch.view">advancedSearchController</prop>
<prop key="/advancedSearchResult.view">advancedSearchResultController</prop>
<prop key="/settings.view">settingsController</prop>
<prop key="/playerSettings.view">playerSettingsController</prop>
<prop key="/shareSettings.view">shareSettingsController</prop>
<prop key="/mediaFolderSettings.view">mediaFolderSettingsController</prop>
<prop key="/networkSettings.view">networkSettingsController</prop>
<prop key="/transcodingSettings.view">transcodingSettingsController</prop>
<prop key="/internetRadioSettings.view">internetRadioSettingsController</prop>
<prop key="/searchSettings.view">searchSettingsController</prop>
<prop key="/musicCabinetSettings.view">musicCabinetSettingsController</prop>
<prop key="/podcastSettings.view">podcastSettingsController</prop>
<prop key="/generalSettings.view">generalSettingsController</prop>
<prop key="/advancedSettings.view">advancedSettingsController</prop>
<prop key="/personalSettings.view">personalSettingsController</prop>
<prop key="/lastFmSettings.view">lastFmSettingsController</prop>
<prop key="/avatarUpload.view">avatarUploadController</prop>
<prop key="/userSettings.view">userSettingsController</prop>
<prop key="/passwordSettings.view">passwordSettingsController</prop>
<prop key="/home.view">homeController</prop>
<prop key="/editTags.view">editTagsController</prop>
<prop key="/radio.view">radioController</prop>
<prop key="/genres.view">genresController</prop>
<prop key="/fileTree.view">fileTreeController</prop>
<prop key="/related.view">relatedController</prop>
<prop key="/tagSettings.view">tagSettingsController</prop>
<prop key="/groupSettings.view">groupSettingsController</prop>
<prop key="/editArtist.view">editArtistController</prop>
<prop key="/artistDetails.view">artistDetailsController</prop>
<prop key="/missingAlbums.view">missingAlbumsController</prop>
<prop key="/missingAlbumsSearch.view">missingAlbumsSearchController</prop>
<prop key="/playlist.view">playlistController</prop>
<prop key="/xspfPlaylist.view">xspfPlaylistController</prop>
<prop key="/coverArt.view">coverArtController</prop>
<prop key="/avatar.view">avatarController</prop>
<prop key="/proxy.view">proxyController</prop>
<prop key="/statusChart.view">statusChartController</prop>
<prop key="/userChart.view">userChartController</prop>
<prop key="/download.view">downloadController</prop>
<prop key="/donate.view">donateController</prop>
<prop key="/db.view">dbController</prop>
<prop key="/podcastReceiver.view">podcastReceiverController</prop>
<prop key="/podcastReceiverAdmin.view">podcastReceiverAdminController</prop>
<prop key="/podcast.view">podcastController</prop>
<prop key="/podcast/**">podcastController</prop>
<prop key="/rest/**">restController</prop>
<prop key="/play.m3u">m3uController</prop>
<prop key="/stream/**">streamController</prop>
<prop key="/hls/**">hlsController</prop>
<prop key="/share/**">externalPlayerController</prop>
</props>
</property>
</bean>

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="net.sourceforge.subsonic.i18n.ResourceBundle"/>
</bean>

<bean id="themeSource" class="net.sourceforge.subsonic.theme.SubsonicThemeSource">
<property name="basenamePrefix" value="net.sourceforge.subsonic.theme."/>
<property name="defaultResourceBundle" value="net.sourceforge.subsonic.theme.default"/>
</bean>

<bean id="localeResolver"
class="net.sourceforge.subsonic.i18n.SubsonicLocaleResolver">
<property name="securityService" ref="securityService"/>
<property name="settingsService" ref="settingsService"/>
</bean>

<bean id="themeResolver"
class="net.sourceforge.subsonic.theme.SubsonicThemeResolver">
<property name="securityService" ref="securityService"/>
<property name="settingsService" ref="settingsService"/>
</bean>

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>

</beans>
jfmus
 
Posts: 14
Joined: Sat May 19, 2012 1:53 pm

Re: Madsonic vs. MusicCabinet?

Postby Boutros » Thu Jul 25, 2013 1:51 am

You, sir or madam, are my hero. I was googling around like a shaved ape and trying to do some preposterous end-around where I make a new .war file or something, which... I really had no business doing.

One thing I'll note, in the event that anyone else uses this: if you just copy/paste jfmus' text from the page, make sure to replace:

http://www.springframework.org/schema/b ... ns-3.0.xsd"> in the 5th line (if your browser shortens the link, as mine did), with

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

Up and running now, and it's all groovy. Thanks again, jfmus!
Boutros
 
Posts: 119
Joined: Mon Jun 06, 2011 6:09 pm

Re: Madsonic vs. MusicCabinet?

Postby jfmus » Thu Jul 25, 2013 11:06 pm

Boutros,

You are welcome... Glad I could help. Had a few minutes to devote to it, and found a solution. I am in the same boat your are with recompiling the war file, so don't feel bad, that was the last thing I wanted to try to figure out myself. Hope Haako reappears soon. I took a look at Madsonic, and even though Music Cabinet doesn't have all of the bells and whistles, it's core function with related artists and genres from lastfm can't be beat.

Have a good one.

jfmus
jfmus
 
Posts: 14
Joined: Sat May 19, 2012 1:53 pm

Re: Madsonic vs. MusicCabinet?

Postby shivan » Fri Jul 26, 2013 11:55 am

Just a BTW, Madsonic now has LastFM in it. I scanned all my music the other day and most of the artists were found and an artist page created. It is still in beta. I am running an older beta version because I am too lazy to upgrade to another beta.
shivan
 
Posts: 7
Joined: Mon May 28, 2012 3:23 pm

Re: Madsonic vs. MusicCabinet?

Postby Sh4gr4th » Mon Aug 12, 2013 12:08 am

Boutros wrote:You, sir or madam, are my hero.

I 2nd that! Thanks so much! *happy*
Sh4gr4th
 
Posts: 21
Joined: Mon Nov 30, 2009 12:13 pm

Re: Madsonic vs. MusicCabinet?

Postby matzmann » Tue Aug 13, 2013 11:16 am

Hi Boutros,

just to shortly answer one of your questions:

iSub works fine with Madsonic.

Best regards
Matthias
matzmann
 
Posts: 8
Joined: Wed Jan 19, 2011 4:58 pm

Next

Return to Madsonic

Who is online

Users browsing this forum: No registered users and 5 guests