// /******************************************************************************************* 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