Jump to content

How precise is Timecode sync?


Recommended Posts

If I sync two recorders with SMPTE timecode (i.e. not genlock), how precise is the synchronization?  I take it for granted that it's precise within a frame or it wouldn't be reliable for picture sync.  What I'm wondering about it audio sync:  If I'm trying to maintain phase coherency between tracks for a musical recording, is syncing with timecode sample-accurate?  I kind of assume it wouldn't be (since there's no precision below frame level).

And, if that assumption is correct, what's the best way to sync two recorders with sample-level precision?  Genlock (but isn't that for synchronizing camera clocks)?  A shared input recorded on both recorders?  Is sample-level precision even possible between recorders?  What's the workflow I need to maintain phase sync across recorders?

Link to comment
Share on other sites

Thanks.  Can you elaborate?  Can I count on being able to synchronize word clocks on any recorder that accepts timecode input, or is this a special feature I need to look for?  Is it normal for recorders to synchronize their word clocks based on jamming a timecode signal?

I'm trying to synchronize a Zaxcom Nomad and a Zoom F8.  The F8 has an option called "Ext Audio Clock Sync", which sounds vaguely like a word clock to me, but it is jammed with regular timecode.  The Nomad doesn't refer to any sort of clock, but it does allow for external jamming.  So, I'm kind of back to the question I began with:  Will jamming SMPTE timecode synchronize word clocks?  Or is it only frame accurate?  Or does it depend on the recorder?

 

Link to comment
Share on other sites

Beyond that, I suppose there is also a post workflow question:  Even if the word clocks are synchronized, how do I sync the tracks from each recorder with word-clock precision in a DAW if the only timecode attached to the files is SMPTE, and therefore only frame-level precision?

Link to comment
Share on other sites

Timecode only puts a time stamp at the beginning of the file, which will help line them up in post, but will not prevent that  the files start drifting apart over time.

 

Maybe look into using something that can record all tracks into one unit. Like renting a Scorpio, or using a computer with Boom Recorder, or even a DAW, like Pro Tools, Nuendo etc.


I’m thinking using two different brands of machines (especially since one is a Zoom) would likely result in them drifting apart - especially on long takes.

Link to comment
Share on other sites

The only thing that will make digital audio recorders stay in sync is shared word clock.  As was said, TC only labels the first frame of a recording, the speed at which the samples are created is controlled by word clock.  If you have two machines with very similar internal clocks then you can jamsync their TC and they recordings will stay close but not sample accurately in sync.   To record something like a drum kit or a multi-actor scene across multiple recorders you need word clock sync in order to have a mix of tracks from the two machines not drift on each other, which causes audible artifacts.  If the recorders are hearing very different audio you can probably get away with just a TC jam between two professional digital recorders that are in spec.

Link to comment
Share on other sites

Ok, thanks for confirming.  I'll consider my options with a DAW setup, I think you're right, jamming together two recorders of different brands and quality is asking for trouble.

Since I clearly don't own any recorders that support word-clock sync, it probably makes sense to rent a recorder with enough tracks (I think I'm at 23 at the latest count).  But, failing that, what recorders are out there that *do* support word-clock sync?  Sound Devices?  I'm guessing the 788.  Any others?

Link to comment
Share on other sites

7 hours ago, Ian Berman said:

On the post side, you could look into a plugin like Auto Align Post 2. I don't think the F8 supports word clock but I could be wrong. 

 

 

When recording dialogue etc. all these boom and lav tracks have to be aligned anyway. I once did a shoot with a 788 and an additional MixPre-6 for one scene with lots of lavs and plant mics. Both were only TC synced and the tracks were phase-aligned later. No big deal.

4 hours ago, The Documentary Sound Guy said:

Ok, thanks for confirming.  I'll consider my options with a DAW setup, I think you're right, jamming together two recorders of different brands and quality is asking for trouble.

I've done some recordings (concert scenes with playback and recording at the same time) where the whole setup was basically a console with Dante and a Dante Virtual Soundcard in my laptop. Dead simple and never had any issues. Depends however wether it's easy to set up a console or if you have to move around a lot.

Link to comment
Share on other sites

I'm thinking a console could work.  My only previous experience with this workflow was plugging an X32 into my laptop (X32 has its own interface card, so I was able to just use USB).  That experience didn't give me confidence though ... it dropped samples without warning every few seconds.  Could have been the hard drive was too slow, but the workflow didn't give me confidence.

Good to hear TC kept things phase-aligned for short takes.  That's all I need ... maybe a workflow test is in order.

Link to comment
Share on other sites

The only issue with this thinking is that you are probably not an island universe--you have to maintain sync with cameras.  That means TC boxes for the cameras, and having everyone on the same clock (via the TC boxes) is the best way to go.  A console that can't take external WC is no more accurate a digital audio interface than a regular desktop interface, and if they are deriving their clock from a laptop then they aren't really very stable at all.   I lock my JoeCo up to a 744T (WC and TC), and that lock is accurate enough that the 4 tracks of the 744 can be mixed with those of the JoeCo with sample-level accuracy and freedom from artifacts.

Link to comment
Share on other sites

2 hours ago, The Documentary Sound Guy said:

Good to hear TC kept things phase-aligned for short takes.  That's all I need ... maybe a workflow test is in order.

 

Timecode doesn't keep anything phase-aligned, no matter what other factors are in play. (It makes 'synching up' two or more items that are ALREADY IN SYNC considerably easier as well as providing other potential editorial / workflow benefits). If you were referring to Sebi's post, that's not what he was saying.

 

If you're sure to stick to 23 tracks or less, a recorder that can handle 24 tracks would be the kindest option for post. This could be one of the newer 'big boys' (assuming they go that far yet?), or a JoeCo (if you can source one of those in BC???) or a reliable computer system. Three rental 788t with all the proper control/sync cabling might still be a do-able option (for rental where you are...) and should work perfectly well.

 

Note that Sebi's "no big deal" was for manually phase aligning "an additional MixPre-6" worth of tracks (non-synched to the 788t tracks but as a batch perfectly in synch to each other) to aforementioned 788t 'master tracks' ... FOR ONE SCENE. No big deal as he said. I would check with whomever is going to collate, 'synch up' and potentially phase align your 23 tracks of multiple short takes how much of a deal it will be if they are provided as a large TC jammed polyfile / linked WC synched (and TC stamped) polyfiles or a host of TC stamped files with what might best be described as 'variable and non-predictable sync' ... All I really mean to say here is that 'sync' may not be your biggest problem after the job, but the editorial's workflow and time spent sorting out (essentially unnecessary) chaos. Just to reiterate, timecode does not provide a means of synchronisation: it provides a workflow that can exploit synchronisation for edit (provided it has been properly synchronised itself first).

 

Of course, your post people might only be used to non-synched systems and files, and be both used to and happy to sort and stick it all together with something like 'Auto Align' ... but make sure it comes from them, don't presume anything!

 

Best, Jez

Link to comment
Share on other sites

I don't imagine post on this particular project will notice ... but it's certainly a conversation I'll be having.

 

Thanks for clarifying Sebi's post ... I missed the fact that they were manually phase-aligned in post.


So, if I'm understanding correctly, the word clocks need to be synchronized while they roll in order to get phase alignment across recorders.  That makes sense to me.  But bringing the two word clocks in sync doesn't offer any time reference, which is the job of timecode.  Where I'm still lost is what the workflow is for aligning the files from the two recorders in post:  Can time-code align files from two separate recorders with sample-level precision?  How can it do this if timecode only provides a frame-level degree of precision and there are ~2,000 samples per frame?  What is the magic that lets post know which sample in each file represents the same moment in time?  The only plausible explanation I can think of is that the rising edge of the timecode clock tick in each recorder would need to be synchronized with sufficient precision that both clocks rise and fall at exactly the same time ... and what I know of timecode clocks and their varying precision makes me skeptical that this is possible.

 

In other words, even with both word clocks and timecode synced across recorders, I don't fully understand the post workflow that lets the files from multiple recorders be aligned without a lot of tedious manual labour and a common signal across both recorders that would allow the same point in time to be identified.  The only workaround I can think of is if both recorders start recording on exactly the same sample, which (I think?) is the point of C.link on the 788T.  But obviously that only works with multiple 788Ts.

