OK I got this:
Private Testtimer As New System.Timers.Timer
Public Sub New()
Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_DEFAULT, Nothing)
MainModule.forwardstream = Bass.BASS_StreamCreateFile("C:\Test.mp3", 0, 0, BASSFlag.BASS_STREAM_PRESCAN Or BASSFlag.BASS_STREAM_DECODE)
MainModule.reversestream = BassFx.BASS_FX_ReverseCreate(MainModule.forwardstream, 2.0F, BASSFlag.BASS_FX_FREESOURCE)
Bass.BASS_ChannelSetAttribute(MainModule.reversestream, BASSAttribute.BASS_ATTRIB_BUFFER, 0)
Bass.BASS_ChannelGetAttribute(MainModule.reversestream, BASSAttribute.BASS_ATTRIB_FREQ, SampleRate)
Bass.BASS_ChannelSetAttribute(MainModule.reversestream, BASSAttribute.BASS_ATTRIB_REVERSE_DIR, 1)
Bass.BASS_ChannelPlay(MainModule.reversestream, False)
AddHandler Testtimer.Elapsed, AddressOf TestProcedure
Testtimer.Start()
End Sub
Private Sub TestProcedure(sender As Object, e As ElapsedEventArgs)
If TestCounter <= 10 Then
NewMIDIEvent()
TestCounter = TestCounter + 1
Testtimer.Interval = Testtimer.Interval + 500
Else
Testtimer.Stop()
End If
End Sub
Private Sub ScratchingCommand_Execute(obj As Object)
Dim Samplingrate1 As Integer = CInt(obj)
'If (Samplingrate1 < 0) Then 'I commented this part for testing purposes
' Bass.BASS_ChannelSetAttribute(MainModule.reversestream, BASSAttribute.BASS_ATTRIB_REVERSE_DIR, -1)
' Bass.BASS_ChannelSlideAttribute(MainModule.reversestream, BASSAttribute.BASS_ATTRIB_FREQ, CSng(-Samplingrate1), 100)
'Else
' Bass.BASS_ChannelSetAttribute(MainModule.reversestream, BASSAttribute.BASS_ATTRIB_REVERSE_DIR, 1)
' Bass.BASS_ChannelSlideAttribute(MainModule.reversestream, BASSAttribute.BASS_ATTRIB_FREQ, CSng(Samplingrate1), 100)
'End If
End Sub
Public Sub NewMIDIEvent()
neueZeit = DateTime.Now
Dim measuredTime As TimeSpan = newTime - oldTime
RPM = measuredTime.TotalMilliseconds
oldTime = newTime
Debug.WriteLine(TestCounter & "measured Time: " & measuredTime.TotalMilliseconds)
Debug.WriteLine(TestCounter & "actual Time: " & "" & Testtimer.Interval)
If (measuredTime.TotalMilliseconds > 120) AndAlso (IsPaused = False) Then
Bass.BASS_ChannelPause(MainModule.reversestream)
IsPaused = True
Else
If IsPaused = True Then
Bass.BASS_ChannelPlay(MainModule.reversestream, False)
IsPaused = False
End If
If MyMIDIHandler.MIDIEventParser.ControlID = 51 Then
If MyMIDIHandler.MIDIEventParser.ControlValue = 127 Then
ScratchingCommand_Execute(SampleRate * 45 / 60 * 1000 / 128 / measuredTime.TotalMilliseconds)
Else
ScratchingCommand_Execute(-SampleRate * 45 / 60 * 1000 / 128 / gemesseneZeit.TotalMilliseconds)
End If
ElseIf MyMIDIHandler.MIDIEventParser.ControlID = 52 AndAlso MyMIDIHandler.MIDIEventParser.ControlWert = 0 Then
ScratchingCommand_Execute(SampleRate)
End If
IsPaused = False
End If
End Sub
I get this log when I use the timer to trigger NewMIDIEvent:
0measured Time: (+)4043,6372
0actual Time: (+)100
1measured Time: (+)605,0795
1actual Time: (+)600
2measured Time: (+)1111,7357
2actual Time: (+)1100
3measured Time: (+)1608,8819
3actual Time: (+)1600
4measured Time: (+)2106,8814
4actual Time: (+)2100
5measured Time: (+)2623,2064
5actual Time: (+)2600
6measured Time: (+)3116,5642
6actual Time: (+)3100
7measured Time: (+)3608,7941
7actual Time: (+)3600
8measured Time: (+)4107,0186
8actual Time: (+)4100
9measured Time: (+)4607,73
9actual Time: (+)4600
10measured Time: (+)5109,3356
10actual Time: (+)5100
When I spin the wheel 1/4th clockwise I get this:
Event triggered!!
0measured Time: (+)3839,0526
0actual Time: (+)100
Event triggered!!
0measured Time: (+)8,4367
0actual Time: (+)100
Event triggered!!
0measured Time: (+)88,5754
0actual Time: (+)100
ÜBERGEBEN: -2917
Event triggered!!
0measured Time: (+)27,9836
0actual Time: (+)100
ÜBERGEBEN: -9234
Event triggered!!
0measured Time: (+)34,9778
0actual Time: (+)100
ÜBERGEBEN: -7387
Event triggered!!
0measured Time: (+)29,4601
0actual Time: (+)100
ÜBERGEBEN: -8771
Event triggered!!
0measured Time: (+)95,403
0actual Time: (+)100
ÜBERGEBEN: -2708
Event triggered!!
0measured Time: (+)25,9845
0actual Time: (+)100
ÜBERGEBEN: -9944
Event triggered!!
0measured Time: (+)51,9599
0actual Time: (+)100
ÜBERGEBEN: -4973
Event triggered!!
0measured Time: (+)26,1403
0actual Time: (+)100
ÜBERGEBEN: -9885
Event triggered!!
0measured Time: (+)52,954
0actual Time: (+)100
ÜBERGEBEN: -4880
Event triggered!!
0measured Time: (+)27,9917
0actual Time: (+)100
ÜBERGEBEN: -9231
Event triggered!!
0measured Time: (+)75,9569
0actual Time: (+)100
ÜBERGEBEN: -3402
Event triggered!!
0measured Time: (+)36,0114
0actual Time: (+)100
ÜBERGEBEN: -7175
Event triggered!!
0measured Time: (+)77,676
0actual Time: (+)100
ÜBERGEBEN: -3327
Event triggered!!
0measured Time: (+)28,1927
0actual Time: (+)100
ÜBERGEBEN: -9165
Event triggered!!
0measured Time: (+)51,3276
0actual Time: (+)100
ÜBERGEBEN: -5034
Event triggered!!
0measured Time: (+)27,954
0actual Time: (+)100
ÜBERGEBEN: -9244
Event triggered!!
0measured Time: (+)60,8658
0actual Time: (+)100
ÜBERGEBEN: -4245
Event triggered!!
0measured Time: (+)45,3432
0actual Time: (+)100
ÜBERGEBEN: -5699
Event triggered!!
0measured Time: (+)43,3191
0actual Time: (+)100
ÜBERGEBEN: -5965
Event triggered!!
0measured Time: (+)28,0247
0actual Time: (+)100
ÜBERGEBEN: -9220
Event triggered!!
0measured Time: (+)31,9986
0actual Time: (+)100
ÜBERGEBEN: -8075
Event triggered!!
0measured Time: (+)16,9906
0actual Time: (+)100
ÜBERGEBEN: -15208
Event triggered!!
0measured Time: (+)84,2012
0actual Time: (+)100
ÜBERGEBEN: -3069
Event triggered!!
0measured Time: (+)25,0896
0actual Time: (+)100
ÜBERGEBEN: -10299
Event triggered!!
0measured Time: (+)77,4813
0actual Time: (+)100
ÜBERGEBEN: -3335
Event triggered!!
0measured Time: (+)18,996
0actual Time: (+)100
ÜBERGEBEN: -13603
Event triggered!!
0measured Time: (+)65,9089
0actual Time: (+)100
ÜBERGEBEN: -3921
Event triggered!!
0measured Time: (+)36,0575
0actual Time: (+)100
ÜBERGEBEN: -7166
Event triggered!!
0measured Time: (+)74,3826
0actual Time: (+)100
ÜBERGEBEN: -3474
Event triggered!!
0measured Time: (+)37,8621
0actual Time: (+)100
ÜBERGEBEN: -6825
Event triggered!!
0measured Time: (+)41,4372
0actual Time: (+)100
ÜBERGEBEN: -6236
Event triggered!!
0measured Time: (+)29,9059
0actual Time: (+)100
ÜBERGEBEN: -8640
Event triggered!!
0measured Time: (+)62,5297
0actual Time: (+)100
ÜBERGEBEN: -4132
Event triggered!!
0measured Time: (+)423,402
0actual Time: (+)100
@jpf
I don't really have a clue of the different types of scratching (didn't even know there are any different types...)
But this is not what its supposed to sound like I guess...