protected MixTableChange ReadMixTableChange() { int[] pos = new int[8]; int i; int n; int aux; MixTableChange mtc = new MixTableChange(); // For easier processing, creates an array MixTableElement[] elements = new MixTableElement[8]; for (i = 0; i < 8; i++) { elements[i] = new MixTableElement(); } n = 0; for (i = 0; i < 7; i++) { aux = ReadByte(); if ((i != 0) && (aux != 255)) { pos[n] = i; n++; } elements[i].NewValue = aux; } // The tempo field is different (needs an integer) aux = ReadInt(); if (aux != -1) { pos[n] = i; n++; } elements[7].NewValue = aux; // Skip the instrument field for (i = 0; i < n; i++) { aux = ReadByte(); if (elements[pos[i]].NewValue != 255) { elements[pos[i]].ChangeDuration = aux; } } int applyToAllTracks = ReadByte(); // The instrument and the tempo are not affected for (i = 0; i < 6; i++) { if ((applyToAllTracks & (1 << i)) != 0) { elements[i + 1].ApplyToAllTracks = true; } } // The tempo always applies to all the tracks. elements[7].ApplyToAllTracks = true; // Sets all the values mtc.Instrument = elements[0]; mtc.Volume = elements[1]; mtc.Balance = elements[2]; mtc.Chorus = elements[3]; mtc.Reverb = elements[4]; mtc.Phaser = elements[5]; mtc.Tremolo = elements[6]; mtc.Tempo = elements[7]; return(mtc); }
protected MixTableChange ReadMixTableChange() { int[] pos = new int[8]; int i; int n; int aux; MixTableChange mtc = new MixTableChange(); // For easier processing, creates an array MixTableElement[] elements = new MixTableElement[8]; for (i = 0; i < 8; i++) elements[i] = new MixTableElement(); n = 0; for (i = 0; i < 7; i++) { aux = ReadByte(); if ((i != 0) && (aux != 255)) { pos[n] = i; n++; } elements[i].NewValue = aux; } // The tempo field is different (needs an integer) aux = ReadInt(); if (aux != -1) { pos[n] = i; n++; } elements[7].NewValue = aux; // Skip the instrument field for (i = 0; i < n; i++) { aux = ReadByte(); if (elements[pos[i]].NewValue != 255) { elements[pos[i]].ChangeDuration = aux; } } int applyToAllTracks = ReadByte(); // The instrument and the tempo are not affected for (i = 0; i < 6; i++) { if ((applyToAllTracks & (1 << i)) != 0) { elements[i + 1].ApplyToAllTracks = true; } } // The tempo always applies to all the tracks. elements[7].ApplyToAllTracks = true; // Sets all the values mtc.Instrument = elements[0]; mtc.Volume = elements[1]; mtc.Balance = elements[2]; mtc.Chorus = elements[3]; mtc.Reverb = elements[4]; mtc.Phaser = elements[5]; mtc.Tremolo = elements[6]; mtc.Tempo = elements[7]; return mtc; }