Accueil > > > MINI SÉQUENSEUR
MINI SÉQUENSEUR
Information sur la source
Description
Il s'agit d'une petite boite à rythme de taille 9x9, On peut jouer des sons à la suite en activant les cellules, Ce programme utilise directsound7.
Source
- Option Explicit
- Const TX = 9 '<= 9
- Const TY = 9 '<= 9
- '------------------
- Private DX As New DirectX7
- Private DS As DirectSound
- Private bufferDesc As DSBUFFERDESC
- Private waveFormat As WAVEFORMATEX
- Private Type KeyPad
- Enabled As Boolean
- Filename As String
- Soundbuffer As DirectSoundBuffer
- End Type
- Dim Sequencer() As KeyPad
- Private Tracker As Integer
- '
- Private Sub Form_Load()
- Form1.Caption = " Séquencer v" & App.Major & "." & App.Minor & " " & App.Comments
- ReDim Sequencer(1 To TX, 1 To TY)
- Tracker = 0
- If LedInit <> 0 Or SoundInit <> 0 Then
- MsgBox "Erreur d'initialisation", vbExclamation
- Unload Me
- End If
- Me.Show
- AfficheLed
- End Sub
- '
- Private Function LedInit() As Long
- Dim X, Y As Integer
- On Error GoTo Trap
- For Y = 1 To TY
- Load SelectSample(Y)
- With SelectSample(Y)
- .Left = 0
- .Top = SelectSample(0).Height * (Y - 1) + LTempo.Height
- .Visible = True
- End With
- For X = 1 To TX
- Load Led1(Val(X & Y))
- Load Led0(Val(X & Y))
- With Led1(Val(X & Y))
- .Left = Led1(0).Width * (X - 1) + Led1(0).Width
- .Top = Led1(0).Height * (Y - 1) + LTempo.Height
- .Visible = False
- End With
- With Led0(Val(X & Y))
- .Left = Led0(0).Width * (X - 1) + Led0(0).Width
- .Top = Led0(0).Height * (Y - 1) + LTempo.Height
- .Visible = True
- End With
- Next: Next
- Exit Function
-
- Trap:
- Debug.Print "LedInit /!\ " & Err.Description
- LedInit = Err.Number
- End Function
- ' Initialise DirectSound
- Private Function SoundInit() As Long
- On Error GoTo Trap
- Set DS = DX.DirectSoundCreate("")
- DS.SetCooperativeLevel Form1.hWnd, DSSCL_PRIORITY
- ' Initialise le buffer DirectSound
- bufferDesc.lFlags = DSBCAPS_CTRLFREQUENCY Or DSBCAPS_CTRLPAN Or DSBCAPS_CTRLVOLUME Or DSBCAPS_STATIC
- ' Initialise le format audio
- waveFormat.nFormatTag = WAVE_FORMAT_PCM
- waveFormat.nChannels = 2
- waveFormat.lSamplesPerSec = 22050
- waveFormat.nBitsPerSample = 16
- waveFormat.nBlockAlign = waveFormat.nBitsPerSample / 8 * waveFormat.nChannels
- waveFormat.lAvgBytesPerSec = waveFormat.lSamplesPerSec * waveFormat.nBlockAlign
- Exit Function
-
- Trap:
- Debug.Print "Soundinit /!\ " & Err.Description
- SoundInit = Err.Number
- End Function
- '
- Private Sub Command_Click(Index As Integer)
- Select Case Index
- Case 0
- Tempo.Enabled = True
- Command(0).Visible = False
- Case 1
- Tempo.Enabled = False
- Command(0).Visible = True
- StopSequence
- Case 2
- Tempo.Enabled = False
- Command(0).Visible = True
- StopSequence
- Tracker = 0
- Case 3
- If Tempo.Interval <= 1999 Then Tempo.Interval = Tempo.Interval + 50
- Case 4
- If Tempo.Interval >= 51 Then Tempo.Interval = Tempo.Interval - 50
- End Select
- AfficheLed
- End Sub
- '
- Private Sub Led0_Click(Index As Integer)
- Dim X, Y As Integer
- X = Left(Index, 1)
- Y = Right(Index, 1)
- Sequencer(X, Y).Enabled = True
- AfficheLed
- End Sub
- '
- Private Sub Led1_Click(Index As Integer)
- Dim X, Y As Integer
- X = Left(Index, 1)
- Y = Right(Index, 1)
- Sequencer(X, Y).Enabled = False
- AfficheLed
- End Sub
- '
- Private Sub SelectSample_Click(Index As Integer)
- On Error GoTo Abort:
- With CMD
- .DialogTitle = "Ouvrir un sample"
- .InitDir = App.Path
- .Filter = "Fichiers audio (*.wav)|*.wav"
- End With
- CMD.ShowOpen
- Sequencer(1, Index).Filename = CMD.Filename
- Call SoundLoad(Sequencer(1, Index).Filename, Index)
- Exit Sub
-
- Abort:
- Sequencer(1, Index).Filename = ""
- End Sub
- ' Charge les sons en memoire
- Private Sub SoundLoad(Filename As String, Index As Integer)
- Dim X As Integer
- 'On Error GoTo Trap
- If Dir(Filename, vbNormal) = "" Then GoTo Trap:
- For X = 1 To TX
- Set Sequencer(X, Index).Soundbuffer = DS.CreateSoundBufferFromFile(Filename, bufferDesc, waveFormat)
- Next
- Exit Sub
-
- Trap:
- Debug.Print "Soundload /!\ " & Err.Description
- End Sub
- '
- Private Sub Tempo_Timer()
- On Error GoTo Error
- Tracker = Tracker Mod TX + 1
- AfficheLed
- PlaySequence
- DoEvents
- Exit Sub
-
- Error:
- Command_Click (2)
- End Sub
- '
- Private Sub PlaySequence()
- Dim Y As Integer
- On Error Resume Next
- For Y = 1 To TY
- If Sequencer(Tracker, Y).Enabled = True And Sequencer(1, Y).Filename <> "" Then
- Call SoundStop(Val(Tracker & Y))
- Call SoundPlay(Val(Tracker & Y), 0)
- End If
- Next
- End Sub
- '
- Private Sub StopSequence()
- Dim X, Y As Integer
- On Error Resume Next
- For X = 1 To TX
- For Y = 1 To TY
- If Sequencer(1, Y).Filename <> "" Then Call SoundStop(Val(X & Y))
- Next: Next
- End Sub
- ' Joue un son
- Private Sub SoundPlay(SoundID As Integer, Looped As Integer)
- Dim X, Y As Integer
- On Error GoTo Trap
- X = Left(SoundID, 1)
- Y = Right(SoundID, 1)
- Sequencer(X, Y).Soundbuffer.Play Looped
- Exit Sub
-
- Trap:
- Debug.Print "Soundplay /!\ " & Err.Description
- End Sub
- ' Stop un son
- Private Sub SoundStop(SoundID As Integer)
- Dim X, Y As Integer
- On Error GoTo Trap
- X = Left(SoundID, 1)
- Y = Right(SoundID, 1)
- Sequencer(X, Y).Soundbuffer.Stop
- Exit Sub
-
- Trap:
- Debug.Print "Soundstop /!\ " & Err.Description
- End Sub
- '
- Private Sub AfficheLed()
- Dim X, Y As Integer
- On Error GoTo Error
- For Y = 1 To TY
- For X = 1 To TX
- If X = Tracker Then
- Led0(Val(X & Y)).Picture = Skin(1).Picture
- Led1(Val(X & Y)).Picture = Skin(3).Picture
- Else
- Led0(Val(X & Y)).Picture = Skin(0).Picture
- Led1(Val(X & Y)).Picture = Skin(2).Picture
- End If
- If Sequencer(X, Y).Enabled = True Then
- Led1(Val(X & Y)).Visible = True
- Else
- Led1(Val(X & Y)).Visible = False
- End If
- Next: Next
- LTempo.Caption = "Wait, " & Tempo.Interval
- Exit Sub
-
- Error:
- Debug.Print "AfficheLed /!\ " & Err.Description
- End Sub
- '
- Private Sub Form_Unload(Cancel As Integer)
- SoundUnload
- LedUnload
- End
- End Sub
- ' Libere la mémoire
- Private Sub SoundUnload()
- Set DS = Nothing
- Set DX = Nothing
- End Sub
- '
- Private Sub LedUnload()
- Dim X, Y As Integer
- On Error GoTo Error
- For Y = 1 To TY
- Unload SelectSample(Y)
- For X = 1 To TX
- Unload Led1(Val(X & Y))
- Unload Led0(Val(X & Y))
- Next: Next
- Exit Sub
-
- Error:
- Debug.Print "LedUnload /!\ " & Err.Description
- End Sub
Option Explicit
Const TX = 9 '<= 9
Const TY = 9 '<= 9
'------------------
Private DX As New DirectX7
Private DS As DirectSound
Private bufferDesc As DSBUFFERDESC
Private waveFormat As WAVEFORMATEX
Private Type KeyPad
Enabled As Boolean
Filename As String
Soundbuffer As DirectSoundBuffer
End Type
Dim Sequencer() As KeyPad
Private Tracker As Integer
'
Private Sub Form_Load()
Form1.Caption = " Séquencer v" & App.Major & "." & App.Minor & " " & App.Comments
ReDim Sequencer(1 To TX, 1 To TY)
Tracker = 0
If LedInit <> 0 Or SoundInit <> 0 Then
MsgBox "Erreur d'initialisation", vbExclamation
Unload Me
End If
Me.Show
AfficheLed
End Sub
'
Private Function LedInit() As Long
Dim X, Y As Integer
On Error GoTo Trap
For Y = 1 To TY
Load SelectSample(Y)
With SelectSample(Y)
.Left = 0
.Top = SelectSample(0).Height * (Y - 1) + LTempo.Height
.Visible = True
End With
For X = 1 To TX
Load Led1(Val(X & Y))
Load Led0(Val(X & Y))
With Led1(Val(X & Y))
.Left = Led1(0).Width * (X - 1) + Led1(0).Width
.Top = Led1(0).Height * (Y - 1) + LTempo.Height
.Visible = False
End With
With Led0(Val(X & Y))
.Left = Led0(0).Width * (X - 1) + Led0(0).Width
.Top = Led0(0).Height * (Y - 1) + LTempo.Height
.Visible = True
End With
Next: Next
Exit Function
Trap:
Debug.Print "LedInit /!\ " & Err.Description
LedInit = Err.Number
End Function
' Initialise DirectSound
Private Function SoundInit() As Long
On Error GoTo Trap
Set DS = DX.DirectSoundCreate("")
DS.SetCooperativeLevel Form1.hWnd, DSSCL_PRIORITY
' Initialise le buffer DirectSound
bufferDesc.lFlags = DSBCAPS_CTRLFREQUENCY Or DSBCAPS_CTRLPAN Or DSBCAPS_CTRLVOLUME Or DSBCAPS_STATIC
' Initialise le format audio
waveFormat.nFormatTag = WAVE_FORMAT_PCM
waveFormat.nChannels = 2
waveFormat.lSamplesPerSec = 22050
waveFormat.nBitsPerSample = 16
waveFormat.nBlockAlign = waveFormat.nBitsPerSample / 8 * waveFormat.nChannels
waveFormat.lAvgBytesPerSec = waveFormat.lSamplesPerSec * waveFormat.nBlockAlign
Exit Function
Trap:
Debug.Print "Soundinit /!\ " & Err.Description
SoundInit = Err.Number
End Function
'
Private Sub Command_Click(Index As Integer)
Select Case Index
Case 0
Tempo.Enabled = True
Command(0).Visible = False
Case 1
Tempo.Enabled = False
Command(0).Visible = True
StopSequence
Case 2
Tempo.Enabled = False
Command(0).Visible = True
StopSequence
Tracker = 0
Case 3
If Tempo.Interval <= 1999 Then Tempo.Interval = Tempo.Interval + 50
Case 4
If Tempo.Interval >= 51 Then Tempo.Interval = Tempo.Interval - 50
End Select
AfficheLed
End Sub
'
Private Sub Led0_Click(Index As Integer)
Dim X, Y As Integer
X = Left(Index, 1)
Y = Right(Index, 1)
Sequencer(X, Y).Enabled = True
AfficheLed
End Sub
'
Private Sub Led1_Click(Index As Integer)
Dim X, Y As Integer
X = Left(Index, 1)
Y = Right(Index, 1)
Sequencer(X, Y).Enabled = False
AfficheLed
End Sub
'
Private Sub SelectSample_Click(Index As Integer)
On Error GoTo Abort:
With CMD
.DialogTitle = "Ouvrir un sample"
.InitDir = App.Path
.Filter = "Fichiers audio (*.wav)|*.wav"
End With
CMD.ShowOpen
Sequencer(1, Index).Filename = CMD.Filename
Call SoundLoad(Sequencer(1, Index).Filename, Index)
Exit Sub
Abort:
Sequencer(1, Index).Filename = ""
End Sub
' Charge les sons en memoire
Private Sub SoundLoad(Filename As String, Index As Integer)
Dim X As Integer
'On Error GoTo Trap
If Dir(Filename, vbNormal) = "" Then GoTo Trap:
For X = 1 To TX
Set Sequencer(X, Index).Soundbuffer = DS.CreateSoundBufferFromFile(Filename, bufferDesc, waveFormat)
Next
Exit Sub
Trap:
Debug.Print "Soundload /!\ " & Err.Description
End Sub
'
Private Sub Tempo_Timer()
On Error GoTo Error
Tracker = Tracker Mod TX + 1
AfficheLed
PlaySequence
DoEvents
Exit Sub
Error:
Command_Click (2)
End Sub
'
Private Sub PlaySequence()
Dim Y As Integer
On Error Resume Next
For Y = 1 To TY
If Sequencer(Tracker, Y).Enabled = True And Sequencer(1, Y).Filename <> "" Then
Call SoundStop(Val(Tracker & Y))
Call SoundPlay(Val(Tracker & Y), 0)
End If
Next
End Sub
'
Private Sub StopSequence()
Dim X, Y As Integer
On Error Resume Next
For X = 1 To TX
For Y = 1 To TY
If Sequencer(1, Y).Filename <> "" Then Call SoundStop(Val(X & Y))
Next: Next
End Sub
' Joue un son
Private Sub SoundPlay(SoundID As Integer, Looped As Integer)
Dim X, Y As Integer
On Error GoTo Trap
X = Left(SoundID, 1)
Y = Right(SoundID, 1)
Sequencer(X, Y).Soundbuffer.Play Looped
Exit Sub
Trap:
Debug.Print "Soundplay /!\ " & Err.Description
End Sub
' Stop un son
Private Sub SoundStop(SoundID As Integer)
Dim X, Y As Integer
On Error GoTo Trap
X = Left(SoundID, 1)
Y = Right(SoundID, 1)
Sequencer(X, Y).Soundbuffer.Stop
Exit Sub
Trap:
Debug.Print "Soundstop /!\ " & Err.Description
End Sub
'
Private Sub AfficheLed()
Dim X, Y As Integer
On Error GoTo Error
For Y = 1 To TY
For X = 1 To TX
If X = Tracker Then
Led0(Val(X & Y)).Picture = Skin(1).Picture
Led1(Val(X & Y)).Picture = Skin(3).Picture
Else
Led0(Val(X & Y)).Picture = Skin(0).Picture
Led1(Val(X & Y)).Picture = Skin(2).Picture
End If
If Sequencer(X, Y).Enabled = True Then
Led1(Val(X & Y)).Visible = True
Else
Led1(Val(X & Y)).Visible = False
End If
Next: Next
LTempo.Caption = "Wait, " & Tempo.Interval
Exit Sub
Error:
Debug.Print "AfficheLed /!\ " & Err.Description
End Sub
'
Private Sub Form_Unload(Cancel As Integer)
SoundUnload
LedUnload
End
End Sub
' Libere la mémoire
Private Sub SoundUnload()
Set DS = Nothing
Set DX = Nothing
End Sub
'
Private Sub LedUnload()
Dim X, Y As Integer
On Error GoTo Error
For Y = 1 To TY
Unload SelectSample(Y)
For X = 1 To TX
Unload Led1(Val(X & Y))
Unload Led0(Val(X & Y))
Next: Next
Exit Sub
Error:
Debug.Print "LedUnload /!\ " & Err.Description
End Sub
Historique
- 25 février 2008 01:07:15 :
- ?
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|