Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Set tempo based on recorded loop #65

Open
kasbah opened this issue Dec 11, 2013 · 39 comments
Open

Set tempo based on recorded loop #65

kasbah opened this issue Dec 11, 2013 · 39 comments

Comments

@kasbah
Copy link

kasbah commented Dec 11, 2013

Luppp's workflow seems to be set on recording to the bpm you set. Coming from SooperLooper I am more used to recording a loop first and then the tempo is set from the initial loop and number of 8ths per loop.

This is probably quite a big one so I am interested in your thoughts on adding this alternative workflow.

@harryhaaren
Copy link
Member

Its not too difficult a feature to add actually, and its something that is indeed very useful.
Thanks for the reminder, its on the TODO here. -Harry

@harryhaaren
Copy link
Member

Kasbah: a question for you, what do you want the workflow to be like? A footpedal press to start recording, and press again to stop recording, with the exact time of the footpedal press being the times used?

Since theoretically, any 90bpm song could be concidered 180bpm too, there would most likely be 2 / 3 BPM values that could be valid.
In that case, pop up a dialog asking what BPM to select, highlighting the "most-obvious" choice?

Note the BPM issue is more complex in Luppp than SooperLooper, as the loop timestretch logic is more complex to provide fancy features in future..

@Peterpotamos
Copy link

looping + fx + timestrech with a fixed bpm, is something that is done in puredata or max msp for centuries (lately with dirac ~). In Windows or Max there is a free tool called MOBIUS, it can be used in Linux via Wine, with good results but with a problem to sync with midi jacktime or externally.
An interface whose way of working is to set one manually bpm, then play is very poor, even Ableton Live has methods to set starting via master loop, the overall tempo. Using the "looper device".
It is important to think about these things from the perspective of a musician.
To me it is useless a tool where the master loop track, not sets the tempo.
Solve that and still have timestreching functions is not important, it is fundamental.

@kasbah
Copy link
Author

kasbah commented Dec 11, 2013

I am not sure. In my workflow at the moment I am not too concerned about
the BPM but rather just that everything is in sync with the first loop.
I.e. it is important to me that subsequent records and overdubs are synced
with the first loop. At some point I did use the BPM output to drive
arpeggios and effects but not at the moment. This is a really specific
workflow though and it's probably worth thinking more about what is useful
to most. Note that in SL you can also set the cycle length to any loop and
then sync to 8ths or cycles or you can also get BPM from Jack-transport or
the MIDI input. Not saying that Luppp needs all of this, just some things
to think about.

The pop-up, asking you for the number of 8ths (or maybe beats/loop would be
a more universally understood term) doesn't sound so bad, if it disappeared
after a period of inaction (using the default) and didn't block any other
actions even when showing.

I am not sure what effect the time stretching has. SL does have some
stretching as well but you can't record over over a stretched loop at the
moment. You can change the rate (which changes the pitch too) and record
over that and the rate is then relative to rate set at the time of
recording. Is the pitch adjustment used for the stretching tied to the BPM?
Can it not work on loop length?

@harryhaaren
Copy link
Member

@Peterpotamos : thanks for your feedback

Luppp is designed totally from the ground-up for musicians. Belive me when I say this, I've redesigned the Luppp UI several times now, and I'm still improving it regularly. (Checkout todays commit 672429d, which adds BPM estimation of loops, making it much easier to set thier tempo).

You mention needing features like "master loop track setting the tempo", that's cool. I personally don't use such a feature: hence why its not in Luppp right now. With constructive feedback from you and @kasbah, we can get this feature working in Luppp soon.

I'm interested in you "perfect workflow" for such a feature, and I'd appreciate suggestions.

@kasbah : Thanks for the suggestions:
Sync modes: Its very difficult to get sync working perfectly: and involves a lot of time-consuming testing. I have thought about JACK / MIDI / Loop / 8th sync, but adding more is not a good expenditure of my time right now.

