Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Licenses

The "LICENSE" file applies to everything but "sokol_audio.h" To see the "sokol_audio.h" license, visit: https://github.com/floooh/sokol/blob/master/LICENSE

Code Overview

This application acts as a custom digital audio synthesiser that translates alphanumeric ABC notation data into sound.

The code is structured to cleanly handle:

  • Text Parsing: It reads through standard ABC notation format strings to extract musical keys, notes, pitches, accidentals, lengths, and tempo markings.
  • Waveform Synthesis: It dynamically translates those parsed musical elements into their corresponding digital audio frequencies.
  • Audio Streaming: It pushes the calculated frequencies directly into a live audio stream for real-time playback.

Demo Video

Watch the synthesiser demo on Medal


Where to Find ABC Files

If you need music files to test out the synthesiser, check out these resources:

  • ABC Notation Official Website: Visit this site to find thousands of traditional tunes, folk songs, and classical arrangements written entirely in the text-based ABC format.
  • Aether Foundry 16-Voice: Go to this site to download a complex 16-voice/channel arrangement of a fictional piece generated by Codex, not based on any music.
  • Beethoven's 16-Voice Symphony No. 7 (Movement 2): Go to this website to download an advanced, highly complex 16-voice/channel arrangement of Beethoven's Symphony No. 7, Movement 2 in an .abc file to truly put this synthesiser's polyphony to the test.

Credits & Dependencies

  • This project utilizes Sokol Audio for its core, minimal, cross-platform audio stream initialization and playback wrapper. Huge thanks to the creators of the Sokol headers for providing an exceptional utility for low-level audio streaming.

About

Put any ABC file into this program, editing the file path in the code to switch out the abc audio file in use OR if you are using the release version, simply rename the abc file to the requested format.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages