openAVproductions / openAV-Luppp

Luppp is a live performance tool, created by OpenAV productions.
http://openavproductions.com/luppp
GNU General Public License v3.0
258 stars 45 forks source link

Overdubs #123

Open georgkrause opened 7 years ago

georgkrause commented 7 years ago

It would be great if there would be a possibility to overdub a clip. since i do some percussion stuff using more than one clip is not that nice.

i love the principle of as less buttons as possible, but in my opinion one new button per clip would be useful to implement this function. the best would be one record or overdub button and one play/stop button. i know this might be a problem for some controllers (like apc mini) to bind to this to buttons, but maybe there is a way with a long-click or double-click?

i know there are thoughts about implementing this, but i wanted to bring some input and start a discussion about ;)

harryhaaren commented 7 years ago

So there are two things here:

Given the title of this issue, lets discuss Overdub here. If we need another issue for secondary mappings, we can create one, but I'd prefer focus on one thing at a time :)

For overdub, the two interesting parts of code are [1] and [2]. The interaction between the Looper (playback device) and LooperClip (content being played back) is somewhat intricate, and forms the fundamentals of the audio processing in Luppp. This is not something that we can "casually" change - it needs extensive user testing and review before merge (just to set the scene for the work).

If we really want this, we need a way of telling the LooperClip we're in overdub mode, so to wrap the recordHead around the size of the existing clip. Possible, but the recordhead also indicates what amount of audio is already recorded (aka the length of the clip). So these whole parts need a proper refactor and cleanup, and then start working on new features (overdub).

Opinions?

[1] https://github.com/openAVproductions/openAV-Luppp/blob/master/src/looper.cxx#L125 [2] https://github.com/openAVproductions/openAV-Luppp/blob/master/src/looperclip.cxx#L213

georgkrause commented 7 years ago

Sorry for the double request, but my aim was to discuss a complete solution, but i agree with implementing it step by step. so lets focus on the overdub-part ;)

at first i want to offer my help for the extensive user testing! I dont understand the current implementation right now, but maybe i will have a look at. but when i get you right you want to record the overdub to the same file, right? i can imagine another way to do it: luppp records another clip with the same length and is able to play two clips from one grid element, so its virtually overdubbing. maybe its easier?

harryhaaren commented 7 years ago

Adding the incoming audio to the current clip is much easier from an implementation point-of-view. It does mean that there is no "undo" of overdubbing, because we are overdubbing directly on the existing audio data. Would that be acceptable you think?

georgkrause commented 7 years ago

the missing possibility to undo a overdub would mean the hole clip is damaged if there is a little mistake, so i think there is a need to be able to undo the overdub...

harryhaaren commented 7 years ago

Yep I know that "thrashing" the whole existing content is not ideal - adding extra layers becomes more complex. Its a tradeoff, between that and time to put into it. Honestly, I don't see this feature happening soon, but I'll leave it open in the backlog with the feature-request label.

georgkrause commented 7 years ago

@harryhaaren instead of implementing overdubs it may be okay to allow the user to play two clips on the same track. i dont know if this would be a good idea from a technical point of view, but i consider this as the easier solution from the developers point (i expect little changes) of view and the user point of view (no secondary midi shortcut for overdubbing is needed).

eg in my case: i own a apc mini and use it in my live sessions. i got 8 lines of buttons, but its unlikely that i use all of them. i use the different tracks for different instruments so it would be cool to have maybe a guitar chord loop on one one clip and in the next clip on the same track i can loop some guitar melody. your thoughts?

ps: i know this changes fundamental behavior of luppp, that is why i would implement a option in the config file for this one and set the default to the current behavior, only if one set the option the behavior changes to "overdub mode".

harryhaaren commented 7 years ago

Playing two clips on the same track is not "overdub" for a number of reasons. I'm not opposed to adding a "play two clips on one track" feature if thats what you feel would solve a certain use-case, but lets not call that "overdub mode" :)

There are some fundamental issues with playing two clips on the same track - they have the same FX, and the same volume. What if one is recorded louder than the other? No way to fix these types of issues.

Given Luppps current features, what I do is loop melody of guitar on a different track than chords. Given that you'll want to have chords playing while actually recording the melody, it makes sense to have them on seperate tracks? Is there any reaons this will not work for what you're asking?

Overdub is a "building block" of looping - a fundamental concept. If there is demand and a developer willing to implement it, I'd welcome that.

georgkrause commented 7 years ago

okay, thanks for the feedback, i think there are valid points. i can argue against some of them, but its everything my point of view and my use of luppp, so i dont know if they are valid for others.

The reason why i am asking for this wrong overdub mode is that i sometimes run out of tracks. of course, i can run luppp with more than 8 tracks but in this case my midi controller doesnt fit luppp anymore and its hard to handle. But i never run out of scenes. so i would like to put the same instrument on only one track without loosing the ability to play two loops of the same instrument at once.

compared to the real overdub function there is not really a new problem. you cant adjust the volume of each "layer", overdubbing would be the same, the same fx, too. but playing to loops on each track together would allow the user to play the layer alone or together. and we talked about implementation problems of overdubbing before and there are problems which wont appear with that. and there is an other think we should keep in mind: overdubbing needs a secondary midi binding function, which isnt as easy to handle like the clip triggering at the moment...

all in all i dont need to name it "overdub mode" but i think it could be the better solution than a real overdubbing.

tobiasBora commented 2 years ago

Any new on this issue?