# HG changeset patch # User Chris Cannam # Date 1483545792 0 # Node ID 8541563f1fd3d7584e73e3a0a084f5b012580ca8 # Parent 3dcd83595bc83d5b641597c6292bbb83f05d7d10 Wire up record monitoring diff -r 3dcd83595bc8 -r 8541563f1fd3 base/AudioPlaySource.h --- a/base/AudioPlaySource.h Wed Jan 04 14:22:39 2017 +0000 +++ b/base/AudioPlaySource.h Wed Jan 04 16:03:12 2017 +0000 @@ -13,8 +13,8 @@ COPYING included with this distribution for more information. */ -#ifndef _AUDIO_PLAY_SOURCE_H_ -#define _AUDIO_PLAY_SOURCE_H_ +#ifndef SV_AUDIO_PLAY_SOURCE_H +#define SV_AUDIO_PLAY_SOURCE_H #include "BaseTypes.h" @@ -59,7 +59,9 @@ /** * Return the current (or thereabouts) output levels in the range - * 0.0 -> 1.0, for metering purposes. + * 0.0 -> 1.0, for metering purposes. The values returned are + * peak values since the last call to this function was made + * (i.e. calling this function also resets them). */ virtual bool getOutputLevels(float &left, float &right) = 0; diff -r 3dcd83595bc8 -r 8541563f1fd3 base/AudioRecordTarget.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/base/AudioRecordTarget.h Wed Jan 04 16:03:12 2017 +0000 @@ -0,0 +1,50 @@ +/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ + +/* + Sonic Visualiser + An audio file viewer and annotation editor. + Centre for Digital Music, Queen Mary, University of London. + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. See the file + COPYING included with this distribution for more information. +*/ + +#ifndef SV_AUDIO_RECORD_TARGET_H +#define SV_AUDIO_RECORD_TARGET_H + +#include "BaseTypes.h" + +/** + * The record target API used by the view manager. See also AudioPlaySource. + */ +class AudioRecordTarget +{ +public: + virtual ~AudioRecordTarget() { } + + /** + * Return whether recording is currently happening. + */ + virtual bool isRecording() const = 0; + + /** + * Return the approximate duration of the audio recording so far. + */ + virtual sv_frame_t getRecordDuration() const = 0; + + /** + * Return the current (or thereabouts) input levels in the range + * 0.0 -> 1.0, for metering purposes. Only valid while recording. + * The values returned are peak values since the last call to this + * function was made (i.e. calling this function also resets them). + */ + virtual bool getInputLevels(float &left, float &right) = 0; +}; + +#endif + + + diff -r 3dcd83595bc8 -r 8541563f1fd3 base/ViewManagerBase.h --- a/base/ViewManagerBase.h Wed Jan 04 14:22:39 2017 +0000 +++ b/base/ViewManagerBase.h Wed Jan 04 16:03:12 2017 +0000 @@ -21,6 +21,7 @@ #include "Selection.h" class AudioPlaySource; +class AudioRecordTarget; /** * Base class for ViewManager, with no GUI content. This should @@ -36,6 +37,7 @@ virtual ~ViewManagerBase(); virtual void setAudioPlaySource(AudioPlaySource *source) = 0; + virtual void setAudioRecordTarget(AudioRecordTarget *target) = 0; virtual sv_frame_t alignPlaybackFrameToReference(sv_frame_t) const = 0; virtual sv_frame_t alignReferenceToPlaybackFrame(sv_frame_t) const = 0; diff -r 3dcd83595bc8 -r 8541563f1fd3 files.pri --- a/files.pri Wed Jan 04 14:22:39 2017 +0000 +++ b/files.pri Wed Jan 04 16:03:12 2017 +0000 @@ -1,6 +1,7 @@ SVCORE_HEADERS = \ base/AudioLevel.h \ base/AudioPlaySource.h \ + base/AudioRecordTarget.h \ base/BaseTypes.h \ base/Clipboard.h \ base/ColumnOp.h \