widget.cpp
62 lines
| 1.7 KiB
| text/x-c
|
CppLexer
Marek Rosa
|
r2155 | #include "widget.h" | ||
#include <QAudioDeviceInfo> | ||||
#include <QAudioInput> | ||||
#include <QChartView> | ||||
#include <QLineSeries> | ||||
#include <QChart> | ||||
#include <QVBoxLayout> | ||||
#include <QValueAxis> | ||||
#include "xyseriesiodevice.h" | ||||
QTCOMMERCIALCHART_USE_NAMESPACE | ||||
Widget::Widget(QWidget *parent) | ||||
: QWidget(parent), | ||||
m_device(0), | ||||
m_chart(0), | ||||
m_series(0), | ||||
m_audioInput(0) | ||||
{ | ||||
m_chart = new QChart; | ||||
QChartView *chartView = new QChartView(m_chart); | ||||
chartView->setMinimumSize(800, 600); | ||||
m_series = new QLineSeries; | ||||
m_chart->addSeries(m_series); | ||||
QValueAxis *axisX = new QValueAxis; | ||||
Marek Rosa
|
r2214 | axisX->setRange(0, 2000); | ||
axisX->setLabelFormat("%g"); | ||||
Michal Klocek
|
r2273 | axisX->setTitleText("Samples"); | ||
Marek Rosa
|
r2155 | QValueAxis *axisY = new QValueAxis; | ||
Marek Rosa
|
r2214 | axisY->setRange(-1, 1); | ||
Michal Klocek
|
r2273 | axisY->setTitleText("Audio level"); | ||
m_chart->setAxisX(axisX, m_series); | ||||
Marek Rosa
|
r2155 | m_chart->setAxisY(axisY, m_series); | ||
Marek Rosa
|
r2159 | m_chart->legend()->hide(); | ||
Marek Rosa
|
r2214 | m_chart->setTitle("Data from the microphone"); | ||
Marek Rosa
|
r2155 | |||
QVBoxLayout *mainLayout = new QVBoxLayout; | ||||
mainLayout->addWidget(chartView); | ||||
setLayout(mainLayout); | ||||
QAudioFormat formatAudio; | ||||
Tero Ahola
|
r2239 | formatAudio.setSampleRate(8000); | ||
formatAudio.setChannelCount(1); | ||||
Marek Rosa
|
r2155 | formatAudio.setSampleSize(8); | ||
formatAudio.setCodec("audio/pcm"); | ||||
formatAudio.setByteOrder(QAudioFormat::LittleEndian); | ||||
formatAudio.setSampleType(QAudioFormat::UnSignedInt); | ||||
QAudioDeviceInfo inputDevices = QAudioDeviceInfo::defaultInputDevice(); | ||||
m_audioInput = new QAudioInput(inputDevices,formatAudio, this); | ||||
m_device = new XYSeriesIODevice(m_series, this); | ||||
m_device->open(QIODevice::WriteOnly); | ||||
m_audioInput->start(m_device); | ||||
} | ||||
Widget::~Widget() | ||||
{ | ||||
m_audioInput->stop(); | ||||
m_device->close(); | ||||
} | ||||