clawhammer
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:Extract *.wav files from the *.hub format used by the Hammerhead drum machine.
What Is It?
===========

[HammerHead](http://www.threechords.com/hammerhead/introduction.shtml) is an old drum machine for Windows. One of its features allows you to import new drum sounds using a file format called HUB. `clawhammer.rb` allows you to extract the sounds out of a HUB file into individual `*.wav` files. This allows you to use the sounds in modern programs like Logic or GarageBand.

The HUB file format was reverse-engineered using [FileInspector](http://github.com/jstrait/fileinspector/tree/master).


Usage
=====

    ruby clawhammer.rb [path of HUB file]

For example:

    ruby clawhammer.rb groove.hub

This will create six output files:

    groove-1.wav
    groove-2.wav
    groove-3.wav
    groove-4.wav
    groove-5.wav
    groove-6.wav

Clawhammer uses the [WaveFile gem](http://wavefilegem.com/) to create the output wave files. Therefore, you'll need to have this gem installed on your machine. To do so, run the following command:

    gem install wavefile

About the HUB Format
====================

The HUB format is very simple. A HUB file contains 6 records, which represent each of the sounds stored in the file. Each record contains a header, followed by actual sample data.

Header for Sound #1
Sound #1 Sample Data
Header for Sound #2
Sound #2 Sample Data
...
Header for Sound #6
Sound #6 Sample Data
Each header is 36 bytes, and has the following format:
Bytes Description Data Format
0: Length of the HUB title, in bytes. Integer. Signed or unsigned doesn't matter, since the maximum valid value is 30.
1-30: HUB title. If HUB title is less than 30 characters, the extra bytes will be garbage. The title will be identical for each header. 1-byte ASCII characters
31-34: Length of the sound's sample data, in bytes. Unsigned, little-endian
35: Flag for whether sound should be stretched to fill a full measure when played in HammerHead. (For example, a drum loop). Ignored by Clawhammer. 0x01 for true, 0x00 for false
The sample data payload follows the header. The length of the sample data is indicated in bytes 31-34 of the header. The sample data in each record only includes raw sample data, i.e. what you would find in the `data` chunk body of a *.wav file. It doesn't include any of the other chunks specified by the \*.wav format such as a `fmt ` chunk - it doesn't need one because HammerHead assumes that samples are 16-bit, 1 channel (mono), with a sample rate of 44100. (For more on the \*.wav format, visit ).

本源码包内暂不包含可直接显示的源代码文件,请下载源码包。