feed-logo.png RSS ATOM

CATEGORIES

ARCHIVES

Logiciel Libre

Free Software

Pas grand chose. J'ai mit à jour deux thèmes en incluant la police d'écriture "DejaVu Sans, Extra Light". Vu la vitesse d'illustration de la documentation je vais probablement continuer d'avancer sur les version 2.x.x du logiciel.

Not much. I've updated two themes by adding a nice font "DejaVu Sans, Extra Light". Because of the very low rate of progress on the illustration work of the user manual I will probably going forward intho the development of the version 2.x.x of the this software.

DSANDGRAINS

Ce mois-ci j'ai implémenté les potentiomètres "START" et "END" ainsi que la représentation graphique de la zone de lecture de l'échantillon audio courant. Comme démontré dans la vidéo d'example, il est possible d'inverser le sens du signal audio !

This month i've implemented "START" and "END" knobs as well as visual representation of the audio area played. AS shown in the demo video, you can reverse audio signal!

Art libre

Free art

J'ai réalisé une séance photo que j'avais en projet depuis un moment. L'esthétique fait références aux affiches de la série netflix Dark.

_I've made a photo shooting that I had in mind since many months. The aesthetic is a reference to the promotional poster of the netfliw show Dark.

J'ai également dessiné quelques croquis, comme d'habitude. :)

I've also draw some sketches, as usual :)

Enfin j'ai terminé une longue et laborieuse illustration pour la doc de VenC.

Finally I'm done with a difficult digital painting for the VenC documentation.

Billets de blog

Blog entries

Ce mois-ci j'ai terminé la première partie d'un billet sur la notion de limite au fil de l'histoire des mathématiques. Cet article fait suite au travail de vulgarisation sur les séries infinies.

This month I wrote the first part of paper about the concept of Limit through the history of mathematics. This article is the following of the one dealing with infinite series.

Notion de limite avec Zénon et Euclide

Là, je suis bien emmerdé. Parce que dans la plupart des livres ou ressources sur internet, la définition du concept de limite est pour le moins velu. Plus velu que la barbe d'un utilisateur de Gentoo.

Quand vous êtes un bras cassé, rescapé de l'enseignement public, comme je le suis moi-même, on comprend vite que les définitions proposées dans -au hasard- "Analyse 1er Année, Seconde Edition" ou bien encore "Mathématiques tout-en-un MPSI · PCSI, 2éme édition", tous deux édités chez DUNOD, peuvent décourager ou laisser sur les rotules.

Et c'est là que le bât blesse, la notion de limite EST intuitive. Alors comment se fait-il que j'ai encore aujourd'hui tant de mal à comprendre ce dont il s'agit quand cela m'est présenté avec des formalismes mathématiques ?

Ben déjà parce que c'est pas si simple, en fait. Ce sujet a occupé les mathématiciens de tous les âges et sa formalisation a pris beaucoup de temps.

Cependant, m'est avis que balancer à la figure de l'étudiant ou du lecteur des définitions arrides est le meilleur moyen de l'éloigner de la compréhension de la chose.

Cette compréhension, je pense qu'on peut l'acquérir en prenant le temps de retracer un peu l'histoire de ce concept au travers de ses enjeux qui ont bien fait galérer sa race les mathématiciens.

Un peu d'histoire

Alors c'est Zénon d'Élée, il se réveille un matin désoeuvré, et il se dit : "Hey, je vais mettre en PLS ces punks de philosophes et de dialecticiens qui pensent que les choses sont indéfiniment divisibles !"

Là dessus le beau et grand Zénon élabore des paradoxes rigolos qui te servirons aussi à briller en société, par exemple, pendant un dîner mondain chiant en famille.

Un de ses paradoxes les plus fameux est celui de la "dichotomie". Voila le bail :

Un Objet O part d'un point A, et doit se rendre en B. Pour se faire il doit d'abord parcourir la moitié de la distance AB. Mais pour ça, il doit d'abord parcourir la moitié de la moitié de la distance AB. Mais encore avant, il devra parcourir la moitié de la moitié de la moitié de l... Bref. On devine que, vu comme ça, le mobile n'arrivera jamais en B parce que ça impliquerait d'effectuer une infinité de mouvement de durée non nul.

Si vous avez suivit, vous remarquerez que ce qu'il se passe dans ce paradoxe est parfaitement modélisé dans le temps par la suite que nous avons vu dans le précédent billet quand r=0.5 et a=1.

Plus précisément, si :

  • la distance total à parcourir est égale à 2m
  • a est la vitesse en m/s,
  • rn est le temps écoulé pour parcourir la n-ième subdivision

La formule nous donne la somme des durées nécessaires pour parcourir chaque n-ième subdivision.

n=0arn=a+ar+ar2+...+arn=a1r
n=00.5n=1+12+14+...+12n

Pour un n finit, effectivement, la durée du mouvement donnée par la formule est inférieur à la durée réel du mouvement.

La seul façon d'obtenir l'égalité est d'avoir un n infiniment grand. En d'autre termes, effectuer une infinité de mouvement de durée non nul...

"Mais alors qu'est-ce que c'est que ces carabistouilles ?"

Dans l'énoncé de départ on peut être trompé par la formulation du problème et la façon dont le phénomène est modélisé dans notre esprit. Ici le formalisme mathématique, on l'a vu, nous montre explicitement que pour arriver au bout de notre mouvement, il faut effectuer une infinité de mouvement MAIS que la somme des durée de ces mouvements converge vers un nombre fini. That's the whole point.

