Mercurial > hg > gpsynth
view src/sc_evaluator.hpp @ 0:add35537fdbb tip
Initial import
author | irh <ian.r.hobson@gmail.com> |
---|---|
date | Thu, 25 Aug 2011 11:05:55 +0100 |
parents | |
children |
line wrap: on
line source
// Copyright 2011, Ian Hobson. // // This file is part of gpsynth. // // gpsynth 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 3 of the License, or // (at your option) any later version. // // gpsynth 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 gpsynth in the file COPYING. // If not, see http://www.gnu.org/licenses/. // Evaluator for SuperCollider synth graphs. Sends converted synthdefs to // SuperCollider for rendering. #pragma once #include "evaluator.hpp" #include "file_comparer.hpp" #include "sc_grammar.hpp" #include "boost/shared_ptr.hpp" #include "boost/thread/barrier.hpp" #include "boost/thread/condition_variable.hpp" #include "boost/thread/mutex.hpp" #include <queue> #include <string> namespace sc { // forward declaration of worker class EvaluatorWorker; typedef boost::shared_ptr<EvaluatorWorker> EvaluatorWorkerPtr; class Evaluator : public EvaluatorInterface { friend class EvaluatorWorker; const sc::Grammar& grammar_; const std::string sc_app_path_; const std::string sc_plugins_path_; const std::string sclang_path_; const std::string scsynth_path_; std::string work_folder_; std::string osc_folder_; std::string audio_folder_; std::string sc_folder_; std::string synthdef_folder_; std::queue<sg::Graph*> work_queue_; boost::mutex work_mutex_; boost::condition_variable queue_condition_; boost::condition_variable work_done_condition_; boost::shared_ptr<boost::barrier> work_done_barrier_; std::vector<EvaluatorWorkerPtr> workers_; std::size_t graphs_to_rate_; EvaluatorListenerInterface* listener_; int synth_name_zero_pad_length_; public: Evaluator(const sc::Grammar& grammar, const std::string& sc_app_path, const dsp::FileComparer& target, int core_limit = 0); ~Evaluator(); void RateGraphs(std::vector<sg::Graph>& graphs); void SetWorkFolder(const std::string& path); void SetListener(EvaluatorListenerInterface* listener) { listener_ = listener; } }; } // sc namespace