Previous topicNext topic

BPM clock - automatic or manual (or resync clips to bpm)

Suggestions for new features for Magic.
Post Reply
blackdot
Posts: 528
Joined: Sun Jul 06, 2014 10:18 pm

BPM clock - automatic or manual (or resync clips to bpm)

Post by blackdot »

would be cool to have some kinda beat detection or even the possibility to manually tap a certain tempo which magic than catches. this could then be used as a usual 0-1 thingy to manipulate other things. eg. it could be the "speed" for videos and so on.

thinking about it, i better give an example: assuming i have a little animation loop, let's say a walking stick figure, which i want to synchronize with the live music (every step on every beat). detecting low frequencies is not really useful, as it can only be used to set the start of the animation (it could influence the speed, the video gets slow and fast then, and that's not what i would want). manually adjusting the speed parameter kinda works, but well.. only kinda. after a few beats it's off again (also if i get lucky and find a perfect value, i have no option to "offset" the video loop). tapping to the beat (or auto detecting) and somehow converting this info in to the velocity of a video would be awesome. or well.. implementing meshes and bones altogether, however that seems a little far fetched at the moment.

maybe there could also be a semi automatic bpm detection. maybe magic could "listen" to the low frequencies, the bass, for a short while and convert this info into BPM.

i'm thinking only of the use for movie clips, however the possibilities would be big, i assume. the big advantage over just detecting low frequencies, would be, that a recurring 0-1 tick would make things smoother and less sudden, because the "next beat" would become anticipatable.

i guess for converting a BPM value into play-speed of videos we'd need some kinda standart like 4 taps/beats equal 2 seconds of clip or something. that means if i tap 4 times while looping my 2 seconds clip (in which a stick figure takes one second for one step and another second for the other step), the steps of the figure would match the first and third tap
Magic
Site Admin
Posts: 3441
Joined: Wed Apr 09, 2014 9:28 pm

Re: BPM clock - automatic or manual

Post by Magic »

Thanks, yeah I think we are planning to have some kind of beat detection feature. I know it's something that would be useful for a lot of people.

Beat detection is tricky though, because it has the potential to do undesirable things. If I remember correctly, that's why we didn't put in in the software originally. It's not an exact science, and it could be bad if it detected something incorrectly during a live performance. Even if you manually tapped in a tempo, the tempo might change and things would go out of sync. Always hard to deal with these kinds of things during live performances. :)

One thing that might be helpful to know is that the Ramp modifier cycles exactly once per second when the value is 1 (= 60bpm), twice per second when the value is 2 (= 120bpm), and so on. So you could use it as an exact timing mechanism if you set the parameter source to "(No source)". I think this info is actually not in the User's Guide so maybe I should add it.

Even more helpful than that is you can do a little bit of magic (no pun intended) with modifiers to set an exact tempo. If you set up the modifiers like this:
Image
You can set an exact tempo with the Scale modifier (I put in 120 as an example). So in this case the module's Y parameter will ramp from 0 to 1 exactly 120 times per minute.

Regarding the math there, it's essentially this: (60 ^ -1) * 120 = 120/60 = 2. So 2 becomes the parameter value for the Ramp as I mentioned above. In other words, in this particular case, you could just put 2 as the Ramp's value and get rid of the other modifiers. But, if you have a bpm that doesn't divide so neatly (i.e., 113/60 = 1.88333333333), it's more convenient to just enter 113 as the Scale's value.

You could add even more modifiers to get other interesting results. For example, adding a Threshold modifier at the end with a .5 value would give you a blinking effect at the desired bpm.

Anyway, hopefully not too confusing but feel free to let me know.

Eric
blackdot
Posts: 528
Joined: Sun Jul 06, 2014 10:18 pm

Re: BPM clock - automatic or manual

Post by blackdot »

Thanks Eric. I do have been tinkering with the ramp or sine osc and threshold modifier. i for got about that while writing the OP though. during a live performance, incase of externally figuring out the bpm and then translating that into the ramp value, tapping it into magic which does the rest would be a big help. it could be helped by rounding up to 0.5 or 1.0 (as most electronic music uses bpm in 1 or 0.5 steps i assume). then also the video thing :)

so i guess the feature which i'm actually requesting is a ramp or sin osc modifier which uses bpm (which can be tapped or detected) as value which can however also be used as a speed input for the video node (and maybe others) (a certain amount of periods equal a certain velocity).
Magic
Site Admin
Posts: 3441
Joined: Wed Apr 09, 2014 9:28 pm

Re: BPM clock - automatic or manual

Post by Magic »

Hmm, it seems like in the scenario you're describing, you wouldn't want the speed to change, right? You'd want it to be a constant value so the video playback is smooth. But a Ramp or a Sine would make the playback speed fluctuate -- it would go faster and then slower. Which could be a cool effect, but is that what you are after?

I think really what you want (unless I'm not understanding correctly) is a way to set the playback speed to a specific constant value so it matches the tempo of the music, and so the video loops exactly on a beat or two beats or whatever.

Yes? No?
blackdot
Posts: 528
Joined: Sun Jul 06, 2014 10:18 pm

Re: BPM clock - automatic or manual

Post by blackdot »

Yes. That the speed is defined on how quick 0 and 1 of a sine or ramp alternate but doesnt change then. Kinda like a motor where the 0 and 1 would represent the pistons up and down movement which propell a certain speed of the vehicle (so yes 0 and 1 wouldnt directly represent the speed, but would, constantly alternated, give a constant speed).

That way we'd be able to prerender rhytmic clips which speed we could adjust during live performance so that it matches the rhytm again. Doesnt necessarily have to be a sine ot ramp modifier, maybe there is a better solution.

Sorry if i worded what i want a bit clumsy before :).

//edit: Just had an idea: maybe we could give magic the bpm of a rhytmic video (which one can figure out beforehand) and it then adusts its speed to match it to the bpm of the live performance which would either detected or manually entered (or for digital music: get the bpm from ableton via xy cable (no idea how. Via network cable?) ). Then all we'd need would be the option to offset the video playback as it will be at the same speed though probably always miss the beat. (An option to skim through playback during playback (eg via infinite midi knob) would be nice regardless of this thread :) )
Magic
Site Admin
Posts: 3441
Joined: Wed Apr 09, 2014 9:28 pm

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by Magic »

//edit: Just had an idea: maybe we could give magic the bpm of a rhytmic video (which one can figure out beforehand) and it then adusts its speed to match it to the bpm of the live performance which would either detected or manually entered (or for digital music: get the bpm from ableton via xy cable (no idea how. Via network cable?) ). Then all we'd need would be the option to offset the video playback as it will be at the same speed though probably always miss the beat. (An option to skim through playback during playback (eg via infinite midi knob) would be nice regardless of this thread :) )
If I'm understanding you correctly, you can already do what you suggested above. You have to do a little bit of math and you have to know the bpm of the audio and video as you mentioned. But if you do, then the formula to get the speed is simply: speed = bpm of audio / bpm of video. So, if the bpm of the audio is 126 and the video is 120, then the speed is 126/120 = 1.05. Setting the video's Speed parameter to 1.05 would therefore cause them to be synced.

To change the offset of the playback you can use the Goto Start param, which will force it to rewind early. You could either do this by clicking the Goto Start button manually or by linking it to MIDI. If you do this right on a beat, it should stay synced fairly well. Let me know.
blackdot
Posts: 528
Joined: Sun Jul 06, 2014 10:18 pm

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by blackdot »

Hmm, indeed your're right. In a live performance, aint got no time for math though :P.

I used 'go to start' a lot, however it has its limits. As you described it could be used to sync whatever i'm playing to the beginning. however if a song is already playing and i missed the start of my video for it (as part of other elements), i cant just restart the song. in this scenario i imagine an option to offset playback during playback without going back to start really helpful.

