Skip to content

Commit

Permalink
fixed different issues in the audio module
Browse files Browse the repository at this point in the history
  • Loading branch information
igorkorsukov committed Jan 21, 2021
1 parent a9aaefa commit bcfe9ac
Show file tree
Hide file tree
Showing 7 changed files with 11 additions and 22 deletions.
6 changes: 2 additions & 4 deletions src/framework/audio/devtools/audioenginedevtools.cpp
Expand Up @@ -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()
Expand Down
11 changes: 1 addition & 10 deletions src/framework/audio/internal/rpc/rpcsequencer.cpp
Expand Up @@ -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;
}
2 changes: 1 addition & 1 deletion src/framework/audio/internal/rpc/rpcsequencer.h
Expand Up @@ -55,7 +55,7 @@ class RpcSequencer : public ISequencer
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;
Expand Down
5 changes: 2 additions & 3 deletions src/framework/audio/internal/sequencer.cpp
Expand Up @@ -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>();
Expand All @@ -266,5 +266,4 @@ std::shared_ptr<IMIDIPlayer> Sequencer::instantlyPlayMidi(const midi::MidiData&
player->run();

m_backgroudPlayers.push_back({ 0 /*ms*/, player });
return player;
}
2 changes: 1 addition & 1 deletion src/framework/audio/internal/sequencer.h
Expand Up @@ -57,7 +57,7 @@ class Sequencer : public ISequencer, public async::Asyncable
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);
Expand Down
3 changes: 2 additions & 1 deletion src/framework/audio/isequencer.h
Expand Up @@ -65,7 +65,8 @@ class ISequencer : MODULE_EXPORT_INTERFACE

//!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>;
Expand Down
4 changes: 2 additions & 2 deletions thirdparty/stb/stb_vorbis.c
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit bcfe9ac

Please sign in to comment.