Et là, vous vous dites :

"Mais bordel, l'univers est indéfiniment divisible oui ou merde ?"

Non, le temps et l'espace ne sont pas indéfiniment divisible. Sauf qu'à l'époque, les grecs ne pouvaient pas le savoir. Ils se challengeaient avec ce genre de paradoxes en guise de punchline street crédible.

Ce qu'on "sait" maintenant, c'est que l'univers est fait d'hypervoxels (des pixels d'espace-temps, en 4D). On peut dire en quelque sorte que les opérations mathématiques sont sur le papier infiniment précise, alors que dans la réalité, leur application (ou leur matérialisation) est une approximation à l'échelle de Planck.

L'échelle de quoi?

L'échelle de Planck. Pour faire simple, nous dirons ici qu'il s'agit de la plus petite unité de temps et d'espace où les mesures physiques ont encore du sens dans nos cadres théoriques. En dessous, c'est la hess.

  • En terme d'espace cette longueur vaut 1.616255.1035m
  • En terme de temps cette durée vaut 5.391247.1044s

Ah, ah, est-ce qu'avec ça j'ai besoin de dire que la scène du "Royaume Quantique" dans Ant-man est complétement bullshit ? Oui... enfin c'est joli quand même.

Bon. Voilà. Si vous trouvez tout ça tordu, vous comprenez sans doute maintenant pourquoi la notion de limite est un tel bordel, et pourquoi ça pose tout un tas de question physique et métaphysique moins intuitive qu'il n'y parait.

Bon... À ce stade de l'histoire, on a toujours pas de formalisme pour la notion de limite. Par contre, on a une suite géométrique qui comme on l'a dit nous donne l'intuition d'une telle notion. Parce que nous savons maintenant, de formule sûre, qu'une fonction peut indéfiniment converger vers une valeur finie.

Il se trouve que parmi la foultitude de branches des mathématiques, l'une d'elle s'intéresse particulièrement à l'infinitésimal. Cette branche c'est l'analyse.

Cette discipline existe depuis très longtemps. Plus longtemps que Joe Biden lui-même. Ça remonte à la Grèce antique, comme on l'a vu avec Zénon (sauf qu'à l'époque on en parlait pas comme étant de "l'analyse").

150 ans après lui, Euclide revient avec des bails similaires dans l'un de ses ouvrages « Le livre X des éléments d'Euclide ».

Voilà ce qu'il nous dit, non sans tortuosité :

« Deux grandeurs inégales étant proposées, si l'on retranche de la plus grande une partie plus grande que sa moitié, si l'on retranche du reste une partie plus grande que sa moitié, et si l'on fait toujours la même chose, il restera une grandeur qui sera plus petite que la plus petite des grandeurs proposées. »

Vous remarquerez que ces mathématiciens, pour d'obscures raisons, ont un goût prononcé pour les formulations alambiqués... Ce n'est que pur hasard si le tome 10 des éléments d'Euclide a été élu "oeuvre la plus relou du game" par tous les confrères au fil des âges. Déso pas déso.

Bon, donc, « on retranche du reste une grandeur plus grande que sa moitié » pourrait être formalisé comme suit :

On partirait d'une suite géométrique :

Un+1=Un.q

tel que

  • U0=A
  • q12
A serait la plus grande des deux grandeurs de départ. et q serait le ratio entre les deux grandeurs. Finalement, on obtiendrait trivialement l'inégalité suivante :

Un+1Un12

Et comme les formules récursives sont casse-couilles on essayerait de trouver une inégalité stylée où il ne resterait plus que Un, A et n.

Zbiiim, on élève tout le monde à la puissance n :

(Un+1Un)n12n
An.(qn+1)nAn.qnn(12)n
qn2+nqn212n
qn2+nn212n
qn12n

Attend, attend, c'est pas finit. Par définition Un=A.qn.

A.qnA.12n
UnA.12n

Voilà. Là on est bon. Du coup, Un représente ce qu'il reste après n retranchement.

Bon, c'est cool et tout mais par contre...

« Il restera une grandeur qui sera plus petite que la plus petite des grandeurs proposées. »

Qu'est-ce que ça veut dire encore que cette merde ?

Ça veut dire que si on continue à retrancher du reste la plus grande part, qu'on prend ce nouveau reste, et qu'on recommence suffisament de fois et bien quelque soit la valeur qu'on se donne, Un sera toujours plus petit.

"Cette valeur qu'on se donne", je le rappelle c'est la plus petite des deux grandeurs proposées dans l'énoncé de départ. On va l'appeler ε.

Encore faut-il qu'un tel ε existe. Essayons de démontrer ça.

Pour commencer, glissons innocement que, en fait, pour n infiniment grand, Un sera infiniment petit.

Cet ε est en fait une borne supérieure. Puisqu'on parle de choses infinitésimales, on peut dire que, en quelque sorte, ε définit le "zoom" sur la relation UnA2n

En langage matheux ça donne :

(P) 0UnA2nε

Ok, ok. Du coup, pour notre démonstration l'idéal serait d'avoir un ε qui dépendrait de n et qui comme Un se rapprocherait de zéro à mesure que n grandirait tout en vérifiant la relation (P). Ça montrerait ainsi que cette borne (ou ce "zoom") ε, même en étant variable, vérifie toujours (P).

Ceci étant dit... Définissons ε. Genre comme ça :

ε=An

On aurait donc in fine

(P) 0UnA2nAn avec n1.

Il est assez évident dans ces circonstances que

A2nAn

Mais juste pour le plaisir d'être verbeux démontrons le quand même.

On commence par montrer par récurrence que

(H) n2n

On initialise (H) avec n=1. On constate sans surprise qu'on est good to go.

Supposant (H) vraie a un rang n fixé, étudions la propriété au rang n+1.

(H) n+12n+1
(H) n+12n.2
(H)n+122n

Et maintenant pour valider (H) au rang n+1 il faut montrer que

(L) n+12n

Easy !

n+12n
n+12n
n2n1
0n1

Voilà. Du coup c'est cool. Notre lemme-inégalité (L) fonctionnant bien, la propriété (H) est donc vérifiée. On a donc

n2n12n1n

En multipliant tout ce beau monde par A on retombe bien sur la partie de la relation (P) que l'on voulait montrer.

Il ne vous a pas échappé cependant que ça ne marche que pour n1. Ce qui n'est pas un problème puisque dans notre relation (P) un n nul entraînerait une division par zéro qui ferait s'auto-détruire tout le multivers.

Ooooook. Et maintenant ? On a un formalisme pour la notion de limite ? Et ben non. Toujours pas. Par contre les copains on a quelque chose qu'Euclide nous dit qui flirt beaucoup avec la définition actuelle de Limite.

En effet, Euclide introduit l'idée de borne qui encadre sa suite géométrique. Cette idée de borne, ou de zoom, est un aspect central dans la définition moderne du sujet qui nous occupe.

On progresse donc. On se sent un peu moins con. On reprend confiance.

Yeah. La suite au prochaine épisode.

Sources

Remerciements

Merci au maître du logos pour sa précieuse relecture et ses conseils !

Wesh les gens. Ce mois-ci j'ai try hardé de ouf sur mon synthétiseur granulaire ! On va voir ça :)

Whaddup peoples. This month I worked hard on my granular synthetizer! Let's see! :)

Logiciel Libre

Free Software

DSANDGRAINS

Au niveau de l'interface graphique :

  • J'ai corrigé, optimisé et simplifié la méthode de rendu des composants ui de type "glisseur".
  • J'ai corrigé des bugs de rendu sur les listes éditables.
  • J'ai ajouté un potentiomètre de randomisation avec sa liste d'effets ciblés.
  • J'ai remplacé le potentiomètre "SMOOTH TRANSITION" par "STRETCH".
  • QJackctl est notifié quand les ports audio sont renommés depuis le client.
  • L'ouverture, la lecture et la validation de fichiers FLAC est plus fiable.
  • J'ai implémenté l'élément graphique "Bar Plot" qui permet le rendu de la forme d'onde de l'échantillon audio.
  • j'ai implémenté un mécanisme d'animation des éléments graphiques.
  • Le graphique de l'échantillon audio est animé pour se mettre à jour quand on change de contexte.
  • Les potentiomètres "Amount" et "Stretch" s'animent pour se mettre à jour quand on change de contexte.
  • J'ai ajusté le placement de certains éléments graphiques du menu "Fichier".
  • La grosse fonction init_ui_elements a été réorganisée (c'était pas du luxe).
  • J'ai corrigé un gros bug rendant l'interface graphique moins réactive.

At the UI level:

  • I've fixed, optimized and simplified rendering method of ui element know as "slider".
  • I've fixed bugs in rendering of editable list item.
  • I've add potentiometer for randomization as well as its target effects list.
  • I've replaced the "SMOOTH TRANSITION" potentiometer by "STRETCH".
  • Qjackctl is notified when audio port is renamed from client.
  • Opening, reading and validating FLAC file is more reliable.
  • Bar plot UI element has been implemented and used for rendering audio sample's waveform.
  • Transition animation has been implemented for UI elements.
  • Audio Sample screen update with an animation while switching context.
  • "Amount" and "Stretch" potentiometer update with an animation while switching context.
  • Fixing some ui element coordinates in "Open File" menu.
  • The big function known as init_ui_elements has been rewritten for the better.
  • Fix a bug making the whole user interface less responsive.

Au niveau du son :

  • Les échantillons audio sont mixés entre eux dans chaque voix et son envoyés au serveur jack.
  • Le potentiomètre "Amount" permet de controler le volume de l'échantillon audio courant.
  • Le potentiomètre "Stretch" est... Heu... Loin d'être fini.

At the sound level:

  • Audio sample are mixed within voices and send to jack server.
  • "Amount" allow to setup gain of the current active audio sample.
  • "Stretch" is... Well... Far to be implemented for now.

Donc parlons en de ce potentiomètre... Je reviens de loin, c'est pas du tout quelque chose de trivial comme fonctionnalité. Ce que je veux implémenter pour les potentiomètres "Stretch" et "Pitch" c'est un "Time Scale modification" et "Pitch Scale Modification" qui soient indépendants l'un de l'autre, sans créer trop d'artefacts audio, et sans être trop gourmant en temps CPU...

Ok, so let's talk about "Stretch"... It's a quite hard issue. It's not a trivial feature. What I want is known as independant "Time Scale modification and independant "Pitch Scale Modification". It must be done without any too much audio artifacts and without being too much CPU hunger...

Il se trouve qu'une technique de 2008 implémente déjà ce que je veux faire :

Fortunately, there a approach since 2008 which sounds good and implement what I want :

Time and Pitch Scale Modification: a Real-time Framework and Tutorial Tutorial

Malheureusement cette publication m'est très difficile d'utilisation parce que je ne maitrise pas les concepts et outils mathématiques qui y sont utilisés. Les prochaines semaines vont donc consister pour moi à me former et mettre à jour mes connaissances. Comme le sujet n'a pas l'air d'être documenté en français ce sera l'occasion de vulgariser ce que j'ai compris de tout ça dans un bel article sur Zeste de savoir !

The bad news is this paper is really hard to handle with my lack of mathematical skills... The next weeks will be about learning what I don't know yet to understand what how to implement the good way the features I want. Because the topic has not been covered in french, it could be the opportunity to summarize what I learn in a beautiful paper for Zeste de savoir!

Voilà pour DSANDGRAINS :)

That is what we got for DSANDGRAINS this month :)

  • J'ai créé une illustration pour le chapitre "Tutoriel" de la documentation.
  • J'ai mis à jour le thème "Gentle" en ajoutant une typo un peu plus stylée.
  • J'ai corrigé un p'tit bug dans le mécanisme d'importation d'assets.

  • I drew an illustration for "Tutorial" chapter of the documentation.

  • I've updated "Gentle" theme by adding a nicer font.
  • I've fixed a small bug in assets exportation.

