Write() публичный Метод

public Write ( string text, int x = null, int y = null ) : void
text string
x int
y int
Результат void
Пример #1
0
        static void FadeVolume(List <OggStream> streams, bool @in, float duration, ConsoleLogger logger)
        {
            int index = 0;

            foreach (var stream in streams)
            {
                var from  = stream.Volume;
                var to    = @in ? 1f : 0;
                var speed = @in ? 1 - @from : @from;

                lock (volumeFades)
                {
                    CancellationTokenSource token;
                    bool found = volumeFades.TryGetValue(stream, out token);
                    if (found)
                    {
                        token.Cancel();
                        volumeFades.Remove(stream);
                    }
                }
                var sIdx = index++;
                logger.Write(@in ? "V" : "v", 4, 10 + sIdx);

                var cts = new CancellationTokenSource();
                lock (volumeFades) volumeFades.Add(stream, cts);

                var       sw = Stopwatch.StartNew();
                OggStream s  = stream;
                Task.Factory.StartNew(() =>
                {
                    float step;
                    do
                    {
                        step     = (float)Math.Min(sw.Elapsed.TotalSeconds / (duration * speed), 1);
                        s.Volume = (to - @from) * step + @from;
                        Thread.Sleep(1000 / 60);
                    } while (step < 1 && !cts.Token.IsCancellationRequested);
                    sw.Stop();

                    if (!cts.Token.IsCancellationRequested)
                    {
                        lock (volumeFades) volumeFades.Remove(s);
                        logger.Write(" ", 4, 10 + sIdx);
                    }
                }, cts.Token);
            }
        }
Пример #2
0
        static void Main()
        {
            #if TRACE
            Trace.Listeners.Add(new ConsoleTraceListener());
            #endif
            Console.WindowHeight = StreamFiles.Length + 12;

            Console.WriteLine("Pr[e]pare, [P]lay, [S]top, Pa[u]se, [R]esume, [L]oop toggle, [Q]uit");
            Console.WriteLine("Faders (in/out) : Low-pass filter [F]/[G], Volume [V]/[B]");
            Console.WriteLine("[Up], [Down] : Change current sample");
            Console.WriteLine("[Shift] + Action : Do for all " + StreamFiles.Length + " streams");

            var logger = new ConsoleLogger();
            logger.Write(" #  FX Buffering", 0, 8);

            using (new AudioContext())
            using (var streamer = new OggStreamer(65536))
            {
                streamer.Logger = logger;
                ALHelper.CheckCapabilities(logger);

                bool quit = false;

                var streams = new OggStream[StreamFiles.Length];

                for (int i = 0; i < StreamFiles.Length; i++)
                {
                    streams[i] = new OggStream(StreamFiles[i]) { Logger = logger };
                    logger.SetStreamIndex(streams[i], i);
                    logger.Write((i + 1).ToString(), 1, 10 + i);
                }
                logger.Write(">", 0, 10);
                foreach (var s in streams)
                    s.Prepare();

                int sIdx = 0;
                var activeSet = new List<OggStream>();

                while (!quit)
                {
                    var input = Console.ReadKey(true);

                    activeSet.Clear();
                    if ((input.Modifiers & ConsoleModifiers.Shift) == ConsoleModifiers.Shift)
                        activeSet.AddRange(streams);
                    else
                        activeSet.Add(streams[sIdx]);

                    var lower = char.ToLower(input.KeyChar);
                    if (input.Key == ConsoleKey.UpArrow) lower = '-';
                    if (input.Key == ConsoleKey.DownArrow) lower = '+';

                    switch (lower)
                    {
                        case 'e': activeSet.ForEach(x => x.Prepare()); break;
                        case 'p': activeSet.ForEach(x => x.Play()); break;
                        case 'u': activeSet.ForEach(x => x.Pause()); break;
                        case 's': activeSet.ForEach(x => x.Stop()); break;
                        case 'r': activeSet.ForEach(x => x.Resume()); break;

                        case 'l':
                            int index = 0;
                            activeSet.ForEach(s =>
                            {
                                s.IsLooped = !s.IsLooped;
                                logger.Write(s.IsLooped ? "L" : " ", 3, 10 + index++);
                            });
                            break;

                        case 'v': FadeVolume(activeSet, true, 1, logger); break;
                        case 'b': FadeVolume(activeSet, false, 1, logger); break;

                        case 'f': FadeFilter(activeSet, true, 1, logger); break;
                        case 'g': FadeFilter(activeSet, false, 1, logger); break;

                        case '+':
                            logger.Write(" ", 0, 10 + sIdx);
                            sIdx++;
                            if (sIdx > streams.Length - 1) sIdx = 0;
                            logger.Write(">", 0, 10 + sIdx);
                            break;

                        case '-':
                            logger.Write(" ", 0, 10 + sIdx);
                            sIdx--;
                            if (sIdx < 0) sIdx = streams.Length - 1;
                            logger.Write(">", 0, 10 + sIdx);
                            break;

                        case 'q':
                            quit = true;
                            foreach (var cts in filterFades.Values) cts.Cancel();
                            foreach (var cts in volumeFades.Values) cts.Cancel();
                            foreach (var s in streams) s.Stop(); // nicer and more effective
                            foreach (var s in streams) s.Dispose();
                            break;
                    }
                }
            }
        }
