sox-devel@lists.sourceforge.net unofficial mirror
 help / color / mirror / code / Atom feed
* Sox generates WAV files which the Tascam DP32SD multitrack recorder can not understand
@ 2015-09-21  0:11 Sam Trenholme
  2015-09-21  2:17 ` Måns Rullgård
  0 siblings, 1 reply; 3+ messages in thread
From: Sam Trenholme @ 2015-09-21  0:11 UTC (permalink / raw)
  To: sox-devel

Without modifying the header, the Tascam DP-32SD (a stand-alone
digital multitrack recorder) is unable to “grok” (acknowledge as a
valid .WAV file) a 24-bit 44.1khz monophonic .WAV file generated by
sox.

Because of this, the Tascam DP-32SD is unable to import 24-bit/44.1
SoX-generated files via the “Audio Depot” unless the .WAV header is
altered.

==Steps to reproduce==

Use the SoX program to generate a 24-bit wav file. For example:

sox foo.wav -b24 bar.wav gain -9

Put the resulting bar.wav file in the “Audio Depot” folder, and
attempt to import the file in to the DP32SD.

==Expected results==

The file is visible and can be imported in to the DP-32SD.

==Actual results==

WAV files generated by Sox are not visible in the DP-32SD until they
are altered.

Technical details

A Tascam DP-32SD has, for an “audio depot” 24/44.1 file header, the
following bytes (this is “hexdump” format; the numbers on the left are
hexadecimal numbers; the ASCII that follows is a representation of the
data):

00000000 52 49 46 46 XX XX XX XX 57 41 56 45 66 6d 74 20 |RIFF....WAVEfmt |
00000010 10 00 00 00 01 00 01 00 44 ac 00 00 cc 04 02 00 |........D.......|
00000020 03 00 18 00 64 61 74 61 WW WW WW WW WW WW WW WW |....data........|

The “XX” bytes above are a 32-bit little-endian representation of the
length of the file, and vary depending on the file length. “WW” is
audio data.

SoX, on the other hand, generates a 24/44.1 wav file with the following header:

00000000 52 49 46 46 XX XX XX XX 57 41 56 45 66 6d 74 20 |RIFF....WAVEfmt |
00000010 28 00 00 00 fe ff 01 00 44 ac 00 00 cc 04 02 00 |(.......D.......|
00000020 03 00 18 00 16 00 18 00 04 00 00 00 01 00 00 00 |................|
00000030 00 00 10 00 80 00 00 aa 00 38 9b 71 66 61 63 74 |.........8.qfact|
00000040 04 00 00 00 14 f5 5f 00 64 61 74 61 WW WW WW WW |......_.data....|

Again “XX” is length, and “WW” is audio data.

The following C program takes a Sox-generated 24/44.1 Wav file on the
standard input, and outputs a DP-32SD compatible file:

// Public Domain 2015 Sam Trenholme

// The DP32SD can not grok 24-bit/44.1 WAV files generated by SOX. This
// fixes the headers so that Tascam's DP32SD can understand them.

// Standard input: SOX-generated WAV file
// Standard output: DP32SD-comparible WAV file

#include <stdio.h>

main() {
int b;
int a;
for(a=0;a<16;a++) {
b = getc(stdin);
printf("%c",b);
}
int c;
printf("%c%c%c%c%c%c%c%c",0x10,0,0,0,1,0,1,0);
printf("%c%c%c%c%c%c%c%c",0x44,0xac,0,0,0xcc,4,2,0);
printf("%c%c%c%cdata",3,0,0x18,0);
for(a=0;a<60;a++) { getc(stdin); }
while(!feof(stdin)) {
b=getc(stdin);
if(!feof(stdin)) {printf("%c",b);}
}
}

- Sam

------------------------------------------------------------------------------
_______________________________________________
SoX-devel mailing list
SoX-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sox-devel

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Sox generates WAV files which the Tascam DP32SD multitrack recorder can not understand
  2015-09-21  0:11 Sox generates WAV files which the Tascam DP32SD multitrack recorder can not understand Sam Trenholme
@ 2015-09-21  2:17 ` Måns Rullgård
  2015-09-21  4:23   ` Sam Trenholme
  0 siblings, 1 reply; 3+ messages in thread
From: Måns Rullgård @ 2015-09-21  2:17 UTC (permalink / raw)
  To: Sam Trenholme; +Cc: sox-devel

Sam Trenholme <strenholme.usenet@gmail.com> writes:

> Without modifying the header, the Tascam DP-32SD (a stand-alone
> digital multitrack recorder) is unable to “grok” (acknowledge as a
> valid .WAV file) a 24-bit 44.1khz monophonic .WAV file generated by
> sox.
>
> Because of this, the Tascam DP-32SD is unable to import 24-bit/44.1
> SoX-generated files via the “Audio Depot” unless the .WAV header is
> altered.
>
> ==Steps to reproduce==
>
> Use the SoX program to generate a 24-bit wav file. For example:
>
> sox foo.wav -b24 bar.wav gain -9

Try adding "-t wavpcm" before the output filename.

> Technical details
>
> A Tascam DP-32SD has, for an “audio depot” 24/44.1 file header, the
> following bytes (this is “hexdump” format; the numbers on the left are
> hexadecimal numbers; the ASCII that follows is a representation of the
> data):
>
> 00000000 52 49 46 46 XX XX XX XX 57 41 56 45 66 6d 74 20 |RIFF....WAVEfmt |
> 00000010 10 00 00 00 01 00 01 00 44 ac 00 00 cc 04 02 00 |........D.......|
> 00000020 03 00 18 00 64 61 74 61 WW WW WW WW WW WW WW WW |....data........|

This is a standard, original Microsoft WAVEFORMAT header.  The value
0x0001 at offset 0x14 indicates PCM data.  Although the header structure
can encode arbitrary values, only 8-bit and 16-bit PCM should use this
format.

> SoX, on the other hand, generates a 24/44.1 wav file with the
> following header:
>
> 00000000 52 49 46 46 XX XX XX XX 57 41 56 45 66 6d 74 20 |RIFF....WAVEfmt |
> 00000010 28 00 00 00 fe ff 01 00 44 ac 00 00 cc 04 02 00 |(.......D.......|
> 00000020 03 00 18 00 16 00 18 00 04 00 00 00 01 00 00 00 |................|
> 00000030 00 00 10 00 80 00 00 aa 00 38 9b 71 66 61 63 74 |.........8.qfact|
> 00000040 04 00 00 00 14 f5 5f 00 64 61 74 61 WW WW WW WW |......_.data....|

This is a WAVEFORMATEXTENSIBLE header, indicated by the format tag
0xfffe at file offset 0x14.  This header adds additional fields at the
end allowing arbitrary bit depths as well as various other information.
It should be used whenever the bit depth is not 8 or 16.

Sox is doing the right thing in creating a WAVEFORMATEXTENSIBLE header
for 24-bit data, but apparently the Tascam software can't understand
this format (it's not alone in this, unfortunately), instead applying
less strict rules for the basic WAVEFORMAT header (everybody does this,
and rightly so).

The "-t wavpcm" option forces sox to use the short WAVEFORMAT header
even when this goes against the spec.

For more details, see https://msdn.microsoft.com/en-us/library/dd390971.aspx

-- 
Måns Rullgård
mans@mansr.com

------------------------------------------------------------------------------
_______________________________________________
SoX-devel mailing list
SoX-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sox-devel

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Sox generates WAV files which the Tascam DP32SD multitrack recorder can not understand
  2015-09-21  2:17 ` Måns Rullgård
