~ubuntu-branches/ubuntu/raring/muse/raring-proposed

« back to all changes in this revision

Viewing changes to synti/deicsonze/deicsonze.cpp

  • Committer: Package Import Robot
  • Author(s): Alessio Treglia
  • Date: 2012-11-22 01:16:59 UTC
  • mto: This revision was merged to the branch mainline in revision 23.
  • Revision ID: package-import@ubuntu.com-20121122011659-a2fwbf33ceqe1s0t
Tags: upstream-2.1~rc1
ImportĀ upstreamĀ versionĀ 2.1~rc1

Show diffs side-by-side

added added

removed removed

Lines of Context:
241
241
DeicsOnze::~DeicsOnze()
242
242
{
243
243
  if(_gui)        
244
 
    delete _gui;  // p4.0.27
 
244
    delete _gui;  
 
245
 
 
246
  if(_pluginIReverb)
 
247
    delete _pluginIReverb;
 
248
  if(_pluginIChorus)
 
249
    delete _pluginIChorus;
 
250
  if(_pluginIDelay)
 
251
    delete _pluginIDelay;
245
252
    
246
253
  //if (--useCount == 0)
247
254
  //delete[] sine_table;
2298
2305
//---------------------------------------------------------
2299
2306
// getInitData
2300
2307
//---------------------------------------------------------
2301
 
//void DeicsOnze::getInitData(int* length, const unsigned char** data) const {
2302
2308
void DeicsOnze::getInitData(int* length, const unsigned char** data) {
2303
2309
  //write the set in a temporary file and in a QByteArray
2304
2310
  QTemporaryFile file;
2313
2319
  //compress the QByteArray at default rate
2314
2320
  QByteArray baComp = qCompress(ba);
2315
2321
 
 
2322
  int version = SYSEX_INIT_DATA_VERSION; //SYSEX_INIT_DATA_VERSION_2; // Not quite ready for ver 2 yet. Need delay wet/dry gui control.
 
2323
  
2316
2324
  //save the set
2317
 
  *length = NUM_CONFIGLENGTH                       
2318
 
  //*length = 2 + NUM_CONFIGLENGTH     // 2 for Header                  
2319
 
    ///+ (_pluginIReverb?sizeof(float)*_pluginIReverb->plugin()->parameter():0) 
 
2325
  //*length = (version == SYSEX_INIT_DATA_VERSION_2 ? NUM_CONFIGLENGTH : NUM_DELAY_WET_DRY_MIX)  // HACK
 
2326
  *length = NUM_CONFIGLENGTH
2320
2327
    + (_pluginIReverb?sizeof(float)*_pluginIReverb->plugin()->controlInPorts():0) 
2321
 
    ///+ (_pluginIChorus?sizeof(float)*_pluginIChorus->plugin()->parameter():0)
2322
2328
    + (_pluginIChorus?sizeof(float)*_pluginIChorus->plugin()->controlInPorts():0)
2323
2329
    + baComp.size();
2324
2330
 
2325
 
  ///unsigned char* buffer = new unsigned char[*length];
2326
2331
  setupInitBuffer(*length);  
2327
2332
  
2328
2333
  //save init data
2329
2334
  
2330
 
  ///buffer[0]=SYSEX_INIT_DATA;
2331
2335
  initBuffer[0]=MUSE_SYNTH_SYSEX_MFG_ID;
2332
2336
  initBuffer[1]=DEICSONZE_UNIQUE_ID;
2333
2337
  initBuffer[2]=SYSEX_INIT_DATA;
2334
 
  initBuffer[3]=SYSEX_INIT_DATA_VERSION;
 
2338
  initBuffer[3]=version;
2335
2339
  //save global data
2336
2340
  initBuffer[NUM_MASTERVOL] = (unsigned char) getMasterVol();
2337
2341
  for(int c = 0; c < NBRCHANNELS; c++) {
2389
2393
  initBuffer[NUM_IS_REVERB_ON]=(unsigned char)_global.isReverbActivated;
2390
2394
  initBuffer[NUM_REVERB_RETURN]=(unsigned char)getReverbReturn();
2391
2395
  initBuffer[NUM_REVERB_PARAM_NBR]=                                         
2392
 
    ///(_pluginIReverb?(unsigned char)_pluginIReverb->plugin()->parameter() : 0);
2393
2396
    (_pluginIReverb?(unsigned char)_pluginIReverb->plugin()->controlInPorts() : 0);
2394
2397
  strncpy((char*)&initBuffer[NUM_REVERB_LIB],
2395
2398
          (_pluginIReverb?
2403
2406
  initBuffer[NUM_IS_CHORUS_ON]=(unsigned char)_global.isChorusActivated;
2404
2407
  initBuffer[NUM_CHORUS_RETURN]=(unsigned char)getChorusReturn();
2405
2408
  initBuffer[NUM_CHORUS_PARAM_NBR]=                                         
2406
 
    ///(_pluginIChorus?(unsigned char)_pluginIChorus->plugin()->parameter() : 0);
2407
2409
    (_pluginIChorus?(unsigned char)_pluginIChorus->plugin()->controlInPorts() : 0);
2408
2410
  strncpy((char*)&initBuffer[NUM_CHORUS_LIB],
2409
2411
          (_pluginIChorus?
2419
2421
  //save FX parameters
2420
2422
  //reverb
2421
2423
  for(int i = 0; i < (int)initBuffer[NUM_REVERB_PARAM_NBR]; i++) {
2422
 
    float val = (float)getReverbParam(i);
2423
 
    memcpy(&initBuffer[NUM_CONFIGLENGTH + sizeof(float)*i], &val, sizeof(float));
 
2424
    float val = getReverbParam(i);
 
2425
    //memcpy(&initBuffer[(version == SYSEX_INIT_DATA_VERSION_2 ? NUM_CONFIGLENGTH : NUM_DELAY_WET_DRY_MIX) // HACK
 
2426
    memcpy(&initBuffer[NUM_CONFIGLENGTH
 
2427
                       + sizeof(float)*i], &val, sizeof(float));
2424
2428
  }
2425
2429
  //chorus
2426
2430
  for(int i = 0; i < (int)initBuffer[NUM_CHORUS_PARAM_NBR]; i++) {
2427
 
    float val = (float)getChorusParam(i);
 
2431
    float val = getChorusParam(i);
 
2432
    //memcpy(&initBuffer[(version == SYSEX_INIT_DATA_VERSION_2 ? NUM_CONFIGLENGTH : NUM_DELAY_WET_DRY_MIX) // HACK
2428
2433
    memcpy(&initBuffer[NUM_CONFIGLENGTH
2429
2434
                   + sizeof(float)*(int)initBuffer[NUM_REVERB_PARAM_NBR]
2430
2435
                   + sizeof(float)*i], &val, sizeof(float));
2441
2446
  memcpy(&initBuffer[NUM_DELAY_LFO_FREQ], &delayfloat, sizeof(float));
2442
2447
  delayfloat = getDelayLFODepth();
2443
2448
  memcpy(&initBuffer[NUM_DELAY_LFO_DEPTH], &delayfloat, sizeof(float));
 
2449
  //if(version == SYSEX_INIT_DATA_VERSION_2)
 
2450
  //{
 
2451
  //  delayfloat = getDelayDryWet();
 
2452
  //  memcpy(&initBuffer[NUM_DELAY_WET_DRY_MIX], &delayfloat, sizeof(float));
 
2453
  //}
2444
2454
 
2445
2455
  //save set data
2446
2456
  int offset =
 
2457
    //(version == SYSEX_INIT_DATA_VERSION_2 ? NUM_CONFIGLENGTH : NUM_DELAY_WET_DRY_MIX) // HACK
2447
2458
    NUM_CONFIGLENGTH
2448
2459
    + sizeof(float)*(int)initBuffer[NUM_REVERB_PARAM_NBR]
2449
2460
    + sizeof(float)*(int)initBuffer[NUM_CHORUS_PARAM_NBR];
2450
2461
  for(int i = offset; i < *length; i++)
2451
2462
    initBuffer[i]=(unsigned char)baComp.at(i - offset);
2452
2463
 
2453
 
  ///*data=buffer;
2454
2464
  *data=initBuffer;
2455
2465
}
2456
2466
//---------------------------------------------------------
2457
2467
// parseInitData
2458
2468
//---------------------------------------------------------
2459
2469
void DeicsOnze::parseInitData(int length, const unsigned char* data) {
2460
 
  ///if(data[1]==SYSEX_INIT_DATA_VERSION) {
2461
 
  if(data[3]==SYSEX_INIT_DATA_VERSION) {
2462
 
    //load global parameters
2463
 
    //master volume
2464
 
    setMasterVol(data[NUM_MASTERVOL]);
2465
 
    unsigned char *dataMasterVol = new unsigned char[2];
2466
 
    dataMasterVol[0]=SYSEX_MASTERVOL;
2467
 
    dataMasterVol[1]=(unsigned char) getMasterVol();
2468
 
    MusECore::MidiPlayEvent 
2469
 
      evMasterVol(0, 0, MusECore::ME_SYSEX, (const unsigned char*)dataMasterVol, 2);
2470
 
    _gui->writeEvent(evMasterVol);
2471
 
    //channel configuration
2472
 
    for(int c = 0; c < NBRCHANNELS; c++) {
2473
 
      //isEnable
2474
 
      setChannelEnable(c, data[NUM_CHANNEL_ENABLE + c]);
2475
 
      MusECore::MidiPlayEvent 
2476
 
        evChEnable(0, 0, c, MusECore::ME_CONTROLLER,
2477
 
                   CTRL_CHANNELENABLE, data[NUM_CHANNEL_ENABLE + c]);
2478
 
      _gui->writeEvent(evChEnable);
2479
 
      //nbrVoices
2480
 
      setNbrVoices(c, data[NUM_NBRVOICES + c]);
2481
 
      MusECore::MidiPlayEvent 
2482
 
        evNbrVoices(0, 0, c,MusECore::ME_CONTROLLER,CTRL_NBRVOICES, data[NUM_NBRVOICES + c]);
2483
 
      _gui->writeEvent(evNbrVoices);
2484
 
      //channel volume
2485
 
      setChannelVol(c, data[NUM_CHANNEL_VOL + c]);
2486
 
      MusECore::MidiPlayEvent
2487
 
        evChVol(0, 0, c, MusECore::ME_CONTROLLER,
2488
 
                CTRL_CHANNELVOLUME, data[NUM_CHANNEL_VOL + c]);
2489
 
      _gui->writeEvent(evChVol);
2490
 
      //channel pan
2491
 
      setChannelPan(c, data[NUM_CHANNEL_PAN + c]);
2492
 
      MusECore::MidiPlayEvent
2493
 
        evChPan(0, 0, c, MusECore::ME_CONTROLLER, CTRL_CHANNELPAN,
2494
 
                data[NUM_CHANNEL_PAN + c]);
2495
 
      _gui->writeEvent(evChPan);
2496
 
      if(getChannelEnable(c)) applyChannelAmp(c);
2497
 
      //channel detune
2498
 
      setChannelDetune(c, data[NUM_CHANNEL_DETUNE + c]-MAXCHANNELDETUNE);
2499
 
      MusECore::MidiPlayEvent
2500
 
        evChDetune(0, 0, c, MusECore::ME_CONTROLLER, CTRL_CHANNELDETUNE,
2501
 
                   data[NUM_CHANNEL_DETUNE + c]-MAXCHANNELDETUNE);
2502
 
      _gui->writeEvent(evChDetune);
2503
 
      //channel brightness
2504
 
      setChannelBrightness(c,
2505
 
                           data[NUM_CHANNEL_BRIGHTNESS + 2*c]
2506
 
                           + data[NUM_CHANNEL_BRIGHTNESS + 2*c + 1] * 256);
2507
 
      MusECore::MidiPlayEvent
2508
 
        evChBrightness(0, 0, c, MusECore::ME_CONTROLLER,
2509
 
                       CTRL_FINEBRIGHTNESS, getChannelBrightness(c));
2510
 
      _gui->writeEvent(evChBrightness);
2511
 
      //channel modulation
2512
 
      setChannelModulation(c, data[NUM_CHANNEL_MODULATION + c]);
2513
 
      MusECore::MidiPlayEvent 
2514
 
        evChMod(0, 0, c, MusECore::ME_CONTROLLER,
2515
 
                MusECore::CTRL_MODULATION, data[NUM_CHANNEL_MODULATION + c]);
2516
 
      _gui->writeEvent(evChMod);
2517
 
      //channel attack
2518
 
      setChannelAttack(c, data[NUM_CHANNEL_ATTACK + c]);
2519
 
      MusECore::MidiPlayEvent 
2520
 
        evChAttack(0, 0, c, MusECore::ME_CONTROLLER,
2521
 
                   MusECore::CTRL_ATTACK_TIME, data[NUM_CHANNEL_ATTACK + c]);
2522
 
      _gui->writeEvent(evChAttack);
2523
 
      //channel release
2524
 
      setChannelRelease(c, data[NUM_CHANNEL_RELEASE + c]);
2525
 
      MusECore::MidiPlayEvent 
2526
 
        evChRelease(0, 0, c, MusECore::ME_CONTROLLER,
2527
 
                    MusECore::CTRL_RELEASE_TIME, data[NUM_CHANNEL_RELEASE + c]);
2528
 
      _gui->writeEvent(evChRelease);      
2529
 
      //channel reverb
2530
 
      setChannelReverb(c, data[NUM_CHANNEL_REVERB + c]);
2531
 
      MusECore::MidiPlayEvent 
2532
 
        evChReverb(0, 0, c, MusECore::ME_CONTROLLER,
2533
 
                   MusECore::CTRL_REVERB_SEND, data[NUM_CHANNEL_REVERB + c]);
2534
 
      _gui->writeEvent(evChReverb);      
2535
 
      //channel chorus
2536
 
      setChannelChorus(c, data[NUM_CHANNEL_CHORUS + c]);
2537
 
      MusECore::MidiPlayEvent 
2538
 
        evChChorus(0, 0, c, MusECore::ME_CONTROLLER,
2539
 
                   MusECore::CTRL_CHORUS_SEND, data[NUM_CHANNEL_CHORUS + c]);
2540
 
      _gui->writeEvent(evChChorus);      
2541
 
      //channel delay
2542
 
      setChannelDelay(c, data[NUM_CHANNEL_DELAY + c]);
2543
 
      MusECore::MidiPlayEvent 
2544
 
        evChDelay(0, 0, c, MusECore::ME_CONTROLLER,
2545
 
                  MusECore::CTRL_VARIATION_SEND, data[NUM_CHANNEL_DELAY + c]);
2546
 
      _gui->writeEvent(evChDelay);
2547
 
    }
2548
 
    //load configuration
2549
 
    _saveConfig = (bool)data[NUM_SAVECONFIG];
2550
 
    unsigned char *dataSaveConfig = new unsigned char[2];
2551
 
    dataSaveConfig[0]=SYSEX_SAVECONFIG;
2552
 
    dataSaveConfig[1]=(unsigned char)_saveConfig;
2553
 
    MusECore::MidiPlayEvent 
2554
 
      evSaveConfig(0, 0, MusECore::ME_SYSEX, (const unsigned char*)dataSaveConfig, 2);
2555
 
    _gui->writeEvent(evSaveConfig);    
2556
 
    if(_saveConfig) {
2557
 
      //saveOnlyUsed
2558
 
      _saveOnlyUsed = (bool)data[NUM_SAVEONLYUSED];
2559
 
      unsigned char *dataSaveOnlyUsed = new unsigned char[2];
2560
 
      dataSaveOnlyUsed[0]=SYSEX_SAVEONLYUSED;
2561
 
      dataSaveOnlyUsed[1]=(unsigned char)_saveOnlyUsed;
2562
 
      MusECore::MidiPlayEvent 
2563
 
        evSaveOnlyUsed(0, 0, MusECore::ME_SYSEX, (const unsigned char*)dataSaveOnlyUsed, 2);
2564
 
      _gui->writeEvent(evSaveOnlyUsed);    
2565
 
      //colors
2566
 
      unsigned char dataColorGui[COLORSYSEXLENGTH+1];
2567
 
      dataColorGui[0]=SYSEX_COLORGUI;
2568
 
      for (int i=0; i<COLORSYSEXLENGTH; i++)
2569
 
        dataColorGui[i+1]=data[NUM_RED_TEXT+i];
2570
 
      MusECore::MidiPlayEvent evSysexColor(0, 0, MusECore::ME_SYSEX, (const unsigned char*)dataColorGui,
2571
 
                             COLORSYSEXLENGTH+1);
2572
 
      _gui->writeEvent(evSysexColor);
2573
 
      //quality
2574
 
      unsigned char dataQuality[2];
2575
 
      dataQuality[0]=SYSEX_QUALITY;
2576
 
      dataQuality[1]=data[NUM_QUALITY];
2577
 
      setQuality((Quality)data[NUM_QUALITY]);
2578
 
      MusECore::MidiPlayEvent evQuality(0, 0, MusECore::ME_SYSEX, (const unsigned char*)dataQuality, 2);
2579
 
      _gui->writeEvent(evQuality);
2580
 
      //filter
2581
 
      unsigned char dataFilter[2];
2582
 
      dataFilter[0]=SYSEX_FILTER;
2583
 
      dataFilter[1]=data[NUM_FILTER];
2584
 
      setFilter((bool)data[NUM_FILTER]);
2585
 
      MusECore::MidiPlayEvent evFilter(0, 0, MusECore::ME_SYSEX, (const unsigned char*)dataFilter, 2);
2586
 
      _gui->writeEvent(evFilter);
2587
 
      //font size
2588
 
      unsigned char dataFontSize[2];
2589
 
      dataFontSize[0]=SYSEX_FONTSIZE;
2590
 
      dataFontSize[1]=data[NUM_FONTSIZE];
2591
 
      MusECore::MidiPlayEvent evFontSize(0, 0, MusECore::ME_SYSEX, (const unsigned char*)dataFontSize, 2);
2592
 
      _gui->writeEvent(evFontSize);
2593
 
      //load init set
2594
 
      unsigned char dataIsInitSet[2];
2595
 
      dataIsInitSet[0]=SYSEX_ISINITSET;
2596
 
      dataIsInitSet[1]=data[NUM_ISINITSET];
2597
 
      MusECore::MidiPlayEvent evIsInitSet(0, 0, MusECore::ME_SYSEX,
2598
 
                            (const unsigned char*)dataIsInitSet, 2);
2599
 
      _gui->writeEvent(evIsInitSet);
2600
 
      unsigned char dataInitSetPath[1+MAXSTRLENGTHINITSETPATH];
2601
 
      dataInitSetPath[0]=SYSEX_INITSETPATH;
2602
 
      for(int a = 0; a < MAXSTRLENGTHINITSETPATH; a++)
2603
 
        dataInitSetPath[a+1] = data[a+NUM_INITSETPATH];
2604
 
      MusECore::MidiPlayEvent evInitSetPath(0, 0, MusECore::ME_SYSEX,(const unsigned char*)dataInitSetPath,
2605
 
                              1+MAXSTRLENGTHINITSETPATH);
2606
 
      _gui->writeEvent(evInitSetPath);      
2607
 
      //load background pix
2608
 
      unsigned char dataIsBackgroundPix[2];
2609
 
      dataIsBackgroundPix[0]=SYSEX_ISBACKGROUNDPIX;
2610
 
      dataIsBackgroundPix[1]=data[NUM_ISBACKGROUNDPIX];
2611
 
      MusECore::MidiPlayEvent evIsBackgroundPix(0, 0, MusECore::ME_SYSEX,
2612
 
                            (const unsigned char*)dataIsBackgroundPix, 2);
2613
 
      _gui->writeEvent(evIsBackgroundPix);
2614
 
      unsigned char dataBackgroundPixPath[1+MAXSTRLENGTHBACKGROUNDPIXPATH];
2615
 
      dataBackgroundPixPath[0]=SYSEX_BACKGROUNDPIXPATH;
2616
 
      for(int a = 0; a < MAXSTRLENGTHBACKGROUNDPIXPATH; a++)
2617
 
        dataBackgroundPixPath[a+1] = data[a+NUM_BACKGROUNDPIXPATH];
2618
 
      MusECore::MidiPlayEvent evBackgroundPixPath(0, 0, MusECore::ME_SYSEX,
2619
 
                              (const unsigned char*)dataBackgroundPixPath,
2620
 
                              1+MAXSTRLENGTHBACKGROUNDPIXPATH);
2621
 
      _gui->writeEvent(evBackgroundPixPath);      
2622
 
    }
2623
 
    else _gui->saveConfigCheckBox->setChecked(false);
2624
 
    //load FX
2625
 
    //reverb
2626
 
    _global.isReverbActivated = (bool)data[NUM_IS_REVERB_ON];
2627
 
    unsigned char *dataReverbAct = new unsigned char[2];
2628
 
    dataReverbAct[0]=SYSEX_REVERBACTIV;
2629
 
    dataReverbAct[1]=(unsigned char)_global.isReverbActivated;
2630
 
    MusECore::MidiPlayEvent evReverbAct(0, 0, MusECore::ME_SYSEX,(const unsigned char*)dataReverbAct, 2);
2631
 
    _gui->writeEvent(evReverbAct);    
2632
 
    setReverbReturn((int)data[NUM_REVERB_RETURN]);
2633
 
    unsigned char *dataReverbRet = new unsigned char[2];
2634
 
    dataReverbRet[0]=SYSEX_REVERBRETURN;
2635
 
    dataReverbRet[1]=(unsigned char)getReverbReturn();
2636
 
    MusECore::MidiPlayEvent evReverbRet(0, 0, MusECore::ME_SYSEX,(const unsigned char*)dataReverbRet, 2);
2637
 
    _gui->writeEvent(evReverbRet);
2638
 
    MusECore::Plugin* p;
2639
 
    p = MusEGlobal::plugins.find((const char*)&data[NUM_REVERB_LIB], 
2640
 
                     (const char*)&data[NUM_REVERB_LABEL]);
2641
 
    if(p) { 
2642
 
      initPluginReverb(p);
2643
 
      ///for(int i = 0; i < _pluginIReverb->plugin()->parameter(); i++) {
2644
 
      for(int i = 0; i < (int)_pluginIReverb->plugin()->controlInPorts(); i++) {
2645
 
        float val;
2646
 
        memcpy(&val, &data[NUM_CONFIGLENGTH + sizeof(float)*i], sizeof(float));
2647
 
        setReverbParam(i, (double)val);
2648
 
      }
2649
 
      char dataBuildRev;
2650
 
      dataBuildRev = SYSEX_BUILDGUIREVERB;
2651
 
      MusECore::MidiPlayEvent evSysexBuildRev(0, 0, MusECore::ME_SYSEX,
2652
 
                                (const unsigned char*)&dataBuildRev, 1);
2653
 
      _gui->writeEvent(evSysexBuildRev);
2654
 
    }
2655
 
    else _pluginIReverb = NULL;
2656
 
    //chorus
2657
 
    _global.isChorusActivated = (bool)data[NUM_IS_CHORUS_ON];
2658
 
    unsigned char *dataChorusAct = new unsigned char[2];
2659
 
    dataChorusAct[0]=SYSEX_CHORUSACTIV;
2660
 
    dataChorusAct[1]=(unsigned char)_global.isChorusActivated;
2661
 
    MusECore::MidiPlayEvent evChorusAct(0, 0, MusECore::ME_SYSEX,(const unsigned char*)dataChorusAct, 2);
2662
 
    _gui->writeEvent(evChorusAct);    
2663
 
    setChorusReturn((int)data[NUM_CHORUS_RETURN]);
2664
 
    unsigned char *dataChorusRet = new unsigned char[2];
2665
 
    dataChorusRet[0]=SYSEX_CHORUSRETURN;
2666
 
    dataChorusRet[1]=(unsigned char)getChorusReturn();
2667
 
    MusECore::MidiPlayEvent evChorusRet(0, 0, MusECore::ME_SYSEX,(const unsigned char*)dataChorusRet, 2);
2668
 
    _gui->writeEvent(evChorusRet);
2669
 
    p = MusEGlobal::plugins.find((const char*)&data[NUM_CHORUS_LIB], 
2670
 
                     (const char*)&data[NUM_CHORUS_LABEL]);
2671
 
    if(p) {
2672
 
      initPluginChorus(p);
2673
 
      ///for(int i = 0; i < _pluginIChorus->plugin()->parameter(); i++) {
2674
 
      for(int i = 0; i < (int)_pluginIChorus->plugin()->controlInPorts(); i++) {
2675
 
        float val;
2676
 
        memcpy(&val, &data[NUM_CONFIGLENGTH
2677
 
                           + sizeof(float)*(int)data[NUM_REVERB_PARAM_NBR]
2678
 
                           + sizeof(float)*i],
2679
 
               sizeof(float));
2680
 
        setChorusParam(i, (double)val);
2681
 
      }
2682
 
      char dataBuildCho;
2683
 
      dataBuildCho = SYSEX_BUILDGUICHORUS;
2684
 
      MusECore::MidiPlayEvent evSysexBuildCho(0, 0, MusECore::ME_SYSEX,
2685
 
                                (const unsigned char*)&dataBuildCho, 1);
2686
 
      _gui->writeEvent(evSysexBuildCho);
2687
 
    }
2688
 
    else _pluginIChorus = NULL;
2689
 
    //delay
2690
 
    _global.isDelayActivated = (bool)data[NUM_IS_DELAY_ON];
2691
 
    unsigned char *dataDelayAct = new unsigned char[2];
2692
 
    dataDelayAct[0]=SYSEX_DELAYACTIV;
2693
 
    dataDelayAct[1]=(unsigned char)_global.isDelayActivated;
2694
 
    MusECore::MidiPlayEvent evDelayAct(0, 0, MusECore::ME_SYSEX,(const unsigned char*)dataDelayAct, 2);
2695
 
    _gui->writeEvent(evDelayAct);    
2696
 
    setDelayReturn((int)data[NUM_DELAY_RETURN]);
2697
 
    unsigned char *dataDelayRet = new unsigned char[2];
2698
 
    dataDelayRet[0]=SYSEX_DELAYRETURN;
2699
 
    dataDelayRet[1]=(unsigned char)getDelayReturn();
2700
 
    MusECore::MidiPlayEvent evDelayRet(0, 0, MusECore::ME_SYSEX,(const unsigned char*)dataDelayRet, 2);
2701
 
    _gui->writeEvent(evDelayRet);    
2702
 
    //initPluginDelay(MusEGlobal::plugins.find("pandelay", "pandelay"));
2703
 
    float delayfloat;
2704
 
    memcpy(&delayfloat, &data[NUM_DELAY_BPM], sizeof(float));
2705
 
    setDelayBPM(delayfloat);
2706
 
    char dataDelayBPM[sizeof(float)+1];
2707
 
    dataDelayBPM[0] = SYSEX_DELAYBPM;
2708
 
    memcpy(&dataDelayBPM[1], &delayfloat, sizeof(float));
2709
 
    MusECore::MidiPlayEvent evSysexDelayBPM(0, 0, MusECore::ME_SYSEX,
2710
 
                              (const unsigned char*)dataDelayBPM,
2711
 
                              sizeof(float)+1);
2712
 
    _gui->writeEvent(evSysexDelayBPM);
2713
 
    memcpy(&delayfloat, &data[NUM_DELAY_BEATRATIO], sizeof(float));
2714
 
    setDelayBeatRatio(delayfloat);
2715
 
    char dataDelayBeatRatio[sizeof(float)+1];
2716
 
    dataDelayBeatRatio[0] = SYSEX_DELAYBEATRATIO;
2717
 
    memcpy(&dataDelayBeatRatio[1], &delayfloat, sizeof(float));
2718
 
    MusECore::MidiPlayEvent evSysexDelayBeatRatio(0, 0, MusECore::ME_SYSEX,
2719
 
                                    (const unsigned char*)dataDelayBeatRatio,
2720
 
                                    sizeof(float)+1);
2721
 
    _gui->writeEvent(evSysexDelayBeatRatio);
2722
 
    memcpy(&delayfloat, &data[NUM_DELAY_FEEDBACK], sizeof(float));
2723
 
    setDelayFeedback(delayfloat);
2724
 
    char dataDelayFeedback[sizeof(float)+1];
2725
 
    dataDelayFeedback[0] = SYSEX_DELAYFEEDBACK;
2726
 
    memcpy(&dataDelayFeedback[1], &delayfloat, sizeof(float));
2727
 
    MusECore::MidiPlayEvent evSysexDelayFeedback(0, 0, MusECore::ME_SYSEX,
2728
 
                                   (const unsigned char*)dataDelayFeedback,
2729
 
                                   sizeof(float)+1);
2730
 
    _gui->writeEvent(evSysexDelayFeedback);
2731
 
    memcpy(&delayfloat, &data[NUM_DELAY_LFO_FREQ], sizeof(float));
2732
 
    setDelayLFOFreq(delayfloat);
2733
 
    char dataDelayLFOFreq[sizeof(float)+1];
2734
 
    dataDelayLFOFreq[0] = SYSEX_DELAYLFOFREQ;
2735
 
    memcpy(&dataDelayLFOFreq[1], &delayfloat, sizeof(float));
2736
 
    MusECore::MidiPlayEvent evSysexDelayLFOFreq(0, 0, MusECore::ME_SYSEX,
2737
 
                                  (const unsigned char*)dataDelayLFOFreq,
2738
 
                                  sizeof(float)+1);
2739
 
    _gui->writeEvent(evSysexDelayLFOFreq);
2740
 
    memcpy(&delayfloat, &data[NUM_DELAY_LFO_DEPTH], sizeof(float));
2741
 
    setDelayLFODepth(delayfloat);
2742
 
    char dataDelayLFODepth[sizeof(float)+1];
2743
 
    dataDelayLFODepth[0] = SYSEX_DELAYLFODEPTH;
2744
 
    memcpy(&dataDelayLFODepth[1], &delayfloat, sizeof(float));
2745
 
    MusECore::MidiPlayEvent evSysexDelayLFODepth(0, 0, MusECore::ME_SYSEX,
2746
 
                                   (const unsigned char*)dataDelayLFODepth,
2747
 
                                   sizeof(float)+1);
2748
 
    _gui->writeEvent(evSysexDelayLFODepth);
2749
 
 
2750
 
    //load the set compressed
2751
 
    int offset =
2752
 
      NUM_CONFIGLENGTH 
2753
 
      + sizeof(float)*(int)data[NUM_REVERB_PARAM_NBR]
2754
 
      + sizeof(float)*(int)data[NUM_CHORUS_PARAM_NBR];
2755
 
    QByteArray baComp = QByteArray((const char*)&data[offset], length-offset);
2756
 
    
2757
 
    //uncompress the set
2758
 
    QByteArray baUncomp = qUncompress(baComp);
2759
 
 
2760
 
    //save the set in a temporary file and
2761
 
    // read the XML file and create DOM tree
2762
 
    QTemporaryFile file;
2763
 
    file.open();
2764
 
    file.write(baUncomp);
2765
 
    QDomDocument domTree;
2766
 
    file.reset(); //seek the start of the file
2767
 
    domTree.setContent(&file);
2768
 
    file.close();
2769
 
    QDomNode node = domTree.documentElement();
2770
 
    
2771
 
    while (!node.isNull()) {
2772
 
      QDomElement e = node.toElement();
2773
 
      if (e.isNull())
2774
 
        continue;
2775
 
      if (e.tagName() == "deicsOnzeSet") {
2776
 
        QString version = e.attribute(QString("version"));
2777
 
        if (version == "1.0") {
2778
 
          for(int c = 0; c < NBRCHANNELS; c++) _preset[c]=_initialPreset;
2779
 
          //read the set
2780
 
          if((bool)data[NUM_SAVEONLYUSED]) {
2781
 
            //printf("Mini\n");
2782
 
            //updateSaveOnlyUsed(true);
2783
 
          }
2784
 
          else {
2785
 
            //printf("Huge\n");
2786
 
            while(!_set->_categoryVector.empty())
2787
 
              delete(*_set->_categoryVector.begin());
2788
 
            //updateSaveOnlyUsed(false);
2789
 
          }
2790
 
          _set->readSet(node.firstChild());
2791
 
          //display load preset
2792
 
          //setSet();
2793
 
        }
2794
 
        else printf("Wrong set version : %s\n",
2795
 
                    version.toLatin1().constData());
2796
 
      }
2797
 
      node = node.nextSibling();
2798
 
    }
2799
 
    //send sysex to the gui to load the set (actually not because it doesn't
2800
 
    //work -the code is just zapped in the middle???-, so it is done above
2801
 
    //int dL=2+baUncomp.size();
2802
 
    int dL = 2;
2803
 
    char dataSend[dL];
2804
 
    dataSend[0]=SYSEX_LOADSET;
2805
 
    dataSend[1]=data[NUM_SAVEONLYUSED];
2806
 
    //for(int i=2; i<dL; i++) dataSend[i]=baUncop.at(i-2);
2807
 
    MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX,(const unsigned char*)dataSend, dL);
2808
 
    _gui->writeEvent(evSysex);
2809
 
 
2810
 
    //select programs per channel
2811
 
    for(int c = 0; c < NBRCHANNELS; c++) {
2812
 
      int hbank=(int)data[NUM_CURRENTHBANK+c];
2813
 
      int lbank=(int)data[NUM_CURRENTLBANK+c];
2814
 
      int prog=(int)data[NUM_CURRENTPROG+c];
2815
 
      programSelect(c, hbank, lbank, prog);
2816
 
      int val=prog+(lbank<<8)+(hbank<<16);
2817
 
      MusECore::MidiPlayEvent evProgSel(0, 0, c, MusECore::ME_CONTROLLER, MusECore::CTRL_PROGRAM, val);
2818
 
      _gui->writeEvent(evProgSel);
2819
 
    }
2820
 
 
2821
 
  }
 
2470
  //if(data[3]!=SYSEX_INIT_DATA_VERSION || data[3]!=SYSEX_INIT_DATA_VERSION_2)
 
2471
  if(data[3]!=SYSEX_INIT_DATA_VERSION)
 
2472
  {
 
2473
    printf("Error: DeicsOnze::parseInitData: unknown sysex init data version:%d\n", data[3]);
 
2474
    return;
 
2475
  }
 
2476
  
 
2477
  //load global parameters
 
2478
  //master volume
 
2479
  setMasterVol(data[NUM_MASTERVOL]);
 
2480
  unsigned char *dataMasterVol = new unsigned char[2];
 
2481
  dataMasterVol[0]=SYSEX_MASTERVOL;
 
2482
  dataMasterVol[1]=(unsigned char) getMasterVol();
 
2483
  MusECore::MidiPlayEvent
 
2484
    evMasterVol(0, 0, MusECore::ME_SYSEX, (const unsigned char*)dataMasterVol, 2);
 
2485
  _gui->writeEvent(evMasterVol);
 
2486
  //channel configuration
 
2487
  for(int c = 0; c < NBRCHANNELS; c++) {
 
2488
    //isEnable
 
2489
    setChannelEnable(c, data[NUM_CHANNEL_ENABLE + c]);
 
2490
    MusECore::MidiPlayEvent
 
2491
      evChEnable(0, 0, c, MusECore::ME_CONTROLLER,
 
2492
                  CTRL_CHANNELENABLE, data[NUM_CHANNEL_ENABLE + c]);
 
2493
    _gui->writeEvent(evChEnable);
 
2494
    //nbrVoices
 
2495
    setNbrVoices(c, data[NUM_NBRVOICES + c]);
 
2496
    MusECore::MidiPlayEvent
 
2497
      evNbrVoices(0, 0, c,MusECore::ME_CONTROLLER,CTRL_NBRVOICES, data[NUM_NBRVOICES + c]);
 
2498
    _gui->writeEvent(evNbrVoices);
 
2499
    //channel volume
 
2500
    setChannelVol(c, data[NUM_CHANNEL_VOL + c]);
 
2501
    MusECore::MidiPlayEvent
 
2502
      evChVol(0, 0, c, MusECore::ME_CONTROLLER,
 
2503
              CTRL_CHANNELVOLUME, data[NUM_CHANNEL_VOL + c]);
 
2504
    _gui->writeEvent(evChVol);
 
2505
    //channel pan
 
2506
    setChannelPan(c, data[NUM_CHANNEL_PAN + c]);
 
2507
    MusECore::MidiPlayEvent
 
2508
      evChPan(0, 0, c, MusECore::ME_CONTROLLER, CTRL_CHANNELPAN,
 
2509
              data[NUM_CHANNEL_PAN + c]);
 
2510
    _gui->writeEvent(evChPan);
 
2511
    if(getChannelEnable(c)) applyChannelAmp(c);
 
2512
    //channel detune
 
2513
    setChannelDetune(c, data[NUM_CHANNEL_DETUNE + c]-MAXCHANNELDETUNE);
 
2514
    MusECore::MidiPlayEvent
 
2515
      evChDetune(0, 0, c, MusECore::ME_CONTROLLER, CTRL_CHANNELDETUNE,
 
2516
                  data[NUM_CHANNEL_DETUNE + c]-MAXCHANNELDETUNE);
 
2517
    _gui->writeEvent(evChDetune);
 
2518
    //channel brightness
 
2519
    setChannelBrightness(c,
 
2520
                          data[NUM_CHANNEL_BRIGHTNESS + 2*c]
 
2521
                          + data[NUM_CHANNEL_BRIGHTNESS + 2*c + 1] * 256);
 
2522
    MusECore::MidiPlayEvent
 
2523
      evChBrightness(0, 0, c, MusECore::ME_CONTROLLER,
 
2524
                      CTRL_FINEBRIGHTNESS, getChannelBrightness(c));
 
2525
    _gui->writeEvent(evChBrightness);
 
2526
    //channel modulation
 
2527
    setChannelModulation(c, data[NUM_CHANNEL_MODULATION + c]);
 
2528
    MusECore::MidiPlayEvent
 
2529
      evChMod(0, 0, c, MusECore::ME_CONTROLLER,
 
2530
              MusECore::CTRL_MODULATION, data[NUM_CHANNEL_MODULATION + c]);
 
2531
    _gui->writeEvent(evChMod);
 
2532
    //channel attack
 
2533
    setChannelAttack(c, data[NUM_CHANNEL_ATTACK + c]);
 
2534
    MusECore::MidiPlayEvent
 
2535
      evChAttack(0, 0, c, MusECore::ME_CONTROLLER,
 
2536
                  MusECore::CTRL_ATTACK_TIME, data[NUM_CHANNEL_ATTACK + c]);
 
2537
    _gui->writeEvent(evChAttack);
 
2538
    //channel release
 
2539
    setChannelRelease(c, data[NUM_CHANNEL_RELEASE + c]);
 
2540
    MusECore::MidiPlayEvent
 
2541
      evChRelease(0, 0, c, MusECore::ME_CONTROLLER,
 
2542
                  MusECore::CTRL_RELEASE_TIME, data[NUM_CHANNEL_RELEASE + c]);
 
2543
    _gui->writeEvent(evChRelease);
 
2544
    //channel reverb
 
2545
    setChannelReverb(c, data[NUM_CHANNEL_REVERB + c]);
 
2546
    MusECore::MidiPlayEvent
 
2547
      evChReverb(0, 0, c, MusECore::ME_CONTROLLER,
 
2548
                  MusECore::CTRL_REVERB_SEND, data[NUM_CHANNEL_REVERB + c]);
 
2549
    _gui->writeEvent(evChReverb);
 
2550
    //channel chorus
 
2551
    setChannelChorus(c, data[NUM_CHANNEL_CHORUS + c]);
 
2552
    MusECore::MidiPlayEvent
 
2553
      evChChorus(0, 0, c, MusECore::ME_CONTROLLER,
 
2554
                  MusECore::CTRL_CHORUS_SEND, data[NUM_CHANNEL_CHORUS + c]);
 
2555
    _gui->writeEvent(evChChorus);
 
2556
    //channel delay
 
2557
    setChannelDelay(c, data[NUM_CHANNEL_DELAY + c]);
 
2558
    MusECore::MidiPlayEvent
 
2559
      evChDelay(0, 0, c, MusECore::ME_CONTROLLER,
 
2560
                MusECore::CTRL_VARIATION_SEND, data[NUM_CHANNEL_DELAY + c]);
 
2561
    _gui->writeEvent(evChDelay);
 
2562
  }
 
2563
  //load configuration
 
2564
  _saveConfig = (bool)data[NUM_SAVECONFIG];
 
2565
  unsigned char *dataSaveConfig = new unsigned char[2];
 
2566
  dataSaveConfig[0]=SYSEX_SAVECONFIG;
 
2567
  dataSaveConfig[1]=(unsigned char)_saveConfig;
 
2568
  MusECore::MidiPlayEvent
 
2569
    evSaveConfig(0, 0, MusECore::ME_SYSEX, (const unsigned char*)dataSaveConfig, 2);
 
2570
  _gui->writeEvent(evSaveConfig);
 
2571
  if(_saveConfig) {
 
2572
    //saveOnlyUsed
 
2573
    _saveOnlyUsed = (bool)data[NUM_SAVEONLYUSED];
 
2574
    unsigned char *dataSaveOnlyUsed = new unsigned char[2];
 
2575
    dataSaveOnlyUsed[0]=SYSEX_SAVEONLYUSED;
 
2576
    dataSaveOnlyUsed[1]=(unsigned char)_saveOnlyUsed;
 
2577
    MusECore::MidiPlayEvent
 
2578
      evSaveOnlyUsed(0, 0, MusECore::ME_SYSEX, (const unsigned char*)dataSaveOnlyUsed, 2);
 
2579
    _gui->writeEvent(evSaveOnlyUsed);
 
2580
    //colors
 
2581
    unsigned char dataColorGui[COLORSYSEXLENGTH+1];
 
2582
    dataColorGui[0]=SYSEX_COLORGUI;
 
2583
    for (int i=0; i<COLORSYSEXLENGTH; i++)
 
2584
      dataColorGui[i+1]=data[NUM_RED_TEXT+i];
 
2585
    MusECore::MidiPlayEvent evSysexColor(0, 0, MusECore::ME_SYSEX, (const unsigned char*)dataColorGui,
 
2586
                            COLORSYSEXLENGTH+1);
 
2587
    _gui->writeEvent(evSysexColor);
 
2588
    //quality
 
2589
    unsigned char dataQuality[2];
 
2590
    dataQuality[0]=SYSEX_QUALITY;
 
2591
    dataQuality[1]=data[NUM_QUALITY];
 
2592
    setQuality((Quality)data[NUM_QUALITY]);
 
2593
    MusECore::MidiPlayEvent evQuality(0, 0, MusECore::ME_SYSEX, (const unsigned char*)dataQuality, 2);
 
2594
    _gui->writeEvent(evQuality);
 
2595
    //filter
 
2596
    unsigned char dataFilter[2];
 
2597
    dataFilter[0]=SYSEX_FILTER;
 
2598
    dataFilter[1]=data[NUM_FILTER];
 
2599
    setFilter((bool)data[NUM_FILTER]);
 
2600
    MusECore::MidiPlayEvent evFilter(0, 0, MusECore::ME_SYSEX, (const unsigned char*)dataFilter, 2);
 
2601
    _gui->writeEvent(evFilter);
 
2602
    //font size
 
2603
    unsigned char dataFontSize[2];
 
2604
    dataFontSize[0]=SYSEX_FONTSIZE;
 
2605
    dataFontSize[1]=data[NUM_FONTSIZE];
 
2606
    MusECore::MidiPlayEvent evFontSize(0, 0, MusECore::ME_SYSEX, (const unsigned char*)dataFontSize, 2);
 
2607
    _gui->writeEvent(evFontSize);
 
2608
    //load init set
 
2609
    unsigned char dataIsInitSet[2];
 
2610
    dataIsInitSet[0]=SYSEX_ISINITSET;
 
2611
    dataIsInitSet[1]=data[NUM_ISINITSET];
 
2612
    MusECore::MidiPlayEvent evIsInitSet(0, 0, MusECore::ME_SYSEX,
 
2613
                          (const unsigned char*)dataIsInitSet, 2);
 
2614
    _gui->writeEvent(evIsInitSet);
 
2615
    unsigned char dataInitSetPath[1+MAXSTRLENGTHINITSETPATH];
 
2616
    dataInitSetPath[0]=SYSEX_INITSETPATH;
 
2617
    for(int a = 0; a < MAXSTRLENGTHINITSETPATH; a++)
 
2618
      dataInitSetPath[a+1] = data[a+NUM_INITSETPATH];
 
2619
    MusECore::MidiPlayEvent evInitSetPath(0, 0, MusECore::ME_SYSEX,(const unsigned char*)dataInitSetPath,
 
2620
                            1+MAXSTRLENGTHINITSETPATH);
 
2621
    _gui->writeEvent(evInitSetPath);
 
2622
    //load background pix
 
2623
    unsigned char dataIsBackgroundPix[2];
 
2624
    dataIsBackgroundPix[0]=SYSEX_ISBACKGROUNDPIX;
 
2625
    dataIsBackgroundPix[1]=data[NUM_ISBACKGROUNDPIX];
 
2626
    MusECore::MidiPlayEvent evIsBackgroundPix(0, 0, MusECore::ME_SYSEX,
 
2627
                          (const unsigned char*)dataIsBackgroundPix, 2);
 
2628
    _gui->writeEvent(evIsBackgroundPix);
 
2629
    unsigned char dataBackgroundPixPath[1+MAXSTRLENGTHBACKGROUNDPIXPATH];
 
2630
    dataBackgroundPixPath[0]=SYSEX_BACKGROUNDPIXPATH;
 
2631
    for(int a = 0; a < MAXSTRLENGTHBACKGROUNDPIXPATH; a++)
 
2632
      dataBackgroundPixPath[a+1] = data[a+NUM_BACKGROUNDPIXPATH];
 
2633
    MusECore::MidiPlayEvent evBackgroundPixPath(0, 0, MusECore::ME_SYSEX,
 
2634
                            (const unsigned char*)dataBackgroundPixPath,
 
2635
                            1+MAXSTRLENGTHBACKGROUNDPIXPATH);
 
2636
    _gui->writeEvent(evBackgroundPixPath);
 
2637
  }
 
2638
  else _gui->saveConfigCheckBox->setChecked(false);
 
2639
  //load FX
 
2640
  //reverb
 
2641
  _global.isReverbActivated = (bool)data[NUM_IS_REVERB_ON];
 
2642
  unsigned char *dataReverbAct = new unsigned char[2];
 
2643
  dataReverbAct[0]=SYSEX_REVERBACTIV;
 
2644
  dataReverbAct[1]=(unsigned char)_global.isReverbActivated;
 
2645
  MusECore::MidiPlayEvent evReverbAct(0, 0, MusECore::ME_SYSEX,(const unsigned char*)dataReverbAct, 2);
 
2646
  _gui->writeEvent(evReverbAct);
 
2647
  setReverbReturn((int)data[NUM_REVERB_RETURN]);
 
2648
  unsigned char *dataReverbRet = new unsigned char[2];
 
2649
  dataReverbRet[0]=SYSEX_REVERBRETURN;
 
2650
  dataReverbRet[1]=(unsigned char)getReverbReturn();
 
2651
  MusECore::MidiPlayEvent evReverbRet(0, 0, MusECore::ME_SYSEX,(const unsigned char*)dataReverbRet, 2);
 
2652
  _gui->writeEvent(evReverbRet);
 
2653
  MusECore::Plugin* p;
 
2654
  p = MusEGlobal::plugins.find((const char*)&data[NUM_REVERB_LIB],
 
2655
                    (const char*)&data[NUM_REVERB_LABEL]);
 
2656
  if(p) {
 
2657
    initPluginReverb(p);
 
2658
    for(int i = 0; i < (int)_pluginIReverb->plugin()->controlInPorts(); i++) {
 
2659
      float val;
 
2660
      //memcpy(&val, &data[(data[3] == SYSEX_INIT_DATA_VERSION_2 ? NUM_CONFIGLENGTH : NUM_DELAY_WET_DRY_MIX)  // HACK
 
2661
      memcpy(&val, &data[NUM_CONFIGLENGTH
 
2662
                         + sizeof(float)*i], sizeof(float));
 
2663
      _pluginIReverb->putParam(i, val);
 
2664
    }
 
2665
    char dataBuildRev;
 
2666
    dataBuildRev = SYSEX_BUILDGUIREVERB;
 
2667
    MusECore::MidiPlayEvent evSysexBuildRev(0, 0, MusECore::ME_SYSEX,
 
2668
                              (const unsigned char*)&dataBuildRev, 1);
 
2669
    _gui->writeEvent(evSysexBuildRev);
 
2670
  }
 
2671
  else _pluginIReverb = NULL;
 
2672
  //chorus
 
2673
  _global.isChorusActivated = (bool)data[NUM_IS_CHORUS_ON];
 
2674
  unsigned char *dataChorusAct = new unsigned char[2];
 
2675
  dataChorusAct[0]=SYSEX_CHORUSACTIV;
 
2676
  dataChorusAct[1]=(unsigned char)_global.isChorusActivated;
 
2677
  MusECore::MidiPlayEvent evChorusAct(0, 0, MusECore::ME_SYSEX,(const unsigned char*)dataChorusAct, 2);
 
2678
  _gui->writeEvent(evChorusAct);
 
2679
  setChorusReturn((int)data[NUM_CHORUS_RETURN]);
 
2680
  unsigned char *dataChorusRet = new unsigned char[2];
 
2681
  dataChorusRet[0]=SYSEX_CHORUSRETURN;
 
2682
  dataChorusRet[1]=(unsigned char)getChorusReturn();
 
2683
  MusECore::MidiPlayEvent evChorusRet(0, 0, MusECore::ME_SYSEX,(const unsigned char*)dataChorusRet, 2);
 
2684
  _gui->writeEvent(evChorusRet);
 
2685
  p = MusEGlobal::plugins.find((const char*)&data[NUM_CHORUS_LIB],
 
2686
                    (const char*)&data[NUM_CHORUS_LABEL]);
 
2687
  if(p) {
 
2688
    initPluginChorus(p);
 
2689
    for(int i = 0; i < (int)_pluginIChorus->plugin()->controlInPorts(); i++) {
 
2690
      float val;
 
2691
      //memcpy(&val, &data[(data[3] == SYSEX_INIT_DATA_VERSION_2 ? NUM_CONFIGLENGTH : NUM_DELAY_WET_DRY_MIX)  // HACK
 
2692
      memcpy(&val, &data[NUM_CONFIGLENGTH
 
2693
                          + sizeof(float)*(int)data[NUM_REVERB_PARAM_NBR]
 
2694
                          + sizeof(float)*i],
 
2695
              sizeof(float));
 
2696
      _pluginIChorus->putParam(i, val);
 
2697
    }
 
2698
    char dataBuildCho;
 
2699
    dataBuildCho = SYSEX_BUILDGUICHORUS;
 
2700
    MusECore::MidiPlayEvent evSysexBuildCho(0, 0, MusECore::ME_SYSEX,
 
2701
                              (const unsigned char*)&dataBuildCho, 1);
 
2702
    _gui->writeEvent(evSysexBuildCho);
 
2703
  }
 
2704
  else _pluginIChorus = NULL;
 
2705
  //delay
 
2706
  _global.isDelayActivated = (bool)data[NUM_IS_DELAY_ON];
 
2707
  unsigned char *dataDelayAct = new unsigned char[2];
 
2708
  dataDelayAct[0]=SYSEX_DELAYACTIV;
 
2709
  dataDelayAct[1]=(unsigned char)_global.isDelayActivated;
 
2710
  MusECore::MidiPlayEvent evDelayAct(0, 0, MusECore::ME_SYSEX,(const unsigned char*)dataDelayAct, 2);
 
2711
  _gui->writeEvent(evDelayAct);
 
2712
  setDelayReturn((int)data[NUM_DELAY_RETURN]);
 
2713
  unsigned char *dataDelayRet = new unsigned char[2];
 
2714
  dataDelayRet[0]=SYSEX_DELAYRETURN;
 
2715
  dataDelayRet[1]=(unsigned char)getDelayReturn();
 
2716
  MusECore::MidiPlayEvent evDelayRet(0, 0, MusECore::ME_SYSEX,(const unsigned char*)dataDelayRet, 2);
 
2717
  _gui->writeEvent(evDelayRet);
 
2718
  //initPluginDelay(MusEGlobal::plugins.find("pandelay", "pandelay"));
 
2719
  float delayfloat;
 
2720
  memcpy(&delayfloat, &data[NUM_DELAY_BPM], sizeof(float));
 
2721
  //setDelayBPM(delayfloat);
 
2722
  if(_pluginIDelay) _pluginIDelay->putParam(0, delayfloat);
 
2723
  char dataDelayBPM[sizeof(float)+1];
 
2724
  dataDelayBPM[0] = SYSEX_DELAYBPM;
 
2725
  memcpy(&dataDelayBPM[1], &delayfloat, sizeof(float));
 
2726
  MusECore::MidiPlayEvent evSysexDelayBPM(0, 0, MusECore::ME_SYSEX,
 
2727
                            (const unsigned char*)dataDelayBPM,
 
2728
                            sizeof(float)+1);
 
2729
  _gui->writeEvent(evSysexDelayBPM);
 
2730
  memcpy(&delayfloat, &data[NUM_DELAY_BEATRATIO], sizeof(float));
 
2731
  //setDelayBeatRatio(delayfloat);
 
2732
  if(_pluginIDelay) _pluginIDelay->putParam(1, delayfloat);
 
2733
  char dataDelayBeatRatio[sizeof(float)+1];
 
2734
  dataDelayBeatRatio[0] = SYSEX_DELAYBEATRATIO;
 
2735
  memcpy(&dataDelayBeatRatio[1], &delayfloat, sizeof(float));
 
2736
  MusECore::MidiPlayEvent evSysexDelayBeatRatio(0, 0, MusECore::ME_SYSEX,
 
2737
                                  (const unsigned char*)dataDelayBeatRatio,
 
2738
                                  sizeof(float)+1);
 
2739
  _gui->writeEvent(evSysexDelayBeatRatio);
 
2740
  memcpy(&delayfloat, &data[NUM_DELAY_FEEDBACK], sizeof(float));
 
2741
  //setDelayFeedback(delayfloat);
 
2742
  if(_pluginIDelay) _pluginIDelay->putParam(2, delayfloat);
 
2743
  char dataDelayFeedback[sizeof(float)+1];
 
2744
  dataDelayFeedback[0] = SYSEX_DELAYFEEDBACK;
 
2745
  memcpy(&dataDelayFeedback[1], &delayfloat, sizeof(float));
 
2746
  MusECore::MidiPlayEvent evSysexDelayFeedback(0, 0, MusECore::ME_SYSEX,
 
2747
                                  (const unsigned char*)dataDelayFeedback,
 
2748
                                  sizeof(float)+1);
 
2749
  _gui->writeEvent(evSysexDelayFeedback);
 
2750
  memcpy(&delayfloat, &data[NUM_DELAY_LFO_FREQ], sizeof(float));
 
2751
  //setDelayLFOFreq(delayfloat);
 
2752
  if(_pluginIDelay) _pluginIDelay->putParam(3, delayfloat);
 
2753
  char dataDelayLFOFreq[sizeof(float)+1];
 
2754
  dataDelayLFOFreq[0] = SYSEX_DELAYLFOFREQ;
 
2755
  memcpy(&dataDelayLFOFreq[1], &delayfloat, sizeof(float));
 
2756
  MusECore::MidiPlayEvent evSysexDelayLFOFreq(0, 0, MusECore::ME_SYSEX,
 
2757
                                (const unsigned char*)dataDelayLFOFreq,
 
2758
                                sizeof(float)+1);
 
2759
  _gui->writeEvent(evSysexDelayLFOFreq);
 
2760
  memcpy(&delayfloat, &data[NUM_DELAY_LFO_DEPTH], sizeof(float));
 
2761
  //setDelayLFODepth(delayfloat);
 
2762
  if(_pluginIDelay) _pluginIDelay->putParam(4, delayfloat);
 
2763
  char dataDelayLFODepth[sizeof(float)+1];
 
2764
  dataDelayLFODepth[0] = SYSEX_DELAYLFODEPTH;
 
2765
  memcpy(&dataDelayLFODepth[1], &delayfloat, sizeof(float));
 
2766
  MusECore::MidiPlayEvent evSysexDelayLFODepth(0, 0, MusECore::ME_SYSEX,
 
2767
                                  (const unsigned char*)dataDelayLFODepth,
 
2768
                                  sizeof(float)+1);
 
2769
  _gui->writeEvent(evSysexDelayLFODepth);
 
2770
 
 
2771
//   if(data[3] == SYSEX_INIT_DATA_VERSION_2)
 
2772
//   {
 
2773
//     memcpy(&delayfloat, &data[NUM_DELAY_WET_DRY_MIX], sizeof(float));
 
2774
//     //setDelayLFODepth(delayfloat);
 
2775
//     if(_pluginIDelay) _pluginIDelay->putParam(5, delayfloat);
 
2776
//     char dataDelayWetDryMix[sizeof(float)+1];
 
2777
//     dataDelayWetDryMix[0] = SYSEX_DELAYWETDRYMIX;
 
2778
//     memcpy(&dataDelayWetDryMix[1], &delayfloat, sizeof(float));
 
2779
//     MusECore::MidiPlayEvent evSysexDelayWetDryMix(0, 0, MusECore::ME_SYSEX,
 
2780
//                                     (const unsigned char*)dataDelayWetDryMix,
 
2781
//                                     sizeof(float)+1);
 
2782
//     _gui->writeEvent(evSysexDelayWetDryMix);
 
2783
//   }
 
2784
  
 
2785
  //load the set compressed
 
2786
  int offset =
 
2787
    //(data[3] == SYSEX_INIT_DATA_VERSION_2 ? NUM_CONFIGLENGTH : NUM_DELAY_WET_DRY_MIX)  // HACK
 
2788
    NUM_CONFIGLENGTH
 
2789
    + sizeof(float)*(int)data[NUM_REVERB_PARAM_NBR]
 
2790
    + sizeof(float)*(int)data[NUM_CHORUS_PARAM_NBR];
 
2791
  QByteArray baComp = QByteArray((const char*)&data[offset], length-offset);
 
2792
 
 
2793
  //uncompress the set
 
2794
  QByteArray baUncomp = qUncompress(baComp);
 
2795
 
 
2796
  //save the set in a temporary file and
 
2797
  // read the XML file and create DOM tree
 
2798
  QTemporaryFile file;
 
2799
  file.open();
 
2800
  file.write(baUncomp);
 
2801
  QDomDocument domTree;
 
2802
  file.reset(); //seek the start of the file
 
2803
  domTree.setContent(&file);
 
2804
  file.close();
 
2805
  QDomNode node = domTree.documentElement();
 
2806
 
 
2807
  while (!node.isNull()) {
 
2808
    QDomElement e = node.toElement();
 
2809
    if (e.isNull())
 
2810
      continue;
 
2811
    if (e.tagName() == "deicsOnzeSet") {
 
2812
      QString version = e.attribute(QString("version"));
 
2813
      if (version == "1.0") {
 
2814
        for(int c = 0; c < NBRCHANNELS; c++) _preset[c]=_initialPreset;
 
2815
        //read the set
 
2816
        if((bool)data[NUM_SAVEONLYUSED]) {
 
2817
          //printf("Mini\n");
 
2818
          //updateSaveOnlyUsed(true);
 
2819
        }
 
2820
        else {
 
2821
          //printf("Huge\n");
 
2822
          while(!_set->_categoryVector.empty())
 
2823
            delete(*_set->_categoryVector.begin());
 
2824
          //updateSaveOnlyUsed(false);
 
2825
        }
 
2826
        _set->readSet(node.firstChild());
 
2827
        //display load preset
 
2828
        //setSet();
 
2829
      }
 
2830
      else printf("Wrong set version : %s\n",
 
2831
                  version.toLatin1().constData());
 
2832
    }
 
2833
    node = node.nextSibling();
 
2834
  }
 
2835
  //send sysex to the gui to load the set (actually not because it doesn't
 
2836
  //work -the code is just zapped in the middle???-, so it is done above
 
2837
  //int dL=2+baUncomp.size();
 
2838
  int dL = 2;
 
2839
  char dataSend[dL];
 
2840
  dataSend[0]=SYSEX_LOADSET;
 
2841
  dataSend[1]=data[NUM_SAVEONLYUSED];
 
2842
  //for(int i=2; i<dL; i++) dataSend[i]=baUncop.at(i-2);
 
2843
  MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX,(const unsigned char*)dataSend, dL);
 
2844
  _gui->writeEvent(evSysex);
 
2845
 
 
2846
  //select programs per channel
 
2847
  for(int c = 0; c < NBRCHANNELS; c++) {
 
2848
    int hbank=(int)data[NUM_CURRENTHBANK+c];
 
2849
    int lbank=(int)data[NUM_CURRENTLBANK+c];
 
2850
    int prog=(int)data[NUM_CURRENTPROG+c];
 
2851
    programSelect(c, hbank, lbank, prog);
 
2852
    int val=prog+(lbank<<8)+(hbank<<16);
 
2853
    MusECore::MidiPlayEvent evProgSel(0, 0, c, MusECore::ME_CONTROLLER, MusECore::CTRL_PROGRAM, val);
 
2854
    _gui->writeEvent(evProgSel);
 
2855
  }
 
2856
 
2822
2857
}
2823
2858
//---------------------------------------------------------
2824
2859
// sysex
2840
2875
  
2841
2876
  int l = length - 2;
2842
2877
  const unsigned char* d = data + 2;
2843
 
  ///int cmd=data[0];
2844
2878
  int cmd=d[0];
2845
2879
  int index;
2846
2880
  float f;
2850
2884
    //parseInitData(l, d);
2851
2885
    break;
2852
2886
  case SYSEX_MASTERVOL:
2853
 
    ///setMasterVol((int)data[1]);
2854
2887
    setMasterVol((int)d[1]);
2855
2888
    if(!fromGui) {
2856
 
      ///MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, data, length);
2857
2889
      MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, d, l);
2858
2890
      _gui->writeEvent(evSysex);
2859
2891
    }
2860
2892
    break;
2861
2893
    //case SYSEX_CHANNELNUM:
2862
 
    ///_global.channelNum = (char)data[1];
2863
2894
    //_global.channelNum = (char)d[1];
2864
2895
    //if(!fromGui) {
2865
 
    ///  MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, data, length);
2866
2896
    //  MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, d, l);
2867
2897
    //  _gui->writeEvent(evSysex);
2868
2898
    //}
2869
2899
    //break;
2870
2900
  case SYSEX_QUALITY:
2871
 
    ///setQuality((Quality)data[1]);
2872
2901
    setQuality((Quality)d[1]);
2873
2902
    if(!fromGui) {
2874
 
      ///MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, data, length);
2875
2903
      MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, d, l);
2876
2904
      _gui->writeEvent(evSysex);
2877
2905
    }
2878
2906
    break;
2879
2907
  case SYSEX_FILTER:
2880
 
    ///setFilter((bool)data[1]);
2881
2908
    setFilter((bool)d[1]);
2882
2909
    if(!fromGui) {
2883
 
      ///MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, data, length);
2884
2910
      MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, d, l);
2885
2911
      _gui->writeEvent(evSysex);
2886
2912
    }
2887
2913
    break;
2888
2914
  case SYSEX_FONTSIZE:
2889
 
    ///_global.fontSize = (int)data[1];
2890
2915
    _global.fontSize = (int)d[1];
2891
2916
    if(!fromGui) {
2892
 
      ///MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, data, length);
2893
2917
      MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, d, l);
2894
2918
      _gui->writeEvent(evSysex);
2895
2919
    }
2896
2920
    break;
2897
2921
  case SYSEX_SAVECONFIG:
2898
 
    ///_saveConfig = (bool)data[1];
2899
2922
    _saveConfig = (bool)d[1];
2900
2923
    if(!fromGui) {
2901
 
      ///MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, data, length);
2902
2924
      MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, d, l);
2903
2925
      _gui->writeEvent(evSysex);
2904
2926
    }
