Browse Source

Merge branch 'master' of klarke.webfactional.com:webapps/git/repos/libcm

master
Kevin Larke 10 years ago
parent
commit
d848f94030
13 changed files with 940 additions and 722 deletions
  1. 1
    0
      cmAudioPort.h
  2. 1
    1
      cmMidi.c
  3. 110
    27
      cmProc2.c
  4. 15
    1
      cmProc2.h
  5. 3
    3
      cmRtNet.h
  6. 1
    1
      cmRtSys.c
  7. 1
    1
      cmUi.c
  8. 2
    2
      dsp/cmDspPgm.c
  9. 343
    336
      dsp/cmDspPgmKr.c
  10. 454
    347
      osx/cmAudioPortOsx.c
  11. 2
    0
      osx/cmAudioPortOsx.h
  12. 6
    2
      vop/cmVectOpsTemplateCode.h
  13. 1
    1
      vop/cmVectOpsTemplateHdr.h

+ 1
- 0
cmAudioPort.h View File

38
     kSysErrApRC,
38
     kSysErrApRC,
39
     kInvalidDevIdApRC,
39
     kInvalidDevIdApRC,
40
     kAudioPortFileFailApRC,
40
     kAudioPortFileFailApRC,
41
+    kParamRangeErrorApRC,
41
     kThreadFailApRC
42
     kThreadFailApRC
42
   };
43
   };
43
 
44
 

+ 1
- 1
cmMidi.c View File

245
 
245
 
246
   unsigned rv =  (octave*12) + idx + 12;
246
   unsigned rv =  (octave*12) + idx + 12;
247
   
247
   
248
-  if( 0 <= rv && rv <= 127 )
248
+  if( rv <= 127 )
249
     return rv;
249
     return rv;
250
 
250
 
251
   return kInvalidMidiPitch;
251
   return kInvalidMidiPitch;

+ 110
- 27
cmProc2.c View File

4779
   p->minTrkN   = a->minTrkSec * a->srate / a->hopSmpCnt;
4779
   p->minTrkN   = a->minTrkSec * a->srate / a->hopSmpCnt;
4780
   p->nextTrkId = 1;
4780
   p->nextTrkId = 1;
4781
   p->aV        = cmMemResizeZ(cmReal_t,p->aV,p->a.binCnt);
4781
   p->aV        = cmMemResizeZ(cmReal_t,p->aV,p->a.binCnt);
4782
+  p->attenDlyPhsMax = cmMax(3,a->attenDlySec * a->srate / a->hopSmpCnt );
4782
   p->attenPhsMax    = cmMax(3,a->attenAtkSec * a->srate / a->hopSmpCnt );
4783
   p->attenPhsMax    = cmMax(3,a->attenAtkSec * a->srate / a->hopSmpCnt );
4783
   
4784
   
4784
   if( a->logFn != NULL )
4785
   if( a->logFn != NULL )
5019
       c->hz_mean = cmVOR_Mean(c->hzV,n);
5020
       c->hz_mean = cmVOR_Mean(c->hzV,n);
5020
       c->hz_std  = sqrt(cmVOR_Variance( c->hzV,n,&c->hz_mean));
5021
       c->hz_std  = sqrt(cmVOR_Variance( c->hzV,n,&c->hz_mean));
5021
 
5022
 
5022
-      c->score = c->db / ((cmMin(0.1,c->db_std) + cmMin(0.1,c->hz_std))/2);
5023
+      //c->score = c->db / ((cmMax(0.1,c->db_std) + cmMax(0.1,c->hz_std))/2);
5024
+
5025
+      c->score = c->db - (c->db_std * 5) - (c->hz_std/50);
5026
+
5027
+      //printf("%f %f %f %f %f\n",c->db,cmMin(0.1,c->db_std),c->hz,cmMin(0.1,c->hz_std),c->score);
5023
     }
5028
     }
5024
 }
5029
 }
5025
 
5030
 
5082
       // 
5087
       // 
5083
       if( c->score >= p->a.attenThresh && c->state == kNoStateFrqTrkId )
5088
       if( c->score >= p->a.attenThresh && c->state == kNoStateFrqTrkId )
5084
       {
5089
       {
5090
+        //printf("%f\n",c->score);
5085
         c->attenPhsIdx = 0;
5091
         c->attenPhsIdx = 0;
5086
-        c->state  = kAtkFrqTrkId;        
5092
+        c->state       = kDlyFrqTrkId;        
5087
       }
5093
       }
5088
 
5094
 
5089
       switch( c->state )
5095
       switch( c->state )
5091
         case kNoStateFrqTrkId:
5097
         case kNoStateFrqTrkId:
5092
           break;
5098
           break;
5093
 
5099
 
5100
+        case kDlyFrqTrkId:
5101
+          c->attenPhsIdx += 1;
5102
+
5103
+          if( c->attenPhsIdx >= p->attenDlyPhsMax && c->dN == 0 )
5104
+            c->state = kAtkFrqTrkId;          
5105
+
5106
+          break;
5107
+
5094
         case kAtkFrqTrkId:
5108
         case kAtkFrqTrkId:
5095
-          if( c->attenPhsIdx < p->attenPhsMax )
5109
+          if( c->attenPhsIdx < p->attenDlyPhsMax + p->attenPhsMax )
5096
           {
5110
           {
5097
 
5111
 
5098
             c->attenGain = cmMin(1.0,p->a.attenGain * c->attenPhsIdx / p->attenPhsMax);
5112
             c->attenGain = cmMin(1.0,p->a.attenGain * c->attenPhsIdx / p->attenPhsMax);
5101
           }
5115
           }
5102
 
5116
 
5103
           c->attenPhsIdx += 1;
5117
           c->attenPhsIdx += 1;
5104
-          if( c->attenPhsIdx >= p->attenPhsMax )
5118
+          if( c->attenPhsIdx >= p->attenDlyPhsMax + p->attenPhsMax )
5105
             c->state = kSusFrqTrkId;
5119
             c->state = kSusFrqTrkId;
5106
           break;
5120
           break;
5107
 
5121
 
5275
 
5289
 
5276
 void _cmFrqTrkApplyFrqBias( cmFrqTrk* p, cmReal_t* xV )
5290
 void _cmFrqTrkApplyFrqBias( cmFrqTrk* p, cmReal_t* xV )
