aboutsummaryrefslogtreecommitdiff
path: root/doc/RELEASE.txt
blob: ac0d723dfee14788aaa87b99eca212f58976e58a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
HD24Connect revision history and roadmap
========================================

Implemented features are set in the past tense. A version is complete when all
planned versions are implemented. Until then, sub-versions are used, e.g.
0.3.1 already may have some (but not all) 0.4 features.

This document ends with suggested features, but is in reverse chronological
order otherwise, and as such starts with features planned for the next 
release.

Current status is somewhere in the middle, search for the text 
'CURRENTLY IN PROGRESS' to find out what is being done right now.

Version 1.1.0 => CURRENTLY IN PROGRESS

- Added some unit tests to perform automated, scripted testing
- Added frequency/gain display to mixer
- Performed code cleanup:
	- Moved recorder, mixer and HD24->PC file transfers
          to their own modules
	- permit various interfaces (X, Cocoa, Curses, etc)
	- possibly permit recording macros?
        - permit multi-window interface (show transport/time/mixer
          simultaneously) and allow resizing those windows
- Implement batch transports
- Implement realtime recording 
- Auto-detect feedback loops!
- Change to multi-window interface to allow viewing multiple tabs at once
  (for example both recorder and mixer at same time)
- Implement MIDI control/control surfaces
	- Control other MIDI devices with HD24tools
	- Control HD24tools with other MIDI devices
- Implement LADSPA support for mixer FX
	- Add default GUI for common effects, allow them
          to be controlled through control surfaces.
- Implement keyboardless operation 
- Add wave viewer for easier selection of export range
- Add functionality to allow changing song naming convention for export
- Simultaneous dual drive support. Benefits:
  * allow copying songs between drives 
  * copying songs/projects from/to drive images
- Add drive images that are found in drive image dir to
  drive image dropdown to make it easier to switch between
  real and virtual drives
- Implement functionality to signal falling out of record 
  mode if needed (when drive is full, etc)
- Create an interesting demo drive image to
  allow people to play around with it
  (low prio: people can download examples from raw-tracks.com
  at a $5 fee)

Version 1.0.0 => Will remain in alpha

- Made source code available to the general public
- Added recovery feature to deal with a specific class of
  'unexpected end of song' error on fragmented drives
- Added block checksum calculation to library
- Implemented saving of changed project name/song name to disk
- Added code for cluster allocation
- Added code for converting orphan clusters to allocation entries
- Compiling framework was changed to allow smoother Mac compiles
- Added mixer tab with save/load mixer settings functionality
- Finished up restructuring of mixer to make it work again
- Added save functionality to allow renaming drive
- Made detection of corrupted drives smoother to prevent need for
  http://ringbreak.dnd.utwente.nl/~mrjb/hd24tools/drivenumber.html
- Added Check for 'forbidden characters' in filenames
  \ / : * ? " < > |
  (HD24 accepts these but can have unpredictable effects on
  OS side)
- Added allocating functionality to allow lengthening songs
  automatically during transfer
- Altered layout of drive catalog to fit longer song names
  and to have a bit larger margin on the left for printing
- Added functionality to allow 1-click toggle between 
  sample rates of 44.1 <=> 48 kHz and 88.2 <=> 96 kHz
  (toggling between lower/higher sample rates is not possible
   without conversion as higher sample rates use 2 recording
   tracks per channel).
- Added dialog for simpler 'headerless' live recording recovery
- Implemented initial headerless live recovery scheme
- Made headerless live recording recovery read-only
- Added functionality to create empty drive images
- Created dialog for setting song parameters
- Implemented Mixer JACK support
- Implemented framework for smarter library loading.
  This should allow Mac (and even Windows) users to have
  JACK functionality, and will no longer require Mac
  users to startup HD24connect by running an AppleScript.
- ... and made library smart loading even smarter by letting
  it look in the program directory first, the PATH dir next, 
  and all usual library directories next. This should result
  in library loading that Just Works in most cases and
  will allow JACK support on all platforms.
