Пример #1
0
        private void PlaySelected()
        {
            if (SelectedSyl == -1) return;

            if (PlayStatus == ReproductionState.Play)
            {
                mW.audio.Stop();
                PlayStatus = ReproductionState.Stop;
                return;
            }

            int ms_iniciales = 0, ms_finales = 0;
            for (int i = 0; i < SelectedSyl; i++)
            {
                K tmp = (K)OurK[i];
                ms_iniciales += tmp.Milliseconds;
            }
            K sel = (K)OurK[SelectedSyl];
            ms_finales = ms_iniciales + sel.Milliseconds;

            double begin_off = (double)ms_iniciales / 100;
            double end_off = (double)ms_finales / 100;

            PosRel = begin_off;

            Mode = PlayMode.Selection;
            PlayStatus = ReproductionState.Play;
            //AudioActualPosition_Refresh.Enabled = true;

            // y aki va el play -_-U
            double begin = Tiempo.TimeToSecondDouble(infoTiempoInicial.Text) + begin_off;
            double off = Tiempo.TimeToSecondDouble(infoTiempoInicial.Text) + end_off; //Tiempo.TimeToSecondDouble(infoTiempoFinal.Text);

            unsafe
            {
                byte* buf = (byte*)AudioFull.ToPointer();
                byte* buf_final = buf;

                int principio = (int)(begin * avsaudio.AudioSampleRate * avsaudio.BytesPerSample);
                if (principio % 2 == 1) principio++;
                buf += principio;

                buf_final += (int)(off * avsaudio.AudioSampleRate * avsaudio.BytesPerSample);

                int size = (int)(buf_final - buf);
                if (size % 2 == 1) size++;

                if (size > 0)
                {

                    byte[] rangeplay = new byte[size];
                    IntPtr buff = new IntPtr(buf);

                    Marshal.Copy(buff, rangeplay, 0, size);

                    mW.audio = avs2ds.PreparaAudio(rangeplay);
                    AudioActualPosition_Refresh.Enabled = true;
                    mW.audio.Play(0, BufferPlayFlags.Default);

                }

            }
        }
Пример #2
0
        void AudioActualPosition_Refresh_Tick(object sender, EventArgs e)
        {
            double pos_relativa = (double)((double)mW.audio.PlayPosition) / ((double)avsaudio.AudioSampleRate * (double)avsaudio.BytesPerSample);

            if (PlayStatus == ReproductionState.Stop || mW.audio.Status.Terminated)
            {
                PlayStatus = ReproductionState.Stop;
                mW.audio.Stop();

                DrawAudioWave();

                AudioActualPosition_Refresh.Enabled = false;
                LastPosition = -1;
                return;
            }

            double principio = Tiempo.TimeToSecondDouble(infoTiempoInicial.Text);
            double fin = Tiempo.TimeToSecondDouble(infoTiempoFinal.Text);
            double duracion = fin - principio;

            if (Mode == PlayMode.Other)
            {
                switch (LastOptions)
                {
                    case PlayOptions.BeforeStart:
                        PosRel = Math.Max(0, PosRel - .5);
                        break;
                    case PlayOptions.BeforeEnd:
                        PosRel = Math.Max(0, LastEnd - .5);
                        break;
                    case PlayOptions.AfterEnd:
                        PosRel = LastEnd;
                        break;
                }
            }

            if (Mode == PlayMode.Selection || Mode == PlayMode.Other)
                pos_relativa += PosRel;

            double perc = (pos_relativa / duracion) * 100;
            int iPX = Convert.ToInt32(Math.Round((PanelAudioBox.Width * perc) / 100));
                Bitmap temp = (Bitmap)AudioWave.Clone();
                using (Graphics g = Graphics.FromImage((Image)temp))
                {
                    g.DrawLine(new Pen(new SolidBrush(Color.White), 3), new Point(iPX, 0), new Point(iPX, PanelAudioBox.Height));
                }

                if (iPX <= LastPosition)
                {
                    PlayStatus = ReproductionState.Stop;
                    mW.audio.Stop();

                    DrawAudioWave();

                    AudioActualPosition_Refresh.Enabled = false;
                    LastPosition = -1;
                    return;
                }
                KaraokeAudioBox.Image = temp;
            LastPosition = iPX;
        }
