MUlti Shot Image Capture script

Started by garry23, January 11, 2021, 02:36:53 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.


This 'new' MUSIC script is aimed at those interested in taking brackets sets.

This first release covers noise reduction and super resolution bracketing.

Future releases will cover, FRSP bracketing, Zero Noise bracketing, People Elimination bracketing, Hand Held bracketing and Long Exposure simulation bracketing.

You can read about MUSIC developments on my blog at

The latest MUSIC script is always here


QuoteFocus jiggling is a non proven way to do super resolution and based on the 'assumption' that moving the lens focus between images may (sic) create small image to image movements at the sensor pixel level, eg a few microns. As I say, this remains unproven. However, if you can't carry out 'normal', handheld super resolution bracketing, eg because of shutter speed, then focus jiggling may introduction enough image to image jitter to allow you to carry your super resolution processing. If it doesn't, at least you will be able to reduce the noise in your image, ie by sq.root(n); where n is the number of images taken

I think this sounds very interesting, but I am not getting my head around this "jiggling", to me, it's a guy gently kicking his tripod. Not sure if I am understanding this right, but do you shake the camera a little? As in artificially creating a Pixel-Shift image?

Can you link me to some article explaining this practice?
once you go raw you never go back



QuoteCan you link me to some article explaining this practice?

No  :)

As I just thought it up. As I say, it may not work.

The jiggle is simply moving the lens from the point of focus to another point, and back again; ie the image is always taken at the same point of focus. I was hoping that engineering tolerances and mechanical imperfections in the lens MAY shift the image relative to the sensor each time.

The first approach, if you can, is to use handholding to achieve SR bracketing, which will guarantee image to image pixel shifts.

If jiggling doesn't work, you still have the noise reduction brackets ;-)



Cool, you do really nice stuff. Thanks for sharing it! I'm also impressed by the power of LUA implementation in ML. Amazing.
M50.110 [main cam] | G7X III [pocket cam] | 70D.112 [gathers dust] | M.202 [gathers dust] | waiting for M5II



Thanks for the feedback.

Hopefully you will try DOFIS and MUSIC out and they will help you with your captures.




I'm pleased to announce that MUSIC now has an FRSP feature.

This post explains how MUSIC uses FRSP:



In this post, I'm releasing a silent exposure bracketing feature in MUSIC:

As usual I welcome any feedback to make MUSIC 'better'.


A few words on camera compatibility and MUSIC:

Bottom line: MUSIC, and DOFIS, will run on any camera, but there are a couple of things to look out for.


In this post I've added two new features to MUSIC:

A new dynamic UI, based on 6 use cases, and (optimum) handheld exposure bracketing.



In addition to flagging that I've tweaked MUSIC to make the Quick Access (QA) more robust and fixing a couple of bugs, I'm going to highlight a few things that will need changing as you use MUSIC on different cameras.

But first, a big 'hats off' to the ML developers, especially a1ex.


Because trying to get a piece of code/script running on different cameras is a nightmare!

Although I'm only trying to get things running on a EOS 5D3 and an M. I'm sure I would go insane if I was trying to get one of my scripts running on every camera that can run ML.

Some of the reasons why it's difficult to ensure code/scripts are cross platform compatible are:
* Not all cameras have the same buttons/keys
* Some cameras have touch screens some don't
* Not all cameras respond identically to Lua commands, eg setting ISO seems to be different on my 5D3 compared to my M, ie on my 5D3 is I ask for ISO 800 in Lua, I get that, on my my M I get a sightly different ISO, eg 1000.

So, as I say, kudos to all the main developers.

Now a word on the EOS M and tweaking my MUSIC script for your camera.

On the 5D3 MUSIC script I recommend setting double half shutter as the ETTR trigger, then setting the QA button to SET, and the hand held use case (ISO invariance) ISO trigger to 1600.

Whereas on the EOS M MUSIC script I recommend setting SET as the ETTR trigger, then setting the QA button as one finger touch, and the hand held (ISO invariance) ISO trigger at 800 (although you will likely get 1000).

On other cameras you will need to explore the options yourself. I've added comments in the script (at the beginning) to help you adjust script settings for your camera.

Bottom line: I realise that I'm likely the only lucky person on the planet using MUSIC and DOFIS :-) :-)

However, as I have said elsewhere, I write my scripts for myself, but openly share my work/thoughts/pain!

