cwIo.h/cpp : Replaced use of flow proc audioFileIn with audioDevFile() enable/seek API.
This commit is contained in:
parent
20175d29f9
commit
a523b03ea9
@ -250,6 +250,8 @@ namespace cw
|
|||||||
const object_t* presets_cfg;
|
const object_t* presets_cfg;
|
||||||
object_t* flow_proc_dict;
|
object_t* flow_proc_dict;
|
||||||
const object_t* flow_cfg;
|
const object_t* flow_cfg;
|
||||||
|
const char* in_audio_dev_file;
|
||||||
|
unsigned in_audio_dev_idx;
|
||||||
|
|
||||||
midi_record_play::handle_t mrpH;
|
midi_record_play::handle_t mrpH;
|
||||||
|
|
||||||
@ -290,7 +292,6 @@ namespace cw
|
|||||||
|
|
||||||
bool useLiveMidiFl; // use incoming MIDI to drive program (otherwise use score file)
|
bool useLiveMidiFl; // use incoming MIDI to drive program (otherwise use score file)
|
||||||
bool trackMidiFl; // apply presets based on MIDI location (otherwise respond only to direct manipulation of fragment control)
|
bool trackMidiFl; // apply presets based on MIDI location (otherwise respond only to direct manipulation of fragment control)
|
||||||
bool audioFileSrcFl;
|
|
||||||
|
|
||||||
unsigned pvWndSmpCnt;
|
unsigned pvWndSmpCnt;
|
||||||
bool sdBypassFl;
|
bool sdBypassFl;
|
||||||
@ -376,6 +377,12 @@ namespace cw
|
|||||||
goto errLabel;
|
goto errLabel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if((rc = params_cfgRef->getv_opt( "in_audio_dev_file", app->in_audio_dev_file)) != kOkRC )
|
||||||
|
{
|
||||||
|
rc = cwLogError(rc,"Parse of optional cfg. params failed..");
|
||||||
|
goto errLabel;
|
||||||
|
}
|
||||||
|
|
||||||
_apply_command_line_args(app,argc,argv);
|
_apply_command_line_args(app,argc,argv);
|
||||||
|
|
||||||
if((app->scoreFn = filesys::expandPath( app->scoreFn )) == nullptr )
|
if((app->scoreFn = filesys::expandPath( app->scoreFn )) == nullptr )
|
||||||
@ -417,7 +424,7 @@ namespace cw
|
|||||||
|
|
||||||
app->insertLoc = kInvalidId; // initialize 'insertLoc' to be invalid
|
app->insertLoc = kInvalidId; // initialize 'insertLoc' to be invalid
|
||||||
|
|
||||||
errLabel:
|
errLabel:
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@ -658,15 +665,16 @@ namespace cw
|
|||||||
{
|
{
|
||||||
rc_t rc = kOkRC;
|
rc_t rc = kOkRC;
|
||||||
|
|
||||||
if( app->audioFileSrcFl )
|
if( app->in_audio_dev_idx != kInvalidIdx )
|
||||||
{
|
{
|
||||||
if((rc = io_flow::set_variable_value( app->ioFlowH, flow_cross::kAllDestId, "aud_in", "on_off", flow::kAnyChIdx, false )) != kOkRC )
|
if((rc = audioDeviceEnable( app->ioH, app->in_audio_dev_idx, true, false )) != kOkRC )
|
||||||
{
|
{
|
||||||
rc = cwLogError(kInvalidArgRC,"Attempt to set audio in 'on/off' value to 'off' failed.");
|
rc = cwLogError(rc,"Enable failed on audio device input file.");
|
||||||
goto errLabel;
|
goto errLabel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if((rc = midi_record_play::stop(app->mrpH)) != kOkRC )
|
if((rc = midi_record_play::stop(app->mrpH)) != kOkRC )
|
||||||
{
|
{
|
||||||
rc = cwLogError(rc,"MIDI stop failed.");
|
rc = cwLogError(rc,"MIDI stop failed.");
|
||||||
@ -680,11 +688,11 @@ namespace cw
|
|||||||
|
|
||||||
rc_t _do_play( app_t* app, unsigned begLoc, unsigned endLoc )
|
rc_t _do_play( app_t* app, unsigned begLoc, unsigned endLoc )
|
||||||
{
|
{
|
||||||
rc_t rc = kOkRC;
|
rc_t rc = kOkRC;
|
||||||
bool rewindFl = true;
|
bool rewindFl = true;
|
||||||
loc_map_t* begMap = nullptr;
|
loc_map_t* begMap = nullptr;
|
||||||
loc_map_t* endMap = nullptr;
|
loc_map_t* endMap = nullptr;
|
||||||
unsigned cur_loc = 0;
|
unsigned cur_loc = 0;
|
||||||
|
|
||||||
// if the player is already playing then stop it
|
// if the player is already playing then stop it
|
||||||
if( midi_record_play::is_started(app->mrpH) )
|
if( midi_record_play::is_started(app->mrpH) )
|
||||||
@ -695,22 +703,21 @@ namespace cw
|
|||||||
|
|
||||||
//midi_record_play::half_pedal_params( app->mrpH, app->hpDelayMs, app->hpPitch, app->hpVel, app->hpPedalVel, app->hpDurMs, app->hpDnDelayMs );
|
//midi_record_play::half_pedal_params( app->mrpH, app->hpDelayMs, app->hpPitch, app->hpVel, app->hpPedalVel, app->hpDurMs, app->hpDnDelayMs );
|
||||||
|
|
||||||
// If we are using an audio file as the audio source
|
if( app->in_audio_dev_idx != kInvalidIdx )
|
||||||
if( app->audioFileSrcFl )
|
|
||||||
{
|
{
|
||||||
if((rc = io_flow::set_variable_value( app->ioFlowH, flow_cross::kAllDestId, "aud_in", "on_off", flow::kAnyChIdx, true )) != kOkRC )
|
if((rc = audioDeviceSeek( app->ioH, app->in_audio_dev_idx, true, 0 )) != kOkRC )
|
||||||
{
|
{
|
||||||
rc = cwLogError(kInvalidArgRC,"Attempt to set audio in 'on/off' value to 'on' failed.");
|
rc = cwLogError(rc,"Seek failed on audio device input file.");
|
||||||
goto errLabel;
|
goto errLabel;
|
||||||
}
|
}
|
||||||
|
|
||||||
if((rc = io_flow::set_variable_value( app->ioFlowH, flow_cross::kAllDestId, "aud_in", "seekSecs", flow::kAnyChIdx, 0.0f )) != kOkRC )
|
if((rc = audioDeviceEnable( app->ioH, app->in_audio_dev_idx, true, true )) != kOkRC )
|
||||||
{
|
{
|
||||||
rc = cwLogError(kInvalidArgRC,"Attempt to rewind audio file failed.");
|
rc = cwLogError(rc,"Enable failed on audio device input file.");
|
||||||
goto errLabel;
|
goto errLabel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if((begMap = _find_loc(app,begLoc)) == nullptr )
|
if((begMap = _find_loc(app,begLoc)) == nullptr )
|
||||||
{
|
{
|
||||||
rc = cwLogError(kInvalidArgRC,"The begin play location is not valid.");
|
rc = cwLogError(kInvalidArgRC,"The begin play location is not valid.");
|
||||||
@ -2377,7 +2384,6 @@ cw::rc_t cw::preset_sel_app::main( const object_t* cfg, int argc, const char* ar
|
|||||||
rc_t rc;
|
rc_t rc;
|
||||||
app_t app = { .hpDelayMs=250, .hpPedalVel=127, .hpPitch=64, .hpVel=64, .hpDurMs=500, .hpDnDelayMs=1000,
|
app_t app = { .hpDelayMs=250, .hpPedalVel=127, .hpPitch=64, .hpVel=64, .hpDurMs=500, .hpDnDelayMs=1000,
|
||||||
.trackMidiFl = true,
|
.trackMidiFl = true,
|
||||||
.audioFileSrcFl = false,
|
|
||||||
.pvWndSmpCnt = 512,
|
.pvWndSmpCnt = 512,
|
||||||
.sdBypassFl = false,
|
.sdBypassFl = false,
|
||||||
.sdInGain = 1.0,
|
.sdInGain = 1.0,
|
||||||
@ -2407,6 +2413,23 @@ cw::rc_t cw::preset_sel_app::main( const object_t* cfg, int argc, const char* ar
|
|||||||
|
|
||||||
io::report(app.ioH);
|
io::report(app.ioH);
|
||||||
|
|
||||||
|
// if an input audio file is being used
|
||||||
|
app.in_audio_dev_idx = kInvalidIdx;
|
||||||
|
if( app.in_audio_dev_file != nullptr )
|
||||||
|
{
|
||||||
|
if((app.in_audio_dev_idx = audioDeviceLabelToIndex(app.ioH, app.in_audio_dev_file )) == kInvalidIdx )
|
||||||
|
{
|
||||||
|
rc = cwLogError(kInvalidArgRC,"The input audio device file '%s' could not be found.",cwStringNullGuard(app.in_audio_dev_file));
|
||||||
|
goto errLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
if((rc = audioDeviceEnable( app.ioH, app.in_audio_dev_idx, true, false )) != kOkRC )
|
||||||
|
{
|
||||||
|
rc = cwLogError(rc,"The input audio device file disable failed.");
|
||||||
|
goto errLabel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// create the preset selection state object
|
// create the preset selection state object
|
||||||
if((rc = create(app.psH, app.presets_cfg )) != kOkRC )
|
if((rc = create(app.psH, app.presets_cfg )) != kOkRC )
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user