Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prototype of providing feedback using sounds #1100

Draft
wants to merge 6 commits into
base: master
Choose a base branch
from
Draft

Prototype of providing feedback using sounds #1100

wants to merge 6 commits into from

Conversation

jcsteh
Copy link
Owner

@jcsteh jcsteh commented Jun 2, 2024

This is a prototype/proof of concept. In submitting this PR, I'm not suggesting that we'll necessarily implement sounds in these particular cases, nor am I even promising that we'll implement sounds at all ever. I reserve the right to throw this code away and burn it. That said, we've never tried because we haven't had the core code for it, so this at least gets us beyond that hurdle so we can at least consider it or experiment.

As a starting point, this does the following:

  1. Adds a utility to play a sound file using REAPER's preview facility. This is controlled by a new OSARA config setting, Provide feedback using sounds, disabled by default.
  2. Makes the installer copy sounds into REAPER/osara/sounds.
  3. Plays a sound when the cursor (currently only left/right arrows if report scrubbing is enabled, move by bar/beat, move to start/end, etc.) jumps over a marker or region start/end.
  4. Plays a sound when the cursor (same caveat) moves close to the edge of an item on the last touched track.
  5. Note that these last two are pretty dodgy. The logic isn't quite right, so you sometimes get the sound twice when pressing left/right arrow or you have to press left/right arrow once more than you'd expect to get the sound. I'd need to refine this a lot if we actually wanted it. I'm not even sure if this is the kind of thing we'd want if we do want sounds at all, but I implemented it just to prove how this kind of thing might work.

I guess the big question now is: if we did want sounds, when would we really want them?

@AppVeyorBot
Copy link

Build failed! Build osara pr1100-1468,0ed71e55 failed (commit 0ed71e55c3 by @jcsteh)

@AppVeyorBot
Copy link

Build failed! Build osara pr1100-1469,872f78b5 failed (commit 872f78b57f by @jcsteh)

@pitermach
Copy link

pitermach commented Jun 2, 2024 via email

@Lo-lo78
Copy link

Lo-lo78 commented Jun 2, 2024

It's not a super efficient idea but it might make sense if the sounds didn't use the asio drive.
In this way the listening audio monitors are free without sound interference.
If OSARA used Windows drivers and if on MAC you could use another audio channel it could be interesting.

@jcsteh
Copy link
Owner Author

jcsteh commented Jun 2, 2024

Playing sounds outside of REAPER would require different code for each platform, or alternatively some cross-platform audio library. I'd really prefer not to do that and I'll probably drop this idea if that's a requirement. I guess we'll see if that is a requirement among people who particularly want this.

For some reason I thought you were against adding any kind of audio queues to OSARA,

I'm not dead against it. I think it has to be done with a lot of careful consideration, though. It could end up being more annoying than useful and I think we should lean towards less rather than more, particularly in the early days, assuming we do it at all.

I was able to test it under Mac, the sounds are missing from the .dmg so the installer didn't copy them in

Curious. I explicitly wrote code to make sure they got included in the dmg. I don't know why that isn't working, so that'll be fun to debug.

  • An option for aural instead of spoken peek watcher alerts, even if it's something like what Studio Recorder has where you get a beep when the level goes over the limit,

I thought about this. I'm not sure how useful it is, though, since there are already plugins like JS: Tone gate that can do something like this and they'll probably be more accurate because they're integrated directly into the audio chain.

though I think this could be taken further with multiple sounds for every few DB of the level going over.

Pitched tones would probably be better for this, but adding code to generate and play tones will be quite a bit more work. I'm not entirely ruling it out though.

@jcsteh
Copy link
Owner Author

jcsteh commented Jun 2, 2024

Oh crap. I made a copy/paste typo in the dmg builder, so the sounds would have been copied into your osara locale folder. Sorry about that. You might want to remove those, heh.

@ranetto
Copy link

ranetto commented Jun 3, 2024

Hi James, I found it really great, it gives a sense of things that we otherwise couldn't have, it avoids having too much useless talk, I would make it independent from the other states, that is, when it's flexed it does what it has to do even if the ignitions aren't active. flags reporting the time etc. When we move we can have a perfect cognition of the edges just like sighted people do, perhaps by putting different sounds for the beginning and end of markers, regions, items: but if I did that I would really like it. I think the playback via reaper is excellent, it doesn't bother me if it is played back to asio or the driver used at that moment by reaper, in the meantime it is not something that is used live but in the studio. Thank you, I really hope you want to start this new era: in the meantime I thank you just for having been able to try it.

