Skip to content

jstrait/nanosynth

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 

Repository files navigation

NanoSynth

A miniature tone generator written in Ruby, intended to show how to create a minimal Ruby program that generates sound.

For a detailed description of how it works, check out this blog post: https://www.joelstrait.com/nanosynth/

Installation

  • Download nanosynth.rb
  • Install the WaveFile gem: gem install wavefile --version 1.1.1

Example Usage

NanoSynth expects 3 arguments: the waveform, frequency, and amplitude. It will then generate 1 second of sound and write it to a file called mysound.wav in the current directory.

ruby nanosynth.rb <waveform> <frequency> <amplitude>

For example:

ruby nanosynth.rb square 440.0 0.2

The command above will generate a square wave of 440Hz, at 20% full volume, and write it to mysound.wav in the current directory.

The waveform can be one of sine, square, saw, triangle, or noise.

The amplitude should be between 0.0 (silence) and 1.0 (full volume). Amplitudes above 1.0 will result in clipping distortion.