wolffd@0: % --- wolffd@0: % This is the wrapper and loader class for magnatagatune db wolffd@0: % and related data wolffd@0: % --- wolffd@0: wolffd@0: classdef MTTClipDB < handle wolffd@0: wolffd@0: properties (SetAccess = 'private') wolffd@0: wolffd@0: % --- wolffd@0: % TODO: create global "db_magnaclips" class pointer wolffd@0: % --- wolffd@0: wolffd@0: annots; wolffd@0: annots_filenames; wolffd@0: annots_ids; wolffd@0: annots_names; wolffd@0: wolffd@0: % inverse ids for comparison wolffd@0: comparison_ids; wolffd@0: wolffd@0: clip_info_proper; wolffd@0: clip_info_proper_names; wolffd@0: wolffd@0: % magnagenre_childof; wolffd@0: wolffd@0: % genre database wolffd@0: genredb; wolffd@0: wolffd@0: % artist database wolffd@0: artistdb; wolffd@0: wolffd@0: % tag databses wolffd@0: tagdb; wolffd@0: wolffd@0: fmtagdb; wolffd@0: wolffd@0: % @todo: get data wolffd@0: mbtagdb; wolffd@0: end wolffd@0: wolffd@0: properties (Hidden) wolffd@0: % hidden properties wolffd@0: wolffd@0: end wolffd@0: wolffd@0: methods wolffd@0: wolffd@0: % --- wolffd@0: % constructore wolffd@0: % --- wolffd@0: function db = MTTClipDB() wolffd@0: wolffd@0: % --- wolffd@0: % TODO: restructure data / db.mat wolffd@0: % --- wolffd@0: wolffd@0: load 'db.mat'; wolffd@0: wolffd@0: db.annots = annots; wolffd@0: db.annots_ids = annots_ids; wolffd@0: db.annots_names = annots_names; wolffd@0: db.annots_filenames = annots_filenames; wolffd@0: wolffd@0: % comparison ids wolffd@0: db.comparison_ids = sparse(comparison_ids,1, 1:numel(comparison_ids)); wolffd@0: wolffd@0: db.clip_info_proper = clip_info_proper; wolffd@0: db.clip_info_proper_names = clip_info_proper_names; wolffd@0: wolffd@0: % Genre in new structure for textual annotations wolffd@0: db.genredb = AnnotDB(magnagenres, clip_magnagenres, annots_ids); wolffd@0: wolffd@0: % Artist for each clip wolffd@0: db.artistdb = artistdb; %AnnotDB('clips_by_annot', db.clip_info_proper(:, 4), annots_ids); wolffd@0: wolffd@0: % Magnatagatune Tags wolffd@0: db.tagdb = tagdb; % AnnotDB(annots_names, annots, annots_ids); wolffd@0: wolffd@0: % Last Fm Tags wolffd@0: db.fmtagdb = fmtagdb; % LFMTagsDB(db.artistdb); wolffd@0: wolffd@0: % musicbrainz tags wolffd@0: db.mbtagdb = mbtagdb; % LFMTagsDB(db.artistdb); wolffd@0: wolffd@0: % db.clip_magnagenres = clip_magnagenres; wolffd@0: % db.magnagenres = magnagenres; wolffd@0: % db.magnagenre_childof = magnagenre_childof; wolffd@0: wolffd@0: end wolffd@0: wolffd@0: % --- wolffd@0: % member functions wolffd@0: % --- wolffd@0: function out = genres(db) wolffd@0: % returns the magnatune genre list wolffd@0: wolffd@0: out = db.genredb.lexicon; wolffd@0: end wolffd@0: wolffd@0: function clips = clips_by_genre_name(db, name) wolffd@0: % returns all clips having the assigned genre wolffd@0: wolffd@0: clips = MTTClip( db.genredb.owner( name)); wolffd@0: end wolffd@0: wolffd@0: function out = tags(db) wolffd@0: % returns the magnatune artist list wolffd@0: wolffd@0: out = db.tagdb.lexicon; wolffd@0: end wolffd@0: wolffd@0: wolffd@0: function out = artists(db) wolffd@0: % returns the magnatune artist list wolffd@0: wolffd@0: out = db.artistdb.lexicon; wolffd@0: end wolffd@0: wolffd@0: function clips = clips_by_artist_name(db, name) wolffd@0: % returns all clips having the assigned artist wolffd@0: wolffd@0: clips = MTTClip( db.artistdb.owner( name)); wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: % --- wolffd@0: % Hidden Methods wolffd@0: % --- wolffd@0: methods (Hidden = true, Access = private) wolffd@0: wolffd@0: function out = clips_by_genre(db, genre_id) wolffd@0: % returns clip ids given a genre id wolffd@0: wolffd@0: pos = (db.clip_magnagenres(:,genre_id) == 1); wolffd@0: wolffd@0: % return clip ids, not pos wolffd@0: out = db.annots_ids(pos); wolffd@0: end wolffd@0: end wolffd@0: end