Art libre

Free Art

Pas grand chose, mais quelques petites choses quand même.

Not much, yet some stuff to see.

Billets de Blog

Blog entries

Dans ma quête de connaissance pour implémenter les fonctionnalités que je veux pour mon synthétiseur j'ai commencé à reprendre les bases mathématiques qu'il me manque. Dans cette optique, j'ai rédigé deux billets ou j'étale mes connaissances nouvellement acquises. Ce qui me permet d'y revenir en cas de doute, mais aussi d'instruire les plus jeunes d'entre vous, si cela est nécessaire !

In my quest of knowledge to implement signal processing features in my synthetizer I've began to learn from the ground what I miss in mathematics. This way, I writting some blog entries about what I learnt. Useful for the youth, but also to me when I need "good" ressources about a certain topic.

À noter également que dans le cadre de mon projet de traitement de signal, je me base sur ces deux documents du MIT :

My mathematic investigations in signal processing are based on the following MIT papers :

Voilà pour le mois d'Avril :)

There is for April :)

Ok, donc comme ma vie est merdique à ce point, je vais essayer de démontrer les expressions de forme fermées de deux sommes infinies. On va bien rigolay. Parce que, en fait, il y a PLEIN de truc à dire.

"Expression de forme fermées" ?

Oui. La formule quoi.

