~mikelma/nan-audio

Replace old add-sequence and mod-sequence with seq and seq-mod
Add logo to docs
Add velocity and play-time in milliseconds to test-note

refs

master
browse  log 

clone

read-only
https://git.sr.ht/~mikelma/nan-audio
read/write
git@git.sr.ht:~mikelma/nan-audio

You can also use your local clone with git send-email.

#NaN: Not a Noise

logo

Yeah, that's music, not a noise really (?)

NaN is a real-time audio syntheis extension for GNU Guile designed for live coding.

WIP: The project is in a very early development phase. Expect, bugs and lack of documentation.

#Building

Dependencies:

  • libfluidsynth
  • libguile-3.0

To build the optimized binary simply:

make build-fast

Additionally, if you have wkhtmltopdf installed, you can build the documentation by running:

make docs

This creates a pretty docs.pdf version of the documentation in docs.org.

#Basic usage

Once you have build the project, execute the ./nan binary:

./nan -l prelude.scm

The -l prelude.scm loads a variety of utility functions (see docs.org). Now you will have a Guile REPL ready. Should look somethig like this:

scheme@(guile-user)>

Here you can run any Guile code, they have an explendid documentation here.

prelude.scm loads some handy soundfonts, let's check them (copy and paste the following code in your REPL):

(synth/noteon 1 32 127)

You should hear a kick. This code just plays the MIDI note 32 in channel 1 with velocity 127, feel free to play with these values.

Playing notes like this is useful for exploring available sounds and instruments, but we can use the sequencer to automatically play them in a loop.

(add-sequence 200 1 '(32 32 32 70))

Now you should here a repeating pattern of notes. What this code snippet does is to add a new sequence to nan's sequencer, with a period of 200 milliseconds, in MIDI channel 1, and with the notes (32 32 32 70). You can check the sequencer's status any time by running (print-sequencer).

TODO Explain sequence modification & samples. Meanwhile, see docs.org for more info.

#License

The project is licensed under the GNU's General Public License v3 (GPLv3). You should get a copy with the repository (the LICESE text file).