In this case I adjust my feature requestments (I'm just stating them, you do implement what you think is right :) ) to these:

- ability to get the bpm from external sources (if available ) from either another program running locally, or another program running on another machine (eg. the ableton on my friends laptop which is connected via lan or midi or however this could work).

- ability to calculate the bpm approximately by either magically (pun intended) listening to the music and producing a bpm somehow, or by letting the user tap it via keyboard or midi device.

- using this bpm source to auto adjust the speed of a video with a user defined bpm, to the bpm of the live music.

- ability to freely offset video playback during playback by a userdefined step in seconds.
Magic
Site Admin
Posts: 3441
Joined: Wed Apr 09, 2014 9:28 pm

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by Magic »

Hmm, indeed your're right. In a live performance, aint got no time for math though :P.
Fair enough :).
I used 'go to start' a lot, however it has its limits. As you described it could be used to sync whatever i'm playing to the beginning. however if a song is already playing and i missed the start of my video for it (as part of other elements), i cant just restart the song. in this scenario i imagine an option to offset playback during playback without going back to start really helpful.
Good point. But, you can always temporarily change the Start Time to a later time and then use Go To Start to jump there. I know that isn't an ideal solution for live settings though.

We're looking into beat detection so hopefully we'll be able to make some improvements.
- ability to freely offset video playback during playback by a userdefined step in seconds.
Wouldn't this be the same as temporarily increasing the Speed parameter?
blackdot
Posts: 528
Joined: Sun Jul 06, 2014 10:18 pm

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by blackdot »

Eric wrote:We're looking into beat detection so hopefully we'll be able to make some improvements.
awesome :)
Eric wrote:
blackdot wrote:- ability to freely offset video playback during playback by a userdefined step in seconds.
Wouldn't this be the same as temporarily increasing the Speed parameter?
No, as it plays all the frames just faster, while offsetting (i dont know if that's the right word for it, maybe you misunderstood me because of that) skips frames while keeping the speed. I actually used the speed parameter as a fast-forward before. not the same as instantly skipping one minute of film though. Also, no negative values are possible with the speed parameter.

I'm off now to finally check the new features in 1.5 :).
Magic
Site Admin
Posts: 3441
Joined: Wed Apr 09, 2014 9:28 pm

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by Magic »

No, as it plays all the frames just faster, while offsetting (i dont know if that's the right word for it, maybe you misunderstood me because of that) skips frames while keeping the speed. I actually used the speed parameter as a fast-forward before. not the same as instantly skipping one minute of film though. Also, no negative values are possible with the speed parameter.
Ok so it sounds like it would be useful to have another parameter which lets you fast-forward or rewind a specified amount of time? I guess that's what you were saying here:
- ability to freely offset video playback during playback by a userdefined step in seconds.
Or, it might have to be two parameters -- one text parameter to specify the amount of time (positive or negative), and another trigger parameter to let you click (or use audio/MIDI) to execute the jump in that increment. How does that sound?

One thing to be aware of though -- jumping can be choppy due to the keyframe issue...
blackdot
Posts: 528
Joined: Sun Jul 06, 2014 10:18 pm

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by blackdot »

Eric wrote: How does that sound?
That sounds awesome (the 2 param solution)! :)
BaconMKII
Posts: 36
Joined: Mon Jun 02, 2014 8:31 pm

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by BaconMKII »

http://wavesum.net/products.html#waveclock
I haven't tried it out myself yet but its the first thing I thought of when I saw this thread
Magic
Site Admin
Posts: 3441
Joined: Wed Apr 09, 2014 9:28 pm

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by Magic »

Oh yeah, I think I saw that a while ago, thanks. Maybe I'll try getting in touch with them.
blackdot
Posts: 528
Joined: Sun Jul 06, 2014 10:18 pm

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by blackdot »

I actually tried out waveclock (the demo) before i stumbeled upon magic. Unfortunately it always crashed on my machine. I sent a mail twice to them, but got no response. So i kept looking and found magic :).
Magic
Site Admin
Posts: 3441
Joined: Wed Apr 09, 2014 9:28 pm

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by Magic »

Ok thanks. I've started to look around to see if any other beat detection utilities or algorithms are available that I can hook up fairly easily to Magic. If anyone has any recommendations please feel free to reply.
BaconMKII
Posts: 36
Joined: Mon Jun 02, 2014 8:31 pm

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by BaconMKII »

Big fug has http://www.bigfug.com/software/audiobox/ although I haven't used this either.
vjavant
Posts: 2
Joined: Tue Oct 28, 2014 5:03 am

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by vjavant »

here's one http://www.midiclock.de/midiclock.php
hardware cost $275.00

Wavesum is great plus it takes audio and convert it to midi beat clock for sync visuals this works.
Terry Payman
Posts: 711
Joined: Sun Sep 14, 2014 8:15 am
Location: UK
Contact:

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by Terry Payman »

Perhaps all the following is implied/stated/requested above, but FWIW...
Eric wrote:... we are planning to have some kind of beat detection feature...Beat detection is tricky though...
Any votes for starting soon with something much easier to implement, simply a manually-set ( & -reset?) BPM system clock as implied in the OP's subject?
Eric wrote:...the Ramp modifier cycles exactly once per second when the value is 1 (= 60bpm)...You can set an exact tempo with the Scale modifier
If we have a global BPM clock, we can simultaneously adjust tempo for all modules in all scenes , rather than for just one module in one scene as I believe the above would do. Personally, with any cyclic or periodic scene, I love to have an integral number of cycles per bar of the music.

I envisage the following to be (optionally) scalable with a globally-set tempo BPM clock, probably with local reset on scene change.
1) Oscillators
2) GLSL speed inputs
3) Video frame rate for movies
4) Playlist scene duration
...
For example, a oscillating shader with its own arbitrary period could be trimmed with the GLSLShader module's Speed control to give one cycle per bar of the music, rather than just for a specific tempo. Likewise a rotating object could complete a fixed number of rotations per bar of music, rather than per second. IMHO this would greatly enhance the integration of a scene with the music if music tempo changes between tracks. My instinct is that there would need to be a local reset of time at scene-start, perhaps to a specified beat rather than just the start of the bar.

Have I mis-thought all this or does a simple BPM clock enable much more tempo-locked control of the system?

I know there are inherently frame-rate dependent effects, for example video feedback. I'm hoping that some scale factor on the speed or zoom of these can be incorporated, but can't think it through at the moment.

Tap-to-set would be the next step.
Magic
Site Admin
Posts: 3441
Joined: Wed Apr 09, 2014 9:28 pm

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by Magic »

Thanks Terry. Your post helped me realize it would be simple to add MIDI clock messages as a new source for module parameters. It would be similar to the Ramp modifier, but instead of being based on a time interval in seconds, it would use the BPM of the MIDI clock. It would pulse at every quarter note (as per the MIDI clock specification).

I think it would be a good quick-and-dirty starting point for BPM functionality. I'll try to get it into an upcoming release and we can see how everyone likes it. At first, an external MIDI clock source will be required (software or hardware). But we can move forward from there.
Terry Payman
Posts: 711
Joined: Sun Sep 14, 2014 8:15 am
Location: UK
Contact:

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by Terry Payman »

Eric wrote:... it would be simple to add MIDI clock messages as a new source for module parameters. It would be similar to the Ramp modifier, but instead of being based on a time interval in seconds, it would use the BPM of the MIDI clock...
Thanks Eric, that sounds like a useful facility, and I appreciate the elegance and simplicity of using MIDI clock.
However, I can't yet see how I would use that to change items 2, 3 & 4 in my list (GLSL speed inputs, video frame rate and playlist scene duration).
Eric wrote:... It would pulse at every quarter note (as per the MIDI clock specification)...
Would you need to phase-lock a higher rate clock to feed to GLSL & video frame rate control?
Magic
Site Admin
Posts: 3441
Joined: Wed Apr 09, 2014 9:28 pm

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by Magic »

Yep, that particular change wouldn't affect the playlist duration (for now).

As for shaders or videos, the speed could be linked to the clock such that (for example) it would be faster during a beat, and slower during a non-beat. Which is similar to how this video was created:
Or, alternatively, you could use it to loop a video on every beat (by linking the Goto Start parameter to the clock).

Those things probably aren't exactly what you're looking for, but with shaders especially, there's no way for Magic to automatically know what the "period" of the loop is (since shaders never "end"). So it has to be input manually somehow. Which is certainly doable, but just not as quickly as what I mentioned above.
Would you need to phase-lock a higher rate clock to feed to GLSL & video frame rate control?
MIDI clocks have 24 ticks per quarter note, so the temporal resolution is probably sufficient for most purposes. But you might get some jitter, especially at lower BPMs.
Terry Payman
Posts: 711
Joined: Sun Sep 14, 2014 8:15 am
Location: UK
Contact:

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by Terry Payman »

Thanks Eric. That sent me thinking further.
Eric wrote:.. speed could be linked to the clock ... it would be faster during a beat...Those things probably aren't exactly what you're looking for...
No, they're not :cry: . I have found local speed modulation with music a very useful technique, but it's quite different from what I'm proposing.
Eric wrote:.. but with shaders especially, there's no way for Magic to automatically know what the "period" of the loop is... So it has to be input manually somehow. Which is certainly doable, but just not as quickly as what I mentioned above.
Not what I'm asking for. Naturally, every periodic shader needs to have an individual Speed adjustment to match a particular tempo and desired effect. This is currently part of the scene design, and would remain so.

I'm proposing global speed scaling.
It's a temporal equivalent of the modules' Scale modifier, with global effect in the same manner as the "Adjust Gain" on the audio inputs.

For Video playback & shaders, I believe it's exactly equivalent to a variable DC input on an audio channel that's being used to control speed. It would work now if the audio inputs were DC coupled and one fed in DC proportional to desired BPM.

Suppose one could choose a numerical input (or one of several) as an alternative input in the "audio/MIDI" window.
- The value of the control input would appear as Volume to GLSLShader and Video modules without any changes at module level.
- One change to the numerical value could re-time all the shaders and videos in the project to match a new tempo.
- In the GLSLShader module
-- The desired "BPM-proportional" input would be selected as source.
-- The Volume (ie BPM-proportional DC) feature would be selected to control speed.
-- The scale factor modifier would be adjusted for an integral number of cycles-per-bar for the particular shader.

For oscillator-driven translations I think it would need a modifier that would scale the oscillator frequency with Volume.
Magic
Site Admin
Posts: 3441
Joined: Wed Apr 09, 2014 9:28 pm

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by Magic »

I'm proposing global speed scaling.
Ok, I think I get what you're saying now. But you're actually proposing something which is more general than speed. Basically what you want is a "global variable". It's a value you can edit in one place, but which can be used as a source for any number of parameters in any number of modules in any number of scenes. Yes?
Terry Payman
Posts: 711
Joined: Sun Sep 14, 2014 8:15 am
Location: UK
Contact:

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by Terry Payman »

Eric wrote:... But you're actually proposing something which is more general than speed. Basically what you want is a "global variable". It's a value you can edit in one place, but which can be used as a source for any number of parameters in any number of modules in any number of scenes. Yes?
In a sense it's a global variable, but I'd like it to control speed in all the following
1) Oscillators
2) GLSL speed inputs
3) Video frame rate for movies
4) Playlist scene duration

I think there are additional requirements if the global control is not to be implemented as a variable system clock as I originally envisaged.

a) For modules that already have a speed control a simple global variable could be sufficient. In effect it's a "DC input to an audio channel" as I have previously outlined and could be selected with the existing Source and Feature listboxes as an alternative* to Volume.
*If one wished to modulate speed with Volume additionally to using the BPM scaling factor, I think the speed would need to be Clamped to the BPM value or the speed would always be "wrong" when the music was playing.

b) For modules that presently have no speed control it needs a means of getting any desired ramp/triangle/sine oscillators to track BPM in proportion to the variable.

c) IMHO The playlist would be greatly enhanced if one could have scenes of eg 4 bars, or a scene used (like a drum fill or syncopation) as a visually percussive transition between others.