Somme des entiers naturels

Classique.

Sn=k=1nk=1+2+3+...+n

Ce qu'on va se proposer de faire, c'est démontrer par récurence

HR(n):Sn=k=1nk=n(n+1)2

On initialize notre propriété avec, tout à fait au hasard, 1.

HR(1):S1=k=11k=1(1+1)2=22=1

Heu... Voilà.

Bon, du coup, Par définition

Sn+1=Sn+n+1

Supposant HR(n) vraie pour un entier n fixé, on va montrer qu'il en découle nécessairement HR(n+1) :

HR(n+1):Sn+1=(n+1)(n+1+1)2
Sn+1=(n+1)(n+1+1)2<=>
Sn+n+1=n²+3n+22<=>
n(n+1)2+n+1=n²+3n+22<=>
n(n+1)+2n+22=n²+3n+22

C.Q.F.D

Trivial, oui, oui, je sais... Mais peut-être pas tant que ça.

Démonstration alternative

Il est intéressant de noter que si comme moi, ingénieur au rabais, vous découvrez le monde fabuleux et féérique des mathématiques, cette démonstration par récurrence, en fait, ne nous donne pas vraiment d'intuition sur l'origine de la formule. Elle nous dis juste qu'elle fonctionne. Et ça, les amis, c'est un gros problème dans l'enseignement. Mais on est pas la pour faire de la politique. On est là pour comprendre ce qu'on fait.

On va donc essayer de proposer une démonstration alternative basé sur une approche plus intuitive. Démonstration que Carl Friedrich Gauss aurait réalisé à l'âge de neuf ans. C'est vrai que je me sentais pas assez naze jusque là.

Cette formule qu'on a vu, qu'on appel aussi "formule de sommation de Gauss", peut être matérialisé par un dessin.

Et là, ça devient tout de suite plus clair. Quand n est fixé à 4. On construit une sorte d'escalier dans lequel chaque marche, en noir, correspond à une itération de la somme.

Comme ce qu'il se passe est représenté dans l'espace, des choses appairaissent subitement à l'esprit, et l'on peut avoir instantanément l'intuition d'une formule qui in fine nous ramène à celle de la définition d'origine :

Sn=n²2+n2=n(n+1)2

C'est ce qu'on appel une preuve sans mot, dont notre exemple est un célèbre représentant.

Comme ces démonstrations sont parfoit trompeuses (ça fera peut-être l'objet d'un autre billet) il est utile, voir nécessaire, de réaliser une démonstration plus formelle qui elle, malheureusement, pourrait être moins intuitive sur l'origine de la propriété que l'on cherche démontrer.

Dans notre cas, cette démonstration peu intuitive est celle que nous avons réalisé par récurrence au début de cet article.

Série géométrique

n=0arn=a+ar+ar2+...+arn=a1r

avec

0r<1

Donc là, il s'agit d'une série d'éléments d'une suite géométrique. Comme je suis grand seigneur, je vais rapidement expliquer ce qu'est une suite géométrique. De rien.