Пример #3
0
        static void FadeVolume(List<OggStream> streams, bool @in, float duration, ConsoleLogger logger)
        {
            int index = 0;
            foreach (var stream in streams)
            {
                var from = stream.Volume;
                var to = @in ? 1f : 0;
                var speed = @in ? 1 - @from : @from;

                lock (volumeFades)
                {
                    CancellationTokenSource token;
                    bool found = volumeFades.TryGetValue(stream, out token);
                    if (found)
                    {
                        token.Cancel();
                        volumeFades.Remove(stream);
                    }
                }
                var sIdx = index++;
                logger.Write(@in ? "V" : "v", 4, 10 + sIdx);

                var cts = new CancellationTokenSource();
                lock (volumeFades) volumeFades.Add(stream, cts);

                var sw = Stopwatch.StartNew();
                OggStream s = stream;
                Task.Factory.StartNew(() =>
                {
                    float step;
                    do
                    {
                        step = (float)Math.Min(sw.Elapsed.TotalSeconds / (duration * speed), 1);
                        s.Volume = (to - @from) * step + @from;
                        Thread.Sleep(1000 / 60);
                    } while (step < 1 && !cts.Token.IsCancellationRequested);
                    sw.Stop();

                    if (!cts.Token.IsCancellationRequested)
                    {
                        lock (volumeFades) volumeFades.Remove(s);
                        logger.Write(" ", 4, 10 + sIdx);
                    }
                }, cts.Token);
            }
        }
Пример #4
0
        static void Main()
        {
#if TRACE
            Trace.Listeners.Add(new ConsoleTraceListener());
#endif
            Console.WindowHeight = StreamFiles.Length + 12;

            Console.WriteLine("Pr[e]pare, [P]lay, [S]top, Pa[u]se, [R]esume, [L]oop toggle, [Q]uit");
            Console.WriteLine("Faders (in/out) : Low-pass filter [F]/[G], Volume [V]/[B]");
            Console.WriteLine("[Up], [Down] : Change current sample");
            Console.WriteLine("[Shift] + Action : Do for all " + StreamFiles.Length + " streams");

            var logger = new ConsoleLogger();
            logger.Write(" #  FX Buffering", 0, 8);

            using (new AudioContext())
                using (var streamer = new OggStreamer(65536))
                {
                    streamer.Logger = logger;
                    ALHelper.CheckCapabilities(logger);

                    bool quit = false;

                    var streams = new OggStream[StreamFiles.Length];

                    for (int i = 0; i < StreamFiles.Length; i++)
                    {
                        streams[i] = new OggStream(StreamFiles[i])
                        {
                            Logger = logger
                        };
                        logger.SetStreamIndex(streams[i], i);
                        logger.Write((i + 1).ToString(), 1, 10 + i);
                    }
                    logger.Write(">", 0, 10);
                    foreach (var s in streams)
                    {
                        s.Prepare();
                    }

                    int sIdx      = 0;
                    var activeSet = new List <OggStream>();

                    while (!quit)
                    {
                        var input = Console.ReadKey(true);

                        activeSet.Clear();
                        if ((input.Modifiers & ConsoleModifiers.Shift) == ConsoleModifiers.Shift)
                        {
                            activeSet.AddRange(streams);
                        }
                        else
                        {
                            activeSet.Add(streams[sIdx]);
                        }

                        var lower = char.ToLower(input.KeyChar);
                        if (input.Key == ConsoleKey.UpArrow)
                        {
                            lower = '-';
                        }
                        if (input.Key == ConsoleKey.DownArrow)
                        {
                            lower = '+';
                        }

                        switch (lower)
                        {
                        case 'e': activeSet.ForEach(x => x.Prepare()); break;

                        case 'p': activeSet.ForEach(x => x.Play()); break;

                        case 'u': activeSet.ForEach(x => x.Pause()); break;

                        case 's': activeSet.ForEach(x => x.Stop()); break;

                        case 'r': activeSet.ForEach(x => x.Resume()); break;

                        case 'l':
                            int index = 0;
                            activeSet.ForEach(s =>
                            {
                                s.IsLooped = !s.IsLooped;
                                logger.Write(s.IsLooped ? "L" : " ", 3, 10 + index++);
                            });
                            break;

                        case 'v': FadeVolume(activeSet, true, 1, logger); break;

                        case 'b': FadeVolume(activeSet, false, 1, logger); break;

                        case 'f': FadeFilter(activeSet, true, 1, logger); break;

                        case 'g': FadeFilter(activeSet, false, 1, logger); break;

                        case '+':
                            logger.Write(" ", 0, 10 + sIdx);
                            sIdx++;
                            if (sIdx > streams.Length - 1)
                            {
                                sIdx = 0;
                            }
                            logger.Write(">", 0, 10 + sIdx);
                            break;

                        case '-':
                            logger.Write(" ", 0, 10 + sIdx);
                            sIdx--;
                            if (sIdx < 0)
                            {
                                sIdx = streams.Length - 1;
                            }
                            logger.Write(">", 0, 10 + sIdx);
                            break;

                        case 'q':
                            quit = true;
                            foreach (var cts in filterFades.Values)
                            {
                                cts.Cancel();
                            }
                            foreach (var cts in volumeFades.Values)
                            {
                                cts.Cancel();
                            }
                            foreach (var s in streams)
                            {
                                s.Stop();                        // nicer and more effective
                            }
                            foreach (var s in streams)
                            {
                                s.Dispose();
                            }
                            break;
                        }
                    }
                }
        }