J.P.Boggis DAC-3 Custom Mapper Change History
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
23/11/2005  First successful compile of dac3mapper.dll
23/11/2005  Direct FX buttons implemented and jogwheel behaviour improved.
            Scratch while paused, pitch bend while playing, [CP]+jog scratches
            while playing.
24/11/2005  At startup, version number of DLL is shown in BPM/pitch % digits.
            809915 (Boggis) is shown in time elapsed/remaing.
24/11/2005  [SHIFT]+jogwheel can be used to browse files.
24/11/2005  [MATCH] does sync.  [SHIFT]+[MATCH] toggles beatlock ([AUTO CUE]
            shown in display and flashing beat LED reversed.
24/11/2005  [CP]+[MATCH] toggles scratchlock ([SINGLE] shown in display.)
	    When enabled, jogwheel will scratch when playing rather than
	    pitch bend.
24/11/2005  [CUE] and [PLAY] now flash when song is paused off the cue
            point (As a warning that cue point will be set/changed.)
24/11/2005  [MT] now enables/disables master tempo (Time stretch.)
24/11/2005  Time bar now shows remaining or elapsed appropriately (Doesn't
	    work properly yet.)
24/11/2005  Time bar, [REMAIN] and time display now flash when time remaining
	    is < 10 secs.  Flashes more rapidly at time < 5 secs.
24/11/2005  [SHIFT]+[R] toggles timecode active (LED lit) and [CP]+[R] toggles
	    timecode bypass (LED flashing.)
24/11/2005  [TIME REMAIN] toggles time remaining/elapsed.
            [SHIFT]+[TIME REMAIN] toggles BPM/pitch %
24/11/2005  [LOAD] loads selected file only ([SHIFT] & [CP] combinations will
	    have other functions in near future.
24/11/2005  [SHIFT]+[WAITLIST] adds track to playlist.
24/11/2005  [<<]/[>>] Switches browser left/right.
24/11/2005  [CP]+[<<]/[>>] selects current cue point (Shown in large status
            digits to left of LCD.)
24/11/2005  [SHIFT] + browser up/down moves by 10.
24/11/2005  [CP]+pitch slider allows slider to be moved without altering
	    the current pitch.  Used to match up the slider with the software
	    pitch value if these do not match without an audible change.
24/11/2005  [PITCH] flashes when real pitch slider position doesn't match
	    software pitch, and BPM/pitch % display alternates between
            BPM/pitch % and the adjustment required in +/- 001 steps.  Hold
            down [CP] and move pitch slider in the required direction.  If
	    you cannot get to 000, move it as close as possible and then
	    move without [CP] held slightly to force a real pitch change
	    (Should be close enough not to be noticable.)
24/11/2005  Pitch % displayed as +/- 0.0 rather than +/- of 100.0 (Doesn't
	    work properly yet.)
24/11/2005  [-]/[+] fine pitch bends, [SHIFT]+[-]/[+] course pitch bends.
24/11/2005  [CP]+[-]/[+] fine pitch adjusts (This will result in software
	    pitch not matching real pitch slider - See above.)
24/11/2005  Cues work similar to my original MIDI mapping (Temporary
	    solution until map file is implemented):

	    [1]-[10] goto cues.  [CP]+[1]-[10] set cues.
	    
	    [SHIFT]+[1]-[10] trigger beat loops (1-10 beats)
	    [CP]+[SHIFT]+[1]-[10] trigger samples.

24/11/2005  Direct loop buttons implemented:

	                 [IN]/[OUT]/[RELOOP]  1 / 4  / 16 beat loop.
	         [SHIFT]+[IN]/[OUT]/[RELOOP]  2 / 8  / 32 beat loop.
	            [CP]+[IN]/[OUT]/[RELOOP]  4 / 16 / 64 beat loop.

25/11/2005  Timecode active/bypass fixed.
25/11/2005  [SHIFT]+[1]-[10] buttons now trigger beat loops of 1/8, 1/4, 1/2,
	    1, 2, 4, 8, 16, 32, 64.
25/11/2005  Fixed pitch % display, time remaining bar and warning time
            remaining flasher.
26/11/2005  Master tempo (Time stretch) toggle fixed.
26/11/2005  Goto/set cue 1-10 now updates current cue point.  Status
	    flashes new cue point.
26/11/2005  Status flashes sample number/loop length when activating samples
	    and loops from 1-10 buttons.
26/11/2005  Status flashes FX number being triggered.
26/11/2005  [CP]+[IN]/[OUT]/[RELOOP] now triggers 1/8, 1/4 and 1/2 beat loops.
26/11/2005  Loop LED's now work for above and loop length is shown in status.
27/11/2005  Scratchlock toggle ([CP]+[MATCH]) now works.
27/11/2005  When song is not playing, scratch cueing now uses scratch rather
	    than scratchwheel.
27/11/2005  [BREAK] is shown in display when scratching/pitch bending with
	    jogwheel.
27/11/2005  Adjustment of song time to show real time remaining/elapsed
            corrected.  If enabled via user parameter (Off by default),
	    the time will be adjusted taking pitch into account to show
	    the real amount of time remaining/elapsed rather than song
	    time.
27/11/2005  Warning time flasher now uses real time (Flashes when 10
	    seconds real time is remaining.)
27/11/2005  Time remaining warn flash is no-longer applied when song
	    is paused within last 10 seconds.
28/11/2005  Time display can now show negative time values.
28/11/2005  Functions to load/save user parameters to dac3_params.cfg added.
28/11/2005  DAC3Action() function added.  This performs custom functions
	    specific to this custom DAC-3 mapper in a similar format to
	    the SendAction() function.
28/11/2005  'cue' custom action implemented and assigned to [CUE] (Does
	    either cue_stop or stop based on user parameter setting
	    PARAM_CUE_MODE)
28/11/2005  User parameters actions added 'userparams', 'userparam',
	    'userparam_value' and 'userparams_save'.
28/11/2005  [CP]+[SHIFT]+[LOAD] enters/exits user parameters mode.  Large
	    flashing digits show parameter number, small flashing BPM/
	    pitch % digits show parameter value.
28/11/2005  [<<] and [>>] selects user parameter number to change.
28/11/2005  Browser up/down increases/decreases user parameter value by 1.
	    [SHIFT] changes by 10, [CP] changes by 100 and [CP]+[SHIFT]
 	    changes by 1000.
28/11/2005  [SHIFT]+jogwheel modifies user parameter value.
28/11/2005  [SHIFT]+[FOLDER] saves new user parameter value.  [FOLDER]
            cancels change and [CP]+[SHIFT]+[FOLDER] reverts to default
	    value (Save with [SHIFT]+[FOLDER].)
28/11/2005  [CP]+[FOLDER] goes to search box.
29/11/2005  Changes to user parameters can be saved.
29/11/2005  User parameters mode can be used when no song is loaded.
29/11/2005  [CP]+[SHIFT]+[MT] is now used to enter user parameter mode.
29/11/2005  [SHIFT]+[PLAY] does play and auto video crossfade.
	    [CP]+[PLAY] does play and instant video crossfade.
	    [CP]+[SHIFT]+[PLAY] does play and alternative video crossfade.

	    NOTE:  Play will fade to appropriate side, and pause will fade
		   back to other side.

29/11/2005  [SHIFT]+[LOAD] does auto video crossfade to appropriate side.
	    [CP]+[LOAD] does instant video crossfade.
	    [CP]+[SHIFT]+[LOAD] does alternative video crossfade.

	    NOTE:  Bounce is applied to the above.  If video is already
		   faded/fading to the appropriate side, it will fade in
		   the opposite direction (With the exception of instant
		   crossfade.)

29/11/2005  [SHIFT]+[MIX NOW] does auto video crossfade to centre.
	    [CP]+[MIX NOW] does instant video crossfade.
	    [CP]+[SHIFT]+[MIX NOW] does alternative video crossfade.
29/11/2005  [CP]+[TIME DISPLAY] now shows current time (HH:MM:SS)
29/11/2005  [CP]+[SHIFT]+[TIME DISPLAY] now shows current date (DD:MM:YY)
	    (Format can be changed via user parameters.)
30/11/2005  [SHIFT]+[CUE] does cue and auto video crossfade.
	    [CP]+[CUE] does cue and instant video crossfade.
	    [CP]+[SHIFT]+[CUE] does cue and alternative video crossfade.

	    NOTE:  Cue will fade back to opposite side.  Holding cue (Cue
		   mode = 1) will fade to the appropriate side and then
		   fade back to the opposite when released.

30/11/2005  [CP]+[FX] triggers video FX.  [CP]+[FX]+jogwheel controls FX
	    parameter while [CP]+[FX[CP]+[APPLY] (-) and [CP]+[AUTO] (+)
	    select video FX.  [SHIFT}+[FX] toggles video FX.
30/11/2005  [SHIFT]+[APPLY] (-) and [SHIFT]+[AUTO] (+) select video transition.
30/11/2005  Scratch assist added.  When scratching with [CP] held down,
	    the scratch will continue if [CP] is released and the jogwheel
	    is still moving.  This can be turned on/off via user parameters.
30/11/2005  Experimental spinback assist added.  Spinning jogwheel fast
	    with scratchlock on or [CP] activates.  If [CP] was used,
	    jogwheel will continue to scratch even when [CP] is released.
	    When jogwheel stops spinning, the deck will be paused.  When
	    active, [OUTRO] is displayed in the LCD.  Spinback assist can
            be cancelled by abruptly stopping or scratching forward with
	    the jogwheel.
30/11/2005  [SHIFT]+[<<]/[>>] in user parameters mode changes the parameter
	    number by -/+ 10.  [CP]+[SHIFT]+[<<]/[>>] goes to the first and
	    last parameter respectively.
30/11/2005  [R] now does smooth pitch reset to 0%.  Speed is configurable
	    via user parameters.
01/12/2005  BPMToTime() function now returns correct time of given number
	    of beats, rounded to nearest 1/10th sec. (Used by auto video
	    crossfading.)
01/12/2005  Loop mode user parameter added (Default 1 = Manual loops, 0 =
	    Beat loops.)
01/12/2005  Loop [IN], [OUT] and [RELOOP] now set manual loop in/out points
	    and exit the loop in respectively.
01/12/2005  [SHIFT]+[IN]/[OUT]/[RELOOP] triggers beat loops 1/4/16 beats.
01/12/2005  [CP]+[IN]/[OUT]/[RELOOP] and jogwheel adjusts loop in/out or
	    moves loop respectively.
01/12/2005  BPM/pitch % digits can now be used to show status values.
01/12/2005  Fine/course pitch bends ([-]/[+]) now show amount of pitch bend
	    in BPM/pitch % digits.
02/12/2005  Operation modes of cue/loop buttons 1-10 can now be customised
	    via user parameters.
02/12/2005  Multiple loop modes added:  0 = Direct beat loops, 1 = Loop
	    in/out/exit similar to current VDJ DAC-3 built-in mapping
	    and 2 = Loop in/out/reloop (Stutter)
04/12/2005  When scratchlock is active, [CP]+jogwheel allows you to do fine
	    pitch bends.
04/12/2005  Lots of bug fixes to loop modes 0 and 1, plus LED/LCD behaviour
	    for these two modes.
05/12/2005  [CP]+[SHIFT]+[MATCH] must now be used to activate beatlock.  This
	    help prevent accidental activation (E.g:  When user intended to
	    toggle scratchlock and pressed [SHIFT] instead of [CP].)
05/12/2005  Button status array implemented (For internal detection of
	    various button combinations and for future use with custom
	    button mapper.)
05/12/2005  Random video transitions and FX added.
05/12/2005  Further bug fixes to loops.
06/12/2005  Holding down [CP]+[IN]/[OUT]/[RELOOP] and moving the jogwheel will
	    adjust the loop in/out points and move the loop respectively.
06/12/2005  Holding down [SHIFT]+[CP]+[IN]/[OUT]/[RELOOP] and moving the
	    jogwheel will make fine adjustments.
06/12/2005  Loop modes 0 and 1 now fully implemented.
07/12/2005  Auto video crossfading fully implemented.
08/12/2005  Hold scratch while jogwheel is still spinning and [CP] is released
	    can now be turned on/off via user parameters.
08/12/2005  [CP]+[DOWN]/[UP] is now used to select video transition.
08/12/2005  [CP]+[SHIFT]+[DOWN]/[UP] is now used to select video FX.
08/12/2005  [CP]+[FX] temporarily activates/deactivates video FX.
08/12/2005  [CP]+[APPLY] toggles video FX on/off.
08/12/2005  [CP]+[AUTO]+jogwheel now modifies video FX parameter.
11/12/2005  [CP]+[<<]/[>>] now selects video FX.  [CP]+[SHIFT]+[<<]/[>>] now
	    selects video transition.
11/12/2005  Video FX toggle buttons now work correctly.
11/12/2005  [CP]+[AUTO]+jogwheel adjusts video FX parameter value.
11/12/2005  Current cue point is set back to 1 on next song load.
12/12/2005  [CP]+[AUTO]+[1]-[4] chooses video transition 1-4.
12/12/2005  [SHIFT]+[FX]/[APPLY]/[AUTO]+[1]-[5] toggles FX buttons 1-5.
12/12/2005  Pause after scratch user parameter added.  This automatically
	    pauses the deck after a scratch or spinback is performed for
	    a given amount of time.  Default spinback time of 1 second.
12/12/2005  LED flash time and interval user parameters added.
12/12/2005  Jogwheel can now be disabled in various modes by setting
	    sensitivity to 0.
12/12/2005  [SHIFT]+[FX]/[APPLY]/[AUTO]+jogwheel adjusts FX sliders 1-3.
13/12/2005  [SHIFT]+[FX]/[APPLY]/[AUTO]+[DOWN]/[UP] selects current FX.
13/12/2005  [SHIFT]+[FX]/[APPLY]/[AUTO]+[<<]/[>>] selects FX slider.
14/12/2005  FX parameter adjust via jogwheel now fully working.
14/12/2005  Most user parameters working/displaying correctly.
14/12/2005  Pitch calibration implemented (Via user parameter 26.)
16/12/2005  User parameters loaded from/saved to dac3_params.cfg in
	    C:\Program Files\VirtualDJ or current working directory
	    if this fails (Doesn't exist.)  Registry value will be
	    used in future (Needs implementing.)
16/12/2005  Pitch warning implemented (Physical DAC-3 pitch doesn't
	    match virtual DJ pitch) partially implemented.
17/12/2005  VirtualDJ home folder value is now looked up in the windows
	    registry (Falls back to C:\Program Files\VirtualDJ or working
	    directory if this fails.)
17/12/2005  v1.0 released.
06/05/2006  Minimum/maximum pitch values from VDJ are now used rather than
            calculating these manually at startup.
06/05/2006  [MATCH] button now does temporary beatlock.
06/05/2006  [FOLDER]+[<<]/[>>] can now be used to expand/collapse folders.
08/05/2006  Timecode active is now set correctly for both decks at startup.
09/05/2006  [CP]+[FOLDER] toggles between search box and last selected folder.
10/05/2006  v1.1 released.
14/06/2006  Real time elapsed is now correct (Previously reduced time elapsed
	    when song was slowed down instead of increasing it and vice-versa.)
14/06/2006  Real time remaining/elapsed figures are now accurate (Previously
	    inaccurate at pitch ranges other than +/- 8%)
14/06/2006  Pitch % rounding errors corrected (Sometimes resulted in DAC-3 	 	    displayed pitch being out by 0.1% compared to figure shown on
	    VDJ default skin.)
14/06/2006  v1.2 released.