Switching the menus to be less engineering and more art.

Started by rapbs, November 25, 2024, 06:55:26 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

rapbs

Hi. A simple question, and perhaps not so simple an answer. I'd like to modify ML to organise the internal menus in a way that's even simpler to work with. I noticed that when I passed my camera on to my trainees, the amount of menus and options made the process complicated. I'd like to make my own 'crop mood' version with a way of organising it with only the essential elements and always focused on video rather than photography. Something similar to what we see in the menus of 'Arri Alexa' cameras. Nothing against the way it is today, but for non-technical people in training it would help to have less for them to take more.

Well, I have some knowledge of programming, is there a specific file I should look at first?

Thank you!

names_are_hard

This is a good idea, but a lot of work.

As ML has grown, people put stuff into existing menus, and it's become not very well organised.  There are many possible ways to improve this, the best idea I've come up with is a high-level menu that allows selecting "modes".  So if someone is mostly interested in video, they select video mode, and the menus change to be more relevant.  Same for astrophotography, etc.  You would want some easily visible way to exit the mode, so people don't get confused and stuck.

Of course, if you can think of some other idea, I'd be happy to listen.  It's important that any changes are compatible with all supported cams.  This doesn't mean all cams need the new menus to work, but it does mean it should be *possible* to make all cams work.  The code should always *run* happily on all cams, even if it doesn't do anything on e.g. untested cams.  And e.g. since some cams don't have a touchscreen you shouldn't require one, although using one on those cams where it exists is fine.

And remember, just hacking the menus to only show the things you're interested in is not enough - this makes ML unusable for people that *don't* care about video.  It needs to be compatible with a range of users (being able to select a mode for the menus that you prefer is one way of doing this).

I would very much like to avoid even more fragmentation of the code.  Trying to support builds from Danne, Bilal, and official is already more work than ideal.  If you want to work on this, please, try to work on the (soon to be) official repo:
https://github.com/reticulatedpines/magiclantern_simplified

See src/menu* for various code around menus.  menu.c is 7k lines, so, it's not simple.

rapbs

Hello and thank you for your reply.

As a user and trainee in the field of video production, it would seem more likely that some technical factors could be simplified.

Magic Lantern is amazing, don't get me wrong, and I love being able to configure every aspect of my camera. However, when we're in a training context, simplification would help. And in a production context, it wouldn't be bad at all, because in times of stress you need to avoid basic mistakes.

I'll look at the file and first understand how everything works before starting another fork and fragmenting the code. ;)

Thanks

names_are_hard

I'm sure the menus can be simplified :)  Can that be done without removing something that somebody uses?

This is one reason I think selectable modes are a good compromise.  You can keep the defaults the same as today (no change, easiest), and let people select a mode that removes almost all options if you want.  But you're not forcing anyone to be limited; they can leave the limited mode.

rapbs

Hi, well, I've been studying the src/menu and, damn, it's really big.

I think your approach is correct! Using "modes" make more sense.

Well, for video, what seems most sensible to me would be much of the philosophy of cinepi and digital bolex: Direct menus for setting: Resolution, Aspect Ratio, Shutter speed, frame rate, white balance, bit rate, zebra, false colour and histogram.

How i can help?

names_are_hard

The menu code is something like a small windowing library.  So you can do things like menu_add(), menu_redraw().

I'm not sure what kind of advice you're asking for when you say "how can I help?".  In high-level terms, if you want to have this new system, you will want to:
- clone my repo
- get the menu system working how you want in a branch
- show me the branch so I can test, review, give feedback etc