Пример #3
0
        private void PlayAll()
        {
            if (PlayStatus == ReproductionState.Play)
            {
                mW.audio.Stop();
                PlayStatus = ReproductionState.Stop;
                return;
            }

            LastPosition = -1;

            PlayStatus = ReproductionState.Play;
            Mode = PlayMode.Full;
            AudioActualPosition_Refresh.Enabled = true;
            double principio = Tiempo.TimeToSecondDouble(infoTiempoInicial.Text);
            double fin = Tiempo.TimeToSecondDouble(infoTiempoFinal.Text);
            double duracion = fin - principio;

            mW.audio = avs2ds.PreparaAudio(bufferEntero);
            mW.audio.Play(0, BufferPlayFlags.Default);
        }
Пример #4
0
        private void PlayAllEx(PlayOptions options)
        {
            if (SelectedSyl == -1) return;

            if (PlayStatus == ReproductionState.Play)
            {
                mW.audio.Stop();
                PlayStatus = ReproductionState.Stop;
                return;
            }

            int ms_iniciales = 0, ms_finales = 0;
            for (int i = 0; i < SelectedSyl; i++)
            {
                K tmp = (K)OurK[i];
                ms_iniciales += tmp.Milliseconds;
            }
            K sel = (K)OurK[SelectedSyl];
            ms_finales = ms_iniciales + sel.Milliseconds;

            double begin_off = (double)ms_iniciales / 100;
            double end_off = (double)ms_finales / 100;

            Mode = PlayMode.Other;
            PlayStatus = ReproductionState.Play;

            double begin = Tiempo.TimeToSecondDouble(infoTiempoInicial.Text) + begin_off;
            double off = Tiempo.TimeToSecondDouble(infoTiempoInicial.Text) + end_off; //Tiempo.TimeToSecondDouble(infoTiempoFinal.Text);

            switch (options)
            {
                case PlayOptions.BeforeStart:
                    off = begin;
                    begin = Math.Max(0, off - .5);
                    break;

                case PlayOptions.BeforeEnd:
                    begin = Math.Max(0, off - .5);
                    break;

                case PlayOptions.AfterStart:
                    off = begin + .5;
                    break;

                case PlayOptions.AfterEnd:
                    begin = off;
                    off = begin + .5;
                    break;
            }
            PosRel = begin - Tiempo.TimeToSecondDouble(infoTiempoInicial.Text);
            LastEnd = off-Tiempo.TimeToSecondDouble(infoTiempoInicial.Text);
            unsafe
            {
                byte* buf = (byte*)AudioFull.ToPointer();
                byte* buf_final = buf;

                int principio = (int)(begin * avsaudio.AudioSampleRate * avsaudio.BytesPerSample);
                if (principio % 2 == 1) principio++;
                buf += principio;

                buf_final += (int)(off * avsaudio.AudioSampleRate * avsaudio.BytesPerSample);

                int size = (int)(buf_final - buf);
                if (size % 2 == 1) size++;

                if (size > 0)
                {

                    byte[] rangeplay = new byte[size];
                    IntPtr buff = new IntPtr(buf);

                    Marshal.Copy(buff, rangeplay, 0, size);

                    mW.audio = avs2ds.PreparaAudio(rangeplay);
                    AudioActualPosition_Refresh.Enabled = true;
                    mW.audio.Play(0, BufferPlayFlags.Default);

                }

            }
        }