- Wrote documentation explaining how to build HD24tools
  from source (Linux, 64-bit Athlon)
- Added functionality to create projects
- Added functionality to create songs (incl. superblock 
  song count update)
- Made sure changes in song/drive/project names also reflect 
  properly in FST 1.00 drives
- Added functionality to automatically pre-record silence
  in songs on creating them
- Added functionality to update song usage list after 
  song creation
- Automatically select song as 'default' after creation
- Implemented reload of drive list/catalog/project list/song list 
  after major write operations
- User interface settings reloaded as appropriate after writing
  to drive
- Added options dialog to allow (among other things) specifying
  a filename pattern for file transfers to PC
- Made write-protect checkbox work
- Added drive format functionality
- Added functionality to delete songs
- Added functionality to delete projects
- Made 'bypass' button for mixer work
- Added timeout-style messages to alpha display
- Implemented functionality to display song information
  on alpha display
- Implemented functionality for sorting songs inside a project.
  This allows easily reordering songs by renaming them.
- Implemented SMPTE timecode striping- for now limited to
  30fps nondrop starting at 00:00:00.00. 
  May not work on sample rates other than 48kHz. In fact, 
  it may not work at all.
- Made sure superblock is updated with number of free clusters
  after song transfer to HD24 drive/creation of new song
- Implemented write-protect to prevent writing to drives when
  working with header files.
- Implemented functionality to reduce number of sectors read
  when transferring fewer tracks. The expected performance 
  win is not very big as the number of drive seeks is about 
  the same, but the weight of the added logic is minimal. 
  Perhaps on some systems the difference is noticable. YMMV.
- Implemented .wav writing without libsndfile. If it is missing, 
  you'll still be able to transfer such files to your computer.
- Made sure write functionality is disabled for drives found
  not to be valid HD24 drives (due to corruption, or perhaps
  they're simply OS drives which we DEFINITELY don't want to
  overwrite)
- Implemented locate point saving
- Implemented (preliminary) transfer-time mixing of tracks
- Made sure song/project are made default after selecting them
- Fixed a non critical bug where closing the program during 
  playback caused a crash.

TODO: Bugs to fix:

- After quickformat of a drive, catalog and related screens are
  not updated.

TO DO: Testing and packaging:

