Annotation of hatari/src/gui-sdl/dlgSound.c, revision 1.1.1.10

1.1       root        1: /*
                      2:   Hatari - dlgSound.c
                      3: 
                      4:   This file is distributed under the GNU Public License, version 2 or at
                      5:   your option any later version. Read the file gpl.txt for details.
                      6: */
1.1.1.7   root        7: const char DlgSound_fileid[] = "Hatari dlgSound.c : " __DATE__ " " __TIME__;
1.1       root        8: 
                      9: #include "main.h"
                     10: #include "configuration.h"
                     11: #include "dialog.h"
                     12: #include "sdlgui.h"
                     13: #include "file.h"
                     14: #include "sound.h"
                     15: 
                     16: 
                     17: #define DLGSOUND_ENABLE     3
1.1.1.7   root       18: #define DLGSOUND_11KHZ      5
                     19: #define DLGSOUND_12KHZ      6
                     20: #define DLGSOUND_16KHZ      7
                     21: #define DLGSOUND_22KHZ      8
                     22: #define DLGSOUND_25KHZ      9
                     23: #define DLGSOUND_32KHZ      10
                     24: #define DLGSOUND_44KHZ      11
                     25: #define DLGSOUND_48KHZ      12
                     26: #define DLGSOUND_50KHZ      13
1.1.1.10! root       27: #define DLGSOUND_MODEL      15
        !            28: #define DLGSOUND_TABLE      16
        !            29: #define DLGSOUND_LINEAR     17
        !            30: #define DLGSOUND_RECNAME    21
        !            31: #define DLGSOUND_RECBROWSE  22
        !            32: #define DLGSOUND_RECORD     23
        !            33: #define DLGSOUND_EXIT       24
1.1       root       34: 
                     35: 
                     36: static char dlgRecordName[35];
                     37: 
                     38: 
                     39: /* The sound dialog: */
1.1.1.4   root       40: static SGOBJ sounddlg[] =
1.1       root       41: {
1.1.1.10! root       42:        { SGBOX,      0,0,  0, 0, 40,25, NULL },
        !            43:        { SGBOX,      0,0,  1, 1, 38,13, NULL },
1.1.1.9   root       44:        { SGTEXT,     0,0,  4, 2, 13,1, "SOUND" },
                     45:        { SGCHECKBOX, 0,0, 14, 2, 14,1, "Enabled" },
                     46: 
                     47:        { SGTEXT,     0,0,  4, 4, 14,1, "Playback quality:" },
                     48:        { SGRADIOBUT, 0,0,  2, 6, 10,1, "11025 Hz" },
                     49:        { SGRADIOBUT, 0,0,  2, 7, 10,1, "12517 Hz" },
                     50:        { SGRADIOBUT, 0,0,  2, 8, 10,1, "16000 Hz" },
1.1.1.10! root       51:        { SGRADIOBUT, 0,0, 15, 6, 10,1, "22050 Hz" },
        !            52:        { SGRADIOBUT, 0,0, 15, 7, 10,1, "25033 Hz" },
        !            53:        { SGRADIOBUT, 0,0, 15, 8, 10,1, "32000 Hz" },
        !            54:        { SGRADIOBUT, 0,0, 28, 6, 10,1, "44100 Hz" },
        !            55:        { SGRADIOBUT, 0,0, 28, 7, 10,1, "48000 Hz" },
        !            56:        { SGRADIOBUT, 0,0, 28, 8, 10,1, "50066 Hz" },
        !            57: 
        !            58:        { SGTEXT,     0,0,  4,10, 10,1, "YM voices mixing:" },
        !            59:        { SGRADIOBUT, 0,0,  2,12, 10,1, "Math model" },
        !            60:        { SGRADIOBUT, 0,0, 15,12, 10,1, "ST table" },
        !            61:        { SGRADIOBUT, 0,0, 28,12, 10,1, "Linear" },
        !            62: 
        !            63:        { SGBOX,      0,0,  1,15, 38,7, NULL },
        !            64:        { SGTEXT,     0,0, 13,16, 14,1, "Capture YM/WAV" },
        !            65:        { SGTEXT,     0,0,  2,17, 26,1, "File name (*.wav / *.ym):" },
        !            66:        { SGTEXT,     0,0,  2,18, 34,1, dlgRecordName },
        !            67:        { SGBUTTON,   0,0, 28,17,  8,1, " Browse " },
        !            68:        { SGBUTTON,   0,0, 12,20, 16,1, NULL },
        !            69:        { SGBUTTON, SG_DEFAULT, 0, 10,23, 20,1, "Back to main menu" },
1.1.1.4   root       70:        { -1, 0, 0, 0,0, 0,0, NULL }
1.1       root       71: };
                     72: 
                     73: 
1.1.1.7   root       74: static const int nSoundFreqs[] =
                     75: {
                     76:        11025,
                     77:        12517,
                     78:        16000,
                     79:        22050,
                     80:        25033,
                     81:        32000,
                     82:        44100,
                     83:        48000,
                     84:        50066
                     85: };
                     86: 
                     87: 
1.1       root       88: /*-----------------------------------------------------------------------*/
1.1.1.8   root       89: /**
                     90:  * Show and process the sound dialog.
                     91:  */
