A Real-Time Audio Processing Framework in Java
TarsosDSP is a Java library for audio processing. Its aim is to provide an easy-to-use interface to practical music processing algorithms implemented, as simply as possible, in pure Java and without any other external dependencies. The library tries to hit the sweet spot between being capable enough to get real tasks done but compact and simple enough to serve as a demonstration of how DSP algorithms work.
TarsosDSP features an implementation of a percussion onset detector and a number of pitch detection algorithms: YIN, the Mcleod Pitch method and a “Dynamic Wavelet Algorithm Pitch Tracking” algorithm. Also included is a Goertzel DTMF (Dual tone multi frequency) decoding algorithm, a time stretch algorithm (WSOLA), resampling, filters, simple synthesis, some audio effects, and a pitch shifting algorithm.
To show the capabilities of the library, TarsosDSP example applications are available. Head over to the TarsosDSP release directory for freshly baked binaries and code smell free (that is the goal anyway), oven-fresh sources.
The source code of TarsosDSP is compatible with Java 11.
Add this to your build.gradle file:
repositories {
maven {
name = "TarsosDSP repository"
url = "https://mvn.0110.be/releases"
}
}
dependencies {
implementation 'be.tarsos.dsp:core:2.5'
implementation 'be.tarsos.dsp:jvm:2.5'
}Add this to your pom.xml file:
<repository>
<id>be.0110.repo-releases</id>
<name>0110.be repository</name>
<url>https://mvn.0110.be/releases</url>
</repository>
<dependency>
<groupId>be.tarsos.dsp</groupId>
<artifactId>core</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>be.tarsos.dsp</groupId>
<artifactId>jvm</artifactId>
<version>2.5</version>
</dependency>Some information about TarsosDSP can be found in the paper TarsosDSP, a Real-Time Audio Processing Framework in Java, by Joren Six, Olmo Cornelis, and Marc Leman, in Proceedings of the 53rd AES Conference (AES 53rd), 2014. If you use TarsosDSP in academic research, please cite this paper.
@inproceedings{six2014tarsosdsp,
author = {Joren Six and Olmo Cornelis and Marc Leman},
title = {{TarsosDSP, a Real-Time Audio Processing Framework in Java}},
booktitle = {{Proceedings of the 53rd AES Conference (AES 53rd)}},
year = 2014
}To build TarsosDSP from source the gradlew script should get you started. The following commands fetch the source and builds the library:
git clone --depth 1 https://[email protected]/JorenSix/TarsosDSP.git
cd TarsosDSP
./gradlew buildThe library is separated into three module folders: the main core functionality is found in core/src/main/java, TarsosDSP example applications are found in examples/src/main/java, and JVM audio I/O in jvm/src/main/java.
To see TarsosDSP in action there are a number of examples. These examples have either a graphical user interface or a command line interface. To see a window in which you can start all GUI examples the jar file needs to be started without arguments:
gradle shadowJar
java -jar examples/build/libs/examples-all.jarTo use the command line examples, execute the jar with the example name as first argument. For example java -jar examples/build/libs/examples-all.jar feature_extractor pitch audio.mp3 starts the feature_extractor application to extract pitch from an audio file.
To get a list of all command line examples: java -jar examples/build/libs/examples-all.jar list
TarsosDSP was developed at University College Ghent, School of Arts between 2009 and 2013, from late 2013 the project is supported by University Ghent, IPEM.
TarsosDSP borrows algorithms from various other libraries and research papers. Below, a complete list of credits can be found.
First release which includes several pitch trackers and a time stretching algorithm, amongst other things. Downloads and javadoc API can be found at the TarsosDSP release directory
Changed how the audio dispatcher stops. Added StopAudioProcessor. Added FastYin implementation by Matthias Mauch Added AMDF pitch estimator by Eder Souza
Modified the interface of PitchDetector to return a more elaborate result structure with pitch, probability and a boolean "is pitched". Added an implementation of an envelope follower or envelope detector.
TarsosDSP can do audio synthesis now. The first simple unit generators are included in the library. It has a new audio feature extraction feature, implemented in the FeatureExtractor example. Added ASCII-art to the source code (this is the main TarsosDSP 1.3 feature).
Included a resample feature, implemented by libresample4j. Together with the WSOLA implementation, it can be used for pitch shifting (similar to Phase Vocoding). A pitch shifting example (both with a CLI and a UI) is added in the 1.4 version of the TarsosDSP library as well.
Converted TarsosDSP to maven. This is known as the Malaryta-release. The "Malaryta" release is provided to you by RikkiMongoose (idea, documents, git things) and Ultar (converting to maven, refactoring). Malaryta is the capital of Malaryta Raion, Brest Region in the Republic of Belarus. Both developers spent their childhood in Brest, and think that the title Malaryta is as strange as Ubuntu or Whis
No open issues yet, or sync has not completed.