/[svn]/qsampler/trunk/src/qsamplerChannel.cpp
ViewVC logotype

Annotation of /qsampler/trunk/src/qsamplerChannel.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 264 - (hide annotations) (download)
Wed Sep 29 13:12:45 2004 UTC (19 years, 5 months ago) by capela
File size: 9076 byte(s)
Initial rewrite of sampler channel strips internal control structures.

1 capela 264 // qsamplerChannel.cpp
2     //
3     /****************************************************************************
4     Copyright (C) 2003-2004, rncbc aka Rui Nuno Capela. All rights reserved.
5    
6     This program is free software; you can redistribute it and/or
7     modify it under the terms of the GNU General Public License
8     as published by the Free Software Foundation; either version 2
9     of the License, or (at your option) any later version.
10    
11     This program is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14     GNU General Public License for more details.
15    
16     You should have received a copy of the GNU General Public License
17     along with this program; if not, write to the Free Software
18     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19    
20     *****************************************************************************/
21    
22     #include "qsamplerChannel.h"
23    
24     #include "qsamplerMainForm.h"
25    
26     #include "config.h"
27    
28    
29     //-------------------------------------------------------------------------
30     // qsamplerChannel - Sampler channel structure.
31     //
32    
33     // Constructor.
34     qsamplerChannel::qsamplerChannel ( qsamplerMainForm *pMainForm, int iChannelID )
35     {
36     m_pMainForm = pMainForm;
37     m_iChannelID = iChannelID;
38    
39     // m_sEngineName = QObject::tr("(No engine)");
40     // m_sInstrumentFile = QObject::tr("(No instrument)");
41     m_iInstrumentNr = -1;
42     m_iInstrumentStatus = -1;
43     m_sMidiDriver = "Alsa"; // DEPRECATED.
44     m_iMidiDevice = -1;
45     m_iMidiPort = -1;
46     m_iMidiChannel = -1;
47     m_sAudioDriver = "Alsa"; // DEPRECATED.
48     m_iAudioDevice = -1;
49     m_fVolume = 0.0;
50    
51     }
52    
53     // Default destructor.
54     qsamplerChannel::~qsamplerChannel (void)
55     {
56     }
57    
58    
59     // The global options settings delegated property.
60     qsamplerOptions *qsamplerChannel::options (void)
61     {
62     if (m_pMainForm == NULL)
63     return NULL;
64    
65     return m_pMainForm->options();
66     }
67    
68    
69     // The client descriptor delegated property.
70     lscp_client_t *qsamplerChannel::client (void)
71     {
72     if (m_pMainForm == NULL)
73     return NULL;
74    
75     return m_pMainForm->client();
76     }
77    
78    
79     // Channel-ID (aka Sammpler-Channel) accessors.
80     int qsamplerChannel::channelID (void)
81     {
82     return m_iChannelID;
83     }
84    
85     void qsamplerChannel::setChannelID ( int iChannelID )
86     {
87     m_iChannelID = iChannelID;
88    
89     updateChannelInfo();
90     }
91    
92    
93     // Engine name accessors.
94     QString& qsamplerChannel::engineName (void)
95     {
96     return m_sEngineName;
97     }
98    
99     bool qsamplerChannel::loadEngine ( const QString& sEngineName )
100     {
101     if (client() == NULL)
102     return false;
103    
104     if (::lscp_load_engine(client(), sEngineName.latin1(), m_iChannelID) != LSCP_OK) {
105     appendMessagesClient("lscp_load_engine");
106     return false;
107     }
108    
109     m_sEngineName = sEngineName;
110     return true;
111     }
112    
113    
114     // Instrument filename accessor.
115     QString& qsamplerChannel::instrumentFile (void)
116     {
117     return m_sInstrumentFile;
118     }
119    
120     // Instrument index accessor.
121     int qsamplerChannel::instrumentNr (void)
122     {
123     return m_iInstrumentNr;
124     }
125    
126     // Instrument status accessor.
127     int qsamplerChannel::instrumentStatus (void)
128     {
129     return m_iInstrumentStatus;
130     }
131    
132     // Instrument file loader.
133     bool qsamplerChannel::loadInstrument ( const QString& sInstrumentFile, int iInstrumentNr )
134     {
135     if (client() == NULL)
136     return false;
137    
138     if (::lscp_load_instrument_non_modal(client(), sInstrumentFile.latin1(), iInstrumentNr, m_iChannelID) != LSCP_OK) {
139     appendMessagesClient("lscp_load_instrument");
140     return false;
141     }
142    
143     m_sInstrumentFile = sInstrumentFile;
144     m_iInstrumentNr = iInstrumentNr;
145     m_iInstrumentStatus = 0;
146    
147     return true;
148     }
149    
150    
151     // MIDI driver type accessors (DEPRECATED).
152     QString& qsamplerChannel::midiDriver (void)
153     {
154     return m_sMidiDriver;
155     }
156    
157     bool qsamplerChannel::setMidiDriver ( const QString& sMidiDriver )
158     {
159     if (client() == NULL)
160     return false;
161    
162     if (::lscp_set_channel_midi_type(client(), m_iChannelID, sMidiDriver.latin1()) != LSCP_OK) {
163     appendMessagesClient("lscp_set_channel_midi_type");
164     return false;
165     }
166    
167     m_sMidiDriver = sMidiDriver;
168     return true;
169     }
170    
171    
172     // MIDI device accessors.
173     int qsamplerChannel::midiDevice (void)
174     {
175     return m_iMidiDevice;
176     }
177    
178     bool qsamplerChannel::setMidiDevice ( int iMidiDevice )
179     {
180     if (client() == NULL)
181     return false;
182    
183     if (::lscp_set_channel_midi_device(client(), m_iChannelID, iMidiDevice) != LSCP_OK) {
184     appendMessagesClient("lscp_set_channel_midi_device");
185     return false;
186     }
187    
188     m_iMidiDevice = iMidiDevice;
189     return true;
190     }
191    
192    
193     // MIDI port number accessor.
194     int qsamplerChannel::midiPort (void)
195     {
196     return m_iMidiPort;
197     }
198    
199     bool qsamplerChannel::setMidiPort ( int iMidiPort )
200     {
201     if (client() == NULL)
202     return false;
203    
204     if (::lscp_set_channel_midi_port(client(), m_iChannelID, iMidiPort) != LSCP_OK) {
205     appendMessagesClient("lscp_set_channel_midi_port");
206     return false;
207     }
208    
209     m_iMidiPort = iMidiPort;
210     return true;
211     }
212    
213    
214     // MIDI channel accessor.
215     int qsamplerChannel::midiChannel (void)
216     {
217     return m_iMidiChannel;
218     }
219    
220     bool qsamplerChannel::setMidiChannel ( int iMidiChannel )
221     {
222     if (client() == NULL)
223     return false;
224    
225     if (::lscp_set_channel_midi_channel(client(), m_iChannelID, iMidiChannel) != LSCP_OK) {
226     appendMessagesClient("lscp_set_channel_midi_channel");
227     return false;
228     }
229    
230     m_iMidiChannel = iMidiChannel;
231     return true;
232     }
233    
234    
235     // Audio device accessor.
236     int qsamplerChannel::audioDevice (void)
237     {
238     return m_iAudioDevice;
239     }
240    
241     bool qsamplerChannel::setAudioDevice ( int iAudioDevice )
242     {
243     if (client() == NULL)
244     return false;
245    
246     if (::lscp_set_channel_audio_device(client(), m_iChannelID, iAudioDevice) != LSCP_OK) {
247     appendMessagesClient("lscp_set_channel_audio_device");
248     return false;
249     }
250    
251     m_iAudioDevice = iAudioDevice;
252     return true;
253     }
254    
255    
256     // Audio driver type accessors (DEPRECATED).
257     QString& qsamplerChannel::audioDriver (void)
258     {
259     return m_sAudioDriver;
260     }
261    
262     bool qsamplerChannel::setAudioDriver ( const QString& sAudioDriver )
263     {
264     if (client() == NULL)
265     return false;
266    
267     if (::lscp_set_channel_audio_type(client(), m_iChannelID, sAudioDriver.latin1()) != LSCP_OK) {
268     appendMessagesClient("lscp_set_channel_audio_type");
269     return false;
270     }
271    
272     m_sAudioDriver = sAudioDriver;
273     return true;
274     }
275    
276    
277     // Channel volume accessors.
278     float qsamplerChannel::volume (void)
279     {
280     return m_fVolume;
281     }
282    
283     bool qsamplerChannel::setVolume ( float fVolume )
284     {
285     if (client() == NULL)
286     return false;
287    
288     if (::lscp_set_channel_volume(client(), m_iChannelID, fVolume) != LSCP_OK) {
289     appendMessagesClient("lscp_set_channel_volume");
290     return false;
291     }
292    
293     m_fVolume = fVolume;
294     return true;
295     }
296    
297    
298     // Update whole channel info state.
299     void qsamplerChannel::updateChannelInfo (void)
300     {
301     // Check if we're up and connected.
302     if (client() == NULL)
303     return;
304    
305     // Read channel information.
306     lscp_channel_info_t *pChannelInfo = ::lscp_get_channel_info(client(), m_iChannelID);
307     if (pChannelInfo == NULL) {
308     appendMessagesClient("lscp_get_channel_info");
309     appendMessagesError(QObject::tr("Could not get channel information.\n\nSorry."));
310     } else {
311     // Cache in channel information.
312     m_sEngineName = pChannelInfo->engine_name;
313     m_sInstrumentFile = pChannelInfo->instrument_file;
314     m_iInstrumentNr = pChannelInfo->instrument_nr;
315     m_iInstrumentStatus = pChannelInfo->instrument_status;
316     m_iMidiDevice = pChannelInfo->midi_device;
317     m_iMidiPort = pChannelInfo->midi_port;
318     m_iMidiChannel = pChannelInfo->midi_channel;
319     m_iAudioDevice = pChannelInfo->audio_device;
320     m_fVolume = pChannelInfo->volume;
321     // Some sanity checks.
322     if (m_sEngineName == "NONE")
323     m_sEngineName = QString::null;
324     if (m_sInstrumentFile == "NONE")
325     m_sInstrumentFile = QString::null;
326     }
327     }
328    
329    
330     // Reset channel method.
331     void qsamplerChannel::resetChannel (void)
332     {
333     // Check if we're up and connected.
334     if (client() == NULL)
335     return;
336    
337     if (::lscp_reset_channel(client(), m_iChannelID) != LSCP_OK)
338     appendMessagesClient("lscp_reset_channel");
339     else
340     appendMessages(QObject::tr("Channel %1 reset.").arg(m_iChannelID));
341     }
342    
343    
344     // Redirected messages output methods.
345     void qsamplerChannel::appendMessages( const QString& s )
346     {
347     m_pMainForm->appendMessages(s);
348     }
349    
350     void qsamplerChannel::appendMessagesColor( const QString& s, const QString& c )
351     {
352     m_pMainForm->appendMessagesColor(s, c);
353     }
354    
355     void qsamplerChannel::appendMessagesText( const QString& s )
356     {
357     m_pMainForm->appendMessagesText(s);
358     }
359    
360     void qsamplerChannel::appendMessagesError( const QString& s )
361     {
362     m_pMainForm->appendMessagesError(s);
363     }
364    
365     void qsamplerChannel::appendMessagesClient( const QString& s )
366     {
367     m_pMainForm->appendMessagesClient(s);
368     }
369    
370    
371     // end of qsamplerChannel.cpp

  ViewVC Help
Powered by ViewVC