1.1       root       92: void Dialog_SoundDlg(void)
                     93: {
1.1.1.7   root       94:        int but, i;
1.1       root       95: 
1.1.1.4   root       96:        SDLGui_CenterDlg(sounddlg);
1.1       root       97: 
1.1.1.4   root       98:        /* Set up dialog from actual values: */
                     99: 
1.1.1.5   root      100:        if (ConfigureParams.Sound.bEnableSound)
1.1.1.4   root      101:                sounddlg[DLGSOUND_ENABLE].state |= SG_SELECTED;
                    102:        else
                    103:                sounddlg[DLGSOUND_ENABLE].state &= ~SG_SELECTED;
                    104: 
1.1.1.7   root      105:        for (i = DLGSOUND_11KHZ; i <= DLGSOUND_50KHZ; i++)
                    106:                sounddlg[i].state &= ~SG_SELECTED;
                    107: 
1.1.1.8   root      108:        for (i = 0; i <= DLGSOUND_50KHZ-DLGSOUND_11KHZ; i++)
1.1.1.7   root      109:        {
                    110:                if (ConfigureParams.Sound.nPlaybackFreq > nSoundFreqs[i]-500
                    111:                    && ConfigureParams.Sound.nPlaybackFreq < nSoundFreqs[i]+500)
                    112:                {
                    113:                        sounddlg[DLGSOUND_11KHZ + i].state |= SG_SELECTED;
                    114:                        break;
                    115:                }
                    116:        }
1.1.1.4   root      117: 
1.1.1.10! root      118:        sounddlg[DLGSOUND_MODEL].state &= ~SG_SELECTED;
1.1.1.9   root      119:        sounddlg[DLGSOUND_TABLE].state &= ~SG_SELECTED;
                    120:        sounddlg[DLGSOUND_LINEAR].state &= ~SG_SELECTED;
1.1.1.10! root      121:        if (ConfigureParams.Sound.YmVolumeMixing == YM_MODEL_MIXING)
        !           122:                sounddlg[DLGSOUND_MODEL].state |= SG_SELECTED;
        !           123:        else
1.1.1.9   root      124:        if (ConfigureParams.Sound.YmVolumeMixing == YM_TABLE_MIXING)
                    125:                sounddlg[DLGSOUND_TABLE].state |= SG_SELECTED;
                    126:        else
                    127:                sounddlg[DLGSOUND_LINEAR].state |= SG_SELECTED;
                    128: 
1.1.1.5   root      129:        File_ShrinkName(dlgRecordName, ConfigureParams.Sound.szYMCaptureFileName, sounddlg[DLGSOUND_RECNAME].w);
1.1.1.4   root      130: 
                    131:        if ( Sound_AreWeRecording() )
                    132:                sounddlg[DLGSOUND_RECORD].txt = "Stop recording";
                    133:        else
                    134:                sounddlg[DLGSOUND_RECORD].txt = "Record sound";
                    135: 
                    136:        /* The sound dialog main loop */
                    137:        do
                    138:        {
                    139:                but = SDLGui_DoDialog(sounddlg, NULL);
                    140:                switch (but)
                    141:                {
                    142:                 case DLGSOUND_RECBROWSE:                    /* Choose a new record file */
                    143:                        SDLGui_FileConfSelect(dlgRecordName,
1.1.1.5   root      144:                                              ConfigureParams.Sound.szYMCaptureFileName,
1.1.1.4   root      145:                                              sounddlg[DLGSOUND_RECNAME].w,
1.1.1.7   root      146:                                              true);
1.1.1.4   root      147:                        break;
                    148:                 case  DLGSOUND_RECORD:
                    149:                        if (Sound_AreWeRecording())
                    150:                        {
                    151:                                sounddlg[DLGSOUND_RECORD].txt = "Record sound";
                    152:                                Sound_EndRecording();
                    153:                        }
                    154:                        else
                    155:                        {
                    156:                                /* make sure that we have a valid file name... */
1.1.1.5   root      157:                                if (strlen(ConfigureParams.Sound.szYMCaptureFileName) < 4)
1.1.1.4   root      158:                                {
1.1.1.5   root      159:                                        strcpy(ConfigureParams.Sound.szYMCaptureFileName, "./hatari.wav");
1.1.1.4   root      160:                                }
                    161:                                sounddlg[DLGSOUND_RECORD].txt = "Stop recording";
1.1.1.5   root      162:                                Sound_BeginRecording(ConfigureParams.Sound.szYMCaptureFileName);
1.1.1.4   root      163:                        }
                    164:                        break;
                    165:                }
                    166:        }
                    167:        while (but != DLGSOUND_EXIT && but != SDLGUI_QUIT
                    168:                && but != SDLGUI_ERROR && !bQuitProgram );
                    169: 
                    170:        /* Read values from dialog */
1.1.1.5   root      171:        ConfigureParams.Sound.bEnableSound = (sounddlg[DLGSOUND_ENABLE].state & SG_SELECTED);
1.1.1.7   root      172: 
                    173:        for (i = DLGSOUND_11KHZ; i <= DLGSOUND_50KHZ; i++)
                    174:        {
                    175:                if (sounddlg[i].state & SG_SELECTED)
                    176:                {
                    177:                        ConfigureParams.Sound.nPlaybackFreq = nSoundFreqs[i-DLGSOUND_11KHZ];
                    178:                        break;
                    179:                }
                    180:        }
1.1.1.9   root      181: 
1.1.1.10! root      182:        if (sounddlg[DLGSOUND_MODEL].state & SG_SELECTED)
        !           183:                ConfigureParams.Sound.YmVolumeMixing = YM_MODEL_MIXING;
        !           184:        else
1.1.1.9   root      185:        if (sounddlg[DLGSOUND_TABLE].state & SG_SELECTED)
                    186:                ConfigureParams.Sound.YmVolumeMixing = YM_TABLE_MIXING;
                    187:        else
                    188:                ConfigureParams.Sound.YmVolumeMixing = YM_LINEAR_MIXING;
1.1       root      189: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.