Beispiel #1
0
 public void Register(NoteSpawner noteSpawner, BMSManager bmsManager, TimeSpan time, int channelId, int noteId, float delta, bool isLongNote)
 {
     if (!isIdle)
     {
         return;
     }
     this.noteSpawner               = noteSpawner;
     noteDetector                   = noteSpawner.noteDetector;
     noteDetector.OnNoteClicked    += NoteClicked;
     noteDetector.OnLongNoteMissed += LongNoteMissed;
     this.bmsManager                = bmsManager;
     targetTime         = time;
     this.channelId     = channelId;
     this.noteId        = noteId;
     this.delta         = delta;
     isIdle             = false;
     isMissed           = false;
     cycleDone          = false;
     longNoteRegistered = false;
     firstNoteClicked   = false;
     secondNoteClicked  = false;
     resultFlag         = -1;
     this.isLongNote    = isLongNote;
     gameObject.SetActive(true);
     Initialize();
     StartCoroutine(UpdateCoroutine());
 }
Beispiel #2
0
        public static void MusicMod2(WavFile musik, WavFile musik1, WavFile musikW, WavFile musikS, MelodyModell Mod)
        {
            for (int i = 0; i < musik.DataList.Count; i++)
            {
                musik.DataList[i] = (Int16)((musik.DataList[i] * 2) / 7);
            }

            double[] BitW = new double[musikW.DataList.Count];

            for (int i = 0; i < musikW.DataList.Count; i++)
            {
                BitW[i] = (Int16)((musikW.DataList[i] * 5) / 7);
            }

            var datM = musik1.DataList.Select(v => { return((double)v); }).ToArray();

            for (int i = 1; 2 * (i * Mod.BPMd) < musik.DataList.Count - Mod.BPMd; i++)
            {
                var maxCh = NoteDetector.DetectNote(Mod.BPMd, datM, i, Mod.BPMd);


                var    Bit = BitW;
                double k   = 1;
                if (i % 3 == 0)
                {
                    k = 2;
                }

                for (int j = 0; j < Bit.Length / 2 && musik.DataList.Count > (i * Mod.BPMd + j + Mod.StartSd) * 2; j++)
                {
                    musik.DataList[2 * (i * Mod.BPMd + j) + Mod.StartSd]     = (Int16)((Bit[2 * j] * k + musik.DataList[2 * (i * Mod.BPMd + j) + Mod.StartSd]));
                    musik.DataList[2 * (i * Mod.BPMd + j) + 1 + Mod.StartSd] = (Int16)((Bit[2 * j + 1] * k + musik.DataList[2 * (i * Mod.BPMd + j) + 1 + Mod.StartSd]));
                }
            }
        }
Beispiel #3
0
        private static void MusicMod(List <Tuple <double, double>[]> ret, WavFile musik, WavFile musik1, MelodyModell Mod)
        {
            for (int i = 0; i < musik.DataList.Count; i++)
            {
                musik.DataList[i] = (Int16)((musik.DataList[i] * 3) / 7);
            }

            var datM = musik1.DataList.Select(v => { return((double)v); }).ToArray();

            for (int i = 1; 2 * (i * Mod.BPMd) < musik.DataList.Count - Mod.BPMd; i++)
            {
                var sp = FastFourierTransform.FFTSpectr(datM, 2 * (i * Mod.BPMd), 2, 14, Mod.BPMd);

                int maxCh = 1;

                maxCh = (int)NoteDetector.DetectNote(Mod.BPMd, datM, i, Mod.BPMd);



                ret.Add(sp);

                var Bit = Generators.MusicImmitation(1 << 14, /*(int)((1 << 14) / (220 / 2.69 * ((i % 3 + 2) * 0.1)))*/ Math.Max(maxCh, 1), 5000, 10);

                for (int j = 0; j < Bit.Length && musik.DataList.Count > (i * Mod.BPMd + j + Mod.StartSd) * 2; j++)
                {
                    musik.DataList[2 * (i * Mod.BPMd + j)]     = (Int16)((Bit[j] * 4 / 7d + musik.DataList[2 * (i * Mod.BPMd + j) /*+ Mod.StartSd*/]));
                    musik.DataList[2 * (i * Mod.BPMd + j) + 1] = (Int16)((Bit[j] * 4 / 7d + musik.DataList[2 * (i * Mod.BPMd + j) + 1 /*+ Mod.StartSd*/]));
                }
            }
        }
Beispiel #4
0
        public void TestMaxC()
        {
            //Arrange
            var          detector      = new NoteDetector();
            const double testFrequency = 4185;
            var          expected      = new NoteC(7);
            //Act
            var result = detector.GetClosestNote(testFrequency);

            //Assert
            Assert.IsTrue(result == expected);
        }
Beispiel #5
0
        public void TestTransposedA()
        {
            //Arrange
            NoteDetector.TransposeDown(2);
            var          detector      = new NoteDetector();
            const double testFrequency = 440;
            var          expected      = new NoteB(3);
            //Act
            var result = detector.GetClosestNote(testFrequency);

            //Assert
            Assert.IsTrue(result == expected);
        }
Beispiel #6
0
        public static List <Note> ModelCreator(WavFile musik, MelodyModell Mod)
        {
            var ret = new List <Note>();

            var datM = musik.DataList.Select
                           (v =>
            {
                return((double)v);
            }).ToArray();

            for (int i = 1; 2 * (i * Mod.BPMd) < musik.DataList.Count - Mod.BPMd; i++)
            {
                var maxCh = NoteDetector.DetectNote(Mod.BPMd, datM, i, Mod.BPMd);

                ret.Add(NoteDetector.ChToNote(maxCh, (i * Mod.BPMd) / 44100d));
            }
            return(ret);
        }
Beispiel #7
0
        public static void MusicMod(WavFile musik, WavFile musik1, MelodyModell Mod)
        {
            for (int i = 0; i < musik.DataList.Count; i++)
            {
                musik.DataList[i] = (Int16)((musik.DataList[i] * 3) / 7);
            }

            var datM = musik1.DataList.Select(v => { return((double)v); }).ToArray();

            for (int i = 1; 2 * (i * Mod.BPMd) < musik.DataList.Count - Mod.BPMd; i++)
            {
                var maxCh = NoteDetector.DetectNote(Mod.BPMd, datM, i, Mod.BPMd);


                var Bit = Generators.MusicImmitation(1 << 14, (int)((1 << 14) / (220 / 2.69 * ((i % 3 + 2) * 0.1))) /*Math.Max(maxCh,1)*/, 5000, 10);

                for (int j = 0; j < Bit.Length && musik.DataList.Count > (i * Mod.BPMd + j + Mod.StartSd) * 2; j++)
                {
                    musik.DataList[2 * (i * Mod.BPMd + j)]     = (Int16)((Bit[j] * 4 / 7d + musik.DataList[2 * (i * Mod.BPMd + j) /*+ Mod.StartSd*/]));
                    musik.DataList[2 * (i * Mod.BPMd + j) + 1] = (Int16)((Bit[j] * 4 / 7d + musik.DataList[2 * (i * Mod.BPMd + j) + 1 /*+ Mod.StartSd*/]));
                }
            }
        }