<?xml version="1.0" encoding="UTF-8"?>
	<rss version="2.0"
		xmlns:content="http://purl.org/rss/1.0/modules/content/"
		xmlns:wfw="http://wellformedweb.org/CommentAPI/"
		xmlns:dc="http://purl.org/dc/elements/1.1/"
		xmlns:atom="http://www.w3.org/2005/Atom"

			>

	<channel>
		<title>Cycling 74  &#187;  Topic: Frame-based and real-time audio processing(read, delay and filter, write)in MSP?</title>
		<atom:link href="http://cycling74.com/forums/topic/frame-based-and-real-time-audio-processingread-delay-and-filter-writein-msp/feed" rel="self" type="application/rss+xml" />
		<link>http://cycling74.com/forums/topic/frame-based-and-real-time-audio-processingread-delay-and-filter-writein-msp/feed</link>
		<description></description>
		<pubDate>Mon, 17 Jun 2013 23:33:21 +0000</pubDate>
		<generator>http://bbpress.org/?v=2.2.4</generator>
		<language></language>

		
														
					
				<item>
					<guid>http://cycling74.com/forums/topic/frame-based-and-real-time-audio-processingread-delay-and-filter-writein-msp/#post-64343</guid>
					<title><![CDATA[Frame-based and real-time audio processing(read, delay and filter, write)in MSP?]]></title>
					<link>http://cycling74.com/forums/topic/frame-based-and-real-time-audio-processingread-delay-and-filter-writein-msp/#post-64343</link>
					<pubDate>Wed, 12 Sep 2012 07:12:58 +0000</pubDate>
					<dc:creator>gnuchoi</dc:creator>

					<description>
						<![CDATA[
						<p>Hello. I&#8217;m not new to DSP but still new to MAX/MSP/Jitter, started about 2 weeks ago.<br />
What I&#8217;m going to do is quite simple if I implement it in MATLAB. All I want to do is&#8230;<br />
- to read a wave file to (input) buffer,<br />
- duplicate it a few times i.e. other (processing) buffer, length may be 512 or 1024,<br />
- add different delays to each (processing) buffer, apply different FIR filter,<br />
- then playback them into different output channels. </p>
<p>So I tried as below.<br />
- First, send a read message to buffer~ named &#8216;inSigBuf&#8217; (which indicates input signal buffer).<br />
Also created a patcher for the calculation of the sample index for each frame, e.g. output these numbers in order when got a bang, [1 1024] [513 1536] [1025 2048] &#8230;. . (Based on the assumption that the frame size is 1024 samples and hope size is 512).</p>
<p>-Well, then I defined another input buffer named &#8216;midBuf&#8217;, whose size is same as input frame size.<br />
Also added &#8216;poke~ midBuf&#8217;, to write the samples in a section (1 to 1024, then 513 to 1536, &#8230;) into midBuf.</p>
<p>- Next, I added an object &#8216;index~ inSigBuf&#8217;, </p>
<p>So, I want to send signal in the section of inSigBuf, to &#8216;poke~ midBuf&#8217;.</p>
<p>Well, the problem is the synchronization of midBuf and inSigBuf. I&#8217;m using &#8216;count~&#8217; object for the sample information(counting) of &#8216;index~ inSigBuf&#8217;, while a &#8216;counter&#8217; is used for &#8216;poke~ midBuf&#8217;. Cause the &#8216;index~&#8217; and &#8216;poke~&#8217; works based on different counter, it does not work as I intended. Is there any advice or examples similar with my project?</p>
<p>Thank you.<br />
Keunwoo. Choi.</p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>http://cycling74.com/forums/topic/frame-based-and-real-time-audio-processingread-delay-and-filter-writein-msp/#post-232074</guid>
					<title><![CDATA[Re: Frame-based and real-time audio processing(read, delay and filter, write)in MSP?]]></title>
					<link>http://cycling74.com/forums/topic/frame-based-and-real-time-audio-processingread-delay-and-filter-writein-msp/#post-232074</link>
					<pubDate>Wed, 12 Sep 2012 10:38:37 +0000</pubDate>
					<dc:creator>stefantiedje</dc:creator>

					<description>
						<![CDATA[
						<p>Why don&#8217;t you just have multiple buffer~s and load the same wave file? Then you get your copies already. Play them back with groove~, play~ or wave~ add tapin~/tapout~ pairs for the delay, buffir~ or biquad~ for the filter and you are done&#8230;;-)<br />
I didn&#8217;t look at you patch, to avoid building a solution for you. It will be more fun for you to wade through the help files of the mentioned objects and patch it together with a lot of trial and error you can listen to in real time&#8230;<br />
I once transferred a MATLAB program to mxj~, but for what you want to do its much easier to do it with standard objects. The way of thinking is very different to MATLAB  (or any lines of code) based signal processing. Its at least a 1000 times easier. You want to think about sound, not about samples&#8230;<br />
Best is to forget the MATLAB code completely, free your brain and think about what you want to achieve&#8230;;-)</p>
<p>good luck</p>
<p>Stefan</p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>http://cycling74.com/forums/topic/frame-based-and-real-time-audio-processingread-delay-and-filter-writein-msp/#post-232075</guid>
					<title><![CDATA[Re: Frame-based and real-time audio processing(read, delay and filter, write)in MSP?]]></title>
					<link>http://cycling74.com/forums/topic/frame-based-and-real-time-audio-processingread-delay-and-filter-writein-msp/#post-232075</link>
					<pubDate>Wed, 12 Sep 2012 11:29:42 +0000</pubDate>
					<dc:creator>gnuchoi</dc:creator>

					<description>
						<![CDATA[
						<p>Thanks Stefan for your advice. I&#8217;ve been work with MATLAB for 4~5 years while spend few days with MAX, so the concepts are still vague to me.<br />
The goal of my patcher is to apply different delays, gains and filters for every output signal. However, the parameters for such changes are not static, but dynamic as time goes by, based on user&#8217;s input. For those things I need to implement this code in real-time and frame-based manner.</p>
<p>I&#8217;m digging on jit.buffer, jit.peek, jit.release, jit,catch, jit.poke, jit.spill, jit.fill&#8230; as well as buffer~, peek~, poke~, index~ and Etc. It&#8217;s quite difficult for me now. </p>
<p>Do I need to use Jitter objects? The Jitter tutorial #48 &#8220;Frames of MSP Signals&#8217; introduces Jitter objects for frame processing. Does it means that I need to read the audio file into audio buffer, &#8216;buffer~&#8217;, then convert it into jitter matrix with &#8216;jit.catch&#8217;, &#8216;jit.buffer&#8217; or &#8216;jit.poke&#8217;? I don&#8217;t think I need those Jitter things, but having troubles for implementing with MSP objects (index, poke, and peek). Oh God, please. I&#8217;m more than ready to spend my time fighting with those patchers, but please tell me which objects are needed TT</p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>http://cycling74.com/forums/topic/frame-based-and-real-time-audio-processingread-delay-and-filter-writein-msp/#post-232076</guid>
					<title><![CDATA[Re: Frame-based and real-time audio processing(read, delay and filter, write)in MSP?]]></title>
					<link>http://cycling74.com/forums/topic/frame-based-and-real-time-audio-processingread-delay-and-filter-writein-msp/#post-232076</link>
					<pubDate>Wed, 12 Sep 2012 14:56:16 +0000</pubDate>
					<dc:creator>MuShoo</dc:creator>

					<description>
						<![CDATA[
						<p>I think you&#8217;re thinking about this too much.</p>
<div><span id="toggle232076-0" class="patchtoggle" onmousedown="toggleMaxPatch('post232076-0', 'er232076-0');">&#8211; Pasted Max <span id="maxversion232076-0"></span> Patch, click to <span id="er232076-0">expand</span>. &#8211;</span> <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"  width="110" height="14" class="clippy" ><param name="allowScriptAccess" value="always" /><param name="quality" value="high" /><param name="scale" value="noscale" /><param NAME="FlashVars" value="copied=copied!&#038;copyto=copy to clipboard"/><param name="bgcolor" value="#FFFFFF"/><param name="wmode" value="opaque"/><embed src="/wp-content/plugins/bbpress-copy-compressed/clippy.swf"  width="110" height="14"   name="clippy"  quality="high"  allowScriptAccess="always"  type="application/x-shockwave-flash"  pluginspage="http://www.macromedia.com/go/getflashplayer"  FlashVars="text=----------begin_max5_patcher----------%0A1539.3oc4assjhhDD8Y8qffXer2NpKTbYeZ222%2BfM1XBTKsqYQv.vd5YlX5u%0A8stgB1BlpXYO87BBkEEm7jYdprJwuOch%2BrhW3U9d%2Bg2%2B3MYx2mNYhtIUCSrW%0AOwec5KyyRqzcyedw5077Z%2BGLeWM%2BkZS6Yh4%2BmW8ShpluJe6ZQdFuVeeXaiKK%0AxqqDeiqai7HZeeK1V2z4lV2TxqjOqzZQQ9mJ4yqM.MHgIuQu.8Qj8f2%2B17DJ%0AWMSOH6F7Mo0yeRjupug.yzCBo8nHVnsphYe92oI9s.ed5ZM38%2BqRQZlu5K9w%0AzopCO.jAmssttHePVpKczzpoo5utgaLB%2BYo4q72A4iYlgsLSxvVY7kXK8EMT%0AusL2Kc6BQg2IL0yJf.jukQLlKFAw4FNtN29HjJds2BdV5WqbMaDoseZHH1Hv%0AcrwpTQtyIiXcngMB4TjAYbIC92VjN%2B0iZwjgkA6MwF2VFSc7n1A5RPqx8rCr%0AaRKkleMu7S77zYY71nCfgPFVOOLJV6GhCOpf9aj8pDqxktfG77ExXqA0%2BRZ6%0AuizGo83tIIuyoIVhIbMNXzoIzYPSwu2oIL1PSzwlln3yflhduPSWgASHmgAG%0AdIF7ZdUU5J9alf32vdLzfRkflb.ehBIalG.XnBDxhZxRCzAg33dHK53N0xxr%0ABogCIvQdah0xtJahgPnGQW8DvDXbLAHGKMkzZUvY2haknqA2CNCeiWvTtyvS%0AvSF4pcx4eQNruIVNSjye85ikAxymur2IWEgkSCH1JIGjSYiKmdeEHXXpQf.O%0ABBD1oOfIPf9kQfngiIXmHPz3E.IPf%2B.IPzvyw3QWfvxovDHHenDHLqYAyHif%0A.gsLbPBD3vecDHrbLg3DAhFu.DABbzGIABKOGSFcABKmBRf.m7So.wYlpmbF%0Ao5rOdo5idRaxYjzR9YLo8pR%2BRNizOjSXm5zMRK5UOrLt552DX7IHIHjSrlbL%0AUG0G4j3Ttgvt2TCpM0DELD0D6Tp4dyLMU7ZXlv3gXlHGyL2YpoY2BfDzD5Dp%0AQ8yt3g8HdTufixMAWzONculdH0X5QCY5AtJpPjqCJtkQExmx7h7bMO.XGRM4%0ANCGYPcB8HCmkQFvYF5sKeoIswL4LtmImcSTypxhhm4u58DOayrsKWxK89yrh%0AhM8PUzQtdlyfzX1MvOYvsbvMKnnjuIKcN2aQ410%2BsjsdLUrDd8ezQc8El5fa%0AdEHnlc9IomfJ2L0sr.%2BE5JUucYamrPXCsD%2BHSJRGMThVD1MwLpWDh8YY22nE%0AYThjWhSFJVIZjyk9R5y7kEkq2sPolFlWjUTZPmDbwDJip1NBYIwIwpSBnXZj%0Aro19uJdlzjDE4ctYUGIg56IIFQSTmEihhCnc2eiNjNy13pRwhtiFijDfU2IU%0ANrLl5LFAyBS5hkttkPaqF27NZ6sd99WW7.mjIpzet2GqV64EAaY731bQc6Po%0AYq5LRLDNITORQ3nvfH8YxOQgcGodCyZB1rRSrGYIx0Yv1i8zY7rCdnPge6HU%0A5HpcYbRudpT0yRE6b2Jj9U4ChTItX8Tt8pnAbSjz2pN94f2JT8iW0dW1qpXa%0A47FjaeOBkdmcHXAupVjq2pwVcB2sSOIVrfm2YmmDK1THxqsfHPVrnxDMqoH.%0AQL6WV6qHHsfdXhpi5K1iAQkZmszbA5nAEipwozHu.iKLrk0z4BSphwx575WL%0AdFlZ9tQ2qsGwMuhZsO2INLRH.6J3Dl0HBmHfvA6F3DCDND2.mDfvg5D3.AMG%0A.4aIbf3qHwNCNPRrNH66VBGHIVGj8cKgCFRvi6bVDBj4sbGbX.fi6hcHAPBd%0AntCOTH3g4N7fffGh6vCjhUN.z2zjcHhOX2EOignMic2LWXHwONDNPTevNL7A%0Ah3L1co6zQvacvJAHT8RbnAs%2Bog5dk8ezBCo6o9pawB3FgokGz1ruQGcup4ug%0AG9taaQWksg5Xan11Fkb2ssvqw1raUd2qr1lsm2JaCR5u6J9.CpXH2AGHK6wc%0AZif1mjH2QOQfJr%2BRidLaFX5lMOyKqrioFJ9qS%2BrY2Y06rs50zxbodD8K4OKZ%0A5ezT0n8io%2BO.sXzjE%0A-----------end_max5_patcher-----------&#038;copied=copied!&#038;;copyto=copy to clipboard"  bgcolor="#ffffff"  wmode="opaque" /> </object></div>
<div id="post232076-0" style="display:none;visibility:hidden;" >
<div class="patchtoggleInfo"><small>Copy <b>all</b> of the following text.Then, in Max, select <em>New From Clipboard</em>.</small></div>
<div class="patchtogglediv">
<pre><code id="pastedcode232076-0">----------begin_max5_patcher----------
1539.3oc4assjhhDD8Y8qffXer2NpKTbYeZ222+fM1XBTKsqYQv.vd5YlX5u
8stgB1BlpXYO87BBkEEm7jYdprJwuOch+rhW3U9d+g2+3MYx2mNYhtIUCSrW
Owec5KyyRqzcyedw5077Z+GLeWM+kZS6Yh4+mW8ShpluJe6ZQdFuVeeXaiKK
xqqDeiqai7HZeeK1V2z4lV2TxqjOqzZQQ9mJ4yqM.MHgIuQu.8Qj8f2+17DJ
WMSOH6F7Mo0yeRjupug.yzCBo8nHVnsphYe92oI9s.ed5ZM38+qRQZlu5K9w
zopCO.jAmssttHePVpKczzpoo5utgaLB+Yo4q72A4iYlgsLSxvVY7kXK8EMT
usL2Kc6BQg2IL0yJf.jukQLlKFAw4FNtN29HjJds2BdV5WqbMaDoseZHH1Hv
crwpTQtyIiXcngMB4TjAYbIC92VjN+0iZwjgkA6MwF2VFSc7n1A5RPqx8rCr
aRKkleMu7S77zYY71nCfgPFVOOLJV6GhCOpf9aj8pDqxktfG77ExXqA0+RZ6
uizGo83tIIuyoIVhIbMNXzoIzYPSwu2oIL1PSzwlln3yflhduPSWgASHmgAG
dIF7ZdUU5J9alf32vdLzfRkflb.ehBIalG.XnBDxhZxRCzAg33dHK53N0xxr
BogCIvQdah0xtJahgPnGQW8DvDXbLAHGKMkzZUvY2haknqA2CNCeiWvTtyvS
vSF4pcx4eQNruIVNSjye85ikAxymur2IWEgkSCH1JIGjSYiKmdeEHXXpQf.O
BBD1oOfIPf9kQfngiIXmHPz3E.IPf+.IPzvyw3QWfvxovDHHenDHLqYAyHif
.gsLbPBD3vecDHrbLg3DAhFu.DABbzGIABKOGSFcABKmBRf.m7So.wYlpmbF
o5rOdo5idRaxYjzR9YLo8pR+RNizOjSXm5zMRK5UOrLt552DX7IHIHjSrlbL
UG0G4j3Ttgvt2TCpM0DELD0D6Tp4dyLMU7ZXlv3gXlHGyL2YpoY2BfDzD5Dp
Q8yt3g8HdTufixMAWzONculdH0X5QCY5AtJpPjqCJtkQExmx7h7bMO.XGRM4
NCGYPcB8HCmkQFvYF5sKeoIswL4LtmImcSTypxhhm4u58DOayrsKWxK89yrh
hM8PUzQtdlyfzX1MvOYvsbvMKnnjuIKcN2aQ410+sjsdLUrDd8ezQc8El5fa
dEHnlc9IomfJ2L0sr.+E5JUucYamrPXCsD+HSJRGMThVD1MwLpWDh8YY22nE
YThjWhSFJVIZjyk9R5y7kEkq2sPolFlWjUTZPmDbwDJip1NBYIwIwpSBnXZj
ro19uJdlzjDE4ctYUGIg56IIFQSTmEihhCnc2eiNjNy13pRwhtiFijDfU2IU
NrLl5LFAyBS5hkttkPaqF27NZ6sd99WW7.mjIpzet2GqV64EAaY731bQc6Po
Yq5LRLDNITORQ3nvfH8YxOQgcGodCyZB1rRSrGYIx0Yv1i8zY7rCdnPge6HU
5HpcYbRudpT0yRE6b2Jj9U4ChTItX8Tt8pnAbSjz2pN94f2JT8iW0dW1qpXa
47FjaeOBkdmcHXAupVjq2pwVcB2sSOIVrfm2YmmDK1THxqsfHPVrnxDMqoH.
QL6WV6qHHsfdXhpi5K1iAQkZmszbA5nAEipwozHu.iKLrk0z4BSphwx575WL
dFlZ9tQ2qsGwMuhZsO2INLRH.6J3Dl0HBmHfvA6F3DCDND2.mDfvg5D3.AMG
.4aIbf3qHwNCNPRrNH66VBGHIVGj8cKgCFRvi6bVDBj4sbGbX.fi6hcHAPBd
ntCOTH3g4N7fffGh6vCjhUN.z2zjcHhOX2EOignMic2LWXHwONDNPTevNL7A
h3L1co6zQvacvJAHT8RbnAs+og5dk8ezBCo6o9pawB3FgokGz1ruQGcup4ug
G9taaQWksg5Xan11Fkb2ssvqw1raUd2qr1lsm2JaCR5u6J9.CpXH2AGHK6wc
Zif1mjH2QOQfJr+RidLaFX5lMOyKqrioFJ9qS+rY2Y06rs50zxbodD8K4OKZ
5ezT0n8io+O.sXzjE
-----------end_max5_patcher-----------</code></pre></div>
</div>
<p>One buffer, one playback, different delays and gains. Filters wouldn&#8217;t be hard to implement this way, i was just lazy and only spent about 4 minutes on this.</p>
<p>With your talk of frame-based stuff, I&#8217;m thinking MAYBE you&#8217;re looking for the FFT suite of objects &#8211; check out the helpfile for [pfft~] and the various FFT functions.</p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>http://cycling74.com/forums/topic/frame-based-and-real-time-audio-processingread-delay-and-filter-writein-msp/#post-232077</guid>
					<title><![CDATA[Re: Frame-based and real-time audio processing(read, delay and filter, write)in MSP?]]></title>
					<link>http://cycling74.com/forums/topic/frame-based-and-real-time-audio-processingread-delay-and-filter-writein-msp/#post-232077</link>
					<pubDate>Wed, 12 Sep 2012 15:05:04 +0000</pubDate>
					<dc:creator>MuShoo</dc:creator>

					<description>
						<![CDATA[
						<p>Looking at your patch now, you might be better off looking into granular synthesis (this looks like a granular engine with a lot of math that&#8217;s over my head).  Check out sugarSynth (search the forums), &#8220;granular 2.5&#8243; and the granular example in the C74 examples folder. Similar concept to what you&#8217;re doing (which sounds essentially like sugarSynth, minus windowing, and with very small grain sizes).</p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>http://cycling74.com/forums/topic/frame-based-and-real-time-audio-processingread-delay-and-filter-writein-msp/#post-232078</guid>
					<title><![CDATA[Re: Frame-based and real-time audio processing(read, delay and filter, write)in MSP?]]></title>
					<link>http://cycling74.com/forums/topic/frame-based-and-real-time-audio-processingread-delay-and-filter-writein-msp/#post-232078</link>
					<pubDate>Thu, 13 Sep 2012 07:57:33 +0000</pubDate>
					<dc:creator>gnuchoi</dc:creator>

					<description>
						<![CDATA[
						<p>@MuShoo I wish it&#8217;s okay without frame-based stuff, but I need it for the extendability. The sugarSynth or granula examples are great, though they contains a lot of things more than I can recognize. Thanks MuShoo, even I couldn&#8217;t see how to do yet.</p>
						]]>
					</description>

					
					
				</item>

					
		
	</channel>
	</rss>

