Beispiel #1
0
void digi_mixer_play_midi_song(char * filename, char * melodic_bank, char * drum_bank, int loop ) {
  if (!digi_initialised) return;
  if (GameArg.SndNoMusic)
    return;

  mix_set_music_volume(midi_volume);

  oplmus_play(filename, melodic_bank, drum_bank, loop);
#if 0
  jukebox_load(); // update jukebox state

  // quick hack to check if filename begins with "game" -- MD2211
  if (jukebox_is_loaded() && strstr(filename, "game") == filename) {
    // use jukebox
    jukebox_play(loop);
  }
  else {
    // standard song playback
#ifdef _WIN32
    if (!GameArg.SndExternalMusic)
    {
      if ((hmp = hmp_open(filename)))
      {
        hmp_play(hmp,loop);
        digi_midi_song_playing = 1;
        digi_set_midi_volume(midi_volume);
      }
    }
    else
#endif
      mix_play_music(filename, loop);
  }
#endif
}
Beispiel #2
0
//takes volume in range 0..8
//NOTE that we do not check what is playing right now (except Redbook) This is because here we don't (want) know WHAT we're playing - let the subfunctions do it (i.e. digi_win32_set_music_volume() knows if a MIDI plays or not)
void songs_set_volume(int volume)
{
#ifdef _WIN32
    digi_win32_set_midi_volume(volume);
#endif
    if (GameCfg.MusicType == MUSIC_TYPE_REDBOOK)
    {
        RBASetVolume(0);
        RBASetVolume(volume);
    }
#ifdef USE_SDLMIXER
    mix_set_music_volume(volume);
#endif
}
Beispiel #3
0
void digi_mixer_set_midi_volume( int mvolume ) {
#ifdef _WIN32
  int mm_volume;

  if (mvolume < 0)
    midi_volume = 0;
  else if (mvolume > 127)
    midi_volume = 127;
  else
    midi_volume = mvolume;

  // scale up from 0-127 to 0-0xffff
  mm_volume = (midi_volume << 1) | (midi_volume & 1);
  mm_volume |= (mm_volume << 8);

  if (hmp)
    midiOutSetVolume((HMIDIOUT)hmp->hmidi, mm_volume | mm_volume << 16);
#endif
  midi_volume = mvolume;
  if (!digi_initialised) return;
  mix_set_music_volume(mvolume);
}