Sorry if the above isn't clear. It's 4:15am UK time, and I'm rather tired :D
Magic
Site Admin
Posts: 3441
Joined: Wed Apr 09, 2014 9:28 pm

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by Magic »

a) For modules that already have a speed control a simple global variable could be sufficient. In effect it's a "DC input to an audio channel" as I have previously outlined and could be selected with the existing Source and Feature listboxes as an alternative* to Volume.
Yup, exactly. I envision being able to select "Global Variables" as the source for an Input in the Audio/MIDI window. Then, in any modules, when you select that kind of input as the source, the Feature box will display all the available variables.
*If one wished to modulate speed with Volume additionally to using the BPM scaling factor, I think the speed would need to be Clamped to the BPM value or the speed would always be "wrong" when the music was playing.
I think that's possible, though I'd have to ruminate on it a bit :).
b) For modules that presently have no speed control it needs a means of getting any desired ramp/triangle/sine oscillators to track BPM in proportion to the variable.
Presently the Ramp/Sine/Tri modifiers take an input value which affects their speed. So it would be doable when selecting a global variable source.
c) IMHO The playlist would be greatly enhanced if one could have scenes of eg 4 bars, or a scene used (like a drum fill or syncopation) as a visually percussive transition between others.
Ok. I think someone else suggested being able to time the playlist in BPM rather than seconds, which is a good idea.
blackdot
Posts: 528
Joined: Sun Jul 06, 2014 10:18 pm

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by blackdot »

glad that there is progress on this. eager to see what you are coming up with Eric :).
Terry Payman
Posts: 711
Joined: Sun Sep 14, 2014 8:15 am
Location: UK
Contact:

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by Terry Payman »

Very exciting!
Global variables! Woop! :D
Terry Payman
Posts: 711
Joined: Sun Sep 14, 2014 8:15 am
Location: UK
Contact:

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by Terry Payman »

Eric wrote:Presently the Ramp/Sine/Tri modifiers take an input value which affects their speed. So it would be doable when selecting a global variable source.
I hadn't realised I could do this already, so I thought I'd play around a bit.
I simulated a global variable by feeding a continuous sine wave into the audio and varying the amplitude. BPM must always be positive, so I think sine wave amplitude (measured by the Volume feature) is a perfect analogue.

Modules were configured to vary Speed, Angle etc as follows
...Source: Input 0 (The continuous sine wave)
...Feature: Volume
........ Scale: (varied for desired effect)
........ Ramp: 0.0

I noticed with the RotateAxis module's angle control, and the Video module's Speed control:
- Negative values for entered for scale were ineffective and the motion stopped altogether instead of reversing direction.
- With the GLSLShader module's Speed, a negative value for scale worked as desired.
I have no problem with these behaviours, although I don't understand the restriction with RotateAxis.

Initial findings: Very promising results, with multiple shaders etc tracking the global speed control
- Could only be sustained for a short time before compromised by drift.
- Very difficult or impossible to exactly match speeds of various shaders, either with each other or with transform modules.
- Problematic not being able to control relative phase of motions within shaders, eg when bounces or direction-reversals occurred.

Conclusion: Means of controlling shaders with the same precision as videos is necessary for syncing.
- Feed a shader with an absolute time value that could be reset to a desired start time on scene change.
- Set an end time/loop point, to match one cycle of movement.
- Ideally a normalising scaling factor would then be computed automatically, needed to map one cycle of shader movement to an desired number of beats/bars.
- Perhaps have an option to cross-fade back to time-zero for looping a shader that does not have a natural or short repeat period.
- Saves having to render a shader's output to a video clip to gain phase control & looping.
- Useful to be able to sync modules directly, feeding a global variable from a particular module's music-responsive parameter.
Magic
Site Admin
Posts: 3441
Joined: Wed Apr 09, 2014 9:28 pm

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by Magic »