2905
2927
    break;
2906
2928
  case SYSEX_SAVEONLYUSED:
2907
 
    ///_saveOnlyUsed = (bool)data[1];
2908
2929
    _saveOnlyUsed = (bool)d[1];
2909
2930
    if(!fromGui) {
2910
 
      ///MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, data, length);
2911
2931
      MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, d, l);
2912
2932
      _gui->writeEvent(evSysex);
2913
2933
    }
2914
2934
    break;
2915
2935
  case SYSEX_ISINITSET:
2916
 
    ///_isInitSet = (bool)data[1];
2917
2936
    _isInitSet = (bool)d[1];
2918
2937
    if(!fromGui) {
2919
 
      ///MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, data, length);
2920
2938
      MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, d, l);
2921
2939
      _gui->writeEvent(evSysex);
2922
2940
    }
2923
2941
    break;
2924
2942
  case SYSEX_INITSETPATH:
2925
 
    ///_initSetPath = (char*)&data[1];
2926
2943
    _initSetPath = (char*)&d[1];
2927
2944
    if(!fromGui) {
2928
 
      ///MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, data, length);
2929
2945
      MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, d, l);
2930
2946
      _gui->writeEvent(evSysex);
2931
2947
    }
2932
2948
    break;
2933
2949
  case SYSEX_ISBACKGROUNDPIX:
