MCPcopy Create free account
hub / github.com/audacity/audacity / SaveFXProgram

Method SaveFXProgram

libraries/lib-vst/VSTWrapper.cpp:1293–1351  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1291}
1292
1293void VSTWrapper::SaveFXProgram(wxMemoryBuffer & buf, int index) const
1294{
1295 wxInt32 subType;
1296 void *chunkPtr;
1297 int chunkSize;
1298 int dataSize = 48;
1299 char progName[28];
1300 wxInt32 tab[7];
1301
1302 // read-only dispatcher function
1303 constCallDispatcher(effGetProgramNameIndexed, index, 0, &progName, 0.0);
1304 progName[27] = '\0';
1305 chunkSize = strlen(progName);
1306 memset(&progName[chunkSize], 0, sizeof(progName) - chunkSize);
1307
1308 if (mAEffect->flags & effFlagsProgramChunks)
1309 {
1310 subType = CCONST('F', 'P', 'C', 'h');
1311
1312 // read-only dispatcher function
1313 chunkSize = constCallDispatcher(effGetChunk, 1, 0, &chunkPtr, 0.0);
1314 dataSize += 4 + chunkSize;
1315 }
1316 else
1317 {
1318 subType = CCONST('F', 'x', 'C', 'k');
1319
1320 dataSize += (mAEffect->numParams << 2);
1321 }
1322
1323 tab[0] = wxINT32_SWAP_ON_LE(CCONST('C', 'c', 'n', 'K'));
1324 tab[1] = wxINT32_SWAP_ON_LE(dataSize);
1325 tab[2] = wxINT32_SWAP_ON_LE(subType);
1326 tab[3] = wxINT32_SWAP_ON_LE(1);
1327 tab[4] = wxINT32_SWAP_ON_LE(mAEffect->uniqueID);
1328 tab[5] = wxINT32_SWAP_ON_LE(mAEffect->version);
1329 tab[6] = wxINT32_SWAP_ON_LE(mAEffect->numParams);
1330
1331 buf.AppendData(tab, sizeof(tab));
1332 buf.AppendData(progName, sizeof(progName));
1333
1334 if (mAEffect->flags & effFlagsProgramChunks)
1335 {
1336 wxInt32 size = wxINT32_SWAP_ON_LE(chunkSize);
1337 buf.AppendData(&size, sizeof(size));
1338 buf.AppendData(chunkPtr, chunkSize);
1339 }
1340 else
1341 {
1342 for (int i = 0; i < mAEffect->numParams; i++)
1343 {
1344 float val = callGetParameter(i);
1345 wxUint32 ival = wxUINT32_SWAP_ON_LE(reinterpretAsUint32(val));
1346 buf.AppendData(&ival, sizeof(ival));
1347 }
1348 }
1349
1350 return;

Callers

nothing calls this directly

Calls 2

reinterpretAsUint32Function · 0.85
AppendDataMethod · 0.80

Tested by

no test coverage detected