Пример #5
0
 private void toolStripButton8_Click(object sender, EventArgs e)
 {
     VideoState = ReproductionState.Pause;
     if (VideoBoxType == PreviewType.DirectShow) mediaControl.Pause();
 }
Пример #6
0
 private void toolStripButton9_Click(object sender, EventArgs e)
 {
     if (VideoBoxType == PreviewType.DirectShow) mediaControl.Pause();
     FrameIndex = 0;
     VideoState = ReproductionState.Stop;
     if (VideoBoxType == PreviewType.AviSynth)
         AVSPlayTimer.Enabled = false;//AVSPlayThread.Abort();
 }
Пример #7
0
        private void PlayVideoRange()
        {
            try
            {
                FrameIndex = int.Parse(framesInicio.Text); //(int) Math.Floor(lass.t_inicial.getTiempo() * fps);
                endSeek = int.Parse(framesFin.Text); //(long)Math.Floor(lass.t_final.getTiempo() * fps);
            }
            catch
            {
                return;
            }
            if ((endSeek - FrameIndex) <= 0) return;

            VideoState = ReproductionState.Play;

            if (VideoBoxType == PreviewType.DirectShow)
            {
                if (mediaSeeking == null) return;
                mediaControl.Run();
            }

            ms_per_frame_AVSPlay = (int)Math.Floor(1000 / videoInfo.FrameRate);
            inicio_AVSPlay = DateTime.Now;
            frame_inicio_AVSPlay = FrameIndex;

            PlayInRange.Interval = ms_per_frame_AVSPlay;
            PlayInRange.Tick += new EventHandler(PlayInRange_Tick);
            PlayInRange.Enabled = true;
        }
Пример #8
0
        private void toolStripButton6_Click_1(object sender, EventArgs e)
        {
            VideoState = ReproductionState.Play;

            if (VideoBoxType == PreviewType.DirectShow) mediaControl.Run();
            else if (VideoBoxType == PreviewType.AviSynth)
            {
                //AVSPlayThread = new Thread(new ThreadStart(PlayThread));
                //AVSPlayThread.Start();
                if (!AVSPlayTimer.Enabled)
                {
                    ms_per_frame_AVSPlay = (int)Math.Floor(1000 / videoInfo.FrameRate); // *FramesToSkip;
                    AVSPlayTimer.Interval = ms_per_frame_AVSPlay;
                    AVSPlayTimer.Tick += new EventHandler(AVSPlayTimer_Tick);
                    inicio_AVSPlay = DateTime.Now;
                    frame_inicio_AVSPlay = FrameIndex;
                    //mediaControl.Run();
                    AVSPlayTimer.Enabled = true;

                }

            }
        }
Пример #9
0
        private void PlayFrameInAVS()
        {
            TimeSpan span = DateTime.Now - inicio_AVSPlay;

            int frameSupuesto = (int)Math.Ceiling((double)span.TotalMilliseconds / (double)ms_per_frame_AVSPlay);
            int frameActual = frame_inicio_AVSPlay + frameSupuesto;

            if ((FrameIndex <= FrameTotal) && (VideoState == ReproductionState.Play))
            {
                FrameIndex = frameActual;
            }
            else
            {
                VideoState = ReproductionState.Stop;
                AVSPlayTimer.Enabled = false;
            }
        }
Пример #10
0
        void PlayInRange_Tick(object sender, EventArgs e)
        {
            if (VideoBoxType == PreviewType.AviSynth)
            {
                PlayFrameInAVS();
                //FrameBuffer.SetPanicMode(PanicModes.DoPanic);
                //videoPictureBox.Image = FrameBuffer.GetBitmap();

            }
            if (FrameIndex >= endSeek)
            {
                if (VideoBoxType == PreviewType.DirectShow) mediaControl.Pause();
                VideoState = ReproductionState.Stop;
                PlayInRange.Enabled = false;
            }
        }
