Skip to content

Commit b97699c

Browse files
committed
Fix rounding errors in pitch calculation
Fixes #317
1 parent 7151b9d commit b97699c

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

scripts/mp3_export/mp3_export.gml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,11 @@ function mp3_export() {
3636
var key = song_key[a, b];
3737
var vel = song_vel[a, b];
3838
var pit = song_pit[a, b];
39+
var keyshift = key + (ins.key + (pit/100) - 78)
3940
if (ins.loaded) {
4041
err = audio_sound_add(ins.file_id,
4142
a / tempo,
42-
0.5 * power(1.06, (key + (ins.key + (pit/100) - 78 - 0.23))),
43+
0.5 * power(2, keyshift / 12),
4344
layervol[b] / 100 / 100 * vel)
4445
if (err < 0) {
4546
if (language != 1) message("There was an error when saving as MP3.\nError code: c" + string(err), "Error")

scripts/play_sound/play_sound.gml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
/// @param fine pitch
88
function play_sound(argument0, argument1, argument2, argument3, argument4) {
99

10-
var ins, key, vol, pan, newemitter, emitter, pit
10+
var ins, key, vol, pan, newemitter, emitter, pit, keyshift
1111
ins = argument0
1212
key = argument1
1313
vol = argument2
@@ -17,7 +17,8 @@ function play_sound(argument0, argument1, argument2, argument3, argument4) {
1717
if (!ins.loaded)
1818
return 0
1919
emitter=audio_emitter_create()
20-
audio_emitter_pitch(emitter, 0.495 * power(1.06, (key + (ins.key + (pit/100) - 78))))
20+
keyshift = key + (ins.key + (pit/100) - 78)
21+
audio_emitter_pitch(emitter, 0.5 * power(2, keyshift / 12))
2122
audio_emitter_gain(emitter, (vol / 100) * mastervol)
2223
if (realstereo = 0) audio_emitter_position(emitter,pan,0,0)
2324
else audio_emitter_position(emitter,100,0,0)

0 commit comments

Comments
 (0)