diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/ADATFS.txt | 529 | ||||
-rw-r--r-- | doc/COMPILING.txt | 39 | ||||
-rw-r--r-- | doc/DEVELOPING.txt | 270 | ||||
-rw-r--r-- | doc/HARDWARE.txt | 34 | ||||
-rw-r--r-- | doc/LIVERECOVERY.txt | 25 | ||||
-rw-r--r-- | doc/MAILING.txt | 28 | ||||
-rw-r--r-- | doc/RELEASE.txt | 474 | ||||
-rw-r--r-- | doc/SYXformat.txt | 22 | ||||
-rw-r--r-- | doc/TESTPLAN.txt | 130 | ||||
-rw-r--r-- | doc/artwork/DMG_Background.png | bin | 0 -> 101824 bytes | |||
-rw-r--r-- | doc/artwork/DMG_Background.psd | bin | 0 -> 521073 bytes | |||
-rw-r--r-- | doc/artwork/HD24Connect.icns | bin | 0 -> 122133 bytes | |||
-rw-r--r-- | doc/artwork/HD24_vipower.jpg | bin | 0 -> 118233 bytes | |||
-rw-r--r-- | doc/artwork/Icon.psd | bin | 0 -> 263021 bytes | |||
-rw-r--r-- | doc/artwork/hd24connect.jpg | bin | 0 -> 17791 bytes | |||
-rw-r--r-- | doc/artwork/hd24display.png | bin | 0 -> 84562 bytes | |||
-rw-r--r-- | doc/artwork/hd24pc.jpg | bin | 0 -> 72433 bytes | |||
-rw-r--r-- | doc/hd24tools_manual.odt | bin | 0 -> 1243066 bytes | |||
-rw-r--r-- | doc/hd24tools_manual.pdf | bin | 0 -> 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 @@ | |||
1 | HD24 ADAT file system format | ||
2 | |||
3 | Reading ADAT HD24 disks | ||
4 | ----------------------- | ||
5 | In the ADAT FST file system, the part of the file system | ||
6 | that contains directory and song info is grouped in | ||
7 | 32-bit words. When read on a regular PC, each group of | ||
8 | 4 bytes will appear reversed. As such, when | ||
9 | a sector contains a string 'TADATSF ', we should read this | ||
10 | as 'ADAT FST'. In this document, we will assume that | ||
11 | doing the byte swapping needed to properly read the sectors | ||
12 | has already been done. | ||
13 | |||
14 | It should be noted that the actual audio data has not | ||
15 | undergone such byte swapping. As such, WAV data | ||
16 | retrieved from the HD24 by FTP is stored in the same | ||
17 | byte order as the data on disk. | ||
18 | |||
19 | The sector size used on HD24 disks is 512 bytes. | ||
20 | ADAT FST boasts disk support for disks up to 2 Terabyte. | ||
21 | This is achieved by using 32-bit pointers that point to | ||
22 | sector numbers. We will refer to these pointers as | ||
23 | sectorpointers. | ||
24 | |||
25 | Writing ADAT HD24 disks | ||
26 | ----------------------- | ||
27 | Writing HD24 disks is slightly tricky, because FST | ||
28 | filesystems contain backup copies of file system | ||
29 | sectors to help guarantee data consistency. | ||
30 | As a result, when we make an alteration to only the | ||
31 | first copy of the file system structure on disk, the | ||
32 | disk is considered inconsistent and the backup copy will | ||
33 | be written back by the HD24 recorder at the next use. | ||
34 | |||
35 | The backup data is stored at the end of the disk, | ||
36 | in block-reverse order. | ||
37 | The original order is something like this: | ||
38 | |||
39 | block 0 | ||
40 | sector 0 | ||
41 | block 1 | ||
42 | sector 1 | ||
43 | block 2 | ||
44 | sectors 2,3,4 | ||
45 | block 3 | ||
46 | sectors 5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 | ||
47 | block 4-102 | ||
48 | 1 sector of project info | ||
49 | block 103- | ||
50 | song info block (2 sectors) | ||
51 | song allocation info block (5 sectors) | ||
52 | |||
53 | The backup blocks are stored in reverse order, | ||
54 | however each backup block maintains the original | ||
55 | sector ordering. That is, | ||
56 | |||
57 | block 0 has a backup at sector (end-0) | ||
58 | (where end=the last sector on disk) | ||
59 | |||
60 | block 1 has a backup at sector (end-1) | ||
61 | |||
62 | block 2, sectors 2,3,4 are backed up at sectors | ||
63 | end-4, end-3, end-2, respectively; | ||
64 | |||
65 | block 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 | |||
70 | The validity of a block is indicated by a checksum which | ||
71 | is stored in the last 4 bytes of a block (bytes 0x1FC, | ||
72 | 0x1FD, 0x1FE, 0x1FF of the last sector of a block). | ||
73 | |||
74 | The value of the checksum is such that sum of all 32-bit | ||
75 | words in the block (which may span several sectors) is 0. | ||
76 | When writing a block, we must make sure that the resulting | ||
77 | checksum of the block adds up to 0 again. | ||
78 | |||
79 | A second check refers to bytes 0x1f8-0x1fb of the last | ||
80 | sector of a block. Bytes 0x1F8 and 0x1F9 contain the | ||
81 | least significant 16 bit of the sector number at which | ||
82 | the block starts. Thus, a project block which contains | ||
83 | 1 sector and starts on sector 0x14 will contain the | ||
84 | values 0x14, 0x00 on bytes 0x1f8 and 0x1f9; a song entry | ||
85 | 2 sectors long, and ending on sector 0x78 will contain | ||
86 | the byte values 0x77, 0x00 on offset 0x1f8 and 0x1f9, | ||
87 | respectively (because the song entry starts on sector | ||
88 | 0x77). Bytes 0x1FA and 0x1FB of the last sector of the | ||
89 | block contain the bit-inverted value of 0x1F8 and 0x1F9**. | ||
90 | |||
91 | ** This paragraph assumes the sector is not byte-swapped | ||
92 | as described in the first paragraph of the document. | ||
93 | |||
94 | When a block is not equal to its backup, the checksum | ||
95 | of both is validated. If one is valid and the other is | ||
96 | not, the valid copy is written over the invalid copy. | ||
97 | |||
98 | General ADAT FST layout | ||
99 | ----------------------- | ||
100 | The general ADAT FST layout is as follows: | ||
101 | |||
102 | ----------------------------------------------------------- | ||
103 | Sector 0 / Offset 0000:0000h | ||
104 | Superblock, identifies drive as an ADAT FST drive. | ||
105 | Size=512 bytes/0200h | ||
106 | ----------------------------------------------------------- | ||
107 | Sector 1 / Offset 0000:0200h | ||
108 | Drive info | ||
109 | Size=512 bytes/0200h | ||
110 | ----------------------------------------------------------- | ||
111 | Offset 0000:0400h | ||
112 | 3 sectors, Song Entry Usage Table | ||
113 | Size=600h | ||
114 | ----------------------------------------------------------- | ||
115 | Offset 0800h | ||
116 | 15 sectors, Drive Usage Table | ||
117 | size=1e00h | ||
118 | ----------------------------------------------------------- | ||
119 | / Offset 0000:2800h | ||
120 | Project info, 1 sector (512 bytes) per project entry | ||
121 | Size: 99*200h=c600h | ||
122 | ----------------------------------------------------------- | ||
123 | / Offset 0000:ee00h | ||
124 | Song info, 7 sectors (3584 bytes) per song entry | ||
125 | ----------------------------------------------------------- | ||
126 | Undo info | ||
127 | ----------------------------------------------------------- | ||
128 | Audio data | ||
129 | ----------------------------------------------------------- | ||
130 | File system backup | ||
131 | ----------------------------------------------------------- | ||
132 | |||
133 | |||
134 | Superblock layout | ||
135 | ----------------- | ||
136 | Offset 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 | ||
140 | Offset 10h-13h Size of audio block (0x480) | ||
141 | Offset 14h-17h Number of audio blocks per allocation cluster | ||
142 | Offset 18h-1fh 0 ? | ||
143 | Offset 20h-23h 0 ? | ||
144 | Offset 24h-27h 0 ? | ||
145 | Offset 28h-2bh 1 ? sectors in superblock? | ||
146 | Offset 2ch-2fh 1 ? sectors in drive info block | ||
147 | |||
148 | Offset 30h-33h 2 ? sectornum of song entry usage table? | ||
149 | Offset 34h-37h 3 ? sectors in song entry usage table? | ||
150 | |||
151 | Offset 38h-3bh 5 ? sectornum containing allocation info? | ||
152 | Offset 3ch-3fh 15/0fh - Number of sectors in allocation table? | ||
153 | |||
154 | Offset 40h-43h 042fh=1071 ?? (anything to do with undo buffer?) | ||
155 | -- | ||
156 | On 1.2gb drive this formats as 0x20 00 00 00 | ||
157 | -- | ||
158 | Offset 44h-47h Number of free audio clusters on disk | ||
159 | Offset 48h-4bh SectorPointer to project info | ||
160 | Offset 4ch-4fh 1 | ||
161 | Offset 50h-53h Max allowed no. of projects? | ||
162 | Offset 54h-57h Max allowed no. of songs per project? | ||
163 | Offset 58h-5bh SectorPointer to first song info entry | ||
164 | |||
165 | Offset 5ch-5fh 2 (sectors of song info entry w/o alloc info?) | ||
166 | Offset 60h-63h 5 (sectors of alloc info per song entry?) | ||
167 | Offset 64h-67h 7 (number of sectors that song info entries are apart?) | ||
168 | Offset 68h-6bh current number of songs on disk | ||
169 | Offset 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 | |||
174 | Offset 7ch-7fh Sector pointer to audio data block on disk (0x1397f6). | ||
175 | Offset 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 | |||
197 | offset 84h-87h 32-bit word, highest sector number on disk. | ||
198 | A backup of the first sector can be found here. | ||
199 | offset 88h-1F7 (empty, zero - reserved for future use?) | ||
200 | offset 1f8-1FF Checksum information. | ||
201 | |||
202 | Drive info layout | ||
203 | ----------------- | ||
204 | Sector 1 | ||
205 | Offset 0 8 byte drive name (for compatibility with | ||
206 | older ADAT FST versions), should be considered | ||
207 | obsolete. Replaced by name at offset 01bh. | ||
208 | Offset 8-9 null bytes | ||
209 | Offset 0ah-0bh 2 more bytes for drive name. Should be considered | ||
210 | obsolete | ||
211 | Offset 10h SectorPointer to last active project. | ||
212 | offset 20h List of 32-bit sector pointers to all projects. | ||
213 | Offset 01b8h 64-byte drive name. Null-byte terminated | ||
214 | when shorter than 64 chars. | ||
215 | |||
216 | Song Entry Usage Table | ||
217 | ---------------------- | ||
218 | FST 1.10 allows for 99 projects of 99 songs each, giving for | ||
219 | 9801 song entries. Each song entry is not necessarily pre- | ||
220 | allocated to any given project; song entry 0 may belong to | ||
221 | project 0, while song entry 1 may belong to another project. | ||
222 | The Song Entry Usage Table provides a quick way to look up | ||
223 | the next free song entry without having to go through all | ||
224 | projects to see which song entries are in use. | ||
225 | |||
226 | Each bit in the Song Entry Usage Table represents a song. | ||
227 | When 0, the song entry is not in use; when 1, it is. | ||
228 | |||
229 | Drive Usage Table | ||
230 | ----------------- | ||
231 | Each bit in the Drive Usage Table represents a cluster. When 0, the | ||
232 | cluster is free; when 1, the cluster is in use. | ||
233 | 32-bit words are filled one by one, least-significant bit first, | ||
234 | until the entire word has the value 0xFFFFFFFF. In other words, the | ||
235 | table starting with the following words have the meaning as described: | ||
236 | |||
237 | 0x1 contains 1 bit on -> first cluster allocated | ||
238 | 0x3 contains 2 bits on -> first 2 clusters allocated | ||
239 | 0x1f contains 5 bits on -> first 5 clusters allocated | ||
240 | 0x1ff contains 9 bits on -> first 9 clusters allocated. | ||
241 | |||
242 | At the end of the drive usage table, some space seems to be reserved, | ||
243 | possibly representing the backup of the file system info, or something | ||
244 | along those lines. The last 32-bit word of the Drive Usage Table is a | ||
245 | checksum. When all 32-bit words in the entire Drive Usage Table are | ||
246 | summed, the result must be 0. | ||
247 | |||
248 | Project info | ||
249 | ---------------------- | ||
250 | The project info consists of (by default) 99 entries of 512 bytes each. | ||
251 | The actual number of projects is contained by the superblock. | ||
252 | |||
253 | 100 project entries would be 0xc800 bytes. | ||
254 | As projects are numbered starting at 01, a maximum of 99 projects | ||
255 | is possible, giving for 0xc600 bytes. | ||
256 | |||
257 | How to distinguish between an empty project and an unused project entry? | ||
258 | Answer: Sector 1 (Drive info) contains the project list. | ||
259 | |||
260 | Projects not mentioned in the drive info project list are empty projects. | ||
261 | |||
262 | Each project entry has the following layout: | ||
263 | |||
264 | Offset 0 8-byte project name (obsolete) | ||
265 | Offset 8 4-byte (2 bytes of which are partial project name too) | ||
266 | offset 0ch-0fh Number of songs in use in project | ||
267 | offset 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. | ||
272 | Offset 01b8h 64-byte project name. Null-byte terminated if project | ||
273 | name is less than 64 bytes long. | ||
274 | |||
275 | Song info table | ||
276 | --------------- | ||
277 | The song info table is part of a project entry. It is a list of 32-bit | ||
278 | pointers to sectors containing song info. | ||
279 | |||
280 | Song info | ||
281 | ------------------------ | ||
282 | Song info starts at disk offset 0xee00h, or at | ||
283 | sector 119 (the 120th sector on disk) (depending on | ||
284 | info in superblock). | ||
285 | |||
286 | Each song entry has a length of 2 sectors and is immediately | ||
287 | followed by 5 sectors of file allocation info. | ||
288 | |||
289 | Locate points/loops and track slip info is included in the song | ||
290 | entries. | ||
291 | |||
292 | Offset 00h-03h 32-bit number indicating no. of audio blocks in song | ||
293 | Offset 04h-07h ?0 | ||
294 | Offset 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 | |||
301 | Offset 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 | |||
315 | Offset 10h-13h Status flags???????????????????? | ||
316 | Offset 0x12h bit 0x10h -> write protect????? | ||
317 | |||
318 | Offset 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 | |||
324 | Offset 30h ? | ||
325 | |||
326 | Offset 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 | |||
353 | Offset 32h-33h Two more filename characters for short filename, | ||
354 | used in obsolete FST 1.0 standard. | ||
355 | |||
356 | Offset 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 | |||
365 | Offset 37h Bit depth (18h or 24 by default) | ||
366 | |||
367 | offset 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 | |||
377 | offset 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 | |||
388 | offset 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 | |||
397 | Offset 0b8h-1e3h Locate point block | ||
398 | |||
399 | Offset 3b8h-3e7h Full song name, max 64 bytes; | ||
400 | terminated by null byte when less | ||
401 | than 64 bytes | ||
402 | |||
403 | Offset 400h-???? File allocation info (see below) | ||
404 | |||
405 | Locate point block | ||
406 | ------------------ | ||
407 | The locate point block consists of 24 locate point entries.s | ||
408 | |||
409 | Locate point entry | ||
410 | ------------------ | ||
411 | Each locate point entry has the following layout: | ||
412 | Offset 0-3 32-bit time code | ||
413 | The time code represents the sample number | ||
414 | within the song. | ||
415 | Offset 4-11 The 8-byte locate point name | ||
416 | |||
417 | Locate point 0 indicates the relative time offset of the | ||
418 | song. This is usually 0, but may be set to other values for | ||
419 | tape transfers. | ||
420 | |||
421 | The locate point is a 32-bit unsigned integer which contains the | ||
422 | sample number within the song. In other words, in a 44.1 khz | ||
423 | song, the locate point 0:0:1:0 (hours/minutes/seconds/frames) | ||
424 | is encoded as the number 44100. Thus, the locate point furthest | ||
425 | in the song is 2^32=4294967296 samples. | ||
426 | This is enough for 44.1khz songs with a length of 27 hours. | ||
427 | |||
428 | File allocation info | ||
429 | ==================== | ||
430 | The file allocation info consists of file allocation entries. | ||
431 | Each file allocation entry has the following format: | ||
432 | |||
433 | Offset 00h-03h Starting sector number for audio block | ||
434 | Offset 04h-07h Number of audio blocks in allocation block | ||
435 | |||
436 | In a valid song, the the 32-bit word on offset 0 of the song | ||
437 | info equals the total sum of the number of audio blocks in the | ||
438 | file allocation info. | ||
439 | |||
440 | In my disk image, I see songs that had been previously deleted; | ||
441 | the song length in audio blocks is zero for these. This also | ||
442 | goes for songs that have no audio data yet. | ||
443 | |||
444 | Audio data layout | ||
445 | ================= | ||
446 | The audio data of a FST file system is stored in a raw, uncompressed | ||
447 | format. Audio data that consists of multiple channels is interlaced | ||
448 | blockwise (as opposed to sample-by-sample interlacing). | ||
449 | |||
450 | The data is stored as 24-bit signed little endian integer data. | ||
451 | |||
452 | The typical audio block size as indicated in the superblock is | ||
453 | 0x480 sectors. In stereo audio, each subblock is then 1/2 audio blocks | ||
454 | or 0x240 sectors per channel. | ||
455 | |||
456 | As the number of tracks increases, the block size per track decreases | ||
457 | proportionally. | ||
458 | |||
459 | The default audio block size of 0x480 sectors lets itself be divided | ||
460 | into 2,4,6,8,12,16,24 tracks (with a sample size of 24 bit). Each channel | ||
461 | then takes up 0x240, 0x120, 0xc0, 0x90, 0x60, 0x48, 0x30 sectors, | ||
462 | respectively assuming 0x480 blocks per sector. In high sample rate | ||
463 | modes, channels are paired to accomodate for the doubled sample rate. | ||
464 | This is why in high sample rate mode a max of 12 channels are possible, | ||
465 | while the maximum song length is still over 27 hours on 88.2 kHz. | ||
466 | |||
467 | |||
468 | Not yet accounted for in this document | ||
469 | ====================================== | ||
470 | |||
471 | How the undo buffer is used (however, this is not relevant because the | ||
472 | undo buffer is cleared after each power off. It might as well exist | ||
473 | in RAM only). | ||
474 | |||
475 | How pitch info is stored in the songs | ||
476 | auto play | ||
477 | auto rtn | ||
478 | auto rec | ||
479 | |||
480 | HD24tools extensions to FST | ||
481 | =========================== | ||
482 | An extension is proposed where a song on a HD24 drive is used as data | ||
483 | area, to store non-audio information associated with a song or project. | ||
484 | This would allow HD24 owners to store track notes, mix settings, | ||
485 | protools projects and so on along with their songs. | ||
486 | |||
487 | A degree of compatibility with the HD24 is desired; although the HD24 | ||
488 | will not be able to use the information, it should also not corrupt it. | ||
489 | |||
490 | The HD24 does not offer unique file names; moreover, the position of a | ||
491 | file is not constant within the FS. As a result, songs have no unique | ||
492 | identifier that allows other data to be associated with them. | ||
493 | |||
494 | It is proposed to use bytes 0x3a0-0x3bf of each song entry as unique | ||
495 | identifier. Testing shows that the HD24 recorder does not touch these | ||
496 | bytes, even after a scandisk operation. Moreover, when a song is copied | ||
497 | to another drive, these bytes are copied over as well. | ||
498 | |||
499 | A single HD24 song would provide ample storage space for most purposes. | ||
500 | Additionally, by using a single song only, the negative impact to the | ||
501 | end user is minimal as no users have ever been registered to actually | ||
502 | create 99 project of 99 songs. To prevent the HD24 from corrupting the | ||
503 | contents of the song, it can be created as 0-track song; previous | ||
504 | experiments have shown that the track count is flexible. Having a song | ||
505 | marked as 0 track prevents the HD24 from arming tracks or playing back | ||
506 | audio from the song, and will give a user some feedback about the nature | ||
507 | of the song, without causing the HD24 to claim that the song is corrupt. | ||
508 | A track count of 0 survives a scandisk command, and it seems that the | ||
509 | HD24 permits copying such songs to other drives. | ||
510 | |||
511 | A possible way to store data in the song is to have the data song | ||
512 | contain a FAT file system. The advantage of the FAT file system is | ||
513 | that it is well documented, and probably there will be library code | ||
514 | available that will ease the implementation of an embedded FAT | ||
515 | system on HD24 drives. | ||
516 | |||
517 | The root directory of the file system shall contain a 'songdata' | ||
518 | dir. This data directory shall contain a subdirectory named after the | ||
519 | ID of each song. Of course the file names need to be long enough; if | ||
520 | this is not possible, a map file may be created to contain mappings | ||
521 | from song ID to songname subdirectory ID. | ||
522 | |||
523 | Data placed in the appropriate songname directory is automatically | ||
524 | associated with the song. Should we so desire, we can also create a | ||
525 | 'projdata' directory. | ||
526 | |||
527 | By keeping the songdata directory structure flat, songs can be moved | ||
528 | across 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 @@ | |||
1 | COMPILING HD24TOOLS | ||
2 | |||
3 | Instructions for Linux (preferably Debian/Ubuntu based): | ||
4 | |||
5 | Get the source code from svn on HD24tools.com | ||
6 | |||
7 | sudo 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 | |||
9 | Note: You may still need to install libflac. | ||
10 | |||
11 | make clean | ||
12 | ./configure | ||
13 | make | ||
14 | |||
15 | mkdir ~/HD24tools | ||
16 | cp hd24connect ~/HD24tools/ | ||
17 | cp hd24hexview ~/HD24tools/ | ||
18 | cp hd24info ~/HD24tools/ | ||
19 | cp hd24towav ~/HD24tools/ | ||
20 | cp hd24wavefix ~/HD24tools/ | ||
21 | ln -s /usr/lib/libsndfile.so.1 ~/HD24tools/ | ||
22 | ln -s /usr/lib/libportaudio.so ~/HD24tools/ | ||
23 | ln -s /usr/lib/libjack.so ~/HD24tools/ | ||
24 | |||
25 | For HD24tools to detect the drives (when being run as normal user), | ||
26 | normal users need to have sufficient permissions to work with the | ||
27 | drive device. | ||
28 | |||
29 | To find out which drive device it is, run HD24connect as root, | ||
30 | and select File->Recovery->Select device... | ||
31 | |||
32 | This will show you the current device, which is the device | ||
33 | that needs its permissions set. | ||
34 | |||
35 | You can probably gain device permissions by adding your | ||
36 | regular user to the proper group, making your user the | ||
37 | owner of the device or by setting the device permissions | ||
38 | in /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 @@ | |||
1 | Developing HD24tools | ||
2 | ==================== | ||
3 | |||
4 | To start on development of hd24tools, here are a few tips to get you started. | ||
5 | |||
6 | Development environment | ||
7 | ======================= | ||
8 | You will want libsndfile, libportaudio and the Fast Light Toolkit FLTK to be | ||
9 | present on your system. On Linux you will also want the Jack Audio Connection | ||
10 | Kit (optionally on Mac as well). The targeted compiler is gcc. | ||
11 | |||
12 | On Windows, development is based on a MSYS/MinGW environment. | ||
13 | |||
14 | On Mac, XCode is needed, as well as portaudio, libsndfile and FLTK. | ||
15 | |||
16 | Configuring and building | ||
17 | ======================== | ||
18 | Configuration is auto-detected by running | ||
19 | |||
20 | ./configure | ||
21 | |||
22 | Building is done with | ||
23 | |||
24 | make | ||
25 | |||
26 | Installing is optional. You may want to run the following as root: | ||
27 | |||
28 | make install | ||
29 | |||
30 | which will install common binaries to /usr/bin. More interestingly, | ||
31 | you can run | ||
32 | |||
33 | make installer | ||
34 | |||
35 | to create the installer for the current platform. Finally, with | ||
36 | |||
37 | make clean | ||
38 | |||
39 | you can work from a clean configuration. The configure script also | ||
40 | calls make clean. | ||
41 | |||
42 | Cross-compiling | ||
43 | =============== | ||
44 | Cross compiling is highly experimental and will probably fail for | ||
45 | most purposes. On linux, you can say | ||
46 | |||
47 | ./configure os=win32 | ||
48 | |||
49 | which will attempt to create windows .exe files. However, until | ||
50 | now only hd24hexview.exe has been successfully built on Linux. | ||
51 | |||
52 | |||
53 | |||
54 | ./configure | ||
55 | make | ||
56 | |||
57 | Setup | ||
58 | ===== | ||
59 | During configuration, the set of libraries, make files etc to | ||
60 | use is decided by the files in the setup directory. The file | ||
61 | Makefile.in which is located there contains the release number | ||
62 | which must be bumped up for every version. Unless you build | ||
63 | official releases, please add your name to the release number | ||
64 | or make your personal releases otherwise distinguishable from | ||
65 | official releases. | ||
66 | |||
67 | To perform library detection etc, there are files called | ||
68 | Makefile.setup.<platform> in the setup directory. These are | ||
69 | called with various targets to figure out if libraries exist. | ||
70 | |||
71 | Unless porting to a new platform or adding external libraries, | ||
72 | you will probably rarely need to change most of the setup | ||
73 | scripts. | ||
74 | |||
75 | File system documentation | ||
76 | ========================= | ||
77 | Reverse-engineered information about the ADAT FST file system | ||
78 | can be found in doc/ADATFS.txt. Probably this file contains | ||
79 | enough info to not only allow reading ADAT drives but also to | ||
80 | write them. The biggest obstacle in writing ADAT drives so | ||
81 | far has been to get an accurate LBA sector count of non- | ||
82 | formatted drives on all operating systems. Especially Windows | ||
83 | seems to lack a reliable way to obtain this information. | ||
84 | (Multiplying sectors/cylinders/heads isn't LBA accurate, | ||
85 | any other way known to me is limited to a specific version | ||
86 | of Windows). If you want to contribute to the ADATFS.txt | ||
87 | file, figure out how the FST undo buffers work. To keep this | ||
88 | software free, DO NOT obtain information from Alesis about | ||
89 | FST which might pollute the project with non-free | ||
90 | information. | ||
91 | |||
92 | The HD24 library | ||
93 | ================ | ||
94 | Directory src/lib contains the HD24 library (and other | ||
95 | library source code). | ||
96 | |||
97 | common.cxx - some common string manipulation functions | ||
98 | convertlib.cpp/.h - conversion between various data types | ||
99 | countsectors.cpp - library to calculate drive size | ||
100 | hd24connect.ico - HD24connect Icon for Windows | ||
101 | hd24devicenamegenerator.cpp/.h - | ||
102 | Library to generate device names that could be | ||
103 | HD24 drives; contains alternatives for all | ||
104 | supported OS platforms | ||
105 | hd24fs.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 | |||
118 | hd24project.cpp/.h | ||
119 | Library containing hd24 project decoding. | ||
120 | |||
121 | hd24song.cpp/.h | ||
122 | Library containing hd24 song decoding; | ||
123 | this includes functionality to read audio, set | ||
124 | the song cursor, etc. | ||
125 | |||
126 | hd24utils.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 | |||
133 | nojack.cpp/.h | ||
134 | Dummy library to replace jack on windows and other | ||
135 | platforms in case it is not present. | ||
136 | |||
137 | src/lib/FL/ | ||
138 | Native OS file dialog support. | ||
139 | |||
140 | INSTALLER GENERATOR | ||
141 | =================== | ||
142 | |||
143 | The code for the installer generator is found in | ||
144 | src/installer. | ||
145 | |||
146 | Essentially, it takes the compiled binaries of hd24tools, | ||
147 | and converts those to hexdumps in c-source (using an | ||
148 | application called bin2c). This c source is then compiled | ||
149 | and will be able to re-create the original binary | ||
150 | files. | ||
151 | |||
152 | While no complex registry magic is needed, this is | ||
153 | sufficient for simple installations and probably less work | ||
154 | to figure out than other solutions. | ||
155 | |||
156 | This was originally intended to create install wizards for Mac, | ||
157 | but ended up being used for Windows only. Mac users seem | ||
158 | comfortable enough with the install-free .dmg images that they | ||
159 | are presented with. | ||
160 | |||
161 | The install wizard itself is basically implemented as a state | ||
162 | machine. | ||
163 | |||
164 | The installer for Linux installation could still be made a bit | ||
165 | smoother, specifically in the libraries department- the right | ||
166 | libraries are not always available at the right locations yet. | ||
167 | |||
168 | THE ACTUAL HD24TOOLS | ||
169 | ==================== | ||
170 | |||
171 | Some tools only have a console/command line version. They are: | ||
172 | |||
173 | hd24hexview a hex editor | ||
174 | hd24wavefix a program that attempts to recover bit-distorted | ||
175 | audio to something remotely usable again | ||
176 | hd24towav a program that converts raw 24 bit hd24 audio to | ||
177 | wav files | ||
178 | syx2bin a program that converts the HD24 OS .syx files | ||
179 | to binary (not sure if the resulting binaries | ||
180 | are valid) | ||
181 | hd24info a program that prints some info about the hd24 | ||
182 | drives present in the system | ||
183 | |||
184 | And finally, there is the graphical flagship program of the suite | ||
185 | hd24connect. To start development, it would be recommended to | ||
186 | understand the library, then the command line utilities first. | ||
187 | |||
188 | The command line tools are in src/ whereas hd24connect is in | ||
189 | src/frontend. | ||
190 | |||
191 | Originally I intended hd24connect to have a frontend (GUI) and | ||
192 | a backend. As it turned out, the whole thing ended up in the | ||
193 | frontend. If you feel like creating a nice backend so that the | ||
194 | frontend *really* *only* contains GUI stuff, feel free. Sorry. | ||
195 | |||
196 | The entry point of hd24connect is src/frontend/hd24connect.cpp- | ||
197 | this calls and opens the GUI. | ||
198 | |||
199 | The main entrance for the GUI is in fluid file ui_hd24connect.fl | ||
200 | (you *really* should use the 'fluid' user interface editor that | ||
201 | comes with fltk to maintain the .fl files). Method make_window | ||
202 | in class UserInterface starts it all. | ||
203 | |||
204 | TEST SUITE | ||
205 | ========== | ||
206 | There is a directory test/ which should at some point contain | ||
207 | regression tests for hd24tools. To make it easier to perform | ||
208 | such tests, it would need to be possible to control hd24tools | ||
209 | entirely in batch-mode (using MIDI for this is may be a | ||
210 | possibile way). | ||
211 | |||
212 | DOCUMENTATION | ||
213 | ============= | ||
214 | |||
215 | The .pdf documentation may be slightly outdated. If you wish | ||
216 | to update it, you can do so with OpenOffice Writer. | ||
217 | |||
218 | TASKS | ||
219 | ===== | ||
220 | If 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 @@ | |||
1 | Inside the HD24 | ||
2 | |||
3 | The HD24 is powered by a Motorola Coldfire | ||
4 | |||
5 | MCF5206EFT54 | ||
6 | K36J | ||
7 | QAJ0435) | ||
8 | |||
9 | The Ethernet chip is a CrystalLan CS8900A-CQ3, | ||
10 | a 10Base-T LAN chip. | ||
11 | |||
12 | There is an empty, 26 pin port labelled 'Motorola BDM Port'. | ||
13 | Motorola BDM stands for Motorola Background Debug Module, | ||
14 | so we might speculate that this port allows us to perform | ||
15 | debugging on the HD24 as it is running. | ||
16 | |||
17 | There are to IC41LV16256 chips in the HD24: according to the | ||
18 | data sheets, they are 256kx16 bit Dynamic RAM with EDO page mode, | ||
19 | giving the HD24 a total of 1 megabyte of RAM. | ||
20 | |||
21 | There is an ALTERA ACEX EP1K30QC208-2 | ||
22 | FPGA (Field Programmable Gate Array). | ||
23 | |||
24 | There is a Texas Instruments AHCT16541 | ||
25 | AHCT16541 devices are noninverting 16-bit | ||
26 | buffers composed of two 8-bit sections with | ||
27 | separate output-enable signals. (possibly | ||
28 | used for communication to displays?) | ||
29 | |||
30 | Analog Devices ADSP 21065L KS-264 | ||
31 | A 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 @@ | |||
1 | Figuring out on which sector the next recording should start | ||
2 | (or where a crashed live recording starts) | ||
3 | ============================================================ | ||
4 | 1. Find the start offset of the drive usage table, e.g. 0xa00 | ||
5 | 2. 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 | ||
9 | 3. This means the recording starts on cluster | ||
10 | 0xe74-0xa00=0x474 | ||
11 | 4. 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. | ||
15 | 5. The first audio sector is mentioned on the superblock on | ||
16 | offset 0x7e. In most cases it is 0x1397f6. | ||
17 | 6. Each byte in the drive usage table represents 8 clusters. | ||
18 | 7. The audio should then start on | ||
19 | 0x1397f6 + (0x480*9*8*(0xe74-0xa00)) = sector 0x5b667f6. | ||
20 | |||
21 | --------------- | ||
22 | The 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 @@ | |||
1 | Subject: HD24tools 0.9.0beta for Win32 released | ||
2 | Hello, | ||
3 | |||
4 | HD24tools version 0.9.0beta has been made available for | ||
5 | the following platforms: | ||
6 | |||
7 | - Linux (i386) | ||
8 | - Windows (All versions) | ||
9 | |||
10 | Mac releases are expected to be released soon. | ||
11 | |||
12 | The most important new features in this release are | ||
13 | - Preliminary write support | ||
14 | - New tabbed GUI | ||
15 | - Several usability enhancements | ||
16 | |||
17 | The release notes for this and previous release notes can be viewed on | ||
18 | http://ringbreak.dnd.utwente.nl/~mrjb/hd24tools/RELEASE.txt | ||
19 | |||
20 | As always, the release can be downloaded from: | ||
21 | http://ringbreak.dnd.utwente.nl/~mrjb/hd24tools/download.html | ||
22 | |||
23 | Should you encounter any problems with this release, | ||
24 | please let me know. | ||
25 | |||
26 | Best, | ||
27 | Marc | ||
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 @@ | |||
1 | HD24Connect revision history and roadmap | ||
2 | ======================================== | ||
3 | |||
4 | Implemented features are set in the past tense. A version is complete when all | ||
5 | planned versions are implemented. Until then, sub-versions are used, e.g. | ||
6 | 0.3.1 already may have some (but not all) 0.4 features. | ||
7 | |||
8 | This document ends with suggested features, but is in reverse chronological | ||
9 | order otherwise, and as such starts with features planned for the next | ||
10 | release. | ||
11 | |||
12 | Current status is somewhere in the middle, search for the text | ||
13 | 'CURRENTLY IN PROGRESS' to find out what is being done right now. | ||
14 | |||
15 | Version 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 | |||
53 | Version 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 | |||
149 | TODO: Bugs to fix: | ||
150 | |||
151 | - After quickformat of a drive, catalog and related screens are | ||
152 | not updated. | ||
153 | |||
154 | TO 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 | |||
166 | Version 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 | |||
210 | Version 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 | |||
218 | Version 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 | |||
223 | Version 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 | |||
231 | Version 0.7 | ||
232 | |||
233 | - This never-released version adds high samplerate support. | ||
234 | |||
235 | Version 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 | |||
240 | Version 0.6.1 | ||
241 | |||
242 | - Fixed a bug in the drive name generation in Windows | ||
243 | |||
244 | Version 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 | |||
263 | Version 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 | |||
277 | Version 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 | |||
288 | Version 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 | |||
294 | Version 0.2 | ||
295 | |||
296 | - Added support for locate points. | ||
297 | - Added backwards export. | ||
298 | - Initial windows version. | ||
299 | |||
300 | Version 0.1 | ||
301 | |||
302 | - First workable version. | ||
303 | |||
304 | HD24hexview revision history and roadmap | ||
305 | ======================================== | ||
306 | |||
307 | Future | ||
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 | |||
313 | Version 1.4beta | ||
314 | |||
315 | - Replaced code for windows drive size detection. | ||
316 | |||
317 | Version 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 | |||
324 | Version 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 | |||
331 | Version 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 | |||
337 | Version 1.0beta | ||
338 | |||
339 | - Implemented compare | ||
340 | - Implemented write offset | ||
341 | |||
342 | Version 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 | |||
350 | Version 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 | |||
357 | Version 0.1 | ||
358 | - Implemented code to autodetect HD24 disks | ||
359 | - Implemented feature to navigate disks with +/-/o | ||
360 | |||
361 | ======================================================== | ||
362 | Version x.x | ||
363 | |||
364 | Spare 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 @@ | |||
1 | SYX file format | ||
2 | =============== | ||
3 | The SYX file format packs every 7 8-bit bytes of a binary file | ||
4 | into 8 7-bit bytes, which allows for a MIDI compatible file. | ||
5 | These files can be converted to true binary files using the | ||
6 | hd24syx2bin utility. | ||
7 | |||
8 | Once converted, the format seems to be as follows: | ||
9 | |||
10 | byte 0x00-0x07: string 'HD24CODE' | ||
11 | byte 0x08-0x0b: unknown (checksum?) | ||
12 | byte 0x0c-0x0f: version number string (e.g. "1.20") | ||
13 | byte 0x10-0x13: 32-bit word, value 0 | ||
14 | byte 0x14-0x1b: Release date string (MM/DD/YY) | ||
15 | byte 0x1c-0x1f: 32-bit word, value 0 | ||
16 | byte 0x20-0x27: Build time (hh:mm:ss) | ||
17 | byte 0x28-0x2b: 32-bit word, value 0 | ||
18 | byte 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 @@ | |||
1 | Testplan for HD24tools | ||
2 | |||
3 | Hexview | ||
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 | ||
7 | of 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 | |||
12 | HD24connect: | ||
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 | |||
32 | Exporting: | ||
33 | - HD24connect should detect when the exportdirectory does not (or no longer) | ||
34 | exist when the export transfer is started. | ||
35 | |||
36 | Special 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 | |||
43 | Test 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 | |||
61 | Select song 'All songs' on a drive not containing double songnames, | ||
62 | export 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 | |||
69 | TRANSPORT 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 | |||
81 | RECOVERY 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 | |||
96 | Other 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 | |||
99 | TRANSFER TO HD24 DRIVE | ||
100 | Tests 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 | |||
116 | Tests 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 | |||