It doesn’t seem to be predictable what octave melody notes will be played in - the same note on the piano roll comes out at different octaves from section to section. Plus the notes are not labelled for octave. Finally, changing key for a whole project can cause whole sections of melody to move to a different octave relative to other sections.
Is there some way to force the pitch of melody notes to be relative to some fixed reference, rather than apparently randomly assigning them an octave?
Is there some way to unambiguously see what octave a note will play back at? (e.g. this C is C3, this other C is C4?)
Is there a way to make a key change transpose the project, preserving the relative pitches of melody notes across sections, rather than some melodies jumping to a different octave?
First, let me try explain how octave are working in Hookpad. In general octaves are not randomly assigned. If you open a new project and write a middle C, you will always hear the same octave. Sections themselves are only creating visual ordering so you can see the different parts of your song better. They don’t change any perceived octaves. However there are a few things which can change the octave you’re hearing:
Octave slider in band browser: Each instrument has an octave slider so you can easily change transpose its octave up or down by one octave.
Instruments: All instruments are outputting the same octave, except bass instruments or the bass versions of “normal” lead instruments, those are two octaves lower and I think some of the guitar patches are one octave lower as well. However some of the synthesizer sounds are using two or more octaves for one note so it’s not always easy to define what octave one of those instruments is playing.
So one explanation for a “randomly” changing octaves for different sections could be, that those sections have different bands assigned with different instrument and perhaps different octave slider positions.
Keys and keychanges: By definition C is our lowest key. If you use any other key, the note on scale position one will be higher than the one in C. So if you change the key to B, the same melody will transpose 11 semitones upwards, which might appear like almost one octave higher.
And here lies one problem. All keychanges are absolute and not relative. If you start in C and create a keychange to B on let’s say bar 5, all notes after bar 5 will be transposed 11 semitones upwards as B can’t be lower than C. But if change the first key of your project to any other key than C the keychange in bar 5 will transpose all notes downwards by one semitone as for any other initial Key than C there’s another key which can be lower by a halftone step.
I know that this is no great behaviour but I’m not sure if we can do anything about it as things can get really complex really fast. Perhaps it would be easy to maintain relative key changes if you change the initial key, but what happens if after that the key changes inside the song are changed and then again the initial key and if you repeat this a couple of times…
We’ll have to think about this and see if we can find a great solution for this problem.
Please let me know if this helped and if I missed anything.
As Dennis mentioned, since in Hookpad you are compositing in relative notation instead of raw pitches like a DAW, octaves can be influenced by many factors, including our voicing algorithms and the natural “octave” of the instrument patch (i.e. bass guitar is programmed to be in a lower octave than piano).
That being said, for 95% of the lead instruments, sd 1 in the home octave is in the 4th midi octave (C4 for key of C or pitch 60, F#4 for the key of F#, A4 for the key of A, etc).
Regarding preserving octave jumps between keys during a global key change, this is appears to be an oversight on our end. The correct behavior should certainly be to preserve these relative octaves. We’ll work on a fix for that, thanks for pointing it out.