Donc une suite géométrique peut trivialement être décrite comme une fonction récursive dont le terme courant est le résultat du produit d'un nombre r et du terme précédent de la suite.

Un=r.Un1

avec

U0=a

On dit que r est la raison de la suite Un.

Et donc, dans le cas de notre série on somme les n termes de notre suite géométrique avec n allant de 0 vers l'infini et au delà.

Bon, et du coup, ce que l'on veut tacher de démontrer c'est :

n=0arn=a1r

Démonstration

Rappelons que

0r<1

et notons

Sn=k=0arn=a+ar+ar2+...+arn

Il vient que

r.Sn=n=0arn+1=ar+ar2+ar3+...+arn+1

Et que se passe-t-il si on effectue Snr.Sn ?

Snr.Sn =a+ar+ar2+...+arn
arar2ar3...arn+1
Sn(1r) =aarn+1

On voit que tous les termes s'annulent à l'exception de a et arn+1. Dans ce genre de cas, le sympathique sobriquet de "somme téléscopique" est assigné à ce type de formule.

On commence à arriver au bout, parce que du coup :

Sn=aarn+11r

Et ça, les amis, et bien ça ressemble vachement à la formule que l'on cherche à démontrer ! Et c'est aussi là que 0r<1 prend toute son importance. Parce que ça signifie que quand n tend vers l'infini, arn+1 tend vers 0. Du coup... On a bien

n=0arn=a1r

C.Q.F.D

Ou pas ?

Parce que tous ça nous amène à la notion de convergence et de limite. Dans notre cas, la situation est assez intuitive, alors c'est cool. Mais il se trouve qu'il y a un formalisme spécifique pour les cas comme le nôtre où une série, une suite, ou une fonction converge vers une valeur donnée.

Du coup, comme on est des gens sérieux. On verra quand même ça, mais dans le prochain billet.

Merci au maître du logos pour sa précieuse relecture et ses conseils !

Ok, donc voilà les bails. Pour développer mon synthétiseur granulaire. J'ai besoin de mathématiques appliqués au traitement du signal. Or mes connaissances dans le domaine sont... Très minimales, pour rester poli.

En mesurant l'étendu de mon ignorance, et en réalisant qu'un peu comme John Snow, je ne sais rien, j'ai entrepris de revoir les bases. Je m'intéresse notamment au logarithme et la démonstration de ses propriétés.

Or, je constate avec désespoir que dans la littérature que l'on peut trouver sur internet j'ai le plus souvent, au choix :

  • Une propriété du logarithme, démontré avec une autre propriété du logarithme.
  • Des démonstrations réalisées sur la base de concepts que je ne maitrise absolument pas.

L'un ou l'autre, je ne suis pas plus avancé. Du coup, ce que j'aimerais c'est une démonstration simple qui n'implique pas d'autres connaissances que les opérations algébrique sur les puissances dont le logarithme est la continuité.

Comme on est jamais mieux servi que par soit même (ou par les copains qui redirigent vers les bonnes ressources). On va se proposer ici de démontrer les propriétés algébriques du logarithme.

Définition du logarithme

Soit p le résultat de l'élévation à la puissance x, d'un nombre a.

Le logarithme de base a, de p, permet de retrouver l'exposant x.

Malin !

Du coup, mathématiquement, ça s'écrit comme ça

ax=p<=>loga(p)=x

Précisont également qu'une conséquence de cette définition est que

x,p

En d'autre terme, dans ℝ, le résult d'une élévation de a à la puissance x, ne peut pas être négatif.

Le logarithme d'un produit

(P1) :loga(pq)=loga(p)+loga(q)

Pour démontrer cette propriété (P1) il faut fortuitement remarquer que

loga(ap)=p

Comment ? Et bien c'est simple. Notons

q=ap

alors

loga(ap)=loga(q)=y<=>ay=q=ap
<=>y=p

Fort de ce petit lemme de derrière les fagots, lemme que nous appelerons (L1), on peut procéder à notre démonstration de (P1).

Par définition on a

loga(p)=x<=>ax=p
loga(q)=y<=>ay=q

Du coup, on peut écrire :

loga(pq)=
loga(ax.ay)=
loga(ax+y)

Et grâce à (L1), qui est en fait une application de la définition, on a

loga(ax+y)=
x+y=
loga(p)+loga(q)

C.Q.F.D

Le logarithme d'un quotient

(P2) :loga(pq)=loga(p)loga(q)

C'est la même logique que pour la démonstration de (P1) : En remplaçant p et q par leur équivalent.

loga(p)=x<=>ax=p
loga(q)=y<=>ay=q

On obtient

loga(pq)=
loga(axay)=
loga(axy)

Encore une fois, grâce à (L1), on voit naturellement que

loga(axy)=
xy=
loga(p)loga(q)

C.Q.F.D

Le logarithme d'une puissance

(P3) :loga(pq)=loga(p).q

Comme précédemment on remplace p par son équivalent. C'est à dire

loga(p)=x<=>ax=p

On obtient

loga(pq)=
loga((ax)q)=
loga(axq)

Toujours avec (L1), on voit naturellement que

loga(axq)=
xq=
loga(p).q

C.Q.F.D

Le changement de base

(P4) :loga(p)=logb(p).KavecK=1logb(a)

Donc là, ce qu'on veut, c'est démontrer

K=1logb(a).

Comme précédemment, on note

ax=p

En remplaçant p on a alors :

loga(p)=logb(p).K<=>
loga(ax)=logb(ax).K<=>

Grâce à (P3) il vient :

