| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- /*
- * Copyright (c) 1983-2013 Richard Dobson and Composers Desktop Project Ltd
- * http://people.bath.ac.uk/masrwd
- * http://www.composersdesktop.com
- * This file is part of the CDP System.
- * The CDP System is free software; you can redistribute it
- * and/or modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * The CDP System is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- * See the GNU Lesser General Public License for more details.
- * You should have received a copy of the GNU Lesser General Public
- * License along with the CDP System; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
- /* fmdcode.h */
- /*
- Channel order is WXYZ,RSTUV,KLMNOPQ
-
- The number of channels defines the order of the soundfield:
- 2 channel = UHJ
- 3 channel = h = 1st order horizontal
- 4 channel = f = 1st order 3-D
- 5 channel = hh = 2nd order horizontal
- 6 channel = fh = 2nd order horizontal + 1st order height (formerly
- called 2.5 order)
- 7 channel = hhh = 3rd order horizontal
- 8 channel = fhh = 3rd order horizontal + 1st order height
- 9 channel = ff = 2nd order 3-D
- 11 channel = ffh = 3rd order horizontal + 2nd order height
- 16 channel = fff = 3rd order 3-D
-
-
- Horizontal Height Soundfield Number of Channels
- order order type channels
- 1 0 horizontal 3 WXY
- 1 1 full-sphere 4 WXYZ
- 2 0 horizontal 5 WXY....UV
- 2 1 mixed-order 6 WXYZ...UV
- 2 2 full-sphere 9 WXYZRSTUV
- 3 0 horizontal 7 WXY....UV.....PQ
- 3 1 mixed-order 8 WXYZ...UV.....PQ
- 3 2 mixed-order 11 WXYZRSTUV.....PQ
- 3 3 full-sphere 16 WXYZRSTUVKLMNOPQ
- */
- typedef struct abf_samp {
- float W;
- float X;
- float Y;
- float Z;
- float R;
- float S;
- float T;
- float U;
- float V;
- } ABFSAMPLE;
- typedef void (*fmhcopyfunc)(ABFSAMPLE*,const float*);
- typedef void (*fmhdecodefunc)(const ABFSAMPLE*, float*,unsigned int);
- //void bfdcode4(float *inbuf,long numframes);
- void fmhcopy_3(ABFSAMPLE* abf,const float*buf);
- void fmhcopy_4(ABFSAMPLE* abf,const float*buf);
- void fmhcopy_5(ABFSAMPLE* abf,const float*buf);
- void fmhcopy_6(ABFSAMPLE* abf,const float*buf);
- void fmhcopy_7(ABFSAMPLE* abf,const float*buf);
- void fmhcopy_8(ABFSAMPLE* abf,const float*buf);
- void fmhcopy_9(ABFSAMPLE* abf,const float*buf);
- void fmhcopy_11(ABFSAMPLE* abf,const float*buf);
- void fmhcopy_16(ABFSAMPLE* abf,const float*buf);
- // i1 = inphase 1st order, etc
- void fm_i1_mono(const ABFSAMPLE *inbuf,float *outbuf,unsigned int numframes);
- void fm_i1_stereo(const ABFSAMPLE *inbuf,float *outbuf,unsigned int numframes);
- void fm_i1_square(const ABFSAMPLE *inbuf,float *outbuf,unsigned int numframes);
- void fm_i2_square(const ABFSAMPLE *inbuf,float *outbuf,unsigned int numframes);
- void fm_i1_quad(const ABFSAMPLE *inbuf,float *outbuf,unsigned int numframes);
- void fm_i2_quad(const ABFSAMPLE *inbuf,float *outbuf,unsigned int numframes);
- void fm_i1_pent(const ABFSAMPLE *inbuf,float *outbuf,unsigned int numframes);
- void fm_i2_pent(const ABFSAMPLE *inbuf,float *outbuf,unsigned int numframes);
- void fm_i1_surr(const ABFSAMPLE *inbuf,float *outbuf,unsigned int numframes);
- void fm_i2_surr(const ABFSAMPLE *inbuf,float*outbuf,unsigned int numframes);
- void fm_i1_surr6(const ABFSAMPLE *inbuf,float *outbuf,unsigned int numframes);
- void fm_i2_surr6(const ABFSAMPLE *inbuf,float*outbuf,unsigned int numframes);
- void dm_i1_surr(const ABFSAMPLE *inbuf,float*outbuf,unsigned int numframes);
- void dm_i1_surr6(const ABFSAMPLE *inbuf,float*outbuf,unsigned int numframes);
- void dm_i2_surr(const ABFSAMPLE *inbuf,float*outbuf,unsigned int numframes);
- void dm_i2_surr6(const ABFSAMPLE *inbuf,float*outbuf,unsigned int numframes);
- void fm_i1_hex(const ABFSAMPLE *inbuf,float *outbuf,unsigned int numframes);
- void fm_i2_hex(const ABFSAMPLE *inbuf,float *outbuf,unsigned int numframes);
- void fm_i1_oct1(const ABFSAMPLE *inbuf,float *outbuf,unsigned int numframes);
- void fm_i2_oct1(const ABFSAMPLE *inbuf,float *outbuf,unsigned int numframes);
- void fm_i1_oct2(const ABFSAMPLE *inbuf,float *outbuf,unsigned int numframes);
- void fm_i2_oct2(const ABFSAMPLE *inbuf,float *outbuf,unsigned int numframes);
- void fm_i1_cube(const ABFSAMPLE *inbuf,float *outbuf,unsigned int numframes);
- void fm_i2_cube(const ABFSAMPLE *inbuf,float *outbuf,unsigned int numframes);
- void fm_i1_cubex(const ABFSAMPLE *inbuf,float *outbuf,unsigned int numframes);
- void fm_i2_cubex(const ABFSAMPLE *inbuf,float *outbuf,unsigned int numframes);
|