-> click here to download SwaN-MR and
other freeware for Mac OS X <-
Writing a converter TO the SwaN-MR format is very easy. Things are complicated if you want convert FROM SwaN-MR but this is not addressed in this page. Your program should include the following code:
typedef struct { long pts, dgt;
float width, Hz, MHz;
short protocol, options; } Layer;
typedef struct { float re, im; } complex;
long n, /* number of complex points */
howMuch,
header = (long*) NewPtrClear(512); /* a Macintosh function */
short i, dimension; /* normally 1 or 2 */
Layer L[5];
complex *data; /* assuming this already contains your data */
#if (! your_spectra_are_like_Bruker)
for (i = 0; i < n; i++)
data[i].im = - data[i].im;
#endif
L->pts = 1;
L->dgt = 1;
L->width = 1000;
L->Hz = 0;
L->MHz = 100;
L->protocol = 0;
L->options = 1;
for (i = 1; i <= 4; i++)
L[i] = L[0];
for (i = 1; i <= dimension; i++) {
L[i].pts = n; /* modify if dimension > 1 !!! */
L[i].dgt = L[i].pts;
L->width = your_spectral_width;
L->Hz = frequency_at_the_right_end_of_the_spectrum;
L-> MHz = spectrometer_frequency;
}
header[0] = 32;
header[1] = 8 * n;
header[33] = dimension << 16;
/* assuming your file is open and refnum = the file reference number */
howMuch = 512;
FSWrite (refNum, &howMuch, (Ptr) header);
howMuch = 8 * n;
FSWrite (refNum, &howMuch, (Ptr) data);
SetFPos(refNum, fsFromStart, 32);
howMuch = 4 * sizeof(Layer);
FSWrite (refNum, &howMuch, (Ptr) &L[1]);
FSClose (refNum);
DisposPtr ((Ptr) header);