protected override void NotifyCore(string type)
        {
            var localType = type;

            // Check if we know this type; if not, force default
            if (!AudibleNotifications.Settings.TypeSettings.ContainsKey(localType))
            {
                localType = locationDefault;
            }

            // Bail out if notifications for this type are disabled
            if (AudibleNotifications.Settings.TypeSettings.ContainsKey(localType) && !AudibleNotifications.Settings.TypeSettings[localType])
            {
                return;
            }

            var media = GetRandomMedia(localType);

            if ((media == null) && !AudibleNotifications.IsWindows8OrGreater)
            {
                System.Media.SystemSounds.Beep.Play();
                return;
            }
            if ((media == null) && AudibleNotifications.IsWindows8OrGreater)
            {
                return;
            }

            var sound = new SoundOutput();

            sound.PlaySound(media);
        }
Ejemplo n.º 2
0
        private void ResetOutput()
        {
            SoundOutput.Dispose();

            SoundMixer = new MixingWaveProvider32(new List <WaveChannel32> {
                PitchSelector.GetWavePlayer(Pitch.Empty, WaveForm).Channel
            });
            SoundOutput = new DirectSoundOut();
            SoundOutput.Init(SoundMixer);
            SoundOutput.Play();
        }
Ejemplo n.º 3
0
    public AudioMixerGroup GetOutputGroup(SoundOutput _output)
    {
        switch (_output)
        {
        case SoundOutput.Music:
            return(musicOutput);

        case SoundOutput.SFX:
            return(sfxOutput);
        }

        return(null);
    }
Ejemplo n.º 4
0
        static async Task Main(string[] args)
        {
            string configName = "";

            if (args.Length > 0)
            {
                configName = args[0];
            }
            else
            {
                configName = "_samples/_bin/config_sample.json";
            }

            Console.WriteLine($"{configName}");

            if (!File.Exists(configName))
            {
                Console.WriteLine($"File does not exist: {configName}");
                Environment.Exit((int)RetCodes.ConfigFileNotFound);
            }

            IConfig c = new Config();

            try
            {
                c = JsonConvert.DeserializeObject <Config>(File.ReadAllText(configName));
                c.Authentication = JsonConvert.DeserializeObject <Authentication>(File.ReadAllText(c.FileInPut.authFile));
            }
            catch (Exception e)
            {
                Environment.Exit((int)RetCodes.InvalidConfigInit);
            }

            ILogger lg = new Logger();

            lg.LogFile = String.Concat(c.FileOutPut.LogFolder, "/runLog.txt");
            lg.Write(new string('-', 50));
            lg.Write($"{DateTime.Now}");

            IEnumerable <CSVInput> allQuests = CSVInput.GetAllQuestions(c);

            // build wav output
            int fileCntr = c.FileOutPut.StartOutNum;
            int numRecs  = allQuests.Where(x => x.IsActive.ToUpper() == "TRUE").Count();

            if (numRecs == 0)
            {
                Environment.Exit((int)RetCodes.NoRecs);
            }

            int       numZerosCalc = Convert.ToInt32(Math.Log10(numRecs) + 1);
            int       numZeros     = Math.Max(c.FileOutPut.OutNumPad, numZerosCalc);
            SoundUtil sndUtil      = new SoundUtil();

            const int QUESTION = 0;
            const int ANSWER   = 1;

            TTS_QA[] ttsQA           = { new TTS_QA(), new TTS_QA() };
            string   outFileNameBase = "";

            foreach (CSVInput ln in allQuests.Where(x => x.IsActive.ToUpper() == "TRUE"))
            {
                lg.Write("-".PadLeft(20, '-'));
                lg.Write($"Src file: {ln.SourceCSVFile}, Line#: {ln.FileLineNum}");

                outFileNameBase = string.Format(@"{0}/{1}.wav", c.FileOutPut.SoundFolder
                                                , c.FileOutPut.WAVPrefix.Replace("{#}", fileCntr.ToString().PadLeft(numZeros, '0')));

                int    pauseSec  = Convert.ToInt32(ln.AnswerWaitSeconds) * 1000;
                string pauseText = $"<break time=\"{pauseSec}ms\"/>";

                string question = $"{ln.Question} {pauseText}";

                ttsQA[QUESTION] = new TTS_QA {
                    QAText = question,
                    Lang   = ln.QuesLang, ProsodyRate = ln.QuesProsodyRate, OutFile = outFileNameBase.Replace(".wav", "_ques.wav")
                };

                ttsQA[ANSWER] = new TTS_QA {
                    QAText = ln.Answer,
                    Lang   = ln.AnsLang, ProsodyRate = ln.AnsProsodyRate, OutFile = outFileNameBase.Replace(".wav", "_resp.wav")
                };                                                                                                              // append "resp" for sorting purposes if Q/A files are separate

                foreach (TTS_QA qa in ttsQA)
                {
                    TextToSpeech t = new TextToSpeech();

                    ISound sndOut = new SoundOutput(c.SoundDefault);
                    t.Sound = sndOut;

                    t.TextIn         = qa.QAText;
                    t.Sound.Language = sndUtil.GetSoundProp(qa.Lang, c.SoundDefault.Language);

                    // random speaker from avail list
                    string spkr = sndUtil.GetRandSpeakerName(t.Sound.Language, c.SoundDefault.Speakers);
                    t.Sound.Speaker     = sndUtil.GetSoundProp(spkr, c.SoundDefault.Speaker);
                    t.Sound.ProsodyRate = sndUtil.GetSoundProp(qa.ProsodyRate, c.SoundDefault.ProsodyRate);

                    t.FileOut = qa.OutFile;

                    if (!string.IsNullOrEmpty(t.TextIn))
                    {
                        lg.Write($"Spkr: {t.Sound.Speaker}, Text: {t.TextIn.Substring(0, Math.Min(t.TextIn.Length, 20))} ... -> {t.FileOut}");
                    }

                    while (File.Exists(t.FileOut))
                    {
                        File.Delete(t.FileOut);
                    }

                    await t.OutPutTTS(c.Authentication);
                }

                if (!c.FileOutPut.SplitQAFiles) // need to merge them
                {
                    var ques = new AudioFileReader(ttsQA[QUESTION].OutFile);
                    var ans  = new AudioFileReader(ttsQA[ANSWER].OutFile);

                    File.Delete(outFileNameBase);

                    ConcatenatingSampleProvider playlist = new ConcatenatingSampleProvider(new[] { ques, ans });

                    lg.Write($"\n---> Merging {ttsQA[QUESTION].OutFile} and {ttsQA[ANSWER].OutFile} to {outFileNameBase}");

                    WaveFileWriter.CreateWaveFile16(outFileNameBase, playlist);

                    ques.Dispose();
                    ans.Dispose();

                    File.Delete(ttsQA[QUESTION].OutFile);
                    File.Delete(ttsQA[ANSWER].OutFile);
                }


                fileCntr++;
            }

            // update config file with last counter ref
            String cOut    = File.ReadAllText(configName);
            string incrTxt = $"\"StartOutNum\":";

            cOut = Regex.Replace(cOut, $"{incrTxt}\\s+\"\\d+\""
                                 , $"{incrTxt} \"{fileCntr.ToString()}\"");

            File.WriteAllText(configName, cOut);

            lg.Write("Done");
            lg.Dispose();

            Console.WriteLine($"Done");
            Environment.Exit((int)RetCodes.Success);
        }
Ejemplo n.º 5
0
 /// <summary>
 /// Stop playing any sound
 /// </summary>
 public void StopPlaying()
 {
     SoundOutput.Stop();
 }