@ranetto
Copy link

ranetto commented Jun 3, 2024

Thanks just if I can make a suggestion I would suggest using left panning for the start of an item, right panning for the end of an item, left panning for the start of a region, right panning for the end of a region: and different sounds for items, markers and regions which would make everything even more immediate.

@Lo-lo78
Copy link

Lo-lo78 commented Jun 3, 2024

This way we couldn't use Reaper live if you don't have a device with a minimum of four channels.
In my opinion it should be in the OSARA configuration for a toggle.

@ScottChesworth
Copy link
Collaborator

From the topmost comment:

This is controlled by a new OSARA config setting, Provide feedback using sounds, disabled by default.

@Timtam
Copy link

Timtam commented Jun 7, 2024

Just my 2 cents: I'm a fan of the idea to have sounds as an additional layer of feedback for situations where we've got already alot of feedback going on, just to speed up the workflow. An example would be the deletion or insertion of items, where you'd get feedback about how many items / tracks have been added/deleted, info about the current ripple state, and some additional feedback too that is already in the works. Listening through this entire message, depending on your screen reader speech settings, can take well over a second, maybe multiple seconds. Sounds can be much quicker. What I wouldn't want to see is REAPER turn into a random sound generator of sorts, where you'll have to book lessons from soneone teaching you what every sound is meant to tell you. Or, to be exact, of all the ideas mentioned above I don't think a single one should be represented by sound instead of speech feedback. As Jamie already said, tonal feedback in addition to peak watcher is something tone gate can do, although it wouldn'be pitched depending on how much you crossed the threshold, and especially a render sound is something that I personally don't think is really necessary. Its a nice gimmick, but doesn't help inproving a workflow or speed up a process in any kind of way that I could see. Crossing boundaries of items/regions could benefit of additional speech feedback though, as we already have kind of similar things going on with markers anyway, but sounds... I don't know, especially as you're most likely already listening to something when this hapens, so the sounds will just mix with the track/SFX you are currently working on.
I'm a big fan of having the possibility to add sound feedback in places where it would really benefit and basically support the speech feedback we already have, which in my eyes is the currently ripple state, for example, but everything else should be speech first, and only speech if we can avoid it.

@ranetto
Copy link

ranetto commented Jun 7, 2024

Hi, I'm also not usually in favor of all those programs for the blind that use sounds and jingles that do nothing but confuse, I don't even use sounds on mobile phones or on NVDA or on jaws etc., in fact I remove them all, but in this case the simple sounds to indicate the edge of an item, or the crossing of several items or the markers or the regions, would seem really productive to me, absolutely not annoying as they would usually be used when the project is at a standstill, and therefore when they cannot be confused with music : I would never want a sound that announces a region or a marker in play, but only sounds that let me know when I touch the edge of a region or a marker with the arrows, thus avoiding having to always listen to the time or to go to the beginning of the item or to the end of the item and then move a little to edit and work. These sounds would only be there while the voice is speaking, perhaps, as I said above, in stereo to make it immediately clear with the right or left position whether we are at the beginning or end of an element, therefore they would not interfere with the metronome nor with the song : sounds like those that James used are absolutely distinguishable and actually give the ear a little rest from the synthesis that already speaks to us all day and even when working together with sighted people they would be less shocking for them too in many situations.

@ptorpey
Copy link

ptorpey commented Jun 7, 2024 via email

@pitermach
Copy link

pitermach commented Jun 7, 2024 via email

@ScottChesworth
Copy link
Collaborator

I don't think the Render complete sound would be a gimmick.

There's already a script that does it, think it was either written by Chessel or Meo. Holler if you can't find, I'll try to dig it up.

@ptorpey
Copy link

ptorpey commented Jun 7, 2024 via email

@ptorpey
Copy link

ptorpey commented Jun 7, 2024 via email

@jcsteh
Copy link
Owner Author

jcsteh commented Jun 7, 2024