From what I know of my rental options 3x788Ts might be my easiest option for a rental, but I think the Dante console might win out.  I can always feed a timecode signal into a spare channel to make up for the lack of timecode support.

I'm also starting to think maybe I don't need phase-accuracy across recorders if I keep all the music tracks on one recorder and use the second for lavs & dialogue tracks.  From a practical point of view, I don't imagine phase alignment would be very important for sources that far apart.  But I still have the issue of my music tracks overflowing my available tracks on that recorder.

Thanks for all the support.  I didn't realize I was opening such a can of worms.

Link to comment
Share on other sites

9 hours ago, The Documentary Sound Guy said:

In other words, even with both word clocks and timecode synced across recorders, I don't fully understand the post workflow that lets the files from multiple recorders be aligned without a lot of tedious manual labour and a common signal across both recorders that would allow the same point in time to be identified.  The only workaround I can think of is if both recorders start recording on exactly the same sample, which (I think?) is the point of C.link on the 788T.  But obviously that only works with multiple 788Ts.

The Wikipedia entry actually sums it up quite nice:

"Word clock should not be confused with timecode; word clock is used entirely to keep a perfectly timed and constant bitrate to avoid timing errors that can cause data transmission errors. Timecode is metadata about the media data being transmitted. Time code can be used as an initial phase reference for jam sync using the word clock as the frequency reference."

So to put it simple: word clock makes sure that 1 second is 1 second on all devices, every sample, TC makes sure you can eventually line up al devices in post. So once you import it in a DAW, it all lines up.

To put it even more simple: you have 2 pieces of wood marked at exactly 1 meter because a magic ruler made sure they are at 1 meter, not 1.000001 or 0.999999. So  you just butt them up against a straight edge and you are good; both lines will match. The magic ruler is word clock, The straight edge is TC. 


 

Link to comment
Share on other sites

11 hours ago, The Documentary Sound Guy said:

So, if I'm understanding correctly, the word clocks need to be synchronized while they roll in order to get phase alignment across recorders.  That makes sense to me.  But bringing the two word clocks in sync doesn't offer any time reference, which is the job of timecode.  Where I'm still lost is what the workflow is for aligning the files from the two recorders in post:  Can time-code align files from two separate recorders with sample-level precision?  How can it do this if timecode only provides a frame-level degree of precision and there are ~2,000 samples per frame?  What is the magic that lets post know which sample in each file represents the same moment in time?  The only plausible explanation I can think of is that the rising edge of the timecode clock tick in each recorder would need to be synchronized with sufficient precision that both clocks rise and fall at exactly the same time ... and what I know of timecode clocks and their varying precision makes me skeptical that this is possible.

 

Well, aligning using timecode achieves a precision of 1/24th or 1/25th of a second (a frame). While it is sufficient in order to align audio files from a macroscopic point if view (ie, aligning audio to video or, for instance, different instruments so that you won't perceive a discrepancy while listening to it), at the microscopic level consider the number of samples in a frame.  Which would translate into phasing issues if two different microphones connected to different converters pick up a correlated signal (ie, the same instrument).

 

Unless you keep a constant clock (which can be achieved using GPS, a word clock signal or Dante's synchronization over the network) clocks will surely drift. Even outstanding temperature controlled clocks can have a drift of 0.5 ppm (parts per million). 

 

 

11 hours ago, The Documentary Sound Guy said:


I'm also starting to think maybe I don't need phase-accuracy across recorders if I keep all the music tracks on one recorder and use the second for lavs & dialogue tracks.  From a practical point of view, I don't imagine phase alignment would be very important for sources that far apart.  But I still have the issue of my music tracks overflowing my available tracks on that recorder.

 

As long as there is no correlation at all between them there is no need for phase accuracy, right.  So, if two microphones pick up an entirely different signal, not sharing anything at all, you don´t need phase coherency.

 

 

11 hours ago, The Documentary Sound Guy said:

Thanks for all the support.  I didn't realize I was opening such a can of worms.

 

It's trickier than it seems.  And it doesn´t help that the audio market is flooded by snake oil sellers :)

 

 

 

 

Link to comment
Share on other sites

I'm confused as ever, since the answers given by Vincent and borjam seem to contradict: 

"Time code can be used as an initial phase reference for jam sync using the word clock as the frequency reference."

"Well, aligning using timecode achieves a precision of 1/24th or 1/25th of a second (a frame). While it is sufficient in order to align audio files from a macroscopic point if view (ie, aligning audio to video or, for instance, different instruments so that you won't perceive a discrepancy while listening to it), at the microscopic level consider the number of samples in a frame."


So, is timecode precise enough to offer a time reference that keeps multiple recorders in phase or isn't it?
 

At this point, I feel like I understand the differences between WC and TC pretty well, and I like Vincent's tool analogy.  But, my question isn't what the tools are used for, it's how straight is the straight edge?  What is the error tolerance of the straight edge?  Or, is there any reason to believe timecode provides better than frame-level precision?

Because, if timecode *doesn't* provide sample-level precision (and I'm more inclined to believe borjam over Wikipedia here), even if the two recorders are both timecode-jammed, and have their word-clocks phase-locked, that still doesn't appear to provide enough information to recreate phase-accuracy across two different recorders in post.  Sebi mentioned manually syncing the two recordings in post, but I still don't understand the process for finding which samples match if the time-reference provided by timecode isn't sample-precise.

Anecdotally, my experience syncing with timecode is that recordings from multiple cameras are often out of sync at a sub-frame level (and also with the audio recorder), which makes me think borjam is right:  Timecode only achieves precision of 1/24th of a second, which is  2,000 less precise than we need to sync audio sampled at 48kHz.

So, now I've got two questions:

What's the workflow for phase-aligning multiple recorders in post?

and
Does that workflow even exist?

Is what I'm chasing here even possible:  Recording music across multiple recorders in such a way that preserves phase coherence across all tracks?  I'm kind of shocked to find that the answer might be no.  I had kind of assumed there was a good way to do this, and the more I learn, the less confident I am that it can be done.  The only thing I can think of is locking the word clocks, recording a common signal to both recorders (with enough variability that a common frame can be identified), and then manually aligning the waveforms at a sample level in post.

This isn't a workflow I want to recommend to a post-supervisor, so at this point, I'm pretty committed to a single-recorder solution (probably Dante+DAW).  But I'm kind of stuck on the theory of it, since I'm shocked that there's no easy way to keep two recorders in sync with phase-precision.

I'm also happy to have my intuition confirmed that maybe phase-coherence across the two recorders doesn't matter as long as I'm careful to keep my stereo pairs (and, more broadly, sources with multiple mics) on a single recorder.

Link to comment
Share on other sites

You’re over thinking this so much that you’re missing the point.

 

Try this:

imagine two cars are starting to drive on a starting line. The starting line is the time code stamp, where they start at the exact same time. Then they both try to drive at exactly 35 mph. If they drive for exactly one hour, without seeing each other, one car would likely drift slightly from the other.
Word clock would be like a mechanism continuously synchronized the engines of both cars that kept them running at the exact same speed. Or if you will a metal bar welded to the roof of both cars, making sure the can’t drift away from each other over time.

Link to comment
Share on other sites

7 hours ago, The Documentary Sound Guy said:

I'm confused as ever, since the answers given by Vincent and borjam seem to contradict

Not as much.

7 hours ago, The Documentary Sound Guy said:

The only thing I can think of is locking the word clocks, recording a common signal to both recorders (with enough variability that a common frame can be identified), and then manually aligning the waveforms at a sample level in post.

Proof is in the pudding. Go check/test it out. This all started in the 90's I guess with lining up ADAT recorders and DA88s, multiple digital 8 tracks to line up sample accurate. 

 

7 hours ago, The Documentary Sound Guy said:

what I'm chasing here even possible:  Recording music across multiple recorders in such a way that preserves phase coherence across all tracks?

 

7 hours ago, The Documentary Sound Guy said:

it's how straight is the straight edge?  What is the error tolerance of the straight edge?

It doesn't matter, because it is the SAME straight edge you use for both or all measurements. 

Link to comment
Share on other sites

A lot of the confusion with TC and sync is (I think) left over from the analog days, when running TC WAS the sync signal between multiple machines which had the ability to pull playback speed and location data off the timecode and align their own playback with that.  In digital audio the only thing that matters for playback speed is the word clock, as was said, the TC here is just a time stamp at the start of the recording.  This is why you can change timecode numbers and rates at will on audio files and they will play the same in an audio app.  How video cameras treat incoming TC is different: higher end cameras can derive frame rate info from external TC: this is one reason we don't tend to use TC boxes for cameras that output genlock in addition to TC so much any more.  Where TC used as a playback speed reference can bite you is in post, if an editing app helpfully decides to pull down or up your audio so its frame rate matches that of an edit.  Editors have to be careful about this, and the TC frame rate DOES matter a lot in a picture editing app.

Link to comment
Share on other sites

Timecode itself is very precise. In the audio file header it is stored as Samples since midnight and the tc value is calculated from that. The problems arise when different devices start to interpret tc slightly differently. For example cameras can only snap to the nearest frame and that can create a difference to another camera by up to nearly two frames (-1/+1fps).

 
But since you’re apparently not using a camera that will not be an issue. So if your Zoom recorder really does accept Wordclock or can derive a wordclock signal from a timecode input (which is possible) you should be fine. If the Zoom can only do one or the other but not both at the same time, then Wordclock is probably more important to keep the recorders from drifting apart. 

Aligning the actual audio files shouldn’t be a big issue and once it’s done they stay like that if you used wordclock. You will still need to phase-adjust  your individual microphones unless they are literally sitting on top of each other, so don’t worry about that part that Borjam mentioned. But with wordclock the individual tracks will stay locked for for the duration which saves a lot of time in post, more I think than aligning the audio in the first place. 
 

When I used to regularly record with two recorders I would try (no of spare tracks permitting) to record one source to both machines. This provides another reference to time-align both recorders‘ files in post. 

Link to comment
Share on other sites

THANK YOU for providing an answer that addresses the substance of my question!  It sounds like the header storage format is the missing piece of information I needed.  If that part is sample-precise (i.e. samples since midnight), that gives me confidence that it will be possible to correctly align them in post.  Though, I'm still unclear what the relationship between the header and the TC is ... I'm guessing the header corresponds to the first sample in the frame that is listed in the TC stamp (and, I guess, also the first frame of audio in the file)?  And then I'm counting on the fact that the recorders will only start recording on a sample that matched the first sample of a frame?  It sounds to me like this may be device specific, and there's nothing in the TC spec (or header format) that specifies precision.

I still have a question about the precision of jamming TC, which I'm also guessing will be device specific.  Namely, when I jam timecode from degree of precision is guaranteed?  The impression I've gotten is that there is no guarantee better than frame-precision, but most recorders can probably manage considerably better than that.

 

Incidentally, I've manage to track down a test that specifically references the F8: 


The test notes that there is an offset of "a few samples" between the Zoom F8 and the MOTU 16A (which was the master clock), which means the F8, at least, isn't totally sample-precise in it's TC jam.  It does suggest that the F8 manages to do *some* kind of word clock syncing that derives sync from the TC signal, which isn't quite perfect, since it drifted by 1.6ms after an hour.  My guess is that it's not a true WC jam, but perhaps it periodically re-clocks things by adding or dropping samples ... I can't think of

I'm inclined to agree with the test's conclusion that this is probably "close enough" for most purposes — certainly, I'm not expecting to roll anywhere close to an hour.  But it also tells me I can't count on true sample-precision, since even the TC timestamp was offset a few samples.

So ... I guess I have my answer:  It's device specific, and I have to do a test with my two specific recorders and then decide if that level of precision is good enough for my purpose.  And, probably, the "correct" way to do this is by only using recorders of the same model that can sync both TC and WC (Tascam HS-P82 and SD 7 Series seem to be the only ones I've seen that fit this criteria).

 

