elieserdejesus / JamTaba

Jamtaba is a software to play online music jam sessions.
http://www.jamtaba.com
245 stars 49 forks source link

[Looper] Record own or others single Track while jamming in Jamtaba #712

Closed MagnusDrumsTrumpet closed 7 years ago

MagnusDrumsTrumpet commented 7 years ago

Hey i had the idea for a Record Funktion on each Track individuali in Jamtabe while jamming to for instance loop it back to build up an jamm lets say i play drums hit the reck button it recs and if i am ok with it i press loop and it should place the last complete bpi drumtrack recorded in the jam the i could play some chords onthe fly and use them also in same way or i could loop chords fron the guitarist to loop them back that ge can improvise with it well i hope this is understandable maybe it is possible to save then on several register to hold them and choose what is needed in the jam so what do you think) greetings from Mag

elieserdejesus commented 7 years ago

@MagnusDrumsTrumpet , I think this is nice idea. Sometimes I miss this feature too.

We need discuss more details to avoid rework when writing the code. @jonjamcam , are you interested in discuss this feature details too?

Starting the discussion: 0 - This idea can be solved using an external VST looper plugin. So, I need ask: work in this feature (is not easy and quick) worth it?

Assuming the answer is yes:


1 - I have the idea to JamTaba native plugins. I think this feature can be the first cool native plugin: JamTaba Looper.

2 - We can work with a fixed loop length (using current bpi value) or let user choose the loop length. For example Loop length = 1 means one interval, Loop length = 2 means 2 intervals, etc.

3 - Allow record and loop the track input (audio or midi)

4 - Magnus mentioned "...or i could loop chords fron the guitarist ...". This can be more complicated to implement. A first idea in my mind is: The Looper plugin will contain a input combo box. This combo will show the options audio, midi, no input, and one entry for every ninjamer channel, so will be possible record and loop every incomming data, from local or remote inputs.

5 - Some ideas for cools User interfaces? Some cool "looper" plugins or software?

qulf commented 7 years ago

Nice idea but dont forget abaut midi suport for looper and stereo pan for looper also with midi lern option. I like lopper from guitar rig like becuse that is one witch work with me. :) I try others vst but always was something not good with them.something like guitar rig looper but with four butons start/play/records for four inpedence loops plus stereo pan. That is my idea. Cy on jam. :) sorry for language

qulf commented 7 years ago

http://www.gear4music.com/Guitar-and-Bass/TC-Electronic-Flashback-X4-Delay-and-Looper-Guitar-Effects-Pedal/N4Q

qulf commented 7 years ago

Somethings like this. Plus 4 pan and 4 volume

MagnusDrumsTrumpet commented 7 years ago

hey cool youre interrested in it) i would at first hold it easy so that it is just like a BPI Rec Button on each track so that you dont have any stres to think or sett up any bpi bpm it should use the actual bpu bpm running in the jam important would be that it starts when you hit start automaticly on the first beat so syncs it self in the jam and does it again when you stpped it and start it again further features can be more detailed in behind maybe later i think i wouldnt go with an extra plugin if possible directly in Jamtaba on each track the Recbutton and its start and stop fuctions i do all that in reaper while jamming from time to time but that isnt easy while playing find the bpi bpm sync and loop and and and) for live performance should be great cause you never know were the jam goes)))

jonjamcam commented 7 years ago

Hey guys, nice to see this thread. I've tried many options in the last year or so just to be able to loop my guitar or some voices, but as @qulf said, all have problems.

The most complete one I use sometimes is mobius 2, but the sync does not always work in Jamtaba standalone and to use it in reaper I need Jbrigde.....etc. so it's always a pain.

I think @MagnusDrumsTrumpet is suggesting something simple and effective. I understand some interface with two or three buttons, max.

@elieserdejesus you said it's not easy and quick. I think if the looper is solid it's worth the effort. We can go setp by step testing how it behaves. It can be much fun!

