Page 1 of 2

Madsonic vs. MusicCabinet?

PostPosted: Wed Jul 17, 2013 9:30 pm
by Boutros
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.

Re: Madsonic vs. MusicCabinet?

PostPosted: Thu Jul 18, 2013 8:46 pm
by jcduss

Re: Madsonic vs. MusicCabinet?

PostPosted: Thu Jul 18, 2013 9:42 pm
by Boutros
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?

Re: Madsonic vs. MusicCabinet?

PostPosted: Fri Jul 19, 2013 12:42 am
by GJ51
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

Re: Madsonic vs. MusicCabinet?

PostPosted: Fri Jul 19, 2013 3:59 pm
by Boutros
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

Re: Madsonic vs. MusicCabinet?

PostPosted: Fri Jul 19, 2013 4:21 pm
by GJ51
No problem - send me a PM with a username/password you want.

Re: Madsonic vs. MusicCabinet?

PostPosted: Fri Jul 19, 2013 4:41 pm
by Boutros
GJ51 wrote:No problem - send me a PM with a username/password you want.


You rule! Sending it to you now.

Re: Madsonic vs. MusicCabinet?

PostPosted: Fri Jul 19, 2013 5:12 pm
by gurutech
IF you want to create your own ID and password, you can test my site. http://bustermusic.subsonic.org Running Madsonic as well.

Re: Madsonic vs. MusicCabinet?

PostPosted: Fri Jul 19, 2013 5:22 pm
by Boutros
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 :)

Re: Madsonic vs. MusicCabinet?

PostPosted: Wed Jul 24, 2013 10:57 pm
by jfmus
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>

Re: Madsonic vs. MusicCabinet?

PostPosted: Thu Jul 25, 2013 1:51 am
by Boutros
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!

Re: Madsonic vs. MusicCabinet?

PostPosted: Thu Jul 25, 2013 11:06 pm
by jfmus
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

Re: Madsonic vs. MusicCabinet?

PostPosted: Fri Jul 26, 2013 11:55 am
by shivan
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.

Re: Madsonic vs. MusicCabinet?

PostPosted: Mon Aug 12, 2013 12:08 am
by Sh4gr4th
Boutros wrote:You, sir or madam, are my hero.

I 2nd that! Thanks so much! *happy*

Re: Madsonic vs. MusicCabinet?

PostPosted: Tue Aug 13, 2013 11:16 am
by matzmann
Hi Boutros,

just to shortly answer one of your questions:

iSub works fine with Madsonic.

Best regards
Matthias