zynthian / zynthian-issue-tracking

Centralized Issue Tracking for Zynthian Project
https://github.com/orgs/zynthian/projects/1
11 stars 3 forks source link

Transpose option in MIDI Recorder #491

Open wyleu opened 3 years ago

wyleu commented 3 years ago

Is your feature request related to a problem? Please describe. There are occasions when one wants to transpose a MIDI playback.

Describe the solution you'd like A parameter in the MIDI recorder similar to BPM that allows transposition of a MIDI sequence both positive and negative.

Describe alternatives you've considered Much editing or manipulation of an individual transpose of a layer. Which is non intuitive in this situation. If sequence has multi parts then it is unlikely you would want to transpose an individual track at this point ( channel 10 is an obvious selection if percussion is recorded)

Additional context image

riban-bw commented 3 years ago

I initially envisaged a control that transposed +/- semitones on the fly but this adds complexity and does not allow definition of the channels / tracks to be affected. It may be simpler to have a process where you choose to transpose, select the channels / tracks to be affected, choose the transpose amount then apply and save as a new file., progressing through a kind of wizard. This would allow mistakes, e.g. wrong channel / track selection to be corrected without affecting the original file whilst providing a reproducible result (new file).

riban-bw commented 3 years ago

There may be a workflow that allows this functionality now. I haven't tried this but you could give it a go...

I see this could prove quite irksome so maybe a global Transpose option within Arranger may be advantageous... but that is a different feature request!

riban-bw commented 3 years ago

Another option (which actually has many benefits and may prove simpler to implement) could be to allow insertion of MIDI effects in the MIDI recorder playback chain, similar to https://github.com/zynthian/zynthian-ui/issues/388. Such a feature could also allow insertion of effects in the record path. Implementing this seems relatively simple and would allow transformation of SMF on-the-fly in various ways, including transposing.

riban-bw commented 3 years ago

Or maybe we just move the SMF handling into the sequencer completely so that we only have one place we handle MIDI record and playback?

wyleu commented 3 years ago

Use case might be relevant. Rehearsing Dear Prudence which was played straight into a piano, but pitched wrongly for voice. We wanted to try different keys both above and below the original pitch to see how they worked with the voice, violin and guitar ( lots of capo use). We recording the keys with MIDI recorder. It was actually phrased as a request " Could we transpose that..?"

If you havre built up MIDI recordings by MIDI over dub then you are unlikely to want to transpose one individual track but the whole piece. The transpose we would have wanted would be active during playback, killing all sound on transpose control alteration ( it's not a performance use) This is a simple tool and I think it really doesn't want too much embellishment, other than not tranposing channel 10. That might need to be an option in the webconf to allow those that use channel 10 for actual tracks.

IF we provide BPM modification then this seems to have it's place in the smash and grab world of the zynthian recorders.

I think keeping this as a seperate menu operation ( even if the functionality is delivered by the sequencer) is good ffom the swiss army approach as it's a quick limited tool that performs one simple task. Given you can drive it the transport from a footswitch then you don't confuse people who are simply keen to extract a demo recording or siuch like.

hope that makes sense.

jofemodo commented 3 years ago

This task already exists:

https://github.com/zynthian/zynthian-issue-tracking/issues/270

I close the older one and keep this.

Regards,

riban-bw commented 1 year ago

I have implemented the backend (library) functionality to transpose +/-0..127 notes during playback. We need to consider how this is implemented in the UI. I suggest first we add API control then expose in UI.