I hope to streamline the recording process, providing a new way to indicate a "master-loop-length", which would allow you to use the workflow you describe where one specific loop lenght is the basis for the rest. Note that they would all still be synced to the Luppp TimeManager clock behind the scenes, but the interface will show the functionality you're in search of.

If an approximate "tap tempo" has been performed before the recording starts (or during), then Luppp will be able to automatically do loop-lenght detection, because it has some information avaliable: the dialog would only need to be used in cases where the metronome could be totally off, and a drastic change in BPM was intended: eg 174 dnb speed, to a slow 87 bpm hip-hop tune.

Overdubbing is another issue, which is currently not supported yet. It is in planning, and I hope to include it in Luppp 1.1.

I'll look into this issue furthur tomorrow, Cheers -Harry

@magnetophon
Copy link

Another vote for this feature. 👍

@kasbah kasbah changed the title Feature Request: Set tempo based on recorded loop Set tempo based on recorded loop Aug 1, 2014
@Nomys
Copy link

Nomys commented Sep 14, 2015

Another vote for this feature +++ I need badly this feature on luppp

@harryhaaren
Copy link
Member

Hi @Nomys, thanks for your input - I'm not sure if this is going to happen soon I'm afraid. OpenAV is working on some other projects with a higher priority right now (releasing ArtyFX with AVTK UI's, and testing the plugins on the MOD).

I do see the need for a looper that is more musician friendly, and OpenAV does hope to accomodate workflows like yours better in future. Cheers, -Harry

@Nomys
Copy link

Nomys commented Sep 20, 2015

Aww, that's too bad, I will maybe go back to sooperlooper, cause I'm only using live samples and no pre-recorded samples...

Plus it seem to me that the "use as tempo" function is very one sided, cause it's only to use a loop with and unknow tempo. Changing it into a set tempo based on recorded loop, just need to play the unknow tempo loop with an another soft/source, and record it with luppp. More annoying but the function is far more flexible in itself.

Or am I missing something with "use as tempo" ?

@georgkrause georgkrause added this to the Release 1.3 milestone Dec 4, 2016
@georgkrause georgkrause modified the milestone: future release Dec 15, 2016
@Nomys
Copy link

Nomys commented May 28, 2018

Is there any news regarding this ?

It's been pending for ages...

@georgkrause
Copy link
Member

georgkrause commented May 29, 2018

@Nomys honestly, nobody is working on this. but we would be happy to see a Pull Request with this feature. ;)

Edit, more verbose: In Luppp there are a lot of feature requests and issues adressing the complex of timing. This is a quite difficult part and there is a lot to think about, to fix, to design propperly. In short: There is a lot of time to spend on this to do it right. We currently have two devs working on luppp, its Harry and myself. We both have other plans at the moment and wont adress this one in the near future. Am I right, @harryhaaren?

Please note, there are also tasks which can be done without being a dev. If you are interested in participating, please let me know or join the IRC #openav@freenode

@Nomys
Copy link

Nomys commented May 29, 2018

So it's basically the same answer it already was back in 2015...

Man, i'm currently working on far too much free projects to have any time to contribute to Luppp. I briefly saw @harryhaaren at le Linux Audio Conference last year (in Saint-Étienne) and he told me to come here and complain (or just diggout the topic, I don't remember ;o), so here I am !

@georgkrause
Copy link
Member

I know its frustrating, its the same for me. But I really can't change something about. Luppp has this issue #128. I tried to fix but I am not able to. But until this is fixes we can't implement anything which relies on changing the tempo on the run.

@georgkrause
Copy link
Member

@Nomys Since i got this feature request on LAC a few times and #128 seems to be solved in the near future and this is the oldest feature request we have, i started thinking about this one.

Before i collect some thoughts on this, i need to say the following: I spend a big amount of time on Luppp development in the last weeks to get rid of this annoying bug. Sadly, this totally blocked my brain and i didnt found time to actually make music. This is no problem at all, but when the bug is fixed some day, I will concentrate again on some musical projects. This means, i cannot tell anything about when this feature will be ready for production.
Before we can actually implement this, I think we need higher precision BPM-settings. We need to set somethink like "120.65". This might be not that hard, but i didn't looked into this.

