annotate base/PlayParameterRepository.cpp @ 61:749b5521e082

* adjust for latency if the plugin reports it
author Chris Cannam
date Mon, 27 Mar 2006 16:15:19 +0000
parents 7439f1696314
children f277a171749d
rev   line source
Chris@49 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@28 2
Chris@28 3 /*
Chris@52 4 Sonic Visualiser
Chris@52 5 An audio file viewer and annotation editor.
Chris@52 6 Centre for Digital Music, Queen Mary, University of London.
Chris@52 7 This file copyright 2006 Chris Cannam.
Chris@28 8
Chris@52 9 This program is free software; you can redistribute it and/or
Chris@52 10 modify it under the terms of the GNU General Public License as
Chris@52 11 published by the Free Software Foundation; either version 2 of the
Chris@52 12 License, or (at your option) any later version. See the file
Chris@52 13 COPYING included with this distribution for more information.
Chris@28 14 */
Chris@28 15
Chris@28 16 #include "PlayParameterRepository.h"
Chris@28 17 #include "PlayParameters.h"
Chris@28 18
Chris@30 19 //!!! shouldn't be including this here -- restructure needed
Chris@30 20 #include "audioio/AudioGenerator.h"
Chris@30 21
Chris@29 22 #include <iostream>
Chris@29 23
Chris@28 24 PlayParameterRepository *
Chris@28 25 PlayParameterRepository::m_instance = new PlayParameterRepository;
Chris@28 26
Chris@28 27 PlayParameterRepository *
Chris@28 28 PlayParameterRepository::instance()
Chris@28 29 {
Chris@28 30 return m_instance;
Chris@28 31 }
Chris@28 32
Chris@28 33 PlayParameterRepository::~PlayParameterRepository()
Chris@28 34 {
Chris@28 35 }
Chris@28 36
Chris@30 37 void
Chris@30 38 PlayParameterRepository::addModel(const Model *model)
Chris@30 39 {
Chris@30 40 if (!getPlayParameters(model)) {
Chris@30 41
Chris@30 42 // Give all models the same type of play parameters for the
Chris@30 43 // moment, provided they can be played at all
Chris@30 44
Chris@30 45 if (AudioGenerator::canPlay(model)) {
Chris@30 46
Chris@30 47 std::cerr << "PlayParameterRepository: Adding play parameters for " << model << std::endl;
Chris@30 48
Chris@30 49 m_playParameters[model] = new PlayParameters;
Chris@30 50
Chris@57 51 m_playParameters[model]->setPlayPluginId
Chris@57 52 (AudioGenerator::getDefaultPlayPluginId(model));
Chris@57 53
Chris@57 54 m_playParameters[model]->setPlayPluginConfiguration
Chris@57 55 (AudioGenerator::getDefaultPlayPluginConfiguration(model));
Chris@57 56
Chris@30 57 connect(m_playParameters[model], SIGNAL(playParametersChanged()),
Chris@30 58 this, SLOT(playParametersChanged()));
Chris@30 59
Chris@57 60 connect(m_playParameters[model], SIGNAL(playPluginIdChanged(QString)),
Chris@57 61 this, SLOT(playPluginIdChanged(QString)));
Chris@57 62
Chris@57 63 connect(m_playParameters[model], SIGNAL(playPluginConfigurationChanged(QString)),
Chris@57 64 this, SLOT(playPluginConfigurationChanged(QString)));
Chris@57 65
Chris@30 66 } else {
Chris@30 67
Chris@30 68 std::cerr << "PlayParameterRepository: Model " << model << " not playable" << std::endl;
Chris@30 69 }
Chris@30 70 }
Chris@30 71 }
Chris@30 72
Chris@30 73 void
Chris@30 74 PlayParameterRepository::removeModel(const Model *model)
Chris@30 75 {
Chris@30 76 delete m_playParameters[model];
Chris@30 77 m_playParameters.erase(model);
Chris@30 78 }
Chris@30 79
Chris@28 80 PlayParameters *
Chris@30 81 PlayParameterRepository::getPlayParameters(const Model *model) const
Chris@28 82 {
Chris@30 83 if (m_playParameters.find(model) == m_playParameters.end()) return 0;
Chris@30 84 return m_playParameters.find(model)->second;
Chris@28 85 }
Chris@28 86
Chris@28 87 void
Chris@29 88 PlayParameterRepository::playParametersChanged()
Chris@29 89 {
Chris@57 90 PlayParameters *params = dynamic_cast<PlayParameters *>(sender());
Chris@57 91 emit playParametersChanged(params);
Chris@57 92 }
Chris@57 93
Chris@57 94 void
Chris@57 95 PlayParameterRepository::playPluginIdChanged(QString id)
Chris@57 96 {
Chris@57 97 PlayParameters *params = dynamic_cast<PlayParameters *>(sender());
Chris@57 98 for (ModelParameterMap::iterator i = m_playParameters.begin();
Chris@57 99 i != m_playParameters.end(); ++i) {
Chris@57 100 if (i->second == params) {
Chris@57 101 emit playPluginIdChanged(i->first, id);
Chris@57 102 return;
Chris@57 103 }
Chris@57 104 }
Chris@57 105 }
Chris@57 106
Chris@57 107 void
Chris@57 108 PlayParameterRepository::playPluginConfigurationChanged(QString config)
Chris@57 109 {
Chris@57 110 PlayParameters *params = dynamic_cast<PlayParameters *>(sender());
Chris@57 111 for (ModelParameterMap::iterator i = m_playParameters.begin();
Chris@57 112 i != m_playParameters.end(); ++i) {
Chris@57 113 if (i->second == params) {
Chris@57 114 emit playPluginConfigurationChanged(i->first, config);
Chris@57 115 return;
Chris@57 116 }
Chris@57 117 }
Chris@29 118 }
Chris@29 119
Chris@29 120 void
Chris@28 121 PlayParameterRepository::clear()
Chris@28 122 {
Chris@30 123 std::cerr << "PlayParameterRepository: PlayParameterRepository::clear" << std::endl;
Chris@28 124 while (!m_playParameters.empty()) {
Chris@28 125 delete m_playParameters.begin()->second;
Chris@28 126 m_playParameters.erase(m_playParameters.begin());
Chris@28 127 }
Chris@28 128 }
Chris@28 129