====== Noise, Electronics and Code ====== A tutorial to get you started creating electronic and experimental music on your computer. We are also starting a weekly event to perform computer electronic music on [[https://anonradio.net/code-battle-zone/|anonradio]]. During this event, we came up with the idea of having a common place to share our experience with different tools to create computer music. ===== Overview ===== Here is an overview of creating electronic music on your computer or other electronic devices. The process starts with choosing your platform. From a computer and laptop to different devices. You can see a [[misc:nec#programable_hardware|list of hardware below]]. Then depending on which device you work with, you can choose a [[misc:nec#soft_synth|soft synth]] or a [[misc:nec#programming_language|programming language]] to work with or both. If you know a programming language already, you can look into libraries or project that is oriented toward music and live coding. Each section of your [[misc:nec#workflow|workflow]] can be hardware, code or software. For example, you can code your synth, then have a hardware controller to change some of the variables, and use a software sequencer to play the music. Each platform tool will have their strength and weaknesses so you'll have to experiment around to find what works for you. ==== Hardware ==== {{ :misc:computer_setup.png?900 |}} === Computer and laptop === What type of hardware do you need to make music on your computer? Anything goes, really, but you will have to adapt. On older hardware, you might need to limit the number of software you run at once or use a more DIY approach where you code more as it would take fewer resources. A lot of the tools listed below will work on different platforms. You can go a long way with a laptop and headphones. === Handheld device === There are multiple other devices on which you can make, code or hack music. One of the most famous ones is the GameBoy using software like [[https://www.littlesounddj.com/lsd/|Little Sound DJ (lsd)]] === Audio interface === An audio interface or a sound card is not needed early on in your exploration of computer music. On older machines, you might need a PCI card as an audio interface, but most modern computers have an audio circuit on the motherboard. When outputting your computer sound to an external sound system or when you want to input sound to your computer, an audio interface becomes quite handy. Some software will also struggle if you are not using an audio interface. It also has the advantage of providing more outputs, which becomes essential if you are mixing, for instance. === MIDI controllers === MIDI controllers come in different forms and shapes. You have keyboards, pads, sliders and knobs, and a mix of these different parts. Midi controllers will offer a more tactile experience controlling your computer. But again, they are not essential to create music on your computer. It's better to start without a controller to see where there is a need and then start experimenting with different types. ==== Workflow ==== In a live performance, you might end up using multiple tools. For example, you might have a 'control' or 'sequencer' or an 'algorithm' which would trigger a sound sample or a synth tool. This would then be fed into an effect and mixer, and finally, you would send that to a tool to broadcast or to record in a DAW (digital audio interface). {{:misc:chain.png?900|}} Some tools like pureData can do all of this on one platform. Even using only pureData, you would end up similarly separating your workflow. To connect all these tools, you will often need to rely on a system to help you route your midi from one too to the other and route the sound to the right destination. [[https://drobilla.net/software/patchage.html|Patchage]] is one tool that can be used for this. [[https://en.wikipedia.org/wiki/MIDI|MIDI]],[[https://en.wikipedia.org/wiki/Open_Sound_Control|OSC]] and [[https://en.wikipedia.org/wiki/User_Datagram_Protocol|UDP]] are three communications languages which can be used for that connectivity. While MIDI is a more mature system which is used on hardware synth as well as software synth, OSC is a newer system which offers more possibilities and ease of programming. UDP is used in differents tools and is at the foundation a network protocole. ===== Open source softwares ===== Here is a short list of tools that you can use to start learning about electronic music creation on your computer. Most of these tools are open source. ==== Programming Language ==== Any programming language can be used to create music, but some languages are created for that goal. Here is a short list of some of the main tools to code your music: * Csound - is a sound and music computing system which was originally developed by Barry Vercoe in 1985 at MIT Media Lab. [[https://csound.com/]] * SuperCollider - A platform for audio synthesis and algorithmic composition, used by musicians, artists and researchers working with sound. [[https://supercollider.github.io/]] * pureData Visual Programing language for audio (and visuals) [[https://puredata.info/]] * Clive - Live-coding audio in C. [[https://mathr.co.uk/clive/]] * Overtone Collaborative Programmable Music [[https://overtone.github.io/]] * Tidal Cycles Haskel live coding environment connected to supercollider https://tidalcycles.org/ * Sonic Pi is a code-based music creation and performance tool. [[https://sonic-pi.net/]] * Processing is a flexible software sketchbook and a language for learning how to code. [[https://processing.org]] * Chuck Strongly-timed, Concurrent, and On-the-fly Music Programming Language [[https://chuck.cs.princeton.edu/]] * Orca - Text-based sequencer [[https://hundredrabbits.itch.io/orca]] ==== Soft synth ==== This is not an exhaustive list of all the software synth there is, but a simple list of different types of well-maintained projects that are also open source. It's a starting point in exploring soft synths. * vcvRack - Modular synth simulator [[https://vcvrack.com/]] * AMsynth -Analog Modelling Synthesizer [[https://amsynth.github.io/]] * Sunvox - is a small, fast and powerful modular synthesizer with a pattern-based sequencer. [[https://warmplace.ru/soft/sunvox/]] * Helm - https://tytel.org/helm/ * Bristol - A vintage synth emulator [[https://bristol.sourceforge.net/]] * DIN (Din is Noise) - Soft synth with a different approach [[https://dinisnoise.org/]] ===== Programable / hackable Hardware ===== * Organelle - Programable synth in pureData[[https://www.critterandguitari.com/organelle]] * Norns - Lua scripting synth from the makers of monomes [[https://monome.org/docs/norns/]] * Daisy seed - Arduino-based synth on a chip [[https://www.electro-smith.com/daisy/daisy]] * PiSound - A raspberry pi 'hat' for hi-fi audio and midi connections [[https://blokas.io/pisound/]] * Teensy with its audio library [[https://www.pjrc.com/teensy/td_libs_Audio.html]] ===== Organizations and events ===== * Toplap Temporary Organisation for the Parsimony of Live Art Programming [[https://toplap.org/]] * Fakedac A perpetual event dedicated to audio visuals (AV) live coding, algorave & new algorithmic artforms [[https://fakedac.net/]] * Lurk discussions around net- and computational culture and politics, proto- and post-free culture practices, (experimental) (sound) (new media) (software) art [[https://lurk.org/]]