ProductPromotion
Logo

Kotlin

made by https://0x3d.site

GitHub - fsynthlib/fsynth: Music synthesizer, written for fun and to learn stuff
Music synthesizer, written for fun and to learn stuff - fsynthlib/fsynth
Visit Site

GitHub - fsynthlib/fsynth: Music synthesizer, written for fun and to learn stuff

GitHub - fsynthlib/fsynth: Music synthesizer, written for fun and to learn stuff

Build Status codecov Awesome Kotlin Badge

What is fsynth?

It's a simple music synthesizer. It focuses on generating the waveforms from scratch, no samples are used. You can listen to it via the Web player, or using the cross-platform Java CLI. Read on to learn more.

Secondly, this project is my playground for learning Kotlin, functional programming (hence the "f" in "fsynth"), front-end development, Gradle, multiplatform projects, and other. It's also a place where I can focus more on quality than I normally could afford in a professional environment, because here I don't have a pressure to deliver on time. That's why my aim here is also to have as little technical debt as possible, and have as clean code as I can write.

Songs are described with such DSL:

val simpleDemoSong = song(
        name = "Simple demo song",
        beatsPerMinute = 120) {
    track(instrument = organs, volume = 0.3f) {
        note(1 by 8, D4)
        note(1 by 16, Csharp4)
        note(1 by 16, D4)
        note(1 by 8, E4)
        note(1 by 8, D4)

        pause(1 by 8)
        chord(1 by 8, A3, D4, Fsharp4)
        chord(1 by 4, B3, D4, G4)
    }
}

How to listen

Web

https://fsynthlib.github.io/fsynth/

Java CLI

The CLI uses system sound output to play music.

You can use the CLI from the distribution package:

./gradlew :cli:installDist
cli/build/install/fsynth/bin/fsynth --song 'Van Halen - Jump (intro)'

or during development, you can call the CLI through Gradle:

./gradlew :cli:run --args="--song 'Van Halen - Jump (intro)'"

To see a list of available songs, call the CLI without arguments.

Talk on Tricity Kotlin User Group

[TKUG #1] Piotr Krzemiński, 'Project fsynth: show and tell'

Build prerequisites

The below dependencies won't be installed by Gradle:

  • JDK + path to it in JAVA_HOME (warning: use Oracle's JDK for now, there are some issue with OpenJDK; see #31 for details)
  • Android SDK + path to it in ANDROID_HOME

More Resources
to explore the angular.

mail [email protected] to add your project or resources here 🔥.

Related Articles
to learn about angular.

FAQ's
to learn more about Angular JS.

mail [email protected] to add more queries here 🔍.

More Sites
to check out once you're finished browsing here.

0x3d
https://www.0x3d.site/
0x3d is designed for aggregating information.
NodeJS
https://nodejs.0x3d.site/
NodeJS Online Directory
Cross Platform
https://cross-platform.0x3d.site/
Cross Platform Online Directory
Open Source
https://open-source.0x3d.site/
Open Source Online Directory
Analytics
https://analytics.0x3d.site/
Analytics Online Directory
JavaScript
https://javascript.0x3d.site/
JavaScript Online Directory
GoLang
https://golang.0x3d.site/
GoLang Online Directory
Python
https://python.0x3d.site/
Python Online Directory
Swift
https://swift.0x3d.site/
Swift Online Directory
Rust
https://rust.0x3d.site/
Rust Online Directory
Scala
https://scala.0x3d.site/
Scala Online Directory
Ruby
https://ruby.0x3d.site/
Ruby Online Directory
Clojure
https://clojure.0x3d.site/
Clojure Online Directory
Elixir
https://elixir.0x3d.site/
Elixir Online Directory
Elm
https://elm.0x3d.site/
Elm Online Directory
Lua
https://lua.0x3d.site/
Lua Online Directory
C Programming
https://c-programming.0x3d.site/
C Programming Online Directory
C++ Programming
https://cpp-programming.0x3d.site/
C++ Programming Online Directory
R Programming
https://r-programming.0x3d.site/
R Programming Online Directory
Perl
https://perl.0x3d.site/
Perl Online Directory
Java
https://java.0x3d.site/
Java Online Directory
Kotlin
https://kotlin.0x3d.site/
Kotlin Online Directory
PHP
https://php.0x3d.site/
PHP Online Directory
React JS
https://react.0x3d.site/
React JS Online Directory
Angular
https://angular.0x3d.site/
Angular JS Online Directory