From cd8432e47e1e9b332f2d5682ce4c796a94a29de8 Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Mon, 1 Jul 2019 22:33:53 +0800 Subject: Actually send initialization sequence to external devices. Replace hardcoded initial CC values with values from device property API. --- ChangeLog | 5 + INSTALL.md | 5 +- core/qmpmidioutfluid.cpp | 1 + core/qmpmidioutrtmidi.cpp | 23 +- core/qmpmidiplay.cpp | 34 +- doc/SD-80_SD-90_Native.devinit | 1382 ++++++++++++++++++++++++++++++ qmidiplayer-desktop/qmpchanneleditor.cpp | 7 +- qmidiplayer-desktop/qmppresetselect.cpp | 1 - 8 files changed, 1428 insertions(+), 30 deletions(-) create mode 100644 doc/SD-80_SD-90_Native.devinit diff --git a/ChangeLog b/ChangeLog index 441d9c2..f567985 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2019-07-01 0.8.7 indev +Actually send initialization sequence to external devices. + +Replace hardcoded initial CC values with values from device property API. + 2019-06-30 0.8.7 indev Use splitter in preset selection dialog. diff --git a/INSTALL.md b/INSTALL.md index e9e5c8d..37995d3 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -3,10 +3,9 @@ Use qmake or Qt Creator. Dependencies: -> libfluidsynth 1.1.4+, Qt5, Qt5 Qt quick controls(lite version) and RtMidi. +> libfluidsynth 2.x, Qt5, Qt quick controls(lite version) and RtMidi. -C++11 is _required_ to build the project. Qt4 will not work without -several tweaks. +C++11 is _required_ to build the project. To build the default visualization plugin, you need the latest SMELT library (along with all its dependencies), which can be found diff --git a/core/qmpmidioutfluid.cpp b/core/qmpmidioutfluid.cpp index ac6523f..e9bc6b1 100644 --- a/core/qmpmidioutfluid.cpp +++ b/core/qmpmidioutfluid.cpp @@ -100,6 +100,7 @@ void qmpMidiOutFluid::panic(uint8_t ch) } void qmpMidiOutFluid::reset(uint8_t ch) { + if(!~ch){fluid_synth_system_reset(synth);return;} this->panic(ch); for(int i=0;i<128;++i) fluid_synth_cc(synth,ch,i,0); diff --git a/core/qmpmidioutrtmidi.cpp b/core/qmpmidioutrtmidi.cpp index 2cc9d5b..1a18e46 100644 --- a/core/qmpmidioutrtmidi.cpp +++ b/core/qmpmidioutrtmidi.cpp @@ -229,8 +229,26 @@ void qmpMidiOutRtMidi::panic(uint8_t ch) } void qmpMidiOutRtMidi::reset(uint8_t ch) { - basicMessage(0xB0|ch,121,0); - basicMessage(0xB0|ch,123,0); + if(ch==0xFF) + { + if(devinit) + { + for(auto&msg:devinit->initseq.eventList) + { + if((msg.type&0xF0)==0xF0) + extendedMessage(msg.str.length(),msg.str.data()); + else + { + basicMessage(msg.type,msg.p1,msg.p2); + } + } + } + } + else + { + basicMessage(0xB0|ch,121,0); + basicMessage(0xB0|ch,123,0); + } } void qmpMidiOutRtMidi::onMapped(uint8_t,int) { @@ -286,6 +304,7 @@ bool qmpMidiOutRtMidi::getChannelPreset(int ch,uint16_t *bank,uint8_t *preset,st uint8_t qmpMidiOutRtMidi::getInitialCCValue(uint8_t cc) { if(!devinit)return 0;//Nope! + return devinit->initv[cc]; } void qmpMidiOutRtMidi::setInitializerFile(const char* path) { diff --git a/core/qmpmidiplay.cpp b/core/qmpmidiplay.cpp index bbf1c3a..6ff465f 100644 --- a/core/qmpmidiplay.cpp +++ b/core/qmpmidiplay.cpp @@ -176,7 +176,7 @@ void CMidiPlayer::prePlayInit() playerPanic(true); for(size_t i=0;ireset(j); + mididev[i].dev->reset(0xFF); } void CMidiPlayer::playEvents() { @@ -241,14 +241,10 @@ void CMidiPlayer::fileTimer2Pass() memset(ccc,0,sizeof(ccc));memset(rpnid,0xFF,sizeof(rpnid));memset(rpnval,0xFF,sizeof(rpnval)); for(int i=0;i<16;++i) { - ccc[i][7]=100;ccc[i][8]=64;ccc[i][10]=64; - 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; + memset(ccc[i],0xFF,128*sizeof(uint32_t)); ccc[i][131]=ctempo;ccc[i][132]=0x04021808; ccc[i][133]=0;ccc[i][134]=2; } - ccc[9][0]=127; for(int i=0;i<16;++i)for(int j=0;j<135;++j) ccstamps[0][i][j]=ccc[i][j]; for(uint32_t eptr=0,ct=getEvent(0)->time;eptrbasicMessage(0xB0|i,cc,chstatus[i][cc]); + memset(chstatus[i],0xff,128*sizeof(uint8_t)); } } void CMidiPlayer::playerDeinit() @@ -392,9 +375,12 @@ void CMidiPlayer::setTCeptr(uint32_t ep,uint32_t st) qmpMidiOutDevice* dest=mididev[mappedoutput[i]].dev; for(int j=0;j<120;++j) { - internalFluid->basicMessage(0xB0|i,j,ccstamps[st][i][j]); - dest->basicMessage(0xB0|i,j,ccstamps[st][i][j]); - chstatus[i][j]=ccstamps[st][i][j]; + if(~ccstamps[st][i][j]) + { + internalFluid->basicMessage(0xB0|i,j,ccstamps[st][i][j]); + dest->basicMessage(0xB0|i,j,ccstamps[st][i][j]); + chstatus[i][j]=ccstamps[st][i][j]; + } } internalFluid->basicMessage(0xC0|i,ccstamps[st][i][128],0); dest->basicMessage(0xC0|i,ccstamps[st][i][128],0); @@ -459,6 +445,8 @@ bool CMidiPlayer::getChannelMask(int ch) {return((mute>>ch)&1)||(solo&&!((solo>>ch)&1));} int CMidiPlayer::getCC(int ch,int id) { + if(chstatus[ch][id]==0xff) + return getChannelOutputDevice(ch)->getInitialCCValue(id); return chstatus[ch][id]; } void CMidiPlayer::setCC(int ch,int id,int val) diff --git a/doc/SD-80_SD-90_Native.devinit b/doc/SD-80_SD-90_Native.devinit new file mode 100644 index 0000000..3bf37d0 --- /dev/null +++ b/doc/SD-80_SD-90_Native.devinit @@ -0,0 +1,1382 @@ +# QMidiPlayer device initialization file for EDIROL SD-80 / SD-90 +# For use with a SD-80 / SD-90 in Native mode +# Chris Xiong 2019 +# +# This initialization file aims for maximum GM (not GM2) compatibility, so: +# - Classic set is used for all parts +# - Channel 10 is set to drum part +# - Modulation is set to 0 +# + +X F0 41 10 00 48 12 00 00 00 00 00 00 F7 +C FF 00 60 +C 09 00 68 +C FF 01 00 + +# 00 01 02~06 07 08 09 10 11 12~70 71~78 79~90 91 92~127 PC PBR +IV 60 00 00,5 64 00 00 40 64 00,59 40,8 00,12 28 00,36 00 02 + +MAP EDIROL Studio Canvas Native Map +[80:0:Special 1] +000=D.L.A.Pad +001=BrushingSaw +002=Xtremities +003=Atmostrings +004=Noo Tongs +005=Mistery +006=EastrnEurope +007=Harpsi&Str +008=Shout Gt +009=Clean Chorus +010=Mid Boost Gt +011=Guitarvibe +012=Cluster Sect +013=Mariachi Tp +014=NY Tenor +015=Jazz Club +016=Moody Alto +017=Fuji Yama +018=SD Piano +019=Piano&Str +020=WarmVoxPiano +021=Enh.E Grand +022=Brite Honky +023=Ambient EP +024=Rhase Dyno +025=Wah Dyno +026=Voweling EP +027=Stage 73 +028=NY Rhodes +029=Amped Wurlie +030=Dirty Wurlie +031=PhaseFlangEP +032=Dist Wurly +033=Xmod EP +034=EP+Followers +035=Backrhodes +036=FM Delight +037=Enh.Legend +038=Phasing EP +039=Comp Clav +040=Vibarimba +041=FM layer +042=Vibey Flute +043=Chime Bells +044=The Big Spin +045=Roller Spin +046=Rocker Spin +047=Tone Wh.Solo +048=Purple Spin +049=RingingOrgan +050=60's LeadOrg +051=DistLead Org +052=Assalt Organ +053=Perky Spin +054=Gospel Spin +055=Boogie Organ +056=Klubb Organ +057=96 Year +058=OrganInStone +059=StringsOrgan +060=Cathdr Pipes +061=Enh.Theater +062=Ld.Harmonica +063=Guitar&Str +064=Elec Gut Gt +065=Chorus GutGt +066=Enh.Nylon Gt +067=CompSteel Gt +068=Elec Aco.Gt +069=Hard Steel +070=Comp OVSteel +071=DelayedSteel +072=Wah Steel Gt +073=Soft Steel +074=Lead Jazz Gt +075=Hawaian Gt +076=Solo Jazz Gt +077=Old Clean Gt +078=Jazz Chorus +079=Fat Clean +080=Space-D Gt +081=Whammy Gt +082=Trem&Cho Gt +083=Long DLY.Gt +084=Comp FeedBK +085=ChaseDL Mute +086=Wah Funk Pop +087=Old Blues +088=335 Drive +089=335 Drive2 +090=SmallAMP OD +091=CountrySlide +092=335 Comp +093=TC Lead Gt +094=Lead Mild Gt +095=Crunch Gt +096=Auto Wah Gt +097=Folmant Gt +098=Fuzz Gt +099=MonoPhase Gt +100=2 Layer Gt +101=MonoDLY Dist +102=Step FLG Gt +103=335 Fuzz +104=Drive Funk +105=Loud & Metal +106=Heavy DistGt +107=Power Mute +108=Muted OD +109=Combo Drive +110=Ring Gt. +111=Scream Drive +112=Gt.Pinch Wah +113=Power DistGt +114=Triple Gt +115=Reverse Harm +116=Drivin'Uprit +117=Enh.Aco Bass +118=Pre Bass +119=Comp Finger +120=Octrv Finger +121=Rock Bass +122=Dist Bass +123=Solo Fretles +124=WahSlapBass +125=Froggy Bass +126=3D TB-303 +127=Acid Dist Bs +[81:0:Special 2] +000=Blown Bass +001=Enh.Violin +002=Solo Violin +003=Enh.Cello +004=Overture Str +005=St.Trem Str2 +006=St.Strings 2 +007=Intim8String +008=Str&Brs Orch +009=St.Orchestr2 +010=St.Slow Str2 +011=ChamberPlyrs +012=Prelude +013=Tape Strings +014=JP Strings +015=PhaseSyn.Str +016=SciFi Choir +017=Rich Choir +018=St.Sm Choir2 +019=Tron Choir +020=ScatterDanze +021=Choral Brass +022=Vocal Keys +023=SampleThe80s +024=Spectravox +025=Formantic +026=Vocoder Wave +027=Enh.Muted Tp +028=St.Big Brass +029=ConcertHorns +030=Brass Orch +031=Loose Lips +032=Multi Brass +033=SuperJP Brs1 +034=SuperJP Brs2 +035=DragginBrass +036=Enh.Alto Sax +037=Enh.TenorSax +038=Enh.Bari Sax +039=Sax's Sect +040=Reed Romance +041=U.S.Patrol +042=Enh.Oboe +043=Jz.Clarinet2 +044=Enh.Flute +045=Tron Flutes +046=Flute&Clari +047=Orch Reeds +048=Delay Shaku +049=Delay Ocarina +050=DynOrchestra +051=Celtic Ens +052=Early Ens +053=WoodSymphony +054=ViennaWoods2 +055=Stage Woods +056=TremoloFlute +057=SupportWoods +058=Fiddle&Oboe +059=Mono Blues +060=TravlnFlutes +061=DistordedSAW +062=The Leader +063=SH-2 Lead +064=JP-6 Lead +065=Glassy Saws +066=Too Pure +067=Mono Analog +068=Charang Lead +069=Phase Wire +070=Flanging 5th +071=BOG +072=Solo Twang +073=Koto Power +074=Dulcid Solo +075=Wine Guitar +076=Leapin' Keys +077=New Fantasia +078=MilleniumStr +079=OB Borealis +080=Wet Glass +081=VintagePhase +082=P-layer +083=Ring Glass +084=5th Atm /Aft +085=Combing +086=Modular Life +087=KeySyncSynth +088=Phase Track +089=3D Crystal +090=Bright Star +091=Technoheadz +092=Techno Cave +093=Wedo-Wodo +094=Dance Sweet +095=Dancefloor +096=Frogcillator +097=Dance Zipper +098=Lo-fi Chord +099=Sliced +100=Dance Chop +101=GO WILD! +102=Tropics +103=FM Fx Bells +104=CrystalGlass +105=Borealis +106=Circular Pad +107=Oxigenizer +108=Quasar +109=PsycheSweep +110=Hell Section +111=DigitalDrone +112=Harp Drop +113=Runaway Rez +114=Wacky Pizzer +115=Reverse Rain +116=Starburst +117=Tongan Delay +118=Cascade +119=Legat~Stacat +120=Rev Goblin +121=FantasySitar +122=Rising Sun +123=Green Tea +124=Jimmy's Koto +125=Fly 2 India +126=IndianSpirit +127=Gt/BsNz MENU +[96:0:Classical Set Bank 0] +000=Piano 1 +001=Piano 2 +002=Piano 3 +003=Honky-tonk +004=E.Piano 1 +005=E.Piano 2 +006=Harpsichord +007=Clav +008=Celesta +009=Glockenspiel +010=Music Box +011=Vibraphone +012=Marimba +013=Xylophone +014=Tubular-bell +015=Santur +016=Organ 1 +017=Organ 2 +018=Organ 3 +019=Church 1 +020=Reed Organ +021=Accordion F +022=Harmonica +023=Bandneon +024=Nylon Gt +025=Steel-str.Gt +026=Jazz Gt +027=Clean Rear +028=Muted Gt +029=Overdrive Gt +030=DistortionGt +031=Gt.Harmonics +032=Acoustic Bs +033=Fingered Bs +034=Picked Bass +035=Fretless Bs +036=Slap Bass 1 +037=Slap Bass 2 +038=Synth Bass 1 +039=Synth Bass 2 +040=Violin +041=Viola +042=Cello +043=Contrabass +044=Tremolo Str +045=Pizzicato +046=Harp +047=Timpani +048=Strings +049=Slow Strings +050=Syn.Strings1 +051=Syn.Strings2 +052=Choir Aahs +053=Voice Oohs +054=SynVox +055=Orchestrahit +056=Trumpet +057=Trombone +058=Tuba +059=MuteTrumpet +060=French Horns +061=Brass 1 +062=SynthBrass 1 +063=SynthBrass 2 +064=Soprano Sax +065=Alto Sax +066=Tenor Sax +067=Bariton Sax +068=Oboe +069=EnglishHorn +070=Bassoon +071=Clarinet +072=Piccolo +073=Flute +074=Recorder +075=Pan Flute +076=Bottle Blow +077=Shakuhachi +078=Whistle +079=Ocarina +080=Square Wave +081=Saw Wave +082=Syn.Calliope +083=Chiffer Lead +084=Charang +085=Solo Vox +086=5th SawWave +087=Bass & Lead +088=Fantasia +089=Warm Pad +090=Polysynth +091=SpaceVoice +092=BowedGlass +093=Metal Pad +094=Halo Pad +095=Sweep Pad +096=Ice Rain +097=Soundtrack +098=Crystal +099=Atmosphere +100=Brightness +101=Goblin +102=Echo Drops +103=Star Theme +104=Sitar +105=Banjo +106=Shamisen +107=Koto +108=Kalimba +109=Bag Pipe +110=Fiddle +111=Shanai +112=Tinkle Bell +113=Agogo +114=Steel Drums +115=Woodblock +116=Taiko +117=Melo.Tom 1 +118=Synth Drum +119=Reverse Cym +120=GtFret Noise +121=Breath Noise +122=Seashore +123=Bird Tweet +124=Telephone +125=Helicopter +126=Applause +127=Gunshot +[96:1:Classical Set Bank 1] +000=Piano 1w +001=Piano 2w +002=Piano 3w +003=Honky-tonk w +004=Detuned EP1 +005=Detuned EP2 +006=Coupl hps +007=Pulse Clav +011=Vibraphone w +012=Marimba w +014=Church Bell +016=Detuned Or1 +017=Detuned Or2 +019=Church 2 +020=Puff Organ +021=Accordion I +024=Ukulele +025=12-Str.Gt +026=Pedal Steel +027=Clean Half +028=Funk Gt +029=Gt.Pinch +030=Feedback Gt +031=Gt.Feedback +033=FingerJ.Bass +038=SynthBass101 +039=Beef FM Bs +040=Slow Violin +046=Yangqin +048=Orchestra +050=Syn.Strings3 +052=Choir Aahs 2 +053=Hamming +054=Ana Voice +055=Bass Hit +056=Dark Trumpet +057=Trombone 2 +059=MuteTrumpet2 +060=Fr.Horn +061=Brass 2 +062=SynthBrass 3 +063=SynthBrass 4 +080=Square +081=Saw +084=Wire Lead +087=DelayedLead +089=Sine Pad +091=Itopia +098=Syn Mallet +102=Echo Bell +104=Sitar 2 +107=Taisho Koto +115=Castanet +116=Concert BD +117=Melo.Tom 2 +118=808 tom +120=Gt.Cut Noise +121=Fl.Key Click +122=Rain +123=Dog +124=Telephone 2 +125=Car-Engine +126=Laughing +127=Machine Gun +[96:2:Classical Set Bank 2] +000=Piano 1d +004=Dyno Rhodes +005=E.Piano 2v +006=Harpsi w +014=Carillon +016=Organ 60 +017=Organ 5 +019=Church 3 +024=Nylon o +025=Mandolin +027=Mid Tone Gt +028=Funk Gt 2 +031=DistRythm Gt +038=Acid Bass +039=Rubber Bass +048=60'Strings +055=6th Hit +057=Brite Bone +062=Oct.SynBrass +063=Velo Brass +080=Sine Wave +081=Doctor Solo +102=Echo Pan +118=Elec Perc +120=Slap_St.Bass +122=Thunder +123=Horse Gallop +124=Door Creak +125=Car-Stop +126=Screaming +127=Lasergun +[96:3:Classical Set Bank 3] +004=60's E.Piano +005=EP Legend +006=Harpsi o +016=Organ 4 +024=Nylon Gt.2 +025=Steel+Body +028=Jazz Man +038=Clavi Bass +039=Attack Pulse +055=Euro Hit +062=Jump Brass +081=Natural Lead +122=Wind +123=Bird Tweet 2 +124=Door +125=Car-Pass +126=Punch +127=Explosion +[96:4:Classical Set Bank 4] +005=EP Phase +038=Hammer +081=SequencedSaw +122=Stream +124=Scratch +125=Car-Crash +126=Heart Beat +[96:5:Classical Set Bank 5] +122=Bubble +124=Wind Chimes +125=Siren +126=Footsteps +[96:6:Classical Set Bank 6] +125=Train +[96:7:Classical Set Bank 7] +125=Jetplane +[96:8:Classical Set Bank 8] +125=Starship +[96:9:Classical Set Bank 9] +125=Burst Noise +[97:0:Contemporary Set Bank 0] +000=Ac.Piano +001=Rock Piano +002=E.Grand Pf +003=Old Honky +004=Soft Rhodes +005=FM E.Piano +006=Harpsi 2 +007=Atack Clav 1 +008=Celesta 2 +009=Glocken 2 +010=Music Box 2 +011=Vibraphone 2 +012=Marimba 2 +013=Xylophone 2 +014=Tubular-bel2 +015=Santur 2 +016=Perky +017=Jazz Organ 1 +018=Organ 3 fast +019=Pipe Organ 1 +020=Reed Organ 2 +021=French Acc +022=Harmonica 2 +023=Bandneon 1 +024=Nylon Gt 2 +025=OV Steel Gt +026=Jazz Gt 2 +027=TC Rear +028=TC Mute Gt +029=Atk Drive Gt +030=Atk Dist Gt +031=Gt.Harm 2 +032=Rockabilly +033=Fingered Bs2 +034=Picked Jz Bs +035=Fretless Bs2 +036=Slap Pop 1 +037=Funky Slap +038=MG303 Bass +039=Seq101 Bass +040=Violin vib +041=Viola vib +042=Cello vib +043=Cb vib +044=Tremolo Str2 +045=Pizzicato 2 +046=Harp 2 +047=Timpani 2 +048=Strings 2 +049=SlowStrings2 +050=BriteSyn.Str +051=Warm SynStr1 +052=Large Choir +053=Voice Oohs 2 +054=SynVox 2 +055=Orc Hit 2 +056=Solo Trumpet +057=Solo Bone +058=Tuba 2 +059=MuteTrumpet2 +060=FrenchHorns2 +061=Brass FF +062=JP Syn.Brass +063=MG Syn.Horn +064=Soprano Sax2 +065=Breathy Alto +066=BreathyTenor +067=Barely Bari +068=Brite Oboe +069=EnglishHorn2 +070=Bassoon 2 +071=Br.Clarinet +072=Piccolo 2 +073=Flute 2 +074=Recorder 2 +075=Pan Flute 2 +076=Bottle Blow2 +077=Shakuhachi 2 +078=Whistle 2 +079=Ocarina 2 +080=MG Square +081=JP Saw Wave +082=SynCalliope2 +083=ChifferLead2 +084=Charang 2 +085=Solo Vox 2 +086=5th SawWave2 +087=Bass & Lead2 +088=Fantasia 2 +089=Warm Pad 2 +090=Polysynth 2 +091=SpaceVoice 2 +092=BowedGlass 2 +093=Metal Pad 2 +094=Halo Pad 2 +095=Sweep Pad 2 +096=Ice Rain 2 +097=Soundtrack 2 +098=Crystal 2 +099=Atmosphere 2 +100=Brightness 2 +101=Goblin 2 +102=Echo Drops 2 +103=Star Theme 2 +104=Atk Sitar +105=Banjo 2 +106=Shamisen 2 +107=Koto 2 +108=Kalimba 2 +109=Bag Pipe 2 +110=Fiddle vib +111=Shanai 2 +112=Tinkle Bell +113=Agogo +114=Steel Drums +115=Woodblock +116=Taiko +117=Melo.Tom 1 +118=Synth Drum +119=Reverse Cym +120=GtFret Noise +121=Breath Noise +122=Seashore +123=Bird Tweet +124=Telephone +125=Helicopter +126=Applause +127=Gunshot +[97:1:Contemporary Set Bank 1] +000=Ac.Piano w +001=Rock Piano w +002=E.Grand Pf w +003=Old Honky w +004=Fat Rhodes +005=Soft FM EP +006=Coupl hps 2 +007=AnalogClav 1 +011=Vibraphone2w +012=Marimba 2 w +014=Church Bell2 +016=Ballad B +017=Perc.Organ 1 +019=LargeChurch1 +020=Organ Flute +021=It Muset +024=Ukulele 2 +025=12-Str.Gt 2 +026=Pedal Steel2 +027=TC Front +028=FunkGt Slap +029=Gt.Pinch 2 +030=FeedbackGt 2 +031=FeedbackOct +033=FingerP.Bass +038=MG Bass +039=Beef Slap Bs +040=Slow Vln vib +046=Yangqin 2 +048=Orchestra 2 +050=Oct.SynStr 1 +052=Small Choir +053=Hamming 2 +054=Ana Voice 2 +055=Bass Hit 2 +056=Mild Trumpet +057=Solo Bone 2 +059=Harmon Mute +060=MildFr.Horns +061=BrassSection +062=JPSyn.Brass2 +063=OB Syn.Horn +080=Fat Square +081=MG Saw +084=Wire Lead 2 +087=DelayedLead2 +089=Sine Pad 2 +091=Itopia 2 +098=Syn Mallet 2 +102=Echo Bell 2 +104=Atk Sitar 2 +107=Taisho Koto2 +115=Castanet +116=Concert BD +117=Melo.Tom 2 +118=808 tom +120=Gt.Cut Noise +121=Fl.Key Click +122=Rain +123=Dog +124=Telephone 2 +125=Car-Engine +126=Laughing +127=Machine Gun +[97:2:Contemporary Set Bank 2] +000=Mild Piano +004=Rhodes Wide +005=SA E.Piano +006=Harpsi 2 w +014=Carillon 2 +016=Happy 60s +017=Dist.JzOrg 1 +019=SmallChurch1 +024=Nylon 2 o +025=Mandolin 2 +027=TC Front 2 +028=Funk Pop +031=Muted Dist +038=MG Acid Bass +039=Rubber Bass2 +048=Oct.Strings +055=6th Hit 2 +057=Brite Bone 2 +062=OctSynBrass2 +063=CS Syn.Brass +080=2600 Sine +081=Fat Saw Solo +102=Echo Pan 2 +118=Elec Perc +120=Slap_St.Bass +122=Thunder +123=Horse Gallop +124=Door Creak +125=Car-Stop +126=Screaming +127=Lasergun +[97:3:Contemporary Set Bank 3] +004=Wurly Soft +005=EP Legend 2 +006=Harpsi 2 o +016=Tone Wheel +024=Hard Gut Gt +025=Steel+Body 2 +028=Mute Jazz Gt +038=Clavi Bass 2 +039=Attack Saw +055=Euro Hit 2 +062=80's Brass +081=P5 Saw Lead +122=Wind +123=Bird Tweet 2 +124=Door +125=Car-Pass +126=Punch +127=Explosion +[97:4:Contemporary Set Bank 4] +005=EP Phase 2 +038=OB Hammer +081=MG Sequence +122=Stream +124=Scratch +125=Car-Crash +126=Heart Beat +[97:5:Contemporary Set Bank 5] +122=Bubble +124=Wind Chimes +125=Siren +126=Footsteps +[97:6:Contemporary Set Bank 6] +125=Train +[97:7:Contemporary Set Bank 7] +125=Jetplane +[97:8:Contemporary Set Bank 8] +125=Starship +[97:9:Contemporary Set Bank 9] +125=Burst Noise +[98:0:Solo Set Bank 0] +000=St.Piano 1 +001=St.Piano 2 +002=SA Piano +003=St.Honky +004=Tremo Rhodes +005=FM Hard EP +006=St.Harpsichd +007=Atack Clav 2 +008=St.Celesta +009=St.Glocken +010=St.Music Box +011=St.Vibra +012=St.Marimba +013=St.Xylophone +014=St.Tubular +015=St.Santur +016=Roller +017=Jazz Organ 2 +018=Rock Organ +019=Pipe Organ 2 +020=Reed Organ 3 +021=St.FrenchAcc +022=St.Harmonica +023=St.Bandneon +024=Nylon Gt 3 +025=SteelStr.Gt2 +026=Jazz Gt 3 +027=Strat2 Rear +028=TC Mute Gt 2 +029=OverdriveGt2 +030=Dist.Gt 2 +031=Gt.OctHarm +032=Fat Aco.Bass +033=Jazz Bass +034=Picking Bass +035=PhaseFrtless +036=Jazz Slap +037=Slap Pop 2 +038=Fat Syn.Bass +039=Sq SynthBass +040=Violin 2 vib +041=Viola2 vib +042=Cello2 vib +043=Cb2 vib +044=St.Trem Str +045=St.Pizzicato +046=St.Harp +047=St.Timpani +048=St.Strings +049=St.Slow Str +050=StackSyn.Str +051=Warm SynStr2 +052=St.ChoirAahs +053=St.Vox Oohs +054=St.SynVox +055=St.Orc Hit +056=Romantic Tp +057=Trombone vib +058=Tuba vib +059=Solo MutedTp +060=St.Fr Horns +061=St.Brass +062=Hyper Brass +063=Warm SynHorn +064=Sop.Sax vib +065=AltoSoft vib +066=Blow Tenor +067=Bari.Sax vib +068=Classic Oboe +069=E.Horn vib +070=Bassoon vib +071=JazzClarinet +072=Piccolo vib +073=Flute vib +074=Recorder vib +075=Pan Flute vib +076=Bottle vib +077=Shaku.vib +078=Whistle vib +079=Ocarina vib +080=OB Square +081=Oct.JP Saw +082=SynCalliope3 +083=ChifferLead3 +084=Charang 3 +085=Solo Vox 3 +086=5th SawWave3 +087=Bass & Lead3 +088=Fantasia 3 +089=Warm Pad 3 +090=Polysynth 3 +091=SpaceVoice 3 +092=BowedGlass 3 +093=Metal Pad 3 +094=Halo Pad 3 +095=Sweep Pad 3 +096=Ice Rain 3 +097=Soundtrack 3 +098=Crystal 3 +099=Atmosphere 3 +100=Brightness 3 +101=Goblin 3 +102=Echo Drops 3 +103=Star Theme 3 +104=St.Sitar +105=St.Banjo +106=St.Shamisen +107=St.Koto +108=St.Kalimba +109=St.Bag Pipe +110=Fiddle 2 vib +111=St.Shanai +112=Tinkle Bell +113=Agogo +114=Steel Drums +115=Woodblock +116=Taiko +117=Melo.Tom 1 +118=Synth Drum +119=Reverse Cym +120=GtFret Noise +121=Breath Noise +122=Seashore +123=Bird Tweet +124=Telephone +125=Helicopter +126=Applause +127=Gunshot +[98:1:Solo Set Bank 1] +000=St.Piano 1w +001=St.Piano 2w +002=SA Piano w +003=St.Honky w +004=Sweet Tynes +005=Brite FM EP +006=St.Coupl hps +007=AnalogClav 2 +011=St.Vibra w +012=St.Marimba w +014=St.Church +016=Rocker +017=Perc.Organ 2 +019=LargeChurch2 +020=Theater +021=St.It Muset +024=Ukulele 3 +025=12-Str.Gt 3 +026=Pedal Steel3 +027=Chorus Clean +028=FunkGt.Slap2 +029=Gt.Pinch 3 +030=Feedback OD +031=FeedbackHarm +033=Finger Slap +038=SynthSaw Bs +039=Beef Saw Bs +040=SlowVln2 vib +046=St.Yangqin +048=St.Orchestra +050=Oct.SynStr 2 +052=St.Sm Choir +053=St.Hamming +054=Ana Voice 3 +055=St.Bass Hit +056=Tp.Dark vib +057=Trombone2vib +059=Harmon Mute2 +060=St.Fr Horns2 +061=St.Brass 2 +062=Stack Brass +063=Rich SynHorn +080=Fat Square2 +081=Hybrid Saw +084=Wire Lead 3 +087=DelayedLead3 +089=Sine Pad 3 +091=Itopia 3 +098=Syn Mallet 3 +102=Echo Bell 3 +104=St.Sitar 2 +107=St.T Koto +115=Castanet +116=Concert BD +117=Melo.Tom 2 +118=808 tom +120=Gt.Cut Noise +121=Fl.Key Click +122=Rain +123=Dog +124=Telephone 2 +125=Car-Engine +126=Laughing +127=Machine Gun +[98:2:Solo Set Bank 2] +000=European Pf +004=Tremo Dyno +005=Brite FM EP2 +006=St.Harpsi w +014=St.Carillon +016=Soft60'Organ +017=Dist.JzOrg 2 +019=SmallChurch2 +024=Nylon 3 o +025=Mandolin 3 +027=335 +028=Funk Pop 2 +031=Muted Dist 2 +038=AcidBs Dirty +039=JpSaw Rubber +048=St.OctStr 1 +055=St.6th Hit +057=Br.Bone vib +062=OctSynBrass3 +063=P5 Syn.Brass +080=2600 Sine 2 +081=Hybrid Solo +102=Echo Pan 3 +118=Elec Perc +120=Slap_St.Bass +122=Thunder +123=Horse Gallop +124=Door Creak +125=Car-Stop +126=Screaming +127=Lasergun +[98:3:Solo Set Bank 3] +004=Tremo Wurly +005=EP Legend 3 +006=St.Harpsi o +016=Full Stops +024=Hard Gut Gt2 +025=Steel+Body 3 +028=Slap Jazz Gt +038=Clavi Bass 3 +039=Attack MG Bs +055=St.Euro Hit +062=SuperSaw Brs +081=MG Saw Lead +122=Wind +123=Bird Tweet 2 +124=Door +125=Car-Pass +126=Punch +127=Explosion +[98:4:Solo Set Bank 4] +005=EP Phase 3 +038=MG Hammer +081=DelaySeqence +122=Stream +124=Scratch +125=Car-Crash +126=Heart Beat +[98:5:Solo Set Bank 5] +122=Bubble +124=Wind Chimes +125=Siren +126=Footsteps +[98:6:Solo Set Bank 6] +125=Train +[98:7:Solo Set Bank 7] +125=Jetplane +[98:8:Solo Set Bank 8] +125=Starship +[98:9:Solo Set Bank 9] +125=Burst Noise +[99:0:Enhanced Set Bank 0] +000=SD Piano +001=Enh.Piano 2 +002=Enh.E Grand +003=Brite Honky +004=Stage 73 +005=Chorus EP +006=Enh.Harpsi +007=Comp Clav +008=SpaceCelesta +009=Trem.Glocken +010=Panning Box +011=Trem.Vibra +012=Enh.Marimba +013=Enh.Xylophon +014=Trem.Tubula +015=Enh.Santur +016=Perky Spin +017=Jazzy Spin +018=Rocker Spin +019=Amb.Church +020=Old Reed Org +021=Enh.French +022=Ld.Harmonica +023=Enh.Bandneon +024=Enh.Nylon Gt +025=Comp OVSteel +026=Lead Jazz Gt +027=Old Clean Gt +028=Comp Mute Gt +029=TC Lead Gt +030=Heavy DistGt +031=Amp.Harm +032=Enh Aco.Bass +033=Pre Bass +034=Rock Bass +035=Cho.Fretless +036=Phase Slap +037=Enh.Slap Pop +038=Dist303 Bass +039=PhaseSq Bass +040=Enh.Violin +041=Enh.Viola +042=Enh.Cello +043=Enh.Cb +044=St.Trem Str2 +045=Chorus Pizz +046=Chorus Harp +047=Enh.Timpani +048=St.Strings 2 +049=St.Slow Str2 +050=JP Strings +051=OB Strings +052=Rich Choir +053=Enh.Vox Oohs +054=Phase SynVox +055=Enh.Orc Hit +056=Enh.Trumpet +057=Enh.Trombone +058=Chorus Tuba +059=Enh.Muted Tp +060=Enh.StFrHorn +061=St.Big Brass +062=SuperJP Brs1 +063=WarmSynHorn2 +064=Enh.Sop Sax +065=Enh.Alto Sax +066=Enh.TenorSax +067=Enh.Bari Sax +068=Enh. Oboe +069=Enh.E Horn +070=Enh.Bassoon +071=Jz.Clarinet2 +072=Enh.Piccolo +073=Enh.Flute +074=Enh.Recorder +075=Cho.PanFlute +076=Phase Bottle +077=Delay Shaku +078=DelayWhistle +079=DelayOcarina +080=OBSquareLead +081=KeySync Saw +082=LeadCalliope +083=Chiffers +084=Charang Lead +085=Solo Vox Lead +086=Flanging 5th +087=Phase BsLead +088=New Fantasia +089=Phase Pad +090=KeySyncSynth +091=Phase Voices +092=Ring Glass +093=Space Pad +094=Phase Halo +095=Flanging Pad +096=Reverse Rain +097=Phase Track +098=3D Crystal +099=Pan Atmos +100=Bright Star +101=Rev Goblin +102=Delay Drops +103=Phase Theme +104=Enh.Sitar +105=St.Banjo 2 +106=St.Shamisen2 +107=St.Koto 2 +108=Trem.Kalimba +109=Enh.Bag Pipe +110=Enh.Fiddle +111=Enh.Shanai +112=Tinkle Bell +113=Agogo +114=Steel Drums +115=Woodblock +116=Taiko +117=Melo.Tom 1 +118=Synth Drum +119=Reverse Cym +120=GtFret Noise +121=Breath Noise +122=Seashore +123=Bird Tweet +124=Telephone +125=Helicopter +126=Applause +127=Gunshot +[99:1:Enhanced Set Bank 1] +000=SD Piano w +001=Enh.Piano 2w +002=Enh.E Grandw +003=Brite Honkyw +004=NY Rhodes +005=Phase FM EP +006=Enh.Coupl hp +007=Wah Ana.Clav +011=Trem.Vibra w +012=Enh.Marimbaw +014=Echo Church +016=Gospel Spin +017=Jazzy Spin 2 +019=Amb.Church 2 +020=Enh.Theater +021=Enh.ItMuset +024=Enh.Ukulele +025=3D 12-Str.Gt +026=Hawaian Gt +027=Jazz Chorus +028=Enh.Funk Gt +029=Gt.PinchLead +030=Feedbacker +031=Amp.FeedBack +033=Comp Finger +038=P.Shift Bass +039=Enh.Beef Bs +040=Enh.Slow Vln +046=Enh.Yangqin +048=St.Orchestr2 +050=PhaseSyn.Str +052=St.Sm Choir2 +053=Enh.Hamming +054=Lead Ana.Vox +055=PhaseBassHit +056=Warm Trumpet +057=Enh.Bone 2 +059=Enh.MutedTp2 +060=Warm Horns2 +061=Enh.Brs Sect +062=Lead Brass +063=Phase Horn +080=Phase Square +081=Flanging Saw +084=Phase Wire +087=Suffle Lead +089=Chorus Sine +091=Pan Itopia +098=Phase Mallet +102=Delay Bell +104=FantasySitar +107=St.T Koto 2 +115=Castanet +116=Concert BD +117=Melo.Tom 2 +118=808 tom +120=Gt.Cut Noise +121=Fl.Key Click +122=Rain +123=Dog +124=Telephone 2 +125=Car-Engine +126=Laughing +127=Machine Gun +[99:2:Enhanced Set Bank 2] +000=Classic Pf +004=Phase Dyno +005=Wah FM EP +006=Enh.Harpsi w +014=Trm.Carillon +016=96 Year +017=Jazzy Spin 3 +019=Amb.Church 3 +024=Enh.Nylon o +025=Enh.Mandolin +027=335 Drive +028=Wah Funk Pop +031=Muted OD +038=Acid Dist Bs +039=Fat JpSaw Bs +048=St.OctStr 2 +055=Dly.6th Hit +057=Enh.Br Bone +062=Phase OctBrs +063=Fat Pro Bras +080=Sine Lead +081=Doctor Lead +102=Delay Pan 3 +118=Elec Perc +120=Slap_St.Bass +122=Thunder +123=Horse Gallop +124=Door Creak +125=Car-Stop +126=Screaming +127=Lasergun +[99:3:Enhanced Set Bank 3] +004=Whirly +005=Enh.Legend +006=Enh.Harpsi o +016=Tone Wh.Solo +024=Enh.Gut Gt +025=DelayedSteel +028=Solo Jazz Gt +038=PhaseClaviBs +039=Enh.MG Bass +055=Dly.Euro Hit +062=SuperJP Brs2 +081=Fat Saw Lead +122=Wind +123=Bird Tweet 2 +124=Door +125=Car-Pass +126=Punch +127=Explosion +[99:4:Enhanced Set Bank 4] +005=Phasing EP +038=Enh.Hammer +081=PhaseSeqence +122=Stream +124=Scratch +125=Car-Crash +126=Heart Beat +[99:5:Enhanced Set Bank 5] +122=Bubble +124=Wind Chimes +125=Siren +126=Footsteps +[99:6:Enhanced Set Bank 6] +125=Train +[99:7:Enhanced Set Bank 7] +125=Jetplane +[99:8:Enhanced Set Bank 8] +125=Starship +[99:9:Enhanced Set Bank 9] +125=Burst Noise +[104:0:Classical Set Drums] +000=Standard Set +008=Room Set +016=Power Set +024=Electro Set +025=Analog Set +032=Jazz Set +040=Brush Set +048=OrchestraSet +056=SFX Set +[105:0:Contemporary Set Drums] +000=StandardSet2 +008=Room Set 2 +016=Power Set 2 +024=Dance Set +025=Rave Set +032=Jazz Set 2 +040=Brush Set 2 +048=OrchestraSet +056=SFX Set +[106:0:Solo Set Drums] +000=St.Standard +008=St.Room +016=St.Power +024=Rust Set +025=Analog2 Set +032=St.Jazz +040=St.Brush +048=OrchestraSet +056=SFX Set +[107:0:Enhanced Set Drums] +000=Amb.Standard +008=Amb.Room +016=Gated Power +024=Techno Set +025=Bully Set +032=Amb.Jazz +040=Amb.Brush +048=OrchestraSet +056=SFX Set +ENDMAP diff --git a/qmidiplayer-desktop/qmpchanneleditor.cpp b/qmidiplayer-desktop/qmpchanneleditor.cpp index 71dd455..fbe3d50 100644 --- a/qmidiplayer-desktop/qmpchanneleditor.cpp +++ b/qmidiplayer-desktop/qmpchanneleditor.cpp @@ -26,7 +26,12 @@ void qmpChannelEditor::setupWindow(int chid) setWindowTitle(tr("Channel Parameter Editor - Channel #%1").arg(ch+1)); CMidiPlayer* player=qmpMainWindow::getInstance()->getPlayer(); uint16_t b;uint8_t p;std::string pstn; - player->getChannelOutputDevice(ch)->getChannelPreset(ch,&b,&p,pstn); + if(!player->getChannelOutputDevice(ch)->getChannelPreset(ch,&b,&p,pstn)) + { + b=player->getCC(ch,0)<<7|player->getCC(ch,32); + p=player->getCC(ch,128); + pstn=player->getChannelOutputDevice(ch)->getPresetName(b,p); + } ui->lbPresetName->setText(pstn.c_str()); sprintf(str,"BK: %03d",b);ui->lbBank->setText(str); sprintf(str,"PC: %03d",p);ui->lbPreset->setText(str); diff --git a/qmidiplayer-desktop/qmppresetselect.cpp b/qmidiplayer-desktop/qmppresetselect.cpp index 6683e49..578ae1d 100644 --- a/qmidiplayer-desktop/qmppresetselect.cpp +++ b/qmidiplayer-desktop/qmppresetselect.cpp @@ -112,7 +112,6 @@ void qmpPresetSelector::on_lwPresetSelect_itemDoubleClicked() void qmpPresetSelector::on_lwBankSelect_currentRowChanged() { - fprintf(stderr,"bs cr changed\n"); ui->lwPresetSelect->clear(); if(!ui->lwBankSelect->currentItem())return; char name[256];int b; -- cgit v1.2.3