Publié : mer. 04/août/2004 18:05
alors voila mon vibrato renomme "tremolo" (tremolo.pb)
j'ai modifier le fait qu'en demandant un tremolo plus rapide cela baissais
lamentablement le volume
voila qui donne un son plus regulier quelque soit la periode demande
(je travaille toujour dessus !
)
j'ai modifier le fait qu'en demandant un tremolo plus rapide cela baissais
lamentablement le volume
voila qui donne un son plus regulier quelque soit la periode demande
(je travaille toujour dessus !

Code : Tout sélectionner
; FILTRE VOLUME - VOLUME FILTER
; By ZapMan
;
; You can use this filter as an exemple to create new one's
;
; Vous pouvez utiliser ce filtre comme exemple pour en créer de nouveaux
;
; A filter need 2 or 3 procedures to be operational
; - the first one will add your controls (gadgets) in the filter window when it's open. If you have no need of control, you can forget it.
; - the second one will be called by the event loop of the filter window (this exemple has not this one)
; - the third must apply your effect on the sound
;
; Un filtre nécessite 2 à 3 procédures pour être opérationnel
; - la première ajoutera vos gadgets dans la fenêtre de filtre quand elle sera ouverte. Si votre filtre ne nécessite aucun gadget, vous pouvez l'oublier.
; - la deuxième sera appellée par la boucle des évènement de cette fenêtre (cet exemple n'en comporte pas)
; - la troisième doit appliquer votre effet sur le son
Procedure tremCreateButtons ()
#ComboGadget=1 ; gadgets can have any number from 1 to 399. But don't re-use the same number in two different filters !!
; les gadgets peuvent avoir un numéro compris entre 1 et 399. Attention a ne pas utiliser le même numéro dans deux filtres différents !!
values$="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20"
ComboBoxGadget(#ComboGadget,100,23,70,250)
FontID1 = LoadFont(1, "Arial", 16, #PB_Font_Bold)
SetGadgetFont(#ComboGadget, FontID1)
For lcg=1 To 20
AddGadgetItem(#ComboGadget,-1,StringField(values$, lcg, ","))
Next
SetGadgetState(#ComboGadget,5)
PBase=40 ; this filter gadget is 40 points high. You can use more !
; Le gadget de ce filtre occupe un espace de 40 points de haut. Vous pouvez faire plus grand !
ProcedureReturn PBase
EndProcedure
Procedure tremCompute (*hsound) ; *hsound is the adress of the WAVE sound on wich you will apply your effect
; *hsound est l'adresse du son WAVE sur lequel vous allez appliquer votre effet
CValues$="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20"
vol.f = ValF(StringField(CValues$, GetGadgetState(#ComboGadget)+1, ","))
wBitsPerSample.w=PeekW(*hsound+34)
*pt=*hsound+44
lim = *hsound+44+PeekL(*hsound+40)
While *pt<=lim
Select wBitsPerSample
Case 8
sv1 = PeekB(*pt)
If sv1<0
sv1+256 ; Convert signed to unsigned
EndIf
sv1-128 ; 8bits wave signal is from 0 to 256 with a midpoint at 128
; ici tremolo by dobro
compt+sens
If compt=0
sens=1
EndIf
If compt>10000*(vol/10)
sens=-1
EndIf
sv = Round(sv1*compt/10000/(vol*5)*50,0)
;Debug sv
; ******************************
If sv>127 ; saturation
sv=127
EndIf
If sv<-127
sv=-127
EndIf
sv+128
PokeB(*pt,sv)
Case 16
; ici tremolo by dobro
compt+sens
If compt=0
sens=1
EndIf
If compt>10000*(vol/5)
sens=-1
EndIf
sv =Round(PeekW(*pt)*compt/10000/(vol*5)*50,0)
If sv>($FFFF/2)-1
sv=($FFFF/2)-1 ; saturation
EndIf
If sv<-($FFFF/2)+1
sv=-($FFFF/2)+1 ; saturation
EndIf
PokeW(*pt,sv)
Case 32
; ici tremolo by dobro
compt+sens
If compt=0
sens=1
EndIf
If compt>10000*(vol/5)
sens=-1
EndIf
sv =Round(PeekW(*pt)*compt/10000/(vol*5)*50,0)
If sv>($FFFFFFFF/2)-1
sv=($FFFFFFFF/2)-1 ; saturation
EndIf
If sv<-($FFFFFFFF/2)+1
sv=-($FFFFFFFF/2)+1 ; saturation
EndIf
PokeL(*pt,sv)
EndSelect
*pt+wBitsPerSample/8
Wend
ProcedureReturn *hsound ; this is very important !!!!!!!!!
EndProcedure
;
; Now, give the names of your effect and register the adresses of your procedures
RegisterFilter("tremolo","tremolo","tremolo","by Dobro",@tremCreateButtons (),0,@tremCompute ())
; "FrenchName","EnglishName","GermanName","Your name",procedure adress for create button, procedure adress for events managing, procedure adress for filtering computing