Taperssection.com

Gear / Technical Help => Post-Processing, Computer / Streaming / Internet Devices & Related Activity => Topic started by: scb on October 28, 2005, 03:17:46 PM

Title: windows shntool question
Post by: scb on October 28, 2005, 03:17:46 PM
i'm very familiar with the mac version of shntool but not with the pc version, so bear with me

this works fine on the pc:

shntool join -o shn -d c:\outputDirectory c:\file1.wav c:\file2.wav

and joins the 2 wav files into 1 shn file in c:\outputDirectory

this doesn't work:
shntool fix -o shn -d c:\outputDirectory c:\file1.wav c:\file2.wav

and throws an error saying that c:\outputDirectory/c:\file1.wav can't be opened for output

any idea what's going on?

(i realize i can do it without specifying theoutputDirectory, but my whole point here is to output to a different directory)
Title: Re: windows shntool question
Post by: Gordon on October 28, 2005, 03:23:34 PM
I use batch files and have it set up so all I have to do is right clight > shnfix and it does it's thing.
Title: Re: windows shntool question
Post by: Brian Skalinder on October 28, 2005, 03:59:25 PM
shntool fix -o shn -d c:\outputDirectory c:\file1.wav c:\file2.wav

and throws an error saying that c:\outputDirectory/c:\file1.wav can't be opened for output

It doesn't work for me on Win2K, but I don't get the same error.  It DID work if I used forward slashes instead of backslash for the output and filename paths.  So...

shntool fix -o shn -d c:/outputDirectory c:/file1.wav c:/file2.wav
Title: Re: windows shntool question
Post by: scb on October 28, 2005, 04:08:36 PM
yeah i found that in the source

Code: [Select]
static void make_outfilename(char *infilename,char *outfilename)
/* creates an output file name for shifted data, used in fix mode */
{
  char *basename;

 if ((basename = strrchr(infilename,'/')))
    basename++;
  else
    basename = infilename;

  if (1 == output_dir_flag)
    my_snprintf(outfilename,FILENAME_SIZE,"%s/%s",output_directory,basename);
  else
    my_snprintf(outfilename,FILENAME_SIZE,"%s",basename);

  if (filename_contains_a_dot(outfilename))
    *(strrchr(outfilename,'.')) = '\0';

  strcat(outfilename,"-");
  strcat(outfilename,POSTFIX_FIXED);
  strcat(outfilename,".");
  strcat(outfilename,op->extension);
}


It looks for a forward slash and gets the filename from there, then tacks that on to the output dir.  if it finds no forward slash, it puts the whole path on

not an issue on mac/unix machines since the path separator there IS the forward slash