All Projects → ul → livecore

ul / livecore

Licence: other
A hardcore livecoding system for realtime audio synth.

Programming Languages

c
50402 projects - #5 most used programming language
nim
578 projects
lua
6591 projects

Projects that are alternatives of or similar to livecore

cl-patterns
Library for writing patterns to generate or process (a)musical sequences of mathematically (un)related (non-)compound values in Lisp.
Stars: ✭ 62 (+148%)
Mutual labels:  synth, livecoding
sound-garden
A personal journey into the audio synth domain
Stars: ✭ 21 (-16%)
Mutual labels:  synth, nim-lang
Jsscc
A JavaScript reimplementation of Gashisoft GXSCC
Stars: ✭ 26 (+4%)
Mutual labels:  synth
Tinysynth
A drums looper made with React and the WebAudio API
Stars: ✭ 238 (+852%)
Mutual labels:  synth
Zynthian Ui
User Interface for Zynthian
Stars: ✭ 92 (+268%)
Mutual labels:  synth
Synthdefs
Synthdef Pool
Stars: ✭ 54 (+116%)
Mutual labels:  synth
Javascriptmusic
Live coding music and synthesis in Javascript / AssemblyScript (WebAssembly)
Stars: ✭ 193 (+672%)
Mutual labels:  synth
Synthrecipies
Random Serum Patches
Stars: ✭ 5 (-80%)
Mutual labels:  synth
webaudio-synth
WebAudio Polyphonic Synthesizer
Stars: ✭ 83 (+232%)
Mutual labels:  synth
Dmach
android drum machine
Stars: ✭ 85 (+240%)
Mutual labels:  synth
Gwion
🎵 strongly-timed musical programming language
Stars: ✭ 235 (+840%)
Mutual labels:  synth
Audiokitsynthone
AudioKit Synth One: Open-Source iOS Synthesizer App
Stars: ✭ 1,258 (+4932%)
Mutual labels:  synth
Voiceoffaust
Turn your voice into a synthesizer!
Stars: ✭ 55 (+120%)
Mutual labels:  synth
Otto
Sampler, Sequencer, Multi-engine synth and effects - in a box! [WIP]
Stars: ✭ 2,390 (+9460%)
Mutual labels:  synth
Ws Ldn 4
Interactive DIY Synth / ARM baremetal workshop (London, 23-24 January 2016)
Stars: ✭ 36 (+44%)
Mutual labels:  synth
koi
Immediate mode UI for Nim
Stars: ✭ 27 (+8%)
Mutual labels:  nim-lang
Jssynth
Make music in your browser with this synthesizer and sequencer
Stars: ✭ 25 (+0%)
Mutual labels:  synth
Synstack
Modular soft synth & Forth based VM for audio DSL experiments
Stars: ✭ 79 (+216%)
Mutual labels:  synth
Teensy Eurorack
Eurorack shield for teensy 4.1 with 14 in / 16 out analog channels
Stars: ✭ 99 (+296%)
Mutual labels:  synth
thermopi
A Nest-like intelligent thermostat implementation for the Raspberry Pi
Stars: ✭ 16 (-36%)
Mutual labels:  nim-lang

LiveCore

A hardcore livecoding system for realtime audio synth in the spirit of Sound Garden. WIP with Work with the garage door up ethos.

Influences

Dependencies

On macOS:

$ brew install fswatch libsndfile liblo
or
$ port install fswatch libsndfile liblo

For Nim try choosenim. You'll need to use devel version as the latest stable at the time of writing (1.6.10) had a GC bug crashing LiveCore.

There is also shell.nix for Nix users but bear in mind that at the time of writing it's installing a version with GC bug (1.6.8).

Configuration

Sample rate and channels count is hardcoded to 48000 and 2 respectively. If your device requires different values, edit src/dsp/frame.nim.

Session workflow

NB: you need to run all the mentioned scripts from the repo root.

  • Checkout starting point. For a fresh session the main branch is a good choice.
  • Make sure that the git tree is clean, as this script will be committing your changes as you make them.
  • Start server with ./start-server
  • Run ./start-session with a session name as an argument. It must be valid as a part of git branch name as the script will prefix it with session/ and checkout this branch.
  • If the session with such name exists it will be resumed.
  • Make changes in src/session.nim and save file to compile and send to the server.
  • After every successful compilation there will be a commit.
  • Ctrl-C this script to stop and switch back to the starting point.
  • The system is ready for the next session!

Render

To render a specific session duration in a non-interactive mode to a file:

$ ./render <duration in seconds> <path/to/output.wav>

Examples

Peek into src/session.nim in session/* branches.

License

This project is licensed under BSD-3-Clause, with the exception of derivative work that is covered either by licenses defined via LICENSE files in the corresponding sub-directories or via comments directly in the source code files.

FAQ

Why Nim?

C-like freedom, performance and fast compilation with heaps of syntactic sugar. clive very much aligns with the vision I wanted to implement and I'd just port clive to macOS if only C was terser. When I'm jamming I want the code to be clean, concise and close to my intention, all other necessary trade-offs considered.

Does it run on Windows/Linux?

Maybe. Please try and let me know! I strive to write the code in a platform-independent way but I test it only on macOS.

Why snake_case procs and vars?

Purely irrational, æsthetic choice. CamelCase seems to be prevalent in the Nim ecosystem, and majority of the code I write/read in other languages is camelCase too. However, I enjoy the most writing/reading OCaml and Rust in the regard of that particular convention, and I'm glad that Nim's compiler doesn't actually care, so I went with underscores.

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].