Générateur de musique API Web Audio Expérience débutant

Contexte et contexte


J'ai 62 ans. Il y a environ trois ans, j'ai décidé d'essayer d'écrire un système assez complexe, avant qu'il n'y avait que 20 lignes de base en 1981, quand 3 mois d'informatique nous ont coincés en 5e année de la faculté de radio (NSTU, anciennement NETI). Le professionnel est considéré comme celui qui possède le sujet et gagne de l'argent, donc en fait je suis un débutant.

D'un autre côté, j'ai eu affaire à des algorithmes liés à la musique pendant la majeure partie de ma vie, j'ai trouvé le processus de développement, le matériel et les logiciels et, autant que j'ai pu, j'y ai participé. En 1978, il a développé et assemblé le synthétiseur Mini-Moog (je crois que c'était le premier dans l'Oural), a développé et produit la première dans la carte son de l'URSS avec un synthétiseur pour Agat7 (9) - l'analogue soviétique d'Apple II, a conçu le module de synthèse FM pour l'une des usines, en collaboration avec Cakewalk (USA), PGMusic (Canada), PowerFX (Suède) - plus souvent dans le schéma: «les idées et la mise en œuvre viennent de nous, le budget vient d'eux», a participé à des expositions musicales internationales MusikMesse (Allemagne), NAMM (USA), etc.Tout cela n'est qu'une petite partie de ce que j'ai fait, bien sûr, pas seul, mais avec l'équipe que j'avais réunie à un moment donné.

De plus, il a participé activement à l'organisation du Département d'Informatique (1er en URSS) au Conservatoire de Novossibirsk. De 1983 à 2004, il a également enseigné l'acoustique musicale, l'informatique, l'ingénierie du son et préparé une thèse sur la modélisation informatique de la performance musicale (ISBN 5-9294-0023-7) ...

Oui, tout a commencé avec des moniteurs en noir et blanc, des disquettes, 256 ko de RAM, un PC personnel de montage musical ... Les musiciens ont dû tout expliquer sur leurs doigts, car pour la plupart ces gens merveilleux sont loin de tout strict et ordonné. Et si un tromboniste était capable de remplir une page de texte, il était cool, et le violoncelliste qui a programmé Chizhik-faon n'était qu'une star. Soit dit en passant, certains enseignants ont activement résisté à tout ce sujet - mais essayons maintenant de les priver d'ordinateurs!

Cette expérience est devenue très utile pour mon développement, ma formation et mon approfondissement du sujet. L'informatique, comme l'éducation physique, était obligatoire pour toutes les facultés et un flux constant d'étudiants nous a permis de mener de nombreux tests, expériences en psychoacoustique, reconnaissance de formes, communiquer avec des musiciens théoriques et ... comprendre qu'ils n'ont pratiquement pas de données et de formules exactes. Au moins ceux dont le développeur d'équipements et de programmes musicaux a besoin. Les musicologues, malheureusement, sont essentiellement des historiens qui décrivent le passé. S'ils avaient de la science, alors ... probablement, se rendre à leur consultation serait plus que le maire d'une ville de plus d'un million d'habitants. Combien un musicien célèbre paierait-il pour une «formule à succès» et une «prévision des ventes»? ..

Alors, disons que nous devons obtenir des réponses qui fonctionneront pour de tels algorithmes, par exemple:

a) une mélodie a sonné (enfin, même si elle a déjà été enregistrée avec des "notes" en MIDI), comment déterminer où se trouve la tonique? - Le musicien le fera facilement, mais une réponse claire (algorithme) ne vous donnera pas;

b) il y a une mélodie, comment choisir les bons accords pour elle? .. Oui, le chef de chœur le fera probablement mieux que le chanteur, mais les deux, même s'ils donnent des instructions, ne sont pas très clairs. Bien sûr, de leur point de vue, ce sera strict. Ce n'est que lorsque l'ingénieur commencera à le traduire en algorithme qu'il y aura plusieurs difficultés à surmonter indéfinies ...

c) ou le batteur joue-t-il quelque chose de modérément compliqué, ou le saxophoniste improvise - comment «décoller» la taille, les battements forts / faibles, le début / la fin d'une phrase musicale, le ralentissement / l'accélération expressive? Il ne s'agit pas d'EDM (Electronic Dance Music). Le musicien-interprète ressent et respecte les "règles" véhiculées par l'enseignant de la manière "fais comme moi", mais un ingénieur a besoin de chiffres, de graphiques, de proportions, et tout cela est pratiquement impossible à obtenir de l'artiste ou du musicologue-théoricien.

Mais c'est sur de telles questions que je voulais trouver des réponses. En effet, une œuvre à consonance réelle peut avoir un modèle grossier - une composition musicale au format MIDI, c'est-à-dire essentiellement une «partition électronique». Ce sont des données exactes, mais comment travailler avec elles? En général, le plus intéressant pour moi à la fin était l'analyse et la conversion des données MIDI et des algorithmes * tels que:

Modélisation des performances 1) ,
Morphing 2) ,
Génération de musique 3)

Et pour tout cela, déterminer la clé, l'auto-harmonisation, la formulation automatique ne sont que des sous-tâches distinctes ... Au fil du temps, des réponses acceptables ont été reçues pour tous ces sujets, des algorithmes et des programmes ont été créés qui il est même entré dans Cakewalk / Sonar.

* Un petit décryptage:

1) analyse des données MIDI quantifiées, reconnaissance des «objets musicaux» (phrases, figures) et de leur changement dans la partie Velocity, NoteOn, Duration, ainsi que l'imposition des courbes Tempo, PitchWeel, Expression, Modulation afin de tirer un meilleur parti des ressources du synthétiseur et atteindre une plus grande expressivité.

2) analyse à la fois de l'ensemble du travail et des parties individuelles dans le but de les transformer d'une taille à une autre (par exemple, du 4/4 au 6/8 ou 7/4), d'une harmonie / harmonie à d'autres. De plus, que le résultat serait "comestible" - tel que, de l'avis du musicien, c'est la musique "correcte" sans violations évidentes.

3) génération de «partition électronique» - un système qui, lors de l'utilisation de 1) et 2) et de la lecture de données MIDI, produirait une sortie similaire en son à celle produite par un musicien, un arrangeur utilisant un ordinateur ou un instrument live. Ceux. pas quelque chose d'abstrait, généré par l'IA, non seulement pour une démonstration dans un cercle restreint de spécialistes, mais complètement «humain» et adapté à l'utilisation.

Dans cette longue histoire, il y a eu pas mal de moments amusants, si vous regardez du présent, par exemple, pour le premier 386 PC, j'ai dû donner 2 nouveaux moscovites «Chignon» (IL 2715), chacun de 290 mille roubles. Ou, comme un jardin d' hiver, je presque acquis une utilisé Minsk 32 dans la branche sibérienne de l'Académie des sciences - Je pense que ce monstre, plus faible qu'un smartphone, semblait occuper 60-80 m 2 et l' électricité consommée, probablement comme un bar + sauna ...

Ainsi, mes employés ont programmé (nous avons travaillé avec Z80, MOS 6502, "Electronics-60", sur les premiers Win PC de la RDA, avec des processeurs de signaux TMS et Analog Devices ...), chaque jour j'ai vu "krakozyabra" sur les écrans et j'ai pensé que tous (les programmeurs) ne sont "pas de ce monde". Bien que la partition musicale ne soit pas plus facile! Et après tout, certains musiciens entendent de la musique, regardent les notes, et obtiennent même un plaisir esthétique s'ils l'aiment! En général, il me semblait que tous ceux qui écrivent le code sont des génies et ce n'est pas du tout le mien ... Mais, comme l'avenir l'a montré, je me suis trompé. Je ne peux pas dire que beaucoup de temps a été perdu, mais le sort de nombreux projets aurait probablement été complètement différent ...

Première expérience pratique


Par expérience, j'ai appris que les choses les plus «difficiles» et «désagréables» pour un programmeur sont 2 choses: les GUI et les interfaces (c'est-à-dire passer d'un environnement à un autre. Par exemple, recevoir des données MIDI d'un appareil externe), en particulier lorsque Il n'y a pas de solutions toutes faites adaptées.

