History:Object Model/Representing Remixes: Difference between revisions

From MusicBrainz Wiki
Jump to navigationJump to search
(problems with that (Imported from MoinMoin))
mNo edit summary
 
(6 intermediate revisions by 3 users not shown)
Line 6: Line 6:
* A [[Object Model/Master Object|../MasterObject]] belongs to ''exactly one'' [[Object Model/Performance Object|../PerformanceObject]]. Anything that combines multiple performances is a remix and therefore a performance of its own again.
* A [[Object Model/Master Object|../MasterObject]] belongs to ''exactly one'' [[Object Model/Performance Object|../PerformanceObject]]. Anything that combines multiple performances is a remix and therefore a performance of its own again.
* The [[Object Model/Mix Object|../MixObject]] can be merged with the [[Object Model/Master Object|../MasterObject]]. Defining the boundaries between these two objects was close to impossible.
* The [[Object Model/Mix Object|../MixObject]] can be merged with the [[Object Model/Master Object|../MasterObject]]. Defining the boundaries between these two objects was close to impossible.
* Remixes can be modelled by [[Advanced Relationships|AdvancedRelationships]] from the [[Object Model/Master Object|../MasterObject]]<code><nowiki></nowiki></code>s that get remixed to the [[Object Model/Performance Object|../PerformanceObject]] they get remixed in.
* Remixes can be modelled by [[Advanced Relationships|AdvancedRelationships]] between [[Object Model/Performance Object|../PerformanceObject]]<code><nowiki></nowiki></code>s


===What gets remixed?===
So things have becom simple again. Good sign.


A remix doesn't combine different [[Object Model/Master Object|../MasterObject]]<code><nowiki></nowiki></code>s. Only bootleg remixes are based on masters. The majority of proper remixes use one or more [[Object Model/Performance Object|../PerformanceObject]]<code><nowiki></nowiki></code>s as their source, and a different mix or better a new version of the performance is created. A remix that is created from more than one source is a rare case and usually referred to as a Mash-Up.
But there are also negative consequences: If youhave no differentiation between recording and mix and every remix becomes an own performance then you have to relate the performing artists to all of them - which was the reason again to originally build several layers.


So, we should use [[Object Model/Performance Object|../PerformanceObject]] as source for remix. Otherwise, you will have the problem, that you have to decide '''which''' [[Object Model/Master Object|../MasterObject]] to use (it's common that there are more than one for one [[Object Model/Performance Object|../PerformanceObject]]). So we wouldn't fix the "Always link to oldest release" problem.
[[Category:To Be Reviewed]]

Normal remixes can be stored without further change to the object chain, which contains inclusions only (i.e.<code><nowiki>o--></nowiki></code> means <code><nowiki>(1)--(1-n)</nowiki></code>), and looks like this (Note that we are talking about ''instances'' of objects here): <pre>OrigComposition o--> OrigPerformance o--> OrigMix o--> OrigMaster
o
|
V
Re-Mix o--> RemixMaster
</pre>

To store Mash-ups we would either need to allow a [[Object Model/Performance Object|../PerformanceObject]]<code><nowiki>(1-n)--(1-n)</nowiki></code>)[[Object Model/Mix Object|../MixObject]] relationship, or relate performances with [[Advanced Relationships|AdvancedRelationships]]. the latter would give us: <pre>OrigComposition1 o--> OrigPerformance1 o--> OrigMix1 o--> OrigMaster1
^
| AR: is a remix of
|
MashUpComposition o-> MashUpPerformance o-> MashUpMix o-> MashUpMaster
|
| AR: is a remix of
V
OrigComposition2 o--> OrigPerformance2 o--> OrigMix2 o--> OrigMaster2
</pre>

The above means that we ''can'' create a new [[Object Model/Composition Object|../CompositionObject]] for a remix, if we want to (e.g. because the change was so large and 'artistic' that the result should have a composition of its own). The resulting relationships look like this: <pre>OrigComposition o--> OrigPerformance o--> OrigMix o--> OrigMaster
^
| AR: is a remix of
|
RemixComposition o--> RemixPerformance o--> Re-Mix o--> RemixMaster
</pre>

===Where to relate the Artist===

