Skip to content

🎹 Software for making music. Connect a MIDI keyboard to it, and the program generates the sound for the notes you play. Also functions as an API for generating sounds programmatically.

License

Notifications You must be signed in to change notification settings

jjvanzon/JJ.Synthesizer

Repository files navigation

JJ.Synthesizer

Release 0.250 - "Additive Engine"

2015-03-10

This release introduces the foundational Additive Engine, laying the groundwork for future synthesizer development. While there is no user interface or real-time audio playback yet, core functionality is implemented and validated through test programs in the form of unit tests.

Main Features

  • Operators: Manages how data or signals are processed within the synthesizer, enabling various operations for sound generation.
  • Curves: Modulation curves that evolve over time, shaping sound dynamically.
  • Samples: Supports audio samples for playback and manipulation of pre-recorded sounds.
  • Audio File Output: Generates and exports synthesized sound as files.
  • WAV Header: Adds the file header needed to make audio output playable in standard media players.
  • WAV Header Detection: Detects whether input files are standard WAV format before attempting to read them.

Supported Operators

This version of the engine supports various types of synthesis and signal manipulation, including:

  • Sines (pure tone waveforms, the simplest sound wave)
  • Samples / Audio Files (pre-recorded sound manipulation)
  • Additive Synthesis (combines multiple sine waves or samples to create complex sounds)
  • Oscillators (periodic waveforms, modulating pitch, volume, and other sound aspects)
  • Delays (time-shifting effects for echo and delay)
  • Detune (slight pitch adjustments for sound enrichment)
  • Speed Control (altering playback speed, affecting pitch and duration)
  • Curves/Envelopes (modulating and shapes sound over time)
  • Volume & Pitch Control (including envelopes for dynamic adjustments)
  • Basic Arithmetic (mathematical operations for sound manipulation)
  • FM Synthesis (theoretical support for frequency modulation synthesis, not fully tested)

Note: Due to a limitation in this version, pitch envelopes do not work with freely drawn curves. However, pitch envelopes might work by using continuous math functions.

Interpolation Options

The engine supports two interpolation methods for Curves, Samples, and Audio Files:

  • Blocky (step-wise interpolation)
  • Linear (smooth transition between data points)

Samples

Supports the following sample formats:

  • 8-bit and 16-bit audio
  • Mono and Stereo channels
  • WAV and RAW file formats

The engine also automatically detects and parses WAV headers when loading samples, simplifying the handling of audio files.

About

🎹 Software for making music. Connect a MIDI keyboard to it, and the program generates the sound for the notes you play. Also functions as an API for generating sounds programmatically.

Topics

Resources

License

Stars

Watchers

Forks

Languages