J'ai d'abord pris AutoPlay Media Studio (Indigo Rose Software) - c'est un peu un concepteur pour les nuls. Initialement, apparemment conçu pour créer rapidement un CD, un menu DVD et autorun.exe. Mais il s'est avéré qu'il y a un océan de fonctions, et à l'intérieur (sur LUA), vous pouvez presque tout faire: animation, jouer à ogg. Ainsi, la plupart du travail "désagréable" (à propos, je pense, les nouveaux arrivants s'arrêtent juste à de tels moments) n'a pas pu être fait - tout est prêt.

En conséquence, pendant 2 mois à la maison après les heures d'ouverture, j'ai écrit un analogue d'un programme de formation musicale que nous avons développé et livré officiellement. De plus, avec une autre interface graphique, des fonctionnalités plus intéressantes - il est bon de créer du contenu audio et graphique et de tester pour moi n'est pas difficile. Il l'a montré au bureau et a demandé à l'un des présentateurs combien de temps il lui fallait pour réaliser une telle version, la réponse a été 6 mois! Ici, apparemment, j'ai pensé pour la première fois: peut-être que je ne devrais pas seulement me livrer à moi-même, mais commencer à étudier quelque chose et essayer de faire quelque chose de sérieux et ... ai-je organisé le travail correctement. En fait, sa réponse était honnête - simplement, «ils» n'utiliseraient pas le constructeur, mais ils écriraient tout eux-mêmes.

Depuis 2009, je consacre une partie de mon temps à travailler dans un studio d'enregistrement et à créer des publicités vidéo. Une fois, un ami a demandé s'il était possible de faire rapidement (et pas cher) une centaine de clips d'une minute (apparemment pour une promotion sur YouTube). Aime terriblement ces tâches! (Au fait, je sais depuis longtemps que si un programmeur est obligé de faire quelque chose de pas très créatif 3 fois, il écrira un script). J'ai demandé aux programmeurs, et s'il existe un tel programme, que peut-il lui-même "appuyer" sur les boutons à l'écran? Wow, c'est AutoIt!

En général, pour le plaisir, j'ai écrit un script qui:

  1. Lancement d'Opera, ouverture du site d'une entreprise (semble-t-il néerlandaise) spécialisée dans la synthèse vocale;
  2. Sur la page, j'ai défilé jusqu'à RU (voix agissant en russe);
  3. ouvert un fichier * .txt dans le Bloc-notes, où 20-30 blagues ont été copiées à l'avance à partir du réseau, paragraphes;
  4. copié une blague, collé dans le champ sur le site;
  5. Lancement de SoundForge sur disque, et sur le site activé la lecture;
  6. enregistré et sauvegardé le résultat dans un dossier en mp3 avec le nom - "numéro de série + les 15 premiers caractères du texte de la blague elle-même".

Cela a fonctionné et j'étais heureux quand j'étais enfant. Après cela, j'ai dit à mon ami - il n'y a aucun problème à faire 100 clips bon marché (de bonne qualité), il suffit de prendre des photos, de la musique, des titres, des sous-titres, des descriptions, etc. - Je vais tout mettre en ordre (en taille, en couleur), le mettre dans des dossiers, faire un modèle + Je vais déterminer ses variations (au hasard!) Et ... Je peux vous faire non pas 100, mais 200 de ces clips (dans Vegas Pro avec AutoIt c'est facile), en les regardant de manière sélective, et vous choisirez déjà la bonne quantité pour vous-même ... Vous n'aviez pas à faire tout cela, mais merci pour sa question!

Plus tard, j'ai progressivement commencé à corriger quelque chose sur le site, à lire quelque chose, à essayer quelque chose pour l'intérêt sportif. En particulier, faire des scripts sur JavaScript / CSS pour l'animation simple nécessaire à la création de vidéo. Ainsi, quelques idées générales et un peu d'expérience sont apparues en PHP, HTML, jQuery, JavaScript, CSS, MySQL. Les «crack-overs» ont presque disparu et j'ai cessé d'avoir peur de ce thème même de la «programmation». Le dernier tournant par rapport à elle et à ses capacités s'est produit lorsque j'ai compris 2 points:

  • toute cette sphère est un monde sans fin et mĂŞme un programmeur fort ne rĂ©pondra pas toujours Ă  la question si ce n'est pas son domaine. Comme dans tout autre domaine. En gĂ©nĂ©ral - oui, eh bien, et les nuances - recherchez un spĂ©cialiste Ă©troit, mais plutĂ´t creusez-vous. Heureusement, il existe un rĂ©seau.
  • J'ai rĂ©solu 99% des questions que j'avais pendant le dĂ©veloppement moi-mĂŞme, et parfois plus efficacement que dans les exemples trouvĂ©s sur Internet. En mĂŞme temps, je comprends que par le style d'Ă©criture, mon code pourrait ĂŞtre affreux.

Générateur de musique


Je ne me souviens pas comment je suis tombé sur l'API Web Audio, à ce moment-là je n'avais pas de LLC, d'IP ou d'équipe, mais après 2-3 expériences, quand le «son est parti», j'ai basculé au plus sérieux pour moi le projet est un générateur de musique (que j'appelle maintenant AlexAr ). En effet, dans Web Audio, il y avait tout ce qu'il fallait - des générateurs, des filtres, des enveloppes, des mélangeurs, un processeur (en C ++), et jQuery, JavaScript et CSS nous ont permis de résoudre tous les problèmes avec l'interface graphique. En fait, dans Web Audio, vous pouvez faire, comme il me semble, à la fois le traitement et la synthèse du son de toute complexité.

Ici, le vrai travail a commencé, presque, comme chez les jeunes, quand vous avez 25 ans et plus. 3-4 fois j'ai recommencé, jetant une version du système et en récupérant une nouvelle. Parfois, changer radicalement l'approche de la conception d'un module particulier. En même temps, j'ai fait beaucoup d'expériences et testé de nouveaux algorithmes que je n'avais pas utilisés auparavant. Il a fait plusieurs découvertes pour lui-même qui ne se seraient pas produites sans démarrer le système. En particulier, en psychoacoustique, dans la perception de la «similitude» des morceaux de musique - quels paramètres donneront une musique «différente», et qui, avec leurs différences formelles, sont «les mêmes» à l'oreille. Certaines choses très utiles ont été trouvées dans l'application de l'harmonie, dans l'imitation dans la synthèse des accords pincés, dans le phrasé lors du changement d'accords et dans une meilleure compréhension de la «précision du style». Il est possible que tout cela soit ouvert et décrit. Mais dans la vie ça arrive souventce qui est plus facile (et plus utile) de penser à vous.

Oui, ce serait formidable si l'API Web Audio permettait la liaison, l'utilisation de VSTi pour la synthèse ou autre chose prêt. D'un autre côté, il y a eu une occasion de rappeler la jeunesse et d'écrire tous les synthétiseurs nécessaires, d'inventer, d'optimiser, tant dans la structure que dans les algorithmes et le contenu. Presque, comme autrefois, quand un artiste non seulement peignait, mais peignait lui-même ...

En conséquence, après plusieurs pots-de-vin et modifications, des modernisations (ce qui était une bonne école et un bon entraînement cérébral), le système est devenu stable et pleinement opérationnel. Eh bien, pas sous la forme, bien sûr, quand il peut être transféré à un tiers. C'est à peu près comme une voiture faite maison qui "obéit" seulement au créateur et si elle casse, il n'y aura personne pour la réparer ...

image

En général, la composition finie pendant 4-5 minutes, elle crée en 40-50 secondes. (sur Intel Core i5, 2,8 GHz, 12 Go de RAM). J'ai demandé une tâche, par exemple, «faire 100 pistes de danse», je suis passé au déjeuner ou je suis allé me ​​promener. Il est arrivé dans une heure et, si le système ne tombait pas en panne, il a écouté et déterminé %% de la pertinence du résultat. Ensuite, j'ai changé quelque chose dans les paramètres et j'ai recommencé. Si je me comportais «raisonnablement», c'est-à-dire définir des paramètres qui n'ont pas conduit à un flou du style (par exemple, cela se produira si l'harmonie jazz est appliquée dans EDM), alors 90-95% des pistes semblaient assez décentes, et sinon, alors 60-70 %% pourraient être jetés.

