fixed different issues in the audio module
This commit is contained in:
parent
a9aaefa2ab
commit
bcfe9ac9ce
|
@ -163,14 +163,12 @@ void AudioEngineDevTools::stopSequencerMidi()
|
|||
void AudioEngineDevTools::playPlayerMidi()
|
||||
{
|
||||
makeArpeggio();
|
||||
m_threadMIDIPlayer = sequencer()->instantlyPlayMidi(m_midiStream->initData);
|
||||
sequencer()->instantlyPlayMidi(m_midiStream->initData);
|
||||
}
|
||||
|
||||
void AudioEngineDevTools::stopPlayerMidi()
|
||||
{
|
||||
if (auto player = m_threadMIDIPlayer.lock()) {
|
||||
player->stop();
|
||||
}
|
||||
NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
void AudioEngineDevTools::play()
|
||||
|
|
|
@ -177,20 +177,11 @@ float RpcSequencer::playbackPosition() const
|
|||
return m_playbackPosition;
|
||||
}
|
||||
|
||||
ISequencer::MidiTrack RpcSequencer::instantlyPlayMidi(const midi::MidiData& data)
|
||||
void RpcSequencer::instantlyPlayMidi(const midi::MidiData& data)
|
||||
{
|
||||
if (rpcChannel()->isSerialized()) {
|
||||
NOT_IMPLEMENTED;
|
||||
} else {
|
||||
rpcChannel()->send(Msg(m_target, "instantlyPlayMidi", Args::make_arg1<midi::MidiData>(data)));
|
||||
}
|
||||
|
||||
//! TODO It is necessary to remove the return of the pointer to the player object.
|
||||
//! This is thread-unsafe code, see https://github.com/musescore/MuseScore/pull/6848#discussion_r558445611
|
||||
//! If we need to control this playback, then we need to
|
||||
//! add the generation of the ID,
|
||||
//! transfer it to the real sequencer,
|
||||
//! return this ID from the method,
|
||||
//! and add methods for control by passing this ID to them.
|
||||
return nullptr;
|
||||
}
|
||||
|
|
|
@ -55,7 +55,7 @@ public:
|
|||
async::Notification positionChanged() const override;
|
||||
async::Channel<mu::midi::tick_t> midiTickPlayed(TrackID id) const override;
|
||||
|
||||
MidiTrack instantlyPlayMidi(const midi::MidiData& data) override;
|
||||
void instantlyPlayMidi(const midi::MidiData& data) override;
|
||||
|
||||
private:
|
||||
Target m_target;
|
||||
|
|
|
@ -251,10 +251,10 @@ Sequencer::AudioTrack Sequencer::audioTrack(TrackID id) const
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
std::shared_ptr<IMIDIPlayer> Sequencer::instantlyPlayMidi(const midi::MidiData& data)
|
||||
void Sequencer::instantlyPlayMidi(const midi::MidiData& data)
|
||||
{
|
||||
if (!data.isValid()) {
|
||||
return nullptr;
|
||||
return;
|
||||
}
|
||||
auto player = std::make_shared<MIDIPlayer>();
|
||||
auto midiStream = std::make_shared<midi::MidiStream>();
|
||||
|
@ -266,5 +266,4 @@ std::shared_ptr<IMIDIPlayer> Sequencer::instantlyPlayMidi(const midi::MidiData&
|
|||
player->run();
|
||||
|
||||
m_backgroudPlayers.push_back({ 0 /*ms*/, player });
|
||||
return player;
|
||||
}
|
||||
|
|
|
@ -57,7 +57,7 @@ public:
|
|||
async::Notification positionChanged() const override;
|
||||
float playbackPosition() const override;
|
||||
|
||||
std::shared_ptr<IMIDIPlayer> instantlyPlayMidi(const midi::MidiData& data) override;
|
||||
void instantlyPlayMidi(const midi::MidiData& data) override;
|
||||
|
||||
private:
|
||||
void setStatus(Status status);
|
||||
|
|
|
@ -65,7 +65,8 @@ public:
|
|||
|
||||
//!return position in seconds
|
||||
virtual float playbackPosition() const = 0;
|
||||
virtual MidiTrack instantlyPlayMidi(const midi::MidiData& data) = 0;
|
||||
|
||||
virtual void instantlyPlayMidi(const midi::MidiData& data) = 0;
|
||||
};
|
||||
|
||||
using ISequencerPtr = std::shared_ptr<ISequencer>;
|
||||
|
|
4
thirdparty/stb/stb_vorbis.c
vendored
4
thirdparty/stb/stb_vorbis.c
vendored
|
@ -3055,7 +3055,7 @@ typedef int16 YTYPE;
|
|||
#else
|
||||
typedef int YTYPE;
|
||||
#endif
|
||||
static int do_floor(vorb *f, Mapping *map, int i, int n, float *target, YTYPE *finalY, uint8 *step2_flag)
|
||||
static int do_floor(vorb *f, Mapping *map, int i, int n, float *target, YTYPE *finalY, uint8 */*step2_flag*/)
|
||||
{
|
||||
int n2 = n >> 1;
|
||||
int s = map->chan[i].mux, floor;
|
||||
|
@ -3162,7 +3162,7 @@ static int vorbis_decode_initial(vorb *f, int *p_left_start, int *p_left_end, in
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static int vorbis_decode_packet_rest(vorb *f, int *len, Mode *m, int left_start, int left_end, int right_start, int right_end, int *p_left)
|
||||
static int vorbis_decode_packet_rest(vorb *f, int *len, Mode *m, int left_start, int /*left_end*/, int right_start, int right_end, int *p_left)
|
||||
{
|
||||
Mapping *map;
|
||||
int i,j,k,n,n2;
|
||||
|
|
Loading…
Reference in a new issue