Skip to content

Commit

Permalink
fix: findSampleInRegion includes user's detune param
Browse files Browse the repository at this point in the history
  • Loading branch information
danigb committed Apr 11, 2024
1 parent 2f07512 commit e94905f
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 1 deletion.
17 changes: 17 additions & 0 deletions src/player/layers.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,23 @@ describe("findSamplesInRegions", () => {
]);
});

it("applies given detune", () => {
const group: RegionGroup = {
regions: [
{ sampleName: "a", midiPitch: 60, midiLow: 60, midiHigh: 75 },
{ sampleName: "b", midiPitch: 75, midiLow: 70, midiHigh: 80 },
],
sample: {},
};

expect(findSamplesInRegions(group, { note: 60, detune: 50 })).toEqual([
{ name: "a", detune: 50, note: 60 },
]);
expect(findSamplesInRegions(group, { note: 62, detune: -50 })).toEqual([
{ name: "a", detune: 150, note: 62 },
]);
});

it("finds finds with non integer midi", () => {
const group: RegionGroup = {
regions: [
Expand Down
3 changes: 2 additions & 1 deletion src/player/layers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,11 @@ function findSampleInRegion(
const velocity = sample.velocity ?? defaults.velocity;
const regionGainOffset = region.volume ? dbToGain(region.volume) : 0;
const sampleGainOffset = sample.gainOffset ?? defaults.gainOffset ?? 0;
const sampleDetune = sample.detune ?? 0;
return {
decayTime:
sample?.decayTime ?? region.sample?.decayTime ?? defaults.decayTime,
detune: 100 * (semitones + (region.tune ?? 0)),
detune: 100 * (semitones + (region.tune ?? 0)) + sampleDetune,
duration: sample?.duration ?? region.sample?.duration ?? defaults.duration,
gainOffset: sampleGainOffset + regionGainOffset || undefined,
loop: sample?.loop ?? region.sample?.loop ?? defaults.loop,
Expand Down

0 comments on commit e94905f

Please sign in to comment.