- H&M + Jordan projects
Open source software (OSS) = Freely-available source code!
- Be aware of the different kinds of OSS licenses
- These determine how you can (or can't) legally use the code in your projects. Make sure you're allowed to use the code for your commercial (or non-commercial) purposes.
- How does open source happen?
- Aligning an Open Source Ethos
- OS development funding models
- Internal tools that become their own library, like React by Meta (Facebook)
- Personal projects or tooling that the author wants to share
- Mine is Haxademic
- What open source project should I contribute to?
- The dark sides of open source
- The struggles of an open source maintainer - being a OSS maintainer can be difficult
- Awful OSS Incidents - open source can create security risks
Open source libraries & frameworks that you'll find
- Many popular OSS projects are either a library or a framework
- What is the difference between a framework and a library?
- p5js is a larger framework, but has libraries that can add extra functionality
Package (library) managers
- Why use a package (library) manager?
- Quick & easy to add functionality to your project
- Dependency management - any library you use may have its own dependencies, and the package manager will download (and solve version conflicts) for you
- It's nice to have one source for the latest tools
- Downsides of package managers
- Writing Javascript without a build system
- Security risks
- Large download size (with lots of extra library dependencies you might not use) Nodejs meme
- Versioning/dependencies can break or become outdated over time dependency meme
- Different languages have different package managers
p5js: Doesn't have one! You include remote javascript files or upload themProcessing&Arduino: library manager inside IDEJavascript: npmJava: Maven or GradleRuby: BundlerPython: pip or condaOS X: HomebrewWindows: Chocolatey
Justin's examples of different audio uses in creative code
- Interphase
- Interphase preview
- Interactive music generator software w/physical lighting
- #dancelab @ DAM
- All choreography & computer-generated visuals were synced to the tempo of the music
- Bauhouse
- Graphics respond to audio triggering (built w/Interphase music engine)
- Feetboxin
- Piezo (impact) sensors send MIDI signals that trigger audio, but also are turn into DMX signals to trigger the lights
- HaxVisual
- Incoming audio signal is analysed and used to draw audio-reactive images
- Obsidian
- Looping animation was matched exactly to the length of the looping audio track
- Webcam sonification
- Using pixel data to translate into a looping sound wave
Samples vs. Synthesis
- Samples
- Synthesis
Making music
- Basic building blocks
- Data & timing to create "sequencer" patterns (author info)
- Notes, chords & scales
- Algorithmic Music Composition - interactive tutorial in p5js
- Generative Music AI Course - YouTube series
- Changing parameters over time
- Tools
- Examples
- More examples of web-based music tools
Audio input
- FFT analysis from microphone input
- Amplitude analysis from sound file
- More demos
- Specific example: Realtime pitch detection
Other tools for creating music with code
- Live coding
- Max
- Supercollider
- Aubio
- Sound eXchange (cli conversion tool, like ffmpeg but for audio files)
- JUCE
- VCV Rack (+ plugin docs)
- Ableton Live Connection Kit
Read:
- Introduction to Generative Music
- Algorithmic Music Composition - interactive tutorial in p5js
- Algorithmic Music @ Wikipedia
- Live Coding Handbook
- Advanced articles (optional, just for kicks)
Watch & listen:
- Making Music with CODE?! (With DJ_Dave and Sam Aaron)
- Tutorials
- "The Code Creative" Web Audio API video tutorials
- Luisa Pereira's classes
- Conceptual interviews
- Art examples
- Simon Russell - Beat Visualization
- The Ballad of the Psychotropic Robots
- Ryoji Ikeda | data.path
- William Fields - Fields OS
- "FieldsOS is 100% algorithmic music. The probabilities, conditions, and constraints were configured in advance. The output was recorded and this is the result. No curation or editing was done."
Build something with audio
- Ideas:
- Write a program that plays a sound file along with a graphical element
- Build an interactive or self-playing instrument
- Visualize microphone or audio file analysis
- Synthesize some sounds with oscillators
- Build a drum pad/machine like Bongo.cat
- Use MIDI
- Resources: Free audio files
- Resources: Wave editors (record & edit your own audio files)
- Audacity (Tenacity) (free desktop app)
- Wavacity (free browser-based app)
- AudioMass (free browser-based app)
- Present your webcam/hardware sketches