Buy-One / REAPER-scripts

Lua scripts for Cockos' REAPER
6 stars 0 forks source link

You can add a feature to your script BuyOne_Navigate to track send destination or receive source track via menu.lua? #8

Closed Lo-lo78 closed 2 weeks ago

Lo-lo78 commented 6 months ago

Hi Buyone! Beautiful script. I've been looking for a feature like this for a long time. πŸ‘ Is it possible to also enter the name of the selected track in the menu? In the menu there is the selected track with the number but there is no name. For sends and receives it is perfect. All the right information is there. Thanks for what you do!

Lo-lo78 commented 6 months ago

Sorry! I forgot! πŸ™‚ In the menu the selected track is: Track # 6 You can edit 6 snare for the selected track? For example: 6 snare Sends: 10 loop 23 pad 2 26 reverb snare c l o s e c ;)

Buy-One commented 6 months ago

Hi

You wrote:

In the menu there is the selected track with the number but there is no name.

The display of send destination or receive source track name in the menu is already supported, unless you mean something else. If the track is not named only its number is displayed.

Lo-lo78 commented 6 months ago

Hi Buyone, yes the sends and receives are perfect. When the menu opens it also tells me the selected track but only with a number without the name: "Track # 1" I confirm.Then the sends and receives are clearly named. I don't know if in the menu, in addition to other information, the number of the selected song visually appears. With the screen reader the menu is as follows: Track # 1 Sends: 8 guitar c l o s e This is the receiving track: Track # 8 Receives: 1 voice c l o s e When I select guitar track 8 in the menu it says: "Track # 8" When I select vocal track 1: Track # 1 I'm talking about the menu that opens when you start the script. Technically it's a menu but it's like a list. Thank you!

Buy-One commented 6 months ago

Hi

I've just added current track name readout to the menu title so it reads for example Track # 1 - My track name

link to the updated version

Lo-lo78 commented 6 months ago

Yes! Works well... πŸ‘πŸ‘πŸ‘ THANK YOU!

Buy-One commented 6 months ago

Great!

Lo-lo78 commented 6 months ago

Hi Buyone, I'm trying to figure out why when I select a send or receive track the screen reader reads the main Reaper window. In the previous version this did not happen. Did you make any other changes besides the name of the track? We could understand where the problem lies. ;) I explain to you: I do a custom action with: "Script: BuyOne_Navigate to track send destination or receive source track via menu.lua" "OSARA: Report track/item/time/MIDI selection (depending on focus)" The OSARA script reads the selected track when I enter after selecting a send or receive. Sorry if I'm insistent! πŸ™‚ Thank you!

Lo-lo78 commented 6 months ago

In practice, if I execute the custom action with OSARA it no longer reads the selected track which has the receive or send. There is a conflict between OSARA messages with Reaper. The main Reaper window overlays the OSARA message that reads the selected trace it receives or sends. In version 1.0 of your script this didn't happen. Thank you!

Lo-lo78 commented 6 months ago

I understood the effect of the problem. in version 1.0 the message sequence for the screen reader was:

  1. [unsaved project] - REAPER v7.11 - Registered to Manuel Vazquez (Licensed for personal/small business use)
  2. trackview
  3. with the custom action with the osara action it reads the name of the track in send or receive in TCP.

with version 1.2 the messages for the screen reader are:

  1. with the custom action with the osara action it reads the name of the track in send or receive in TCP. Same as point 3"
  2. trackview
  3. [unsaved project] - REAPER v7.11 - Registered to Manuel Vazquez (Licensed for personal/small business use) Same as point 1"

To simplify, only the last message is read by the screen reader after I have chosen the send or receive track. The others are cancelled.

The custom action with version 1.0 is:

  1. Script: BuyOne_Navigate to track send destination or receive source track via menu.lua version 1.0
  2. OSARA: Report track/item/time/MIDI selection (depending on focus)

The difference from version 1.0 to 1.1 is only: 1.1 #Fixed REAPER version evaluation instead in version 1.2 1.2 #Added current track name readout

Maybe already since version 1.1 it no longer works with the Custom action? Thank you!

Buy-One commented 6 months ago

Hi

I've compared versions 1,0 and 1.1 line by line and didn't find any culprit. I guess the only way to test is for you to use v1.0 with the v1.2 change skipping v1.1 changes.

How do you want me to send this test version to you?

Lo-lo78 commented 6 months ago

Hi Buyone! You can easily send the script here in chat with a .zip file. It's 17 kb. Not a problem for Github! ;) Thank you!

Buy-One commented 6 months ago

OK, here's the file BuyOne_Navigate to track send destination or receive source track via menu (v1.0 + v1.2).zip

Lo-lo78 commented 6 months ago

It works perfectly! The only difference between 1.0 and 1.2 is: "1.1 #Fixed REAPER version evaluation" Strange! Does this change anything?