I suggest start with three buttons, not as a plugin to insert, but as the low cut button style embedded. One button is used to turn on and off the looper, the second one activates the recording function and stop if pressed a second time (alternating), for example. The third button is reset in case of mistake. We can start by allowing only the complete BPI interval as a fixed measure, just to see how it works.

One nice function about Mobius is that once in sync with a host you press spacebar and it waits for the next "1" measure to start recording, like a "standby". So in Jamtaba you just press "record" and next "1" will start recording. Stop in this case is automatic at the end of the BPI interval.

This is the simplest looper I can think of and we can have one looper per channel. As you can see there's no need for midi implementation using this basic model, so the VST plugin can have a looper too with no extra coding for the VST.

We can later think about overdubs and other controls like pan, etc. If you build a "native" looper you can grab all the audio data from each channel output pre-fader and loop it (post-VST) so it can loop vst keyboards too, for example.

Just some ideas for starters!

EDIT: something like this:

image

let user choose the loop length. For example Loop length = 1 means one interval, Loop length = 2 means 2 intervals, etc.

I'd add Loop length = 0 for half BPI interval

elieserdejesus commented 7 years ago

Nice guys, seens to me all ideas are converging to a "simpler but effective" loop feature, directly in channels/tracks.


I'm trying to summarize the ideas in "programable" features:

  1. Track embedded Multi layer/overdub looper
  2. Remote tracks are loopable too
  3. Pan control to every layer/overdub
  4. Volume control to every layer
  5. Simplified user interface in tracks.
  6. waits for the next "1" measure to start recording
  7. Record stop is automatic at the end of interval.

@jonjamcam , I think is better consider a overdub capable looper from start because I'm shure this feature will be needed at some point.

About the buttons: I think put the "loop control buttons" in every track will polute the user interface. An idea is put just a L button in every track. When this button is clicked another window is opened with the overdub/layers controls (pan, volume, mute, etc), loop control buttons (rec, start, stop, clear), add overdub track, remove overdub track, etc. Like a embedded plugin, always inserted in all tracks. If you click the L button the plugin editor window will be visible.

image

I undertand this is more complex than a rec button directly in every tracks, but I'm shure we will need more loop features in future. Maybe some solution in "the middle"? Not too simpler, but not too complicated? :)

qulf commented 7 years ago

mayby one looper and additional button " add loop" , when you clik on that have you got two loopers, and when we need more just clik "add loop"? !?

jonjamcam commented 7 years ago

An idea is put just a L button in every track (...) Maybe some solution in "the middle"? Not too simpler, but not too complicated? :)

Yea it's good enough IMO.

(Nice fader design :D /sarc)

elieserdejesus commented 7 years ago

@qulf

mayby one looper and additional button " add loop"

Are you imagining this add loop button in the track or in the small window I called "Loop editor"?

elieserdejesus commented 7 years ago

I remembered another thing to discuss:

If all tracks are loopable, people can enter in servers, activate the loop in all ninjamers tracks, and now the people playint in the server will hear your own instruments looped, but streamed by another person, possibly a "jam troll". I'm not shure if it's a good idea allow loop in remote tracks.

jonjamcam commented 7 years ago

I'm not shure if it's a good idea allow loop in remote tracks.

I agree. Looper for Local tracks only.

MagnusDrumsTrumpet commented 7 years ago

i would plan a permission request from the other person you want to loop btw iwas looped also often ))) so lets say if i want to loop another musician he should recive oa permit loop yes or no message ? would be a solution not everybody is on jamtaba all mac´s arent

jonjamcam commented 7 years ago

Here are some proposed icons for the button (to replace the "L"):

image

(non transparent)

MagnusDrumsTrumpet commented 7 years ago

cooool icon look ))) super jon

MagnusDrumsTrumpet commented 7 years ago

a try to explain my idea of how the loopfunction should run automaticly when you press that Loopbutton. first of all Jamtaba should start the recording of your channel promt in behind. all ohers and you hear you playing as in normal jamming. So you let it record over lets say 6 bpi sequences and stop it at the 7 th somewere while playing still your instrument. now jamtaba should be still in play mode synced holding all 7 Loops seperate to let one of them roll by your desicion. Jamtaba could mark them as easyly loop 1 loop 2....... loop 7 if you press 5 the loop five will be hearable immediately on the point you let it be hearable cause all loops are constantly still running in behind in sync. so you can spring between the loops, bring variation or let the best loop roll or what ever. now you can improvise on your played loopvariation or switch to another variation or mute it to play live again. in our example loop 1 and loop 7 will not be complete so by default jamtaba should use the loop before the last loop so here 7-1= loop 6 so you dont have to syc or think about any thing just press Rec to make loopes and if you think youre good then press again Rec and jamtaba should stop Rec but stay in play mode and offer you the numbers of the loops you can choose and click as a button by default here loop 6

another idea is that jamtaba archives the Loops on your Harddisk in a Dir you can choose Jamtaba should name the loops urgently by BPM BPI Date and mayby by the names of the players in the room so that you have an archive to use it when ever you want some of the loops again

Puuuh alot input all other typical Loopfunctions can be used also like oneshot cycle overdub and what ever.

the idea is that you just rec while jamming and have no silence while recording or sync probs that will bore the others so no waste of time during the jam.

i hope it is understandable abit dont hesitate to ask me for make it clearer

greetings Mag

elieserdejesus commented 7 years ago

I like the Magnus idea, this can be a very effective looper for ninjam.

When the loop button is pressed looper start recording, and the looper window will be opened. So, is possible see the sound wave of recording, something like that (I used my very advanced MS Paint skills to demonstrate😄):

image

If the musician keep playing, and playing, and playing, every complete interval will be a new numbered loop layer: image

Summarizing again (some thinks changed from last summary):

  1. Multi layer/overdub looper
  2. The looper will play ONLY the selected layer.
  3. Users can choose any loop layer by clicking or pressing numeric keys.
  4. Layers can be selected ONLY while the looper is playing (not in recording mode).
  5. No special Pan and volume control for the loop layers, the pan and volume of the track will be applyed in selected loop layer.
  6. Record will start when user click the loop button in track.
  7. Waits for the next "1" measure to start recording (this waiting state need some visual feedback)
  8. The loop editor window will be opened when the loop funcion is activated (loop button is clicked).
  9. The record function will be stopped when loop button is clicked again.
  10. Keep the loop editor window opened when loop function is deactivated, because after recording some loop layers users will choose the best layer.
  11. The local audio input will not be muted while looper is playing, the input and loop will be mixed (is possible play another thing in top of your own loop).
  12. Loop layers can be discarded/deleted
  13. Auto discard the last and not completed loop layer, this layer will not be usefull.

The "remote" loop is more complex, let's work in the local loop first :)

jonjamcam commented 7 years ago

Great ideas guys! I think all implementations above are very good. One question though:

The loop button will have a dual function (record loop and open looper window). This may be confusing if you want to only open the window (if closed, but looper is still working). My personal choice would be to have it work as open loop window only and place a proper record button inside the window so all controls are inside when operating the looper, but actual testing will tell :D.

Another couple of considerations:

1.- [Standalone] how would subchannels work? will they feed the " channel looper" too? If yes, then we have problem with the location of the button, unlees each subchannel has it's own looper.

2.- Managing multiple looper windows (at least two). Some differentiation will be needed (color maybe) for the one being edited, for example.

qulf commented 7 years ago

I have idea too add some button witch limit to one layer when needed. Or something to limit numbers of layers to witch we wants. Button with "+" , " - " and numbers of layers between and we can choice unlimited if we want

elieserdejesus commented 7 years ago

The loop button will have a dual function (record loop and open looper window). This may be confusing if you want to only open the window (if closed, but looper is still working). My personal choice would be to have it work as open loop window only and place a proper record button inside the window so all controls are inside when operating the looper

