示例#1
0
        //globales Zeitmaß ist ein Floatwert

        public MusicDataObject(TemperamentDataObject temperament, int baseFrequency,
                               List <TimeSignatureMDO> timeSignatures, List <TempoIndicationMDO> tempoIndications, List <Channel> channels)
        {
            Temperament      = temperament;
            BaseFrequency    = baseFrequency;
            TimeSignatures   = timeSignatures;
            TempoIndications = tempoIndications;
            Channels         = channels;
        }
示例#2
0
        public MusicDataObject getMusicDataObject()
        {
            TemperamentDataObject temperament = TemperamentDataObject.Default;
            int baseFrequency = 440;
            List <TimeSignatureMDO> timeSignatures = new List <TimeSignatureMDO>();

            foreach (var ts in this.timeSignatures)
            {
                int numerator   = Int32.Parse(ts.metrum.Split('/').First());
                int denominator = Int32.Parse(ts.metrum.Split('/').Last());;

                int n = Int32.Parse(ts.time.musical.Split('/').First());
                int d = Int32.Parse(ts.time.musical.Split('/').Last());

                timeSignatures.Add(new TimeSignatureMDO(numerator, denominator, n, d));
            }


            List <TempoIndicationMDO> tempoIndications = new List <TempoIndicationMDO>();

            foreach (var t in tempo)
            {
                int tempoMDO = t.bpm;
                int n        = Int32.Parse(t.time.musical.Split('/').First());
                int d        = Int32.Parse(t.time.musical.Split('/').Last());

                tempoIndications.Add(new TempoIndicationMDO(tempoMDO, n, d));
            }

            List <Channel> channels = new List <Channel>();

            foreach (var track in tracks)
            {
                string          name     = track.trackName;
                List <NoteData> notesMDO = new List <NoteData>();

                foreach (var note in track.notes)
                {
                    Fraction[] exponents = new Fraction[3];
                    exponents[0] = new Fraction(note.midiNumber - 69, 12);
                    exponents[1] = new Fraction(0);
                    exponents[2] = new Fraction(0);

                    Fraction duration = new Fraction(note.length.musical);
                    Fraction onset    = new Fraction(note.time.musical);
                    int      dynamics = note.velocity;

                    notesMDO.Add(new NoteData(exponents, duration, onset, dynamics));
                }

                channels.Add(new Channel(name, notesMDO));
            }
            return(new MaMuTh.MusicDataObject.MusicDataObject(temperament, baseFrequency, timeSignatures, tempoIndications, channels));
        }
示例#3
0
        private Temperament GetTemperament(TemperamentDataObject temperament)
        {
            //Hilfsmethode zum Erstellen einer Composition
            if (temperament == MusicDataObject.TemperamentDataObject.EqualTemperament)
            {
                return(Temperament.EqualTemperament);
            }
            if (temperament == MusicDataObject.TemperamentDataObject.JustIntonation)
            {
                return(Temperament.JustIntonation);
            }
            if (temperament == MusicDataObject.TemperamentDataObject.PythagoreanTuning)
            {
                return(Temperament.PythagoreanTuning);
            }
            if (temperament == MusicDataObject.TemperamentDataObject.WellTemperament)
            {
                return(Temperament.WellTemperament);
            }

            return(Temperament.Default);
        }