Should I open another issue or continue here to propose you another feature for this lua script? I have another little idea! πŸ™‚ πŸ‘

Buy-One commented 6 months ago

Not sure, i just made REAPER version evaluation expression more robust (error proof), nothing drastic to change the script behavior. Are you using REAPER 7.11 now? Did version v1.0 work properly in this build? What OS version are you running and what is its bit version?

You may continue to post here, doesn't matter.

Lo-lo78 commented 6 months ago

I'm currently using: Windows 10 22H2 (AMD64) build 19045.4046 REAPER versione 7.11.

The functionality I wanted to offer you is the following:

  1. When there is only one send and one receive in the menu, pressing the S or R button selects the track. When there are multiple sends or multiple receives, is it possible to press S or R to navigate the menu without closing the menu? By hypothesis. If I press the S key it goes to the sends item and if I press the R key it goes to the Receives item without closing the window.

  2. The "c l o s e" entry may not be necessary for your workflow. There is always the escape key that takes you out of the menu or the first item "Track # track number β€” track name" that closes the menu. Thank you!

Does it work now if I download the official 1.2 version? Just to see if I need to make a backup. ;)

Lo-lo78 commented 6 months ago

Is it important that I ask you to save the project the first time? If I change the setting: REMINDER_OFF = "" Modified: REMINDER_OFF = "1" Does anything change when running the script?

