Skip to content

jstrait/nanosynth

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 

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.

Releases

No releases published

Packages

No packages published

Languages