Bottom-Bottom line: stay safe and away from the mutating pestilence and ever increasing stupidity in the World!


In today's post about MUSIC I'm pleased to discuss/demonstrate use case 7, ie silent FRSP bracketing; which is a tool I use in, say, cathedrals/churches or anywhere camera noise would be unacceptable.


I've just added a new use case to MUSIC, that I personally find useful.

The use case is taking a 'perfect' exposure bracket set from a shadow-set shutter.

I use the ML spotmeter in Ev mode to ensure the exposure in the shadow area of interest is OK.

I would normally then go to ML's advanced bracketing and set up for a 0 + ++ shot using Auto capture, which will take as many brackets as required, at the delta Ev I requested, until the 'ETTR' shutter has been reached/exceeded.

The 'downside' of using this approach is that I need to trawl through the ML screen to set things up and I can't get auto bookends, ie I would need to take an image of my hand, say, before I set ML's AB and then switch off AB to take another image of my hand.

Hence MUSIC Use Case 9.

The UC9 menu looks like this:

VRAM11" border="0

You can: set the required delta EV (1-4); request bookends or not, ie a dark frame either end of your bracket sequence; request a delay; you can switch on MUSIC's quick access mode, which will allow you to repeating run UC9 my simply doing a long press of the trigger button, eg SET on my 5D3 and 1-finger-press on my EOSM.

UC9 was a bit of a scripting challenge for me, so I'll say a few words here (but not on my blog) about how I 'hacked' things.

The two issues are how to make taking a bookend work with ML's script triggered Advanced Bracketing, and pausing the script  until AB has finished, then switch it off in the ML menu, ready for a bookend capture.

My (hacked) solution is that, if taking a front-end bookend, I wait until the card has registered it has captured the bookend. I then initiate AB and set an infinite loop to watch to see when AB has finished, using the fact that AB completes in play/review mode.

I'm sure the code gurus are pulling their hair out reading about my clumsy scripting: but it works  :)

BTW here is the relevant code snippet:

if use_case == 9 then -- exposure bracket from shadows-set shutter to an AB 'ETTR' shutter
local check = 0

if MUSIC_menu.submenu["Bookends?"].value == "yes" then
check = dryos.shooting_card.file_number
Bookends() -- insert bookend
repeat msleep(50) until dryos.shooting_card.file_number ~= check -- bookend captured, safe to start AB capture with correct shutter value
check = 0

msleep(MUSIC_menu.submenu["Delay"].value * 1000) -- user delay if requested

menu.set("Shoot","Advanced Bracket",1) -- set up ML AB for a shadows to 'ETTR' AB capture
menu.set("Advanced Bracket","Bracket type","Exposure (Tv,Ae)")
menu.set("Advanced Bracket","Frames","Autodetect")
menu.set("Advanced Bracket","EV increment",tostring(MUSIC_menu.submenu["Ev delta"].value).." EV")
menu.set("Advanced Bracket","Sequence","0 - --")

my_shoot() -- trigger advanced/auto bracketing

while true do -- wait until auto bracketing is finished: a bit hackish but works and slows you down :-)
if then
check = dryos.shooting_card.file_number
sleep(2) -- there is a very small probability this time may not work, but a low prob I think
if then -- still in play mode, so check if AB is finished
if dryos.shooting_card.file_number == check then break end
check = 0

menu.set("Shoot","Advanced Bracket",0) -- finished with AB -- HS press to return to ML LV mode, ie from AB review screen, as AB finishes in review mode :-(

repeat lv.resume() until lv.running -- just in case

Bookends() -- check if bookend needed = t_base
tidy_up() -- and exit use case 9 capture

Cheers, and stay safe and away from stupidity




In this post I discuss Use Case 6: MUSIC's (optimum) hand held, exposure bracketing feature:

In addition, I discuss the new shutter-triggered option in UC6; that allows you to access UC6 from a normal shutter, ie using the VF.

UC6 gives you three exposures when hand holding:
1. An ETTR (base) exposure for the highlights, at the lowest ISO you can use
2. A second exposure taken at the slowest shutter you can use and the lowest ISO, ie to maximise the photon capture
3. A third image at the slowest shutter, but at the ISOless setting you have set in the MUSIC script, eg ISO 1600 on my 5D3.


A minor tweak to MUSIC to allow users to change a couple of camera/user specific settings: