christofmuc / KnobKraft-orm

The KnobKraft Orm - The free modern cross-platform MIDI Sysex Librarian
GNU Affero General Public License v3.0
200 stars 25 forks source link

Feature suggestion: patch selector mode #149

Closed TubularCorpration closed 1 year ago

TubularCorpration commented 2 years ago

I've got a specific use-case that KnobKraft is almost perfect for already - a live patch/bank selector for multiple synths.

The UI is almost exactly what I already had envisioned, the only thing that's missing is a mode where instead of sending SYSEX patch data to the edit buffer on a synth, chosing a patch in the browser sends a simple bank/program change. That's it. It's a pretty simple feature but it would be a huge quality of life improvement for any setup where multiple synths are hooked to a master controller or sequencer (in my case, I would use it to record patch changes live into the MPC2000xl that I do all my sequencing on).

I hope this can be added to a future version! It would be absolutely game changing for me right now.

christofmuc commented 2 years ago

@TubularCorpration I have this feature on my list, only after the bank management - my idea was, currently you don't know if the patch you imported from the synth is still from where you imported it, so I create a special type of list, one per bank. Then there could be a sync button and you'd import from synth or send to synth. If that bank is up to date, it would be easy to just program change to a patch in stead of sending it if the location is known.

But we could also do the simple thing, as the patch location is known when imported from the synth, and the import type indicates it was imported from the synth and not from a file - just hope that the patch is still there and just cc/bank change to it.

I think you're right and we could shortcut to that feature, which is really simple to do, if we accept that the patch might by now be different.

Do you have any idea on how the UI should look like? Probably we need a switch somehow if it should send the patch or just do a program change?

TubularCorpration commented 2 years ago

Excellent!

All I was really thinking for the UI was using the existing patch select grid shown in the video preview image in the mai description - https://github.com/christofmuc/KnobKraft-orm/raw/master/youtube-screenshot.PNG - and adding a mode toggle somewhere. If you're planning to make a separate UI for it, I think something really minimal along the lines of the Touchportal UI would work well, maybe a web browser style set of tabs across the top where you could add different synths in your system and easily flip between them, and some kind of simple next/previous buttons (maybe in the lower corners) for navigating though pages in the current tab, if that makes sense.

I think your idea for how to handle sync makes sense, it's pretty similar to how the old Soundtower editor for Wavestation handles its bank and patch management. Maybe also have an option to only sync a single patch instead of the entire bank, so that if youknew a patch had been changed you could jsut sync that one instead of having to wait for an entire bank to sync.

The important thing is for there to be a mode that doesn't send or recieve any sysex data at all, just an asolutely minimal "push a button to send a program change" mode. I'd be using it for changing patches and recording the changes live on the fly, so any extra data it was sending would be wasting bandwidth and cluttering the event list in the sequencer, and any data requests FROM a synth would potentially be a major problem since a lot of them aren't able to send patch data and play at the same time. So a mode that uses patch names from a list that gets populated in the librarian mode, but doesn't send or request any bank or patch data itself. Sort of a software version of the Roland RC-3 Program Changer but with a button grid interface like Touchportal or a streamdeck or something.

TubularCorpration commented 2 years ago

It would also be really useful if it was possible to manually enter patch names so that it would be able to work even with synths that weren't supported by the librarian yet.

And/or import them from a simple CSV file, maybe

bank,program,name bank,program,name ... With each line being a button in the interface. That way it would be easy to manually make a list for an unsupported synth in any spreadsheet.

christofmuc commented 2 years ago

@TubularCorpration Renaming is already possible, albeit a bit hidden - just click on the name button of the patch to the right hand side, and it will open up a rename dialog. Always wanted to turn that it a proper edit field, now that I think about it. The main challenge came from the Rev2, which has two names, one for each layer, which is why I made that dialog at some point. Looks stupid now.

TubularCorpration commented 2 years ago

