//
/*******************************************************************************************
Copyright (C) 2010 Mestrelab Research S.L. All rights reserved.
This file is part of the MNova scripting toolkit.
Authorized users of Mnova Software may use this file freely, but this file is provided AS IS
with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE.
*******************************************************************************************/
function playFID()
{
var spec = nmr.activeSpectrum();
if (!spec.isValid() || spec.dimCount != 1)
return;
var NumSamples = spec.count();
var mySubChunk1Size = 16; // 16 for PCM
var myChannels = spec.isReal ? 1 : 2;
var myBitsPerSample = 16;
var Subchunk2Size = NumSamples * myChannels * myBitsPerSample/8;
var myFormat = 1; //1 = PCM
var mySampleRate = spec.scaleWidth(1);//e.g.44100; //8000, 11025, 44100, ETC
var myByteRate = mySampleRate *myChannels*myBitsPerSample/8 ;
var myBlockAlign = myChannels * myBitsPerSample/8;
var myDataSize = NumSamples * myChannels * myBitsPerSample/8;
var myChunkSize =4 + (8 + mySubChunk1Size) + (8 + Subchunk2Size) ;
var fidFile = Dir.temp()+"/playFID.wav";
var f = new File(fidFile);
f.open(File.WriteOnly);
var s = new BinaryStream(f);
s.endianness =BinaryStream.eLittle;
print(s.endianness);
// write the wav file per the wav file format
s.pos = 0;
s.writeBytes("RIFF", 4);
s.writeInt32(myChunkSize);
s.writeBytes("WAVE", 4);
s.writeBytes("fmt ", 4);
s.writeInt32(mySubChunk1Size);
s.writeInt16 (myFormat);
s.writeInt16(myChannels);
s.writeInt32(mySampleRate);
s.writeInt32 (myByteRate);
s.writeInt16(myBlockAlign);
s.writeInt16 (myBitsPerSample);
s.writeBytes ("data", 4);
s.writeInt32 (myDataSize);
//DATA POINTS
var min = 9999999999;
var max = -9999999999;
//scan data for min/max values
for (var i=0;i max)
max = value;
if (value < min)
min = value;
}
//scale and write the ouput
var range = myBitsPerSample * 1024 - 1;
for (var i=0;i