Giter VIP home page Giter VIP logo

brain's People

Contributors

chrislo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

brain's Issues

Melodic sequencer

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.

Merge euclidean and step sequencer

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

  • .

Refactor output classes to reuse a UDP socket

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.

Send MIDI to external instruments

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.

Make it more obvious that StepSelect mode is active

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?

Mute individual parts

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.

Automate building of o2m/m2o

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.

Allow a way of selecting between step and euclidean sequencers

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

Record notes in step mode

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.

Handle stereo as well as mono samples

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!

Shifting time of notes

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.

Sampler should respond to note velocity

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.

Allow sampler to support multiple samples

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.

Investigate latency on raspberry pi

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:

  • does this happen if I use the internal soundcard instead of the USB one?
  • does this happen if I use the USB soundcard on OS X?
  • have I configured JACK correctly?

Generate euclidean rhythms

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):

  • Number of 16th notes in the pattern (1-16)
  • density of the fill
  • "rotation" of the pattern

Introducing some randomness (eg occasionally shifting the rotation)
would generate some interesting variation.

Better note select in StepSequencer

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.

Output clock sync for external devices

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.