I haven't had the chance to use the software with my setup yet (I do almost all of my patch editing on the actual hardware so I don't really back them up that often; next time I do I'll definitely be trying it out for all of the stuff I have that it supports), so I hadn't noticed that. In a patch selection UI you'd just need to add the ability to manually se tthe bank and patch numbers for each button too and it wouldbe able to work with any arbitrary piece of hardware even if it didn't actually support it as a SYSEX librarian. Being able to import a CSV would speed up manually adding names and locations for an entire synth a LOT but isn't really necesary.

christofmuc commented 1 year ago

@TubularCorpration Hey, I released the KnobKraft Orm 2.0.0 beta today, and that has an automatic patch selector mode - if you have imported the synth's banks, it will automatically know if the patch can be addressed by bank/program change, or needs to be transmitted via sysex. When it has it, it will do bank switch/program switch now. Excited to see if that works for you!

TubularCorpration commented 1 year ago

Thanks, I'll check it out! I haven't been doing much that needed it since my last move, but in a few weeks I'm starting a new project that it could be very helpful for, so I'll definitely see how it works when that gets going!

On Sun, Jan 8, 2023 at 9:52 AM Christof @.***> wrote:

Closed #149 https://github.com/christofmuc/KnobKraft-orm/issues/149 as completed.

— Reply to this email directly, view it on GitHub https://github.com/christofmuc/KnobKraft-orm/issues/149#event-8176640093, or unsubscribe https://github.com/notifications/unsubscribe-auth/AQJQHIIK2WLR34JXD4IMQUDWRLIERANCNFSM5RFY7YVA . You are receiving this because you were mentioned.Message ID: @.***>

TubularCorpration commented 1 year ago

I built a Kijimi a few years ago, too, so I can help test the Kijimi support when I have time, too.

On Sun, Jan 8, 2023 at 11:25 AM Morgan Ross @.***> wrote:

Thanks, I'll check it out! I haven't been doing much that needed it since my last move, but in a few weeks I'm starting a new project that it could be very helpful for, so I'll definitely see how it works when that gets going!

On Sun, Jan 8, 2023 at 9:52 AM Christof @.***> wrote:

Closed #149 https://github.com/christofmuc/KnobKraft-orm/issues/149 as completed.

— Reply to this email directly, view it on GitHub https://github.com/christofmuc/KnobKraft-orm/issues/149#event-8176640093, or unsubscribe https://github.com/notifications/unsubscribe-auth/AQJQHIIK2WLR34JXD4IMQUDWRLIERANCNFSM5RFY7YVA . You are receiving this because you were mentioned.Message ID: @.***>

christofmuc commented 1 year ago

@TubularCorpration Great! The Kijimi needs some work from my side, we need a bit more control on timing and retries because it is a bit tricky in its MIDI communication, but it should be possibe! Saying that, I know I need a bit more work on the MIDI comms before I get back to the Kijimi.

TubularCorpration commented 1 year ago

I hope it works out well, I've had issues with the dedicated editor that's already out there, mostly things with its patch management that don't work reliably for me, so I'd love to switch to this.

If I remember right, the feature I was requesting was a simple keypad mode that would let you manually set any arbitrary program/patch change to a cell in the grid, give it a name and channel, and then use it to send the patch/program change live. Completely separate from the library functionality and hardware agnostic. So I don't think the feature you described earlier is actually what I was looking for, but since then I've moved, changed my workflow a lot, and don't need that kind of tool very much anymore so I'll actually be using this pretty much the way you intended it.

What I was after before was essentially a software implementation of this, with a preset system: http://musictechnologiesgroup.com/midipatch.htm

On Sun, Jan 8, 2023 at 11:30 AM Christof @.***> wrote:

@TubularCorpration https://github.com/TubularCorpration Great! The Kijimi needs some work from my side, we need a bit more control on timing and retries because it is a bit tricky in its MIDI communication, but it should be possibe! Saying that, I know I need a bit more work on the MIDI comms before I get back to the Kijimi.

— Reply to this email directly, view it on GitHub https://github.com/christofmuc/KnobKraft-orm/issues/149#issuecomment-1374875462, or unsubscribe https://github.com/notifications/unsubscribe-auth/AQJQHIKUX7SMG6XDJUDF3ALWRLTTVANCNFSM5RFY7YVA . You are receiving this because you were mentioned.Message ID: @.***>