Пример #11
0
        private void AudioPlayEx(PlayOptions options)
        {
            if (AudioState == ReproductionState.Play)
            {
                AudioActualPosition_Refresh_500.Enabled = false;
                AudioState = ReproductionState.Stop;
                audio.Stop();
                audio.Dispose();
                audio = null;
                return;
            }

            double inicio = Tiempo.TimeToSecondDouble(textInicio.Text);
            double fin = 0;

            if (AudioGrid_Inicio == -1) return;

            if (AudioGrid_Fin != -1)
                fin = Tiempo.TimeToSecondDouble(textFin.Text);
            else
                if (options == PlayOptions.BeforeEnd || options == PlayOptions.AfterEnd)
                    return;

            switch (options)
            {
                case PlayOptions.BeforeStart:

                    if (inicio < .5)
                    {
                        inicio = 0;
                        fin = .5;
                    }
                    else
                    {
                        inicio -= .5;
                        fin = inicio + .5;
                    }

                    break;
                case PlayOptions.AfterStart:
                    fin = inicio + .5;
                    break;

                case PlayOptions.BeforeEnd:
                    fin = Tiempo.TimeToSecondDouble(textFin.Text);
                    inicio = fin - .5;

                    if (inicio < 0) inicio = 0;
                    break;
                case PlayOptions.AfterEnd:
                    inicio = Tiempo.TimeToSecondDouble(textFin.Text);
                    fin = inicio + .5;

                    break;
                case PlayOptions.Normal:
                    inicio = Tiempo.TimeToSecondDouble(textInicio.Text);
                    fin = Tiempo.TimeToSecondDouble(textFin.Text);
                    break;
            }

            audioGrid_Inicio_500 = inicio;
            audioGrid_Fin_500 = fin;

            InicioPlay = inicio;

            unsafe
            {

                byte* buf = (byte*)AudioFull.ToPointer();
                byte* buf_final = buf;
                buf += (int)(inicio * avsaudio.AudioSampleRate * avsaudio.BytesPerSample);

                IntPtr tmp = new IntPtr(buf);
                int tesuto = tmp.ToInt32();

                if ((tesuto % 2) == 1) buf++;

                //if (tesuto >= mainW.idx0rz) return;

                int max_or_mult = (int)Math.Min((int)(fin * avsaudio.AudioSampleRate * avsaudio.BytesPerSample), mainW.idx0rz);
                buf_final += max_or_mult;

                int size = (int)(buf_final - buf);

                if (size < 0) return;

                AudioTemp = new byte[size];
                IntPtr buff = new IntPtr(buf);

                Marshal.Copy(buff, AudioTemp, 0, size);
                audio = avs2ds.PreparaAudio(AudioTemp);
                audio.Play(0, BufferPlayFlags.Default);
                AudioState = ReproductionState.Play;
                AudioActualPosition_Refresh_500.Enabled = true;
            }
        }