loga(ax)=logb(ax).K<=>
x.loga(a)=x.logb(a).K<=>
x.loga(a)x.logb(a)=K

Avec (L1) on peut finalement conclure :

1logb(a)=K

C.Q.F.D

Voilà, encore un prétexte pour jouer avec MathML et le module VenC qui va bien pour cette usage. Et, je m'endormirais moins bête.

Salut les loulous, ce mois-ci a été un peu compliqué. Voilà, où on en est.

Hello, fellows, this month had been though. Let's see what we've got.

Art libre

Free Art

Pas grand chose malheureusement.

Not much to see, unfortunately.

Logiciel Libre

Free Software

DSANDGRAINS

Des avancées significatives ont été réalisé sur l'interface de DSANDGRAINS qui était jusqu'alors incomplète.

Significant progress has been made on the user interface of DSANDGRAINS which was until now incomplete.

L'ancienne version / The older version :

Et la nouvelle interface / And the latest user interface design :

  • Deux potentiomètres ont été ajouté au groupe "Sample".
    • L'un pour controler le nombre de grains sortant.
    • L'autre pour espacer les grains entre eux.
  • Les effets de modulation DAHDSR et LFO ont maintenant chacun un menu contextuel pour activer l'effet sur une cible donnée.
  • L'équalizer est plus cohérent et intuitif avec un control du facteur Q, du gain, et de la fréquence de chacunes des 8 huits bandes.
  • Comme pour le groupe "Sample", le groupe "Voice dispose maintenant de son controle du pitch.

  • Two potentiometers have been added to "Sample".

    • The first one allow to control the number of output grains.
    • The second one allow to add space between grains.
  • DAHDSR and LFO modulations effects have both their contextual menu to apply and enable effet on target.
  • Equalizer is more intuitive and coherent with Q-factor, gain and frequency controller applied to the eight bands.
  • Like "Sample" group, "Voice" group have it's own pitch controller.

Normalement, cet instrument virtuel n'est pas conçu pour être redimensionnable, mais sur Linux, certains gestionnaires de fenêtre ne respectent pas cette propriété de l'application. C'est le cas notamment de i3. Le redimensionnement forcé pose des problèmes en terme d'esthétique et d'expérience utilisateur. J'ai passé un bon moment à faire en sorte que le l'UI de DSANDGRAINS soit "responsive".

In normal circomstances, this virtual instrument is not resizable. But on linux, some window manager doesn't respect this application property. This is the case for instance with i3. Forced window rescaling brings troubles in user experience and break the aesthetic of the software. I've spend a long time to fix this issue.

Après correctif, voilà un exemple où DSANDGRAINS est en mode plein écran.

After applying fix, here is an example where DSANDGRAINS is in fullscreen mode.

Enfin, à côté de tout ça, beaucoup de nettoyage de code, de résolutions de bug et de petites optimisations qui rendent le code à la fois plus clair, légé, et performant!

Beside this, a lot of code cleaning, bugs fix, and optimizations making the code more pleasant, lightweight and efficient!

Voilà pour le mois de mars, espérons que le mois d'Avril sera plus riche, en attendant, bonne fin du monde !

Here it is for march. Let's hope April will bring more art and code. Meanwhile, have a good world ending!

Qu'est-ce qui s'est passé en février ? Et bien calme toi, je vais te le dire !

What happens in February? Well, cool down, i'll tell you!

Art libre

Free Art

Ce mois-ci, pour garder la pèche, j'ai fais plein de doodles, réalisés entre 15 et 30 minutes. Idéalement, j'aimerais continuer sur ma lancée en me forçant à réaliser un de ces petits croquis une fois par jour !

This month, to keep the art up, i've made A LOT of doodles. They were made between 15 or 30 minutes. Ideally, I would love to keep going this way by drawing one doodle like theses per day!

Enfin, j'ai réalisé une autre illustration pour la documentation de VenC.

To conclude, I've made an illustration for the VenC documentation.

Impression 3D

3D Printing

J'ai réalisé plusieurs pièces imprimées en 3D avec ma Creality que j'arrive enfin à maitriser...

I've made somes 3D printed works with my Creality which I learnt to use the hardway...

Pour la première, Il s'agit d'une pièce de rechanger pour réparer ma scie à ruban dont la règle-support ne tenait plus correctement.

The first one is an object to repair my bandsaw. The support didn't hold steady.

2021_-_Denis_Salem_-_CC_By_SA_-_scie_ruban_fix.blend

J'ai imprimé un luminaire assez grand dont l'impression a duré 21 heures...

I've printed a large light fixture which spent 21 hours to complete...

2021_-_Denis_Salem_-_CC_By_SA_-_Lamp_Design_0x00.blend

Enfin j'ai réalisé un support de rechange pour une lampe projecteur vintage.

Last but not least, I've designed and 3D printed a replacement support for a vintage projector.

2021_-_Denis_Salem_-_CC_By_SA_-_vintage_projector.blend

Logiciel Libre

Free Software

Bon alors, pour VenC, ça va aller vite :

  • J'ai régler quelque bugs mineurs dans l'installateur.
  • J'ai uploader VenC 2.0.0 sur les repository de pypi.
  • J'ai corrigé la fonction NSFW pour le thème Gentle et Academik.
  • La documentation est terminé, mais il manque quelques parties, entre autres relatives à la promotion de VenC. Je l'ai mise en ligne ici.

Well, it will be quick :

  • I've fix couples of bugs in installer.
  • I've updated pypi repository.
  • I've fix NSFW feature for Gentle and Academik theme.
  • Documentation is done, but there is some sections that are missing. Still, it's available here in french.