I agree @jonjamcam , this is a good idea.

1.- [Standalone] how would subchannels work? will they feed the " channel looper" too? If yes, then we have problem with the location of the button, unlees each subchannel has it's own looper.

My idea is put a Looper in every subchannel. We will can use 4 loopers, each loop with many layers, this is a lot of possibilities.

2.- Managing multiple looper windows (at least two). Some differentiation will be needed (color maybe) for the one being edited, for example.

True. One simple idea is allow ONLY one looper window opened. When a looper window is opened the another is closed. This avoid a lot of opened windows.

I have idea too add some button witch limit to one layer when needed. Or something to limit numbers of layers to witch we wants. Button with "+" , " - " and numbers of layers between and we can choice unlimited if we want

@qulf , this can be done. I think a maximum layers field will be enough. If this field is setted to 1 you will have the one layer looper, How many layers are enough? 8 max layers is a good number?

MagnusDrumsTrumpet commented 7 years ago

yes jon we need another way also to just play loops later also so a playloop button and a recloop button or as you say allunder the loopbutton in the loopmenue window maybe) to make overdubs or multi voices for example we could also have the choice to let more then one loop run for instance for second third voice of a phrase niiiice)

MagnusDrumsTrumpet commented 7 years ago

ah yes and you can chainplay the loops or randomize them also automaticly by enable or disable the loopnumbers or layers numbered)

qulf commented 7 years ago

@elieserdejesus for my personal uses i need make maximum two loop an once so 8 will be enough :)

jonjamcam commented 7 years ago

Guys, I was thinking about this idea of retrospective recording for the looper.

For those of you who don't know what that is, it's the possibility to use the previously palyed material as a take. This means you play whithout pressing record and when the last take you made was the one you want to use, then you press the retrospective record button (after you played) and that take is "printed".

I know old Cubase VST had this function (this is where I learned it existed):

image

I've used some times for midi loops and it works pretty good. The main benefit when used is that you just play as usual, no worries about pressing record. Then suddently you played an amazing take coming from nowhere. Well, just press the magic button and your last take is looped!

For this to work, the looper will have to record silently in the background all takes from start (I guess as soon as you enter a room). If no button is pressed, then "buffer "take (last one) is constantly replaced as the jam goes on.

What do you think?

qulf commented 7 years ago

another sugestion settings/looper "allow others to make loops from you" on/off

MagnusDrumsTrumpet commented 7 years ago

very goooood) as easy as it could be in first instance)

elieserdejesus commented 7 years ago

@qulf

another sugestion settings/looper "allow others to make loops from you" on/off

This one will need be delayed, it's more complex to programming.

@jonjamcam , this Retrospective loop is very interesting. But this always recording in background idea is conflicting with the "rec button" in loop editor window. If JamTaba is always recording in background we don't need a rec button, right?

How we can solve the multi-layer situation? For example, suppose I'm playing and decide activate the retrospective loop. Now I'm looping my last played interval, all things are ok. After some time, I decide loop more layers (because Retrospective loop is ONE layer only). How this will work? How we switch from "Retrospective mode" to "another modes"?

My first idea is: if user click in track loop button the editor window will be opened and the Retrospective mode is stopped. When loop editor is opened users need click in rec button to start recording.

Another ideas about how to switch loop modes?

jonjamcam commented 7 years ago

How we can solve the multi-layer situation?

I theory I think the concept of the retrospective record is in general to have available ("buffered") the last take played (incoming/live audio) at any point in time. So in your example @elieserdejesus if you already have "accepted" once this behaviour and you have one take looping already, the "buffer" can still be working in the background storing the new "last take" and have it available for a second, and third, etc. "printing" either for replacement of the same layer or to add a new layer.

So if we have 4 subchannels active (potentially 4 loopers), you'll need 4 different "buffers" working in the background all the time, but this is worse case scenario.

My first idea is: if user click in track loop button the editor window will be opened and the Retrospective mode is stopped. When loop editor is opened users need click in rec button to start recording.

