--- linuxsampler/trunk/src/network/lscpserver.h 2005/03/17 23:56:56 475 +++ linuxsampler/trunk/src/network/lscpserver.h 2006/12/15 21:40:27 973 @@ -3,7 +3,7 @@ * LinuxSampler - modular, streaming capable sampler * * * * Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck * - * Copyright (C) 2005 Christian Schoenebeck * + * Copyright (C) 2005, 2006 Christian Schoenebeck * * * * This library is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * @@ -40,13 +40,15 @@ #include "lscpparser.h" #include "lscp.h" #include "lscpevent.h" -#include "lscpinstrumentloader.h" #include "../Sampler.h" #include "../common/Thread.h" #include "../common/Mutex.h" #include "../common/Condition.h" +#include "../drivers/midi/MidiInstrumentMapper.h" + /// TCP Port on which the server should listen for connection requests. +#define LSCP_ADDR INADDR_ANY #define LSCP_PORT 8888 /// try up to 3 minutes to bind server socket @@ -63,7 +65,7 @@ */ class LSCPServer : public Thread { public: - LSCPServer(Sampler* pSampler); + LSCPServer(Sampler* pSampler, long int addr, short int port); virtual ~LSCPServer(); int WaitUntilInitialized(long TimeoutSeconds = 0L, long TimeoutNanoSeconds = 0L); @@ -77,13 +79,16 @@ String AddChannel(); String RemoveChannel(uint uiSamplerChannel); String GetAvailableEngines(); + String ListAvailableEngines(); String GetEngineInfo(String EngineName); String GetChannelInfo(uint uiSamplerChannel); String GetVoiceCount(uint uiSamplerChannel); String GetStreamCount(uint uiSamplerChannel); String GetBufferFill(fill_response_t ResponseType, uint uiSamplerChannel); String GetAvailableAudioOutputDrivers(); + String ListAvailableAudioOutputDrivers(); String GetAvailableMidiInputDrivers(); + String ListAvailableMidiInputDrivers(); String GetAudioOutputDriverInfo(String Driver); String GetMidiInputDriverInfo(String Driver); #ifdef __GNUC__ @@ -121,8 +126,30 @@ String SetMIDIInputType(String MidiInputDriver, uint uiSamplerChannel); String SetMIDIInput(uint MIDIDeviceId, uint MIDIPort, uint MIDIChannel, uint uiSamplerChannel); String SetVolume(double dVolume, uint uiSamplerChannel); + String SetChannelMute(bool bMute, uint uiSamplerChannel); + String SetChannelSolo(bool bSolo, uint uiSamplerChannel); + String AddOrReplaceMIDIInstrumentMapping(uint MidiMapID, uint MidiBank, uint MidiProg, String EngineType, String InstrumentFile, uint InstrumentIndex, float Volume, MidiInstrumentMapper::mode_t LoadMode, String Name); + String RemoveMIDIInstrumentMapping(uint MidiMapID, uint MidiBank, uint MidiProg); + String GetMidiInstrumentMappings(uint MidiMapID); + String GetAllMidiInstrumentMappings(); + String GetMidiInstrumentMapping(uint MidiMapID, uint MidiBank, uint MidiProg); + String ListMidiInstrumentMappings(uint MidiMapID); + String ListAllMidiInstrumentMappings(); + String ClearMidiInstrumentMappings(uint MidiMapID); + String ClearAllMidiInstrumentMappings(); + String AddMidiInstrumentMap(String MapName = ""); + String RemoveMidiInstrumentMap(uint MidiMapID); + String RemoveAllMidiInstrumentMaps(); + String GetMidiInstrumentMaps(); + String ListMidiInstrumentMaps(); + String GetMidiInstrumentMap(uint MidiMapID); + String SetMidiInstrumentMapName(uint MidiMapID, String NewName); + String SetChannelMap(uint uiSamplerChannel, int MidiMapID); String ResetChannel(uint uiSamplerChannel); String ResetSampler(); + String GetServerInfo(); + String GetTotalVoiceCount(); + String GetTotalVoiceCountMax(); String SubscribeNotification(LSCPEvent::event_t); String UnsubscribeNotification(LSCPEvent::event_t); String QueryDatabase(String query); @@ -142,7 +169,6 @@ sockaddr_in SocketAddress; Sampler* pSampler; Condition Initialized; - LSCPInstrumentLoader InstrumentLoader; ///< thread responsible for loading instruments in the background int Main(); ///< Implementation of virtual method from class Thread @@ -158,6 +184,10 @@ */ int GetMidiInputDeviceIndex (MidiInputDevice *pDevice); + bool HasSoloChannel(); + void MuteNonSoloChannels(); + void UnmuteChannels(); + static std::map bufferedNotifies; static Mutex NotifyMutex; static Mutex NotifyBufferMutex;