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); }
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)); }