Redux: Notes displayed 2 octaves higher than in host (Live, Bitwig)

Okay first, let me say I’ve struggled with this problem for about 2 weeks now, having bought the plugin I am fairly frustrated that it’s basically unusable to me so quickly because of this bug and I’d be deeply surprised if I’m the only one who encounters it.

PROBLEM:

When sending midi to the plugin, from any host, the note played is always 2 octaves higher than the note input. For example, if I create a clip or play with qwerty keys or use a midi keyboard to send a C2 note to the plugin, it will play a C4.

DAWS TESTED:

  • ableton live 9.2

  • bitwig studio 1.1.8

PLUGIN VERSIONS:

1.01 audio unit (max osx, 64bit)

1.01 vsti(max osx, 64bit)

INPUT METHODS TESTED:

  • creating a clip with a C2 note will result in a C4 being played

  • creating a clip with a chord will also pitch all notes up 2 octaves

  • occurs even without a patch being played (you can see in the GUI which notes renoise is accepting)

ADDITIONAL INFO:

  • Phrases are switched to ‘off’ in the plugin to ensure it’s not a phrase problem. (you can see proof of this in the attached screenshot).

  • I run the track dry, in a dry daw with no interference from any other plugins. It is the sole plugin loaded and it still does it.

  • It happens no matter how I send redux the midi data (qwerty keyboard, midi clip, input keyboard)

  • I have also tried side-by-siding (grouping) with another plugin, or internal instrument of each DAW, which plays the correct pitch.

I usually use ableton, but I have attached a screenshot of bitwig reproducing the exact behaviour, because it’s easier to see what’s happening. As you can see, the clip playing is a C2, but in the plugin, the C4 note is depressed.

Is anyone else getting this problem? Needless to say I’m extremely frustrated and considering requesting a refund as, although I totally love redux in every way, and it’s so ALMOST perfect, obviously this isn’t something anyone would be able to live with, its broken.

If this is something I’m doing - which I can’t for the life of me work out what it is if so, perhaps we’ve found a UX flaw that really needs attention because I’ve been sitting here thinking I’m crazy and this could not be released like this…

Any help would be extremely, gratefully appreciated.

Note to whoever changed the title of the bug - they aren’t just DISPLAYED higher, they are PLAYED higher too. I wouldn’t care if it was just cosmetic. :stuck_out_tongue:

Not a “bug” per se, and you’re not the first to notice/mention it.

Renoise/Redux represents MIDI note 0 as C in the octave 0.
Live/Bitwig represents MIDI note 0 as C in the octave -2.
Some other hosts represent MIDI note 0 as C in the octave -1.

Yes, it’s a bit confusing, but it’s not a bug.

All notes are functionally identical — ie. MIDI note 0 is still the lowest possible note you can play in the host, and it will still trigger the same thing everywhere — it’s just that each program represents/displays that note 0 differently.

Please refer to the following thread for more info:
https://forum.renoise.com/t/octave-mismatch-between-ableton-and-redux/43507

First off, thanks for the reply and the explanation.

It’s possible you may be misunderstanding the issue I am experiencing, as it is definitely a bug, regardless of how renoise treats midi internally.

If I have a midi controller, or qwerty keyboard, or whatever, sending midi data to the renoise plugin, the pitch is higher than other plugins. Switching the midi assignment to another instrument, or plugin of any kind, ANY other plugin, will have it play at the expected pitch. The interesting thing is, if I open and focus the renoise plugin, the pitch is normal. It is totally arbitrary behaviour and is very confusing. Definitely counterintuitive.

This is a plugin designed to work with other DAWs, NOT renoise.

I also disagree anyway that the MIDI standard does not have some basic rules about pitch, but the standard was invented long before people knew how they were going to use it, but as you can see by how we have adopted other standards, say on the internet and how we have adopted javascript - there is the base standard and then there are best practices. Developers avoid those best practices at their peril - like internet explorer 6 for example.

Here is some documentation:

http://academic.pgcc.edu/~njudy/mt/MIDI/gm.html

“Furthermore, all patches must sound an A440 pitch when receiving a MIDI note number of 69.”

Regardless, the fact that sending the plugin a clear C3 midi message, and it plays C5 in every DAW, that is a bug. Forget the standard, the practical output is different. If any other soft instrument manufacturer released a plugin that played notes higher than the rest, do you think people would just say ‘oh I get it, it’s so clever!’

You are creating a plugin, not a DAW. Every instrument has a ‘common standard’ and redux breaks it. So far I’ve tried bitwig, ableton, reaper and logic pro x and they all are incorrect… I’m left wondering which DAWs actually play the notes correctly? If any?

Renoise is so so so close to exactly what I (and I’m sure so many people) need, but it’s almost like, you need to hammer in a nail and you’re given the perfect hammer, only you can’t use it because it only works with a nonexistent type of nail. Here are situations this would be problematic that occur frequently:

  • when layering redux together with other plugins

  • when quickly auditioning midi from another channel

  • when using a custom sequencer / midi generator in maxforlive, bitwig, or reaktor

  • importing midi chunks by dragging and dropping them onto your channel and trying to mess with different melodies

  • exporting midi chunks you’ve written in the track to other channels or files

  • when using drum midis exported from other programs or libraries

  • when users new to redux (like I was) create all their instruments inexplicably with their samples all pitched higher because it sounded right at the time and now they realise they made a dozen instruments incorrectly.

My options for short term fixes all feel so so ugly. I currently am using midi pitch shifter devices which are problematic and require extra work each time I load a preset I’ve stored.

I could enter incorrect pitches for all samples, which would then play at the right pitch, but then any samples I accept from everyone else would be wrong, and the inbuilt library would be wrong, and I’d end up with a library with half of my instruments pitched wrong and half okay, and then they wouldn’t work properly in renoise itself!!! So I couldn’t actually eventually migrate which is a shame because redux could be a great migration tool, like baby steps from our current daws to renoise - which is exactly how I planned to use it - but if I did this hack it would actually lock me in to never switching to renoise because all my custom instruments would play 2 octaves lower!

I make software for a living, and if UX as a field has taught me anything, it’s that technical choices should never lead over a responsible, intuitive dialogue with your users. If this functionality never going to be fixed, and this really is considered a feature and not a bug, that’s disappointing to say the least, and infuriatingly misguided at most :stuck_out_tongue: I truly truly hope you guys appreciate where I’m coming from - I ADORE everything the renoise team does, but as a VSTi, it should work with the popular DAWs which are the real standard here, not be arrogantly different for the sake of a technical convenience.

Thanks for reading :slight_smile:

This seems to be very important to you, so let’s roll this up from the start:

Redux is not a synth, but a sampler, so the note number 69=440Hz rule can not apply here. Samples have no defined tuning, but they have a root-note, which defines when a sample is played at it’s original pitch. This is where it’s getting fuzzy.

There is no definition in the MIDI standard which defines which key should play back a sample at its original pitch, but using the middle-C (note number 60) seems to be an obvious choice by many samplers. In Renoise and Redux we’re indeed using a different one, note number48 by default, that’s a “C-4” in the 0 based octave notation. A “C-2” in Ableton and Bitwig.

So when switching between different kind of samplers in a DAW, you may indeed need trigger Redux one octave lower to get the same pitch as in many other samplers. We’ve been aware of this difference to other samplers, but Renoise and Redux are based on the internal sampler and we can not freely change this for Redux. If we would change the default root note of C-4 to C-5 we surely will annoy a lot of existing users too. Hard to say what’s the better choice here.

For me personally all this obviously isn’t a big deal: When using complex sounds which are more than just a sinewave they are hard to categorize and tune octave wise anyway. Your going to play specific patches in the octave ranges that “sound” OK for you anyway. It’s quite unlikely that Redux is used as a GM player, so following a standard IMHO isn’t the most important thing here.

I do agree though, that the 0-based (in Renoise/Redux) and vs -2 based (in Ableton and Bitwig) octave displayon top of all this is very very confusing. As mentioned in the other thread, this is hard to change for us too, cause we then would need to change it !everywhere! in Renoise and Redux, including the pattern/phrase editor. We’re using a 0 based notation there, cause it’s easier to read in there. That’s the only reason, really, but a good one.

And finally: whatever default root notes we’re using for samples. They can be changed, are not nailed into stone, so I do agree that we should try to tune all existing synth alike !patches! in content packs to respect the note 69=440Hz rule.

Also as a workaround, you can always quickly transpose the whole instrument in Redux via the transpose setting on the top right of the UI.This won’t change root notes of samples. So it really only works for a general tuning of synth based patches, but may nevertheless be a good workaround for you now.

This really rings so true of my own work creating software for users, and trying to reconcile the needs of those users with the demands of the back end devs. Sometimes changing the ‘logical beauty’ of the codebase in order to make the system more logical for the user is most times the best thing you can do for the product.

I know I haven’t seen your code architecture, but I seriously think it sounds like an excuse at the expense of usability - your engine might not support it, but you can’t tell me there’s not wrapper code in the VST/audiounit interface that translates incoming midi data to renoise/redux engine instructions. That’s the part of your codebase where it needs to be changed. Why? Because that wrapper is about being a software instrument interface, and you’re creating a software instrument, and all software instruments expect this behaviour - I still can’t find a single mainstream software instrument (or host, but I could be wrong about that, but it doesn’t matter because redux should replicate the conventions of other software instruments not the desires of the host) that doesn’t use the C-2 = midi 0 convention.

Everything you tried to explain about samplers, I get what you’re saying - but you’ve almost gone so technical on your vision that it no longer makes any sense to the everyday use-case of redux - to be used as a sampler to play instruments with, instruments that have pitch and and controlled by midi data input by common DAWs. And at that core goal, the absolute most common use case, renoise fails in a confusing way.

It’s not used as a GM player but people do bring GM midis into their daws all the time - for example I wrote a few scripts which generate tiny midi chunks procedurally and I play with them to create new melodies, or I’ll bring in some midi drum tracks to play with. Or I’ll go to a midi download site and grab some track and then randomly vary the midi notes of a particular track to create something new. This is so common in regular workflows. Not in renoise, sure, but this is REDUX - your software instrument version. Regular DAWs are a different beast and have different users.

I explained above why those workarounds aren’t very useful - the transpose in the top-right saves that setting to the instrument, which is bad for sharing with renoise. And if you switch instruments with the browser, the new transposition depends on the instrument.

It’s so… infuriatingly frustrating, and I am positive I’m not the only one. I don’t want to be a hassle or ‘that one guy who complained heaps’ so I’ll stop pursuing it, it sounds like you might be set in your ways and that’s disappointing for the future usability and design philosophy of the product. I can only hope that even more people than currently have posted, do so requesting this be changed, because I’m surprised everyone doesn’t run into this issue and wonder what is going on. Maybe they do and just abandon it…? I’ve only posted all of this stuff because I love the plugin so much and I really care about it.

In case anyone else reads this, one ugly workaround I’m using currently is to put midi transpose plugins in ableton before each plugin and just pretend they aren’t there.

Anyway, thank you for creating redux, and thank you for listening.

This has nothing to do with the code-base, but with Renoise’s history. We have to make everyone happy - you only have to make yourself happy. That’s the dilemma :wink:

The short version. To let it behave like you want, we would need to:

  1. Change the notation in patterns and everywhere else in Renoise/Redux to use -2 based octaves. Also means we need 4characters instead of 3 now for for example C#-2. Not the end of the world, but simply not ideal for a tracker - could be an option though.

  2. Change default base note of samples from C-4 to C-5 (after 1. C-2 to C-3). Also not the end of the world, but it’s “different” then to what people are used to.

We can not expect that everyone out there who already uses Renoise will then be happy, and think that Renoise finally make sense. In contrary: Most people simplywillbe annoyed that we’ve changed something that did not bother them. And all this for a quite fuzzy definition of a standard which has lots of workarounds (transpose your instruments to fit them) - if it really bothers your.

So we simply have to choose what’s less worse here.

How about a friendly textfield somewhere that reminds people there’s no negative octave, similar to what we have in the instrument effects chains in renoise.

So no one would make instruments 2 octaves higher without noticing it (which I personally think is a little hard not to notice). Converting an instrument with this mistake isn’t a lengthy process really, could be automated with tools when 3.1 comes too.

I agree changing renoise’s behaviour to suit users of redux would be weird, and wouldn’t suggest that, that would make everything weirder.

How about a global modifier / preference in the redux settings to modify the MIDI base note to a custom tracker note (c-0, c-2, etc), and default it to renoise’s behaviour (c-0)… perhaps limit by octaves rather than notes (0, -1 -2) with a drop-down. There are already other global preferences such as instrument directory locations, etc. This could just be a setting alongside that, and while it would still confuse new users, at least it’s a workaround that allows people to use the plugin properly in modern DAWs.

This is mildly annoying, that there is no standard. A clip in Studio One in the 3rd octave shows up in the 5th octave in Redux.

How about a setting in Redux that transposes the signal to get them to align? That way users could adjust Redux according to what DAW they were using.

Yes, I know there is a master tuning feature, but I’m talking mainly about multi sample kits. For example I have a 12 sample kit starting at C3 in Redux, and I have a midi file running in Studio One also starting in C3, but as noted above the output is 2 octaves higher in Redux. Solution? Adjust the hypothetical “Transpose Signal” setting in Redux down 2 octaves to get them to align. This would be a quicker and easier than having to adjust everything back and forth depending on which DAW you were using.

Sorry if this has been proposed already, didn’t read through everything. :unsure:

Ableton live has a transpose midi effect. If you drop one in and transpose -24, then Ableton C0 will equal Redux C0.