trying to figure out some more things

Started by musicalman, February 29, 2020, 09:36:58

Previous topic - Next topic

musicalman

Hi,
A few more questions from me on admittedly simple module things. For those who don't know, I am visually impaired so that makes it difficult for me to notice things sometimes hence why I am asking. Since trackers are pretty visual things, I don't have as much confidence with them, but I'm learning a lot. In fact, Open MPT is by far the most accessible tracker for a screen reader user!

My first question is about looping a part of a module. When I play existing modules, they either seem to loop completely from start to end, or they play only once. It probably depends on the player and how its loop settings are set. I haven't really delved into it. Before I look into it, I'd feel better knowing if modules, more specifically .it/.mptm, have some universal means of setting up loop points, or are they like midi in the sense that there's no standard way to do it?

Perhaps using one of the jump effects to set up a loop is involved. I haven't tried. I wanted to be sure I'm not spinning the wheel in the wrong direction before I did.

My second question is about instruments. When putting notes in a module, the instrument you've selected (with ctrl+up and ctrl+down by default) goes in the instrument column. AT first sight, it seemed like instrument editing could get really messy that way. So I would always set the instrument to no instrument before putting notes in. Then I would manually put stuff in the instrument column where the instruments were supposed to change. This way it would be easier for me to manage instrument choices.

I guess I'm asking which of the above strategies is generally recommended. Open MPT doesn't mind either way though I think I did spot a compatibility setting for it. XM Play seems to be okay with it too. But I know of other things, mostly .it to .xyz converters I've messed around with which seem to silence notes that don't have an instrument attached. I know using niche converters isn't exactly the best way to know the correct way to do something, but after I noticed what was happening, I felt I needed to seek an answer.

Hopefully that's all my questions and I can finally put something out. My confidence is slowly growing each time I use Open MPT so we'll see. Thanks in advance for your responses!

Saga Musix

Quote from: musicalman on February 29, 2020, 09:36:58
Before I look into it, I'd feel better knowing if modules, more specifically .it/.mptm, have some universal means of setting up loop points, or are they like midi in the sense that there's no standard way to do it?

There is no way to "force" a player to loop a module. Some players just loop any module, some don't loop at all, others let you choose whether modules should be looped. Some of the latter are also smart about it, i.e. they try to figure out if a loop is intended and if it doesn't seem so, they just stop playback at the end.

The most important tools in the IT/MPTM format are commands B and C: B jumps to a specific pattern, C to a specific row. Putting both on the same row jumps to a specific row in a specific pattern. This way, you can either loop back to the beginning of the song or to any later part (e.g. you could skip the intro).

Quote from: musicalman on February 29, 2020, 09:36:58My second question is about instruments. (...) I guess I'm asking which of the above strategies is generally recommended.
There is a semantic difference between having an instrument number next to your notes or omitting it: If there is an instrument number, all instrument properties are reset to their defaults. If it is missing, nothing is reset and the note plays like the previous note. So for example if you changed the volume on a previous note, omitting the instrument number also keeps the next note playing at the same volume, but if you put an instrument number, the instrument will use its default volume again. If a player simply doesn't play the note at all, it's broken.

As always, if you have any more suggestions on how to make OpenMPT more accessible to blind users, I'd like to hear them. Often there are obstacles that are simply not obvious to sighted persons, but many of them are easy to remove.
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

musicalman

Quote from: Saga Musix on February 29, 2020, 11:22:14There is no way to "force" a player to loop a module. Some players just loop any module, some don't loop at all, others let you choose whether modules should be looped. Some of the latter are also smart about it, i.e. they try to figure out if a loop is intended and if it doesn't seem so, they just stop playback at the end.
Makes sense. My best guess right now would be that players will try to detect a setup where the end of the last pattern is never reached because of the b and c commands you mentioned. If they find such a setup, they'll loop, otherwise they'll just play once. I'll mess around with this.

Quote from: Saga Musix on February 29, 2020, 11:22:14If there is an instrument number, all instrument properties are reset to their defaults. If it is missing, nothing is reset and the note plays like the previous note. So for example if you changed the volume on a previous note, omitting the instrument number also keeps the next note playing at the same volume, but if you put an instrument number, the instrument will use its default volume again.
Interesting, I'll have to experiment with that. From what you're saying, it sounds like there's no correct way to use the instrument column. You just have to know how it works and do what you will.

Quote from: Saga Musix on February 29, 2020, 11:22:14As always, if you have any more suggestions on how to make OpenMPT more accessible to blind users, I'd like to hear them. Often there are obstacles that are simply not obvious to sighted persons, but many of them are easy to remove.
Two things that come to mind, one is minor and the other I've been avoiding.