This may prevent the use of retrospective recording during overdubbing. In my experience once you start using it, if you like it (like I do :D) you want it always available.

I suggest we set a manual checkbox or button to disable completely this feature if someone likes old style recording only. This can save resources too if not used.

How we switch from "Retrospective mode" to "another modes"?

In cubase there are two different butttons: one for normal recording and another for retrospective recording so you can always choose which to use at any time. In my opinnion it's not a "different looping mode", just an extra function.

EDIT: Maybe it's a good idea to implement this one after the "traditional looper" is working OK. Just to make testing more effective we can focus on one implementation at a time.

elieserdejesus commented 7 years ago

Maybe it's a good idea to implement this one after the "traditional looper" is working OK. Just to make testing more effective we can focus on one implementation at a time.

I agree, we can improve when the basic things are implemented.

MagnusDrumsTrumpet commented 7 years ago

hey Guys, what i think would be cool is that we can see the looped wave running in the loop menue, so that, if i would try to make for example multi voicing i see when i have to play over it as i am a little dement on such things )))

MagnusDrumsTrumpet commented 7 years ago

also it should be possible to drag and drop every loopy in the loop window maybe )? ha i am so curious if this all will goooooo) greets Mag

elieserdejesus commented 7 years ago

Guys, the first testable beta version is available in releases Please play with this beta version and help to improving: image

jonjamcam commented 7 years ago

I did a first intuitive test. Very nice! As simple to use as can be. Took me 5 minutes to figure out how to get it going.

One thing I found that is not working in my system: only default and ninjam metronomes are working OK, but tictoc, clave and snap are broken.

With regards to functionality... finally a looper that works in sync with ninjam!

elieserdejesus commented 7 years ago

only default and ninjam metronomes are working OK, but tictoc, clave and snap are broken.

Here too @jonjamcam , I will check this issue.

Today Nacho (ninjamer from Spain) tested the Looper too. He proposed a "multi layer" in every layer. For example, you can record only in the layer 1, but can record 2 or 3 full intervals, and fill the "gaps" in every interval. All these samples (from 2 or 3 played intervas) will be mixed in one loop layer. I think this is the common behavior in guitar loop pedals and people are expecting this same behavior in every looper.

What you think about?

jonjamcam commented 7 years ago

you can record only in the layer 1, but can record 2 or 3 full intervals, and fill the "gaps" in every interval. All these samples (from 2 or 3 played intervas) will be mixed in one loop layer

Yes. This is the simple overdubbing function that guitar pedals have (BOSS guitar pedals that have loopers work like this AFAIK).

I think a simple implementation for this is to add a record mode feature (menu or button) with two modes: replace and overdub. Currently the looper is working similar to "replace" mode.

MagnusDrumsTrumpet commented 7 years ago

Hey wow looks great, sadly i cant start jamtaba anymore, if i want to connect to a server it freezes ( wanted to try it out somebody has that issue too?

MagnusDrumsTrumpet commented 7 years ago

ah ok i switched to ninjam metro sound and then it works, reaper crashes with the clave sound)

MagnusDrumsTrumpet commented 7 years ago

works like a charme))) genius eli thankyou i did an jam with myself crappy hehe but i am impressed of the loopyfunction a revolution in our ninworld)

MagnusDrumsTrumpet commented 7 years ago

at moment if you use the loops and then change the bpm reaper crashes, if you change bpi only it works for the bars you recorded interresting)

elieserdejesus commented 7 years ago

at moment if you use the loops and then change the bpm reaper crashes,

I will check this @MagnusDrumsTrumpet . At moment the looper is cleared when BPM is changed. But I think is too drastic discard all recorded layers, maybe ask user to "clear recorded layer or not" is better.

I think a simple implementation for this is to add a record mode feature (menu or button) with two modes: replace and overdub. Currently the looper is working similar to "replace" mode.

Nice idea @jonjamcam . What you think is the default/most frequently used mode?

