summaryrefslogtreecommitdiff
path: root/posts/2013-10-31-wavedrum-data-comparison.skr
blob: ed4b7606f9ea0b0be5d66abb6cece8a72d60ebdf (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
(define (row first . rest)
 `(tr (td (@ (align "right")) ,first)
      ,@(map (lambda (field) `(td (@ (align "left")) ,field)) rest)))

(post
 :title "Firmware comparison between Wavedrums Original, Black and Oriental"
 :date (string->date* "2013-10-31 00:00")
 :tags '("DIY" "electronics" "music" "hacking" "wavedrum")

 (p [Since ,(ref "/posts/2013-08-11-hacking-the-wavedrum.html" "my
     first post on hacking the Wavedrum") two fellow musicians have
     sent me copies of the contents of their Wavedrum instruments, so
     I now have the data for the original silver issue, the black
     re-issue and the Oriental.])
 
 (p [The differences between the data from the silver and the data
     from the black Wavedrum are very few.  Of the files sent to me
     only five differ: ,(code [USER.BIN]), ,(code [CALIB.BIN]), ,(code
     [WD2_PROG.BIN]), ,(code [SYSTEM/VERSION.INF]), and ,(code
     [SYSTEM/WDX_M100.BIN]).  ,(code [USER.BIN]) contains only the
     mapping of programmes to slots and banks, which have been altered
     by the respective owners of the two instruments, so it can safely
     be ignored.  Likewise, ,(code [WD2_PROG.BIN]) contains custom
     user programmes and hence is of no interest.])
 
 (p [,(code [CALIB.BIN]) contains as of yet unknown calibration
     information, just like the similarly named ,(code [CALIB.BOR]) on
     my Wavedrum Oriental.  The contents of ,(code [CALIB.BIN]) from
     the original Wavedrum are identical to those of the matching file
     on the Oriental.  The only difference that the Black has over the
     other two is a single digit.  This is from the Oriental:])
 
 (pre (code [01 00 00 75 00 00 00 00  02 00 00 00 00 00 00 00]))
 
 (p [And this is from the Black:])
 
 (pre (code [01 00 00 75 00 00 00 00  01 00 00 00 00 00 00 00]))
 
 (p [Not very exciting.])
 
 (p [,(code [SYSTEM/VERSION.INF]) contains the hardware/software
     versions.  Here are the contents of the Original, followed by the
     Black and the Oriental:])
 
 (pre (code [01 20 01 10 01 20 00 00  00 00 00 00 00 00 00 00
01 32 01 10 01 32 00 00  57 44 58 5F 00 00 00 00
02 02 01 10 02 02 00 00  57 44 4f 52 00 00 00 00]))
 
 (p [Again, these are in decimal notation and are in this format:
     firmware version (two bytes), sub-version (two bytes), data
     version (two-bytes), two empty bytes, four bytes for an optional
     identifier followed by four empty bytes.])

 (table :align '("right")
        :headers '("Type" "Firmware" "Sub-version" "Data version" "Identifier")
        :rows
        '(("Original" "1.20" "1.10" "1.20" "none")
          ("Black"    "1.32" "1.10" "1.32" "WDX_")
          ("Oriental" "2.02" "1.10" "2.02" "WDOR")))
 
 (p [Looking at the version numbers above it becomes apparent that the
     sounds themselves are not covered by these numbers as the sounds
     on the Black are no different from those on the Original, yet the
     data version differs.])
 
 (p [The file ,(code [SYSTEM/WDX_M100.BIN]) must be the firmware on
     both the Original and the Black Wavedrum, serving the same
     purpose as ,(code [SYSTEM/WDORM202.BIN]) on the Oriental.  There
     are quite a few changes even between version 1.20 and 1.32, but I
     haven’t yet taken the time to analyse them.  It is interesting to
     note, though, that every firmware file is ,(em [exactly]) one
     megabyte long, independent of the Wavedrum type.  This is due to
     padding which in the Original firmware begins at offset 0xC967C,
     in the Black firmware at offset 0xC9C68, and in the Oriental
     firmware at offset 0xDCB64.])
 
 (p [More to follow.])
 
 (p [Read ,(ref "/tags/wavedrum.html" "more posts about the Wavedrum
     here").]))