Passing char to a function

#include <Arduino.h>
#ifdef ARDUINO_M5STACK_Core2
  #include <M5Core2.h>
  #include <driver/i2s.h>
#else
  #include <M5Stack.h>
#endif

#include "AudioFileSourceSD.h"
#include "AudioFileSourceID3.h"
#include "AudioGeneratorWAV.h"
#include "AudioOutputI2S.h"

AudioGeneratorWAV *wav;
AudioFileSourceSD *file;
AudioOutputI2S *out;
AudioFileSourceID3 *id3;
bool playing = false;
#define OUTPUT_GAIN 40

//////sound file////
void playWAV (char effect, int volume)
{
  Serial.println("Entered playWAV");

  switch (effect)
  {
    case 'a':
      file = new AudioFileSourceSD("/wav/alarm.wav");
      break;

    case 'b':
      file = new AudioFileSourceSD("/wav/alarmhigh.wav");
      break;

    case 'c':
      file = new AudioFileSourceSD("/wav/alarmlow.wav");
      break;

    case 'd':
      file = new AudioFileSourceSD("/wav/error.wav");
      break;
  
    case 'e':
      file = new AudioFileSourceSD("/wav/error1.wav");
      break;
  
    case 'f':
      file = new AudioFileSourceSD("/wav/noread.wav");
      break;
      
    case 'g':
      file = new AudioFileSourceSD("/wav/noreadings.wav");
      break;
      
    case 'h':
      file = new AudioFileSourceSD("/wav/normalrange.wav");
      break;
      
    case 'i':
      file = new AudioFileSourceSD("/wav/warning.wav");
      break;

    case 'j':
      file = new AudioFileSourceSD("/wav/warninghigh.wav");
      break;
      
    case 'k':
      file = new AudioFileSourceSD("/wav/warninglow.wav");
      break;
      
    case 'l':
      file = new AudioFileSourceSD("/wav/startup.wav");
      break;  

      case 'm':
      file = new AudioFileSourceSD("/wav/startup.wav");
      break;      
      
      case 'n':
      file = new AudioFileSourceSD("/wav/update.wav");
      break;      
      }
////conditions////
//////////////////////CONFIG STATE///////////////////////
void handleAlarmsInfoLine(struct NSinfo *ns) {
  struct tm timeinfo;

  // calculate sensor time difference
  // calculate last alarm time difference
  int sensorDifSec=24*60*60; // too much
  int alarmDifSec=24*60*60; // too much
  int snoozeRemaining = 0;
  bool timeOK = getLocalTime(&timeinfo);
  if(timeOK){
    sensorDifSec=difftime(mktime(&timeinfo), ns->sensTime);
    alarmDifSec=difftime(mktime(&timeinfo), lastAlarmTime);
    if(timeOK) {
      snoozeRemaining = difftime(snoozeUntil, mktime(&timeinfo));
      if(snoozeRemaining < 0)
        snoozeRemaining = 0;
    }
  }
  unsigned int sensorDifMin = (sensorDifSec+30)/60;

  Serial.print("Alarm time difference = "); Serial.print(alarmDifSec); Serial.println(" sec");
  Serial.print("Snooze time remaining = "); Serial.print(snoozeRemaining); Serial.print(" sec, Snooze until "); Serial.println(snoozeUntil);
  char tmpStr[10];
  M5.Lcd.setTextDatum(TL_DATUM);
  if( snoozeRemaining>0 ) {
    sprintf(tmpStr, "%i", (snoozeRemaining+59)/60);
    if(dispPage<maxPage)
      drawIcon(icon_xpos[1], icon_ypos[1], (uint8_t*)clock_icon16x16, TFT_RED);
  } else {
    strcpy(tmpStr, "Snooze");
    if(dispPage<maxPage)
      M5.Lcd.fillRect(icon_xpos[1], icon_ypos[1], 16, 16, BLACK);
  }
  M5.Lcd.setTextSize(1);
  M5.Lcd.setFreeFont(FSSB12);
  // prapare intensity variables for LED strip brightness
  int maxint = 255;
  maxint *= cfg.LED_strip_brightness;
  maxint /= 100;
  int lessint = 192;
  lessint *= cfg.LED_strip_brightness;
  lessint /= 100;
  // Serial.print("sensSgv="); Serial.print(sensSgv); Serial.print(", cfg.snd_alarm="); Serial.println(cfg.snd_alarm);
  if((ns->sensSgv<=cfg.snd_alarm) && (ns->sensSgv>=0.1)) {
    // red alarm state
    // M5.Lcd.fillRect(110, 220, 100, 20, TFT_RED);
    Serial.println("ALARM LOW");
    M5.Lcd.fillRect(0, 220, 320, 20, TFT_RED);
    M5.Lcd.setTextColor(TFT_BLACK, TFT_RED);
    int stw=M5.Lcd.textWidth(tmpStr);
    M5.Lcd.drawString(tmpStr, 159-stw/2, 220, GFXFF);
    if( (alarmDifSec>cfg.alarm_repeat*60) && (snoozeRemaining<=0) ) {
        sndAlarm();
        alarm_low = true;
        
        lastAlarmTime = mktime(&timeinfo);
          red();
    }
    
  } else {
    if((ns->sensSgv<=cfg.snd_warning) && (ns->sensSgv>=0.1)) {
      // yellow warning state
      // M5.Lcd.fillRect(110, 220, 100, 20, TFT_YELLOW);
      Serial.println("WARNING LOW");
      M5.Lcd.fillRect(0, 220, 320, 20, TFT_YELLOW);
      M5.Lcd.setTextColor(TFT_BLACK, TFT_YELLOW);
      int stw=M5.Lcd.textWidth(tmpStr);
      M5.Lcd.drawString(tmpStr, 159-stw/2, 220, GFXFF);
      if( (alarmDifSec>cfg.alarm_repeat*60) && (snoozeRemaining<=0) ) {
        sndWarning();
        warn_low = true;
        lastAlarmTime = mktime(&timeinfo);
      yellow();
      }
      
    } else {
      if( ns->sensSgv>=cfg.snd_alarm_high ) {
        // red alarm state
        // M5.Lcd.fillRect(110, 220, 100, 20, TFT_RED);
        Serial.println("ALARM HIGH");
        M5.Lcd.fillRect(0, 220, 320, 20, TFT_RED);
        M5.Lcd.setTextColor(TFT_BLACK, TFT_RED);
        int stw=M5.Lcd.textWidth(tmpStr);
        M5.Lcd.drawString(tmpStr, 159-stw/2, 220, GFXFF);
        if( (alarmDifSec>cfg.alarm_repeat*60) && (snoozeRemaining<=0) ) {
          sndAlarm();
          alarm_high = true;
          lastAlarmTime = mktime(&timeinfo);
       red();}
      } else {
        if( ns->sensSgv>=cfg.snd_warning_high ) {
          // yellow warning state
          // M5.Lcd.fillRect(110, 220, 100, 20, TFT_YELLOW);
          Serial.println("WARNING HIGH");
          M5.Lcd.fillRect(0, 220, 320, 20, TFT_YELLOW);
          M5.Lcd.setTextColor(TFT_BLACK, TFT_YELLOW);
          int stw=M5.Lcd.textWidth(tmpStr);
          M5.Lcd.drawString(tmpStr, 159-stw/2, 220, GFXFF);
          if( (alarmDifSec>cfg.alarm_repeat*60) && (snoozeRemaining<=0) ) {
            sndWarning();
            warn_high = true;
            lastAlarmTime = mktime(&timeinfo);
          yellow();
          
          }
        } else {
          if( sensorDifMin>=cfg.snd_no_readings ) {
            // LONG TIME NO READINGS -> yellow warning state
            // M5.Lcd.fillRect(110, 220, 100, 20, TFT_YELLOW);
            Serial.println("WARNING NO READINGS");
            M5.Lcd.fillRect(0, 220, 320, 20, TFT_CYAN);
            M5.Lcd.setTextColor(TFT_BLACK, TFT_CYAN);
            int stw=M5.Lcd.textWidth(tmpStr);
            M5.Lcd.drawString(tmpStr, 159-stw/2, 220, GFXFF);
            if( (alarmDifSec>cfg.alarm_repeat*60) && (snoozeRemaining<=0) ) {
              no_readings = true;
              sndnoreadings();
              
              lastAlarmTime = mktime(&timeinfo);
              cyan();           
            }
          } else {
            if( strstr(ns->loop_display_label,"Err" )>0 ) {
              // LOOP ERROR -> red alarm state
              // M5.Lcd.fillRect(110, 220, 100, 20, TFT_RED);
              Serial.println("LOOP ERROR");
              M5.Lcd.fillRect(0, 220, 320, 20, TFT_RED);
              M5.Lcd.setTextColor(TFT_BLACK, TFT_RED);
              int stw=M5.Lcd.textWidth(tmpStr);
              M5.Lcd.drawString(tmpStr, 159-stw/2, 220, GFXFF);
              M5.Lcd.drawString("LOOP", 2, 220, GFXFF);
              M5.Lcd.drawString("ERR", 267, 220, GFXFF);
              if( (alarmDifSec>cfg.alarm_repeat*60) && (snoozeRemaining<=0) ) {
                sndAlarm();
                lastAlarmTime = mktime(&timeinfo);
              }
              if(cfg.LED_strip_mode>=2) {
                pixels.fill(pixels.Color(maxint, 0, 0));
                pixels.show();
              } else {
                if(cfg.LED_strip_mode==1) {
                  pixels.clear();
                  pixels.show();
                }
              }
            } else {
              // normal glycemia state
              M5.Lcd.fillRect(0, 220, 320, 20, TFT_BLACK);
              M5.Lcd.setTextColor(TFT_LIGHTGREY, TFT_BLACK);
             playWAV('h', 3.0);
              green();
           
  

  //volume/100*35
  //float volumeGain = (float)OUTPUT_GAIN / (volume * 100.0);
  float volumeGain = ((float)volume / 100.0) * 39.0;
  Serial.print("volumeGain:");
  Serial.println(volumeGain);
  id3 = new AudioFileSourceID3(file);
  out = new AudioOutputI2S(0, 0); // Output to builtInDAC
  out->SetPinout(12, 0, 2);
  out->SetOutputModeMono(true);
  out->SetGain(volumeGain);
  wav = new AudioGeneratorWAV();
  wav->begin(id3, out);


void loop()





void alarm_high1(){

if (alarm_high){
   (playWAV('b', 3.0);}
}
void alarm_low1(){

if (alarm_low){
   (playWAV('c', 3.0);
}

void error1(){

if (error){
  (playWAV('e', 3.0);

void no_readings1(){

if (no_readings){
   (playWAV('g', 3.0));
    
}
}
void normal_range1(){

if (normal_range){
(playWAV('h', 3.0);

}

void update1(){
(playWAV('n', 3.0);

}

Its a quick sketch, but should give you an idea, i have the conditions, the loop for detecting if there is a true statement. and the sound cases