This is an old revision of the document!
QHiMDTransfer
Premise
QHiMDTransfer is supposed to be a simple clone of the Mac OS X software "HiMD Music Transfer for Mac 2.0". The reason for using Qt is that it allows an application to be compiled and run on any platform supporting Qt, including Linux, *BSD, Solaris, Mac OS X and Windows. QHiMDTransfer uses the libraries libnetmd and libhimd to communicate with the walkman devices. The preferred tool for designing the graphical user interface and the program code of QHiMDTransfer is "Qt Creator 1.0" using "Qt 4.5.x" on Linux. Both can be obtained from http://qtsoftware.com.
Specifications
The application should have the following features:
Button bar at the top (toolbar) with all important functions (Copy to HiMD, Copy from HiMD, Delete from HiMD, Rename on HiMD, Format/Erase HiMD, Help)
Two list-views, the left representing a directory view on the computer, the right representing a view of the music tracks on the HiMD
-
-
Support for reading MP3s in Unicode and converting them to the format in the HiMD container (probably some Windows codepage for FAT16)
display diskname and diskid in the status-bar
display each group in treewidget with different background colors (green/white/green/white/…)
renaming of groups and tracks
deleting of tracks/groups
Advanced features:
TODO
make use of statusbar to display mountpoint and space-left/overall space of HiMD
show bitrate and group-information in treeview (group information needs libhimd support)
group HiMD-groups in treeview (needs libhimd support)
write help-file (alternatively use Qt's "Whats this ?")
-
implement PCM-upload (NOTE: PCM-Upload is not supported for strong-encrypted PCMs yet, i.e. non MZ-RH1, output files lack WAV-header)
use libsox to convert raw PCM into WAV-format
implement
MP3-download (needs libhimd support)
implement PCM-download (needs libhimd support)
implement ATRAC3-upload/download (not sure whether feasible)
later versions should employ folder-browser for filesystem for upload/download (similar to SonicStage)
allow drag and drop for download of files
should detect connected HiMD-Walkman automatically (platform dependant)
run upload/download in extra threads, use Qt multithreading; display progress in status-bar
display MAC/Key in tracks list or alternatively "Encrypted: Yes / No"
show status-window after download: 4 tracks(s) successully uploaded. 2 tracks(s) could not be uploaded: 2, 8.
use platform-indepent
SCSI-library for:
reading discid (countercheck with mclist0x.hma-file)
formatting HiMD → already successfully performed on Linux (see himdformat.c)
get/set date/time and display in statusbar
allow/prevent medium-removal (lock MD during transfer)
use DRM Read/Write future OpenMG-compatible transfer for ATRAC3 (?)
bugs:
(unless Qt somewhat matches /home to a different directory in Windows)
connect-button should check whether the chosen directory containts a HMDHIFI.IND file in the root directory to verify the selected folder contains actually HiMD-data
all buttons except "Connect" should be disabled unless a HiMD has been selected with "Connect"
Screenshots
Screenshot of updated GUI running on GNOME/X11/GNU/Linux:
Screenshot of main application window, running on GNOME/X11/GNU/Linux:
Screenshot of track listing window, running on GNOME/X11/GNU/Linux:
Screenshot of track listing window, running on Mac OS X Leopard:
Icons
The icons can easily be made with Inkscape http://www.inkscape.org. The following figures for the icons are suggested:
Connect: An USB-Plug
Download to MD: A MiniDisc with a green arrow directed downwards
Upload from MD: A MiniDisc with a red arrow directed upwards
Delete selected: A trashcan icon
Rename selected: An icon of some text being edited (a few characters with a cursor)
Format: A MiniDisc with a red "X"
Add group: a folder icon with a "+"
Help: A question mark
About: A copyright-sign
Quit: An exit-door
Numinos has created an icon set for the buttons above:
http://users.physik.fu-berlin.de/~glaubitz/linux-minidisc/program-icons.tar.gz
libhimd
libhimd will provide functionality to communicate with HiMD devices by accessing the files stored on the minidisc, so it works without special priviledges and also on images. For MPEG audio tracks this approach has been proven to be enough, and it is suspected that is also works for LPCM tracks.
The source code is structured into the following files
himd.c - Main library code providing functions on the top level himd object
encryption.c - All the stuff related to cryptography and key determination
mdstream.c - Functions to read/write audio streams in the atdataXX.hma file
trackindex.c - Functionality to encode/decode track metadata
http://users.physik.fu-berlin.de/~glaubitz/linux-minidisc/libhimd_uploadtest.zip - An MP3 transfered onto a MiniDisc with SonicStage and then uploaded with libhimd again.