Code Monkey home page Code Monkey logo

kasina's Introduction

Kasina

Extensions for Bitwig Studio that try to look deeply into what makes a piece of gear great and then bring something of that to the Bitwig world.

NOTE: This is a personal project and very much a work in progress. I hope it might be useful to others, but the intention isn't to create a general purpose extension that meets everyone's needs. That said, comments and suggestions are welcome. Create a issue if you have an idea or run into an problem.

Download

You can download the latest version from the Releases section.

Devices

Elektron Octatrack

Alt text

This extension uses the MIDI side of the Octatrack to turn it into a powerful controller for Bitwig Studio. It provides most the basic functionality you'd expect as well as a twist or two thrown in for good measure. Set the scene to crossfade into madness! :)

Features

  • Control basic transport functions (Arranger only for now)
    • play
    • stop
    • record
  • Adjust basic mix parameters of tracks in Bitwig Studio
    • Volume
    • Pan
    • Send 1
    • Send 2
    • Select
    • Arm
    • Solo
    • Mute
    • track types
      • tracks 1 - 7 on the Octatrack control regular (audio/midi/hybrid) tracks in Bitwig Studio
      • track 8 on the Octatrack controls Bitwig's master track and the project remote controls
    • trig buttons move the bank of 7 regular tracks around the project
  • Adjust remote controls on tracks and devices
    • Navigate pages of remotes with trig buttons
    • trig keys toggle between track and device modes
      • in device mode, an additional set of trig keys scroll through the devices on the track
  • Advanced features
    • OT scenes integration
      • This requires a few hacks to make it work, but they are well worth the potential offered by the integration of the Octatrack's scenes into Bitwig's modulation system. With this extension, you can use modulators in bitwig to assign parameters from native and plugin devices to the scenes of the Octatrack!

More complete documentation in the works and will be available in a separate repo.

Other devices and possible experimental subjects (not yet started)

  • Korg Kaoss Pad KP3+ (MIDI side)
  • Novation LaunchPad Pro MKI
  • Novation LaunchControl XL
  • Ableton Push 2
  • NI Maschine MK3
  • Arturia Beatstep Pro
  • Keith McMillen SoftStep 2

kasina's People

Contributors

mgmacleod avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

kasina's Issues

OT scenes default to 1 on initialization

When the extension boots up, it doesn't know what scenes are selection on slots A and B, nor does there seem to be a way of asking (I had thought that the CC61 with a value of 0 trick was working, but closer testing suggests otherwise.

It's not a huge deal, as the situation would no doubt resolve itself quickly as the user starts selecting scenes. In any case, there should be a way to have this persist across sessions

Expand navigation of remote controls on devices

Currently, when in device remote control mode, navigation between devices is quite limited. In particular, you can only access devices at the same 'level', which means you can't get into device chains or anything like that.

The underlying issue here is likely something similar to #22

Explore the scenery

Produce a prototype of bringing OT scenes into the Bitwig modulation system

Look into bulk upload and download of CC values

OT has a 'command' to send all of its current CC values (at least on the audio side; less sure about MIDI). That might be handy.

It might also be nice to push to the OT the current values of all things it currently controls, if that thing exists.

  • hit a button and pull in the current state of the software world -- ideally without having the hardware echo the message back.
  • and conversely, hit a button and push the current state of the hardware world (a good candidate for being hidden behind a shift function

Brainstorm uses for remaining controls

There are currently unused:

  • encoders (PB and AT)
  • a few trig keys
  • the page key
  • the yes and no buttons, but they probably can't be used without impacting functionality on the audio side
  • the crossfader
  • the scene keys

Look into appropriate functions for the Clip Launcher

So far, I haven't done anything at all with the Clip Launcher. It's not really part of my workflow, but it might be nice at least to have a quick way create and record a clip on the current track. Something along those lines.

The purpose of this ticket is to look into what might make sense and then create some other tickets to implement whatever ideas emerge.

Finish basic mapping options

Complete current path of 'linear' or single-parameter banks per track (track 1 is volumes, 2 is pans, etc.)

Look into something a little more track oriented:

  • CCs of each track mapped to a bank of 8 (or maybe 7, plus one for master/project) tracks
  • page 1 has vol, pan, send1, send2
  • page 2 has remote controls (?)

Look into different navigation modes for track banks

Currently, when you navigate the main track bank forward or backward, there are a few potential issues.

  1. Page crosses group boundaries
  • if you have, say, 2 normal tracks, a group with 2 tracks, and then 5 more normal tracks after it, then the bank would include the first two, the group plus its two members, and then 2 of the remaining tracks for a total of 7 (instead of what you might expect, that the internal tracks of the group would be skipped)
  • it is definitely possible to include tracks in the bank only if they are at the same level, as DrivenByMoss works this way
  • I think it might be a nice thing to have as an option
  1. Moving the track bank back and forth does not change the track selection
  • mostly, I kind of like this because it doesn't force all controllers to focus on the same track
  • but it would be nice to have as an option

Look into scrolling in a remote control bank

In Bitwig, remote control banks / pages really want to be of size 8. FX2 page on the OT has only 6 controls. Even when defined as having a size of 6, navigation of the pages still proceeds in 8s; hence the last two are inaccessible.

Can we scroll these 6 controls within the larger 8-control page in a sub-page of some kind? Failing that, can we get the PB and AT knobs of FX1 to work?

General code cleanup

Lots of small things could be cleaned up:

  • make sure static values are in constants and those constants centralized
  • to many variables are protected
  • do we really need everything to be final or is that just some weird convention?
  • JavaDoc or at the very least the occasional explanatory comment
  • and the like

Support OT transport controls

I looked into this briefly early on, but it would be nice if the transport controls (at least play and stop) on the OT could control BW's transport.

Add support for device remotes on master track

Currently, the master track only supports the project remotes, but not remotes on devices on the master track.

I think it might also be impossible to navigate pages of the project remotes, but not completely sure Page nav for project remotes works. Just device remotes needs to be added

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.