cwPresetSel.h/cpp : Added multiPresetA/N to fragment.
Removed 'fragN' from stored fragment data structure. Commented out translate_frags() because it is obsolete.
This commit is contained in:
parent
293629831c
commit
5611b28c6b
@ -6,6 +6,7 @@
|
||||
#include "cwObject.h"
|
||||
#include "cwTime.h"
|
||||
#include "cwVectOps.h"
|
||||
#include "cwFlowDecl.h"
|
||||
#include "cwPresetSel.h"
|
||||
#include "cwFile.h"
|
||||
#include "cwPianoScore.h"
|
||||
@ -1061,7 +1062,6 @@ cw::rc_t cw::preset_sel::create_fragment( handle_t h, unsigned end_loc, time::sp
|
||||
// set the return value
|
||||
fragIdRef = f->fragId;
|
||||
|
||||
|
||||
// intiialize the preset array elements
|
||||
for(unsigned i=0; i<p->presetLabelN; ++i)
|
||||
{
|
||||
@ -1147,6 +1147,7 @@ cw::rc_t cw::preset_sel::delete_fragment( handle_t h, unsigned fragId )
|
||||
|
||||
// release the fragment
|
||||
mem::release(f->presetA);
|
||||
mem::release(f->multiPresetA);
|
||||
mem::release(f);
|
||||
|
||||
return kOkRC;
|
||||
@ -1497,7 +1498,6 @@ cw::rc_t cw::preset_sel::write( handle_t h, const char* fn )
|
||||
}
|
||||
|
||||
newPairObject("fragL", fragL_obj, root);
|
||||
newPairObject("fragN", fragN, root);
|
||||
newPairObject("masterWetInGain", p->master_wet_in_gain, root );
|
||||
newPairObject("masterWetOutGain", p->master_wet_out_gain, root );
|
||||
newPairObject("masterDryGain", p->master_dry_gain, root );
|
||||
@ -1535,7 +1535,6 @@ cw::rc_t cw::preset_sel::read( handle_t h, const char* fn )
|
||||
rc_t rc = kOkRC;
|
||||
preset_sel_t* p = _handleToPtr(h);
|
||||
object_t* root = nullptr;
|
||||
unsigned fragN = 0;
|
||||
const object_t* fragL_obj = nullptr;
|
||||
|
||||
// parse the preset file
|
||||
@ -1549,8 +1548,7 @@ cw::rc_t cw::preset_sel::read( handle_t h, const char* fn )
|
||||
_destroy_all_frags(p);
|
||||
|
||||
// parse the root level
|
||||
if((rc = root->getv( "fragN", fragN,
|
||||
"fragL", fragL_obj,
|
||||
if((rc = root->getv( "fragL", fragL_obj,
|
||||
"masterWetInGain", p->master_wet_in_gain,
|
||||
"masterWetOutGain", p->master_wet_out_gain,
|
||||
"masterDryGain", p->master_dry_gain,
|
||||
@ -1560,13 +1558,14 @@ cw::rc_t cw::preset_sel::read( handle_t h, const char* fn )
|
||||
goto errLabel;
|
||||
}
|
||||
|
||||
|
||||
// for each fragment
|
||||
for(unsigned i=0; i<fragN; ++i)
|
||||
for(unsigned i=0; i<fragL_obj->child_count(); ++i)
|
||||
{
|
||||
frag_t* f = nullptr;
|
||||
const object_t* r = fragL_obj->child_ele(i);
|
||||
|
||||
unsigned fragId=kInvalidId,endLoc=0,presetN=0,begPlayLoc=0,endPlayLoc=0;
|
||||
unsigned fragId=kInvalidId,endLoc=0,presetN=0,multiPresetN=0,begPlayLoc=0,endPlayLoc=0;
|
||||
double igain=0,ogain=0,wetDryGain=0,fadeOutMs=0;
|
||||
const char* note = nullptr;
|
||||
const object_t* presetL_obj = nullptr;
|
||||
@ -1647,6 +1646,9 @@ cw::rc_t cw::preset_sel::read( handle_t h, const char* fn )
|
||||
goto errLabel;
|
||||
}
|
||||
|
||||
if( order > 0 || playFl )
|
||||
multiPresetN += 1;
|
||||
|
||||
f->presetA[ preset_idx ].order = order;
|
||||
f->presetA[ preset_idx ].alt_str = mem::duplStr(alt_str);
|
||||
f->presetA[ preset_idx ].playFl = playFl;
|
||||
@ -1658,6 +1660,32 @@ cw::rc_t cw::preset_sel::read( handle_t h, const char* fn )
|
||||
|
||||
}
|
||||
|
||||
// create the multiPresetA[]
|
||||
if( multiPresetN>0 )
|
||||
{
|
||||
f->multiPresetA = mem::allocZ<flow::preset_order_t>(multiPresetN);
|
||||
f->multiPresetN = multiPresetN;
|
||||
|
||||
for(unsigned i=0,j=1; i<presetN; ++i)
|
||||
if( f->presetA[i].order > 0 || f->presetA[i].playFl )
|
||||
{
|
||||
unsigned out_idx = f->presetA[i].playFl ? 0 : j++;
|
||||
|
||||
assert( out_idx < multiPresetN );
|
||||
|
||||
f->multiPresetA[out_idx].preset_label = _preset_label( p, f->presetA[i].preset_idx );
|
||||
f->multiPresetA[out_idx].order = f->presetA[i].order;
|
||||
}
|
||||
|
||||
// sort
|
||||
if( multiPresetN > 1 )
|
||||
{
|
||||
std::sort(f->multiPresetA+1,
|
||||
f->multiPresetA+f->multiPresetN-1,
|
||||
[](const flow::preset_order_t& a,const flow::preset_order_t& b){ return a.order<b.order; } );
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -1711,7 +1739,14 @@ cw::rc_t cw::preset_sel::report_presets( handle_t h )
|
||||
return rc;
|
||||
}
|
||||
|
||||
cw::rc_t cw::preset_sel::translate_frags( const object_t* cfg )
|
||||
{
|
||||
return cwLogError(kNotImplementedRC,"translate_frags() is not implemented.");
|
||||
}
|
||||
|
||||
|
||||
#undef NOT_DEF
|
||||
#ifdef NOT_DEF
|
||||
cw::rc_t cw::preset_sel::translate_frags( const object_t* cfg )
|
||||
{
|
||||
rc_t rc = kOkRC;
|
||||
@ -1938,4 +1973,4 @@ cw::rc_t cw::preset_sel::translate_frags( const object_t* cfg )
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -14,7 +14,7 @@ namespace cw
|
||||
bool seqFl; // play this preset during sequencing.
|
||||
unsigned preset_idx; // preset index into preset_labelA[].
|
||||
unsigned order; // selection label
|
||||
char* alt_str; // 'alt' label
|
||||
char* alt_str; // 'alt' label
|
||||
} preset_t;
|
||||
|
||||
typedef struct frag_str
|
||||
@ -35,6 +35,9 @@ namespace cw
|
||||
preset_t* presetA; // presetA[ presetN ] - status of each preset
|
||||
unsigned presetN;
|
||||
|
||||
flow::preset_order_t* multiPresetA; // array of active presets in this frag. sequenced by ascending 'order'.
|
||||
unsigned multiPresetN;
|
||||
|
||||
unsigned* altPresetIdxA; // altPresetIdxA[ alt_count() ] selected preset idx for each alt.
|
||||
|
||||
bool uiSelectFl;
|
||||
|
Loading…
Reference in New Issue
Block a user