2934
 
    ///_isBackgroundPix = (bool)data[1];
2935
2950
    _isBackgroundPix = (bool)d[1];
2936
2951
    if(!fromGui) {
2937
 
      ///MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, data, length);
2938
2952
      MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, d, l);
2939
2953
      _gui->writeEvent(evSysex);
2940
2954
    }
2941
2955
    break;
2942
2956
  case SYSEX_BACKGROUNDPIXPATH:
2943
 
    ///_backgroundPixPath = (char*)&data[1];
2944
2957
    _backgroundPixPath = (char*)&d[1];
2945
2958
    if(!fromGui) {
2946
 
      ///MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, data, length);
2947
2959
      MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, d, l);
2948
2960
      _gui->writeEvent(evSysex);
2949
2961
    }
2952
2964
    resetVoices();
2953
2965
    break;
2954
2966
  case SYSEX_CHORUSACTIV:
2955
 
    ///_global.isChorusActivated = (bool)data[1];
2956
2967
    _global.isChorusActivated = (bool)d[1];
2957
2968
    if(!fromGui) {
2958
 
      ///MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, data, length);
2959
2969
      MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, d, l);
2960
2970
      _gui->writeEvent(evSysex);
2961
2971
    }
2962
2972
    break;
2963
2973
  case SYSEX_CHORUSPARAM:
2964
 
    ///index = (int)data[1];
2965
 
    ///memcpy(&f, &data[2], sizeof(float));
2966
2974
    index = (int)d[1];
2967
2975
    memcpy(&f, &d[2], sizeof(float));
2968
 
    setChorusParam(index, (double)f);
 
2976
    setChorusParam(index, f);
2969
2977
    if(!fromGui) {
2970
 
      ///MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, data, length);
2971
2978
      MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, d, l);
2972
2979
      _gui->writeEvent(evSysex);
2973
2980
    }
2974
2981
    break;       
2975
2982
  case SYSEX_REVERBACTIV:
2976
 
    ///_global.isReverbActivated = (bool)data[1];
2977
2983
    _global.isReverbActivated = (bool)d[1];
2978
2984
    if(!fromGui) {
2979
 
      ///MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, data, length);
2980
2985
      MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, d, l);
2981
2986
      _gui->writeEvent(evSysex);
2982
2987
    }
2983
2988
    break;
2984
2989
  case SYSEX_REVERBPARAM:
2985
 
    ///index = (int)data[1];
2986
 
    ///memcpy(&f, &data[2], sizeof(float));
2987
2990
    index = (int)d[1];
2988
2991
    memcpy(&f, &d[2], sizeof(float));
2989
 
    setReverbParam(index, (double)f);
 
