Written for/on: A610/A620 (CHDK build 136)
Also works on: A630/A640(cams with 35-140mm lens)(9 zoom steps)(0 thru 8)


-- enables user to choose / omit specific focal lengths to be included in the series. (Stored as param values, the selections are retained thru power off/on cycles, unless/until a different script is loaded.)

-- user can elect to use a startup delay (a missing convenience, errrm necessity, the absence of which motivated me to draft this script). Also, seconds and minutes can be entered separately (instead of having to scroll to 300s to set 5min delay, which would be the case if a single input param for seconds was available)

Usage notes:

The scenario I initially had in mind for this script was "scenic / self-portraits while hiking". It's useful in various other scenarios, like on-location group photos (family trip to the zoo, etc)

Before the start delay countdown, the script autozooms and prompts user to frame the subject area while viewing at full tele (for composition precision). Note: "subject area" isn't necessarily same as subject. If the series will be a self portrait, during setup you will frame the shot to achieve focus at the area (or at a distance equal to) where you will be situated during the shoot.

Documentation/Help (save as a small zoom_series.txt" file to your /CHDK/SCRIPTS/ folder)

Refer to the above "features + usage notes" and paste the text into a helpfile, if you wish.

Script Code (save as zoom_series.bas" to your /CHDK/SCRIPTS/ folder)

@title Zoom Series
rem for A610/A620 (cams with 35-140mm lens)(9 zoom steps)(0 thru 8)
rem should also work with A630/A640 

rem omitting some focal length choices
rem because only *TEN* params are available
@param a incl 35mm (1=yes)
@default a 1
@param b incl 45mm (1=yes)
@default b 0
@param c incl 51mm (1=yes)
@default c 1
@param d incl 60mm (1=yes)
@default d 1
@param e incl 71mm (1=yes)
@default e 1
@param f incl 83mm (1=yes)
@default f 0
@param g incl 104mm (1=yes)
@default g 1
@param h incl 140mm (1=yes)
@default h 1
let z=a+b+c+d+e+f+g+h
rem this sanity check not foolproof but...
if z<1 | z>8 then gosub "nothing"

@param i Start delay (sec)
@default i 5
@param j Start delay (min)
@default j 0

rem Change code so that "show helptext" is optional
rem if/when CHDK permits additional params.
gosub "instruct"

if w>0 then gosub "countdown"

if h=1 then shoot
if g=1 then set_zoom 7
if g=1 then shoot
if f=1 then set_zoom 6
if f=1 then shoot
if e=1 then set_zoom 5
if e=1 then shoot
if d=1 then set_zoom 4
if d=1 then shoot
if c=1 then set_zoom 3
if c=1 then shoot
if b=1 then set_zoom 2
if b=1 then shoot
rem if a=1 then set_zoom 0    
rem Instead of above, let's unconditionally SET_ZOOM 0 
rem so cam is at full-wide state when script ends.
set_zoom 0    
if a=1 then shoot
print "***finished***"
print "."

rem This scripts works with flash on or off.
rem Only 2 known preconditions/requirements:
rem -- cam cannot be set to manual focus
rem -- Menu } Review should not be set to "HOLD"
print "1 shot at each selected"
print "focal length"
print "."
print "tripod use OPTIONAL"
print "paused --[ click SET ]--"
set_zoom 8
print "begins at full zoom"
let w=j*60+i
print "(after",w;"s start delay)"
print "."
print "Frame your subject area"
print "& click [SET] when ready"
rem blank lines scroll away previous helptext
print " "
print " "
print " "
print " "
print " "

print "0 focal lengths chosen"
print "nothing to do !"

rem May want to force minimum 2sec start delay here
rem to eliminate camera shake from button press.
rem (I decided it is not needed in the zoom_series script)
rem if w<2 then let w=2
for n=1 to w
let m=w-n+1
print "countdown:", m,"secs"
sleep 940
next n
rem NOTE: Loop timer, above, has been checked for accuracy
rem blank lines scroll away countdown text
print " "
print " "
print " "
print " "
print " "