Le système a fonctionné, vous pouvez vous en réjouir, mais il semble que des problèmes ridicules mais réels aient commencé: "Comment puis-je écouter autant de musique?" Et la réalisation d'un moment de plus: "Et qui est l'auteur?" Un bon ami "dans le sujet", a déclaré que "l'auteur est un ordinateur, incl. il ne vous appartient pas "... Si c'est le cas, alors c'est dommage, j'y ai entré des airs, des phrases, des harmonies, des formes, mis en place quelques centaines de paramètres, où parfois 5 ms se reflètent dans le résultat, et le système n'a généré que le résultat, toujours selon l'algorithme, qui J'y ai investi ... J'ai cherché sur le réseau - je n'ai pas compris que dans un cas similaire avec le droit d'auteur ...

En conséquence, j'ai sorti environ 3500 chansons avec un temps de jeu total de plus de 200 heures et j'ai arrêté, ou plutôt changé - je prévois de lancer SongModeler - un générateur d'arrangements en ligne basé sur des approches développées dans AlexAr. Eh bien, des exemples de génération automatique de musique dans AlexAr peuvent être trouvés ici .

Pour les auditeurs trop pointilleux, je tiens à dire que j'ai passé plus de temps sur la programmation, l'harmonie, la mélodie, la forme (c'est-à-dire les notes), mais la synthèse et le mixage, bien sûr, peuvent être bien meilleurs. Au final, j'ai vérifié les idées, l'approche elle-même - c'est vrai. Et pour de tels projets, une équipe est nécessaire, les solitaires abordent rarement des sujets interdisciplinaires. Il est vrai, par contre, que le travail devient beaucoup plus confortable lorsqu'il n'y a personne «ni au-dessus ni en dessous de vous». Mais la vraie ironie est que lorsque j'avais une équipe et des ressources, je ne visais pas quelque chose comme ça parce que je pensais que c'était trop compliqué.

Déjà quelque part au milieu de travailler sur AlexAr, j'ai réalisé qu'il était tout à fait possible que si je commençais à programmer plus tôt, 10 programmeurs (parfois j'avais beaucoup plus de personnel) pourraient être remplacés par trois :

Moi-mĂŞme (conception, programmation, tests, contenu);
très intelligent - aux goulots d'étranglement, aux approches du renseignement, aux nouvelles bibliothèques, aux services (immédiatement après le lycée ou de 3 à 4 cours);
bourreau de travail productif pour les tâches routinières, sans imagination, qui ne se démange pas pour appliquer aujourd'hui ce qui est apparu hier.

Je suis sûr que la tâche serait résolue plus rapidement et combien de nerfs et d'argent seraient économisés! D'où vient l'épargne? Donc, avant le déjeuner, je me suis assis pour tester quelque chose - "eh bien, le bouton n'est pas pratique, et l'indicateur aurait été déplacé de plus en plus vers la droite." OK - je me suis assis et l'ai fait en une demi-heure, l'ambiance était de 5+. Et comment cela serait-il décidé plus tôt dans mon bureau avec l'équipe, quand vous n'écrivez pas vous-même? Au début, je demandais combien de temps cela prendrait, puis je le dessinais dans PhotoShop, comptais les pixels, écrivais un savoir traditionnel, l'incluais dans le plan, attendais quelques jours ou ... refusais du tout - ça marche, c'est déjà bon. Et donc constamment.

Conclusions et motivation


Je ne sais pas avec quelle harmonie je serai en mesure de formuler les conclusions réelles, mais pas encore dans mon domaine, mais je vais essayer.

  1. , . , , , , . , . , 10 , ( ?).
  2. — . , - macOS Android, . , , . , .
  3. GUI , — . , - . , , -.
  4. - - , - — , , . , , - — . — «». 7 , 6 . — , — . , - . ? — , . - , « » — .. , «» .
  5. , , (software engineer, !) . , , ( ) -, . , , engineer, , «, », .. «Copy Paste».
  6. , , «» , , - . . - … , . — . — . , , , , , .
  7. — , . , , IDE, . , , — NotePad++, FireFox ZIP- — , . «» . , « », .
  8. ? . , , — UnDo/ReDo. JavaScript , , — . , , , . UnDo — , , , .

En général, il me semble que les adultes, en particulier ceux qui ont une formation d'ingénieur et qui n'ont pas été impliqués dans la programmation dans la vie, devraient essayer. Si vous connaissez votre sujet, alors 50% est déjà fait. Vous avez besoin de logique, d'une compréhension claire de la «physique, de la nature» de votre région, et cela, très probablement, vous l'avez. Il n'y a rien à craindre dans les «manteaux tordus» et JavaScript est beaucoup plus simple que le russe ou l'anglais. En fin de compte, vous ne deviendrez peut-être pas un véritable ingénieur logiciel, mais ces compétences, même petites, ajouteront une autre option à vos qualifications en ingénierie. Oui, vous cesserez immédiatement de considérer les informaticiens comme des personnes avec un halo au-dessus de leur tête, et vous pourrez définir une tâche pour eux à un niveau plus compétent. Après tout, ils se rendent dans votre région, où vous êtes un pro. Ou peut-être que vous mettez en œuvre votre projet sur vos données, dont vous rêvez depuis longtemps,mais les conditions de sa mise en œuvre n’ont pas fonctionné - je ne sais pas, je pense que j’ai eu de la chance car je n’avais pas peur d’essayer. Et de toute façon - la programmation pour un ingénieur, C'EST LA LIBERTÉ!

Meilleurs voeux Ă  tous.

PS: Si quelqu'un s'intéresse à l'histoire de mon travail au fil des ans sous une forme plus détaillée, alors c'est ici .

All Articles