source: gs3-installations/mars/trunk/sites/mars/collect/amc-essentia/etc/collectionConfig.xml@ 36819

Last change on this file since 36819 was 36819, checked in by davidb, 19 months ago

Changed with the way that renderWave=1 is added to gsf:link. Essentially it is to define a new version of the gsf-expand rule, which factors out parts not needed, but adds in the extra argument we need to the href that is formed

File size: 16.7 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<CollectionConfig xmlns:gsf="http://www.greenstone.org/greenstone3/schema/ConfigFormat" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
3 <metadataList>
4 <metadata lang="en" name="creator"></metadata>
5 <metadata lang="en" name="maintainer"></metadata>
6 <metadata lang="en" name="public">true</metadata>
7 </metadataList>
8 <displayItemList>
9 <displayItem assigned="true" lang="en" name="name">AMC-Essentia</displayItem>
10 <displayItem assigned="true" lang="en" name="description">
11 <p>
12 This collection shows the capabilities of the
13 <a href="https://essentia.upf.edu/documentation/">Essentia</a> DSP library
14 in combination with Greenstone3, based on the
15 253 MP3 files from
16 <a href="https://www.australianmusiccentre.com.au/">AMC</a>
17 </p>
18
19 <p>
20 When the digital library collection is built, Essentia is used to compute
21 a range of audio fetures commonly use in Music Information Retrieval (MIR) for
22 content analysis based techniques. These features are bound to
23 the document in the digital library correspondig to the source MP3 file.
24 </p>
25
26 </displayItem>
27 </displayItemList>
28 <search type="lucene">
29 <level name="document">
30 <displayItem lang="en" name="name">document</displayItem>
31 </level>
32<!--
33 <level name="section">
34 <displayItem lang="en" name="name">section</displayItem>
35 </level>
36-->
37 <defaultLevel name="document"/>
38 <index name="dc.Title,dc.Creator,LastFM.LastFMArtistWikiSummary">
39 <displayItem lang="en" name="name">all fields</displayItem>
40 </index>
41 <index name="dc.Title">
42 <displayItem lang="en" name="name">titles</displayItem>
43 </index>
44 <index name="dc.Creator">
45 <displayItem lang="en" name="name">artists</displayItem>
46 </index>
47 <defaultIndex name="dc.Title,dc.Creator,LastFM.LastFMArtistWikiSummary"/>
48 <searchType name="plain"/>
49 <searchType name="simpleform"/>
50 <searchType name="advancedform"/>
51 <format>
52 <gsf:template match="documentNode">
53 <td valign="top">
54 <gsf:link type="document">
55 <gsf:icon type="document"/>
56 </gsf:link>
57 </td>
58 <td>
59 <gsf:switch>
60 <gsf:metadata name="Title" select="ancestors" separator=": "/>
61 <gsf:when test="exists">
62 <gsf:metadata name="Title" select="ancestors" separator=": "/>:
63 </gsf:when>
64 </gsf:switch>
65 <gsf:link type="document">
66 <gsf:metadata name="Title"/>
67 </gsf:link>
68 </td>
69 </gsf:template>
70 </format>
71 </search>
72 <infodb type="jdbm"/>
73 <import>
74 <pluginList>
75 <plugin name="ZIPPlugin"/>
76 <plugin name="GreenstoneXMLPlugin"/>
77
78 <plugin name="EmbeddedMetadataPlugin"/>
79 <plugin name="AMCMetadataJSONPlugin"/>
80
81 <plugin name="EssentiaPlugin">
82 <option name="-block_exp" value=".*\.csv$"/>
83 <!--
84 <option name="-compute_mir_features" value="true"/>
85 -->
86
87 <option name="-compute_essentia_features" value="true"/>
88 <!--
89 <option name="-retrieve_mir_metadata" value="true"/>
90 -->
91 <option name="-enable_cache"/>
92 </plugin>
93
94 <plugin name="TextPlugin"/>
95 <plugin name="HTMLPlugin"/>
96 <plugin name="EmailPlugin"/>
97 <plugin name="PDFPlugin"/>
98 <plugin name="RTFPlugin"/>
99 <plugin name="WordPlugin"/>
100 <plugin name="PostScriptPlugin"/>
101 <plugin name="PowerPointPlugin"/>
102 <plugin name="ExcelPlugin"/>
103 <plugin name="ImagePlugin"/>
104 <plugin name="ISISPlugin"/>
105 <plugin name="NulPlugin"/>
106 <plugin name="MetadataXMLPlugin"/>
107 <plugin name="ArchivesInfPlugin"/>
108 <plugin name="DirectoryPlugin"/>
109 </pluginList>
110 </import>
111 <importOption name="OIDtype" value="assigned"/>
112 <importOption name="OIDmetadata" value="amc.id"/>
113
114 <browse>
115
116 <classifier name="AZCompactList">
117 <option name="-metadata" value="dc.Title;amc.title;ex.amc.title;Title"/>
118 <option name="-mingroup" value="2"/>
119 </classifier>
120 <classifier name="AZCompactList">
121 <option name="-metadata" value="dc.Creator,amc.artist,ex.amc.artist"/>
122 <option name="-buttonname" value="Artists"/>
123 <option name="-mingroup" value="1"/>
124 <option name="-minnesting" value="40"/>
125 </classifier>
126 <format>
127
128 <xsl:template name="gsf-link-render-wave">
129 <xsl:variable name="collNameLocal" select="/page/pageResponse/collection/@name"/>
130 <xsl:variable name="opt-title">
131 <xsl:choose>
132 <xsl:when test="@title">
133 <xsl:attribute name="title">
134 <xsl:value-of select="@title"/>
135 </xsl:attribute>
136 </xsl:when>
137 <xsl:when test="@titlekey">
138 <xsl:attribute name="title">
139 <xsl:value-of disable-output-escaping="yes" select="util:getCollectionText($collNameLocal, $site_name, /page/@lang, '{@titlekey}')"/>
140 </xsl:attribute>
141 </xsl:when>
142 </xsl:choose>
143 </xsl:variable>
144
145 <a>
146 <xsl:if test="@target">
147 <xsl:attribute name='target'>
148 <xsl:value-of select='@target'/>
149 </xsl:attribute>
150 </xsl:if>
151
152
153 <xsl:copy-of select="$opt-title"/>
154 <xsl:attribute name="href">
155 <xsl:value-of select='$library_name'/>
156 <xsl:text>/collection/</xsl:text>
157 <xsl:value-of select='/page/pageResponse/collection/@name'/>
158 <xsl:text>/document/</xsl:text>
159 <xsl:choose>
160 <xsl:when test="@OID">
161 <xsl:value-of select="@OID"/>
162 </xsl:when>
163 <xsl:when test="@OIDmetadata">
164 <xsl:variable name="OIDmeta" select="@OIDmetadata"/>
165 <xsl:value-of select="(.//metadataList)[last()]/metadata[@name='{$OIDmeta}']"/>
166 </xsl:when>
167 <xsl:otherwise>
168 <xsl:value-of select='@nodeID'/>
169 </xsl:otherwise>
170 </xsl:choose>
171 <xsl:text>?renderWave=1</xsl:text>
172 </xsl:attribute>
173 [Traditional Wave Display]
174 </a>
175 </xsl:template>
176
177 <gsf:template match="documentNode">
178 <td valign="top">
179 <gsf:link type="document">
180 <gsf:icon type="document"/>
181 </gsf:link>
182 </td>
183 <td valign="top">
184 <gsf:link type="source">
185 <gsf:choose-metadata>
186 <gsf:metadata name="thumbicon"/>
187 <gsf:metadata name="srcicon"/>
188 </gsf:choose-metadata>
189 </gsf:link>
190 </td>
191 <td valign="top">
192 <gsf:choose-metadata>
193 <gsf:metadata name="dc.Title"/>
194 <gsf:metadata name="amc.title"/>
195 <gsf:metadata name="exp.Title"/>
196 <gsf:metadata name="Title"/>
197 <gsf:default>Untitled</gsf:default>
198 </gsf:choose-metadata>
199 <gsf:space />
200
201 <gsf:link type="document">[Experimental Spectral Frequency]</gsf:link>
202
203 <gsf:space />
204 <!--
205 <gsf:variable name="AssocEssentiaJSON"><gsf:OID/>-AssocEssentia.json</gsf:variable>
206 <a download="{$AssocEssentiaJSON}" href="{$httpCollection}/index/assoc/{$assocFilePath}/{$AssocEssentiaJSON}">Download Audio Features</a>
207 -->
208
209 <xsl:call-template name="gsf-link-render-wave"/>
210
211 <!--
212 <span id="renderWave">
213 <gsf:link type="document">[Traditional Wave Display]</gsf:link>
214 </span>
215
216
217 <gsf:script>
218 var $alink = $('#renderWave a');
219 var alink_href = $alink.attr('href');
220 if (!alink_href.includes('renderWave')) {
221 alink_href += '?renderWave=1';
222 $alink.attr('href',alink_href);
223 }
224 </gsf:script>
225
226 -->
227
228 </td>
229 </gsf:template>
230 <gsf:template match="classifierNode">
231 <td valign="top">
232 <gsf:link type="classifier">
233 <gsf:icon type="classifier"/>
234 </gsf:link>
235 </td>
236 <td valign="top">(<gsf:metadata name="numleafdocs"/>)</td>
237 <td valign="top">
238 <gsf:link type="source">
239 <gsf:choose-metadata>
240 <gsf:metadata name="thumbicon"/>
241 <gsf:metadata name="srcicon"/>
242 </gsf:choose-metadata>
243 </gsf:link>
244 </td>
245 <td valign="top">
246 <gsf:link type="classifier">
247 <gsf:choose-metadata>
248 <gsf:metadata name="dc.Title"/>
249 <gsf:metadata name="amc.title"/>
250 <gsf:metadata name="exp.Title"/>
251 <gsf:metadata name="Title"/>
252 <gsf:default>Untitled</gsf:default>
253 </gsf:choose-metadata>
254 </gsf:link>
255 <gsf:switch>
256 <gsf:metadata name="Source"/>
257 <gsf:when test="exists">
258 <br/>
259 <i>(<gsf:metadata name="Source"/>)</i>
260 </gsf:when>
261 </gsf:switch>
262 </td>
263 </gsf:template>
264 <gsf:template match="classifierNode" mode="horizontal">
265 <gsf:link type="horizontal">
266 <gsf:metadata name="Title"/>
267 </gsf:link>
268 </gsf:template>
269 </format>
270<!--
271
272 <classifier name="List">
273 <option name="-metadata" value="dc.Title;Title"/>
274 <option name="-partition_type_within_level" value="approximate_size"/>
275 <option name="-removeprefix" value="&quot;"/>
276 </classifier>
277 <classifier name="AZCompactList">
278 <option name="-metadata" value="dc.Type.genre"/>
279 <option name="-buttonname" value="Genre"/>
280 </classifier>
281 <format>
282 <gsf:template match="documentNode">
283 <td valign="top">
284 <gsf:link type="document">
285 <gsf:icon type="document"/>
286 </gsf:link>
287 </td>
288 <td valign="top">
289 <gsf:metadata name="srclink"/>
290 <gsf:choose-metadata>
291 <gsf:metadata name="thumbicon"/>
292 <gsf:metadata name="srcicon"/>
293 </gsf:choose-metadata>
294 <gsf:metadata name="/srclink"/>
295 </td>
296 <td valign="top">
297 <gsf:choose-metadata>
298 <gsf:metadata name="dc.Title"/>
299 <gsf:metadata name="exp.Title"/>
300 <gsf:metadata name="Title"/>
301 <gsf:default>Untitled</gsf:default>
302 </gsf:choose-metadata>
303 <gsf:switch>
304 <gsf:metadata name="Source"/>
305 <gsf:when test="exists">
306 <br/>
307 <i>(<gsf:metadata name="Source"/>)</i>
308 </gsf:when>
309 </gsf:switch>
310 </td>
311 </gsf:template>
312 <gsf:template match="classifierNode">
313 <td valign="top">
314 <gsf:link type="classifier">
315 <gsf:icon type="classifier"/>
316 </gsf:link>
317 </td>
318 <td valign="top">
319 <gsf:metadata name="srclink"/>
320 <gsf:choose-metadata>
321 <gsf:metadata name="thumbicon"/>
322 <gsf:metadata name="srcicon"/>
323 </gsf:choose-metadata>
324 <gsf:metadata name="/srclink"/>
325 </td>
326 <td valign="top">
327 <gsf:choose-metadata>
328 <gsf:metadata name="dc.Title"/>
329 <gsf:metadata name="exp.Title"/>
330 <gsf:metadata name="Title"/>
331 <gsf:default>Untitled</gsf:default>
332 </gsf:choose-metadata>
333 <gsf:switch>
334 <gsf:metadata name="Source"/>
335 <gsf:when test="exists">
336 <br/><i>(<gsf:metadata name="Source"/>)</i>
337 </gsf:when>
338 </gsf:switch>
339 </td>
340 </gsf:template>
341 <gsf:template match="classifierNode" mode="horizontal">
342 <gsf:link type="horizontal">
343 <gsf:metadata name="Title"/>
344 </gsf:link>
345 </gsf:template>
346 </format>
347 -->
348</browse>
349
350
351 <display>
352 <format>
353 <gsf:option name="TOC" value="false"/>
354 <gsf:template name="documentHeading">
355 <!-- title will be dsiplayed in playbar at top of page, so supress showing title here -->
356 <gsf:script src="interfaces/{$interface_name}/js/direct-edit-source.js"/>
357 <xsl:call-template name="init-direct-edit"/>
358 </gsf:template>
359
360 <gsf:template name="documentContentXXX">
361 <xsl:param name="collName"/>
362 <xsl:variable name="docID" select="@docID"/>
363 </gsf:template>
364
365<!--
366 <xsl:variable name="httpCollection"><xsl:value-of select="/page/pageResponse/collection/metadataList/metadata[@name='httpPath']"/></xsl:variable>
367-->
368
369
370
371
372
373 <xsl:template name="documentContent">
374 <xsl:variable name="httpCollection">library/sites/<xsl:value-of select="$site_name"/>/collect/<xsl:value-of select="/page/pageResponse/collection/@name"/></xsl:variable>
375 <xsl:variable name="assocFilePath"><gsf:metadata name="assocfilepath" select="root"/></xsl:variable>
376
377 <xsl:variable name="cgiargFrameOffset">
378 <xsl:value-of select="/page/pageRequest/paramList/param[@name='p.frameOffset']/@value"/>
379 </xsl:variable>
380 <xsl:variable name="lastfmtrackurl">
381 <gsf:metadata name="dc.Identifier.lastfmtrackurl"/>
382 </xsl:variable>
383 <xsl:variable name="imageUrls">
384 <gsf:metadata multiple="true" name="EchoNest.Artist-RelatedImage" separator="&amp;quot;, &amp;quot;"/>
385 </xsl:variable>
386 <xsl:variable name="echonestid">
387 <gsf:metadata name="dc.Identifier"/>
388 </xsl:variable>
389
390 <!--
391 <xsl:variable name="assocFilePath"><gsf:metadata name="assocfilepath" select="root"/></xsl:variable>
392 -->
393
394 <div class="documenttext" style="padding-bottom: 20px; width:100%;">
395 <style>
396 .doc-metadata td { padding: 7px; }
397 </style>
398 <table class="doc-metadata">
399 <tbody>
400 <tr style="background-color:#C4CBA1">
401 <td>
402 Title
403 </td>
404 <td>
405 <gsf:metadata name="amc.title"/>
406 </td>
407 </tr>
408
409 <tr style="background-color:#fff">
410 <td>Artist</td>
411 <td><gsf:metadata name="amc.artist"/></td>
412 </tr>
413
414 <tr style="background-color:#C4CBA1">
415 <td>Essentia MFCC Features:</td><td><a href="{$httpCollection}/index/assoc/{$assocFilePath}/pessentia.json">Download</a></td>
416 </tr>
417
418 <tr style="background-color:#fff">
419 <td>Weka Predicted Arousal-Valence Features:</td><td><a href="{$httpCollection}/index/assoc/{$assocFilePath}/av.json">Download</a></td>
420 </tr>
421
422 </tbody>
423 </table>
424 </div>
425
426
427 <div class="documenttext">
428
429
430 <div id="demo">
431 <div id="waveform">
432 <!-- Here be the waveform -->
433 <xsl:text> </xsl:text>
434 </div>
435 <div id="wave-timeline"><xsl:text> </xsl:text></div>
436 <div id="wave-spectrogram"><xsl:text> </xsl:text></div>
437 <div id="wave-harmonic-pitch-class-profile"><xsl:text> </xsl:text></div>
438
439 <div id = "av-display" style="margin: auto; width: 200px;padding-top: 18px; display: none;">
440
441 <div id="arousal-display" style="display: inline-block; width: 95px;">
442 Arousal:
443 <span id="arousal-val">
444 0
445 </span>
446 </div>
447
448 <div id="valence-display" style="display: inline-block; width: 95px;">
449 Valence
450 <span id="valence-val">
451 0
452 </span>
453 </div>
454 </div>
455
456 <div>
457
458 <div class="controls">
459 <button class="btn btn-primary" data-action="play">
460 <i class="glyphicon glyphicon-play"></i>
461 Play /
462 <i class="glyphicon glyphicon-pause"></i>
463 Pause
464 </button>
465 </div>
466 </div>
467 </div>
468
469 <gsf:variable name="mp3url"><xsl:value-of select="$httpCollection"/>/index/assoc/<xsl:value-of select="$assocFilePath"/>/audio.mp3</gsf:variable>
470
471 <script src="ext/audio/wavesurfer-player.js">
472 <xsl:text> </xsl:text>
473 </script>
474 <gsf:script>
475 document.addEventListener('DOMContentLoaded', function() {
476 // Load audio from URL
477 wavesurfer.load(gs.variables.mp3url);
478 });
479 </gsf:script>
480 </div>
481 </xsl:template>
482
483 </format>
484 </display>
485
486 <replaceListRef id="gs2-standard"/>
487 <serviceRackList>
488 <!-- comment out the following serviceRack if you want to disable OAI for this collection -->
489 <serviceRack name="OAIPMH">
490 <ListMetadataFormats>
491 <!--What metadata sets to support is collection specific. To support other metadata schema, simply add a metadataFormat element here.
492 The support of unqualified Dublin Core metadata set is mandatory in the oai specification.
493 -->
494 <metadataFormat metadataPrefix="oai_dc">
495 <metadataPrefix>oai_dc</metadataPrefix>
496 <schema>http://www.openarchives.org/OAI/2.0/oai_dc.xsd</schema>
497 <metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/</metadataNamespace>
498 <!--<metadataElements>dc.Title,dc.Creator,dc.Subject,dc.Description,dc.Publisher,dc.Contributor,dc.Date,dc.Type,dc.Format,dc.Identifier,dc.Source,dc.Language,dc.Relation,dc.Coverage,dc.Rights</metadataElements>
499 -->
500 <mappingList>
501 <!--
502 The mapping is in the form: <publicly supported metadata name>,<mapped metadata name>, short as <A>,<B>
503 The first metadata name is medatory; if there is no mapped name followed, then the first name must be used by the records and
504 searchable in the database, otherwise it is the mapped name stored in the database. The number of mapping elements matches the
505 number of external metadata of the records. If only one name is present, the returned metadata will use this name plus the retrieved value;
506 if both <A>,<B> are present, the returned metadata will use <A>'s name plus <B>'s value retrieved from database.
507
508 **Bear in mind: if this mapping list is not present, the standard dc. metadata names (15 in total) will be used to retrieve metadata in the database.
509
510 **The only case when this mapping is not present is that: 1. this metadata format is oai_dc; 2. the metadata is also stored in the database by Dublin Core's names.
511 -->
512 <mapping>dc.Title,Title</mapping>
513 <!-- This mapping example means that the dc.Title is requested and the value of the metadata Title, which is used in this repository, is returned as response. -->
514 </mappingList>
515 </metadataFormat>
516 </ListMetadataFormats>
517 </serviceRack>
518 </serviceRackList>
519</CollectionConfig>
Note: See TracBrowser for help on using the repository browser.