- Fixme: update all of drive info page on refresh
  (What's missing?)
- Make sure that 'new folder' button works properly on 
  all platforms! (Fixed on Windows, TO DO on mac)
- Distribute Mac version as Universal Binary
- Finally get .aif, .sd2 and .dig/.sd to work properly!
- Check all FIXME and TODO comments in code
- Get 16-bit export to work (low priority)
- Documentation

Version 0.9.0

- Implemented tabbed interface
- Added functionality to export drive images
- Added time stamp to catalog
- Added drive catalog display to drive inforrmation
- Changed default time display to 30 frames per second instead of 1/100 sec

- Added the 'Recorder' with various new features
- Proper solo/mute buttons instead of solo/mute by channel selection
- Track arm buttons
- 24-channel display faithfully emulating what the HD24 would show
- Peak modes: No peak hold, momentary peak hold, continuous peak hold
- Added locate slider to rapidly jump to any point in the song
- Added punch in/out locate points
- Added visual clue to transport controls showing that clicking 'set' 
  can set locate points
- Added input monitoring (mainly Linux)
- Added dropdown to map stereo inputs to channel pairs in various ways
- Fancy 7-segment LED display
- Equally fancy info display
- Fancy, bigger graphical buttons with LED for transport control
- Fixed a clipping bug in portaudio playback (playback only)

- Added signal detection to track selection in transfer tab
- Added dropdown to allow a flexible custom size limit for exported files
- Added dropdown to stamp songs with a different sample rate

- Added tab for transfer back to HD24
- Added functionality that permits selecting many files at once
- Added functionality to automatically spread multi-track files
  across several HD24 tracks
- Added functionality to automatically mix multi-track files to mono
- Added functionality to allow erasing tracks
- Added functionality to allow moving tracks (including track action)
  up or down
- Added functionality to clear filenames from tracks
- Added functionality to overwrite existing audio with audio from a file.
  Many file formats are supported (subject to what is supported by
  libsndfile).
- SD2 file format support (does this work now?)
- Create new folder from file browse dialog (does this work now?)


Version 0.8.2

- Hardened the software in some places to be more crash-resistant 
  in handling corrupt drives
- Some compatibility enhancements
- Fixed a bug in the calculation of the total number of bytes to export,
  which caused the auto-split popup not to be displayed in some cases.

Version 0.8.1

- Fixed bug that caused auto-split popup to always appear for long recordings,
  even if only a small fragment was being exported.
  
Version 0.8.0

- Printing disk contents on paper and file
- Entirely replaced export engine for faster exports
- Created OS native installers.
- Allow transferring multiple songs at once (song choice 'All Songs')
- Added possibility to export to stereo and multi-track files.

Version 0.7

- This never-released version adds high samplerate support.

Version 0.6.2

- Fixed a bug that caused the Windows version to lock up when loading a header file
- Initial release for MacOS/X 10.4

Version 0.6.1

- Fixed a bug in the drive name generation in Windows

Version 0.6

- Initial Macintosh OS/X port. Still flaky due to interesting behavior of packages that HD24connect depends on.
- Relabeled button "Transfer to PC" as "Transfer to Mac" for OS/X version.
- Fixed bug that cleared surface of cancel button during transfers.
- Added warning dialog to improve user friendliness when no HD24 drive is detected on program startup
- Added menu option 'File/Detect HD24 drives' to allow re-scanning for drives after program startup.
- Project directory browser now uses OS native file dialog.
- Added menu option to allow creating header files from within hd24connect
- Removed portaudio dependency (this has no visible impact).
- Added Estimated Time of Arrival in transfers
- Removed dependency on command line options to enable recovery features
- Added application (desktop) icon for Windows
- Allow exporting to more different file formats (currently WAV and AIFF)
- Altered file naming for export
- Cleaned up code that deals with drive name generation
- Version control is now in place, allowing multiple people to work 
  on the project at the same time (Welcome, Randy!)

Version 0.5

- Added --force feature to allow using hd24 disks with invalid MBR.
- Added --header feature which allows to use a fixed header file along with
  a corrupt disk. This permits us to recover audio without need to modify
  data on the corrupted disk. 
- Added portaudio playback. For the Windows version this means that audio
  preview is now supported, while under Linux the Jack Audio Connection Kit 
  is no longer required for audio preview.
- Fixed a bug in Linux audio preview. This minor bug affected exactly 
  1 user (me).
- Added dialog to allow renaming drives, projects and songs (in memory only)
- Altered project handling to more easily allow in-memory edits of projects

Version 0.4

- Fixed a minor bug with the file write caching.
- Added a button to allow the user to interrupt a transfer.
- Fixed flakyness in audio playback
- Added dialog to allow manually setting locate points
- Fix bug which causes windows version not to display song names
- Added feature to allow setting loop start/end during playback
- Implemented export to wav (for now, instead of raw) using libsndfile
- Implemented basic loop mode for audio playback. 

Version 0.3

- Added file write caching to speed up export under Windows. 
- Added direct playing under Linux (still flaky)
- Altered library to resolve issue with STL string memory leaks

Version 0.2

- Added support for locate points. 
- Added backwards export.
- Initial windows version.

Version 0.1

- First workable version.

HD24hexview revision history and roadmap
========================================

Future

- Verify/Fix any remaining issues with 4 GB limit on Windows
- Correctly determine drive size
- Allow multi-sector paste (from file).

Version 1.4beta

- Replaced code for windows drive size detection.

Version 1.3beta

- Added expert mode as safety switch to prevent accidentally writing to disk.
- In expert mode, added a big fat warning for writing to the default boot 
  disk (/dev/hda or \\.\PHYSICALDRIVE0) and a (not so big & fat, but still)
  warning for writing to other devices.

Version 1.2beta

- Added d-<hex> feature to dump sector <hex> counting from end of disk
  This allows dumping the last sector from disk without having to figure
  out the number of sectors based on brand and model of the disk.
  Unfortunately, this does not work properly yet for Windows devices.

Version 1.1beta

- Fixed a bug in windows version that required output file to already exist
  before writing
- Added single-sector checksum (no multi-sector checksum yet)

Version 1.0beta

- Implemented compare
- Implemented write offset

Version 0.3

- Implemented edit and write back of sectors
- Implemented single-sector paste
- Ported to Windows
- Resolved a 4 GB issue with windows version
- Allowed using files as devices

Version 0.2

- Implemented support for setting blocks
- Resolved 4 gigabyte limitation for linux
- Implemented scan
- Implemented write to file

Version 0.1
- Implemented code to autodetect HD24 disks
- Implemented feature to navigate disks with +/-/o

========================================================
Version x.x

Spare ideas/suggested future features:

- 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.
	
	Will not be implemented anytime soon; this scenario is too
	rare. Also, should recovery be needed, other ways exist to do so.

- Allow the program to use installed audio encoders to
  encode to mp3/flac/etc

- Time line/draggable export locators

	Proposed is a graphical display to allow 
	visually setting locate points for export.
	Alternatively, a 'scrub editor' style display would be
	workable.
	While interesting, it would be rather time consuming
	to build such a time line. For now, a draggable slider
	is made available to ease the pain a bit.

- Check available drive size before export

	I'm not sure if I already implemented this. Obviously,
	it is a required feature.

- Allow transferring multiple projects at once 
  (project choice 'All projects')

	Will probably be implemented at some point, but
	custom song naming convention is then required first.

- Allow automatic deletion of files when transfer is interrupted

- Normalizing audio as it is being exported

	This will require analyzing the entire export range
	prior to export (possibly more, if the export is a
	single song of an entire live performance; it is likely
	that we'd want to normalize the whole performance 
	equally.

- Allow exporting to different bit depths
- MIDI control (both controlling HD24tools via MIDI or
  let HD24tools control HD24 recorder via MIDI).
  
	The benefit of allowing HD24tools control via MIDI
	is that frequently requested functionality that the
	HD24 does not support is a possibility; for instance,
	the HD24 does not allow selecting songs via MIDI,
	whereas such implementation in HD24tools would be
	a fairly simple matter once it is MIDI enabled.
	Someone also mentioned that possibily a recording
        log could be kept by HD24tools when connected to
        a HD24 via MIDI by simply keeping track of record
        events. Unfortunately the HD24 does not send MIDI
        for track record enable, even though it supports
        track arming via MIDI (the good news is that some
        MIDI functionality is supported even though the
        HD24 itself does not send out MIDI for those actions).

- Storing metadata on HD24 drives

	There are some possibilities for this. One way is
	to create a song contaning (for instance) a FAT
	file system, and using some unused space in the
	song entries to allow entries in that FAT file
	system to uniquely point to them; this would allow
	storing song-unique info (such as track data, etc)
	in that file system.

- Locate points in directory listing

	This would make the catalog file a fair bit longer.
	As such it would have to be an option that could
	be turned on/off.

- Virtual BRC application

	This would be limited to whatever MMC supports.

- Copying projects
- Batch transfer
- One click drive backup

	These all come down to the same thing: find a 
        way to not require user intervention while
        transferring large amounts of data.
	Perhaps a 2-click drive backup (with the possibility
        to edit the batch before export) is more useful than
        a 1-click backup.
	The main benefit (not having to wait actively while
	audio is being transferred) is the same.

- Calculate approx. occupied drive space per song, and add
  to catalog.

- Display currently selected song/project on other tabs as
  well 
	- current song is now displayed on alpha display.

- Allow different UIs (proposed is command line interface,
  non-X interface, Cocoa interface, ...)

- Control surface support, to allow using MIDI-enabled
  consoles to control the HD24tools mixer/recorder

- Add Vista tip to manual (regarding admin account for write
  support)
  Also add this info:
  http://tech.groups.yahoo.com/group/hd24/message/12102