Example #1
0
        public int[] Play(Note note)
        {
            var wave = instrument.Play(note);

            for (int i = 0; i < duration; i++)
            {
                wave[i] *= (int)(i / (double)duration);
            }

            return(wave);
        }
Example #2
0
        static void Main(string[] args)
        {
            InstrumentFactory factory = new ConcreteInstrumentFactory();

            IInstrument guitar = factory.GetInstrument("Guitar");

            guitar.Play(96);
            guitar.Sell(120);

            IInstrument piano = factory.GetInstrument("Piano");

            piano.Play(80);
            piano.Sell(1000);

            IInstrument bass = factory.GetInstrument("Bass");

            bass.Play(75);
            bass.Sell(150);
        }
Example #3
0
        private int[] PlaySineWave(Note[] notes, IInstrument instrument)
        {
            var length = notes.Sum(GetNoteDuration);
            var wave   = new int[length];
            var i      = 0;

            foreach (var note in notes)
            {
                var result = instrument.Play(note);
                for (int j = 0; j < result.Length; j++)
                {
                    if (i + j >= wave.Length)
                    {
                        return(wave);
                    }
                    wave[i + j] += Convert.ToInt32(result[j]);
                }

                i += GetNoteDuration(note);;
            }

            return(wave);
        }