Thanks for all your help everyone!  I've learned a lot ... not least that sync is way harder to implement with precision than I thought.

Link to comment
Share on other sites

  • 2 months later...

Just now seeing this quote.  I'll add I've had to do several outdoor free-sync recordings with the F8n since then (ambient concert pickup ,hour-ish blocks), in some cases the files aligned well enough to use without time editing, in others I had to re-align about every 5 minutes.  

Link to comment
Share on other sites

  • 4 weeks later...
On 8/5/2022 at 7:35 AM, borjam said:
Quote

Unless you keep a constant clock (which can be achieved using GPS, a word clock signal or Dante's synchronization over the network) clocks will surely drift. Even outstanding temperature controlled clocks can have a drift of 0.5 ppm (parts per million).

 

 

Audinate says:
"Digital audio requires synchronization for accurate playback of audio samples. Dante uses Precision Time Protocol (PTP version 1, IEEE 1588-2002) by default for time synchronization. This generates a few small packets, a few times per second. One clock leader is elected on a per subnet basis that sends multicast sync and follow up messages to all followers. Follower devices send delay requests back to the leader to determine network delay."

 

Here is the update on that protocol:

IEEE SA - IEEE 1588-2019

 

Gotham Sound did a Dante setup for multitrack audio for location sound in a Youtube Video and found that the PTP in Dante was still unreliable and they needed to use Wordclock for reliability over say 18 hours.

For Digital audio the gold standard for staying in sync between multiple digital audio devices is wordclock.

 

Sound Devices 688, 788, 833, 888, Scorpio models all offer wordclock.   

 

The 788, offers external clocking: via word clock or AES digital inputs.   

The 833, 888, Scorpio Sync Reference options: Word Clock, LTC In, AES 1,2]

 