5277
 {
5291
 {
5278
-  // 1+2*([0:.01:1].^4)
5292
+  // convert to decibel scale (0.0 - 100.0) and then scale to (0.0 to 1.0)
5279
   unsigned i;
5293
   unsigned i;
5280
   for(i=0; i<p->bN; ++i)
5294
   for(i=0; i<p->bN; ++i)
5281
     xV[i] =  cmMax(0.0, (20*log10( cmMax(xV[i]/1.5,0.00001)) + 100.0)/100.0);
5295
     xV[i] =  cmMax(0.0, (20*log10( cmMax(xV[i]/1.5,0.00001)) + 100.0)/100.0);
5318
   // copy p->dbV to dbM[hi,:] 
5332
   // copy p->dbV to dbM[hi,:] 
5319
   cmVOR_CopyN(p->dbM + p->hi, p->bN, p->hN, p->dbV, 1 );
5333
   cmVOR_CopyN(p->dbM + p->hi, p->bN, p->hN, p->dbV, 1 );
5320
 
5334
 
5321
-  // increment hi
5335
+  // increment hi to next column to fill in dbM[]
5322
   p->hi = (p->hi + 1) % p->hN;
5336
   p->hi = (p->hi + 1) % p->hN;
5323
 
5337
 
5324
-  // Form the spectral magnitude profile by taking the mean over time
5325
-  // of the last hN magnitude vectors
5338
+  // Set dbV[] to spectral magnitude profile by taking the mean over time
5339
+  // of the last hN magnitude vectors 
5326
   cmVOR_MeanM2(p->dbV, p->dbM, p->hN, p->bN, 0, cmMin(p->fN+1,p->hN));
5340
   cmVOR_MeanM2(p->dbV, p->dbM, p->hN, p->bN, 0, cmMin(p->fN+1,p->hN));
5327
   //cmVOR_MeanM(p->dbV, p->dbM, p->hN, p->bN, 0);
5341
   //cmVOR_MeanM(p->dbV, p->dbM, p->hN, p->bN, 0);
5328
 
5342
 
5329
   if( p->fN >= p->hN )
5343
   if( p->fN >= p->hN )
5330
   {
5344
   {
5331
-    // set the indexes of the peaks above pkThreshDb in i0[]
5345
+    // set pkiV[] to the indexes of the peaks above pkThreshDb in i0[]
5332
     unsigned pkN = cmVOR_PeakIndexes(p->pkiV, p->bN, p->dbV, p->bN, p->a.pkThreshDb );
5346
     unsigned pkN = cmVOR_PeakIndexes(p->pkiV, p->bN, p->dbV, p->bN, p->a.pkThreshDb );
5333
 
5347
 
5334
-    // generate the peak frequencies from the magnitude
5348
+    // set hzV[] to the peak frequencies assoc'd with peaks at dbV[ pkiV[] ].
5335
     _cmFrqTrkMagnToHz(p, p->dbV, p->pkiV, pkN, hzV );
5349
     _cmFrqTrkMagnToHz(p, p->dbV, p->pkiV, pkN, hzV );
5336
 
5350
 
5337
     // extend the existing trackers
5351
     // extend the existing trackers
5485
 {
5499
 {
5486
   cmSpecDist_t* p = cmObjAlloc( cmSpecDist_t, ctx, ap );
5500
   cmSpecDist_t* p = cmObjAlloc( cmSpecDist_t, ctx, ap );
5487
 
5501
 
5502
+  p->iSpecVa   = cmVectArrayAlloc(ctx,kRealVaFl);
5488
   p->oSpecVa   = cmVectArrayAlloc(ctx,kRealVaFl);
5503
   p->oSpecVa   = cmVectArrayAlloc(ctx,kRealVaFl);
5489
 
5504
 
5490
   if( procSmpCnt != 0 )
5505
   if( procSmpCnt != 0 )
5505
   cmSpecDist_t* p = *pp;
5520
   cmSpecDist_t* p = *pp;
5506
   
5521
   
5507
   cmSpecDistFinal(p);
5522
   cmSpecDistFinal(p);
5523
+  cmVectArrayFree(&p->iSpecVa);
5508
   cmVectArrayFree(&p->oSpecVa);
5524
   cmVectArrayFree(&p->oSpecVa);
5509
   cmMemPtrFree(&p->hzV);
5525
   cmMemPtrFree(&p->hzV);
5526
+  cmMemPtrFree(&p->iSpecM);
5527
+  cmMemPtrFree(&p->oSpecM);
5528
+  cmMemPtrFree(&p->iSpecV);
5529
+  cmMemPtrFree(&p->oSpecV);
5510
   cmObjFree(pp);
5530
   cmObjFree(pp);
5511
   return cmOkRC;
5531
   return cmOkRC;
5512
 
5532
 
5523
   unsigned flags = 0;
5543
   unsigned flags = 0;
5524
 
5544
 
5525
 
5545
 
5546
+  p->srate        = srate;
5526
   p->wndSmpCnt    = wndSmpCnt;
5547
   p->wndSmpCnt    = wndSmpCnt;
5527
   p->hopSmpCnt    = (unsigned)floor(wndSmpCnt/hopFcmt);
5548
   p->hopSmpCnt    = (unsigned)floor(wndSmpCnt/hopFcmt);
5528
   p->procSmpCnt   = procSmpCnt;
5549
   p->procSmpCnt   = procSmpCnt;
5550
   fta.pkMaxHz       = 20000;
5571
   fta.pkMaxHz       = 20000;
5551
   fta.whFiltCoeff   = 0.33;
5572
   fta.whFiltCoeff   = 0.33;
5552
 
5573
 
5553
-  fta.attenThresh = 900.0;
5554
-  fta.attenGain   = 1.0; 
5555
-  fta.attenAtkSec = 0.25;  
5574
+  fta.attenThresh = 0.4;
5575
+  fta.attenGain   = 0.5; 
5576
+  fta.attenDlySec = 1.0;
5577
+  fta.attenAtkSec = 1.0;  
5556
 
5578
 
5557
   fta.logFn         = "/home/kevin/temp/frqtrk/trk_log.va";
5579
   fta.logFn         = "/home/kevin/temp/frqtrk/trk_log.va";
5558
   fta.levelFn       = "/home/kevin/temp/frqtrk/level.va";
5580
   fta.levelFn       = "/home/kevin/temp/frqtrk/level.va";
5560
   fta.attenFn       = "/home/kevin/temp/frqtrk/atten.va";
5582
   fta.attenFn       = "/home/kevin/temp/frqtrk/atten.va";
5561
 
5583
 
5562
   p->ft  = cmFrqTrkAlloc( p->obj.ctx, NULL, &fta );
5584
   p->ft  = cmFrqTrkAlloc( p->obj.ctx, NULL, &fta );
5563
-  cmFrqTrkPrint(p->ft);
5585
+  //cmFrqTrkPrint(p->ft);
5564
 
5586
 
5565
   cmFbCtlArgs_t fba;
5587
   cmFbCtlArgs_t fba;
5566
   fba.srate = srate;
5588
   fba.srate = srate;
5587
   p->aeMin  = 1000;
5609
   p->aeMin  = 1000;
5588
   p->aeMax  = -1000;
5610
   p->aeMax  = -1000;
5589
 
5611
 
5612
+  
5613
+  double histSecs = 0.05;
5614
+  p->hN      = cmMax(1,histSecs * p->srate / p->hopSmpCnt );
5615
+  p->iSpecM  = cmMemResizeZ(cmReal_t,p->iSpecM,p->hN*p->pva->binCnt);
5616
+  p->oSpecM  = cmMemResizeZ(cmReal_t,p->oSpecM,p->hN*p->pva->binCnt);
5617
+  p->iSpecV  = cmMemResizeZ(cmReal_t,p->iSpecV,      p->pva->binCnt);
5618
+  p->oSpecV  = cmMemResizeZ(cmReal_t,p->oSpecV,      p->pva->binCnt);
5619
+  p->hi      = 0;
5620
+
5590
 
5621
 
5591
   //p->bypOut = cmMemResizeZ(cmSample_t, p->bypOut, procSmpCnt );
5622
   //p->bypOut = cmMemResizeZ(cmSample_t, p->bypOut, procSmpCnt );
5592
 
5623
 
5597
 {
5628
 {
5598
   cmRC_t rc = cmOkRC;
5629
   cmRC_t rc = cmOkRC;
5599
 
5630
 
5631
+  cmVectArrayWrite(p->iSpecVa, "/home/kevin/temp/frqtrk/iSpec.va");
5600
   cmVectArrayWrite(p->oSpecVa, "/home/kevin/temp/frqtrk/oSpec.va");
5632
   cmVectArrayWrite(p->oSpecVa, "/home/kevin/temp/frqtrk/oSpec.va");
5601
 
5633
 
5602
   cmPvAnlFree(&p->pva);
5634
   cmPvAnlFree(&p->pva);
5777
 
5809
 
5778
 }
5810
 }
5779
 
5811
 
5812
+void _cmSpecDistPhaseMod( cmSpecDist_t* p, cmReal_t* phsV, unsigned binCnt )
5813
+{
5814
+  unsigned i;
5815
+  cmReal_t offs =  sin( 0.1 * 2.0 * M_PI * (p->phaseModIndex++) / (p->srate/p->hopSmpCnt) );
5816
+
5817
+  //printf("offs %f %i %i %f\n",offs,p->phaseModIndex,p->hopSmpCnt,p->srate);
5818
+
5819
+  cmReal_t new_phs = phsV[0] + offs;
5820
+  for(i=0; i<binCnt-1; ++i)
5821
+  {
5822
+    while( new_phs > M_PI )
5823
+      new_phs -= 2.0*M_PI;
5824
+
5825
+    while( new_phs < -M_PI )
5826
+      new_phs += 2.0*M_PI;
5827
+
5828
+    cmReal_t d = phsV[i+1] - phsV[i];
5829
+
5830
+    phsV[i] = new_phs;
5831
+
5832
+    new_phs += d;    
5833
+  }
5834
+  
5835
+}
5836
+
5780
 cmRC_t  cmSpecDistExec( cmSpecDist_t* p, const cmSample_t* sp, unsigned sn )
5837
 cmRC_t  cmSpecDistExec( cmSpecDist_t* p, const cmSample_t* sp, unsigned sn )
5781
 {
5838
 {
5782
 
5839
 
5783
   assert( sn == p->procSmpCnt );
5840
   assert( sn == p->procSmpCnt );
5784
 
5841
 
5842
+  bool recordFl = false;
5843
+
5785
   // cmPvAnlExec() returns true when it calc's a new spectral output frame
5844
   // cmPvAnlExec() returns true when it calc's a new spectral output frame
5786
   if( cmPvAnlExec( p->pva, sp, sn ) )
5845
   if( cmPvAnlExec( p->pva, sp, sn ) )
5787
   {
5846
   {
5788
     cmReal_t X1m[p->pva->binCnt]; 
5847
     cmReal_t X1m[p->pva->binCnt]; 
5789
 
5848
 
5849
+    // take the mean of the the input magntitude spectrum
5790
     cmReal_t u0 = cmVOR_Mean(p->pva->magV,p->pva->binCnt);
5850
     cmReal_t u0 = cmVOR_Mean(p->pva->magV,p->pva->binCnt);
5791
 
5851
 
5792
-    //cmFrqTrkExec(p->ft, p->pva->magV, p->pva->phsV, NULL );
5793
-
5794
-    // apply the freq track suppression filter
5795
-    //cmVOR_MultVVV(X1m, p->pva->binCnt,p->pva->magV, p->ft->aV );
5852
+    if(recordFl)
5853
+    {
5854
+      // store a time windowed average of the input spectrum to p->iSpecV
5855
+      cmVOR_CopyN(p->iSpecM + p->hi, p->pva->binCnt, p->hN, X1m, 1 );
5856
+      cmVOR_MeanM2(p->iSpecV, p->iSpecM, p->hN, p->pva->binCnt, 0, cmMin(p->fi+1,p->hN));
5857
+    }
5796
 
5858
 
5797
     cmVOR_AmplToDbVV(X1m, p->pva->binCnt, p->pva->magV, -1000.0 );
5859
     cmVOR_AmplToDbVV(X1m, p->pva->binCnt, p->pva->magV, -1000.0 );
5798
     //cmVOR_AmplToDbVV(X1m, p->pva->binCnt, X1m, -1000.0 );
5860
     //cmVOR_AmplToDbVV(X1m, p->pva->binCnt, X1m, -1000.0 );
5799
 
5861
 
5800
 
5862
 
5863
+
5801
     switch( p->mode )
5864
     switch( p->mode )
5802
     {
5865
     {
5803
       case kBypassModeSdId:
5866
       case kBypassModeSdId:
5838
         break;
5901
         break;
5839
     }
5902
     }
5840
 
5903
 
5841
-    //cmVectArrayAppendR(p->oSpecVa,X1m,p->pva->binCnt);
5842
-    
5843
     cmVOR_DbToAmplVV(X1m, p->pva->binCnt, X1m );
5904
     cmVOR_DbToAmplVV(X1m, p->pva->binCnt, X1m );
5844
 
5905
 
5845
 
5906
 
5846
     // run and apply the tracker/supressor
5907
     // run and apply the tracker/supressor
5847
-    cmFrqTrkExec(p->ft, X1m, p->pva->phsV, NULL );
5848
-    cmVOR_MultVV(X1m, p->pva->binCnt,p->ft->aV );
5908
+    //cmFrqTrkExec(p->ft, X1m, p->pva->phsV, NULL ); 
5909
+    //cmVOR_MultVV(X1m, p->pva->binCnt,p->ft->aV );
5849
 
5910
 
5850
 
5911
 
5912
+    // convert the mean input magnitude to db
5851
     cmReal_t idb = 20*log10(u0);
5913
     cmReal_t idb = 20*log10(u0);
5914
+    
5915
+    // get the mean output magnitude spectra
5852
     cmReal_t u1 = cmVOR_Mean(X1m,p->pva->binCnt);
5916
     cmReal_t u1 = cmVOR_Mean(X1m,p->pva->binCnt);
5853
 
5917
 
5854
     if( idb > -150.0 )
5918
     if( idb > -150.0 )
5855
     {
5919
     {
5856
-      p->ogain = u0/u1;
5920
+      // set the output gain such that the mean output magnitude
5921
+      // will match the mean input magnitude
5922
+      p->ogain = u0/u1;  
5857
     }
5923
     }
5858
     else
5924
     else
5859
     {
5925
     {
5861
       p->ogain *= a0;
5927
       p->ogain *= a0;
5862
     }
5928
     }
5863
 
5929
 
5864
-    //cmReal_t v[] = { u0, u1, idb, 20*log10(u1), p->ogain };
5865
-    //unsigned vn = sizeof(v)/sizeof(v[0]);
5866
-    //cmVectArrayAppendR(p->oSpecVa,v,vn);
5867
-
5868
     cmVOR_MultVS(X1m,p->pva->binCnt,cmMin(4.0,p->ogain));
5930
     cmVOR_MultVS(X1m,p->pva->binCnt,cmMin(4.0,p->ogain));
5869
 
5931
 
5870
 
5932
 
5871
     //cmFbCtlExec(p->fbc,X1m);
5933
     //cmFbCtlExec(p->fbc,X1m);
5872
 
5934
 
5935
+    //cmReal_t v[ p->pva->binCnt ];
5936
+    //cmVOR_Copy(v,p->pva->binCnt,p->pva->phsV);
5937
+    //_cmSpecDistPhaseMod(p, v, p->pva->binCnt );
5938
+
5939
+    
5940
+    if(recordFl)
5941
+    {
5942
+
5943
+      // store a time windowed average of the output spectrum to p->iSpecV
5944
+      cmVOR_CopyN(p->oSpecM + p->hi, p->pva->binCnt, p->hN, X1m, 1 );
5945
+      cmVOR_MeanM2(p->oSpecV, p->oSpecM, p->hN, p->pva->binCnt, 0, cmMin(p->fi+1,p->hN));
5946
+      
5947
+      // store iSpecV and oSpecV to iSpecVa and oSpecVa to create debugging files
5948
+      cmVectArrayAppendR(p->iSpecVa,p->iSpecV,p->pva->binCnt);
5949
+      cmVectArrayAppendR(p->oSpecVa,p->oSpecV,p->pva->binCnt);
5950
+
5951
+      p->hi = (p->hi + 1) % p->hN;
5952
+    }
5953
+    
5954
+
5873
     cmPvSynExec(p->pvs, X1m, p->pva->phsV );
5955
     cmPvSynExec(p->pvs, X1m, p->pva->phsV );
5874
   
5956
   
5957
+    p->fi += 1;
5875
   }
5958
   }
5876
  
5959
  
5877
   return cmOkRC;
5960
   return cmOkRC;

+ 15
- 1
cmProc2.h View File

902
   typedef enum
902
   typedef enum
903
   {
903
   {
904
     kNoStateFrqTrkId,
904
     kNoStateFrqTrkId,
905
+    kDlyFrqTrkId,
905
     kAtkFrqTrkId,
906
     kAtkFrqTrkId,
906
     kSusFrqTrkId,
907
     kSusFrqTrkId,
907
     kDcyFrqTrkId
908
     kDcyFrqTrkId
924
 
925
 
925
     cmReal_t    attenThresh;
926
     cmReal_t    attenThresh;
926
     cmReal_t    attenGain; 
927
     cmReal_t    attenGain; 
928
+    cmReal_t    attenDlySec;
927
     cmReal_t    attenAtkSec;   
929
     cmReal_t    attenAtkSec;   
928
 
930
 
929
     const char* logFn;          // log file name or NULL if no file is to be written
931
     const char* logFn;          // log file name or NULL if no file is to be written
985
     unsigned      deadTrkCnt;
987
     unsigned      deadTrkCnt;
986
 
988
 
987
     cmReal_t*     aV;
989
     cmReal_t*     aV;
990
+    int           attenDlyPhsMax;
988
     int           attenPhsMax;
991
     int           attenPhsMax;
989
 
992
 
990
     cmWhFilt*      wf;
993
     cmWhFilt*      wf;
1106
     cmReal_t  aeMax;
1109
     cmReal_t  aeMax;
1107
     cmReal_t  aeUnit;
1110
     cmReal_t  aeUnit;
1108
 
1111
 
1109
-    cmVectArray_t* oSpecVa;
1110
     cmReal_t ogain;
1112
     cmReal_t ogain;
1111
 
1113
 
1114
+    unsigned phaseModIndex;
1115
+
1116
+    unsigned       fi;          // total count of frames processed by cmSpecDistExec()
1117
+    unsigned       hN;
1118
+    unsigned       hi;
1119
+    cmReal_t*      iSpecM;      // iSpecMtx[hN binN]
1120
+    cmReal_t*      iSpecV;      // mean of rows of iSpecM 
1121
+    cmVectArray_t* iSpecVa;     
1122
+    cmReal_t*      oSpecM;      // oSpecMtx[hN binN]
1123
+    cmReal_t*      oSpecV;      // mean of rows of oSpecM
1124
+    cmVectArray_t* oSpecVa;
1125
+
1112
   } cmSpecDist_t;
1126
   } cmSpecDist_t;
1113
 
1127
 
1114
   cmSpecDist_t*     cmSpecDistAlloc( cmCtx* ctx,cmSpecDist_t* ap, unsigned procSmpCnt, double srate, unsigned wndSmpCnt, unsigned hopFcmt, unsigned olaWndTypeId  ); 
1128
   cmSpecDist_t*     cmSpecDistAlloc( cmCtx* ctx,cmSpecDist_t* ap, unsigned procSmpCnt, double srate, unsigned wndSmpCnt, unsigned hopFcmt, unsigned olaWndTypeId  ); 

+ 3
- 3
cmRtNet.h View File

1
-#ifndef cmNet_h
2
-#define cmNet_h
1
+#ifndef cmRtNet_h
2
+#define cmRtNet_h
3
 
3
 
4
 #ifdef __cplusplus
4
 #ifdef __cplusplus
5
 extern "C" {
5
 extern "C" {
12
    unique among all other nodes on the network. A node also has a set of application 
12
    unique among all other nodes on the network. A node also has a set of application 
13
    defined 'endpoints'.  Each endpoint has a label and id that is unique among all 
13
    defined 'endpoints'.  Each endpoint has a label and id that is unique among all 
14
    other endpoints on the same node.  Endpoints on different nodes however may share
14
    other endpoints on the same node.  Endpoints on different nodes however may share
15
-   use the same label and id.  Endpoints are used by remote senders to identify 
15
+   the same label and id.  Endpoints are used by remote senders to identify 
16
    a particular receiver which is sharing the node with other receivers.  Endpoints
16
    a particular receiver which is sharing the node with other receivers.  Endpoints
17
    are therefore analogous to port numbers on sockets.
17
    are therefore analogous to port numbers on sockets.
18
 
18
 

+ 1
- 1
cmRtSys.c View File

419
         cmSleepMs(cp->noBlockSleepMs);
419
         cmSleepMs(cp->noBlockSleepMs);
420
       else
420
       else
421
       {
421
       {
422
-        if( cmThreadMutexWaitOnCondVar(cp->engMutexH,false) != kOkRtRC )
422
+        if( (rc = cmThreadMutexWaitOnCondVar(cp->engMutexH,false)) != kOkRtRC )
423
         {
423
         {
424
           cmThreadMutexUnlock(cp->engMutexH);
424
           cmThreadMutexUnlock(cp->engMutexH);
425
           _cmRtError(cp->p,rc,"The cmRtSys cond. var. wait failed.");
425
           _cmRtError(cp->p,rc,"The cmRtSys cond. var. wait failed.");

+ 1
- 1
cmUi.c View File

1504
 cmUiRC_t cmUiSelectPanel( cmUiH_t uiH, const cmChar_t* label )
1504
 cmUiRC_t cmUiSelectPanel( cmUiH_t uiH, const cmChar_t* label )
1505
 {
1505
 {
1506
   cmUiRC_t rc = kOkUiRC;
1506
   cmUiRC_t rc = kOkUiRC;
1507
-  cmUi_t*  p  = _cmUiHandleToPtr(uiH);
1507
+  //cmUi_t*  p  = _cmUiHandleToPtr(uiH);
1508
 
1508
 
1509
   
1509
   
1510
 
1510
 

+ 2
- 2
dsp/cmDspPgm.c View File

1378
   bool            cfFbFl    = true;
1378
   bool            cfFbFl    = true;
1379
   unsigned        sgShapeId = 2;
1379
   unsigned        sgShapeId = 2;
1380
   const cmChar_t* afn       = "/home/kevin/media/audio/gate_detect/gate_detect0.aif";
1380
   const cmChar_t* afn       = "/home/kevin/media/audio/gate_detect/gate_detect0.aif";
1381
-  unsigned        abeg[]    = { 9.842046, 18.838291, 27.007957, 35.562079, 45.461793, 52.920218, 60.436312, 68.913543};
1382
-  unsigned        aend[]    = {11.399088, 20.645229, 28.891786, 37.311349, 47.287954, 54.131251, 62.473923, 72.142964};
1381
+  double        abeg[]    = { 9.842046, 18.838291, 27.007957, 35.562079, 45.461793, 52.920218, 60.436312, 68.913543};
1382
+  double        aend[]    = {11.399088, 20.645229, 28.891786, 37.311349, 47.287954, 54.131251, 62.473923, 72.142964};
1383
   bool            cfBypassFl  = false;
1383
   bool            cfBypassFl  = false;
1384
   unsigned        i;
1384
   unsigned        i;
1385
   
1385
   

+ 343
- 336
dsp/cmDspPgmKr.c View File

89
 #define mlbl(a)  _mlbl(a,mch)
89
 #define mlbl(a)  _mlbl(a,mch)
90
 #define lbl(a) cmDspSysPrintLabel(a,ch)
90
 #define lbl(a) cmDspSysPrintLabel(a,ch)
91
 
91
 
92
-void _cmDspSys_TlXformChain1( cmDspSysH_t h, cmDspTlXform_t* c,  unsigned preGrpSymId, unsigned cmpPreGrpSymId, cmDspInst_t* modp, unsigned ch, unsigned mch )
93
-{
94
-  unsigned        measRtrChCnt = 6; // note: router channel 6 is not connected
95
-
96
-  int             krWndSmpCnt = 2048;
97
-  int             krHopFact   = 4;
98
-
99
-  unsigned        xfadeChCnt  = 2;
100
-  double          xfadeMs     = 50;
101
-  bool            xfadeInitFl = true;
102
-  double          mixGain     = 1.0;
103
-
104
-  bool            cmpBypassFl  = false;
105
-  double          cmpInGain    = 3.0;
106
-  double          cmpThreshDb  = -40.0;
107
-  double          cmpRatio_num = 5.0;
108
-  double          cmpAtkMs     = 20.0;
109
-  double          cmpRlsMs     = 100.0;
110
-  double          cmpMakeup    = 1.0;
111
-  double          cmpWndMaxMs  = 1000.0;
112
-  double          cmpWndMs     = 200.0;
113
-
114
-  cmDspInst_t* achan = cmDspSysAllocInst(h, "AvailCh",     NULL, 1, xfadeChCnt );
115
-  
116
-  // Measurement scale/range 
117
-  cmDspInst_t* even_sr  = cmDspSysAllocInst(h, "ScaleRange",  NULL,  4,  0.8,   1.1, 0.0,   1.0 );
118
-  cmDspInst_t* dynm_sr  = cmDspSysAllocInst(h, "ScaleRange",  NULL,  4,  0.0,   4.0, 0.01,  1.0 );
119
-  cmDspInst_t* tmpo_sr  = cmDspSysAllocInst(h, "ScaleRange",  NULL,  4, 80.0, 120.0, 0.01,  1.0 );
120
-  cmDspInst_t* cost_sr  = cmDspSysAllocInst(h, "ScaleRange",  NULL,  4,  0.0,   1.0, 0.001, 1.0 );
121
-
122
-  // Measurement -> parameter mappers
123
-  cmDspInst_t* even_rt  = cmDspSysAllocInst(h, "Router",      NULL,  2,  measRtrChCnt, measRtrChCnt-1 );
124
-  cmDspInst_t* dynm_rt  = cmDspSysAllocInst(h, "Router",      NULL,  2,  measRtrChCnt, measRtrChCnt-1 );
125
-  cmDspInst_t* tmpo_rt  = cmDspSysAllocInst(h, "Router",      NULL,  2,  measRtrChCnt, measRtrChCnt-1 );
126
-  cmDspInst_t* cost_rt  = cmDspSysAllocInst(h, "Router",      NULL,  2,  measRtrChCnt, measRtrChCnt-1 );
127
-
128
-  // Scale/ranges applied to incoming measurements.
129
-  cmDspInst_t* thr_sr   = cmDspSysAllocInst(h, "ScaleRange",  NULL,  4,  0.0, 1.0, 0.01, 100.0 );
130
-  cmDspInst_t* upr_sr   = cmDspSysAllocInst(h, "ScaleRange",  NULL,  4,  0.0, 1.0, -1.0, 5.0 );
131
-  cmDspInst_t* lwr_sr   = cmDspSysAllocInst(h, "ScaleRange",  NULL,  4,  0.0, 1.0, -5.0, 5.0 );
132
-  cmDspInst_t* off_sr   = cmDspSysAllocInst(h, "ScaleRange",  NULL,  4,  0.0, 1.0,  0.0, 100.0 );
133
-  cmDspInst_t* wet_sr   = cmDspSysAllocInst(h, "ScaleRange",  NULL,  4,  0.0, 1.0,  0.0, 1.0 );
134
-
135
- 
136
-  // Parameter-> kr routers (routers used to cross-fade between the two kr units)
137
-  unsigned paramRtChCnt = 2;
138
-  cmDspInst_t* mod_rt   = cmDspSysAllocInst(h, "Router",      NULL,  2,  paramRtChCnt, paramRtChCnt-1 );
139
-  cmDspInst_t* wnd_rt   = cmDspSysAllocInst(h, "Router",      NULL,  2,  paramRtChCnt, paramRtChCnt-1 );
140
-  cmDspInst_t* hop_rt   = cmDspSysAllocInst(h, "Router",      NULL,  2,  paramRtChCnt, paramRtChCnt-1 );
141
-  cmDspInst_t* thr_rt   = cmDspSysAllocInst(h, "Router",      NULL,  2,  paramRtChCnt, paramRtChCnt-1 );
142
-  cmDspInst_t* upr_rt   = cmDspSysAllocInst(h, "Router",      NULL,  2,  paramRtChCnt, paramRtChCnt-1 );
143
-  cmDspInst_t* lwr_rt   = cmDspSysAllocInst(h, "Router",      NULL,  2,  paramRtChCnt, paramRtChCnt-1 );
144
-  cmDspInst_t* inv_rt   = cmDspSysAllocInst(h, "Router",      NULL,  2,  paramRtChCnt, paramRtChCnt-1 );
145
-  cmDspInst_t* off_rt   = cmDspSysAllocInst(h, "Router",      NULL,  2,  paramRtChCnt, paramRtChCnt-1 );
146
-  cmDspInst_t* wet_rt   = cmDspSysAllocInst(h, "Router",      NULL,  2,  paramRtChCnt, paramRtChCnt-1 );
147
-
148
-  // Audio processors
149
-  cmDspInst_t* kr0  = cmDspSysAllocInst(h, "Kr",         NULL,   2, krWndSmpCnt, krHopFact );
150
-  cmDspInst_t* kr1  = cmDspSysAllocInst(h, "Kr",         NULL,   2, krWndSmpCnt, krHopFact );
151
-  cmDspInst_t* xfad = cmDspSysAllocInst(h, "Xfader",     NULL,   3, xfadeChCnt,  xfadeMs, xfadeInitFl ); 
152
-  cmDspInst_t* mix  = cmDspSysAllocInst(h, "AMix",       NULL,   3, xfadeChCnt,  mixGain, mixGain );
153
-  cmDspInst_t* cmp  = cmDspSysAllocInst(h, "Compressor", NULL,   8, cmpBypassFl, cmpThreshDb, cmpRatio_num, cmpAtkMs, cmpRlsMs, cmpMakeup, cmpWndMs, cmpWndMaxMs ); 
154
-
155
-
156
-  // Internal audio connections
157
-  cmDspSysConnectAudio(h, kr0,  "out",   xfad, "in-0");
158
-  cmDspSysConnectAudio(h, kr1,  "out",   xfad, "in-1");
159
-  cmDspSysConnectAudio(h, xfad, "out-0", mix,  "in-0");
160
-  cmDspSysConnectAudio(h, xfad, "out-1", mix,  "in-1");
161
-  cmDspSysConnectAudio(h, mix,  "out",   cmp,  "in" );
162
-
163
-  // active channel <-> cross-fade connections
164
-  cmDspSysInstallCb(h, achan,  "reset",   xfad, "reset", NULL);
165
-  cmDspSysInstallCb(h, achan,  "gate-0",  xfad, "gate-0", NULL );
166
-  cmDspSysInstallCb(h, achan,  "gate-1",  xfad, "gate-1", NULL );
167
-  cmDspSysInstallCb(h, xfad,   "state-0", achan, "dis-0",  NULL );
168
-  cmDspSysInstallCb(h, xfad,   "state-1", achan, "dis-1",  NULL );
169
-
170
-  
171
-  //  Measurement Number Controls
172
-  cmDspInst_t* min_dynm_ctl    = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Min In Dyn"),      0.0, 10.0, 1.0, 0.0);
173
-  cmDspInst_t* max_dynm_ctl    = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Max In Dyn"),      0.0, 10.0, 1.0, 4.0);
174
-  cmDspInst_t* dynm_map_menu   = cmDspSysAllocMsgListP(h,preGrpSymId, NULL, lbl("DynSel 0"), NULL, "measMenu", measRtrChCnt-1);
175
-
176
-  cmDspInst_t* min_even_ctl   = cmDspSysAllocScalarP(  h,preGrpSymId, NULL, lbl("Min In Even"),    0.0, 1.0, 0.001, 0.75);
177
-  cmDspInst_t* max_even_ctl   = cmDspSysAllocScalarP(  h,preGrpSymId, NULL, lbl("Max In Even"),    0.0, 3.0, 0.001, 1.0);
178
-  cmDspInst_t* even_map_menu  = cmDspSysAllocMsgListP( h,preGrpSymId, NULL, lbl("EvenSel"), NULL, "measMenu", measRtrChCnt-1);
179
-
180
-  cmDspSysNewColumn(h,0);
181
-  cmDspInst_t* min_tmpo_ctl  = cmDspSysAllocScalarP(   h,preGrpSymId, NULL, lbl("Min In Tempo"),   0.0, 200.0, 1.0, 80.0);
182
-  cmDspInst_t* max_tmpo_ctl  = cmDspSysAllocScalarP(   h,preGrpSymId, NULL, lbl("Max In Tempo"),   0.0, 200.0, 1.0, 120.0);
183
-  cmDspInst_t* tmpo_map_menu = cmDspSysAllocMsgListP(  h,preGrpSymId, NULL, lbl("TempoSel"), NULL, "measMenu", measRtrChCnt-1);
184
-
185
-  cmDspInst_t* min_cost_ctl   = cmDspSysAllocScalarP(  h,preGrpSymId, NULL, lbl("Min In Cost"),      0.0, 1.0, 0.01, 0.0);
186
-  cmDspInst_t* max_cost_ctl   = cmDspSysAllocScalarP(  h,preGrpSymId, NULL, lbl("Max In Cost"),      0.0, 1.0, 0.01, 1.0);
187
-  cmDspInst_t* cost_map_menu  = cmDspSysAllocMsgListP( h,preGrpSymId, NULL, lbl("CostSel"), NULL, "measMenu", measRtrChCnt-1);
188
-
189
-  cmDspSysInstallCb(h, min_dynm_ctl, "val",     dynm_sr, "min_in", NULL );
190
-  cmDspSysInstallCb(h, max_dynm_ctl, "val",     dynm_sr, "min_in", NULL );
191
-  cmDspSysInstallCb(h, dynm_map_menu,"out",     dynm_rt, "sel",    NULL );   
192
-  cmDspSysInstallCb(h, dynm_sr,      "val_out", dynm_rt, "f-in",   NULL );
193
-
194
-  cmDspSysInstallCb(h, min_even_ctl, "val",     even_sr, "min_in", NULL );
195
-  cmDspSysInstallCb(h, max_even_ctl, "val",     even_sr, "min_in", NULL );
196
-  cmDspSysInstallCb(h, even_map_menu,"out",     even_rt, "sel",    NULL );   
197
-  cmDspSysInstallCb(h, even_sr,      "val_out", even_rt, "f-in",   NULL );
198
-
199
-  cmDspSysInstallCb(h, min_tmpo_ctl, "val",     tmpo_sr, "min_in", NULL );
200
-  cmDspSysInstallCb(h, max_tmpo_ctl, "val",     tmpo_sr, "min_in", NULL );
201
-  cmDspSysInstallCb(h, tmpo_map_menu,"out",     tmpo_rt, "sel",    NULL );   
202
-  cmDspSysInstallCb(h, tmpo_sr,      "val_out", tmpo_rt, "f-in",   NULL );
203
-  
204
-  cmDspSysInstallCb(h, min_cost_ctl, "val",     cost_sr, "min_in", NULL );
205
-  cmDspSysInstallCb(h, max_cost_ctl, "val",     cost_sr, "min_in", NULL );
206
-  cmDspSysInstallCb(h, cost_map_menu,"out",     cost_rt, "sel",    NULL );   
207
-  cmDspSysInstallCb(h, cost_sr,      "val_out", cost_rt, "f-in",   NULL );
208
-
209
-  cmDspSysNewColumn(h,0);
210
-  cmDspInst_t* min_thr_ctl   = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Min Thresh"),       0.0,100.0, 1.0, 30.0);
211
-  cmDspInst_t* max_thr_ctl   = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Max Thresh"),       0.0,100.0, 1.0, 80.0);
212
-  cmDspInst_t* min_upr_ctl   = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Min Upr"),         -1.0,  1.0, 0.001, -0.5);
213
-  cmDspInst_t* max_upr_ctl   = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Max Upr"),         -1.0,  1.0, 0.001, 0.5);
214
-  cmDspInst_t* min_lwr_ctl   = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Min Lwr"),          0.0, -1.0, 5.0, 1.0);
215
-  cmDspInst_t* max_lwr_ctl   = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Max Lwr"),          0.0, -1.0, 5.0, 3.0);
216
-  cmDspInst_t* min_off_ctl   = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Min Off"),          0.0, 50.0, 0.1, 30.0);
217
-  cmDspInst_t* max_off_ctl   = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Max Off"),          0.0, 50.0, 0.1, 30.0);
218
-  cmDspInst_t* min_wet_ctl   = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Min Wet"),          0.0,  1.0, 0.01, 1.0);
219
-  cmDspInst_t* max_wet_ctl   = cmDspSysAllocScalarP( h,preGrpSymId, NULL, lbl("Max Wet"),          0.0,  1.0, 0.01, 1.0);
220
-
221
-
222
-  // Parameter number controls 
223
-  cmDspSysNewColumn(h,0);
224
-  cmDspInst_t* mod_ctl = cmDspSysAllocScalarP( h,preGrpSymId,NULL, lbl("Mode"),      0.0, 4.0, 1.0, 1.0);
225
-  cmDspInst_t* wnd_ctl = cmDspSysAllocMsgListP(h,preGrpSymId,NULL, lbl("WndSmpCnt"), NULL, "wndSmpCnt", 2);
226
-  cmDspInst_t* hop_ctl = cmDspSysAllocMsgListP(h,preGrpSymId,NULL, lbl("HopFact"),   NULL, "hopFact",   2);
227
-  cmDspInst_t* thr_ctl = cmDspSysAllocScalarP( h,preGrpSymId,NULL, lbl("Threshold"), 0.0, 100.0, 1.0,  60.0 );
228
-  cmDspInst_t* upr_ctl = cmDspSysAllocScalarP( h,preGrpSymId,NULL, lbl("Upr slope"), 0.0,  10.0, 0.01,  0.0 ); 
229
-  cmDspInst_t* lwr_ctl = cmDspSysAllocScalarP( h,preGrpSymId,NULL, lbl("Lwr slope"), 0.3,  10.0, 0.01,  2.0 );
230
-  cmDspInst_t* off_ctl = cmDspSysAllocScalarP( h,preGrpSymId,NULL, lbl("Offset"),    0.0, 100.0, 0.01, 20.0 );
231
-  cmDspInst_t* inv_ctl = cmDspSysAllocScalarP( h,preGrpSymId,NULL, lbl("Invert"),    0.0,   1.0, 1.0,   0.0 );  
232
-  cmDspInst_t* wet_ctl = cmDspSysAllocScalarP( h,preGrpSymId,NULL, lbl("Wet Dry"),   0.0,   1.0, 0.001, 1.0 );  
233
-
234
-  cmDspSysInstallCb(h, mod_ctl, "val",         mod_rt, "f-in",    NULL );
235
-  cmDspSysInstallCb(h, achan,   "ch",          mod_rt, "sel",     NULL );   // ach->rt sel
236
-  cmDspSysInstallCb(h, mod_rt,  "f-out-0",     kr0,    "mode",    NULL );   // mode->kr
237
-  cmDspSysInstallCb(h, mod_rt,  "f-out-1",     kr1,    "mode",    NULL );   // mode->kr
238
-
239
-  cmDspSysInstallCb(h, wnd_ctl, "out",         wnd_rt, "f-in",    NULL );
240
-  cmDspSysInstallCb(h, achan,   "ch",          wnd_rt, "sel",     NULL );   // ach->rt sel
241
-  cmDspSysInstallCb(h, wnd_rt,  "f-out-0",     kr0,    "wndn",    NULL );   // wndn->kr
242
-  cmDspSysInstallCb(h, wnd_rt,  "f-out-1",     kr1,    "wndn",    NULL );   // wndn->kr
243
-
244
-  cmDspSysInstallCb(h, hop_ctl, "out",         hop_rt, "f-in",    NULL );
245
-  cmDspSysInstallCb(h, achan,   "ch",          hop_rt, "sel",     NULL );   // ach->rt sel
246
-  cmDspSysInstallCb(h, hop_rt,  "f-out-0",     kr0,    "hopf",    NULL );   // hopf->kr
247
-  cmDspSysInstallCb(h, hop_rt,  "f-out-1",     kr1,    "hopf",    NULL );   // hopf->kr
248
-
249
-  cmDspSysInstallCb(h, min_thr_ctl, "val",     thr_sr, "min_out", NULL );
250
-  cmDspSysInstallCb(h, max_thr_ctl, "val",     thr_sr, "max_out", NULL );
251
-  cmDspSysInstallCb(h, even_rt,     "f-out-0", thr_sr, "val_in",  NULL );
252
-  cmDspSysInstallCb(h, dynm_rt,     "f-out-0", thr_sr, "val_in",  NULL );
253
-  cmDspSysInstallCb(h, tmpo_rt,     "f-out-0", thr_sr, "val_in",  NULL );
254
-  cmDspSysInstallCb(h, cost_rt,     "f-out-0", thr_sr, "val_in",  NULL );
255
-  cmDspSysInstallCb(h, thr_sr,      "val_out", thr_ctl,"val",     NULL );
256
-  cmDspSysInstallCb(h, thr_ctl,     "val",     thr_rt, "f-in",    NULL );
257
-  cmDspSysInstallCb(h, achan,       "ch",      thr_rt, "sel",     NULL );   // ach->rt sel
258
-  cmDspSysInstallCb(h, thr_rt,      "f-out-0", kr0,    "thrh",    NULL );   // thr->kr
259
-  cmDspSysInstallCb(h, thr_rt,      "f-out-1", kr1,    "thrh",    NULL );   // thr->kr
260
-
261
-  cmDspSysInstallCb(h, min_upr_ctl, "val",     upr_sr, "min_out", NULL );
262
-  cmDspSysInstallCb(h, max_upr_ctl, "val",     upr_sr, "max_out", NULL );
263
-  cmDspSysInstallCb(h, even_rt,     "f-out-1", upr_sr, "val_in",  NULL );
264
-  cmDspSysInstallCb(h, dynm_rt,     "f-out-1", upr_sr, "val_in",  NULL );
265
-  cmDspSysInstallCb(h, tmpo_rt,     "f-out-1", upr_sr, "val_in",  NULL );
266
-  cmDspSysInstallCb(h, cost_rt,     "f-out-1", upr_sr, "val_in",  NULL );
267
-  cmDspSysInstallCb(h, upr_sr,      "val_out", upr_ctl,"val",     NULL );
268
-  cmDspSysInstallCb(h, upr_ctl,     "val",     upr_rt, "f-in",    NULL );
269
-  cmDspSysInstallCb(h, achan,       "ch",      upr_rt, "sel",     NULL );   // ach->rt sel
270
-  cmDspSysInstallCb(h, upr_rt,      "f-out-0", kr0,    "uprs",    NULL );   // upr->kr
271
-  cmDspSysInstallCb(h, upr_rt,      "f-out-1", kr1,    "uprs",    NULL );   // upr->kr
272
-
273
-  cmDspSysInstallCb(h, min_lwr_ctl, "val",     lwr_sr, "min_out", NULL );
274
-  cmDspSysInstallCb(h, max_lwr_ctl, "val",     lwr_sr, "max_out", NULL );
275
-  cmDspSysInstallCb(h, even_rt,     "f-out-2", lwr_sr, "val_in",  NULL );
276
-  cmDspSysInstallCb(h, dynm_rt,     "f-out-2", lwr_sr, "val_in",  NULL );
277
-  cmDspSysInstallCb(h, tmpo_rt,     "f-out-2", lwr_sr, "val_in",  NULL );
278
-  cmDspSysInstallCb(h, cost_rt,     "f-out-2", lwr_sr, "val_in",  NULL );
279
-  cmDspSysInstallCb(h, lwr_sr,      "val_out", lwr_ctl,"val",     NULL );
280
-  cmDspSysInstallCb(h, lwr_ctl,     "val",     lwr_rt, "f-in",    NULL );
281
-  cmDspSysInstallCb(h, achan,       "ch",      lwr_rt, "sel",     NULL );   // ach->rt sel
282
-  cmDspSysInstallCb(h, lwr_rt,      "f-out-0", kr0,    "lwrs",    NULL );   // lwr->kr
283
-  cmDspSysInstallCb(h, lwr_rt,      "f-out-1", kr1,    "lwrs",    NULL );   // lwr->kr
284
-
285
-  cmDspSysInstallCb(h, min_off_ctl, "val",     off_sr, "min_out", NULL );
286
-  cmDspSysInstallCb(h, max_off_ctl, "val",     off_sr, "max_out", NULL );
287
-  cmDspSysInstallCb(h, even_rt,     "f-out-3", off_sr, "val_in",  NULL );
288
-  cmDspSysInstallCb(h, dynm_rt,     "f-out-3", off_sr, "val_in",  NULL );
289
-  cmDspSysInstallCb(h, tmpo_rt,     "f-out-3", off_sr, "val_in",  NULL );
290
-  cmDspSysInstallCb(h, cost_rt,     "f-out-3", off_sr, "val_in",  NULL );
291
-  cmDspSysInstallCb(h, off_sr,      "val_out", off_ctl,"val",     NULL );
292
-  cmDspSysInstallCb(h, off_ctl,     "val",     off_rt, "f-in",    NULL );
293
-  cmDspSysInstallCb(h, achan,       "ch",      off_rt, "sel",     NULL );   // ach->rt sel
294
-  cmDspSysInstallCb(h, off_rt,      "f-out-0", kr0,    "offs",    NULL );   // off->kr
295
-  cmDspSysInstallCb(h, off_rt,      "f-out-1", kr1,    "offs",    NULL );   // off->kr
296
-
297
-  cmDspSysInstallCb(h, inv_ctl,     "val",     inv_rt, "f-in",   NULL );
298
-  cmDspSysInstallCb(h, achan,       "ch",      inv_rt, "sel",    NULL );   // ach->rt sel
299
-  cmDspSysInstallCb(h, inv_rt,      "f-out-0", kr0,    "invt",   NULL );   // inv->kr
300
-  cmDspSysInstallCb(h, inv_rt,      "f-out-1", kr1,    "invt",   NULL );   // inv->kr
301
-
302
-  cmDspSysInstallCb(h, min_wet_ctl, "val",     wet_sr, "min_out", NULL );
303
-  cmDspSysInstallCb(h, max_wet_ctl, "val",     wet_sr, "max_out", NULL );
304
-  cmDspSysInstallCb(h, even_rt,     "f-out-4", wet_sr, "val_in",  NULL );
305
-  cmDspSysInstallCb(h, dynm_rt,     "f-out-4", wet_sr, "val_in",  NULL );
306
-  cmDspSysInstallCb(h, tmpo_rt,     "f-out-4", wet_sr, "val_in",  NULL );
307
-  cmDspSysInstallCb(h, cost_rt,     "f-out-4", wet_sr, "val_in",  NULL );
308
-
309
-  cmDspSysInstallCb(h, wet_sr,      "val_out", wet_ctl,"val",     NULL );
310
-  cmDspSysInstallCb(h, wet_ctl,     "val",     wet_rt, "f-in",    NULL );
311
-  cmDspSysInstallCb(h, achan,       "ch",      wet_rt, "sel",     NULL );   // ach->rt sel
312
-  cmDspSysInstallCb(h, wet_rt,      "f-out-0", kr0,    "wet",     NULL );   // wet->kr
313
-  cmDspSysInstallCb(h, wet_rt,      "f-out-1", kr1,    "wet",     NULL );   // wet->kr
314
-  
315
-
316
-  cmDspSysNewColumn(h,0);
317
-  cmDspInst_t* cmp_byp   = cmDspSysAllocCheckP(  h, cmpPreGrpSymId, NULL, lbl("Bypass"), 1.0 );
318
-  cmDspInst_t* cmp_igain = cmDspSysAllocScalarP( h, cmpPreGrpSymId, NULL, lbl("In Gain"),  0.0,   10.0, 0.1, cmpInGain);
319
-  cmDspInst_t* cmp_thr   = cmDspSysAllocScalarP( h, cmpPreGrpSymId, NULL, lbl("ThreshDb"), -100.0, 0.0, 0.1, cmpThreshDb);
320
-  cmDspInst_t* cmp_rat   = cmDspSysAllocScalarP( h, cmpPreGrpSymId, NULL, lbl("Ratio"),    0.1, 100, 0.1, cmpRatio_num);
321
-  cmDspInst_t* cmp_atk   = cmDspSysAllocScalarP( h, cmpPreGrpSymId, NULL, lbl("Atk Ms"),   0.0, 1000.0, 0.1, cmpAtkMs);
322
-  cmDspInst_t* cmp_rls   = cmDspSysAllocScalarP( h, cmpPreGrpSymId, NULL, lbl("Rls Ms"),   0.0, 1000.0, 0.1, cmpRlsMs);
323
-  cmDspInst_t* cmp_mkup  = cmDspSysAllocScalarP( h, cmpPreGrpSymId, NULL, lbl("Makeup"),   0.0, 10.0,   0.01, cmpMakeup);
324
-  cmDspInst_t* cmp_wnd   = cmDspSysAllocScalarP( h, cmpPreGrpSymId, NULL, lbl("Wnd Ms"),   1.0, cmpWndMaxMs, 1.0, cmpWndMs );
325
-  cmDspInst_t* cmp_mtr   = cmDspSysAllocInst(h,"Meter",lbl("Env"), 3, 0.0, 0.0, 1.0);
326
-
327
-  cmDspSysInstallCb(h, cmp_byp,  "out", cmp, "bypass", NULL );
328
-  cmDspSysInstallCb(h, cmp_igain,"val", cmp, "igain", NULL );
329
-  cmDspSysInstallCb(h, cmp_thr,  "val", cmp, "thr", NULL );
330
-  cmDspSysInstallCb(h, cmp_rat,  "val", cmp, "ratio", NULL );
331
-  cmDspSysInstallCb(h, cmp_atk,  "val", cmp, "atk", NULL );
332
-  cmDspSysInstallCb(h, cmp_rls,  "val", cmp, "rls", NULL );
333
-  cmDspSysInstallCb(h, cmp_mkup, "val", cmp, "ogain", NULL );
334
-  cmDspSysInstallCb(h, cmp_wnd,  "val", cmp, "wnd", NULL );
335
-  cmDspSysInstallCb(h, cmp,      "env", cmp_mtr, "in", NULL );
336
-
337
-  cmDspSysInstallCb(h, modp, mlbl("cbyp"),    cmp_byp,  "in", NULL );
338
-  cmDspSysInstallCb(h, modp, mlbl("cigain"),  cmp_igain,"val", NULL );
339
-  cmDspSysInstallCb(h, modp, mlbl("cthrsh"),  cmp_thr,  "val", NULL );
340
-  cmDspSysInstallCb(h, modp, mlbl("cratio"),  cmp_rat,  "val", NULL );
341
-  cmDspSysInstallCb(h, modp, mlbl("catkms"),  cmp_atk,  "val", NULL );
342
-  cmDspSysInstallCb(h, modp, mlbl("crlsms"),  cmp_rls,  "val", NULL );
343
-  cmDspSysInstallCb(h, modp, mlbl("cmakeup"), cmp_mkup, "val", NULL );
344
-  cmDspSysInstallCb(h, modp, mlbl("cwndms"),  cmp_wnd,  "val", NULL );
345
-
346
-  // 
347
-  cmDspInst_t* xfadMs = cmDspSysAllocInst(h,"Scalar", lbl("Xfade Ms"),     5, kNumberDuiId, 0.0,   1000.0,0.01, 50.0 );  
348
-  cmDspSysInstallCb(h, xfadMs, "val", xfad, "ms", NULL );
349
-  cmDspSysInstallCb(h, modp, mlbl("xfad"), xfadMs,  "val", NULL);
350
-
351
-  cmDspSysInstallCb(h, modp, mlbl("win"),  wnd_ctl, "sel",  NULL );
352
-  cmDspSysInstallCb(h, modp, mlbl("hop"),  hop_ctl, "sel", NULL );
353
-  cmDspSysInstallCb(h, modp, mlbl("mod"),  mod_ctl, "val", NULL );
354
-  cmDspSysInstallCb(h, modp, mlbl("thr"),  thr_ctl, "val", NULL );
355
-  cmDspSysInstallCb(h, modp, mlbl("upr"),  upr_ctl, "val", NULL );
356
-  cmDspSysInstallCb(h, modp, mlbl("lwr"),  lwr_ctl, "val", NULL );
357
-  cmDspSysInstallCb(h, modp, mlbl("mint"), min_thr_ctl, "val", NULL );
358
-  cmDspSysInstallCb(h, modp, mlbl("maxt"), max_thr_ctl, "val", NULL );
359
-  cmDspSysInstallCb(h, modp, mlbl("minu"), min_upr_ctl, "val", NULL );
360
-  cmDspSysInstallCb(h, modp, mlbl("maxu"), max_upr_ctl, "val", NULL );
361
-  cmDspSysInstallCb(h, modp, mlbl("minl"), min_lwr_ctl, "val", NULL );
362
-  cmDspSysInstallCb(h, modp, mlbl("maxl"), max_lwr_ctl, "val", NULL );
363
-  cmDspSysInstallCb(h, modp, mlbl("sw"),   achan,       "trig", NULL ); // See also: amp.sfloc->achan.trig
364
-
365
-  c->achan = achan; 
366
-  c->kr0   = kr0; 
367
-  c->kr1   = kr1;
368
-  c->cmp   = cmp; 
369
-
370
-}
371
 
92
 
372
 void _cmDspSys_TlXformChain( cmDspSysH_t h, cmDspTlXform_t* c,  unsigned preGrpSymId, unsigned cmpPreGrpSymId, cmDspInst_t* modp, unsigned ch, unsigned mch )
93
 void _cmDspSys_TlXformChain( cmDspSysH_t h, cmDspTlXform_t* c,  unsigned preGrpSymId, unsigned cmpPreGrpSymId, cmDspInst_t* modp, unsigned ch, unsigned mch )
373
 {
94
 {
634
   cmDspSysInstallCb(h, modp, mlbl("thr"),  thr_ctl, "val", NULL );
355
   cmDspSysInstallCb(h, modp, mlbl("thr"),  thr_ctl, "val", NULL );
635
   cmDspSysInstallCb(h, modp, mlbl("upr"),  upr_ctl, "val", NULL );
356
   cmDspSysInstallCb(h, modp, mlbl("upr"),  upr_ctl, "val", NULL );
636
   cmDspSysInstallCb(h, modp, mlbl("lwr"),  lwr_ctl, "val", NULL );
357
   cmDspSysInstallCb(h, modp, mlbl("lwr"),  lwr_ctl, "val", NULL );
358
+  cmDspSysInstallCb(h, modp, mlbl("off"),  off_ctl, "val", NULL );
637
   cmDspSysInstallCb(h, modp, mlbl("mint"), min_thr_ctl, "val", NULL );
359
   cmDspSysInstallCb(h, modp, mlbl("mint"), min_thr_ctl, "val", NULL );
638
   cmDspSysInstallCb(h, modp, mlbl("maxt"), max_thr_ctl, "val", NULL );
360
   cmDspSysInstallCb(h, modp, mlbl("maxt"), max_thr_ctl, "val", NULL );
639
   cmDspSysInstallCb(h, modp, mlbl("minu"), min_upr_ctl, "val", NULL );
361
   cmDspSysInstallCb(h, modp, mlbl("minu"), min_upr_ctl, "val", NULL );
640
   cmDspSysInstallCb(h, modp, mlbl("maxu"), max_upr_ctl, "val", NULL );
362
   cmDspSysInstallCb(h, modp, mlbl("maxu"), max_upr_ctl, "val", NULL );
641
   cmDspSysInstallCb(h, modp, mlbl("minl"), min_lwr_ctl, "val", NULL );
363
   cmDspSysInstallCb(h, modp, mlbl("minl"), min_lwr_ctl, "val", NULL );
642
   cmDspSysInstallCb(h, modp, mlbl("maxl"), max_lwr_ctl, "val", NULL );
364
   cmDspSysInstallCb(h, modp, mlbl("maxl"), max_lwr_ctl, "val", NULL );
365
+  cmDspSysInstallCb(h, modp, mlbl("mino"), min_off_ctl, "val", NULL );
366
+  cmDspSysInstallCb(h, modp, mlbl("maxo"), max_off_ctl, "val", NULL );
643
   cmDspSysInstallCb(h, modp, mlbl("sw"),   achan,       "trig", NULL ); // See also: amp.sfloc->achan.trig
367
   cmDspSysInstallCb(h, modp, mlbl("sw"),   achan,       "trig", NULL ); // See also: amp.sfloc->achan.trig
644
 
368
 
645
   c->achan = achan; 
369
   c->achan = achan; 
655
   cmCtx_t*        cmCtx      = cmDspSysPgmCtx(h);
379
   cmCtx_t*        cmCtx      = cmDspSysPgmCtx(h);
656
   cmErr_t         err;
380
   cmErr_t         err;
657
   krRsrc_t        r;
381
   krRsrc_t        r;
658
-  bool            fragFl     = false;
659
-  bool            useWtFl    = false;
660
-  bool            useChain1Fl= true;
661
-  unsigned        wtLoopCnt  = 1;                            // 1=play once (-1=loop forever)
662
-  unsigned        wtInitMode = 0;                            // initial wt mode is 'silence'
663
-  unsigned        wtSmpCnt   = floor(cmDspSysSampleRate(h)); // wt length == srate
382
+  bool     fragFl       = false;
383
+  bool     useWtFl      = false;
384
+  bool     useChain1Fl  = true;
385
+  bool     useInputEqFl = false;
386
+  unsigned wtLoopCnt    = 1;    // 1=play once (-1=loop forever)
387
+  unsigned wtInitMode   = 0;    // initial wt mode is 'silence'
388
+  unsigned wtSmpCnt     = floor(cmDspSysSampleRate(h)); // wt length == srate
664
 
389
 
665
   unsigned        sfBufCnt    = 7;     // length of the MIDI event buffer
390
   unsigned        sfBufCnt    = 7;     // length of the MIDI event buffer
666
   unsigned        sfMaxWndCnt = 10;    // length of the score event buffer
391
   unsigned        sfMaxWndCnt = 10;    // length of the score event buffer
671
   double          recdPlayCurLaSecs        = 0.1;
396
   double          recdPlayCurLaSecs        = 0.1;
672
   double          recdPlayFadeRateDbPerSec = 4.0;
397
   double          recdPlayFadeRateDbPerSec = 4.0;
673
 
398
 
399
+
400
+  bool            eqBypassFl  = false;
401
+
402
+  unsigned        eqLpSymId   = cmSymTblRegisterStaticSymbol(cmDspSysSymbolTable(h),"LP");
403
+  double          eqLpF0hz    = 200.0;
404
+  double          eqLpQ       = 0.5;
405
+  double          eqLpGain    = 0.9;
406
+
407
+  unsigned        eqBpSymId   = cmSymTblRegisterStaticSymbol(cmDspSysSymbolTable(h),"BP");
408
+  double          eqBpF0hz    = 350.0;
409
+  double          eqBpQ       = 0.6;
410
+  double          eqBpGain    = 1.0;
411
+
412
+  unsigned        eqHpSymId = cmSymTblRegisterStaticSymbol(cmDspSysSymbolTable(h),"HP");
413
+  double          eqHpF0hz    = 600.0;
414
+  double          eqHpQ       = 0.5;
415
+  double          eqHpGain    = 0.9;
416
+
417
+  bool            apfBypassFl  = false;
418
+  unsigned        apfModeSymId  = cmSymTblRegisterStaticSymbol(cmDspSysSymbolTable(h),"AP");
419
+  double          apfF0hz       = 100.0;
420
+  double          apfQ          = 1.0;
421
+  double          apfGain       = 1.0;
422
+
674
   /*
423
   /*
675
   bool            cmpBypassFl  = false;
424
   bool            cmpBypassFl  = false;
676
   double          cmpInGain    = 3.0;
425
   double          cmpInGain    = 3.0;
691
 
440
 
692
   cmDspInst_t* ai0p = cmDspSysAllocInst(h,"AudioIn",     NULL,  1, 2);
441
   cmDspInst_t* ai0p = cmDspSysAllocInst(h,"AudioIn",     NULL,  1, 2);
693
   cmDspInst_t* ai1p = cmDspSysAllocInst(h,"AudioIn",     NULL,  1, 3);
442
   cmDspInst_t* ai1p = cmDspSysAllocInst(h,"AudioIn",     NULL,  1, 3);
443
+  cmDspInst_t* ai2p = cmDspSysAllocInst(h,"AudioIn",     NULL,  1, 4);
444
+  cmDspInst_t* ai3p = cmDspSysAllocInst(h,"AudioIn",     NULL,  1, 5);
445
+
446
+  cmDspInst_t* eqLpf_0 =  useInputEqFl ? cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, eqBypassFl, eqLpSymId,eqLpF0hz, eqLpQ, eqLpGain  ) : NULL; 
447
+  cmDspInst_t* eqLpf_1 =  useInputEqFl ? cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, eqBypassFl, eqLpSymId,eqLpF0hz, eqLpQ, eqLpGain  ) : NULL; 
448
+  cmDspInst_t* eqLpf_2 =  useInputEqFl ? cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, eqBypassFl, eqLpSymId,eqLpF0hz, eqLpQ, eqLpGain  ) : NULL; 
449
+  cmDspInst_t* eqLpf_3 =  useInputEqFl ? cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, eqBypassFl, eqLpSymId,eqLpF0hz, eqLpQ, eqLpGain  ) : NULL; 
450
+
451
+  cmDspInst_t* eqBpf_0 =  useInputEqFl ? cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, eqBypassFl, eqBpSymId,eqBpF0hz, eqBpQ, eqBpGain  ) : NULL; 
452
+  cmDspInst_t* eqBpf_1 =  useInputEqFl ? cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, eqBypassFl, eqBpSymId,eqBpF0hz, eqBpQ, eqBpGain  ) : NULL; 
453
+  cmDspInst_t* eqBpf_2 =  useInputEqFl ? cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, eqBypassFl, eqBpSymId,eqBpF0hz, eqBpQ, eqBpGain  ) : NULL; 
454
+  cmDspInst_t* eqBpf_3 =  useInputEqFl ? cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, eqBypassFl, eqBpSymId,eqBpF0hz, eqBpQ, eqBpGain  ) : NULL; 
455
+
456
+  cmDspInst_t* eqHpf_0 =  useInputEqFl ? cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, eqBypassFl, eqHpSymId,eqHpF0hz, eqHpQ, eqHpGain  ) : NULL; 
457
+  cmDspInst_t* eqHpf_1 =  useInputEqFl ? cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, eqBypassFl, eqHpSymId,eqHpF0hz, eqHpQ, eqHpGain  ) : NULL; 
458
+  cmDspInst_t* eqHpf_2 =  useInputEqFl ? cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, eqBypassFl, eqHpSymId,eqHpF0hz, eqHpQ, eqHpGain  ) : NULL; 
459
+  cmDspInst_t* eqHpf_3 =  useInputEqFl ? cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, eqBypassFl, eqHpSymId,eqHpF0hz, eqHpQ, eqHpGain  ) : NULL; 
460
+
461
+  double eqMixGain = 1.0/3.0;
462
+  cmDspInst_t* eqMx_0 = useInputEqFl ? cmDspSysAllocInst( h, "AMix",      NULL, 4, 3, eqMixGain, eqMixGain, eqMixGain) : NULL;
463
+  cmDspInst_t* eqMx_1 = useInputEqFl ? cmDspSysAllocInst( h, "AMix",      NULL, 4, 3, eqMixGain, eqMixGain, eqMixGain) : NULL;
464
+  cmDspInst_t* eqMx_2 = useInputEqFl ? cmDspSysAllocInst( h, "AMix",      NULL, 4, 3, eqMixGain, eqMixGain, eqMixGain) : NULL;
465
+  cmDspInst_t* eqMx_3 = useInputEqFl ? cmDspSysAllocInst( h, "AMix",      NULL, 4, 3, eqMixGain, eqMixGain, eqMixGain) : NULL;
466
+
467
+
468
+  cmDspInst_t* mx0p = cmDspSysAllocInst( h, "AMix",      NULL, 3, 2, 1.0, 1.0);
469
+  cmDspInst_t* mx1p = cmDspSysAllocInst( h, "AMix",      NULL, 3, 2, 1.0, 1.0);
470
+
694
 
471
 
695
   //cmDspInst_t* ci0p = cmDspSysAllocInst(h,"Compressor",  NULL,  8, cmpBypassFl, cmpThreshDb, cmpRatio_num, cmpAtkMs, cmpRlsMs, cmpMakeup, cmpWndMs, cmpWndMaxMs ); 
472
   //cmDspInst_t* ci0p = cmDspSysAllocInst(h,"Compressor",  NULL,  8, cmpBypassFl, cmpThreshDb, cmpRatio_num, cmpAtkMs, cmpRlsMs, cmpMakeup, cmpWndMs, cmpWndMaxMs ); 
696
   //cmDspInst_t* ci1p = cmDspSysAllocInst(h,"Compressor",  NULL,  8, cmpBypassFl, cmpThreshDb, cmpRatio_num, cmpAtkMs, cmpRlsMs, cmpMakeup, cmpWndMs, cmpWndMaxMs ); 
473
   //cmDspInst_t* ci1p = cmDspSysAllocInst(h,"Compressor",  NULL,  8, cmpBypassFl, cmpThreshDb, cmpRatio_num, cmpAtkMs, cmpRlsMs, cmpMakeup, cmpWndMs, cmpWndMaxMs ); 
701
   cmDspInst_t* php  = cmDspSysAllocInst(h,"Phasor",      NULL,  1, cmDspSysSampleRate(h) );
478
   cmDspInst_t* php  = cmDspSysAllocInst(h,"Phasor",      NULL,  1, cmDspSysSampleRate(h) );
702
   cmDspInst_t* wtp  = cmDspSysAllocInst(h,"WaveTable",   NULL,  4, wtSmpCnt, wtInitMode, NULL, wtLoopCnt );
479
   cmDspInst_t* wtp  = cmDspSysAllocInst(h,"WaveTable",   NULL,  4, wtSmpCnt, wtInitMode, NULL, wtLoopCnt );
703
   cmDspInst_t* pts  = cmDspSysAllocInst(h,"PortToSym",   NULL,  2, "on", "off" );
480
   cmDspInst_t* pts  = cmDspSysAllocInst(h,"PortToSym",   NULL,  2, "on", "off" );
704
-  cmDspInst_t* mip  = cmDspSysAllocInst(h,"MidiIn",      NULL,  0 );
481
+  //cmDspInst_t* mip  = cmDspSysAllocInst(h,"MidiIn",      NULL,  0 );
705
 
482
 
706
   cmDspInst_t* mfp  = cmDspSysAllocInst(h,"MidiFilePlay",NULL,  0 );
483
   cmDspInst_t* mfp  = cmDspSysAllocInst(h,"MidiFilePlay",NULL,  0 );
707
   cmDspInst_t* nmp  = cmDspSysAllocInst(h,"NanoMap",     NULL,  0 );
484
   cmDspInst_t* nmp  = cmDspSysAllocInst(h,"NanoMap",     NULL,  0 );
791
   }
568
   }
792
   */
569
   */
793
 
570
 
571
+  cmDspInst_t* apf0 =  cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, apfBypassFl, apfModeSymId, apfF0hz+0, apfQ, apfGain  ); 
572
+  cmDspInst_t* apf1 =  cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, apfBypassFl, apfModeSymId, apfF0hz+100.0, apfQ, apfGain  ); 
573
+  cmDspInst_t* apf2 =  cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, apfBypassFl, apfModeSymId, apfF0hz+200.0, apfQ, apfGain  ); 
574
+  cmDspInst_t* apf3 =  cmDspSysAllocInst(h,"BiQuadEq",NULL, 5, apfBypassFl, apfModeSymId, apfF0hz+300.0, apfQ, apfGain  ); 
794
 
575
 
795
   cmDspInst_t* ao0p = cmDspSysAllocInst(h,"AudioOut",    NULL,   1, 0 );
576
   cmDspInst_t* ao0p = cmDspSysAllocInst(h,"AudioOut",    NULL,   1, 0 );
796
   cmDspInst_t* ao1p = cmDspSysAllocInst(h,"AudioOut",    NULL,   1, 1 );
577
   cmDspInst_t* ao1p = cmDspSysAllocInst(h,"AudioOut",    NULL,   1, 1 );
797
-  //cmDspInst_t* ao2p = cmDspSysAllocInst(h,"AudioOut",    NULL,   1, 2 );
798
-  //cmDspInst_t* ao3p = cmDspSysAllocInst(h,"AudioOut",    NULL,   1, 3 );
578
+  cmDspInst_t* ao2p = cmDspSysAllocInst(h,"AudioOut",    NULL,   1, 2 );
579
+  cmDspInst_t* ao3p = cmDspSysAllocInst(h,"AudioOut",    NULL,   1, 3 );
799
 
580
 
800
   cmDspSysNewPage(h,"Main");
581
   cmDspSysNewPage(h,"Main");
801
   cmDspInst_t* liveb= cmDspSysAllocInst(h,"Button", "live",    2, kCheckDuiId,  0.0 );
582
   cmDspInst_t* liveb= cmDspSysAllocInst(h,"Button", "live",    2, kCheckDuiId,  0.0 );
804
   cmDspInst_t* measb= cmDspSysAllocInst(h,"Button", "meas",    2, kCheckDuiId,  0.0 );
585
   cmDspInst_t* measb= cmDspSysAllocInst(h,"Button", "meas",    2, kCheckDuiId,  0.0 );
805
   cmDspInst_t* onb  = cmDspSysAllocInst(h,"Button", "start",   2, kButtonDuiId, 1.0 );
586
   cmDspInst_t* onb  = cmDspSysAllocInst(h,"Button", "start",   2, kButtonDuiId, 1.0 );
806
   cmDspInst_t* offb = cmDspSysAllocInst(h,"Button", "stop",    2, kButtonDuiId, 1.0 );
587
   cmDspInst_t* offb = cmDspSysAllocInst(h,"Button", "stop",    2, kButtonDuiId, 1.0 );
807
-  cmDspInst_t* prtb = cmDspSysAllocInst(h,"Button", "print",   2, kButtonDuiId, 1.0 );
808
-  cmDspInst_t* qtb  = cmDspSysAllocInst(h,"Button", "quiet",   2, kButtonDuiId, 1.0 );
588
+  //cmDspInst_t* prtb = cmDspSysAllocInst(h,"Button", "print",   2, kButtonDuiId, 1.0 );
589
+  //cmDspInst_t* qtb  = cmDspSysAllocInst(h,"Button", "quiet",   2, kButtonDuiId, 1.0 );
809
   cmDspInst_t* mutm = cmDspSysAllocInst(h,"Checkbox","main",   1, "main","on","off",1.0,0.0,1.0 );
590
   cmDspInst_t* mutm = cmDspSysAllocInst(h,"Checkbox","main",   1, "main","on","off",1.0,0.0,1.0 );
810
   cmDspInst_t* mutr = cmDspSysAllocInst(h,"Checkbox","frag",   1, "frag","on","off",1.0,0.0,1.0 );
591
   cmDspInst_t* mutr = cmDspSysAllocInst(h,"Checkbox","frag",   1, "frag","on","off",1.0,0.0,1.0 );
811
   cmDspInst_t* prp  = cmDspSysAllocInst(h,"Printer", NULL,   1, ">" );
592
   cmDspInst_t* prp  = cmDspSysAllocInst(h,"Printer", NULL,   1, ">" );
831
   cmDspSysNewColumn(h,0);
612
   cmDspSysNewColumn(h,0);
832
   cmDspInst_t* igain0 = cmDspSysAllocInst(h,"Scalar", "In Gain-0",    5, kNumberDuiId, 0.0,   100.0,0.01,   1.0 );  
613
   cmDspInst_t* igain0 = cmDspSysAllocInst(h,"Scalar", "In Gain-0",    5, kNumberDuiId, 0.0,   100.0,0.01,   1.0 );  
833
   cmDspInst_t* igain1 = cmDspSysAllocInst(h,"Scalar", "In Gain-1",    5, kNumberDuiId, 0.0,   100.0,0.01,   1.0 );  
614
   cmDspInst_t* igain1 = cmDspSysAllocInst(h,"Scalar", "In Gain-1",    5, kNumberDuiId, 0.0,   100.0,0.01,   1.0 );  
615
+  cmDspInst_t* igain2 = cmDspSysAllocInst(h,"Scalar", "In Gain-2",    5, kNumberDuiId, 0.0,   100.0,0.01,   1.0 );  
616
+  cmDspInst_t* igain3 = cmDspSysAllocInst(h,"Scalar", "In Gain-3",    5, kNumberDuiId, 0.0,   100.0,0.01,   1.0 );  
834
 
617
 
835
   cmDspInst_t* lasecs = cmDspSysAllocInst(h,"Scalar", "LA Secs",      5, kNumberDuiId, 0.0,   recdPlayMaxLaSecs,0.01,   recdPlayCurLaSecs );  
618
   cmDspInst_t* lasecs = cmDspSysAllocInst(h,"Scalar", "LA Secs",      5, kNumberDuiId, 0.0,   recdPlayMaxLaSecs,0.01,   recdPlayCurLaSecs );  
836
   cmDspInst_t* dbpsec = cmDspSysAllocInst(h,"Scalar", "Fade dBpSec",  5, kNumberDuiId, 0.0,   24.0, 0.01, recdPlayFadeRateDbPerSec);
619
   cmDspInst_t* dbpsec = cmDspSysAllocInst(h,"Scalar", "Fade dBpSec",  5, kNumberDuiId, 0.0,   24.0, 0.01, recdPlayFadeRateDbPerSec);
620
+  cmDspInst_t* apfByp = cmDspSysAllocCheck(  h, "APF-Bypass", 0.0 );
621
+
622
+
623
+
624
+  cmDspSysNewColumn(h,0);
837
   cmDspInst_t* ogain0 = cmDspSysAllocInst(h,"Scalar", "Out Gain-0",   5, kNumberDuiId, 0.0,   10.0,0.01,   1.0 );  
625
   cmDspInst_t* ogain0 = cmDspSysAllocInst(h,"Scalar", "Out Gain-0",   5, kNumberDuiId, 0.0,   10.0,0.01,   1.0 );  
838
   cmDspInst_t* ogain1 = cmDspSysAllocInst(h,"Scalar", "Out Gain-1",   5, kNumberDuiId, 0.0,   10.0,0.01,   1.0 );  
626
   cmDspInst_t* ogain1 = cmDspSysAllocInst(h,"Scalar", "Out Gain-1",   5, kNumberDuiId, 0.0,   10.0,0.01,   1.0 );  
839
   cmDspInst_t* ogain2 = cmDspSysAllocInst(h,"Scalar", "Out Gain-2",   5, kNumberDuiId, 0.0,   10.0,0.01,   1.0 );  
627
   cmDspInst_t* ogain2 = cmDspSysAllocInst(h,"Scalar", "Out Gain-2",   5, kNumberDuiId, 0.0,   10.0,0.01,   1.0 );  
840
   cmDspInst_t* ogain3 = cmDspSysAllocInst(h,"Scalar", "Out Gain-3",   5, kNumberDuiId, 0.0,   10.0,0.01,   1.0 );  
628
   cmDspInst_t* ogain3 = cmDspSysAllocInst(h,"Scalar", "Out Gain-3",   5, kNumberDuiId, 0.0,   10.0,0.01,   1.0 );  
841
 
629
 
842
-  cmDspInst_t* scLoc = cmDspSysAllocInst(h,"Scalar", "Sc Loc",   5, kNumberDuiId, 0.0,   3000.0, 1.0,   0.0 );  
630
+  //cmDspInst_t* scLoc = cmDspSysAllocInst(h,"Scalar", "Sc Loc",   5, kNumberDuiId, 0.0,   3000.0, 1.0,   0.0 );  
843
 
631
 
844
   // Audio file recording
632
   // Audio file recording
845
   cmDspInst_t* recdGain= cmDspSysAllocInst(h,"Scalar", "Recd Gain",  5, kNumberDuiId, 0.0,   100.0,0.01, 1.5 );  
633
   cmDspInst_t* recdGain= cmDspSysAllocInst(h,"Scalar", "Recd Gain",  5, kNumberDuiId, 0.0,   100.0,0.01, 1.5 );  
849
   cmDspInst_t* mi0p    = cmDspSysAllocInst(h,"AMeter","In 0",  0);
637
   cmDspInst_t* mi0p    = cmDspSysAllocInst(h,"AMeter","In 0",  0);
850
   cmDspInst_t* mi1p    = cmDspSysAllocInst(h,"AMeter","In 1",  0);
638
   cmDspInst_t* mi1p    = cmDspSysAllocInst(h,"AMeter","In 1",  0);
851
 
639
 
640
+
641
+  //--------------- Preset controls
642
+  cmDspSysNewColumn(h,0);
643
+  cmDspInst_t* preset    = cmDspSysAllocInst(   h, "Preset", NULL, 1, preGrpSymId );
644
+  cmDspInst_t* presetLbl = cmDspSysAllocInst(   h, "Text",   "Preset",      1, "" );
645
+  cmDspInst_t* storeBtn  = cmDspSysAllocButton( h, "store",  0);
646
+  cmDspInst_t* recallBtn = cmDspSysAllocButton( h, "recall", 0);
647
+  cmDspSysInstallCb(   h, presetLbl, "val", preset, "label",NULL);
648
+  cmDspSysInstallCb(   h, storeBtn,  "sym", preset, "cmd", NULL );
649
+  cmDspSysInstallCb(   h, recallBtn, "sym", preset, "cmd", NULL );
650
+
651
+  cmDspInst_t* prePath    = cmDspSysAllocInst(   h, "Fname",  "prePath",   3, true,NULL,r.tlPrefixPath);
652
+  
653
+
654
+  cmDspSysNewColumn(h,0);
655
+
656
+  //--------------- Recorded performance evaluation and Active Measurement related controls
657
+  cmDspInst_t* clrBtn  = cmDspSysAllocButton( h, "clear",  0);
658
+  cmDspInst_t* prtBtn  = cmDspSysAllocButton( h, "dump",  0);
659
+  cmDspInst_t* mlst    = cmDspSysAllocInst(   h, "MsgList",   NULL, 3, "meas", r.measFn, 2);
660
+  cmDspInst_t* amCmd   = cmDspSysAllocInst(   h, "PortToSym", NULL, 2, "add", "rewind" );  
661
+
662
+
663
+
664
+  if( useInputEqFl ) cmDspSysNewPage(h,"In EQ");
665
+  cmDspInst_t* eqLpByp0  = useInputEqFl ? cmDspSysAllocCheck( h,"Eq-LPF-Bypass-0", 0.0 ) : NULL;
666
+  cmDspInst_t* eqLpMode0 = useInputEqFl ? cmDspSysAllocInst(  h,"MsgList","Eq-LPF-Mode-0",  3, "biQuadEqMode", NULL, 1) : NULL;
667
+  cmDspInst_t* eqLpFc0   = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-LPF-Hz-0",    5, kNumberDuiId, 0.0, 20000.0, 0.5,  eqLpF0hz ) : NULL;  
668
+  cmDspInst_t* eqLpQ0    = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-LPF-Q-0",     5, kNumberDuiId, 0.0,  100.0,  0.01,  eqLpQ ) : NULL;  
669
+  cmDspInst_t* eqLpGain0 = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-LPF-Gain-0",  5, kNumberDuiId, -100.0, 100.0, 0.5,  eqLpGain ) : NULL;  
670
+
671
+  cmDspInst_t* eqBpByp0  = useInputEqFl ? cmDspSysAllocCheck( h,"Eq-BPF-Bypass-0", 0.0 ) : NULL;
672
+  cmDspInst_t* eqBpMode0 = useInputEqFl ? cmDspSysAllocInst(  h,"MsgList","Eq-BPF-Mode-0",  3, "biQuadEqMode", NULL, 3) : NULL;
673
+  cmDspInst_t* eqBpFc0   = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-BPF-Hz-0",    5, kNumberDuiId, 0.0, 20000.0, 0.5,  eqBpF0hz ) : NULL;  
674
+  cmDspInst_t* eqBpQ0    = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-BPF-Q-0",     5, kNumberDuiId, 0.0,  100.0,  0.01,  eqBpQ ) : NULL;  
675
+  cmDspInst_t* eqBpGain0 = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-BPF-Gain-0",  5, kNumberDuiId, -100.0, 100.0, 0.5,  eqBpGain ) : NULL;  
676
+
677
+  cmDspInst_t* eqHpByp0  = useInputEqFl ? cmDspSysAllocCheck( h,"Eq-HPF-Bypass-0", 0.0 ) : NULL;
678
+  cmDspInst_t* eqHpMode0 = useInputEqFl ? cmDspSysAllocInst(  h,"MsgList","Eq-HPF-Mode-0",  3, "biQuadEqMode", NULL, 2) : NULL;
679
+  cmDspInst_t* eqHpFc0   = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-HPF-Hz-0",    5, kNumberDuiId, 0.0, 20000.0, 0.5,  eqHpF0hz ) : NULL;  
680
+  cmDspInst_t* eqHpQ0    = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-HPF-Q-0",     5, kNumberDuiId, 0.0,  100.0,  0.01,  eqHpQ ) : NULL;  
681
+  cmDspInst_t* eqHpGain0 = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-HPF-Gain-0",  5, kNumberDuiId, -100.0, 100.0, 0.5,  eqHpGain ) : NULL;  
682
+
683
+  if( useInputEqFl ) cmDspSysNewColumn(h,0);
684
+  cmDspInst_t* eqLpByp1  = useInputEqFl ? cmDspSysAllocCheck( h,"Eq-LPF-Bypass-1", 0.0 ) : NULL;
685
+  cmDspInst_t* eqLpMode1 = useInputEqFl ? cmDspSysAllocInst(  h,"MsgList","Eq-LPF-Mode-1",  3, "biQuadEqMode", NULL, 1) : NULL;
686
+  cmDspInst_t* eqLpFc1   = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-LPF-Hz-1",    5, kNumberDuiId, 0.0, 20000.0, 0.5,  eqLpF0hz ) : NULL;  
687
+  cmDspInst_t* eqLpQ1    = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-LPF-Q-1",     5, kNumberDuiId, 0.0,  100.0,  0.01,  eqLpQ ) : NULL;  
688
+  cmDspInst_t* eqLpGain1 = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-LPF-Gain-1",  5, kNumberDuiId, -100.0, 100.0, 0.5,  eqLpGain ) : NULL;  
689
+
690
+  cmDspInst_t* eqBpByp1  = useInputEqFl ? cmDspSysAllocCheck( h,"Eq-BPF-Bypass-1", 0.0 ) : NULL;
691
+  cmDspInst_t* eqBpMode1 = useInputEqFl ? cmDspSysAllocInst(  h,"MsgList","Eq-BPF-Mode-1",  3, "biQuadEqMode", NULL, 3) : NULL;
692
+  cmDspInst_t* eqBpFc1   = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-BPF-Hz-1",    5, kNumberDuiId, 0.0, 20000.0, 0.5,  eqBpF0hz ) : NULL;  
693
+  cmDspInst_t* eqBpQ1    = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-BPF-Q-1",     5, kNumberDuiId, 0.0,  100.0,  0.01,  eqBpQ ) : NULL;  
694
+  cmDspInst_t* eqBpGain1 = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-BPF-Gain-1",  5, kNumberDuiId, -100.0, 100.0, 0.5,  eqBpGain ) : NULL;  
695
+
696
+  cmDspInst_t* eqHpByp1  = useInputEqFl ? cmDspSysAllocCheck( h,"Eq-HPF-Bypass-1", 0.0 ) : NULL;
697
+  cmDspInst_t* eqHpMode1 = useInputEqFl ? cmDspSysAllocInst(  h,"MsgList","Eq-HPF-Mode-1",  3, "biQuadEqMode", NULL, 2) : NULL;
698
+  cmDspInst_t* eqHpFc1   = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-HPF-Hz-1",    5, kNumberDuiId, 0.0, 20000.0, 0.5,  eqHpF0hz ) : NULL;  
699
+  cmDspInst_t* eqHpQ1    = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-HPF-Q-1",     5, kNumberDuiId, 0.0,  100.0,  0.01,  eqHpQ ) : NULL;  
700
+  cmDspInst_t* eqHpGain1 = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-HPF-Gain-1",  5, kNumberDuiId, -100.0, 100.0, 0.5,  eqHpGain ) : NULL;  
701
+
702
+
703
+  if( useInputEqFl ) cmDspSysNewColumn(h,0);
704
+  cmDspInst_t* eqLpByp2  = useInputEqFl ? cmDspSysAllocCheck( h,"Eq-LPF-Bypass-2", 0.0 ) : NULL;
705
+  cmDspInst_t* eqLpMode2 = useInputEqFl ? cmDspSysAllocInst(  h,"MsgList","Eq-LPF-Mode-2",  3, "biQuadEqMode", NULL, 1) : NULL;
706
+  cmDspInst_t* eqLpFc2   = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-LPF-Hz-2",    5, kNumberDuiId, 0.0, 20000.0, 0.5,  eqLpF0hz ) : NULL;  
707
+  cmDspInst_t* eqLpQ2    = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-LPF-Q-2",     5, kNumberDuiId, 0.0,  100.0,  0.01,  eqLpQ ) : NULL;  
708
+  cmDspInst_t* eqLpGain2 = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-LPF-Gain-2",  5, kNumberDuiId, -100.0, 100.0, 0.5,  eqLpGain ) : NULL;  
709
+
710
+  cmDspInst_t* eqBpByp2  = useInputEqFl ? cmDspSysAllocCheck( h,"Eq-BPF-Bypass-2", 0.0 ) : NULL;
711
+  cmDspInst_t* eqBpMode2 = useInputEqFl ? cmDspSysAllocInst(  h,"MsgList","Eq-BPF-Mode-2",  3, "biQuadEqMode", NULL, 3) : NULL;
712
+  cmDspInst_t* eqBpFc2   = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-BPF-Hz-2",    5, kNumberDuiId, 0.0, 20000.0, 0.5,  eqBpF0hz ) : NULL;  
713
+  cmDspInst_t* eqBpQ2    = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-BPF-Q-2",     5, kNumberDuiId, 0.0,  100.0,  0.01,  eqBpQ ) : NULL;  
714
+  cmDspInst_t* eqBpGain2 = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-BPF-Gain-2",  5, kNumberDuiId, -100.0, 100.0, 0.5,  eqBpGain ) : NULL;  
715
+
716
+  cmDspInst_t* eqHpByp2  = useInputEqFl ? cmDspSysAllocCheck( h,"Eq-HPF-Bypass-2", 0.0 ) : NULL;
717
+  cmDspInst_t* eqHpMode2 = useInputEqFl ? cmDspSysAllocInst(  h,"MsgList","Eq-HPF-Mode-2",  3, "biQuadEqMode", NULL, 2) : NULL;
718
+  cmDspInst_t* eqHpFc2   = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-HPF-Hz-2",    5, kNumberDuiId, 0.0, 20000.0, 0.5,  eqHpF0hz ) : NULL;  
719
+  cmDspInst_t* eqHpQ2    = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-HPF-Q-2",     5, kNumberDuiId, 0.0,  100.0,  0.01,  eqHpQ ) : NULL;  
720
+  cmDspInst_t* eqHpGain2 = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-HPF-Gain-2",  5, kNumberDuiId, -100.0, 100.0, 0.5,  eqHpGain ) : NULL;  
721
+
722
+  if( useInputEqFl ) cmDspSysNewColumn(h,0);
723
+  cmDspInst_t* eqLpByp3  = useInputEqFl ? cmDspSysAllocCheck( h,"Eq-LPF-Bypass-3", 0.0 ) : NULL;
724
+  cmDspInst_t* eqLpMode3 = useInputEqFl ? cmDspSysAllocInst(  h,"MsgList","Eq-LPF-Mode-3", 3, "biQuadEqMode", NULL, 1) : NULL;
725
+  cmDspInst_t* eqLpFc3   = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-LPF-Hz-3",    5, kNumberDuiId, 0.0, 20000.0, 0.5,  eqLpF0hz ) : NULL;  
726
+  cmDspInst_t* eqLpQ3    = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-LPF-Q-3",     5, kNumberDuiId, 0.0,  100.0,  0.01,  eqLpQ ) : NULL;  
727
+  cmDspInst_t* eqLpGain3 = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-LPF-Gain-3",  5, kNumberDuiId, -300.0, 100.0, 0.5,  eqLpGain ) : NULL;  
728
+
729
+  cmDspInst_t* eqBpByp3  = useInputEqFl ? cmDspSysAllocCheck( h,"Eq-BPF-Bypass-3", 0.0 ) : NULL;
730
+  cmDspInst_t* eqBpMode3 = useInputEqFl ? cmDspSysAllocInst(  h,"MsgList","Eq-BPF-Mode-3", 3, "biQuadEqMode", NULL, 3) : NULL;
731
+  cmDspInst_t* eqBpFc3   = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-BPF-Hz-3",    5, kNumberDuiId, 0.0, 20000.0, 0.5,  eqBpF0hz ) : NULL;  
732
+  cmDspInst_t* eqBpQ3    = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-BPF-Q-3",     5, kNumberDuiId, 0.0,  100.0,  0.01,  eqBpQ ) : NULL;  
733
+  cmDspInst_t* eqBpGain3 = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-BPF-Gain-3",  5, kNumberDuiId, -300.0, 100.0, 0.5,  eqBpGain ) : NULL;  
734
+
735
+  cmDspInst_t* eqHpByp3  = useInputEqFl ? cmDspSysAllocCheck( h,"Eq-HPF-Bypass-3", 0.0 ) : NULL;
736
+  cmDspInst_t* eqHpMode3 = useInputEqFl ? cmDspSysAllocInst(  h,"MsgList","Eq-HPF-Mode-3", 3, "biQuadEqMode", NULL, 2) : NULL;
737
+  cmDspInst_t* eqHpFc3   = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-HPF-Hz-3",    5, kNumberDuiId, 0.0, 20000.0, 0.5,  eqHpF0hz ) : NULL;  
738
+  cmDspInst_t* eqHpQ3    = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-HPF-Q-3",     5, kNumberDuiId, 0.0,  100.0,  0.01,  eqHpQ ) : NULL;  
739
+  cmDspInst_t* eqHpGain3 = useInputEqFl ? cmDspSysAllocInst(  h,"Scalar", "Eq-HPF-Gain-3",  5, kNumberDuiId, -100.0, 100.0, 0.5,  eqHpGain ) : NULL;  
740
+
852
   if((rc = cmDspSysLastRC(h)) != kOkDspRC )
741
   if((rc = cmDspSysLastRC(h)) != kOkDspRC )
853
     return rc;
742
     return rc;
854
 
743
 
863
   // Audio connections
752
   // Audio connections
864
   cmDspSysConnectAudio(h, php,  "out",   wtp,  "phs" );     // phs -> wt
753
   cmDspSysConnectAudio(h, php,  "out",   wtp,  "phs" );     // phs -> wt
865
 
754
 
755
+  if( useInputEqFl )
756
+  {
757
+    cmDspSysConnectAudio(h, ai0p,    "out", eqLpf_0, "in" );     // ain->eq
758
+    cmDspSysConnectAudio(h, ai0p,    "out", eqBpf_0, "in" );
759
+    cmDspSysConnectAudio(h, ai0p,    "out", eqHpf_0, "in" );
760
+    cmDspSysConnectAudio(h, eqLpf_0, "out", eqMx_0,  "in-0");  // eq -> eqmix
761
+    cmDspSysConnectAudio(h, eqBpf_0, "out", eqMx_0,  "in-1");
762
+    cmDspSysConnectAudio(h, eqHpf_0, "out", eqMx_0,  "in-2");
763
+
764
+    cmDspSysConnectAudio(h, ai1p,    "out", eqLpf_1, "in" );     // ain->eq
765
+    cmDspSysConnectAudio(h, ai1p,    "out", eqBpf_1, "in" );
766
+    cmDspSysConnectAudio(h, ai1p,    "out", eqHpf_1, "in" );
767
+    cmDspSysConnectAudio(h, eqLpf_1, "out", eqMx_1,  "in-0");  // eq -> eqmix
768
+    cmDspSysConnectAudio(h, eqBpf_1, "out", eqMx_1,  "in-1");
769
+    cmDspSysConnectAudio(h, eqHpf_1, "out", eqMx_1,  "in-2");
770
+
771
+    cmDspSysConnectAudio(h, ai2p,    "out", eqLpf_2, "in" );     // ain->eq
772
+    cmDspSysConnectAudio(h, ai2p,    "out", eqBpf_2, "in" );
773
+    cmDspSysConnectAudio(h, ai2p,    "out", eqHpf_2, "in" );
774
+    cmDspSysConnectAudio(h, eqLpf_2, "out", eqMx_2,  "in-0");  // eq -> eqmix
775
+    cmDspSysConnectAudio(h, eqBpf_2, "out", eqMx_2,  "in-1");
776
+    cmDspSysConnectAudio(h, eqHpf_2, "out", eqMx_2,  "in-2");
777
+
778
+    cmDspSysConnectAudio(h, ai3p,    "out", eqLpf_3, "in" );     // ain->eq
779
+    cmDspSysConnectAudio(h, ai3p,    "out", eqBpf_3, "in" );
780
+    cmDspSysConnectAudio(h, ai3p,    "out", eqHpf_3, "in" );
781
+    cmDspSysConnectAudio(h, eqLpf_3, "out", eqMx_3,  "in-0");  // eq -> eqmix
782
+    cmDspSysConnectAudio(h, eqBpf_3, "out", eqMx_3,  "in-1");
783
+    cmDspSysConnectAudio(h, eqHpf_3, "out", eqMx_3,  "in-2");
784
+  }
785
+
786
+  cmDspSysConnectAudio(h, useInputEqFl ? ai0p : eqMx_0, "out", mx0p, "in-0" );  // eqmix -> input mix
787
+  cmDspSysConnectAudio(h, useInputEqFl ? ai1p : eqMx_1, "out", mx1p, "in-0" );
788
+  cmDspSysConnectAudio(h, useInputEqFl ? ai2p : eqMx_2, "out", mx0p, "in-1" );
789
+  cmDspSysConnectAudio(h, useInputEqFl ? ai3p : eqMx_3, "out", mx1p, "in-1" );
790
+
866
   if( useWtFl )
791
   if( useWtFl )
867
   {
792
   {
868
     cmDspSysConnectAudio(h, wtp,    "out",   au0Sw, "a-in-0" ); // wt  -> sw
793
     cmDspSysConnectAudio(h, wtp,    "out",   au0Sw, "a-in-0" ); // wt  -> sw
869
-    cmDspSysConnectAudio(h, ai0p,   "out",   au0Sw, "a-in-1" );      // ain -> sw
794
+    cmDspSysConnectAudio(h, mx0p,   "out",   au0Sw, "a-in-1" );      // ain -> sw
870
     //cmDspSysConnectAudio(h, ci0p,   "out",   au0Sw, "a-in-1" );
795
     //cmDspSysConnectAudio(h, ci0p,   "out",   au0Sw, "a-in-1" );
871
     cmDspSysConnectAudio(h, au0Sw,  "a-out", rpp,   "in-0");    // sw  -> rcdply
796
     cmDspSysConnectAudio(h, au0Sw,  "a-out", rpp,   "in-0");    // sw  -> rcdply
872
     cmDspSysConnectAudio(h, au0Sw,  "a-out", c0.kr0,"in"  );    // sw  -> kr
797
     cmDspSysConnectAudio(h, au0Sw,  "a-out", c0.kr0,"in"  );    // sw  -> kr
875
   }
800
   }
876
   else
801
   else
877
   {
802
   {
878
-    cmDspSysConnectAudio(h, ai0p,  "out", rpp,   "in-0");    // sw  -> rcdply
879
-    cmDspSysConnectAudio(h, ai0p,   "out",   c0.kr0, "in" ); // ain -> sw
880
-    //cmDspSysConnectAudio(h, ai0p,   "out",   c0.kr1, "in" ); // ain -> sw
881
-    cmDspSysConnectAudio(h, ai0p,   "out",   mi0p,  "in" );     
803
+    cmDspSysConnectAudio(h, mx0p,  "out", rpp,   "in-0");    // sw  -> rcdply
804
+    cmDspSysConnectAudio(h, mx0p,   "out",   c0.kr0, "in" ); // ain -> sw
805
+    //cmDspSysConnectAudio(h, mx0p,   "out",   c0.kr1, "in" ); // ain -> sw
806
+    cmDspSysConnectAudio(h, mx0p,   "out",   mi0p,  "in" );     
882
   }
807
   }
883
 
808
 
884
   if( fragFl )
809
   if( fragFl )
887
     cmDspSysConnectAudio(h, rpp,    "out-0", c2.kr0,"in" );
812
     cmDspSysConnectAudio(h, rpp,    "out-0", c2.kr0,"in" );
888
     //cmDspSysConnectAudio(h, rpp,    "out-0", c2.kr1,"in" );
813
     //cmDspSysConnectAudio(h, rpp,    "out-0", c2.kr1,"in" );
889
     cmDspSysConnectAudio(h, c2.cmp, "out",   mix0,  "in-1");    // rpp -> mix 1
814
     cmDspSysConnectAudio(h, c2.cmp, "out",   mix0,  "in-1");    // rpp -> mix 1
890
-    cmDspSysConnectAudio(h, mix0,   "out",   ao0p,  "in" );     // mix -> aout
815
+    cmDspSysConnectAudio(h, mix0,   "out",   apf0,  "in" );     // mix -> aout
816
+    cmDspSysConnectAudio(h, apf0,  "out",   ao0p,  "in" );
817
+
891
   }
818
   }
892
   else
819
   else
893
   {
820
   {
894
-    cmDspSysConnectAudio(h, c0.cmp, "out", ao0p, "in" );
895
-    //cmDspSysConnectAudio(h, wtp, "out", ao0p, "in" );
821
+    cmDspSysConnectAudio(h, c0.cmp, "out", apf0, "in" );
822
+    cmDspSysConnectAudio(h, c0.cmp, "out", apf2, "in" );
823
+    cmDspSysConnectAudio(h, apf0,  "out", ao0p,  "in" );
824
+    cmDspSysConnectAudio(h, apf2,  "out", ao2p,  "in" );
825
+
826
+    //cmDspSysConnectAudio(h, wtp, "out", apf0, "in" );
896
   }
827
   }
897
 
828
 
898
 
829
 
901
     if( useWtFl )
832
     if( useWtFl )
902
     {
833
     {
903
       cmDspSysConnectAudio(h, wtp,    "out",   au1Sw, "a-in-0" ); // wt  -> sw
834
       cmDspSysConnectAudio(h, wtp,    "out",   au1Sw, "a-in-0" ); // wt  -> sw
904
-      cmDspSysConnectAudio(h, ai1p,   "out",   au1Sw, "a-in-1" ); // ain -> sw
835
+      cmDspSysConnectAudio(h, mx1p,   "out",   au1Sw, "a-in-1" ); // ain -> sw
905
       //cmDspSysConnectAudio(h, ci1p,   "out",   au1Sw, "a-in-1" ); 
836
       //cmDspSysConnectAudio(h, ci1p,   "out",   au1Sw, "a-in-1" ); 
906
       cmDspSysConnectAudio(h, au1Sw,  "a-out", rpp,   "in-1");    // sw  -> rcdply
837
       cmDspSysConnectAudio(h, au1Sw,  "a-out", rpp,   "in-1");    // sw  -> rcdply
907
       cmDspSysConnectAudio(h, au1Sw,  "a-out", c1.kr0,"in"  );    // sw  -> kr
838
       cmDspSysConnectAudio(h, au1Sw,  "a-out", c1.kr0,"in"  );    // sw  -> kr
910
     }
841
     }
911
     else
842
     else
912
     {
843
     {
913
-      cmDspSysConnectAudio(h, ai1p,  "out", rpp,   "in-1");    // sw  -> rcdply
914
-      cmDspSysConnectAudio(h, ai1p,   "out",   c1.kr0, "in" ); // ain -> sw
915
-      //cmDspSysConnectAudio(h, ai1p,   "out",   c1.kr1, "in" ); // ain -> sw
916
-      cmDspSysConnectAudio(h, ai1p,   "out",   mi1p,  "in" );
844
+      cmDspSysConnectAudio(h, mx1p,  "out", rpp,   "in-1");    // sw  -> rcdply
845
+      cmDspSysConnectAudio(h, mx1p,   "out",   c1.kr0, "in" ); // ain -> sw
846
+      //cmDspSysConnectAudio(h, mx1p,   "out",   c1.kr1, "in" ); // ain -> sw
847
+      cmDspSysConnectAudio(h, mx1p,   "out",   mi1p,  "in" );
917
     }
848
     }
918
 
849
 
919
     if( fragFl )
850
     if( fragFl )
922
       cmDspSysConnectAudio(h, rpp,    "out-1", c3.kr0, "in" );
853
       cmDspSysConnectAudio(h, rpp,    "out-1", c3.kr0, "in" );
923
       //cmDspSysConnectAudio(h, rpp,    "out-1", c3.kr1, "in" );
854
       //cmDspSysConnectAudio(h, rpp,    "out-1", c3.kr1, "in" );
924
       cmDspSysConnectAudio(h, c3.cmp, "out",   mix1,   "in-1");    // rpp -> mix 1
855
       cmDspSysConnectAudio(h, c3.cmp, "out",   mix1,   "in-1");    // rpp -> mix 1
925
-      cmDspSysConnectAudio(h, mix1,   "out",   ao1p,   "in" );     // mix -> aout
856
+      cmDspSysConnectAudio(h, mix1,   "out",   apf1,   "in" );     // mix -> aout
857
+      cmDspSysConnectAudio(h, apf1,  "out",   ao1p,   "in" );
858
+
926
     }
859
     }
927
     else
860
     else
928
     {
861
     {
929
-      cmDspSysConnectAudio(h, c1.cmp, "out",   ao1p,  "in" );   // cmp -> mix 0
930
-      //cmDspSysConnectAudio(h, wtp, "out", ao1p, "in" );
862
+      cmDspSysConnectAudio(h, c1.cmp, "out",   apf1,  "in" );   // cmp -> mix 0
863
+      cmDspSysConnectAudio(h, c1.cmp, "out",   apf3,  "in" );   // cmp -> mix 0
864
+      cmDspSysConnectAudio(h, apf1,  "out",   ao1p,   "in" );
865
+      cmDspSysConnectAudio(h, apf3,  "out",   ao3p,   "in" );
866
+      
867
+      //cmDspSysConnectAudio(h, wtp, "out", apf1, "in" );
931
 
868
 
932
     }
869
     }
933
   }
870
   }
942
   //cmDspSysConnectAudio(h, ai1p, "out", ao3p, "in" );     //    output chs 2&3
879
   //cmDspSysConnectAudio(h, ai1p, "out", ao3p, "in" );     //    output chs 2&3
943
 
880
 
944
 
881
 
945
-  //--------------- Preset controls
946
-  cmDspSysNewColumn(h,0);
947
-  cmDspInst_t* preset    = cmDspSysAllocInst(   h, "Preset", NULL, 1, preGrpSymId );
948
-  cmDspInst_t* presetLbl = cmDspSysAllocInst(   h, "Text",   "Preset",      1, "" );
949
-  cmDspInst_t* storeBtn  = cmDspSysAllocButton( h, "store",  0);
950
-  cmDspInst_t* recallBtn = cmDspSysAllocButton( h, "recall", 0);
951
-  cmDspSysInstallCb(   h, presetLbl, "val", preset, "label",NULL);
952
-  cmDspSysInstallCb(   h, storeBtn,  "sym", preset, "cmd", NULL );
953
-  cmDspSysInstallCb(   h, recallBtn, "sym", preset, "cmd", NULL );
954
-
955
-  cmDspInst_t* prePath    = cmDspSysAllocInst(   h, "Fname",  "prePath",   3, true,NULL,r.tlPrefixPath);
956
-  
957
-
958
-  cmDspSysNewColumn(h,0);
959
-
960
-  //--------------- Recorded performance evaluation and Active Measurement related controls
961
-  cmDspInst_t* clrBtn  = cmDspSysAllocButton( h, "clear",  0);
962
-  cmDspInst_t* prtBtn  = cmDspSysAllocButton( h, "dump",  0);
963
-  cmDspInst_t* mlst    = cmDspSysAllocInst(   h, "MsgList",   NULL, 3, "meas", r.measFn, 2);
964
-  cmDspInst_t* amCmd   = cmDspSysAllocInst(   h, "PortToSym", NULL, 2, "add", "rewind" );  
965
-
966
 
882
 
967
 
883
 
968
   cmDspSysInstallCb( h, clrBtn, "sym",    amp, "cmd",   NULL ); // clear active meas.
884
   cmDspSysInstallCb( h, clrBtn, "sym",    amp, "cmd",   NULL ); // clear active meas.
1082
   cmDspSysInstallCb(h, scp, "sel",    prp, "in", NULL );
998
   cmDspSysInstallCb(h, scp, "sel",    prp, "in", NULL );
1083
 
999
 
1084
   // NOTE: THIS IS A DUPLICATE OF THE scp.sel CONNECTIONS
1000
   // NOTE: THIS IS A DUPLICATE OF THE scp.sel CONNECTIONS
1001
+  /*
1085
   cmDspSysInstallCb(h, scLoc, "val",    sfp, "index",  NULL );
1002
   cmDspSysInstallCb(h, scLoc, "val",    sfp, "index",  NULL );
1086
   cmDspSysInstallCb(h, scLoc, "val",    modp,"reset", NULL );
1003
   cmDspSysInstallCb(h, scLoc, "val",    modp,"reset", NULL );
1087
   cmDspSysInstallCb(h, scLoc, "val",    modr,"reset", NULL );
1004
   cmDspSysInstallCb(h, scLoc, "val",    modr,"reset", NULL );
1088
   cmDspSysInstallCb(h, scLoc, "val",    rpp, "initIdx", NULL );
1005
   cmDspSysInstallCb(h, scLoc, "val",    rpp, "initIdx", NULL );
1089
   cmDspSysInstallCb(h, scLoc, "val",    prp, "in", NULL );
1006
   cmDspSysInstallCb(h, scLoc, "val",    prp, "in", NULL );
1007
+  */
1090
 
1008
 
1091
   //cmDspSysInstallCb(h, reload,"out",  modp, "reload", NULL );
1009
   //cmDspSysInstallCb(h, reload,"out",  modp, "reload", NULL );
1092
 
1010
 
1093
 
1011
 
1094
   // MIDI file player to score follower
1012
   // MIDI file player to score follower
1095
   cmDspSysInstallCb(h, mfp,  "smpidx",  siRt, "f-in",NULL );
1013
   cmDspSysInstallCb(h, mfp,  "smpidx",  siRt, "f-in",NULL );
1096
-  cmDspSysInstallCb(h, siRt, "f-out-0", sfp,  "smpidx",NULL ); 
1014
+  cmDspSysInstallCb(h, siRt, "f-out-1", sfp,  "smpidx",NULL ); 
1097
   // leave siRt.f-out-1 unconnected because it should be ignored in 'simulate mode'
1015
   // leave siRt.f-out-1 unconnected because it should be ignored in 'simulate mode'
1098
 
1016
 
1099
   cmDspSysInstallCb(h, mfp,  "d1",      d1Rt, "f-in",  NULL );
1017
   cmDspSysInstallCb(h, mfp,  "d1",      d1Rt, "f-in",  NULL );
1100
-  cmDspSysInstallCb(h, d1Rt, "f-out-0", sfp,  "d1",    NULL );
1018
+  cmDspSysInstallCb(h, d1Rt, "f-out-1", sfp,  "d1",    NULL );
1101
   cmDspSysInstallCb(h, d1Rt, "f-out-1", nmp,  "d1",    NULL );
1019
   cmDspSysInstallCb(h, d1Rt, "f-out-1", nmp,  "d1",    NULL );
1102
   cmDspSysInstallCb(h, nmp,   "d1",     mop,  "d1",    NULL );
1020
   cmDspSysInstallCb(h, nmp,   "d1",     mop,  "d1",    NULL );
1103
   cmDspSysInstallCb(h, nmp,   "d1",     mo2p,  "d1",    NULL );
1021
   cmDspSysInstallCb(h, nmp,   "d1",     mo2p,  "d1",    NULL );
1104
 
1022
 
1105
   cmDspSysInstallCb(h, mfp,  "d0",      d0Rt,  "f-in", NULL );
1023
   cmDspSysInstallCb(h, mfp,  "d0",      d0Rt,  "f-in", NULL );
1106
-  cmDspSysInstallCb(h, d0Rt, "f-out-0", sfp,   "d0",   NULL );
1024
+  cmDspSysInstallCb(h, d0Rt, "f-out-1", sfp,   "d0",   NULL );
1107
   cmDspSysInstallCb(h, d0Rt, "f-out-1", nmp,  "d0",   NULL );
1025
   cmDspSysInstallCb(h, d0Rt, "f-out-1", nmp,  "d0",   NULL );
1108
   cmDspSysInstallCb(h, nmp,  "d0",      mop,  "d0",   NULL );
1026
   cmDspSysInstallCb(h, nmp,  "d0",      mop,  "d0",   NULL );
1109
   cmDspSysInstallCb(h, nmp,  "d0",      mo2p,  "d0",   NULL );
1027
   cmDspSysInstallCb(h, nmp,  "d0",      mo2p,  "d0",   NULL );
1110
 
1028
 
1111
   cmDspSysInstallCb(h, mfp, "status",   stRt, "f-in",  NULL );
1029
   cmDspSysInstallCb(h, mfp, "status",   stRt, "f-in",  NULL );
1112
-  cmDspSysInstallCb(h, stRt, "f-out-0", sfp,  "status",NULL );
1030
+  cmDspSysInstallCb(h, stRt, "f-out-1", sfp,  "status",NULL );
1113
   cmDspSysInstallCb(h, stRt, "f-out-1", nmp,  "status",NULL );
1031
   cmDspSysInstallCb(h, stRt, "f-out-1", nmp,  "status",NULL );
1114
   cmDspSysInstallCb(h, nmp,  "status",  mop,  "status",NULL );
1032
   cmDspSysInstallCb(h, nmp,  "status",  mop,  "status",NULL );
1115
   cmDspSysInstallCb(h, nmp,  "status",  mo2p,  "status",NULL );
1033
   cmDspSysInstallCb(h, nmp,  "status",  mo2p,  "status",NULL );
1116
 
1034
 
1035
+
1117
   // MIDI input port
1036
   // MIDI input port
1118
   //cmDspSysInstallCb(h, mip, "smpidx", sfp, "smpidx", NULL );
1037
   //cmDspSysInstallCb(h, mip, "smpidx", sfp, "smpidx", NULL );
1119
   //cmDspSysInstallCb(h, mip, "d1",     sfp, "d1",     NULL );
1038
   //cmDspSysInstallCb(h, mip, "d1",     sfp, "d1",     NULL );
1122
 
1041
 
1123
   // score follower to recd_play,modulator and printers
1042
   // score follower to recd_play,modulator and printers
1124
   //cmDspSysInstallCb(h, sfp, "out",     rpp,     "index", NULL );
1043
   //cmDspSysInstallCb(h, sfp, "out",     rpp,     "index", NULL );
1125
-  //cmDspSysInstallCb(h, sfp, "out",     modp,    "index", NULL );
1044
+  cmDspSysInstallCb(h, sfp, "out",     modp,    "index", NULL );
1126
   //cmDspSysInstallCb(h, sfp, "out",     modr,    "index", NULL );
1045
   //cmDspSysInstallCb(h, sfp, "out",     modr,    "index", NULL );
1127
-  //cmDspSysInstallCb(h, sfp, "recent",  prp,     "in",  NULL );  // report 'recent' but only act on 'max' loc index
1046
+  cmDspSysInstallCb(h, sfp, "recent",  prp,     "in",  NULL );  // report 'recent' but only act on 'max' loc index
1128
 
1047
 
1129
   //cmDspSysInstallCb(h, prtb, "sym", sfp, "cmd", NULL );
1048
   //cmDspSysInstallCb(h, prtb, "sym", sfp, "cmd", NULL );
1130
   //cmDspSysInstallCb(h, qtb,  "sym", sfp, "cmd", NULL );
1049
   //cmDspSysInstallCb(h, qtb,  "sym", sfp, "cmd", NULL );
1135
 
1054
 
1136
   cmDspSysInstallCb(h, igain0, "val", ai0p, "gain", NULL );   // input gain control
1055
   cmDspSysInstallCb(h, igain0, "val", ai0p, "gain", NULL );   // input gain control
1137
   cmDspSysInstallCb(h, igain1, "val", ai1p, "gain", NULL );
1056
   cmDspSysInstallCb(h, igain1, "val", ai1p, "gain", NULL );
1057
+  cmDspSysInstallCb(h, igain2, "val", ai2p, "gain", NULL );   // input gain control
1058
+  cmDspSysInstallCb(h, igain3, "val", ai3p, "gain", NULL );
1138
 
1059
 
1139
   if( fragFl )
1060
   if( fragFl )
1140
   {
1061
   {
1144
     cmDspSysInstallCb(h, mutr,   "out", mix1, "gain-1", NULL );
1065
     cmDspSysInstallCb(h, mutr,   "out", mix1, "gain-1", NULL );
1145
   }
1066
   }
1146
 
1067
 
1068
+  cmDspSysInstallCb(h, apfByp, "out", apf0, "bypass", NULL );   // APF bypass
1069
+  cmDspSysInstallCb(h, apfByp, "out", apf1, "bypass", NULL );   // 
1070
+  cmDspSysInstallCb(h, apfByp, "out", apf2, "bypass", NULL );   // 
1071
+  cmDspSysInstallCb(h, apfByp, "out", apf3, "bypass", NULL );   // 
1072
+
1073
+
1147
   cmDspSysInstallCb(h, ogain0, "val", ao0p, "gain", NULL );   // output gain control
1074
   cmDspSysInstallCb(h, ogain0, "val", ao0p, "gain", NULL );   // output gain control
1148
   cmDspSysInstallCb(h, ogain1, "val", ao1p, "gain", NULL );
1075
   cmDspSysInstallCb(h, ogain1, "val", ao1p, "gain", NULL );
1149
-  //cmDspSysInstallCb(h, ogain2, "val", ao2p, "gain", NULL );
1150
-  //cmDspSysInstallCb(h, ogain3, "val", ao3p, "gain", NULL );
1076
+  cmDspSysInstallCb(h, ogain2, "val", ao2p, "gain", NULL );
1077
+  cmDspSysInstallCb(h, ogain3, "val", ao3p, "gain", NULL );
1078
+
1079
+
1080
+
1081
+
1082
+  if( useInputEqFl )
1083
+  {
1084
+    cmDspSysInstallCb(h, eqLpByp0,  "out", eqLpf_0, "bypass", NULL);
1085
+    cmDspSysInstallCb(h, eqLpMode0, "mode",eqLpf_0, "mode",   NULL );
1086
+    cmDspSysInstallCb(h, eqLpFc0,   "val", eqLpf_0, "f0",     NULL );
1087
+    cmDspSysInstallCb(h, eqLpQ0,    "val", eqLpf_0, "Q",      NULL );
1088
+    cmDspSysInstallCb(h, eqLpGain0, "val", eqLpf_0, "gain",   NULL );
1089
+
1090
+    cmDspSysInstallCb(h, eqBpByp0,  "out", eqBpf_0, "bypass", NULL);
1091
+    cmDspSysInstallCb(h, eqBpMode0, "mode",eqBpf_0, "mode",   NULL );
1092
+    cmDspSysInstallCb(h, eqBpFc0,   "val", eqBpf_0, "f0",     NULL );
1093
+    cmDspSysInstallCb(h, eqBpQ0,    "val", eqBpf_0, "Q",      NULL );
1094
+    cmDspSysInstallCb(h, eqBpGain0, "val", eqBpf_0, "gain",   NULL );
1095
+
1096
+    cmDspSysInstallCb(h, eqHpByp0,  "out", eqHpf_0, "bypass", NULL);
1097
+    cmDspSysInstallCb(h, eqHpMode0, "mode",eqHpf_0, "mode",   NULL );
1098
+    cmDspSysInstallCb(h, eqHpFc0,   "val", eqHpf_0, "f0",     NULL );
1099
+    cmDspSysInstallCb(h, eqHpQ0,    "val", eqHpf_0, "Q",      NULL );
1100
+    cmDspSysInstallCb(h, eqHpGain0, "val", eqHpf_0, "gain",   NULL );
1101
+
1102
+
1103
+    cmDspSysInstallCb(h, eqLpByp1,  "out", eqLpf_1, "bypass", NULL);
1104
+    cmDspSysInstallCb(h, eqLpMode1, "mode",eqLpf_1, "mode",   NULL );
1105
+    cmDspSysInstallCb(h, eqLpFc1,   "val", eqLpf_1, "f0",     NULL );
1106
+    cmDspSysInstallCb(h, eqLpQ1,    "val", eqLpf_1, "Q",      NULL );
1107
+    cmDspSysInstallCb(h, eqLpGain1, "val", eqLpf_1, "gain",   NULL );
1108
+
1109
+    cmDspSysInstallCb(h, eqBpByp1,  "out", eqBpf_1, "bypass", NULL);
1110
+    cmDspSysInstallCb(h, eqBpMode1, "mode",eqBpf_1, "mode",   NULL );
1111
+    cmDspSysInstallCb(h, eqBpFc1,   "val", eqBpf_1, "f0",     NULL );
1112
+    cmDspSysInstallCb(h, eqBpQ1,    "val", eqBpf_1, "Q",      NULL );
1113
+    cmDspSysInstallCb(h, eqBpGain1, "val", eqBpf_1, "gain",   NULL );
1114
+
1115
+    cmDspSysInstallCb(h, eqHpByp1,  "out", eqHpf_1, "bypass", NULL);
1116
+    cmDspSysInstallCb(h, eqHpMode1, "mode",eqHpf_1, "mode",   NULL );
1117
+    cmDspSysInstallCb(h, eqHpFc1,   "val", eqHpf_1, "f0",     NULL );
1118
+    cmDspSysInstallCb(h, eqHpQ1,    "val", eqHpf_1, "Q",      NULL );
1119
+    cmDspSysInstallCb(h, eqHpGain1, "val", eqHpf_1, "gain",   NULL );
1120
+
1121
+
1122
+    cmDspSysInstallCb(h, eqLpByp2,  "out", eqLpf_2, "bypass", NULL);
1123
+    cmDspSysInstallCb(h, eqLpMode2, "mode",eqLpf_2, "mode",   NULL );
1124
+    cmDspSysInstallCb(h, eqLpFc2,   "val", eqLpf_2, "f0",     NULL );
1125
+    cmDspSysInstallCb(h, eqLpQ2,    "val", eqLpf_2, "Q",      NULL );
1126
+    cmDspSysInstallCb(h, eqLpGain2, "val", eqLpf_2, "gain",   NULL );
1127
+
1128
+    cmDspSysInstallCb(h, eqBpByp2,  "out", eqBpf_2, "bypass", NULL);
1129
+    cmDspSysInstallCb(h, eqBpMode2, "mode",eqBpf_2, "mode",   NULL );
1130
+    cmDspSysInstallCb(h, eqBpFc2,   "val", eqBpf_2, "f0",     NULL );
1131
+    cmDspSysInstallCb(h, eqBpQ2,    "val", eqBpf_2, "Q",      NULL );
1132
+    cmDspSysInstallCb(h, eqBpGain2, "val", eqBpf_2, "gain",   NULL );
1133
+
1134
+    cmDspSysInstallCb(h, eqHpByp2,  "out", eqHpf_2, "bypass", NULL);
1135
+    cmDspSysInstallCb(h, eqHpMode2, "mode",eqHpf_2, "mode",   NULL );
1136
+    cmDspSysInstallCb(h, eqHpFc2,   "val", eqHpf_2, "f0",     NULL );
1137
+    cmDspSysInstallCb(h, eqHpQ2,    "val", eqHpf_2, "Q",      NULL );
1138
+    cmDspSysInstallCb(h, eqHpGain2, "val", eqHpf_2, "gain",   NULL );
1139
+
1140
+    cmDspSysInstallCb(h, eqLpByp3,  "out", eqLpf_3, "bypass", NULL);
1141
+    cmDspSysInstallCb(h, eqLpMode3, "mode",eqLpf_3, "mode",   NULL );
1142
+    cmDspSysInstallCb(h, eqLpFc3,   "val", eqLpf_3, "f0",     NULL );
1143
+    cmDspSysInstallCb(h, eqLpQ3,    "val", eqLpf_3, "Q",      NULL );
1144
+    cmDspSysInstallCb(h, eqLpGain3, "val", eqLpf_3, "gain",   NULL );
1145
+
1146
+    cmDspSysInstallCb(h, eqBpByp3,  "out", eqBpf_3, "bypass", NULL);
1147
+    cmDspSysInstallCb(h, eqBpMode3, "mode",eqBpf_3, "mode",   NULL );
1148
+    cmDspSysInstallCb(h, eqBpFc3,   "val", eqBpf_3, "f0",     NULL );
1149
+    cmDspSysInstallCb(h, eqBpQ3,    "val", eqBpf_3, "Q",      NULL );
1150
+    cmDspSysInstallCb(h, eqBpGain3, "val", eqBpf_3, "gain",   NULL );
1151
+
1152
+    cmDspSysInstallCb(h, eqHpByp3,  "out", eqHpf_3, "bypass", NULL);
1153
+    cmDspSysInstallCb(h, eqHpMode3, "mode",eqHpf_3, "mode",   NULL );
1154
+    cmDspSysInstallCb(h, eqHpFc3,   "val", eqHpf_3, "f0",     NULL );
1155
+    cmDspSysInstallCb(h, eqHpQ3,    "val", eqHpf_3, "Q",      NULL );
1156
+    cmDspSysInstallCb(h, eqHpGain3, "val", eqHpf_3, "gain",   NULL );
1157
+  }
1151
 
1158
 
1152
   return rc;
1159
   return rc;
1153
 }
1160
 }

+ 454
- 347
osx/cmAudioPortOsx.c
File diff suppressed because it is too large
View File


+ 2
- 0
osx/cmAudioPortOsx.h View File

23
   cmApRC_t      cmApOsxDeviceStop(  unsigned devIdx );
23
   cmApRC_t      cmApOsxDeviceStop(  unsigned devIdx );
24
   bool          cmApOsxDeviceIsStarted( unsigned devIdx );
24
   bool          cmApOsxDeviceIsStarted( unsigned devIdx );
25
 
25
 
26
+  void          cmApOsxTest( cmRpt_t* );
27
+
26
 #ifdef __cplusplus
28
 #ifdef __cplusplus
27
 }
29
 }
28
 #endif
30
 #endif

+ 6
- 2
vop/cmVectOpsTemplateCode.h View File

13
   va_end(vl);
13
   va_end(vl);
14
 }
14
 }
15
 
15
 
16
-void          VECT_OP_FUNC(Printf)( cmRpt_t* rpt, unsigned rowCnt, unsigned colCnt, const VECT_OP_TYPE* sbp, unsigned fieldWidth, unsigned decPlCnt, const char* fmt, unsigned flags )
16
+void          VECT_OP_FUNC(Printf)( cmRpt_t* rpt, unsigned rowCnt, unsigned colCnt, const VECT_OP_TYPE* sbp, int fieldWidth, int decPlCnt, const char* fmt, unsigned flags )
17
 {
17
 {
18
   unsigned cci;
18
   unsigned cci;
19
   unsigned outColCnt = 10;
19
   unsigned outColCnt = 10;
1287
   // Calculate the NB factor for LWORK - 
1287
   // Calculate the NB factor for LWORK - 
1288
   // The two args are length of string args 'funcNameStr' and ' '.
1288
   // The two args are length of string args 'funcNameStr' and ' '.
1289
   // It is not clear how many 'n' args are requred so all are passed set to 'drn'
1289
   // It is not clear how many 'n' args are requred so all are passed set to 'drn'
1290
+#ifdef OS_OSX
1291
+   int nb = ilaenv_(&ispec, funcNameStr, " ", &n1,&n2,&n3,&n4 );
1292
+#else
1290
   int nb = ilaenv_(&ispec, funcNameStr, " ", &n1,&n2,&n3,&n4, strlen(funcNameStr), 1 );
1293
   int nb = ilaenv_(&ispec, funcNameStr, " ", &n1,&n2,&n3,&n4, strlen(funcNameStr), 1 );
1291
-
1294
+#endif
1295
+  
1292
   VECT_OP_TYPE w[drn * nb];    // allocate working memory
1296
   VECT_OP_TYPE w[drn * nb];    // allocate working memory
1293
   int_lap_t    info;
1297
   int_lap_t    info;
1294
 
1298
 

+ 1
- 1
vop/cmVectOpsTemplateHdr.h View File

2
 /// Vector operations interface.
2
 /// Vector operations interface.
3
 
3
 
4
 /// Setting fieldWidth or decPltCnt to to negative values result in fieldWidth == 10 or decPlCnt == 4
4
 /// Setting fieldWidth or decPltCnt to to negative values result in fieldWidth == 10 or decPlCnt == 4
5
-void          VECT_OP_FUNC(Printf)( cmRpt_t* rpt, unsigned rn, unsigned cn, const VECT_OP_TYPE* dbp, unsigned fieldWidth, unsigned decPlCnt, const char* fmt, unsigned flags );
5
+void          VECT_OP_FUNC(Printf)( cmRpt_t* rpt, unsigned rn, unsigned cn, const VECT_OP_TYPE* dbp, int fieldWidth, int decPlCnt, const char* fmt, unsigned flags );
6
 void          VECT_OP_FUNC(Print)(  cmRpt_t* rpt, unsigned rn, unsigned cn, const VECT_OP_TYPE* dbp );
6
 void          VECT_OP_FUNC(Print)(  cmRpt_t* rpt, unsigned rn, unsigned cn, const VECT_OP_TYPE* dbp );
7
 void          VECT_OP_FUNC(PrintE)( cmRpt_t* rpt, unsigned rn, unsigned cn, const VECT_OP_TYPE* dbp );
7
 void          VECT_OP_FUNC(PrintE)( cmRpt_t* rpt, unsigned rn, unsigned cn, const VECT_OP_TYPE* dbp );
8
 
8
 

Loading…
Cancel
Save