2992
    setReverbParam(index, f);
2990
2993
    if(!fromGui) {
2991
 
      ///MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, data, length);
2992
2994
      MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, d, l);
2993
2995
      _gui->writeEvent(evSysex);
2994
2996
    }
2995
2997
    break;       
2996
2998
  case SYSEX_DELAYACTIV:
2997
 
    ///_global.isDelayActivated = (bool)data[1];
2998
2999
    _global.isDelayActivated = (bool)d[1];
2999
3000
    if(!fromGui) {
3000
 
      ///MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, data, length);
3001
3001
      MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, d, l);
3002
3002
      _gui->writeEvent(evSysex);
3003
3003
    }
3004
3004
    break;
3005
3005
  case SYSEX_CHORUSRETURN:
3006
 
    ///setChorusReturn((int)data[1]);
3007
3006
    setChorusReturn((int)d[1]);
3008
3007
    if(!fromGui) {
3009
 
      ///MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, data, length);
3010
3008
      MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, d, l);
3011
3009
      _gui->writeEvent(evSysex);
3012
3010
    }
3013
3011
    break;
3014
3012
  case SYSEX_REVERBRETURN:
3015
 
    ///setReverbReturn((int)data[1]);
3016
3013
    setReverbReturn((int)d[1]);
3017
3014
    if(!fromGui) {
3018
 
      ///MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, data, length);
3019
3015
      MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, d, l);
