Skip to content

Play SuperCollider synths using your (computer) keyboard in neovim!

Notifications You must be signed in to change notification settings

madskjeldgaard/nvim-supercollider-piano

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 

Repository files navigation

SuperCollider Piano for NeoVim

This plugin emulates the functionality found in digital audio work stations such as Ableton where a user may select a synth and press they computer keyboard's keys to play the synth. Except, this is a million times more cool because it is NeoVim and SuperCollider.

Requirements

Installation

use { 'madskjeldgaard/nvim-supercollider-piano' }
Plug 'madskjeldgaard/nvim-supercollider-piano'

Load the extension after the call to scnvim.setup.

scnvim.setup{...}

scnvim.load_extension('piano')

Usage

Play your chosen synthdef

:SCNvimExt piano.play

Play a particular midinote (33)

:SCNvimExt piano.play 33

Optionally, you can use a particular duration in the command as well (0.75 in this case):

:SCNvimExt piano.play 63 0.75

This uses the \default synth by default. To use your own, make a SynthDef:

SynthDef(\mycoolsynth,{|out=0, amp=0.5, freq=444|
    var sig = SinOsc.ar(freq) * Env.perc.kr(gate:1);
    Out.ar(out, sig)
}).add

Then set it as the SynthDef used by piano (note that the forward slash in \mycoolsynth and/or the single quotes in 'mycoolsynth' are removed when you call it in the set command):

:SCNvimExt piano.set mycoolsynth

Now, the synth being used is \mycoolsynth:

:SCNvimExt piano.play 33

You can use piano.midi to play arbitrary MIDIdefs.
Arguments are: midinote duration channel.

:SCNvimExt piano.midi 48 0.5 0

Example mapping of F5

vim.keymap.set("n", "<F5>", ":SCNvimExt piano.midi 48 0.5 0<CR>")

Example MIDIdefs in SuperCollider

MIDIdef.noteOn(\myNoteOn, {
	|vel,num,chan|
	("on " ++ [num,chan]).postln;
});
MIDIdef.noteOff(\myNoteOff, {
	|vel,num,chan|
	("off " ++ [num,chan]).postln;
});

Configuration

The extension will receive its own configuration as well as the user config. It is acceptable to modify the user config if necessary, and some extensions might only be a "preset" of a user config.

The extension's own configuration is defined in the table given to scnvim.setup.

scnvim.setup{
  extensions = {
    piano = {
      default_synth = [['mycoolsynth']]
      note_dur = 0.5
    },
  },
}

About

Play SuperCollider synths using your (computer) keyboard in neovim!

Topics

Resources

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

No packages published

Languages