text:
I HATE sample accurate coding! (audio-rate incompetence and help needed inside)
Jan 20, 2012 at 4:27pm
I HATE sample accurate coding! (audio-rate incompetence and help needed inside)
So my patching has grown by leaps and bounds in the last few months and I've gotten some amazing stuff working. Where I often fall short on things is with audio rate stuff. Specifically audiorate triggering/enveloping/etc… Things that I'm used to doing with control objects, but haven't quite wrapped my head around how to do the equivalent in MSP objects.
Here are three problems I've run into (several times, but specifically with the patch I'm currently working on (a virtual CD skipping machine)).
1. I've defined a small loop within a buffer using position([+~]) and window([%~]) controls (rather than min/max in groove~) so it can wrap around 'zero'. That's fine and dandy, but I get clicks when it repeats. I've cobbled together an envelope but it's half max objects and half msp objects. I'm using msp objects to figure out where to do it, but then I'm using edge~, a message box, and line~ at the end. I can kind of 'tune' it so it's declicking, but it's sloppy. So trying to figure out how to declick a loop in the middle of a phasor~ (from 0.15 to 0.3 for example).
2. When moving the position/window I'm crossfading to a granular synth so I don't get that gritty/zippery stuff that comes with moving a live play~ head. I'm using line~ and slide~ being triggered by a message box. It works but it still lets through little clicks sometimes. It could be because my tuning numbers are off, but again, I suspect it's because I'm trying to do MSP things with Max objects.
3. So I'm using a master phasor~ that represents the whole buffer, which is followed by [%~] & [+~] to define a window, and playback position. This is pretty easy and works perfectly, EXCEPT every time the master phasor resets to 0, it breaks the wrapping of [%~] and jumps it back to 0., and I get an hiccup in the audio (as well as a click).
Here is these three bits isolated and annotated.
– Pasted Max Patch, click to expand. –
Copy all of the following text.Then, in Max, select New From Clipboard.
Jan 20, 2012 at 4:37pm
the topic says you´d need incompetence among other things. i have plenty of that to give.
triggering something at audio rate is in many situations just not possible, at least
there are third party objects which can be of help, but i would recommend you to
the main trick is to accept that everything audio MUST be started at one point from
Jan 20, 2012 at 5:13pm
I presume I misunderstood the question as usual :) but for me repeatedly watching Delicious's YouTube Pitch Shifting Tutorial – http://www.youtube.com/watch?v=uyzY_ZP54pA&feature=related and studying Nobuyasu Sakonda Sugar Synth – http://cycling74.com/forums/topic.php?id=33156 help as I am trying to understand audio rate control.
From the above I learned to do audio rate enveloping for clicks with a phasor~ driven cosine controlling an amp. Sugar synth shows how to use sample and hold to force changes to the audio stream to happen only when the cosine controlling the amp is below 0.1 or very very quiet. This reduces all the garbage sounds. Again I most likely completely misunderstand.
Jan 20, 2012 at 5:17pm
Heh, I'll take incompetence where I can get it!
I'm not patching anything like a sequencer where I have a 'master clock' as such, nor am I a stickler for 'audio rate everywhere'. It's only the places where I can hear it that I'm concerned with (clicks/jumps).
That makes sense but where I flub it is that I'm using control objects in the middle of an audiorate objects. Like my windowing for example one. I have this:
So I'm getting a trigger at a reasonable place, but I'm converting that into a bang, and then generating an envelope, all in control domain.
I need to avoid edge~ there.
Jan 20, 2012 at 5:26pm
A simplified version of Sugarsynth is what I'm using when I crossfade to a granular synth for scrubbing. It sounds great and is easy to use, but I don't really understand the sah~/cosine stuff in there.
Jan 20, 2012 at 5:46pm
Hi Rodrigo
– Pasted Max Patch, click to expand. –
Copy all of the following text.Then, in Max, select New From Clipboard.
Jan 20, 2012 at 6:13pm
Man, that patch is confusing as shit!
It almost fixes all of my problems too!
I can ditch the granular part of the patch since this lets you adjust things without noise, and I don't need to declick on jump as this is declicked from jump.
A couple of things, the windowing is really extreme. On longer loops, you can hear a really massive fade out before it starts again (rather than just windowing the 'click'). Looking at the [p simpleWin] I don't what I can adjust in terms of the window. I'm assuming from the sound that the window is relative in terms of loop length, rather than absolute (and tiny).
The other funky thing is that it plays past the maximum of the file without wrapping (which was a big part of me moving to phasor~ rather than my trusty groove~). What's nice about the phasor~/%~/+~ thing is that you wrap around the 'zero' if your window is bigger than the maximum it wraps back around.
Jan 20, 2012 at 7:10pm
"I need to avoid edge~ there."
no, you would need to create a replacement for line~, which does the same but takes either
and as easy as that sounds, it might be that it is impossible to recreate it that way. :)
Jan 20, 2012 at 7:26pm
For my two cents, avoid play~ unless you absolutely have to access the contents of the entire buffer at any instant, though if you want the wraparound, it may be easier to do with play, since you wouldn't have to do two loops. (I like to use wave~ for granular and use sah~ on its right inlets to control the start/stop points)
Also, it sounds like you're looking for trapezoid~ for your windowing. You can use scale~ to automatically adjust the fade-in/out points dependent on grain length.
Jan 20, 2012 at 7:27pm
I didn't annotate the above patch as I assumed you would 'get it', but it's fairly straightforward – the only real mystery might be the use of feedback send/receive. This is because the central phasor is situated AFTER the loopsize input. I gleaned all this from an old thread of mine: "make play work like groove", and with massive input from Tim Lloyd.
Jan 20, 2012 at 7:27pm
For a click-triggering line~ replacement, try zigzag~. I built a couple of convenience objects for doing this stuff awhile ago:
These haven't been updated to support 64-bit audio processing in Max6 yet, but they might help.
Jan 20, 2012 at 7:44pm
@Brendan: good point re: amp modulation. Fortunately, because trapezoid~ is always outputting in a 0-1 range, you can use a lookup table on its output (e.g. use half a Hanning function) to transform it into softer shape.
Also, this is slightly perverse, but you could also use adsr~ with the decay, sustain and release set to 0. That'll give you a 0-1 ramp of arbitrary duration that is scaled by the input to the attack time.
Jan 20, 2012 at 7:53pm
That's a nice trick Peter!
Jan 20, 2012 at 8:25pm
i lazily always use trapezoid~. it just so beautiful and easy.
– Pasted Max Patch, click to expand. –
Copy all of the following text.Then, in Max, select New From Clipboard.
and i know i am 'that guy', but really, build a phasor~ in gen~ and you are away, so easy… and talking of gen~, i agree with peter about wave~ but, unfortunately, it sounds like a dog's arse, but we have gen~, and it so easy to make [wave @index phasor @interp spline] these days it solves all these problems.
Jan 20, 2012 at 8:29pm
oh and by the way, yes, andrews objects are awesome (although it would be great to get a max6 update one day!) and don't listen to me, listen to anything peter mcculloch says, he is a msp genius.
Jan 20, 2012 at 9:17pm
I started a post but then refreshed in a different page and saw pid's great example.
I've not taken a look at the gen~ phasor yet (nor do I understand how that would improve things, but I will check it shortly. (it's just a drop-in replacement for phasor~?)
The trapezoid thing looks elegant as shit, but with longer files (12sec sample) it's super audible. I could change it to 0.001, but it would still be relative. Is there an 'absolute' equivalent for trapezoid? (clicks don't get any longer because a sample is longer).
Another issue which is still kicking my butt is the [%~] thing. If I set that to something like 0.30, after 3 repetitions of my window, the master phasor will hit 0, which means the fourth repetition of [%~] only makes it to part of the way through before resetting. So how do you get rid of the 'cycle within a cycle' when you use a phasor followed by a modulo.
Now with the sah~ stuff I tried setting it up for only portions of a phasor (like after [%~] and [+~]) so I'm changing parameters where appropriate to that section of the timeline (as opposed to the master phasor). I set this up which seems to be working, but I'm having a hard time figuring out how it's going to work with both parameters moving. I guess it will also impact the way the thing sounds/acts if nothing is changing while I'm making changes.
– Pasted Max Patch, click to expand. –
Copy all of the following text.Then, in Max, select New From Clipboard.
With the crossfade subpatch I think you misunderstood what I was doing in the initial patch. I was using the number box to 'bang' the envelopes, rather than as a pan between the two. So while the number box was moving, I would hear the granular synth, and when it was stationary, it was the dry audio. This might be a moot point now though since I'll likely be jumping with sah~ instead.
So issues still dangling:
trapezoid-like solution, but with an absolute envelope
Jan 20, 2012 at 9:25pm
Rodrigo, I am not going to suggest any msp/max solutions,but in the good old days when I'd have to prepare samples for hardware synths which could loop smoothly, this is what I did:
1: cut sample in half (call 1st half=A, 2nd half=B)
Obviously this wont necessarily work for samples with a definitive attack, or a prescribed order of internal events (ie human utterance), but it is good for sustained, homogenous sounds etc
In max this procedure could be automated somehow if you need to adapt it to real-time sampling in a performance situation; ie record into 2 buffers, window, then concatenate the two halves somehow into a third buffer– probably easier to do using the ftm library
Jan 20, 2012 at 10:56pm
the best windowing of all is consine anway; there are no egdes but it is symetric.
in my granular effects cosine windwoing is the default and triangle or hanning
Jan 20, 2012 at 10:59pm
Here's an example of an absolute trapezoid~ type solution. It's a little messy, but the gist is there. I didn't fade in/out at the max time, but you could easily extend this patch to do that as well. It's even easier, since it's relatively static.
I'm pretty sure you could do the same thing with pid's solution and a bit of math. You really just need to figure out what % of your grain length is your fade time. (so you could even use trapezoid~; I figured I'd do it the hard way)
To summarize:
– Pasted Max Patch, click to expand. –
Copy all of the following text.Then, in Max, select New From Clipboard.
Jan 21, 2012 at 12:48am
Man that's an amazing patch!
Everyone one your patches I've run onto here are super helpful/useful.
This sounds amazing and eliminates the 'cycle in cycle' thing too.
One thing I noticed is that if the position is near zero, you can't get below 200ms for window size as it goes silent around the sample start/end. Anywhere else, position wise, lets you go as small as you want. I tried tweaking the ramp duration, and tried the straight trapezoid instead of the wave~ version. The lowest I could get is about 130ms, which is probably as small as I want to go, but I'm curious as to why that is.
Lastly, and more sililly, I can't figure out where to stop/start it. Doing it at transposition and banging click~ again works well, but it only stops when the phasor runs its course, as opposed to stopping instantly. I can gate the signal going into the phasor and send it a 0 to stop it fully, but making sure I'm not missing something obvious somewhere.
Jan 21, 2012 at 1:48am
Thanks. I'd recommend gating the output of play~ rather than the input of phasor~. If you stop phasor~, it stops at some position in play~, which will cause DC offset (since you're stopping playback at an arbitrary position in a wave; unlikely that it'll be at a 0) You can use sah~ in conjunction with this so you stop playback at a grain border. Is your stoppage happening at control or signal rate?
The 200 ms thing: I think that's because there's some silence at the opening of the cherokee.aif file. I swapped it with drumloop.aif and it works fine. Short grains also shouldn't be a problem. I can do 10 ms grains here with no problem. (note that if the ramp time is > grainlength/2 it just uses grainlength/2)
Jan 21, 2012 at 10:49am
Hah, I didn't even think that it was because the sound file, ridiculous of me.
That makes sense with the gating play too. I'm driving some GUI stuff with that, but it's easy enough to gate and then send a 0 to wherever needs it.
This sah~ stuff opens up such a new world of possibilities in general, particularly in a coding 'blindspot' for me.
Jan 21, 2012 at 11:39am
Must. Resist. But. Must. Buy. Max. 6.
Okay, I give in
Jan 21, 2012 at 10:43pm
It's definitely nice. So many little subtle things.
Jan 22, 2012 at 12:12am
Lovely patch as always, Peter.
I've done what I often do with these; sit around and in a fit of near-OCD tidy up cabling and add tiny features – in this case a hamming window which in some cases sounds so much better, and a [slide~] on the segment start, so you can scrub around in the sound without glitches.
But primarily I did it so that I could read the patch a bit better, even though it's at its core quite a simple one.
– Pasted Max Patch, click to expand. –
Copy all of the following text.Then, in Max, select New From Clipboard.
Now all I need is to be able to real-time record into this buffer without glitches. Then I'd be a really happy stutterer!
Jan 22, 2012 at 1:10am
I just tidied it up as well, about to take a look at yours.
This is what I'm using to record to the buffer (different buffer name), and sending 'cd1max' to everywhere the info~ was connected to.
(I feel so legit having that "1 project" under my name now!)
– Pasted Max Patch, click to expand. –
Copy all of the following text.Then, in Max, select New From Clipboard.
Jan 22, 2012 at 1:24am
Wouldn't [slide] get broken by the sah anyways? So when you drag the thing, nothing is changing except on phasor cycles (most of which I changed to 0.001), but with slide, it will move where you tell it on the first phasor cycle, then move again after its done sliding (on the next phasor cycle), unless I'm misunderstanding slide there.
Here's my tidied up patch with a few trimmings. I removed the pitch control stuff as I'm only every playing 100%, added buffer record (dynamic), and a stop/play, which resets the playhead, and changed the position/window controls to 0-1, rather than absolute ms.
– Pasted Max Patch, click to expand. –
Copy all of the following text.Then, in Max, select New From Clipboard.
Jan 22, 2012 at 9:39am
[slide~] is a cool feature / idea, but it should go downstream of [sah~], not before it – then there is a point to it.
also, the ugly (sorry!) old-skool
you could put much of this in gen~, especially the [poke~] recording, and further get rid of some of the signal domain to ctrl domain sections. worth looking into for the future maybe?
my 2c.
Jan 22, 2012 at 10:21am
did you listen to my patch? The slide works, but it help even more after the [sah 0.001] and before the +~ – it can be a lot shorter there, too. :)
@pid: Care to take a stab at a gen~ version? I'd love you forever if you did.
Jan 22, 2012 at 11:54am
I did listen to it and didn't notice any improvement (or much difference).
Also wouldn't having it after the sah~, again, defeat the purpose of the sah~? I thought the point was to chance on a cycle, whereas if you have a slide, you're sliding around. Again, I could be (and likely am) mistaken.
I only have the gen~ runtime, not to mention, don't know low level DSP stuff.
I tried putting the gen~ phasor from your earlier post in, but couldn't figure out how to get it to be the same playback speed (I didn't try very hard as I was sorting out other parts of the patch at the same time).
I will throw in some love if it's going around….
Jan 22, 2012 at 12:17pm
I think it's because we use it differently – I scrub the position of very short loops ala wavescanning a lot – your mod seems geared towards sort of longer loops?
One lovely thing I realized (duh) is that since the loop being played back is dictated by the phasor, doing stutters here is super easy – feed its phase (0. to 7./8.) and you can do the ol' mlr chop on it. So I added a little qwertyui input thing.
Oh, since we're trimming you can safely remove the [*~ 1] in the upper left :)
I love this.
-oh, the qwertyui thing; connect to rightmost input of phasor~:
– Pasted Max Patch, click to expand. –
Copy all of the following text.Then, in Max, select New From Clipboard.
Jan 22, 2012 at 1:13pm
I accidentally made a presentation window and made the patch stereo. Oops.
– Pasted Max Patch, click to expand. –
Copy all of the following text.Then, in Max, select New From Clipboard.
Jan 22, 2012 at 2:36pm
@rodrigo, apologies, that was hastilly cribbed from another project. i hope this explains better:
– Pasted Max Patch, click to expand. –
Copy all of the following text.Then, in Max, select New From Clipboard.
having said that, thinking about it, not sure you need this in this scenario now – i was possibly confusing myself.
@wetterberg i not got the time. my projects all a bit different. you and rodrigo should do it. you might like the three example patches in the Cycling '74 > examples > gen, folder:
Jan 22, 2012 at 2:40pm
It does help, cheers.
Jan 22, 2012 at 5:27pm
Yeah that makes more sense.
Indeed, a nice thing about the phasor setup is sending it random values between 0-1.
It's funny, my intended application with this patch is a virtual, skipping CD player, so it's all this meticulous work to get the clicks out, to then replace them with synthetic and sampled CD player hiccup/blips.
The chopper is a pretty awesome effect. I've incorporated it as is into one of my patches.
Jan 22, 2012 at 5:35pm
you know the nic collins (senior) piece for trumpet and skipping cd player (i think) ? it is completely fantastic. it uses a real skipping cd player, 'skipping' controlled by max i think (no msp back then). from about 15 years ago or so. i seen it performed live, too. just struck me, i should mention it. indeed skipping cd's is one of my all time favourite sounds. i prefer it to needle dust / vinyl scratch any day.
i rather love this idea of getting all the clicks out so you can… make it click. as someone once said, "if you wanna fuck it up, you gotta perfect it first".
let us know when you finish the project.
Jan 22, 2012 at 6:09pm
Yeah I love that stuff. I've done tons of stuff with skipping CD in the past, but always hardware based, which obviously sounds amazing.
Here's a picee I did where I took a Bach prelude, learned it 'straight', then filled a couple of different CDs with it, and beat them up, and improvised to them. Amazing stuff.
This is before I had modded a CD player Nic Collins style (he has it so when you pause, you still hear that audio), so it jumps around and acts very erratically. It would die a lot too. Challenging to record.
I love the hardwareness of it, but the main impetus for doing a max version was so I could have the buffer filled dynamically. I want to model the skipping timing/rhythm a bit better (at the moment it's somewhat weighted/probabalistic but it's not ideal).
The bigger plan is to have a virtual media player kind of thing, so there will be models. A skipping CD, then a dusty/wobbly turntable, then some gritty/hissy tape etc…
Jan 22, 2012 at 11:30pm
Hey Rodrigo
Really really inspirational – good work.
Jan 23, 2012 at 12:03am
Jan 23, 2012 at 5:24pm
At the risk of giving more mess to clean up…
Here's some mods to @Rodrigo's patch. Sah~ is definitely powerful once you grok it. I altered it so that it records the amp envelope of the sound while you're recording. The volume info is then used for gating and picking new positions, so you can say "don't change to this position unless it's greater than n% in volume".
In general, anytime you can make these processes slightly smarter, it's a big win. I also added some comments.
@Wetterberg: I used a Hanning window because the Hamming doesn't go to 0 at the ends. It's a small difference but in some applications it really makes a difference. You could always do some math on the Hamming to fix the offset, but I'm lazy and just load a pre-compensated aif of it.
– Pasted Max Patch, click to expand. –
Copy all of the following text.Then, in Max, select New From Clipboard.
P.S. Glad to see folks running with this. Thanks.
Jan 23, 2012 at 6:42pm
I finally got a nice CD skipping patch going. It needs a bit more work before I post it (not to mention it uses a bunch of actual CD skip/glitch samples for it's authentic mojo).
Nice one Peter. I need to have a sift through that and make sense of it. And see what to add to the existing patch.
One thing that I've noticed, particularly now that I have a waveform display setup and I can see it happening, is that a static sah~ doesn't work too well when you have a moving position/window thing.
Meaning, I don't get clicks or anything, but if I'm only looking at the start of the phasor (sah~ 0.001) then I'm only jumping on those spots. So if I'm moving my position/window forward a lot, I'm not playing 'inside' the window ever. Same goes for moving the position/window backwards. If I move that, I can easily play out the other side of the window too.
So how do you setup a dynamic sah~ like that, or rather, how do I stay INSIDE the designated window at all times?
Here's a section of my patch with a waveform display and all that. (the 'glitches' part will only playback the 'synthetic' clicks and not the real ones since the audio files aren't there), but with this you can see what I mean when you drag the position around while a file is playing. The playback head goes by what the window was at back when it started (as opposed to where it is now).
– Pasted Max Patch, click to expand. –
Copy all of the following text.Then, in Max, select New From Clipboard.
Jan 24, 2012 at 10:10am
Jan 24, 2012 at 3:38pm
It sounds then like you might want to jump either at the end of the phasor, or whenever you tell it to. The good thing is that this is pretty much already in the architecture via the click~ that starts everything (in the phasor~ loop). You just need to fade the output down before you jump.
So the sequence is:
Here's an example.
– Pasted Max Patch, click to expand. –
Copy all of the following text.Then, in Max, select New From Clipboard.
Jan 24, 2012 at 11:54pm
That works for jumping to arbitrary positions, but it doesn't work for smooth stuff.
In the actual patch I have a phasor moving position around, sort of like an inertial movement. So you're kind of still 'playing' the CD but it's skipping back and forth in a given window size.
With position triggering the envelope/position change on every movement, it sounds super granular.
Ideally it would be something where I can move the position/window around, but it would only jump when the playhead hits wherever the min/max of the window happen to be at that moment. So if I'm moving the position/window forward slowly, nothing will ever happen as the playback head will sit squarely in the middle of the window, but moving faster/slower would force it to jump.
I guess it would require not using sah~ for the position triggers? Or dynamically updating the sah~ triggers?
Here's the patch with a phasor driving the movement of position
– Pasted Max Patch, click to expand. –
Copy all of the following text.Then, in Max, select New From Clipboard.
Jan 25, 2012 at 1:06am
"Ideally it would be something where I can move the position/window around, but it would only jump when the playhead hits wherever the min/max of the window happen to be at that moment."
This is what i'd use sah~ for.
I made this thing long ago and the title of your post reminded me of what I was thinking back then(just to clarify, sample-accurate 'coding' is actually very easy compared to sample-accurate 'patching' which is the real problem here ;D …just saying, you mentioned not knowing low-level DSP, but you may find that coding this sort of thing in C for an msp external is actually easier than whittling it out in patch form(the syntax and techniques for manipulating control data and audio data are much more similar than trying to find parallels by remembering the right max/msp objects)… but of course, you have to learn a bit of C first… but really not that much… i'm rambling…). This patch might be useful for you, but I apologize in advance for the messiness. And you could always replace the windowing method with something else(that's just the old granular synthesis example hanning window method, i use cycle~ for windowing like that these days…). This patch uses zigzag~ and sah~ to stay within signal domain throughout.
Anyways, didn't have time to read every post here… sorry if mine is redundant. In hopes that it may help, though… (try the "RandomPreBySegment" or something like that in the menu above the presets, i forgot how much fun this patch was :)
Jan 25, 2012 at 5:39am
Okay, I think I understand a bit better now what you're looking for. I'd say that sah~ is still what you want, but it's just that you may need a better test for it. You're not just interested in whether the phasor is done with its cycle, but you also want to know if the position has exceeded the current bounds. (and then there is a question of "exceeded its current bounds right now" or "exceeded its bounds ever during the cycle"…)
You now need to do some comparison with the previous value to decide whether to sample. There's a good chance you may need multiple sah~ objects. It's not that hard, but it's a little weird at first. (sampling-and-holding the sampling-and-hold…) This reminds me a bit of the triple Sample and Hold unit on Buchla synths. Here's a Max implementation that may be of interest.
– Pasted Max Patch, click to expand. –
Copy all of the following text.Then, in Max, select New From Clipboard.
Jan 25, 2012 at 6:02am
Try this out. This is a general version, but I think it looks like what you're going for. It makes the jump at the boundaries of the slow phasor. You'll need to update the boundaries, but that's more of the same with sah~.
– Pasted Max Patch, click to expand. –
Copy all of the following text.Then, in Max, select New From Clipboard.
Jan 26, 2012 at 4:15am
Just when I thought I was starting to understand sah~ I stepped into a scene in sah-ception….
I kind of understand that last example, until I tried to put it into practice. So the pong just before play is the top level phasor (in the example) that I'm going to be testing, by sah~ against the position/window controls.
After that it falls apart a little bit. I'm replacing two of the existing sah~'s with this new high/low sah~, and sending the new position/window info based on that, but in practice, it's not as clear.
Here's as far as I managed to get it:
– Pasted Max Patch, click to expand. –
Copy all of the following text.Then, in Max, select New From Clipboard.
@raja. That's a great patch! I wrestled around with it for a bit, but then realized that it's functionally different from what I'm doing (you're advancing by a specific interval, and a specific rate). There's plenty in there to look at and learn from (I'm slowly pulling it apart to understand what's left, as the wiring makes it very difficult to 'see' anything in it).
Jan 30, 2012 at 8:53pm
Ok, I've been going over this for a couple days (had a busy work week) and I'm still stuck. Not for lack of trying mind you!
When I connect what makes sense to me I either lock up the patch (the phasor stops) or the sah~ doesn't trigger like I thought it would and one parameter doesn't work.
I tried controlling one single parameter with this "is it there now" kind of sah~ (the window high point), and got no joy.
So the goal is for the playhead to jump back to the start (of the position offset) ONLY when it hits the point set by 'window'. So if window parameter is moving forward at the same rate as the playhead, it will never move back (though I would obviously run out of room quickly). Or if I move the window setting down, it would jump as soon as that threshold is met.
With my understanding that means no 'sah~ within an sah~' as I'm only testing for where the parameter is NOW (as opposed to where it is within the cycle of the phasor). I am however sah~ing the 'position' parameter since I will jump to that only when a new cycle starts (when the playhead touches the peak of the window).
So I tried using the [>~] with the window position, but it never triggers (as it never reaches the max number), so I added [- 0.1] and that gets sah~ to trigger. So I'm trying to use the position of window, as the trigger in an sah~ to force a jump in the 'position' parameter. Is that right? It doesn't seem to work as this locks up the clock.
Here's a tidied up version of the patch (removed all the osc and non-specific to this problem stuff).
– Pasted Max Patch, click to expand. –
Copy all of the following text.Then, in Max, select New From Clipboard.
Jan 30, 2012 at 9:20pm
Hi Rodrigo, I think you may need to come up with an exact list of requirements, because the solutions will be different depending on those requirements. It sounds like:
- Normal playback is the default.
What's not clear:
Jan 30, 2012 at 11:13pm
Howdie Peter.
Yeah this stuff is definitely hard to communicate via text.
So in answer to your question(s). (And stating everything as fully/clearly as I can too, so some is redundant)
- It will never play back 'normally' (as in playing fully from beginning to end). This buffer is specifically for this window/glitch playback.
- So the main playback mechanism is via 'position' (offset from start) and 'window' (distance from 'position'). It loops back and forth between these two points (including wrapping around 'zero' (from 0.9 to 0.1))
So that's the basic 'gist' of it. Now all the sah~ and actual windowing (envelope) stuff has been to clean the above two things up, but has introduced other little problems.
- So the glitch CAN be changed while glitching but only with regards to the position/window parameters. The playhead would (ideally) continue doing what it's doing. So if I'm looping between 0.4 and 0.6, and then I start moving the 'position' parameter forward, at the same rate as the playhead, the jump will not happen.
- Playback will always be forward, so the end point (window) parameter should always be 'live'. So if that comes in contact with the playhead, it will jump to wherever the 'position' parameter is. This can happen as fast as possible (though realistically I can only move that parameter so fast). So this doesn't have to happen at signal rate, although it will need audio enveloping, which I'm guessing HAS to be audio rate.
- The low point of the loop window ('position') presents a different problem. I messed with a few different ways of handling the low point moving faster than the playhead before having a big epiphany. Since I'm emulating a skipping CD player, I can just use that style of 'cd player fast forward'. Which I measured to be between 9-12hz depending on CD player (at least the old ones I have sitting around). So that would translate to only being able to move the 'position' point every 100ms.
- So only when the playhead meets the low point, that can only update every 100ms, but when the playhead hits the high point, it updates (jumps to the low point) immediately. If that makes sense.
- The only minimum is the window size (0.01 of total file size).
It should be noted that everything wraps around 'zero' using [%], so the min/max of position is 0/1 but that it can wrap around.
Lastly, the actual 'position' parameter is itself being controlled by a slow phasor, so it's moving automatically (forwards or backwards) pretty much the whole time.
Jan 30, 2012 at 11:41pm
I meant normal on a more local basis, as in playing forward at normal speed with no envelope or skipping.
It looks like this may be a better model for your problem (divide and conquer):
normal playback ……. glitch (granular) …….. normal playback…… glitch (granular) …… glitch (granular) …… glitch (granular)……normal playback.
The reason this may make sense is that it removes a substantial amount of complexity from your problem, and it means that you can then solve it in parts. The first part is very easy, and you could use groove~. The only trick is to make sure that it starts up where the glitched one starts (so the "last time through the loop" is actually just starting the original copy at the beginning of the loop and letting it play)
Once that's dealt with, it's a question of building the glitch system and the switching mechanism.
Jan 30, 2012 at 11:59pm
Not following you here.
Is that normal/glitch/normal/glitch a sequence of events or different modules?
I was using groove~ originally, but I couldn't wrap around zero with loop points (0.9 to 0.1) so I moved to play~ instead.
Jan 31, 2012 at 6:22am
Hi Rodrigo, yes and yes.
Here's some example code using gen~. I tried it in normal MSP, but the signal vector delay was too much. There's still room for improvement–I'd probably move the groove~ code into gen~ somehow. (have to think on how all that works, but it's not awful in this case since you're not doing transposition)
The crossfade isn't dead on, but it's reasonably good. Also, it's got parameters for repeats as well as a freeze, and you can set the min and max glitch times.
– Pasted Max Patch, click to expand. –
Copy all of the following text.Then, in Max, select New From Clipboard.
Jan 31, 2012 at 11:49am
I see what you mean about different modules now. That would offset/distribute the problems.
I need to start getting on the gen~ thing. I only have the runtime at the moment.
So in looking at this and messing it a bit, I managed to drive absolute position using a sig~ going into [p phasor], which is handy. And controlling min/max_duration gives me that window control, though the controls (unless I'm missing something) seem to take still work in a similar way as far as sah~ goes. (Changing only when it reaches the max point WITHIN the cycle, as opposed to NOW).
So if I have a frozen position (or even with it moving, though it's easier to with it frozen), and my min/max_duration are set to 2000. If I type in 1000 a little bit after the cycle has started moving, it doesn't do that until it's hit the 2000 point.
A more general question about complex playback (programming in general I guess). Is it good practice to break complex singular functions up like this? Or is this more about learning how to tackle each problem and then incorporating it into one solution in the end. (ie multiple playback objects with crossfades vs a single playback object with lots of bits hanging off of it)
Jan 31, 2012 at 2:31pm
Sah~ can definitely handle the change, you just have to remember that it affects the system. If the frequency of the phasor is dependent on the length of the segment… This also looks like your envelope function may also get sucked into gen~, since you're going to need to control the envelope when you update this value–you'll have to ramp down the envelope, then do the jump at the end. So, in a sense, it's still a "jump request", as it is now, albeit a little more responsive. Currently, the jump requests are only handled at the end of the cycle because that's where we have our envelope. You can have it somewhere else, but it means changing how the envelope is handled.
Is there an absolute minimum duration for your glitches? Because there's a little latency in fading in/out when jumping, there will probably need to be a time-out mechanism for changing jump points. Otherwise, continuous input gets pretty messy (line~ for example…).
For the last question, I would say you definitely want to break it down into as many small, manageable components as possible. Abstractions and subpatchers are a big help. I teach my students that if a chunk of code does one thing, and one thing only, make it a subpatcher/abstraction (depending on whether you want to reuse it).
When you break it down, there's several ways of structuring it. You could do this like the example I posted, but you could also do it as a poly~ patch where each voice is one glitch or one glitch loop, and you have a synthesizer that's playing the glitches. Your timing probably won't be quite as dead on, but it gets you thinking about things like adsr~ and then you realize that midinotes with poly~ are actually pretty good with indeterminate length. IIRC there's someone who's made a signal-rate poly~ library, but I can't remember who at the moment.
I'm attaching a picture of the gen~ patch. (can you see it with the runtime?)
Jan 31, 2012 at 2:36pm
Feb 1, 2012 at 3:21am
I can see the gen thing (it opens up, it just isn't unlockable).
I had a rehearsal earlier today with Alex Harker and afterwards I was chatting to him about this. He suggested either doing it in control domain or in gen. He gave me a gen patch that does everything I wanted though there's still a snag with enveloping it. I'll post it once it's working right.
Rather than using sah~ (or sah in gen) it uses >/< to test every sample to see if it's hit the high point. If so, jump to the low point, immediately, and to where the low point is at that instant.
My overall plan/goal is quite complex so I've been building it module by module (this skipping thing being a module). For most things I've also worked on paper a lot (particularly when it comes to things like state machines).
I've avoided using/making abstractions (and bpatchers) to keep everything local/within the patch. When I reuse bits I generally just copy the [p patchers] across. Probably not the most efficient thing but it's easy for me to wrap my head around (and easily edit) things.
Feb 1, 2012 at 4:39am
Sounds like you're on your way, and I'm interested to see it.
One thing I was curious about: if you just jump from low to high, then how do you avoid the discontinuity? It seems like you would need to maybe set your "high point" a bit before the actual high point so that you can do a ramp down before jumping. (unless the discontinuity is idiomatic, then everything gets a lot simpler…)
Feb 2, 2012 at 8:41am
It would only jump from high to low ever, or did you mean that discontinuity?
Here's the 'almost working' version for the sake of sharing while its coming along.
The reset doesn't work in this version (it's not connected inside gen, and I can't edit it).
And it looks like [history stall 0] breaks the looping. The first version of the gen had no history where the stall is and it looped perfectly, so I think it's there to fix something else (though it broke something else).
Enveloping looks like it's also going to be a problem since the 'grain' size is now constantly changing (I tried your absolute envelope window with this, but it looked like it was only fading up (but jumping down) and only worked at certain parameter settings.
But yeah, here's the patch at the moment.
– Pasted Max Patch, click to expand. –
Copy all of the following text.Then, in Max, select New From Clipboard.
Feb 2, 2012 at 9:26am
It looks like its delay (in gen) that's the source of the new problems.
Incidentally here is the original somewhat working version of the patch).
It can't reset manually and sometimes has some zipper noise issues when jumping backwards quickly, but the looping aspect of it acts correctly.
– Pasted Max Patch, click to expand. –
Copy all of the following text.Then, in Max, select New From Clipboard.
Feb 2, 2012 at 4:55pm
You need to incorporate the fade into the gen code, since the fade has to happen before the jump. You can't jump instantly without a discontinuity, so you have to do a fade out, then jump, then fade back in.
It's a fun and nasty problem, but I think this may be a better solution. Note that there are sample and hold objects, but the condition for triggering them is different. (in this case, if you make a change in values, and the timeout hasn't locked you out, and the current position exceeds the jump point for the fade out (not the loop end, since that'd be too late!)
You can change the loop times and it will keep playing if the playhead isn't near them. You'll also see some standard recipes in the gen code, such as > into delta into > 0. This just takes a continuous test and only sends a 1 for one-sample when it becomes true.
– Pasted Max Patch, click to expand. –
Copy all of the following text.Then, in Max, select New From Clipboard.
Feb 2, 2012 at 9:46pm
Thought I'd chip in as I wrote the gen code above…
When I was speaking to rod about this he didn't initially mention enveloping. Of course not enveloping will create a discontinuity, but then it's for a CD skipping emulation so…..
The problem with my previous approach was trying to skip a few more objects by using delay to do the timeout, so I really needed to roll my own system that is reliable.
The below is a working gen patch minus enveloping. As far as I am concerned enveloping is not an easily solvable problem for this scenario, as the loop points can change at sample rate. Until we hit the end point we can't be sure where the envelope is. Of course if we fix the points until the next jump then the problem is a lot easier, but that wasn't part of the original spec that I got (I haven't followed this thread) so I'm not sure what has been discussed above. If the window is large then that could make any real-time control/UI very unresponsive. Anyway, to solve the enveloping problem there needs to be a clearer spec about how the system should work.
@PM – I haven't totally checked out your patch in detail, but it seems the timeout duration only updates on manual reset. In my version it is constantly updateable. Also if I play around long enough with timeout and reset I can get your gen to spin off into infinity. I was having the same problem with my code due to the suspect use of delay, but I'm 99.9% sure the below code cannot suffer this issue.
– Pasted Max Patch, click to expand. –
Copy all of the following text.Then, in Max, select New From Clipboard.
Feb 2, 2012 at 11:16pm
Howdie Alex.
I was going to post that code just now (long day!) I've only played with it for a couple of minutes but this latest version seems bulletproof.
Enveloping isn't terribly critical for this patch given how the end patch is going to function (I'm triggering a glitch/click sample at every reset anyways). There has been a lot of envelope chat/patching during the thread as it was the main reason for going audio rate with the control stuff.
I'd also happily have the patch click over it being unresponsive (it's going to be used dynamically/instrumentally/quickly) so my priority was with that (which is why enveloping never came up when we were talking about it). If the windowing is only 20ms total (10out 10in) then that wouldn't impact the playability much.
Feb 3, 2012 at 12:05am
Yeah. One approach to take is to delay the audio output of play by 10ms or less and detect the jumps off the control signal, starting a ramp immediately, but applying it to the delayed version. You could probably do this sample-accurately without gen~ (for instance start a ramp using my voicedrive~ object, or andrew bension's similar objects for non-interrupting ramps) that covers the fadein and out (or rather out and in) and then manipulate the single line produced using basic MSP objects / pong~ to create a down and up ramp.
This gives a fixed latency that you probably can't feel if if controlling in realtime, and removes the difficulties of seeing in to the future and guessing what might / will happen or locking points ahead of time.
One other nice thing about this is that it would work for manual resets too, although you could also code it so it ignores them (don't trigger a ramp if the jump coincides with a reset click in…)
Feb 3, 2012 at 12:06am
Also I'm pretty sure there could be two or three less objects in the gen patch… (minimal patching is my new obsession) If I get bored sometime I'll try to prove it…
Feb 3, 2012 at 1:09am
Here's a version using this 'delayed windowing' thing (using voicedrive~ and wave/hanning).
– Pasted Max Patch, click to expand. –
Copy all of the following text.Then, in Max, select New From Clipboard.
Feb 3, 2012 at 2:38am
And here is a functionally perfect one. It has windowing on jumps and play/stop, a minimum~ to override the lockout when doing short grains, a jitter control, and a nice waveform display with wraparound.
I tried using wave~ on the stop/play windowing but settled for line/slide when I couldn't get it working right.
With the real click/glitch samples it sounds amazing! (Particularly with a lockout of 100ms when moving around quickly).
Does anyone happen to know what makes up the CD 'glitch' sound in a real CD player? It only happens when audio is present (doesn't happen on quiet parts or silent tracks) so I'm guessing it has something to do with the audio content. I'm using 11 samples along with some pink~ * noise~ as subtle attack modifiers but it would be more dynamic/interesting if I was actually generating 'real' glitches by doing whatever it is that the CD player is doing.
Here are the samples for my patch as an example of what I'm talking about:
– Pasted Max Patch, click to expand. –
Copy all of the following text.Then, in Max, select New From Clipboard.
Feb 7, 2012 at 11:52am
Here's the completed patch (multiples of each module and some GUI/midi learn etc…). (not posted straight on the forum as it requires a poly~ and audio samples)
Thanks for all the help throughout the thread as I definitely understand audio rate/enveloping much more now!
Feb 7, 2012 at 12:32pm
hi rodrigo, fantastic stuff, congratulations. and thanks for the crazy thread, too.
in your download you have forgotten to include (or mention they are required):
zeroconf.browser, zeroconf.resolve, randomvals, voicedrive~
p.s. – i'm not a 'controller' person, but your video has made me want an arc now damn you.
Feb 7, 2012 at 1:51pm
randomvals/voicedrive are from the Alex Harker externals, the other two are generic monome externals (not needed if you don't have a monome and if you have one, you'd already have them).
I could've sworn I mentioned the Harker thing. I'll edit that now. They can be downloaded here:
Feb 7, 2012 at 1:56pm
Yeah I didn't mention it. My other patches have dedicated instructions documents that say what externals are used with links and all that. This one, being relatively straight forward, is just the patch in the download.
The arc is pretty damn amazing. It's such a weird paradigm to program for (which is also why I went with a simple app like this as my first attempt at it).
Since I often use my electronics stuff along with an acoustic instrument I figured an unusual controller type like these (monome+arc) would make me be more creative with the code as I don't have the time (or limbs) to twiddle a hundred knobs/faders.
You must be logged in to reply to this topic.


text:
Sign In / Sign Out
- ASU Home
- My ASU
- Colleges & Schools
- Map & Locations
- Directory
Use the ASU Directory to search for Students, Faculty and Staff.
Have questions? Use the Campus Call Center to get you going right away!
Technology, Financial Aid and Human Resources Support, Password Resets.
Campus Phone #'s:
Campus Phone #'s:
Emergency Procedures and Information: www.asu.edu/emergency
Emergency Information Hotline: (480) 727-9911
ASU Hotline for Ethics and Compliance

subset: commoncrawl


text:
Sunrise Senior Living Inc. reports sharp drop in profit
- September 19, 2011
- |
McLean-based Sunrise Senior Living Inc. reported profit fell more than 97 percent in the second quarter.
The company had earnings of $1.3 million during the quarter, or 2 cents per fully diluted share, down from $46.3 million, or 81 cents a share, during the same period last year.
Revenue for the second quarter totaled $322 million, as compared with $348.1 million for the second quarter 2010.
Sunrise's second-quarter results included an $11.3 million gain on the fair value of equity interest relating to the company's acquisition of AL US Development Venture LLC, which owns 15 senior living communities. Second-quarter 2010 results included a $52 million gain from German debt restructuring and a $12.7 million gain from the termination of certain management contracts.
Sunrise had $65.1 million of unrestricted cash as of June 30, and its consolidated debt was $565.5 million, up from $163 million on Dec. 31. The increase in consolidated debt is connected to the company's acquisition of AL US.


text:
Staff Reports
The Aledo High School Band competed at the UIL Texas State Solo and Ensemble Contest on Memorial weekend, bringing home 30 gold ensemble medals, four gold soloist medals and 20 silver soloist medals.
Senior Wills Ward, for the second year in a row, earned an outstanding soloist award, which is only presented to a select few students at the two-day event.
A total of 54 band students earned gold or silver medals out of the 129 Aledo students who competed at the state contest.
Aledo ExtrA
Aledo High School Band brings home the gold
Staff Reports
- Aledo ExtrA
Canyon West to host Taste of Parker County
Prepare your taste buds, because the sixth annual Taste of Parker County is just a few short weeks away, and this year's event has moved to a larger location to accommodate even more great eats and treats.
Grand jury indictments for April returned
A Parker County grand jury on Thursday indicted a man accused of breaking into his neighbor's home and threatening him with a BB gun before engaging in a brief standoff with deputies.
Despite cold, peach crops looking rosy
Parker County peach growers won't know for sure for a few more days, but as of Wednesday, one day after April temperatures plummeted into the low 30s, they're predicting a good, even rosy, peach harvest for this year's Parker County Peach Festival.
Aledo ISD "Shattered Dreams" and parent workshop
Aledo ISD high school students will get a taste of what it's like to be in a car accident with fatalities Thursday, April 17th, and Friday, April 18th, as they participate in "Shattered Dreams," a program designed to save lives. A parent workshop about the topics addressed in the program will be held from 7 p.m. to 9 p.m. Wednesday, April 17.
Hitting the trail for MS
STEPHENVILLE – The Cowboy Capital MS Trail Ride is a fun-filled event dedicated to raising funds that support national research into the cause and cure for Multiple Sclerosis as well as provide programs to more than 9,000 people in the Lone Star Chapter area whose lives are touched by MS.
Parker County man killed in single-vehicle wreck
A 60-year-old Parker County man was killed around 9:30 a.m. Tuesday in a one-vehicle crash in the 2100 block of FM Road 3325, also known as Farmer Road.
Aledo City Council Place 4 candidates for May 10 election
Early voting for the May 10 general election begins April 28. Following is some information gathered from the candidates for the Place 4 Aledo City Council seat. Aledo Mayor Kit Marshall is running for re-election unopposed.
Aledo City Council Place 2 candidates
Early voting for the May 10 general election begins April 28. Following is some information gathered from the candidates running for the Aledo City Council Place 2 seat. Aledo Mayor Kit Marshall is running for re-election unopposed.
USAF heroes to Ride for Heroes
The 12th annual Ride for Heroes bike ride this Saturday in Aledo will include some VIPs: members of the United States Air Force Cycling Team.
FM 5 intersection makeover
City of Willow Park officials were recently told that a planned reconstruction of the intersection of Interstate 20 frontage roads and FM Road 5 now has funding from the state and is moving ahead.
- More Aledo ExtrA Headlines
- Canyon West to host Taste of Parker County


text:
Escoda Primera Teijin is a maroon-colored synthetic with thicker and stiffer fibers for work with heavier bodied paints.
The Teijin fiber holds its shape extremely well with fantastic spring. Escoda specially cures each brush for increased resiliency and versatility, making it a pleasure to use. Although not as firm as most synthetic bristles, Teijin fibers are much stiffer than Escoda's Tadami synthetic mongoose.
The black lacquered handle offers plenty of control on canvas, and is secured to the nickel ferrule with Escoda's exclusive triple crimping process. Both short and long handle styles are available. Long handles are generally preferred for easel painting, while short handles are more often used for tabletop painting
Cat's Tongue — The "Cat's Tongue" is a pointed filbert with more edges than the typical, almond shaped filbert. Popular in Europe, it allows an artist to create lines and points with different weights.
Note — Brush sizes are not standardized. The length and width of a brush of a given shape and size varies considerably by manufacturer. Since fine art brushes are handmade, expect some variation even among brushes from a given manufacturer.
® Escoda is a registered trademark.


text:
A lot of the Delaware Valley is facing no power after a winter medley of snow, ice and freezing rain. Many trees, unable to bear both the weight on their branches from the ice/snow and the saturated ground from the rain, have given way, leading to downed power lines, blocked roads, and lots of other very dangerous conditions for people staying home or outside.
As conditions deteriorate, trees fall, water mains break and power outages occur, make sure to check stay with FOX 29 as we cover the events until the afternoon.
WATCH LIVE: Continuing Coverage Of Winter Storm, 4 a.m.-3 p.m.
The icy conditions have knocked out power to hundreds of thousands of electric customers in southeastern Pennsylvania and have prompted speed reductions on major roadways.
PECO is reporting more than 500,00 customers without power in the five-county Philadelphia regions, most of them in suburban counties, worst since Sandy. More than 85% of Chester County (>180,000) is without power. Bob Kagel of the Chester County Emergency Management, says that they are working with the American Red Cross and other agencies to help deal with the power situation and get residents shelters as last resort with places to charge electronics if needed. This will be a multi-day event, Kagel said. Make sure to remove your cars from the emergency snow routes.
FOX 29's Karen Hepp was in Chester County. Power is out everywhere. Even the hotels in Downingtown and the usual 24-hour WAWAs have no power. West Chester University is closed.
"It's like a hurricane," said Karen. Thalia Perez reported from West Chester in the afternoon. Students were walking to the gym to take a warm shower. There are a lot of downed wires.
PSE&G and PPL are also reporting more than 63,000 outages total. Make sure to read the story on the right to stay up to date with the latest power outages.
The Southeastern Pennsylvania Transportation Administration is reporting delays and some cancellations on suburban Philadelphia routes. About 34 routes are on detour, SEPTA headquarters say. According to the NHSL, SEPTA's Norristown High Speed Line has service has restored. They previously were suspended due to downed trees. The Paoli/Thorndale line is suspended due to Amtrack power issues. The Warminster Regional Rail Line is also suspended due to signal problems. SEPTA gave FOX 29 an exclusive look at their headquarters at 8:20 and 8:40, the reports from within the SEPTA headquarters are attached to this story. FOX 29's Dave Shratwiser reports that some trains to NYC and Washington, DC are now boarding at 30th street station, though there are too many delays to list.
Philadelphia Darnell Mitchell was a passenger on one of these trains that tried to leave 30th Street Station. He was trying to reach Harrisburg, but never made it. He got to the station early at 6:25 a.m. and ended up back in Philly at 9:25 a.m. after being detoured all over the place.
"Very frustrating," he said.
The Pennsylvania Turnpike earlier ordered speed limits reduced to 45 mph and banned empty tractor-trailers until further notice. Those speeds restrictions have been lifted now. The Pennsylvania Department of Transportation also dropped speed limits during the morning to 45 mph on a number of roads including Interstates 76, 95, 476, 676 in southeastern Pennsylvania and I-78, I-176, I-81 and I-80 in eastern Pennsylvania and many smaller roads.
PennDOT's Gene Blaum says that they are actively trying to remove downed trees from roads, but the problem is that certain trees are entangled with wires, so they can only barricade those roads and wait for the utility companies to come deal with those dangers.
"We're patrolling the roadways...as soon as we find out about downed trees, our crews are responding," said Blaum. "Travel with extreme care, be prepared that your normal route may be blocked."
Many roads are closed, said Blaum. "As quickly as our crews get one road open, another road closes because of fallen trees."
FOX 29's Steve Keeley was in Allentown, Pa. for the first hours of the morning commute. Ice coated everything. "You gotta be like a martial artist to cut it away," Keeley said.
He then moved to Lower Merion. There was a downed wire with melted snow running right through it. Keeley managed to flag down an official who got the area taped off so that no drivers would try to cross. Keeley also witnesseda few other cars with trees on top of them.
FOX 29's Dawn Timmeney was in Doylestown, Pa. during the morning. Dawn reported slushy conditions. Residents reported commuting times more than quadrupled in length. At 9:00 a.m. Dawn reported seeing downed trees and utility poles everywhere. Trees will continue to fall down as ice weigh more and more on branches. She moved to Bucks County, where many people are without power. There are downed trees every where.
Jenn Fred was driving around, looking at the roads today. By 9:30, Jenn was in Bucks County, where there are currently more than 143,000 customers without customers. Even in the morning, there were huge branches all around the highway. The traffic was also completely backed up on US Route 1 with mile after mile of traffic.
"When we went to bed, we thought it was going to be the stuff below us that was going to be the problem, the roads, the side walks. In fact, it turns out it's the stuff above us, the trees, the power lines, that are causing problems," said Jenn.
Jenn Fred was at Germantown at around 8:20. The branches are covered with ice and all the trees are so heavy. Jenn recommends that anyone with cars under trees should move them. Also, charge everything now if you still have power.
In Delaware, the federal government is open, but workers can telework or take unscheduled leave. Delaware state government offices in New Castle County are opening at 10 a.m. Liberal leave is in effect for Maryland state workers until noon.
Baltimore Gas and Electric is reporting about 19,000 customers without power and Delmarva Power is reporting about 7,000.
In New Jersey, snow is mainly a problem north of Interstate 78, where 4 to 8 inches are possible.
Sleet and freezing rain is creating slippery conditions in other parts of the state. It's mainly raining from Mercer, Monmouth and Ocean counties south Wednesday morning.
Gov. Chris Christie has declared a State of Emergency and state offices are closed for non-essential employees.
Air travelers should check with their airlines because delays and flight cancellations are expected at Newark Liberty International Airport.
NJ Transit is operating on a storm schedule. Buses and trains are cross-honoring tickets. The state is still digging out from Monday's snowstorm. SEPTA's West Trenton line is suspended due to power problems.
For anyone not staying inside, please, please be careful!! The fear tonight is that much of this current melting will refreeze. Exercise extreme caution tonight and tomorrow morning.
The Associated Press contributed to this report.


text:
I am a new user of Ubuntu, and to be honest completly new to the whole linux scene. I'm looking to add more brushes to my GIMP program, but I don't know how.
Take the 2-minute tour ×
Graphic Design Stack Exchange is a question and answer site for professional graphic designers and non-designers trying to do their own graphic design. It's 100% free, no registration required.
migrated from photo.stackexchange.com Feb 16 '12 at 20:42
This question came from our site for professional, enthusiast and amateur photographers.
To add brushes to Gimp after you have downloaded them and/or opened your Zip file you need to move them to your brush folder(usually found here: C:\Documents and Settings\myusername.gimp-2.6\brushes). After you have done that you simply need to hit refresh in your brush dialog box.
You could read this which also tutorial on installing brushes in Gimp.


text:
The median home value in Bellmawr, NJ is $149,200.
This is
lower than
the county median home value of $157,300.
The national median home value is $152,300.
The average price of homes sold in Bellmawr, NJ is $149,200.
Approximately 64.47% of Bellmawr homes are owned,
compared to 31.17% rented, while
4.36% are vacant.
Bellmawr real estate listings include condos, townhomes, and single family homes for sale.
Commercial properties are also available.
If you see a property you're interested in, contact a Bellmawr real estate agent to arrange a tour today!
Learn more about Bellmawr Real Estate.
The subject site is improved with a two-story masonry building 6,692+- square feet of useable space. Main Level ~~~ Entrance foyer, sound booth, sanctuary with a seating capacity of 200+ persons. Lower Level ~~~ Fellowship hall, (4) classrooms, men's/ladie's room, office and utility room. Ceiling Height 12 +/- feet. Roof is composite shingles, foundation brick, interior walls plaster, drywall and brick, windows plate glass and metal casement, exterior painted concrete block, HVAC (1) gas fired unit, (1) gas hot water tank, (5) CAC units, mixed plumbing, 150 amp electrical service main, and hardwired smoke detectors. Sale is subject to the ability of the seller to legally subdivide the church building and a portion of the parking area from the adjoining cemetery. The estimated land configuration would be approximately 100" x 200"; onsite parking estimated to be 25+ spaces.
This property is with the business. Owners are looking to move out of state and wish to sell. This property is located next to a large senior complex. There are hundreds of homes surrounding the restaurant. They have just redone the interior of this 9 year old property. The property is well maintained and is open for business. There is seating for 50 people and there is take out as well as delivery. There is a fully equipped kitchen and a point of sales system. Financing is available to a qualified buyer.DO NOT APPROACH OWNERS OR STAFF. CONFIDENTIAL SALE.
Former Pennant East night club. Only the building and land are for sale. Great commercial/redevelopment opportunity exists on this site located along busy Rt. 130. Building will be sold in strictly as is condition. Call for further information.
Bank owned two story office building for sale, zoned light industrial. Entire building available immediately. Adjacent to Route I-295. Close proximity to Route 42, Philadelphia and Atlantic City.
Mixed Use Property w/existing store & two residential apts. & garage. Both apartments are rented. have a nice size living room and eat in kitchen. Storefront is currently vacant but was a deli. The garage is rented for six months along with the lease for Apt. 2.The owners owned and operated this deli with much success and had a great client base. The store is run with electric utilities. Store has a security system and restroom. Heating system has been replaced (approx. 5-6 years ago). Roof is pitched and flat - part is a rubber roof. Apt. 1 pays 750 a mo., on 5 yr. lease until 4/2015, Apt. 2 pays 950 a mo. 6/15/11, Storefront was Rented for 1,250 pr. month. Landlord pays gas and electric for apartments. Store on Separate electric meter. This property has great exposure as it sits right off of Route 130 & the Browning Lane Exit. Possible partial owner financing available. Agent: Apt. 1 is Section 8 with Hud paying 516 and tenant paying 234. Apt. 1 related to seller. , owner financing may be available. Click for directions on Bing Directions: South on Rt. 130 from Camden to Browning Ln., Make R on Browning La. Prop. on right across from the Flower Shop. Diner on other side of 130 Cross Street:Route 130
STUNNING 2 story custom stone and brick 4 bedroom home on a double lot!! "To die for" family room with palladium window and full wall brick fireplace, formal living room with fireplace, formal dining room with beautiful crown molding, huge dream eat-in kitchen with breakfast room skylight and breakfast bar. Full basement with partial finish and fireplace, 2 car detached brick garage, large rear patio and mature landscaping on grounds. Anderson windows throughout, 3 full bathrooms, newly tiles foyer entrance and freshly painted throughout. This home shows pride of ownership and has a great flow, perfect for entertaining and a growing family. This property was recently sub-divided into 2 parcels. This mls reflects the home and corner lot included. Corner lot is an approved building lot with 2 car detached garage. Assessment and taxes on this mls are based on house and corner included. See attached plot plan. House can be sold separately at $239,900. see mls #6303631.
Triple Income Property features 2 businesses plus a 2-story 3-bedroom house that includes a private yard plus a private multiple vehicle parking lot. Ideally located on on a main road near Bellmawr Industrial Park, and Fire Department, Municipal Building and Public Library. There is easy accessibility to NJ Turnpike and 295. The commercial space at the front of the property is over 1000 square feet. Each has it's own bathroom and private entrance. The house is 3 bedrooms, 1 full bath, living room, dining room with a full attic and full storage basement with 2 entrances to the home. The home is move-in ready and has been recently renovated with new paint, new carpet and flooring. One commercial space is presently used as a barber shop and has been for over 50 years. Both commercial spaces are suitable for any professional use. This property also includes a ONE YEAR HOME WARRANTY.
This may be the largest home in all of Bellmawr. Boasting over 2000 sq. ft. this spacious split-level has a lot to offer. There are hardwood floors in all the upstairs bedrooms and in the great room and dining room. The sunroom addition overlooks the heated gunite inground pool with spa. All the main systems have been updated. The electric service was upgraded to 200 amps in 2011. The heater, hot water heater and air conditioner coil are new in the last 5 yrs. This great home also has plenty of storage with a 4ft. crawl space under the living room and kitchen and a large shed in the back yard. The location is right down the street from the park and also convenient to get to major roads leading to Philadelphia, Atlantic City and major shopping including the Deptford Mall. Put this on your list of homes to see! Additional pictures coming soon
Real Living Preferred Real Estate
953 Route 202
Somerville, NJ 08876
Email Us | Visit our Real Estate Website


text:
The first couple of weeks i did great. My diet was by the book, and so were my workouts but once i hit week 6 things started going down hill. I had a bad day of eating that week, and this week i had a couple of bad days! Monday i was 169, and when i checked this morning i was up to 173.. I've been174 for 3 weeks straight since i started my challenge. It's so frustrating it's like i'm not making any progress at all. My week 1 and week 4 pics look the same.
I thought my arms looked smaller, but when i measured them.. They are exactly as when i started.. ARGH. It's been so hard to stay on plan with my eating.. I'm so hungry even though ive been eating correct portions, and drinking my water. From the looks of it, i'm not going to have a miracle week 8 and im just wondering if i'll ever see any difference in my body. I am stronger, and my pants fit looser but i look the same as when i started :(
Sorry i just had to vent
Mari you are just getting to the good part!! Now is when all of the hard work from the past 6 weeks starts cranking. Remember the day you started the challenge? Remember how bad you wanted to do this?
Change your negative mind to a positive one. The "8 week miracle" is no miracle, it's a PAYOFF for the hard work you do up to that point. A miracle implies that something happens unnaturally and all of the sudden excess fat and desire to eat crap just suddenly leave you. They don't. With continued hard work and clean eating your results WILL COME.
Stay the course my friend. Clean your eats back up and if you are hungry more than every three hours, increase your portion sizes slightly to get you back to full for three hours.
Be sure you are drinking plenty of water and getting plenty of sleep.
Whether you think you can or you think you can't, you're right ~ Henry Ford
Michelle Simpson ~2009 Body-for-LIFE Champion 46+ Catagory
I will clean up my eating and continue going to the gym consistently, and i guess we'll see what happens in 5 weeks.
Mari! You are doing fantastic!! Just keep on keepin' on! I think we've all been to the place where we stop and think "what is the point of this again??"
If you continue working hard and hitting your meals, workouts, and water intakes, then you will see results.
If you stop now, then you'll never know what could have been.
Don't forget to plan, reread your goals and day dream about the better you that you will become.
Best of luck!!
Stacy Lynn
Come on Mari you can do this!! Do as Michelle said and remember you are hitting some rough weeks where you may feel more tired and that usually can make us susceptible to cravings. They will feel worse during these difficult weeks, I don't think they really are, it's just that we are so tired that we can't deal with it as well. So for the next few weeks try to get a little more sleep, as much extra as you can and still get in your workouts and all 6 meals. Even if you put your meals to 2 1/2 to 2 3/4 hrs apart. Just know we believe you can do this, we have faith in you.
You can't guess Mari, you have to believe. I cried like a baby at week 10 of my first challenge because I realized that I had so much weight to lose that I wouldn't be an after in 12 weeks. I could have given up and put it all aside and you know what, if I had, I'd still weigh 300lbs.
Are you just having a melancholy day, is there something else messing with your mind that makes you feel weak right now? It's not uncommon.
This is not the time to give up my friend. Look at it this way, if you feel it is getting tougher, it means that your body is struggling hard inside to make the transformations you are forcing it to do through eating well and good workouts so far. And this process is now more visible to you through what you are experiencing.
I remember very clearly, this is exactly the way it happened to me during my week 7 when I did my first challenge. All was well until week 6 and suddenly intense cravings and what not. I did give in once, but did not give up! Just drink more water whenever you feel hungry. Your body will soon get adjusted to this as well. This is just a passing phase. Remember, just stick on and do not ever give up. Just continue what you are doing and I am sure you'll be surprised with what your body can do.
BFL changed my life!
Mari, keep at it! Although you can't see the results, your body is changing!!! I am at the end of week three and I haven't seen any results but I do feel much better! When things get rough for me I just envision what I'm going to look like when this transformation is complete, regardless how long it takes! Hang in there we can do this!
Tisha :-) "Running won't kill you, you'll pass out first!"
Thanks for the support. I'm just frustrated and upset because i have alot of pressure on me to lose weight.. and fast. My whole family expects me to like lose the weight over night, and they are always making comments about everything. It really messes with my head and puts alot of doubt in my mind. The reality that it will take me probably a year to be where i want to be drives me crazy. Sometimes i just want to curl up and hide.. My mom thinks that im eating too much when like on my plate all i have is 1/2cup of brown rice and a portion of chicken.. Everytime i think i look slimmer she just gives me a face like "You think so, but you're wrong", and then grabs my rolls and tells me i should do more sit ups.. Argh.
Mari - Do not let the scale overrule the obvious. You said your "pants fit looser." BELIEVE the little things because they add up to the big results. I don't care what challenge you're in, I have found week 6 to be the hardest week to get through. Stay on track, do not give in to any doubts. It's working, even if you can't see it. I went through that during my first challenge. Have someone else look at your photos. I'd be willing to bet they see a lot more than you do. I didn't see a thing until others pointed out the positive differences. You will see a miracle of some kind. It may not be at week 8 but you will see something by week 12. This is a process and that process takes at least 12 weeks. Hang in there, you'll be so glad you did. :-)
It took me over a year. You are more than welcome to click on my name and check out my progress photos and comments. Forget about what they want. I like to say, through this process it is okay to be selfish to a certain extent. This is about you and no one else. Do your thing in your time. Go Mari Go! :-)
Love you some you...PERSEVERE!
Week 6 has been hard on me too in both of the challenges I have completed so far (and many others for that matter). I just started C3 and my first week has not been the best. But guess what? I have worked too hard to give up now. I will wake up in the morning and start another BFL day like I always do. I will not let guilt get to me, I will isolate it and move forward. YOU WILL DO THE SAME.
None of us have had perfect challenges because we are all human. We all make mistakes and we all mess up from time to time. But if you ACT YOUR WAY TO BETTER THINKING, you will get to realize that Body for LIFE can do so much more for you than just change your body. You say your arms looked thinner, but still measure the same? Well it might measure the same, but will look different with more muscle and less fat, so don't overlook this. PLEASE DON'T FOCUS ON SCALES or the like. Your pants fit looser - GREAT. It means you are doing something right girl.
And like Michelle says - the best is yet to come. Work hard and you will see some fabulous things happen in the next couple of weeks. Michelle has been doing this for a long time now - she did not do one challenge, or two - she did many (just like I plan to do). You might not have as much to lose as we did - or you might, I don't know, but I do know that THIS IS THE BEST THING THAT HAS EVER HAPPENED TO ME. That doesn't mean that it is easy in any way. We have to work the program for the program to work for us. But we are doing it and you are too.
Keep at it. Glad to see you are cleaning out the house - that helps. Now the next time some food porn comes your way, do what I do and say " I SPIT ON BAD FOOD". Perhaps not the "cleanest" way of doing it, but it works for me.
Mari, I just want to say, thinking about the one year that it might practically take you to get where you want to be is a sure shot recipe for failure. Instead of being overwhelmed by the thought of it, just take every day, one day at a time. Concentrate on getting your daily workouts and eating well every day. This way, you will be very focused rather than lose heart. Results will come, don't worry.
Even though it is really hard, just ignore what your mom says or comments for the time being. After a while, when she starts to witness your transformation, she will surely know you're on the right track. Just prove it through your actions.
Sometimes our friends and family, despite the best intentions can be discouraging at times. My family doesn't understand why I want to lose weight they are constantly saying " Don't lose too much... a woman should have some meat on her bones!" But put all that aside and set your own goals and honor the commitments you make to yourself.
I saw little changes in my clothing and pics during the first 9 wks or so...but I kept at it cause I knew if I quit when I saw little happening on the outside, then I would just be back to square one. Things started happening kind of fast after wk 9, I went down a couple of sizes, shorts were baggier, people started making comments on my wt loss so that kept me going.
I continued to read the Ladies Success Document for extra motivation and kept saying I know this can happen to me if I just stick with it; what do I have to lose besides weight and inches.
By golly that kind of thinking kept me in the game...At the end of 12 wks...-20# and 15 inches! And it is only getting better because of the mindset I have...I only measure and weigh every four weeks so I don't see the fluctuations so much in the scale (the devil!).
I hope this provides some encouragement for you cause YOU are worth it Mari! We are here for you and want to see you at the end of your challenge saying, "I Did It, I Finished This Thing!!!!"
Many Blessings! :)
DebMO :0) Blessed to be a Blessing...
Mari - I thought this might help you.
Thoughts That Strengthen–Thoughts that Weaken!
by: Michael Harris 3/31/2007
A challenge is hard enough under ideal circumstances. It can become much more difficult if you have to spar with co-workers, friends and family who do many things to weaken your resolve–things like bringing home treats, scheduling things to do during your workout times, or continually reminding you of your past dietary failures! Feeling your blood pressure rising already? You NEED TO READ the rest of this blog!
There IS A WAY OUT! And it is through conquering your own thought life! Look, you'll always have resistance to your desires–unless you have no relationships at all anyway! As long as you live under give and take circumstances you'll never be conflict free. But, by controlling your thoughts, and thinking only thoughts that strengthen you, you can make this work!
I know some of you are already skeptical of whether one can control his own thoughts–which is a weakening thought by the way–because it keeps you from trying something that can improve you. But let me explain and illustrate. Controlling your own thoughts starts by: A. Recognizing a weakening thought as it occurs: B. Stopping that thought dead in its tracks; and C. Replacing it with a strengthening thought that has an action attached to it.
Here's an example: Weakening Thought: "My spouse doesn't support me in my challenge. He is sabotaging me–I'm frustrated; I'm failing; and it's all his fault!" That's a weakening thought because it is blaming, and it gives all the power to change your life to another, taking it away from yourself. Replace it thusly: "Today, before I do what I want for myself, I will do something for my husband–I don't want him feeling neglected or unwanted." See the difference? In one situation, you have no action or solution–you just tread water in the pool of chaos or try to change another unsuccessfully. This often leads to you doing a double back flip into a giant bowl of Ben & Jerry's ice cream. In the second, you do what you can, not to change him, but to love him unconditionally. This thought and the action that will follow it give you hope and freedom ultimately, even if he doesn't change.
This isn't voodoo or psycho babble. It's actually the same principle by which spouses of alcoholics regain or retain their sanity through Alanon Famiy Groups. You can do the same, with practice, and with the right actions. If you do this, you won't be sorry! No matter how it turns out, you will have done the right thing under difficult circumstances, and that in itself strengthens your character.
Your mission, should you decide to accept it, is to give us all other examples of how this principle has worked in your life!
© Abbott Laboratories,2013


text:
Updated for:
Thursday, April 24, 2014 7:54 PM
Published on: Wednesday, May 15, 2013
By Mary McHale
Major roadwork due on Pennsylvania Avenue
You can expect single-lane closings between 9 a.m. and 3 p.m. Monday through Fridays, and between 9 p.m. and 5 a.m. Sunday through Thursday nights.
The project is due for completion in the fall of 2015.
Morningsiders elect mayor, Council members
Incumbents Jim Ealey and Todd Mullins won reelection for the two Council seats. Elizabeth Long was defeated.
There were also several write-ins.
Swearing-in ceremonies will be held 7 p.m. Monday at the Morningside firehouse because the Town Meeting Room is undergoing renovation. The monthly Town Meeting will be held at 8 p.m. Tuesday at the firehouse.
John B. Barbour Jr., of Morningside, and Nichole Banks, of Waldorf, are engaged to be married later this month.
Eighth-grader Bethany Cuyler will be May Queen for the annual May Crowning of Mary in the grotto at St. Philip's Church on Sunday.
Stacie Branham-Smith, of Skyline, has taken on the organization founded by her late mother in 1997, The Women of Hope Support Group. It is for women faced with employment, family and spousal issues, but have no one to talk to about them. Among their planned activities is a Rest, Relax & Enjoy Retreat in June. For information, call Stacie at 240-838-2977.
Pocket Pooch Hotel, a kennel owned by Helen Cordero of Skyline, has lost its devoted manager, Marilyn Foreman, who died April 25. "Marilyn was a special person who enriched my life for being a part of it," Helen wrote in the Memory Book. "Her love for all the little furbabies who became a part of her life was awesome to behold, but most importantly, her love for all our customers and their pets was a blessing that will be hard to duplicate."
Morningside hosted a successful Clean-up Day on April 27. The town's Beautification Committee arranged for a document-shredding truck, bulk trash pick-up, and a truck for collection of resale donations for the Multiple Sclerosis Association. Tonya Neal, Beautification Committee chairperson, hopes to make this an annual event.
Skyline Citizens start 44th year
Dolores Steinhilber was our first president, followed by Capt. Raymond Perkins, Jack Power, Richard Wright, Charles Henry, Grover Estep, Dwight "Snuffy" Snider, Jim McGrath, Jerome Jones, Charlie Tretler, Marvin Faulcon, Dwight Holloway, Dr. Alvin Thornton, Ted Bland, Jim Prince, J. Steward Smith, Yolanda Dooley, Stanley Holmes, Floyd Shields, and Stanley Holmes, our current president.
I thank them for keeping SCA a vibrant organization.
Flea market and plant sale
Happy Golden anniversary to Aidan and Mary Kilbride on May 18! And happy anniversary to Dennis and Leigh D'Avanzo, their 24th on May 20; Ronnie and Karen Ellis, their 47th on May 20; and to Chet and Winnie Lanehart, their 55th on May 23.