Panning: fixed wrong type-conversion in panningToMidi()

Casting to panning_t in calculation in panningToMidi() leads to
integer overflows and thus to miscalculations. This resulted for
example in wrong panning during note preview when editing panning
of a note in PianoRoll. Casting to int instead fixes the issue.
This commit is contained in:
Tobias Doerffel
2009-08-05 12:23:08 +02:00
parent 0bb54199b0
commit 6e3e1513c7

View File

@@ -3,7 +3,7 @@
* panning of a note
*
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
*
*
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
*
* This program is free software; you can redistribute it and/or
@@ -41,9 +41,10 @@ inline stereoVolumeVector panningToVolumeVector( panning_t _p,
return v;
}
inline Sint16 panningToMidi( panning_t _p )
inline int panningToMidi( panning_t _p )
{
return MidiMinPanning + (panning_t) (
return MidiMinPanning + (int) (
( (float)( _p - PanningLeft ) ) /
( (float)( PanningRight - PanningLeft ) ) *
( (float)( MidiMaxPanning - MidiMinPanning ) ) );