TubularCorpration commented 1 year ago

But I haven't had a chance to actually sit down with it, so maybe I'm misunderstanding and the new patch selector mode is exactly what I was originally talking about, either way I'm definitely going to be using this as my patch librarian for a few things this year.

On Mon, Jan 9, 2023 at 8:44 AM Morgan Ross @.***> wrote:

I hope it works out well, I've had issues with the dedicated editor that's already out there, mostly things with its patch management that don't work reliably for me, so I'd love to switch to this.

If I remember right, the feature I was requesting was a simple keypad mode that would let you manually set any arbitrary program/patch change to a cell in the grid, give it a name and channel, and then use it to send the patch/program change live. Completely separate from the library functionality and hardware agnostic. So I don't think the feature you described earlier is actually what I was looking for, but since then I've moved, changed my workflow a lot, and don't need that kind of tool very much anymore so I'll actually be using this pretty much the way you intended it.

What I was after before was essentially a software implementation of this, with a preset system: http://musictechnologiesgroup.com/midipatch.htm

On Sun, Jan 8, 2023 at 11:30 AM Christof @.***> wrote:

@TubularCorpration https://github.com/TubularCorpration Great! The Kijimi needs some work from my side, we need a bit more control on timing and retries because it is a bit tricky in its MIDI communication, but it should be possibe! Saying that, I know I need a bit more work on the MIDI comms before I get back to the Kijimi.

— Reply to this email directly, view it on GitHub https://github.com/christofmuc/KnobKraft-orm/issues/149#issuecomment-1374875462, or unsubscribe https://github.com/notifications/unsubscribe-auth/AQJQHIKUX7SMG6XDJUDF3ALWRLTTVANCNFSM5RFY7YVA . You are receiving this because you were mentioned.Message ID: @.***>

christofmuc commented 1 year ago

@TubularCorpration Get what you're saying :-)

So apart from the HW-agnostic part, my software let's you create a "user list", drag patches into it, and set the size of the grid and the buttons. Clicking the buttons will either send the patch data or just a bank select/program change, when the location is known. The location can be learned by just importing the banks from the synth.

Obviously that is technically more involved than just patch switching, and gives you the backup + library function for synths that are supported. I was thinking of doing a HW agnostic part as well, that should actually be quite simple given the limited functionality. I'll create a new ticket for that!

TubularCorpration commented 1 year ago

That would definitely work for what I'm thinking. The original idea was that because I've been doing a lot of sequencing on an old MPC lately, and being able to recall all of my patches for a sequence means manually entering all of the program changes, it would be really useful to have something that would let me send any arbitrary patch and/or bank change message to the second input live, so I could record them in real time while I was playing or in step mode and not have to stop the sequencer to do it. It would also be a great way to change patches live.

There have been a couple hardware keypads like the one I linked over the years but they're all rare and expensive, and don't do that much. The UI of your program is pretty much exactly how I imagined the perfect tool for what I wanted to do, except it's a patch librarian (which is also really useful) and what I was after was a controller for selecting patches.

It's the kind of thing that could be done in a much less ergonomic way with Puredata but I like Orm's UI and librarian features so much that it would be perfect if it also had a mode for sending patch and bank changes only, no sysex or anything. every cell in the patch selection grid would have a name, bank number, patch number and channel that could be manually edited or populated automatically for hardware that it supports as a librarian. Even something as bare bones as loading a tab delimited text file or CSV prepared in a spreadsheet would work, really, and could be at least a short term way to implement with as little work as possible. Something like

[name]; [bank]; [patch]; [channel]

in each cell, export it from the spreadsheet as tab delimited text, import into Orm. That way all that would have to be added to Orm itself is the actual patch selection mode and import capability.

On Mon, Jan 9, 2023 at 5:59 PM Christof @.***> wrote:

@TubularCorpration https://github.com/TubularCorpration Get what you're saying :-)

So apart from the HW-agnostic part, my software let's you create a "user list", drag patches into it, and set the size of the grid and the buttons. Clicking the buttons will either send the patch data or just a bank select/program change, when the location is known. The location can be learned by just importing the banks from the synth.

Obviously that is technically more involved than just patch switching, and gives you the backup + library function for synths that are supported. I was thinking of doing a HW agnostic part as well, that should actually be quite simple given the limited functionality. I'll create a new ticket for that!

— Reply to this email directly, view it on GitHub https://github.com/christofmuc/KnobKraft-orm/issues/149#issuecomment-1376452163, or unsubscribe https://github.com/notifications/unsubscribe-auth/AQJQHIMAQCRMZ2HFCPTXFQ3WRSJ3LANCNFSM5RFY7YVA . You are receiving this because you were mentioned.Message ID: @.***>

TubularCorpration commented 1 year ago

Hopefully that made some sense, it's the kind of thing I could explain a lot easier if I was in the same room as someone and could jsut show what I wanted to do, typing it up makes it seem more complicated than it really is.

On Tue, Jan 10, 2023 at 4:30 PM Morgan Ross @.***> wrote:

That would definitely work for what I'm thinking. The original idea was that because I've been doing a lot of sequencing on an old MPC lately, and being able to recall all of my patches for a sequence means manually entering all of the program changes, it would be really useful to have something that would let me send any arbitrary patch and/or bank change message to the second input live, so I could record them in real time while I was playing or in step mode and not have to stop the sequencer to do it. It would also be a great way to change patches live.

There have been a couple hardware keypads like the one I linked over the years but they're all rare and expensive, and don't do that much. The UI of your program is pretty much exactly how I imagined the perfect tool for what I wanted to do, except it's a patch librarian (which is also really useful) and what I was after was a controller for selecting patches.

It's the kind of thing that could be done in a much less ergonomic way with Puredata but I like Orm's UI and librarian features so much that it would be perfect if it also had a mode for sending patch and bank changes only, no sysex or anything. every cell in the patch selection grid would have a name, bank number, patch number and channel that could be manually edited or populated automatically for hardware that it supports as a librarian. Even something as bare bones as loading a tab delimited text file or CSV prepared in a spreadsheet would work, really, and could be at least a short term way to implement with as little work as possible. Something like

[name]; [bank]; [patch]; [channel]

in each cell, export it from the spreadsheet as tab delimited text, import into Orm. That way all that would have to be added to Orm itself is the actual patch selection mode and import capability.

On Mon, Jan 9, 2023 at 5:59 PM Christof @.***> wrote:

@TubularCorpration https://github.com/TubularCorpration Get what you're saying :-)

So apart from the HW-agnostic part, my software let's you create a "user list", drag patches into it, and set the size of the grid and the buttons. Clicking the buttons will either send the patch data or just a bank select/program change, when the location is known. The location can be learned by just importing the banks from the synth.

Obviously that is technically more involved than just patch switching, and gives you the backup + library function for synths that are supported. I was thinking of doing a HW agnostic part as well, that should actually be quite simple given the limited functionality. I'll create a new ticket for that!

— Reply to this email directly, view it on GitHub https://github.com/christofmuc/KnobKraft-orm/issues/149#issuecomment-1376452163, or unsubscribe https://github.com/notifications/unsubscribe-auth/AQJQHIMAQCRMZ2HFCPTXFQ3WRSJ3LANCNFSM5RFY7YVA . You are receiving this because you were mentioned.Message ID: @.***>

christofmuc commented 1 year ago

@TubularCorpration I think I get it. I created a new ticket (#205) for it. It sounds simple enough, but I need to think about it. For once, if you have more than one MIDI device, you additionally need to specify either which device you're sending to - with some synths attached via USB, the pach selector should know where to send the program change (in the case of just one MIDI network, of course MIDI channel suffices). But that is doable (the current advantage with the Librarian and its autodetection is that it just knows which device on which channel to send to. I will even patch the sysex file before send when the synth is on a different sysex ID than the patch was taken off).