I modified this string to remove the word track from the first menu item. Now it just says the track number and track name: local idx = gfx.showmenu('#'..tr_idx..(#name > 0 and ' ' or '')..name..'||'..menu) It's much faster with a screen reader. Maybe visually it's uglier. I do not know! ;)

Lo-lo78 commented 6 months ago

Can the first item of the menu or the selected starting track be activated to close the window like the last "c l o s e" item of the menu? I suggest this to you because with screen readers there is always feedback that a menu item is not available. If you connect the first voice of the currently selected track the feedback for the screen reader is no longer there. Sorry if I ask you all this. Thank you! It's just to speed up the workflow.

Lo-lo78 commented 6 months ago

I deleted the "c l o s e" entry: local esc = (snd_menu_t or rcv_menu_t) and '' or '' I hope it's not bad for you. πŸ™‚ I read that you represented the menu graphically in a beautiful way for the user. I don't want to ruin the visual appearance of the script. This way, if I work with someone who can see, they can enjoy and understand the menu graphics.

Lo-lo78 commented 6 months ago

I tried adding this string to the end of the script:

reaper.Main_OnCommandEx(reaper.NamedCommandLookup( "_OSARA_REPORTSEL"), 0, 0) -- Osara report selection

I inserted it before the last line:

do return r.defer(function() do return end end) end

It works but there is the same problem of message overlap. It has the same effect as the custom action. It's practically the same thing.

Buy-One commented 6 months ago

Hi

Regarding your suggestion 1. of keeping the menu open after navigating to the send or receive track. It's possible to keep it open but keys S and R cannot be assigned to the menu. You may already know that the menu can be navigated with up/down arrow keys. At the same time depending on your needs when the menu is reloaded there can be two outcomes as far as the menu contents are concerned: A. the same menu as before the navigation, which means that the menu will not match the currently selected track send/receive list; B. the updated menu which lists sends and receives for the currently selected track as if it's just been opened. Also i'd like to understand the practical purpose of keeping the menu open. As far as i understand when you navigate to a track you then want to manage its properties or content, but once you start doing that the menu will close anyway because you click away from it.

REMINDER_OFF setting is experimental and should be left in its default state, i.e. enabled, it prevents display of a reminder that the script includes USER SETTINGS which may need to be configured.

Lo-lo78 commented 6 months ago

Hi Buyone! Maybe I can't make myself understood in English. Many proposals I made to you were wrong. I definitely don't want to keep the menu open. I thought about it and the script is perfect the way it is. There is only one small problem with the screen reader. I will try to ask the community to create an addon that removes the foreground application title for NVDA which is an open source screen reader. I'll ask the NVDA community. We would need a toggle that activates and deactivates the reading of the title of the Reaper window. The script you created is gorgeous. Unfortunately the S or R key cannot work also because there are not two items in the menu that have S or R in the word. Therefore it is not possible to move through the menu by alphanumeric letter. Arrows are used in the menus and letters are used when possible. Only when there is a duplicate. It will then cycle between the two entries. Sorry if I confused you a bit with the screen reader. πŸ‘

Buy-One commented 6 months ago

You wrote:

Can the first item of the menu or the selected starting track be activated to close the window like the last "c l o s e" item of the menu?

Yes, it's possible.

Since you've made some changes to your version of the script, if you want me to implement your request mentioned above, send me your file so i can modify it.

I also think i've figured out the reason why in versions later than 1.0 the screen reader worked differently. There was a change which i didn't document thinking it wouldn't affect anything. And if it were not for OSARA it indeed wouldn't affect anything. The change after version 1.0 prevented reaper gfx window to pop up along with the menu, and when this window is visible (as in version 1.0) it's focused.

Lo-lo78 commented 6 months ago

In the end I didn't make any changes to the script.. I'm using what you passed me: https://github.com/Buy-One/REAPER-scripts/files/14591072/BuyOne_Navigate.to.track.send.destination.or.receive.source.track.via.menu.v1.0.%2B.v1.2.zip At the moment I have done a custom action. If you think you've figured out the problem with OSARA super happy! Your scripts are super helpful in my workflow. Thanks for everything you do!

Buy-One commented 6 months ago

You said that you had removed the close button:

I deleted the "c l o s e" entry: local esc = (snd_menu_t or rcv_menu_t) and '' or ''

And had simplified the current track name display:

I modified this string to remove the word track from the first menu item. Now it just says the track number and track name: local idx = gfx.showmenu('#'..tr_idx..(#name > 0 and ' ' or '')..name..'||'..menu)

Lo-lo78 commented 6 months ago

πŸ₯³ Perfect! With 1.4 it also works well with custom action. The most important thing has been solved. Now with the custom action it reads the trace with the OSARA action: Command ID: _OSARA_REPORTSEL Description: OSARA: Report track/item/time/MIDI selection (depending on focus)

I thank you!

For curiosity. What was the problem? This way we could improve coordination between OSARA and ReaPack and SWS in the future. Shall I close the issue?

Buy-One commented 6 months ago

You wrote

For curiosity. What was the problem?

I described it yesterday: The change after version 1.0 prevented ReaScript gfx window to pop up along with the menu (which was needed on Windows up until build 6.82, but now the menu can work without this gfx window). When this window is visible (as in version 1.0) it is focused which makes the screen reader or OSARA detect it as the primary window i believe, but when it's absent (as after the update which broke the script for you) the primary window is REAPER program window.

In the latest script version this additional gfx window will still pop up as long as OSARA is installed, if not, it won't pop up because it's not needed for the menu to work.

If there're no other issues feel free to close the ticket.

Lo-lo78 commented 6 months ago

πŸ‘ OK thank you. I'm closing the issue. I read you on OSARA. Did you know that James Teh changed the lives of many people? Not only did he develop OSARA for Reaper but with Michael Curran they revolutionized the world of screen readers. Two blind people who are very good at development with a philosophical idea of ​​giving all the blind who do not have economic opportunities to access today's world with computers. If you are curious, read the philosophical manifesto here: https://www.nvaccess.org/ This is the repository: https://github.com/nvaccess/nvda Thanks for everything you do.

Lo-lo78 commented 4 months ago

Hi Buyone, is it possible to make the script work even without the mixer displayed? I only use TCP. Unfortunately when the mixer is not visible the script works badly. It doesn't see sends and receives well. Thanks for all!

Lo-lo78 commented 4 months ago

Sorry if I opened and closed the issue several times. Github has changed. I didn't realize that the issue had already been opened.

Buy-One commented 3 months ago

Hi

Can you specify what you mean by "works badly", and provide steps to replicate?

For me seems to work fine.

Lo-lo78 commented 3 months ago

Sorry Buyone. I don't know what it could depend on. Today it works fine for me too. The problem is a bit random. The other day if the mixer with TCP wasn't active it didn't work. I got the idea that there was a problem with the MCP. Now that I'm trying it, it's perfect but I think the TCP needs to be strengthened. This way the script always works. It happened to me that if the mcp mixer was disabled the script didn't work. As soon as I activate the mcp the script works 100% of the time. If MCP is disabled and there is only TCP it works at 90%. Not being a developer I don't understand where the problem is. Sorry if I'm a little vague.

Buy-One commented 3 months ago

Well, once that happens again, try to figure out steps to replicate and also send a copy of your project file and your reaper.ini file.

Lo-lo78 commented 3 months ago

I understand that when the script doesn't work well I have to log out of Windows and log in. If I do this the script starts working again. In this .rpp the script didn't work I exited Windows and re-entered I loaded Reaper and the script worked fine. That's why I don't understand where the problem is. Sometimes it happens and other times it doesn't happen. Maybe it depends on my Reaper configuration do I have something with Windows 10? When the script doesn't work I try to do another test with a portable version of Reaper. So I understand if it depends on the Reaper configuration. If it depends on my Reaper I'll let you know immediately. I'll give you an empty project where I'm testing: example.zip

Buy-One commented 3 months ago

Hi

For me on Windows 7 your project works fine with the script. What i discovered is that you're also using OSARA Peakwatcher and Archie's Project time counter. I enabled OSARA Peakwatcher but still couldn't replicate the glitch. I din't try testing with the Project time counter.

So you may try to disable both and see whether this has any affect on the script behavior.