3020
3016
      _gui->writeEvent(evSysex);
3021
3017
    }
3022
3018
    break;
3023
3019
  case SYSEX_DELAYRETURN:
3024
 
    ///setDelayReturn((int)data[1]);
3025
3020
    setDelayReturn((int)d[1]);
3026
3021
    if(!fromGui) {
3027
 
      ///MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, data, length);
3028
3022
      MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, d, l);
3029
3023
      _gui->writeEvent(evSysex);
3030
3024
    }
3031
3025
    break;
3032
3026
  case SYSEX_SELECTREVERB:
3033
3027
    MusECore::Plugin* pluginReverb;
3034
 
    ///memcpy(&pluginReverb, &data[1], sizeof(MusECore::Plugin*));
3035
3028
    memcpy(&pluginReverb, &d[1], sizeof(MusECore::Plugin*));
3036
3029
    initPluginReverb(pluginReverb);
3037
3030
    break;
3038
3031
  case SYSEX_SELECTCHORUS:
3039
3032
    MusECore::Plugin* pluginChorus;
3040
 
    ///memcpy(&pluginChorus, &data[1], sizeof(MusECore::Plugin*));
3041
3033
    memcpy(&pluginChorus, &d[1], sizeof(MusECore::Plugin*));
3042
3034
    initPluginChorus(pluginChorus);