Пример #12
0
        private void AudioPlay()
        {
            if (AudioState == ReproductionState.Play)
            {
                try
                {
                    AudioActualPosition_Refresh.Enabled = false;
                    AudioState = ReproductionState.Stop;
                    audio.Stop();
                    audio.Dispose();
                    audio = null;
                }
                catch { }
                return;
            }
            else // estabamos parados, podemos seguir ._.
            {

                if (AudioGrid_Inicio != -1)
                {

                    /*
                     * CAMBIAR ESTO PARA COMPROBAR SI TIEMPO = 0
                     */
                    if (AudioGrid_Fin <= AudioGrid_Inicio)
                        AudioGrid_Fin = -1;

                    if (AudioTemp != null)
                    {
                        AudioTemp = new byte[0];
                        GC.Collect();
                    }

                    if (audio != null)
                    {
                        try
                        {
                            audio.Stop();
                            audio.Dispose();
                        }
                        catch { }
                    }

                    try
                    {

                        double inicio = Tiempo.TimeToSecondDouble(textInicio.Text);
                        InicioPlay = inicio;
                        double fin = 0;
                        if (AudioGrid_Fin != -1)
                            fin = Tiempo.TimeToSecondDouble(textFin.Text);

                        unsafe
                        {

                            byte* buf = (byte*)AudioFull.ToPointer();
                            byte* buf_final = buf;
                            buf += (int)(inicio * avsaudio.AudioSampleRate * avsaudio.BytesPerSample);

                            IntPtr tmp = new IntPtr(buf);
                            int tesuto = tmp.ToInt32();

                            if ((tesuto % 2) == 1) buf++;

                            if (AudioGrid_Fin != -1)
                            {
                                int max_or_mult = (int)Math.Min((int)(fin * avsaudio.AudioSampleRate * avsaudio.BytesPerSample), mainW.idx0rz);
                                buf_final += max_or_mult;
                            }
                            else
                                buf_final += mainW.idx0rz;

                            int size = (int)(buf_final - buf); // OJO
                            if ((size * (int)AudioMultiplicadorBuffer.Value) < mainW.idx0rz)
                                size = size * (int)AudioMultiplicadorBuffer.Value;

                            if (size < 0) return;

                            AudioTemp = new byte[size];
                            IntPtr buff = new IntPtr(buf);

                            Marshal.Copy(buff, AudioTemp, 0, size);
                            audio = avs2ds.PreparaAudio(AudioTemp);
                            audio.Play(0, BufferPlayFlags.Default);
                            AudioState = ReproductionState.Play;

                            AudioActualPosition_Refresh.Interval = (int)AudioActualPositionInterval.Value * 10;
                            AudioActualPosition_Refresh.Enabled = true;
                        }
                    }
                    catch { }
                }
            }
        }
Пример #13
0
        void AudioActualPosition_Refresh_Tick(object sender, EventArgs e)
        {
            if (AudioState != ReproductionState.Play || audio == null)
            {
                updateAudioGrid();
                AudioActualPosition_Refresh.Enabled = false;
                AudioState = ReproductionState.Stop;
                return;
            }

            //Bitmap t = (Bitmap) ;
            //AudioGridBox.Image = AudioGridBox.Image

            double pos_inicio = InicioPlay; //Tiempo.TimeToSecondDouble(textInicio.Text);
            double pos_relativa = (double)((double)audio.PlayPosition) / ((double)avsaudio.AudioSampleRate * (double)avsaudio.BytesPerSample);
            AudioGridBox.Image = BitmapFunctions.GenerateAudioGridDisplayActual(new Bitmap(AudioWave_All), pos_inicio + pos_relativa, (double)hSliderBar.Value / 10, AudioGrid_pxPerSecond);

            if (AudioGrid_Fin != -1)
            {
                if (pos_inicio + pos_relativa > AudioGrid_Fin)
                {
                    updateAudioGrid();
                    AudioActualPosition_Refresh.Enabled = false;
                    AudioState = ReproductionState.Stop;
                    audio.Stop();
                }

            }
        }
Пример #14
0
        void AudioActualPosition_Refresh_500_Tick(object sender, EventArgs e)
        {
            if (AudioState != ReproductionState.Play || audio == null)
            {
                updateAudioGrid();
                AudioState = ReproductionState.Stop;
                AudioActualPosition_Refresh_500.Enabled = false;

                return;
            }

            double pos_inicio = InicioPlay; //audioGrid_Inicio_500;
            double pos_relativa = (double)((double)audio.PlayPosition) / ((double)avsaudio.AudioSampleRate * (double)avsaudio.BytesPerSample);
            AudioGridBox.Image = BitmapFunctions.GenerateAudioGridDisplayActual(new Bitmap(AudioWave_All), pos_inicio + pos_relativa, (double)hSliderBar.Value / 10, AudioGrid_pxPerSecond);

            if ((pos_inicio + pos_relativa > audioGrid_Fin_500) || (pos_relativa==0) )
            {
                updateAudioGrid();
                AudioActualPosition_Refresh_500.Enabled = false;
                AudioState = ReproductionState.Stop;
                audio.Stop();
            }
        }
