dos command prompt for producing sound
Moderator: DosItHelp
dos command prompt for producing sound
What is the dos command prompt for producing sound at a certain frequency? I used to know this well. There is a dos command that you type followed by or preceeded by a number such as 19550 which is a specific frequency the computer would then produce. I'd like help with the actual command and the syntax for using it. I've forgotten it altogether otherwise. Thanks.
____________________
____________________
Last edited by nikihela on 17 Mar 2013 14:02, edited 1 time in total.
Re: dos command prompt for producing sound
There is no DOS command making noise.
Re: dos command prompt for producing sound
dont remember doing this in batch but do recall doing it in basic many many years ago.
Re: dos command prompt for producing sound
The only character that produces sound is the BELL character. The command you used was an external command. Google cSound.COMnikihela wrote:What is the dos command prompt for producing sound at a certain frequency? I used to know this well. There is a dos command that you type followed by or preceeded by a number such as 19550 which is a specific frequency the computer would then produce. I'd like help with the actual command and the syntax for using it. I've forgotten it altogether otherwise. Thanks.
CSOUND is freeware by Horst Schaeffer - no warranties of any kind
15 DEC 1996
Re: dos command prompt for producing sound
There is another way, not involving numbers but it works.
Code: Select all
rundll32 user32.dll,MessageBeep
Re: dos command prompt for producing sound
Qbasic should still output sound - available on Win9x cdroms and from MSDos.
It's a dos based BASIC IDE.
EDIT:
Qbasic and Csound don't reliably produce sound in Windows 8.
It's a dos based BASIC IDE.
EDIT:
Qbasic and Csound don't reliably produce sound in Windows 8.
Re: dos command prompt for producing sound
nikihela wrote:What is the dos command prompt for producing sound at a certain frequency? I used to know this well. There is a dos command that you type followed by or preceeded by a number such as 19550 which is a specific frequency the computer would then produce. I'd like help with the actual command and the syntax for using it. I've forgotten it altogether otherwise. Thanks.
More than 20 years ago I wrote SOUND.COM auxiliary program that sound the speaker at a given frequency, and distributed a few copies of it. Perhaps you used one of those copies?
I have resurrected that program. Its parameters are several frequency/duration pairs; the frequency is given in Hertz and the duration in ticks where one tick=1/18.2065 second, that is, 18 ticks are equal to one second, approximately. For example, the command below play the first four notes of "Frère Jacques" (Brother John) popular french song for half second each:
Code: Select all
SOUND 349/9 392/9 440/9 349/9
I also wrote an auxiliary file with definitions for standard frequencies and durations of musical notes:
Code: Select all
@echo off
rem SOUND-INC.BAT Auxiliary definition file for SOUND.COM command
rem Antonio Perez Ayala
rem Standard note durations in ticks for BPM=273:
set W=16& set H=8& set Q=4& set E=2
set W.=24& set H.=12& set Q.=6& set E.=3
set W..=28& set H..=14& set Q..=7
rem Standard frequencies in Hertz per note for octaves 1 to 7
set notes=0
for %%a in (B A# A G# G F# F E D# D C# C) do (
set /A notes+=1
set note[!notes!]=%%a
)
rem Define octave 7
set i=0
for %%a in (3951 3729 3520 3322 3136 2960 2794 2637 2489 2349 2217 2093) do (
set /A i+=1
for %%i in (!i!) do set !note[%%i]!7=%%a
)
rem Define octaves 6 down to 1
for /L %%o in (6,-1,1) do (
set /A o=%%o+1
for /L %%i in (1,1,%notes%) do (
set /A "!note[%%i]!%%o=(!note[%%i]!!o!+1)/2"
)
)
rem Standard value to insert silences (rests):
set R=10
rem SOUND-INC.BAT End of File
The auxiliary variables allows to write simple melodies in a very easy way. For example:
Code: Select all
@echo off
setlocal EnableDelayedExpansion
rem Example of a melody played via SOUND.COM auxiliary program
rem Antonio Perez Ayala
if not exist Sound.com call :MakeSound.com
rem Load standard duration and note values
call Sound-Inc
rem Redefine Half and Quarter note durations to play this melody faster
set H=6
set Q=3
rem Define parts that repeats of "MOROS y CRISTIANOS" (MOOR and CRISTIAN) melody
rem (folkloric mexican music), divided in four quarters per |measure|.
rem 4 / 4 | 1 2 3 4 | 1 2 3 4
set MyC_Part1_1and2of4=%C5%/%Q% %R%/%Q% %C5%/%Q% %B4%/%Q% %C5%/%Q% %R%/%Q% %G4%/%Q% %R%/%Q%
rem | 1 2 3 4 | 1 2 3 4 | 1 2 3 4 | 1-2 3-4
set MyC_Part1_3-4of4=%G4%/%Q% %R%/%Q% %A4%/%Q% %B4%/%Q% %C5%/%Q% %R%/%Q% %B4%/%Q% %A4%/%Q% %G4%/%Q% %F4%/%Q% %E4%/%Q% %F4%/%Q% %G4%/%H% %R%/%H%
rem | 1 2 3 4 | 1 2 3 4 | 1 2 3 4
set MyC_Part2_6of8=%G4%/%Q% %R%/%Q% %D4%/%Q% %F4%/%Q% %E4%/%Q% %R%/%Q% %C4%/%Q% %E4%/%Q% %G4%/%Q% %F4%/%Q% %E4%/%Q% %D4%/%Q%
rem Play the melody appending missed parts
sound %MyC_Part1_1and2of4% %MyC_Part1_1and2of4%
sound %MyC_Part1_3-4of4%
rem Repeat Part 1
sound %MyC_Part1_1and2of4% %MyC_Part1_1and2of4%
sound %MyC_Part1_3-4of4%
rem | 1 2 3 4 |
sound %MyC_Part2_6of8% %E4%/%Q% %R%/%Q% %C4%/%Q% %E4%/%Q%
rem | 1-2 3-4 |
sound %MyC_Part2_6of8% %C4%/%H% %R%/%H%
rem Repeat Part 2
sound %MyC_Part2_6of8% %E4%/%Q% %R%/%Q% %C4%/%Q% %E4%/%Q%
sound %MyC_Part2_6of8% %C4%/%H% %R%/%H%
goto :EOF
rem Create Sound.com auxiliary program (requires Debug.com DOS command)
:MakeSound.com
(
echo E100 EB 33 53 79 6E 74 61 78 3A 20 53 4F 55 4E 44 20
echo E110 66 72 65 63 75 65 6E 63 79 2F 74 69 63 6B 73 20
echo E120 2E 2E 2E 0D 0A 24 00 00 00 00 00 2E FE 0E 2A 01
echo E130 2E FF 2E 26 01 B0 1C B4 35 CD 21 89 1E 26 01 8C
echo E140 06 28 01 8D 16 2B 01 B0 1C B4 25 CD 21 8C D8 8E
echo E150 C0 50 B0 B6 E6 43 58 8A 0E 80 00 32 ED E3 0B 8D
echo E160 3E 81 00 B0 20 FC F3 AE 75 0D 52 8D 16 02 01 B4
echo E170 09 CD 21 5A E9 98 00 8D 75 FF AC 3C 20 74 FB 3C
echo E180 30 72 F1 3C 39 77 ED 2C 30 8A D8 32 FF B9 0A 00
echo E190 AC 3C 30 72 0E 3C 39 77 0A 25 0F 00 93 F7 E1 03
echo E1A0 D8 EB ED 3C 2F 75 68 81 FB 0F 27 77 1C 83 FB 14
echo E1B0 7C 17 BA 12 00 33 C0 F7 F3 50 E6 42 8A C4 E6 42
echo E1C0 58 50 E4 61 0C 03 E6 61 58 AC 3C 30 72 41 3C 39
echo E1D0 77 3D 2C 30 8A E0 AC 3C 30 72 0C 3C 39 77 08 2C
echo E1E0 30 D5 0A 8A E0 EB EF 3C 0D 74 04 3C 20 75 20 0A
echo E1F0 E4 74 0B 88 26 2A 01 80 3E 2A 01 00 75 F9 50 E4
echo E200 61 24 FC E6 61 58 80 7C FF 0D 74 03 E9 6B FF 50
echo E210 E4 61 24 FC E6 61 58 C5 16 26 01 B0 1C B4 25 CD
echo E220 21 32 C0 B4 4C CD 21
echo RCX
echo 127
echo NSOUND.COM
echo W
echo Q
) | debug > NUL
exit /B
Previous program create SOUND.COM file. Note that this program use DEBUG.COM DOS command; if you have not it, you may create SOUND.COM.HEX file with just the hexadecimal digits of the code with no spaces and convert they to the .COM equivalent file with HexToBin.bat conversion program.
I need to update this program to Win-32 API format in order to use it in 64-bits Windows versions.
Enjoy!
Antonio
Re: dos command prompt for producing sound
When I try sound 1000/180 in Windows 8 32 bit there is no sound produced, and the prompt returns after 10 seconds or so.
Re: dos command prompt for producing sound
I look forward to the 64 bit version.
Re: dos command prompt for producing sound
foxidrive wrote:When I try sound 1000/180 in Windows 8 32 bit there is no sound produced, and the prompt returns after 10 seconds or so.
Yes, the program check the given values and produce sound only if the frequency is in 20-9999 range. The upper limit is the "0F 27" 16-bits value (in reversed order) at offset 1A9, and the lower limit is the "14" 8-bits value at offset 1AF, so you may modify these values and use SOUND.COM with a different valid range of frequencies.
This is a more detailed description of the required changes: decimal value 9999 is 270F in hexadecimal; you may check this with SET /A 0x270F command. The bytes 27 0F are placed in reversed order at positions 10 and 11 in the line that start with echo E1A0, so you may modify these bytes with the hexadecimal value for the upper limit you wish. In the same way, the lower limit is the "14" that appear at end of the same line.
Re: dos command prompt for producing sound
Que? I used 1 kHz. There was no sound. Your batch file produced no sound.
Re: dos command prompt for producing sound
Oops! I thought you reported that precisely with sound 1000/180 the program produce no sound, but I assumed that with other values the program works correctly (and confused 1000 with 10000).
So SOUND.COM does not produce sound with Windows 8 32-bits, although the delay code works correctly? It is possible that Win-8 does not allow the .COM code to access the speaker circuitry like previous versions. SOUND.COM works perfectly in my Windows XP, but my first tests with SOUND.EXE Win-32 API code in the same Windows XP mark a run-time error!
Antonio
So SOUND.COM does not produce sound with Windows 8 32-bits, although the delay code works correctly? It is possible that Win-8 does not allow the .COM code to access the speaker circuitry like previous versions. SOUND.COM works perfectly in my Windows XP, but my first tests with SOUND.EXE Win-32 API code in the same Windows XP mark a run-time error!
Antonio
Re: dos command prompt for producing sound
It occurs to me that the later model motherboards no longer have an onboard piezo electic speaker, as a cost saving measure. I think mine doesn't have one.
Can your utility output sound from the sound card instead?
Can your utility output sound from the sound card instead?
Re: dos command prompt for producing sound
I use this, try googling
Code: Select all
c:\>buzzer.exe
BUZZER v0.7
Copyright (c) 2009 by LovePimple
Sounds a tone of the specified frequency for a duration in milliseconds.
Usage: BUZZER <frequency> <duration> [number of beeps] [delay between beeps]
Frequency: 37 - 17000 Hz | Duration: 50 - 20000 ms
Number of beeps: 0 - 1000 | Delay between beeps: 10 - 5000 ms
+-------------------------------------------------+
| C | 131 | 262 | 523 | 1040 | 2093 |
| C#/Db | 139 | 277 | 554 | 1103 | 2217 |
| D | 147 | 294 | 587 | 1176 | 2349 |
| D#/Eb | 156 | 311 | 622 | 1241 | 2489 |
| E | 165 | 330 | 659 | 1311 | 2637 |
| F | 175 | 349 | 698 | 1391 | 2794 |
| F#/Gb | 185 | 370 | 740 | 1488 | 2960 |
| G | 196 | 392 | 784 | 1568 | 3136 |
| G#/Ab | 208 | 415 | 831 | 1662 | 3322 |
| A | 220 | 440 | 880 | 1760 | 3520 |
| A#/Bb | 233 | 466 | 932 | 1866 | 3729 |
| B | 248 | 494 | 988 | 1973 | 3951 |
+-------------------------------------------------+