Being able to take the sync from an AES signal is supposed to a more modern way of external sync.  You'd need to have a Grade 1 grade of AES11 for extreme accuracy.

 

AES 11 for sync

"Two grades of reference are specified: Grade 1, having a long-term frequency accuracy of 1 ppm (part per million), and Grade 2, having a long- term accuracy of 10 ppm. The Grade 2 signal conforms to the standard AES sample frequency recommendation for digital audio equipment (AES5-1984 2 ), and is intended for use within a single studio which has no immediate technical reason for greater accuracy, whereas Grade 1 is a tighter specification and is intended for the synchronization of complete studio centres (as well as single studios if required). Byte 4, bits 0 and 1 of the channel status data of the reference signal (see section 4.8) indicate the grade of reference in use (00 = default, 01 = Grade 1, 10 = Grade 2, 11 = reserved). It is also specified in this standard that the capture range of oscillators in devices designed to lock to external synchronizing signals should be 2 ppm for Grade 1 and 50 ppm for Grade 2. (Grade 1 reference equipment is only expected to lock to other Grade 1 references.)"

Only a few  manufacturer make/model has that. such as :
Drawmer M-Clock Plus Master Clock Distributor [1 rackmount size unit requiring AC power]
 M-Clock Lite features an AES Grade 1 master clock generator, meaning that the generated clock has a long term frequency accuracy of +/- 1ppm.
Master Clock Generator and Dual Sample Rate Converter with 10 Word Clock Outputs
$1500. CAN $

On 8/5/2022 at 7:35 AM, borjam said:

 

 

 

Link to comment
Share on other sites

In July, frame.io posted a long article about the history, current state and limitations of, and possible future of timecode. The site says it's a 28-minute read. I have not yet read the whole thing.

 

Timecode is Not Time: Reinventing SMPTE ST-12 for the Cloud Era

In the world of video, timecode is everywhere.

It’s the universal language we can use to describe a single frame of video. It’s easy to understand, simple to implement, and readable.

Every video workflow either relies on timecode, or at least need to be compatible with it. And yet timecode is, in its current state, insufficient for the future of video workflows.

 

[then after a long discussion, towards the end of the article:]

 

The TLX Project being developed at SMPTE is the most comprehensive of the proposed solutions. “TLX” comes from “Extensible Time Label”. It addresses many of the limitations we discussed as well as many of the requirements outlined here.

The goal of TLX is to create a time label that has high precision (solving for the “too narrow” problem), a persistent media identifier, and can be extended with custom information. TLX has the concept of a “digital birth certificate,” which provides a media identity that is unique and transportable. Additionally, it would provide a “Precision Time Stamp” based on IEEE 1588 Precision Time Protocol. This would give the media a specific and unique time identity.

 

The whole article can be read here:

https://blog.frame.io/2022/07/11/reinventing-timecode-for-the-cloud/

 

The article above embeds this 65-minute webcast from SMPTE's former Director of Standards & Engineering:

Beyond SMPTE Time Code - the TLX Project

https://www.smpte.org/webcast/beyond-smpte-time-code-the-tlx-project

 

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...