aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/ADATFS.txt529
-rw-r--r--doc/COMPILING.txt39
-rw-r--r--doc/DEVELOPING.txt270
-rw-r--r--doc/HARDWARE.txt34
-rw-r--r--doc/LIVERECOVERY.txt25
-rw-r--r--doc/MAILING.txt28
-rw-r--r--doc/RELEASE.txt474
-rw-r--r--doc/SYXformat.txt22
-rw-r--r--doc/TESTPLAN.txt130
-rw-r--r--doc/artwork/DMG_Background.pngbin0 -> 101824 bytes
-rw-r--r--doc/artwork/DMG_Background.psdbin0 -> 521073 bytes
-rw-r--r--doc/artwork/HD24Connect.icnsbin0 -> 122133 bytes
-rw-r--r--doc/artwork/HD24_vipower.jpgbin0 -> 118233 bytes
-rw-r--r--doc/artwork/Icon.psdbin0 -> 263021 bytes
-rw-r--r--doc/artwork/hd24connect.jpgbin0 -> 17791 bytes
-rw-r--r--doc/artwork/hd24display.pngbin0 -> 84562 bytes
-rw-r--r--doc/artwork/hd24pc.jpgbin0 -> 72433 bytes
-rw-r--r--doc/hd24tools_manual.odtbin0 -> 1243066 bytes
-rw-r--r--doc/hd24tools_manual.pdfbin0 -> 2167182 bytes
19 files changed, 1551 insertions, 0 deletions
diff --git a/doc/ADATFS.txt b/doc/ADATFS.txt
new file mode 100644
index 0000000..e373690
--- /dev/null
+++ b/doc/ADATFS.txt
@@ -0,0 +1,529 @@
1HD24 ADAT file system format
2
3Reading ADAT HD24 disks
4-----------------------
5In the ADAT FST file system, the part of the file system
6that contains directory and song info is grouped in
732-bit words. When read on a regular PC, each group of
84 bytes will appear reversed. As such, when
9a sector contains a string 'TADATSF ', we should read this
10as 'ADAT FST'. In this document, we will assume that
11doing the byte swapping needed to properly read the sectors
12has already been done.
13
14It should be noted that the actual audio data has not
15undergone such byte swapping. As such, WAV data
16retrieved from the HD24 by FTP is stored in the same
17byte order as the data on disk.
18
19The sector size used on HD24 disks is 512 bytes.
20ADAT FST boasts disk support for disks up to 2 Terabyte.
21This is achieved by using 32-bit pointers that point to
22sector numbers. We will refer to these pointers as
23sectorpointers.
24
25Writing ADAT HD24 disks
26-----------------------
27Writing HD24 disks is slightly tricky, because FST
28filesystems contain backup copies of file system
29sectors to help guarantee data consistency.
30As a result, when we make an alteration to only the
31first copy of the file system structure on disk, the
32disk is considered inconsistent and the backup copy will
33be written back by the HD24 recorder at the next use.
34
35The backup data is stored at the end of the disk,
36in block-reverse order.
37The original order is something like this:
38
39block 0
40 sector 0
41block 1
42 sector 1
43block 2
44 sectors 2,3,4
45block 3
46 sectors 5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
47block 4-102
48 1 sector of project info
49block 103-
50 song info block (2 sectors)
51 song allocation info block (5 sectors)
52
53The backup blocks are stored in reverse order,
54however each backup block maintains the original
55sector ordering. That is,
56
57block 0 has a backup at sector (end-0)
58 (where end=the last sector on disk)
59
60block 1 has a backup at sector (end-1)
61
62block 2, sectors 2,3,4 are backed up at sectors
63 end-4, end-3, end-2, respectively;
64
65block 3, sectors 5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
66 are backed up at sectors
67 end-19,end-18,end-17,end-16,end-15,...end-5,
68 respectively.
69
70The validity of a block is indicated by a checksum which
71is stored in the last 4 bytes of a block (bytes 0x1FC,
720x1FD, 0x1FE, 0x1FF of the last sector of a block).
73
74The value of the checksum is such that sum of all 32-bit
75words in the block (which may span several sectors) is 0.
76When writing a block, we must make sure that the resulting
77checksum of the block adds up to 0 again.
78
79A second check refers to bytes 0x1f8-0x1fb of the last
80sector of a block. Bytes 0x1F8 and 0x1F9 contain the
81least significant 16 bit of the sector number at which
82the block starts. Thus, a project block which contains
831 sector and starts on sector 0x14 will contain the
84values 0x14, 0x00 on bytes 0x1f8 and 0x1f9; a song entry
852 sectors long, and ending on sector 0x78 will contain
86the byte values 0x77, 0x00 on offset 0x1f8 and 0x1f9,
87respectively (because the song entry starts on sector
880x77). Bytes 0x1FA and 0x1FB of the last sector of the
89block contain the bit-inverted value of 0x1F8 and 0x1F9**.
90
91** This paragraph assumes the sector is not byte-swapped
92as described in the first paragraph of the document.
93
94When a block is not equal to its backup, the checksum
95of both is validated. If one is valid and the other is
96not, the valid copy is written over the invalid copy.
97
98General ADAT FST layout
99-----------------------
100The general ADAT FST layout is as follows:
101
102-----------------------------------------------------------
103Sector 0 / Offset 0000:0000h
104Superblock, identifies drive as an ADAT FST drive.
105Size=512 bytes/0200h
106-----------------------------------------------------------
107Sector 1 / Offset 0000:0200h
108Drive info
109Size=512 bytes/0200h
110-----------------------------------------------------------
111Offset 0000:0400h
1123 sectors, Song Entry Usage Table
113Size=600h
114-----------------------------------------------------------
115Offset 0800h
11615 sectors, Drive Usage Table
117size=1e00h
118-----------------------------------------------------------
119 / Offset 0000:2800h
120Project info, 1 sector (512 bytes) per project entry
121Size: 99*200h=c600h
122-----------------------------------------------------------
123 / Offset 0000:ee00h
124Song info, 7 sectors (3584 bytes) per song entry
125-----------------------------------------------------------
126 Undo info
127-----------------------------------------------------------
128 Audio data
129-----------------------------------------------------------
130 File system backup
131-----------------------------------------------------------
132
133
134Superblock layout
135-----------------
136Offset 0-0fh Header line:
137 Offset 0 'ADAT FST'
138 Offset 8 Version number, e.g. '110 '
139 Offset 12 signature bytes: 55h, aah, cch, 33h
140Offset 10h-13h Size of audio block (0x480)
141Offset 14h-17h Number of audio blocks per allocation cluster
142Offset 18h-1fh 0 ?
143Offset 20h-23h 0 ?
144Offset 24h-27h 0 ?
145Offset 28h-2bh 1 ? sectors in superblock?
146Offset 2ch-2fh 1 ? sectors in drive info block
147
148Offset 30h-33h 2 ? sectornum of song entry usage table?
149Offset 34h-37h 3 ? sectors in song entry usage table?
150
151Offset 38h-3bh 5 ? sectornum containing allocation info?
152Offset 3ch-3fh 15/0fh - Number of sectors in allocation table?
153
154Offset 40h-43h 042fh=1071 ?? (anything to do with undo buffer?)
155 --
156 On 1.2gb drive this formats as 0x20 00 00 00
157 --
158Offset 44h-47h Number of free audio clusters on disk
159Offset 48h-4bh SectorPointer to project info
160Offset 4ch-4fh 1
161Offset 50h-53h Max allowed no. of projects?
162Offset 54h-57h Max allowed no. of songs per project?
163Offset 58h-5bh SectorPointer to first song info entry
164
165Offset 5ch-5fh 2 (sectors of song info entry w/o alloc info?)
166Offset 60h-63h 5 (sectors of alloc info per song entry?)
167Offset 64h-67h 7 (number of sectors that song info entries are apart?)
168Offset 68h-6bh current number of songs on disk
169Offset 78h-7bh 041fh (number of audio blocks reserved for undo buffer).
170 1055 audio blocks=72 track minutes at 48 khz
171 Multiply by contents of offset 14h-17h for number of sectors
172 in undo buffer.
173
174Offset 7ch-7fh Sector pointer to audio data block on disk (0x1397f6).
175Offset 80h-83h 32-bit word
176 number almost as big as number of sectors on disk
177
178 This number is related to that on offset 0084h and
179 always seems to have a difference of 0x14a46B to
180 the end of the disk.
181
182 0084h 0080h
183 40 gb disk:
184 0x04c92d7f - 0x04B48914 = 0x14A46B
185 120gb disk:
186 0x0df94baf - 0x0de4a744 = 0x14A46B
187
188 Perhaps the value is the number of allocatable sectors
189 on disk?
190 (1397f6 used in the beginning; an undo buffer is not
191 needed at the end of the drive)
192
193 0x10C75 used for actual filesystem.?
194 0x1397f6 (first data sector on drive) - (0x41f(size of undo buffer in audio blocks) * 0x480(size of audio block in sectors)) = 0x10C76
195 first data sector is not part of FS so this makes sense.
196
197offset 84h-87h 32-bit word, highest sector number on disk.
198 A backup of the first sector can be found here.
199offset 88h-1F7 (empty, zero - reserved for future use?)
200offset 1f8-1FF Checksum information.
201
202Drive info layout
203-----------------
204Sector 1
205Offset 0 8 byte drive name (for compatibility with
206 older ADAT FST versions), should be considered
207 obsolete. Replaced by name at offset 01bh.
208Offset 8-9 null bytes
209Offset 0ah-0bh 2 more bytes for drive name. Should be considered
210 obsolete
211Offset 10h SectorPointer to last active project.
212offset 20h List of 32-bit sector pointers to all projects.
213Offset 01b8h 64-byte drive name. Null-byte terminated
214 when shorter than 64 chars.
215
216Song Entry Usage Table
217----------------------
218FST 1.10 allows for 99 projects of 99 songs each, giving for
2199801 song entries. Each song entry is not necessarily pre-
220allocated to any given project; song entry 0 may belong to
221project 0, while song entry 1 may belong to another project.
222The Song Entry Usage Table provides a quick way to look up
223the next free song entry without having to go through all
224projects to see which song entries are in use.
225
226Each bit in the Song Entry Usage Table represents a song.
227When 0, the song entry is not in use; when 1, it is.
228
229Drive Usage Table
230-----------------
231Each bit in the Drive Usage Table represents a cluster. When 0, the
232cluster is free; when 1, the cluster is in use.
23332-bit words are filled one by one, least-significant bit first,
234until the entire word has the value 0xFFFFFFFF. In other words, the
235table starting with the following words have the meaning as described:
236
2370x1 contains 1 bit on -> first cluster allocated
2380x3 contains 2 bits on -> first 2 clusters allocated
2390x1f contains 5 bits on -> first 5 clusters allocated
2400x1ff contains 9 bits on -> first 9 clusters allocated.
241
242At the end of the drive usage table, some space seems to be reserved,
243possibly representing the backup of the file system info, or something
244along those lines. The last 32-bit word of the Drive Usage Table is a
245checksum. When all 32-bit words in the entire Drive Usage Table are
246summed, the result must be 0.
247
248Project info
249----------------------
250The project info consists of (by default) 99 entries of 512 bytes each.
251The actual number of projects is contained by the superblock.
252
253100 project entries would be 0xc800 bytes.
254As projects are numbered starting at 01, a maximum of 99 projects
255is possible, giving for 0xc600 bytes.
256
257How to distinguish between an empty project and an unused project entry?
258Answer: Sector 1 (Drive info) contains the project list.
259
260Projects not mentioned in the drive info project list are empty projects.
261
262Each project entry has the following layout:
263
264Offset 0 8-byte project name (obsolete)
265Offset 8 4-byte (2 bytes of which are partial project name too)
266offset 0ch-0fh Number of songs in use in project
267offset 10h-19bh Song info table (a list of 32-bit pointers to the
268 initial sectors of song info). Length of table should be
269 396 bytes for 99 songs per project.
270 First entry in the table is the last accessed song.
271 Zero char means unused entry.
272Offset 01b8h 64-byte project name. Null-byte terminated if project
273 name is less than 64 bytes long.
274
275Song info table
276---------------
277The song info table is part of a project entry. It is a list of 32-bit
278pointers to sectors containing song info.
279
280Song info
281------------------------
282Song info starts at disk offset 0xee00h, or at
283sector 119 (the 120th sector on disk) (depending on
284info in superblock).
285
286Each song entry has a length of 2 sectors and is immediately
287followed by 5 sectors of file allocation info.
288
289Locate points/loops and track slip info is included in the song
290entries.
291
292Offset 00h-03h 32-bit number indicating no. of audio blocks in song
293Offset 04h-07h ?0
294Offset 08h-0bh 32-bit number related to audio track interlacing.
295
296 1/512th of the number of samples per interlace block
297 before the audio switches to the next track.
298
299 Value of this field equals Cluster size/(tracks*3).
300
301Offset 0ch-0fh 32-bit number related to audio track interlacing.
302
303 number of sectors per interlace block
304 before the audio switches to the next track.
305
306 Value of this field equals audio block size
307 /no. of tracks.
308 Default audio block size is defined in superblock
309 (0x480 sectors)
310
311 An audio block size of 0x480 and 2 tracks gives a
312 block size of 0x240h sectors or 0x48000 bytes
313 (=294912 bytes).
314
315Offset 10h-13h Status flags????????????????????
316 Offset 0x12h bit 0x10h -> write protect?????
317
318Offset 28h-2Fh First 8 bytes of song name.
319 (Maintained for compatibility
320 with FST before 1.10-
321 Obsoleted by long filenames
322 at offset 3b8h)
323
324Offset 30h ?
325
326Offset 31h Number of physical tracks used by song.
327
328 Note:
329 The HD24 has a high sample rate
330 mode (88200 and 96000 samples per
331 second, respectively).
332
333 In high sample rate mode, two
334 physical tracks are used for each
335 logical track.
336
337 That is, a 12-track song in high
338 sample rate mode will use 24 tracks
339 on the machine. The number 24 is
340 then what is indicated.
341
342 This allows interlacing samples between
343 tracks for compatibility with systems
344 running at half the sample rate.
345 In high sample rate mode, the track layout
346 is:
347 physical track 0-1 -> samples of logical track 1
348 physical track 2-3 -> samples of logical track 2
349 physical track 4-5 -> samples of logical track 3
350 .. and so on. Even numbered samples (0,....)
351 are on even numbered tracks.
352
353Offset 32h-33h Two more filename characters for short filename,
354 used in obsolete FST 1.0 standard.
355
356Offset 34h-36h Sample rate in samples/second
357
358 Typical values are:
359
360 00h ach 44h -> 44100 Samples/sec
361 00h bbh 80b -> 48000 Samples/sec
362 01h 58h 88h -> 88200 Samoles/sec
363 01h 77h 00h -> 96000 Samples/sec
364
365Offset 37h Bit depth (18h or 24 by default)
366
367offset 38h-3bh Unsigned 32-bit number containing
368 number of samples in song.
369
370 For high sample rates, 2 tracks
371 are used for each sample;
372 therefore, a song that according
373 to this 32-bit number contains 44100
374 samples has the same duration at both
375 44100 and 88200 kHz.
376
377offset 3ch Write protect byte.
378
379 This byte contains 8 bits (0-7, where
380 7 is the most significant bit and 0 the
381 least significant bit. In other words
382 bit 7 has value 128, bit 0 has value 1)
383
384 Bit 2 is on when song is write protected
385 (value of the byte is 0x4 then), off when
386 song is write enabled.
387
388offset 58h-B7h Track slip info for track 1-24
389
390 Track slip is measured in number of samples.
391 E.g. for a song recorded at 48 khz, a value
392 of 480 decimal (0x1e0) means 1/100 second
393 (10 ms) of track slip.
394 Track slip is stored as a signed 32-bit number.
395 Valid values for the HD24 are -170..170 msec
396
397Offset 0b8h-1e3h Locate point block
398
399Offset 3b8h-3e7h Full song name, max 64 bytes;
400 terminated by null byte when less
401 than 64 bytes
402
403Offset 400h-???? File allocation info (see below)
404
405Locate point block
406------------------
407The locate point block consists of 24 locate point entries.s
408
409Locate point entry
410------------------
411Each locate point entry has the following layout:
412Offset 0-3 32-bit time code
413 The time code represents the sample number
414 within the song.
415Offset 4-11 The 8-byte locate point name
416
417Locate point 0 indicates the relative time offset of the
418song. This is usually 0, but may be set to other values for
419tape transfers.
420
421The locate point is a 32-bit unsigned integer which contains the
422sample number within the song. In other words, in a 44.1 khz
423song, the locate point 0:0:1:0 (hours/minutes/seconds/frames)
424is encoded as the number 44100. Thus, the locate point furthest
425in the song is 2^32=4294967296 samples.
426This is enough for 44.1khz songs with a length of 27 hours.
427
428File allocation info
429====================
430The file allocation info consists of file allocation entries.
431Each file allocation entry has the following format:
432
433Offset 00h-03h Starting sector number for audio block
434Offset 04h-07h Number of audio blocks in allocation block
435
436In a valid song, the the 32-bit word on offset 0 of the song
437info equals the total sum of the number of audio blocks in the
438file allocation info.
439
440In my disk image, I see songs that had been previously deleted;
441the song length in audio blocks is zero for these. This also
442goes for songs that have no audio data yet.
443
444Audio data layout
445=================
446The audio data of a FST file system is stored in a raw, uncompressed
447format. Audio data that consists of multiple channels is interlaced
448blockwise (as opposed to sample-by-sample interlacing).
449
450The data is stored as 24-bit signed little endian integer data.
451
452The typical audio block size as indicated in the superblock is
4530x480 sectors. In stereo audio, each subblock is then 1/2 audio blocks
454or 0x240 sectors per channel.
455
456As the number of tracks increases, the block size per track decreases
457proportionally.
458
459The default audio block size of 0x480 sectors lets itself be divided
460into 2,4,6,8,12,16,24 tracks (with a sample size of 24 bit). Each channel
461then takes up 0x240, 0x120, 0xc0, 0x90, 0x60, 0x48, 0x30 sectors,
462respectively assuming 0x480 blocks per sector. In high sample rate
463modes, channels are paired to accomodate for the doubled sample rate.
464This is why in high sample rate mode a max of 12 channels are possible,
465while the maximum song length is still over 27 hours on 88.2 kHz.
466
467
468Not yet accounted for in this document
469======================================
470
471How the undo buffer is used (however, this is not relevant because the
472undo buffer is cleared after each power off. It might as well exist
473in RAM only).
474
475How pitch info is stored in the songs
476auto play
477auto rtn
478auto rec
479
480HD24tools extensions to FST
481===========================
482An extension is proposed where a song on a HD24 drive is used as data
483area, to store non-audio information associated with a song or project.
484This would allow HD24 owners to store track notes, mix settings,
485protools projects and so on along with their songs.
486
487A degree of compatibility with the HD24 is desired; although the HD24
488will not be able to use the information, it should also not corrupt it.
489
490The HD24 does not offer unique file names; moreover, the position of a
491file is not constant within the FS. As a result, songs have no unique
492identifier that allows other data to be associated with them.
493
494It is proposed to use bytes 0x3a0-0x3bf of each song entry as unique
495identifier. Testing shows that the HD24 recorder does not touch these
496bytes, even after a scandisk operation. Moreover, when a song is copied
497to another drive, these bytes are copied over as well.
498
499A single HD24 song would provide ample storage space for most purposes.
500Additionally, by using a single song only, the negative impact to the
501end user is minimal as no users have ever been registered to actually
502create 99 project of 99 songs. To prevent the HD24 from corrupting the
503contents of the song, it can be created as 0-track song; previous
504experiments have shown that the track count is flexible. Having a song
505marked as 0 track prevents the HD24 from arming tracks or playing back
506audio from the song, and will give a user some feedback about the nature
507of the song, without causing the HD24 to claim that the song is corrupt.
508A track count of 0 survives a scandisk command, and it seems that the
509HD24 permits copying such songs to other drives.
510
511A possible way to store data in the song is to have the data song
512contain a FAT file system. The advantage of the FAT file system is
513that it is well documented, and probably there will be library code
514available that will ease the implementation of an embedded FAT
515system on HD24 drives.
516
517The root directory of the file system shall contain a 'songdata'
518dir. This data directory shall contain a subdirectory named after the
519ID of each song. Of course the file names need to be long enough; if
520this is not possible, a map file may be created to contain mappings
521from song ID to songname subdirectory ID.
522
523Data placed in the appropriate songname directory is automatically
524associated with the song. Should we so desire, we can also create a
525'projdata' directory.
526
527By keeping the songdata directory structure flat, songs can be moved
528across projects without losing their associated files.
529
diff --git a/doc/COMPILING.txt b/doc/COMPILING.txt
new file mode 100644
index 0000000..f0abf5e
--- /dev/null
+++ b/doc/COMPILING.txt
@@ -0,0 +1,39 @@
1COMPILING HD24TOOLS
2
3Instructions for Linux (preferably Debian/Ubuntu based):
4
5Get the source code from svn on HD24tools.com
6
7sudo apt-get install fluid libfltk1.1 libfltk1.1-dev libsndfile1 libsndfile1-dev libportaudio0 libportaudio0-dev libjack0 libjack0.100.0-0 libjack0.100.0-0-dev libjack-dev libxft2 libxft-dev libxinerama libxinerama-dev
8
9Note: You may still need to install libflac.
10
11make clean
12./configure
13make
14
15mkdir ~/HD24tools
16cp hd24connect ~/HD24tools/
17cp hd24hexview ~/HD24tools/
18cp hd24info ~/HD24tools/
19cp hd24towav ~/HD24tools/
20cp hd24wavefix ~/HD24tools/
21ln -s /usr/lib/libsndfile.so.1 ~/HD24tools/
22ln -s /usr/lib/libportaudio.so ~/HD24tools/
23ln -s /usr/lib/libjack.so ~/HD24tools/
24
25For HD24tools to detect the drives (when being run as normal user),
26normal users need to have sufficient permissions to work with the
27drive device.
28
29To find out which drive device it is, run HD24connect as root,
30and select File->Recovery->Select device...
31
32This will show you the current device, which is the device
33that needs its permissions set.
34
35You can probably gain device permissions by adding your
36regular user to the proper group, making your user the
37owner of the device or by setting the device permissions
38in /etc/fstab.
39
diff --git a/doc/DEVELOPING.txt b/doc/DEVELOPING.txt
new file mode 100644
index 0000000..6c91747
--- /dev/null
+++ b/doc/DEVELOPING.txt
@@ -0,0 +1,270 @@
1Developing HD24tools
2====================
3
4To start on development of hd24tools, here are a few tips to get you started.
5
6Development environment
7=======================
8You will want libsndfile, libportaudio and the Fast Light Toolkit FLTK to be
9present on your system. On Linux you will also want the Jack Audio Connection
10Kit (optionally on Mac as well). The targeted compiler is gcc.
11
12On Windows, development is based on a MSYS/MinGW environment.
13
14On Mac, XCode is needed, as well as portaudio, libsndfile and FLTK.
15
16Configuring and building
17========================
18Configuration is auto-detected by running
19
20 ./configure
21
22Building is done with
23
24 make
25
26Installing is optional. You may want to run the following as root:
27
28 make install
29
30which will install common binaries to /usr/bin. More interestingly,
31you can run
32
33 make installer
34
35to create the installer for the current platform. Finally, with
36
37 make clean
38
39you can work from a clean configuration. The configure script also
40calls make clean.
41
42Cross-compiling
43===============
44Cross compiling is highly experimental and will probably fail for
45most purposes. On linux, you can say
46
47 ./configure os=win32
48
49which will attempt to create windows .exe files. However, until
50now only hd24hexview.exe has been successfully built on Linux.
51
52
53
54./configure
55make
56
57Setup
58=====
59During configuration, the set of libraries, make files etc to
60use is decided by the files in the setup directory. The file
61Makefile.in which is located there contains the release number
62which must be bumped up for every version. Unless you build
63official releases, please add your name to the release number
64or make your personal releases otherwise distinguishable from
65official releases.
66
67To perform library detection etc, there are files called
68Makefile.setup.<platform> in the setup directory. These are
69called with various targets to figure out if libraries exist.
70
71Unless porting to a new platform or adding external libraries,
72you will probably rarely need to change most of the setup
73scripts.
74
75File system documentation
76=========================
77Reverse-engineered information about the ADAT FST file system
78can be found in doc/ADATFS.txt. Probably this file contains
79enough info to not only allow reading ADAT drives but also to
80write them. The biggest obstacle in writing ADAT drives so
81far has been to get an accurate LBA sector count of non-
82formatted drives on all operating systems. Especially Windows
83seems to lack a reliable way to obtain this information.
84(Multiplying sectors/cylinders/heads isn't LBA accurate,
85any other way known to me is limited to a specific version
86of Windows). If you want to contribute to the ADATFS.txt
87file, figure out how the FST undo buffers work. To keep this
88software free, DO NOT obtain information from Alesis about
89FST which might pollute the project with non-free
90information.
91
92The HD24 library
93================
94Directory src/lib contains the HD24 library (and other
95library source code).
96
97common.cxx - some common string manipulation functions
98convertlib.cpp/.h - conversion between various data types
99countsectors.cpp - library to calculate drive size
100hd24connect.ico - HD24connect Icon for Windows
101hd24devicenamegenerator.cpp/.h -
102 Library to generate device names that could be
103 HD24 drives; contains alternatives for all
104 supported OS platforms
105hd24fs.cpp/.h
106 Library containing definition for HD24 file system
107 object.
108 Each file system contains drive info;
109 The drive info contains 1 or more projects;
110 Each project contains 0 or more songs;
111 Each song contains 25 locate points (START
112 +locate point 1-24) and track slip info for
113 each track.
114
115 Including hd24fs.h is sufficient to have access to
116 all of this.
117
118hd24project.cpp/.h
119 Library containing hd24 project decoding.
120
121hd24song.cpp/.h
122 Library containing hd24 song decoding;
123 this includes functionality to read audio, set
124 the song cursor, etc.
125
126hd24utils.cpp/.h
127 Library that contains useful routines, such as
128 printing the hd24 catalog, dumping a header,
129 saving a drive image etc. that do not belong in
130 the file system decoding library,
131 but that multiple programs might have a use for.
132
133nojack.cpp/.h
134 Dummy library to replace jack on windows and other
135 platforms in case it is not present.
136
137src/lib/FL/
138 Native OS file dialog support.
139
140INSTALLER GENERATOR
141===================
142
143The code for the installer generator is found in
144src/installer.
145
146Essentially, it takes the compiled binaries of hd24tools,
147and converts those to hexdumps in c-source (using an
148application called bin2c). This c source is then compiled
149and will be able to re-create the original binary
150files.
151
152While no complex registry magic is needed, this is
153sufficient for simple installations and probably less work
154to figure out than other solutions.
155
156This was originally intended to create install wizards for Mac,
157but ended up being used for Windows only. Mac users seem
158comfortable enough with the install-free .dmg images that they
159are presented with.
160
161The install wizard itself is basically implemented as a state
162machine.
163
164The installer for Linux installation could still be made a bit
165smoother, specifically in the libraries department- the right
166libraries are not always available at the right locations yet.
167
168THE ACTUAL HD24TOOLS
169====================
170
171Some tools only have a console/command line version. They are:
172
173hd24hexview a hex editor
174hd24wavefix a program that attempts to recover bit-distorted
175 audio to something remotely usable again
176hd24towav a program that converts raw 24 bit hd24 audio to
177 wav files
178syx2bin a program that converts the HD24 OS .syx files
179 to binary (not sure if the resulting binaries
180 are valid)
181hd24info a program that prints some info about the hd24
182 drives present in the system
183
184And finally, there is the graphical flagship program of the suite
185hd24connect. To start development, it would be recommended to
186understand the library, then the command line utilities first.
187
188The command line tools are in src/ whereas hd24connect is in
189src/frontend.
190
191Originally I intended hd24connect to have a frontend (GUI) and
192a backend. As it turned out, the whole thing ended up in the
193frontend. If you feel like creating a nice backend so that the
194frontend *really* *only* contains GUI stuff, feel free. Sorry.
195
196The entry point of hd24connect is src/frontend/hd24connect.cpp-
197this calls and opens the GUI.
198
199The main entrance for the GUI is in fluid file ui_hd24connect.fl
200(you *really* should use the 'fluid' user interface editor that
201comes with fltk to maintain the .fl files). Method make_window
202in class UserInterface starts it all.
203
204TEST SUITE
205==========
206There is a directory test/ which should at some point contain
207regression tests for hd24tools. To make it easier to perform
208such tests, it would need to be possible to control hd24tools
209entirely in batch-mode (using MIDI for this is may be a
210possibile way).
211
212DOCUMENTATION
213=============
214
215The .pdf documentation may be slightly outdated. If you wish
216to update it, you can do so with OpenOffice Writer.
217
218TASKS
219=====
220If you want to contribute, here are some things left to do:
221
222- Write support (realtime vs copy mode)
223
224 Save altered drive/project/song info
225
226 Write support can initially be tested on
227 drive image files.
228
229 Phase A1: Only overwriting existing audio, but
230 not allocating new space (copy mode)
231
232 Phase A2: Allocating new space (copy mode)
233
234 Phase B1: realtime write mode with JACK support
235
236- Wave preview
237
238 This would have to be awfully smart to be able to display
239 waves with zero active waiting time and without utilizing
240 peak files. Use information such as screen width reso-
241 lution to limit the amount of data that needs to be read
242 from disk. Probably adding a special read mode in the
243 library could help support this.
244
245- Figure out how to build (fat) Mac binaries with or without
246 Mac (but preferrably without requiring both intel and ppc
247 to build a release that works on either platform)
248
249- Figuring out a way to write wav header info/session
250 notes to HD24 songs, while maintaining HD24 compatibility
251
252- Adding MIDI support to the library (MMC, MTC)
253
254- Sync to real HD24 recorders?
255
256- Special HD24tools distro containing ReWire support to
257 allow streaming audio directly to protools/cubase?
258
259- Use real LRC to control HD24tools?
260
261- Figure out OS binary checksum algorithm
262
263- Create a test suite
264
265- Figure out how the HD24 performs Undo administration on
266 the file system level
267
268- Improve realtime read mode performance for audio streaming
269
270
diff --git a/doc/HARDWARE.txt b/doc/HARDWARE.txt
new file mode 100644
index 0000000..8d4809e
--- /dev/null
+++ b/doc/HARDWARE.txt
@@ -0,0 +1,34 @@
1Inside the HD24
2
3The HD24 is powered by a Motorola Coldfire
4
5MCF5206EFT54
6K36J
7QAJ0435)
8
9The Ethernet chip is a CrystalLan CS8900A-CQ3,
10a 10Base-T LAN chip.
11
12There is an empty, 26 pin port labelled 'Motorola BDM Port'.
13Motorola BDM stands for Motorola Background Debug Module,
14so we might speculate that this port allows us to perform
15debugging on the HD24 as it is running.
16
17There are to IC41LV16256 chips in the HD24: according to the
18data sheets, they are 256kx16 bit Dynamic RAM with EDO page mode,
19giving the HD24 a total of 1 megabyte of RAM.
20
21There is an ALTERA ACEX EP1K30QC208-2
22FPGA (Field Programmable Gate Array).
23
24There is a Texas Instruments AHCT16541
25AHCT16541 devices are noninverting 16-bit
26buffers composed of two 8-bit sections with
27separate output-enable signals. (possibly
28used for communication to displays?)
29
30Analog Devices ADSP 21065L KS-264
31A digital signal processor.
32
33
34
diff --git a/doc/LIVERECOVERY.txt b/doc/LIVERECOVERY.txt
new file mode 100644
index 0000000..94782a0
--- /dev/null
+++ b/doc/LIVERECOVERY.txt
@@ -0,0 +1,25 @@
1Figuring out on which sector the next recording should start
2(or where a crashed live recording starts)
3============================================================
41. Find the start offset of the drive usage table, e.g. 0xa00
52. Find the suspected start offset of the live recording
6 in said table. This is the offset of the first 32-bit word
7 that is 0.
8 For instance the found offset is 0xe74
93. This means the recording starts on cluster
10 0xe74-0xa00=0x474
114. The superblock states the number of audio blocks per cluster,
12 offset 0x14. For the sake of this example, lets assume 9
13 audio blocks per cluster. The size of each audio block is on
14 offset 0x10, usually 0x480.
155. The first audio sector is mentioned on the superblock on
16 offset 0x7e. In most cases it is 0x1397f6.
176. Each byte in the drive usage table represents 8 clusters.
187. The audio should then start on
19 0x1397f6 + (0x480*9*8*(0xe74-0xa00)) = sector 0x5b667f6.
20
21---------------
22The other way around- calculating offset from sector number:
23(0x02e427f6 - 0x1397f6) / 0x480 / clusters /8 + 0xa00
24
25
diff --git a/doc/MAILING.txt b/doc/MAILING.txt
new file mode 100644
index 0000000..20e9de3
--- /dev/null
+++ b/doc/MAILING.txt
@@ -0,0 +1,28 @@
1Subject: HD24tools 0.9.0beta for Win32 released
2Hello,
3
4HD24tools version 0.9.0beta has been made available for
5the following platforms:
6
7- Linux (i386)
8- Windows (All versions)
9
10Mac releases are expected to be released soon.
11
12The most important new features in this release are
13- Preliminary write support
14- New tabbed GUI
15- Several usability enhancements
16
17The release notes for this and previous release notes can be viewed on
18http://ringbreak.dnd.utwente.nl/~mrjb/hd24tools/RELEASE.txt
19
20As always, the release can be downloaded from:
21http://ringbreak.dnd.utwente.nl/~mrjb/hd24tools/download.html
22
23Should you encounter any problems with this release,
24please let me know.
25
26Best,
27Marc
28
diff --git a/doc/RELEASE.txt b/doc/RELEASE.txt
new file mode 100644
index 0000000..ac0d723
--- /dev/null
+++ b/doc/RELEASE.txt
@@ -0,0 +1,474 @@
1HD24Connect revision history and roadmap
2========================================
3
4Implemented features are set in the past tense. A version is complete when all
5planned versions are implemented. Until then, sub-versions are used, e.g.
60.3.1 already may have some (but not all) 0.4 features.
7
8This document ends with suggested features, but is in reverse chronological
9order otherwise, and as such starts with features planned for the next
10release.
11
12Current status is somewhere in the middle, search for the text
13'CURRENTLY IN PROGRESS' to find out what is being done right now.
14
15Version 1.1.0 => CURRENTLY IN PROGRESS
16
17- Added some unit tests to perform automated, scripted testing
18- Added frequency/gain display to mixer
19- Performed code cleanup:
20 - Moved recorder, mixer and HD24->PC file transfers
21 to their own modules
22 - permit various interfaces (X, Cocoa, Curses, etc)
23 - possibly permit recording macros?
24 - permit multi-window interface (show transport/time/mixer
25 simultaneously) and allow resizing those windows
26- Implement batch transports
27- Implement realtime recording
28- Auto-detect feedback loops!
29- Change to multi-window interface to allow viewing multiple tabs at once
30 (for example both recorder and mixer at same time)
31- Implement MIDI control/control surfaces
32 - Control other MIDI devices with HD24tools
33 - Control HD24tools with other MIDI devices
34- Implement LADSPA support for mixer FX
35 - Add default GUI for common effects, allow them
36 to be controlled through control surfaces.
37- Implement keyboardless operation
38- Add wave viewer for easier selection of export range
39- Add functionality to allow changing song naming convention for export
40- Simultaneous dual drive support. Benefits:
41 * allow copying songs between drives
42 * copying songs/projects from/to drive images
43- Add drive images that are found in drive image dir to
44 drive image dropdown to make it easier to switch between
45 real and virtual drives
46- Implement functionality to signal falling out of record
47 mode if needed (when drive is full, etc)
48- Create an interesting demo drive image to
49 allow people to play around with it
50 (low prio: people can download examples from raw-tracks.com
51 at a $5 fee)
52
53Version 1.0.0 => Will remain in alpha
54
55- Made source code available to the general public
56- Added recovery feature to deal with a specific class of
57 'unexpected end of song' error on fragmented drives
58- Added block checksum calculation to library
59- Implemented saving of changed project name/song name to disk
60- Added code for cluster allocation
61- Added code for converting orphan clusters to allocation entries
62- Compiling framework was changed to allow smoother Mac compiles
63- Added mixer tab with save/load mixer settings functionality
64- Finished up restructuring of mixer to make it work again
65- Added save functionality to allow renaming drive
66- Made detection of corrupted drives smoother to prevent need for
67 http://ringbreak.dnd.utwente.nl/~mrjb/hd24tools/drivenumber.html
68- Added Check for 'forbidden characters' in filenames
69 \ / : * ? " < > |
70 (HD24 accepts these but can have unpredictable effects on
71 OS side)
72- Added allocating functionality to allow lengthening songs
73 automatically during transfer
74- Altered layout of drive catalog to fit longer song names
75 and to have a bit larger margin on the left for printing
76- Added functionality to allow 1-click toggle between
77 sample rates of 44.1 <=> 48 kHz and 88.2 <=> 96 kHz
78 (toggling between lower/higher sample rates is not possible
79 without conversion as higher sample rates use 2 recording
80 tracks per channel).
81- Added dialog for simpler 'headerless' live recording recovery
82- Implemented initial headerless live recovery scheme
83- Made headerless live recording recovery read-only
84- Added functionality to create empty drive images
85- Created dialog for setting song parameters
86- Implemented Mixer JACK support
87- Implemented framework for smarter library loading.
88 This should allow Mac (and even Windows) users to have
89 JACK functionality, and will no longer require Mac
90 users to startup HD24connect by running an AppleScript.
91- ... and made library smart loading even smarter by letting
92 it look in the program directory first, the PATH dir next,
93 and all usual library directories next. This should result
94 in library loading that Just Works in most cases and
95 will allow JACK support on all platforms.
96- Wrote documentation explaining how to build HD24tools
97 from source (Linux, 64-bit Athlon)
98- Added functionality to create projects
99- Added functionality to create songs (incl. superblock
100 song count update)
101- Made sure changes in song/drive/project names also reflect
102 properly in FST 1.00 drives
103- Added functionality to automatically pre-record silence
104 in songs on creating them
105- Added functionality to update song usage list after
106 song creation
107- Automatically select song as 'default' after creation
108- Implemented reload of drive list/catalog/project list/song list
109 after major write operations
110- User interface settings reloaded as appropriate after writing
111 to drive
112- Added options dialog to allow (among other things) specifying
113 a filename pattern for file transfers to PC
114- Made write-protect checkbox work
115- Added drive format functionality
116- Added functionality to delete songs
117- Added functionality to delete projects
118- Made 'bypass' button for mixer work
119- Added timeout-style messages to alpha display
120- Implemented functionality to display song information
121 on alpha display
122- Implemented functionality for sorting songs inside a project.
123 This allows easily reordering songs by renaming them.
124- Implemented SMPTE timecode striping- for now limited to
125 30fps nondrop starting at 00:00:00.00.
126 May not work on sample rates other than 48kHz. In fact,
127 it may not work at all.
128- Made sure superblock is updated with number of free clusters
129 after song transfer to HD24 drive/creation of new song
130- Implemented write-protect to prevent writing to drives when
131 working with header files.
132- Implemented functionality to reduce number of sectors read
133 when transferring fewer tracks. The expected performance
134 win is not very big as the number of drive seeks is about
135 the same, but the weight of the added logic is minimal.
136 Perhaps on some systems the difference is noticable. YMMV.
137- Implemented .wav writing without libsndfile. If it is missing,
138 you'll still be able to transfer such files to your computer.
139- Made sure write functionality is disabled for drives found
140 not to be valid HD24 drives (due to corruption, or perhaps
141 they're simply OS drives which we DEFINITELY don't want to
142 overwrite)
143- Implemented locate point saving
144- Implemented (preliminary) transfer-time mixing of tracks
145- Made sure song/project are made default after selecting them
146- Fixed a non critical bug where closing the program during
147 playback caused a crash.
148
149TODO: Bugs to fix:
150
151- After quickformat of a drive, catalog and related screens are
152 not updated.
153
154TO DO: Testing and packaging:
155
156- Fixme: update all of drive info page on refresh
157 (What's missing?)
158- Make sure that 'new folder' button works properly on
159 all platforms! (Fixed on Windows, TO DO on mac)
160- Distribute Mac version as Universal Binary
161- Finally get .aif, .sd2 and .dig/.sd to work properly!
162- Check all FIXME and TODO comments in code
163- Get 16-bit export to work (low priority)
164- Documentation
165
166Version 0.9.0
167
168- Implemented tabbed interface
169- Added functionality to export drive images
170- Added time stamp to catalog
171- Added drive catalog display to drive inforrmation
172- Changed default time display to 30 frames per second instead of 1/100 sec
173
174- Added the 'Recorder' with various new features
175- Proper solo/mute buttons instead of solo/mute by channel selection
176- Track arm buttons
177- 24-channel display faithfully emulating what the HD24 would show
178- Peak modes: No peak hold, momentary peak hold, continuous peak hold
179- Added locate slider to rapidly jump to any point in the song
180- Added punch in/out locate points
181- Added visual clue to transport controls showing that clicking 'set'
182 can set locate points
183- Added input monitoring (mainly Linux)
184- Added dropdown to map stereo inputs to channel pairs in various ways
185- Fancy 7-segment LED display
186- Equally fancy info display
187- Fancy, bigger graphical buttons with LED for transport control
188- Fixed a clipping bug in portaudio playback (playback only)
189
190- Added signal detection to track selection in transfer tab
191- Added dropdown to allow a flexible custom size limit for exported files
192- Added dropdown to stamp songs with a different sample rate
193
194- Added tab for transfer back to HD24
195- Added functionality that permits selecting many files at once
196- Added functionality to automatically spread multi-track files
197 across several HD24 tracks
198- Added functionality to automatically mix multi-track files to mono
199- Added functionality to allow erasing tracks
200- Added functionality to allow moving tracks (including track action)
201 up or down
202- Added functionality to clear filenames from tracks
203- Added functionality to overwrite existing audio with audio from a file.
204 Many file formats are supported (subject to what is supported by
205 libsndfile).
206- SD2 file format support (does this work now?)
207- Create new folder from file browse dialog (does this work now?)
208
209
210Version 0.8.2
211
212- Hardened the software in some places to be more crash-resistant
213 in handling corrupt drives
214- Some compatibility enhancements
215- Fixed a bug in the calculation of the total number of bytes to export,
216 which caused the auto-split popup not to be displayed in some cases.
217
218Version 0.8.1
219
220- Fixed bug that caused auto-split popup to always appear for long recordings,
221 even if only a small fragment was being exported.
222
223Version 0.8.0
224
225- Printing disk contents on paper and file
226- Entirely replaced export engine for faster exports
227- Created OS native installers.
228- Allow transferring multiple songs at once (song choice 'All Songs')
229- Added possibility to export to stereo and multi-track files.
230
231Version 0.7
232
233- This never-released version adds high samplerate support.
234
235Version 0.6.2
236
237- Fixed a bug that caused the Windows version to lock up when loading a header file
238- Initial release for MacOS/X 10.4
239
240Version 0.6.1
241
242- Fixed a bug in the drive name generation in Windows
243
244Version 0.6
245
246- Initial Macintosh OS/X port. Still flaky due to interesting behavior of packages that HD24connect depends on.
247- Relabeled button "Transfer to PC" as "Transfer to Mac" for OS/X version.
248- Fixed bug that cleared surface of cancel button during transfers.
249- Added warning dialog to improve user friendliness when no HD24 drive is detected on program startup
250- Added menu option 'File/Detect HD24 drives' to allow re-scanning for drives after program startup.
251- Project directory browser now uses OS native file dialog.
252- Added menu option to allow creating header files from within hd24connect
253- Removed portaudio dependency (this has no visible impact).
254- Added Estimated Time of Arrival in transfers
255- Removed dependency on command line options to enable recovery features
256- Added application (desktop) icon for Windows
257- Allow exporting to more different file formats (currently WAV and AIFF)
258- Altered file naming for export
259- Cleaned up code that deals with drive name generation
260- Version control is now in place, allowing multiple people to work
261 on the project at the same time (Welcome, Randy!)
262
263Version 0.5
264
265- Added --force feature to allow using hd24 disks with invalid MBR.
266- Added --header feature which allows to use a fixed header file along with
267 a corrupt disk. This permits us to recover audio without need to modify
268 data on the corrupted disk.
269- Added portaudio playback. For the Windows version this means that audio
270 preview is now supported, while under Linux the Jack Audio Connection Kit
271 is no longer required for audio preview.
272- Fixed a bug in Linux audio preview. This minor bug affected exactly
273 1 user (me).
274- Added dialog to allow renaming drives, projects and songs (in memory only)
275- Altered project handling to more easily allow in-memory edits of projects
276
277Version 0.4
278
279- Fixed a minor bug with the file write caching.
280- Added a button to allow the user to interrupt a transfer.
281- Fixed flakyness in audio playback
282- Added dialog to allow manually setting locate points
283- Fix bug which causes windows version not to display song names
284- Added feature to allow setting loop start/end during playback
285- Implemented export to wav (for now, instead of raw) using libsndfile
286- Implemented basic loop mode for audio playback.
287
288Version 0.3
289
290- Added file write caching to speed up export under Windows.
291- Added direct playing under Linux (still flaky)
292- Altered library to resolve issue with STL string memory leaks
293
294Version 0.2
295
296- Added support for locate points.
297- Added backwards export.
298- Initial windows version.
299
300Version 0.1
301
302- First workable version.
303
304HD24hexview revision history and roadmap
305========================================
306
307Future
308
309- Verify/Fix any remaining issues with 4 GB limit on Windows
310- Correctly determine drive size
311- Allow multi-sector paste (from file).
312
313Version 1.4beta
314
315- Replaced code for windows drive size detection.
316
317Version 1.3beta
318
319- Added expert mode as safety switch to prevent accidentally writing to disk.
320- In expert mode, added a big fat warning for writing to the default boot
321 disk (/dev/hda or \\.\PHYSICALDRIVE0) and a (not so big & fat, but still)
322 warning for writing to other devices.
323
324Version 1.2beta
325
326- Added d-<hex> feature to dump sector <hex> counting from end of disk
327 This allows dumping the last sector from disk without having to figure
328 out the number of sectors based on brand and model of the disk.
329 Unfortunately, this does not work properly yet for Windows devices.
330
331Version 1.1beta
332
333- Fixed a bug in windows version that required output file to already exist
334 before writing
335- Added single-sector checksum (no multi-sector checksum yet)
336
337Version 1.0beta
338
339- Implemented compare
340- Implemented write offset
341
342Version 0.3
343
344- Implemented edit and write back of sectors
345- Implemented single-sector paste
346- Ported to Windows
347- Resolved a 4 GB issue with windows version
348- Allowed using files as devices
349
350Version 0.2
351
352- Implemented support for setting blocks
353- Resolved 4 gigabyte limitation for linux
354- Implemented scan
355- Implemented write to file
356
357Version 0.1
358- Implemented code to autodetect HD24 disks
359- Implemented feature to navigate disks with +/-/o
360
361========================================================
362Version x.x
363
364Spare ideas/suggested future features:
365
366- Allow exporting audio based on a 'guide track'. If a nonempty audio track has been exported, after which the disk has gotten corrupted, this audio track can be used to find back the other tracks without allocation information.
367
368 Will not be implemented anytime soon; this scenario is too
369 rare. Also, should recovery be needed, other ways exist to do so.
370
371- Allow the program to use installed audio encoders to
372 encode to mp3/flac/etc
373
374- Time line/draggable export locators
375
376 Proposed is a graphical display to allow
377 visually setting locate points for export.
378 Alternatively, a 'scrub editor' style display would be
379 workable.
380 While interesting, it would be rather time consuming
381 to build such a time line. For now, a draggable slider
382 is made available to ease the pain a bit.
383
384- Check available drive size before export
385
386 I'm not sure if I already implemented this. Obviously,
387 it is a required feature.
388
389- Allow transferring multiple projects at once
390 (project choice 'All projects')
391
392 Will probably be implemented at some point, but
393 custom song naming convention is then required first.
394
395- Allow automatic deletion of files when transfer is interrupted
396
397- Normalizing audio as it is being exported
398
399 This will require analyzing the entire export range
400 prior to export (possibly more, if the export is a
401 single song of an entire live performance; it is likely
402 that we'd want to normalize the whole performance
403 equally.
404
405- Allow exporting to different bit depths
406- MIDI control (both controlling HD24tools via MIDI or
407 let HD24tools control HD24 recorder via MIDI).
408
409 The benefit of allowing HD24tools control via MIDI
410 is that frequently requested functionality that the
411 HD24 does not support is a possibility; for instance,
412 the HD24 does not allow selecting songs via MIDI,
413 whereas such implementation in HD24tools would be
414 a fairly simple matter once it is MIDI enabled.
415 Someone also mentioned that possibily a recording
416 log could be kept by HD24tools when connected to
417 a HD24 via MIDI by simply keeping track of record
418 events. Unfortunately the HD24 does not send MIDI
419 for track record enable, even though it supports
420 track arming via MIDI (the good news is that some
421 MIDI functionality is supported even though the
422 HD24 itself does not send out MIDI for those actions).
423
424- Storing metadata on HD24 drives
425
426 There are some possibilities for this. One way is
427 to create a song contaning (for instance) a FAT
428 file system, and using some unused space in the
429 song entries to allow entries in that FAT file
430 system to uniquely point to them; this would allow
431 storing song-unique info (such as track data, etc)
432 in that file system.
433
434- Locate points in directory listing
435
436 This would make the catalog file a fair bit longer.
437 As such it would have to be an option that could
438 be turned on/off.
439
440- Virtual BRC application
441
442 This would be limited to whatever MMC supports.
443
444- Copying projects
445- Batch transfer
446- One click drive backup
447
448 These all come down to the same thing: find a
449 way to not require user intervention while
450 transferring large amounts of data.
451 Perhaps a 2-click drive backup (with the possibility
452 to edit the batch before export) is more useful than
453 a 1-click backup.
454 The main benefit (not having to wait actively while
455 audio is being transferred) is the same.
456
457- Calculate approx. occupied drive space per song, and add
458 to catalog.
459
460- Display currently selected song/project on other tabs as
461 well
462 - current song is now displayed on alpha display.
463
464- Allow different UIs (proposed is command line interface,
465 non-X interface, Cocoa interface, ...)
466
467- Control surface support, to allow using MIDI-enabled
468 consoles to control the HD24tools mixer/recorder
469
470- Add Vista tip to manual (regarding admin account for write
471 support)
472 Also add this info:
473 http://tech.groups.yahoo.com/group/hd24/message/12102
474
diff --git a/doc/SYXformat.txt b/doc/SYXformat.txt
new file mode 100644
index 0000000..9c02ccf
--- /dev/null
+++ b/doc/SYXformat.txt
@@ -0,0 +1,22 @@
1SYX file format
2===============
3The SYX file format packs every 7 8-bit bytes of a binary file
4into 8 7-bit bytes, which allows for a MIDI compatible file.
5These files can be converted to true binary files using the
6hd24syx2bin utility.
7
8Once converted, the format seems to be as follows:
9
10byte 0x00-0x07: string 'HD24CODE'
11byte 0x08-0x0b: unknown (checksum?)
12byte 0x0c-0x0f: version number string (e.g. "1.20")
13byte 0x10-0x13: 32-bit word, value 0
14byte 0x14-0x1b: Release date string (MM/DD/YY)
15byte 0x1c-0x1f: 32-bit word, value 0
16byte 0x20-0x27: Build time (hh:mm:ss)
17byte 0x28-0x2b: 32-bit word, value 0
18byte 0x2c-0x2f: binary file length in byte.
19 for version 1.20, file length is
20 712736 so bytes 0x2c-0x2f are
21 0xae020 or 0x00, 0x0a, 0xe0, 0x20
22
diff --git a/doc/TESTPLAN.txt b/doc/TESTPLAN.txt
new file mode 100644
index 0000000..ceb4849
--- /dev/null
+++ b/doc/TESTPLAN.txt
@@ -0,0 +1,130 @@
1Testplan for HD24tools
2
3Hexview
4- startup without HD24 drive connected
5- startup with HD24 connected
6- startup with --dev option (dev=drive image file, dev=device file, dev=normal file): use either clean image or image know to have problems (unexpected end
7of song, corrupt header, etc)
8- startup with --dev and --force
9- Specific to hexview: d-1 (sectorcount relative to end of disk)
10 How much time does the detection take under windows?
11
12HD24connect:
13- startup without HD24 drive connected
14- startup with 1 HD24 drive connected
15- startup with multiple HD24 drives connected
16- startup with --dev option (device node and image file, respectively)
17- ... ditto, AND with/without an HD24 drive connected
18- startup with both --dev en --force options
19- As above, but by selecting these options from the GUI
20- And again. Any irregularities?
21- Irregularities with drives/images containing:
22 0, 1, more projects? 99 projects?
23- Irregularities with projects containing
24 0, 1, more songs? 99 songs?
25- Irregularities when selecting songs with:
26 0 length?
27 0 tracks? (is this possible?)
28- Irregularities when selecting option '--All songs--' ?
29- Irregularities on renaming drive/project/song?
30- Does the 'new folder' button work while browsing the project directory?
31
32Exporting:
33- HD24connect should detect when the exportdirectory does not (or no longer)
34 exist when the export transfer is started.
35
36Special cases:
37- Exporting a song with zero length
38- Exporting 0 samples
39- Exporting 1 sample
40- Exporting > 2GigaSamples
41- Auto split enabled/disabled
42
43Test for all sample rates:
44- What name is being used (renamed or not?)
45- Full songs in all formats
46- Export all tracks
47- Export 0 tracks
48- Export only track 1, track 2, ... track N (n=number of tracks)
49- Songs > 2 GiB/track (to test automatic splitting)
50- Start locpoint=START, end locpoint=END
51- start locpoint=START, end locpoint=2 samples
52- start locpoint=START, end locpoint=10 sec
53- start locpoint=1 sec, end locpoint=10 sec
54- start locpoint=END, end locpoint=START
55- start locpoint=1 sample, end locpoint=END
56- start locpoint=1 sample, end locpoint=2 samples
57- start locpoint=1 sample, end locpoint=10 sec
58- start locpoint=1 sample, end locpoint=END
59- start locpoint=1 sec, end locpoint=END
60
61Select song 'All songs' on a drive not containing double songnames,
62export to an empty directory.
63- No questions are asked regarding overwriting files.
64- Nothing is mentioned about double song names (or prefixing song names).
65- HD24connect correctly detects if any songs with those prefixes already exist.
66- Are existing filenames properly detected when exporting large files (that
67 need splitting)? e.g. files with suffix _part1, _part2.
68
69TRANSPORT CONTROL/audio preview
70- To be tested on songs of either high or low sample rates
71- All possible state changes: stop->play, play->stop, etc.
72- Set locatepoints
73- Loop mode
74- Drag locate bar
75- FF past end of song possible? (by changing songs? by using JACK?)
76- REW to negative time code possible? (by using Jack?)
77- Change song during playback, including the possibility of changing song
78 at a time code not present in both songs
79- Export audio during playback could cause audio to sound choppy but the exported audio should be OK.
80
81RECOVERY FEATURES
82- Creating a drive image:
83 - What happens if there isn't enough drive space to hold the image?
84- Load created drive image and use it as HD24 drive
85- If this drive image is opened (File->open drive image), and we select
86 file->recovery->select device, the filename of the current drive image
87 should be reported as current device.
88- Switch device
89- Loading longliverec header: Can audio be exported correctly? (is it similar/
90 equal to the audio of the audio preview?
91- For both high and low sample rates?
92- Selecting a non-HD24 drive as drive image (for instance a random file,
93 or windos drive) should not cause HD24tools to crash during playback or
94 export.
95
96Other features
97- Exporting and printing file index should work with any number of projects and any number of songs per project. It is especially important to test large number of songs as only this will reveal memory leaks.
98
99TRANSFER TO HD24 DRIVE
100Tests to run that do not perform allocation:
101- Start transfer without files
102- With 1 file (in first slot)
103- With 1 file (in 2nd slot, in last slot) (using a clean image)
104- With 1 file (in 2nd slot, in last slot) (using an image with track 1 in use)
105- 16 track song/24 track song
106- With multiple files, less than the number of tracks
107- With multiple files, equal to the number of tracks
108- with files smaller than the song size
109- with files equal to the song size
110- with files larger than the song size
111- with multi channel files
112- with files that have a different sample rate
113- with files that have a different bit depth
114- with several files of various formats at once
115
116Tests that do perform allocation:
117- Start with an empty song
118- Transfer a file with 0 length to HD24
119- Transfer a file with >0 length to HD24
120- Transfer a file with even greater length to HD24
121- Create another song, transfer some audio to it.
122 Is start of song cluster word-aligned in usage table?
123- Extend the first song. Does this work right?
124 Is the continuation of the song word-aligned?
125- What happens if the file to transfer is longer than
126 the remaining amount of drive space?
127
128
129
130
diff --git a/doc/artwork/DMG_Background.png b/doc/artwork/DMG_Background.png
new file mode 100644
index 0000000..720305d
--- /dev/null
+++ b/doc/artwork/DMG_Background.png
Binary files differ
diff --git a/doc/artwork/DMG_Background.psd b/doc/artwork/DMG_Background.psd
new file mode 100644
index 0000000..6c648b2
--- /dev/null
+++ b/doc/artwork/DMG_Background.psd
Binary files differ
diff --git a/doc/artwork/HD24Connect.icns b/doc/artwork/HD24Connect.icns
new file mode 100644
index 0000000..17714bb
--- /dev/null
+++ b/doc/artwork/HD24Connect.icns
Binary files differ
diff --git a/doc/artwork/HD24_vipower.jpg b/doc/artwork/HD24_vipower.jpg
new file mode 100644
index 0000000..b667e9d
--- /dev/null
+++ b/doc/artwork/HD24_vipower.jpg
Binary files differ
diff --git a/doc/artwork/Icon.psd b/doc/artwork/Icon.psd
new file mode 100644
index 0000000..77f35a6
--- /dev/null
+++ b/doc/artwork/Icon.psd
Binary files differ
diff --git a/doc/artwork/hd24connect.jpg b/doc/artwork/hd24connect.jpg
new file mode 100644
index 0000000..e6d0695
--- /dev/null
+++ b/doc/artwork/hd24connect.jpg
Binary files differ
diff --git a/doc/artwork/hd24display.png b/doc/artwork/hd24display.png
new file mode 100644
index 0000000..c701008
--- /dev/null
+++ b/doc/artwork/hd24display.png
Binary files differ
diff --git a/doc/artwork/hd24pc.jpg b/doc/artwork/hd24pc.jpg
new file mode 100644
index 0000000..70b0278
--- /dev/null
+++ b/doc/artwork/hd24pc.jpg
Binary files differ
diff --git a/doc/hd24tools_manual.odt b/doc/hd24tools_manual.odt
new file mode 100644
index 0000000..691bd94
--- /dev/null
+++ b/doc/hd24tools_manual.odt
Binary files differ
diff --git a/doc/hd24tools_manual.pdf b/doc/hd24tools_manual.pdf
new file mode 100644
index 0000000..cbb32ff
--- /dev/null
+++ b/doc/hd24tools_manual.pdf
Binary files differ