The minor one is the order list. NVDA can read it when you press insert tab, but it is recognized as a single piece of text. So if I want to figure out what the fourth order is, I have to wade through something like "2 1 0 1 2 2 2 3..." and just keep count and remember that the fourth number is 1. Assuming I want to change that, I don't know how to get my cursor there. So I end up changing whichever entry I'm on, then listening to the list again to see which entry has changed. If it's not the right entry, I change it back, and then navigate to the correct entry and adjust as desired. I could probably use goto or other navigation to find the right spot, I haven't tried yet. I don't find it unmanageable but it gets noisy. My initial idea for accessibility is to speak the list index and the pattern number on that index eg. "order 4, pattern 2."

The second thing is an accessible way to view/map samples in the instrument editor. We discussed it briefly a few years ago when you first added accessibility, but I couldn't really contribute to the discussion because I had fairly recently switched to NVDA so was still adjusting to that, plus I was even newer to open MPT. I do remember being satisfied with using sfz files, but have since realized that not only is it cumbersome to rely on sfz for complex instruments, but importing multiple sfz files which use the same sample will duplicate that sample in the module. I'd rather use the instrument editor to map samples if possible, since I can set up everything else with it. It seems like it would be kinda laborious to make it accessible, but I know nothing about coding, so for your sake, I hope it isn't!

Saga Musix

Quote from: musicalman on February 29, 2020, 13:29:25
Makes sense. My best guess right now would be that players will try to detect a setup where the end of the last pattern is never reached because of the b and c commands you mentioned. If they find such a setup, they'll loop, otherwise they'll just play once. I'll mess around with this.
I'm not aware of any player doing it like this. I do know that XMPlay for example checks the volume level right before the end of the module to check if it's likely to be intentionally looped. If there are jump commands present, this is of course also an indication that the module should be looped. But in the end, there is no way to absolutely ensure if or how often a module should be looped.

Quote from: musicalman on February 29, 2020, 13:29:25From what you're saying, it sounds like there's no correct way to use the instrument column. You just have to know how it works and do what you will.
Correct, since the behaviour slightly differs between the two options you simply need to know when you want to use either of them. Semantically I think it makes sense to add the instrument number most of the time. Maybe it would also be useful for you to know that there is a keyboard shortcut to change all instrument numbers in the current selection to the currently selected instrument.

Quote from: musicalman on February 29, 2020, 13:29:25
My initial idea for accessibility is to speak the list index and the pattern number on that index eg. "order 4, pattern 2."
Yeah, that does indeed sound more useful. Maybe it should read out the numbers of all currently selected orders, though? I'm not sure if that would be useful, but it would still allow you to read out the whole order list if you select all of it, in case that's what you want.

Quote from: musicalman on February 29, 2020, 13:29:25The second thing is an accessible way to view/map samples in the instrument editor.
There are a few things that I think could improve the instrument mapping process both for visually impaired and sighted users. For a while now I have been thinking about providing a dialog with a list of samples where you can select the start and end point in the note mapping for each sample using dropdown lists.

And speaking of SFZ, just this week I have implemented support for SFZ envelopes in OpenMPT, so starting from OpenMPT 1.29, you will be able to design instruments much more easily using SFZ files, too, because now you can also define the instruments in textual format.
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

Saga Musix

I have added a window title to the order list (similar to the pattern editor) which should now hopefully make navigating the order list easier for you. These changes are available in r12541 / OpenMPT 1.29.00.48, soon available for testing from https://builds.openmpt.org/builds/ (or by setting the update channel to "Development" in the update settings).

Currently it does the following: If only one order is selected, it will read out the order index and pattern number, and also the pattern name if there is one. If multiple orders are selected, the first and last order index are read out, plus all the pattern numbers (and possibly names). I hope this is useful to you!
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

musicalman

Wow, I didn't know you could select multiple orders. But I just tried the prerelease and it is exactly what I was hoping for! And selecting multiple orders is working well too.

Quote from: Saga Musix on February 29, 2020, 14:09:38For a while now I have been thinking about providing a dialog with a list of samples where you can select the start and end point in the note mapping for each sample using dropdown lists.
That sounds like a good idea. Only limitation I can see with that is it's possible to map samples non-consecutively. So sample 1 on one note, sample 2 on a second note, sample 1 on a third. Admittedly you wouldn't need to do that too often but iirc I accidentally did it when fiddling in the current dialog.

I'm now imagining a new instrument map dialog being similar to the order list. You move through keys with up and down arrow for semitone, maybe hold ctrl in combination with up/down to move by octave instead. You have the possibility to select multiple keys by holding shift as you navigate. The key boundaries of your selection will be announced like in the order list. Then you use num+ and num- to change the sample assigned to the selected keys. Of course keystrokes always subject to change and I'm not sure how this would translate visually. Let me know what you think.

Will also have to check out the new sfz envelopes. I want to get away from using sfz to do things in openmpt if possible, but it sounds like a really handy addition.

Saga Musix

Quote from: musicalman on March 01, 2020, 01:57:16
That sounds like a good idea. Only limitation I can see with that is it's possible to map samples non-consecutively. So sample 1 on one note, sample 2 on a second note, sample 1 on a third. Admittedly you wouldn't need to do that too often but iirc I accidentally did it when fiddling in the current dialog.
The main concept here would be regions, not samples. So I imagine you would have a list of regions, each region having an associated sample, start note and end note, and then you can simply add and remove more regions, which of course can use the same sample. In the far future, this could also mean that regions could overlap (playing more than one sample at a time), or that we could also add velocity layers.

Quote from: musicalman on March 01, 2020, 01:57:16I'm now imagining a new instrument map dialog being similar to the order list. You move through keys with up and down arrow for semitone, maybe hold ctrl in combination with up/down to move by octave instead. You have the possibility to select multiple keys by holding shift as you navigate. The key boundaries of your selection will be announced like in the order list. Then you use num+ and num- to change the sample assigned to the selected keys. Of course keystrokes always subject to change and I'm not sure how this would translate visually. Let me know what you think.
While adding a new dialog isn't in the scope for the near future, maybe we can still improve the current note to sample mapping in the instrument editor, by adding a window title similar to the order list. Do you think it would be reasonable to simply set it to something like source note, mapped note, sample? e.g. "C-5 to D-5, sample 2".
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

musicalman

Quote from: Saga Musix on March 01, 2020, 12:14:19The main concept here would be regions, not samples. So I imagine you would have a list of regions, each region having an associated sample, start note and end note, and then you can simply add and remove more regions, which of course can use the same sample. In the far future, this could also mean that regions could overlap (playing more than one sample at a time), or that we could also add velocity layers.
Ah that makes sense. That sounds like a good potential way to go. I wouldn't worry much about getting complicated though.

Quote from: Saga Musix on March 01, 2020, 12:14:19While adding a new dialog isn't in the scope for the near future, maybe we can still improve the current note to sample mapping in the instrument editor, by adding a window title similar to the order list. Do you think it would be reasonable to simply set it to something like source note, mapped note, sample? e.g. "C-5 to D-5, sample 2".
That seems reasonable too but I'm a bit perplexed. The way I tried to map samples at first was by using the sample map dialog, which I sort of figured out, but don't ask me to explain it now haha. I didn't even know you could do things with the map outside that dialog, but now I see that you can. I'm even more lost when trying to figure that out though. So I guess I'm asking what the differences are between the instrument editor and the sample map dialog.

In the end though, I'm pretty much indifferent to the approach. So long as mapping inside openmpt is screen reader accessible in some form, I'll be happy.

Saga Musix

I added an accessible window title to the note map in the instrument tab in r12552, soon available from https://builds.openmpt.org/builds/ - I hope this helps!
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

musicalman

Thanks for the new release! However I can't tell where the accessible note map is. Compared to 1.28 stable, the instruments tab reads no different on my end :(

Tried with both NVDA and Narrator.

Saga Musix

Sorry, there was one small but important change missing in r12552, r12555 has that change.
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

musicalman

Thanks, it works well! Was a bit confused at first, but I got it now.
I have a small question. From what I can tell this is good for spot mapping, such as for a drum kit, but not for something like a multisampled piano which would benefit from regions. Am I understanding right? If so, I'm not complaining; at least I have the same access as sighted users which is what I was looking for.

Saga Musix

Indeed, the sample map is probably more useful for doing small changes; the dedicated sample map dialog is easier for doing multisampled melodic instruments at least for sighted users as one can use the mouse there to "draw" sample regions. However, depending on how the instrument samples was created even the sample map dialog will not be a good solution and you have to resort to the sample map in the instrument tab instead. Quite frankly the current setup is not satisfying neither for sighted nor blind users, which is why I would want to see a proper mapping tool at some point in the future.
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

musicalman

Ah, right. Makes sense now that I've seen how the mapping process works.

Saga Musix

I noticed that the workaround introduced in r12555 introduced some visual flicker; I have now changed the way the accessible text is set in r12556 so hopefullys it should still work while also looking better again for sighted users.
I also figured out how to tell the screen reader that the text has changed so now you should get live updates in the envelope editor of the instrument tab and when navigating or editing pattern data. Is it too annoying that way or better than before?
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.