3043
3035
    break;
3044
3036
  case SYSEX_DELAYBPM:
3045
 
    ///memcpy(&f, &data[1], sizeof(float));
3046
3037
    memcpy(&f, &d[1], sizeof(float));
3047
3038
    setDelayBPM(f);
3048
3039
    if(!fromGui) {
3049
 
      ///MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, data, length);
3050
3040
      MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, d, l);
3051
3041
      _gui->writeEvent(evSysex);
3052
3042
    }
3053
3043
    break;    
3054
3044
  case SYSEX_DELAYBEATRATIO:
3055
 
    ///memcpy(&f, &data[1], sizeof(float));
3056
3045
    memcpy(&f, &d[1], sizeof(float));
3057
3046
    setDelayBeatRatio(f);
3058
3047
    if(!fromGui) {
3059
 
      ///MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, data, length);
3060
3048
      MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, d, l);
3061
3049
      _gui->writeEvent(evSysex);
3062
3050
    }
3063
3051
    break;    
3064
3052
  case SYSEX_DELAYFEEDBACK:
3065
 
    ///memcpy(&f, &data[1], sizeof(float));
3066
3053
    memcpy(&f, &d[1], sizeof(float));
3067
3054
    setDelayFeedback(f);
3068
3055
    if(!fromGui) {
3069
 
      ///MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, data, length);
3070
3056
      MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, d, l);
