Consider a click-language.
Let's say your language is made up of language elements. Words, terms, particles; let's call them "tokens", like the AI researchers do.
And let's say we want to be able to represent roughly as many as written tokens as Japanese: so, a few thousand. We can, as the Japanese do, form new words either phonetically, by using the tokens associated with sounds, or by forming compounds of more complex tokens.
If we have only two possible types of click: click, and not-click, then for a thousand, we need ten clicks in a row.
But we don't need to use all ten. We could omit all click-sequences with more then two non-clicks, and have a space of three or more non-clicks mean "end of token" This loses us a lot of tokens, but is kind of needed so that people coming into the conversation partway, or losing track of the clicks, can re-synch. And that then means we can length-compress, so the most common tokens are shorter, and rarer tokens are longer. This also means we're no longer tied to ten clicks as a max length: we can have them any length we want.
But if we add a few more states, such as four different volumes or pitches of click, or clicks with different pincers, then you only need five clicks per token. With ten click-types, you only need three per token. And you don't then have to use non-clicks, which means you only need to use one clickless beat for a "space", and again you have re-synchonization if you lose track, and can length-compress.
We can also use some of the click sequences as context markers, switching between "token-sets" (like code pages, or alphabets!). That means that like Japanese writing, we can change to a numeric token-set rather than a speech token-set. Or shift the politeness register, or switch to jargon, or slang, or... whatever token-set.
And once you have these context markers, suddenly the language balloons, and word lengths get shorter, as with these multiple token sets, you can have more tokens with lower-numbers of clicks. But it's a balance between that saving, and the cost of the initial context marker. If it saves you one click per character, and costs you three clicks to say, then it's only a saving if you typically say more than three tokens from each token-set after a context marker.
So in theory all you need is click and not-click, but the language rapidly gets a LOT richer once you get more than a single sound.
For Morse code, receiving at 140 WPM (11.7 beeps/sec) is I believe the world record, which is about the 150 WPM of normal spoken speech. So a species evolved to use clicks should be able to communicate at a rate we'd consider normal, especially using some of the tricks above.