/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /*************************************************************************** * mainwindow.cc * * Tue Nov 10 10:21:04 CET 2009 * Copyright 2009 Bent Bisballe Nyeng * deva@aasimon.org ****************************************************************************/ /* * This file is part of DrumGizmo. * * DrumGizmo is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * DrumGizmo is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with DrumGizmo; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #include "mainwindow.h" #include #include #include #define MAXVAL 10000000L #define SINGLESTEP MAXVAL/100000 #define PAGESTEP MAXVAL/10000 MainWindow::MainWindow() { QHBoxLayout *lh = new QHBoxLayout(); QVBoxLayout *lv = new QVBoxLayout(); setLayout(lv); extractor = new AudioExtractor(this); canvas = new Canvas(this); lh->addWidget(canvas); yoffset = new QScrollBar(Qt::Vertical); yoffset->setRange(0, MAXVAL); yoffset->setPageStep(PAGESTEP); yoffset->setSingleStep(SINGLESTEP); connect(yoffset, SIGNAL(valueChanged(int)), this, SLOT(setYOffset(int))); yscale = new QScrollBar(Qt::Vertical); yscale->setRange(0, MAXVAL); yscale->setPageStep(PAGESTEP); yscale->setSingleStep(SINGLESTEP); connect(yscale, SIGNAL(valueChanged(int)), this, SLOT(setYScale(int))); xscale = new QScrollBar(Qt::Horizontal); xscale->setRange(0, MAXVAL); xscale->setPageStep(PAGESTEP); xscale->setSingleStep(SINGLESTEP); connect(xscale, SIGNAL(valueChanged(int)), this, SLOT(setXScale(int))); xoffset = new QScrollBar(Qt::Horizontal); xoffset->setRange(0, MAXVAL); xoffset->setPageStep(PAGESTEP); xoffset->setSingleStep(SINGLESTEP); connect(xoffset, SIGNAL(valueChanged(int)), this, SLOT(setXOffset(int))); QPushButton *autosel = new QPushButton(); autosel->setText("Auto"); connect(autosel, SIGNAL(clicked()), canvas, SLOT(clearSelections())); connect(autosel, SIGNAL(clicked()), canvas, SLOT(autoCreateSelections())); QPushButton *clearsel = new QPushButton(); clearsel->setText("Clear"); connect(clearsel, SIGNAL(clicked()), canvas, SLOT(clearSelections())); QPushButton *exportsel = new QPushButton(); exportsel->setText("Export"); connect(exportsel, SIGNAL(clicked()), this, SLOT(doExport())); lh->addWidget(yscale); lh->addWidget(yoffset); lv->addLayout(lh); lv->addWidget(xscale); lv->addWidget(xoffset); lv->addWidget(autosel); lv->addWidget(clearsel); lv->addWidget(exportsel); extractor->setExportPath("/home/deva/tmp/drumgizmoexport"); extractor->setOutputPrefix("china"); extractor->addFile("/home/deva/aasimonster/tmp/china/Amb L-20.wav", "amb-l"); extractor->addFile("/home/deva/aasimonster/tmp/china/Amb R-20.wav", "amb-r"); extractor->addFile("/home/deva/aasimonster/tmp/china/OH L-20.wav", "oh-l"); extractor->addFile("/home/deva/aasimonster/tmp/china/OH R-20.wav", "oh-r"); canvas->load("/home/deva/aasimonster/tmp/china/OH L-20.wav"); yscale->setValue(MAXVAL); yoffset->setValue(MAXVAL/2); xscale->setValue(0); xoffset->setValue(0); resize(800, 600); } void MainWindow::setXScale(int sz) { // range 0.0 - 1.0 float val = (float)(sz * -1 + MAXVAL)/(float)MAXVAL; canvas->setXScale(val); if(val < 0.001) val = 0.001; xoffset->setPageStep(PAGESTEP * 10 * val); xoffset->setSingleStep(SINGLESTEP * 10 * val); } void MainWindow::setYScale(int sz) { // range 0.0 - 1.0 float val = (float)(sz * -1 + MAXVAL)/(float)MAXVAL; canvas->setYScale(val); } void MainWindow::setXOffset(int of) { // range 0.0 - 1.0 float val = (float)of/(float)MAXVAL; canvas->setXOffset(val); } void MainWindow::setYOffset(int of) { // range 0.0 - 1.0 float val = (float)(of * -1 + MAXVAL)/(float)MAXVAL; canvas->setYOffset(val); } void MainWindow::doExport() { extractor->exportSelections(canvas->selections()); }