@ 2015-09-21  4:23   ` Sam Trenholme
  0 siblings, 0 replies; 3+ messages in thread
From: Sam Trenholme @ 2015-09-21  4:23 UTC (permalink / raw)
  To: sox-devel

I have verified that using the "-t wavpcm" option results in 24-bit
wav files which the Tascam DP-32SD can understand. I have summarized
the technical details and have filed a bug report on the Tascam forum
that discuses this unit.

- Sam

2015-09-20 19:17 GMT-07:00 Måns Rullgård <mans@mansr.com>:
> Sam Trenholme <strenholme.usenet@gmail.com> writes:
>
>> Without modifying the header, the Tascam DP-32SD (a stand-alone
>> digital multitrack recorder) is unable to “grok” (acknowledge as a
>> valid .WAV file) a 24-bit 44.1khz monophonic .WAV file generated by
>> sox.
>>
>> Because of this, the Tascam DP-32SD is unable to import 24-bit/44.1
>> SoX-generated files via the “Audio Depot” unless the .WAV header is
>> altered.
>>
>> ==Steps to reproduce==
>>
>> Use the SoX program to generate a 24-bit wav file. For example:
>>
>> sox foo.wav -b24 bar.wav gain -9
>
> Try adding "-t wavpcm" before the output filename.
>
>> Technical details
>>
>> A Tascam DP-32SD has, for an “audio depot” 24/44.1 file header, the
>> following bytes (this is “hexdump” format; the numbers on the left are
>> hexadecimal numbers; the ASCII that follows is a representation of the
>> data):
>>
>> 00000000 52 49 46 46 XX XX XX XX 57 41 56 45 66 6d 74 20 |RIFF....WAVEfmt |
>> 00000010 10 00 00 00 01 00 01 00 44 ac 00 00 cc 04 02 00 |........D.......|
>> 00000020 03 00 18 00 64 61 74 61 WW WW WW WW WW WW WW WW |....data........|
>
> This is a standard, original Microsoft WAVEFORMAT header.  The value
> 0x0001 at offset 0x14 indicates PCM data.  Although the header structure
> can encode arbitrary values, only 8-bit and 16-bit PCM should use this
> format.
>
>> SoX, on the other hand, generates a 24/44.1 wav file with the
>> following header:
>>
>> 00000000 52 49 46 46 XX XX XX XX 57 41 56 45 66 6d 74 20 |RIFF....WAVEfmt |
>> 00000010 28 00 00 00 fe ff 01 00 44 ac 00 00 cc 04 02 00 |(.......D.......|
>> 00000020 03 00 18 00 16 00 18 00 04 00 00 00 01 00 00 00 |................|
>> 00000030 00 00 10 00 80 00 00 aa 00 38 9b 71 66 61 63 74 |.........8.qfact|
>> 00000040 04 00 00 00 14 f5 5f 00 64 61 74 61 WW WW WW WW |......_.data....|
>
> This is a WAVEFORMATEXTENSIBLE header, indicated by the format tag
> 0xfffe at file offset 0x14.  This header adds additional fields at the
> end allowing arbitrary bit depths as well as various other information.
> It should be used whenever the bit depth is not 8 or 16.
>
> Sox is doing the right thing in creating a WAVEFORMATEXTENSIBLE header
> for 24-bit data, but apparently the Tascam software can't understand
> this format (it's not alone in this, unfortunately), instead applying
> less strict rules for the basic WAVEFORMAT header (everybody does this,
> and rightly so).
>
> The "-t wavpcm" option forces sox to use the short WAVEFORMAT header
> even when this goes against the spec.
>
> For more details, see https://msdn.microsoft.com/en-us/library/dd390971.aspx
>
> --
> Måns Rullgård
> mans@mansr.com

------------------------------------------------------------------------------
_______________________________________________
SoX-devel mailing list
SoX-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sox-devel

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2015-09-21  4:24 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-09-21  0:11 Sox generates WAV files which the Tascam DP32SD multitrack recorder can not understand Sam Trenholme
2015-09-21  2:17 ` Måns Rullgård
2015-09-21  4:23   ` Sam Trenholme

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/sox.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).