blob: 880238064d9aa6fe83823f6bb3d51f526c8543d7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
/*
flext - C++ layer for Max/MSP and pd (pure data) externals
Copyright (c) 2001-2003 Thomas Grill (xovo@gmx.net)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.
*/
/*! \file flmspbuffer.h
\brief Definition of the Max/MSP buffer structure
\internal
This file comes from David Zicarellis inofficial package index.sit
The latter is not easily found so i included the original file buffer.h with flext
*/
#if (FLEXT_SYS == FLEXT_SYS_MAX) && !defined(__FLEXT_MSPBUFFER_H)
#define __FLEXT_MSPBUFFER_H
enum {
MAXCHAN = 4
};
enum {
bi_basefreq = 0,
bi_detune,
bi_lowfreq,
bi_hifreq,
bi_lowvel,
bi_hivel,
bi_gain,
bi_numparams
};
typedef struct _buffer
{
t_object b_obj; // doesn't have any signals so it doesn't need to be pxobject
long b_valid; // flag is off during read replacement or editing operation
float *b_samples; // stored with interleaved channels if multi-channel
long b_frames; // number of sample frames (each one is sizeof(float) * b_nchans bytes)
long b_nchans; // number of channels
long b_size; // size of buffer in floats
float b_sr; // sampling rate of the buffer
float b_1oversr; // 1 / sr
float b_msr; // sr * .001
// Mac-specific stuff
float *b_memory; // pointer to where memory starts (initial padding for interp)
t_symbol *b_name;
short b_vol;
short b_space;
// looping info (from AIFF file)
long b_susloopstart; // in samples
long b_susloopend; // in samples
long b_relloopstart; // in samples
long b_relloopend; // in samples
// instrument info (from AIFF file)
short b_inst[bi_numparams];
// window stuff
void *b_wind;
double b_pixperfr;
double b_frperpix;
long b_imagesize;
Point b_scroll;
long b_scrollscale;
long b_selbegin[MAXCHAN];
long b_selend[MAXCHAN];
long b_zoom;
long b_zim[11];
void *b_mouseout;
long b_format; // 'AIFF' or 'Sd2f'
t_symbol *b_filename; // last file read (not written) for readagain message
long b_oldnchans; // used for resizing window in case of # of channels change
void *b_doneout;
long b_outputbytes; // number of bytes used for output sample (1-4)
long b_modtime; // last modified time ("dirty" method)
} t_buffer;
#define BUFWIND(x) ((t_wind *)(x->b_wind))
#endif
|