In the [[Object Model|ObjectModel]] only the [[Object Model/Performance Object|../PerformanceObject]] and the [[Object Model/Track Object|../TrackObject]] are related to artists (how exactly we do not know yet). That means that a remix can be represented as a performance done by the remixer, that combines audio material from different original performances. The original performers are not related to the performance representing the remix, but only to the performances that the remixis based on. Uh that was a complicated sentence. Basically we have a concatenation of [[Object Model/Performance Object|../PerformanceObject]]<code><nowiki></nowiki></code>s done through [[Advanced Relationships|AdvancedRelationships]] as described above. <pre> OrigArtist(s) RemixingArtist
| |
| AR |
OrigPerformance------RemixPerformance
</pre>

The performing or remixing artists are all related to their appropriate level of performance. No confusion here.

At the end of this chain, we have a [[Object Model/Track Object|../TrackObject]]<ref>To be precise, it is a tree and has several ends, but they all are [[Object Model/Track Object|../TrackObject]]<code><nowiki></nowiki></code>s</ref>. This is the point where things get confused, but this has nothing to do with the way we represent remixes. ''The confusion comes from the [[Object Model/Track Object|../TrackObject]]''!

People expect the properties of a track (the [[Track Title|TrackTitle]] and the displayed [[Track Artist|TrackArtist]]) to document in a condensed form what we have ripped into pieces with the [[Object Model|ObjectModel]]. There probably is no simple way to condense this information, but this is not a problem of this way of representing remixes.

Latest revision as of 22:28, 25 October 2011

Thoughts on Representing Remixes in the ObjectModel

Remixes make the layers of the ObjectModel between the ../PerformanceObject and the ../TrackObject a royal pain. Actually remixes would be the only reason to use the ../MixObject at all.

The whole issue can be greatly simplified if a remix is seen as a performance. If we define a remix of being a ../PerformanceObject of its own, this has the following consequences:

What gets remixed?

A remix doesn't combine different ../MasterObjects. Only bootleg remixes are based on masters. The majority of proper remixes use one or more ../PerformanceObjects as their source, and a different mix or better a new version of the performance is created. A remix that is created from more than one source is a rare case and usually referred to as a Mash-Up.

So, we should use ../PerformanceObject as source for remix. Otherwise, you will have the problem, that you have to decide which ../MasterObject to use (it's common that there are more than one for one ../PerformanceObject). So we wouldn't fix the "Always link to oldest release" problem.

Normal remixes can be stored without further change to the object chain, which contains inclusions only (i.e.o--> means (1)--(1-n)), and looks like this (Note that we are talking about instances of objects here):

OrigComposition o--> OrigPerformance o--> OrigMix o--> OrigMaster
                           o
                           |
                           V
                        Re-Mix o--> RemixMaster

To store Mash-ups we would either need to allow a ../PerformanceObject(1-n)--(1-n))../MixObject relationship, or relate performances with AdvancedRelationships. the latter would give us:

OrigComposition1 o--> OrigPerformance1 o--> OrigMix1 o--> OrigMaster1
                          ^
                          | AR: is a remix of
                          |
MashUpComposition o-> MashUpPerformance o-> MashUpMix o-> MashUpMaster
                          |
                          | AR: is a remix of
                          V
OrigComposition2 o--> OrigPerformance2 o--> OrigMix2 o--> OrigMaster2

The above means that we can create a new ../CompositionObject for a remix, if we want to (e.g. because the change was so large and 'artistic' that the result should have a composition of its own). The resulting relationships look like this:

OrigComposition o--> OrigPerformance o--> OrigMix o--> OrigMaster
                           ^
                           | AR: is a remix of
                           |
RemixComposition o--> RemixPerformance o--> Re-Mix o--> RemixMaster

Where to relate the Artist

In the ObjectModel only the ../PerformanceObject and the ../TrackObject are related to artists (how exactly we do not know yet). That means that a remix can be represented as a performance done by the remixer, that combines audio material from different original performances. The original performers are not related to the performance representing the remix, but only to the performances that the remixis based on. Uh that was a complicated sentence. Basically we have a concatenation of ../PerformanceObjects done through AdvancedRelationships as described above.

 OrigArtist(s)        RemixingArtist
      |                     |
      |          AR         |
OrigPerformance------RemixPerformance

The performing or remixing artists are all related to their appropriate level of performance. No confusion here.

At the end of this chain, we have a ../TrackObject[1]. This is the point where things get confused, but this has nothing to do with the way we represent remixes. The confusion comes from the ../TrackObject!

People expect the properties of a track (the TrackTitle and the displayed TrackArtist) to document in a condensed form what we have ripped into pieces with the ObjectModel. There probably is no simple way to condense this information, but this is not a problem of this way of representing remixes.

  1. To be precise, it is a tree and has several ends, but they all are ../TrackObjects