Tordre le cou au moteur audio:
- 212 réponses
- 40 participants
- 29 045 vues
- 56 followers
Anonyme
521410
Sujet de la discussion Posté le 16/06/2006 à 20:33:57Tordre le cou au moteur audio:
Ok, je vais essayer de mettre dans ce thread un petit recapitulatif d'avis t d'infos récupérés a droite a gauche sur le net, afin de ruiner le vieux mythe du moteur audio. merci de ne pas poster de commentaires et de ne pas entamer de fumeux debats sans arguments ici.
pour ça, un autre thread:
Tordre le coup au moteur audio: polemiques et crtiques
pour ça, un autre thread:
Tordre le coup au moteur audio: polemiques et crtiques
Jay f.
4162
Squatteur·euse d’AF
Membre depuis 16 ans
61 Posté le 10/01/2015 à 22:04:38
Dr Pouet a déjà répondu à cette question :
Citation :
- la quasi-totalité des logiciels audio fait ses calculs en nombres 32 bits à virgule flottante, dont l'arrondi, et le reste, sont normalisés dans l'IEEE 754 mentionnée ci-dessus
- les calculs sont d'ailleurs faits par le microprocesseur (mais comme les microprocesseurs suivent l'IEEE 754, de toute façon...)
We're born naked, wet and hungry. Then things get worse.
http://soundcloud.com/jay-f-2
Anonyme
103
62 Posté le 11/01/2015 à 02:46:45
Merci pour ce sujet j'ai appris beaucoup sur le fonctionnement des softs audio en lisant les différents messages
Dr Pouet
52037
Membre d’honneur
Membre depuis 20 ans
63 Posté le 11/01/2015 à 06:10:50
Citation de Canem :
si, par exemple on applique un gain de 5,73 dB (au pif). là on multipliera tout par un nombre à virgule probablement assez long (du genre 1.975564654354354...) donc forcément il y aura des "arrondis". à ce moment là, il n'y a pas de distorsion, même très faible qui apparaissent?
Oui il y a des arrondis et donc des distorsions. Mais elles sont tellement faibles qu'elles seront totalement inaudibles, et en fait complètement masquées par le bruit apporté par les composants électroniques qui travaillent en analogique. Or comme notre cerveau ne prend pas plaisir à regarder des nombres (on n'est pas comme les personnages de Matrix ), il y a forcément un moment où on repasse en analogique (typiquement : convertisseur N/A, puis amplification, puis haut-parleurs).
Vu que depuis pas mal d'années les CPU ont de la marge de puissance par rapport au "minimum syndical pour mixer" (à l'époque des Beatles on se contentait de 16 voire 8 pistes !), si c'était problématique les concepteurs de logiciels audionumériques se seraient tous tournés vers des nombres avec davantage de décimales pour réduire ces distorsions. Par exemple il y a bien eu des modifications des logiciels pour :
- passer de représentations sur des nombres entiers à des nombres à virgule flottante (ça implique davantage de calculs)
- passer de 16 à 32 bits (idem : augmentation de la charge de calculs)
Mais depuis pas mal d'années, et à quelques exceptions, davantage motivées par du marketing, on peut dire que tous les logiciels restent en 32 bits virgule flottante (sauf ProTools, qui pour des raisons de limitations sur leur hardware, est obligé de rester en virgule fixe, mais avec des nombres environ sur 32 bits, et des astuces pour avoir à peu près la même "dynamique ou plage de valeurs petites/grandes" qu'en virgule flottante : en gros, un peu plus de détails sur les pistes indépendantes, des nombres de plus de 32 bits pendant le calcul de sommation, puis un peu moins de détails mais une valeur max plus grande sur les bus après sommation de pistes indépendantes et en revenant à 32 bits à virgule fixe ; en gros le logiciels se tape lui-même le "déplaçage de virgule" ).
Dr Pouet
52037
Membre d’honneur
Membre depuis 20 ans
64 Posté le 11/01/2015 à 07:02:40
Citation de Canem :
... et qui seraient gérées différemment par les différentes daw? j'espère que la question est claire et pas trop bête
Il faut distinguer deux étapes, et elles ont été évoquées dans diverses discussions sur AF, alors c'est peut-être à ces discussions que tu penses, ou ce sont elles qui engendrent cette question.
1- il faut convertir ce qui est affiché sur le curseur du DAW (disons -3.2dB) en un nombre à virgule flottante, qui sera le gain g
2- il faut multiplier chaque sample par ce gain g
Pour l'étape 2, c'est tellement simple que tous les DAW feront exactement pareil. Comme dit par Jay f. ci-dessus.
Pour l'étape 1, il y a quelques étapes de calcul. En fait : "-3,2" c'est le résultat de "vingt fois" le "logarithme en base 10 (= log et pas ln). Et il n'est pas certain que tous les DAW partent de ce "-3.2" affiché ; certains pourraient partir "de la distance en pixels entre la position actuelle du fader et la position zéro". Imaginons que : la course du fader fasse 300 pixels (=un quart d'écran), qu'en bas pour ce DAW ça corresponde à -120dB, et que le fader soit à 8 pixels en dessous du 0dB : 8/300*120 = 3,2000000000004 (*)
Du coup un DAW pourrait partir de 3,2000000000004 et l'autre de 3,2. Ensuite ils calculent le gain correspondant ( 10 puissance (-3,2/20) ), ou 10 puissance (-3,2000000000004/20).
Après le "bounce" dans le DAW ça ne donnera pas les mêmes fichiers : il y a ce 0,0000000000004 dB de différence sur le gain appliqué. Ce ne sera pas "le même mixage" ; mais deux mixages tellement proches que la différence est inaudible.
Si on affichait le gain en valeur absolue et pas en dB, on n'aurait moins ce genre de différence, mais on sait tous que ce ne serait pas parlant. Et en plus dans mon calcul (*) j'ai fait une règle de 3 = proportionnalité entre les pixels et les dB ; mais ça ne doit pas être ça : le fader fait des petites différences de dB quand il est près de zéro, puis des plus grosses. Donc c'est encore un peu plus compliqué.
C'est ce qui explique que dans certaines discussions on dit que les bounce de 2 DAW différents donnent des fichiers différents, mais ce sont les gains qui sont très légèrement différents, alors que après calcul du gain les 2 DAW appliquent ce gain de la même manière (valeur du sample x le gain).
C'est pour ça que pour simplifier mon tableau, j'ai pris 6dB, parce-que normalement quand le fader affiche ça, ça correspond à un gain de 2. Et ça simplifie les valeurs et leur calcul dans mon tableau.
Bon c'est un peu compliqué, alors j'espère que ce sera quand même à peu près clair.
Mais en résumé ce qui peut varier très légèrement entre 2 DAW, c'est le lien "position graphique du curseur, ou valeur affichée en dB sur seulement 2 chiffres" <---> valeur du gain par lequel on va multiplier les samples.
Ensuite c'est juste une multiplication. Et les arrondis de cette multiplication sont fixées par la norme IEEE 754.
Et les pan pot ajoute encore des possibilités d'avoir des différences :
- des différences importantes car il y a différentes "lois de pan" (généralement les DAW offrent ces différentes lois sous forme d'un réglage dans les options)
- et ensuite, comme un pan est un gain, on retombe sur cette incertitude entre "affichage sur le bouton" <---> valeur du gain.
Pour éviter ça, on pourrait imaginer d'afficher la valeur du gain sur une échelle linéaire (= non logarithmique), mais :
- ce serait très peu lisible
- ça n'aurait d'utilité que lors de tests "informatiques", comme il en est question dans ces sujets. Or l'interface d'un DAW a pour but de faciliter le mixage, pas de faire des "tests comparatifs" qui relèvent de l'informatique !
Là on en revient à la justification d'utiliser des échelles logarithmiques (= en dB) plutôt que linéaire. C'est une question sur le fonctionnement de l'oreille humaine (et de nos sens en général) ; ce n'est pas l'informatique qui nous dit que "c'est pratique d'avoir une valeur, en décibels, et sur seulement 2 chiffres" : c'était déjà comme ça sur les consoles analogiques !
Dr Pouet
52037
Membre d’honneur
Membre depuis 20 ans
65 Posté le 21/04/2018 à 11:38:01
Voilà par contre des explications qui portent vraiment sur le moteur audio :
Citation de darkmoon :
Citation de Hakim+K :
Quand le problème de la surcharge d'un seul cœur lorsqu'on joue une piste live avec un gros IV sera résolu ?
Ex : Je mets un Kontakt avec une grosse librairie sur une piste, je joue et bing j'ai un cœur qui monte au taquet (avec les grésillements et tout qui vont bien) alors que les 23 autres cœurs restent peinards à moins de 1%. P**ain, j'ai acheté un Mac pro "poubelle" 12 cœurs pour ça! Mon ancien Hackintosh faisait beaucoup mieux, forcement je n'avais que 4 cœurs mais chacun allait à 3.5GHz. Sur le mac pro, un cœur va 2.7GHz.
Ce n'est pas forcément anormal Hakim+K
Juste souligner un truc que j’ai déjà partagé à quelques reprises sur AF concernant le nombre de cœurs/threads dans un contexte MAO :
1- Cela concerne tous les DAW/STAN, tous les OS/plateforme (Win/Mac/Linux) et tous les plugins!
2- Oui, certains sont plus ou moins bien optimisés pour exploiter plus d’un cœur/thread, mais...
Dans un DAW/STAN certaines opérations ne peuvent tous simplement pas être calculé en parallèle par plusieurs cœurs/threads. C’est tout simplement impossible techniquement~physiquement à cause de l'implication du/de la notion de temps réel. C’est ce qui explique, dépendamment de la façon dont on travaille, qu’il est parfois plus efficace d’acquérir un CPU avec moins de cœurs, mais avec une plus haute cadence GHz.
Les divers traitements ne peuvent pas toujours s’effectuer en parallèle (tous les cœurs qui travaillent en même temps) dans les DAW. Autrement dit, l’ensemble des calculs que requièrent nos VSTI/VST n’est pas systématiquement dispatché de façon égale entre tous les cœurs de processeur. Parce que certaines chaines d’effets ne peuvent être traitées qu’en série (donc par un seul et unique cœur).
Par exemple, si vous avez dans une piste/tranche plusieurs effets (disons un EQ, suivit d’un comp, suivit d’un enhancer, etc.), le DAW ne peut pas utiliser n cœurs afin de traité simultanément ces 3 effets parce que c’est virtuellement impossible! Parce qu’avant de pouvoir calculer et appliquer le résultat du dernier effet, il doit nécessairement calculer le résultat du premier, du deuxième et du troisième. Du coup, quand un cœur/thread calcule le résultat du premier effet, il est impossible qu’un autre cœur/thread puisse effectuer le calcul de l’effet qui suit (dans une même chaine d’effet/tranche) au même instant t puisqu’il ne connaît pas encore le résultat de l’effet précédent! Pour résumer, toute piste audio ou VSTi qui est lié à une même chaine d’effets (piste/tranche/BUS/AUX) ne peut être traité que par un seul et unique cœur. Et c’est d’ailleurs aussi ce qui explique, même lorsqu’on a seulement une seule piste dans un DAW, que sa gauge d’utilisation CPU puisse parfois indiquer 99% (parce qu’un seul cœur est sollicité, disons, par des effets très gourmands sur la tranche correspondante) alors que le gestionnaire de l’OS, lui, indiquera bcp moins (disons 25%) puisque, lui, tient compte du fait qu’un seul des n cœurs (pour l’ensemble du système) est sollicité par un logiciel.
Par corollaire, nous pouvons donc en déduire que plus nous utilisons de BUS/AUX dans un DAW, plus nous lions ensemble des pistes/tranches qui se partagent alors une même « grande chaine d’effet ». Du coup, le DAW peut moins efficacement dispatcher et traiter de façon simultanée, au même instant t, les divers effets de cette « grande chaine » entre tous les cœurs/thread du CPU parce qu’il doit attendre que les premiers, dans l’ordre du temps, soient calculés avant de passer aux suivants!
Donc, dans certains projets, il vaut parfois mieux travailler en utilisant des pistes indépendantes plutôt que de router toutes les tranches dans un BUS commun. De cette façon, le DAW peut dispatcher et donc traiter (par plus d’un cœur/thread) simultanément, au même instant t, les chaines d’effets qui ne sont pas liés entres elles, ce qui fait que, parfois, même si l’on a bcp plus de VST d’ouverts dans le DAW, la charge sera répartie en plusieurs cœurs/thread et la gauge d’utilisation CPU indiquera un moindre pourcentage, même si cela semble paradoxal ou contre-intuitif à priori, qu’un autre projet utilisant moins de plugins, mais où ils sont tous lié dans un processus en série (de par un BUS commun).
La gauge CPU dans un DAW, contrairement à la gauge du gestionnaire de l’OS, n’indique pas forcément le total de tous les cœurs, mais le plus haut peak de n’importe quel des cœurs/thread utilisés à un instant t précis. Et cela est logique, parce que si un cœur/thread est sollicité à 99% du fait qu’un traitement qui ne peut se faire en parallèle le sollicite presque en entier, car ne pouvant pas utiliser les autres cœurs/thread simultanément, ben à quoi bon diviser le pourcentage par n cœur/thread et nous indiquer /n % puisque, de toute façon, à cet instant t précis, le seul cœur/thread utilisable~exploitable est à 99%! Le DAW est donc bel et bien à 99% de ses capacités de traitement à cet instant t précis puisqu’il ne peut pas exploiter les autres cœurs/thread
Autre exemple concret :
Imaginons une seule piste/tranche de guitare, pour jouer/s’amuser live (au clic du DAW). Ben, même si nous avons un Xeon 12 coeurs/24 threads @2.6GHz, si ce dernier (le seul cœur/thread exploitable dans ce projet) arrive au taquet avec tous les effets que nous ouvrons sur cette seule et unique tranche (effets traités nécessairement en série), nous aurons des glitchs/drops/underruns plus rapidement que si nous achetons un « simple » I7 7700K 4 coeurs/8threads @4,5GHz parce que le seul cœur/thread exploitable (dans cet exemple précis) possède près de 2GHz de plus!
Par contre, si nous ouvrons 12 VSTi ayant chacun leur propre tranche/piste et n’utilisant pas de BUS/AUX communs, là, le 12 coeurs/24 threads @2,6GHz sera probablement plus efficient (ainsi que pour faire du « rendering offline » vidéo, P. Ex.).
Pour de la MAO et surtout pour ceux que le temps réel (enregistrement d'instruments live, jeu/entrée de notes live avec clavier MIDI via VSTi) est très important et/ou qui doivent bosser avec des valeurs de buffer très basses, il est nettement préférable de prioriser l'achat d'une haute fréquence de CPU et non du nombre de cœurs/thread. Pour ceux qui composent à la souris dans le piano roll (ou par notation) et/ou qui écoutent/mixent sans jouer/enregistrer en temps réel (pouvant donc monter le buffer de leur carte son au max), un plus grand nombre de cœurs et préférable.
Mais dans les deux cas, il y a nécessairement un compromis : dans le premier, le CPU sera plus efficient en temps réel avec des valeur de buffer basses, mais pour mixer et écouter, il pourra gérer, au total, moins de VST/VSTi (à valeur de buffer identique élevé). Dans le second, se sera le contraire : moins performant en temps réel avec des valeurs de buffer basses, mais pouvant faire jouer (à valeur de buffer identique élevé) plus de VST/vsti que le premier.
Mais encore, tout ceci dépendamment de l'utilisation, ou non, du nombre de BUS/AUX qui créées des chaines de traitement en série.
[ Dernière édition du message le 21/04/2018 à 11:45:46 ]
Dr Pouet
52037
Membre d’honneur
Membre depuis 20 ans
66 Posté le 22/04/2018 à 13:55:30
Citation de Hakim+K :
Citation :Si les effets d’une même tranche étaient répartis sur différents cœurs, le cœur du deuxième effet attendrait la fin du calcul effectué sur le cœur du premier effet. Donc temporellement on ne gagne rien ; et en plus on rajouterait une communication et synchronisation, donc ce serait encore moins bon.
Non j'ai dit avant "chaque effets est réparti sur TOUS les coeurs", et tu continues à dire le coeur du 1er, le coeur du 2ème...
Alors je répète, TOUS les coeurs exécutent le 1er effet, puis TOUS les coeurs exécutent le 2ème effet, puis TOUS les coeurs exécutent le 3ème effet ... etc... et temporellement on y gagne beaucoup car 12 coeurs auront fini le boulot du 1er effet bien plus vite qu'un seul coeur, donc on passera au 2ème effet bien plus tôt. L'ordre du travail est respecté, je ne vois pas du tout ce que ton analogie de verni de tableau vient faire là.
Je ne suis pas sûr de bien comprendre ce que tu veux dire par : « tous les cœurs exécutent le 1er effet ».
Je l’interprète comme :
- le DAW traite les samples par paquets (de la taille du buffer choisie)
- on s’occupe d’abord du premier effet
- le cœur 1 calcule l’application de cet effet au premier sample
- en même temps le cœur 2 calcule l’application de cet effet au deuxième sample
Etc...
- et après on s’occera du deuxième effet
Etc...
Pour que ça marche, il faut que le cœur 2 n’ait pas besoin du résultat du calcul du cœur 1. Manque de pot, rien que pour une bête EQ (IIR), il faut justement le résultat sur le sample 1 pour calculer celui sur le sample 2... Et ce sera pareil pour beaucoup d’effets : pour une compression il faudra savoir si on est entré dans le mode « compression », depuis combien de temps (pour gérer l’attack ou release) etc...
Autrement dit : pour parallèliser ainsi des effets ou des instruments virtuels, il faut au minimum que l’algorithme s’y prête ; ce qui n’est pas souvent le cas. Et en plus, il n’y a guère que son concepteur qui peut savoir si l’algorithme est parallèlisable. Autrement dit, un logiciel (et en l’occurrence une STAN) ne peut pas répartir sur plusieurs cœurs un plug-in qui n’est pas déjà conçu comme ça. Soit le plug-in le fait déjà, soit la STAN (= DAW) ne pourra pas le faire.
[ Dernière édition du message le 22/04/2018 à 13:57:51 ]
Dr Pouet
52037
Membre d’honneur
Membre depuis 20 ans
67 Posté le 22/04/2018 à 14:08:47
Citation :
Et je répète que sur Logic il n'y a pas le problème quand on bourre d'effets une piste, c'est bien qu'il y a eu un progrès.
D’un point de vue théorique on peut créer un thread par tranche de console, et donc utiliser autant de cœurs.
Sauf que historiquement Logic n’était pas conçu comme ça (et ça devait être pareil pour les autres STAN). Cette ancienne conception était normale : très rares étaient les utilisateurs avec des machines multiprocesseurs ; et en plus, créer des threads et répartir les traitements dedans est coûteux en ressources CPU, donc ça aurait été moins performant.
Logic le faisait uniquement pour les bus. C’est pour ça que si on avait un processeur multicœur, il était conseillé d’utiliser plusieurs bus afin de répartir la charge de calcul.
Ensuite les fabricants de processeurs n’ont plus réussi à augmenter la vitesse d’horloge, et la solution pour continuer à rendre les ordinateurs plus puissants a été de multiplier les coeurs, autrement dit de faire que toute machine soit multiprocesseur.
Il a donc fallu adapter les STAN pour bien exploiter les processeurs multicœurs. Logic a dû être adapté un peu moins rapidement et après les autres STAN. Depuis la version 10.3.3 il n’y a plus besoin de créer des bus pour exploiter davantage de cœurs ; j’imagine que désormais Logic crée un thread par tranche, les threads pouvant être répartis sur différents cœurs.
[ Dernière édition du message le 22/04/2018 à 14:12:23 ]
Dr Pouet
52037
Membre d’honneur
Membre depuis 20 ans
68 Posté le 22/04/2018 à 14:20:00
Citation :
Darkmoon, je reste pas d'accord, mais je ne vais pas entrer dans les détails. Inutile de m'expliquer que la chronologie impose de faire un calcul puis le suivant. Vous raisonnez en interruption, dans le cas où le processor réalise une opération suite à une sollicitation du programme. Vous n'avez manifestement pas compris ce que je nomme taches cycliques déterministes
(...)
Après je prends le pari que ce problème va disparaitre car on va manifestement vers la multiplication des coeurs et on peut tous faire en programmation.
On ne peut pas faire en programmation des choses qui sont impossibles dans leur nature même.
Si on a :
y = f( g( x ) )
On est obligé d’attendre le résultat, et donc la fin du calcul de g(x), pour pouvoir appliquer f( ).
Là, y est ce qui sort de la tranche de console virtuelle d’une DAW, g est le premier effet de la tranche, f le second et x est le sample en cours de traitement.
De plus, comme dit dans mon message ci-dessus, supposons que les samples successifs x1 x2 x3 x4... engendrent y1 y2 y3 y4. Comme on a souvent besoin de y1, en plus de x2, pour calculer y2, on ne peut pas non plus parallèliser les calculs de y1 y2 y3 et y4.
[ Dernière édition du message le 22/04/2018 à 17:14:26 ]
Darkmoon
4068
Squatteur·euse d’AF
Membre depuis 20 ans
69 Posté le 22/04/2018 à 16:48:14
Citation de Dr :
On ne peut pas faire en programmation des choses qui sont impossibles dans leur nature même.
Si on a :
y = f( g( x ) )
On est obligé d’attendre le résultat, et donc la fin du calcul de g(x) pour pouvoir appliquer f( ).
Voilà!
C'est ce que j'ai tenté d'expliquer à Hakim en simplifiant avec un bête calcul (2+2), mais il ne semble pas piger. Ça n'a rien à voir avec Logic, car le principe demeure le même avec des formules math à calculer. Peu importe le domaine d'application (audio, image, vidéo, 3D, recherche, etc.) et le logiciel, il est tout simplement impossible (ou contre-productif) de partager entre plusieurs threads des lignes de codes/calculs qui ne sont pas indépendantes les unes des autres.
Ce que Hakim ne pige pas, c'est que peu de (voir aucune) lignes de code (celles qui concernent le traitement du son) sont indépendante les unes des autres dans le code qui compose un plugin. Du coup, même au niveau du code, l'aspect de l'ordre temporel des opérations est un impératif.
Les plugins qui sont « multithreading », comme Kontakt, peuvent exploiter plus d'un thread uniquement quand certaines de leurs opérations ne sont pas liées/dépendantes entre elles. Par exemple, quand on ouvre plusieurs instruments dans une même instance et que ces derniers ne se partagent pas d'effets dans les tranches de la table de Konatkt, ben, n'ayant aucune dépendance les uns envers les autres, ils peuvent être (en principe) traités par différents threads. Par contre, toutes les fonctions qui concernent un seul instrument (dans la fenêtre d'édition avancée de Kontakt, par exemple, entre autres, avec leurs effets respectifs) sont, elles, dépendantes d'un ordre de procédure concernant les calculs à effectuer.
Le principe demeure le même avec un plugin de synthétiseur. P. Ex., les différents oscillateurs peuvent être traité en parallèle (en principe), mais dès que leur « signal » respectif se rejoignent tous ensemble pour passer dans un des effets global du synthétiseur (par exemple, un chorus/reverbe), une « dépendance » (et un ordre temporel) se créer du fait que le chorus/reverbe ne peuvent être calculer simultanément que les oscillateurs du fait que ces effets doivent attendre le résultat des calculs traitant les oscillateurs avant de pouvoir être calculé. Du coup, aucun plugin le moindrement complexe (comportant des effets, etc. Donc aussi bien dire tous les VSTi de synthé actuel) ne peut jamais être totalement traité (toutes ses lignes de code) de façon simultanée (comme la vision simpliste d'Hakim) par plusieurs threads puisque, de toute façon, le ou les threads doivent attendre certains calculs ayant un ordre dans une « chaine en série »!
C'est juste ce principe logique qu'il est nécessaire de piger. Ça n'a rien à voir avec un DAW en particulier ni avec aucun logiciel ou plugin, c'est un principe logique universel!
"Si t'enregistres à Poudlard, avec l'ingé son Dumbledore, les lois physiques tu peux t'en foutre. Mais dans l'monde réel, les lois physiques, les mesures, le dBFS, tout ça existe bel et bien." youtou
Hakim+K
2179
AFicionado·a
Membre depuis 19 ans
70 Posté le 23/04/2018 à 08:54:33
Citation :
C'est juste ce principe logique qu'il est nécessaire de piger.
On la piger depuis longtemps, ça me saoule quand tu me parles comme à un collégien avec ton y=f(g(x)), ah non je ne semble pas piger ça ... n'importe qu'elle imbécile comprend que dans un calcul on fait d'abord les calculs intermédiaires dans l'ordre adéquat...
Sauf que la programmation ce n'est pas juste la réplication de calculs. Il existe aujourd'hui des techniques qui permettent de mutualiser les cœurs pour fabriquer une sorte de gros cœur, du coup ta fonction g(x) est plus vite réalisé avant de devoir appliquer f. Par ailleurs en programmation orienté objet, selon le principe de substitution de Liskov il est possible (même si cela vous semble une aberration) d'effectuer le calcul final Y sans avoir le résultat de g(x) en le remplaçant par une forte probabilité puis en le substituant à la toute fin (en gros hein, c'est beaucoup plus bizarre que ça en réalité).
Non la programmation n'est pas (plus) la réplication en ligne de code de processus mathématiques. Mais je ne suis pas assez calé pour vous expliquer la programmation orienté objet, qui par ailleurs est à la base du concept d'AI.
Je parie juste que le problème initial de la surcharge single-core en temps réel va être résolu... ce n'est qu'une question de temps.
Citation :
On ne peut pas faire en programmation des choses qui sont impossibles dans leur nature même.
Si on le peut, des tas de choses impossibles par calcul sont réalisées aujourd'hui par des programmes.
Citation :
Il a donc fallu adapter les STAN pour bien exploiter les processeurs multicœurs. Logic a dû être adapté un peu moins rapidement et après les autres STAN. Depuis la version 10.3.3 il n’y a plus besoin de créer des bus pour exploiter davantage de cœurs ; j’imagine que désormais Logic crée un thread par tranche, les threads pouvant être répartis sur différents cœurs.
Non cette explication n'est pas suffisante. Logic crée peut-être un thread par tranche mais cela n'explique comment ce fait t'il que sur une seule et même tranche jouée en live aujourd'hui je peux mettre 10 effets de Logic sans constater de surcharge alors que j'en avais autrefois avec 4 ou 5 (selon les types hein). Je reste pourtant sur un unique thread traité par un seul cœur, selon toi, ... moi je suppose que ça fonctionne autrement aujourd'hui, mais je ne peux pas expliquer comment. Je suppose que tous les effets de Logic on été ré-écrit pour utiliser le multi-coeurs même lorsqu'ils sont en cascade. Et je ne crois pas qu'il soit nécessaire d'attendre la fin du calcul du 1er effet pour appliquer le 2ème effet, là encore il y a des mécanismes de substitution et/ou d'anticipation. Surtout avec des effets lourds, je n'imagine pas le process attendre bêtement la fin du traitement d'une grosse reverb à convolution avant de passer à la suite, même si c'est le même signal qui les traverse. On est beaucoup plus malin aujourd'hui. La programmation n'est pas forcement répliquer le comportement physique de la réalité, on n'est pas obliger de faire comme si on branchait des effets hardware en cascade dans la réalité. Vous raisonnez comme si la programmation était la copie de phénomènes réelles.
Par contre les effets et IVs des autres constructeurs ne sont pas forcement écrit de la bonne façon (pour Logic), d'où le fait qu'il n'y a pas de surcharge avec les effets de Logic alors qu'il peut (pas forcement hein) y en avoir avoir les effets d'autres marques (notamment avec NI et selon ma petite expérience pas avec IKM).
J'accepte juste qu'on peut faire en programmation des choses qui me dépassent.
Citation :
Les plugins qui sont « multithreading », comme Kontakt, peuvent exploiter plus d'un thread uniquement quand certaines de leurs opérations ne sont pas liées/dépendantes entre elles.
C'est peut-être vrai pour Kontakt (d'où les problèmes) mais ce n'est pas incontournable. Si le multi-threading n'est pas capable de contourner l'interdépendance des opérations (car presque tout est interdépendant) autant dire qu'il n'a pas d'avenir, pourtant...
[ Dernière édition du message le 23/04/2018 à 09:51:30 ]
- < Liste des sujets
- Charte