Happy New Year, τ !

2021 will be a great year for τ

Beside the regular maintenance (I am actually spending too much time on maintenance), I want to achieve two major developments during 2021 :

  • Implement Audio-Graphs (see below)
  • React Native support (see below)

If at the of the year those two major points are achieved, then I will consider τ as a succes.

playFromMic()

Several τ users need to play on the headset what is recorded by the microphone, in quasi-real-time.

I am convinced that implementing audio-graph will be the general solution and will be very elegant. Today I introduce this new simple verb startPlayerFromMic() before the great global solution.

The App does not process the audio data. The App is in pass-threw mode. Later we will implement a cut-mode.

This new example can be compared to the old loop example.

1. iOS

startPlayerFromMic() directely links the microphone to the headset inside the OS itself, without any processing by τ

The improvement is really good. The delay between what is recorded and what is played is much better.

2. Android

The link between the microphone and the headset is done inside τ-core. The messaging channels between Java and Dart are not involved. The audio data are just transfered from the recording-thread to the player thread.

This is a great disappointment : the latency is marginally improved. This means that implementing data transfert from/to Dart with FFI will not benefit from using FFI.

I am currentely working to improve this latency problem. I think that it can be possible to do better on Android

Comments

τ docummentation has a Commento area at the bottom of every pages.

Doing a comment is very simple. You can login using :

  • Your google account (momentarily not available during a few days)
  • Your Github account
  • Your gitlab account
  • Your Twitter account
  • By providing your email address
  • And now, you can even post anonymously (in this case, your post will be moderated).

τ documentation is not so good that it cannot be improved. Doing a comment with Commento is so simple that I do not understand that nobody want to improve this doc.

Audio-graphs

Audio-graph will be several audio-nodes linked together. For example, you will be able to connect the Microphone node to the Equalizer node, and the Equalizer node to the Headset node.

I really want to do that. This project is really interesting to be developed, and I am fed up to work on uninteresting things.

My dream is also to create a graphic-editor to be be able to draw the audio-graph with the mouse. The graphic editor will generate both a Dart (or Javascript) module and a visual SVG image that the τ user will be able to insert in its own documentation.

It will also generate a graph representation in an external format (JSON?), that you will be able to load during run-time inside your App.

Examples

Some Audio-Graph examples

React Native support

You are a Flutter developer. So you do not care very much about supporting other frameworks.

But I am a complete libertarian. I really believe in freedom. I hate jails. And Dart is a kind of jail. Dart does not exist outside Flutter. And Flutter is perhaps a good framework, but Flutter cannot be everything.

In Future it will we good if we can support

  • Javascript (React-Native, Native-Script, Ionic). And more generally, all the platforms that support Cordova.
  • LUA (Solar 2D). I love LUA :+1
  • Pascal (Lazarus). I do love Pascal :+1
  • Perhaps C# (Xamarin). Note sure : C# is another jail…

There is no limit of what could be done for τ. But I will probably die before.

The license

When I begun to work on Flutter Sound (one year ago), this library was published under the MIT license. I consider Free licenses that do not include copyleft clause as bad licenses. I really did not want to spend much of my life on a Software badly protected

I am a liberterian (I believe in Freedom which is the real meaning of anarchy).

The boss of Dooboolab (my friend Hyo), is a very nice man, and accepted without hesitation to change the License to LGPL. I am very glad of this change : recently Flutter Sound gave birth to a new fork. Being allowed to fork a Free Software is a very good thing and it is the base of the Freedom.

But because Flutter Sound (now τ) is protected by LGPL, this fork will never be Close Source with a proprietary license. This fork will probably die soon (if it is not already dead), but the risk having a fork becoming Close Source cannot be taken.

Then, I asked to Dooboolab to transform the LGPL license to GPL. I consider GPL as THE real Free license. But Dooboolab did not accept that, and I understand his refusal.

I had then two choices :

  • Accept to work part of my life on a software badly protected.
  • Fork Flutter Sound, me too

I choosed the former. I thought that leaving Flutter Sound without any developer was a way to kill it. And I do no want the death of Flutter Sound.

Everything that I develop which is linked to Flutter Sound will be covered byt the current LGPL license.

But new developments (τ for React Native, the Audio-Graph editor, …) will be licensed under the GPL and not anymore LGPL. This is a political choice, and the reason I develop Free Software is a political reason.

Happy New Year, τ