3071
3057
      _gui->writeEvent(evSysex);
3072
3058
    }
3073
3059
    break;    
3074
3060
  case SYSEX_DELAYLFOFREQ:
3075
 
    ///memcpy(&f, &data[1], sizeof(float));
3076
3061
    memcpy(&f, &d[1], sizeof(float));
3077
3062
    setDelayLFOFreq(f);
3078
3063
    if(!fromGui) {
3079
 
      ///MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, data, length);
3080
3064
      MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, d, l);
3081
3065
      _gui->writeEvent(evSysex);
3082
3066
    }
3083
3067
    break;    
3084
3068
  case SYSEX_DELAYLFODEPTH:
3085
 
    ///memcpy(&f, &data[1], sizeof(float));
3086
3069
    memcpy(&f, &d[1], sizeof(float));
3087
3070
    setDelayLFODepth(f);
3088
3071
    if(!fromGui) {
3089
 
      ///MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, data, length);
3090
3072
      MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, d, l);
3091
3073
      _gui->writeEvent(evSysex);
3092
3074
    }
3093
3075
    break;    
 
3076
  case SYSEX_DELAYWETDRYMIX:
 
3077
    memcpy(&f, &d[1], sizeof(float));
 
3078
    setDelayDryWet(f);
 
3079
    if(!fromGui) {
 
3080
      MusECore::MidiPlayEvent evSysex(0, 0, MusECore::ME_SYSEX, d, l);
 
3081
      _gui->writeEvent(evSysex);
 
3082
    }
 
3083
    break;
3094
3084
  default:
3095
3085
    break;
3096
3086
  }
3708
3698
//   getPatchName
3709
3699
//---------------------------------------------------------
3710
3700
 
3711
 
const char* DeicsOnze::getPatchName(int ch, int val, int) const {
 
3701
const char* DeicsOnze::getPatchName(int ch, int val, bool) const {
3712
3702
  if(_global.channel[ch].isEnable) {
3713
3703
    Preset* p_preset;
3714
3704
    int hbank = (val & 0xff0000) >> 16;
4492
4482
 
4493
4483
class QWidget;
4494
4484
 
4495
 
///static Mess* instantiate(int sr, const char*)
4496
4485
static Mess* instantiate(int sr, QWidget*, QString* /* projectPathPtr */, const char*)
4497
4486
{
4498
4487
    DeicsOnze* deicsonze = new DeicsOnze();