Octave UP / DOWN for specific notes

0
0

Hello. I’d like to create octave up/down buttons for specific notes only.

I saw this thread: http://www.bome.com/forums/viewtopic.php?t=12252 which does exactly what I want except that this solution works for the whole keyboard. I need a specific range (middle octave only) to be able to be transposed.

 

Any ideas? Thanks!

Marked as spam
Posted by (Q&A Forum: 3, Answers: 8)
June 15, 2017 10:03 pm
35 views
Hi Stef, A few questions 1) What input note number (lowest note) do you want to start the octave up/down operation?ga 2) What input note number (highest note) do you want to or the octave up/down operation?gb 3) What is the midi message or incoming action you want to send to enable transpose up? 4) What is the midi message or incoming action you want to send to enable transpose down? 5) Is there a specific message or incoming action that you want to send to disable all transposing? If so what? These are key to the solution. In summary you will need rules for the translators to determine if the incoming note is in scope for translation and if so which what to do with it (add 12 or subtract 12). You will also need a way to turn off any existing playing notes when enabling/disabling the feature so you don\’t have any lingering notes. The thread you referred really pointed out most of this so are you looking to build it yourself with our help (for free) or do you want someone to build it for you (for a fee?) If you just need guidance, so you can build it, we are here to help (see below). If you are looking for a full solution for free, feel free to reach out to me at the email address below and I can provide you an estimate. As a summary here is the strategy Here is example on how the translator would work for note on Input Note On on channel ? any note set note to pp and velocity to qq Rules // Assuming ga is low note and gb is high note if note gb the exit rules execcute outgoing action // Logic here to determine if you have transposed enabled. Lets assume if gc is the value of transpose up or down // for instance if gc=0 not transpos, if gc=1 then transpose up 1 octive if gc=-1 transpose one octave down rr=gc*12 rr=pp+gc Output Note On channel ? pp with velocity qq You would need to duplicate above for note off otherwise notes will never turn off Then a translator to set gc value and kill any notes currently on. Regards Steve bome@sniz.biz Independent Bome Programming Specialist Bome Q&A moderator
( at June 15, 2017 11:44 pm)
0
Private answer

Thank you for all the help Steve! Your comments where really helpful. For anyone interested, I’ve attached this device:

Attachments:
Marked as spam
Posted by (Q&A Forum: 3, Answers: 8)
June 21, 2017 6:01 pm

My Pleasure!

( at June 21, 2017 6:03 pm)
0
Private answer

Sure, in the “Note On” and “Note Off Translator rules, change the below from “execute” to “skip”

if pp<ga then exit rules, execute Outgoing Action
if pp>gb then exit rules, execute Outgoing Action
if gc==0 then exit rules, execute Outgoing Action

Edit - Actually leave the 3rd statement above alone.

 

Marked as spam
Posted by (Q&A Forum: 23, Answers: 1267)
June 21, 2017 2:47 pm

Okay, that works! Last question, I promise! Is there a way to make all of this work with a translator for each incoming note message (instead of defining a range like it is now). The way it is at this moment works, but I’d like to alter some incoming notes so they play a semitone higher. I’m working with a pad controller, so I would like to create a kind of keyboard on it. Right now, the notes are spread out as semitones and I would love to create whole tones at the bottom 8 pads (like the white keys on a piano) and the black keys on the 8 pads from the second row of pads. As it is now, I can’t alter the outgoing note message for each note because those notes are already used for the rules in the init translator (I have one NOTE ON and one NOTE OFF translator for the whole octave and thus I can’t alter certain notes within that range) I hope you can understand my problem, again thank you for all your help I’m learning a lot!

( at June 21, 2017 5:19 pm)

You can create new translators for each (and any note) and only use rules to change the outcome of the given note

Say you have incoming note pp (local variable). Say you want to apply a rule to a given notes

Say incoming note ON of 60
Set value to pp and velocity to qq (pp and qq are local variables to that event)

//Rules
if pp!=60 then exit rules, skip outgoing action
// Must be 60 move up one semitone
pp=pp+1
Outgoing pp velocity qq

Something like this. Be sure to do the same for note off

( at June 21, 2017 5:26 pm)
1
Private answer

I guess the best way to handle this is to post an example. Please see the attached project file.

First look at the Init Preset translator Init timer which shows the global variables set up for the project

Here are the rules

// Initialize all global variables
// Lowest note
ga=41
// Highest note
gb=59
// Octave shift amount
gc=0
// channel
gd=8
// outgoing message turn off all notes
pp=128|gd

In the preset called “Work” there are 4 translators, the first two haneld note-on and note off message and will transpose based on the state of the global variable gc and the range of notes defined which are global variables ga and gb

 

Here are the rules

rr=pp
if pp<ga then exit rules, execute Outgoing Action
if pp>gb then exit rules, execute Outgoing Action
if gc==0 then exit rules, execute Outgoing Action
rr=gc*12
rr=pp+rr

The other two translators are used to turn octave shift up or down as needed and also makes sure all notes are turned off when shifting octave.

 

Here are the rules for shift up

// increment 1 to shift up an octive
gc=gc+1
// calculate output channel and send note off
pp=128|gd
// outgoing message turn off all notes

Note that you will need modify your project for your actual input and output devices as well as the range of notes and input needed to shift octaves.

Have fun experimenting and learning!

Steve

 

bome@sniz.biz

 

Independent Bome Programming Specialist

 

Bome Q&A moderator

 

 

Marked as spam
Posted by (Q&A Forum: 23, Answers: 1267)
June 16, 2017 6:08 pm
Great! That works perfect There’s just one more thing I wanted to ask: is there a way to disable certain notes from being played? I don’t want to hear the other octaves when I play a note on them because I’d like to use them for programming CC messages. Thank you very much, really appreciate his!
( at June 21, 2017 10:53 am)
0
Private answer

Hey thanks! Yes I definitely want to try this out myself with some help from you guys. That’s the best way to learn something new I guess. I can’t exactly follow you explanation, still a little above my head I’m afraid. I’m stuck at defining the range: I can’t make a certain note as a variable (for example vv) because that way, I can only choose ANY NOTE as input and that defeats the purpose of singling out one octave only. I also can not make a rule with a note value inside (for example C2 = C2 + xx) where xx would be the octave up or down. I’m probably not grasping the correct idea to do this yet. I included my basic file as an attachment, would be great if you could help me start this up!

Marked as spam
Posted by (Q&A Forum: 3, Answers: 8)
June 16, 2017 5:56 pm