I honestly don't see the advantage of using sounds for making a time selection. In that case, there's no other speech happening, so the sounds don't make things more efficient. In contrast, sounds for item boundaries or markers are more efficient because adding that to the additional speech that occurs would mean it takes a lot longer to hear all of the information.

@ptorpey
Copy link

ptorpey commented Jun 8, 2024 via email

@Lo-lo78
Copy link

Lo-lo78 commented Jun 8, 2024

@ScottChesworth

I don't think the Render complete sound would be a gimmick.

There's already a script that does it, think it was either written by Chessel or Meo. Holler if you can't find, I'll try to dig it up.

Yes, this is a useful way of using sounds intelligently.
At the end it will make a nice sound indicating that the file has been created.
I've tried the build but I'm not convinced it's an advantage.
Not because I don't agree but it's difficult to get an idea of ​​how to organize this functionality.
There are many variables and not all users are the same.
To make sounds make sense they should be managed by the user.
In the OSARA configuration there is a toggle for all sounds.
The user should freely decide how to handle individual sounds.
I don't think James will develop a window where you turn individual sounds on and off for individual events.
So it would make sense but I don't like activating them all as an idea.
I would like it to be customizable just like in the Reaper philosophy.
I understand the enthusiasm but imposing a fixed model for all users is not a great choice.
Either it organizes well or I also disable the sounds because I can't manage them.

@ScottChesworth
Copy link
Collaborator

The user should freely decide how to handle individual sounds.

I don't think anyone will be developing a frontend for that on a per-sound basis because right now, there are GUI issues to address with higher priority. However, OSARA won't crash if you modify or rename individual sounds that you don't want to hear.

@ScottChesworth
Copy link
Collaborator

with the JAWS scripts running I hear one sound when hitting the left bracket and a different (but related sound) when hitting the right bracket. There is no speech when using the JAWS scripts, just sounds.

That's telling us what happens. What we need to understand is why the approach Jim has taken is being described as advantagious.

@Lo-lo78
Copy link

Lo-lo78 commented Jun 8, 2024

OK! I got it.
It is clear that OSARA can be used anyway.
That doesn't seem like a good answer to me.
Do as you wish.
Sorry if I said my opinion.
Here it seems to me that the final choices are made elsewhere.
What's the point of creating an issue?

@ScottChesworth
Copy link
Collaborator

That doesn't seem like a good answer to me.

It's a way that you could have control over individual sounds. That's what you wanted, right?

@Lo-lo78
Copy link

Lo-lo78 commented Jun 8, 2024

In reality I don't want to impose anything it was just advice.
Not being a big fan of the sounds on OSARA I'll get it out of the way.

Sorry.
Of course in the Reaper world it is an anomaly not to be able to choose individual sounds but if for you
@scott Chesworth
it's a beautiful thing I'm happy.

@ScottChesworth
Copy link
Collaborator

ScottChesworth commented Jun 8, 2024

For the record, I don't think any of this is beautiful. I'm not even convinced that OSARA needs sounds yet. I can understand that telling you to tamper with sounds on your own isn't the answer you expected, OSARA likes to make things easy for users whenever we can. What I probably didn't explain well enough is that at the moment, development of any of OSARA's GUIs is slow, difficult work. We have other issues open, for example at the moment our GUIs don't scale, which could be very problematic for people with some usable vision. IMO, issues like that should be resolved before we add more options or more complexity to the GUI.

@ranetto
Copy link

ranetto commented Jun 8, 2024

Replying to Pitermach, I completely agree with you, you never play during rendering, when I render a project or a track with oversampling of some Acustica plugins or others at 64x I can't even read the window and I leave with a cigarette break or coffee, I mean sounds only for things related to editin and that's it

@ptorpey
Copy link

ptorpey commented Jun 8, 2024 via email

@ranetto
Copy link

ranetto commented Jun 8, 2024

I would just add that the sounds of Osara, as far as I have tried them, are much more precise and less latent than those of the Jaws scripts which I immediately disable as they work only once and twice, if you hold down an arrow for example they never work well and they are very latent and annoying, while those of OSara, despite James having explained to us that the code still needed to be perfected, I found them much more precise, less annoying and less latent. The jaws scripting language is slow by nature like everything in jaws itself!

@ScottChesworth
Copy link
Collaborator

Seems to be mostly a matter of preference.

Ah yeah, checking more closely I'm seeing you weren't the person who said advantage anyway. Preference, gotcha.

@ptorpey
Copy link

ptorpey commented Jun 8, 2024 via email

@jcsteh
Copy link
Owner Author

jcsteh commented Jun 8, 2024

With regard to enabling/disabling every single sound, I'd point out that even though REAPER is indeed very configurable, it doesn't allow you to configure the text, icon, shape or animation of every single thing that is displayed. That's effectively the equivalent here. Configurability is important for flexibility, yes, but excessive configurability often just reflects a failure to thoroughly consider the UX. If individual needs are so varied that every little thing needs to be configured, we've most likely failed to think broadly enough. Aside from anything else, this becomes incredibly overwhelming for new users, who now have to decide which out of the 3 billion settings they need to enable or disable before they can be remotely productive.

@jcsteh
Copy link
Owner Author

jcsteh commented Jun 8, 2024

To get this discussion refined to a useful point, I'll say here that if we are going to adopt any sounds at all, we need to start small and tightly scoped. At a minimum, any sounds we implement should make the experience significantly more efficient. For example, I'm ruling out sounds for setting selection for now because even though some people prefer this, it doesn't really improve efficiency. Either way, you get immediate feedback and you don't have to wait for other information to know what occurred. On the other hand, markers or item edges while moving along the timeline are something we don't currently report at all, and if we did, it would make the current reports very inefficient. Similarly, the ripple mode report when moving items is possibly a candidate because that report happens right at the end, which means you have to wait some time before you realise you have ripple enabled.

@Lo-lo78
Copy link

Lo-lo78 commented Jun 8, 2024

Having a sound at the end of rendering does not force the CPU.
Precisely because rednering is over.
I hope this opinion is not misunderstood.
For some time now it feels like we're walking on eggshells.
It's very easy to say the wrong things.

@jcsteh
Copy link
Owner Author

jcsteh commented Jun 8, 2024

@Lo-lo78, on the contrary, I think you're being overly reactive here. Your opinion is welcome and respected, but we also have the right to our own opinions. Ultimately, we have to weigh input from many different people and then make the best decision we can for the project, knowing that some people won't like it but also knowing that we have to support thousands of users with many different levels of experience. No one was suggesting that your ideas weren't welcome or that you were trying to force the issue. We just have different opinions and that's okay.

I don't think there's any problem with a rendering complete sound, though I also don't really know how the script implements this and it's not something I want to look into just yet.

@Lo-lo78
Copy link

Lo-lo78 commented Jun 9, 2024

You are right!
That's exactly what I'm doing.

@Lo-lo78
Copy link

Lo-lo78 commented Jun 9, 2024

@jcsteh
What I can tell you is that with lua scripts it seems impossible.
It's not easy to pause the script to play when it's finished rendering.
I'm also talking about rendering queues

@MatejGolian
Copy link
Contributor

In issue #1063 I had the idea for optionally restricting navigation to the bounds of the time selection if one is made, but thinking about this PR I think that having audio signalization could be just as effective - perhaps even better. In other words, it could perhaps be useful if we had 2 sounds - one when we enter; and one when we leave the time selection - both when scrubbing or navigating events in the MIDI editor.

@ranetto
Copy link

ranetto commented Jun 12, 2024

sorry, but maybe I missed something: what are the sounds for during Rendering? If we use NVDA we have the scroll bar beeps, if we use JAWS we have the rendering percentage when it can be said, so why so much attention on the rendering sounds? I think they would just be annoying. As regards the output of the sounds themselves, I believe that if you use live or something similar, you must still have a multi-channel card to listen to the screenreader and therefore you can assign the second audio port externally via the master, if you use in the studio I think that listening to these sounds in headphones is much better for those who work with us and should not be bothered by these sounds and therefore I don't understand the problem of using the same audio engine as reaper, in fact even in the studio if you have multiple pairs of speakers or different headphones, I suppose you also have a converter with different outputs and therefore in my opinion, the problem does not exist and this avoids having to implement further audio engines which if they were in SAPII or MME would certainly not be synchronized with the point at which we find ourselves in asio and therefore they would be imprecise and latent like those of the jaws scripts and would lead to further problems with non-multi Tlient drivers or with the exclusive or non-exclusive factor of the SAPII drivers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants