c ++ - SDL\_Mixer MIDI Volume problemer på Windows Vista/7

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg er ikke rigtig velbevandret i C ++ eller SDL\_Mixer, men jeg stiller dette spørgsmål alligevel på vegne af Doom-fællesskabet. Enkelt sagt, ingen skriftlige Doom source-porte kan synes at regne ud, hvordan man styrer det normale lydvolumen og MIDI lydvolumen uafhængigt af SDL\_Mixer på Windows Vista eller 7. Jeg vil lade James Haley, forfatter af Eternity Engine, sætte det i sine egne ord :



  Synes, at begrebet uafhængigt lydstyrke til indfødte MIDI ikke eksisterer under Windows Vista eller 7, da der bruges MIDI-lydstyrke i enhver applikation, der har dem (inklusive de fleste spil, der bruger SDL\_mixer), påvirker også lydstyrken af ​​digital lydudgang. at justere det relative volumen af ​​musik for komfort umuligt.

  
  Har nogen fundet nogen løsninger på dette? Jeg gætter på det, er det usandsynligt, hvorledes Microsoft synes at have skimpet i hele OS på nogen måde for at styre lydstyrken af ​​individuelle lydenheder separat.



Jeg har hørt om forskellige løsninger, som alle involverer en Timidity-driver, men det kræver, at brugeren går ud over at bare installere spillet på sit system. Den eneste port, som jeg ved om det, løser definitivt problemet er ZDoom, men det bruger GPL -kompatibel FModEx og er således ikke en passende løsning.


Hvis du vil have noget kode at se på, er Chocolate Doom måske den nemmeste Doom source port til at grok og du kan få fat i sin kilde her. [1]


Eventuelle forslag til andre open source lyd og musikbiblioteker ville også være velkomne.

Bedste reference


En løsning ville være at sende med en FluidSynth-aktiveret SDL\_mixer. Du skal også sende en SoundFont2-fil til at gå med den. Heldigvis er der gratis SF2'er derude, og nogle er endda optimeret til Dooms MIDI-filer. Licenser bør ikke være et problem, da SoundFonts er aktiver, ikke kode.


Du indlæser derefter SF2 ved hjælp af Mix\_SetSoundFonts ().

Andre referencer 1


Du kan måske se på forskellige MIDI-biblioteker uden for SDL.


http://wildmidi.sourceforge.net/[2]


http://sourceforge.net/apps/trac/fluidsynth/[3]


http://timidity.sourceforge.net [4]

Andre referencer 2


Jeg opretholder en lignende spilhavn (Afstamning 2), og jeg har stødt på det samme problem. Afaik der er ingen løsning til det, når du bruger SDL\_mixer. En kur for at undgå, at lyden bliver dæmpet, når du slukker for midi-musik, jeg har fundet, er at hente et håndtag til en midlertidig midi-enhed, indstil midi-volumenet til maks, og luk derefter den midlertidige enhed igen.

Andre referencer 3


For længst var den eneste løsning, vi fandt, at bruge noget som PortMIDI. Imidlertid er Quasar of Eternity Engine berømmelse kommet over en pæn løsning:


http://www.doomworld.com/vb/showthread.php?s=u0026amp;postid=1124981#post1124981[5]


Han lægger i grunden SDL\_Mixer i sin egen proces og styrer den med RPC. Meget klog.