DSANDGRAINS

Le développement de DSANDGRAINS continue donc de plus belle ! Une rapide relecture du code par des programmeurs expérimentés avec OpenGL a pu mettre en lumière certains problèmes de synchronisation qui auront été pour moi l'occasion d'amener des optimisations supplémentaires.

  • J'ai complètement retiré tous les threads et mutex de l'application. Tous les événements UI sont géré dans le thread principal.
  • J'ai rendu plus intelligent la création de contexte OpenGL, ce qui a contribué à significativement améliorer les performances générales et la consommation mémoire.
  • L'application communique intelligemment avec le gestionnaire de fenêtre pour connaître son état. Ce qui permet d'arrêter le rendu de l'interface graphique, quand elle n'est pas visible.

The development of DSANDGRAINS is still on going! A quick review by experienced OpenGL programmer help me to understand some misconception in the current software architecture. This lead me to bring some deeps modifications and signifiant optimizations.

  • I've completely removed threads and mutex from the application. Every UI event are handled in the main thread.
  • I've made the OpenGL context creation more intelligent. It only use required ressources. Substantial CPU and memory usage amelioration have been made there.
  • The client take advantage of windows manager hint to know if window is visible or not, this allow to stop rendering when it's not necessary.

Autres informations

Miscellaneous informations

  • Je serais présent aux JdLL à Lyon le 3 et 4 avril 2021 ! Passez me voir !!
  • La bande dessiné, en collaboration avec Merle Bardenoir est toujours en cours. j'ai déjà réalisé deux pages, j'essai de maintenir un rythme de production raisonnablement soutenu.

Voilà pour le mois de février ! Merci à tous pour votre soutiens !!

  • I will be present to JdLL in Lyon, april 3 and 4 2021! Come to see me!!
  • The comic in association with Merle Bardenoir is still on going, already two pages have been made. I try to remain constant in my effort.

There is is for february! Thank to all for the kind support!!

Alors qu'ais-je fais en janvier ? Dans quel étagère ?

What have I done in january?

Art libre

Free art

Niveau production artistique on a pour commencer une illustration inspiré d'un rêve d'une copine ! L'image est disponible sous la forme de produit dérivé sur RedBubble ici. Vous pouvez également vous procurer les sources de l'image en haute résolution ici

On the artistic side, we begin with this illustration inspired by a dream from a girlfriend! This picture is available as derived product on RedBubble there. You can grab the source file as well there.

J'ai réalisé une autre illustration pour la page d'accueil de la documentation de VenC :

I've made another digital painting for the home page of the user manual of VenC:

Cette documentation est également enrichie d'icones animés pour agrémenter la page de présentation.

This user manual now have some set of icons to introduce VenC and its features.

Enfin l'ambition pour cette documentation est d'illustrer chaque chapitre avec un entête spécifique. Voilà l'entête du chapitre présentant VenC :

I want for this user manual to have some specific illustration for chapters header. Here is the first one:

En janvier j'ai réalisé un dernier dessin pour le projet de BD avec Merle Bardenoire. Si je n'ai plus posté à ce sujet depuis, c'est parce que j'ai commencé à dessiner la BD à proprement parlé !

In January I've made a last concept art for the comic project I'm working on with Merle Bardenoire. If I don't post much about it lately it's because I actually start to draw the comic !

J'ai aussi fait quelque sketch sur ordinateur pour pas perdre la mains avec le fameux effet crayons de GIMP. J'ai d'ailleurs pu paramétrer un peu l'effet pour avoir quelque chose d'encore plus réaliste.

I've also drawn some sketches on computer to keep the art up with the pen effect experienced last month with GIMP. I was able to tune the effect to get something even more convincing.

Au fait, l'un de ces croquis, est la millième oeuvre sur mon site !! Symboliquement, c'est important ! ^^

By the way one of these sketch is the thousandth piece of art on my galery! It's quite a step for me! ^^

Et puis quelque croquis coquin parce que pourquoi pas.

And then some lewd sketches because why not.

Enfin j'ai également réalisé un petit stripcomic sur la 5G :

Last but not least, I've also made a short stripcomic about 5G network:

Logiciel libre

Free software

Bon ben pour VenC, pas grand chose puisque l'essentiel de la v2 est terminé ! À part quelque correction d'erreur dans la doc, et l'intégration des illustrations. Rien à signaler !

Well, for VenC, not much to talk about because the v2 is done! Still, there was some typo fix and illustration integration into the documentation.

DSANDGRAINS

Ah bah tiens ! Le revoilà lui ! Le développement de VenC m'ayant accaparé j'ai du mettre de côté celui du synthétiseur granulaire que je vous avez déjà présenté quelque mois auparavant. Avec la finalisation du code de la v2 de VenC, j'ai pu reprendre le développement de DSANDGRAINS !

Look what we have here! The finalization of VenC took most of my time so I had to stop for a while DSANDGRAINS developpement which I already introduce to you few months ago. Now I'm done with VenC and I'm back working on DSANDGRAINS!

Du coup :

  • J'ai finit d'intégrer libFLAC au synthétiseur pour charger des fichiers audio lossless.
  • J'ai corrigé une fuite mémoire induit par le chargement d'un fichier audio.
  • J'ai mit à jour CMakeLists.txt pour tenir compte des interfaces OpenGL alternatives.
  • J'ai modifié le system d'allocation mémoire du programme pour rendre l'echec optionnellement fatal.

