Crossfade loops

edited March 2012 in General
Sometimes it's nice to have a smooth endless loop to mess around with. Right now the only iOS app I know of that can create a crossfade loop is Beatmaker2 strangely enough. So the workflow is record a chunk of sound with some synth app, import it into BM2, edit it with crossfade and trim the loop, save and export it to Loopy. I'm always looking for a more streamlined way that doesn't kill the creative urge. Or maybe I just learn to live with the harsh edges... Any better ideas at all?


  • Hello! Sorry about the long delay - out of curiosity, what kind of crossfade length are you thinking about? Loopy currently does an automatic microfade across imported loop boundaries, but only for about 128 samples or so (~2ms), just to get rid of the click (at least, in theory!).
  • Hi Michael, I was referring to loops with longer crossfades, and so far I've found 2 apps in all of the iOS world that do that - Beatmaker and now Hokusai. If Loopy allowed for adjustable crossfade it would be awesome and save a lot of work, but that's for the wish list. Then there was the other issue of little uneven spots on the loop seam that occur in Loopy. You said you might be working on a fix for that so good luck with it. Actually the 2ms xfade might be the problem I'm hearing, not sure, but if you bring in a seamless tone for instance, you can hear the spot where Loopy joins it. It is subtle but I hear it a lot. Maybe just the kind of music I'm doing...
    Thanks for continuing to improve the app!
  • Hmm, yes, if you use a single clear tone, then I think you'll always hear crossfades, because of the way the tone interferes with itself - that effect isn't as audible with more complex sounds. If you're using single tones, then you probably want much shorter crossfades. There's probably some science to this, but I don't know it =)

    Anyway, Loopy pretty much assumes that your imported loops are already loops (i.e., designed to loop, without a seam), so it's best if you just configure your loop in advance.
  • Yes, the single tone was just an expression, these loops I'm bringing in are more complex and they are seamless, at least when played in other apps like Beatmaker, it's not a problem to make smooth loops before importing. Loopy is doing something to them in playback. If you are unable to replicate, or hear it, then I don't know what to tell you.
  • Ooh, I see! I'm sorry, I was making assumptions. I shall dig further!
  • Oh, I think I might know what it is - was it happening when you were importing loops with the "Fit" option on? I've since (for this next update) tweaked the time scaling stuff so that it's perfectly seamless - it wasn't before (in fact it was awful!)
  • Cool. I look forward to this upgrade! I wasn't using the fit option however for these loops. Just something I'm noticing in the quieter loops that apparently you are addressing. Are all loops getting this little xfade applied (?) because I would think that if you had a loop that was perfectly constructed and Loopy just played the first sample immediately after the last one, you wouldn't be able to hear any transition. Anyway, for most music it doesn't matter I suppose and if I'm the only one hearing it then it's not going to be that much of an issue for you. I still love the app.
  • Oh, bugger - so much for that theory =) I've rewritten pretty much everything in there, so it may well be fixed, but just in case, is there any chance you could email me a sample loop of yours that's an obvious example, so I can make sure it's not happening in the prerelease? (michael at atastypixel dot com)
  • Ok, thanks I will.
  • Michael, I sent you three, the last one probably the most audible. Hope you got them, good luck!
  • Thank you very, very much, @Smeeeth - this is most helpful; I'm seeing the issue here, and the reason is that the iOS audio reading API seems to be not reading to the end of the file! Digging further.
  • edited May 2012
    Hi again - I've done some investigating, and it looks like the problem is your loops!

    Here's what I've found:

    That first loop you sent to me is 1,065,920 frames long. I can open it up in the audio editing app Amadeus Pro on my mac, export as raw 16-bit PCM, and I can see all 1,065,920 samples, no problem.

    When I open this file in Loopy (or in any other app that loads audio - I was testing using Apple's sample code, MixerHost), it can only see 1,065,165 frames - that's 755 frames, or 0.0171 seconds, short. Given that the seamless part is in those frames, it's no surprise we're hearing glitches at the loop boundary.

    Now, if I re-save the audio out to another m4a file from Amadeus Pro, and load *that* - I see the full 1,065,920 frames being loaded in Loopy/etc, and there's no glitch.

    So, the problem is with your file! Now, that's not to say there's not a bug in Apple's audio file loading code - perhaps your file is perfectly valid and legal, and Apple's code is messing it up. But it could also be possible that your file's not written properly, and it just happens that Amadeus Pro is more lenient towards weirdness.

    What software did you use to create those files? It might be worth contacting the developer and letting them know there's something odd going on.
  • I guess it's not possible then to create crossfade loops for Loopy within the iOS ecosystem. I have tried Hokusai and Beatmaker 2, being the only two iPad apps that create them, but because of this glitch you have discovered they apparently won't work with Loopy. Oh well thanks for investigating.
  • Hey - I'm not quite done investigating yet; that theory from my last comment was when I thought you said you'd imported the loop file itself, rather than going via ACP. So, there's more to look at before I'm ready to give it up as hopeless.
  • Sounds better, what did you do?
  • Ah, that's good! It probably could be one of a bunch of things, actually - there's a lot that's almost entirely rewritten in there, so it's hard to tell what exactly it was. But I'm very glad to hear that's done it =)
Sign In or Register to comment.