Anyway, I think its time to start working on this. Yey! This means, i need your help for thinking about the workflow. What we need is a way to tell Luppp to disable the grid on recording for a specific clip. How do you want to do this? What can you imagine? What do you need. Would be happy about any input about.

In the end, this feature wont make it into the next release, but hopefully in the one after the next :)

@Nomys
Copy link

Nomys commented Jun 18, 2018

\o/\o/\o/\o/\o/

Don't worry, I'm in wait for this since 2015, I can wait 1 or 2 years more now ;o)

I think a sync choice button like in sooperlooper could do the trick for me.
This button allows to change the focus of the grid. Since Luppp is mainly about bpm sync, a sync button will be just a choice between "bpm" or "clip".
"clip" can have a lot of choices (all clips or just one clip per track made only for this use allowing multiples tempos between tracks), but for starter just have one clip you can record on with the grid disabled, then define the grid at the length of the recording and finally enable the grid for the other loops.

What do you think ?

@georgkrause
Copy link
Member

"clip" can have a lot of choices (all clips or just one clip per track made only for this use allowing multiples tempos between tracks)

The current TimeManager does not allow this, and this is not really the topic of this feature request, is it? This would need some pretty deep changes and is already tracked somewhere else. Lets focus on the feature of setting the tempo after recording something in relation to the recorded clip :)

just have one clip you can record on with the grid disabled, then define the grid at the length of the recording and finally enable the grid for the other loops.

This seems pretty possible. We need a button somewhere to disable the grid. Than record a clip without grid and after this we can use the "Set as tempo"-function for setting the grid again. So we have two steps here:

  1. Make it possible to disable the BPM-Grid.
  2. Determine how much beats are in the recorded clip.

After thinking a little about this, I think a simple global "Disable Grid"-Button can cause some problems. It might be better to have a more intergrated workflow. Eg a button which says: Record next clip without grid, determine the BPMs and set tempo.

Maybe this could be also related to #119 somehow. We could set a master clip which can be recorded with or without grid and tempo is aligned to this.

So, i see some problems, i have some ideas, this needs to go into a specific workflow and maybe i also need to do some tests.

@harryhaaren One technical question: Is the event-system fast enough to set the exact start and stop of a clip? So when i press the button on the GUI or the Midi controller, is there any relevant latency until the clip is triggered?

@georgkrause georgkrause self-assigned this Jun 18, 2018
@Nomys
Copy link

Nomys commented Jun 18, 2018

The current TimeManager does not allow this, and this is not really the topic of this feature request, is it? This would need some pretty deep changes and is already tracked somewhere else. Lets focus on the feature of setting the tempo after recording something in relation to the recorded clip :)

I kind of knew this would be a problem :)

This seems pretty possible. We need a button somewhere to disable the grid. Than record a clip without grid and after this we can use the "Set as tempo"-function for setting the grid again. So we have two steps here:

  1. Make it possible to disable the BPM-Grid.
  2. Determine how much beats are in the recorded clip.
    After thinking a little about this, I think a simple global "Disable Grid"-Button can cause some problems. It might be better to have a more intergrated workflow. Eg a button which says: Record next clip without grid, determine the BPMs and set tempo.

Yes !

I think one problem in this will be the second point, cause you can't set a meaningful tempo with only a sample length... You only can have a relative tempo use by the grid but not visible for the user cause confusing.

@georgkrause
Copy link
Member

I don't really get what you mean. We have the length of the recorded clip given in samples. We know the BPM is between 60 and 220 (current limits of luppp). So we have some values which are possible. Others are not. The difficult part is to chose. We cannot really wait for user input (or can we?), since it needs to be applied fast. On the other hand: how bad is it to pick the wrong tempo? It actually applied tempo might be twice or half of the intended one. So things would still fit somehow, but your metronome shows 1/8 or 1/2 instead of 1/4. Can we live with that?

