There are a lot of advantages of having a node structure for the song informations.

One is, it would bring the ability to set fields for each track. If it is just the lyrics and the song info, it may still be ok to use the songs under album nodes. but when other fields are added such as videos, notes, (in anticopyright circumstances) mp3's etc. the page will get very long, users will need to scroll up and down for every single detail.

Another one is it would give the site users the opportunity to discuss about each song in a different page, using comments. This way all the commentary discussion for any song could go under the song node, it would not be user friendly if these discussions appear in an album page, thinking that ie: if an album has 15 songs, 15 different discussions would make the page too much crowded.

Also if the songs become individual as nodes, it will be possible to use views based on songs, such as the most visited/listened songs, best rated songs, most commented (hot) songs, songs of the month etc.

This way it would also be possible for users to search for artists, albums and songs seperately. I believe being able to use the song nodes in views will bring a lot of opportunities to the discography sites.

This discussion began under D7 version issue, and i opened this feature request by the advice of Karlheinz. Possible solutions for this issue may be using hierarchical taxonomies for "many node to one node" relationshiops. Another suggestion was made by planet4sale, that the organic groups module's latest branch will use "entity reference field" and that could also be used for establishing the relationship between two node types.

If this feature is accomplished there will be artist nodes, which have their album nodes (discographies) listed inside them. Album nodes will have their song nodes listed with album info and covers, and finally when the user clicks a song's name, all the information about that song is documented in a single node, including lyrics, comments and any field that the site spesifically needs such as musical notes, videos etc. So the site structure will be much more flexible (being able to use views and any 3rd party module that works on nodes) the albums pages will get less crowded, and the song nodes' fields/blocks could get as crowded as it is needed.

Comments

ebieymjunior’s picture

Can you consider this:

Users can add songs to their albums with the many fields, and one field being the version of the song.
Songs can then be reused in other albums or as a single (as a different version).
All the songs can then have their own page where all the versions of the song can be displayed and the albums their in.

This way you can have less pages, but all songs still get their own page where you can add video's, different lyrics, etc.

Karlheinz’s picture

Here are some drawbacks to consider.

  • If this is implemented, there is a 100% guarantee that data from the D6 Discogs module would never be compatible with the D7 version. There is also a 100% guarantee that you will not be able to "push" this data to Discogs.com. Of course, both of these possibilities had a slim chance of happening anyway, but this would be the nail in the coffin.
  • You will not be able to create album information all at once. You would have to, first, create and save each track individually, then when you are creating the album, link to the track nodes you've just created. This creates immense problems.

    First, consider users who won't even use the Discogs.com import feature; they just want a discography module for their site. The module would be horrible to use. Nobody wants to do this; they want to fill out one form and bang, done. If the module did work this way, nobody would use it.

    Next, consider users who do use the Discogs.com import feature - and import, say, 50 albums at once. If each album has 10 tracks, that's 500 nodes that are created, including all their database calls, Drupal bootstrapping processes, etc. There's no way this could be done without PHP timeout errors. So, this would all have to be run through Cron, which has its own special circle in Drupal Hell.

  • The ability to create node-to-node relationships does not exist in D7's Field API. There are, at present, at least three different (and conflicting) D7 modules to handle this: Relation, Entity API, and References. The last is the only one that actually has a versioned release (not a release candidate or beta) - and it's being abandoned.
  • Nearly all of what you're suggesting is better accomplished either by using Views, or by simply creating a Song node (rather than a Track node), and having those nodes be totally and completely separate from the discography. In fact, you can do this right now.
  • It might be incompatible with some other modules. For example, in D6, the Audio module created its own node type. This would mean that Audio and Track nodes would already be completely separate anyway, so making Tracks be their own nodes wouldn't solve anything. I don't know which modules do this for D7, though (and Audio is now abandoned, BTW).

Here's something else to consider: it appears that Pushtape uses exactly the system that you're recommending. If this really is what you want, it makes much more sense to make this module simply be an extension of that one. That is, it would simply import data from Discogs.com into Pushtape. I'm still looking into Pushtape, and I'll report my results/opinions.

alpp’s picture

i was thinking that (in manual cases, not discogs imports) it could be possible just by filling an album form with the track titles would publish all songs as nodes at once, if it works the way you explained above (first titles, then album info) it's true that it will not be user friendly at all.

Your suggestion for making this module an extension for pushtape module to simly import data from Discogs API to psuhtape workground sounds ok to me. I understand that building a fully featured discography module and a Discogs import module are different tasks and they become complicated when mixed together. So if the pushtape module is going to be built as a discography module (it does seem so) then your suggestion on adding discogs as an extension to it, will be the best solution in my opinion.

Karlheinz’s picture

i was thinking that (in manual cases, not discogs imports) it could be possible just by filling an album form with the track titles would publish all songs as nodes at once

Exactly, this would be how I want it to work too. And I've actually downloaded and used Pushtape (both the "installation profile" and "features" versions), and you do have to create each track and add them to albums, which is indeed not user-friendly in the least. However, that method requires some additional modules that associate nodes with nodes, and so far, those modules don't allow for doing it any other way.

I have used the Node Reference Create module before, which does exactly what we want. However, it was geared towards CCK, not D7's Fields, though it does mysteriously have a D7 version. It's also seeking a new maintainer, so I don't think it would be wise to have it as a dependency.

I'm still thinking about a solution, and of course I need to coordinate all this with Pushtape. I'll keep y'all posted.

alpp’s picture

Thanks foe the update. I guess Discography feature of Pushtape is not fully done yet, so i hope you can find a way to add something like bulk album entry. It is not the end of the world, but of course entering all the songs bulkly at one page would be a great feature.

strawberrybrick’s picture

Discogs does not treat songs as individual nodes. They are part of the "release". Think about the complexity of adding a discogs release, and then trying to link the same song node from various and previously imported releases. Sounds like mayhem. Eg. You import a Beatles album, which contains the song Yellow Submarine. You import another release, and ideally it will not create another node for the song Yellow Submarine. The import should first search for existing songs with the same title by the same artist, and if no match is made, it would then create a new node for that song. If a match is made, would one be prompted to link the two together? And what about different versions of the same song (remix, early version etc). Would we want a master release scenario then?
Do I have this correct?

Karlheinz’s picture

Think about the complexity of adding a discogs release, and then trying to link the same song node from various and previously imported releases. Sounds like mayhem.

I agree, and believe me, I've been thinking a lot about it. Still, unless tracks are nodes, the discography would be useless for Pushtape users, so I think it has to be done if we're to integrate our projects.

Karlheinz’s picture

I am working on a solution to this, though it may not be exactly what you wanted.

Though D7 doesn't have entity-to-entity relationships in core (and I still don't know why), there is a possible workaround: make an Album Track be a custom Field in and of itself.

This way, you can simply attack multiple custom Album Track fields to each Discography type, and it would all be handled by Drupal's form and field handlers.

Another advantage is that if you want to make a Track type, all you do is create the Track content type, and attach a singular Album Track field to it.

Since the use cases are totally different, there wouldn't be so much of a problem with data overlap on most websites.

Thoughts?

Karlheinz’s picture

Status: Active » Closed (won't fix)

For issues that will not be addressed in the D6 version, I am going to close and mark "won't fix."

This is entirely because I want to focus on the D7 version, not because the issue is a bad idea.

FYI, I have already implemented the Tracks field for D7.

Karlheinz’s picture

I have implemented this for the D7 version. The issue for it is here:
#2024759: Track Nodes