diff core/magnatagatune/MTTClipDB.m @ 0:e9a9cd732c1e tip

first hg version after svn
author wolffd
date Tue, 10 Feb 2015 15:05:51 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/magnatagatune/MTTClipDB.m	Tue Feb 10 15:05:51 2015 +0000
@@ -0,0 +1,141 @@
+% ---
+% This is the wrapper and loader class for magnatagatune db
+% and related data
+% ---
+
+classdef MTTClipDB < handle
+    
+    properties (SetAccess = 'private')
+        
+        % ---
+        % TODO: create global "db_magnaclips" class pointer 
+        % ---
+        
+        annots;
+        annots_filenames;
+        annots_ids;
+        annots_names;
+        
+        % inverse ids for comparison
+        comparison_ids;
+
+        clip_info_proper;
+        clip_info_proper_names;
+
+%         magnagenre_childof;
+        
+        % genre database
+        genredb;
+        
+        % artist database
+        artistdb;
+        
+        % tag databses
+        tagdb;
+        
+        fmtagdb;
+        
+        % @todo: get data
+        mbtagdb;
+    end
+    
+    properties (Hidden)
+    % hidden properties
+
+    end
+    
+    methods
+        
+        % ---
+        % constructore
+        % ---
+        function db = MTTClipDB()
+            
+            % ---
+            % TODO: restructure data /  db.mat
+            % ---
+            
+            load 'db.mat';
+            
+            db.annots = annots;
+            db.annots_ids = annots_ids;
+            db.annots_names =  annots_names;
+            db.annots_filenames = annots_filenames;
+                        
+            % comparison ids
+            db.comparison_ids = sparse(comparison_ids,1, 1:numel(comparison_ids));
+
+            db.clip_info_proper = clip_info_proper;
+            db.clip_info_proper_names = clip_info_proper_names;
+            
+            % Genre in new structure for textual annotations
+            db.genredb = AnnotDB(magnagenres, clip_magnagenres, annots_ids);
+            
+            % Artist for each clip
+            db.artistdb = artistdb; %AnnotDB('clips_by_annot', db.clip_info_proper(:, 4), annots_ids);
+            
+            % Magnatagatune Tags
+            db.tagdb = tagdb; % AnnotDB(annots_names, annots, annots_ids);
+            
+            % Last Fm Tags
+            db.fmtagdb = fmtagdb; % LFMTagsDB(db.artistdb);
+            
+            % musicbrainz tags
+            db.mbtagdb = mbtagdb; % LFMTagsDB(db.artistdb);
+            
+%             db.clip_magnagenres = clip_magnagenres;
+%             db.magnagenres = magnagenres;
+%             db.magnagenre_childof = magnagenre_childof;
+
+        end
+        
+        % ---
+        % member functions
+        % ---
+        function out = genres(db)
+        % returns the magnatune genre list
+            
+            out = db.genredb.lexicon;
+        end
+        
+        function clips = clips_by_genre_name(db, name)
+        % returns all clips having the assigned genre
+        
+            clips = MTTClip( db.genredb.owner( name));   
+        end
+        
+        function out = tags(db)
+        % returns the magnatune artist list
+            
+            out = db.tagdb.lexicon;
+        end
+
+        
+        function out = artists(db)
+        % returns the magnatune artist list
+            
+            out = db.artistdb.lexicon;
+        end
+        
+        function clips = clips_by_artist_name(db, name)
+        % returns all clips having the assigned artist
+            
+            clips = MTTClip( db.artistdb.owner( name));   
+        end
+    end
+    
+    % ---
+    % Hidden Methods
+    % ---
+    methods (Hidden = true, Access = private)
+        
+        function out = clips_by_genre(db, genre_id)
+            % returns clip ids given a genre id
+            
+            pos = (db.clip_magnagenres(:,genre_id) == 1);
+            
+            % return clip ids, not pos
+            out = db.annots_ids(pos);
+        end
+    end
+end
\ No newline at end of file