Uncanny Listening - credits and licences ======================================== Research: Ana Marjalizo, BA; PhD student in Aesthetic and Electronic Music and lecturer in training, Faculty of Information and Audiovisual Media, University of Barcelona (UB), Barcelona, Spain. Her research question, her classes of songs, her descriptors (dinámica, armonía, timbre, complejidad estructural) and her method (k-means aligned to her labels) are what this tool is built around. Design: Miguel Angel Crozzoli. Implemented with Claude AI agents (Anthropic). Built with DarkSonification (https://github.com/Intelligent-Instruments-Lab/darksonification, Apache-2.0, © Miguel Angel Crozzoli and Intelligent Instrument Lab). Concepts: Thor Magnusson, Sonic Writing (Bloomsbury, 2019) — the signal–symbol framework; M. A. Crozzoli et al., "Dark Sonification", ICAD 2025. Layout and legend: after Dark Re-wilding's web display (Miguel Angel Crozzoli with Alice Eldridge): the controls panel (information over view · lens · sound · trace) and the perceptual legend (catalogue · hear · see; DarkSonification manual C5 §19, modelled on Dark Skyr). DATA None is published. The page holds no audio and no data: each researcher opens their own folders, analysed in the browser; nothing is uploaded. The tests read the researcher's corpus in place on the developer's machine. SOFTWARE PORTED TO JAVASCRIPT (no library shipped; each tested against the original, see TESTS in the repository) DarkLibrosa (DarkSonification), summary mode, as it computed the researcher's features in January 2026. librosa 0.11 (ISC). B. McFee, C. Raffel, D. Liang, D. P. W. Ellis, M. McVicar, E. Battenberg, O. Nieto, "librosa: Audio and Music Signal Analysis in Python", Proc. 14th Python in Science Conference (SciPy), 2015. Ported: STFT, mel filterbank (Slaney 1998, Auditory Toolbox), power_to_db, MFCC (DCT-II), chroma_stft with estimate_tuning / piptrack, spectral centroid, bandwidth, rolloff, flatness, contrast (D.-N. Jiang, L. Lu, H.-J. Zhang, J.-H. Tao, L.-H. Cai, "Music type classification by spectral contrast feature", ICME 2002), onset strength / spectral flux and onset detection with peak picking (S. Böck, F. Krebs, M. Schedl, "Evaluating the online capabilities of onset detection methods", ISMIR 2012), tempo by tempogram autocorrelation with a log-normal prior (D. P. W. Ellis, "Beat tracking by dynamic programming", J. New Music Research 36(1), 2007), zero-crossing rate, rms. scikit-learn 1.7 (BSD-3-Clause). F. Pedregosa et al., "Scikit-learn: Machine Learning in Python", JMLR 12, 2011. Ported: MinMaxScaler; PCA (K. Pearson 1901; H. Hotelling 1933) with sklearn's svd_flip sign rule; KMeans with k-means++ (D. Arthur, S. Vassilvitskii, SODA 2007) and Lloyd's algorithm (S. Lloyd, IEEE Trans. Inf. Theory 28, 1982); KernelDensity (M. Rosenblatt 1956; E. Parzen 1962); LogisticRegression with L2 (D. R. Cox 1958), fitted by L-BFGS (D. C. Liu, J. Nocedal, Math. Programming 45, 1989); stratified k-fold cross-validation (R. Kohavi, IJCAI 1995); adjusted Rand index (L. Hubert, P. Arabie, J. Classification 2, 1985). NumPy (BSD-3-Clause). C. R. Harris et al., "Array programming with NumPy", Nature 585, 2020. Ported: the legacy RandomState stream, Mersenne Twister MT19937 (M. Matsumoto, T. Nishimura, ACM TOMACS 8, 1998), so the clustering draws the same numbers as the desktop; numpy's histogram edges. DarkSonification's align_labels: flip for two labels; Hungarian assignment otherwise (H. W. Kuhn, Naval Research Logistics Quarterly 2, 1955; J. Munkres, J. SIAM 5, 1957). DBSCAN as scikit-learn's (M. Ester, H.-P. Kriegel, J. Sander, X. Xu, "A density-based algorithm for discovering clusters in large spatial databases with noise", KDD 1996), eps by default from the k-distance median (after Ester et al.'s k-dist plot); clusters mapped to their majority class. The extra MFCCs (DCT-II, orthonormal, of the mel dB spectrum; S. B. Davis, P. Mermelstein, IEEE Trans. ASSP 28, 1980) and chroma per pitch class, as librosa computes them; tested against librosa (max relative difference ~1e-6). Stereo (the channels row, opt-in; mono is the default preset): mid / side after A. D. Blumlein's stereo patent (GB 394,325, 1931; mid = (L + R) / 2, side = (L − R) / 2); per-frame inter-channel correlation (Pearson's coefficient of L and R, as a phase-correlation meter), width (side / mid rms) and L / R energy balance. The side features use the same DarkLibrosa port as the mono ones, tested against DarkLibrosa on the side signal. Statistics in the page: Cohen's d (J. Cohen, Statistical Power Analysis for the Behavioral Sciences, 1988) and η²; the boundary field by Nadaraya–Watson kernel regression (E. A. Nadaraya 1964; G. S. Watson 1964). Resampling to the libsoxr "HQ" specification (libsoxr, LGPL-2.1; used as a specification only): a Kaiser-windowed sinc (J. F. Kaiser 1974). FLAC decoding after the format specification (Xiph.Org; M. Q. C. van Beurden, A. Weaver, RFC 9639, 2024): our own decoder, core/flac.js, bit-exact against libsndfile on the test corpus. FROM DARK MUSIC CORPUS (Miguel Angel Crozzoli, with Christian Høgh; its web engine, copied with credit, MIT) core/mir.js, core/cqt.js (the librosa ports above), core/engine.js (Ward linkage: J. H. Ward, JASA 58, 1963; Gaussian mixtures by EM: A. P. Dempster, N. M. Laird, D. B. Rubin, JRSS B 39, 1977; spectral clustering: A. Y. Ng, M. I. Jordan, Y. Weiss, NIPS 2001; HDBSCAN: R. J. G. B. Campello, D. Moulavi, J. Sander, PAKDD 2013), core/keys.js, core/clap.js and core/tokenizer.js (bundled with the engine, not used by this page), the page's WAV / AIFF decoder (libsndfile-exact), and the Live link: the DMC Hub WebSocket contract (WS_CONTRACT v0.1) and its Max for Live devices (Cycling '74 / Ableton). Minimal pairs (the Live template's page side, lab/LIVE_TEMPLATE.md): pairs of segments that differ in one descriptor and hold the others; the difference voice in Live after beats and roughness (R. Plomp, W. J. M. Levelt, "Tonal consonance and critical bandwidth", JASA 38, 1965). CLAP, THE OPT-IN EXTRA (models and runtime shipped with this page, in models/ and vendor/ort/; loaded only when switched on) CLAP: Y. Wu, K. Chen, T. Zhang, Y. Hui, T. Berg-Kirkpatrick, S. Dubnov, "Large-scale contrastive language-audio pretraining with feature fusion and keyword-to-caption augmentation", ICASSP 2023 (LAION-CLAP). Models by LAION, Apache License 2.0 (model cards), which also covers the derived files: models/clap/ laion/larger_clap_music_and_speech (default) https://huggingface.co/laion/larger_clap_music_and_speech models/clap-music/ laion/larger_clap_music https://huggingface.co/laion/larger_clap_music models/clap-htsat-fused/ laion/clap-htsat-fused (LAION-CLAP 630k-audioset fusion, Hugging Face port) https://huggingface.co/laion/clap-htsat-fused Each audio encoder (with its projection) was exported to ONNX (torch.onnx, opset 17) from the Hugging Face Transformers model and its weights quantised to 8 bits (ONNX Runtime dynamic quantisation) by Miguel Angel Crozzoli for Dark Music Corpus (2026-10-23), checked against the original (audio cosine >= 0.988 to 0.997); copied unchanged, each with its NOTICE.txt beside it. Only the audio encoders ship here. ONNX Runtime Web v1.30.0 (Microsoft, MIT; vendor/ort/LICENSE) runs the model, in WebAssembly, with threads where the page is cross-origin isolated and on one thread otherwise (Safari). core/clap.js (Dark Music Corpus, MIT): the ClapFeatureExtractor of Hugging Face Transformers (Apache-2.0) ported to JavaScript. coi-sw.js (Dark Music Corpus, MIT): the service worker that isolates the page on GitHub Pages (COEP credentialless). SOFTWARE IN THE PAGE D3 v7.9.0, ISC licence (https://d3js.org). M. Bostock, V. Ogievetsky, J. Heer, "D3: Data-Driven Documents", IEEE TVCG 17(12), 2011. umap-js (PAIR, Google; MIT) with ml-matrix and ml-levenberg-marquardt (MIT): bundled with the engine copied from Dark Music Corpus (UMAP: L. McInnes, J. Healy, J. Melville, arXiv:1802.03426, 2018); not used by this page's views. The Dark Sonification style kit (darkstyle; project's own). Fonts of the paper look: Karla and Rubik, SIL Open Font License 1.1, served by Google Fonts. The browser's Web Audio API (decodeAudioData) for formats other than FLAC / WAV / AIFF. hyparquet 1.31.5 and hyparquet-writer 0.17.0 (Hyperparam, MIT; https://github.com/hyparam): reading and writing parquet stage tables (the Apache Parquet format, Apache Software Foundation); vendored unchanged except their package imports (vendor/PARQUET_README.txt). USED TO TEST, NOT SHIPPED librosa, soundfile with libsndfile (Erik de Castro Lopo; LGPL-2.1), NumPy, pandas, pyarrow, scikit-learn, Playwright (Microsoft; Apache-2.0) driving headless Chromium, Node.js. HOSTING GitHub Pages.