DirectuX
03-11-2019, 23:11
Trying the example provided on the "Out"-keyword page of FreeBasic Manual, I noticed that there's no sound output. Explication is in the help file : Using true port access in the Windows version requires the program to install a device driver for the present session. The driver is only 3K in size and is embedded in the executable Obviously, the driver isn't embedded when the code is compiled to a *.dll
'speakersound.bas
Sub Sound(ByVal freq As UInteger, dur As UInteger)
Dim t As Double,f1 As Unsigned Short
f1 = 1193181 \ freq
Out &h61,Inp(&h61) Or 3
Out &h43,&hb6
Out &h42,LoByte(f1)
Out &h42,HiByte(f1)
t=Timer
While ((Timer - t) * 1000) < dur
Sleep 0,1
Wend
Out &h61,Inp(&h61) And &hfc
End Sub
Sound(523, 60) 'C5
Sound(587, 60) 'D5
Sound(659, 60) 'E5
Sound(698, 60) 'F5
Sound(784, 60) 'G5
Sound(880, 60) 'A5
Sound(988, 60) 'B5
Sound(1046, 60) 'C6
To output a sound programmatically ( frequency , duration ) with thinBasic, this (https://www.thinbasic.com/community/showthread.php?12358-Beep-beep&p=90761&viewfull=1#post90761)works. However, unlike old qbasic dialect, it makes a 'pause' between each instruction: no ramp (slope) is possible.
'speakersound.bas
Sub Sound(ByVal freq As UInteger, dur As UInteger)
Dim t As Double,f1 As Unsigned Short
f1 = 1193181 \ freq
Out &h61,Inp(&h61) Or 3
Out &h43,&hb6
Out &h42,LoByte(f1)
Out &h42,HiByte(f1)
t=Timer
While ((Timer - t) * 1000) < dur
Sleep 0,1
Wend
Out &h61,Inp(&h61) And &hfc
End Sub
Sound(523, 60) 'C5
Sound(587, 60) 'D5
Sound(659, 60) 'E5
Sound(698, 60) 'F5
Sound(784, 60) 'G5
Sound(880, 60) 'A5
Sound(988, 60) 'B5
Sound(1046, 60) 'C6
To output a sound programmatically ( frequency , duration ) with thinBasic, this (https://www.thinbasic.com/community/showthread.php?12358-Beep-beep&p=90761&viewfull=1#post90761)works. However, unlike old qbasic dialect, it makes a 'pause' between each instruction: no ramp (slope) is possible.