To process part of a file, you would use BASS_ChannelSetPosition to seek to the start position and then process the amount of data necessary to reach the end position. The BASSenc add-on can be used for the file writing. Writing parts from 2 files could be done something like this...
BASS_Encode_Start(source1, "output.wav" BASS_ENCODE_PCM, 0, 0); // set an encoder (WAV writer) on the 1st source
BASS_ChanneSetPosition(source1, startpos1, BASS_POS_BYTE); // seek to the start position
QWORD todo=endpos1-startpos1; // the amount of data to process
while (todo && BASS_ChannelIsActive(source1)) {
BYTE buf[20000]; // processing buffer
DWORD c=BASS_ChannelGetData(source1, buf, min(todo, sizeof(buf)); // process some data
todo-=c; // count down
}
BASS_Encode_SetChannel(source1, source2); // move the encoder to the 2nd source
BASS_ChanneSetPosition(source2, startpos2, BASS_POS_BYTE); // seek to the start position
todo=endpos2-startpos2; // the amount of data to process
while (todo && BASS_ChannelIsActive(source2)) {
BYTE buf[20000]; // processing buffer
DWORD c=BASS_ChannelGetData(source2, buf, min(todo, sizeof(buf)); // process some data
todo-=c; // count down
}
BASS_Encode_Stop(source2); // close the encoder
Please see the documentation for details on the aforementioned functions.