A global music key on the master track

(First time? See Writing a good feature request)

Be able to set the key of a composition on the master track in the same way as we do tempo

What problem(s) would this feature resolve?

This could allow the creation of a host of new features such as

  1. A new piano roll that only shows notes in the key (without names) ie Root, +1, 3rd,5th. etc. Notes could be added to this and if the key changes during the track the same pattern would play the notes in the new key
  2. Chord tools could then be added similar to above.
  3. Notes entered into a piano roll that are out of key could be highlighted to show a potential clash
  4. Transpose tools could move notes into the correct key dynamically.

How does this feature fit in Bitwig as a product?

A general improvement to workflow

Is there already an alternative way to achieve this on Bitwig?

No

Could it be implemented using Bitwig components or APIs, without Bitwig team’s support?

No

Could it be provided by a VST or something else reasonably integrated with Bitwig?

No

Are there other products that offer this feature?

Not that I know of

Relevant links (optional)

1 Like

There’s a few related features here, and in a way that it wouldn’t make sense to implement the main feature without also implementing some of the others - what use is there to specify a Key if it doesn’t do anything? So, I think we should start by picking/prioritizing one of the “sub” features which are actually the features you want, and talking through how it would work.

Preface
I’ll provide some alternative Bitwig ways to achieve this, but I’ll start by arguing against a few of these requests to get to a common ground before proceeding. To be clear, a Key is the Tonic Note (C) plus the Scale (Major); a Scale is an ordered collection of Notes (CDEFGAB); an Interval is the distance between two Notes (C->E=4); Scales can have different names depending on the ordered collection of Intervals within (Major vs. Minor); and Modes are an easy way of saying that the same exact Scale with a different Tonic is a new Key that’s harmonically related to the others sharing that same Scale (C Major = A Minor). This is still a simplification, and it’s too specific to Western Harmony, but it will start to illustrate the problems (and solutions).

How does this work with individual Notes?
Considering a Piano Roll that swaps Notes/Pitches for Intervals-compared-to-the-Tonic, you might have to accurately name the Intervals like a Minor-3rd, and that will change between the Scales/Modes (but not the Keys). For example, all Major Scales have a Major-3rd, and all Dorian Scales have a Minor 3rd. Considering that the Interval will change on the 3rd Note, and considering the feature, I have to ask is that what you want? If you put a Note on the Minor-3rd and automate the Key, it would become a Major-3rd instead; what was important to you, the Interval or the Scale Degree? Surely that’s going to be different depending on the context of the music, i.e. there’s no global or hard-and-fast rule, and I’d want that to change differently in different transitions/Chords.

How does this work with Chords?
This problem exactly extends to Chords as well, which have a larger ordered collection of Intervals: did you only care about the Scale Degree, and so the Intervals should adjust to make a completely different Chord; or did you care about the Intervals, and perhaps the Chord moves to a different Tonic to maintain those? In other words, should a Cm13 turn into a Dm13, or a Cdim13 (not a perfect translation, just illustrating the qualities that change). To make any decisions, you’d have to understand the Chord in the first place, which is another problem because that Chord can have many names, all depending on the context they’re used in; then consider the automation of that context!

Accidentals
Finally, “out of Key” is never a bad thing, and I think you understand this at least as much to want to automate the Key; the new Notes would not always be in the previous Key, purposefully, and this is fundamentally the same whether or not you call it a Key Modulation (or automating from one Key to another). This causes problems for both the transposition and the restriction of Notes; an “Accidental” in one Key is a “Natural” in another, but these are just words used to describe the Notes, they have literally no bearing on the music. In many cases, Accidentals will sound “better” than other Natural Notes in the Scale!

The Piano Roll
Fundamentally, a Piano no longer makes sense to use as a visual or an input device. For the GUI, this is “simply” a whole other tab to visualize/edit Notes in, but how do we handle the HUI provided by MIDI Controllers? What Notes map to this system and why? The Intervals and Notes themselves no longer match up, and I can’t get around this being a massively confusing problem to solve. You play a C then D, which are a whole-tone apart, but after the transpositions you’re playing an E then F which are a semi-tone apart. Or you play a D then Eb but it’s just the same D note twice. You have to abandon any knowledge of a Piano and learn a new, dynamic transposition that can only be understood inside Bitwig, depending on where you are in the Timeline of a specific Project.

Where to go from here?
I think by now you might see that you should continue on your Musical Theory journey, and that we have a lot to consider with these features even after we’ve simplified them for examples, having ignored a massive portion of music across the globe to focus on the entry-level theory. I hope we can use some of this information to narrow down the feature into something that will consistently be useful for everyone, and something that technically and intuitively makes sense.

