All Projects → merongivian → negasonic

merongivian / negasonic

Licence: MIT license
This ain't Sonic Pi, but it works on the browser: www.negasonic.org

Programming Languages

ruby
36898 projects - #4 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to negasonic

glicol
(Audio) graph-oriented live coding language and music DSP library written in Rust
Stars: ✭ 853 (+1068.49%)
Mutual labels:  web-audio, livecoding
Cracked
Mac app for noise making - built w/ "I Dropped My Phone The Screen Cracked"
Stars: ✭ 98 (+34.25%)
Mutual labels:  web-audio, livecoding
sonic-pi.el
Emacs running SonicPi
Stars: ✭ 79 (+8.22%)
Mutual labels:  sonic-pi, livecoding
improviz
A live-coded visual performance tool
Stars: ✭ 85 (+16.44%)
Mutual labels:  livecoding
desktop-duplication-cpp
Windows Desktop Duplication Tool for live coding presentations in C++2a
Stars: ✭ 51 (-30.14%)
Mutual labels:  livecoding
larastreamers
There is no better way to learn than by watching other developers code live. Find out who is streaming next in the Laravel world.
Stars: ✭ 184 (+152.05%)
Mutual labels:  livecoding
flow-synth
*UNMAINTAINED* A modular digital audio workstation for synthesis, sequencing, live coding, visuals, etc
Stars: ✭ 36 (-50.68%)
Mutual labels:  livecoding
perl-live
perl live coding
Stars: ✭ 13 (-82.19%)
Mutual labels:  livecoding
braid
Polyrhythms in Python: a sequencer and musical notation system for monophonic MIDI synths
Stars: ✭ 34 (-53.42%)
Mutual labels:  livecoding
Harmonicon
An experimental DAW for music as code.
Stars: ✭ 57 (-21.92%)
Mutual labels:  tonejs
vue.rb
Ruby bindings for Vue.js
Stars: ✭ 26 (-64.38%)
Mutual labels:  opal
fastidious-envelope-generator
Envelope generator (aka ADSR) for the Web Audio API that aims to be free of artifacts and handle edge cases well
Stars: ✭ 56 (-23.29%)
Mutual labels:  web-audio
snabberb
A simple component view framework for Ruby Opal based on Snabbdom
Stars: ✭ 41 (-43.84%)
Mutual labels:  opal
media-player
An modern, clean media player built using web technologies
Stars: ✭ 44 (-39.73%)
Mutual labels:  web-audio
AudioMasher
Generative Audio Playground
Stars: ✭ 50 (-31.51%)
Mutual labels:  web-audio
Comet
Web Synthesis on steroids
Stars: ✭ 18 (-75.34%)
Mutual labels:  web-audio
sonic-track
Uses a raspberry pi camera or web cam and python opencv to track motion in camera view. Sends motion contour data to sonic-pi via osc interface to produce and control notes/sample. Includes ability to use onscreen menu areas to change synthesizer, octaves Etc.
Stars: ✭ 24 (-67.12%)
Mutual labels:  sonic-pi
liveprinter
Livecoding for 3D printers
Stars: ✭ 30 (-58.9%)
Mutual labels:  livecoding
sonic-pi-vscode-editor
Use Sonic Pi from VS Code
Stars: ✭ 51 (-30.14%)
Mutual labels:  sonic-pi
cycle-audio-graph
Audio graph driver for Cycle.js based on virtual-audio-graph
Stars: ✭ 19 (-73.97%)
Mutual labels:  web-audio

Negasonic

Ruby DSL for music live coding in the browser, you can play with it in the online editor

DISCLAIMER: This is pretty alpha, so use with care if you plan to use it for real performances... Otherwise have fun!

Chat is available in gitter: nega-sonic/Lobby if you have any questions/suggestions

Usage

Playing Notes

You can use plain normal or midi notes

# playing a single note
play 42

# multiple notes
play 'E3', 42

# produces the same result as the above
play 'E3'
play 42

# Scales and chords (same as Sonic-pi)
play (scale :c, :major)
play (chord :d, :minor)

Cycle

Under the hood we use a 'fixed' time for calculating notes durations, adding more notes or play statements will make durations shorter. This happens because each play happens inside a cycle. A cycle's duration is around 3 seconds

# doing this
play 'E3'
play 42

# is the same as this
cycle do
  play 'E3'
  play 42
end

If you want to play notes at the same time then use multiple cycles

cycle do
  play 'E3'
end

cycle do
  play 42
end

Custom Instruments

With with_instrument you can add a synthesizer and connect it with effects. Every instrument needs to have a name (for performance reasons)

# The order of the effects will affect the final sound
with_instrument(:drums, synth: :membrane, fx: [:bit_crusher, :distortion]) do
  # each instrument has its own cycle by default
  play 30
  play 64
end

# multiple cycles can be used here as well
with_instrument(:lead, synth: :am, fx: :freeverb, volume: 3) do
  cycle do
    play (scale :c, :major)
  end

  cycle do
    play (scale :c, :pelog)
  end
end

Custom Effects

It is possible to modify the default values for effects, you can do this trough the fx block. Options for each effect are detailed in the Effects section.

drum_effects = fx do
  bit_crusher bits: 3
  distortion value: 1.3
end

with_instrument(:drums, synth: :membrane, fx: drum_effects) do
  4.times do
    play 30
    play 64
  end
end

Cycle options

  • :expand for a longer duration. Integer value
  • :every plays every 'nth'. For example this: cycle(every: 3) will play every third cycle. Integer value
  • :sustain reduce/augment the duration of notes. Float value between 0 and 1
  • :probability play or miss a note randomly. Float value between 0 and 1
  • :humanize boolean value

Synths

  • :membrane Use it as drums
  • :simple
  • :am
  • :fm
  • :duo
  • :mono
  • :metal
  • :pluck
  • :poly

Effects

Effects Options
vibrato :frequency, :depth
distortion :value
chorus :frequency, :delay_time, :depth
tremolo :frequency, :depth
feedback_delay :delay_time, :feedback
freeverb :room_size, :dampening
jc_reverb :room_size
phaser :frequency, :octaves, :base_frequency
ping_pong_delay :delay_time, :feedback
auto_wah :base_frequency, :octave, :sensitivity, :q
bit_crusher :bits
chebyshev :order
pitch_shift :pitch

Examples

Issues

  • Using every is pretty unstable at the moment, even more if you use it in combination with expand
  • Adding too much notes on a cycle causes the page to crash ( like doing 100.times do { play 30, 50, 60 } )
  • Page crashes also when you have a lot of cycles and you hit the 'play' button to fast (fixing this soon™)

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/merongivian/negasonic.

License

The gem is available as open source under the terms of the MIT License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].