diff options
author | Chris Xiong <chirs241097@gmail.com> | 2017-02-13 17:31:42 +0800 |
---|---|---|
committer | Chris Xiong <chirs241097@gmail.com> | 2017-02-13 17:31:42 +0800 |
commit | a0da9bca472043e7f13d4d6ea1809f6b63a598b0 (patch) | |
tree | f318a37656b5b25c4028739b8e59ebb4d132d34d /core | |
parent | 3312e495cf54a8bd6451552216f5aeea1a06d486 (diff) | |
download | QMidiPlayer-a0da9bca472043e7f13d4d6ea1809f6b63a598b0.tar.xz |
Fix pitch bend range handling.
Allow registering a string option as file path.
Provide an easier way to set path values in options.
Revert to old geometry storage mechanism and improved
it. Hope this one will work on Windows.
Make the time slider less ugly.
Diffstat (limited to 'core')
-rw-r--r-- | core/qmpmidiplay.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/core/qmpmidiplay.cpp b/core/qmpmidiplay.cpp index ec9f059..b72ebe8 100644 --- a/core/qmpmidiplay.cpp +++ b/core/qmpmidiplay.cpp @@ -98,9 +98,9 @@ void CMidiPlayer::processEvent(const SEvent *e) case 0xE0://PW pbv[e->type&0x0F]=(e->p1|(e->p2<<7))&0x3FFF;; if(mappedoutput[e->type&0x0F]) - mapper->pitchBend(mappedoutput[e->type&0x0F]-1,e->type&0x0F,(e->p1|(e->p2<<7))&0x3FFF); + mapper->pitchBend(mappedoutput[e->type&0x0F]-1,e->type&0x0F,pbv[e->type&0x0F]); else - fluid_synth_pitch_bend(synth,e->type&0x0F,(e->p1|(e->p2<<7))&0x3FFF); + fluid_synth_pitch_bend(synth,e->type&0x0F,pbv[e->type&0x0F]); break; case 0xF0://Meta/SysEx if((e->type&0x0F)==0x0F) @@ -249,8 +249,8 @@ void CMidiPlayer::fileTimer2Pass() ccc[i][11]=127;ccc[i][71]=64;ccc[i][72]=64; ccc[i][73]=64;ccc[i][74]=64;ccc[i][75]=64; ccc[i][76]=64;ccc[i][77]=64;ccc[i][78]=64; - ccc[0][131]=dpt;ccc[0][132]=0x04021808; - ccc[0][133]=0;ccc[0][134]=2; + ccc[i][131]=dpt;ccc[i][132]=0x04021808; + ccc[i][133]=0;ccc[i][134]=2; }if(midiReaders->getStandard()!=4)ccc[9][0]=128; for(int i=0;i<16;++i)for(int j=0;j<135;++j) ccstamps[0][i][j]=ccc[i][j]; @@ -317,9 +317,9 @@ void CMidiPlayer::playerPanic(bool reset) fluid_synth_cc(synth,i,10,64); fluid_synth_cc(synth,i,11,127); fluid_synth_cc(synth,i,32,0); + fluid_synth_pitch_wheel_sens(synth,i,2); } fluid_synth_cc(synth,i,64,0); - fluid_synth_pitch_wheel_sens(synth,i,2); fluid_synth_pitch_bend(synth,i,8192); //all sounds off causes the minus polyphone bug... fluid_synth_all_notes_off(synth,i); @@ -405,6 +405,8 @@ void CMidiPlayer::setTCeptr(uint32_t ep,uint32_t st) for(int j=0;j<120;++j)fluid_synth_cc(synth,i,j,ccstamps[st][i][j]); fluid_synth_program_change(synth,i,ccstamps[st][i][128]); //fluid_synth_pitch_bend(synth,i,ccstamps[st][i][130]); + fluid_synth_pitch_wheel_sens(synth,i,ccstamps[st][i][134]); + pbr[i]=ccstamps[st][i][134]; dpt=ccstamps[st][0][131];ctempo=dpt*divs/1000; ctsn=ccstamps[st][0][132]>>24;ctsd=1<<((ccstamps[st][0][132]>>16)&0xFF); cks=ccstamps[st][0][133]; |