Renamed MIDI and audio related classes/files to match new style
Renamed all MIDI and audio related classes/files to match new style. Additionally various cleanups.
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* audio_alsa.h - device-class that implements ALSA-PCM-output
|
||||
* AudioAlsa.h - device-class that implements ALSA-PCM-output
|
||||
*
|
||||
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2004-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -22,7 +22,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _AUDIO_ALSA_H
|
||||
#define _AUDIO_ALSA_H
|
||||
|
||||
@@ -35,35 +34,35 @@
|
||||
|
||||
#include <alsa/asoundlib.h>
|
||||
|
||||
#include "audio_device.h"
|
||||
#include "AudioDevice.h"
|
||||
|
||||
|
||||
class lcdSpinBox;
|
||||
class QLineEdit;
|
||||
|
||||
|
||||
class audioALSA : public audioDevice, public QThread
|
||||
class AudioAlsa : public AudioDevice, public QThread
|
||||
{
|
||||
public:
|
||||
audioALSA( bool & _success_ful, mixer * _mixer );
|
||||
virtual ~audioALSA();
|
||||
AudioAlsa( bool & _success_ful, mixer * _mixer );
|
||||
virtual ~AudioAlsa();
|
||||
|
||||
inline static QString name( void )
|
||||
inline static QString name()
|
||||
{
|
||||
return( QT_TRANSLATE_NOOP( "setupWidget",
|
||||
"ALSA (Advanced Linux Sound Architecture)" ) );
|
||||
return QT_TRANSLATE_NOOP( "setupWidget",
|
||||
"ALSA (Advanced Linux Sound Architecture)" );
|
||||
}
|
||||
|
||||
static QString probeDevice( void );
|
||||
static QString probeDevice();
|
||||
|
||||
|
||||
class setupWidget : public audioDevice::setupWidget
|
||||
class setupWidget : public AudioDevice::setupWidget
|
||||
{
|
||||
public:
|
||||
setupWidget( QWidget * _parent );
|
||||
virtual ~setupWidget();
|
||||
|
||||
virtual void saveSettings( void );
|
||||
virtual void saveSettings();
|
||||
|
||||
private:
|
||||
QLineEdit * m_device;
|
||||
@@ -73,13 +72,13 @@ public:
|
||||
|
||||
|
||||
private:
|
||||
virtual void startProcessing( void );
|
||||
virtual void stopProcessing( void );
|
||||
virtual void applyQualitySettings( void );
|
||||
virtual void run( void );
|
||||
virtual void startProcessing();
|
||||
virtual void stopProcessing();
|
||||
virtual void applyQualitySettings();
|
||||
virtual void run();
|
||||
|
||||
int setHWParams( const ch_cnt_t _channels, snd_pcm_access_t _access );
|
||||
int setSWParams( void );
|
||||
int setSWParams();
|
||||
int handleError( int _err );
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* audio_device.h - base-class for audio-devices, used by LMMS-mixer
|
||||
* AudioDevice.h - base-class for audio-devices, used by LMMS-mixer
|
||||
*
|
||||
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2004-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -22,7 +22,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _AUDIO_DEVICE_H
|
||||
#define _AUDIO_DEVICE_H
|
||||
|
||||
@@ -34,61 +33,60 @@
|
||||
#include "tab_widget.h"
|
||||
|
||||
|
||||
class audioPort;
|
||||
class AudioPort;
|
||||
|
||||
|
||||
|
||||
class audioDevice
|
||||
class AudioDevice
|
||||
{
|
||||
public:
|
||||
audioDevice( const ch_cnt_t _channels, mixer * _mixer );
|
||||
virtual ~audioDevice();
|
||||
AudioDevice( const ch_cnt_t _channels, mixer * _mixer );
|
||||
virtual ~AudioDevice();
|
||||
|
||||
inline void lock( void )
|
||||
inline void lock()
|
||||
{
|
||||
m_devMutex.lock();
|
||||
}
|
||||
|
||||
inline void unlock( void )
|
||||
inline void unlock()
|
||||
{
|
||||
m_devMutex.unlock();
|
||||
}
|
||||
|
||||
|
||||
// if audio-driver supports ports, classes inherting audioPort
|
||||
// if audio-driver supports ports, classes inherting AudioPort
|
||||
// (e.g. channel-tracks) can register themselves for making
|
||||
// audio-driver able to collect their individual output and provide
|
||||
// them at a specific port - currently only supported by JACK
|
||||
virtual void registerPort( audioPort * _port );
|
||||
virtual void unregisterPort( audioPort * _port );
|
||||
virtual void renamePort( audioPort * _port );
|
||||
virtual void registerPort( AudioPort * _port );
|
||||
virtual void unregisterPort( AudioPort * _port );
|
||||
virtual void renamePort( AudioPort * _port );
|
||||
|
||||
|
||||
inline bool supportsCapture( void ) const
|
||||
inline bool supportsCapture() const
|
||||
{
|
||||
return( m_supportsCapture );
|
||||
return m_supportsCapture;
|
||||
}
|
||||
|
||||
inline sample_rate_t sampleRate( void ) const
|
||||
inline sample_rate_t sampleRate() const
|
||||
{
|
||||
return( m_sampleRate );
|
||||
return m_sampleRate;
|
||||
}
|
||||
|
||||
ch_cnt_t channels( void ) const
|
||||
ch_cnt_t channels() const
|
||||
{
|
||||
return( m_channels );
|
||||
return m_channels;
|
||||
}
|
||||
|
||||
void processNextBuffer( void );
|
||||
void processNextBuffer();
|
||||
|
||||
virtual void startProcessing( void )
|
||||
virtual void startProcessing()
|
||||
{
|
||||
m_inProcess = TRUE;
|
||||
m_inProcess = true;
|
||||
}
|
||||
|
||||
virtual void stopProcessing( void );
|
||||
virtual void stopProcessing();
|
||||
|
||||
virtual void applyQualitySettings( void );
|
||||
virtual void applyQualitySettings();
|
||||
|
||||
|
||||
|
||||
@@ -106,9 +104,9 @@ public:
|
||||
{
|
||||
}
|
||||
|
||||
virtual void saveSettings( void ) = 0;
|
||||
virtual void saveSettings() = 0;
|
||||
|
||||
virtual void show( void )
|
||||
virtual void show()
|
||||
{
|
||||
parentWidget()->show();
|
||||
QWidget::show();
|
||||
@@ -154,16 +152,18 @@ protected:
|
||||
m_sampleRate = _new_sr;
|
||||
}
|
||||
|
||||
mixer * getMixer( void )
|
||||
mixer * getMixer()
|
||||
{
|
||||
return( m_mixer );
|
||||
return m_mixer;
|
||||
}
|
||||
|
||||
bool hqAudio( void ) const;
|
||||
bool hqAudio() const;
|
||||
|
||||
|
||||
protected:
|
||||
bool m_supportsCapture;
|
||||
|
||||
|
||||
private:
|
||||
sample_rate_t m_sampleRate;
|
||||
ch_cnt_t m_channels;
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* audio_dummy.h - dummy-audio-device
|
||||
* AudioDummy.h - dummy audio-device
|
||||
*
|
||||
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2004-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -22,40 +22,38 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _AUDIO_DUMMY_H
|
||||
#define _AUDIO_DUMMY_H
|
||||
|
||||
#include "audio_device.h"
|
||||
#include "micro_timer.h"
|
||||
#include "AudioDevice.h"
|
||||
#include "MicroTimer.h"
|
||||
|
||||
|
||||
class audioDummy : public audioDevice, public QThread
|
||||
class AudioDummy : public AudioDevice, public QThread
|
||||
{
|
||||
public:
|
||||
audioDummy( bool & _success_ful, mixer * _mixer ) :
|
||||
audioDevice( DEFAULT_CHANNELS, _mixer )
|
||||
AudioDummy( bool & _success_ful, mixer * _mixer ) :
|
||||
AudioDevice( DEFAULT_CHANNELS, _mixer )
|
||||
{
|
||||
_success_ful = TRUE;
|
||||
_success_ful = true;
|
||||
}
|
||||
|
||||
virtual ~audioDummy()
|
||||
virtual ~AudioDummy()
|
||||
{
|
||||
stopProcessing();
|
||||
}
|
||||
|
||||
inline static QString name( void )
|
||||
inline static QString name()
|
||||
{
|
||||
return( QT_TRANSLATE_NOOP( "setupWidget",
|
||||
"Dummy (no sound output)" ) );
|
||||
return QT_TRANSLATE_NOOP( "setupWidget", "Dummy (no sound output)" );
|
||||
}
|
||||
|
||||
|
||||
class setupWidget : public audioDevice::setupWidget
|
||||
class setupWidget : public AudioDevice::setupWidget
|
||||
{
|
||||
public:
|
||||
setupWidget( QWidget * _parent ) :
|
||||
audioDevice::setupWidget( audioDummy::name(), _parent )
|
||||
AudioDevice::setupWidget( AudioDummy::name(), _parent )
|
||||
{
|
||||
}
|
||||
|
||||
@@ -63,11 +61,11 @@ public:
|
||||
{
|
||||
}
|
||||
|
||||
virtual void saveSettings( void )
|
||||
virtual void saveSettings()
|
||||
{
|
||||
}
|
||||
|
||||
virtual void show( void )
|
||||
virtual void show()
|
||||
{
|
||||
parentWidget()->hide();
|
||||
QWidget::show();
|
||||
@@ -77,12 +75,12 @@ public:
|
||||
|
||||
|
||||
private:
|
||||
virtual void startProcessing( void )
|
||||
virtual void startProcessing()
|
||||
{
|
||||
start();
|
||||
}
|
||||
|
||||
virtual void stopProcessing( void )
|
||||
virtual void stopProcessing()
|
||||
{
|
||||
if( isRunning() )
|
||||
{
|
||||
@@ -91,10 +89,10 @@ private:
|
||||
}
|
||||
}
|
||||
|
||||
virtual void run( void )
|
||||
virtual void run()
|
||||
{
|
||||
microTimer timer;
|
||||
while( TRUE )
|
||||
MicroTimer timer;
|
||||
while( true )
|
||||
{
|
||||
timer.reset();
|
||||
const surroundSampleFrame * b =
|
||||
@@ -1,9 +1,9 @@
|
||||
/*
|
||||
* audio_file_device.h - base-class for audio-device-classes which write
|
||||
* their output into a file
|
||||
* AudioFileDevice.h - base-class for audio-device-classes which write
|
||||
* their output into a file
|
||||
*
|
||||
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2004-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -26,17 +26,15 @@
|
||||
#ifndef _AUDIO_FILE_DEVICE_H
|
||||
#define _AUDIO_FILE_DEVICE_H
|
||||
|
||||
|
||||
#include <QtCore/QFile>
|
||||
|
||||
#include "audio_device.h"
|
||||
#include "AudioDevice.h"
|
||||
|
||||
|
||||
|
||||
class audioFileDevice : public audioDevice
|
||||
class AudioFileDevice : public AudioDevice
|
||||
{
|
||||
public:
|
||||
audioFileDevice( const sample_rate_t _sample_rate,
|
||||
AudioFileDevice( const sample_rate_t _sample_rate,
|
||||
const ch_cnt_t _channels, const QString & _file,
|
||||
const bool _use_vbr,
|
||||
const bitrate_t _nom_bitrate,
|
||||
@@ -44,45 +42,45 @@ public:
|
||||
const bitrate_t _max_bitrate,
|
||||
const int _depth,
|
||||
mixer * _mixer );
|
||||
virtual ~audioFileDevice();
|
||||
virtual ~AudioFileDevice();
|
||||
|
||||
QString outputFile( void ) const
|
||||
QString outputFile() const
|
||||
{
|
||||
return( m_outputFile.fileName() );
|
||||
return m_outputFile.fileName();
|
||||
}
|
||||
|
||||
|
||||
protected:
|
||||
Sint32 writeData( const void * _data, Sint32 _len );
|
||||
|
||||
inline bool useVBR( void ) const
|
||||
inline bool useVBR() const
|
||||
{
|
||||
return( m_useVbr );
|
||||
return m_useVbr;
|
||||
}
|
||||
|
||||
inline bitrate_t nominalBitrate( void ) const
|
||||
inline bitrate_t nominalBitrate() const
|
||||
{
|
||||
return( m_nomBitrate );
|
||||
return m_nomBitrate;
|
||||
}
|
||||
|
||||
inline bitrate_t minBitrate( void ) const
|
||||
inline bitrate_t minBitrate() const
|
||||
{
|
||||
return( m_minBitrate );
|
||||
return m_minBitrate;
|
||||
}
|
||||
|
||||
inline bitrate_t maxBitrate( void ) const
|
||||
inline bitrate_t maxBitrate() const
|
||||
{
|
||||
return( m_maxBitrate );
|
||||
return m_maxBitrate;
|
||||
}
|
||||
|
||||
inline int depth( void ) const
|
||||
inline int depth() const
|
||||
{
|
||||
return( m_depth );
|
||||
return m_depth;
|
||||
}
|
||||
|
||||
inline bool outputFileOpened( void ) const
|
||||
inline bool outputFileOpened() const
|
||||
{
|
||||
return( m_outputFile.isOpen() );
|
||||
return m_outputFile.isOpen();
|
||||
}
|
||||
|
||||
|
||||
@@ -100,7 +98,7 @@ private:
|
||||
} ;
|
||||
|
||||
|
||||
typedef audioFileDevice * ( * audioFileDeviceInstantiaton )
|
||||
typedef AudioFileDevice * ( * AudioFileDeviceInstantiaton )
|
||||
( const sample_rate_t _sample_rate,
|
||||
const ch_cnt_t _channels,
|
||||
bool & _success_ful,
|
||||
@@ -1,9 +1,9 @@
|
||||
/*
|
||||
* audio_file_ogg.h - Audio-device which encodes wave-stream and writes it
|
||||
* into an OGG-file. This is used for song-export.
|
||||
* AudioFileOgg.h - Audio-device which encodes wave-stream and writes it
|
||||
* into an OGG-file. This is used for song-export.
|
||||
*
|
||||
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2004-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -23,7 +23,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _AUDIO_FILE_OGG_H
|
||||
#define _AUDIO_FILE_OGG_H
|
||||
|
||||
@@ -33,14 +32,13 @@
|
||||
|
||||
#include <vorbis/codec.h>
|
||||
|
||||
#include "audio_file_device.h"
|
||||
#include "AudioFileDevice.h"
|
||||
|
||||
|
||||
|
||||
class audioFileOgg : public audioFileDevice
|
||||
class AudioFileOgg : public AudioFileDevice
|
||||
{
|
||||
public:
|
||||
audioFileOgg( const sample_rate_t _sample_rate,
|
||||
AudioFileOgg( const sample_rate_t _sample_rate,
|
||||
const ch_cnt_t _channels,
|
||||
bool & _success_ful,
|
||||
const QString & _file,
|
||||
@@ -50,9 +48,9 @@ public:
|
||||
const bitrate_t _max_bitrate,
|
||||
const int _depth,
|
||||
mixer * _mixer );
|
||||
virtual ~audioFileOgg();
|
||||
virtual ~AudioFileOgg();
|
||||
|
||||
static audioFileDevice * getInst( const sample_rate_t _sample_rate,
|
||||
static AudioFileDevice * getInst( const sample_rate_t _sample_rate,
|
||||
const ch_cnt_t _channels,
|
||||
bool & _success_ful,
|
||||
const QString & _file,
|
||||
@@ -63,10 +61,10 @@ public:
|
||||
const int _depth,
|
||||
mixer * _mixer )
|
||||
{
|
||||
return( new audioFileOgg( _sample_rate, _channels, _success_ful,
|
||||
return new AudioFileOgg( _sample_rate, _channels, _success_ful,
|
||||
_file, _use_vbr, _nom_bitrate,
|
||||
_min_bitrate, _max_bitrate,
|
||||
_depth, _mixer ) );
|
||||
_depth, _mixer );
|
||||
}
|
||||
|
||||
|
||||
@@ -75,9 +73,9 @@ private:
|
||||
const fpp_t _frames,
|
||||
const float _master_gain );
|
||||
|
||||
bool startEncoding( void );
|
||||
void finishEncoding( void );
|
||||
inline Sint32 writePage( void );
|
||||
bool startEncoding();
|
||||
void finishEncoding();
|
||||
inline Sint32 writePage();
|
||||
|
||||
|
||||
bool m_ok;
|
||||
@@ -1,9 +1,9 @@
|
||||
/*
|
||||
* audio_file_wave.h - Audio-device which encodes wave-stream and writes it
|
||||
* into an WAVE-file. This is used for song-export.
|
||||
* AudioFileWave.h - AudioDevice which encodes wave-stream and writes it
|
||||
* into a WAVE-file. This is used for song-export.
|
||||
*
|
||||
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2004-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -23,21 +23,19 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _AUDIO_FILE_WAVE_H
|
||||
#define _AUDIO_FILE_WAVE_H
|
||||
|
||||
|
||||
#include "lmmsconfig.h"
|
||||
#include "audio_file_device.h"
|
||||
#include "AudioFileDevice.h"
|
||||
|
||||
#include <sndfile.h>
|
||||
|
||||
|
||||
class audioFileWave : public audioFileDevice
|
||||
class AudioFileWave : public AudioFileDevice
|
||||
{
|
||||
public:
|
||||
audioFileWave( const sample_rate_t _sample_rate,
|
||||
AudioFileWave( const sample_rate_t _sample_rate,
|
||||
const ch_cnt_t _channels,
|
||||
bool & _success_ful,
|
||||
const QString & _file,
|
||||
@@ -47,9 +45,9 @@ public:
|
||||
const bitrate_t _max_bitrate,
|
||||
const int _depth,
|
||||
mixer * _mixer );
|
||||
virtual ~audioFileWave();
|
||||
virtual ~AudioFileWave();
|
||||
|
||||
static audioFileDevice * getInst( const sample_rate_t _sample_rate,
|
||||
static AudioFileDevice * getInst( const sample_rate_t _sample_rate,
|
||||
const ch_cnt_t _channels,
|
||||
bool & _success_ful,
|
||||
const QString & _file,
|
||||
@@ -60,11 +58,11 @@ public:
|
||||
const int _depth,
|
||||
mixer * _mixer )
|
||||
{
|
||||
return( new audioFileWave( _sample_rate, _channels,
|
||||
return new AudioFileWave( _sample_rate, _channels,
|
||||
_success_ful, _file, _use_vbr,
|
||||
_nom_bitrate, _min_bitrate,
|
||||
_max_bitrate, _depth,
|
||||
_mixer ) );
|
||||
_mixer );
|
||||
}
|
||||
|
||||
|
||||
@@ -73,8 +71,8 @@ private:
|
||||
const fpp_t _frames,
|
||||
float _master_gain );
|
||||
|
||||
bool startEncoding( void );
|
||||
void finishEncoding( void );
|
||||
bool startEncoding();
|
||||
void finishEncoding();
|
||||
|
||||
|
||||
SF_INFO m_si;
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* audio_jack.h - support for JACK-transport
|
||||
* AudioJack.h - support for JACK-transport
|
||||
*
|
||||
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -22,7 +22,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _AUDIO_JACK_H
|
||||
#define _AUDIO_JACK_H
|
||||
|
||||
@@ -36,35 +35,34 @@
|
||||
#include <QtCore/QList>
|
||||
#include <QtCore/QMap>
|
||||
|
||||
|
||||
#include "audio_device.h"
|
||||
#include "AudioDevice.h"
|
||||
|
||||
|
||||
class QLineEdit;
|
||||
class lcdSpinBox;
|
||||
|
||||
|
||||
class audioJACK : public QObject, public audioDevice
|
||||
class AudioJack : public QObject, public AudioDevice
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
audioJACK( bool & _success_ful, mixer * _mixer );
|
||||
virtual ~audioJACK();
|
||||
AudioJack( bool & _success_ful, mixer * _mixer );
|
||||
virtual ~AudioJack();
|
||||
|
||||
inline static QString name( void )
|
||||
inline static QString name()
|
||||
{
|
||||
return QT_TRANSLATE_NOOP( "setupWidget",
|
||||
"JACK (JACK Audio Connection Kit)" );
|
||||
}
|
||||
|
||||
|
||||
class setupWidget : public audioDevice::setupWidget
|
||||
class setupWidget : public AudioDevice::setupWidget
|
||||
{
|
||||
public:
|
||||
setupWidget( QWidget * _parent );
|
||||
virtual ~setupWidget();
|
||||
|
||||
virtual void saveSettings( void );
|
||||
virtual void saveSettings();
|
||||
|
||||
private:
|
||||
QLineEdit * m_clientName;
|
||||
@@ -74,20 +72,20 @@ public:
|
||||
|
||||
|
||||
private slots:
|
||||
void restartAfterZombified( void );
|
||||
void restartAfterZombified();
|
||||
|
||||
|
||||
#ifdef LMMS_HAVE_JACK
|
||||
private:
|
||||
bool initJackClient( void );
|
||||
bool initJackClient();
|
||||
|
||||
virtual void startProcessing( void );
|
||||
virtual void stopProcessing( void );
|
||||
virtual void applyQualitySettings( void );
|
||||
virtual void startProcessing();
|
||||
virtual void stopProcessing();
|
||||
virtual void applyQualitySettings();
|
||||
|
||||
virtual void registerPort( audioPort * _port );
|
||||
virtual void unregisterPort( audioPort * _port );
|
||||
virtual void renamePort( audioPort * _port );
|
||||
virtual void registerPort( AudioPort * _port );
|
||||
virtual void unregisterPort( AudioPort * _port );
|
||||
virtual void renamePort( AudioPort * _port );
|
||||
|
||||
int processCallback( jack_nframes_t _nframes, void * _udata );
|
||||
|
||||
@@ -111,17 +109,17 @@ private:
|
||||
f_cnt_t m_framesToDoInCurBuf;
|
||||
|
||||
|
||||
struct stereoPort
|
||||
struct StereoPort
|
||||
{
|
||||
jack_port_t * ports[2];
|
||||
} ;
|
||||
|
||||
typedef QMap<audioPort *, stereoPort> jackPortMap;
|
||||
jackPortMap m_portMap;
|
||||
typedef QMap<AudioPort *, StereoPort> JackPortMap;
|
||||
JackPortMap m_portMap;
|
||||
#endif
|
||||
|
||||
signals:
|
||||
void zombified( void );
|
||||
void zombified();
|
||||
|
||||
} ;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* audio_oss.h - device-class that implements OSS-PCM-output
|
||||
* AudioOss.h - device-class that implements OSS-PCM-output
|
||||
*
|
||||
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2004-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -22,7 +22,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _AUDIO_OSS_H
|
||||
#define _AUDIO_OSS_H
|
||||
|
||||
@@ -30,35 +29,34 @@
|
||||
|
||||
#ifdef LMMS_HAVE_OSS
|
||||
|
||||
#include "audio_device.h"
|
||||
#include "AudioDevice.h"
|
||||
|
||||
|
||||
class lcdSpinBox;
|
||||
class QLineEdit;
|
||||
|
||||
|
||||
class audioOSS : public audioDevice, public QThread
|
||||
class AudioOss : public AudioDevice, public QThread
|
||||
{
|
||||
public:
|
||||
audioOSS( bool & _success_ful, mixer * _mixer );
|
||||
virtual ~audioOSS();
|
||||
AudioOss( bool & _success_ful, mixer * _mixer );
|
||||
virtual ~AudioOss();
|
||||
|
||||
inline static QString name( void )
|
||||
inline static QString name()
|
||||
{
|
||||
return( QT_TRANSLATE_NOOP( "setupWidget",
|
||||
"OSS (Open Sound System)" ) );
|
||||
return QT_TRANSLATE_NOOP( "setupWidget", "OSS (Open Sound System)" );
|
||||
}
|
||||
|
||||
static QString probeDevice( void );
|
||||
static QString probeDevice();
|
||||
|
||||
|
||||
class setupWidget : public audioDevice::setupWidget
|
||||
class setupWidget : public AudioDevice::setupWidget
|
||||
{
|
||||
public:
|
||||
setupWidget( QWidget * _parent );
|
||||
virtual ~setupWidget();
|
||||
|
||||
virtual void saveSettings( void );
|
||||
virtual void saveSettings();
|
||||
|
||||
private:
|
||||
QLineEdit * m_device;
|
||||
@@ -68,10 +66,10 @@ public:
|
||||
|
||||
|
||||
private:
|
||||
virtual void startProcessing( void );
|
||||
virtual void stopProcessing( void );
|
||||
virtual void applyQualitySettings( void );
|
||||
virtual void run( void );
|
||||
virtual void startProcessing();
|
||||
virtual void stopProcessing();
|
||||
virtual void applyQualitySettings();
|
||||
virtual void run();
|
||||
|
||||
int m_audioFD;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* audio_port.h - base-class for objects providing sound at a port
|
||||
* AudioPort.h - base-class for objects providing sound at a port
|
||||
*
|
||||
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -22,7 +22,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _AUDIO_PORT_H
|
||||
#define _AUDIO_PORT_H
|
||||
|
||||
@@ -34,49 +33,49 @@
|
||||
|
||||
class effectChain;
|
||||
|
||||
class audioPort
|
||||
class AudioPort
|
||||
{
|
||||
public:
|
||||
audioPort( const QString & _name, bool _has_effect_chain = true );
|
||||
~audioPort();
|
||||
AudioPort( const QString & _name, bool _has_effect_chain = true );
|
||||
~AudioPort();
|
||||
|
||||
inline sampleFrame * firstBuffer( void )
|
||||
inline sampleFrame * firstBuffer()
|
||||
{
|
||||
return( m_firstBuffer );
|
||||
return m_firstBuffer;
|
||||
}
|
||||
|
||||
inline sampleFrame * secondBuffer( void )
|
||||
inline sampleFrame * secondBuffer()
|
||||
{
|
||||
return( m_secondBuffer );
|
||||
return m_secondBuffer;
|
||||
}
|
||||
|
||||
inline void lockFirstBuffer( void )
|
||||
inline void lockFirstBuffer()
|
||||
{
|
||||
m_firstBufferLock.lock();
|
||||
}
|
||||
|
||||
inline void lockSecondBuffer( void )
|
||||
inline void lockSecondBuffer()
|
||||
{
|
||||
m_secondBufferLock.lock();
|
||||
}
|
||||
|
||||
inline void unlockFirstBuffer( void )
|
||||
inline void unlockFirstBuffer()
|
||||
{
|
||||
m_firstBufferLock.unlock();
|
||||
}
|
||||
|
||||
inline void unlockSecondBuffer( void )
|
||||
inline void unlockSecondBuffer()
|
||||
{
|
||||
m_secondBufferLock.unlock();
|
||||
}
|
||||
|
||||
void nextPeriod( void );
|
||||
void nextPeriod();
|
||||
|
||||
|
||||
// indicate whether JACK & Co should provide output-buffer at ext. port
|
||||
inline bool extOutputEnabled( void ) const
|
||||
inline bool extOutputEnabled() const
|
||||
{
|
||||
return( m_extOutputEnabled );
|
||||
return m_extOutputEnabled;
|
||||
}
|
||||
|
||||
void setExtOutputEnabled( bool _enabled );
|
||||
@@ -84,14 +83,14 @@ public:
|
||||
|
||||
// next effect-channel after this audio-port
|
||||
// (-1 = none 0 = master)
|
||||
inline fx_ch_t nextFxChannel( void ) const
|
||||
inline fx_ch_t nextFxChannel() const
|
||||
{
|
||||
return( m_nextFxChannel );
|
||||
return m_nextFxChannel;
|
||||
}
|
||||
|
||||
inline effectChain * getEffects( void )
|
||||
inline effectChain * getEffects()
|
||||
{
|
||||
return( m_effects );
|
||||
return m_effects;
|
||||
}
|
||||
|
||||
void setNextFxChannel( const fx_ch_t _chnl )
|
||||
@@ -100,15 +99,15 @@ public:
|
||||
}
|
||||
|
||||
|
||||
const QString & name( void ) const
|
||||
const QString & name() const
|
||||
{
|
||||
return( m_name );
|
||||
return m_name;
|
||||
}
|
||||
|
||||
void setName( const QString & _new_name );
|
||||
|
||||
|
||||
bool processEffects( void );
|
||||
bool processEffects();
|
||||
|
||||
|
||||
enum bufferUsages
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* audio_portaudio.h - device-class that performs PCM-output via PortAudio
|
||||
* AudioPortAudio.h - device-class that performs PCM-output via PortAudio
|
||||
*
|
||||
* Copyright (c) 2008 Csaba Hruska <csaba.hruska/at/gmail.com>
|
||||
*
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -22,7 +22,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _AUDIO_PORTAUDIO_H
|
||||
#define _AUDIO_PORTAUDIO_H
|
||||
|
||||
@@ -31,12 +30,12 @@
|
||||
#include "lmmsconfig.h"
|
||||
#include "combobox_model.h"
|
||||
|
||||
class audioPortAudioSetupUtil : public QObject
|
||||
class AudioPortAudioSetupUtil : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public slots:
|
||||
void updateDevices( void );
|
||||
void updateChannels( void );
|
||||
void updateDevices();
|
||||
void updateChannels();
|
||||
|
||||
public:
|
||||
comboBoxModel m_backendModel;
|
||||
@@ -48,7 +47,7 @@ public:
|
||||
|
||||
#include <portaudio.h>
|
||||
|
||||
#include "audio_device.h"
|
||||
#include "AudioDevice.h"
|
||||
|
||||
#if defined paNeverDropInput || defined paNonInterleaved
|
||||
# define PORTAUDIO_V19
|
||||
@@ -61,16 +60,15 @@ class comboBox;
|
||||
class lcdSpinBox;
|
||||
|
||||
|
||||
class audioPortAudio : public audioDevice
|
||||
class AudioPortAudio : public AudioDevice
|
||||
{
|
||||
public:
|
||||
audioPortAudio( bool & _success_ful, mixer * _mixer );
|
||||
virtual ~audioPortAudio();
|
||||
AudioPortAudio( bool & _success_ful, mixer * _mixer );
|
||||
virtual ~AudioPortAudio();
|
||||
|
||||
inline static QString name( void )
|
||||
inline static QString name()
|
||||
{
|
||||
return( QT_TRANSLATE_NOOP( "setupWidget",
|
||||
"PortAudio" ) );
|
||||
return QT_TRANSLATE_NOOP( "setupWidget", "PortAudio" );
|
||||
}
|
||||
|
||||
|
||||
@@ -79,26 +77,26 @@ public:
|
||||
unsigned long _framesPerBuffer );
|
||||
|
||||
|
||||
class setupWidget : public audioDevice::setupWidget
|
||||
class setupWidget : public AudioDevice::setupWidget
|
||||
{
|
||||
public:
|
||||
setupWidget( QWidget * _parent );
|
||||
virtual ~setupWidget();
|
||||
|
||||
virtual void saveSettings( void );
|
||||
virtual void saveSettings();
|
||||
|
||||
private:
|
||||
comboBox * m_backend;
|
||||
comboBox * m_device;
|
||||
lcdSpinBox * m_channels;
|
||||
audioPortAudioSetupUtil m_setupUtil;
|
||||
AudioPortAudioSetupUtil m_setupUtil;
|
||||
|
||||
} ;
|
||||
|
||||
private:
|
||||
virtual void startProcessing( void );
|
||||
virtual void stopProcessing( void );
|
||||
virtual void applyQualitySettings( void );
|
||||
virtual void startProcessing();
|
||||
virtual void stopProcessing();
|
||||
virtual void applyQualitySettings();
|
||||
|
||||
#ifdef PORTAUDIO_V19
|
||||
static int _process_callback( const void *_inputBuffer, void * _outputBuffer,
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* audio_pulseaudio.h - device-class which implements PulseAudio-output
|
||||
* AudioPulseAudio.h - device-class which implements PulseAudio-output
|
||||
*
|
||||
* Copyright (c) 2008-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -22,7 +22,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _AUDIO_PULSEAUDIO_H
|
||||
#define _AUDIO_PULSEAUDIO_H
|
||||
|
||||
@@ -32,35 +31,34 @@
|
||||
|
||||
#include <pulse/pulseaudio.h>
|
||||
|
||||
#include "audio_device.h"
|
||||
#include "AudioDevice.h"
|
||||
|
||||
|
||||
class lcdSpinBox;
|
||||
class QLineEdit;
|
||||
|
||||
|
||||
class audioPulseAudio : public audioDevice, public QThread
|
||||
class AudioPulseAudio : public AudioDevice, public QThread
|
||||
{
|
||||
public:
|
||||
audioPulseAudio( bool & _success_ful, mixer * _mixer );
|
||||
virtual ~audioPulseAudio();
|
||||
AudioPulseAudio( bool & _success_ful, mixer * _mixer );
|
||||
virtual ~AudioPulseAudio();
|
||||
|
||||
inline static QString name( void )
|
||||
inline static QString name()
|
||||
{
|
||||
return( QT_TRANSLATE_NOOP( "setupWidget",
|
||||
"PulseAudio (bad latency!)" ) );
|
||||
return QT_TRANSLATE_NOOP( "setupWidget", "PulseAudio (bad latency!)" );
|
||||
}
|
||||
|
||||
static QString probeDevice( void );
|
||||
static QString probeDevice();
|
||||
|
||||
|
||||
class setupWidget : public audioDevice::setupWidget
|
||||
class setupWidget : public AudioDevice::setupWidget
|
||||
{
|
||||
public:
|
||||
setupWidget( QWidget * _parent );
|
||||
virtual ~setupWidget();
|
||||
|
||||
virtual void saveSettings( void );
|
||||
virtual void saveSettings();
|
||||
|
||||
private:
|
||||
QLineEdit * m_device;
|
||||
@@ -76,10 +74,10 @@ public:
|
||||
|
||||
|
||||
private:
|
||||
virtual void startProcessing( void );
|
||||
virtual void stopProcessing( void );
|
||||
virtual void applyQualitySettings( void );
|
||||
virtual void run( void );
|
||||
virtual void startProcessing();
|
||||
virtual void stopProcessing();
|
||||
virtual void applyQualitySettings();
|
||||
virtual void run();
|
||||
|
||||
|
||||
bool m_convertEndian;
|
||||
@@ -1,10 +1,9 @@
|
||||
/*
|
||||
* audio_sample_recorder.h - device-class that implements recording
|
||||
* surround-audio-buffers into RAM, maybe later
|
||||
* also harddisk
|
||||
* AudioSampleRecorder.h - device-class that implements recording
|
||||
* audio-buffers into RAM
|
||||
*
|
||||
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2004-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -24,28 +23,25 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _AUDIO_SAMPLE_RECORDER_H
|
||||
#define _AUDIO_SAMPLE_RECORDER_H
|
||||
|
||||
|
||||
#include <QtCore/QList>
|
||||
#include <QtCore/QPair>
|
||||
|
||||
#include "audio_device.h"
|
||||
|
||||
#include "AudioDevice.h"
|
||||
|
||||
class sampleBuffer;
|
||||
|
||||
|
||||
class audioSampleRecorder : public audioDevice
|
||||
class AudioSampleRecorder : public AudioDevice
|
||||
{
|
||||
public:
|
||||
audioSampleRecorder( const ch_cnt_t _channels, bool & _success_ful,
|
||||
AudioSampleRecorder( const ch_cnt_t _channels, bool & _success_ful,
|
||||
mixer * _mixer );
|
||||
virtual ~audioSampleRecorder();
|
||||
virtual ~AudioSampleRecorder();
|
||||
|
||||
f_cnt_t framesRecorded( void ) const;
|
||||
f_cnt_t framesRecorded() const;
|
||||
void createSampleBuffer( sampleBuffer * * _sample_buf );
|
||||
|
||||
|
||||
@@ -54,8 +50,8 @@ private:
|
||||
const fpp_t _frames,
|
||||
const float _master_gain );
|
||||
|
||||
typedef QList<QPair<sampleFrame *, fpp_t> > bufferList;
|
||||
bufferList m_buffers;
|
||||
typedef QList<QPair<sampleFrame *, fpp_t> > BufferList;
|
||||
BufferList m_buffers;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* audio_sdl.h - device-class that performs PCM-output via SDL
|
||||
* AudioSdl.h - device-class that performs PCM-output via SDL
|
||||
*
|
||||
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2004-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -22,7 +22,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _AUDIO_SDL_H
|
||||
#define _AUDIO_SDL_H
|
||||
|
||||
@@ -33,32 +32,31 @@
|
||||
#include <SDL/SDL.h>
|
||||
#include <SDL/SDL_audio.h>
|
||||
|
||||
#include "audio_device.h"
|
||||
|
||||
#include "AudioDevice.h"
|
||||
|
||||
class QLineEdit;
|
||||
|
||||
|
||||
class audioSDL : public audioDevice
|
||||
class AudioSdl : public AudioDevice
|
||||
{
|
||||
public:
|
||||
audioSDL( bool & _success_ful, mixer * _mixer );
|
||||
virtual ~audioSDL();
|
||||
AudioSdl( bool & _success_ful, mixer * _mixer );
|
||||
virtual ~AudioSdl();
|
||||
|
||||
inline static QString name( void )
|
||||
inline static QString name()
|
||||
{
|
||||
return( QT_TRANSLATE_NOOP( "setupWidget",
|
||||
"SDL (Simple DirectMedia Layer)" ) );
|
||||
return QT_TRANSLATE_NOOP( "setupWidget",
|
||||
"SDL (Simple DirectMedia Layer)" );
|
||||
}
|
||||
|
||||
|
||||
class setupWidget : public audioDevice::setupWidget
|
||||
class setupWidget : public AudioDevice::setupWidget
|
||||
{
|
||||
public:
|
||||
setupWidget( QWidget * _parent );
|
||||
virtual ~setupWidget();
|
||||
|
||||
virtual void saveSettings( void );
|
||||
virtual void saveSettings();
|
||||
|
||||
private:
|
||||
QLineEdit * m_device;
|
||||
@@ -67,9 +65,9 @@ public:
|
||||
|
||||
|
||||
private:
|
||||
virtual void startProcessing( void );
|
||||
virtual void stopProcessing( void );
|
||||
virtual void applyQualitySettings( void );
|
||||
virtual void startProcessing();
|
||||
virtual void stopProcessing();
|
||||
virtual void applyQualitySettings();
|
||||
|
||||
static void sdlAudioCallback( void * _udata, Uint8 * _buf, int _len );
|
||||
void sdlAudioCallback( Uint8 * _buf, int _len );
|
||||
@@ -44,7 +44,7 @@ class groupBox;
|
||||
class tabWidget;
|
||||
class lcdSpinBox;
|
||||
class ledCheckBox;
|
||||
class midiPortMenu;
|
||||
class MidiPortMenu;
|
||||
|
||||
|
||||
|
||||
@@ -80,7 +80,7 @@ private:
|
||||
lcdSpinBox * m_midiChannelSpinBox;
|
||||
lcdSpinBox * m_midiControllerSpinBox;
|
||||
ledCheckBox * m_midiAutoDetectCheckBox;
|
||||
midiPortMenu * m_readablePorts;
|
||||
MidiPortMenu * m_readablePorts;
|
||||
boolModel m_midiAutoDetect;
|
||||
|
||||
// User
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* micro_timer.h - simple high-precision timer
|
||||
* MicroTimer.h - simple high-precision timer
|
||||
*
|
||||
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2005-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -22,7 +22,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _MICRO_TIMER
|
||||
#define _MICRO_TIMER
|
||||
|
||||
@@ -36,29 +35,29 @@
|
||||
#include "lmms_basics.h"
|
||||
|
||||
|
||||
class microTimer
|
||||
class MicroTimer
|
||||
{
|
||||
public:
|
||||
inline microTimer( void )
|
||||
inline MicroTimer()
|
||||
{
|
||||
reset();
|
||||
}
|
||||
|
||||
inline ~microTimer()
|
||||
inline ~MicroTimer()
|
||||
{
|
||||
}
|
||||
|
||||
inline void reset( void )
|
||||
inline void reset()
|
||||
{
|
||||
gettimeofday( &begin, NULL );
|
||||
}
|
||||
|
||||
inline int elapsed( void ) const
|
||||
inline int elapsed() const
|
||||
{
|
||||
struct timeval now;
|
||||
gettimeofday( &now, NULL );
|
||||
return( ( now.tv_sec - begin.tv_sec ) * 1000 * 1000 +
|
||||
( now.tv_usec - begin.tv_usec ) );
|
||||
return ( now.tv_sec - begin.tv_sec ) * 1000 * 1000 +
|
||||
( now.tv_usec - begin.tv_usec );
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* midi_alsa_raw.h - midi-client for RawMIDI via ALSA
|
||||
* MidiAlsaRaw.h - midi-client for RawMIDI via ALSA
|
||||
*
|
||||
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2005-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -22,7 +22,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _MIDI_ALSA_RAW_H
|
||||
#define _MIDI_ALSA_RAW_H
|
||||
|
||||
@@ -34,36 +33,36 @@
|
||||
|
||||
#include <QtCore/QThread>
|
||||
|
||||
#include "midi_client.h"
|
||||
#include "MidiClient.h"
|
||||
|
||||
|
||||
struct pollfd;
|
||||
class QLineEdit;
|
||||
|
||||
|
||||
class midiALSARaw : public midiClientRaw, public QThread
|
||||
class MidiAlsaRaw : public MidiClientRaw , public QThread
|
||||
{
|
||||
public:
|
||||
midiALSARaw( void );
|
||||
virtual ~midiALSARaw();
|
||||
MidiAlsaRaw();
|
||||
virtual ~MidiAlsaRaw();
|
||||
|
||||
static QString probeDevice( void );
|
||||
static QString probeDevice();
|
||||
|
||||
|
||||
inline static QString name( void )
|
||||
inline static QString name()
|
||||
{
|
||||
return( QT_TRANSLATE_NOOP( "setupWidget",
|
||||
"ALSA Raw-MIDI (Advanced Linux Sound Architecture)" ) );
|
||||
return QT_TRANSLATE_NOOP( "setupWidget",
|
||||
"ALSA Raw-MIDI (Advanced Linux Sound Architecture)" );
|
||||
}
|
||||
|
||||
|
||||
class setupWidget : public midiClientRaw::setupWidget
|
||||
class setupWidget : public MidiClientRaw::setupWidget
|
||||
{
|
||||
public:
|
||||
setupWidget( QWidget * _parent );
|
||||
virtual ~setupWidget();
|
||||
|
||||
virtual void saveSettings( void );
|
||||
virtual void saveSettings();
|
||||
|
||||
private:
|
||||
QLineEdit * m_device;
|
||||
@@ -73,7 +72,7 @@ public:
|
||||
|
||||
protected:
|
||||
virtual void sendByte( const Uint8 _c );
|
||||
virtual void run( void );
|
||||
virtual void run();
|
||||
|
||||
|
||||
private:
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* midi_alsa_seq.h - ALSA-sequencer-client
|
||||
* MidiAlsaSeq.h - ALSA-sequencer-client
|
||||
*
|
||||
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -22,7 +22,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _MIDI_ALSA_SEQ_H
|
||||
#define _MIDI_ALSA_SEQ_H
|
||||
|
||||
@@ -36,60 +35,60 @@
|
||||
#include <QtCore/QTimer>
|
||||
|
||||
|
||||
#include "midi_client.h"
|
||||
#include "MidiClient.h"
|
||||
|
||||
|
||||
struct pollfd;
|
||||
class QLineEdit;
|
||||
|
||||
|
||||
class midiALSASeq : public QThread, public midiClient
|
||||
class MidiAlsaSeq : public QThread, public MidiClient
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
midiALSASeq( void );
|
||||
virtual ~midiALSASeq();
|
||||
MidiAlsaSeq();
|
||||
virtual ~MidiAlsaSeq();
|
||||
|
||||
static QString probeDevice( void );
|
||||
static QString probeDevice();
|
||||
|
||||
|
||||
inline static QString name( void )
|
||||
inline static QString name()
|
||||
{
|
||||
return( QT_TRANSLATE_NOOP( "setupWidget",
|
||||
return QT_TRANSLATE_NOOP( "setupWidget",
|
||||
"ALSA-Sequencer (Advanced Linux Sound "
|
||||
"Architecture)" ) );
|
||||
"Architecture)" );
|
||||
}
|
||||
|
||||
|
||||
|
||||
virtual void processOutEvent( const midiEvent & _me,
|
||||
const midiTime & _time,
|
||||
const midiPort * _port );
|
||||
const MidiPort * _port );
|
||||
|
||||
virtual void applyPortMode( midiPort * _port );
|
||||
virtual void applyPortName( midiPort * _port );
|
||||
virtual void applyPortMode( MidiPort * _port );
|
||||
virtual void applyPortName( MidiPort * _port );
|
||||
|
||||
virtual void removePort( midiPort * _port );
|
||||
virtual void removePort( MidiPort * _port );
|
||||
|
||||
|
||||
// list seq-ports from ALSA
|
||||
virtual QStringList readablePorts( void ) const
|
||||
virtual QStringList readablePorts() const
|
||||
{
|
||||
return m_readablePorts;
|
||||
}
|
||||
|
||||
virtual QStringList writablePorts( void ) const
|
||||
virtual QStringList writablePorts() const
|
||||
{
|
||||
return m_writablePorts;
|
||||
}
|
||||
|
||||
// (un)subscribe given midiPort to/from destination-port
|
||||
virtual void subscribeReadablePort( midiPort * _port,
|
||||
// (un)subscribe given MidiPort to/from destination-port
|
||||
virtual void subscribeReadablePort( MidiPort * _port,
|
||||
const QString & _dest,
|
||||
bool _subscribe = TRUE );
|
||||
virtual void subscribeWritablePort( midiPort * _port,
|
||||
bool _subscribe = true );
|
||||
virtual void subscribeWritablePort( MidiPort * _port,
|
||||
const QString & _dest,
|
||||
bool _subscribe = TRUE );
|
||||
bool _subscribe = true );
|
||||
virtual void connectRPChanged( QObject * _receiver,
|
||||
const char * _member )
|
||||
{
|
||||
@@ -105,13 +104,13 @@ public:
|
||||
}
|
||||
|
||||
|
||||
class setupWidget : public midiClient::setupWidget
|
||||
class setupWidget : public MidiClient::setupWidget
|
||||
{
|
||||
public:
|
||||
setupWidget( QWidget * _parent );
|
||||
virtual ~setupWidget();
|
||||
|
||||
virtual void saveSettings( void );
|
||||
virtual void saveSettings();
|
||||
|
||||
private:
|
||||
QLineEdit * m_device;
|
||||
@@ -121,21 +120,21 @@ public:
|
||||
|
||||
private slots:
|
||||
void changeQueueTempo( bpm_t _bpm );
|
||||
void updatePortList( void );
|
||||
void updatePortList();
|
||||
|
||||
|
||||
private:
|
||||
virtual void run( void );
|
||||
virtual void run();
|
||||
|
||||
#ifdef LMMS_HAVE_ALSA
|
||||
snd_seq_t * m_seqHandle;
|
||||
struct ports
|
||||
struct Ports
|
||||
{
|
||||
ports() { p[0] = -1; p[1] = -1; }
|
||||
int & operator[]( const int _i ) { return( p[_i] ); }
|
||||
Ports() { p[0] = -1; p[1] = -1; }
|
||||
int & operator[]( const int _i ) { return p[_i]; }
|
||||
private: int p[2];
|
||||
} ;
|
||||
QMap<midiPort *, ports> m_portIDs;
|
||||
QMap<MidiPort *, Ports> m_portIDs;
|
||||
#endif
|
||||
|
||||
int m_queueID;
|
||||
@@ -150,8 +149,8 @@ private:
|
||||
|
||||
|
||||
signals:
|
||||
void readablePortsChanged( void );
|
||||
void writablePortsChanged( void );
|
||||
void readablePortsChanged();
|
||||
void writablePortsChanged();
|
||||
|
||||
} ;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* midi_client.h - base-class for MIDI-clients like ALSA-sequencer-client
|
||||
* MidiClient.h - base-class for MIDI clients like ALSA-sequencer-client
|
||||
*
|
||||
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -22,7 +22,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _MIDI_CLIENT_H
|
||||
#define _MIDI_CLIENT_H
|
||||
|
||||
@@ -31,60 +30,60 @@
|
||||
|
||||
|
||||
#include "midi.h"
|
||||
#include "midi_event_processor.h"
|
||||
#include "MidiEventProcessor.h"
|
||||
#include "tab_widget.h"
|
||||
|
||||
|
||||
class midiPort;
|
||||
class MidiPort;
|
||||
|
||||
|
||||
// base-class for all MIDI-clients
|
||||
class midiClient
|
||||
class MidiClient
|
||||
{
|
||||
public:
|
||||
midiClient( void );
|
||||
virtual ~midiClient();
|
||||
MidiClient();
|
||||
virtual ~MidiClient();
|
||||
|
||||
// to be implemented by sub-classes
|
||||
virtual void processOutEvent( const midiEvent & _me,
|
||||
const midiTime & _time,
|
||||
const midiPort * _port ) = 0;
|
||||
const MidiPort * _port ) = 0;
|
||||
|
||||
// inheriting classes can re-implement this for being able to update
|
||||
// their internal port-structures etc.
|
||||
virtual void applyPortMode( midiPort * _port );
|
||||
virtual void applyPortName( midiPort * _port );
|
||||
virtual void applyPortMode( MidiPort * _port );
|
||||
virtual void applyPortName( MidiPort * _port );
|
||||
|
||||
virtual void addPort( midiPort * _port );
|
||||
virtual void addPort( MidiPort * _port );
|
||||
|
||||
// re-implemented methods HAVE to call removePort() of base-class!!
|
||||
virtual void removePort( midiPort * _port );
|
||||
virtual void removePort( MidiPort * _port );
|
||||
|
||||
|
||||
// returns whether client works with raw-MIDI, only needs to be
|
||||
// re-implemented by midiClientRaw for returning TRUE
|
||||
virtual bool isRaw( void ) const
|
||||
// re-implemented by MidiClientRaw for returning true
|
||||
virtual bool isRaw() const
|
||||
{
|
||||
return( FALSE );
|
||||
return false;
|
||||
}
|
||||
|
||||
// if not raw-client, return all readable/writable ports
|
||||
virtual QStringList readablePorts( void ) const
|
||||
virtual QStringList readablePorts() const
|
||||
{
|
||||
return QStringList();
|
||||
}
|
||||
virtual QStringList writablePorts( void ) const
|
||||
virtual QStringList writablePorts() const
|
||||
{
|
||||
return QStringList();
|
||||
}
|
||||
|
||||
// (un)subscribe given midiPort to/from destination-port
|
||||
virtual void subscribeReadablePort( midiPort * _port,
|
||||
// (un)subscribe given MidiPort to/from destination-port
|
||||
virtual void subscribeReadablePort( MidiPort * _port,
|
||||
const QString & _dest,
|
||||
bool _subscribe = TRUE );
|
||||
virtual void subscribeWritablePort( midiPort * _port,
|
||||
bool _subscribe = true );
|
||||
virtual void subscribeWritablePort( MidiPort * _port,
|
||||
const QString & _dest,
|
||||
bool _subscribe = TRUE );
|
||||
bool _subscribe = true );
|
||||
|
||||
// qobject-derived classes can use this for make a slot being
|
||||
// connected to signal of non-raw-MIDI-client if port-lists change
|
||||
@@ -98,7 +97,7 @@ public:
|
||||
|
||||
// tries to open either MIDI-driver from config-file or (if it fails)
|
||||
// any other working
|
||||
static midiClient * openMidiClient( void );
|
||||
static MidiClient * openMidiClient();
|
||||
|
||||
|
||||
class setupWidget : public tabWidget
|
||||
@@ -115,9 +114,9 @@ public:
|
||||
{
|
||||
}
|
||||
|
||||
virtual void saveSettings( void ) = 0;
|
||||
virtual void saveSettings() = 0;
|
||||
|
||||
virtual void show( void )
|
||||
virtual void show()
|
||||
{
|
||||
parentWidget()->show();
|
||||
QWidget::show();
|
||||
@@ -127,7 +126,7 @@ public:
|
||||
|
||||
|
||||
protected:
|
||||
QVector<midiPort *> m_midiPorts;
|
||||
QVector<MidiPort *> m_midiPorts;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -137,16 +136,16 @@ protected:
|
||||
const Uint8 RAW_MIDI_PARSE_BUF_SIZE = 16;
|
||||
|
||||
|
||||
class midiClientRaw : public midiClient
|
||||
class MidiClientRaw : public MidiClient
|
||||
{
|
||||
public:
|
||||
midiClientRaw( void );
|
||||
virtual ~midiClientRaw();
|
||||
MidiClientRaw();
|
||||
virtual ~MidiClientRaw();
|
||||
|
||||
// we are raw-clients for sure!
|
||||
virtual bool isRaw( void ) const
|
||||
virtual bool isRaw() const
|
||||
{
|
||||
return( TRUE );
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -163,7 +162,7 @@ private:
|
||||
void processParsedEvent();
|
||||
virtual void processOutEvent( const midiEvent & _me,
|
||||
const midiTime & _time,
|
||||
const midiPort * _port );
|
||||
const MidiPort * _port );
|
||||
|
||||
// small helper function returning length of a certain event - this
|
||||
// is neccessary for parsing raw-MIDI-data
|
||||
@@ -29,11 +29,11 @@
|
||||
|
||||
#include "automatable_model.h"
|
||||
#include "Controller.h"
|
||||
#include "midi_event_processor.h"
|
||||
#include "midi_port.h"
|
||||
#include "MidiEventProcessor.h"
|
||||
#include "MidiPort.h"
|
||||
|
||||
|
||||
class midiPort;
|
||||
class MidiPort;
|
||||
|
||||
|
||||
class MidiController : public Controller, public MidiEventProcessor
|
||||
@@ -57,7 +57,7 @@ public:
|
||||
virtual QString nodeName( void ) const;
|
||||
|
||||
// Used by controllerConnectionDialog to copy
|
||||
void subscribeReadablePorts( const midiPort::map & _map );
|
||||
void subscribeReadablePorts( const MidiPort::Map & _map );
|
||||
|
||||
|
||||
public slots:
|
||||
@@ -70,7 +70,7 @@ protected:
|
||||
virtual float value( int _offset );
|
||||
|
||||
|
||||
midiPort m_midiPort;
|
||||
MidiPort m_midiPort;
|
||||
|
||||
|
||||
float m_lastValue;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* midi_dummy.h - dummy MIDI-driver
|
||||
* MidiDummy.h - dummy MIDI-driver
|
||||
*
|
||||
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2005-2007 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -22,36 +22,34 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _MIDI_DUMMY_H
|
||||
#define _MIDI_DUMMY_H
|
||||
|
||||
|
||||
#include "midi_client.h"
|
||||
#include "MidiClient.h"
|
||||
|
||||
|
||||
class midiDummy : public midiClientRaw
|
||||
class MidiDummy : public MidiClientRaw
|
||||
{
|
||||
public:
|
||||
midiDummy( void )
|
||||
MidiDummy()
|
||||
{
|
||||
}
|
||||
virtual ~midiDummy()
|
||||
virtual ~MidiDummy()
|
||||
{
|
||||
}
|
||||
|
||||
inline static QString name( void )
|
||||
inline static QString name()
|
||||
{
|
||||
return( QT_TRANSLATE_NOOP( "setupWidget",
|
||||
"Dummy (no MIDI support)" ) );
|
||||
}
|
||||
|
||||
|
||||
class setupWidget : public midiClient::setupWidget
|
||||
class setupWidget : public MidiClient::setupWidget
|
||||
{
|
||||
public:
|
||||
setupWidget( QWidget * _parent ) :
|
||||
midiClientRaw::setupWidget( midiDummy::name(), _parent )
|
||||
MidiClientRaw::setupWidget( MidiDummy::name(), _parent )
|
||||
{
|
||||
}
|
||||
|
||||
@@ -59,11 +57,11 @@ public:
|
||||
{
|
||||
}
|
||||
|
||||
virtual void saveSettings( void )
|
||||
virtual void saveSettings()
|
||||
{
|
||||
}
|
||||
|
||||
virtual void show( void )
|
||||
virtual void show()
|
||||
{
|
||||
parentWidget()->hide();
|
||||
QWidget::show();
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* midi_event_processor.h - base-class for midi-processing classes
|
||||
* MidiEventProcessor.h - base-class for midi-processing classes
|
||||
*
|
||||
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* midi_oss.h - OSS-raw-midi-client
|
||||
* MidiOss.h - OSS raw MIDI client
|
||||
*
|
||||
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2005-2007 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -22,7 +22,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _MIDI_OSS_H
|
||||
#define _MIDI_OSS_H
|
||||
|
||||
@@ -33,35 +32,35 @@
|
||||
#include <QtCore/QThread>
|
||||
#include <QtCore/QFile>
|
||||
|
||||
#include "midi_client.h"
|
||||
#include "MidiClient.h"
|
||||
|
||||
|
||||
class QLineEdit;
|
||||
|
||||
|
||||
class midiOSS : public midiClientRaw, public QThread
|
||||
class MidiOss : public MidiClientRaw, public QThread
|
||||
{
|
||||
public:
|
||||
midiOSS( void );
|
||||
virtual ~midiOSS();
|
||||
MidiOss();
|
||||
virtual ~MidiOss();
|
||||
|
||||
static QString probeDevice( void );
|
||||
static QString probeDevice();
|
||||
|
||||
|
||||
inline static QString name( void )
|
||||
inline static QString name()
|
||||
{
|
||||
return( QT_TRANSLATE_NOOP( "setupWidget",
|
||||
"OSS Raw-MIDI (Open Sound System)" ) );
|
||||
}
|
||||
|
||||
|
||||
class setupWidget : public midiClientRaw::setupWidget
|
||||
class setupWidget : public MidiClientRaw::setupWidget
|
||||
{
|
||||
public:
|
||||
setupWidget( QWidget * _parent );
|
||||
virtual ~setupWidget();
|
||||
|
||||
virtual void saveSettings( void );
|
||||
virtual void saveSettings();
|
||||
|
||||
private:
|
||||
QLineEdit * m_device;
|
||||
@@ -71,7 +70,7 @@ public:
|
||||
|
||||
protected:
|
||||
virtual void sendByte( const Uint8 _c );
|
||||
virtual void run( void );
|
||||
virtual void run();
|
||||
|
||||
|
||||
private:
|
||||
@@ -1,9 +1,9 @@
|
||||
/*
|
||||
* midi_port.h - abstraction of MIDI-ports which are part of LMMS's MIDI-
|
||||
* sequencing system
|
||||
* MidiPort.h - abstraction of MIDI ports which are part of LMMS's MIDI-
|
||||
* sequencing system
|
||||
*
|
||||
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -23,7 +23,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _MIDI_PORT_H
|
||||
#define _MIDI_PORT_H
|
||||
|
||||
@@ -35,14 +34,14 @@
|
||||
#include "automatable_model.h"
|
||||
|
||||
|
||||
class midiClient;
|
||||
class MidiClient;
|
||||
class MidiEventProcessor;
|
||||
class midiPortMenu;
|
||||
class MidiPortMenu;
|
||||
class midiTime;
|
||||
|
||||
|
||||
// class for abstraction of MIDI-port
|
||||
class midiPort : public model, public serializingObject
|
||||
class MidiPort : public model, public serializingObject
|
||||
{
|
||||
Q_OBJECT
|
||||
mapPropertyFromModel(int,inputChannel,setInputChannel,
|
||||
@@ -62,7 +61,7 @@ class midiPort : public model, public serializingObject
|
||||
mapPropertyFromModel(bool,isReadable,setReadable,m_readableModel);
|
||||
mapPropertyFromModel(bool,isWritable,setWritable,m_writableModel);
|
||||
public:
|
||||
typedef QMap<QString, bool> map;
|
||||
typedef QMap<QString, bool> Map;
|
||||
|
||||
enum Modes
|
||||
{
|
||||
@@ -72,12 +71,12 @@ public:
|
||||
Duplex // both directions
|
||||
} ;
|
||||
|
||||
midiPort( const QString & _name,
|
||||
midiClient * _mc,
|
||||
MidiPort( const QString & _name,
|
||||
MidiClient * _mc,
|
||||
MidiEventProcessor * _mep,
|
||||
model * _parent = NULL,
|
||||
Modes _mode = Disabled );
|
||||
virtual ~midiPort();
|
||||
virtual ~MidiPort();
|
||||
|
||||
void setName( const QString & _name );
|
||||
|
||||
@@ -120,18 +119,18 @@ public:
|
||||
void subscribeWritablePort( const QString & _port,
|
||||
bool _subscribe = TRUE );
|
||||
|
||||
const map & readablePorts() const
|
||||
const Map & readablePorts() const
|
||||
{
|
||||
return m_readablePorts;
|
||||
}
|
||||
|
||||
const map & writablePorts() const
|
||||
const Map & writablePorts() const
|
||||
{
|
||||
return m_writablePorts;
|
||||
}
|
||||
|
||||
midiPortMenu * m_readablePortsMenu;
|
||||
midiPortMenu * m_writablePortsMenu;
|
||||
MidiPortMenu * m_readablePortsMenu;
|
||||
MidiPortMenu * m_writablePortsMenu;
|
||||
|
||||
|
||||
public slots:
|
||||
@@ -145,7 +144,7 @@ private slots:
|
||||
|
||||
|
||||
private:
|
||||
midiClient * m_midiClient;
|
||||
MidiClient * m_midiClient;
|
||||
MidiEventProcessor * m_midiEventProcessor;
|
||||
|
||||
Modes m_mode;
|
||||
@@ -160,8 +159,8 @@ private:
|
||||
boolModel m_readableModel;
|
||||
boolModel m_writableModel;
|
||||
|
||||
map m_readablePorts;
|
||||
map m_writablePorts;
|
||||
Map m_readablePorts;
|
||||
Map m_writablePorts;
|
||||
|
||||
|
||||
friend class ControllerConnectionDialog;
|
||||
@@ -177,7 +176,7 @@ signals:
|
||||
} ;
|
||||
|
||||
|
||||
typedef QList<midiPort *> midiPortList;
|
||||
typedef QList<MidiPort *> MidiPortList;
|
||||
|
||||
|
||||
#endif
|
||||
@@ -1,9 +1,9 @@
|
||||
/*
|
||||
* midi_port_menu.h - a menu for subscribing a midiPort to several external
|
||||
* MIDI ports
|
||||
* MidiPortMenu.h - a menu for subscribing a MidiPort to several external
|
||||
* MIDI ports
|
||||
*
|
||||
* Copyright (c) 2008-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -23,36 +23,35 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _MIDI_PORT_MENU_H
|
||||
#define _MIDI_PORT_MENU_H
|
||||
|
||||
#include <QtGui/QMenu>
|
||||
|
||||
#include "mv_base.h"
|
||||
#include "midi_port.h"
|
||||
#include "MidiPort.h"
|
||||
|
||||
|
||||
class QAction;
|
||||
|
||||
|
||||
class midiPortMenu : public QMenu, public modelView
|
||||
class MidiPortMenu : public QMenu, public modelView
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
midiPortMenu( midiPort::Modes _mode );
|
||||
virtual ~midiPortMenu();
|
||||
MidiPortMenu( MidiPort::Modes _mode );
|
||||
virtual ~MidiPortMenu();
|
||||
|
||||
|
||||
protected slots:
|
||||
void activatedPort( QAction * _item );
|
||||
void updatePorts( void );
|
||||
void updatePorts();
|
||||
|
||||
|
||||
private:
|
||||
virtual void modelChanged( void );
|
||||
virtual void modelChanged();
|
||||
|
||||
midiPort::Modes m_mode;
|
||||
MidiPort::Modes m_mode;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* midi_winmm.h - WinMM MIDI client
|
||||
* MidiWinMM.h - WinMM MIDI client
|
||||
*
|
||||
* Copyright (c) 2008-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -22,7 +22,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _MIDI_WINMM_H
|
||||
#define _MIDI_WINMM_H
|
||||
|
||||
@@ -33,58 +32,58 @@
|
||||
#include <mmsystem.h>
|
||||
#endif
|
||||
|
||||
#include "midi_client.h"
|
||||
#include "midi_port.h"
|
||||
#include "MidiClient.h"
|
||||
#include "MidiPort.h"
|
||||
|
||||
|
||||
class QLineEdit;
|
||||
|
||||
|
||||
class midiWinMM : public QObject, public midiClient
|
||||
class MidiWinMM : public QObject, public MidiClient
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
midiWinMM( void );
|
||||
virtual ~midiWinMM();
|
||||
MidiWinMM();
|
||||
virtual ~MidiWinMM();
|
||||
|
||||
static QString probeDevice( void );
|
||||
static QString probeDevice();
|
||||
|
||||
|
||||
inline static QString name( void )
|
||||
inline static QString name()
|
||||
{
|
||||
return( QT_TRANSLATE_NOOP( "setupWidget", "WinMM MIDI" ) );
|
||||
return QT_TRANSLATE_NOOP( "setupWidget", "WinMM MIDI" );
|
||||
}
|
||||
|
||||
|
||||
|
||||
virtual void processOutEvent( const midiEvent & _me,
|
||||
const midiTime & _time,
|
||||
const midiPort * _port );
|
||||
const MidiPort * _port );
|
||||
|
||||
virtual void applyPortMode( midiPort * _port );
|
||||
virtual void removePort( midiPort * _port );
|
||||
virtual void applyPortMode( MidiPort * _port );
|
||||
virtual void removePort( MidiPort * _port );
|
||||
|
||||
|
||||
#ifdef LMMS_BUILD_WIN32
|
||||
// list devices as ports
|
||||
virtual QStringList readablePorts( void ) const
|
||||
virtual QStringList readablePorts() const
|
||||
{
|
||||
return( m_inputDevices.values() );
|
||||
return m_inputDevices.values();
|
||||
}
|
||||
|
||||
virtual QStringList writeblePorts( void ) const
|
||||
virtual QStringList writeblePorts() const
|
||||
{
|
||||
return( m_outputDevices.values() );
|
||||
return m_outputDevices.values();
|
||||
}
|
||||
#endif
|
||||
|
||||
// (un)subscribe given midiPort to/from destination-port
|
||||
virtual void subscribeReadablePort( midiPort * _port,
|
||||
// (un)subscribe given MidiPort to/from destination-port
|
||||
virtual void subscribeReadablePort( MidiPort * _port,
|
||||
const QString & _dest,
|
||||
bool _subscribe = TRUE );
|
||||
virtual void subscribeWritablePort( midiPort * _port,
|
||||
bool _subscribe = true );
|
||||
virtual void subscribeWritablePort( MidiPort * _port,
|
||||
const QString & _dest,
|
||||
bool _subscribe = TRUE );
|
||||
bool _subscribe = true );
|
||||
virtual void connectRPChanged( QObject * _receiver,
|
||||
const char * _member )
|
||||
{
|
||||
@@ -99,19 +98,19 @@ public:
|
||||
_receiver, _member );
|
||||
}
|
||||
|
||||
virtual bool isRaw( void ) const
|
||||
virtual bool isRaw() const
|
||||
{
|
||||
return( FALSE );
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
class setupWidget : public midiClient::setupWidget
|
||||
class setupWidget : public MidiClient::setupWidget
|
||||
{
|
||||
public:
|
||||
setupWidget( QWidget * _parent );
|
||||
virtual ~setupWidget();
|
||||
|
||||
virtual void saveSettings( void )
|
||||
virtual void saveSettings()
|
||||
{
|
||||
}
|
||||
|
||||
@@ -119,12 +118,12 @@ public:
|
||||
|
||||
|
||||
private:// slots:
|
||||
void updateDeviceList( void );
|
||||
void updateDeviceList();
|
||||
|
||||
|
||||
private:
|
||||
void openDevices( void );
|
||||
void closeDevices( void );
|
||||
void openDevices();
|
||||
void closeDevices();
|
||||
|
||||
#ifdef LMMS_BUILD_WIN32
|
||||
static void WINAPI CALLBACK inputCallback( HMIDIIN _hm, UINT _msg,
|
||||
@@ -138,14 +137,14 @@ private:
|
||||
#endif
|
||||
|
||||
// subscriptions
|
||||
typedef QMap<QString, midiPortList> subMap;
|
||||
subMap m_inputSubs;
|
||||
subMap m_outputSubs;
|
||||
typedef QMap<QString, MidiPortList> SubMap;
|
||||
SubMap m_inputSubs;
|
||||
SubMap m_outputSubs;
|
||||
|
||||
|
||||
signals:
|
||||
void readablePortsChanged( void );
|
||||
void writablePortsChanged( void );
|
||||
void readablePortsChanged();
|
||||
void writablePortsChanged();
|
||||
|
||||
} ;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* project_renderer.h - projectRenderer-class for easily rendering projects
|
||||
* ProjectRenderer.h - ProjectRenderer class for easily rendering projects
|
||||
*
|
||||
* Copyright (c) 2008-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -25,11 +25,11 @@
|
||||
#ifndef _PROJECT_RENDERER_H
|
||||
#define _PROJECT_RENDERER_H
|
||||
|
||||
#include "audio_file_device.h"
|
||||
#include "AudioFileDevice.h"
|
||||
#include "lmmsconfig.h"
|
||||
|
||||
|
||||
class projectRenderer : public QThread
|
||||
class ProjectRenderer : public QThread
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
@@ -47,14 +47,14 @@ public:
|
||||
NumDepths
|
||||
} ;
|
||||
|
||||
struct outputSettings
|
||||
struct OutputSettings
|
||||
{
|
||||
sample_rate_t samplerate;
|
||||
bool vbr;
|
||||
int bitrate;
|
||||
Depths depth;
|
||||
|
||||
outputSettings( sample_rate_t _sr, bool _vbr, int _bitrate,
|
||||
OutputSettings( sample_rate_t _sr, bool _vbr, int _bitrate,
|
||||
Depths _d ) :
|
||||
samplerate( _sr ),
|
||||
vbr( _vbr ),
|
||||
@@ -65,13 +65,13 @@ public:
|
||||
} ;
|
||||
|
||||
|
||||
projectRenderer( const mixer::qualitySettings & _qs,
|
||||
const outputSettings & _os,
|
||||
ProjectRenderer( const mixer::qualitySettings & _qs,
|
||||
const OutputSettings & _os,
|
||||
ExportFileFormats _file_format,
|
||||
const QString & _out_file );
|
||||
virtual ~projectRenderer();
|
||||
virtual ~ProjectRenderer();
|
||||
|
||||
bool isReady( void ) const
|
||||
bool isReady() const
|
||||
{
|
||||
return m_fileDev != NULL;
|
||||
}
|
||||
@@ -81,10 +81,10 @@ public:
|
||||
|
||||
|
||||
public slots:
|
||||
void startProcessing( void );
|
||||
void abortProcessing( void );
|
||||
void startProcessing();
|
||||
void abortProcessing();
|
||||
|
||||
void updateConsoleProgress( void );
|
||||
void updateConsoleProgress();
|
||||
|
||||
|
||||
signals:
|
||||
@@ -92,9 +92,9 @@ signals:
|
||||
|
||||
|
||||
private:
|
||||
virtual void run( void );
|
||||
virtual void run();
|
||||
|
||||
audioFileDevice * m_fileDev;
|
||||
AudioFileDevice * m_fileDev;
|
||||
mixer::qualitySettings m_qualitySettings;
|
||||
mixer::qualitySettings m_oldQualitySettings;
|
||||
|
||||
@@ -104,15 +104,15 @@ private:
|
||||
} ;
|
||||
|
||||
|
||||
struct fileEncodeDevice
|
||||
struct FileEncodeDevice
|
||||
{
|
||||
projectRenderer::ExportFileFormats m_fileFormat;
|
||||
ProjectRenderer::ExportFileFormats m_fileFormat;
|
||||
const char * m_description;
|
||||
const char * m_extension;
|
||||
audioFileDeviceInstantiaton m_getDevInst;
|
||||
AudioFileDeviceInstantiaton m_getDevInst;
|
||||
} ;
|
||||
|
||||
|
||||
extern fileEncodeDevice __fileEncodeDevices[];
|
||||
extern FileEncodeDevice __fileEncodeDevices[];
|
||||
|
||||
#endif
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
#include "ui_export_project.h"
|
||||
|
||||
class projectRenderer;
|
||||
class ProjectRenderer;
|
||||
|
||||
|
||||
class exportProjectDialog : public QDialog, public Ui::ExportProjectDialog
|
||||
@@ -54,7 +54,7 @@ private slots:
|
||||
|
||||
private:
|
||||
QString m_fileName;
|
||||
projectRenderer * m_renderer;
|
||||
ProjectRenderer * m_renderer;
|
||||
|
||||
} ;
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
* which holds an instrument-plugin
|
||||
*
|
||||
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -23,17 +23,16 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _INSTRUMENT_TRACK_H
|
||||
#define _INSTRUMENT_TRACK_H
|
||||
|
||||
#include <QtGui/QPushButton>
|
||||
|
||||
#include "audio_port.h"
|
||||
#include "AudioPort.h"
|
||||
#include "instrument_functions.h"
|
||||
#include "instrument_sound_shaping.h"
|
||||
#include "midi_event_processor.h"
|
||||
#include "midi_port.h"
|
||||
#include "MidiEventProcessor.h"
|
||||
#include "MidiPort.h"
|
||||
#include "note_play_handle.h"
|
||||
#include "piano.h"
|
||||
#include "track.h"
|
||||
@@ -86,13 +85,13 @@ public:
|
||||
// filter and so on
|
||||
void playNote( notePlayHandle * _n, sampleFrame * _working_buffer );
|
||||
|
||||
QString instrumentName( void ) const;
|
||||
inline const instrument * getInstrument( void ) const
|
||||
QString instrumentName() const;
|
||||
inline const instrument * getInstrument() const
|
||||
{
|
||||
return m_instrument;
|
||||
}
|
||||
|
||||
inline instrument * getInstrument( void )
|
||||
inline instrument * getInstrument()
|
||||
{
|
||||
return m_instrument;
|
||||
}
|
||||
@@ -107,7 +106,7 @@ public:
|
||||
int masterKey( int _midi_key ) const;
|
||||
|
||||
// translate pitch to midi-pitch [0,16383]
|
||||
inline int midiPitch( void ) const
|
||||
inline int midiPitch() const
|
||||
{
|
||||
return (int)( ( m_pitchModel.value()+100 ) * 16383 ) / 200;
|
||||
}
|
||||
@@ -134,27 +133,27 @@ public:
|
||||
// load instrument whose name matches given one
|
||||
instrument * loadInstrument( const QString & _instrument_name );
|
||||
|
||||
inline audioPort * getAudioPort( void )
|
||||
inline AudioPort * audioPort()
|
||||
{
|
||||
return &m_audioPort;
|
||||
}
|
||||
|
||||
inline midiPort * getMidiPort( void )
|
||||
inline MidiPort * midiPort()
|
||||
{
|
||||
return &m_midiPort;
|
||||
}
|
||||
|
||||
intModel * baseNoteModel( void )
|
||||
intModel * baseNoteModel()
|
||||
{
|
||||
return &m_baseNoteModel;
|
||||
}
|
||||
|
||||
piano * getPiano( void )
|
||||
piano * getPiano()
|
||||
{
|
||||
return &m_piano;
|
||||
}
|
||||
|
||||
bool arpeggiatorEnabled( void ) const
|
||||
bool arpeggiatorEnabled() const
|
||||
{
|
||||
return m_arpeggiator.m_arpEnabledModel.value();
|
||||
}
|
||||
@@ -162,50 +161,50 @@ public:
|
||||
// simple helper for removing midiport-XML-node when loading presets
|
||||
static void removeMidiPortNode( multimediaProject & _mmp );
|
||||
|
||||
floatModel * pitchModel( void )
|
||||
floatModel * pitchModel()
|
||||
{
|
||||
return &m_pitchModel;
|
||||
}
|
||||
|
||||
floatModel * volumeModel( void )
|
||||
floatModel * volumeModel()
|
||||
{
|
||||
return &m_volumeModel;
|
||||
}
|
||||
|
||||
floatModel * panningModel( void )
|
||||
floatModel * panningModel()
|
||||
{
|
||||
return &m_panningModel;
|
||||
}
|
||||
|
||||
intModel * effectChannelModel( void )
|
||||
intModel * effectChannelModel()
|
||||
{
|
||||
return &m_effectChannelModel;
|
||||
}
|
||||
|
||||
|
||||
signals:
|
||||
void instrumentChanged( void );
|
||||
void newNote( void );
|
||||
void instrumentChanged();
|
||||
void newNote();
|
||||
void noteOn( const note & _n );
|
||||
void noteOff( const note & _n );
|
||||
void nameChanged( void );
|
||||
void nameChanged();
|
||||
|
||||
|
||||
protected:
|
||||
virtual QString nodeName( void ) const
|
||||
virtual QString nodeName() const
|
||||
{
|
||||
return "instrumenttrack";
|
||||
}
|
||||
|
||||
|
||||
protected slots:
|
||||
void updateBaseNote( void );
|
||||
void updatePitch( void );
|
||||
void updateBaseNote();
|
||||
void updatePitch();
|
||||
|
||||
|
||||
private:
|
||||
audioPort m_audioPort;
|
||||
midiPort m_midiPort;
|
||||
AudioPort m_audioPort;
|
||||
MidiPort m_midiPort;
|
||||
|
||||
notePlayHandle * m_notes[NumKeys];
|
||||
int m_runningMidiNotes[NumKeys];
|
||||
@@ -245,27 +244,27 @@ public:
|
||||
instrumentTrackView( instrumentTrack * _it, trackContainerView * _tc );
|
||||
virtual ~instrumentTrackView();
|
||||
|
||||
instrumentTrackWindow * getInstrumentTrackWindow( void );
|
||||
instrumentTrackWindow * getInstrumentTrackWindow();
|
||||
|
||||
instrumentTrack * model( void )
|
||||
instrumentTrack * model()
|
||||
{
|
||||
return castModel<instrumentTrack>();
|
||||
}
|
||||
|
||||
const instrumentTrack * model( void ) const
|
||||
const instrumentTrack * model() const
|
||||
{
|
||||
return castModel<instrumentTrack>();
|
||||
}
|
||||
|
||||
|
||||
QMenu * midiMenu( void )
|
||||
QMenu * midiMenu()
|
||||
{
|
||||
return m_midiMenu;
|
||||
}
|
||||
|
||||
void freeInstrumentTrackWindow( void );
|
||||
void freeInstrumentTrackWindow();
|
||||
|
||||
static void cleanupWindowPool( void );
|
||||
static void cleanupWindowPool();
|
||||
|
||||
|
||||
protected:
|
||||
@@ -275,12 +274,12 @@ protected:
|
||||
|
||||
private slots:
|
||||
void toggleInstrumentWindow( bool _on );
|
||||
void activityIndicatorPressed( void );
|
||||
void activityIndicatorReleased( void );
|
||||
void activityIndicatorPressed();
|
||||
void activityIndicatorReleased();
|
||||
|
||||
void midiInSelected( void );
|
||||
void midiOutSelected( void );
|
||||
void midiConfigChanged( void );
|
||||
void midiInSelected();
|
||||
void midiOutSelected();
|
||||
void midiConfigChanged();
|
||||
|
||||
|
||||
private:
|
||||
@@ -318,17 +317,17 @@ public:
|
||||
virtual ~instrumentTrackWindow();
|
||||
|
||||
// parent for all internal tab-widgets
|
||||
tabWidget * tabWidgetParent( void )
|
||||
tabWidget * tabWidgetParent()
|
||||
{
|
||||
return m_tabWidget;
|
||||
}
|
||||
|
||||
instrumentTrack * model( void )
|
||||
instrumentTrack * model()
|
||||
{
|
||||
return castModel<instrumentTrack>();
|
||||
}
|
||||
|
||||
const instrumentTrack * model( void ) const
|
||||
const instrumentTrack * model() const
|
||||
{
|
||||
return castModel<instrumentTrack>();
|
||||
}
|
||||
@@ -347,8 +346,8 @@ public:
|
||||
public slots:
|
||||
void textChanged( const QString & _new_name );
|
||||
void toggleVisibility( bool _on );
|
||||
void updateName( void );
|
||||
void updateInstrumentView( void );
|
||||
void updateName();
|
||||
void updateInstrumentView();
|
||||
|
||||
|
||||
protected:
|
||||
@@ -361,11 +360,11 @@ protected:
|
||||
|
||||
|
||||
protected slots:
|
||||
void saveSettingsBtnClicked( void );
|
||||
void saveSettingsBtnClicked();
|
||||
|
||||
|
||||
private:
|
||||
virtual void modelChanged( void );
|
||||
virtual void modelChanged();
|
||||
|
||||
instrumentTrack * m_track;
|
||||
instrumentTrackView * m_itv;
|
||||
|
||||
105
include/mixer.h
105
include/mixer.h
@@ -2,7 +2,7 @@
|
||||
* mixer.h - audio-device-independent mixer for LMMS
|
||||
*
|
||||
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -22,7 +22,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _MIXER_H
|
||||
#define _MIXER_H
|
||||
|
||||
@@ -50,9 +49,9 @@
|
||||
#include "fifo_buffer.h"
|
||||
|
||||
|
||||
class audioDevice;
|
||||
class midiClient;
|
||||
class audioPort;
|
||||
class AudioDevice;
|
||||
class MidiClient;
|
||||
class AudioPort;
|
||||
|
||||
|
||||
const fpp_t DEFAULT_BUFFER_SIZE = 256;
|
||||
@@ -145,7 +144,7 @@ public:
|
||||
{
|
||||
}
|
||||
|
||||
int sampleRateMultiplier( void ) const
|
||||
int sampleRateMultiplier() const
|
||||
{
|
||||
switch( oversampling )
|
||||
{
|
||||
@@ -157,7 +156,7 @@ public:
|
||||
return 1;
|
||||
}
|
||||
|
||||
int libsrcInterpolation( void ) const
|
||||
int libsrcInterpolation() const
|
||||
{
|
||||
switch( interpolation )
|
||||
{
|
||||
@@ -174,45 +173,45 @@ public:
|
||||
}
|
||||
} ;
|
||||
|
||||
void initDevices( void );
|
||||
void clear( void );
|
||||
void initDevices();
|
||||
void clear();
|
||||
|
||||
|
||||
// audio-device-stuff
|
||||
inline const QString & audioDevName( void ) const
|
||||
inline const QString & audioDevName() const
|
||||
{
|
||||
return m_audioDevName;
|
||||
}
|
||||
|
||||
void setAudioDevice( audioDevice * _dev );
|
||||
void setAudioDevice( audioDevice * _dev,
|
||||
void setAudioDevice( AudioDevice * _dev );
|
||||
void setAudioDevice( AudioDevice * _dev,
|
||||
const struct qualitySettings & _qs,
|
||||
bool _needs_fifo );
|
||||
void restoreAudioDevice( void );
|
||||
inline audioDevice * audioDev( void )
|
||||
void restoreAudioDevice();
|
||||
inline AudioDevice * audioDev()
|
||||
{
|
||||
return m_audioDev;
|
||||
}
|
||||
|
||||
|
||||
// audio-port-stuff
|
||||
inline void addAudioPort( audioPort * _port )
|
||||
inline void addAudioPort( AudioPort * _port )
|
||||
{
|
||||
lock();
|
||||
m_audioPorts.push_back( _port );
|
||||
unlock();
|
||||
}
|
||||
|
||||
void removeAudioPort( audioPort * _port );
|
||||
void removeAudioPort( AudioPort * _port );
|
||||
|
||||
|
||||
// MIDI-client-stuff
|
||||
inline const QString & midiClientName( void ) const
|
||||
inline const QString & midiClientName() const
|
||||
{
|
||||
return m_midiClientName;
|
||||
}
|
||||
|
||||
inline midiClient * getMidiClient( void )
|
||||
inline MidiClient * midiClient()
|
||||
{
|
||||
return m_midiClient;
|
||||
}
|
||||
@@ -234,49 +233,49 @@ public:
|
||||
|
||||
void removePlayHandle( playHandle * _ph );
|
||||
|
||||
inline PlayHandleList & playHandles( void )
|
||||
inline PlayHandleList & playHandles()
|
||||
{
|
||||
return m_playHandles;
|
||||
}
|
||||
|
||||
void removePlayHandles( track * _track );
|
||||
|
||||
inline bool hasPlayHandles( void ) const
|
||||
inline bool hasPlayHandles() const
|
||||
{
|
||||
return !m_playHandles.empty();
|
||||
}
|
||||
|
||||
|
||||
// methods providing information for other classes
|
||||
inline fpp_t framesPerPeriod( void ) const
|
||||
inline fpp_t framesPerPeriod() const
|
||||
{
|
||||
return m_framesPerPeriod;
|
||||
}
|
||||
|
||||
inline const surroundSampleFrame * currentReadBuffer( void ) const
|
||||
inline const surroundSampleFrame * currentReadBuffer() const
|
||||
{
|
||||
return m_readBuf;
|
||||
}
|
||||
|
||||
|
||||
inline int cpuLoad( void ) const
|
||||
inline int cpuLoad() const
|
||||
{
|
||||
return m_cpuLoad;
|
||||
}
|
||||
|
||||
const qualitySettings & currentQualitySettings( void ) const
|
||||
const qualitySettings & currentQualitySettings() const
|
||||
{
|
||||
return m_qualitySettings;
|
||||
}
|
||||
|
||||
|
||||
sample_rate_t baseSampleRate( void ) const;
|
||||
sample_rate_t outputSampleRate( void ) const;
|
||||
sample_rate_t inputSampleRate( void ) const;
|
||||
sample_rate_t processingSampleRate( void ) const;
|
||||
sample_rate_t baseSampleRate() const;
|
||||
sample_rate_t outputSampleRate() const;
|
||||
sample_rate_t inputSampleRate() const;
|
||||
sample_rate_t processingSampleRate() const;
|
||||
|
||||
|
||||
inline float masterGain( void ) const
|
||||
inline float masterGain() const
|
||||
{
|
||||
return m_masterGain;
|
||||
}
|
||||
@@ -302,22 +301,22 @@ public:
|
||||
|
||||
|
||||
// methods needed by other threads to alter knob values, waveforms, etc
|
||||
void lock( void )
|
||||
void lock()
|
||||
{
|
||||
m_globalMutex.lock();
|
||||
}
|
||||
|
||||
void unlock( void )
|
||||
void unlock()
|
||||
{
|
||||
m_globalMutex.unlock();
|
||||
}
|
||||
|
||||
void lockInputFrames( void )
|
||||
void lockInputFrames()
|
||||
{
|
||||
m_inputFramesMutex.lock();
|
||||
}
|
||||
|
||||
void unlockInputFrames( void )
|
||||
void unlockInputFrames()
|
||||
{
|
||||
m_inputFramesMutex.unlock();
|
||||
}
|
||||
@@ -327,7 +326,7 @@ public:
|
||||
const fpp_t _frames,
|
||||
const f_cnt_t _offset,
|
||||
stereoVolumeVector _volume_vector,
|
||||
audioPort * _port );
|
||||
AudioPort * _port );
|
||||
|
||||
static void clearAudioBuffer( sampleFrame * _ab,
|
||||
const f_cnt_t _frames,
|
||||
@@ -342,26 +341,26 @@ public:
|
||||
static float peakValueRight( sampleFrame * _ab, const f_cnt_t _frames );
|
||||
|
||||
|
||||
bool criticalXRuns( void ) const;
|
||||
bool criticalXRuns() const;
|
||||
|
||||
inline bool hasFifoWriter( void ) const
|
||||
inline bool hasFifoWriter() const
|
||||
{
|
||||
return m_fifoWriter != NULL;
|
||||
}
|
||||
|
||||
void pushInputFrames( sampleFrame * _ab, const f_cnt_t _frames );
|
||||
|
||||
inline const sampleFrame * inputBuffer( void )
|
||||
inline const sampleFrame * inputBuffer()
|
||||
{
|
||||
return m_inputBuffer[ m_inputBufferRead ];
|
||||
}
|
||||
|
||||
inline f_cnt_t inputBufferFrames( void ) const
|
||||
inline f_cnt_t inputBufferFrames() const
|
||||
{
|
||||
return m_inputBufferFrames[ m_inputBufferRead ];
|
||||
}
|
||||
|
||||
inline const surroundSampleFrame * nextBuffer( void )
|
||||
inline const surroundSampleFrame * nextBuffer()
|
||||
{
|
||||
return hasFifoWriter() ? m_fifo->read() : renderNextBuffer();
|
||||
}
|
||||
@@ -370,9 +369,9 @@ public:
|
||||
|
||||
|
||||
signals:
|
||||
void qualitySettingsChanged( void );
|
||||
void sampleRateChanged( void );
|
||||
void nextAudioBuffer( void );
|
||||
void qualitySettingsChanged();
|
||||
void sampleRateChanged();
|
||||
void nextAudioBuffer();
|
||||
|
||||
|
||||
private:
|
||||
@@ -383,7 +382,7 @@ private:
|
||||
public:
|
||||
fifoWriter( mixer * _mixer, fifo * _fifo );
|
||||
|
||||
void finish( void );
|
||||
void finish();
|
||||
|
||||
|
||||
private:
|
||||
@@ -391,27 +390,27 @@ private:
|
||||
fifo * m_fifo;
|
||||
volatile bool m_writing;
|
||||
|
||||
virtual void run( void );
|
||||
virtual void run();
|
||||
|
||||
} ;
|
||||
|
||||
|
||||
mixer( void );
|
||||
mixer();
|
||||
virtual ~mixer();
|
||||
|
||||
void startProcessing( bool _needs_fifo = true );
|
||||
void stopProcessing( void );
|
||||
void stopProcessing();
|
||||
|
||||
|
||||
audioDevice * tryAudioDevices( void );
|
||||
midiClient * tryMidiClients( void );
|
||||
AudioDevice * tryAudioDevices();
|
||||
MidiClient * tryMidiClients();
|
||||
|
||||
|
||||
const surroundSampleFrame * renderNextBuffer( void );
|
||||
const surroundSampleFrame * renderNextBuffer();
|
||||
|
||||
|
||||
|
||||
QVector<audioPort *> m_audioPorts;
|
||||
QVector<AudioPort *> m_audioPorts;
|
||||
|
||||
fpp_t m_framesPerPeriod;
|
||||
|
||||
@@ -450,12 +449,12 @@ private:
|
||||
float m_masterGain;
|
||||
|
||||
|
||||
audioDevice * m_audioDev;
|
||||
audioDevice * m_oldAudioDev;
|
||||
AudioDevice * m_audioDev;
|
||||
AudioDevice * m_oldAudioDev;
|
||||
QString m_audioDevName;
|
||||
|
||||
|
||||
midiClient * m_midiClient;
|
||||
MidiClient * m_midiClient;
|
||||
QString m_midiClientName;
|
||||
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ class bbTrack;
|
||||
class pattern;
|
||||
class sampleTCO;
|
||||
class track;
|
||||
class audioPort;
|
||||
class AudioPort;
|
||||
|
||||
|
||||
class samplePlayHandle : public playHandle
|
||||
@@ -85,7 +85,7 @@ private:
|
||||
f_cnt_t m_frame;
|
||||
sampleBuffer::handleState m_state;
|
||||
|
||||
audioPort * m_audioPort;
|
||||
AudioPort * m_audioPort;
|
||||
const bool m_ownAudioPort;
|
||||
|
||||
floatModel m_defaultVolumeModel;
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
* sample_track.h - class sampleTrack, a track which provides arrangement of
|
||||
* samples
|
||||
*
|
||||
* Copyright (c) 2005-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -23,13 +23,12 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _SAMPLE_TRACK_H
|
||||
#define _SAMPLE_TRACK_H
|
||||
|
||||
#include <QtGui/QDialog>
|
||||
|
||||
#include "audio_port.h"
|
||||
#include "AudioPort.h"
|
||||
#include "track.h"
|
||||
|
||||
class effectRackView;
|
||||
@@ -46,21 +45,21 @@ public:
|
||||
virtual ~sampleTCO();
|
||||
|
||||
virtual void changeLength( const midiTime & _length );
|
||||
const QString & sampleFile( void ) const;
|
||||
const QString & sampleFile() const;
|
||||
|
||||
virtual void saveSettings( QDomDocument & _doc, QDomElement & _parent );
|
||||
virtual void loadSettings( const QDomElement & _this );
|
||||
inline virtual QString nodeName( void ) const
|
||||
inline virtual QString nodeName() const
|
||||
{
|
||||
return( "sampletco" );
|
||||
return "sampletco";
|
||||
}
|
||||
|
||||
sampleBuffer * getSampleBuffer( void )
|
||||
sampleBuffer * getSampleBuffer()
|
||||
{
|
||||
return( m_sampleBuffer );
|
||||
return m_sampleBuffer;
|
||||
}
|
||||
|
||||
midiTime sampleLength( void ) const;
|
||||
midiTime sampleLength() const;
|
||||
|
||||
virtual trackContentObjectView * createView( trackView * _tv );
|
||||
|
||||
@@ -69,7 +68,7 @@ public slots:
|
||||
void setSampleBuffer( sampleBuffer * _sb );
|
||||
void setSampleFile( const QString & _sf );
|
||||
void updateLength( bpm_t = 0 );
|
||||
void toggleRecord( void );
|
||||
void toggleRecord();
|
||||
|
||||
|
||||
private:
|
||||
@@ -81,7 +80,7 @@ private:
|
||||
|
||||
|
||||
signals:
|
||||
void sampleChanged( void );
|
||||
void sampleChanged();
|
||||
|
||||
} ;
|
||||
|
||||
@@ -96,7 +95,7 @@ public:
|
||||
|
||||
|
||||
public slots:
|
||||
void updateSample( void );
|
||||
void updateSample();
|
||||
|
||||
|
||||
protected:
|
||||
@@ -134,19 +133,19 @@ public:
|
||||
QDomElement & _parent );
|
||||
virtual void loadTrackSpecificSettings( const QDomElement & _this );
|
||||
|
||||
inline audioPort * getAudioPort( void )
|
||||
inline AudioPort * audioPort()
|
||||
{
|
||||
return( &m_audioPort );
|
||||
return &m_audioPort;
|
||||
}
|
||||
|
||||
virtual QString nodeName( void ) const
|
||||
virtual QString nodeName() const
|
||||
{
|
||||
return( "sampletrack" );
|
||||
return "sampletrack";
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
audioPort m_audioPort;
|
||||
AudioPort m_audioPort;
|
||||
floatModel m_volumeModel;
|
||||
|
||||
|
||||
@@ -165,7 +164,7 @@ public:
|
||||
|
||||
|
||||
public slots:
|
||||
void showEffects( void );
|
||||
void showEffects();
|
||||
|
||||
|
||||
private:
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* setup_dialog.h - dialog for setting up LMMS
|
||||
*
|
||||
* Copyright (c) 2005-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -22,7 +22,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _SETUP_DIALOG_H
|
||||
#define _SETUP_DIALOG_H
|
||||
|
||||
@@ -30,8 +29,8 @@
|
||||
#include <QtCore/QMap>
|
||||
|
||||
#include "lmmsconfig.h"
|
||||
#include "audio_device.h"
|
||||
#include "midi_client.h"
|
||||
#include "AudioDevice.h"
|
||||
#include "MidiClient.h"
|
||||
|
||||
|
||||
class QComboBox;
|
||||
@@ -150,16 +149,16 @@ private:
|
||||
bool m_disableChActInd;
|
||||
bool m_manualChPiano;
|
||||
|
||||
typedef QMap<QString, audioDevice::setupWidget *> aswMap;
|
||||
typedef QMap<QString, midiClient::setupWidget *> mswMap;
|
||||
typedef QMap<QString, AudioDevice::setupWidget *> AswMap;
|
||||
typedef QMap<QString, MidiClient::setupWidget *> MswMap;
|
||||
typedef QMap<QString, QString> trMap;
|
||||
|
||||
QComboBox * m_audioInterfaces;
|
||||
aswMap m_audioIfaceSetupWidgets;
|
||||
AswMap m_audioIfaceSetupWidgets;
|
||||
trMap m_audioIfaceNames;
|
||||
|
||||
QComboBox * m_midiInterfaces;
|
||||
mswMap m_midiIfaceSetupWidgets;
|
||||
MswMap m_midiIfaceSetupWidgets;
|
||||
trMap m_midiIfaceNames;
|
||||
|
||||
|
||||
|
||||
@@ -22,25 +22,21 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include "ladspa_description.h"
|
||||
|
||||
|
||||
#include <QtGui/QGroupBox>
|
||||
#include <QtGui/QLabel>
|
||||
#include <QtGui/QListWidget>
|
||||
#include <QtGui/QScrollArea>
|
||||
#include <QtGui/QVBoxLayout>
|
||||
|
||||
|
||||
#include "audio_device.h"
|
||||
#include "AudioDevice.h"
|
||||
#include "engine.h"
|
||||
#include "ladspa_2_lmms.h"
|
||||
#include "mixer.h"
|
||||
|
||||
|
||||
|
||||
|
||||
ladspaDescription::ladspaDescription( QWidget * _parent,
|
||||
ladspaPluginType _type ) :
|
||||
QWidget( _parent )
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Copyright (c) 2006-2008 Danny McRae <khjklujn/at/users.sourceforge.net>
|
||||
* Copyright (c) 2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
#include "ladspa_effect.h"
|
||||
#include "mmp.h"
|
||||
#include "audio_device.h"
|
||||
#include "AudioDevice.h"
|
||||
#include "config_mgr.h"
|
||||
#include "ladspa_2_lmms.h"
|
||||
#include "ladspa_control.h"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
* hosting LADSPA-plugins
|
||||
*
|
||||
* Copyright (c) 2006-2007 Danny McRae <khjklujn/at/users.sourceforge.net>
|
||||
* Copyright (c) 2006-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
* Copyright (c) 2006-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
@@ -25,15 +25,12 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include "ladspa_subplugin_features.h"
|
||||
|
||||
|
||||
#include <QtGui/QHBoxLayout>
|
||||
#include <QtGui/QLabel>
|
||||
|
||||
|
||||
#include "audio_device.h"
|
||||
#include "AudioDevice.h"
|
||||
#include "engine.h"
|
||||
#include "ladspa_2_lmms.h"
|
||||
#include "ladspa_base.h"
|
||||
|
||||
@@ -28,11 +28,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include <QtXml/QDomDocument>
|
||||
|
||||
#include "lb302.h"
|
||||
#include "audio_port.h"
|
||||
#include "automatable_button.h"
|
||||
#include "engine.h"
|
||||
#include "instrument_play_handle.h"
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* project_renderer.cpp - projectRenderer-class for easily rendering projects
|
||||
* ProjectRenderer.cpp - ProjectRenderer-class for easily rendering projects
|
||||
*
|
||||
* Copyright (c) 2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -25,29 +25,29 @@
|
||||
|
||||
#include <QtCore/QFile>
|
||||
|
||||
#include "project_renderer.h"
|
||||
#include "ProjectRenderer.h"
|
||||
#include "song.h"
|
||||
#include "engine.h"
|
||||
|
||||
#include "audio_file_wave.h"
|
||||
#include "audio_file_ogg.h"
|
||||
#include "AudioFileWave.h"
|
||||
#include "AudioFileOgg.h"
|
||||
|
||||
#ifdef LMMS_HAVE_SCHED_H
|
||||
#include <sched.h>
|
||||
#endif
|
||||
|
||||
|
||||
fileEncodeDevice __fileEncodeDevices[] =
|
||||
FileEncodeDevice __fileEncodeDevices[] =
|
||||
{
|
||||
|
||||
{ projectRenderer::WaveFile,
|
||||
QT_TRANSLATE_NOOP( "projectRenderer", "WAV-File (*.wav)" ),
|
||||
".wav", &audioFileWave::getInst },
|
||||
{ projectRenderer::OggFile,
|
||||
QT_TRANSLATE_NOOP( "projectRenderer", "Compressed OGG-File (*.ogg)" ),
|
||||
{ ProjectRenderer::WaveFile,
|
||||
QT_TRANSLATE_NOOP( "ProjectRenderer", "WAV-File (*.wav)" ),
|
||||
".wav", &AudioFileWave::getInst },
|
||||
{ ProjectRenderer::OggFile,
|
||||
QT_TRANSLATE_NOOP( "ProjectRenderer", "Compressed OGG-File (*.ogg)" ),
|
||||
".ogg",
|
||||
#ifdef LMMS_HAVE_OGGVORBIS
|
||||
&audioFileOgg::getInst
|
||||
&AudioFileOgg::getInst
|
||||
#else
|
||||
NULL
|
||||
#endif
|
||||
@@ -55,15 +55,15 @@ fileEncodeDevice __fileEncodeDevices[] =
|
||||
// ... insert your own file-encoder-infos here... may be one day the
|
||||
// user can add own encoders inside the program...
|
||||
|
||||
{ projectRenderer::NumFileFormats, NULL, NULL, NULL }
|
||||
{ ProjectRenderer::NumFileFormats, NULL, NULL, NULL }
|
||||
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
|
||||
projectRenderer::projectRenderer( const mixer::qualitySettings & _qs,
|
||||
const outputSettings & _os,
|
||||
ProjectRenderer::ProjectRenderer( const mixer::qualitySettings & _qs,
|
||||
const OutputSettings & _os,
|
||||
ExportFileFormats _file_format,
|
||||
const QString & _out_file ) :
|
||||
QThread( engine::getMixer() ),
|
||||
@@ -71,21 +71,21 @@ projectRenderer::projectRenderer( const mixer::qualitySettings & _qs,
|
||||
m_qualitySettings( _qs ),
|
||||
m_oldQualitySettings( engine::getMixer()->currentQualitySettings() ),
|
||||
m_progress( 0 ),
|
||||
m_abort( FALSE )
|
||||
m_abort( false )
|
||||
{
|
||||
if( __fileEncodeDevices[_file_format].m_getDevInst == NULL )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
bool success_ful = FALSE;
|
||||
bool success_ful = false;
|
||||
m_fileDev = __fileEncodeDevices[_file_format].m_getDevInst(
|
||||
_os.samplerate, DEFAULT_CHANNELS, success_ful,
|
||||
_out_file, _os.vbr,
|
||||
_os.bitrate, _os.bitrate - 64, _os.bitrate + 64,
|
||||
_os.depth == Depth_32Bit ? 32 : 16,
|
||||
engine::getMixer() );
|
||||
if( success_ful == FALSE )
|
||||
if( success_ful == false )
|
||||
{
|
||||
delete m_fileDev;
|
||||
m_fileDev = NULL;
|
||||
@@ -96,7 +96,7 @@ projectRenderer::projectRenderer( const mixer::qualitySettings & _qs,
|
||||
|
||||
|
||||
|
||||
projectRenderer::~projectRenderer()
|
||||
ProjectRenderer::~ProjectRenderer()
|
||||
{
|
||||
}
|
||||
|
||||
@@ -105,7 +105,7 @@ projectRenderer::~projectRenderer()
|
||||
|
||||
// little help-function for getting file-format from a file-extension (only for
|
||||
// registered file-encoders)
|
||||
projectRenderer::ExportFileFormats projectRenderer::getFileFormatFromExtension(
|
||||
ProjectRenderer::ExportFileFormats ProjectRenderer::getFileFormatFromExtension(
|
||||
const QString & _ext )
|
||||
{
|
||||
int idx = 0;
|
||||
@@ -124,7 +124,7 @@ projectRenderer::ExportFileFormats projectRenderer::getFileFormatFromExtension(
|
||||
|
||||
|
||||
|
||||
void projectRenderer::startProcessing( void )
|
||||
void ProjectRenderer::startProcessing()
|
||||
{
|
||||
if( isReady() )
|
||||
{
|
||||
@@ -132,7 +132,7 @@ void projectRenderer::startProcessing( void )
|
||||
// make slots connected to sampleRateChanged()-signals being
|
||||
// called immediately
|
||||
engine::getMixer()->setAudioDevice( m_fileDev,
|
||||
m_qualitySettings, FALSE );
|
||||
m_qualitySettings, false );
|
||||
|
||||
start(
|
||||
#ifndef LMMS_BUILD_WIN32
|
||||
@@ -144,7 +144,7 @@ void projectRenderer::startProcessing( void )
|
||||
|
||||
|
||||
|
||||
void projectRenderer::run( void )
|
||||
void ProjectRenderer::run()
|
||||
{
|
||||
#if 0
|
||||
#ifdef LMMS_BUILD_LINUX
|
||||
@@ -164,8 +164,8 @@ void projectRenderer::run( void )
|
||||
m_progress = 0;
|
||||
const int sl = ( engine::getSong()->length() + 1 ) * 192;
|
||||
|
||||
while( engine::getSong()->isExportDone() == FALSE &&
|
||||
engine::getSong()->isExporting() == TRUE
|
||||
while( engine::getSong()->isExportDone() == false &&
|
||||
engine::getSong()->isExporting() == true
|
||||
&& !m_abort )
|
||||
{
|
||||
m_fileDev->processNextBuffer();
|
||||
@@ -194,14 +194,14 @@ void projectRenderer::run( void )
|
||||
|
||||
|
||||
|
||||
void projectRenderer::abortProcessing( void )
|
||||
void ProjectRenderer::abortProcessing()
|
||||
{
|
||||
m_abort = TRUE;
|
||||
m_abort = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void projectRenderer::updateConsoleProgress( void )
|
||||
void ProjectRenderer::updateConsoleProgress()
|
||||
{
|
||||
const int cols = 50;
|
||||
static int rot = 0;
|
||||
@@ -226,5 +226,5 @@ void projectRenderer::updateConsoleProgress( void )
|
||||
|
||||
|
||||
|
||||
#include "moc_project_renderer.cxx"
|
||||
#include "moc_ProjectRenderer.cxx"
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
#ifndef SINGLE_SOURCE_COMPILE
|
||||
|
||||
/*
|
||||
* audio_alsa.cpp - device-class which implements ALSA-PCM-output
|
||||
*
|
||||
* Copyright (c) 2004-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -24,12 +22,10 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <QtGui/QLineEdit>
|
||||
#include <QtGui/QLabel>
|
||||
|
||||
#include "audio_alsa.h"
|
||||
#include "AudioAlsa.h"
|
||||
|
||||
#ifdef LMMS_HAVE_ALSA
|
||||
|
||||
@@ -42,8 +38,8 @@
|
||||
|
||||
|
||||
|
||||
audioALSA::audioALSA( bool & _success_ful, mixer * _mixer ) :
|
||||
audioDevice( tLimit<ch_cnt_t>(
|
||||
AudioAlsa::AudioAlsa( bool & _success_ful, mixer * _mixer ) :
|
||||
AudioDevice( tLimit<ch_cnt_t>(
|
||||
configManager::inst()->value( "audioalsa", "channels" ).toInt(),
|
||||
DEFAULT_CHANNELS, SURROUND_CHANNELS ),
|
||||
_mixer ),
|
||||
@@ -88,7 +84,7 @@ audioALSA::audioALSA( bool & _success_ful, mixer * _mixer ) :
|
||||
|
||||
|
||||
|
||||
audioALSA::~audioALSA()
|
||||
AudioAlsa::~AudioAlsa()
|
||||
{
|
||||
stopProcessing();
|
||||
if( m_handle != NULL )
|
||||
@@ -110,24 +106,24 @@ audioALSA::~audioALSA()
|
||||
|
||||
|
||||
|
||||
QString audioALSA::probeDevice( void )
|
||||
QString AudioAlsa::probeDevice()
|
||||
{
|
||||
QString dev = configManager::inst()->value( "audioalsa", "device" );
|
||||
if( dev == "" )
|
||||
{
|
||||
if( getenv( "AUDIODEV" ) != NULL )
|
||||
{
|
||||
return( getenv( "AUDIODEV" ) );
|
||||
return getenv( "AUDIODEV" );
|
||||
}
|
||||
return( "default" );
|
||||
return "default";
|
||||
}
|
||||
return( dev );
|
||||
return dev;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int audioALSA::handleError( int _err )
|
||||
int AudioAlsa::handleError( int _err )
|
||||
{
|
||||
if( _err == -EPIPE )
|
||||
{
|
||||
@@ -155,13 +151,13 @@ int audioALSA::handleError( int _err )
|
||||
}
|
||||
return ( 0 );
|
||||
}
|
||||
return( _err );
|
||||
return _err;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void audioALSA::startProcessing( void )
|
||||
void AudioAlsa::startProcessing()
|
||||
{
|
||||
if( !isRunning() )
|
||||
{
|
||||
@@ -172,7 +168,7 @@ void audioALSA::startProcessing( void )
|
||||
|
||||
|
||||
|
||||
void audioALSA::stopProcessing( void )
|
||||
void AudioAlsa::stopProcessing()
|
||||
{
|
||||
if( isRunning() )
|
||||
{
|
||||
@@ -184,7 +180,7 @@ void audioALSA::stopProcessing( void )
|
||||
|
||||
|
||||
|
||||
void audioALSA::applyQualitySettings( void )
|
||||
void AudioAlsa::applyQualitySettings()
|
||||
{
|
||||
if( hqAudio() )
|
||||
{
|
||||
@@ -221,13 +217,13 @@ void audioALSA::applyQualitySettings( void )
|
||||
}
|
||||
}
|
||||
|
||||
audioDevice::applyQualitySettings();
|
||||
AudioDevice::applyQualitySettings();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void audioALSA::run( void )
|
||||
void AudioAlsa::run()
|
||||
{
|
||||
surroundSampleFrame * temp =
|
||||
new surroundSampleFrame[getMixer()->framesPerPeriod()];
|
||||
@@ -308,7 +304,7 @@ void audioALSA::run( void )
|
||||
|
||||
|
||||
|
||||
int audioALSA::setHWParams( const ch_cnt_t _channels, snd_pcm_access_t _access )
|
||||
int AudioAlsa::setHWParams( const ch_cnt_t _channels, snd_pcm_access_t _access )
|
||||
{
|
||||
int err, dir;
|
||||
|
||||
@@ -317,7 +313,7 @@ int audioALSA::setHWParams( const ch_cnt_t _channels, snd_pcm_access_t _access )
|
||||
{
|
||||
printf( "Broken configuration for playback: no configurations "
|
||||
"available: %s\n", snd_strerror( err ) );
|
||||
return( err );
|
||||
return err;
|
||||
}
|
||||
|
||||
// set the interleaved read/write format
|
||||
@@ -326,7 +322,7 @@ int audioALSA::setHWParams( const ch_cnt_t _channels, snd_pcm_access_t _access )
|
||||
{
|
||||
printf( "Access type not available for playback: %s\n",
|
||||
snd_strerror( err ) );
|
||||
return( err );
|
||||
return err;
|
||||
}
|
||||
|
||||
// set the sample format
|
||||
@@ -338,7 +334,7 @@ int audioALSA::setHWParams( const ch_cnt_t _channels, snd_pcm_access_t _access )
|
||||
{
|
||||
printf( "Neither little- nor big-endian available for "
|
||||
"playback: %s\n", snd_strerror( err ) );
|
||||
return( err );
|
||||
return err;
|
||||
}
|
||||
m_convertEndian = isLittleEndian();
|
||||
}
|
||||
@@ -354,7 +350,7 @@ int audioALSA::setHWParams( const ch_cnt_t _channels, snd_pcm_access_t _access )
|
||||
printf( "Channel count (%i) not available for playbacks: %s\n"
|
||||
"(Does your soundcard not support surround?)\n",
|
||||
_channels, snd_strerror( err ) );
|
||||
return( err );
|
||||
return err;
|
||||
}
|
||||
|
||||
// set the sample rate
|
||||
@@ -366,7 +362,7 @@ int audioALSA::setHWParams( const ch_cnt_t _channels, snd_pcm_access_t _access )
|
||||
{
|
||||
printf( "Could not set sample rate: %s\n",
|
||||
snd_strerror( err ) );
|
||||
return( err );
|
||||
return err;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -379,7 +375,7 @@ int audioALSA::setHWParams( const ch_cnt_t _channels, snd_pcm_access_t _access )
|
||||
{
|
||||
printf( "Unable to set period size %lu for playback: %s\n",
|
||||
m_periodSize, snd_strerror( err ) );
|
||||
return( err );
|
||||
return err;
|
||||
}
|
||||
dir = 0;
|
||||
err = snd_pcm_hw_params_get_period_size( m_hwParams, &m_periodSize,
|
||||
@@ -423,7 +419,7 @@ int audioALSA::setHWParams( const ch_cnt_t _channels, snd_pcm_access_t _access )
|
||||
|
||||
|
||||
|
||||
int audioALSA::setSWParams( void )
|
||||
int AudioAlsa::setSWParams()
|
||||
{
|
||||
int err;
|
||||
|
||||
@@ -432,7 +428,7 @@ int audioALSA::setSWParams( void )
|
||||
{
|
||||
printf( "Unable to determine current swparams for playback: %s"
|
||||
"\n", snd_strerror( err ) );
|
||||
return( err );
|
||||
return err;
|
||||
}
|
||||
|
||||
// start the transfer when a period is full
|
||||
@@ -441,7 +437,7 @@ int audioALSA::setSWParams( void )
|
||||
{
|
||||
printf( "Unable to set start threshold mode for playback: %s\n",
|
||||
snd_strerror( err ) );
|
||||
return( err );
|
||||
return err;
|
||||
}
|
||||
|
||||
// allow the transfer when at least m_periodSize samples can be
|
||||
@@ -451,7 +447,7 @@ int audioALSA::setSWParams( void )
|
||||
{
|
||||
printf( "Unable to set avail min for playback: %s\n",
|
||||
snd_strerror( err ) );
|
||||
return( err );
|
||||
return err;
|
||||
}
|
||||
|
||||
// align all transfers to 1 sample
|
||||
@@ -462,7 +458,7 @@ int audioALSA::setSWParams( void )
|
||||
{
|
||||
printf( "Unable to set transfer align for playback: %s\n",
|
||||
snd_strerror( err ) );
|
||||
return( err );
|
||||
return err;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -471,20 +467,20 @@ int audioALSA::setSWParams( void )
|
||||
{
|
||||
printf( "Unable to set sw params for playback: %s\n",
|
||||
snd_strerror( err ) );
|
||||
return( err );
|
||||
return err;
|
||||
}
|
||||
|
||||
return( 0 ); // all ok
|
||||
return 0; // all ok
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
audioALSA::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
audioDevice::setupWidget( audioALSA::name(), _parent )
|
||||
AudioAlsa::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
AudioDevice::setupWidget( AudioAlsa::name(), _parent )
|
||||
{
|
||||
m_device = new QLineEdit( audioALSA::probeDevice(), this );
|
||||
m_device = new QLineEdit( AudioAlsa::probeDevice(), this );
|
||||
m_device->setGeometry( 10, 20, 160, 20 );
|
||||
|
||||
QLabel * dev_lbl = new QLabel( tr( "DEVICE" ), this );
|
||||
@@ -507,7 +503,7 @@ audioALSA::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
|
||||
|
||||
|
||||
audioALSA::setupWidget::~setupWidget()
|
||||
AudioAlsa::setupWidget::~setupWidget()
|
||||
{
|
||||
|
||||
}
|
||||
@@ -515,7 +511,7 @@ audioALSA::setupWidget::~setupWidget()
|
||||
|
||||
|
||||
|
||||
void audioALSA::setupWidget::saveSettings( void )
|
||||
void AudioAlsa::setupWidget::saveSettings()
|
||||
{
|
||||
configManager::inst()->setValue( "audioalsa", "device",
|
||||
m_device->text() );
|
||||
@@ -526,5 +522,3 @@ void audioALSA::setupWidget::saveSettings( void )
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
||||
@@ -1,10 +1,8 @@
|
||||
#ifndef SINGLE_SOURCE_COMPILE
|
||||
|
||||
/*
|
||||
* audio_device.cpp - base-class for audio-devices used by LMMS-mixer
|
||||
* AudioDevice.cpp - base-class for audio-devices used by LMMS-mixer
|
||||
*
|
||||
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2004-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -24,17 +22,15 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include <cstring>
|
||||
|
||||
|
||||
#include "audio_device.h"
|
||||
#include "AudioDevice.h"
|
||||
#include "config_mgr.h"
|
||||
#include "debug.h"
|
||||
|
||||
|
||||
|
||||
audioDevice::audioDevice( const ch_cnt_t _channels, mixer * _mixer ) :
|
||||
AudioDevice::AudioDevice( const ch_cnt_t _channels, mixer * _mixer ) :
|
||||
m_supportsCapture( false ),
|
||||
m_sampleRate( _mixer->processingSampleRate() ),
|
||||
m_channels( _channels ),
|
||||
@@ -53,7 +49,7 @@ audioDevice::audioDevice( const ch_cnt_t _channels, mixer * _mixer ) :
|
||||
|
||||
|
||||
|
||||
audioDevice::~audioDevice()
|
||||
AudioDevice::~AudioDevice()
|
||||
{
|
||||
src_delete( m_srcState );
|
||||
delete[] m_buffer;
|
||||
@@ -65,7 +61,7 @@ audioDevice::~audioDevice()
|
||||
|
||||
|
||||
|
||||
void audioDevice::processNextBuffer( void )
|
||||
void AudioDevice::processNextBuffer()
|
||||
{
|
||||
const fpp_t frames = getNextBuffer( m_buffer );
|
||||
if( frames )
|
||||
@@ -74,20 +70,20 @@ void audioDevice::processNextBuffer( void )
|
||||
}
|
||||
else
|
||||
{
|
||||
m_inProcess = FALSE;
|
||||
m_inProcess = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
fpp_t audioDevice::getNextBuffer( surroundSampleFrame * _ab )
|
||||
fpp_t AudioDevice::getNextBuffer( surroundSampleFrame * _ab )
|
||||
{
|
||||
fpp_t frames = getMixer()->framesPerPeriod();
|
||||
const surroundSampleFrame * b = getMixer()->nextBuffer();
|
||||
if( !b )
|
||||
{
|
||||
return( 0 );
|
||||
return 0;
|
||||
}
|
||||
|
||||
// make sure, no other thread is accessing device
|
||||
@@ -114,13 +110,13 @@ fpp_t audioDevice::getNextBuffer( surroundSampleFrame * _ab )
|
||||
delete[] b;
|
||||
}
|
||||
|
||||
return( frames );
|
||||
return frames;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void audioDevice::stopProcessing( void )
|
||||
void AudioDevice::stopProcessing()
|
||||
{
|
||||
if( getMixer()->hasFifoWriter() )
|
||||
{
|
||||
@@ -134,7 +130,7 @@ void audioDevice::stopProcessing( void )
|
||||
|
||||
|
||||
|
||||
void audioDevice::applyQualitySettings( void )
|
||||
void AudioDevice::applyQualitySettings()
|
||||
{
|
||||
src_delete( m_srcState );
|
||||
|
||||
@@ -150,28 +146,28 @@ void audioDevice::applyQualitySettings( void )
|
||||
|
||||
|
||||
|
||||
void audioDevice::registerPort( audioPort * )
|
||||
void AudioDevice::registerPort( AudioPort * )
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void audioDevice::unregisterPort( audioPort * _port )
|
||||
void AudioDevice::unregisterPort( AudioPort * _port )
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void audioDevice::renamePort( audioPort * )
|
||||
void AudioDevice::renamePort( AudioPort * )
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void audioDevice::resample( const surroundSampleFrame * _src,
|
||||
void AudioDevice::resample( const surroundSampleFrame * _src,
|
||||
const fpp_t _frames,
|
||||
surroundSampleFrame * _dst,
|
||||
const sample_rate_t _src_sr,
|
||||
@@ -190,14 +186,14 @@ void audioDevice::resample( const surroundSampleFrame * _src,
|
||||
int error;
|
||||
if( ( error = src_process( m_srcState, &m_srcData ) ) )
|
||||
{
|
||||
printf( "audioDevice::resample(): error while resampling: %s\n",
|
||||
printf( "AudioDevice::resample(): error while resampling: %s\n",
|
||||
src_strerror( error ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Uint32 audioDevice::convertToS16( const surroundSampleFrame * _ab,
|
||||
Uint32 AudioDevice::convertToS16( const surroundSampleFrame * _ab,
|
||||
const fpp_t _frames,
|
||||
const float _master_gain,
|
||||
int_sample_t * _output_buffer,
|
||||
@@ -236,13 +232,13 @@ Uint32 audioDevice::convertToS16( const surroundSampleFrame * _ab,
|
||||
}
|
||||
}
|
||||
|
||||
return( _frames * channels() * BYTES_PER_INT_SAMPLE );
|
||||
return _frames * channels() * BYTES_PER_INT_SAMPLE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void audioDevice::clearS16Buffer( int_sample_t * _outbuf, const fpp_t _frames )
|
||||
void AudioDevice::clearS16Buffer( int_sample_t * _outbuf, const fpp_t _frames )
|
||||
{
|
||||
#ifdef LMMS_DEBUG
|
||||
assert( _outbuf != NULL );
|
||||
@@ -253,11 +249,9 @@ void audioDevice::clearS16Buffer( int_sample_t * _outbuf, const fpp_t _frames )
|
||||
|
||||
|
||||
|
||||
bool audioDevice::hqAudio( void ) const
|
||||
bool AudioDevice::hqAudio() const
|
||||
{
|
||||
return( configManager::inst()->value( "mixer", "hqaudio" ).toInt() );
|
||||
return configManager::inst()->value( "mixer", "hqaudio" ).toInt();
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
@@ -1,9 +1,9 @@
|
||||
/*
|
||||
* audio_file_device.cpp - base-class for audio-device-classes which write
|
||||
* their output into a file
|
||||
* AudioFileDevice.cpp - base-class for audio-device-classes which write
|
||||
* their output into a file
|
||||
*
|
||||
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2004-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -23,14 +23,13 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include <QtGui/QMessageBox>
|
||||
|
||||
#include "audio_file_device.h"
|
||||
#include "AudioFileDevice.h"
|
||||
#include "export_project_dialog.h"
|
||||
|
||||
|
||||
audioFileDevice::audioFileDevice( const sample_rate_t _sample_rate,
|
||||
AudioFileDevice::AudioFileDevice( const sample_rate_t _sample_rate,
|
||||
const ch_cnt_t _channels,
|
||||
const QString & _file,
|
||||
const bool _use_vbr,
|
||||
@@ -39,7 +38,7 @@ audioFileDevice::audioFileDevice( const sample_rate_t _sample_rate,
|
||||
const bitrate_t _max_bitrate,
|
||||
const int _depth,
|
||||
mixer * _mixer ) :
|
||||
audioDevice( _channels, _mixer ),
|
||||
AudioDevice( _channels, _mixer ),
|
||||
m_outputFile( _file ),
|
||||
m_useVbr( _use_vbr ),
|
||||
m_nomBitrate( _nom_bitrate ),
|
||||
@@ -49,7 +48,7 @@ audioFileDevice::audioFileDevice( const sample_rate_t _sample_rate,
|
||||
{
|
||||
setSampleRate( _sample_rate );
|
||||
|
||||
if( m_outputFile.open( QFile::WriteOnly | QFile::Truncate ) == FALSE )
|
||||
if( m_outputFile.open( QFile::WriteOnly | QFile::Truncate ) == false )
|
||||
{
|
||||
QMessageBox::critical( NULL,
|
||||
exportProjectDialog::tr( "Could not open file" ),
|
||||
@@ -68,7 +67,7 @@ audioFileDevice::audioFileDevice( const sample_rate_t _sample_rate,
|
||||
|
||||
|
||||
|
||||
audioFileDevice::~audioFileDevice()
|
||||
AudioFileDevice::~AudioFileDevice()
|
||||
{
|
||||
m_outputFile.close();
|
||||
}
|
||||
@@ -76,7 +75,7 @@ audioFileDevice::~audioFileDevice()
|
||||
|
||||
|
||||
|
||||
Sint32 audioFileDevice::writeData( const void * _data, Sint32 _len )
|
||||
Sint32 AudioFileDevice::writeData( const void * _data, Sint32 _len )
|
||||
{
|
||||
if( m_outputFile.isOpen() )
|
||||
{
|
||||
@@ -1,12 +1,12 @@
|
||||
/*
|
||||
* audio_file_ogg.cpp - audio-device which encodes wave-stream and writes it
|
||||
* into an OGG-file. This is used for song-export.
|
||||
* AudioFileOgg.cpp - audio-device which encodes wave-stream and writes it
|
||||
* into an OGG-file. This is used for song-export.
|
||||
*
|
||||
* This file is based on encode.c from vorbis-tools-source, for more information
|
||||
* see below.
|
||||
*
|
||||
* Copyright (c) 2004-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -26,9 +26,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "audio_file_ogg.h"
|
||||
#include "AudioFileOgg.h"
|
||||
|
||||
#ifdef LMMS_HAVE_OGGVORBIS
|
||||
|
||||
@@ -37,7 +35,7 @@
|
||||
#include <cstring>
|
||||
|
||||
|
||||
audioFileOgg::audioFileOgg( const sample_rate_t _sample_rate,
|
||||
AudioFileOgg::AudioFileOgg( const sample_rate_t _sample_rate,
|
||||
const ch_cnt_t _channels,
|
||||
bool & _success_ful,
|
||||
const QString & _file,
|
||||
@@ -47,7 +45,7 @@ audioFileOgg::audioFileOgg( const sample_rate_t _sample_rate,
|
||||
const bitrate_t _max_bitrate,
|
||||
const int _depth,
|
||||
mixer * _mixer ) :
|
||||
audioFileDevice( _sample_rate, _channels, _file, _use_vbr,
|
||||
AudioFileDevice( _sample_rate, _channels, _file, _use_vbr,
|
||||
_nom_bitrate, _min_bitrate, _max_bitrate,
|
||||
_depth, _mixer )
|
||||
{
|
||||
@@ -57,7 +55,7 @@ audioFileOgg::audioFileOgg( const sample_rate_t _sample_rate,
|
||||
|
||||
|
||||
|
||||
audioFileOgg::~audioFileOgg()
|
||||
AudioFileOgg::~AudioFileOgg()
|
||||
{
|
||||
finishEncoding();
|
||||
}
|
||||
@@ -65,17 +63,17 @@ audioFileOgg::~audioFileOgg()
|
||||
|
||||
|
||||
|
||||
inline Sint32 audioFileOgg::writePage( void )
|
||||
inline Sint32 AudioFileOgg::writePage()
|
||||
{
|
||||
Sint32 written = writeData( m_og.header, m_og.header_len );
|
||||
written += writeData( m_og.body, m_og.body_len );
|
||||
return( written );
|
||||
return written;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
bool audioFileOgg::startEncoding( void )
|
||||
bool AudioFileOgg::startEncoding()
|
||||
{
|
||||
vorbis_comment vc;
|
||||
const char * comments = "Cool=This song has been made using Linux "
|
||||
@@ -122,14 +120,14 @@ bool audioFileOgg::startEncoding( void )
|
||||
printf( "Mode initialization failed: invalid parameters for "
|
||||
"bitrate\n" );
|
||||
vorbis_info_clear( &m_vi );
|
||||
return( FALSE );
|
||||
return false;
|
||||
}
|
||||
|
||||
if( useVBR() == FALSE )
|
||||
if( useVBR() == false )
|
||||
{
|
||||
vorbis_encode_ctl( &m_vi, OV_ECTL_RATEMANAGE_AVG, NULL );
|
||||
}
|
||||
else if( useVBR() == TRUE )
|
||||
else if( useVBR() == true )
|
||||
{
|
||||
// Turn off management entirely (if it was turned on).
|
||||
vorbis_encode_ctl( &m_vi, OV_ECTL_RATEMANAGE_SET, NULL );
|
||||
@@ -173,17 +171,17 @@ bool audioFileOgg::startEncoding( void )
|
||||
{
|
||||
// clean up
|
||||
finishEncoding();
|
||||
return( FALSE );
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return( TRUE );
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void audioFileOgg::writeBuffer( const surroundSampleFrame * _ab,
|
||||
void AudioFileOgg::writeBuffer( const surroundSampleFrame * _ab,
|
||||
const fpp_t _frames,
|
||||
const float _master_gain )
|
||||
{
|
||||
@@ -248,7 +246,7 @@ void audioFileOgg::writeBuffer( const surroundSampleFrame * _ab,
|
||||
|
||||
|
||||
|
||||
void audioFileOgg::finishEncoding( void )
|
||||
void AudioFileOgg::finishEncoding()
|
||||
{
|
||||
if( m_ok )
|
||||
{
|
||||
@@ -1,11 +1,9 @@
|
||||
#ifndef SINGLE_SOURCE_COMPILE
|
||||
|
||||
/*
|
||||
* audio_file_wave.cpp - audio-device which encodes wave-stream and writes it
|
||||
* into a WAVE-file. This is used for song-export.
|
||||
* AudioFileWave.cpp - audio-device which encodes wave-stream and writes it
|
||||
* into a WAVE-file. This is used for song-export.
|
||||
*
|
||||
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2004-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -25,15 +23,11 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "audio_file_wave.h"
|
||||
#include "AudioFileWave.h"
|
||||
#include "endian_handling.h"
|
||||
|
||||
#include <cstring>
|
||||
|
||||
|
||||
audioFileWave::audioFileWave( const sample_rate_t _sample_rate,
|
||||
AudioFileWave::AudioFileWave( const sample_rate_t _sample_rate,
|
||||
const ch_cnt_t _channels, bool & _success_ful,
|
||||
const QString & _file,
|
||||
const bool _use_vbr,
|
||||
@@ -42,7 +36,7 @@ audioFileWave::audioFileWave( const sample_rate_t _sample_rate,
|
||||
const bitrate_t _max_bitrate,
|
||||
const int _depth,
|
||||
mixer * _mixer ) :
|
||||
audioFileDevice( _sample_rate, _channels, _file, _use_vbr,
|
||||
AudioFileDevice( _sample_rate, _channels, _file, _use_vbr,
|
||||
_nom_bitrate, _min_bitrate, _max_bitrate,
|
||||
_depth, _mixer )
|
||||
{
|
||||
@@ -52,7 +46,7 @@ audioFileWave::audioFileWave( const sample_rate_t _sample_rate,
|
||||
|
||||
|
||||
|
||||
audioFileWave::~audioFileWave()
|
||||
AudioFileWave::~AudioFileWave()
|
||||
{
|
||||
finishEncoding();
|
||||
}
|
||||
@@ -60,7 +54,7 @@ audioFileWave::~audioFileWave()
|
||||
|
||||
|
||||
|
||||
bool audioFileWave::startEncoding( void )
|
||||
bool AudioFileWave::startEncoding()
|
||||
{
|
||||
m_si.samplerate = sampleRate();
|
||||
m_si.channels = channels();
|
||||
@@ -75,13 +69,13 @@ bool audioFileWave::startEncoding( void )
|
||||
default: m_si.format = SF_FORMAT_WAV | SF_FORMAT_PCM_16; break;
|
||||
}
|
||||
m_sf = sf_open( outputFile().toUtf8().constData(), SFM_WRITE, &m_si );
|
||||
return( TRUE );
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void audioFileWave::writeBuffer( const surroundSampleFrame * _ab,
|
||||
void AudioFileWave::writeBuffer( const surroundSampleFrame * _ab,
|
||||
const fpp_t _frames,
|
||||
const float _master_gain )
|
||||
{
|
||||
@@ -113,10 +107,8 @@ void audioFileWave::writeBuffer( const surroundSampleFrame * _ab,
|
||||
|
||||
|
||||
|
||||
void audioFileWave::finishEncoding( void )
|
||||
void AudioFileWave::finishEncoding()
|
||||
{
|
||||
sf_close( m_sf );
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* audio_jack.cpp - support for JACK-transport
|
||||
* AudioJack.cpp - support for JACK-transport
|
||||
*
|
||||
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
@@ -22,9 +22,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include "audio_jack.h"
|
||||
|
||||
#include "AudioJack.h"
|
||||
|
||||
#ifdef LMMS_HAVE_JACK
|
||||
|
||||
@@ -32,24 +30,22 @@
|
||||
#include <QtGui/QLabel>
|
||||
#include <QtGui/QMessageBox>
|
||||
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
#include "debug.h"
|
||||
#include "engine.h"
|
||||
#include "templates.h"
|
||||
#include "gui_templates.h"
|
||||
#include "config_mgr.h"
|
||||
#include "lcd_spinbox.h"
|
||||
#include "audio_port.h"
|
||||
#include "AudioPort.h"
|
||||
#include "main_window.h"
|
||||
|
||||
|
||||
|
||||
|
||||
audioJACK::audioJACK( bool & _success_ful, mixer * _mixer ) :
|
||||
audioDevice( tLimit<int>( configManager::inst()->value(
|
||||
AudioJack::AudioJack( bool & _success_ful, mixer * _mixer ) :
|
||||
AudioDevice( tLimit<int>( configManager::inst()->value(
|
||||
"audiojack", "channels" ).toInt(),
|
||||
DEFAULT_CHANNELS, SURROUND_CHANNELS ),
|
||||
_mixer ),
|
||||
@@ -74,7 +70,7 @@ audioJACK::audioJACK( bool & _success_ful, mixer * _mixer ) :
|
||||
|
||||
|
||||
|
||||
audioJACK::~audioJACK()
|
||||
AudioJack::~AudioJack()
|
||||
{
|
||||
m_stopSemaphore.release();
|
||||
|
||||
@@ -98,7 +94,7 @@ audioJACK::~audioJACK()
|
||||
|
||||
|
||||
|
||||
void audioJACK::restartAfterZombified( void )
|
||||
void AudioJack::restartAfterZombified()
|
||||
{
|
||||
if( initJackClient() )
|
||||
{
|
||||
@@ -127,7 +123,7 @@ void audioJACK::restartAfterZombified( void )
|
||||
|
||||
|
||||
|
||||
bool audioJACK::initJackClient( void )
|
||||
bool AudioJack::initJackClient()
|
||||
{
|
||||
QString clientName = configManager::inst()->value( "audiojack",
|
||||
"clientname" );
|
||||
@@ -193,7 +189,7 @@ bool audioJACK::initJackClient( void )
|
||||
|
||||
|
||||
|
||||
void audioJACK::startProcessing( void )
|
||||
void AudioJack::startProcessing()
|
||||
{
|
||||
m_stopped = false;
|
||||
|
||||
@@ -245,7 +241,7 @@ void audioJACK::startProcessing( void )
|
||||
|
||||
|
||||
|
||||
void audioJACK::stopProcessing( void )
|
||||
void AudioJack::stopProcessing()
|
||||
{
|
||||
m_stopSemaphore.acquire();
|
||||
}
|
||||
@@ -253,7 +249,7 @@ void audioJACK::stopProcessing( void )
|
||||
|
||||
|
||||
|
||||
void audioJACK::applyQualitySettings( void )
|
||||
void AudioJack::applyQualitySettings()
|
||||
{
|
||||
if( hqAudio() )
|
||||
{
|
||||
@@ -265,13 +261,13 @@ void audioJACK::applyQualitySettings( void )
|
||||
}
|
||||
}
|
||||
|
||||
audioDevice::applyQualitySettings();
|
||||
AudioDevice::applyQualitySettings();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void audioJACK::registerPort( audioPort * _port )
|
||||
void AudioJack::registerPort( AudioPort * _port )
|
||||
{
|
||||
#ifdef AUDIO_PORT_SUPPORT
|
||||
// make sure, port is not already registered
|
||||
@@ -292,7 +288,7 @@ void audioJACK::registerPort( audioPort * _port )
|
||||
|
||||
|
||||
|
||||
void audioJACK::unregisterPort( audioPort * _port )
|
||||
void AudioJack::unregisterPort( AudioPort * _port )
|
||||
{
|
||||
#ifdef AUDIO_PORT_SUPPORT
|
||||
if( m_portMap.contains( _port ) )
|
||||
@@ -313,7 +309,7 @@ void audioJACK::unregisterPort( audioPort * _port )
|
||||
|
||||
|
||||
|
||||
void audioJACK::renamePort( audioPort * _port )
|
||||
void AudioJack::renamePort( AudioPort * _port )
|
||||
{
|
||||
#ifdef AUDIO_PORT_SUPPORT
|
||||
if( m_portMap.contains( _port ) )
|
||||
@@ -332,7 +328,7 @@ void audioJACK::renamePort( audioPort * _port )
|
||||
|
||||
|
||||
|
||||
int audioJACK::processCallback( jack_nframes_t _nframes, void * _udata )
|
||||
int AudioJack::processCallback( jack_nframes_t _nframes, void * _udata )
|
||||
{
|
||||
QVector<jack_default_audio_sample_t *> outbufs( channels(), NULL );
|
||||
ch_cnt_t chnl = 0;
|
||||
@@ -415,18 +411,18 @@ int audioJACK::processCallback( jack_nframes_t _nframes, void * _udata )
|
||||
|
||||
|
||||
|
||||
int audioJACK::staticProcessCallback( jack_nframes_t _nframes, void * _udata )
|
||||
int AudioJack::staticProcessCallback( jack_nframes_t _nframes, void * _udata )
|
||||
{
|
||||
return static_cast<audioJACK *>( _udata )->
|
||||
return static_cast<AudioJack *>( _udata )->
|
||||
processCallback( _nframes, _udata );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void audioJACK::shutdownCallback( void * _udata )
|
||||
void AudioJack::shutdownCallback( void * _udata )
|
||||
{
|
||||
audioJACK * _this = static_cast<audioJACK *>( _udata );
|
||||
AudioJack * _this = static_cast<AudioJack *>( _udata );
|
||||
_this->m_client = NULL;
|
||||
_this->zombified();
|
||||
}
|
||||
@@ -435,8 +431,8 @@ void audioJACK::shutdownCallback( void * _udata )
|
||||
|
||||
|
||||
|
||||
audioJACK::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
audioDevice::setupWidget( audioJACK::name(), _parent )
|
||||
AudioJack::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
AudioDevice::setupWidget( AudioJack::name(), _parent )
|
||||
{
|
||||
QString cn = configManager::inst()->value( "audiojack", "clientname" );
|
||||
if( cn.isEmpty() )
|
||||
@@ -466,14 +462,14 @@ audioJACK::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
|
||||
|
||||
|
||||
audioJACK::setupWidget::~setupWidget()
|
||||
AudioJack::setupWidget::~setupWidget()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void audioJACK::setupWidget::saveSettings( void )
|
||||
void AudioJack::setupWidget::saveSettings()
|
||||
{
|
||||
configManager::inst()->setValue( "audiojack", "clientname",
|
||||
m_clientName->text() );
|
||||
@@ -483,7 +479,7 @@ void audioJACK::setupWidget::saveSettings( void )
|
||||
|
||||
|
||||
|
||||
#include "moc_audio_jack.cxx"
|
||||
#include "moc_AudioJack.cxx"
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
#ifndef SINGLE_SOURCE_COMPILE
|
||||
|
||||
/*
|
||||
* audio_oss.cpp - device-class that implements OSS-PCM-output
|
||||
* AudioOss.cpp - device-class that implements OSS-PCM-output
|
||||
*
|
||||
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -24,9 +22,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include "audio_oss.h"
|
||||
|
||||
#include "AudioOss.h"
|
||||
|
||||
#ifdef LMMS_HAVE_OSS
|
||||
|
||||
@@ -75,20 +71,20 @@
|
||||
|
||||
|
||||
|
||||
audioOSS::audioOSS( bool & _success_ful, mixer * _mixer ) :
|
||||
audioDevice( tLimit<ch_cnt_t>(
|
||||
AudioOss::AudioOss( bool & _success_ful, mixer * _mixer ) :
|
||||
AudioDevice( tLimit<ch_cnt_t>(
|
||||
configManager::inst()->value( "audiooss", "channels" ).toInt(),
|
||||
DEFAULT_CHANNELS, SURROUND_CHANNELS ),
|
||||
_mixer ),
|
||||
m_convertEndian( FALSE )
|
||||
m_convertEndian( false )
|
||||
{
|
||||
_success_ful = FALSE;
|
||||
_success_ful = false;
|
||||
|
||||
m_audioFD = open( probeDevice().toAscii().constData(), O_WRONLY, 0 );
|
||||
|
||||
if( m_audioFD == -1 )
|
||||
{
|
||||
printf( "audioOSS: failed opening audio-device\n" );
|
||||
printf( "AudioOss: failed opening audio-device\n" );
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -148,7 +144,7 @@ audioOSS::audioOSS( bool & _success_ful, mixer * _mixer ) :
|
||||
if( ( isLittleEndian() && ( value == AFMT_S16_BE ) ) ||
|
||||
( !isLittleEndian() && ( value == AFMT_S16_LE ) ) )
|
||||
{
|
||||
m_convertEndian = TRUE;
|
||||
m_convertEndian = true;
|
||||
}
|
||||
|
||||
// Set the number of channels of output
|
||||
@@ -185,13 +181,13 @@ audioOSS::audioOSS( bool & _success_ful, mixer * _mixer ) :
|
||||
setSampleRate( value );
|
||||
}
|
||||
|
||||
_success_ful = TRUE;
|
||||
_success_ful = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
audioOSS::~audioOSS()
|
||||
AudioOss::~AudioOss()
|
||||
{
|
||||
stopProcessing();
|
||||
close( m_audioFD );
|
||||
@@ -200,10 +196,10 @@ audioOSS::~audioOSS()
|
||||
|
||||
|
||||
|
||||
QString audioOSS::probeDevice( void )
|
||||
QString AudioOss::probeDevice()
|
||||
{
|
||||
QString dev = configManager::inst()->value( "audiooss", "device" );
|
||||
if( dev == "" )
|
||||
QString dev = configManager::inst()->value( "AudioOss", "Device" );
|
||||
if( dev.isEmpty() )
|
||||
{
|
||||
char * adev = getenv( "AUDIODEV" ); // Is there a standard
|
||||
// variable name?
|
||||
@@ -218,7 +214,7 @@ QString audioOSS::probeDevice( void )
|
||||
}
|
||||
|
||||
// if the first open fails, look for other devices
|
||||
if ( QFileInfo( dev ).isWritable() == FALSE )
|
||||
if( QFileInfo( dev ).isWritable() == false )
|
||||
{
|
||||
int instance = -1;
|
||||
while( 1 )
|
||||
@@ -235,13 +231,13 @@ QString audioOSS::probeDevice( void )
|
||||
}
|
||||
}
|
||||
}
|
||||
return( dev );
|
||||
return dev;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void audioOSS::startProcessing( void )
|
||||
void AudioOss::startProcessing()
|
||||
{
|
||||
if( !isRunning() )
|
||||
{
|
||||
@@ -252,7 +248,7 @@ void audioOSS::startProcessing( void )
|
||||
|
||||
|
||||
|
||||
void audioOSS::stopProcessing( void )
|
||||
void AudioOss::stopProcessing()
|
||||
{
|
||||
if( isRunning() )
|
||||
{
|
||||
@@ -264,7 +260,7 @@ void audioOSS::stopProcessing( void )
|
||||
|
||||
|
||||
|
||||
void audioOSS::applyQualitySettings( void )
|
||||
void AudioOss::applyQualitySettings()
|
||||
{
|
||||
if( hqAudio() )
|
||||
{
|
||||
@@ -290,13 +286,13 @@ void audioOSS::applyQualitySettings( void )
|
||||
}
|
||||
}
|
||||
|
||||
audioDevice::applyQualitySettings();
|
||||
AudioDevice::applyQualitySettings();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void audioOSS::run( void )
|
||||
void AudioOss::run()
|
||||
{
|
||||
surroundSampleFrame * temp =
|
||||
new surroundSampleFrame[getMixer()->framesPerPeriod()];
|
||||
@@ -304,7 +300,7 @@ void audioOSS::run( void )
|
||||
new int_sample_t[getMixer()->framesPerPeriod() *
|
||||
channels()];
|
||||
|
||||
while( TRUE )
|
||||
while( true )
|
||||
{
|
||||
const fpp_t frames = getNextBuffer( temp );
|
||||
if( !frames )
|
||||
@@ -328,8 +324,8 @@ void audioOSS::run( void )
|
||||
|
||||
|
||||
|
||||
audioOSS::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
audioDevice::setupWidget( audioOSS::name(), _parent )
|
||||
AudioOss::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
AudioDevice::setupWidget( AudioOss::name(), _parent )
|
||||
{
|
||||
m_device = new QLineEdit( probeDevice(), this );
|
||||
m_device->setGeometry( 10, 20, 160, 20 );
|
||||
@@ -354,7 +350,7 @@ audioOSS::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
|
||||
|
||||
|
||||
audioOSS::setupWidget::~setupWidget()
|
||||
AudioOss::setupWidget::~setupWidget()
|
||||
{
|
||||
|
||||
}
|
||||
@@ -362,7 +358,7 @@ audioOSS::setupWidget::~setupWidget()
|
||||
|
||||
|
||||
|
||||
void audioOSS::setupWidget::saveSettings( void )
|
||||
void AudioOss::setupWidget::saveSettings()
|
||||
{
|
||||
configManager::inst()->setValue( "audiooss", "device",
|
||||
m_device->text() );
|
||||
@@ -373,5 +369,3 @@ void audioOSS::setupWidget::saveSettings( void )
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* audio_port.cpp - base-class for objects providing sound at a port
|
||||
* AudioPort.cpp - base-class for objects providing sound at a port
|
||||
*
|
||||
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2004-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -22,13 +22,13 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include "audio_port.h"
|
||||
#include "audio_device.h"
|
||||
#include "AudioPort.h"
|
||||
#include "AudioDevice.h"
|
||||
#include "effect_chain.h"
|
||||
#include "engine.h"
|
||||
|
||||
|
||||
audioPort::audioPort( const QString & _name, bool _has_effect_chain ) :
|
||||
AudioPort::AudioPort( const QString & _name, bool _has_effect_chain ) :
|
||||
m_bufferUsage( NoUsage ),
|
||||
m_firstBuffer( new sampleFrame[engine::getMixer()->framesPerPeriod()] ),
|
||||
m_secondBuffer( new sampleFrame[
|
||||
@@ -49,7 +49,7 @@ audioPort::audioPort( const QString & _name, bool _has_effect_chain ) :
|
||||
|
||||
|
||||
|
||||
audioPort::~audioPort()
|
||||
AudioPort::~AudioPort()
|
||||
{
|
||||
setExtOutputEnabled( false );
|
||||
engine::getMixer()->removeAudioPort( this );
|
||||
@@ -61,7 +61,7 @@ audioPort::~audioPort()
|
||||
|
||||
|
||||
|
||||
void audioPort::nextPeriod( void )
|
||||
void AudioPort::nextPeriod()
|
||||
{
|
||||
m_firstBufferLock.lock();
|
||||
engine::getMixer()->clearAudioBuffer( m_firstBuffer,
|
||||
@@ -79,7 +79,7 @@ void audioPort::nextPeriod( void )
|
||||
|
||||
|
||||
|
||||
void audioPort::setExtOutputEnabled( bool _enabled )
|
||||
void AudioPort::setExtOutputEnabled( bool _enabled )
|
||||
{
|
||||
if( _enabled != m_extOutputEnabled )
|
||||
{
|
||||
@@ -98,7 +98,7 @@ void audioPort::setExtOutputEnabled( bool _enabled )
|
||||
|
||||
|
||||
|
||||
void audioPort::setName( const QString & _name )
|
||||
void AudioPort::setName( const QString & _name )
|
||||
{
|
||||
m_name = _name;
|
||||
engine::getMixer()->audioDev()->renamePort( this );
|
||||
@@ -107,7 +107,7 @@ void audioPort::setName( const QString & _name )
|
||||
|
||||
|
||||
|
||||
bool audioPort::processEffects( void )
|
||||
bool AudioPort::processEffects()
|
||||
{
|
||||
if( m_effects )
|
||||
{
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* audio_portaudio.cpp - device-class that performs PCM-output via PortAudio
|
||||
* AudioPortAudio.cpp - device-class that performs PCM-output via PortAudio
|
||||
*
|
||||
* Copyright (c) 2008 Csaba Hruska <csaba.hruska/at/gmail.com>
|
||||
*
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -23,16 +23,14 @@
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "audio_portaudio.h"
|
||||
|
||||
#include "AudioPortAudio.h"
|
||||
|
||||
#ifndef LMMS_HAVE_PORTAUDIO
|
||||
void audioPortAudioSetupUtil::updateDevices( void )
|
||||
void AudioPortAudioSetupUtil::updateDevices()
|
||||
{
|
||||
}
|
||||
|
||||
void audioPortAudioSetupUtil::updateChannels( void )
|
||||
void AudioPortAudioSetupUtil::updateChannels()
|
||||
{
|
||||
}
|
||||
#endif
|
||||
@@ -51,8 +49,8 @@ void audioPortAudioSetupUtil::updateChannels( void )
|
||||
#include "lcd_spinbox.h"
|
||||
|
||||
|
||||
audioPortAudio::audioPortAudio( bool & _success_ful, mixer * _mixer ) :
|
||||
audioDevice( tLimit<ch_cnt_t>(
|
||||
AudioPortAudio::AudioPortAudio( bool & _success_ful, mixer * _mixer ) :
|
||||
AudioDevice( tLimit<ch_cnt_t>(
|
||||
configManager::inst()->value( "audioportaudio", "channels" ).toInt(),
|
||||
DEFAULT_CHANNELS, SURROUND_CHANNELS ),
|
||||
_mixer ),
|
||||
@@ -61,7 +59,7 @@ audioPortAudio::audioPortAudio( bool & _success_ful, mixer * _mixer ) :
|
||||
m_outBufPos( 0 ),
|
||||
m_stopSemaphore( 1 )
|
||||
{
|
||||
_success_ful = FALSE;
|
||||
_success_ful = false;
|
||||
|
||||
m_outBufSize = getMixer()->framesPerPeriod();
|
||||
|
||||
@@ -69,7 +67,7 @@ audioPortAudio::audioPortAudio( bool & _success_ful, mixer * _mixer ) :
|
||||
|
||||
if( err != paNoError ) {
|
||||
printf( "Couldn't initialize PortAudio: %s\n", Pa_GetErrorText( err ) );
|
||||
m_wasPAInitError = TRUE;
|
||||
m_wasPAInitError = true;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -187,14 +185,14 @@ audioPortAudio::audioPortAudio( bool & _success_ful, mixer * _mixer ) :
|
||||
|
||||
m_stopSemaphore.acquire();
|
||||
|
||||
m_supportsCapture = TRUE;
|
||||
_success_ful = TRUE;
|
||||
m_supportsCapture = true;
|
||||
_success_ful = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
audioPortAudio::~audioPortAudio()
|
||||
AudioPortAudio::~AudioPortAudio()
|
||||
{
|
||||
stopProcessing();
|
||||
m_stopSemaphore.release();
|
||||
@@ -209,14 +207,14 @@ audioPortAudio::~audioPortAudio()
|
||||
|
||||
|
||||
|
||||
void audioPortAudio::startProcessing( void )
|
||||
void AudioPortAudio::startProcessing()
|
||||
{
|
||||
m_stopped = FALSE;
|
||||
m_stopped = false;
|
||||
PaError err = Pa_StartStream( m_paStream );
|
||||
|
||||
if( err != paNoError )
|
||||
{
|
||||
m_stopped = TRUE;
|
||||
m_stopped = true;
|
||||
printf( "PortAudio error: %s\n", Pa_GetErrorText( err ) );
|
||||
}
|
||||
}
|
||||
@@ -224,7 +222,7 @@ void audioPortAudio::startProcessing( void )
|
||||
|
||||
|
||||
|
||||
void audioPortAudio::stopProcessing( void )
|
||||
void AudioPortAudio::stopProcessing()
|
||||
{
|
||||
if( Pa_IsStreamActive( m_paStream ) )
|
||||
{
|
||||
@@ -242,7 +240,7 @@ void audioPortAudio::stopProcessing( void )
|
||||
|
||||
|
||||
|
||||
void audioPortAudio::applyQualitySettings( void )
|
||||
void AudioPortAudio::applyQualitySettings()
|
||||
{
|
||||
if( hqAudio() )
|
||||
{
|
||||
@@ -289,7 +287,7 @@ void audioPortAudio::applyQualitySettings( void )
|
||||
audioDevice::applyQualitySettings();
|
||||
}
|
||||
|
||||
int audioPortAudio::process_callback(
|
||||
int AudioPortAudio::process_callback(
|
||||
const float *_inputBuffer,
|
||||
float * _outputBuffer,
|
||||
unsigned long _framesPerBuffer )
|
||||
@@ -311,7 +309,7 @@ int audioPortAudio::process_callback(
|
||||
const fpp_t frames = getNextBuffer( m_outBuf );
|
||||
if( !frames )
|
||||
{
|
||||
m_stopped = TRUE;
|
||||
m_stopped = true;
|
||||
m_stopSemaphore.release();
|
||||
memset( _outputBuffer, 0, _framesPerBuffer *
|
||||
channels() * sizeof(float) );
|
||||
@@ -346,7 +344,7 @@ int audioPortAudio::process_callback(
|
||||
|
||||
|
||||
#ifdef PORTAUDIO_V19
|
||||
int audioPortAudio::_process_callback(
|
||||
int AudioPortAudio::_process_callback(
|
||||
const void *_inputBuffer,
|
||||
void * _outputBuffer,
|
||||
unsigned long _framesPerBuffer,
|
||||
@@ -357,19 +355,19 @@ int audioPortAudio::_process_callback(
|
||||
Q_UNUSED(_timeInfo);
|
||||
Q_UNUSED(_statusFlags);
|
||||
#else
|
||||
int audioPortAudio::_process_callback( void *_inputBuffer, void *_outputBuffer,
|
||||
int AudioPortAudio::_process_callback( void *_inputBuffer, void *_outputBuffer,
|
||||
unsigned long _framesPerBuffer, PaTimestamp _outTime, void *_arg )
|
||||
{
|
||||
#endif
|
||||
|
||||
audioPortAudio * _this = static_cast<audioPortAudio *> (_arg);
|
||||
AudioPortAudio * _this = static_cast<AudioPortAudio *> (_arg);
|
||||
return _this->process_callback( (const float*)_inputBuffer,
|
||||
(float*)_outputBuffer, _framesPerBuffer );
|
||||
}
|
||||
|
||||
|
||||
|
||||
void audioPortAudioSetupUtil::updateDevices( void )
|
||||
void AudioPortAudioSetupUtil::updateDevices()
|
||||
{
|
||||
PaError err = Pa_Initialize();
|
||||
if( err != paNoError ) {
|
||||
@@ -413,7 +411,7 @@ void audioPortAudioSetupUtil::updateDevices( void )
|
||||
|
||||
|
||||
|
||||
void audioPortAudioSetupUtil::updateChannels( void )
|
||||
void AudioPortAudioSetupUtil::updateChannels()
|
||||
{
|
||||
PaError err = Pa_Initialize();
|
||||
if( err != paNoError ) {
|
||||
@@ -427,8 +425,8 @@ void audioPortAudioSetupUtil::updateChannels( void )
|
||||
|
||||
|
||||
|
||||
audioPortAudio::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
audioDevice::setupWidget( audioPortAudio::name(), _parent )
|
||||
AudioPortAudio::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
audioDevice::setupWidget( AudioPortAudio::name(), _parent )
|
||||
{
|
||||
m_backend = new comboBox( this, "BACKEND" );
|
||||
m_backend->setGeometry( 52, 15, 120, 20 );
|
||||
@@ -506,7 +504,7 @@ audioPortAudio::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
|
||||
|
||||
|
||||
audioPortAudio::setupWidget::~setupWidget()
|
||||
AudioPortAudio::setupWidget::~setupWidget()
|
||||
{
|
||||
disconnect( &m_setupUtil.m_backendModel, SIGNAL( dataChanged() ),
|
||||
&m_setupUtil, SLOT( updateDevices() ) );
|
||||
@@ -518,7 +516,7 @@ audioPortAudio::setupWidget::~setupWidget()
|
||||
|
||||
|
||||
|
||||
void audioPortAudio::setupWidget::saveSettings( void )
|
||||
void AudioPortAudio::setupWidget::saveSettings()
|
||||
{
|
||||
|
||||
configManager::inst()->setValue( "audioportaudio", "backend",
|
||||
@@ -533,5 +531,5 @@ void audioPortAudio::setupWidget::saveSettings( void )
|
||||
|
||||
#endif
|
||||
|
||||
#include "moc_audio_portaudio.cxx"
|
||||
#include "moc_AudioPortAudio.cxx"
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
#ifndef SINGLE_SOURCE_COMPILE
|
||||
|
||||
/*
|
||||
* audio_pulseaudio.cpp - device-class which implements PulseAudio-output
|
||||
* AudioPulseAudio.cpp - device-class which implements PulseAudio-output
|
||||
*
|
||||
* Copyright (c) 2008-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -24,14 +22,10 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <QtGui/QLineEdit>
|
||||
#include <QtGui/QLabel>
|
||||
|
||||
#include <cstdio>
|
||||
|
||||
#include "audio_pulseaudio.h"
|
||||
#include "AudioPulseAudio.h"
|
||||
|
||||
#ifdef LMMS_HAVE_PULSEAUDIO
|
||||
|
||||
@@ -44,33 +38,33 @@
|
||||
|
||||
static void stream_write_callback(pa_stream *s, size_t length, void *userdata)
|
||||
{
|
||||
static_cast<audioPulseAudio *>( userdata )->streamWriteCallback( s, length );
|
||||
static_cast<AudioPulseAudio *>( userdata )->streamWriteCallback( s, length );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
audioPulseAudio::audioPulseAudio( bool & _success_ful, mixer * _mixer ) :
|
||||
audioDevice( tLimit<ch_cnt_t>(
|
||||
AudioPulseAudio::AudioPulseAudio( bool & _success_ful, mixer * _mixer ) :
|
||||
AudioDevice( tLimit<ch_cnt_t>(
|
||||
configManager::inst()->value( "audiopa", "channels" ).toInt(),
|
||||
DEFAULT_CHANNELS, SURROUND_CHANNELS ),
|
||||
_mixer ),
|
||||
m_s( NULL ),
|
||||
m_convertEndian( FALSE )
|
||||
m_convertEndian( false )
|
||||
{
|
||||
_success_ful = FALSE;
|
||||
_success_ful = false;
|
||||
|
||||
m_sampleSpec.format = PA_SAMPLE_S16LE;
|
||||
m_sampleSpec.rate = sampleRate();
|
||||
m_sampleSpec.channels = channels();
|
||||
|
||||
_success_ful = TRUE;
|
||||
_success_ful = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
audioPulseAudio::~audioPulseAudio()
|
||||
AudioPulseAudio::~AudioPulseAudio()
|
||||
{
|
||||
stopProcessing();
|
||||
|
||||
@@ -83,24 +77,24 @@ audioPulseAudio::~audioPulseAudio()
|
||||
|
||||
|
||||
|
||||
QString audioPulseAudio::probeDevice( void )
|
||||
QString AudioPulseAudio::probeDevice()
|
||||
{
|
||||
QString dev = configManager::inst()->value( "audiopa", "device" );
|
||||
if( dev == "" )
|
||||
if( dev.isEmpty() )
|
||||
{
|
||||
if( getenv( "AUDIODEV" ) != NULL )
|
||||
{
|
||||
return( getenv( "AUDIODEV" ) );
|
||||
return getenv( "AUDIODEV" );
|
||||
}
|
||||
return( "default" );
|
||||
return "default";
|
||||
}
|
||||
return( dev );
|
||||
return dev;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void audioPulseAudio::startProcessing( void )
|
||||
void AudioPulseAudio::startProcessing()
|
||||
{
|
||||
if( !isRunning() )
|
||||
{
|
||||
@@ -111,7 +105,7 @@ void audioPulseAudio::startProcessing( void )
|
||||
|
||||
|
||||
|
||||
void audioPulseAudio::stopProcessing( void )
|
||||
void AudioPulseAudio::stopProcessing()
|
||||
{
|
||||
if( isRunning() )
|
||||
{
|
||||
@@ -123,7 +117,7 @@ void audioPulseAudio::stopProcessing( void )
|
||||
|
||||
|
||||
|
||||
void audioPulseAudio::applyQualitySettings( void )
|
||||
void AudioPulseAudio::applyQualitySettings()
|
||||
{
|
||||
if( hqAudio() )
|
||||
{
|
||||
@@ -131,7 +125,7 @@ void audioPulseAudio::applyQualitySettings( void )
|
||||
|
||||
}
|
||||
|
||||
audioDevice::applyQualitySettings();
|
||||
AudioDevice::applyQualitySettings();
|
||||
}
|
||||
|
||||
|
||||
@@ -147,12 +141,12 @@ static void stream_state_callback( pa_stream *s, void * userdata )
|
||||
break;
|
||||
|
||||
case PA_STREAM_READY:
|
||||
fprintf(stderr, "Stream successfully created\n");
|
||||
qDebug( "Stream successfully created\n" );
|
||||
break;
|
||||
|
||||
case PA_STREAM_FAILED:
|
||||
default:
|
||||
fprintf(stderr, "Stream errror: %s\n",
|
||||
qCritical( "Stream errror: %s\n",
|
||||
pa_strerror(pa_context_errno(
|
||||
pa_stream_get_context( s ) ) ) );
|
||||
}
|
||||
@@ -163,7 +157,7 @@ static void stream_state_callback( pa_stream *s, void * userdata )
|
||||
/* This is called whenever the context status changes */
|
||||
static void context_state_callback(pa_context *c, void *userdata)
|
||||
{
|
||||
audioPulseAudio * _this = static_cast<audioPulseAudio *>( userdata );
|
||||
AudioPulseAudio * _this = static_cast<AudioPulseAudio *>( userdata );
|
||||
switch( pa_context_get_state( c ) )
|
||||
{
|
||||
case PA_CONTEXT_CONNECTING:
|
||||
@@ -174,11 +168,15 @@ static void context_state_callback(pa_context *c, void *userdata)
|
||||
case PA_CONTEXT_READY:
|
||||
{
|
||||
pa_cvolume cv;
|
||||
fprintf(stderr, "Connection established.\n");
|
||||
_this->m_s = pa_stream_new(c, "lmms", &_this->m_sampleSpec, NULL);
|
||||
pa_stream_set_state_callback(_this->m_s, stream_state_callback, _this );
|
||||
pa_stream_set_write_callback(_this->m_s, stream_write_callback, _this);
|
||||
pa_stream_connect_playback(_this->m_s, NULL, NULL, (pa_stream_flags) 0, pa_cvolume_set(&cv, _this->m_sampleSpec.channels, PA_VOLUME_NORM), NULL);
|
||||
qDebug( "Connection established.\n" );
|
||||
_this->m_s = pa_stream_new( c, "lmms", &_this->m_sampleSpec, NULL);
|
||||
pa_stream_set_state_callback( _this->m_s, stream_state_callback, _this );
|
||||
pa_stream_set_write_callback( _this->m_s, stream_write_callback, _this );
|
||||
pa_stream_connect_playback( _this->m_s, NULL, NULL,
|
||||
(pa_stream_flags) 0,
|
||||
pa_cvolume_set( &cv, _this->m_sampleSpec.channels,
|
||||
PA_VOLUME_NORM ),
|
||||
NULL );
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -187,20 +185,20 @@ static void context_state_callback(pa_context *c, void *userdata)
|
||||
|
||||
case PA_CONTEXT_FAILED:
|
||||
default:
|
||||
fprintf(stderr, "Connection failure: %s\n", pa_strerror(pa_context_errno(c)));
|
||||
qCritical( "Connection failure: %s\n", pa_strerror( pa_context_errno( c ) ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void audioPulseAudio::run( void )
|
||||
void AudioPulseAudio::run()
|
||||
{
|
||||
pa_mainloop * m = NULL;
|
||||
|
||||
|
||||
if (!(m = pa_mainloop_new())) {
|
||||
fprintf(stderr, "pa_mainloop_new() failed.\n");
|
||||
qCritical( "pa_mainloop_new() failed.\n" );
|
||||
return;
|
||||
}
|
||||
pa_mainloop_api * mainloop_api = pa_mainloop_get_api(m);
|
||||
@@ -208,7 +206,7 @@ void audioPulseAudio::run( void )
|
||||
pa_context *context = pa_context_new(mainloop_api, "lmms");
|
||||
if ( context == NULL )
|
||||
{
|
||||
fprintf(stderr, "pa_context_new() failed.\n");
|
||||
qCritical( "pa_context_new() failed." );
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -220,14 +218,14 @@ void audioPulseAudio::run( void )
|
||||
/* Run the main loop */
|
||||
if (pa_mainloop_run(m, &ret) < 0)
|
||||
{
|
||||
fprintf(stderr, "pa_mainloop_run() failed.\n");
|
||||
qCritical( "pa_mainloop_run() failed.\n" );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void audioPulseAudio::streamWriteCallback(pa_stream *s, size_t length)
|
||||
void AudioPulseAudio::streamWriteCallback(pa_stream *s, size_t length)
|
||||
{
|
||||
const fpp_t fpp = getMixer()->framesPerPeriod();
|
||||
surroundSampleFrame * temp = new surroundSampleFrame[fpp];
|
||||
@@ -260,10 +258,10 @@ void audioPulseAudio::streamWriteCallback(pa_stream *s, size_t length)
|
||||
|
||||
|
||||
|
||||
audioPulseAudio::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
audioDevice::setupWidget( audioPulseAudio::name(), _parent )
|
||||
AudioPulseAudio::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
AudioDevice::setupWidget( AudioPulseAudio::name(), _parent )
|
||||
{
|
||||
m_device = new QLineEdit( audioPulseAudio::probeDevice(), this );
|
||||
m_device = new QLineEdit( AudioPulseAudio::probeDevice(), this );
|
||||
m_device->setGeometry( 10, 20, 160, 20 );
|
||||
|
||||
QLabel * dev_lbl = new QLabel( tr( "DEVICE" ), this );
|
||||
@@ -286,7 +284,7 @@ audioPulseAudio::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
|
||||
|
||||
|
||||
audioPulseAudio::setupWidget::~setupWidget()
|
||||
AudioPulseAudio::setupWidget::~setupWidget()
|
||||
{
|
||||
|
||||
}
|
||||
@@ -294,7 +292,7 @@ audioPulseAudio::setupWidget::~setupWidget()
|
||||
|
||||
|
||||
|
||||
void audioPulseAudio::setupWidget::saveSettings( void )
|
||||
void AudioPulseAudio::setupWidget::saveSettings()
|
||||
{
|
||||
configManager::inst()->setValue( "audiopa", "device",
|
||||
m_device->text() );
|
||||
@@ -305,5 +303,3 @@ void audioPulseAudio::setupWidget::saveSettings( void )
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
/*
|
||||
* audio_sample_recorder.cpp - device-class that implements recording
|
||||
* surround-audio-buffers into RAM, maybe later
|
||||
* also harddisk
|
||||
* AudioSampleRecorder.cpp - device-class that implements recording
|
||||
* audio-buffers into RAM
|
||||
*
|
||||
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2004-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -25,26 +24,25 @@
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "audio_sample_recorder.h"
|
||||
#include "AudioSampleRecorder.h"
|
||||
#include "sample_buffer.h"
|
||||
#include "debug.h"
|
||||
|
||||
|
||||
|
||||
audioSampleRecorder::audioSampleRecorder( const ch_cnt_t _channels,
|
||||
AudioSampleRecorder::AudioSampleRecorder( const ch_cnt_t _channels,
|
||||
bool & _success_ful,
|
||||
mixer * _mixer ) :
|
||||
audioDevice( _channels, _mixer ),
|
||||
AudioDevice( _channels, _mixer ),
|
||||
m_buffers()
|
||||
{
|
||||
_success_ful = TRUE;
|
||||
_success_ful = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
audioSampleRecorder::~audioSampleRecorder()
|
||||
AudioSampleRecorder::~AudioSampleRecorder()
|
||||
{
|
||||
while( !m_buffers.empty() )
|
||||
{
|
||||
@@ -56,21 +54,21 @@ audioSampleRecorder::~audioSampleRecorder()
|
||||
|
||||
|
||||
|
||||
f_cnt_t audioSampleRecorder::framesRecorded( void ) const
|
||||
f_cnt_t AudioSampleRecorder::framesRecorded() const
|
||||
{
|
||||
f_cnt_t frames = 0;
|
||||
for( bufferList::const_iterator it = m_buffers.begin();
|
||||
for( BufferList::ConstIterator it = m_buffers.begin();
|
||||
it != m_buffers.end(); ++it )
|
||||
{
|
||||
frames += ( *it ).second;
|
||||
}
|
||||
return( frames );
|
||||
return frames;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void audioSampleRecorder::createSampleBuffer( sampleBuffer * * _sample_buf )
|
||||
void AudioSampleRecorder::createSampleBuffer( sampleBuffer * * _sample_buf )
|
||||
{
|
||||
const f_cnt_t frames = framesRecorded();
|
||||
// create buffer to store all recorded buffers in
|
||||
@@ -82,7 +80,7 @@ void audioSampleRecorder::createSampleBuffer( sampleBuffer * * _sample_buf )
|
||||
assert( data != NULL );
|
||||
#endif
|
||||
// now copy all buffers into big buffer
|
||||
for( bufferList::const_iterator it = m_buffers.begin();
|
||||
for( BufferList::ConstIterator it = m_buffers.begin();
|
||||
it != m_buffers.end(); ++it )
|
||||
{
|
||||
memcpy( data_ptr, ( *it ).first, ( *it ).second *
|
||||
@@ -98,7 +96,7 @@ void audioSampleRecorder::createSampleBuffer( sampleBuffer * * _sample_buf )
|
||||
|
||||
|
||||
|
||||
void audioSampleRecorder::writeBuffer( const surroundSampleFrame * _ab,
|
||||
void AudioSampleRecorder::writeBuffer( const surroundSampleFrame * _ab,
|
||||
const fpp_t _frames, const float )
|
||||
{
|
||||
sampleFrame * buf = new sampleFrame[_frames];
|
||||
@@ -1,10 +1,8 @@
|
||||
#ifndef SINGLE_SOURCE_COMPILE
|
||||
|
||||
/*
|
||||
* audio_sdl.cpp - device-class that performs PCM-output via SDL
|
||||
* AudioSdl.cpp - device-class that performs PCM-output via SDL
|
||||
*
|
||||
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2004-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -24,9 +22,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "audio_sdl.h"
|
||||
#include "AudioSdl.h"
|
||||
|
||||
#ifdef LMMS_HAVE_SDL
|
||||
|
||||
@@ -42,14 +38,14 @@
|
||||
|
||||
|
||||
|
||||
audioSDL::audioSDL( bool & _success_ful, mixer * _mixer ) :
|
||||
audioDevice( DEFAULT_CHANNELS, _mixer ),
|
||||
AudioSdl::AudioSdl( bool & _success_ful, mixer * _mixer ) :
|
||||
AudioDevice( DEFAULT_CHANNELS, _mixer ),
|
||||
m_outBuf( new surroundSampleFrame[getMixer()->framesPerPeriod()] ),
|
||||
m_convertedBufPos( 0 ),
|
||||
m_convertEndian( false ),
|
||||
m_stopSemaphore( 1 )
|
||||
{
|
||||
_success_ful = FALSE;
|
||||
_success_ful = false;
|
||||
|
||||
m_convertedBufSize = getMixer()->framesPerPeriod() * channels()
|
||||
* sizeof( int_sample_t );
|
||||
@@ -58,7 +54,7 @@ audioSDL::audioSDL( bool & _success_ful, mixer * _mixer ) :
|
||||
|
||||
if( SDL_Init( SDL_INIT_AUDIO | SDL_INIT_NOPARACHUTE ) < 0 )
|
||||
{
|
||||
printf( "Couldn't initialize SDL: %s\n", SDL_GetError() );
|
||||
qCritical( "Couldn't initialize SDL: %s\n", SDL_GetError() );
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -77,20 +73,20 @@ audioSDL::audioSDL( bool & _success_ful, mixer * _mixer ) :
|
||||
// open the audio device, forcing the desired format
|
||||
if( SDL_OpenAudio( &m_audioHandle, &actual ) < 0 )
|
||||
{
|
||||
printf( "Couldn't open SDL-audio: %s\n", SDL_GetError() );
|
||||
qCritical( "Couldn't open SDL-audio: %s\n", SDL_GetError() );
|
||||
return;
|
||||
}
|
||||
m_convertEndian = ( m_audioHandle.format != actual.format );
|
||||
|
||||
m_stopSemaphore.acquire();
|
||||
|
||||
_success_ful = TRUE;
|
||||
_success_ful = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
audioSDL::~audioSDL()
|
||||
AudioSdl::~AudioSdl()
|
||||
{
|
||||
stopProcessing();
|
||||
m_stopSemaphore.release();
|
||||
@@ -104,7 +100,7 @@ audioSDL::~audioSDL()
|
||||
|
||||
|
||||
|
||||
void audioSDL::startProcessing( void )
|
||||
void AudioSdl::startProcessing()
|
||||
{
|
||||
m_stopped = false;
|
||||
|
||||
@@ -114,7 +110,7 @@ void audioSDL::startProcessing( void )
|
||||
|
||||
|
||||
|
||||
void audioSDL::stopProcessing( void )
|
||||
void AudioSdl::stopProcessing()
|
||||
{
|
||||
if( SDL_GetAudioStatus() == SDL_AUDIO_PLAYING )
|
||||
{
|
||||
@@ -129,7 +125,7 @@ void audioSDL::stopProcessing( void )
|
||||
|
||||
|
||||
|
||||
void audioSDL::applyQualitySettings( void )
|
||||
void AudioSdl::applyQualitySettings()
|
||||
{
|
||||
if( 0 )//hqAudio() )
|
||||
{
|
||||
@@ -144,24 +140,19 @@ void audioSDL::applyQualitySettings( void )
|
||||
// open the audio device, forcing the desired format
|
||||
if( SDL_OpenAudio( &m_audioHandle, &actual ) < 0 )
|
||||
{
|
||||
printf( "Couldn't open SDL-audio: %s\n",
|
||||
SDL_GetError() );
|
||||
qCritical( "Couldn't open SDL-audio: %s\n", SDL_GetError() );
|
||||
}
|
||||
}
|
||||
|
||||
audioDevice::applyQualitySettings();
|
||||
AudioDevice::applyQualitySettings();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void audioSDL::sdlAudioCallback( void * _udata, Uint8 * _buf, int _len )
|
||||
void AudioSdl::sdlAudioCallback( void * _udata, Uint8 * _buf, int _len )
|
||||
{
|
||||
audioSDL * _this = static_cast<audioSDL *>( _udata );
|
||||
|
||||
#ifdef LMMS_DEBUG
|
||||
assert( _this != NULL );
|
||||
#endif
|
||||
AudioSdl * _this = static_cast<AudioSdl *>( _udata );
|
||||
|
||||
_this->sdlAudioCallback( _buf, _len );
|
||||
}
|
||||
@@ -169,7 +160,7 @@ void audioSDL::sdlAudioCallback( void * _udata, Uint8 * _buf, int _len )
|
||||
|
||||
|
||||
|
||||
void audioSDL::sdlAudioCallback( Uint8 * _buf, int _len )
|
||||
void AudioSdl::sdlAudioCallback( Uint8 * _buf, int _len )
|
||||
{
|
||||
if( m_stopped )
|
||||
{
|
||||
@@ -211,8 +202,8 @@ void audioSDL::sdlAudioCallback( Uint8 * _buf, int _len )
|
||||
|
||||
|
||||
|
||||
audioSDL::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
audioDevice::setupWidget( audioSDL::name(), _parent )
|
||||
AudioSdl::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
AudioDevice::setupWidget( AudioSdl::name(), _parent )
|
||||
{
|
||||
QString dev = configManager::inst()->value( "audiosdl", "device" );
|
||||
m_device = new QLineEdit( dev, this );
|
||||
@@ -227,14 +218,14 @@ audioSDL::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
|
||||
|
||||
|
||||
audioSDL::setupWidget::~setupWidget()
|
||||
AudioSdl::setupWidget::~setupWidget()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void audioSDL::setupWidget::saveSettings( void )
|
||||
void AudioSdl::setupWidget::saveSettings()
|
||||
{
|
||||
configManager::inst()->setValue( "audiosdl", "device",
|
||||
m_device->text() );
|
||||
@@ -243,4 +234,3 @@ void audioSDL::setupWidget::saveSettings( void )
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -58,7 +58,7 @@
|
||||
#include "import_filter.h"
|
||||
#include "lmms_style.h"
|
||||
#include "main_window.h"
|
||||
#include "project_renderer.h"
|
||||
#include "ProjectRenderer.h"
|
||||
#include "song.h"
|
||||
|
||||
#warning TODO: move somewhere else
|
||||
@@ -117,9 +117,9 @@ int main( int argc, char * * argv )
|
||||
|
||||
|
||||
mixer::qualitySettings qs( mixer::qualitySettings::Mode_HighQuality );
|
||||
projectRenderer::outputSettings os( 44100, false, 160,
|
||||
projectRenderer::Depth_16Bit );
|
||||
projectRenderer::ExportFileFormats eff = projectRenderer::WaveFile;
|
||||
ProjectRenderer::OutputSettings os( 44100, false, 160,
|
||||
ProjectRenderer::Depth_16Bit );
|
||||
ProjectRenderer::ExportFileFormats eff = ProjectRenderer::WaveFile;
|
||||
|
||||
|
||||
for( int i = 1; i < argc; ++i )
|
||||
@@ -207,12 +207,12 @@ int main( int argc, char * * argv )
|
||||
const QString ext = QString( argv[i + 1] );
|
||||
if( ext == "wav" )
|
||||
{
|
||||
eff = projectRenderer::WaveFile;
|
||||
eff = ProjectRenderer::WaveFile;
|
||||
}
|
||||
#ifdef LMMS_HAVE_OGGVORBIS
|
||||
else if( ext == "ogg" )
|
||||
{
|
||||
eff = projectRenderer::OggFile;
|
||||
eff = ProjectRenderer::OggFile;
|
||||
}
|
||||
#endif
|
||||
else
|
||||
@@ -463,10 +463,10 @@ int main( int argc, char * * argv )
|
||||
if( !render_out.isEmpty() )
|
||||
{
|
||||
// create renderer
|
||||
projectRenderer * r = new projectRenderer( qs, os, eff,
|
||||
ProjectRenderer * r = new ProjectRenderer( qs, os, eff,
|
||||
render_out +
|
||||
QString( ( eff ==
|
||||
projectRenderer::WaveFile ) ?
|
||||
ProjectRenderer::WaveFile ) ?
|
||||
"wav" : "ogg" ) );
|
||||
QCoreApplication::instance()->connect( r,
|
||||
SIGNAL( finished() ), SLOT( quit() ) );
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* midi_alsa_raw.cpp - midi-client for RawMIDI via ALSA
|
||||
* MidiAlsaRaw.cpp - midi-client for RawMIDI via ALSA
|
||||
*
|
||||
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
@@ -25,7 +25,7 @@
|
||||
#include <QtGui/QLabel>
|
||||
#include <QtGui/QLineEdit>
|
||||
|
||||
#include "midi_alsa_raw.h"
|
||||
#include "MidiAlsaRaw.h"
|
||||
#include "config_mgr.h"
|
||||
#include "gui_templates.h"
|
||||
|
||||
@@ -33,11 +33,11 @@
|
||||
#ifdef LMMS_HAVE_ALSA
|
||||
|
||||
|
||||
midiALSARaw::midiALSARaw( void ) :
|
||||
midiClientRaw(),
|
||||
MidiAlsaRaw::MidiAlsaRaw() :
|
||||
MidiClientRaw(),
|
||||
m_inputp( &m_input ),
|
||||
m_outputp( &m_output ),
|
||||
m_quit( FALSE )
|
||||
m_quit( false )
|
||||
{
|
||||
int err;
|
||||
if( ( err = snd_rawmidi_open( m_inputp, m_outputp,
|
||||
@@ -61,11 +61,11 @@ midiALSARaw::midiALSARaw( void ) :
|
||||
|
||||
|
||||
|
||||
midiALSARaw::~midiALSARaw()
|
||||
MidiAlsaRaw::~MidiAlsaRaw()
|
||||
{
|
||||
if( isRunning() )
|
||||
{
|
||||
m_quit = TRUE;
|
||||
m_quit = true;
|
||||
wait( 1000 );
|
||||
terminate();
|
||||
|
||||
@@ -78,24 +78,24 @@ midiALSARaw::~midiALSARaw()
|
||||
|
||||
|
||||
|
||||
QString midiALSARaw::probeDevice( void )
|
||||
QString MidiAlsaRaw::probeDevice()
|
||||
{
|
||||
QString dev = configManager::inst()->value( "midialsaraw", "device" );
|
||||
QString dev = configManager::inst()->value( "MidiAlsaRaw", "Device" );
|
||||
if( dev == "" )
|
||||
{
|
||||
if( getenv( "MIDIDEV" ) != NULL )
|
||||
{
|
||||
return( getenv( "MIDIDEV" ) );
|
||||
return getenv( "MIDIDEV" );
|
||||
}
|
||||
return( "default" );
|
||||
return "default";
|
||||
}
|
||||
return( dev );
|
||||
return dev;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void midiALSARaw::sendByte( Uint8 _c )
|
||||
void MidiAlsaRaw::sendByte( Uint8 _c )
|
||||
{
|
||||
snd_rawmidi_write( m_output, &_c, sizeof( _c ) );
|
||||
}
|
||||
@@ -103,18 +103,18 @@ void midiALSARaw::sendByte( Uint8 _c )
|
||||
|
||||
|
||||
|
||||
void midiALSARaw::run( void )
|
||||
void MidiAlsaRaw::run()
|
||||
{
|
||||
Uint8 buf[128];
|
||||
//int cnt = 0;
|
||||
while( m_quit == FALSE )
|
||||
while( m_quit == false )
|
||||
{
|
||||
msleep( 5 ); // must do that, otherwise this thread takes
|
||||
// too much CPU-time, even with LowPriority...
|
||||
int err = poll( m_pfds, m_npfds, 10000 );
|
||||
if( err < 0 && errno == EINTR )
|
||||
{
|
||||
printf( "midiALSARaw::run(): Got EINTR while "
|
||||
printf( "MidiAlsaRaw::run(): Got EINTR while "
|
||||
"polling. Will stop polling MIDI-events from "
|
||||
"MIDI-port.\n" );
|
||||
break;
|
||||
@@ -176,10 +176,10 @@ void midiALSARaw::run( void )
|
||||
|
||||
|
||||
|
||||
midiALSARaw::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
midiClientRaw::setupWidget( midiALSARaw::name(), _parent )
|
||||
MidiAlsaRaw::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
MidiClientRaw::setupWidget( MidiAlsaRaw::name(), _parent )
|
||||
{
|
||||
m_device = new QLineEdit( midiALSARaw::probeDevice(), this );
|
||||
m_device = new QLineEdit( MidiAlsaRaw::probeDevice(), this );
|
||||
m_device->setGeometry( 10, 20, 160, 20 );
|
||||
|
||||
QLabel * dev_lbl = new QLabel( tr( "DEVICE" ), this );
|
||||
@@ -190,16 +190,16 @@ midiALSARaw::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
|
||||
|
||||
|
||||
midiALSARaw::setupWidget::~setupWidget()
|
||||
MidiAlsaRaw::setupWidget::~setupWidget()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void midiALSARaw::setupWidget::saveSettings( void )
|
||||
void MidiAlsaRaw::setupWidget::saveSettings()
|
||||
{
|
||||
configManager::inst()->setValue( "midialsaraw", "device",
|
||||
configManager::inst()->setValue( "MidiAlsaRaw", "Device",
|
||||
m_device->text() );
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* midi_alsa_seq.cpp - ALSA-sequencer-client
|
||||
* MidiAlsaSeq.cpp - ALSA sequencer client
|
||||
*
|
||||
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -22,28 +22,26 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include <QtGui/QLabel>
|
||||
#include <QtGui/QLineEdit>
|
||||
|
||||
|
||||
#include "midi_alsa_seq.h"
|
||||
#include "MidiAlsaSeq.h"
|
||||
#include "config_mgr.h"
|
||||
#include "engine.h"
|
||||
#include "gui_templates.h"
|
||||
#include "song.h"
|
||||
#include "midi_port.h"
|
||||
#include "MidiPort.h"
|
||||
#include "note.h"
|
||||
|
||||
|
||||
#ifdef LMMS_HAVE_ALSA
|
||||
|
||||
|
||||
midiALSASeq::midiALSASeq( void ) :
|
||||
midiClient(),
|
||||
MidiAlsaSeq::MidiAlsaSeq() :
|
||||
MidiClient(),
|
||||
m_seqHandle( NULL ),
|
||||
m_queueID( -1 ),
|
||||
m_quit( FALSE ),
|
||||
m_quit( false ),
|
||||
m_portListUpdateTimer( this )
|
||||
{
|
||||
int err;
|
||||
@@ -92,11 +90,11 @@ midiALSASeq::midiALSASeq( void ) :
|
||||
|
||||
|
||||
|
||||
midiALSASeq::~midiALSASeq()
|
||||
MidiAlsaSeq::~MidiAlsaSeq()
|
||||
{
|
||||
if( isRunning() )
|
||||
{
|
||||
m_quit = TRUE;
|
||||
m_quit = true;
|
||||
// wake up input queue
|
||||
if( write( m_pipe[1], "\n", 1 ) )
|
||||
/* fix warning */;
|
||||
@@ -111,31 +109,31 @@ midiALSASeq::~midiALSASeq()
|
||||
|
||||
|
||||
|
||||
QString midiALSASeq::probeDevice( void )
|
||||
QString MidiAlsaSeq::probeDevice()
|
||||
{
|
||||
QString dev = configManager::inst()->value( "midialsaseq", "device" );
|
||||
QString dev = configManager::inst()->value( "Midialsaseq", "device" );
|
||||
if( dev == "" )
|
||||
{
|
||||
if( getenv( "MIDIDEV" ) != NULL )
|
||||
{
|
||||
return( getenv( "MIDIDEV" ) );
|
||||
return getenv( "MIDIDEV" );
|
||||
}
|
||||
return( "default" );
|
||||
return "default";
|
||||
}
|
||||
return( dev );
|
||||
return dev;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void midiALSASeq::processOutEvent( const midiEvent & _me,
|
||||
void MidiAlsaSeq::processOutEvent( const midiEvent & _me,
|
||||
const midiTime & _time,
|
||||
const midiPort * _port )
|
||||
const MidiPort * _port )
|
||||
{
|
||||
// HACK!!! - need a better solution which isn't that easy since we
|
||||
// cannot store const-ptrs in our map because we need to call non-const
|
||||
// methods of MIDI-port - it's a mess...
|
||||
midiPort * p = const_cast<midiPort *>( _port );
|
||||
MidiPort * p = const_cast<MidiPort *>( _port );
|
||||
|
||||
snd_seq_event_t ev;
|
||||
snd_seq_ev_clear( &ev );
|
||||
@@ -207,23 +205,23 @@ void midiALSASeq::processOutEvent( const midiEvent & _me,
|
||||
|
||||
|
||||
|
||||
void midiALSASeq::applyPortMode( midiPort * _port )
|
||||
void MidiAlsaSeq::applyPortMode( MidiPort * _port )
|
||||
{
|
||||
// determine port-capabilities
|
||||
unsigned int caps[2] = { 0, 0 };
|
||||
|
||||
switch( _port->mode() )
|
||||
{
|
||||
case midiPort::Duplex:
|
||||
case MidiPort::Duplex:
|
||||
caps[1] |= SND_SEQ_PORT_CAP_READ |
|
||||
SND_SEQ_PORT_CAP_SUBS_READ;
|
||||
|
||||
case midiPort::Input:
|
||||
case MidiPort::Input:
|
||||
caps[0] |= SND_SEQ_PORT_CAP_WRITE |
|
||||
SND_SEQ_PORT_CAP_SUBS_WRITE;
|
||||
break;
|
||||
|
||||
case midiPort::Output:
|
||||
case MidiPort::Output:
|
||||
caps[1] |= SND_SEQ_PORT_CAP_READ |
|
||||
SND_SEQ_PORT_CAP_SUBS_READ;
|
||||
break;
|
||||
@@ -273,7 +271,7 @@ void midiALSASeq::applyPortMode( midiPort * _port )
|
||||
|
||||
|
||||
|
||||
void midiALSASeq::applyPortName( midiPort * _port )
|
||||
void MidiAlsaSeq::applyPortName( MidiPort * _port )
|
||||
{
|
||||
for( int i = 0; i < 2; ++i )
|
||||
{
|
||||
@@ -296,7 +294,7 @@ void midiALSASeq::applyPortName( midiPort * _port )
|
||||
|
||||
|
||||
|
||||
void midiALSASeq::removePort( midiPort * _port )
|
||||
void MidiAlsaSeq::removePort( MidiPort * _port )
|
||||
{
|
||||
if( m_portIDs.contains( _port ) )
|
||||
{
|
||||
@@ -304,13 +302,13 @@ void midiALSASeq::removePort( midiPort * _port )
|
||||
snd_seq_delete_simple_port( m_seqHandle, m_portIDs[_port][1] );
|
||||
m_portIDs.remove( _port );
|
||||
}
|
||||
midiClient::removePort( _port );
|
||||
MidiClient::removePort( _port );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void midiALSASeq::subscribeReadablePort( midiPort * _port,
|
||||
void MidiAlsaSeq::subscribeReadablePort( MidiPort * _port,
|
||||
const QString & _dest,
|
||||
bool _subscribe )
|
||||
{
|
||||
@@ -348,7 +346,7 @@ void midiALSASeq::subscribeReadablePort( midiPort * _port,
|
||||
|
||||
|
||||
|
||||
void midiALSASeq::subscribeWritablePort( midiPort * _port,
|
||||
void MidiAlsaSeq::subscribeWritablePort( MidiPort * _port,
|
||||
const QString & _dest,
|
||||
bool _subscribe )
|
||||
{
|
||||
@@ -393,7 +391,7 @@ void midiALSASeq::subscribeWritablePort( midiPort * _port,
|
||||
|
||||
|
||||
|
||||
void midiALSASeq::run( void )
|
||||
void MidiAlsaSeq::run()
|
||||
{
|
||||
// watch the pipe and sequencer input events
|
||||
int pollfd_count = snd_seq_poll_descriptors_count( m_seqHandle,
|
||||
@@ -405,7 +403,7 @@ void midiALSASeq::run( void )
|
||||
pollfd_set[0].events = POLLIN;
|
||||
++pollfd_count;
|
||||
|
||||
while( m_quit == FALSE )
|
||||
while( m_quit == false )
|
||||
{
|
||||
if( poll( pollfd_set, pollfd_count, -1 ) == -1 )
|
||||
{
|
||||
@@ -428,7 +426,7 @@ void midiALSASeq::run( void )
|
||||
snd_seq_event_t * ev;
|
||||
snd_seq_event_input( m_seqHandle, &ev );
|
||||
|
||||
midiPort * dest = NULL;
|
||||
MidiPort * dest = NULL;
|
||||
for( int i = 0; i < m_portIDs.size(); ++i )
|
||||
{
|
||||
if( m_portIDs.values()[i][0] == ev->dest.port )
|
||||
@@ -529,7 +527,7 @@ void midiALSASeq::run( void )
|
||||
|
||||
|
||||
|
||||
void midiALSASeq::changeQueueTempo( bpm_t _bpm )
|
||||
void MidiAlsaSeq::changeQueueTempo( bpm_t _bpm )
|
||||
{
|
||||
snd_seq_change_queue_tempo( m_seqHandle, m_queueID,
|
||||
60000000 / (int) _bpm, NULL );
|
||||
@@ -539,7 +537,7 @@ void midiALSASeq::changeQueueTempo( bpm_t _bpm )
|
||||
|
||||
|
||||
|
||||
void midiALSASeq::updatePortList( void )
|
||||
void MidiAlsaSeq::updatePortList()
|
||||
{
|
||||
QStringList readable_ports;
|
||||
QStringList writable_ports;
|
||||
@@ -620,10 +618,10 @@ void midiALSASeq::updatePortList( void )
|
||||
|
||||
|
||||
|
||||
midiALSASeq::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
midiClient::setupWidget( midiALSASeq::name(), _parent )
|
||||
MidiAlsaSeq::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
MidiClient::setupWidget( MidiAlsaSeq::name(), _parent )
|
||||
{
|
||||
m_device = new QLineEdit( midiALSASeq::probeDevice(), this );
|
||||
m_device = new QLineEdit( MidiAlsaSeq::probeDevice(), this );
|
||||
m_device->setGeometry( 10, 20, 160, 20 );
|
||||
|
||||
QLabel * dev_lbl = new QLabel( tr( "DEVICE" ), this );
|
||||
@@ -634,21 +632,21 @@ midiALSASeq::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
|
||||
|
||||
|
||||
midiALSASeq::setupWidget::~setupWidget()
|
||||
MidiAlsaSeq::setupWidget::~setupWidget()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void midiALSASeq::setupWidget::saveSettings( void )
|
||||
void MidiAlsaSeq::setupWidget::saveSettings()
|
||||
{
|
||||
configManager::inst()->setValue( "midialsaseq", "device",
|
||||
configManager::inst()->setValue( "Midialsaseq", "device",
|
||||
m_device->text() );
|
||||
}
|
||||
|
||||
|
||||
#include "moc_midi_alsa_seq.cxx"
|
||||
#include "moc_MidiAlsaSeq.cxx"
|
||||
|
||||
|
||||
#endif
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* midi_client.cpp - base-class for MIDI-clients like ALSA-sequencer-client
|
||||
* MidiClient.cpp - base-class for MIDI-clients like ALSA-sequencer-client
|
||||
*
|
||||
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
* This file partly contains code from Fluidsynth, Peter Hanappe
|
||||
@@ -23,25 +23,20 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include <cstdio>
|
||||
|
||||
#include "midi_client.h"
|
||||
#include "MidiClient.h"
|
||||
#include "MidiPort.h"
|
||||
#include "templates.h"
|
||||
#include "midi_port.h"
|
||||
#include "note.h"
|
||||
|
||||
|
||||
|
||||
|
||||
midiClient::midiClient( void )
|
||||
MidiClient::MidiClient()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
midiClient::~midiClient()
|
||||
MidiClient::~MidiClient()
|
||||
{
|
||||
//TODO: noteOffAll(); / clear all ports
|
||||
}
|
||||
@@ -49,21 +44,21 @@ midiClient::~midiClient()
|
||||
|
||||
|
||||
|
||||
void midiClient::applyPortMode( midiPort * )
|
||||
void MidiClient::applyPortMode( MidiPort * )
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void midiClient::applyPortName( midiPort * )
|
||||
void MidiClient::applyPortName( MidiPort * )
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void midiClient::addPort( midiPort * _port )
|
||||
void MidiClient::addPort( MidiPort * _port )
|
||||
{
|
||||
m_midiPorts.push_back( _port );
|
||||
}
|
||||
@@ -71,11 +66,10 @@ void midiClient::addPort( midiPort * _port )
|
||||
|
||||
|
||||
|
||||
void midiClient::removePort( midiPort * _port )
|
||||
void MidiClient::removePort( MidiPort * _port )
|
||||
{
|
||||
QVector<midiPort *>::iterator it = qFind( m_midiPorts.begin(),
|
||||
m_midiPorts.end(),
|
||||
_port );
|
||||
QVector<MidiPort *>::Iterator it =
|
||||
qFind( m_midiPorts.begin(), m_midiPorts.end(), _port );
|
||||
if( it != m_midiPorts.end() )
|
||||
{
|
||||
m_midiPorts.erase( it );
|
||||
@@ -85,14 +79,14 @@ void midiClient::removePort( midiPort * _port )
|
||||
|
||||
|
||||
|
||||
void midiClient::subscribeReadablePort( midiPort *, const QString & , bool )
|
||||
void MidiClient::subscribeReadablePort( MidiPort *, const QString & , bool )
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void midiClient::subscribeWritablePort( midiPort * , const QString & , bool )
|
||||
void MidiClient::subscribeWritablePort( MidiPort * , const QString & , bool )
|
||||
{
|
||||
}
|
||||
|
||||
@@ -102,21 +96,21 @@ void midiClient::subscribeWritablePort( midiPort * , const QString & , bool )
|
||||
|
||||
|
||||
|
||||
midiClientRaw::midiClientRaw( void )
|
||||
MidiClientRaw::MidiClientRaw()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
midiClientRaw::~midiClientRaw()
|
||||
MidiClientRaw::~MidiClientRaw()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void midiClientRaw::parseData( const Uint8 _c )
|
||||
void MidiClientRaw::parseData( const Uint8 _c )
|
||||
{
|
||||
/*********************************************************************/
|
||||
/* 'Process' system real-time messages */
|
||||
@@ -255,7 +249,7 @@ void midiClientRaw::parseData( const Uint8 _c )
|
||||
|
||||
|
||||
|
||||
void midiClientRaw::processParsedEvent()
|
||||
void MidiClientRaw::processParsedEvent()
|
||||
{
|
||||
for( int i = 0; i < m_midiPorts.size(); ++i )
|
||||
{
|
||||
@@ -267,9 +261,9 @@ void midiClientRaw::processParsedEvent()
|
||||
|
||||
|
||||
|
||||
void midiClientRaw::processOutEvent( const midiEvent & _me,
|
||||
void MidiClientRaw::processOutEvent( const midiEvent & _me,
|
||||
const midiTime & ,
|
||||
const midiPort * _port )
|
||||
const MidiPort * _port )
|
||||
{
|
||||
// TODO: also evaluate _time and queue event if neccessary
|
||||
switch( _me.m_type )
|
||||
@@ -284,7 +278,7 @@ void midiClientRaw::processOutEvent( const midiEvent & _me,
|
||||
break;
|
||||
|
||||
default:
|
||||
fprintf( stderr, "midiClientRaw: unhandled MIDI-event %d\n",
|
||||
qWarning( "MidiClientRaw: unhandled MIDI-event %d\n",
|
||||
(int) _me.m_type );
|
||||
break;
|
||||
}
|
||||
@@ -296,7 +290,7 @@ void midiClientRaw::processOutEvent( const midiEvent & _me,
|
||||
|
||||
|
||||
// Taken from Nagano Daisuke's USB-MIDI driver
|
||||
const Uint8 REMAINS_F0F6[] =
|
||||
static const Uint8 REMAINS_F0F6[] =
|
||||
{
|
||||
0, /* 0xF0 */
|
||||
2, /* 0XF1 */
|
||||
@@ -307,7 +301,7 @@ const Uint8 REMAINS_F0F6[] =
|
||||
1 /* 0XF6 */
|
||||
} ;
|
||||
|
||||
const Uint8 REMAINS_80E0[] =
|
||||
static const Uint8 REMAINS_80E0[] =
|
||||
{
|
||||
3, /* 0x8X Note Off */
|
||||
3, /* 0x9X Note On */
|
||||
@@ -322,17 +316,17 @@ const Uint8 REMAINS_80E0[] =
|
||||
|
||||
// Returns the length of the MIDI message starting with _event.
|
||||
// Taken from Nagano Daisuke's USB-MIDI driver
|
||||
Uint8 midiClientRaw::eventLength( const Uint8 _event )
|
||||
Uint8 MidiClientRaw::eventLength( const Uint8 _event )
|
||||
{
|
||||
if ( _event < 0xF0 )
|
||||
{
|
||||
return( REMAINS_80E0[( ( _event - 0x80 ) >> 4 ) & 0x0F] );
|
||||
return REMAINS_80E0[( ( _event - 0x80 ) >> 4 ) & 0x0F];
|
||||
}
|
||||
else if ( _event < 0xF7 )
|
||||
{
|
||||
return( REMAINS_F0F6[_event - 0xF0] );
|
||||
return REMAINS_F0F6[_event - 0xF0];
|
||||
}
|
||||
return( 1 );
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -27,11 +27,10 @@
|
||||
#include <QtCore/QObject>
|
||||
#include <QtCore/QVector>
|
||||
|
||||
|
||||
#include "song.h"
|
||||
#include "engine.h"
|
||||
#include "mixer.h"
|
||||
#include "midi_client.h"
|
||||
#include "MidiClient.h"
|
||||
#include "MidiController.h"
|
||||
|
||||
|
||||
@@ -39,8 +38,7 @@ MidiController::MidiController( model * _parent ) :
|
||||
Controller( Controller::MidiController, _parent, tr( "MIDI Controller" ) ),
|
||||
MidiEventProcessor(),
|
||||
m_midiPort( tr( "unnamed_midi_controller" ),
|
||||
engine::getMixer()->getMidiClient(), this, this,
|
||||
midiPort::Input ),
|
||||
engine::getMixer()->midiClient(), this, this, MidiPort::Input ),
|
||||
m_lastValue( 0.0f )
|
||||
{
|
||||
connect( &m_midiPort, SIGNAL( modeChanged() ),
|
||||
@@ -105,9 +103,9 @@ void MidiController::processInEvent( const midiEvent & _me,
|
||||
|
||||
|
||||
|
||||
void MidiController::subscribeReadablePorts( const midiPort::map & _map )
|
||||
void MidiController::subscribeReadablePorts( const MidiPort::Map & _map )
|
||||
{
|
||||
for( midiPort::map::const_iterator it = _map.constBegin();
|
||||
for( MidiPort::Map::ConstIterator it = _map.constBegin();
|
||||
it != _map.constEnd(); ++it )
|
||||
{
|
||||
m_midiPort.subscribeReadablePort( it.key(), *it );
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* midi_oss.cpp - OSS-raw-midi-client
|
||||
* MidiOss.cpp - OSS raw MIDI client
|
||||
*
|
||||
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2005-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -23,7 +23,7 @@
|
||||
*/
|
||||
|
||||
|
||||
#include "midi_oss.h"
|
||||
#include "MidiOss.h"
|
||||
|
||||
#ifdef LMMS_HAVE_OSS
|
||||
|
||||
@@ -42,13 +42,13 @@
|
||||
|
||||
|
||||
|
||||
midiOSS::midiOSS( void ) :
|
||||
midiClientRaw(),
|
||||
MidiOss::MidiOss() :
|
||||
MidiClientRaw(),
|
||||
m_midiDev( probeDevice() ),
|
||||
m_quit( FALSE )
|
||||
m_quit( false )
|
||||
{
|
||||
// only start thread, if opening of MIDI-device is successful,
|
||||
// otherwise isRunning()==FALSE indicates error
|
||||
// otherwise isRunning()==false indicates error
|
||||
if( m_midiDev.open( QIODevice::ReadWrite ) ||
|
||||
m_midiDev.open( QIODevice::ReadOnly ) )
|
||||
{
|
||||
@@ -59,11 +59,11 @@ midiOSS::midiOSS( void ) :
|
||||
|
||||
|
||||
|
||||
midiOSS::~midiOSS()
|
||||
MidiOss::~MidiOss()
|
||||
{
|
||||
if( isRunning() )
|
||||
{
|
||||
m_quit = TRUE;
|
||||
m_quit = true;
|
||||
wait( 1000 );
|
||||
terminate();
|
||||
}
|
||||
@@ -72,24 +72,24 @@ midiOSS::~midiOSS()
|
||||
|
||||
|
||||
|
||||
QString midiOSS::probeDevice( void )
|
||||
QString MidiOss::probeDevice()
|
||||
{
|
||||
QString dev = configManager::inst()->value( "midioss", "device" );
|
||||
if( dev == "" )
|
||||
if( dev.isEmpty() )
|
||||
{
|
||||
if( getenv( "MIDIDEV" ) != NULL )
|
||||
{
|
||||
return( getenv( "MIDIDEV" ) );
|
||||
return getenv( "MIDIDEV" );
|
||||
}
|
||||
return( "/dev/midi" );
|
||||
return "/dev/midi";
|
||||
}
|
||||
return( dev );
|
||||
return dev;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void midiOSS::sendByte( const Uint8 _c )
|
||||
void MidiOss::sendByte( const Uint8 _c )
|
||||
{
|
||||
m_midiDev.putChar( _c );
|
||||
}
|
||||
@@ -97,9 +97,9 @@ void midiOSS::sendByte( const Uint8 _c )
|
||||
|
||||
|
||||
|
||||
void midiOSS::run( void )
|
||||
void MidiOss::run()
|
||||
{
|
||||
while( m_quit == FALSE && m_midiDev.isOpen() )
|
||||
while( m_quit == false && m_midiDev.isOpen() )
|
||||
{
|
||||
char c;
|
||||
if( !m_midiDev.getChar( &c ) )
|
||||
@@ -114,10 +114,10 @@ void midiOSS::run( void )
|
||||
|
||||
|
||||
|
||||
midiOSS::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
midiClientRaw::setupWidget( midiOSS::name(), _parent )
|
||||
MidiOss::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
MidiClientRaw::setupWidget( MidiOss::name(), _parent )
|
||||
{
|
||||
m_device = new QLineEdit( midiOSS::probeDevice(), this );
|
||||
m_device = new QLineEdit( MidiOss::probeDevice(), this );
|
||||
m_device->setGeometry( 10, 20, 160, 20 );
|
||||
|
||||
QLabel * dev_lbl = new QLabel( tr( "DEVICE" ), this );
|
||||
@@ -128,14 +128,14 @@ midiOSS::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
|
||||
|
||||
|
||||
midiOSS::setupWidget::~setupWidget()
|
||||
MidiOss::setupWidget::~setupWidget()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void midiOSS::setupWidget::saveSettings( void )
|
||||
void MidiOss::setupWidget::saveSettings()
|
||||
{
|
||||
configManager::inst()->setValue( "midioss", "device",
|
||||
m_device->text() );
|
||||
@@ -1,9 +1,9 @@
|
||||
/*
|
||||
* midi_port.cpp - abstraction of MIDI-ports which are part of LMMS's MIDI-
|
||||
* sequencing system
|
||||
* MidiPort.cpp - abstraction of MIDI-ports which are part of LMMS's MIDI-
|
||||
* sequencing system
|
||||
*
|
||||
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -23,16 +23,15 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include <QtXml/QDomElement>
|
||||
|
||||
#include "midi_port.h"
|
||||
#include "midi_client.h"
|
||||
#include "MidiPort.h"
|
||||
#include "MidiClient.h"
|
||||
#include "song.h"
|
||||
|
||||
|
||||
|
||||
midiPort::midiPort( const QString & _name, midiClient * _mc,
|
||||
MidiPort::MidiPort( const QString & _name, MidiClient * _mc,
|
||||
MidiEventProcessor * _mep, model * _parent,
|
||||
Modes _mode ) :
|
||||
model( _parent ),
|
||||
@@ -91,7 +90,7 @@ midiPort::midiPort( const QString & _name, midiClient * _mc,
|
||||
|
||||
|
||||
|
||||
midiPort::~midiPort()
|
||||
MidiPort::~MidiPort()
|
||||
{
|
||||
// unsubscribe ports
|
||||
m_readableModel.setValue( false );
|
||||
@@ -104,7 +103,7 @@ midiPort::~midiPort()
|
||||
|
||||
|
||||
|
||||
void midiPort::setName( const QString & _name )
|
||||
void MidiPort::setName( const QString & _name )
|
||||
{
|
||||
setDisplayName( _name );
|
||||
m_midiClient->applyPortName( this );
|
||||
@@ -113,7 +112,7 @@ void midiPort::setName( const QString & _name )
|
||||
|
||||
|
||||
|
||||
void midiPort::setMode( Modes _mode )
|
||||
void MidiPort::setMode( Modes _mode )
|
||||
{
|
||||
m_mode = _mode;
|
||||
m_midiClient->applyPortMode( this );
|
||||
@@ -122,7 +121,7 @@ void midiPort::setMode( Modes _mode )
|
||||
|
||||
|
||||
|
||||
void midiPort::processInEvent( const midiEvent & _me, const midiTime & _time )
|
||||
void MidiPort::processInEvent( const midiEvent & _me, const midiTime & _time )
|
||||
{
|
||||
// mask event
|
||||
if( inputEnabled() &&
|
||||
@@ -149,7 +148,7 @@ void midiPort::processInEvent( const midiEvent & _me, const midiTime & _time )
|
||||
|
||||
|
||||
|
||||
void midiPort::processOutEvent( const midiEvent & _me, const midiTime & _time )
|
||||
void MidiPort::processOutEvent( const midiEvent & _me, const midiTime & _time )
|
||||
{
|
||||
// mask event
|
||||
if( outputEnabled() && realOutputChannel() == _me.m_channel )
|
||||
@@ -174,7 +173,7 @@ void midiPort::processOutEvent( const midiEvent & _me, const midiTime & _time )
|
||||
|
||||
|
||||
|
||||
void midiPort::saveSettings( QDomDocument & _doc, QDomElement & _this )
|
||||
void MidiPort::saveSettings( QDomDocument & _doc, QDomElement & _this )
|
||||
{
|
||||
m_inputChannelModel.saveSettings( _doc, _this, "inputchannel" );
|
||||
m_outputChannelModel.saveSettings( _doc, _this, "outputchannel" );
|
||||
@@ -191,7 +190,7 @@ void midiPort::saveSettings( QDomDocument & _doc, QDomElement & _this )
|
||||
if( inputEnabled() )
|
||||
{
|
||||
QString rp;
|
||||
for( midiPort::map::iterator it = m_readablePorts.begin();
|
||||
for( Map::ConstIterator it = m_readablePorts.begin();
|
||||
it != m_readablePorts.end(); ++it )
|
||||
{
|
||||
if( it.value() )
|
||||
@@ -210,7 +209,7 @@ void midiPort::saveSettings( QDomDocument & _doc, QDomElement & _this )
|
||||
if( outputEnabled() )
|
||||
{
|
||||
QString wp;
|
||||
for( map::const_iterator it = m_writablePorts.begin();
|
||||
for( Map::ConstIterator it = m_writablePorts.begin();
|
||||
it != m_writablePorts.end(); ++it )
|
||||
{
|
||||
if( it.value() )
|
||||
@@ -230,7 +229,7 @@ void midiPort::saveSettings( QDomDocument & _doc, QDomElement & _this )
|
||||
|
||||
|
||||
|
||||
void midiPort::loadSettings( const QDomElement & _this )
|
||||
void MidiPort::loadSettings( const QDomElement & _this )
|
||||
{
|
||||
m_inputChannelModel.loadSettings( _this, "inputchannel" );
|
||||
m_outputChannelModel.loadSettings( _this, "outputchannel" );
|
||||
@@ -247,7 +246,7 @@ void midiPort::loadSettings( const QDomElement & _this )
|
||||
if( inputEnabled() )
|
||||
{
|
||||
QStringList rp = _this.attribute( "inports" ).split( ',' );
|
||||
for( map::const_iterator it = m_readablePorts.begin();
|
||||
for( Map::ConstIterator it = m_readablePorts.begin();
|
||||
it != m_readablePorts.end(); ++it )
|
||||
{
|
||||
if( it.value() != ( rp.indexOf( it.key() ) != -1 ) )
|
||||
@@ -261,7 +260,7 @@ void midiPort::loadSettings( const QDomElement & _this )
|
||||
if( outputEnabled() )
|
||||
{
|
||||
QStringList wp = _this.attribute( "outports" ).split( ',' );
|
||||
for( map::const_iterator it = m_writablePorts.begin();
|
||||
for( Map::ConstIterator it = m_writablePorts.begin();
|
||||
it != m_writablePorts.end(); ++it )
|
||||
{
|
||||
if( it.value() != ( wp.indexOf( it.key() ) != -1 ) )
|
||||
@@ -276,7 +275,7 @@ void midiPort::loadSettings( const QDomElement & _this )
|
||||
|
||||
|
||||
|
||||
void midiPort::subscribeReadablePort( const QString & _port, bool _subscribe )
|
||||
void MidiPort::subscribeReadablePort( const QString & _port, bool _subscribe )
|
||||
{
|
||||
m_readablePorts[_port] = _subscribe;
|
||||
// make sure, MIDI-port is configured for input
|
||||
@@ -290,7 +289,7 @@ void midiPort::subscribeReadablePort( const QString & _port, bool _subscribe )
|
||||
|
||||
|
||||
|
||||
void midiPort::subscribeWritablePort( const QString & _port, bool _subscribe )
|
||||
void MidiPort::subscribeWritablePort( const QString & _port, bool _subscribe )
|
||||
{
|
||||
m_writablePorts[_port] = _subscribe;
|
||||
// make sure, MIDI-port is configured for output
|
||||
@@ -304,7 +303,7 @@ void midiPort::subscribeWritablePort( const QString & _port, bool _subscribe )
|
||||
|
||||
|
||||
|
||||
void midiPort::updateMidiPortMode( void )
|
||||
void MidiPort::updateMidiPortMode( void )
|
||||
{
|
||||
// this small lookup-table makes everything easier
|
||||
static const Modes modeTable[2][2] =
|
||||
@@ -317,7 +316,7 @@ void midiPort::updateMidiPortMode( void )
|
||||
// check whether we have to dis-check items in connection-menu
|
||||
if( !inputEnabled() )
|
||||
{
|
||||
for( map::const_iterator it = m_readablePorts.begin();
|
||||
for( Map::ConstIterator it = m_readablePorts.begin();
|
||||
it != m_readablePorts.end(); ++it )
|
||||
{
|
||||
// subscribed?
|
||||
@@ -330,7 +329,7 @@ void midiPort::updateMidiPortMode( void )
|
||||
|
||||
if( !outputEnabled() )
|
||||
{
|
||||
for( map::const_iterator it = m_writablePorts.begin();
|
||||
for( Map::ConstIterator it = m_writablePorts.begin();
|
||||
it != m_writablePorts.end(); ++it )
|
||||
{
|
||||
// subscribed?
|
||||
@@ -351,11 +350,11 @@ void midiPort::updateMidiPortMode( void )
|
||||
|
||||
|
||||
|
||||
void midiPort::updateReadablePorts( void )
|
||||
void MidiPort::updateReadablePorts( void )
|
||||
{
|
||||
// first save all selected ports
|
||||
QStringList selected_ports;
|
||||
for( midiPort::map::iterator it = m_readablePorts.begin();
|
||||
for( Map::ConstIterator it = m_readablePorts.begin();
|
||||
it != m_readablePorts.end(); ++it )
|
||||
{
|
||||
if( it.value() == true )
|
||||
@@ -367,7 +366,7 @@ void midiPort::updateReadablePorts( void )
|
||||
m_readablePorts.clear();
|
||||
const QStringList & wp = m_midiClient->readablePorts();
|
||||
// now insert new ports and restore selections
|
||||
for( QStringList::const_iterator it = wp.begin(); it != wp.end(); ++it )
|
||||
for( QStringList::ConstIterator it = wp.begin(); it != wp.end(); ++it )
|
||||
{
|
||||
m_readablePorts[*it] = ( selected_ports.indexOf( *it ) != -1 );
|
||||
}
|
||||
@@ -377,11 +376,11 @@ void midiPort::updateReadablePorts( void )
|
||||
|
||||
|
||||
|
||||
void midiPort::updateWritablePorts( void )
|
||||
void MidiPort::updateWritablePorts( void )
|
||||
{
|
||||
// first save all selected ports
|
||||
QStringList selected_ports;
|
||||
for( midiPort::map::iterator it = m_writablePorts.begin();
|
||||
for( Map::ConstIterator it = m_writablePorts.begin();
|
||||
it != m_writablePorts.end(); ++it )
|
||||
{
|
||||
if( it.value() == true )
|
||||
@@ -393,7 +392,7 @@ void midiPort::updateWritablePorts( void )
|
||||
m_writablePorts.clear();
|
||||
const QStringList & wp = m_midiClient->writablePorts();
|
||||
// now insert new ports and restore selections
|
||||
for( QStringList::const_iterator it = wp.begin(); it != wp.end(); ++it )
|
||||
for( QStringList::ConstIterator it = wp.begin(); it != wp.end(); ++it )
|
||||
{
|
||||
m_writablePorts[*it] = ( selected_ports.indexOf( *it ) != -1 );
|
||||
}
|
||||
@@ -403,7 +402,7 @@ void midiPort::updateWritablePorts( void )
|
||||
|
||||
|
||||
|
||||
void midiPort::updateOutputProgram( void )
|
||||
void MidiPort::updateOutputProgram( void )
|
||||
{
|
||||
processOutEvent( midiEvent( MidiProgramChange,
|
||||
realOutputChannel(),
|
||||
@@ -412,5 +411,5 @@ void midiPort::updateOutputProgram( void )
|
||||
|
||||
|
||||
|
||||
#include "moc_midi_port.cxx"
|
||||
#include "moc_MidiPort.cxx"
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* midi_winmm.cpp - WinMM MIDI client
|
||||
* MidiWinMM.cpp - WinMM MIDI client
|
||||
*
|
||||
* Copyright (c) 2008-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -22,24 +22,22 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include <QtGui/QLabel>
|
||||
#include <QtGui/QLineEdit>
|
||||
|
||||
|
||||
#include "midi_winmm.h"
|
||||
#include "MidiWinMM.h"
|
||||
#include "config_mgr.h"
|
||||
#include "engine.h"
|
||||
#include "gui_templates.h"
|
||||
#include "midi_port.h"
|
||||
#include "MidiPort.h"
|
||||
#include "note.h"
|
||||
|
||||
|
||||
#ifdef LMMS_BUILD_WIN32
|
||||
|
||||
|
||||
midiWinMM::midiWinMM( void ) :
|
||||
midiClient(),
|
||||
MidiWinMM::MidiWinMM() :
|
||||
MidiClient(),
|
||||
m_inputDevices(),
|
||||
m_outputDevices(),
|
||||
m_inputSubs(),
|
||||
@@ -51,7 +49,7 @@ midiWinMM::midiWinMM( void ) :
|
||||
|
||||
|
||||
|
||||
midiWinMM::~midiWinMM()
|
||||
MidiWinMM::~MidiWinMM()
|
||||
{
|
||||
closeDevices();
|
||||
}
|
||||
@@ -59,19 +57,19 @@ midiWinMM::~midiWinMM()
|
||||
|
||||
|
||||
|
||||
void midiWinMM::processOutEvent( const midiEvent & _me,
|
||||
void MidiWinMM::processOutEvent( const midiEvent & _me,
|
||||
const midiTime & _time,
|
||||
const midiPort * _port )
|
||||
const MidiPort * _port )
|
||||
{
|
||||
const DWORD short_msg = ( _me.m_type + _me.channel() ) +
|
||||
( ( _me.m_data.m_param[0] & 0xff ) << 8 ) +
|
||||
( ( _me.m_data.m_param[1] & 0xff ) << 16 );
|
||||
|
||||
QStringList out_devs;
|
||||
for( subMap::iterator it = m_outputSubs.begin();
|
||||
for( SubMap::ConstIterator it = m_outputSubs.begin();
|
||||
it != m_outputSubs.end(); ++it )
|
||||
{
|
||||
for( midiPortList::iterator jt = it.value().begin();
|
||||
for( MidiPortList::ConstIterator jt = it.value().begin();
|
||||
jt != it.value().end(); ++jt )
|
||||
{
|
||||
if( *jt == _port )
|
||||
@@ -82,7 +80,7 @@ void midiWinMM::processOutEvent( const midiEvent & _me,
|
||||
}
|
||||
}
|
||||
|
||||
for( QMap<HMIDIOUT, QString>::iterator it = m_outputDevices.begin();
|
||||
for( QMap<HMIDIOUT, QString>::Iterator it = m_outputDevices.begin();
|
||||
it != m_outputDevices.end(); ++it )
|
||||
{
|
||||
if( out_devs.contains( *it ) )
|
||||
@@ -95,13 +93,13 @@ void midiWinMM::processOutEvent( const midiEvent & _me,
|
||||
|
||||
|
||||
|
||||
void midiWinMM::applyPortMode( midiPort * _port )
|
||||
void MidiWinMM::applyPortMode( MidiPort * _port )
|
||||
{
|
||||
// make sure no subscriptions exist which are not possible with
|
||||
// current port-mode
|
||||
if( !_port->inputEnabled() )
|
||||
{
|
||||
for( subMap::iterator it = m_inputSubs.begin();
|
||||
for( SubMap::Iterator it = m_inputSubs.begin();
|
||||
it != m_inputSubs.end(); ++it )
|
||||
{
|
||||
it.value().removeAll( _port );
|
||||
@@ -110,7 +108,7 @@ void midiWinMM::applyPortMode( midiPort * _port )
|
||||
|
||||
if( !_port->outputEnabled() )
|
||||
{
|
||||
for( subMap::iterator it = m_outputSubs.begin();
|
||||
for( SubMap::Iterator it = m_outputSubs.begin();
|
||||
it != m_outputSubs.end(); ++it )
|
||||
{
|
||||
it.value().removeAll( _port );
|
||||
@@ -121,29 +119,29 @@ void midiWinMM::applyPortMode( midiPort * _port )
|
||||
|
||||
|
||||
|
||||
void midiWinMM::removePort( midiPort * _port )
|
||||
void MidiWinMM::removePort( MidiPort * _port )
|
||||
{
|
||||
for( subMap::iterator it = m_inputSubs.begin();
|
||||
for( SubMap::Iterator it = m_inputSubs.begin();
|
||||
it != m_inputSubs.end(); ++it )
|
||||
{
|
||||
it.value().removeAll( _port );
|
||||
}
|
||||
for( subMap::iterator it = m_outputSubs.begin();
|
||||
for( SubMap::Iterator it = m_outputSubs.begin();
|
||||
it != m_outputSubs.end(); ++it )
|
||||
{
|
||||
it.value().removeAll( _port );
|
||||
}
|
||||
midiClient::removePort( _port );
|
||||
MidiClient::removePort( _port );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void midiWinMM::subscribeReadablePort( midiPort * _port,
|
||||
void MidiWinMM::subscribeReadablePort( MidiPort * _port,
|
||||
const QString & _dest,
|
||||
bool _subscribe )
|
||||
{
|
||||
if( _subscribe && _port->inputEnabled() == FALSE )
|
||||
if( _subscribe && _port->inputEnabled() == false )
|
||||
{
|
||||
qWarning( "port %s can't be (un)subscribed!\n",
|
||||
_port->displayName().toAscii().constData() );
|
||||
@@ -160,11 +158,11 @@ void midiWinMM::subscribeReadablePort( midiPort * _port,
|
||||
|
||||
|
||||
|
||||
void midiWinMM::subscribeWritablePort( midiPort * _port,
|
||||
void MidiWinMM::subscribeWritablePort( MidiPort * _port,
|
||||
const QString & _dest,
|
||||
bool _subscribe )
|
||||
{
|
||||
if( _subscribe && _port->outputEnabled() == FALSE )
|
||||
if( _subscribe && _port->outputEnabled() == false )
|
||||
{
|
||||
qWarning( "port %s can't be (un)subscribed!\n",
|
||||
_port->displayName().toAscii().constData() );
|
||||
@@ -181,19 +179,19 @@ void midiWinMM::subscribeWritablePort( midiPort * _port,
|
||||
|
||||
|
||||
|
||||
void WINAPI CALLBACK midiWinMM::inputCallback( HMIDIIN _hm, UINT _msg, DWORD_PTR _inst,
|
||||
void WINAPI CALLBACK MidiWinMM::inputCallback( HMIDIIN _hm, UINT _msg, DWORD_PTR _inst,
|
||||
DWORD_PTR _param1, DWORD_PTR _param2 )
|
||||
{
|
||||
if( _msg == MIM_DATA )
|
||||
{
|
||||
( (midiWinMM *) _inst )->handleInputEvent( _hm, _param1 );
|
||||
( (MidiWinMM *) _inst )->handleInputEvent( _hm, _param1 );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void midiWinMM::handleInputEvent( HMIDIIN _hm, DWORD _ev )
|
||||
void MidiWinMM::handleInputEvent( HMIDIIN _hm, DWORD _ev )
|
||||
{
|
||||
const int cmd = _ev & 0xff;
|
||||
if( cmd == MidiActiveSensing )
|
||||
@@ -212,8 +210,8 @@ void midiWinMM::handleInputEvent( HMIDIIN _hm, DWORD _ev )
|
||||
return;
|
||||
}
|
||||
|
||||
const midiPortList & l = m_inputSubs[d];
|
||||
for( midiPortList::const_iterator it = l.begin(); it != l.end(); ++it )
|
||||
const MidiPortList & l = m_inputSubs[d];
|
||||
for( MidiPortList::ConstIterator it = l.begin(); it != l.end(); ++it )
|
||||
{
|
||||
switch( cmdtype )
|
||||
{
|
||||
@@ -234,7 +232,6 @@ void midiWinMM::handleInputEvent( HMIDIIN _hm, DWORD _ev )
|
||||
midiEvent( cmdtype, chan, par1,
|
||||
par2 & 0xff ),
|
||||
midiTime() );
|
||||
|
||||
break;
|
||||
|
||||
case MidiPitchBend:
|
||||
@@ -255,7 +252,7 @@ void midiWinMM::handleInputEvent( HMIDIIN _hm, DWORD _ev )
|
||||
|
||||
|
||||
|
||||
void midiWinMM::updateDeviceList( void )
|
||||
void MidiWinMM::updateDeviceList()
|
||||
{
|
||||
closeDevices();
|
||||
openDevices();
|
||||
@@ -274,7 +271,7 @@ void midiWinMM::updateDeviceList( void )
|
||||
|
||||
|
||||
|
||||
void midiWinMM::closeDevices( void )
|
||||
void MidiWinMM::closeDevices()
|
||||
{
|
||||
m_inputSubs.clear();
|
||||
m_outputSubs.clear();
|
||||
@@ -298,7 +295,7 @@ void midiWinMM::closeDevices( void )
|
||||
|
||||
|
||||
|
||||
void midiWinMM::openDevices( void )
|
||||
void MidiWinMM::openDevices()
|
||||
{
|
||||
m_inputDevices.clear();
|
||||
for( unsigned int i = 0; i < midiInGetNumDevs(); ++i )
|
||||
@@ -333,22 +330,22 @@ void midiWinMM::openDevices( void )
|
||||
|
||||
|
||||
|
||||
midiWinMM::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
midiClient::setupWidget( midiWinMM::name(), _parent )
|
||||
MidiWinMM::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
MidiClient::setupWidget( MidiWinMM::name(), _parent )
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
midiWinMM::setupWidget::~setupWidget()
|
||||
MidiWinMM::setupWidget::~setupWidget()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#include "moc_midi_winmm.cxx"
|
||||
#include "moc_MidiWinMM.cxx"
|
||||
|
||||
|
||||
#endif
|
||||
@@ -37,30 +37,26 @@
|
||||
#include "debug.h"
|
||||
#include "engine.h"
|
||||
#include "config_mgr.h"
|
||||
#include "audio_port.h"
|
||||
#include "sample_play_handle.h"
|
||||
#include "piano_roll.h"
|
||||
#include "micro_timer.h"
|
||||
#include "MicroTimer.h"
|
||||
#include "atomic_int.h"
|
||||
|
||||
#include "audio_device.h"
|
||||
#include "midi_client.h"
|
||||
|
||||
// platform-specific audio-interface-classes
|
||||
#include "audio_alsa.h"
|
||||
#include "audio_jack.h"
|
||||
#include "audio_oss.h"
|
||||
#include "audio_portaudio.h"
|
||||
#include "audio_pulseaudio.h"
|
||||
#include "audio_sdl.h"
|
||||
#include "audio_dummy.h"
|
||||
#include "AudioAlsa.h"
|
||||
#include "AudioJack.h"
|
||||
#include "AudioOss.h"
|
||||
#include "AudioPortAudio.h"
|
||||
#include "AudioPulseAudio.h"
|
||||
#include "AudioSdl.h"
|
||||
#include "AudioDummy.h"
|
||||
|
||||
// platform-specific midi-interface-classes
|
||||
#include "midi_alsa_raw.h"
|
||||
#include "midi_alsa_seq.h"
|
||||
#include "midi_oss.h"
|
||||
#include "midi_winmm.h"
|
||||
#include "midi_dummy.h"
|
||||
#include "MidiAlsaRaw.h"
|
||||
#include "MidiAlsaSeq.h"
|
||||
#include "MidiOss.h"
|
||||
#include "MidiWinMM.h"
|
||||
#include "MidiDummy.h"
|
||||
|
||||
|
||||
static QVector<fx_ch_t> __fx_channel_jobs( NumFxChannels );
|
||||
@@ -165,16 +161,16 @@ public:
|
||||
aligned_free( m_workingBuf );
|
||||
}
|
||||
|
||||
virtual void quit( void )
|
||||
virtual void quit()
|
||||
{
|
||||
m_quit = true;
|
||||
}
|
||||
|
||||
void processJobQueue( void );
|
||||
void processJobQueue();
|
||||
|
||||
|
||||
private:
|
||||
virtual void run( void )
|
||||
virtual void run()
|
||||
{
|
||||
#if 0
|
||||
#ifdef LMMS_BUILD_LINUX
|
||||
@@ -209,7 +205,7 @@ MixerWorkerThread::JobQueue MixerWorkerThread::s_jobQueue;
|
||||
|
||||
|
||||
|
||||
void MixerWorkerThread::processJobQueue( void )
|
||||
void MixerWorkerThread::processJobQueue()
|
||||
{
|
||||
for( int i = 0; i < s_jobQueue.queueSize; ++i )
|
||||
{
|
||||
@@ -224,9 +220,9 @@ void MixerWorkerThread::processJobQueue( void )
|
||||
break;
|
||||
case AudioPortEffects:
|
||||
{
|
||||
audioPort * a = (audioPort *) it->job;
|
||||
AudioPort * a = (AudioPort *) it->job;
|
||||
const bool me = a->processEffects();
|
||||
if( me || a->m_bufferUsage != audioPort::NoUsage )
|
||||
if( me || a->m_bufferUsage != AudioPort::NoUsage )
|
||||
{
|
||||
engine::getFxMixer()->mixToChannel( a->firstBuffer(),
|
||||
a->nextFxChannel() );
|
||||
@@ -301,7 +297,7 @@ void MixerWorkerThread::processJobQueue( void )
|
||||
|
||||
|
||||
|
||||
mixer::mixer( void ) :
|
||||
mixer::mixer() :
|
||||
m_framesPerPeriod( DEFAULT_BUFFER_SIZE ),
|
||||
m_workingBuf( NULL ),
|
||||
m_inputBufferRead( 0 ),
|
||||
@@ -428,7 +424,7 @@ mixer::~mixer()
|
||||
|
||||
|
||||
|
||||
void mixer::initDevices( void )
|
||||
void mixer::initDevices()
|
||||
{
|
||||
m_audioDev = tryAudioDevices();
|
||||
m_midiClient = tryMidiClients();
|
||||
@@ -455,7 +451,7 @@ void mixer::startProcessing( bool _needs_fifo )
|
||||
|
||||
|
||||
|
||||
void mixer::stopProcessing( void )
|
||||
void mixer::stopProcessing()
|
||||
{
|
||||
if( m_fifoWriter != NULL )
|
||||
{
|
||||
@@ -475,7 +471,7 @@ void mixer::stopProcessing( void )
|
||||
|
||||
|
||||
|
||||
sample_rate_t mixer::baseSampleRate( void ) const
|
||||
sample_rate_t mixer::baseSampleRate() const
|
||||
{
|
||||
sample_rate_t sr =
|
||||
configManager::inst()->value( "mixer", "samplerate" ).toInt();
|
||||
@@ -489,7 +485,7 @@ sample_rate_t mixer::baseSampleRate( void ) const
|
||||
|
||||
|
||||
|
||||
sample_rate_t mixer::outputSampleRate( void ) const
|
||||
sample_rate_t mixer::outputSampleRate() const
|
||||
{
|
||||
return m_audioDev != NULL ? m_audioDev->sampleRate() :
|
||||
baseSampleRate();
|
||||
@@ -498,7 +494,7 @@ sample_rate_t mixer::outputSampleRate( void ) const
|
||||
|
||||
|
||||
|
||||
sample_rate_t mixer::inputSampleRate( void ) const
|
||||
sample_rate_t mixer::inputSampleRate() const
|
||||
{
|
||||
return m_audioDev != NULL ? m_audioDev->sampleRate() :
|
||||
baseSampleRate();
|
||||
@@ -507,7 +503,7 @@ sample_rate_t mixer::inputSampleRate( void ) const
|
||||
|
||||
|
||||
|
||||
sample_rate_t mixer::processingSampleRate( void ) const
|
||||
sample_rate_t mixer::processingSampleRate() const
|
||||
{
|
||||
return outputSampleRate() * m_qualitySettings.sampleRateMultiplier();
|
||||
}
|
||||
@@ -515,7 +511,7 @@ sample_rate_t mixer::processingSampleRate( void ) const
|
||||
|
||||
|
||||
|
||||
bool mixer::criticalXRuns( void ) const
|
||||
bool mixer::criticalXRuns() const
|
||||
{
|
||||
return m_cpuLoad >= 99 && engine::getSong()->realTimeTask() == true;
|
||||
}
|
||||
@@ -553,9 +549,9 @@ void mixer::pushInputFrames( sampleFrame * _ab, const f_cnt_t _frames )
|
||||
|
||||
|
||||
|
||||
const surroundSampleFrame * mixer::renderNextBuffer( void )
|
||||
const surroundSampleFrame * mixer::renderNextBuffer()
|
||||
{
|
||||
microTimer timer;
|
||||
MicroTimer timer;
|
||||
static song::playPos last_metro_pos = -1;
|
||||
|
||||
song::playPos p = engine::getSong()->getPlayPos(
|
||||
@@ -647,7 +643,7 @@ const surroundSampleFrame * mixer::renderNextBuffer( void )
|
||||
|
||||
|
||||
// STAGE 2: process effects of all instrument- and sampletracks
|
||||
FILL_JOB_QUEUE(QVector<audioPort*>,m_audioPorts,
|
||||
FILL_JOB_QUEUE(QVector<AudioPort*>,m_audioPorts,
|
||||
MixerWorkerThread::AudioPortEffects,1);
|
||||
START_JOBS();
|
||||
WAIT_FOR_JOBS();
|
||||
@@ -685,7 +681,7 @@ const surroundSampleFrame * mixer::renderNextBuffer( void )
|
||||
|
||||
// removes all play-handles. this is neccessary, when the song is stopped ->
|
||||
// all remaining notes etc. would be played until their end
|
||||
void mixer::clear( void )
|
||||
void mixer::clear()
|
||||
{
|
||||
// TODO: m_midiClient->noteOffAll();
|
||||
lock();
|
||||
@@ -709,7 +705,7 @@ void mixer::bufferToPort( const sampleFrame * _buf,
|
||||
const fpp_t _frames,
|
||||
const f_cnt_t _offset,
|
||||
stereoVolumeVector _vv,
|
||||
audioPort * _port )
|
||||
AudioPort * _port )
|
||||
{
|
||||
const int start_frame = _offset % m_framesPerPeriod;
|
||||
int end_frame = start_frame + _frames;
|
||||
@@ -739,12 +735,12 @@ void mixer::bufferToPort( const sampleFrame * _buf,
|
||||
_vv.vol[1];
|
||||
}
|
||||
// we used both buffers so set flags
|
||||
_port->m_bufferUsage = audioPort::BothBuffers;
|
||||
_port->m_bufferUsage = AudioPort::BothBuffers;
|
||||
}
|
||||
else if( _port->m_bufferUsage == audioPort::NoUsage )
|
||||
else if( _port->m_bufferUsage == AudioPort::NoUsage )
|
||||
{
|
||||
// only first buffer touched
|
||||
_port->m_bufferUsage = audioPort::FirstBuffer;
|
||||
_port->m_bufferUsage = AudioPort::FirstBuffer;
|
||||
}
|
||||
_port->unlockSecondBuffer();
|
||||
}
|
||||
@@ -828,7 +824,7 @@ void mixer::changeQuality( const struct qualitySettings & _qs )
|
||||
|
||||
|
||||
|
||||
void mixer::setAudioDevice( audioDevice * _dev )
|
||||
void mixer::setAudioDevice( AudioDevice * _dev )
|
||||
{
|
||||
stopProcessing();
|
||||
|
||||
@@ -853,7 +849,7 @@ void mixer::setAudioDevice( audioDevice * _dev )
|
||||
|
||||
|
||||
|
||||
void mixer::setAudioDevice( audioDevice * _dev,
|
||||
void mixer::setAudioDevice( AudioDevice * _dev,
|
||||
const struct qualitySettings & _qs,
|
||||
bool _needs_fifo )
|
||||
{
|
||||
@@ -883,7 +879,7 @@ void mixer::setAudioDevice( audioDevice * _dev,
|
||||
|
||||
|
||||
|
||||
void mixer::restoreAudioDevice( void )
|
||||
void mixer::restoreAudioDevice()
|
||||
{
|
||||
if( m_oldAudioDev != NULL )
|
||||
{
|
||||
@@ -901,9 +897,9 @@ void mixer::restoreAudioDevice( void )
|
||||
|
||||
|
||||
|
||||
void mixer::removeAudioPort( audioPort * _port )
|
||||
void mixer::removeAudioPort( AudioPort * _port )
|
||||
{
|
||||
QVector<audioPort *>::Iterator it = qFind( m_audioPorts.begin(),
|
||||
QVector<AudioPort *>::Iterator it = qFind( m_audioPorts.begin(),
|
||||
m_audioPorts.end(),
|
||||
_port );
|
||||
if( it != m_audioPorts.end() )
|
||||
@@ -966,24 +962,24 @@ void mixer::removePlayHandles( track * _track )
|
||||
|
||||
|
||||
|
||||
audioDevice * mixer::tryAudioDevices( void )
|
||||
AudioDevice * mixer::tryAudioDevices()
|
||||
{
|
||||
bool success_ful = false;
|
||||
audioDevice * dev = NULL;
|
||||
AudioDevice * dev = NULL;
|
||||
QString dev_name = configManager::inst()->value( "mixer", "audiodev" );
|
||||
|
||||
if( dev_name == audioDummy::name() )
|
||||
if( dev_name == AudioDummy::name() )
|
||||
{
|
||||
dev_name = "";
|
||||
}
|
||||
|
||||
#ifdef LMMS_HAVE_ALSA
|
||||
if( dev_name == audioALSA::name() || dev_name == "" )
|
||||
if( dev_name == AudioAlsa::name() || dev_name == "" )
|
||||
{
|
||||
dev = new audioALSA( success_ful, this );
|
||||
dev = new AudioAlsa( success_ful, this );
|
||||
if( success_ful )
|
||||
{
|
||||
m_audioDevName = audioALSA::name();
|
||||
m_audioDevName = AudioAlsa::name();
|
||||
return dev;
|
||||
}
|
||||
delete dev;
|
||||
@@ -992,12 +988,12 @@ audioDevice * mixer::tryAudioDevices( void )
|
||||
|
||||
|
||||
#ifdef LMMS_HAVE_PORTAUDIO
|
||||
if( dev_name == audioPortAudio::name() || dev_name == "" )
|
||||
if( dev_name == AudioPortAudio::name() || dev_name == "" )
|
||||
{
|
||||
dev = new audioPortAudio( success_ful, this );
|
||||
dev = new AudioPortAudio( success_ful, this );
|
||||
if( success_ful )
|
||||
{
|
||||
m_audioDevName = audioPortAudio::name();
|
||||
m_audioDevName = AudioPortAudio::name();
|
||||
return dev;
|
||||
}
|
||||
delete dev;
|
||||
@@ -1006,12 +1002,12 @@ audioDevice * mixer::tryAudioDevices( void )
|
||||
|
||||
|
||||
#ifdef LMMS_HAVE_PULSEAUDIO
|
||||
if( dev_name == audioPulseAudio::name() || dev_name == "" )
|
||||
if( dev_name == AudioPulseAudio::name() || dev_name == "" )
|
||||
{
|
||||
dev = new audioPulseAudio( success_ful, this );
|
||||
dev = new AudioPulseAudio( success_ful, this );
|
||||
if( success_ful )
|
||||
{
|
||||
m_audioDevName = audioPulseAudio::name();
|
||||
m_audioDevName = AudioPulseAudio::name();
|
||||
return dev;
|
||||
}
|
||||
delete dev;
|
||||
@@ -1020,12 +1016,12 @@ audioDevice * mixer::tryAudioDevices( void )
|
||||
|
||||
|
||||
#ifdef LMMS_HAVE_OSS
|
||||
if( dev_name == audioOSS::name() || dev_name == "" )
|
||||
if( dev_name == AudioOss::name() || dev_name == "" )
|
||||
{
|
||||
dev = new audioOSS( success_ful, this );
|
||||
dev = new AudioOss( success_ful, this );
|
||||
if( success_ful )
|
||||
{
|
||||
m_audioDevName = audioOSS::name();
|
||||
m_audioDevName = AudioOss::name();
|
||||
return dev;
|
||||
}
|
||||
delete dev;
|
||||
@@ -1034,12 +1030,12 @@ audioDevice * mixer::tryAudioDevices( void )
|
||||
|
||||
|
||||
#ifdef LMMS_HAVE_JACK
|
||||
if( dev_name == audioJACK::name() || dev_name == "" )
|
||||
if( dev_name == AudioJack::name() || dev_name == "" )
|
||||
{
|
||||
dev = new audioJACK( success_ful, this );
|
||||
dev = new AudioJack( success_ful, this );
|
||||
if( success_ful )
|
||||
{
|
||||
m_audioDevName = audioJACK::name();
|
||||
m_audioDevName = AudioJack::name();
|
||||
return dev;
|
||||
}
|
||||
delete dev;
|
||||
@@ -1048,12 +1044,12 @@ audioDevice * mixer::tryAudioDevices( void )
|
||||
|
||||
|
||||
#ifdef LMMS_HAVE_SDL
|
||||
if( dev_name == audioSDL::name() || dev_name == "" )
|
||||
if( dev_name == AudioSdl::name() || dev_name == "" )
|
||||
{
|
||||
dev = new audioSDL( success_ful, this );
|
||||
dev = new AudioSdl( success_ful, this );
|
||||
if( success_ful )
|
||||
{
|
||||
m_audioDevName = audioSDL::name();
|
||||
m_audioDevName = AudioSdl::name();
|
||||
return dev;
|
||||
}
|
||||
delete dev;
|
||||
@@ -1072,37 +1068,37 @@ audioDevice * mixer::tryAudioDevices( void )
|
||||
"driver\nYou can render your songs and listen to the output "
|
||||
"files...\n" );
|
||||
|
||||
m_audioDevName = audioDummy::name();
|
||||
m_audioDevName = AudioDummy::name();
|
||||
|
||||
return new audioDummy( success_ful, this );
|
||||
return new AudioDummy( success_ful, this );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
midiClient * mixer::tryMidiClients( void )
|
||||
MidiClient * mixer::tryMidiClients()
|
||||
{
|
||||
QString client_name = configManager::inst()->value( "mixer",
|
||||
"mididev" );
|
||||
|
||||
#ifdef LMMS_HAVE_ALSA
|
||||
if( client_name == midiALSASeq::name() || client_name == "" )
|
||||
if( client_name == MidiAlsaSeq::name() || client_name == "" )
|
||||
{
|
||||
midiALSASeq * malsas = new midiALSASeq;
|
||||
MidiAlsaSeq * malsas = new MidiAlsaSeq;
|
||||
if( malsas->isRunning() )
|
||||
{
|
||||
m_midiClientName = midiALSASeq::name();
|
||||
m_midiClientName = MidiAlsaSeq::name();
|
||||
return malsas;
|
||||
}
|
||||
delete malsas;
|
||||
}
|
||||
|
||||
if( client_name == midiALSARaw::name() || client_name == "" )
|
||||
if( client_name == MidiAlsaRaw::name() || client_name == "" )
|
||||
{
|
||||
midiALSARaw * malsar = new midiALSARaw;
|
||||
MidiAlsaRaw * malsar = new MidiAlsaRaw;
|
||||
if( malsar->isRunning() )
|
||||
{
|
||||
m_midiClientName = midiALSARaw::name();
|
||||
m_midiClientName = MidiAlsaRaw::name();
|
||||
return malsar;
|
||||
}
|
||||
delete malsar;
|
||||
@@ -1110,12 +1106,12 @@ midiClient * mixer::tryMidiClients( void )
|
||||
#endif
|
||||
|
||||
#ifdef LMMS_HAVE_OSS
|
||||
if( client_name == midiOSS::name() || client_name == "" )
|
||||
if( client_name == MidiOss::name() || client_name == "" )
|
||||
{
|
||||
midiOSS * moss = new midiOSS;
|
||||
MidiOss * moss = new MidiOss;
|
||||
if( moss->isRunning() )
|
||||
{
|
||||
m_midiClientName = midiOSS::name();
|
||||
m_midiClientName = MidiOss::name();
|
||||
return moss;
|
||||
}
|
||||
delete moss;
|
||||
@@ -1123,12 +1119,12 @@ midiClient * mixer::tryMidiClients( void )
|
||||
#endif
|
||||
|
||||
#ifdef LMMS_BUILD_WIN32
|
||||
if( client_name == midiWinMM::name() || client_name == "" )
|
||||
if( client_name == MidiWinMM::name() || client_name == "" )
|
||||
{
|
||||
midiWinMM * mwmm = new midiWinMM;
|
||||
MidiWinMM * mwmm = new MidiWinMM;
|
||||
// if( moss->isRunning() )
|
||||
{
|
||||
m_midiClientName = midiWinMM::name();
|
||||
m_midiClientName = MidiWinMM::name();
|
||||
return mwmm;
|
||||
}
|
||||
delete mwmm;
|
||||
@@ -1138,9 +1134,9 @@ midiClient * mixer::tryMidiClients( void )
|
||||
printf( "Couldn't create MIDI-client, neither with ALSA nor with "
|
||||
"OSS. Will use dummy-MIDI-client.\n" );
|
||||
|
||||
m_midiClientName = midiDummy::name();
|
||||
m_midiClientName = MidiDummy::name();
|
||||
|
||||
return new midiDummy;
|
||||
return new MidiDummy;
|
||||
}
|
||||
|
||||
|
||||
@@ -1161,7 +1157,7 @@ mixer::fifoWriter::fifoWriter( mixer * _mixer, fifo * _fifo ) :
|
||||
|
||||
|
||||
|
||||
void mixer::fifoWriter::finish( void )
|
||||
void mixer::fifoWriter::finish()
|
||||
{
|
||||
m_writing = false;
|
||||
}
|
||||
@@ -1169,7 +1165,7 @@ void mixer::fifoWriter::finish( void )
|
||||
|
||||
|
||||
|
||||
void mixer::fifoWriter::run( void )
|
||||
void mixer::fifoWriter::run()
|
||||
{
|
||||
#if 0
|
||||
#ifdef LMMS_BUILD_LINUX
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
* rendering engine
|
||||
*
|
||||
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -30,7 +30,7 @@
|
||||
#include "detuning_helper.h"
|
||||
#include "instrument_sound_shaping.h"
|
||||
#include "instrument_track.h"
|
||||
#include "midi_port.h"
|
||||
#include "MidiPort.h"
|
||||
#include "song.h"
|
||||
|
||||
|
||||
@@ -104,7 +104,7 @@ notePlayHandle::notePlayHandle( instrumentTrack * _it,
|
||||
{
|
||||
// send MIDI-note-on-event
|
||||
m_instrumentTrack->processOutEvent( midiEvent( MidiNoteOn,
|
||||
m_instrumentTrack->getMidiPort()->realOutputChannel(),
|
||||
m_instrumentTrack->midiPort()->realOutputChannel(),
|
||||
key(), getMidiVelocity() ),
|
||||
midiTime::fromFrames( offset(),
|
||||
engine::framesPerTick() ) );
|
||||
@@ -151,7 +151,7 @@ void notePlayHandle::setVolume( const volume_t _volume )
|
||||
{
|
||||
note::setVolume( _volume );
|
||||
m_instrumentTrack->processOutEvent( midiEvent( MidiKeyPressure,
|
||||
m_instrumentTrack->getMidiPort()->realOutputChannel(),
|
||||
m_instrumentTrack->midiPort()->realOutputChannel(),
|
||||
key(), getMidiVelocity() ), 0 );
|
||||
|
||||
}
|
||||
@@ -159,7 +159,7 @@ void notePlayHandle::setVolume( const volume_t _volume )
|
||||
|
||||
|
||||
|
||||
int notePlayHandle::getMidiVelocity( void ) const
|
||||
int notePlayHandle::getMidiVelocity() const
|
||||
{
|
||||
int vel = getVolume();
|
||||
if( m_instrumentTrack->getVolume() < DefaultVolume )
|
||||
@@ -281,7 +281,7 @@ void notePlayHandle::play( sampleFrame * _working_buffer )
|
||||
|
||||
|
||||
|
||||
f_cnt_t notePlayHandle::framesLeft( void ) const
|
||||
f_cnt_t notePlayHandle::framesLeft() const
|
||||
{
|
||||
if( m_released && actualReleaseFramesToDo() == 0 )
|
||||
{
|
||||
@@ -329,7 +329,7 @@ void notePlayHandle::noteOff( const f_cnt_t _s )
|
||||
{
|
||||
// send MIDI-note-off-event
|
||||
m_instrumentTrack->processOutEvent( midiEvent( MidiNoteOff,
|
||||
m_instrumentTrack->getMidiPort()->realOutputChannel(),
|
||||
m_instrumentTrack->midiPort()->realOutputChannel(),
|
||||
key(), 0 ),
|
||||
midiTime::fromFrames( m_framesBeforeRelease,
|
||||
engine::framesPerTick() ) );
|
||||
@@ -341,7 +341,7 @@ void notePlayHandle::noteOff( const f_cnt_t _s )
|
||||
|
||||
|
||||
|
||||
f_cnt_t notePlayHandle::actualReleaseFramesToDo( void ) const
|
||||
f_cnt_t notePlayHandle::actualReleaseFramesToDo() const
|
||||
{
|
||||
return m_instrumentTrack->m_soundShaping.releaseFrames(/*
|
||||
isArpeggioBaseNote()*/ );
|
||||
@@ -371,7 +371,7 @@ float notePlayHandle::volumeLevel( const f_cnt_t _frame )
|
||||
|
||||
|
||||
|
||||
bool notePlayHandle::isArpeggioBaseNote( void ) const
|
||||
bool notePlayHandle::isArpeggioBaseNote() const
|
||||
{
|
||||
return isBaseNote() && ( m_partOfArpeggio ||
|
||||
m_instrumentTrack->arpeggiatorEnabled() );
|
||||
@@ -380,7 +380,7 @@ bool notePlayHandle::isArpeggioBaseNote( void ) const
|
||||
|
||||
|
||||
|
||||
void notePlayHandle::mute( void )
|
||||
void notePlayHandle::mute()
|
||||
{
|
||||
// mute all sub-notes
|
||||
for( NotePlayHandleList::Iterator it = m_subNotes.begin();
|
||||
@@ -394,7 +394,7 @@ void notePlayHandle::mute( void )
|
||||
|
||||
|
||||
|
||||
int notePlayHandle::index( void ) const
|
||||
int notePlayHandle::index() const
|
||||
{
|
||||
const PlayHandleList & playHandles =
|
||||
engine::getMixer()->playHandles();
|
||||
@@ -465,7 +465,7 @@ bool notePlayHandle::operator==( const notePlayHandle & _nph ) const
|
||||
|
||||
|
||||
|
||||
void notePlayHandle::updateFrequency( void )
|
||||
void notePlayHandle::updateFrequency()
|
||||
{
|
||||
const float pitch =
|
||||
( key() - m_instrumentTrack->baseNoteModel()->value() +
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
#ifndef SINGLE_SOURCE_COMPILE
|
||||
|
||||
/*
|
||||
* preset_preview_play_handle.cpp - implementation of class
|
||||
* presetPreviewPlayHandle
|
||||
*
|
||||
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -25,7 +23,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include <QtCore/QFileInfo>
|
||||
#include <QtCore/QMutexLocker>
|
||||
|
||||
@@ -34,7 +31,7 @@
|
||||
#include "engine.h"
|
||||
#include "instrument.h"
|
||||
#include "instrument_track.h"
|
||||
#include "midi_port.h"
|
||||
#include "MidiPort.h"
|
||||
#include "mmp.h"
|
||||
#include "note_play_handle.h"
|
||||
#include "project_journal.h"
|
||||
@@ -46,7 +43,7 @@
|
||||
class previewTrackContainer : public trackContainer
|
||||
{
|
||||
public:
|
||||
previewTrackContainer( void ) :
|
||||
previewTrackContainer() :
|
||||
m_previewInstrumentTrack( NULL ),
|
||||
m_previewNote( NULL ),
|
||||
m_dataMutex()
|
||||
@@ -62,19 +59,19 @@ public:
|
||||
{
|
||||
}
|
||||
|
||||
virtual QString nodeName( void ) const
|
||||
virtual QString nodeName() const
|
||||
{
|
||||
return( "bbtrackcontainer" );
|
||||
return "bbtrackcontainer";
|
||||
}
|
||||
|
||||
instrumentTrack * previewInstrumentTrack( void )
|
||||
instrumentTrack * previewInstrumentTrack()
|
||||
{
|
||||
return( m_previewInstrumentTrack );
|
||||
return m_previewInstrumentTrack;
|
||||
}
|
||||
|
||||
notePlayHandle * previewNote( void )
|
||||
notePlayHandle * previewNote()
|
||||
{
|
||||
return( m_previewNote );
|
||||
return m_previewNote;
|
||||
}
|
||||
|
||||
void setPreviewNote( notePlayHandle * _note )
|
||||
@@ -82,12 +79,12 @@ public:
|
||||
m_previewNote = _note;
|
||||
}
|
||||
|
||||
void lockData( void )
|
||||
void lockData()
|
||||
{
|
||||
m_dataMutex.lock();
|
||||
}
|
||||
|
||||
void unlockData( void )
|
||||
void unlockData()
|
||||
{
|
||||
m_dataMutex.unlock();
|
||||
}
|
||||
@@ -153,7 +150,7 @@ presetPreviewPlayHandle::presetPreviewPlayHandle( const QString & _preset_file,
|
||||
// make sure, our preset-preview-track does not appear in any MIDI-
|
||||
// devices list, so just disable receiving/sending MIDI-events at all
|
||||
s_previewTC->previewInstrumentTrack()->
|
||||
getMidiPort()->setMode( midiPort::Disabled );
|
||||
midiPort()->setMode( MidiPort::Disabled );
|
||||
|
||||
// create note-play-handle for it
|
||||
m_previewNote = new notePlayHandle(
|
||||
@@ -195,9 +192,9 @@ void presetPreviewPlayHandle::play( sampleFrame * _working_buffer )
|
||||
|
||||
|
||||
|
||||
bool presetPreviewPlayHandle::done( void ) const
|
||||
bool presetPreviewPlayHandle::done() const
|
||||
{
|
||||
return( m_previewNote->isMuted() );
|
||||
return m_previewNote->isMuted();
|
||||
}
|
||||
|
||||
|
||||
@@ -205,13 +202,13 @@ bool presetPreviewPlayHandle::done( void ) const
|
||||
|
||||
bool presetPreviewPlayHandle::isFromTrack( const track * _track ) const
|
||||
{
|
||||
return( s_previewTC->previewInstrumentTrack() == _track );
|
||||
return s_previewTC->previewInstrumentTrack() == _track;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void presetPreviewPlayHandle::init( void )
|
||||
void presetPreviewPlayHandle::init()
|
||||
{
|
||||
if( !s_previewTC )
|
||||
{
|
||||
@@ -222,7 +219,7 @@ void presetPreviewPlayHandle::init( void )
|
||||
|
||||
|
||||
|
||||
void presetPreviewPlayHandle::cleanup( void )
|
||||
void presetPreviewPlayHandle::cleanup()
|
||||
{
|
||||
delete s_previewTC;
|
||||
s_previewTC = NULL;
|
||||
@@ -242,11 +239,7 @@ ConstNotePlayHandleList presetPreviewPlayHandle::nphsOfInstrumentTrack(
|
||||
cnphv.push_back( s_previewTC->previewNote() );
|
||||
}
|
||||
s_previewTC->unlockData();
|
||||
return( cnphv );
|
||||
return cnphv;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* sample_play_handle.cpp - implementation of class samplePlayHandle
|
||||
*
|
||||
* Copyright (c) 2005-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
|
||||
#include "sample_play_handle.h"
|
||||
#include "audio_port.h"
|
||||
#include "AudioPort.h"
|
||||
#include "bb_track.h"
|
||||
#include "engine.h"
|
||||
#include "instrument_track.h"
|
||||
@@ -39,7 +39,7 @@ samplePlayHandle::samplePlayHandle( const QString & _sample_file ) :
|
||||
m_sampleBuffer( new sampleBuffer( _sample_file ) ),
|
||||
m_doneMayReturnTrue( true ),
|
||||
m_frame( 0 ),
|
||||
m_audioPort( new audioPort( "samplePlayHandle", false ) ),
|
||||
m_audioPort( new AudioPort( "samplePlayHandle", false ) ),
|
||||
m_ownAudioPort( true ),
|
||||
m_defaultVolumeModel( DefaultVolume, MinVolume, MaxVolume, 1 ),
|
||||
m_volumeModel( &m_defaultVolumeModel ),
|
||||
@@ -56,7 +56,7 @@ samplePlayHandle::samplePlayHandle( sampleBuffer * _sample_buffer ) :
|
||||
m_sampleBuffer( sharedObject::ref( _sample_buffer ) ),
|
||||
m_doneMayReturnTrue( true ),
|
||||
m_frame( 0 ),
|
||||
m_audioPort( new audioPort( "samplePlayHandle", false ) ),
|
||||
m_audioPort( new AudioPort( "samplePlayHandle", false ) ),
|
||||
m_ownAudioPort( true ),
|
||||
m_defaultVolumeModel( DefaultVolume, MinVolume, MaxVolume, 1 ),
|
||||
m_volumeModel( &m_defaultVolumeModel ),
|
||||
@@ -73,7 +73,7 @@ samplePlayHandle::samplePlayHandle( sampleTCO * _tco ) :
|
||||
m_sampleBuffer( sharedObject::ref( _tco->getSampleBuffer() ) ),
|
||||
m_doneMayReturnTrue( true ),
|
||||
m_frame( 0 ),
|
||||
m_audioPort( ( (sampleTrack *)_tco->getTrack() )->getAudioPort() ),
|
||||
m_audioPort( ( (sampleTrack *)_tco->getTrack() )->audioPort() ),
|
||||
m_ownAudioPort( false ),
|
||||
m_defaultVolumeModel( DefaultVolume, MinVolume, MaxVolume, 1 ),
|
||||
m_volumeModel( &m_defaultVolumeModel ),
|
||||
@@ -90,7 +90,7 @@ samplePlayHandle::samplePlayHandle( pattern * _pattern ) :
|
||||
m_sampleBuffer( sharedObject::ref( _pattern->getFrozenPattern() ) ),
|
||||
m_doneMayReturnTrue( true ),
|
||||
m_frame( 0 ),
|
||||
m_audioPort( _pattern->getInstrumentTrack()->getAudioPort() ),
|
||||
m_audioPort( _pattern->getInstrumentTrack()->audioPort() ),
|
||||
m_ownAudioPort( false ),
|
||||
m_defaultVolumeModel( DefaultVolume, MinVolume, MaxVolume, 1 ),
|
||||
m_volumeModel( &m_defaultVolumeModel ),
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* song.cpp - root of the model-tree
|
||||
*
|
||||
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -47,14 +47,14 @@
|
||||
#include "import_filter.h"
|
||||
#include "instrument_track.h"
|
||||
#include "main_window.h"
|
||||
#include "midi_client.h"
|
||||
#include "MidiClient.h"
|
||||
#include "mmp.h"
|
||||
#include "note_play_handle.h"
|
||||
#include "pattern.h"
|
||||
#include "piano_roll.h"
|
||||
#include "project_journal.h"
|
||||
#include "project_notes.h"
|
||||
#include "project_renderer.h"
|
||||
#include "ProjectRenderer.h"
|
||||
#include "rename_dialog.h"
|
||||
#include "song_editor.h"
|
||||
#include "templates.h"
|
||||
@@ -66,7 +66,7 @@ tick_t midiTime::s_ticksPerTact = DefaultTicksPerTact;
|
||||
|
||||
|
||||
|
||||
song::song( void ) :
|
||||
song::song() :
|
||||
trackContainer(),
|
||||
m_globalAutomationTrack( dynamic_cast<automationTrack *>(
|
||||
track::create( track::HiddenAutomationTrack,
|
||||
@@ -123,7 +123,7 @@ song::~song()
|
||||
|
||||
|
||||
|
||||
void song::masterVolumeChanged( void )
|
||||
void song::masterVolumeChanged()
|
||||
{
|
||||
engine::getMixer()->setMasterGain( m_masterVolumeModel.value() /
|
||||
100.0f );
|
||||
@@ -132,7 +132,7 @@ void song::masterVolumeChanged( void )
|
||||
|
||||
|
||||
|
||||
void song::setTempo( void )
|
||||
void song::setTempo()
|
||||
{
|
||||
const bpm_t tempo = (bpm_t) m_tempoModel.value();
|
||||
engine::getMixer()->lock();
|
||||
@@ -156,7 +156,7 @@ void song::setTempo( void )
|
||||
|
||||
|
||||
|
||||
void song::setTimeSignature( void )
|
||||
void song::setTimeSignature()
|
||||
{
|
||||
midiTime::setTicksPerTact( ticksPerTact() );
|
||||
emit timeSignatureChanged( m_oldTicksPerTact, ticksPerTact() );
|
||||
@@ -167,7 +167,7 @@ void song::setTimeSignature( void )
|
||||
|
||||
|
||||
|
||||
void song::doActions( void )
|
||||
void song::doActions()
|
||||
{
|
||||
while( !m_actions.empty() )
|
||||
{
|
||||
@@ -281,7 +281,7 @@ void song::doActions( void )
|
||||
|
||||
|
||||
|
||||
void song::processNextBuffer( void )
|
||||
void song::processNextBuffer()
|
||||
{
|
||||
doActions();
|
||||
|
||||
@@ -467,7 +467,7 @@ void song::processNextBuffer( void )
|
||||
|
||||
|
||||
|
||||
bool song::realTimeTask( void ) const
|
||||
bool song::realTimeTask() const
|
||||
{
|
||||
return !( m_exporting == true || ( m_playMode == Mode_PlayPattern &&
|
||||
m_patternToPlay != NULL &&
|
||||
@@ -477,7 +477,7 @@ bool song::realTimeTask( void ) const
|
||||
|
||||
|
||||
|
||||
void song::play( void )
|
||||
void song::play()
|
||||
{
|
||||
m_recording = false;
|
||||
if( m_playing == true )
|
||||
@@ -500,7 +500,7 @@ void song::play( void )
|
||||
|
||||
|
||||
|
||||
void song::record( void )
|
||||
void song::record()
|
||||
{
|
||||
m_recording = true;
|
||||
// TODO: Implement
|
||||
@@ -509,7 +509,7 @@ void song::record( void )
|
||||
|
||||
|
||||
|
||||
void song::playAndRecord( void )
|
||||
void song::playAndRecord()
|
||||
{
|
||||
play();
|
||||
m_recording = true;
|
||||
@@ -532,7 +532,7 @@ void song::playTrack( track * _trackToPlay )
|
||||
|
||||
|
||||
|
||||
void song::playBB( void )
|
||||
void song::playBB()
|
||||
{
|
||||
if( m_playing == true )
|
||||
{
|
||||
@@ -561,7 +561,7 @@ void song::playPattern( pattern * _patternToPlay, bool _loop )
|
||||
|
||||
|
||||
|
||||
void song::updateLength( void )
|
||||
void song::updateLength()
|
||||
{
|
||||
m_length = 0;
|
||||
m_tracksMutex.lockForRead();
|
||||
@@ -591,7 +591,7 @@ void song::setPlayPos( tick_t _ticks, PlayModes _play_mode )
|
||||
|
||||
|
||||
|
||||
void song::stop( void )
|
||||
void song::stop()
|
||||
{
|
||||
m_actions.push_back( ActionStop );
|
||||
}
|
||||
@@ -601,7 +601,7 @@ void song::stop( void )
|
||||
|
||||
|
||||
|
||||
void song::pause( void )
|
||||
void song::pause()
|
||||
{
|
||||
m_actions.push_back( ActionPause );
|
||||
}
|
||||
@@ -609,7 +609,7 @@ void song::pause( void )
|
||||
|
||||
|
||||
|
||||
void song::resumeFromPause( void )
|
||||
void song::resumeFromPause()
|
||||
{
|
||||
m_actions.push_back( ActionResumeFromPause );
|
||||
}
|
||||
@@ -617,7 +617,7 @@ void song::resumeFromPause( void )
|
||||
|
||||
|
||||
|
||||
void song::startExport( void )
|
||||
void song::startExport()
|
||||
{
|
||||
stop();
|
||||
doActions();
|
||||
@@ -631,7 +631,7 @@ void song::startExport( void )
|
||||
|
||||
|
||||
|
||||
void song::stopExport( void )
|
||||
void song::stopExport()
|
||||
{
|
||||
stop();
|
||||
m_exporting = false;
|
||||
@@ -640,7 +640,7 @@ void song::stopExport( void )
|
||||
|
||||
|
||||
|
||||
void song::insertBar( void )
|
||||
void song::insertBar()
|
||||
{
|
||||
m_tracksMutex.lockForRead();
|
||||
for( trackList::const_iterator it = tracks().begin();
|
||||
@@ -654,7 +654,7 @@ void song::insertBar( void )
|
||||
|
||||
|
||||
|
||||
void song::removeBar( void )
|
||||
void song::removeBar()
|
||||
{
|
||||
m_tracksMutex.lockForRead();
|
||||
for( trackList::const_iterator it = tracks().begin();
|
||||
@@ -668,7 +668,7 @@ void song::removeBar( void )
|
||||
|
||||
|
||||
|
||||
void song::addBBTrack( void )
|
||||
void song::addBBTrack()
|
||||
{
|
||||
engine::getMixer()->lock();
|
||||
track * t = track::create( track::BBTrack, this );
|
||||
@@ -680,7 +680,7 @@ void song::addBBTrack( void )
|
||||
|
||||
|
||||
|
||||
void song::addSampleTrack( void )
|
||||
void song::addSampleTrack()
|
||||
{
|
||||
engine::getMixer()->lock();
|
||||
(void) track::create( track::SampleTrack, this );
|
||||
@@ -690,7 +690,7 @@ void song::addSampleTrack( void )
|
||||
|
||||
|
||||
|
||||
void song::addAutomationTrack( void )
|
||||
void song::addAutomationTrack()
|
||||
{
|
||||
engine::getMixer()->lock();
|
||||
(void) track::create( track::AutomationTrack, this );
|
||||
@@ -700,7 +700,7 @@ void song::addAutomationTrack( void )
|
||||
|
||||
|
||||
|
||||
bpm_t song::getTempo( void )
|
||||
bpm_t song::getTempo()
|
||||
{
|
||||
return (bpm_t) m_tempoModel.value();
|
||||
}
|
||||
@@ -708,7 +708,7 @@ bpm_t song::getTempo( void )
|
||||
|
||||
|
||||
|
||||
automationPattern * song::tempoAutomationPattern( void )
|
||||
automationPattern * song::tempoAutomationPattern()
|
||||
{
|
||||
return automationPattern::globalAutomationPattern( &m_tempoModel );
|
||||
}
|
||||
@@ -716,7 +716,7 @@ automationPattern * song::tempoAutomationPattern( void )
|
||||
|
||||
|
||||
|
||||
void song::clearProject( void )
|
||||
void song::clearProject()
|
||||
{
|
||||
engine::getProjectJournal()->setJournalling( false );
|
||||
|
||||
@@ -779,7 +779,7 @@ void song::clearProject( void )
|
||||
|
||||
|
||||
// create new file
|
||||
void song::createNewProject( void )
|
||||
void song::createNewProject()
|
||||
{
|
||||
QString default_template = configManager::inst()->userProjectsDir()
|
||||
+ "templates/default.mpt";
|
||||
@@ -996,7 +996,7 @@ void song::loadProject( const QString & _file_name )
|
||||
|
||||
|
||||
// save current song
|
||||
bool song::saveProject( void )
|
||||
bool song::saveProject()
|
||||
{
|
||||
multimediaProject mmp( multimediaProject::SongProject );
|
||||
|
||||
@@ -1069,7 +1069,7 @@ bool song::saveProjectAs( const QString & _file_name )
|
||||
|
||||
|
||||
|
||||
void song::importProject( void )
|
||||
void song::importProject()
|
||||
{
|
||||
QFileDialog ofd( NULL, tr( "Import file" ),
|
||||
configManager::inst()->userProjectsDir(),
|
||||
@@ -1112,7 +1112,7 @@ void song::restoreControllerStates( const QDomElement & _this )
|
||||
|
||||
|
||||
|
||||
void song::exportProject( void )
|
||||
void song::exportProject()
|
||||
{
|
||||
if( isEmpty() )
|
||||
{
|
||||
@@ -1130,7 +1130,7 @@ void song::exportProject( void )
|
||||
int idx = 0;
|
||||
QStringList types;
|
||||
while( __fileEncodeDevices[idx].m_fileFormat !=
|
||||
projectRenderer::NumFileFormats )
|
||||
ProjectRenderer::NumFileFormats )
|
||||
{
|
||||
types << tr( __fileEncodeDevices[idx].m_description );
|
||||
++idx;
|
||||
@@ -1138,7 +1138,7 @@ void song::exportProject( void )
|
||||
efd.setFilters( types );
|
||||
|
||||
QString base_filename;
|
||||
if( m_fileName != "" )
|
||||
if( !m_fileName.isEmpty() )
|
||||
{
|
||||
efd.setDirectory( QFileInfo( m_fileName ).absolutePath() );
|
||||
base_filename = QFileInfo( m_fileName ).completeBaseName();
|
||||
@@ -1152,7 +1152,7 @@ void song::exportProject( void )
|
||||
efd.setWindowTitle( tr( "Select file for project-export..." ) );
|
||||
|
||||
if( efd.exec() == QDialog::Accepted &&
|
||||
!efd.selectedFiles().isEmpty() && efd.selectedFiles()[0] != "" )
|
||||
!efd.selectedFiles().isEmpty() && !efd.selectedFiles()[0].isEmpty() )
|
||||
{
|
||||
const QString export_file_name = efd.selectedFiles()[0];
|
||||
exportProjectDialog epd( export_file_name,
|
||||
@@ -1164,7 +1164,7 @@ void song::exportProject( void )
|
||||
|
||||
|
||||
|
||||
void song::updateFramesPerTick( void )
|
||||
void song::updateFramesPerTick()
|
||||
{
|
||||
engine::updateFramesPerTick();
|
||||
}
|
||||
@@ -1172,7 +1172,7 @@ void song::updateFramesPerTick( void )
|
||||
|
||||
|
||||
|
||||
void song::setModified( void )
|
||||
void song::setModified()
|
||||
{
|
||||
if( !m_loadingProject )
|
||||
{
|
||||
|
||||
@@ -33,9 +33,8 @@
|
||||
#include "ControllerConnectionDialog.h"
|
||||
#include "ControllerConnection.h"
|
||||
#include "MidiController.h"
|
||||
#include "midi_client.h"
|
||||
#include "midi_port_menu.h"
|
||||
#include "midi.h"
|
||||
#include "MidiClient.h"
|
||||
#include "MidiPortMenu.h"
|
||||
#include "lcd_spinbox.h"
|
||||
#include "led_checkbox.h"
|
||||
#include "combobox.h"
|
||||
@@ -158,9 +157,9 @@ ControllerConnectionDialog::ControllerConnectionDialog( QWidget * _parent,
|
||||
|
||||
// when using with non-raw-clients we can provide buttons showing
|
||||
// our port-menus when being clicked
|
||||
if( !engine::getMixer()->getMidiClient()->isRaw() )
|
||||
if( !engine::getMixer()->midiClient()->isRaw() )
|
||||
{
|
||||
m_readablePorts = new midiPortMenu( midiPort::Input );
|
||||
m_readablePorts = new MidiPortMenu( MidiPort::Input );
|
||||
connect( m_readablePorts, SIGNAL( triggered( QAction * ) ),
|
||||
this, SLOT( enableAutoDetect( QAction * ) ) );
|
||||
toolButton * rp_btn = new toolButton( m_midiGroupBox );
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
#include "export_project_dialog.h"
|
||||
#include "engine.h"
|
||||
#include "main_window.h"
|
||||
#include "project_renderer.h"
|
||||
#include "ProjectRenderer.h"
|
||||
|
||||
|
||||
exportProjectDialog::exportProjectDialog( const QString & _file_name,
|
||||
@@ -42,11 +42,11 @@ exportProjectDialog::exportProjectDialog( const QString & _file_name,
|
||||
setWindowTitle( tr( "Export project to %1" ).arg(
|
||||
QFileInfo( _file_name ).fileName() ) );
|
||||
|
||||
for( int i = 0; i < projectRenderer::NumFileFormats; ++i )
|
||||
for( int i = 0; i < ProjectRenderer::NumFileFormats; ++i )
|
||||
{
|
||||
if( __fileEncodeDevices[i].m_getDevInst != NULL )
|
||||
{
|
||||
fileFormatCB->addItem( projectRenderer::tr(
|
||||
fileFormatCB->addItem( ProjectRenderer::tr(
|
||||
__fileEncodeDevices[i].m_description ) );
|
||||
}
|
||||
}
|
||||
@@ -96,12 +96,12 @@ void exportProjectDialog::closeEvent( QCloseEvent * _ce )
|
||||
|
||||
void exportProjectDialog::startBtnClicked()
|
||||
{
|
||||
projectRenderer::ExportFileFormats ft = projectRenderer::NumFileFormats;
|
||||
ProjectRenderer::ExportFileFormats ft = ProjectRenderer::NumFileFormats;
|
||||
|
||||
for( int i = 0; i < projectRenderer::NumFileFormats; ++i )
|
||||
for( int i = 0; i < ProjectRenderer::NumFileFormats; ++i )
|
||||
{
|
||||
if( fileFormatCB->currentText() ==
|
||||
projectRenderer::tr(
|
||||
ProjectRenderer::tr(
|
||||
__fileEncodeDevices[i].m_description ) )
|
||||
{
|
||||
ft = __fileEncodeDevices[i].m_fileFormat;
|
||||
@@ -109,7 +109,7 @@ void exportProjectDialog::startBtnClicked()
|
||||
}
|
||||
}
|
||||
|
||||
if( ft == projectRenderer::NumFileFormats )
|
||||
if( ft == ProjectRenderer::NumFileFormats )
|
||||
{
|
||||
QMessageBox::information( this, tr( "Error" ),
|
||||
tr( "Error while determining file-encoder device. "
|
||||
@@ -119,8 +119,8 @@ void exportProjectDialog::startBtnClicked()
|
||||
return;
|
||||
}
|
||||
|
||||
startButton->setEnabled( FALSE );
|
||||
progressBar->setEnabled( TRUE );
|
||||
startButton->setEnabled( false );
|
||||
progressBar->setEnabled( true );
|
||||
|
||||
updateTitleBar( 0 );
|
||||
|
||||
@@ -132,14 +132,14 @@ void exportProjectDialog::startBtnClicked()
|
||||
sampleExactControllersCB->isChecked(),
|
||||
aliasFreeOscillatorsCB->isChecked() );
|
||||
|
||||
projectRenderer::outputSettings os = projectRenderer::outputSettings(
|
||||
ProjectRenderer::OutputSettings os = ProjectRenderer::OutputSettings(
|
||||
samplerateCB->currentText().section( " ", 0, 0 ).toUInt(),
|
||||
FALSE,
|
||||
false,
|
||||
bitrateCB->currentText().section( " ", 0, 0 ).toUInt(),
|
||||
static_cast<projectRenderer::Depths>(
|
||||
static_cast<ProjectRenderer::Depths>(
|
||||
depthCB->currentIndex() ) );
|
||||
|
||||
m_renderer = new projectRenderer( qs, os, ft, m_fileName );
|
||||
m_renderer = new ProjectRenderer( qs, os, ft, m_fileName );
|
||||
if( m_renderer->isReady() )
|
||||
{
|
||||
connect( m_renderer, SIGNAL( progressChanged( int ) ),
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
#include "plugin_view.h"
|
||||
#include "project_notes.h"
|
||||
#include "setup_dialog.h"
|
||||
#include "audio_dummy.h"
|
||||
#include "AudioDummy.h"
|
||||
#include "tool.h"
|
||||
#include "tool_button.h"
|
||||
#include "project_journal.h"
|
||||
@@ -490,8 +490,8 @@ void mainWindow::finalize( void )
|
||||
setupDialog sd;
|
||||
sd.exec();
|
||||
}
|
||||
// look whether mixer could use a audio-interface beside audioDummy
|
||||
else if( engine::getMixer()->audioDevName() == audioDummy::name() )
|
||||
// look whether mixer could use a audio-interface beside AudioDummy
|
||||
else if( engine::getMixer()->audioDevName() == AudioDummy::name() )
|
||||
{
|
||||
// no, so we offer setup-dialog with audio-settings...
|
||||
setupDialog sd( setupDialog::AudioSettings );
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
#ifndef SINGLE_SOURCE_COMPILE
|
||||
|
||||
/*
|
||||
* setup_dialog.cpp - dialog for setting up LMMS
|
||||
*
|
||||
* Copyright (c) 2005-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -24,7 +22,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include <QtGui/QComboBox>
|
||||
#include <QtGui/QFileDialog>
|
||||
#include <QtGui/QImageReader>
|
||||
@@ -35,7 +32,6 @@
|
||||
#include <QtGui/QSlider>
|
||||
#include <QtGui/QWhatsThis>
|
||||
|
||||
|
||||
#include "setup_dialog.h"
|
||||
#include "tab_bar.h"
|
||||
#include "tab_button.h"
|
||||
@@ -53,27 +49,28 @@
|
||||
|
||||
|
||||
// platform-specific audio-interface-classes
|
||||
#include "audio_alsa.h"
|
||||
#include "audio_jack.h"
|
||||
#include "audio_oss.h"
|
||||
#include "audio_portaudio.h"
|
||||
#include "audio_pulseaudio.h"
|
||||
#include "audio_sdl.h"
|
||||
#include "audio_dummy.h"
|
||||
#include "AudioAlsa.h"
|
||||
#include "AudioJack.h"
|
||||
#include "AudioOss.h"
|
||||
#include "AudioPortAudio.h"
|
||||
#include "AudioPulseAudio.h"
|
||||
#include "AudioSdl.h"
|
||||
#include "AudioDummy.h"
|
||||
|
||||
// platform-specific midi-interface-classes
|
||||
#include "midi_alsa_raw.h"
|
||||
#include "midi_alsa_seq.h"
|
||||
#include "midi_oss.h"
|
||||
#include "midi_winmm.h"
|
||||
#include "midi_dummy.h"
|
||||
#include "MidiAlsaRaw.h"
|
||||
#include "MidiAlsaSeq.h"
|
||||
#include "MidiOss.h"
|
||||
#include "MidiWinMM.h"
|
||||
#include "MidiDummy.h"
|
||||
|
||||
|
||||
|
||||
inline void labelWidget( QWidget * _w, const QString & _txt )
|
||||
{
|
||||
QLabel * title = new QLabel( _txt, _w );
|
||||
QFont f = title->font();
|
||||
f.setBold( TRUE );
|
||||
f.setBold( true );
|
||||
title->setFont( pointSize<12>( f ) );
|
||||
|
||||
#ifdef LMMS_DEBUG
|
||||
@@ -118,9 +115,9 @@ setupDialog::setupDialog( ConfigTabs _tab_to_open ) :
|
||||
{
|
||||
setWindowIcon( embed::getIconPixmap( "setup_general" ) );
|
||||
setWindowTitle( tr( "Setup LMMS" ) );
|
||||
setModal( TRUE );
|
||||
setModal( true );
|
||||
|
||||
engine::getProjectJournal()->setJournalling( FALSE );
|
||||
engine::getProjectJournal()->setJournalling( false );
|
||||
|
||||
QVBoxLayout * vlayout = new QVBoxLayout( this );
|
||||
vlayout->setSpacing( 0 );
|
||||
@@ -131,7 +128,7 @@ setupDialog::setupDialog( ConfigTabs _tab_to_open ) :
|
||||
hlayout->setMargin( 0 );
|
||||
|
||||
m_tabBar = new tabBar( settings, QBoxLayout::TopToBottom );
|
||||
m_tabBar->setExclusive( TRUE );
|
||||
m_tabBar->setExclusive( true );
|
||||
m_tabBar->setFixedWidth( 72 );
|
||||
|
||||
QWidget * ws = new QWidget( settings );
|
||||
@@ -501,42 +498,42 @@ setupDialog::setupDialog( ConfigTabs _tab_to_open ) :
|
||||
QHBoxLayout * asw_layout = new QHBoxLayout( asw );
|
||||
asw_layout->setSpacing( 0 );
|
||||
asw_layout->setMargin( 0 );
|
||||
//asw_layout->setAutoAdd( TRUE );
|
||||
//asw_layout->setAutoAdd( true );
|
||||
|
||||
#ifdef LMMS_HAVE_JACK
|
||||
m_audioIfaceSetupWidgets[audioJACK::name()] =
|
||||
new audioJACK::setupWidget( asw );
|
||||
m_audioIfaceSetupWidgets[AudioJack::name()] =
|
||||
new AudioJack::setupWidget( asw );
|
||||
#endif
|
||||
|
||||
#ifdef LMMS_HAVE_ALSA
|
||||
m_audioIfaceSetupWidgets[audioALSA::name()] =
|
||||
new audioALSA::setupWidget( asw );
|
||||
m_audioIfaceSetupWidgets[AudioAlsa::name()] =
|
||||
new AudioAlsa::setupWidget( asw );
|
||||
#endif
|
||||
|
||||
#ifdef LMMS_HAVE_PULSEAUDIO
|
||||
m_audioIfaceSetupWidgets[audioPulseAudio::name()] =
|
||||
new audioPulseAudio::setupWidget( asw );
|
||||
m_audioIfaceSetupWidgets[AudioPulseAudio::name()] =
|
||||
new AudioPulseAudio::setupWidget( asw );
|
||||
#endif
|
||||
|
||||
#ifdef LMMS_HAVE_PORTAUDIO
|
||||
m_audioIfaceSetupWidgets[audioPortAudio::name()] =
|
||||
new audioPortAudio::setupWidget( asw );
|
||||
m_audioIfaceSetupWidgets[AudioPortAudio::name()] =
|
||||
new AudioPortAudio::setupWidget( asw );
|
||||
#endif
|
||||
|
||||
#ifdef LMMS_HAVE_SDL
|
||||
m_audioIfaceSetupWidgets[audioSDL::name()] =
|
||||
new audioSDL::setupWidget( asw );
|
||||
m_audioIfaceSetupWidgets[AudioSdl::name()] =
|
||||
new AudioSdl::setupWidget( asw );
|
||||
#endif
|
||||
|
||||
#ifdef LMMS_HAVE_OSS
|
||||
m_audioIfaceSetupWidgets[audioOSS::name()] =
|
||||
new audioOSS::setupWidget( asw );
|
||||
m_audioIfaceSetupWidgets[AudioOss::name()] =
|
||||
new AudioOss::setupWidget( asw );
|
||||
#endif
|
||||
m_audioIfaceSetupWidgets[audioDummy::name()] =
|
||||
new audioDummy::setupWidget( asw );
|
||||
m_audioIfaceSetupWidgets[AudioDummy::name()] =
|
||||
new AudioDummy::setupWidget( asw );
|
||||
|
||||
|
||||
for( aswMap::iterator it = m_audioIfaceSetupWidgets.begin();
|
||||
for( AswMap::iterator it = m_audioIfaceSetupWidgets.begin();
|
||||
it != m_audioIfaceSetupWidgets.end(); ++it )
|
||||
{
|
||||
m_audioIfaceNames[tr( it.key().toAscii())] = it.key();
|
||||
@@ -593,30 +590,30 @@ setupDialog::setupDialog( ConfigTabs _tab_to_open ) :
|
||||
QHBoxLayout * msw_layout = new QHBoxLayout( msw );
|
||||
msw_layout->setSpacing( 0 );
|
||||
msw_layout->setMargin( 0 );
|
||||
//msw_layout->setAutoAdd( TRUE );
|
||||
//msw_layout->setAutoAdd( true );
|
||||
|
||||
#ifdef LMMS_HAVE_ALSA
|
||||
m_midiIfaceSetupWidgets[midiALSASeq::name()] =
|
||||
new midiALSASeq::setupWidget( msw );
|
||||
m_midiIfaceSetupWidgets[midiALSARaw::name()] =
|
||||
new midiALSARaw::setupWidget( msw );
|
||||
m_midiIfaceSetupWidgets[MidiAlsaSeq::name()] =
|
||||
new MidiAlsaSeq::setupWidget( msw );
|
||||
m_midiIfaceSetupWidgets[MidiAlsaRaw::name()] =
|
||||
new MidiAlsaRaw::setupWidget( msw );
|
||||
#endif
|
||||
|
||||
#ifdef LMMS_HAVE_OSS
|
||||
m_midiIfaceSetupWidgets[midiOSS::name()] =
|
||||
new midiOSS::setupWidget( msw );
|
||||
m_midiIfaceSetupWidgets[MidiOss::name()] =
|
||||
new MidiOss::setupWidget( msw );
|
||||
#endif
|
||||
|
||||
#ifdef LMMS_BUILD_WIN32
|
||||
m_midiIfaceSetupWidgets[midiWinMM::name()] =
|
||||
new midiWinMM::setupWidget( msw );
|
||||
m_midiIfaceSetupWidgets[MidiWinMM::name()] =
|
||||
new MidiWinMM::setupWidget( msw );
|
||||
#endif
|
||||
|
||||
m_midiIfaceSetupWidgets[midiDummy::name()] =
|
||||
new midiDummy::setupWidget( msw );
|
||||
m_midiIfaceSetupWidgets[MidiDummy::name()] =
|
||||
new MidiDummy::setupWidget( msw );
|
||||
|
||||
|
||||
for( mswMap::iterator it = m_midiIfaceSetupWidgets.begin();
|
||||
for( MswMap::iterator it = m_midiIfaceSetupWidgets.begin();
|
||||
it != m_midiIfaceSetupWidgets.end(); ++it )
|
||||
{
|
||||
m_midiIfaceNames[tr( it.key().toAscii())] = it.key();
|
||||
@@ -644,17 +641,17 @@ setupDialog::setupDialog( ConfigTabs _tab_to_open ) :
|
||||
midi_layout->addStretch();
|
||||
|
||||
|
||||
m_tabBar->addTab( general, tr( "General settings" ), 0, FALSE, TRUE
|
||||
m_tabBar->addTab( general, tr( "General settings" ), 0, false, true
|
||||
)->setIcon( embed::getIconPixmap( "setup_general" ) );
|
||||
m_tabBar->addTab( paths, tr( "Paths" ), 1, FALSE, TRUE
|
||||
m_tabBar->addTab( paths, tr( "Paths" ), 1, false, true
|
||||
)->setIcon( embed::getIconPixmap(
|
||||
"setup_directories" ) );
|
||||
m_tabBar->addTab( performance, tr( "Performance settings" ), 2, FALSE,
|
||||
TRUE )->setIcon( embed::getIconPixmap(
|
||||
m_tabBar->addTab( performance, tr( "Performance settings" ), 2, false,
|
||||
true )->setIcon( embed::getIconPixmap(
|
||||
"setup_performance" ) );
|
||||
m_tabBar->addTab( audio, tr( "Audio settings" ), 3, FALSE, TRUE
|
||||
m_tabBar->addTab( audio, tr( "Audio settings" ), 3, false, true
|
||||
)->setIcon( embed::getIconPixmap( "setup_audio" ) );
|
||||
m_tabBar->addTab( midi, tr( "MIDI settings" ), 4, TRUE, TRUE
|
||||
m_tabBar->addTab( midi, tr( "MIDI settings" ), 4, true, true
|
||||
)->setIcon( embed::getIconPixmap( "setup_midi" ) );
|
||||
|
||||
|
||||
@@ -703,13 +700,13 @@ setupDialog::setupDialog( ConfigTabs _tab_to_open ) :
|
||||
|
||||
setupDialog::~setupDialog()
|
||||
{
|
||||
engine::getProjectJournal()->setJournalling( TRUE );
|
||||
engine::getProjectJournal()->setJournalling( true );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void setupDialog::accept( void )
|
||||
void setupDialog::accept()
|
||||
{
|
||||
configManager::inst()->setValue( "mixer", "framesperaudiobuffer",
|
||||
QString::number( m_bufferSize ) );
|
||||
@@ -747,13 +744,13 @@ void setupDialog::accept( void )
|
||||
configManager::inst()->setBackgroundArtwork( m_backgroundArtwork );
|
||||
|
||||
// tell all audio-settings-widget to save their settings
|
||||
for( aswMap::iterator it = m_audioIfaceSetupWidgets.begin();
|
||||
for( AswMap::iterator it = m_audioIfaceSetupWidgets.begin();
|
||||
it != m_audioIfaceSetupWidgets.end(); ++it )
|
||||
{
|
||||
it.value()->saveSettings();
|
||||
}
|
||||
// tell all MIDI-settings-widget to save their settings
|
||||
for( mswMap::iterator it = m_midiIfaceSetupWidgets.begin();
|
||||
for( MswMap::iterator it = m_midiIfaceSetupWidgets.begin();
|
||||
it != m_midiIfaceSetupWidgets.end(); ++it )
|
||||
{
|
||||
it.value()->saveSettings();
|
||||
@@ -808,7 +805,7 @@ void setupDialog::setBufferSize( int _value )
|
||||
|
||||
|
||||
|
||||
void setupDialog::resetBufSize( void )
|
||||
void setupDialog::resetBufSize()
|
||||
{
|
||||
setBufferSize( DEFAULT_BUFFER_SIZE / 64 );
|
||||
}
|
||||
@@ -816,7 +813,7 @@ void setupDialog::resetBufSize( void )
|
||||
|
||||
|
||||
|
||||
void setupDialog::displayBufSizeHelp( void )
|
||||
void setupDialog::displayBufSizeHelp()
|
||||
{
|
||||
QWhatsThis::showText( QCursor::pos(),
|
||||
tr( "Here you can setup the internal buffer-size "
|
||||
@@ -888,7 +885,7 @@ void setupDialog::toggleManualChPiano( bool _enabled )
|
||||
|
||||
|
||||
|
||||
void setupDialog::openWorkingDir( void )
|
||||
void setupDialog::openWorkingDir()
|
||||
{
|
||||
QString new_dir = QFileDialog::getExistingDirectory( this,
|
||||
tr( "Choose LMMS working directory" ),
|
||||
@@ -910,7 +907,7 @@ void setupDialog::setWorkingDir( const QString & _wd )
|
||||
|
||||
|
||||
|
||||
void setupDialog::openVSTDir( void )
|
||||
void setupDialog::openVSTDir()
|
||||
{
|
||||
QString new_dir = QFileDialog::getExistingDirectory( this,
|
||||
tr( "Choose your VST-plugin directory" ),
|
||||
@@ -932,7 +929,7 @@ void setupDialog::setVSTDir( const QString & _vd )
|
||||
|
||||
|
||||
|
||||
void setupDialog::openArtworkDir( void )
|
||||
void setupDialog::openArtworkDir()
|
||||
{
|
||||
QString new_dir = QFileDialog::getExistingDirectory( this,
|
||||
tr( "Choose artwork-theme directory" ),
|
||||
@@ -954,7 +951,7 @@ void setupDialog::setArtworkDir( const QString & _ad )
|
||||
|
||||
|
||||
|
||||
void setupDialog::openFLDir( void )
|
||||
void setupDialog::openFLDir()
|
||||
{
|
||||
QString new_dir = QFileDialog::getExistingDirectory( this,
|
||||
tr( "Choose FL Studio installation directory" ),
|
||||
@@ -968,7 +965,7 @@ void setupDialog::openFLDir( void )
|
||||
|
||||
|
||||
|
||||
void setupDialog::openLADSPADir( void )
|
||||
void setupDialog::openLADSPADir()
|
||||
{
|
||||
QString new_dir = QFileDialog::getExistingDirectory( this,
|
||||
tr( "Choose LADSPA plugin directory" ),
|
||||
@@ -990,7 +987,7 @@ void setupDialog::openLADSPADir( void )
|
||||
|
||||
|
||||
|
||||
void setupDialog::openSTKDir( void )
|
||||
void setupDialog::openSTKDir()
|
||||
{
|
||||
#ifdef LMMS_HAVE_STK
|
||||
QString new_dir = QFileDialog::getExistingDirectory( this,
|
||||
@@ -1006,7 +1003,7 @@ void setupDialog::openSTKDir( void )
|
||||
|
||||
|
||||
|
||||
void setupDialog::openDefaultSoundfont( void )
|
||||
void setupDialog::openDefaultSoundfont()
|
||||
{
|
||||
#ifdef LMMS_HAVE_FLUIDSYNTH
|
||||
QString new_file = QFileDialog::getOpenFileName( this,
|
||||
@@ -1023,7 +1020,7 @@ void setupDialog::openDefaultSoundfont( void )
|
||||
|
||||
|
||||
|
||||
void setupDialog::openBackgroundArtwork( void )
|
||||
void setupDialog::openBackgroundArtwork()
|
||||
{
|
||||
QList<QByteArray> fileTypesList = QImageReader::supportedImageFormats();
|
||||
QString fileTypes;
|
||||
@@ -1103,7 +1100,7 @@ void setupDialog::setBackgroundArtwork( const QString & _ba )
|
||||
|
||||
void setupDialog::audioInterfaceChanged( const QString & _iface )
|
||||
{
|
||||
for( aswMap::iterator it = m_audioIfaceSetupWidgets.begin();
|
||||
for( AswMap::iterator it = m_audioIfaceSetupWidgets.begin();
|
||||
it != m_audioIfaceSetupWidgets.end(); ++it )
|
||||
{
|
||||
it.value()->hide();
|
||||
@@ -1115,7 +1112,7 @@ void setupDialog::audioInterfaceChanged( const QString & _iface )
|
||||
|
||||
|
||||
|
||||
void setupDialog::displayAudioHelp( void )
|
||||
void setupDialog::displayAudioHelp()
|
||||
{
|
||||
QWhatsThis::showText( QCursor::pos(),
|
||||
tr( "Here you can select your preferred "
|
||||
@@ -1133,7 +1130,7 @@ void setupDialog::displayAudioHelp( void )
|
||||
|
||||
void setupDialog::midiInterfaceChanged( const QString & _iface )
|
||||
{
|
||||
for( mswMap::iterator it = m_midiIfaceSetupWidgets.begin();
|
||||
for( MswMap::iterator it = m_midiIfaceSetupWidgets.begin();
|
||||
it != m_midiIfaceSetupWidgets.end(); ++it )
|
||||
{
|
||||
it.value()->hide();
|
||||
@@ -1145,7 +1142,7 @@ void setupDialog::midiInterfaceChanged( const QString & _iface )
|
||||
|
||||
|
||||
|
||||
void setupDialog::displayMIDIHelp( void )
|
||||
void setupDialog::displayMIDIHelp()
|
||||
{
|
||||
QWhatsThis::showText( QCursor::pos(),
|
||||
tr( "Here you can select your preferred "
|
||||
@@ -1163,5 +1160,3 @@ void setupDialog::displayMIDIHelp( void )
|
||||
|
||||
#include "moc_setup_dialog.cxx"
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
#include "tool_button.h"
|
||||
#include "tooltip.h"
|
||||
#include "visualization_widget.h"
|
||||
#include "audio_device.h"
|
||||
#include "AudioDevice.h"
|
||||
#include "piano_roll.h"
|
||||
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
/*
|
||||
* midi_port_menu.cpp - a menu for subscribing a midiPort to several external
|
||||
* MidiPortMenu.cpp - a menu for subscribing a MidiPort to several external
|
||||
* MIDI ports
|
||||
*
|
||||
* Copyright (c) 2008-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -23,13 +23,12 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include "midi_port_menu.h"
|
||||
#include "MidiPortMenu.h"
|
||||
#include "gui_templates.h"
|
||||
|
||||
|
||||
|
||||
midiPortMenu::midiPortMenu( midiPort::Modes _mode ) :
|
||||
MidiPortMenu::MidiPortMenu( MidiPort::Modes _mode ) :
|
||||
modelView( NULL, this ),
|
||||
m_mode( _mode )
|
||||
{
|
||||
@@ -41,22 +40,22 @@ midiPortMenu::midiPortMenu( midiPort::Modes _mode ) :
|
||||
|
||||
|
||||
|
||||
midiPortMenu::~midiPortMenu()
|
||||
MidiPortMenu::~MidiPortMenu()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void midiPortMenu::modelChanged( void )
|
||||
void MidiPortMenu::modelChanged()
|
||||
{
|
||||
midiPort * mp = castModel<midiPort>();
|
||||
if( m_mode == midiPort::Input )
|
||||
MidiPort * mp = castModel<MidiPort>();
|
||||
if( m_mode == MidiPort::Input )
|
||||
{
|
||||
connect( mp, SIGNAL( readablePortsChanged() ),
|
||||
this, SLOT( updatePorts() ) );
|
||||
}
|
||||
else if( m_mode == midiPort::Output )
|
||||
else if( m_mode == MidiPort::Output )
|
||||
{
|
||||
connect( mp, SIGNAL( writablePortsChanged() ),
|
||||
this, SLOT( updatePorts() ) );
|
||||
@@ -67,16 +66,16 @@ void midiPortMenu::modelChanged( void )
|
||||
|
||||
|
||||
|
||||
void midiPortMenu::activatedPort( QAction * _item )
|
||||
void MidiPortMenu::activatedPort( QAction * _item )
|
||||
{
|
||||
if( m_mode == midiPort::Input )
|
||||
if( m_mode == MidiPort::Input )
|
||||
{
|
||||
castModel<midiPort>()->subscribeReadablePort( _item->text(),
|
||||
castModel<MidiPort>()->subscribeReadablePort( _item->text(),
|
||||
_item->isChecked() );
|
||||
}
|
||||
else if( m_mode == midiPort::Output )
|
||||
else if( m_mode == MidiPort::Output )
|
||||
{
|
||||
castModel<midiPort>()->subscribeWritablePort( _item->text(),
|
||||
castModel<MidiPort>()->subscribeWritablePort( _item->text(),
|
||||
_item->isChecked() );
|
||||
}
|
||||
}
|
||||
@@ -84,13 +83,13 @@ void midiPortMenu::activatedPort( QAction * _item )
|
||||
|
||||
|
||||
|
||||
void midiPortMenu::updatePorts( void )
|
||||
void MidiPortMenu::updatePorts()
|
||||
{
|
||||
midiPort * mp = castModel<midiPort>();
|
||||
const midiPort::map & map = ( m_mode == midiPort::Input ) ?
|
||||
MidiPort * mp = castModel<MidiPort>();
|
||||
const MidiPort::Map & map = ( m_mode == MidiPort::Input ) ?
|
||||
mp->readablePorts() : mp->writablePorts();
|
||||
clear();
|
||||
for( midiPort::map::const_iterator it = map.begin();
|
||||
for( MidiPort::Map::ConstIterator it = map.begin();
|
||||
it != map.end(); ++it )
|
||||
{
|
||||
QAction * a = addAction( it.key() );
|
||||
@@ -101,5 +100,5 @@ void midiPortMenu::updatePorts( void )
|
||||
|
||||
|
||||
|
||||
#include "moc_midi_port_menu.cxx"
|
||||
#include "moc_MidiPortMenu.cxx"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
* effect_view.cpp - view-component for an effect
|
||||
*
|
||||
* Copyright (c) 2006-2007 Danny McRae <khjklujn/at/users.sourceforge.net>
|
||||
* Copyright (c) 2007-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2007-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -32,7 +32,6 @@
|
||||
#include <QtGui/QMdiSubWindow>
|
||||
#include <QtGui/QPainter>
|
||||
|
||||
#include "audio_port.h"
|
||||
#include "caption_menu.h"
|
||||
#include "effect_controls.h"
|
||||
#include "effect_control_dialog.h"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* instrument_midi_io_view.cpp - MIDI-IO-View
|
||||
*
|
||||
* Copyright (c) 2005-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
@@ -22,19 +22,17 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include <QtGui/QMenu>
|
||||
#include <QtGui/QToolButton>
|
||||
|
||||
|
||||
#include "instrument_midi_io_view.h"
|
||||
#include "midi_port_menu.h"
|
||||
#include "MidiPortMenu.h"
|
||||
#include "engine.h"
|
||||
#include "embed.h"
|
||||
#include "group_box.h"
|
||||
#include "gui_templates.h"
|
||||
#include "lcd_spinbox.h"
|
||||
#include "midi_client.h"
|
||||
#include "MidiClient.h"
|
||||
#include "mixer.h"
|
||||
#include "tooltip.h"
|
||||
|
||||
@@ -95,18 +93,16 @@ instrumentMidiIOView::instrumentMidiIOView( QWidget * _parent ) :
|
||||
m_outputProgramSpinBox, SLOT( setEnabled( bool ) ) );
|
||||
|
||||
|
||||
if( !engine::getMixer()->getMidiClient()->isRaw() )
|
||||
if( !engine::getMixer()->midiClient()->isRaw() )
|
||||
{
|
||||
m_rpBtn = new QToolButton( m_midiInputGroupBox );
|
||||
m_rpBtn->setText( tr( "MIDI-devices to receive "
|
||||
"MIDI-events from" ) );
|
||||
m_rpBtn->setText( tr( "MIDI devices to receive MIDI events from" ) );
|
||||
m_rpBtn->setIcon( embed::getIconPixmap( "piano" ) );
|
||||
m_rpBtn->setGeometry( 186, 24, 32, 32 );
|
||||
m_rpBtn->setPopupMode( QToolButton::InstantPopup );
|
||||
|
||||
m_wpBtn = new QToolButton( m_midiOutputGroupBox );
|
||||
m_wpBtn->setText( tr( "MIDI-devices to send MIDI-events "
|
||||
"to" ) );
|
||||
m_wpBtn->setText( tr( "MIDI devices to send MIDI events to" ) );
|
||||
m_wpBtn->setIcon( embed::getIconPixmap( "piano" ) );
|
||||
m_wpBtn->setGeometry( 186, 24, 32, 32 );
|
||||
m_wpBtn->setPopupMode( QToolButton::InstantPopup );
|
||||
@@ -123,9 +119,9 @@ instrumentMidiIOView::~instrumentMidiIOView()
|
||||
|
||||
|
||||
|
||||
void instrumentMidiIOView::modelChanged( void )
|
||||
void instrumentMidiIOView::modelChanged()
|
||||
{
|
||||
midiPort * mp = castModel<midiPort>();
|
||||
MidiPort * mp = castModel<MidiPort>();
|
||||
|
||||
m_midiInputGroupBox->setModel( &mp->m_readableModel );
|
||||
m_inputChannelSpinBox->setModel( &mp->m_inputChannelModel );
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
* (window + data-structures)
|
||||
*
|
||||
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -23,7 +23,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include <QtCore/QDir>
|
||||
#include <QtCore/QFile>
|
||||
#include <QtCore/QQueue>
|
||||
@@ -40,7 +39,7 @@
|
||||
#include <QtGui/QPainter>
|
||||
|
||||
#include "instrument_track.h"
|
||||
#include "audio_port.h"
|
||||
#include "AudioPort.h"
|
||||
#include "automation_pattern.h"
|
||||
#include "bb_track.h"
|
||||
#include "config_mgr.h"
|
||||
@@ -62,8 +61,8 @@
|
||||
#include "lcd_spinbox.h"
|
||||
#include "led_checkbox.h"
|
||||
#include "main_window.h"
|
||||
#include "midi_client.h"
|
||||
#include "midi_port_menu.h"
|
||||
#include "MidiClient.h"
|
||||
#include "MidiPortMenu.h"
|
||||
#include "mmp.h"
|
||||
#include "note_play_handle.h"
|
||||
#include "pattern.h"
|
||||
@@ -94,7 +93,7 @@ instrumentTrack::instrumentTrack( trackContainer * _tc ) :
|
||||
track( InstrumentTrack, _tc ),
|
||||
MidiEventProcessor(),
|
||||
m_audioPort( tr( "unnamed_track" ) ),
|
||||
m_midiPort( tr( "unnamed_track" ), engine::getMixer()->getMidiClient(),
|
||||
m_midiPort( tr( "unnamed_track" ), engine::getMixer()->midiClient(),
|
||||
this, this ),
|
||||
m_notes(),
|
||||
m_baseNoteModel( 0, 0, KeysPerOctave * NumOctaves - 1, this,
|
||||
@@ -365,12 +364,12 @@ void instrumentTrack::processOutEvent( const midiEvent & _me,
|
||||
if( m_runningMidiNotes[k] > 0 )
|
||||
{
|
||||
m_instrument->handleMidiEvent(
|
||||
midiEvent( MidiNoteOff, getMidiPort()->realOutputChannel(), k, 0 ),
|
||||
midiEvent( MidiNoteOff, midiPort()->realOutputChannel(), k, 0 ),
|
||||
_time );
|
||||
}
|
||||
++m_runningMidiNotes[k];
|
||||
m_instrument->handleMidiEvent(
|
||||
midiEvent( MidiNoteOn, getMidiPort()->realOutputChannel(), k,
|
||||
midiEvent( MidiNoteOn, midiPort()->realOutputChannel(), k,
|
||||
_me.velocity() ), _time );
|
||||
}
|
||||
break;
|
||||
@@ -386,7 +385,7 @@ void instrumentTrack::processOutEvent( const midiEvent & _me,
|
||||
--m_runningMidiNotes[k] <= 0 )
|
||||
{
|
||||
m_instrument->handleMidiEvent(
|
||||
midiEvent( MidiNoteOff, getMidiPort()->realOutputChannel(), k, 0 ),
|
||||
midiEvent( MidiNoteOff, midiPort()->realOutputChannel(), k, 0 ),
|
||||
_time );
|
||||
}
|
||||
break;
|
||||
@@ -539,7 +538,7 @@ void instrumentTrack::updatePitch( void )
|
||||
{
|
||||
updateBaseNote();
|
||||
processOutEvent( midiEvent( MidiPitchBend,
|
||||
getMidiPort()->realOutputChannel(),
|
||||
midiPort()->realOutputChannel(),
|
||||
midiPitch() ), 0 );
|
||||
}
|
||||
|
||||
@@ -908,12 +907,12 @@ instrumentTrackView::instrumentTrackView( instrumentTrack * _it,
|
||||
m_midiMenu = new QMenu( tr( "MIDI" ), this );
|
||||
|
||||
// sequenced MIDI?
|
||||
if( !engine::getMixer()->getMidiClient()->isRaw() )
|
||||
if( !engine::getMixer()->midiClient()->isRaw() )
|
||||
{
|
||||
_it->m_midiPort.m_readablePortsMenu = new midiPortMenu(
|
||||
midiPort::Input );
|
||||
_it->m_midiPort.m_writablePortsMenu = new midiPortMenu(
|
||||
midiPort::Output );
|
||||
_it->m_midiPort.m_readablePortsMenu = new MidiPortMenu(
|
||||
MidiPort::Input );
|
||||
_it->m_midiPort.m_writablePortsMenu = new MidiPortMenu(
|
||||
MidiPort::Output );
|
||||
_it->m_midiPort.m_readablePortsMenu->setModel(
|
||||
&_it->m_midiPort );
|
||||
_it->m_midiPort.m_writablePortsMenu->setModel(
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
* Copyright (c) 2005-2007 Danny McRae <khjklujn/at/yahoo.com>
|
||||
*
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -23,7 +23,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include <QtXml/QDomElement>
|
||||
#include <QtCore/QTimer>
|
||||
#include <QtGui/QMenu>
|
||||
@@ -34,8 +33,6 @@
|
||||
#include <QtGui/QPushButton>
|
||||
#include <QtAlgorithms>
|
||||
|
||||
|
||||
|
||||
#include "pattern.h"
|
||||
#include "instrument_track.h"
|
||||
#include "templates.h"
|
||||
@@ -46,7 +43,7 @@
|
||||
#include "track_container.h"
|
||||
#include "rename_dialog.h"
|
||||
#include "sample_buffer.h"
|
||||
#include "audio_sample_recorder.h"
|
||||
#include "AudioSampleRecorder.h"
|
||||
#include "song.h"
|
||||
#include "tooltip.h"
|
||||
#include "bb_track_container.h"
|
||||
@@ -743,8 +740,8 @@ void patternFreezeThread::run( void )
|
||||
bool b;
|
||||
// we cannot create local copy, because at a later stage
|
||||
// mixer::restoreAudioDevice(...) deletes old audio-dev and thus
|
||||
// audioSampleRecorder would be destroyed two times...
|
||||
audioSampleRecorder * freeze_recorder = new audioSampleRecorder(
|
||||
// AudioSampleRecorder would be destroyed two times...
|
||||
AudioSampleRecorder * freeze_recorder = new AudioSampleRecorder(
|
||||
DEFAULT_CHANNELS, b,
|
||||
engine::getMixer() );
|
||||
engine::getMixer()->setAudioDevice( freeze_recorder );
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
* sample_track.cpp - implementation of class sampleTrack, a track which
|
||||
* provides arrangement of samples
|
||||
*
|
||||
* Copyright (c) 2005-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -23,7 +23,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include <QtXml/QDomElement>
|
||||
#include <QtGui/QDropEvent>
|
||||
#include <QtGui/QMenu>
|
||||
@@ -38,7 +37,7 @@
|
||||
#include "embed.h"
|
||||
#include "engine.h"
|
||||
#include "tooltip.h"
|
||||
#include "audio_port.h"
|
||||
#include "AudioPort.h"
|
||||
#include "sample_play_handle.h"
|
||||
#include "sample_record_handle.h"
|
||||
#include "string_pair_drag.h"
|
||||
@@ -53,7 +52,7 @@ sampleTCO::sampleTCO( track * _track ) :
|
||||
trackContentObject( _track ),
|
||||
m_sampleBuffer( new sampleBuffer )
|
||||
{
|
||||
saveJournallingState( FALSE );
|
||||
saveJournallingState( false );
|
||||
setSampleFile( "" );
|
||||
restoreJournallingState();
|
||||
|
||||
@@ -83,9 +82,9 @@ void sampleTCO::changeLength( const midiTime & _length )
|
||||
|
||||
|
||||
|
||||
const QString & sampleTCO::sampleFile( void ) const
|
||||
const QString & sampleTCO::sampleFile() const
|
||||
{
|
||||
return( m_sampleBuffer->audioFile() );
|
||||
return m_sampleBuffer->audioFile();
|
||||
}
|
||||
|
||||
|
||||
@@ -112,7 +111,7 @@ void sampleTCO::setSampleFile( const QString & _sf )
|
||||
|
||||
|
||||
|
||||
void sampleTCO::toggleRecord( void )
|
||||
void sampleTCO::toggleRecord()
|
||||
{
|
||||
m_recordModel.setValue( !m_recordModel.value() );
|
||||
emit dataChanged();
|
||||
@@ -129,9 +128,9 @@ void sampleTCO::updateLength( bpm_t )
|
||||
|
||||
|
||||
|
||||
midiTime sampleTCO::sampleLength( void ) const
|
||||
midiTime sampleTCO::sampleLength() const
|
||||
{
|
||||
return( (int)( m_sampleBuffer->frames() / engine::framesPerTick() ) );
|
||||
return (int)( m_sampleBuffer->frames() / engine::framesPerTick() );
|
||||
}
|
||||
|
||||
|
||||
@@ -181,7 +180,7 @@ void sampleTCO::loadSettings( const QDomElement & _this )
|
||||
|
||||
trackContentObjectView * sampleTCO::createView( trackView * _tv )
|
||||
{
|
||||
return( new sampleTCOView( this, _tv ) );
|
||||
return new sampleTCOView( this, _tv );
|
||||
}
|
||||
|
||||
|
||||
@@ -211,7 +210,7 @@ sampleTCOView::~sampleTCOView()
|
||||
|
||||
|
||||
|
||||
void sampleTCOView::updateSample( void )
|
||||
void sampleTCOView::updateSample()
|
||||
{
|
||||
update();
|
||||
// set tooltip to filename so that user can see what sample this
|
||||
@@ -227,7 +226,7 @@ void sampleTCOView::updateSample( void )
|
||||
void sampleTCOView::contextMenuEvent( QContextMenuEvent * _cme )
|
||||
{
|
||||
QMenu contextMenu( this );
|
||||
if( fixedTCOs() == FALSE )
|
||||
if( fixedTCOs() == false )
|
||||
{
|
||||
contextMenu.addAction( embed::getIconPixmap( "cancel" ),
|
||||
tr( "Delete (middle mousebutton)" ),
|
||||
@@ -258,7 +257,7 @@ void sampleTCOView::contextMenuEvent( QContextMenuEvent * _cme )
|
||||
void sampleTCOView::dragEnterEvent( QDragEnterEvent * _dee )
|
||||
{
|
||||
if( stringPairDrag::processDragEnterEvent( _dee,
|
||||
"samplefile,sampledata" ) == FALSE )
|
||||
"samplefile,sampledata" ) == false )
|
||||
{
|
||||
trackContentObjectView::dragEnterEvent( _dee );
|
||||
}
|
||||
@@ -406,7 +405,7 @@ bool sampleTrack::play( const midiTime & _start, const fpp_t _frames,
|
||||
Sint16 /*_tco_num*/ )
|
||||
{
|
||||
m_audioPort.getEffects()->startRunning();
|
||||
bool played_a_note = FALSE; // will be return variable
|
||||
bool played_a_note = false; // will be return variable
|
||||
|
||||
for( int i = 0; i < numOfTCOs(); ++i )
|
||||
{
|
||||
@@ -423,7 +422,7 @@ bool sampleTrack::play( const midiTime & _start, const fpp_t _frames,
|
||||
{
|
||||
if( !engine::getSong()->isRecording() )
|
||||
{
|
||||
return( played_a_note );
|
||||
return played_a_note;
|
||||
}
|
||||
sampleRecordHandle * smpHandle = new sampleRecordHandle( st );
|
||||
handle = smpHandle;
|
||||
@@ -439,11 +438,11 @@ bool sampleTrack::play( const midiTime & _start, const fpp_t _frames,
|
||||
handle->setOffset( _offset );
|
||||
// send it to the mixer
|
||||
engine::getMixer()->addPlayHandle( handle );
|
||||
played_a_note = TRUE;
|
||||
played_a_note = true;
|
||||
}
|
||||
}
|
||||
|
||||
return( played_a_note );
|
||||
return played_a_note;
|
||||
}
|
||||
|
||||
|
||||
@@ -451,7 +450,7 @@ bool sampleTrack::play( const midiTime & _start, const fpp_t _frames,
|
||||
|
||||
trackView * sampleTrack::createView( trackContainerView * _tcv )
|
||||
{
|
||||
return( new sampleTrackView( this, _tcv ) );
|
||||
return new sampleTrackView( this, _tcv );
|
||||
}
|
||||
|
||||
|
||||
@@ -459,7 +458,7 @@ trackView * sampleTrack::createView( trackContainerView * _tcv )
|
||||
|
||||
trackContentObject * sampleTrack::createTCO( const midiTime & )
|
||||
{
|
||||
return( new sampleTCO( this ) );
|
||||
return new sampleTCO( this );
|
||||
}
|
||||
|
||||
|
||||
@@ -518,19 +517,19 @@ sampleTrackView::sampleTrackView( sampleTrack * _t, trackContainerView * _tcv )
|
||||
|
||||
m_volumeKnob = new knob( knobSmall_17, getTrackSettingsWidget(),
|
||||
tr( "Track volume" ) );
|
||||
m_volumeKnob->setVolumeKnob( TRUE );
|
||||
m_volumeKnob->setVolumeKnob( true );
|
||||
m_volumeKnob->setModel( &_t->m_volumeModel );
|
||||
m_volumeKnob->setHintText( tr( "Channel volume:" ) + " ", "%" );
|
||||
m_volumeKnob->move( DEFAULT_SETTINGS_WIDGET_WIDTH-2*24, 4 );
|
||||
m_volumeKnob->setLabel( tr( "VOL" ) );
|
||||
m_volumeKnob->show();
|
||||
|
||||
m_effectRack = new effectRackView( _t->getAudioPort()->getEffects() );
|
||||
m_effectRack = new effectRackView( _t->audioPort()->getEffects() );
|
||||
m_effectRack->setFixedSize( 240, 242 );
|
||||
|
||||
engine::getMainWindow()->workspace()->addSubWindow( m_effectRack );
|
||||
m_effWindow = m_effectRack->parentWidget();
|
||||
m_effWindow->setAttribute( Qt::WA_DeleteOnClose, FALSE );
|
||||
m_effWindow->setAttribute( Qt::WA_DeleteOnClose, false );
|
||||
m_effWindow->layout()->setSizeConstraint( QLayout::SetFixedSize );
|
||||
m_effWindow->setWindowTitle( _t->name() );
|
||||
m_effWindow->hide();
|
||||
@@ -547,7 +546,7 @@ sampleTrackView::~sampleTrackView()
|
||||
|
||||
|
||||
|
||||
void sampleTrackView::showEffects( void )
|
||||
void sampleTrackView::showEffects()
|
||||
{
|
||||
if( m_effWindow->isHidden() )
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user