I searched the forum and didn't find similiar requests so I decided to start a new thread >.>
The Idea
Basically this is adding one more parameter into the timing sections. It should enable mappers of setting the pitch of hitsounds being played in any specified timing section.
Reasons
Making it possible to transpose hitsounds make advanced hitsounding (like this) easier to achieve and take less space, and thus the gameplay could be more like "playing the music" rather than just to accompany. (In fact some effects are impossible to achieve due to custom sampleset limitations.)
Ordinary maps can also benefit from this by using transposing for emphasizing special points in the song.
Possible Implementation
The implementation should be simple, however I can't give out an exact solution(since I have no access to the source code). Following is only a brief description of the steps:
If the hitsound channel is not a FX channel, one should be created, like the music channel. Maybe:
Thanks!
The Idea
Basically this is adding one more parameter into the timing sections. It should enable mappers of setting the pitch of hitsounds being played in any specified timing section.
Reasons
Making it possible to transpose hitsounds make advanced hitsounding (like this) easier to achieve and take less space, and thus the gameplay could be more like "playing the music" rather than just to accompany. (In fact some effects are impossible to achieve due to custom sampleset limitations.)
Ordinary maps can also benefit from this by using transposing for emphasizing special points in the song.
Possible Implementation
The implementation should be simple, however I can't give out an exact solution(since I have no access to the source code). Following is only a brief description of the steps:
- 1. Add a number input box (like BPM and Offset input boxes) in the Audio tab of the Timing Panel.
2. Update data structures and .osu file writer/parser accordingly, dealing with the new parameter
3. Probably in the same procedure where the volume changing is performed, call the BASS function (osu! uses BASS & BASS Fx, right?), setting the pitch.BASS_ChannelSetAttribute(hitsoundChannelFx, BASS_ATTRIB_TEMPO_PITCH, timingPoint.pitch);
If the hitsound channel is not a FX channel, one should be created, like the music channel. Maybe:
hitsoundChannelFx = BASS_FX_TempoCreate(hitsoundChannel, BASS_STREAM_DECODE | BASS_FX_FREESOURCE);)
Thanks!