Showing posts with label looper. Show all posts
Showing posts with label looper. Show all posts

Monday, December 19, 2011

Tutorial: Load & Loop Samples

Hey all,

This tutorial will show you how to load a sample into memory, and then play it back trough a JACK port, continually looping. There's not really that much to it, just a bit of thinking of the order things happen, and arrays.

If you've read the "Writing a sample" tutorial, you'll already be familiar with LibSndFile, the library we use to read / write samples, so there's nothing too hard to handle :)

Check out the source here: https://github.com/harryhaaren/Linux-Audio-Programming-Documentation/blob/master/loopedSample/loopedSample.cpp

Any queries / suggestions, you know how to get to me :) -Harry

Tuesday, May 24, 2011

Luppp: Stage 4

Sup!

Today Luppp got a SoundStretch class, its based on the LGPL library SoundTouch, and provides independant time or pitch scaling. That's pretty awesome :) Bind yer MIDI controller, and you can control the pitch of your loop... for drums its great to get some extra Oomp outta the kick.

The BPMDetect interface from SoundTouch isn't being employed yet, but it won't be long. Also the loading of sample files will be transfered from Looper & Sampler to FileLoader. In there will be the BPM detector, and automatic scaling of BPM of loops to the current BPM, then pushing it into the ResourceHolder buffer.

Also news: wierd ported LADSPA plugins won't crash the system anymore, and the stereo plugins still work on the mono channels, just using the Left ins & outs. A LADSPA GUI has been worked on, just a small dial that displays the value of a controller, but it needs a good rework before its useable.




A LoadSaveBase class is in order, that will be the parent of any class instance that wants to save / load data between sessions. (That's just about every instance... :) All in the pipe!
Till next, -Harry

Edit: Almost forgot, it also sends MIDI CLOCK now, so you can sync your LFO's on external synths to JACK transport :D

Wednesday, May 11, 2011

Luppp: Stage 3

Hey All,

Got some great news... there was a nasty stupid bug in the GUI redraw of the waveforms, (which I mistakenly though was due to threading) but it turns out the code was entering a loop with an increment that evaluated to zero... But its fixed now! :)

So with the GUI up and running one can see how far along the loops are, and what "amount" of the loop is going to be played.. ie "zooming" in on the part of the loop that's active.

Also the engine has been getting some attention during the Linux Audio Conference, held in Maynooth this year! This means that initial CSound support exists, so effects & instruments can be coded up in CSound to be played live as if its an internal synth / effects box. Lots of new possibilites now, and due to the csound .csd files being text based, they will be real easy to share & merge, allowing all users to contribue & share presets for effects with eachother.. :)

Mandatory screenshot:

Till next! -Harry

Sunday, February 27, 2011

Luppp: Update Ambisonic... :-)

Hey,

Over the last week I've been implementing ambisonic support in Luppp. It didn't add up to too much work, only that JACK ports had to be named differently, the signal path adjusted somewhat (1 input, 3 outputs rather than 2 ins ,2 outs.

At the moment 2D horizontal B-Format ambisonic is supported, but implementing the 3D dimension of the first order wouldn't be too much work.. (add another channel to the process() functions.. )



The pan widget got a little haul over just to support 2D's rather than the one...


Till next, -Harry

Saturday, November 13, 2010

Luppp revived: reSampler

Hey,

I've just spent a lil while getting Luppp into a launchpad repo, and hacking the code a little in a small sub-project called reSampler.

Its gonna a mini JACK app that will scramble a .wav loop D'n'B style :-)
Hopefully Ill figure out how I actually want to control this little re-sampling program.

At the moment, I'm just concidering just a simple copy of say the 3rd part of an 8 part loop to the 5th part. An OSC interface in this case will be:

/resampler/load "sample.wav"
/resampler/setNumParts 8
/resampler/swap 3 5
/resampler/swaprev 3 5

swap just swaps the parts, swaprev, swaps & reverses the direction of the part.

I have a GTK widget that can draw files but it needs some optimization... It takes about 3 secs for a normal length loop atm.

More info on the way once I've got stuff implemented.
Cheers, -Harry




Clean drum looop












Same drum loop with reverb effect:





OSC interface has been implemented, can now swap parts around, reverse parts of the clip and revert to the original loop using ONLY OSC COMMANDS! :-)

Wednesday, January 6, 2010

The Luppp Project

Hey all,

I've started a project a good while back, called Luppp.
Its a live looper. Woohoo you think, another one. Yes.

Why?
(IMO) Some loopers:
- dont stimulate the creative musical side in an artist. (look ugly)
- have too much functionality. (buffer features, advanced menu's)

- only support MIDI or Audio, (multiple programs = messy desktop)
- "feel" too laggy.. (Ableton's UI?)

Why go to the bother of writing it yourself? Well somebody needs to,
and there are other efforts going on (Check Composite, Seq24).
Although Seq24 is a great MIDI looper, I always find the music I make using it is the "same old" song I do every time.

How is Luppp being built?
C++ baby. And Python. And OSC.
Currently the UI is totally built using Gtkmm & C++ , for fast widget drawing.
Python is used as the "prototype" for backends.
OSC is implemented in both the UI & the backend, to allow flexibility in "how" you use the program.

UI:
Gets loaded from a GtkBuilder XML file, signals get connected to appropriate parts of it, and its shown. The rest is handled by callback functions in C++.

Backends:
Currently written in Python, although I do intend to move these over to C++ once nessisary. They currently "do" the stuff you want Luppp to.

OSC:
The Luppp UI has an OSC server. This means you can send commands to Luppp, and it will respond as if you clicked somewhere. This is an amazing feature, as it allows ALL parameters inside Luppp to be controlled using external hardware if you want to. So "No-Computer-Nessisary" kinda applies.

When can we expect an Alpha release?   : Buzz off. Ill let you know.
Where can we get your source code?       : Download it here.
How can we informed when its released?: LinuxAudioAnnounce & a post here.

Cheerio, -Harry