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