Mercurial > hg > ape
view aux/mat2xml.m @ 11:0014c50188da
New and modified auxiliary scripts
author | Brecht De Man <b.deman@qmul.ac.uk> |
---|---|
date | Fri, 19 Jun 2015 19:16:08 +0100 |
parents | |
children | 866c5da4d357 |
line wrap: on
line source
% WIP: convert MAT output to XML file for compatibility with Web Audio Evaluation Tool % CONFIGURATION: location = 'CIRMMT Critical Listening Lab'; % IMPORT FILE matfile = load('george.mat'); name = fieldnames(matfile); test = matfile.(char(name)); docNode = com.mathworks.xml.XMLUtils.createDocument('browserevaluationresult'); docRootNode = docNode.getDocumentElement; % PRETEST pretest = docNode.createElement('pretest'); docRootNode.appendChild(pretest); sessionID_comment = docNode.createElement('comment'); pretest.appendChild(sessionID_comment); sessionID_comment.setAttribute('id', 'SessionID'); sessionID_comment.appendChild(docNode.createTextNode(test.id)); location_comment = docNode.createElement('comment'); pretest.appendChild(location_comment); location_comment.setAttribute('id', 'location'); location_comment.appendChild(docNode.createTextNode(location)); % AUDIOHOLDER % for each song in the test: for song = 1:length(test.tstDat)/2 % 2 structs for every song song_id = song*2; % every second field corresponds with a song % create audioholder audioholder = docNode.createElement('audioholder'); docRootNode.appendChild(audioholder); % save song name songname = test.tstDat{1,song_id-1}.tstFile(2:end-4); % chop off '_*.txt' audioholder.setAttribute('id', songname); % add pretest (empty) pretest = docNode.createElement('pretest'); audioholder.appendChild(pretest); % add posttest (empty) posttest = docNode.createElement('posttest'); audioholder.appendChild(posttest); % add metric metric = docNode.createElement('metric'); audioholder.appendChild(metric); metricresult = docNode.createElement('metricresult'); metric.appendChild(metricresult); metricresult.setAttribute('id', 'testTime'); testduration = num2str(test.tstDat{1,song_id}.rsl.duration); metricresult.appendChild(docNode.createTextNode(testduration)); % go over audio files in the order they were presented permVec = test.tstDat{1,song_id}.rsl.permVec; for index=1:length(permVec) % ('index' is presented number) % create audioelement and attach to audioholder audioelement = docNode.createElement('audioelement'); audioholder.appendChild(audioelement); % save mix name mixname = test.tstDat{1,song_id-1}.rsl.sounds(permVec(index)).name; audioelement.setAttribute('id', strcat('McG-', mixname)); % add comment comment = docNode.createElement('comment'); audioelement.appendChild(comment); % add comment question and response question = docNode.createElement('question'); comment.appendChild(question); str = sprintf('Comment on track %i', index); question.appendChild(docNode.createTextNode(str)); response = docNode.createElement('response'); comment.appendChild(response); str = char(test.tstDat{1,song_id}.rsl.hcom(permVec(index))); response.appendChild(docNode.createTextNode(str)); % add rating value = docNode.createElement('value'); audioelement.appendChild(value); rating = test.tstDat{1,song_id}.rsl.mat(permVec(index)); value.appendChild(docNode.createTextNode(num2str(rating))); % add metric % FROM HERE end end xmlFileName = ['test.xml']; xmlwrite(xmlFileName,docNode); type(xmlFileName); % final script features: % read in all .mat files from folder % make replacements (Fei -> McG-B etc.)