jonjamcam commented 7 years ago

What you think is the default/most frequently used mode?

Probably overdub mode is used the most, but I'm not sure.

With regards to the overdubbing I was thinking about a way to protect individual layers that you don't want erased at all or by accident. For example if you already recorded 4 layers and you're ready to go into overdub mode, but you want to keep layers 2 and 4. If we had something like a lock icon/button for each one. Something along those lines would be nice.

MagnusDrumsTrumpet commented 7 years ago

Ok I think it is important to have the ability to save the loops and use them later also as i said maybe automatic with the trackname bpi and bpm... So for example Drums100to32.loopyy So you can choose later whatever you want Would be great also to double a Loop from 8 to 16 or 32 etc bpi if possible And for my channel at the end more different loop windows later to make multivoices and also to adjust their volumes while playing Ohoho muuuch things sorry ))))

elieserdejesus commented 7 years ago

a lock icon/button for each one. Something along those lines would be nice.

perfect @jonjamcam !

ability to save the loops and use them later

Shure @MagnusDrumsTrumpet , I'm just focusing in the rec/play stuff first, but I agree save/load is very important.

double a Loop from 8 to 16 or 32

I agree too, and fortunally this is easy to program :)

more different loop windows

@MagnusDrumsTrumpet , I not shure if I understand the idea. At moment you can see just one looper window. Are you proposing "multi looper windows" ?

MagnusDrumsTrumpet commented 7 years ago

So i would need up to 10 layers in Drumming choosable and after that the next loopwindow to choose so that we can do overdub with the second loopwindow also easily but with seperate loops, to not kill a single loop by overdubbing If stopped it should be possible to choose the loop also before play again

MagnusDrumsTrumpet commented 7 years ago

So i would need up to 10 layers in Drumming choosable and after that the next loopwindow to choose so that we can do overdub with the second loopwindow also easily but with seperate loops, to not kill a single loop by overdubbing If stopped it should be possible to choose the loop also before play again

MagnusDrumsTrumpet commented 7 years ago

Oh cosed by accident)

MagnusDrumsTrumpet commented 7 years ago

Yes more diffrent loopwindows

jonjamcam commented 7 years ago

I tested the different looper windows open working good. It's very easy to use them independently, but sometimes the subchannel label is not accurate. It depends on which order is used to add channels and subchannels and it can be a little confusing. for example:

1.- If you have initially 1 channel. 2.- you add one extra channel 3.- now you add two subchannels (one for each channel).

image

As you can see subchannel 2 and 3 are labeled in the order they were added and that's not the order how you see them. Numbers 1 and 4 are OK.


About the looper buttons I think we need some colors for better feedback, specially when using these different windows. A good idea is to keep existing color coding:

1.- Use yellow color for waiting. This can be applied to play and record buttons. Each has its own waiting state: rec before beat 1 and play during first recording (not during overdubbing because play is active in the case). If waiting is interrupted then the button can go back to the original theme button color.

2.- Use red color for record and green color for play when active (pressed manually or activated automatically in the case of play after wait state).

MagnusDrumsTrumpet commented 7 years ago

yes cool jon how did you make show all loopwindows together, on mine here the actually loopwindow only shows, i would like the possibility to see all loopwindows wich are used to the chainplay i would suggest a choosed chainplay also mean that i can say for eample i want to let play the loop 2 and 4 or also 3 and 4 and 1 in choosed chain More contrast of the wave color will come i think)

elieserdejesus commented 7 years ago

@MagnusDrumsTrumpet and @jonjamcam , I added all your suggestions as tasks https://github.com/elieserdejesus/JamTaba/pull/721

@MagnusDrumsTrumpet , Jon is compiling JamTaba directly from source code. The beta version I released some days ago not contain the last changes. Compilation is the process of take a bunch of code and transform in an executable (.exe for standalone and .dll for VST plugin). Everytime we change something in the code base is necessary re-compile JamTaba to generate new executables including the last changes.