Suggestion for the melody interface

I’d like to be able to stack notes in the melody area to create different chord voicings outside of the chord module interface. So far, I haven’t noticed a way to do this specifically in the way I’m requesting.

Sometimes I want notes within chords to be held for varied lengths from the others, or to voice lead in terms of SATB, and so far this is the way I have imagined being able to do this. I find it limiting not being able to do this.

Tell me what you think. Perhaps there is a workaround that I’m unaware of, however I would prefer my requested method as it would be straightforward.

That has already been suggested here.

Try replying on that thread instead, consolidating our suggestions onto one master post might help the staff’s job easier.

Respectfully, I think they themselves would disagree. Examine

I put multiple requests in that one post only because it was a mirror from my Facebook post that had been made before this forum existed, and these requests were tweaks small enough to fit within a single minor update of Hookpad.

On topic, the way I visualize it being viable is that one button switches the focus between the melody and one countermelody track, which uses slightly thinner piano roll notes. The countermelody track works exactly like the melody track, but is slightly attenuated.

Analysis for SATB or counterpoint would certainly not be simpler in Hookpad than they are in any piano roll sequencer / DAW.

1 Like

You can do it in the same way Hooktheory used it in some of the examples in their book; by forking this Theorytab (use the Nocturne in Eb one linked below), and then selecting the notes by left / right arrow keys, you can clearly see how rest notes with negative durations are employed to align notes on the melody track as if they can overlap. In particular, by copying the negative semiquaver rest note in that Theorytab and then pasting whenever necessary, combined with the fact you can reach over 7 octaves with the Jazz plugin, you can literally achieve polyphony with no limitations.

I recommend finishing the lead, and then pasting those negative rests and tying them into one rest note that spans over the entire row, and then doing the counterleads row by row. Proof of concept.

Obviously this feature has not been officially endorsed by Hooktheory themselves for nearly four years, who seem to have manipulated the underlying Theorytab data format directly, so use with extreme caution. For example, it seems to crash while exporting scores, and simply clicking on the melody track to position your cursor will most likely break, so instead click a note and then click the same note again to position the cursor immediately after it.

You also cannot use it with other Theorytab-exclusive features (inverted sus4, augmented fifth, added fourth) unless Hookpad allows pasting data across different opened Theorytabs.

Nice find! It’s very messy and confusing but I’ll work at it. Thanks for this! Your examples prove that it works and that the engine can certainly handle it, looks like.

What are you waiting for Hooktheory devs…

This fork contains not only negative rest notes, but also negative rest chords. Useful perhaps if you want to build upper structures like imitating dim7 and mM9? (doesn’t seem quite useful because Hookpad’s automatic voicing usually leads to dissonance and clipping)

For convenience, negative rest notes [resp. chords] can be tied by clicking the rest note to the right; and by tying a negative rest note to a regular rest note (the one you can enter by typing ‘0’ after the negative rest note), that negative rest can be shortened. Negative rest chords followed by no chords with positive duration will be removed upon saving!

Pulled it off nonetheless.


Polyphony could theoretically be supported in Hookpad as @HertzDevil has clearly shown. It goes without saying that we never intended melodies to be written in this manner. The negative rest duration is a bug, albeit one that rarely manifests in normal Hookpad usage. Although we certainly don’t want to encourage the hacking of Hookpad to get polyphony, it seems a shame to take down the masterpiece that @HertzDevil has created.

Regarding official support of polyphony, we need to think about it more. It’s not clear to me at the moment if Bach chorales in SATB would be more or less clear in the Hooktheory system. Mostly these chorales are taught in conventional classical harmony classes, which probably would prefer to use conventional sheet music rather than a TheoryTab.

Implementation-wise, I could envision a “layer” system, the way that Finale and other scorewriters work, whereby edits are made to specific layers that are aggregated at the end. The real question would be if this would ultimately add value to the database or if it would make analyses more complicated.

I’m very slightly starting to regret linking the Waking Up In Vegas tab to Hertz now

Why would you limit hookpad’s audience? Right now the availability and ease-of-access which it provides makes it stand apart from expensive DAWS as a learning tool and a creative springboard.

The ability to view the notes of chords and to arrange them freely is a necessity for analysis and would make hookpad’s use as a tool for not only learning, but creating, available to anyone with a computer and internet access. SATB is used extensively outside of classical and baroque analysis and songwriting. It can be applied to any piece of music with multiple ‘voices’ not limited to the voices of those singing in a choir, such as the piano, especially in the framework of jazz. In response to the point you made regarding convention, I think it’s important to be open-minded. The availability of hookpad’s analysis capabilities outweighs the need for traditional, or conventional methods. Either way, the notes and their progressions are the same, whether on staff paper or in representations. Music defines theory, not the other way around. You could use hierogliphics to represent note values, and the tones would still be the same.

For me hookpad is a very exciting tool which has a lot of potential, and I can’t understand why it should be limited in it’s functionality.