I need to investigate how its done on loading an unknown sample... Let's see. Please try this feature, because this is what we already have and using this as a base would make things easier.

@Nomys
Copy link

Nomys commented Jun 19, 2018

Sorry, I wasn't very clear, this :

It actually applied tempo might be twice or half of the intended one. So things would still fit somehow, but your metronome shows 1/8 or 1/2 instead of 1/4.

Is what I mean by relative tempo, we can totally live with that, but it's just not as precise as 144.8 bpm for exemple...

I need to investigate how its done on loading an unknown sample... Let's see. Please try this feature, because this is what we already have and using this as a base would make things easier.

As I recall, You set a tempo and when you load a sample the grid is just applied to it, if the sample doesn't match the grid, some beats will just be blank.

I will test this week, but I think this is something like this...

@georgkrause
Copy link
Member

Is what I mean by relative tempo, we can totally live with that, but it's just not as precise as 144.8 bpm for exemple...

These are two different topics. Of course, before we can start working on this, we need the possibility to set the BPM more precicely. This means things like 145.35 need to be possible. This is the first step.

Applying the grid can than have the issue that you play something on lets say 60 BPM but Luppp assume its 120 BPM. The question is, if this is a problem or if we want a user decision which would force luppp to wait for it.

Let me know how your testing was.

@Nomys
Copy link

Nomys commented Jun 29, 2018

Applying the grid can than have the issue that you play something on lets say 60 BPM but Luppp assume its 120 BPM. The question is, if this is a problem or if we want a user decision which would force luppp to wait for it.

It is not :)

I didn't have time to test and it will be difficult on the few weeks ahead to find time but I'm still on this...

@georgkrause georgkrause removed this from the future release milestone Jul 18, 2018
@georgkrause
Copy link
Member

@Nomys I spend some time on this. I think the workflow will be like that (@harryhaaren maybe you can tell if its okay for you):

  • There will be a Button to enter a special Mode.
  • In this mode you can record ONE clip which wont be synced to the grid.
  • After recording this clip, the normal mode will be active again and the grid is synced to the recorded clip.

This way, all already recorded clips will be stretched to fit into the new tempo (like it is now when you change the tempo).

@Nomys
Copy link

Nomys commented Jul 21, 2018

It seems great !

Is this clip will be a specific clip (in a specific slot) or is it just the first clip recorded after entering the special mode ?

This way, all already recorded clips will be stretched to fit into the new tempo (like it is now when you change the tempo).

So you have tested ? Clips are stretched when the tempo is changed ? That's pretty odd behaviour for me, but doesn't really change anything for my needs...

@georgkrause
Copy link
Member

So you have tested ? Clips are stretched when the tempo is changed ? That's pretty odd behaviour for me, but doesn't really change anything for my needs...

Just run current luppp and change the tempo and you will see the length of the clip is changed to fit again to the new tempo. Why is this odd?

It is not a specific clip, you decide which one it is by recording there.

This has one problem: If you record a new clip this way, the wrong BPM-Choice will make your already recorded clips be played back on the wrong speed.

@coderkun
Copy link
Contributor

And in this special mode it is only possible to record one clip and not multiple clips with different lengtth at the same time, @georgkrause?

@georgkrause
Copy link
Member

Well, this special mode gets deactivated after you recorded one clip. Recording of multiple clips are not possible in this mode. This is the easiest way, if we want to allow this we need to think about:

  • How to decide which of the recorded clips sets the tempo?
  • Are the others synced to grid?
  • How should they be played back? starting at the same time? Calculate the right point to start from the recording data?

So this gets pretty complex (for both the user and the dev) and I want to avoid this.

Leaving the special mode after recording allows you to have a workflow like this:

  • Disable grid.
  • Record one free, not grid synced clip.
  • Luppp automatically changes the tempo of the session.
  • You can instantly continue recording other clips which are in sync to the first recorded clip.

