public bool Activate() { if (Register()) { Mbrola.Init(MbrPlay.RegGetDatabasePath(Name)); MbrPlay.SetDatabase(Name); MbrPlay.Play("_ 1\n_ 1\n", (int)MbrFlags.Wait | (int)MbrOut.Disabled, null, null); return(true); } else { return(false); } }
public void Start(MBROLASynthesizer Synth) { callback = new PlayCallbackProc(mbrCallback); this.Synth = Synth; t = new Thread(delegate() { while (Thread.CurrentThread.IsAlive) { if (Fragments.Count == 0) { Thread.Sleep(0); continue; } string fragment = Fragments.Dequeue(); if (fragment == "EOF") { while (!Finished) { Thread.Sleep(0); } Eof = true; Synth.Log("InvokeAudioFinished"); Synth.InvokeAudioFinished(); t.Abort(); return; } else { Synth.Log("Sent {0} characters to synth", fragment.Length); MbrPlay.Play(fragment, (int)MbrFlags.Queued | (int)MbrFlags.Wait | (int)MbrFlags.MsgInit | (int)MbrFlags.MsgWrite | (int)MbrFlags.MsgEnd | (int)MbrFlags.Callback | (int)MbrOut.Disabled, null, callback); StringBuilder error = new StringBuilder(256); MbrPlay.LastError(error, 255); if (error.Length > 0) { this.Error(this, error.ToString()); } } } }); t.Name = "MbrThread"; t.SetApartmentState(ApartmentState.STA); t.Start(); }