I noticed with the RotateAxis module's angle control, and the Video module's Speed control:
- Negative values for entered for scale were ineffective and the motion stopped altogether instead of reversing direction.
- With the GLSLShader module's Speed, a negative value for scale worked as desired.
I have no problem with these behaviours, although I don't understand the restriction with RotateAxis.
Videos can't play backwards -- it's just a limitation of how they are decoded. So that's why the Speed param can't be negative in the Video module.

For the Ramp/Sine/Tri modifiers, the incoming value can't be negative either. I think it was just an abitrary decision by me at some point, because you can always add a Scale modifier after a Ramp/Sine/Tri to reverse its direction.
Conclusion: Means of controlling shaders with the same precision as videos is necessary for syncing.
- Feed a shader with an absolute time value that could be reset to a desired start time on scene change.
- Set an end time/loop point, to match one cycle of movement.
- Ideally a normalising scaling factor would then be computed automatically, needed to map one cycle of shader movement to an desired number of beats/bars.
- Perhaps have an option to cross-fade back to time-zero for looping a shader that does not have a natural or short repeat period.
- Saves having to render a shader's output to a video clip to gain phase control & looping.
- Useful to be able to sync modules directly, feeding a global variable from a particular module's music-responsive parameter.
That's some fancy functionality! I never envisioned shaders to be looped and time-scaled in that way (and I'm not aware of anyone else who did either). But it's certainly a unique idea and pretty good one actually :).
blackdot
Posts: 528
Joined: Sun Jul 06, 2014 10:18 pm

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by blackdot »

blackdot wrote:I actually tried out waveclock (the demo) before i stumbeled upon magic. Unfortunately it always crashed on my machine. I sent a mail twice to them, but got no response. So i kept looking and found magic :).
for the sake of thoroughness: i tried waveclock again and it's no longer crashing on me. the beat detection works very well as long the music is distinct enough. this will be very useful as my music-counterparts intend to also use vinyl for out next gig which eliminates the traktor-beatclock-to-magic solution. the three additional outputs of wavetick are 'kinda' weird, will stick to magic's magic there, but the beatclock seems solid.

this has nothing to do with syncing the speed of a video to the one of the music (the original topic).
Kvasnik
Posts: 67
Joined: Thu Feb 05, 2015 1:09 am

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by Kvasnik »

Hi I was just catching up on these threads as BPM syncing was my thoughts for future development. I envisage to have the bpm controls in the audio/midi window. This seems to make the most sense as the bpm is effectively an input. At first, just to have a box where I could write in '140' to set the bpm. Then if parameters could be set to react to divisions of beats.

Personally, I've found tapping tempos to be innacurate except for approximating, which you become more intuitive with after time anyway. But the tap can be useful to get close to the bpm, which you can then type in. Perhaps another way to solve this would be instead of tapping to have a rotatable knob (which would be set to only produce integers), and this could then be linked to a midi knob.
Magic
Site Admin
Posts: 3441
Joined: Wed Apr 09, 2014 9:28 pm

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by Magic »

Our current plan is that Magic v1.7 will have some new global functionality, including the ability to set the global BPM by typing in the number directly, as you described. It will also be MIDI-controllable.

And before that, I'm planning on expanding the Beat Clock option into a submenu which has beat divisions, as well as an approximation of the clock's current BPM value.
Wajsar
Posts: 5
Joined: Mon Apr 13, 2015 4:09 pm

Re: BPM clock - automatic or manual (or resync clips to bpm)

Post by Wajsar »

Dear gentlemans,

GREAT! I just have found the way. Just go with the "speed" parameter to 0, then add a controller number automation to "start time" /f.e. cc 01/. Add a note to "Goto start" /f.e. C-2/. Than make a midi clip in your DAW, draw sixteenth notes C-2 in it and draw the curve of cc 01 from 0 to 127. You can also go with Sine wave on Goto start. It WORKS! :-) It is very funny and it seems Magic has almost no limits, which sometimes remains hidden even for the inventor himself ;-). Anyway, the MIDI SYNC function would be REALLY appreciated, and I really think it is one of the most important functions ever for every musicians who want to come with the videos! This is just a trick which of course don´t work entirely fine, especially on long clips.

Good luck

Petr
Post Reply