An alternative solution
Consider the C Major Scale, which starts at C and only includes the thick/white-keys on the Piano; then, understand that every other Diatonic Mode is derived from that Scale - most commonly A Minor - and this already goes far-beyond the vast majority of music you probably encounter. Using only these Notes, and centering on different Tonics (i.e. are you preferring that Cmaj, or the Emin, or the Amin), you have essentially all the possibilities you will need, and you will gain enormous knowledge about Intervals and Chords.

Then, Bitwig can easily solve the transposition for you with a Note Shifter. You’re already in control of the Scales, and you hand the Tonics to Bitwig; after all, a C Major sounds the same as any other Major, like an E Major, it’s just overall in a higher frequency range. That’s important, because you control how a piece sounds primarily via the Scale, then shifting the Tonic around can be helpful if you wanted a bass-note to be a little higher/lower, or perhaps your melody needs to be higher to “scream” a little.

To set this up, add a “Global MIDI” Track somewhere in your Project, mute it or otherwise stop it from outputting sound, and add a DC Offset to it. On any of your other MIDI Tracks, at the beginning, add a Note Pitch Shifter; add an Audio-Rate Modulator to it, choosing that Global MIDI’s DC Offset (not the Track itself) as the Source; finally, assign that Modulator to 100% of the Semitone change. Copy/paste this Note Pitch Shifter onto all of your MIDI Tracks.

Now, you control the Intervals and Chords, and you have access to essentially all of them even by focusing only on the white-keys. This is the primary part of composing, you make sounds over time according to how you want them. Then, if you find that you need certain Notes but they are either too high/bright or low/dark, adjust the DC Offset to transpose everything. It will sound the same, just higher or lower. This is very important; you don’t want to change a setting and have all of the Intervals/Chords change!

A final thought
In the last part, the solution purposefully ignores Intervals, Qualities, Chords, Scales, etc. because you “own” that as the composer. A simple and constant shift of every Note by a static amount of semitones is the definition of a Transposition, which is what you want; what you described is not a transposition, so do not continue to use that term in that way. If you wrote in Major, that’s exactly what you wanted, you don’t want it in Minor or Dorian because then it would sound completely different; but a C Major and an E Major are basically the same exact thing.

I strongly encourage you to not approach composition from the Key; that is entirely backwards. Music Theory is for describing music that already exists; it does not prescribe what music should do. You should not be picking a Key when you start a Project and then following the Notes/Chords within it. The Key follows the composition, not the other way around.

3 Likes

Wow, thats a seriously in depth response. I think you have pointed out a few things that are obvious, number 1 being that there is no alternative when creating music than to have a better understanding of music theory. I have 2 kids, one who has done his Grade 5 (if you’re not in the UK thats maybe not going to mean much to you) music theory and another doing his now. While I would love to do that too, time is limited.
The main driver behind this request is to have additional tools in my DAW to help people like myself who have a basic level of understanding of music theory, but want to do something more interesting compositionally. I suspect I am in the vast majority of home producers.
I put a tip on Discord linked below

Its stuff like this that I find useful, I understand how to choose notes that follow or work in chords and use things like Scaler occasionally for inspiration (I even use accidentals sometimes as I once spotted that have a sharp on the tonic note in a riff sounds really good in the right places).
However, when you say stuff like " The Key follows the composition, not the other way around." I realise that I have a long way still to go

1 Like

Tracktion Waveform Pro actually has this feature. The basics are introduced in this video.

It’s pretty amazing and I would have used it, but unfortunately it kept crashing. It would be amazing to see similar functionality in Bitwig.

1 Like

To add the music theory discussion. Consider the traditional french note naming scheme: solfege. In the “movable do” relative scheme each word corresponds to the note’s interval from do. More important than that is the function of the note in a given harmonic context. The functions may be used sequentially as melody, or in concurrently as chords. The tricky part is that the harmonic context determines the function of each note, and the choice of notes suggests the context. Context primarily refers to key centre and modality.

I think the key to any assistive technology is to understand that each note has a pull on the context while also fulfilling it’s function. In practise you probably want to provide 4 primary parameters. A chromatic transpose applied on the input side; a scale (list of notes and a concept of root) defined on the input side with optional quantization (meaning snapping non diatonics to nearest diatonics); a scale (list of notes and a concept of root) defined on the output side with optional quantization and a chromatic transpose on the output side. For notes which were in the source scale (after input transpose) they may to correspond diatonics in the output scale. For chromatics in the input scale, they map to chromatics with respect to the output scale.

