@ILIAM when I move with Slider is changing values on Transposer, but over ,,+“ and ,,-" it doesn’t. And with ,,+" and ,,-" buttons Value on Slider are changing but not on Transposer.
Latest posts made by keysounds
-
RE: Octave Up/Down Buttonsposted in General Questions
-
RE: Octave Up/Down Buttonsposted in General Questions
@ILIAM
They should be whole step 12 Semitones(Octave). -
Octave Up/Down Buttonsposted in General Questions
Hi everyone

I’m developing a standalone live instrument in HISE for realtime performance — mainly for solo playing using a touchscreen (iPad-style) interface.
I need a very simple and reliable live transpose function that can shift all incoming MIDI notes ±12 semitones per click (like the “Transpose” buttons on Korg or Yamaha arranger keyboards), but without cutting off held notes or affecting sampler pitch parameters directly.
Basically:
• Two large buttons (▲ / ▼) for +12 / −12 semitone steps
• A central display showing the current octave offset (−2, −1, 0, +1, +2)
• Works in Standalone HISE (not compiled project, no Project Manager)
• Touchscreen friendly (for iPad performance)
• Ideally realtime MIDI-based transpose (not pitch engine change)I’ve tried several methods:
• Synth.setGlobalTranspose() → not available in my standalone build
• Sampler.setTranspose() and Sampler.Transpose → property not found
• Sampler.setAttribute(2, value) works for pitch but affects currently playing notes
• So I switched to a pure MIDI re-routing approach via onNoteOn() and onNoteOff()Here’s my current working script (it does MIDI remapping correctly, but maybe there’s a cleaner HISE-native way to do this?):
Content.makeFrontInterface(800, 400);
// Touch-friendly UI
const btnDown = Content.addButton("btnDown", 140, 150);
const btnUp = Content.addButton("btnUp", 540, 150);
const lblVal = Content.addLabel ("lblVal", 350, 150);btnDown.set("text", "▼");
btnUp.set("text", "▲");
btnDown.set("fontSize", 72);
btnUp.set("fontSize", 72);
lblVal.set("fontSize", 72);
lblVal.set("alignment", "centred");
lblVal.set("textColour", 0xFFE8C66A);reg octaveShift = 0;
const tShift = Engine.createTable("TransposeShiftPerNote", 128);
tShift.fill(0.0);inline function updateLabel()
{
lblVal.set("text", "" + (octaveShift / 12));
}btnUp.setControlCallback(function(c, v)
{
if (v) { octaveShift = Math.min(octaveShift + 12, 24); updateLabel(); }
});
btnDown.setControlCallback(function(c, v)
{
if (v) { octaveShift = Math.max(octaveShift - 12, -24); updateLabel(); }
});function onNoteOn()
{
local n = Message.getNoteNumber();
tShift.set(n, octaveShift);
Synth.playNote(n + octaveShift, Message.getVelocity());
}function onNoteOff()
{
local n = Message.getNoteNumber();
Synth.noteOff(n + tShift.get(n));
}updateLabel();
I wonder if there’s a built-in or cleaner way to achieve live transpose inside HISE, maybe something like a MIDI processor or node graph that can handle note remapping directly — especially in standalone mode?
Any advice, or confirmation that this “manual table” approach is the best practice, would be super appreciated

Something like this hiier

Thanks in advance!
Keysounds