[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Traverso-commit] traverso/src/core AudioClip.cpp
From: |
Remon Sijrier |
Subject: |
[Traverso-commit] traverso/src/core AudioClip.cpp |
Date: |
Sat, 24 Nov 2007 10:56:47 +0000 |
CVSROOT: /sources/traverso
Module name: traverso
Changes by: Remon Sijrier <r_sijrier> 07/11/24 10:56:47
Modified files:
src/core : AudioClip.cpp
Log message:
* Mix mono-clips to both channels of a Track
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/AudioClip.cpp?cvsroot=traverso&r1=1.152&r2=1.153
Patches:
Index: AudioClip.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/AudioClip.cpp,v
retrieving revision 1.152
retrieving revision 1.153
diff -u -b -r1.152 -r1.153
--- AudioClip.cpp 22 Nov 2007 18:27:05 -0000 1.152
+++ AudioClip.cpp 24 Nov 2007 10:56:47 -0000 1.153
@@ -418,7 +418,8 @@
AudioBus* sendbus = m_song->get_render_bus();
TimeRef mix_pos;
- audio_sample_t* mixdown[get_channels()];
+ int channelcount = get_channels();
+ audio_sample_t* mixdown[channelcount];
TimeRef transportLocation = m_song->get_transport_location();
@@ -455,8 +456,10 @@
read_frames = m_readSource->rb_read(mixdown, mix_pos, nframes);
} else {
read_frames =
m_readSource->file_read(m_song->renderDecodeBuffer, mix_pos, nframes);
- for (int chan=0; chan<bus->get_channel_count(); ++chan) {
- memcpy(mixdown[chan],
m_song->renderDecodeBuffer->destination[chan], nframes *
sizeof(audio_sample_t));
+ if (read_frames > 0) {
+ for (int chan=0; chan<channelcount; ++chan) {
+ memcpy(mixdown[chan],
m_song->renderDecodeBuffer->destination[chan], read_frames *
sizeof(audio_sample_t));
+ }
}
}
@@ -466,14 +469,18 @@
apill_foreach(FadeCurve* fade, FadeCurve, m_fades) {
- fade->process(mixdown, read_frames, bus->get_channel_count());
+ fade->process(mixdown, read_frames, channelcount);
}
TimeRef endlocation = mix_pos + TimeRef(read_frames, get_rate());
- m_fader->process_gain(mixdown, mix_pos, endlocation, read_frames,
bus->get_channel_count());
+ m_fader->process_gain(mixdown, mix_pos, endlocation, read_frames,
channelcount);
- for (int i=0; i<bus->get_channel_count(); ++i) {
- Mixer::mix_buffers_no_gain(sendbus->get_buffer(i, nframes),
bus->get_buffer(i, nframes), nframes);
+ if (channelcount == 1) {
+ Mixer::mix_buffers_no_gain(sendbus->get_buffer(0, read_frames),
bus->get_buffer(0, read_frames), read_frames);
+ Mixer::mix_buffers_no_gain(sendbus->get_buffer(1, read_frames),
bus->get_buffer(0, read_frames), read_frames);
+ } else if (channelcount == 2) {
+ Mixer::mix_buffers_no_gain(sendbus->get_buffer(0, read_frames),
bus->get_buffer(0, read_frames), read_frames);
+ Mixer::mix_buffers_no_gain(sendbus->get_buffer(1, read_frames),
bus->get_buffer(1, read_frames), read_frames);
}
return 1;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Traverso-commit] traverso/src/core AudioClip.cpp,
Remon Sijrier <=