This should allow for optional “guard rails” on the input side and flexibility around transposition; while also allowing more musical mappings onto a destination scale. As with everything else in bitwig you’d be able to modualte/automate, meaning your single melody could be reinterpreted in the context of a different root note, or reinterpreted in another mode with another root.

I wouldn’t say this should be a global feature in that the harmonic context may change dynamically. Instead I’d say they should function in realtime through devices leaving the played midi presented verbatim. The user could use a midi receiver to capture the resulting notes in another track if required.

I think an option to have the piano roll offer a ‘diatonics only’ view wouldn’t be a bad idea: you’d select the scale and it would be associated with the clip. If it genuinely only listed the diatonics, you could allow dragging a note “between notes” to hit your chromatics. You could alternatively have the quantization operate like “grid snap”; the non diatonics would be greyed out, and diatonics not. You’d drag notes and they’d snap to diatonics, and shift would allow you to hit the chromatics.

Isn’t most that already integrated with devices? You can transpose notes, snap to key, and add chords to played MIDI notes.

What’s missing is a compositional tool where you can plan out your song and have midi generated that can be customized afterwards.

In Waveform, you have a chord track where you can specify the chords (major, minor, sus2, 7th etc) you want based on the scale degree (I, ii, etc). You can also specify which key to use at which part of the track. Then there are tools that generate midi based on the selected chord like chords, baseline, arps with different patterns.

If you change the key or chords, all MIDI gets regenerated on the fly as long as you haven’t changed anything. This let’s you quickly explore different chords progression and scales/modes. Sure, if you’re a skilled piano player, you can do that yourself, but this tool would be for those who don’t play an instrument well enough

Once you’re happy with your chord progression, you can edit the MIDI to add out of scale notes/chords if you so desire. The MIDI editor assists you by coloring notes based on whether they are in the current chord (specified in the chord track) or scale.

The purpose of these tools isn’t to make the whole track for you, they just help you to quickly explore different ideas to get inspired.

If you’re concerned that these tools will take away your freedom to apply all your precious music theory knowledge, just turn it off and you keep all the freedom you have now.

Bitwig already offers a ton of stuff for live playing and generative music. This would be something for those who want to quickly plan and arrange their songs with MIDI.

1 Like

There are two existing requests that are more specific than this one as it is presented now:

For the sake of modularity :wink: between requests, it would be useful if you could look at these two requests and see what else not covered there should be covered here. Needless to say, you can also provide feedback on these other features.

There’s an interesting discussion started here, about half of which I understand :roll_eyes:
I’m going to have to get my more musically trained son to explain the rest to me.

Maybe another ‘alternative solution’ or a minor improvement …

Let the user select the key e.g. in the Project info tab (where you put title, artist,…). The interface could be similar to the key filter device. The information would be use as follows:

  1. write it to metadata of rendered songs
  2. use as default for all “Key filter” devices that one creates.
  3. use as default for “Picth Quantize” in the grid

For people that still learn music theory it would be great to offer filerting modes for the piano-roll (like adding color hints or deactivate out-of-scale keys).

I think things like global scale or key have no business being tied to Master track. should be just separate entity, either in form of chord track (which is kind of possible to do anyway) or settings in Project tab.

for reference here’s a clip that you can put in your project that will spawn a ‘scale track’, the trick is to use Harmonize device everywhere you need and point it to output of scale track, while Scale track just needs to have notes active on current scale. so you can arrange scale changes kind of like chord changes too. one caveat is that Harmonizer does weird input displacements sometimes, so despite it outputting notes that are in chosen scale, it might shift a note or two which are both in scale for original input and output. sometimes though it helps modulate input into something more fresh.

Alright, this conversation got quite dense. :slight_smile: I think we should go back to the problem that we want to solve here. Let me try.

The problem is that, if you want to stay in key in a Bitwig project, you may need a fair knowledge of music theory, a fair knowledge of Bitwig devices, and/or to review all your tracks and notes manually. This might be manageable if you are versioning Twinkle Twinkle Little Star, but if you start adding more complex melodies, chords, tracks, basslines, drones, choirs… then things get complicated.

Do we agree on this problem? If we do, then we can start looking at solutions. As mentioned above, there are already some feature requests created that also work in this direction.

I think this request is covered by Introduce chords as musical units, so this one can probably be closed.

Introduce chords as musical units, as it is proposed now, doesn’t have a sense of keys or scales. Also, one may use only single notes, no chords, and still want to stay in key.

Right. I wasn’t paying enough attention. So the difference compared to Select / highlight the scale to work with on the piano roll would be that you set the scale on the global track and the piano roll automatically selects the appropriate scale to highlight.

It could also function as a source for the Key Filter Note FX.

1 Like

by the way, I had a video on using same scale for whole project

1 Like