Changeset 2430:cd4e4e0562a4 in roaraudio


Ignore:
Timestamp:
08/19/09 06:02:58 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added some basic SYNFs

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • include/libroardsp/synth.h

    r2426 r2430  
    4343// SYNF -> Synthesis Function 
    4444#define ROAR_SYNTH_SYNF_SINE ROAR_SYNTH_FUNC_CAST(sinf) 
     45#define ROAR_SYNTH_SYNF_RECT ROAR_SYNTH_FUNC_CAST(roar_synth_synf_rect) 
     46#define ROAR_SYNTH_SYNF_SAW  ROAR_SYNTH_FUNC_CAST(roar_synth_synf_saw) 
     47#define ROAR_SYNTH_SYNF_TRI  ROAR_SYNTH_FUNC_CAST(roar_synth_synf_tri) 
     48#define ROAR_SYNTH_SYNF_TRAP ROAR_SYNTH_FUNC_CAST(roar_synth_synf_trap) 
    4549 
    4650struct roar_synth_state { 
     
    5862int roar_synth_pcmout_i161(struct roar_synth_state * state, int16_t * out, size_t frames); 
    5963 
     64// some basic SYNFs: 
     65float roar_synth_synf_rect (float t, struct roar_synth_state * state); 
     66float roar_synth_synf_saw  (float t, struct roar_synth_state * state); 
     67float roar_synth_synf_tri  (float t, struct roar_synth_state * state); 
     68float roar_synth_synf_trap (float t, struct roar_synth_state * state); 
     69 
    6070#endif 
    6171 
  • libroardsp/synth.c

    r2429 r2430  
    9898} 
    9999 
     100// basic SINFs: 
     101float roar_synth_synf_rect (float t, struct roar_synth_state * state) { 
     102 t /= 2*M_PI; 
     103 t -= (int)t; 
     104 
     105 if ( t < 0.5 ) 
     106  return  1; 
     107 else 
     108  return -1; 
     109} 
     110 
     111float roar_synth_synf_saw  (float t, struct roar_synth_state * state) { 
     112 t /= 2*M_PI; 
     113 t -= (int)t; 
     114 
     115 return 2*t - 1; 
     116} 
     117 
     118float roar_synth_synf_tri  (float t, struct roar_synth_state * state) { 
     119 t /= 2*M_PI; 
     120 t -= (int)t; 
     121 
     122 if ( t < 0.5 ) 
     123  return   4* t      - 1; 
     124 else 
     125  return  -4*(t-0.5) + 1; 
     126} 
     127 
     128float roar_synth_synf_trap (float t, struct roar_synth_state * state) { 
     129 t /= 2*M_PI; 
     130 t -= (int)t; 
     131 
     132 if ( t < 0.125 || t > 0.875 ) { 
     133  return -1; 
     134 } else if ( t < 0.625 && t > 0.375 ) { 
     135  return  1; 
     136 } else if ( t < 0.5 ) { 
     137  return  8*(t-0.375) + 1; 
     138 } else { 
     139  return -8*(t-0.625) + 1; 
     140 } 
     141} 
    100142 
    101143//ll 
Note: See TracChangeset for help on using the changeset viewer.