@@ -234,15 +234,8 @@ intptr_t Plugin::handleAudioMaster()
234
234
intptr_t Plugin::dispatch (DataPort* port, i32 opcode, i32 index, intptr_t value,
235
235
void * ptr, float opt)
236
236
{
237
- // if(opcode != effCanBeAutomated && opcode != effGetProgramNameIndexed &&
238
- // opcode != effEditIdle && opcode != effGetParamDisplay &&
239
- // opcode != effGetParamLabel && opcode != effGetParameterProperties) {
240
- // FLOOD("dispatch: %s", kDispatchEvents[opcode]);
241
- // }
242
-
243
- if (opcode != effEditIdle && opcode) {
237
+ if (opcode != effEditIdle && opcode)
244
238
FLOOD (" (%p) dispatch: %s" , std::this_thread::get_id (), kDispatchEvents [opcode]);
245
- }
246
239
247
240
DataFrame* frame = port->frame <DataFrame>();
248
241
frame->command = Command::Dispatch;
@@ -382,19 +375,16 @@ intptr_t Plugin::dispatch(DataPort* port, i32 opcode, i32 index, intptr_t value,
382
375
port->waitResponse ();
383
376
return frame->value ; }
384
377
385
- case effGetProgramName:
378
+ case effGetProgramName: {
386
379
port->sendRequest ();
387
380
port->waitResponse ();
388
381
389
- if (frame->value ) {
390
- const char * source = reinterpret_cast <const char *>(frame->data );
391
- char * dest = static_cast <char *>(ptr);
392
-
393
- std::strncpy (dest, source, kVstMaxProgNameLen );
394
- dest[kVstMaxProgNameLen -1 ] = ' \0 ' ;
395
- }
382
+ const char * source = reinterpret_cast <const char *>(frame->data );
383
+ char * dest = static_cast <char *>(ptr);
396
384
397
- return frame->value ;
385
+ std::strncpy (dest, source, kVstMaxProgNameLen );
386
+ dest[kVstMaxProgNameLen -1 ] = ' \0 ' ;
387
+ return frame->value ; }
398
388
399
389
case effSetProgramName: {
400
390
const char * source = static_cast <const char *>(ptr);
@@ -408,49 +398,49 @@ intptr_t Plugin::dispatch(DataPort* port, i32 opcode, i32 index, intptr_t value,
408
398
return frame->value ; }
409
399
410
400
case effGetVendorString:
411
- case effGetProductString:
401
+ case effGetProductString: {
412
402
port->sendRequest ();
413
403
port->waitResponse ();
414
404
415
- if (frame->value ) {
416
- const char * source = reinterpret_cast <const char *>(frame->data );
417
- char * dest = static_cast <char *>(ptr);
418
-
419
- std::strncpy (dest, source, kVstMaxVendorStrLen );
420
- dest[kVstMaxVendorStrLen -1 ] = ' \0 ' ;
421
- }
405
+ const char * source = reinterpret_cast <const char *>(frame->data );
406
+ char * dest = static_cast <char *>(ptr);
422
407
423
- return frame->value ;
408
+ std::strncpy (dest, source, kVstMaxVendorStrLen );
409
+ dest[kVstMaxVendorStrLen -1 ] = ' \0 ' ;
410
+ return frame->value ; }
424
411
425
412
case effGetParamName:
426
413
case effGetParamLabel:
427
- case effGetParamDisplay:
414
+ case effGetParamDisplay: {
428
415
port->sendRequest ();
429
416
port->waitResponse ();
430
417
431
- if (frame->value ) {
432
- const char * source = reinterpret_cast <const char *>(frame->data );
433
- char * dest = static_cast <char *>(ptr);
418
+ const char * source = reinterpret_cast <const char *>(frame->data );
419
+ char * dest = static_cast <char *>(ptr);
420
+
421
+ // std::strncpy(dest, source, kVstMaxParamStrLen);
422
+ // dest[kVstMaxParamStrLen-1] = '\0';
434
423
435
- std::strncpy (dest, source, kVstMaxParamStrLen );
436
- dest[kVstMaxParamStrLen -1 ] = ' \0 ' ;
424
+ // Workaround for Variety of Sound plugins bug (non-printable characters)
425
+ int i;
426
+ for (i = 0 ; i < kVstMaxParamStrLen - 1 ; ++i) {
427
+ if (isprint (source[i]))
428
+ dest[i] = source[i];
437
429
}
438
430
439
- return frame->value ;
431
+ dest[i] = ' \0 ' ;
432
+ return frame->value ; }
440
433
441
- case effGetEffectName:
434
+ case effGetEffectName: {
442
435
port->sendRequest ();
443
436
port->waitResponse ();
444
437
445
- if (frame->value ) {
446
- const char * source = reinterpret_cast <const char *>(frame->data );
447
- char * dest = static_cast <char *>(ptr);
448
-
449
- std::strncpy (dest, source, kVstMaxEffectNameLen );
450
- dest[kVstMaxEffectNameLen -1 ] = ' \0 ' ;
451
- }
438
+ const char * source = reinterpret_cast <const char *>(frame->data );
439
+ char * dest = static_cast <char *>(ptr);
452
440
453
- return frame->value ;
441
+ std::strncpy (dest, source, kVstMaxEffectNameLen );
442
+ dest[kVstMaxEffectNameLen -1 ] = ' \0 ' ;
443
+ return frame->value ; }
454
444
455
445
case effGetParameterProperties:
456
446
port->sendRequest ();
@@ -467,19 +457,16 @@ intptr_t Plugin::dispatch(DataPort* port, i32 opcode, i32 index, intptr_t value,
467
457
std::memcpy (ptr, frame->data , sizeof (VstPinProperties));
468
458
return frame->value ;
469
459
470
- case effGetProgramNameIndexed:
460
+ case effGetProgramNameIndexed: {
471
461
port->sendRequest ();
472
462
port->waitResponse ();
473
463
474
- if (frame->value ) {
475
- const char * source = reinterpret_cast <const char *>(frame->data );
476
- char * dest = static_cast <char *>(ptr);
464
+ const char * source = reinterpret_cast <const char *>(frame->data );
465
+ char * dest = static_cast <char *>(ptr);
477
466
478
- std::strncpy (dest, source, kVstMaxProgNameLen );
479
- dest[kVstMaxProgNameLen -1 ] = ' \0 ' ;
480
- }
481
-
482
- return frame->value ;
467
+ std::strncpy (dest, source, kVstMaxProgNameLen );
468
+ dest[kVstMaxProgNameLen -1 ] = ' \0 ' ;
469
+ return frame->value ; }
483
470
484
471
case effGetMidiKeyName:
485
472
port->sendRequest ();
0 commit comments