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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 265 - (hide annotations) (download)
Wed Sep 29 16:05:24 2004 UTC (19 years, 5 months ago) by capela
File size: 9050 byte(s)
Continued 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    
90    
91     // Engine name accessors.
92     QString& qsamplerChannel::engineName (void)
93     {
94     return m_sEngineName;
95     }
96    
97     bool qsamplerChannel::loadEngine ( const QString& sEngineName )
98     {
99     if (client() == NULL)
100     return false;
101    
102     if (::lscp_load_engine(client(), sEngineName.latin1(), m_iChannelID) != LSCP_OK) {
103     appendMessagesClient("lscp_load_engine");
104     return false;
105     }
106    
107     m_sEngineName = sEngineName;
108     return true;
109     }
110    
111    
112     // Instrument filename accessor.
113     QString& qsamplerChannel::instrumentFile (void)
114     {
115     return m_sInstrumentFile;
116     }
117    
118     // Instrument index accessor.
119     int qsamplerChannel::instrumentNr (void)
120     {
121     return m_iInstrumentNr;
122     }
123    
124     // Instrument status accessor.
125     int qsamplerChannel::instrumentStatus (void)
126     {
127     return m_iInstrumentStatus;
128     }
129    
130     // Instrument file loader.
131     bool qsamplerChannel::loadInstrument ( const QString& sInstrumentFile, int iInstrumentNr )
132     {
133     if (client() == NULL)
134     return false;
135    
136     if (::lscp_load_instrument_non_modal(client(), sInstrumentFile.latin1(), iInstrumentNr, m_iChannelID) != LSCP_OK) {
137     appendMessagesClient("lscp_load_instrument");
138     return false;
139     }
140    
141     m_sInstrumentFile = sInstrumentFile;
142     m_iInstrumentNr = iInstrumentNr;
143     m_iInstrumentStatus = 0;
144    
145     return true;
146     }
147    
148    
149     // MIDI driver type accessors (DEPRECATED).
150     QString& qsamplerChannel::midiDriver (void)
151     {
152     return m_sMidiDriver;
153     }
154    
155     bool qsamplerChannel::setMidiDriver ( const QString& sMidiDriver )
156     {
157     if (client() == NULL)
158     return false;
159    
160     if (::lscp_set_channel_midi_type(client(), m_iChannelID, sMidiDriver.latin1()) != LSCP_OK) {
161     appendMessagesClient("lscp_set_channel_midi_type");
162     return false;
163     }
164    
165     m_sMidiDriver = sMidiDriver;
166     return true;
167     }
168    
169    
170     // MIDI device accessors.
171     int qsamplerChannel::midiDevice (void)
172     {
173     return m_iMidiDevice;
174     }
175    
176     bool qsamplerChannel::setMidiDevice ( int iMidiDevice )
177     {
178     if (client() == NULL)
179     return false;
180    
181     if (::lscp_set_channel_midi_device(client(), m_iChannelID, iMidiDevice) != LSCP_OK) {
182     appendMessagesClient("lscp_set_channel_midi_device");
183     return false;
184     }
185    
186     m_iMidiDevice = iMidiDevice;
187     return true;
188     }
189    
190    
191     // MIDI port number accessor.
192     int qsamplerChannel::midiPort (void)
193     {
194     return m_iMidiPort;
195     }
196    
197     bool qsamplerChannel::setMidiPort ( int iMidiPort )
198     {
199     if (client() == NULL)
200     return false;
201    
202     if (::lscp_set_channel_midi_port(client(), m_iChannelID, iMidiPort) != LSCP_OK) {
203     appendMessagesClient("lscp_set_channel_midi_port");
204     return false;
205     }
206    
207     m_iMidiPort = iMidiPort;
208     return true;
209     }
210    
211    
212     // MIDI channel accessor.
213     int qsamplerChannel::midiChannel (void)
214     {
215     return m_iMidiChannel;
216     }
217    
218     bool qsamplerChannel::setMidiChannel ( int iMidiChannel )
219     {
220     if (client() == NULL)
221     return false;
222    
223     if (::lscp_set_channel_midi_channel(client(), m_iChannelID, iMidiChannel) != LSCP_OK) {
224     appendMessagesClient("lscp_set_channel_midi_channel");
225     return false;
226     }
227    
228     m_iMidiChannel = iMidiChannel;
229     return true;
230     }
231    
232    
233     // Audio device accessor.
234     int qsamplerChannel::audioDevice (void)
235     {
236     return m_iAudioDevice;
237     }
238    
239     bool qsamplerChannel::setAudioDevice ( int iAudioDevice )
240     {
241     if (client() == NULL)
242     return false;
243    
244     if (::lscp_set_channel_audio_device(client(), m_iChannelID, iAudioDevice) != LSCP_OK) {
245     appendMessagesClient("lscp_set_channel_audio_device");
246     return false;
247     }
248    
249     m_iAudioDevice = iAudioDevice;
250     return true;
251     }
252    
253    
254     // Audio driver type accessors (DEPRECATED).
255     QString& qsamplerChannel::audioDriver (void)
256     {
257     return m_sAudioDriver;
258     }
259    
260     bool qsamplerChannel::setAudioDriver ( const QString& sAudioDriver )
261     {
262     if (client() == NULL)
263     return false;
264    
265     if (::lscp_set_channel_audio_type(client(), m_iChannelID, sAudioDriver.latin1()) != LSCP_OK) {
266     appendMessagesClient("lscp_set_channel_audio_type");
267     return false;
268     }
269    
270     m_sAudioDriver = sAudioDriver;
271     return true;
272     }
273    
274    
275     // Channel volume accessors.
276     float qsamplerChannel::volume (void)
277     {
278     return m_fVolume;
279     }
280    
281     bool qsamplerChannel::setVolume ( float fVolume )
282     {
283     if (client() == NULL)
284     return false;
285    
286     if (::lscp_set_channel_volume(client(), m_iChannelID, fVolume) != LSCP_OK) {
287     appendMessagesClient("lscp_set_channel_volume");
288     return false;
289     }
290    
291     m_fVolume = fVolume;
292     return true;
293     }
294    
295    
296     // Update whole channel info state.
297     void qsamplerChannel::updateChannelInfo (void)
298     {
299     // Check if we're up and connected.
300     if (client() == NULL)
301     return;
302    
303     // Read channel information.
304     lscp_channel_info_t *pChannelInfo = ::lscp_get_channel_info(client(), m_iChannelID);
305     if (pChannelInfo == NULL) {
306     appendMessagesClient("lscp_get_channel_info");
307     appendMessagesError(QObject::tr("Could not get channel information.\n\nSorry."));
308     } else {
309     // Cache in channel information.
310     m_sEngineName = pChannelInfo->engine_name;
311     m_sInstrumentFile = pChannelInfo->instrument_file;
312     m_iInstrumentNr = pChannelInfo->instrument_nr;
313     m_iInstrumentStatus = pChannelInfo->instrument_status;
314     m_iMidiDevice = pChannelInfo->midi_device;
315     m_iMidiPort = pChannelInfo->midi_port;
316     m_iMidiChannel = pChannelInfo->midi_channel;
317     m_iAudioDevice = pChannelInfo->audio_device;
318     m_fVolume = pChannelInfo->volume;
319     // Some sanity checks.
320     if (m_sEngineName == "NONE")
321     m_sEngineName = QString::null;
322     if (m_sInstrumentFile == "NONE")
323     m_sInstrumentFile = QString::null;
324     }
325     }
326    
327    
328     // Reset channel method.
329     void qsamplerChannel::resetChannel (void)
330     {
331     // Check if we're up and connected.
332     if (client() == NULL)
333     return;
334    
335     if (::lscp_reset_channel(client(), m_iChannelID) != LSCP_OK)
336     appendMessagesClient("lscp_reset_channel");
337     else
338     appendMessages(QObject::tr("Channel %1 reset.").arg(m_iChannelID));
339     }
340    
341    
342     // Redirected messages output methods.
343     void qsamplerChannel::appendMessages( const QString& s )
344     {
345     m_pMainForm->appendMessages(s);
346     }
347    
348     void qsamplerChannel::appendMessagesColor( const QString& s, const QString& c )
349     {
350     m_pMainForm->appendMessagesColor(s, c);
351     }
352    
353     void qsamplerChannel::appendMessagesText( const QString& s )
354     {
355     m_pMainForm->appendMessagesText(s);
356     }
357    
358     void qsamplerChannel::appendMessagesError( const QString& s )
359     {
360     m_pMainForm->appendMessagesError(s);
361     }
362    
363     void qsamplerChannel::appendMessagesClient( const QString& s )
364     {
365     m_pMainForm->appendMessagesClient(s);
366     }
367    
368    
369     // end of qsamplerChannel.cpp

  ViewVC Help
Powered by ViewVC