diff --git a/libs/ardour/ardour/beatbox.h b/libs/ardour/ardour/beatbox.h index 5e5bf7652a..ed931ca6af 100644 --- a/libs/ardour/ardour/beatbox.h +++ b/libs/ardour/ardour/beatbox.h @@ -39,6 +39,7 @@ namespace ARDOUR { class Source; class SMFSource; +class StepSequencer; typedef uint64_t superclock_t; @@ -51,6 +52,8 @@ class BeatBox : public ARDOUR::Processor { BeatBox (ARDOUR::Session& s); ~BeatBox (); + StepSequencer& sequencer() const { return *_sequencer; } + void run (BufferSet& /*bufs*/, samplepos_t /*start_frame*/, samplepos_t /*end_frame*/, double speed, pframes_t /*nframes*/, bool /*result_required*/); void silence (samplecnt_t nframes, samplepos_t start_frame); bool can_support_io_configuration (const ChanCount& in, ChanCount& out); @@ -82,6 +85,7 @@ class BeatBox : public ARDOUR::Processor { bool fill_source (boost::shared_ptr); private: + StepSequencer* _sequencer; bool _start_requested; bool _running; int _measures; diff --git a/libs/ardour/beatbox.cc b/libs/ardour/beatbox.cc index 159e2b40a5..d67c38e185 100644 --- a/libs/ardour/beatbox.cc +++ b/libs/ardour/beatbox.cc @@ -33,6 +33,7 @@ #include "ardour/midi_buffer.h" #include "ardour/session.h" #include "ardour/smf_source.h" +#include "ardour/step_sequencer.h" using std::cerr; using std::endl; @@ -43,6 +44,7 @@ MultiAllocSingleReleasePool BeatBox::Event::pool (X_("beatbox events"), sizeof ( BeatBox::BeatBox (Session& s) : Processor (s, _("BeatBox")) + , _sequencer (0) , _start_requested (false) , _running (false) , _measures (2) @@ -61,10 +63,12 @@ BeatBox::BeatBox (Session& s) , remove_queue (64) { _display_to_user = true; + _sequencer = new StepSequencer (1, 32); } BeatBox::~BeatBox () { + delete _sequencer; } void diff --git a/libs/ardour/wscript b/libs/ardour/wscript index 954cf8843b..baf4c199a4 100644 --- a/libs/ardour/wscript +++ b/libs/ardour/wscript @@ -249,6 +249,7 @@ libardour_sources = [ 'speakers.cc', 'srcfilesource.cc', 'stripable.cc', + 'step_sequencer.cc', 'strip_silence.cc', 'system_exec.cc', 'revision.cc',