Пример #15
0
    public override void Process()
    {
        Goal child = GetActiveGoal();

        if (child.IsInactive)
        {
            child.Activate();
        }


        IReadOnlyCollection <DataCreature> creatures = owner.Memory.Creatures.Read();
        Agent partenaire       = null;
        float distanceToFriend = Mathf.Infinity;

        foreach (DataCreature data in creatures)
        {
            if (!data.creature)
            {
                continue;
            }
            Agent agent = data.creature.agentCreature;
            if (asked.Contains(data.creature))
            {
                continue;
            }

            if (data.RegistrationDate < Time.time - 0.5f || !agent.gameObject.activeSelf)
            {
                continue;
            }
            if (!agent.IsThinking || agent.IsThrow)
            {
                continue;
            }

            float distanceToAgent = Vector3.Distance(owner.transform.position, agent.transform.position);
            if (agent != owner && agent.Creature.SpecieID == owner.Creature.SpecieID && distanceToAgent < distanceToFriend)
            {
                partenaire       = agent;
                distanceToFriend = distanceToAgent;
            }
        }

        switch (reproductionState)
        {
        case ReproductionState.Search:
            if (child.HasFailed)
            {
                AddSubgoal(new GoalSeekNest(owner));
                reproductionState = ReproductionState.SeekNest;
            }

            if (!partenaire)
            {
                break;
            }

            child.Abort();
            asked.Add(partenaire.Creature);

            if (partenaire.Thinking.RequestGoal(GoalReproduction_Evaluator.Instance))
            {
                Squad squad = new Squad(owner, partenaire);
                AddSubgoal(new GoalReproduce(owner, partenaire, squad));
                partenaire.Thinking.ActiveGoal = new GoalReproduce(partenaire, owner, squad);
                reproductionState = ReproductionState.Reproduce;
            }
            else
            {
                AddSubgoal(new GoalSearchCreature(owner, GetCreatureFilter()));
            }
            break;

        case ReproductionState.SeekNest:
            if (child.HasFailed)
            {
                AddSubgoal(new GoalWander(owner));
                reproductionState = ReproductionState.Wander;
            }

            if (!partenaire)
            {
                break;
            }

            child.Abort();
            asked.Add(partenaire.Creature);

            if (partenaire.Thinking.RequestGoal(GoalReproduction_Evaluator.Instance))
            {
                Squad squad = new Squad(owner, partenaire);
                AddSubgoal(new GoalReproduce(owner, partenaire, squad));
                partenaire.Thinking.ActiveGoal = new GoalReproduce(partenaire, owner, squad);
                reproductionState = ReproductionState.Reproduce;
            }
            else
            {
                AddSubgoal(new GoalSearchCreature(owner, GetCreatureFilter()));
            }
            break;

        case ReproductionState.Wander:
            if (!partenaire)
            {
                break;
            }

            child.Abort();
            asked.Add(partenaire.Creature);

            if (partenaire.Thinking.RequestGoal(GoalReproduction_Evaluator.Instance))
            {
                Squad squad = new Squad(owner, partenaire);
                AddSubgoal(new GoalReproduce(owner, partenaire, squad));
                partenaire.Thinking.ActiveGoal = new GoalReproduce(partenaire, owner, squad);
                reproductionState = ReproductionState.Reproduce;
            }
            else
            {
                AddSubgoal(new GoalSearchCreature(owner, GetCreatureFilter()));
            }
            break;

        case ReproductionState.Reproduce:
            if (child.HasFailed)
            {
                AddSubgoal(new GoalSearchCreature(owner, GetCreatureFilter()));
                reproductionState = ReproductionState.Search;
            }
            break;
        }

        base.ProcessSubgoals();
    }