chrislo / brain Goto Github PK
View Code? Open in Web Editor NEWUse a Raspberry Pi to control my "studio"
License: GNU General Public License v3.0
Use a Raspberry Pi to control my "studio"
License: GNU General Public License v3.0
The melodic sequencer on the Beatstep Pro looks fun. I think I could emulate something like that by allowing notes to be toggled on and off using the pads, and then having the and buttons select which row of pads the knobs apply to. There'd need to be some way to control the scale that notes are in, a way of setting note length and I'd have to think about pattern lengths longer than a bar.
At the moment the euclidean sequencer is very separate from the step
sequencer, even though it is sequencing the same sounds/notes. This
means I'd have to duplicate functionality to allow, for example, notes
to be toggled and track muting in the Euclidean sequencer.
Perhaps it would be possible to add functionality to change pattern
length, and fill patterns in a euclidean style to the existing step
sequencer and access those functions by pressing, for example
I currently call UdpSocket::bind()
in
output::send_osc_to_sampler()
and output::send_osc_to_o2m
. I think
binding the socket can take some time, and I noticed timing problems
when doing it on every iteration of the main loop (fixed in
62f1ead). It would be good to avoid doing that in the event loop too -
possibly by injecting a reference to the socket into output::
or by
creating a type.
At the moment, we send clock to external instruments, but not MIDI
(note on, off, control etc.).
We currently don't really have a concept of note off (because the SC
sampler doesn't yet support it), but we'll need to handle that. Also
the output port name needs to be configurable as it's likely to differ
between OS X and the Pi.
The Step and StepSelect modes appear the same (the pads flash as notes play in both modes). It's a bit easy to get lost, so it'd be good to have some visual indication that we're in select mode. Maybe steadily flashing all the pads? Is it possible to flash the select button?
It'd be great to have a basic version of swing working for the initial version, otherwise the straight-sequenced 1/16th note patterns are going to sound very robotic.
The implementation of swing described by Roger Linn[1] sounds sort-of achievable.
[1] https://www.attackmagazine.com/features/interview/roger-linn-swing-groove-magic-mpc-timing/
It'd be good to be able to mute individual parts/notes in StepSelect
mode (perhaps using the button). This would allow longer, more
complex sequences to be developed live without necessary having to
have a full multiple-pattern sequencer.
I have a raspberry pi ๐. It'd be great to get brain working on it. It looks like Patchbox OS might be worth investigating because it comes with supercollider pre-installed (the compilation instructions for the pi look a bit involved), and has some handy audio-specific stuff.
See also: https://madskjeldgaard.dk/posts/raspi4-notes/
I'd like to be able to turn on the Pi and start playing without having to start services via SSH.
It'd be handy to have a script which clones the osmid repo and builds
these two tools as they don't yet seem to have packages we can use on
mac or linux. At the moment the install process is more complicated than it needs to be.
Alternatively, we could package up o2m/m2o for debian. Or decide to replace o2m/m2o altogether and build its functionality into our code.
With the recent change to the UI for selecting steps to edit (and allowing sample playback in Step mode), we've lost the ability to select the euclidean sequencer. I should think about where that lives (is it a separate sequencer, or a "mode" for the step sequencer).
In Step mode we should be able to record notes to the sequence as well as play the pads when they are hit. This record mode could be toggled using the button on the Atom, for example. We might need a metronome (#21) to make this usable.
The sampler will read all of the WAV files in the samples
directory
but doesn't check if they're 1- or 2-channel.
When I play a stereo sample the SC process gives the warning
Buffer UGen channel mismatch: expected 1, yet buffer has 2 channels
The sound plays (I think only out of one speaker), but it would be
better to do the right thing!
We have the global swing function which shifts every even sixteenth
forward, but it could be useful to be able to shift individual notes,
or groups of notes forward/backward.
This will allow me to toggle a note on and off for a given step.
In euclidean mode the length of the pattern can be less than 1 bar (sixteen sixteenths). This would be more obvious if we lit up the pad corresponding to the position of the "playhead" within the currently selected pattern.
Currently all samples are played at the same amplitude - this should scale with the velocity of the MIDI note_on message.
I noticed this particularly when I hacked m2o to talk directly to the sampler to tet out "live" drumming. Having a velocity curve (and perhaps some kind of gate where notes below a certain velocity don't sound at all) will hopefully improve playability.
For now it should be sufficient to read a directory full of samples and map them across notes. It's probably worth using MIDI note numbers instead of the current /sampler/1
index.
It's currently hard-coded to always send /sampler/1
to the sampler.
There's a slight but noticable delay between hitting a pad and hearing the note on the pi, that isn't present on OS X. That makes me think it's not something in the code, but rather something to do with the audio setup on the pi. Some things to try:
It'd be interesting to have a euclidean rhythm sequencer. I think we could add that to the existing step sequencer, or have it as an additional "mode", where three knobs were mapped to three euclidean rhythm parameters for each note (drum sound in a drum sequencer):
Introducing some randomness (eg occasionally shifting the rotation)
would generate some interesting variation.
Pressing the left and right buttons to select the current sequenced
note isn't very intuitive, it's easy to lose track of where you are,
particularly when skipping several empty screens.
I'd like to introduce a "select" screen. This would be the default,
and the note could be selected by pressing in that
order. To get back to this screen from a selected note, I'd hit
again.
I could make this screen a bit fancier by flashing the pads when that note plays.
This would also give me a nice place to have the live playing and
recording of the notes, as well as a place to audition the samples.
I'd really like to be able to sync the volca keys to the sequencer. Rather than implement a note-sequencer and MIDI output, maybe it'd be sufficient to output MIDI clock messages so that the tempo of the volca matches the tempo of the sequence.
An alternative might be to use the analogue sync and output that on, for example, the left stero output channel with the rest of the audio on the right.
Or, if this cheap external soundcard I've ordered is any good, I could use that for the main audio and the Pi's internal sound card to output the sync tone.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.