/* ZynAddSubFX - a software synthesizer Bank.h - Instrument Bank Copyright (C) 2002-2005 Nasca Octavian Paul Author: Nasca Octavian Paul This program is free software; you can redistribute it and/or modify it under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation. This program 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 (version 2 or later) for more details. You should have received a copy of the GNU General Public License (version 2) along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef BANK_H #define BANK_H #include #include //entries in a bank #define BANK_SIZE 160 /**The instrument Bank*/ class Bank { public: /**Constructor*/ Bank(); ~Bank(); std::string getname(unsigned int ninstrument); std::string getnamenumbered(unsigned int ninstrument); void setname(unsigned int ninstrument, const std::string &newname, int newslot); //if newslot==-1 then this is ignored, else it will be put on that slot bool isPADsynth_used(unsigned int ninstrument); /**returns true when slot is empty*/ bool emptyslot(unsigned int ninstrument); /**Empties out the selected slot*/ void clearslot(unsigned int ninstrument); /**Saves the given Part to slot*/ void savetoslot(unsigned int ninstrument, class Part * part); /**Loads the given slot into a Part*/ void loadfromslot(unsigned int ninstrument, class Part * part); /**Swaps Slots*/ void swapslot(unsigned int n1, unsigned int n2); int loadbank(std::string bankdirname); int newbank(std::string newbankdirname); std::string bankfiletitle; //this is shown on the UI of the bank (the title of the window) int locked(); void rescanforbanks(); struct bankstruct { bool operator<(const bankstruct &b) const; std::string dir; std::string name; }; std::vector banks; private: //it adds a filename to the bank //if pos is -1 it try to find a position //returns -1 if the bank is full, or 0 if the instrument was added int addtobank(int pos, std::string filename, std::string name); void deletefrombank(int pos); void clearbank(); std::string defaultinsname; struct ins_t { ins_t(); bool used; std::string name; std::string filename; struct { bool PADsynth_used; } info; } ins[BANK_SIZE]; std::string dirname; void scanrootdir(std::string rootdir); //scans a root dir for banks }; #endif