---
title: Posts tagged HoGent
canonical: https://0110.be/tags/HoGent
markdown_url: https://0110.be/tags/HoGent.md
page: 0
posts_per_page: 30
total_posts: 79
filters:
  tag: HoGent
previous:
next: https://0110.be/tags/HoGent.md?page=1
---

# Posts tagged HoGent

## [TarsosLSH in a Photomosaic Web App](https://0110.be/posts/TarsosLSH_in_a_Photomosaic_Web_App.md)

- Published: 2015-01-07T00:00:00Z
- Updated: 2015-01-07T08:52:18Z
- Author: Joren
- ID: 428
- Canonical: https://0110.be/posts/TarsosLSH_in_a_Photomosaic_Web_App

- Tags: [0110.be](https://0110.be/tags/0110.be.md), [Code](https://0110.be/tags/Code.md), [HoGent](https://0110.be/tags/HoGent.md), [Java](https://0110.be/tags/Java.md), [UGent](https://0110.be/tags/UGent.md)

TarsosLSH is a Java library implementing Locality-sensitive Hashing (LSH), a practical nearest neighbor search algorithm for high dimensional vectors that operates in sublinear time. The open source software package is authored by me and is available on GitHub: [TarsosLSH on GitHub](https://github.com/JorenSix/TarsosLSH).

With TarsosLSH, Joseph Hwang and Nicholas Kwon from Rice University created an [Image Mosaic web application](http://image-mosaic.appspot.com/). The application chops an uploaded photo into small blocks. For each block, a color histogram is created and compared with an index of color histograms of reference images. Subsequently each block is replaced with one of the top three nearest neighbors, creating a mosaic. Since high dimensional nearest neighbor search is needed, this is an ideal application for TarsosLSH. The application somewhat proves that TarsosLSH can be used in practical applications, which is comforting.


![The Starry Night, by Van Ghogh in Mosaic as created by the mosaic webapplication.](https://0110.be/files/photos/428/StarryNights.png)

![The Starry Night, by Van Ghogh - Original](https://0110.be/files/photos/428/the-starry-night-1889_original.jpg)

---

## [Doctoral defense Olmo Cornelis - Exploring the Symbiosis of Western and non-Western Music](https://0110.be/posts/Doctoral_defense_Olmo_Cornelis_-_Exploring_the_Symbiosis_of_Western_and_non-Western_Music.md)

- Published: 2013-12-23T00:00:00Z
- Updated: 2013-12-24T12:05:08Z
- Author: Joren
- ID: 413
- Canonical: https://0110.be/posts/Doctoral_defense_Olmo_Cornelis_-_Exploring_the_Symbiosis_of_Western_and_non-Western_Music

- Tags: [Computational musicology](https://0110.be/tags/Computational%20musicology.md), [Dutch](https://0110.be/tags/Dutch.md), [HoGent](https://0110.be/tags/HoGent.md), [UGent](https://0110.be/tags/UGent.md)

Woensdag 18 december 2013 organiseerde Olmo Cornelis een concert in het kader van zijn doctoraat. De dag erna volgde zijn verdediging. Nogmaals proficiat Olmo met het mooie eeh mbirapunt. Hieronder staat kort wat uitleg over het project en het concert.

<img style="float:right" src="https://0110.be/files/attachments/413/muurschilderij-560x375.jpg" width="230"/>

bq.. In zijn onderzoeksproject 'Exploring the symbiosis of Western and non-Western Music' stelde Olmo Cornelis de beschrijving van Centraal-Afrikaanse muziek centraal. Deze werd verkend via computationele technieken die de klank als signaal\
benaderden. De verkregen informatie zorgde voor beïnvloeding van het artistieke oeuvre waarin steeds een mengeling van impliciete en expliciete etnische invloeden spelen.

In het kader van de afronding van dit doctoraal onderzoek spelen het HERMESensemble, het Nadar Ensemble, Maja Jantar en Françoise Vanhecke op 18 december werk van Olmo Cornelis dat tijdens dit project geschreven werd. Het onderzoeksproject Exploring the symbiosis of Western and non-Western Music werd in 2008 geïnitieerd aan het Conservatorium / School of Arts van de HoGent en werd gefinancierd door het onderzoeksfonds Hogeschool Gent.

Beeld: Noel Cornelis, Reality of Possibilities, 2012


---

## [Evaluation and Recommendation of Pulse and Tempo Annotation in Ethnic Music - In Journal Of New Music Research](https://0110.be/posts/Evaluation_and_Recommendation_of_Pulse_and_Tempo_Annotation_in_Ethnic_Music_-_In_Journal_Of_New_Music_Research.md)

- Published: 2013-10-09T00:00:00Z
- Updated: 2013-12-05T18:19:15Z
- Author: Joren
- ID: 379
- Canonical: https://0110.be/posts/Evaluation_and_Recommendation_of_Pulse_and_Tempo_Annotation_in_Ethnic_Music_-_In_Journal_Of_New_Music_Research

- Tags: [HoGent](https://0110.be/tags/HoGent.md), [JNMR](https://0110.be/tags/JNMR.md), [Research papers](https://0110.be/tags/Research%20papers.md), [featured](https://0110.be/tags/featured.md)

<img src="https://0110.be/files/attachments/379/jnmr.cover.jpg" style="float:right;margin-left:5px;"/> The journal paper *Evaluation and Recommendation of Pulse and Tempo Annotation in Ethnic Music - In Journal Of New Music Research* by Cornelis, Six, Holzapfel and Leman was published in a special issue about Computational Ethnomusicology of [the Journal of New Music Research (JNMR)](http://www.tandfonline.com/toc/nnmr20/current) on the 20th of august 2013. Below you can find the abstract for the article, and the full text author version of the article itself.

> **Abstract:** Large digital archives of ethnic music require automatic tools to provide musical content descriptions. While various automatic approaches are available, they are to a wide extent developed for Western popular music. This paper aims to analyze how automated tempo estimation approaches perform in the context of Central-African music. To this end we collect human beat annotations for a set of musical fragments, and compare them with automatic beat tracking sequences. We first analyze the tempo estimations derived from annotations and beat tracking results. Then we examine an approach, based on mutual agreement between automatic and human annotations, to automate such analysis, which can serve to detect musical fragments with high tempo ambiguity.

To read the full text you can either download "Evaluation and Recommendation of Pulse ant Tempo Annotation in Ethnic Music, Author version":\[2013.10.09.Tempo_annotation_in_ethnic_music-JNMR-Author_Version.pdf\]. Or obtain the published version of [Evaluation and Recommendation of Pulse ant Tempo Annotation in Ethnic Music, published version](http://www.tandfonline.com/doi/full/10.1080/09298215.2013.812123)

Below the BibTex entry for the article is embedded.

\`\`\`ruby\
\@article{cornelis2013tempo_jnmr,\
author = {Olmo Cornelis, Joren Six, Andre Holzapfel, and Marc Leman},\
title = {{Evaluation and Recommendation of Pulse ant Tempo Annotation in Ethnic Music}},\
journal = {{Journal of New Music Research}},\
volume = {42},\
number = {2},\
pages = {131-149},\
year = {2013},\
doi = {10.1080/09298215.2013.812123}\
}\
\`\`\`


- [jnmr.cover.jpg](https://0110.be/files/attachments/379/jnmr.cover.jpg)

- [2013.10.09.Tempo\_annotation\_in\_ethnic\_music-JNMR-Author\_Version.pdf](https://0110.be/files/attachments/379/2013.10.09.Tempo_annotation_in_ethnic_music-JNMR-Author_Version.pdf)

---

## [Constant-Q Transform in Java with TarsosDSP](https://0110.be/posts/Constant-Q_Transform_in_Java_with_TarsosDSP.md)

- Published: 2013-10-09T00:00:00Z
- Updated: 2020-11-17T09:01:43Z
- Author: Joren
- ID: 363
- Canonical: https://0110.be/posts/Constant-Q_Transform_in_Java_with_TarsosDSP

- Tags: [Code](https://0110.be/tags/Code.md), [Computational musicology](https://0110.be/tags/Computational%20musicology.md), [HoGent](https://0110.be/tags/HoGent.md), [Java](https://0110.be/tags/Java.md), [Music Information Retrieval](https://0110.be/tags/Music%20Information%20Retrieval.md), [TarsosDSP](https://0110.be/tags/TarsosDSP.md)

The DSP library for Taros, aptly named TarsosDSP, now includes an implementation of a *Constant-Q Transform* (as of version 1.6). The Constant-Q transform does essentially the same thing as an FFT, but has the advantage that each octave has the same amount of bins. This makes the Constant-Q transform practical for applications processing music. If, for example, 12 bins per octave are chosen, these can correspond with the western musical scale.

Also included in the newest release (version 1.7) is a way to visualize the transform, or other musical features. The visualization implementation is done together with Thomas Stubbe.

The example application below shows the Constant-Q transform with an overlay of pitch estimations. The corresponding waveform is also shown.

<div align="center">
<a href="http://0110.be/releases/TarsosDSP/TarsosDSP-latest/TarsosDSP-latest-Examples/ConstantQ-latest.jar"><img src="https://0110.be/files/attachments/363/constantq-visualization-java.png" alt="Constant-Q transform in Java"/></a>

</div>
Find your oven fresh baked binaries at the [TarsosDSP Release Repository](http://tarsos.0110.be/releases/TarsosDSP/).\
The source code can be found at the [TarsosDSP GitHub repository](https://github.com/JorenSix/TarsosDSP).


- [constantq-visualization-java.png](https://0110.be/files/attachments/363/constantq-visualization-java.png)

---

## [Tarsos, a Modular Platform for Precise Pitch Analysis of Western and Non-Western Music - In Journal Of New Music Research](https://0110.be/posts/Tarsos%2C_a_Modular_Platform_for_Precise_Pitch_Analysis_of_Western_and_Non-Western_Music_-_In_Journal_Of_New_Music_Research.md)

- Published: 2013-08-22T00:00:00Z
- Updated: 2015-06-05T08:10:05Z
- Author: Joren
- ID: 331
- Canonical: https://0110.be/posts/Tarsos%2C_a_Modular_Platform_for_Precise_Pitch_Analysis_of_Western_and_Non-Western_Music_-_In_Journal_Of_New_Music_Research

- Tags: [Computational ethnomusicology](https://0110.be/tags/Computational%20ethnomusicology.md), [HoGent](https://0110.be/tags/HoGent.md), [JNMR](https://0110.be/tags/JNMR.md), [Java](https://0110.be/tags/Java.md), [Music Information Retrieval](https://0110.be/tags/Music%20Information%20Retrieval.md), [Research papers](https://0110.be/tags/Research%20papers.md), [Tarsos](https://0110.be/tags/Tarsos.md), [featured](https://0110.be/tags/featured.md)

<img src="https://0110.be/files/attachments/331/jnmr.cover.jpg" style="float:right"/> The journal paper *Tarsos, a Modular Platform for Precise Pitch Analysis of Western and Non-Western Music* by Six, Cornelis, and Leman was published in a special issue about Computational Ethnomusicology of [the Journal of New Music Research (JNMR)](http://www.tandfonline.com/toc/nnmr20/current) on the 20th of august 2013. Below you can find the abstract for the article, and pointers to audio examples, the Tarsos software, and the author version of the article itself.

> **Abstract:** This paper presents Tarsos, a modular software platform used to extract and analyze pitch organization in music. With Tarsos pitch estimations are generated from an audio signal and those estimations are processed in order to form musicologically meaningful representations. Tarsos aims to offer a flexible system for pitch analysis through the combination of an interactive user interface, several pitch estimation algorithms, filtering options, immediate auditory feedback and data output modalities for every step. To study the most frequently used pitches, a fine-grained histogram that allows up to 1200 values per octave is constructed. This allows Tarsos to analyze deviations in Western music, or to analyze specific tone scales that differ from the 12 tone equal temperament, common in many non-Western musics. Tarsos has a graphical user interface or can be launched using an API - as a batch script. Therefore, it is fit for both the analysis of individual songs and the analysis of large music corpora. The interface allows several visual representations, and can indicate the scale of the piece under analysis. The extracted scale can be used immediately to tune a MIDI keyboard that can be played in the discovered scale. These features make Tarsos an interesting tool that can be used for musicological analysis, teaching and even artistic productions.

To read the full text you can either download "Tarsos, a Modular Platform for Precise Pitch Analysis of Western and Non-Western Music, Author version":\[2013.08.20.tarsos_jnmr_author_version.pdf\]. Or obtain the published version of [Tarsos, a Modular Platform for Precise Pitch Analysis of Western and Non-Western Music, published version](http://www.tandfonline.com/doi/full/10.1080/09298215.2013.797999)

Ladrang Kandamanyura (slendro pathet manyura), is the name of the piece used in the article throughout section 2. The album on which the piece can be found is available at [wergo](http://www.wergo.de/shop/en_UK/Audio_CDs/1000088/show,223736,n.html). Below a thirty second fragment is embedded. You can also "download":\[08.\_Ladrang_Kandamanyura_10s-20s_up.wav\] the thirty second fragment to analyse it yourself.

<object height="81" width="100%">
<param name="movie" value="http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F9912709%3Fsecret_token%3Ds-pZJk8&secret_url=true"></param> <param name="allowscriptaccess" value="always"></param> <embed allowscriptaccess="always" height="81" src="http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F9912709%3Fsecret_token%3Ds-pZJk8&secret_url=true" type="application/x-shockwave-flash" width="100%"></embed> </object>

Below the BibTex entry for the article is embedded.

\`\`\`ruby\
\@article{six2013tarsos_jnmr,\
author = {Six, Joren and Cornelis, Olmo and Leman, Marc},\
title = {Tarsos, a Modular Platform for Precise Pitch Analysis\
of Western and Non-Western Music},\
journal = {Journal of New Music Research},\
volume = {42},\
number = {2},\
pages = {113-129},\
year = {2013},\
doi = {10.1080/09298215.2013.797999},\
URL = {http://www.tandfonline.com/doi/abs/10.1080/09298215.2013.797999}\
}\
\`\`\`


- [jnmr.cover.jpg](https://0110.be/files/attachments/331/jnmr.cover.jpg)

- [08.\_Ladrang\_Kandamanyura\_10s-20s\_up.wav](https://0110.be/files/attachments/331/08._Ladrang_Kandamanyura_10s-20s_up.wav)

- [2013.08.20.tarsos\_jnmr\_author\_version.pdf](https://0110.be/files/attachments/331/2013.08.20.tarsos_jnmr_author_version.pdf)

---

## [FMA 2013 - Computer Assisted Transcripton of Ethnic Music](https://0110.be/posts/FMA_2013_-_Computer_Assisted_Transcripton_of_Ethnic_Music.md)

- Published: 2013-06-14T00:00:00Z
- Updated: 2014-02-25T09:22:13Z
- Author: Joren
- ID: 377
- Canonical: https://0110.be/posts/FMA_2013_-_Computer_Assisted_Transcripton_of_Ethnic_Music

- Tags: [Computational ethnomusicology](https://0110.be/tags/Computational%20ethnomusicology.md), [Computational musicology](https://0110.be/tags/Computational%20musicology.md), [Folk Music Analysis (FMA) conference](https://0110.be/tags/Folk%20Music%20Analysis%20%28FMA%29%20conference.md), [HoGent](https://0110.be/tags/HoGent.md), [Java](https://0110.be/tags/Java.md), [Research papers](https://0110.be/tags/Research%20papers.md), [Tarsos](https://0110.be/tags/Tarsos.md), [featured](https://0110.be/tags/featured.md)

At [the third international workshop on Folk Music Analysis (FMA2013)](http://www.elab-oralculture.nl/fma2013) we presented a poster titled "Computer Assisted Transcription of Ethnic Music":\[A0-Poster.png\]. The workshop took place in Amsterdam, Netherlands, June 6 and 7, 2013.

In the extended abstract, also titled "Computer Assisted Transcription of Ethnic Music":\[FMA_2013.computer_assisted_transcription.pdf\], it is described how the Tarsos software program now has features aiding transcription. Tarsos is especially practical for ethnic music of which the tone scale is not known beforehand. [The proceedings of FMA 2013](http://igitur-archive.library.uu.nl/math/2013-0604-200726/UUindex.html) are available as well.

<div style="text-align:center">
"<img src="https://0110.be/files/attachments/377/A0-Poster.jpg" width="450" alt="Computer Assited Transcription of Ethnic Music poster">":\[A0-Poster.jpg\]

</div>
During the conference there also was an interesting panel on transcription. The following people participated: John Ashley Burgoyne, moderator (University of Amsterdam), Kofi Agawu (Princeton University), Dániel P. Biró (University of Victoria), Olmo Cornelis (University College Ghent, Belgium), Emilia Gómez (Universitat Pompeu Fabra, Barcelona), and Barbara Titus (Utrecht University). Some pictures can be found below.


![](https://0110.be/files/photos/377/IMG_20130607_140442.jpg)

![](https://0110.be/files/photos/377/IMG_20130607_152620.jpg)

- [A0-Poster.pdf](https://0110.be/files/attachments/377/A0-Poster.pdf)

- [FMA\_2013.computer\_assisted\_transcription.pdf](https://0110.be/files/attachments/377/FMA_2013.computer_assisted_transcription.pdf)

- [A0-Poster.jpg](https://0110.be/files/attachments/377/A0-Poster.jpg)

- [FMA\_2013.computer\_assisted\_transcription.pdf](https://0110.be/files/attachments/377/FMA_2013.computer_assisted_transcription.pdf)

- [IMG\_20130607\_152620.jpg](https://0110.be/files/attachments/377/IMG_20130607_152620.jpg)

- [IMG\_20130607\_140442.jpg](https://0110.be/files/attachments/377/IMG_20130607_140442.jpg)

---

## [TarsosLSH - Locality Sensitive Hashing (LSH) in Java](https://0110.be/posts/TarsosLSH_-_Locality_Sensitive_Hashing_%28LSH%29_in_Java.md)

- Published: 2013-04-17T00:00:00Z
- Updated: 2020-11-17T09:06:57Z
- Author: Joren
- ID: 356
- Canonical: https://0110.be/posts/TarsosLSH_-_Locality_Sensitive_Hashing_%28LSH%29_in_Java

- Tags: [Code](https://0110.be/tags/Code.md), [HoGent](https://0110.be/tags/HoGent.md), [Java](https://0110.be/tags/Java.md)

TarsosLSH is a Java library implementing Locality-sensitive Hashing (LSH), a practical nearest neighbour search algorithm for multidimensional vectors that operates in sublinear time. It supports several Locality Sensitive Hashing (LSH) families: the Euclidean hash family (L<sub>2</sub>), city block hash family (L<sub>1</sub>) and cosine hash family. The library tries to hit the sweet spot between being capable enough to get real tasks done, and compact enough to serve as a demonstration on how <abbr title="Locality-sensitive Hashing">LSH</abbr> works. It relates to the Tarsos project because it is a practical way to search for and compare musical features.

### Quickly Getting Started with TarsosLSH

Head over to the [TarsosLSH release repository](https://0110.be/releases/TarsosLSH/) and download the latest [TarsosLSH library](https://0110.be/releases/TarsosLSH/TarsosLSH-latest/TarsosLSH-latest.jar). Consult the [TarsosLSH API documentation](https://0110.be/releases/TarsosLSH/TarsosLSH-latest/TarsosLSH-latest-Documentation/). If you, for some reason, want to build from source, you need [Apache Ant](http://ant.apache.org/) and [git](http://git-scm.com/) installed on your system. The following commands fetch the source and build the library and example jars:

    <code>git clone https://JorenSix@github.com/JorenSix/TarsosLSH.git
    cd TarsosLSH/build
    ant  #Builds the core TarsosLSH library
    ant javadoc #build the API documentation
    </code>

\
When everything runs correctly you should be able to run the command line application, and have the latest version of the TarsosLSH library for inclusion in your projects. Also, the Javadoc documentation for the API should be available in TarsosLSH/doc. Drop me a line if you use TarsosLSH in your project. Always nice to hear how this software is used.

The fastest way to get something on your screen is executing this on your command line: `java - jar TarsosLSH.jar` this lets LSH run on a random data set. The full reference of the command line application is included below:

    Name
        TarsosLSH: finds the nearest neighbours in a data set quickly, using LSH.
    Synopsis    
        java - jar TarsosLSH.jar [options] dataset.txt queries.txt 
    Description
        Tries to find nearest neighbours for each vector in the 
        query file, using Euclidean (L2) distance by default.

        Both dataset.txt and queries.txt have a similar format: 
        an optional identifier for the vector and a list of N 
        coordinates (which should be doubles).

        [Identifier] coord1 coord2 ... coordN
        [Identifier] coord1 coord2 ... coordN

        For an example data set with two elements and 4 dimensions:

        Hans 12 24 18.5 -45.6
        Jane 13 19 -12.0 49.8

        Options are:

        -f cos|l1|l2 
            Defines the hash family to use:
                l1  City block hash family (L1)
                l2  Euclidean hash family(L2)
                cos Cosine distance hash family
        -r radius 
            Defines the radius in which near neighbours should
            be found. Should be a double. By default a reasonable
            radius is determined automatically.
        -h n_hashes
            An integer that determines the number of hashes to 
            use. By default 4, 32 for the cosine hash family.
        -t n_tables
            An integer that determines the number of hash tables,
            each with n_hashes, to use. By default 4.
        -n n_neighbours
            Number of neighbours in the neighbourhood, defaults to 3.
        -b 
            Benchmark the settings. 
        --help 
            Prints this helpful message.
    Examples
        Search for nearest neighbours using the l2 hash family with a radius of 500
        and utilizing 5 hash tables, each with 3 hashes.

        java - jar TarsosLSH.jar -f l2 -r 500 -h 3 -t 5 dataset.txt queries.txt

### Source Code Organization

The source tree is divided in three directories:

-   `src` contains the source files of the core DSP libraries.

-   `test` contains unit tests for some of the DSP functionality.

-   `build` contains ANT build files. Either to build Java documentation or runnable JAR-files for the example applications.

### Further Reading

This section includes a links to resources used to implement this library.

-   The [LSH-page](http://www.mit.edu/~andoni/LSH/) maintained by Alexandr Andoni contains pointers to good resources:
    -   [Locality-Sensitive Hashing Scheme Based on p-Stable Distributions](http://theory.lcs.mit.edu/~indyk/nips-nn.ps) a chapter by Alexandr Andoni, Mayur Datar, Nicole Immorlica, Piotr Indyk, and Vahab Mirrokni which appeared in the book Nearest Neighbor Methods in Learning and Vision: Theory and Practice, by T. Darrell and P. Indyk and G. Shakhnarovich (eds.), MIT Press, 2006.
    -   [Similarity Search in High Dimensions via Hashing](http://theory.csail.mit.edu/~indyk/vldb99.ps) The original LSH Paper for hamming distance by Gionis, Aristides and Indyk, Piotr and Motwani, Rajeev.

-   [Locality-Sensitive Hashing for Finding Nearest Neighbors](http://www.slaney.org/malcolm/yahoo/Slaney2008-LSHTutorial.pdf) a good introduction of <abbr title="Locality-sensitive Hashing">LSH</abbr> by Malcom Slaney & Michael Casey

-   [Finding Similar Items](http://i.stanford.edu/~ullman/mmds/ch3.pdf), Chapter Three of "Mining of Massive Datasets" by Anand Rajaraman and Jeff Ullman is a textbook introducing the LSH concept.

-   [Szudzik pairing functions](http://szudzik.com/ElegantPairing.pdf) by Matthew Szudzik. Explains how integer hashes can be combined deterministically to form a reversible, unique new hash.


---

## [Flanger Audio Effect in Java](https://0110.be/posts/Flanger_Audio_Effect_in_Java.md)

- Published: 2013-02-04T14:41:06Z
- Updated: 2013-12-05T18:19:15Z
- Author: Joren
- ID: 338
- Canonical: https://0110.be/posts/Flanger_Audio_Effect_in_Java

- Tags: [HoGent](https://0110.be/tags/HoGent.md), [Java](https://0110.be/tags/Java.md), [TarsosDSP](https://0110.be/tags/TarsosDSP.md)

The DSP library for Taros, aptly named TarsosDSP, now includes an example demonstrating the [flanging audio effect](http://en.wikipedia.org/wiki/Flanging). Flanging, essentialy mixing the signal with a varying delay of itself, produces an interesting interference pattern.

<div align="center">
<a href="https://0110.be/releases/TarsosDSP/TarsosDSP-latest/TarsosDSP-latest-Examples/Flanging-latest.jar"><img src="https://0110.be/files/attachments/338/Flanger_Effect_in_Java.png" alt="Pitch estimation synthesizer"/></a>

</div>
The flanging example works on wav-files or on input from microphone. Try it yourself, download\
[Flanging.jar](https://0110.be/releases/TarsosDSP/TarsosDSP-latest/TarsosDSP-latest-Examples/Flanging-latest.jar), the executable jar file. Below you can check what flanging sounds like with various parameters.

<iframe width="100%" height="166" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F77772715">
</iframe>
The source code of the Java implementation can be found on the [TarsosDSP github page](https://github.com/JorenSix/TarsosDSP).


- [Flanger\_Effect\_in\_Java.png](https://0110.be/files/attachments/338/Flanger_Effect_in_Java.png)

---

## [TarsosDSP Christmas Edition: Jingle Cats](https://0110.be/posts/TarsosDSP_Christmas_Edition%3A_Jingle_Cats.md)

- Published: 2012-12-21T14:38:52Z
- Updated: 2013-12-05T18:19:15Z
- Author: Joren
- ID: 373
- Canonical: https://0110.be/posts/TarsosDSP_Christmas_Edition%3A_Jingle_Cats

- Tags: [Code](https://0110.be/tags/Code.md), [HoGent](https://0110.be/tags/HoGent.md), [Java](https://0110.be/tags/Java.md)

The DSP library for Taros, aptly named TarsosDSP, now includes an example showing how to synthesize cat sounds. The inspration came from this [youtube video](http://www.youtube.com/watch?v=vEg4SEch27w)

To hear what exactly it does, listen to the following audio example.

<iframe width="100%" height="166" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F72084966">
</iframe>
There is also a command line interface, the following command does

<code>\
java -jar Catify-latest.jar in.mid\
</code>

     _______                       _____   _____ _____  
    |__   __|                     |  __ \ / ____|  __ \ 
       | | __ _ _ __ ___  ___  ___| |  | | (___ | |__) |
       | |/ _` | '__/ __|/ _ \/ __| |  | |\___ \|  ___/ 
       | | (_| | |  \__ \ (_) \__ \ |__| |____) | |     
       |_|\__,_|_|  |___/\___/|___/_____/|_____/|_|     

    ----------------------------------------------------
    Name:
        TarsosDSP catify'er
    ----------------------------------------------------
    Synopsis:
        java -jar Catify-latest.jar input.mid
    ----------------------------------------------------
    Description:

The source code of the Java implementation of the catify'er can be found on the [TarsosDSP github page](https://github.com/JorenSix/TarsosDSP).


---

## [TarsosDSP Pitch Estimation Synthesizer](https://0110.be/posts/TarsosDSP_Pitch_Estimation_Synthesizer.md)

- Published: 2012-12-19T15:07:10Z
- Updated: 2013-12-05T18:19:15Z
- Author: Joren
- ID: 359
- Canonical: https://0110.be/posts/TarsosDSP_Pitch_Estimation_Synthesizer

- Tags: [HoGent](https://0110.be/tags/HoGent.md), [Java](https://0110.be/tags/Java.md), [TarsosDSP](https://0110.be/tags/TarsosDSP.md)

The DSP library for Taros, aptly named TarsosDSP, now includes an example showing how to synthesize pitch estimations. The goal of the example is to show which errors are made by different pitch detectors.

<div align="center">
<a href="https://0110.be/releases/TarsosDSP/TarsosDSP-latest/TarsosDSP-latest-Examples/Resynthesizer-latest.jar"><img src="https://0110.be/files/attachments/359/Pitch_Estimation_Synthesizer.png" alt="Pitch estimation synthesizer"/></a>

</div>
To test the application, download and execute the [Resynthesizer.jar](http://tarsos.0110.be/releases/TarsosDSP/TarsosDSP-latest/TarsosDSP-latest-Examples/Resynthesizer-latest.jar) file and load an audio file. For the moment only 44.1kHz mono wav is allowed. To hear what exactly it does, compare the following two audio fragments:

<iframe width="100%" height="166" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F71830992">
</iframe>
<iframe width="100%" height="166" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F71831213">
</iframe>
There is also a command line interface, the following command does pitch tracking, and follows the envelope of `in.wav` and immediately plays it on the default audio device. If you want to save the audio, see the command line options. The "flute example":\[flute.wav\] is provided for your convenience.

<code>\
java -jar Resynthesizer-latest.jar in.wav\
</code>

     _______                       _____   _____ _____  
    |__   __|                     |  __ \ / ____|  __ \ 
       | | __ _ _ __ ___  ___  ___| |  | | (___ | |__) |
       | |/ _` | '__/ __|/ _ \/ __| |  | |\___ \|  ___/ 
       | | (_| | |  \__ \ (_) \__ \ |__| |____) | |     
       |_|\__,_|_|  |___/\___/|___/_____/|_____/|_|     

    ----------------------------------------------------
    Name:
        TarsosDSP resynthesizer
    ----------------------------------------------------
    Synopsis:
        java -jar CommandLineResynthesizer.jar [--detector DETECTOR] [--output out.wav] [--combined combined.wav] input.wav
    ----------------------------------------------------
    Description:
        Extracts pitch and loudnes from audio and resynthesises the audio with that information.
        The result is either played back our written in an output file. 
        There is als an option to combine source and synthezized material
        in the left and right channels of a stereo audio file.

        input.wav       a readable wav file.

        --output out.wav        a writable file.

        --combined combined.wav     a writable output file. One channel original, other synthesized.
        --detector DETECTOR defaults to FFT_YIN or one of these:
                    YIN
                    MPM
                    FFT_YIN
                    DYNAMIC_WAVELET
                    AMDF

The source code of the Java implementation of the synthesizer can be found on the [TarsosDSP github page](https://github.com/JorenSix/TarsosDSP).


- [Pitch\_Estimation\_Synthesizer.png](https://0110.be/files/attachments/359/Pitch_Estimation_Synthesizer.png)

- [flute.wav](https://0110.be/files/attachments/359/flute.wav)

---

## [Phase Vocoding: Time Stretching and Pitch Shifting with TarsosDSP Java](https://0110.be/posts/Phase_Vocoding%3A_Time_Stretching_and_Pitch_Shifting_with_TarsosDSP_Java.md)

- Published: 2012-12-13T00:00:00Z
- Updated: 2020-11-17T09:02:35Z
- Author: Joren
- ID: 355
- Canonical: https://0110.be/posts/Phase_Vocoding%3A_Time_Stretching_and_Pitch_Shifting_with_TarsosDSP_Java

- Tags: [HoGent](https://0110.be/tags/HoGent.md), [TarsosDSP](https://0110.be/tags/TarsosDSP.md), [WSOLA](https://0110.be/tags/WSOLA.md)

The DSP library for Taros, aptly named TarsosDSP, now includes an implementation of a *pitch shifting algorithm* (as of version 1.4) and a time stretching algorithm. Combined, the two can be used for something like [phase vocoding](http://en.wikipedia.org/wiki/Phase_vocoder). With a phase vocoder you can load an audio snippet, change the pitch and duration and e.g. create a library of snippets. E.g. by recording one piano key stroke, it is possible to generate two octaves of samples of different lengths, and use those in stead of synthesized samples. The following example application shows exactly that, implemented in the java programming language.

The example application below shows how to pitch shift and time stretch a sample to create a sample library with the TarsosDSP library.

<div align="center">
<a href=/releases/TarsosDSP/TarsosDSP-latest/TarsosDSP-latest-Examples/SampleExtractor-latest.jar"><img src="https://0110.be/files/attachments/355/_Extract___Modify_Samples.png" alt="Pitch shifting in Java"/></a>

</div>
Find your oven fresh baked binaries at the [TarsosDSP Release Repository](https://0110.be/releases/TarsosDSP/).


- [\_Extract\_\_\_Modify\_Samples.png](https://0110.be/files/attachments/355/_Extract___Modify_Samples.png)

---

## [Tarsos 1.0: Transcription Features](https://0110.be/posts/Tarsos_1.0%3A_Transcription_Features.md)

- Published: 2012-12-05T00:00:00Z
- Updated: 2020-11-17T09:00:24Z
- Author: Joren
- ID: 335
- Canonical: https://0110.be/posts/Tarsos_1.0%3A_Transcription_Features

- Tags: [Computational ethnomusicology](https://0110.be/tags/Computational%20ethnomusicology.md), [Computational musicology](https://0110.be/tags/Computational%20musicology.md), [HoGent](https://0110.be/tags/HoGent.md), [Java](https://0110.be/tags/Java.md), [Music Information Retrieval](https://0110.be/tags/Music%20Information%20Retrieval.md), [Tarsos](https://0110.be/tags/Tarsos.md), [WSOLA](https://0110.be/tags/WSOLA.md), [featured](https://0110.be/tags/featured.md)

Today marks the reslease of Tarsos 1.0 . The new Tarsos release contains practical transcription features. As can be seen in the screenshot below, a time stretching feature makes it easy to loop a certain audio fragment while it is playing in a slow tempo. The next loop can be played with by pressing the `n` key, the one before by pressing `b`.

Since the pitch classes can be found in a song, and there is a feature that lets you play a `MIDI` keyboard in the tone scale of the song under analysis, transcription of ethnic music is made a lot easier.

<div align="center">
<a href="http://0110.be/releases/Tarsos/Tarsos-latest/Tarsos-latest.jar">\
<img src='https://0110.be/files/attachments/335/Tarsos-1.0.png' alt="Tarsos 1.0" width="400px"/>\
</a>

</div>
The new release of Tarsos can be found in the [Tarsos release repository](http://0110.be/releases/Tarsos/). From now on, nightly releases are uploaded there automatically.


---

## [Pitch Shifting - Implementation in Pure Java with Resampling and Time Stretching](https://0110.be/posts/Pitch_Shifting_-_Implementation_in_Pure_Java_with_Resampling_and_Time_Stretching.md)

- Published: 2012-11-05T00:00:00Z
- Updated: 2020-11-17T09:07:53Z
- Author: Joren
- ID: 370
- Canonical: https://0110.be/posts/Pitch_Shifting_-_Implementation_in_Pure_Java_with_Resampling_and_Time_Stretching

- Tags: [Code](https://0110.be/tags/Code.md), [Command Line Application](https://0110.be/tags/Command%20Line%20Application.md), [HoGent](https://0110.be/tags/HoGent.md), [Java](https://0110.be/tags/Java.md), [TarsosDSP](https://0110.be/tags/TarsosDSP.md), [WSOLA](https://0110.be/tags/WSOLA.md), [featured](https://0110.be/tags/featured.md)

The DSP library for Taros, aptly named TarsosDSP, now includes an implementation of a *pitch shifting algorithm* (as of version 1.4). The goal of pitch shifting is to change the pitch of a piece of audio without affecting the duration. The algorithm implemented is a combination of resampling and time stretching. Resampling changes the pitch of the audio, but affects the total duration. Consecutively, the duration of the audio is stretched to the original (without affecting pitch) with time stretching. The result is very similar to [phase vocoding](http://en.wikipedia.org/wiki/Phase_vocoder).

The example application below shows how to pitch shift input from the microphone in real-time, or pitch shift a recorded track with the TarsosDSP library.

<div align="center">
<a href="https://0110.be/releases/TarsosDSP/TarsosDSP-1.4/TarsosDSP-1.4-Examples/PitchShift-1.4.jar"><img src="https://0110.be/files/attachments/370/pitch-shift-in-java.png" alt="Pitch shifting in Java"/></a>

</div>
To test the application, download and execute the [PitchShift.jar](https://0110.be/releases/TarsosDSP/TarsosDSP-latest/TarsosDSP-latest-Examples/PitchShift-latest.jar) file and load an audio file. For the moment only 44.1kHz mono wav is allowed. To get started you can try "this piece of audio":\[08.\_Ladrang_Kandamanyura_10s-20s.wav\].

There is also a command line interface, the following command lowers the pitch of `in.wav` by two semitones.

    java -jar in.wav out.wav -200

    ----------------------------------------------------
     _______                       _____   _____ _____  
    |__   __|                     |  __ \ / ____|  __ \ 
       | | __ _ _ __ ___  ___  ___| |  | | (___ | |__) |
       | |/ _` | '__/ __|/ _ \/ __| |  | |\___ \|  ___/ 
       | | (_| | |  \__ \ (_) \__ \ |__| |____) | |     
       |_|\__,_|_|  |___/\___/|___/_____/|_____/|_|     

    ----------------------------------------------------
    Name:
        TarsosDSP Pitch shifting utility.
    ----------------------------------------------------
    Synopsis:
        java -jar PitchShift.jar source.wav target.wav cents
    ----------------------------------------------------
    Description:
        Change the play back speed of audio without changing the pitch.

            source.wav  A readable, mono wav file.
            target.wav  Target location for the pitch shifted file.
            cents       Pitch shifting in cents: 100 means one semitone up, 
                    -100 one down, 0 is no change. 1200 is one octave up.

The resampling feature was implemented with libresample4j by Laszlo Systems. libresample4j is a Java port of Dominic Mazzoni's libresample 0.1.3, which is in turn based on Julius Smith's Resample 1.7 library.


- [pitch-shift-in-java.png](https://0110.be/files/attachments/370/pitch-shift-in-java.png)

- [08.\_Ladrang\_Kandamanyura\_10s-20s.wav](https://0110.be/files/attachments/370/08._Ladrang_Kandamanyura_10s-20s.wav)

---

## [ISMIR 2012 - Highlights](https://0110.be/posts/ISMIR_2012_-_Highlights.md)

- Published: 2012-10-08T11:47:22Z
- Updated: 2013-12-05T18:19:15Z
- Author: Joren
- ID: 388
- Canonical: https://0110.be/posts/ISMIR_2012_-_Highlights

- Tags: [Computational ethnomusicology](https://0110.be/tags/Computational%20ethnomusicology.md), [HoGent](https://0110.be/tags/HoGent.md), [ISMIR](https://0110.be/tags/ISMIR.md), [Music Information Retrieval](https://0110.be/tags/Music%20Information%20Retrieval.md)

<img src="https://0110.be/files/attachments/388/ismir_2012.jpg"  alt="Logo ISMIR 2012" style="float:right">The 13th International Society for Music Information Retrieval Conference took place in Porto, Portugal, October 8th-12th, 2012. This text contains links to some papers, toolkits, software presented there which are interesting for my research. Basically it contains my personal highlights of the conference. The [ISMIR 2012](http://ismir2012.ismir.net/) is described as follows:

> The annual Conference of the International Society for Music Information Retrieval (ISMIR) is the world's leading research forum on processing, searching, organizing and accessing music-related data. The revolution in music distribution and storage brought about by digital technology has fueled tremendous research activities and interests in academia as well as in industry. The ISMIR Conference reflects this rapid development by providing a meeting place for the discussion of MIR-related research, developments, methods, tools and experimental results. Its main goal is to foster multidisciplinary exchange by bringing together researchers and developers, educators and librarians, as well as students and professional users.

### Tutorials

I saw an interesting tutorial on Jazz music and a tutorial on source separation. After an introduction, which detailed the experimental basis of the system, a source separator was introduced. The [REPET source separator](http://music.cs.northwestern.edu/research.php) is a relatively simple system that yields reasonable results to split accompaniment from foreground melody.

### Posters & Talks

The approach and the dataset used in [N-gram Based Statistical Makam Detection on Makam Music in Turkey Using Symbolic Data](http://ismir2012.ismir.net/event/papers/043-ismir-2012.pdf) is very interesting. More than 800 pieces of makam music where transcribed manually and analysed. Details about the dataset are available in the following paper: [A Turkish Makam Music Symbolic Database for Music Information Retrieval: SymbTr](http://ismir2012.ismir.net/event/papers/223-ismir-2012.pdf).

[Assigning a Confidence Threshold on Automatic Beat Annotation in Large Datasets](http://ismir2012.ismir.net/event/papers/157-ismir-2012.pdf) by Zapata et al. shows a very interesting way to do exactly what the title says. Descriptive titles are descriptive.

A very practical tool to do melody extraction was presented by Justin Salamon. He created a Vamp Plugin with the name [Melodia](http://mtg.upf.edu/technologies/melodia). Unfortunately the plugin is currently only available for windows, but Linux and OS X versions are in the pipeline. More about the algorithm implemented and background information can be found in the paper Justin presented: [Statistical Characterisation of Melodic Pitch Contours and its Application for Melody Extraction](http://ismir2012.ismir.net/event/papers/187-ismir-2012.pdf). Another Vamp Plugin for melody visualization was also presented: [Pitch Content Visualization Tools for Music Performance Analysis](http://ismir2012.ismir.net/event/papers/493-ismir-2012.pdf).

The ongoing work by Ceril Bohak and Matija Marolt on segmentation of folk music could be very useful to apply on Afican musics. The paper is called [Finding Repeating Stanzas in Folk Songs](http://ismir2012.ismir.net/event/papers/451-ismir-2012.pdf).


- [ismir\_2012.jpg](https://0110.be/files/attachments/388/ismir_2012.jpg)

---

## [ICMC 2012 - Sound to Scale to Sound, a Setup for Microtonal Exploration and Composition](https://0110.be/posts/ICMC_2012_-_Sound_to_Scale_to_Sound%2C_a_Setup_for_Microtonal_Exploration_and_Composition.md)

- Published: 2012-08-31T00:00:00Z
- Updated: 2014-02-13T10:53:56Z
- Author: Joren
- ID: 369
- Canonical: https://0110.be/posts/ICMC_2012_-_Sound_to_Scale_to_Sound%2C_a_Setup_for_Microtonal_Exploration_and_Composition

- Tags: [Computational ethnomusicology](https://0110.be/tags/Computational%20ethnomusicology.md), [HoGent](https://0110.be/tags/HoGent.md), [Java](https://0110.be/tags/Java.md), [Presentation](https://0110.be/tags/Presentation.md), [Tarsos](https://0110.be/tags/Tarsos.md), [featured](https://0110.be/tags/featured.md)

<img src="https://0110.be/files/attachments/369/ICMC_Logo.png" width="120px" alt="Logo Universiteit Utrecht" style="float:right">At this years ICMC Conference, [ICMC 2012](http://www.icmc2012.si/) we presented a paper describing a way to experiment with tone scales and how to use Tarsos as a compositional tool. What follows are some pointers to the presentation, paper and to other interesting talks that were presented there.

ICMC 2012 was organized in Ljubljana from the 9 to 14 septembre and had a very dense program of talks, posters, presentations, demos and concerts.

<blockquote>
Since 1974 the International Computer Music Conference has been the major international forum for the presentation of the full range of outcomes from technical and musical research, both musical and theoretical, related to the use of computers in music. This annual conference regularly travels the globe, with recent conferences in the Americas, Europe and Asia. This year we welcome the conference to Slovenia for the first time.

</blockquote>
### Sound to Scale to Sound, a Setup for Microtonal Exploration and Composition

Our contribution to the conference was a paper titled "Sound to Scale to Sound, a Setup for Microtonal Exploration and Composition":\[icmc2012_submission_45.pdf\].

If you want to cite our work, this BibTeX entry is included for your convenience:

\`\`\`ruby\
\@inproceedings{cornelis2012sound_to_scale,\
author = {Olmo Cornelis and Joren Six},\
title = {{Sound to Scale to Sound, a Setup for Microtonal Exploration and Composition}},\
booktitle = {{Proceedings of the 2012 International Computer Music Conference,\
(ICMC 2012)}},\
year = {2012},\
publisher = {The International Computer Music Association}\
}\
\`\`\`

### Program highlights

What follows are a number of pointers to my personal program highlights.

Verena Thomas presented two very well polished software tools. One to detect patterns in scores, called motifviewer and a tool to search in score databases in a multi-modal way. The [Probado tool](http://probado.iai.uni-bonn.de:8080/) does score-to-audio alignment and much more.

[Gibber](http://www.charlie-roberts.com/gibber/) is an impressive live-coding environment with an easy syntax. Since it is all done with javascript you can start playing with it immediately. [Overtone](http://overtone.github.com/) Another live-coding environment, presented at the conference by Sam Aaron, was equally impressive. It is programmed using the Closure language.

At ICMC there were a number of tools to assist in composition. One of those is [The Bach Project](http://www.bachproject.net/bach/home_page.html), by Andrea Agostini. Togheter with CatART by Diemo Swartz it forms a very expressive platform to work with sound, which was demonstrated by Aaron Einbond and Christopher Trapani in their paper titled *Precise Pitch Control In Real Time Corpus-Based Concatenative Synthesis*. Diemo Swartz presented work on Audio Mosaicing, it can be seen as a follow-up to [AuidioGuild](http://crca.ucsd.edu/~ben/audioGuide/) by Ben Hackbarth.

I also got to know the work by [Thomas Grill](http://grrrr.org), on his website a nice piece of software can be found a Python implementation of the [Non Stationary Gabor Transform (NSGT)](http://grrrr.org/research/software/nsgt/). Another software system I got to know is the functional signal processing programming language [FAUST](http://en.wikipedia.org/wiki/FAUST_(programming_language))

My personal highlights of the concert programme include the works by Johannes Kreidler, Aura Pon, Daniel Mayer, Alexander Schubert and the remarkable performance by Dexter Ford. The concept behind Soundlog by Johannes Kretz was also interesting.


- [ICMC\_Logo.png](https://0110.be/files/attachments/369/ICMC_Logo.png)

- [2012.09.08-Sound\_to\_Scale\_to\_Sound\_\_a\_Setup\_for\_Microtonal\_Exploration\_and\_Composition.odp](https://0110.be/files/attachments/369/2012.09.08-Sound_to_Scale_to_Sound__a_Setup_for_Microtonal_Exploration_and_Composition.odp)

- [icmc2012\_submission\_45.pdf](https://0110.be/files/attachments/369/icmc2012_submission_45.pdf)

---

## [CIM 2012 - Revealing and Listening to Scales From the Past; Tone Scale Analysis of Archived Central-African Music Using Computational Means](https://0110.be/posts/CIM_2012_-_Revealing_and_Listening_to_Scales_From_the_Past%3B_Tone_Scale_Analysis_of_Archived_Central-African_Music_Using_Computational_Means.md)

- Published: 2012-08-31T00:00:00Z
- Updated: 2014-02-13T10:58:38Z
- Author: Joren
- ID: 351
- Canonical: https://0110.be/posts/CIM_2012_-_Revealing_and_Listening_to_Scales_From_the_Past%3B_Tone_Scale_Analysis_of_Archived_Central-African_Music_Using_Computational_Means

- Tags: [Computational musicology](https://0110.be/tags/Computational%20musicology.md), [HoGent](https://0110.be/tags/HoGent.md), [Music Information Retrieval](https://0110.be/tags/Music%20Information%20Retrieval.md), [Presentation](https://0110.be/tags/Presentation.md), [Research papers](https://0110.be/tags/Research%20papers.md), [Tarsos](https://0110.be/tags/Tarsos.md), [featured](https://0110.be/tags/featured.md)

<img src="https://0110.be/files/attachments/351/Forkeljpg.jpg" width="120px" alt="Logo Universiteit Utrecht" style="float:right">What follows is about the [Conference on Interdisciplinary Musicology (CIM2012)](http://gfm2012.uni-goettingen.de/cim12/CIM12/Home.html) and the [15th international Conference of the Gesellschaft fur Musikfoschung](http://gfm2012.uni-goettingen.de/GfM2012/Home.html). First this text will give information about our contribution to CIM2012: *Revealing and Listening to Scales From the Past; Tone Scale Analysis of Archived Central-African Music Using Computational Means* and then a number of highlights of the conference follow. The joint conference took place from the 4th to the 8th of september 2012.

<blockquote>
In 2012, CIM will tackle the subject of History. Hosted by the University of Göttingen, whose one time music director Johann Nikolaus Forkel is widely regarded as one of the founders of modern music historiography, CIM12 aims to promote collaborations that provoke and explore new methods and methodologies for establishing, evaluating, preserving and communicating knowledge of music and musical practices of past societies and the factors implicated in both the preservation and transformation of such practices over time.

</blockquote>
### Revealing and Listening to Scales From the Past; Tone Scale Analysis of Archived Central-African Music Using Computational Means

Our contribution ton CIM 2012 is titled "Revealing and Listening to Scales From the Past; Tone Scale Analysis of Archived Central-African Music Using Computational Means":\[CIM12_Submission.pdf\]. The aim was to show how tone scales of the past, e.g. organ tuning, can be extracted and sonified. During the demo special attention was given to historic Central African tuning systems. The presentation I gave is included below and or available for "download":\[2012.09.05-Revealing_and_listening_to_scales_from_the_past\_\_tone_scale_analysis_of_archived_Central-African_music_using_computational_means..ppt\]

### Highlights

What follows are some personal highlights for the [Conference on Interdisciplinary Musicology (CIM2012)](http://gfm2012.uni-goettingen.de/cim12/CIM12/Home.html) and the [15th international Conference of the Gesellschaft fur Musikfoschung](http://gfm2012.uni-goettingen.de/GfM2012/Home.html). The joint conference took place from the 4th to the 8th of september 2012.

The work presented by Rytis Ambrazevicius et al. *Modal changes in traditional Lithuanian singing: Diachronic aspect* has a lot in common with our research, it was interesting to see their approach. Another highlight of the conference was the whole session organized by Klaus-Peter Brenner around Mbira music.

Rainer Polak gave a talk titled *'Swing, Groove and Metre. Asymmetric Feels, Metric Ambiguity and Metric Transformation in African Musics'*. He showed how research about rhythm in jazz research, music theory and empirical musicology ( amongst others) could be bridged and applied to ethnic music.

The overview Eleanore Selfridge-Field gave during her talk *Between an Analogue Past and a Digital Future: The Evolving Digital Present* was refreshing. She had a really clear view on all the different ways musicology and digital media can benifit from each-other.

From the concert programme I found two especially interesting: the lecture-performance by Margarete Maierhofer-Lischka and Frauke Aulbert of [*Lotofagos*](http://www.youtube.com/watch?v=tYD30v0PgoI), a piece by Beat Furrer and *Burdocks* composed and performed by Christian Wolff and a bunch of enthusiastic students.


- [Forkeljpg.jpg](https://0110.be/files/attachments/351/Forkeljpg.jpg)

- [CIM12\_Submission.pdf](https://0110.be/files/attachments/351/CIM12_Submission.pdf)

- [2012.09.05-Revealing\_and\_listening\_to\_scales\_from\_the\_past\_\_tone\_scale\_analysis\_of\_archived\_Central-African\_music\_using\_computational\_means..ppt](https://0110.be/files/attachments/351/2012.09.05-Revealing_and_listening_to_scales_from_the_past__tone_scale_analysis_of_archived_Central-African_music_using_computational_means..ppt)

---

## [Analytical Approaches To World Music - Microtonal Scale Exploration in Central Africa](https://0110.be/posts/Analytical_Approaches_To_World_Music_-_Microtonal_Scale_Exploration_in_Central_Africa.md)

- Published: 2012-06-06T06:54:04Z
- Updated: 2013-12-05T18:19:15Z
- Author: Joren
- ID: 342
- Canonical: https://0110.be/posts/Analytical_Approaches_To_World_Music_-_Microtonal_Scale_Exploration_in_Central_Africa

- Tags: [Computational ethnomusicology](https://0110.be/tags/Computational%20ethnomusicology.md), [Computational musicology](https://0110.be/tags/Computational%20musicology.md), [HoGent](https://0110.be/tags/HoGent.md), [Presentation](https://0110.be/tags/Presentation.md), [Tarsos](https://0110.be/tags/Tarsos.md), [featured](https://0110.be/tags/featured.md)

At the 2012 [AAWM (Analytical Approaches To World Music)](http://www.aawmconference.com/aawm2012/papers.htm) conference we presented a way to explore tone scales in the music of Central Africa. Since the audience consisted of (ethno)musicologists, the main focus of the presentation was on the applicication part, the technical aspects were only briefly mentioned.

The extended abstract can be consulted: [Towards the tangible: microtonal scale exploration in Central-African music](http://www.aawmconference.com/aawm2012/papers/cornelis_p.pdf)

The conference program itself was very diverse and interesting.


- [2012.05.11-Towards\_the\_Tangible\_-\_Microtonal\_Scale\_Exploration\_in\_Central-African\_Music.odp](https://0110.be/files/attachments/342/2012.05.11-Towards_the_Tangible_-_Microtonal_Scale_Exploration_in_Central-African_Music.odp)

- [AAWM\_abstract\_short.doc](https://0110.be/files/attachments/342/AAWM_abstract_short.doc)

---

## [TarsosDSP Release 1.2](https://0110.be/posts/TarsosDSP_Release_1.2.md)

- Published: 2012-06-05T13:26:22Z
- Updated: 2013-12-05T18:19:15Z
- Author: Joren
- ID: 336
- Canonical: https://0110.be/posts/TarsosDSP_Release_1.2

- Tags: [HoGent](https://0110.be/tags/HoGent.md), [TarsosDSP](https://0110.be/tags/TarsosDSP.md)

Today a new version of the TarsosDSP library was released. TarsosDSP is a small library to do audio processing in Java. It features two new pitch detectors. An AMDF (Average Magnitude Difference Function) pitch detector, contributed by [Eder Souza](http://ederwander.wordpress.com/) of Brazil and a faster implementation of YIN kindly provided by [Matthias Mauch](http://matthiasmauch.net/) of Queen Mary University, London.

<div align="center">
[![Pitch Detector in Java](https://0110.be/files/attachments/336/PitchDetector.png "Pitch Detector in Java")](https://0110.be/releases/TarsosDSP/TarsosDSP-1.2/TarsosDSP-1.2-Examples/PitchDetector-1.2.jar)

</div>
Find your oven fresh baked binaries at the [TarsosDSP Release Repository](http://tarsos.0110.be/releases/TarsosDSP/).


- [PitchDetector.png](https://0110.be/files/attachments/336/PitchDetector.png)

---

## [Guest Lecture at MIT - Ethnic Music Analysis:  Challenges & Opportunities - Tarsos as a Case Study](https://0110.be/posts/Guest_Lecture_at_MIT_-_Ethnic_Music_Analysis%3A__Challenges_%26_Opportunities_-_Tarsos_as_a_Case_Study.md)

- Published: 2012-05-07T00:00:00Z
- Updated: 2014-02-13T10:56:44Z
- Author: Joren
- ID: 362
- Canonical: https://0110.be/posts/Guest_Lecture_at_MIT_-_Ethnic_Music_Analysis%3A__Challenges_%26_Opportunities_-_Tarsos_as_a_Case_Study

- Tags: [Computational ethnomusicology](https://0110.be/tags/Computational%20ethnomusicology.md), [HoGent](https://0110.be/tags/HoGent.md), [Presentation](https://0110.be/tags/Presentation.md)

Thursday the 3th of May I gave a guest lecture titled 'Ethnic Music Analysis: Challenges & Opportunities' it featured Tarsos as a Case Study. The goal was to identify the difficulties when dealing with ethnic music and to show a possible approach, the approach implemented by Tarsos.

The invitation to give the guest lecture came from [Michael Cuthbert](http://web.mit.edu/music/facstaff/cuthbert.html) who is one of the driving forces behind [music21](http://mit.edu/music21/). The audience was a small group of double majors in both musicology and computer science: the ideal profile to gather useful feedback.


- [2012.05.03-Ethnic\_Music\_Analysis.pdf](https://0110.be/files/attachments/362/2012.05.03-Ethnic_Music_Analysis.pdf)

- [2012.05.03-Ethnic\_Music\_Analysis.odp](https://0110.be/files/attachments/362/2012.05.03-Ethnic_Music_Analysis.odp)

---

## [TarsosDSP Release 1.0](https://0110.be/posts/TarsosDSP_Release_1.0.md)

- Published: 2012-04-24T14:25:32Z
- Updated: 2013-12-05T18:19:15Z
- Author: Joren
- ID: 352
- Canonical: https://0110.be/posts/TarsosDSP_Release_1.0

- Tags: [Code](https://0110.be/tags/Code.md), [Command Line Application](https://0110.be/tags/Command%20Line%20Application.md), [HoGent](https://0110.be/tags/HoGent.md), [Java](https://0110.be/tags/Java.md), [Music Information Retrieval](https://0110.be/tags/Music%20Information%20Retrieval.md), [TarsosDSP](https://0110.be/tags/TarsosDSP.md), [WSOLA](https://0110.be/tags/WSOLA.md), [featured](https://0110.be/tags/featured.md)

After about a year of development and several revisions TarsosDSP has enough features and is stable enough to slap the 1.0 tag onto it. A 'read me', manual, API documentation, source and binaries can be found on the [TarsosDSP release directory](http://tarsos.0110.be/releases/TarsosDSP/). The source is present in the\
What follows below is the information that can be found in the read me file:

<p>
TarsosDSP is a collection of classes to do simple audio processing. It features an implementation of a percussion onset detector and two pitch detection algorithms: Yin and the Mcleod Pitch method. Also included is a Goertzel <acronym title="Dual tone multi frequency"><span class="caps">DTMF</span></acronym> decoding algorithm and a time stretch algorithm (<span class="caps">WSOLA</span>).

</p>
<p>
Its aim is to provide a simple interface to some audio (signal) processing algorithms implemented in pure <span class="caps">JAVA</span>. Some <a href="http://tarsos.0110.be/tag/TarsosDSP">TarsosDSP example applications</a> are available.

</p>
<p>
The following example filters a band of frequencies of an input file <code>testFile</code>. It keeps the frequencies form <code>startFrequency</code> to <code>stopFrequency</code>.

</p>
    <code>AudioInputStream inputStream = AudioSystem.getAudioInputStream(testFile);
    AudioDispatcher dispatcher = new AudioDispatcher(inputStream,stepSize,overlap);
    dispatcher.addAudioProcessor(new HighPass(startFrequency, sampleRate, overlap));
    dispatcher.addAudioProcessor(new LowPassFS(stopFrequency, sampleRate, overlap));
    dispatcher.addAudioProcessor(new FloatConverter(format));
    dispatcher.addAudioProcessor(new WaveformWriter(format,stepSize, overlap, "filtered.wav"));
    dispatcher.run();
    </code>

<h3>
Quickly Getting Started with TarsosDSP

</h3>
<p>
Head over to the <a href="http://tarsos.0110.be/releases/TarsosDSP/">TarsosDSP release repository</a> and download the latest <a href="http://tarsos.0110.be/releases/TarsosDSP/TarsosDSP-1.0.jar">TarsosDSP library</a>. To get up to speed quickly, check the <a href="http://tarsos.0110.be/releases/TarsosDSP/TarsosDSP-1.0-Examples/">TarsosDSP Example applications</a> for inspiration and consult the <a href="http://tarsos.0110.be/releases/TarsosDSP/TarsosDSP-1.0-Documentation/"><span class="caps">API</span> documentation</a>. If you, for some reason, want to build from source, you need <a href="http://ant.apache.org/">Apache Ant</a> and <a href="http://git-scm.com/">git</a> installed on your system. The following commands fetch the source and build the library and example jars: <br />

    <code>git clone https://JorenSix@github.com/JorenSix/TarsosDSP.git
    cd TarsosDSP/build
    ant tarsos_dsp_library #Builds the core TarsosDSP library
    ant build_examples #Builds all the TarsosDSP examples
    ant javadoc #Creates the documentation in TarsosDSP/doc
    </code>

<br />\
When everything runs correctly you should be able to run all example applications and have the latest version of the TarsosDSP library for inclusion in your projects. Also the Javadoc documentation for the <span class="caps">API</span> should be available in TarsosDSP/doc. Drop me a line if you use TarsosDSP in your project. Always nice to hear how this software is used.

</p>
<h3>
Source Code Organization and Examples of TarsosDSP

</h3>
<p>
The source tree is divided in three directories:

</p>
<ul>
<li>
<code>src</code> contains the source files of the core <span class="caps">DSP</span> libraries.

</li>
<li>
<code>test</code> contains unit tests for some of the <span class="caps">DSP</span> functionality.

</li>
<li>
<code>build</code> contains <span class="caps">ANT</span> build files. Either to build Java documentation or runnable <span class="caps">JAR</span>-files for the example applications.

</li>
<li>
<code>examples</code> contains a couple of example applications with a Java Swing user interface:

<ul>
<li>
<a href="http://tarsos.0110.be/artikels/lees/TarsosDSP%253A_a_small_JAVA_audio_processing_library">SoundDetector</a> show how you loudness calculations can be done. When input sound is over a defined limit an event is fired.

</li>
<li>
<a href="http://tarsos.0110.be/artikels/lees/TarsosDSP%253A_a_small_JAVA_audio_processing_library">PitchDetector</a> this demo application shows real-time pitch detection. When pitch is detected the hertz value is printed together with a probability.

</li>
<li>
<a href="http://tarsos.0110.be/artikels/lees/TarsosDSP%253A_a_small_JAVA_audio_processing_library">PercussionDetector</a> show the percussion (onset) dectection. Clapping your hands causes an event. This demo application also shows the influence of the two parameters on the algorithm.

</li>
<li>
<a href="http://tarsos.0110.be/artikels/lees/TarsosDSP_sample_application%253A_Utter_Asterisk">UtterAsterisk</a> a game with the goal to sing as close to a melody a possible. Technically it shows real-time pitch detection with <span class="caps">YIN</span> or <span class="caps">MPM</span>.

</li>
<li>
<a href="http://tarsos.0110.be/artikels/lees/Spectrogram_in_Java_with_TarsosDSP">Spectrogram in Java</a> shows a spectrogram and detected pitch, either live or from an audio file. It is interesting to see which frequencies are picked as fundamentals.

</li>
<li>
<a href="http://tarsos.0110.be/artikels/lees/Dual-Tone_Multi-Frequency_%2528DTMF%2529_Decoding_with_the_Goertzel_Algorithm_in_Java">Goertzel <acronym title="Dual tone multi frequency"><span class="caps">DTMF</span></acronym> decoding</a> an implementation of the Goertzel Algorithm. A fancy user interface shows what goes on under the hood.

</li>
<li>
<a href="http://tarsos.0110.be/artikels/lees/Audio_Time_Stretching_-_Implementation_in_Pure_Java_Using_WSOLA">Audio Time Stretching -- Implementation in Pure Java Using <span class="caps">WSOLA</span></a> an implementation of a time stretching algorithm. <acronym title="Waveform Similarity Overlap Add"><span class="caps">WSOLA</span></acronym> makes it possible to change the play back speed of audio without changing the pitch. The play back speed can be changed at any moment, even when there is audio playing.

</li>
</ul>
</li>
</ul>


---

## [Oscilloscope in TarsosDSP](https://0110.be/posts/Oscilloscope_in_TarsosDSP.md)

- Published: 2012-03-09T15:21:30Z
- Updated: 2013-12-05T18:19:15Z
- Author: Joren
- ID: 330
- Canonical: https://0110.be/posts/Oscilloscope_in_TarsosDSP

- Tags: [HoGent](https://0110.be/tags/HoGent.md), [TarsosDSP](https://0110.be/tags/TarsosDSP.md)

The DSP library for Taros, aptly named TarsosDSP, now includes an implementation of an oscilloscope.

<div align="center">
"![Oscilloscope in Java](https://0110.be/files/attachments/330/oscilloscope.png "Oscilloscope in Java")":\[OscilloscopeExample.jar\]

</div>
The source code of the Java implementation can be found on the [TarsosDSP github page](https://github.com/JorenSix/TarsosDSP/). That is all.


---

## [Dan Ellis' Robust Landmark-Based Audio Fingerprinting - With Octave](https://0110.be/posts/Dan_Ellis%27_Robust_Landmark-Based_Audio_Fingerprinting_-_With_Octave.md)

- Published: 2012-03-08T00:00:00Z
- Updated: 2014-01-09T14:50:12Z
- Author: Joren
- ID: 337
- Canonical: https://0110.be/posts/Dan_Ellis%27_Robust_Landmark-Based_Audio_Fingerprinting_-_With_Octave

- Tags: [Code](https://0110.be/tags/Code.md), [HoGent](https://0110.be/tags/HoGent.md)

This blog post documents how to get the Matlab implementation by Dan Ellis of Avery Wangs [Industrial-Strength Audio Search Algorithm](http://www.ee.columbia.edu/~dpwe/papers/Wang03-shazam.pdf) running with [GNU Octave](http://en.wikipedia.org/wiki/GNU_Octave) on Ubuntu (and similar Linux distributions).

The Dan Ellis implementation is nicely documented here: [Robust Landmark-Based Audio Fingerprinting](http://labrosa.ee.columbia.edu/matlab/fingerprint/) . To download, get info about and decode mp3's some external binaries are needed:

\`\`\`bash\
#install octave if needed\
sudo apt-get install octave3.2\
#Install the required dependencies for the script\
sudo apt-get install mp3info curl

#mpg123 is not present as a package, install from source:\
wget http://www.mpg123.de/download/mpg123-1.13.5.tar.bz2\
tar xvvf mpg123-1.13.5.tar.bz2\
cd mpg123-1.13.5/\
./configure\
make\
sudo make install\
\`\`\`

In `mp3read.m` the following code was changed (line 111 and 112):

\`\`\`matlab\
mpg123 = 'mpg123'; % was fullfile(path,\['mpg123.',ext\]);\
mp3info = 'mp3info'; % was fullfile(path,\['mp3info.',ext\]);\
\`\`\`

Then, the demo program runs flawlessly when executing `octave -q demo_fingerprint.m`.

Running the demo with the original code with GNU Octave, version 3.2.3 takes 152 seconds on a PC with a Q9650 @ 3GHz processor. A small tweak can make it run almost 8 times faster. When working with larger data sets (10k audio files) this makes a big difference. I do not know why but storing a hash in the large hash table was really slow (0.5s per hash, with 900 hashes per song...). Caching the hashes and adding them all at once makes it faster (at least in Octave, YMMV). The optimized version of "record_hashes.m":\[record_hashes.m.txt\] can be found attached. With this alteration the same demo ran in 20s. When caching the data locally the difference is 11.5s to 141s or 12 times faster. The code with all the changes can be found here: "Robust Landmark-Based Audio Fingerprinting - optimized for Octave 3.2":\[fingerprint_fast.zip\]. Please note again that the implementation is done by Dan Ellis (2009) ( available on [Robust Landmark-Based Audio Fingerprinting](http://labrosa.ee.columbia.edu/matlab/fingerprint/)) and I did only some small tweaks.


- [record\_hashes.m.txt](https://0110.be/files/attachments/337/record_hashes.m.txt)

- [fingerprint\_fast.zip](https://0110.be/files/attachments/337/fingerprint_fast.zip)

---

## [Harmony and Variation in Music Information Retrieval](https://0110.be/posts/Harmony_and_Variation_in_Music_Information_Retrieval.md)

- Published: 2012-03-02T14:36:00Z
- Updated: 2013-12-05T18:19:15Z
- Author: Joren
- ID: 401
- Canonical: https://0110.be/posts/Harmony_and_Variation_in_Music_Information_Retrieval

- Tags: [Computational musicology](https://0110.be/tags/Computational%20musicology.md), [HoGent](https://0110.be/tags/HoGent.md)

<img src="https://0110.be/files/attachments/401/UUlogo.gif" alt="Logo Universiteit Utrecht" style="float:right;margin-left:-150px;margin-right:-80px">The 29th of February 2012 there was a symposium on Music Information Retreival in Utrecht. It was organized on the occasion of Bas de Haas' PhD defense. The title of the study day was [Harmony and variation in music information retrieval](http://research.cs.uu.nl/index.php/events/symposium-harmony-variation-in-mir).

During the talk by Xavier Serra rasikas.org was mentioned a forum with [discussions about Carnatic Music](http://rasikas.org). Since I could find a couple of discussions about pitch use on that forum I [plugged Tarsos](http://www.rasikas.org/forum/viewtopic.php?f=9&t=18763) there to see if I could gather some feedback.


---

## [Echo or Delay Audio Effect in Java With TarsosDSP](https://0110.be/posts/Echo_or_Delay_Audio_Effect_in_Java_With_TarsosDSP.md)

- Published: 2012-02-23T15:33:11Z
- Updated: 2013-12-05T18:19:15Z
- Author: Joren
- ID: 398
- Canonical: https://0110.be/posts/Echo_or_Delay_Audio_Effect_in_Java_With_TarsosDSP

- Tags: [Code](https://0110.be/tags/Code.md), [HoGent](https://0110.be/tags/HoGent.md), [Java](https://0110.be/tags/Java.md), [TarsosDSP](https://0110.be/tags/TarsosDSP.md)

The DSP library for Taros, aptly named TarsosDSP, now includes an implementation of an audio echo effect. An echo effect is very simple to implement digitally and can serve as a good example of a DSP operation.

<div align="center">
"![Echo or delay effect in Java](https://0110.be/files/attachments/398/echo_or_delay_effect.png "Echo or delay effect in Java")":\[Delay.jar\]

</div>
The implementation of the effect can be seen below. As can be seen, to achieve an echo one simply needs to mix the current sample `i` with a delayed sample present in `echoBuffer` with a certain decay factor. The length of the buffer and the decay are the defining parameters for the sound of the echo. To fill the echo buffer the current sample is stored (line 4). Looping through the echo buffer is done by incrementing the position pointer and resetting it at the correct time (lines 6-9).

\`\`\`java\
//output is the input added with the decayed echo\
audioFloatBuffer\[i\] = audioFloatBuffer\[i\] + echoBuffer\[position\] \* decay;\
//store the sample in the buffer;\
echoBuffer\[position\] = audioFloatBuffer\[i\];\
//increment the echo buffer position\
position;\
//loop in the echo buffer\
if(position == echoBuffer.length)\
position = 0;\
\`\`\`

To test the application, download and execute the "Delay.jar":\[Delay.jar\] file and start singing in a microphone.

The source code of the Java implementation can be found on the [TarsosDSP github page](https://github.com/JorenSix/TarsosDSP/).


![](https://0110.be/files/photos/398/echo_or_delay_effect.png)

- [Delay.jar](https://0110.be/files/attachments/398/Delay.jar)

- [echo\_or\_delay\_effect.png](https://0110.be/files/attachments/398/echo_or_delay_effect.png)

---

## [Spectrogram in Java with TarsosDSP](https://0110.be/posts/Spectrogram_in_Java_with_TarsosDSP.md)

- Published: 2012-02-14T14:31:04Z
- Updated: 2013-12-05T18:19:15Z
- Author: Joren
- ID: 384
- Canonical: https://0110.be/posts/Spectrogram_in_Java_with_TarsosDSP

- Tags: [Code](https://0110.be/tags/Code.md), [Computational musicology](https://0110.be/tags/Computational%20musicology.md), [HoGent](https://0110.be/tags/HoGent.md), [Java](https://0110.be/tags/Java.md), [TarsosDSP](https://0110.be/tags/TarsosDSP.md)

This is post presents a better version of the [spectrogram implementation](https://0110.be/artikels/lees/Tarsos_Spectrogram). Now it is included as an example in TarsosDSP, a small java audio processing library. The application show a live spectrogram, calculated using an FFT and the detected fundamental frequency (in red).

<div align="center">
<a href="https://0110.be/files/attachments/384/Spectrogram.jar"><img src="https://0110.be/files/attachments/384/spectrogram.png" alt="Spectrogram and pitch detection in Java"/></a>

</div>
To test the application, download and execute the "Spectrogram.jar":\[Spectrogram.jar\] file and start singing in a microphone.

There is also a command line interface, the following command shows the spectrum for `in.wav`:

<code>\
java -jar Spectrogram.jar in.wav\
</code>

The source code of the Java implementation can be found on the [TarsosDSP github page](https://github.com/JorenSix/TarsosDSP/).


![](https://0110.be/files/photos/384/spectrogram.png)

- [Spectrogram.jar](https://0110.be/files/attachments/384/Spectrogram.jar)

- [spectrogram.png](https://0110.be/files/attachments/384/spectrogram.png)

---

## [Démonstration de Tarsos](https://0110.be/posts/D%C3%A9monstration_de_Tarsos.md)

- Published: 2012-02-10T12:58:38Z
- Updated: 2013-12-05T18:19:15Z
- Author: Joren
- ID: 376
- Canonical: https://0110.be/posts/D%C3%A9monstration_de_Tarsos

- Tags: [Computational musicology](https://0110.be/tags/Computational%20musicology.md), [HoGent](https://0110.be/tags/HoGent.md), [Tarsos](https://0110.be/tags/Tarsos.md), [français](https://0110.be/tags/fran%C3%A7ais.md)

Nous avons creé une video pour expliquer des possibilités de Tarsos, et maintenant en français.

<center>
<iframe width="550" height="355" src="http://www.youtube.com/embed/zM8fSlh7ZKI" frameborder="0" allowfullscreen>
</iframe>
</center>


---

## [Audio Time Stretching - Implementation in Pure Java Using WSOLA](https://0110.be/posts/Audio_Time_Stretching_-_Implementation_in_Pure_Java_Using_WSOLA.md)

- Published: 2012-02-06T14:52:34Z
- Updated: 2013-12-05T18:19:15Z
- Author: Joren
- ID: 372
- Canonical: https://0110.be/posts/Audio_Time_Stretching_-_Implementation_in_Pure_Java_Using_WSOLA

- Tags: [HoGent](https://0110.be/tags/HoGent.md), [Java](https://0110.be/tags/Java.md), [Tarsos](https://0110.be/tags/Tarsos.md), [TarsosDSP](https://0110.be/tags/TarsosDSP.md), [WSOLA](https://0110.be/tags/WSOLA.md)

The DSP library for Taros, aptly named TarsosDSP, now includes an implementation of a time stretching algorithm. The goal of time stretching is to change the duration of a piece of audio without affecting the pitch. The algorithm implemented is described in [An Overlap-add Technique Based On Waveform Similarity (WSOLA) for High Quality Time-Scale Modification of Speech](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.202.5460&rep=rep1&type=pdf).

<div align="center">
<a href="https://0110.be/files/attachments/372/TimeStretch.jar"><img src="https://0110.be/files/attachments/372/time_stretching_in_java.png" alt="Time Stretching (WSOLA) in Java"/></a>

</div>
To test the application, download and execute the "WSOLA jar":\[TimeStretch.jar\] file and load an audio file. For the moment only 44.1kHz mono wav is allowed. To get started you can try "this piece of audio":\[08.\_Ladrang_Kandamanyura_10s-20s.wav\].

There is also a command line interface, the following command doubles the speed of `in.wav`:

<code>\
java -jar TimeStretch.jar in.wav out.wav 2.0\
</code>

     _______                       _____   _____ _____  
    |__   __|                     |  __ \ / ____|  __ \ 
       | | __ _ _ __ ___  ___  ___| |  | | (___ | |__) |
       | |/ _` | '__/ __|/ _ \/ __| |  | |\___ \|  ___/ 
       | | (_| | |  \__ \ (_) \__ \ |__| |____) | |     
       |_|\__,_|_|  |___/\___/|___/_____/|_____/|_|     

    ----------------------------------------------------
    Name:
        TarsosDSP Time stretch utility.
    ----------------------------------------------------
    Synopsis:
        java -jar TimeStretch.jar source.wav target.wav factor
    ----------------------------------------------------
    Description:
        Change the play back speed of audio without changing the pitch.

            source.wav  A readable, mono wav file.
            target.wav  Target location for the time stretched file.
            factor      Time stretching factor: 2.0 means double the length, 0.5 half. 1.0 is no change.

The source code of the Java implementation of WSOLA can be found on the [TarsosDSP github page](https://github.com/JorenSix/TarsosDSP/blob/master/src/be/hogent/tarsos/dsp/filters/WaveformSimilarityBasedOverlapAdd.java).


- [time\_stretching\_in\_java.png](https://0110.be/files/attachments/372/time_stretching_in_java.png)

- [08.\_Ladrang\_Kandamanyura\_10s-20s.wav](https://0110.be/files/attachments/372/08._Ladrang_Kandamanyura_10s-20s.wav)

- [TimeStretch.jar](https://0110.be/files/attachments/372/TimeStretch.jar)

---

## [Tarsos CLI:  Detect Pitch](https://0110.be/posts/Tarsos_CLI%3A__Detect_Pitch.md)

- Published: 2012-02-03T15:00:06Z
- Updated: 2013-12-05T18:19:15Z
- Author: Joren
- ID: 390
- Canonical: https://0110.be/posts/Tarsos_CLI%3A__Detect_Pitch

- Tags: [Code](https://0110.be/tags/Code.md), [Command Line Application](https://0110.be/tags/Command%20Line%20Application.md), [HoGent](https://0110.be/tags/HoGent.md), [Java](https://0110.be/tags/Java.md), [Music Information Retrieval](https://0110.be/tags/Music%20Information%20Retrieval.md), [Tarsos](https://0110.be/tags/Tarsos.md)

<img src="http://tarsos.0110.be/attachment/cons/210/tarsos_logo_small.png"  alt="Tarsos Logo" style="float:right;margin-left:5px;"/>Tarsos contains a couple of useful command line applications. They can be used to execute common tasks on lots of files. [Dowload Tarsos](http://tarsos.0110.be/attachment/tarsos.jar) and call the applications using the following format:

`java -jar tarsos.jar command [argument...] [--option [value]...]`

The first part `java -jar tarsos.jar` tells the Java Runtime to start the correct application. The first argument for Tarsos defines the command line application to execute. Depending on the command, required arguments and options can follow.

`java -jar tarsos.jar detect_pitch in.wav --detector TARSOS_YIN`

To get a list of available commands, type `java -jar tarsos.jar -h`. If you want more information about a command type `java -jar tarsos.jar command -h`

## Detect Pitch

Detects pitch for one or more input audio files using a pitch detector. If a directory is given it traverses the directory *recursively*. It writes CSV data to standard out with five columns. The first is the start of the analyzed window (seconds), the second the estimated pitch, the third the saillence of the pitch. The name of the algorithm follows and the last column shows the original filename.

    Synopsis
    --------
    java -jar tarsos.jar detect_pitch [option] input_file...

    Option                                  Description                            
    ------                                  -----------                            
    -?, -h, --help                          Show help                              
    --detector <PitchDetectionMode>         The detector to use [VAMP_YIN |        
                                              VAMP_YIN_FFT |                       
                                              VAMP_FAST_HARMONIC_COMB |            
                                              VAMP_MAZURKA_PITCH | VAMP_SCHMITT |  
                                              VAMP_SPECTRAL_COMB |                 
                                              VAMP_CONSTANT_Q_200 |                
                                              VAMP_CONSTANT_Q_400 | IPEM_SIX |     
                                              IPEM_ONE | TARSOS_YIN |              
                                              TARSOS_FAST_YIN | TARSOS_MPM |       
                                              TARSOS_FAST_MPM | ] (default:        
                                              TARSOS_YIN) 

The output of the command looks like this:

    Start(s),Frequency(Hz),Probability,Source,file
    0.52245,366.77039,0.92974,TARSOS_YIN,in.wav
    0.54567,372.13873,0.93553,TARSOS_YIN,in.wav
    0.55728,375.10638,0.95261,TARSOS_YIN,in.wav
    0.56889,380.24854,0.94275,TARSOS_YIN,in.wav


---

## [A Robust Audio Fingerprinter Based on Pitch Class Histograms - Applications for Ethnic Music Archives](https://0110.be/posts/A_Robust_Audio_Fingerprinter_Based_on_Pitch_Class_Histograms_-_Applications_for_Ethnic_Music_Archives.md)

- Published: 2012-01-17T10:30:02Z
- Updated: 2013-12-05T18:19:15Z
- Author: Joren
- ID: 353
- Canonical: https://0110.be/posts/A_Robust_Audio_Fingerprinter_Based_on_Pitch_Class_Histograms_-_Applications_for_Ethnic_Music_Archives

- Tags: [Folk Music Analysis (FMA) conference](https://0110.be/tags/Folk%20Music%20Analysis%20%28FMA%29%20conference.md), [HoGent](https://0110.be/tags/HoGent.md)

For the [Folk Music Analyisis (FMA) 2012](http://congreso.us.es/infla3/en/) conference we (Olmo Cornelis and myself), wrote a paper presenting a new acoustic fingerprint scheme based on pitch class histograms.

The aim of acoustic fingerprinting is to generate a small representation of an audio signal that can be used to identify or recognize similar audio samples in a large audio set. A robust fingerprint generates similar fingerprints for perceptually similar audio signals. A piece of music with a bit of noise added should generate an almost identical fingerprint as the original. The use cases for audio fingerprinting or acoustic fingerprinting are myriad: detection of duplicates, identifying songs, recognizing copyrighted material,...

Using a pitch class histogram as a fingerprint seems like a good idea: it is unique for a song and it is reasonably robust to changes of the underlying audio (length, tempo, pitch, noise). The idea has probably been found a couple of times independently, but there is also a reference to it in the literature, by Tzanetakis, 2003: [Pitch Histograms in Audio and Symbolic Music Information Retrieval](http://marsyas.info/pdfs/0000/0008/jnmr03gtzan.pdf):

> Although mainly designed for genre classification it is possible that features derived from Pitch Histograms might also be applicable to the problem of content-based audio identification or audio fingerprinting (for an example of such a system see (Allamanche et al., 2001)). We are planning to explore this possibility in the future.

Unfortunately they never, as far as I know, did explore this possibility, and I also do not know if anybody else did. I found it worthwhile to implement a fingerprinting scheme on top of the Tarsos software foundation. Most elements are already available in the Tarsos API: a way to detect pitch, construct a pitch class histogram, correlate pitch class histograms with a pitch shift,... I created a GUI application which is presented here. It is, probably, acoustic / "audio fingerprinting system based on pitch class histograms":\[fingerprinter.jar\].

<center>
<a href="https://0110.be/files/attachments/353/fingerprinter.jar" title="Audio fingerprinter based on pitch class histograms"><img src="http://tarsos.0110.be/photo/cache/x360-6da51.fingerprinter.png?1327066892" alt="Audio fingerprinter based on pitch class histograms"></a>

</center>
It works using drag and drop and the idea is to find a needle (an audio file) in a hay stack (a large amount of audio files). For every audio file in the haystack and for the needle pitch is detected using an optimized, for speed, MPM implementation. A pitch class histogram is created for each file, the histogram for the needle is compared with each histogram in the hay stack and, hopefully, the needle is found in the hay stack.

An experiment was done on the audio collection of [the museum for Central Africa](http://www.africamuseum.be/). A test dataset was generated using [SoX](http://sox.sf.net) with the following "Ruby script":\[audio_fingerprinting_dataset_generator.rb.txt\]. The "raw results":\[fingerprinting_results.txt\] were parsed with another "Ruby script":\[fingerprinting_results_parser.rb.txt\]. With the data "a spreadsheet with the results":\[fingerprinting_on_dekkmma_results.ods\] was created (OpenOffice.org format). Those results are mentioned in the paper.

You can try the system yourself by "downloading the fingerprinter":\[fingerprinter.jar\].


![Drag and drop UI](https://0110.be/files/photos/353/fingerprinter.png)

- [fingerprinting\_results.txt](https://0110.be/files/attachments/353/fingerprinting_results.txt)

- [fingerprinting\_results\_parser.rb.txt](https://0110.be/files/attachments/353/fingerprinting_results_parser.rb.txt)

- [audio\_fingerprinting\_dataset\_generator.rb.txt](https://0110.be/files/attachments/353/audio_fingerprinting_dataset_generator.rb.txt)

- [fingerprinter.jar](https://0110.be/files/attachments/353/fingerprinter.jar)

- [fingerprinting\_on\_dekkmma\_results.ods](https://0110.be/files/attachments/353/fingerprinting_on_dekkmma_results.ods)

- [2012.03.02.fingerprinter.submitted.pdf](https://0110.be/files/attachments/353/2012.03.02.fingerprinter.submitted.pdf)

---

## [Pitch, Pitch Interval, and Pitch Ratio Representation](https://0110.be/posts/Pitch%2C_Pitch_Interval%2C_and_Pitch_Ratio_Representation.md)

- Published: 2011-12-21T13:42:05Z
- Updated: 2013-12-05T18:19:15Z
- Author: Joren
- ID: 354
- Canonical: https://0110.be/posts/Pitch%2C_Pitch_Interval%2C_and_Pitch_Ratio_Representation

- Tags: [HoGent](https://0110.be/tags/HoGent.md), [Tarsos](https://0110.be/tags/Tarsos.md)

To prevent confusion about pitch representation in general and pitch representation in Tarsos specifically I wrote a "document about pitch, pitch Interval, and pitch ratio representation":\[pitch_representation.pdf\]. The abstract goes as follows:

<blockquote>
This document describes how pitch can be represented using various units. More specifically it documents how a software program to analyse pitch in music, Tarsos, represents pitch. This document contains definitions of and remarks on different pitch and pitch interval representations. For good measure we need a definition of pitch, here the definition from \[McLeod 2009\] is used: *The pitch frequency is the frequency of a pure sine wave which has the same perceived sound as the sound of interest.* For remarks and examples of cases where the pitch frequency does not coincide with the fundamental frequency of the signal, also see \[McLeod 2009\] . In this text pitch, pitch interval and pitch ratio are briefly discussed.

</blockquote>
<iframe src="http://docs.google.com/viewer?url=http%3A%2F%2Ftarsos.0110.be%2Fattachment%2Fcons%2F327%2Fpitch_representation.pdf&embedded=true" width="600" height="780" style="border: none;">
</iframe>


- [pitch\_representation.pdf](https://0110.be/files/attachments/354/pitch_representation.pdf)

---

[Older posts](https://0110.be/tags/HoGent.md?page=1)