@georgkrause georgkrause added this to the Release 1.3 milestone Jul 22, 2018
@Nomys
Copy link

Nomys commented Aug 20, 2018

This has one problem: If you record a new clip this way, the wrong BPM-Choice will make your already recorded clips be played back on the wrong speed.

It's not really an issue, but rather a feature to me ;o)

Leaving the special mode after recording allows you to have a workflow like this:

Disable grid.
Record one free, not grid synced clip.
Luppp automatically changes the tempo of the session.
You can instantly continue recording other clips which are in sync to the first recorded clip.

I think it's both easy and flexible this way !
Sorry I didn't have time to dig on this this summer, I may have more time this fall :/

@georgkrause
Copy link
Member

It's not really an issue, but rather a feature to me ;o)

Its not an feature to play back a clip on twice or half speed as intended. This is just wrong.

@georgkrause
Copy link
Member

I am currently reworking the clipsync and working on improving the general way how the playback works in several minor step. After everything is working, I plan to implement a finer granularity for BPMs (so we can set something like 139.24 BPM). After we did this, it should be quite easy to align the grid to a in free mode recorded clip.

This is still quite a long way to go for me alone, so don't expect this to be done soon, but at least there is some progress :)

@georgkrause
Copy link
Member

@magnetophon
Copy link

@georgkrause Sorry for the late reply!

I watched you video but there was no sound!

Thanks for working on this though!

@georgkrause
Copy link
Member

@magnetophon Thanks for the interest. This was just a first POC so I only did a first video without any sound. There is a full demo of everything which I planned to release as a fork of Luppp called Loopp: https://peertube.servebeer.com/videos/watch/e52aa296-7aa7-4200-be55-a2d690c8e3f9

But after some long discussions and because of some personal stuff this fork wont be released to the public.

@magnetophon
Copy link

That looks great!

Too bad you don't want to release it!
Could you tell us more about why you don't?

@magnetophon
Copy link

BTW, is that a Fusion wristband? I'm in Lärz as we speak!

@georgkrause
Copy link
Member

@magnetophon Jeah its from Fusion 2018, needed to skip this years sadly but was there every time from 2014-2018 (except 2017 of course ;).

I did a fork of Luppp called Loopp because I wanted to push the project forward without the limitations of a project which is part of a pack. But after a lot of discussions I think its a bad idea so split the project and its better to get the changes into Luppp. But currently I can't care for it.

@magnetophon
Copy link

Ah, that sounds much better than what I originally thought you meant! :)

Usually when people say they don't want to publish code yet, they want to clean it up first, which is understandable. Is that the case here as well?
Would it be an option to send your changes privately to @harryhaaren so he can get inspired by them?

@harryhaaren
Copy link
Member

Hey Bart/Georg!

There's various options - but unfortunately I just don't have much time for OpenAV at them moment, and what little time I do have I tend to prioritize to Ctlra lib. I'm open to options as to how we can make Luppp a "community maintained" OpenAV project or something, that gives other developers more/easier control/direction of it - I just don't have the time (and dont' see that changing very soon..).

Thanks for the input though, and if there are suggestions then lets have them! (Perhaps we can open a new ticket if we're expecting a big discussion - just to no derail "set tempo" thread too much! :D )

Cheers, -H

@georgkrause
Copy link
Member

Usually when people say they don't want to publish code yet, they want to clean it up first, which is understandable. Is that the case here as well?
Would it be an option to send your changes privately to @harryhaaren so he can get inspired by them?

@magnetophon I already sent the changes for review and we are already in a process of discussing the future of Luppp. I would like to stop discussion here now, to keep the issue clean. For further question, or Fusion small talk, dont hesitate to send an E-Mail or open another issue, please.

@magnetophon
Copy link

Cool, thanks!

@georgkrause georgkrause removed their assignment Sep 2, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants