summaryrefslogtreecommitdiff
path: root/muse2/muse/audio.h
diff options
context:
space:
mode:
authorFlorian Jung <flo@windfisch.org>2012-07-01 16:42:16 +0000
committerFlorian Jung <flo@windfisch.org>2012-07-01 16:42:16 +0000
commit9c4664d162c537ba4dd4fd8220971c0fb727103a (patch)
tree37a28b7cd4e4d8984ad4934a4884cd7b4da0505c /muse2/muse/audio.h
parente87fedf1be804f7ec774071d844b1f163be30b96 (diff)
final merge
Diffstat (limited to 'muse2/muse/audio.h')
-rw-r--r--muse2/muse/audio.h22
1 files changed, 20 insertions, 2 deletions
diff --git a/muse2/muse/audio.h b/muse2/muse/audio.h
index a9d2cc82..7c3d73ce 100644
--- a/muse2/muse/audio.h
+++ b/muse2/muse/audio.h
@@ -31,6 +31,12 @@
#include "route.h"
#include "event.h"
+// An experiment to use true frames for time-stamping all recorded input.
+// (All recorded data actually arrived in the previous period.)
+// TODO: Some more work needs to be done in WaveTrack::getData() in order to
+// make everything line up and sync correctly. Cannot use this yet!
+//#define _AUDIO_USE_TRUE_FRAME_
+
namespace MusECore {
class AudioDevice;
class AudioTrack;
@@ -94,6 +100,7 @@ enum {
AUDIO_ADD_AC_EVENT,
AUDIO_CHANGE_AC_EVENT,
AUDIO_SET_SOLO, AUDIO_SET_SEND_METRONOME,
+ AUDIO_START_MIDI_LEARN,
MS_PROCESS, MS_STOP, MS_SET_RTC, MS_UPDATE_POLL_FD,
SEQM_IDLE, SEQM_SEEK,
};
@@ -147,7 +154,11 @@ class Audio {
int _loopCount; // Number of times we have looped so far
Pos _pos; // current play position
-
+
+#ifdef _AUDIO_USE_TRUE_FRAME_
+ Pos _previousPos; // previous play position
+#endif
+
unsigned curTickPos; // pos at start of frame during play/record
unsigned nextTickPos; // pos at start of next frame during play/record
@@ -172,7 +183,8 @@ class Audio {
// record values:
Pos startRecordPos;
Pos endRecordPos;
-
+ unsigned startExternalRecTick;
+ unsigned endExternalRecTick;
AudioOutput* _audioMaster;
AudioOutput* _audioMonitor;
@@ -288,6 +300,7 @@ class Audio {
void msgRemapPortDrumCtlEvents(int, int, int, int);
void msgChangeAllPortDrumCtrlEvents(bool, bool);
void msgSetSendMetronome(AudioTrack*, bool);
+ void msgStartMidiLearn();
void msgPlayMidiEvent(const MidiPlayEvent* event);
void rescanAlsaPorts();
@@ -295,8 +308,13 @@ class Audio {
void midiPortsChanged();
const Pos& pos() const { return _pos; }
+#ifdef _AUDIO_USE_TRUE_FRAME_
+ const Pos& previousPos() const { return _previousPos; }
+#endif
const Pos& getStartRecordPos() const { return startRecordPos; }
const Pos& getEndRecordPos() const { return endRecordPos; }
+ unsigned getStartExternalRecTick() const { return startExternalRecTick; }
+ unsigned getEndExternalRecTick() const { return endExternalRecTick; }
int loopCount() { return _loopCount; } // Number of times we have looped so far
unsigned loopFrame() { return _loopFrame; }