Here is the summary of commits of this month: https://framagit.org/denissalem/dstudio/-/commits/dsandgrains/

Voilà, voilà ! Merci à tous ceux qui me soutiennent sur Tipeee et Liberapay ! Vous assurez grave !

Me revoilà pour le bilan du mois de décembre ! À cause des fêtes de fin d'année, je n'ai pas pu être aussi prolifique que les mois passés, mais j'ai tout de même quelques petites choses sympa à vous montrer et à vous annoncer

I'm back for december assessment! Because of the new year holiday I wasn't able to be productive as expected, but nevertheless I still have some nice stuff to showcase and announce!

Pour commencer, je me suis créer un compte REDBUBBLE qui fait office de boutique en ligne où vous pourrez acheter des produits dérivés de mes travaux. Je rajoute au fur et à mesure les oeuvres qu'il me semble pertinent de faire fabriquer / imprimer, mais si vous avez des suggestions, n'hésitez pas à me le faire savoir sur Tipeee, ou sur mes réseaux sociaux.

Let's start with my newly created accound on REDBUBBLE which is my online shop where you can buy derived product from my art. I continue to add some artworks of mine that I feel good enough to be manufactured. If you have any request you can tell me on my social media or on my patreon.

Art libre

Free art

J'ai corrigé une oeuvre passée qui comportait une coquille :

I've fix an old artwork where there was some typo:

À gauche, l'ancienne version, à droite, la nouvelle :

The left one is the older while the newer version is at the right.

J'ai continué mon ouvrage sur la conception des environnements du projet de BD en collaboration avec Merle Bardenoire.

I kept working environment design for the comic project made in collaboration with Merle Bardenoire.

Un p'tit croqui TRÈS vite fait avec Gimp où je test un effet crayonné relativement convaincant.

A quick sketch made with Gimp where I try a convincing pen effect.

En employant cette technique, j'ai réalisé un p'tit nu vaguement érotique :

I kept using the pen effect to draw a quick nude:

Pour finir, deux concepts art pour un projet de longue date dont j'ignore s'il s'agira d'un jeux-vidéo, d'une BD ou d'un roman illustré...

Finally, two chara design for a long run project which I don't know yet if it will be a video game, a comic book, or an illustrated novel.

Logiciel libre

Free software

Un petit résumé en français des commits de ce mois-ci.

A little summary in french of the commits made this month.

  • Relecture de la documentation assuré par Jérémy, merci à lui !
  • Rédaction d'une feuille de références des patterns reconnu par VenC.
  • Correction d'une erreur dans la gestion des variables contextuelle
  • Ajout d'une méthode d'encodage par défaut.
  • Amélioration du thème Académik.
  • Ajout d'un troisième paramètre aux fonctions get_*_metadata_if_exists.
  • Ajout d'un chapitre sur le chargeur de script JS.

À noter que j'ai pris du temps pour monter des benchmarks comparatif entre les différents générateur de site statiques. J'ai finalement abandonné ce mois-ci la conception de ceux là du fait de la trop grande différence conceptuel et logique de chacun de ces générateurs de site. Je me concentrerais donc à l'avenir sur la mesure seul des performances de VenC.

It should be noted that I take considerable amount of time to build up comparative benchmark between VenC and some popular static site generators. I finally let go this bad shitty side project of mine because of the substential conceptual and logical difference between theses softwares. That said, I will now focus on performance measurement related to VenC only.

Je suis tout de même content de voir qu'en terme de traitement pure, sans cache, VenC est globalement le plus rapide !

I'm still glad to see that VenC, on pure processing side, is most of the time faster than alternative softwares !

Pour conclure ce bilan, je vous souhaite une bonne année 2021 ! À très vite !

To conclude I wish you a happy new year! See you soon!

C'est parti pour le bilan du mois de novembre.

Here we go for the november assessment!

Art libre

Free Art

Ce mois-ci j'ai terminé la phase de charadesign du projet de BD L'Échangelin en partenariat avec Merle Bardenoir.

This month I've finished to design characters of the comicbook I'm working on with Merle Bardenoir.

Je commence maintenant à imaginer les décors de l'histoire.

I'm now starting to design the environments of this story.

J'ai également réalisé deux illustrations pour la documentation de VenC.

I've also made two illustrations for the VenC documentation

La dernière illustration de ce mois-ci est un cadeau pour une amie.

The last one is a computer drawing made as a gift for a friend.

Enfin, j'ai réalisé une nouvelle bande-dessiné.

At last, I've made a new comic.

Logiciel libre

Free Software

Un petit résumé en français des commits de ce mois-ci.

A little summary in french of the commits made this month.

  • Réécriture de benchmark comparatif plus précis et équitable entre VenC et Pelican.
  • Ajout d'un fichier de condiguration de thème au thème de la documentation.
  • Correction d'erreurs dans le code et la documentation.
  • Correction des feeds RSS et Atom.
  • Correction du style CSS de la doc qui ne fonctionnait pas avec Webkit?
  • Gestion de l'exception FileNotFoundError pendant l'exportation d'assets.
  • Ajout d'illustration à la page d'accueil de la doc.
  • Amélioration significative de VenC-Tree.js : Les listes hierarchiques se déplient automatiquement. Code nettoyé et optimisé.
  • Mise à jour des thèmes avec la variable override_theme_css_with permettant à un utilisateur de réécrire certaine propriété CSS d'un thème.
  • Chapitre consacré à VenC-Tree terminé.