Skip to content

Logic EXS24: zones without a sample are left out instead of playing the sample of another zone - #494

Open
douglas-carmichael wants to merge 1 commit into
git-moss:mainfrom
douglas-carmichael:fix-exs24-empty-zones
Open

douglas-carmichael wants to merge 1 commit into
git-moss:mainfrom
douglas-carmichael:fix-exs24-empty-zones

Conversation

@douglas-carmichael

Copy link
Copy Markdown
Contributor

Logic stores a zone which has no sample - an empty zone, which plays nothing - with the sample index -1. The EXS24 reader replaced such an index with the index of the zone. The zone then either played the sample whose number happened to match, or, when that number was behind the end of the sample list, logged Sample index out of bounds once per zone.

Empty zones are common in real instruments. 11 instruments of the Logic and GarageBand libraries contain them:

  • 'Applause and Laugher', 'Comedy Noises' and 'Radio Sounds' of GarageBand map their 18 sounds onto 128 zones, one per key. Each got a second copy of its sounds on its 18 lowest keys and logged the error for 92 of its other empty zones. The Logic copies of these instruments and 'Nature Sounds' have the same layout.
  • 'Dry Standard Kit' played crash and click samples on 14 empty velocity layers of E2 and C#2.

In Goldbaby's 'KaZioTron Keys':

  • 'Bass_CT310_1_Cass' played its C3 sample on F#1 and G1, 18 semitones too high. Logic plays the E1 and G#1 zones there, which were stretched over the empty F#1 zone.
  • 'Mello_MT70_2_CassDC2' got its 31 organ samples a second time, on the keys of its 31 empty noise zones and with their loops, which click.
  • 'PianoWave_VL1_CassFX' and 'WarmPedal_VL1_CassFX' logged the error 31 times each, since their 31 empty zones come after their 31 samples.

Change

  • Zones without a sample are left out. One message per file counts them, e.g. Left out 31 zone(s) without a sample, which play nothing in Logic either.
  • Only if not a single zone of a file references a sample, the zones still play the samples in their order, as before. None of the 3,033 EXS files on the test machine is such a file, so this case keeps its behaviour.
  • New message IDS_EXS_EMPTY_ZONES, and a CHANGELOG entry in a new 'Logic EXS24' block of 20.4.0.

Tests

Analyse with details (-ad), compared with main:

  • BlueWave (231 instruments): identical output.
  • KaZioTron Keys (162 instruments): only the 4 instruments with empty zones change. 'Bass_CT310_1_Cass' has 18 instead of 19 zones, and its transpose note now finds 11 of 11 measured zones in agreement instead of 10 of 11. 'Mello_MT70_2_CassDC2' keeps only its 31 organ zones and gets its transpose note (12 of 12) instead of a note about 18 clicking loops.
  • The 11 instruments of the Logic and GarageBand libraries: the stray zones and the 646 Sample index out of bounds errors are gone. 'Dry Standard Kit' has 193 instead of 207 zones.

The new 'Logic EXS24' block sits in front of 'SFZ', where #490 and #491 add their 'Elektron Tonverk Preset' block. Whichever is merged second needs both blocks kept.

…he sample of another zone

Logic stores a zone which has no sample - an empty zone, which plays
nothing - with the sample index -1. Such an index was replaced by the
index of the zone, so the zone either played the sample whose number
matched it or, behind the end of the sample list, logged 'Sample index
out of bounds' once per zone.

11 instruments of the Logic and GarageBand libraries contain empty
zones: 'Applause and Laugher' maps its 18 sounds onto 128 zones, one
per key, and got a second copy of these sounds on its 18 lowest keys;
'Dry Standard Kit' played crash and click samples on 14 empty velocity
layers of E2 and C#2. In Goldbaby's 'KaZioTron Keys',
'Bass_CT310_1_Cass' played its C3 sample on F#1 and G1, where Logic
plays the E1 and G#1 zones which were stretched over the empty F#1
zone, and 'Mello_MT70_2_CassDC2' got its 31 organ samples a second time
on the keys of its 31 empty noise zones, with their loops.

Empty zones are now left out and counted in one message. Only if not a
single zone of a file references a sample, the zones still play the
samples in their order, as before.

Analyse (-ad) compared with the previous commit: the 231 instruments of
the BlueWave library are identical, of the 162 of 'KaZioTron Keys' only
the 4 with empty zones change, and the 11 instruments of the Logic and
GarageBand libraries lose their stray zones and 646 errors.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant