
	spPicolaɂ


͂߂
--------

spPicola͉̎ԐLks@łPICOLACûłB
rcj񂪊JCo[Wɍ쐬Ă܂B
rc̃IWio[WɊւ́AȉURLɂ܂B

  http://keizai.yokkaichi-u.ac.jp/~ikeda/research/picola-jp.html


gp@
--------

spPicolagpۂ̗́Aȉ̂悤ɂȂ܂B

1. spPicolaInitConfig ĂсAݒB

2. spPicolaOpen ĂсAGWI[vB

3. spPicolaSetRate ĂсAԐLkݒ肷ƓɁAo̓obt@̍őTCY擾B

4. spPicolaSetRateŕԂTCYœo̓obt@̃mہB

5. spPicolaProcessĂсA̓obt@̎ԎLksBLkg`
   o̓obt@ɕԂ̂ŁAt@CɏoȂAĐȂA
   ]̏sBȂAo͂g`̃TCY0ł邱Ƃ̂ŒӁB

6. SĂ̓͂I܂spPicolaProcessJԂĂсAo͂ɑ΂鏈sB

7. ԐLk̕ύXKvɂȂꍇ́Aēx spPicolaSetRate ĂяoB
   ɂAGW̓ԂƓɁAo̓obt@̃TCY
   Ď擾BɁAreallocȂǂɂAo̓obt@̃mۂB

8. ͂IAspPicolaFlush ĂсAobt@ɂ܂Ă
   ̉g`̏sB

9. o̓obt@̃B

10. spPicolaClose ĂсAGWN[YB


ԐLks߂ɓ͂Əo͂̒قȂ邱ƂAԐLkɂĕKv
ȏo̓obt@̃TCYقȂ邱ƂȂǂA኱Agp@GɂȂĂ܂B

܂AspPicolał͓ɎԐLkp̃obt@ĂAÎ
o̓obt@ɏoĂ܂B̂߁A͂Əo͂̎Ԃ͓͎
炸AfBC܂܂܂B


f[^^t@X
--------------------

spPicolaConfig {
    unsigned long version_id; /* spPicolaInitConfigĂяoɎIɏ܂ */

    double samp_freq;	      /* TvOgHzPʂŎw肵܂ */
    int num_channel;	      /* `lłBXeȈꍇ2Am̏ꍇ1ɂȂ܂B */

    double max_input_buf_length_ms;   /* `lƂ́A̓obt@̍ő̒~ZJhPʂŎw肵܂ */
    double min_period_ms;	      /* Ńsb`oۂ̍ŏsb`Ԋuw肵܂ */
    double max_period_ms;	      /* Ńsb`oۂ̍ősb`Ԋuw肵܂ */
};

spPicola : Bꂽf[^^


֐t@X
----------------

spBoolԂ֐́ASP_TRUEԂAsSP_FALSEԂ܂B

spBool spPicolaInitConfig(spPicolaConfig *config);

ݒ܂BɂAftHg̒lZbg܂B
ftHg̃TvOg8000HzA`l1imjA
̓obt@20msłB


spPicola spPicolaOpen(spPicolaConfig *config);

GWI[v܂BG[ꍇNULLԂ܂B


spBool spPicolaSetRate(spPicola picola, double rate, 
                       long *max_input_buf_length, long *max_output_buf_length);

ԐLkw肵܂B̓rŎԐLkύXꍇɂ̊֐
ĂԕKv܂B

rateɂ莞ԐLkw肵܂Bo̓obt@̍őTCY
ꂼmax_input_buf_lengthmax_output_buf_lengthɂ擾܂B
max_output_buf_lengthNULL̏ꍇ̓G[ɂȂ܂B


spBool spPicolaProcess(spPicola picola, double *input_buf, long *input_buf_length, 
                       double *output_buf, long *output_buf_length, long *input_delay);

ԐLks܂B

input_bufAoutput_bufɂ́Aꂼo̓obt@w肵܂B
input_buf_lengthɂ͓̓obt@ɂg`̒̃|C^w肵܂B
֐ԂĂƁAꂽɒlύX܂B

output_bufɁAԎLkg`Ԃ܂Boutput_buf_lengthɂ́A
Ԃꂽg`̒̃|C^Ԃ܂B̒lAȂ킿o͂g`̒
0łĂG[ł͂܂B

input_buf, output_buf ́Aꂼ spPicolaSetRate ɂԂ
max_input_buf_lengthAmax_output_buf_length ȏ̒̃
mۂĂKv܂B

input_delayɂ́A֐ďo̎_ŁA܂ĂȂ͔g`̒
|C^Ԃ܂B̒lKvȂꍇ́ANULLw肵ĉB


spBool spPicolaFlush(spPicola picola, double *output_buf, long *output_buf_length);

obt@ɂ܂Ă関̉g`̏s܂B

output_bufɁAꂽg`Ԃ܂Boutput_buf_lengthɂ́A
Ԃꂽg`̒̃|C^Ԃ܂B

output_buf ́AspPicolaSetRate ɂԂ max_output_buf_length ȏ
̃mۂĂKv܂B


spBool spPicolaClose(spPicola picola);

GWN[Y܂BpicolaɂspPicolaOpenŕԂĂ̂w肵܂B


gp
------

gpႪAexample/picolatest.c ɂ܂B


CZX
----------

쐬́ALICENSE.txt ɏ]܂B


GiBanno Hidekij
