コード例 #1
0
        string name = string.Empty; // Cache the name

        public bool IsGoldenSunPSG()
        {
            if (!ROM.Instance.Game.Engine.HasGoldenSunSynths || (Type & 0x7) != (int)M4AVoiceType.Direct ||
                Type == (int)M4AVoiceFlags.KeySplit || Type == (int)M4AVoiceFlags.Drum)
            {
                return(false);
            }
            var gSample = new M4AWrappedSample(Address - ROM.Pak).GetSample();

            if (gSample == null)
            {
                return(false);
            }
            return(gSample.bLoop && gSample.LoopPoint == 0 && gSample.Length == 0);
        }
コード例 #2
0
            int AddDirectSample(M4AWrappedSample sample)
            {
                int sampleOffset = sample.GetOffset();

                if (savedSamples.Contains(sampleOffset))
                {
                    return(6 + savedSamples.IndexOf(sampleOffset));
                }
                savedSamples.Add(sampleOffset);

                var gSample = sample.GetSample();

                byte[]  pcm8  = ROM.Instance.Reader.ReadBytes(gSample.Length, gSample.GetOffset());
                short[] pcm16 = PCM8ToPCM16(pcm8);
                return((int)sf2.AddSample(pcm16, string.Format("Sample 0x{0:X7}", sampleOffset),
                                          gSample.bLoop, (uint)gSample.LoopPoint, (uint)gSample.Frequency, 60, 0));
            }