Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2006-09-29 16:12:32 [patch] Pitch shifting / Time stretching granulaire [max/msp]

Staross
membre
Date d'inscription: 2008-04-03
Messages: 322

[patch] Pitch shifting / Time stretching granulaire [max/msp]



Le principe de ce patch c'est de prendre un sample, de le découper en petit morceaux qui soit vont se recouvrir un peu, donc certaines parties du samples seront jouée plusieurs fois et ont aura une expansion temporelle:

ABCDEF

-> AABBCCDDEEFF

Soit seront espacés, et certaines parties du sample ne seront pas jouée et ont aura une compression temporelle :

ABCDEF

-> ACE

Pour que cela sonne correctement on va appliquer à chaque morceau de sample (grain) une envellope d'amplitude triangulaire, qui commence à zero, monte jusqu'à 1 avec une pente de 1 et redescent à 0.

http://codelab.fr/up/env-tri.gif

De plus on va enchainer les grains (avec un metro) de façon à ce que l'envellope suivante commence au moment ou la précédente est au son maximum, comme ça on a une amplitude constante et pas de "trous". Comme ça :

http://codelab.fr/up/env-enchainement.gif

Pour parler un peu de l'implémentation dans max, on va utiliser un [groove~] pour le sample, et ce qu'on voit sur le dessin, c'est que l'on a besoin que de 2 [groove~] (y'a jamais plus de deux envellope/sample en même temps), simplement quand l'envellope est finie on relance le groove avec une position dans le sample un peu plus tardive.

Une manière naïve de faire ça aurait été de faire pleins de groove~ avec notre sample et de les faire partir tous à des positions différentes (1,2,3,4 secondes, etc) et de les enchainer, ce qui est idiot car pour un long sample il en faut des tas.

Une autre chose que l'on voit dans le dessins c'est que :
a * durée de l'envellope  = 2 * Metro
avec   a = 1 / pitch (pitch de l'envellope)

C'est la condition pour que les envellopes s'enchainent bien comme je le veux, et il suffit donc de calculer le pitch en fontion de la vitesse du metro et de la durée de l'envellope.

Ok, passons maintenant à l'implémentation.

Premièrement je fais un subpatch "groove" avec deux [groove~] un pour le sample et un pour l'envellope. Les inlets de gauche à droite:
Bang pour déclencher les deux groove~, position de départ dans le sample (remarquez l'usage de prepend set), pitch de l'envellope, pitch du sample.

http://codelab.fr/up/subpatch-groove.gif

Ensuite je prend deux subpatchs groove que je vais déclancher alternativement avec le metro.

http://codelab.fr/up/subpatch-complet-3.gif

J'ajoute le calcul du pitch de l'envellope et de la position de lecture du sample (on compte le nombre de bang du metro et on multiplie par la vitesse du metro).

http://codelab.fr/up/subpatch-complet-2.gif

J'ajoute un multiplicateur à la position de lecture du sample, c'est ce qui va permettre de faire du time stretching.

http://codelab.fr/up/subpatch-complet-1.gif

Et finalement, un petit système qui arrête le metro si le sample est fini, et qui relance le tout si loop = 1.

http://codelab.fr/up/subpatch-complet.gif

C'est fini !


http://codelab.fr/up/finit.gif

Bon j'espère que ça vous aidera un peu, parce que je ferais pas ça tout les jours..  zjoy

Note: je vous conseil d'utiliser mon envellope triangulaire, mais on peut utiliser n'importe quoi..

Hors ligne

 

#2 2006-09-29 16:38:03 Re : [patch] Pitch shifting / Time stretching granulaire [max/msp]

tobald
modérateur
Date d'inscription: 2008-03-28
Messages: 499

Re: [patch] Pitch shifting / Time stretching granulaire [max/msp]



citation :

Le principe de ce patch c'est de prendre un sample, de le découper en petit morceaux qui soit vont se recouvrir un peu, donc certaines parties du samples seront jouée plusieurs fois et ont aura une expansion temporelle:

ABCDEF

-> AABBCCDDEEFF

L'idée est vraiment excellente  , ça depasse le simple looping par time stretch qu'on voit un peu partout. J'ai compris le principe général, je pense qu'en testant le patch tout deviendra plus clair.

Merci pour la clarté de tes explications et pour la qualité de tes patches.

Hors ligne

 

#3 2006-09-29 16:53:29 Re : [patch] Pitch shifting / Time stretching granulaire [max/msp]

Staross
membre
Date d'inscription: 2008-04-03
Messages: 322

Re: [patch] Pitch shifting / Time stretching granulaire [max/msp]



>L'idée est vraiment excellente

Pas de moi hein wink

>ça depasse le simple looping par time stretch

Qu'est-ce que ?

Hors ligne

 

#4 2006-09-29 20:13:58 Re : [patch] Pitch shifting / Time stretching granulaire [max/msp]

Soultracker
membre
Date d'inscription: 2006-07-23
Messages: 79
Site web

Re: [patch] Pitch shifting / Time stretching granulaire [max/msp]



excellente explication!
j'intègre de suite!!

Hors ligne

 

#5 2006-09-30 09:48:02 Re : [patch] Pitch shifting / Time stretching granulaire [max/msp]

tobald
modérateur
Date d'inscription: 2008-03-28
Messages: 499

Re: [patch] Pitch shifting / Time stretching granulaire [max/msp]



Oui je me doute bien que tu n'est pas l'inventeur de la synthèse granu et du pitch shifting.  zgnark

J'entendais par "Looping par time stretch" les patches qui te callent en boucle  automatiquement ton sample au tempo en le time stretchant. C'est le système avec l'enveloppe que je trouve vraiment original, en tout cas j'ai jamais vu ça avant.

J'ai testé et je trouve qu'il réagit superbien et proprement (pas de clics) , on obtient des sons intéréssants et l'utilisation d'autres envelloppes que la triangulaire fait réélement varier le traitement.

J'ai juste l'impression qu'il y a un petit blanc à la fin de chaque boucle sinon il manquerait juste des indications de valeur pour s'y repérer un peu mieux.

good job

Hors ligne

 

#6 2006-09-30 18:39:47 Re : [patch] Pitch shifting / Time stretching granulaire [max/msp]

Staross
membre
Date d'inscription: 2008-04-03
Messages: 322

Re: [patch] Pitch shifting / Time stretching granulaire [max/msp]



>J'ai testé et je trouve qu'il réagit superbien et proprement (pas de clics)

Parce que l'amplitude est modulée par des envellopes qui commencent et finissent à zero.

> l'utilisation d'autres envelloppes que la triangulaire fait réélement varier le traitement.

Oui en fait si tu prend un sample quelconque tu fais de la modulation d'amplitude, c'est sur que ça va changer le résultat.
Normalement il faudrait utiliser que des envellopes positive, qui commencent et finisent à 0 et qui quand tu les additionnes décalé d'une demi longeur te donne une amplitude constante.

Hors ligne

 

#7 2006-11-08 17:10:54 Re : [patch] Pitch shifting / Time stretching granulaire [max/msp]

Soultracker
membre
Date d'inscription: 2006-07-23
Messages: 79
Site web

Re: [patch] Pitch shifting / Time stretching granulaire [max/msp]



http://www.sfu.ca/~truax/GranEnv.gif

petite variante...

source: http://www.sfu.ca/~truax/gran.html

Hors ligne

 

#8 2006-11-08 18:51:05 Re : [patch] Pitch shifting / Time stretching granulaire [max/msp]

Staross
membre
Date d'inscription: 2008-04-03
Messages: 322

Re: [patch] Pitch shifting / Time stretching granulaire [max/msp]



Oui, moi j'ai utilisé du "Pitch-synchronous granular synthesis" je crois.

[img]http://www.sfu.ca/~truax/GranPs.gif [/img]

Overlapping grain envelopes designed to be synchronous with the frequency of the grain waveform, thereby producing fewer audio artifacts.


Cela dit il faudrait peut-être voir ça d'un peu plus près, la modulation d'amplitude n'est pas neutre au niveau fréquenciel.

Hors ligne

 

#9 2006-12-20 13:52:36 Re : [patch] Pitch shifting / Time stretching granulaire [max/msp]

osc
membre
Date d'inscription: 2005-09-09
Messages: 99
Site web

Re: [patch] Pitch shifting / Time stretching granulaire [max/msp]



citation :

Bon j'espère que ça vous aidera un peu, parce que je ferais pas ça tout les jours..

Ouaip, vraiment nickel tes explications, comme d'hab  zjoy
Merci bien.

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2021