聲音編程
Ⅰ 如何用Pascal語言進行聲音編程
Turbo pascal 聲音編程
一、使用Pascal進行聲音操作前的准備
首先需要說明的是我們所說的Pascal聲音操作,並不是指實現Pascal對於音效卡進行操作,而是利用Pascal對計算機的PC喇叭操作,使它發出聲音。
在Turbo Pascal中有一個叫做CRT單元的東西,CRT單元實現了一系列強大的可以充分地控制你計算機的功能CRT單元提供了控制顯示模式、擴展鍵盤代碼、顯示顏色、窗體和聲音的功能。
若是要在Turbo Pascal中實現聲音操作,就必須要調用CRT單元。那麼怎麼樣來調用CRT單元呢?現在介紹一下單元調用語句:USES
USES的語法:
USES 單元表識符,……,單元表識符;
說明:
擴展名為*.TPW是Windows下的單元文件,*.TPU是DOS下的單元文件。
二、Pascal聲音操作的全部——三個過程
其實,Pascal的聲音操作是十分簡單的,一共可以使用的過程也只有3個,由此可見,你可以用很少的時間使你的PC喇叭發出你所希望的長度、你所希望的頻率的聲音
(1)SOUND過程
調用SOUND的方法: SOUND(HZ);
說明:在調用SOUND的時候,它的參數HZ必須是WORD,也就是說變數HZ必須在0~65535這個范圍中,變數HZ就是使PC喇叭遲碧發出等於HZ變數數值的頻率的聲音,由此可見人耳可以聽見的范圍遠遠小於這個范圍。
(2)DELAY過程
調用DELAY的方法: DELAY(TIME);
說明:當你在調用了SOUND過程之後,必須指定它發出變數HZ所指定的頻率的聲音的時間長度,DELAY就是用來指定這個長度的過程,變數TIME必須是大於等於零的整數,並且當TIME=1000時,它所延遲的時間是1秒,也就是說TIME的單位是千分之秒。
(3)NOSOUND過程
調用DELAY的方法: NOSOUND;
說明:NOSOUND是一個無參過程,它的作用從過程名上就可以看出——用來使PC喇叭停止發聲,在調用SOUND之後,最好是要調用NOSOUND使PC喇叭停止發聲。
例:用於上過程編寫一個警報程序:
PROGRAM Alert;
USES Crt;
VAR
Hz : Word;
Count : Word;
BEGIN
REPEAT
Count:=Count+1;
Hz := 262;
WHILE Hz <= 524 DO
BEGIN
Sound(Hz);
Delay(2);
Hz := Hz + 1;
END;
UNTIL Count = 10;
Nosound;
END.
注意,在不同的機器上發出的聲音碼大舉有所差異。這是因為計算機主頻不同。還有,在試驗這個程序,或者說試驗這種發聲程序之前,最好先准備一個調用NOSOUND使PC喇叭仿培停止發聲的簡單程序,以免異常中斷,使喇叭響個不停。
========================= ========================
可以使用CLRSCR函數在需要處清屏
不過如果要使用 CLRSCR(清屏過程,在 DOS單元中)的話,必須在程序頭部加上: USES DOS;
Ⅱ 怎樣編程能讓音箱發出指定頻率的聲音運行時頻率可以任意改變(100-1000之間) 用VB、C、C++、C#都可以
樓上正解!
----------------------------------
VB版的
Public Declare Function APIBeep Lib "kernel32" Alias "Beep" (ByVal dwFreq As Long, _
ByVal dwDuration As Long) As Long
'控制計算機發出一個聲音 dwFreq(聲高) dwDuration(聲長)
private sub main()
call apibeep(250,200)'這樣揚聲器就發出你可以控制的聲音了,如果沒有安裝音效卡 則從主板小喇叭上發出
end sub
Ⅲ 如何針對音效卡編程發出特定頻率的聲音
蜂鳴器編程的話,有個API函數,VB中的聲明為
Declare Function Beep Lib "kernel32" Alias "Beep" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
調用方法是Beep 聲音頻率,持續時間(毫秒為單位)
比如 beep 2000,1000
如果是音效卡編程的話,也有相應的API函數,比如你可以用DirectSound(也就是DirectX的一部分),功能比較強大,也很專業。事實上,如果你使用的是專業級的音效卡和音響設備,它可以在一定范圍內回放出超出人耳聽覺范圍的聲音。當然也可以用簡單一點的API,以下是幾個需要的函數:
Private Declare Function midiOutGetDevCaps Lib "winmm.dll" Alias "midiOutGetDevCapsA" (ByVal uDeviceID As Long, lpCaps As MIDIOUTCAPS, ByVal uSize As Long) As Long
Private Declare Function midiOutGetNumDevs Lib "winmm" () As Integer
Private Declare Function MIDIOutOpen Lib "winmm.dll" Alias "midiOutOpen" (lphMidiOut As Long, ByVal uDeviceID As Long, ByVal dwCallback As Long, ByVal dwInstance As Long, ByVal dwFlags As Long) As Long
Private Declare Function midiOutClose Lib "winmm.dll" (ByVal hMidiOut As Long) As Long
Private Declare Function midiOutShortMsg Lib "winmm.dll" (ByVal hMidiOut As Long, ByVal dwMsg As Long) As Long
Private Declare Function midiOutGetErrorText Lib "winmm.dll" Alias "midiOutGetErrorTextA" (ByVal err As Long, ByVal lpText As String, ByVal uSize As Long) As Long
Private Const MAXERRORLENGTH = 128 ' max error text length (including NULL)
Private Const MIDIMAPPER = (-1)
Private Const MIDI_MAPPER = (-1)
'MIDIOUTCAPS結構描述了Musical Instrument Digital Interface(MIDI)輸入設備的性能
Type MIDIOUTCAPS
wMid As Integer
wPid As Integer ' 產品 ID
vDriverVersion As Long ' 設備版本
szPname As String * 32 ' 設備 name
wTechnology As Integer ' 設備類型
wVoices As Integer
wNotes As Integer
wChannelMask As Integer
dwSupport As Long
End Type
Public Sub note_on(ch As Integer, ByVal kk As Integer, v As Integer)
' 發音主函數。參數分別為通道編號,音調,速度
Call midi_outshort(&H90 + ch, kk, v)
End Sub
Sub midi_outshort(b1 As Integer, b2 As Integer, b3 As Integer)
Dim midi_error As Integer
midi_error = midiOutShortMsg(hMidi, b3 * &H10000 + b2 * &H100 + b1)
If Not midi_error = 0 Then
Call midi_outerr(midi_error)
End If
End Sub
Sub midi_outerr(ByVal midi_error As Integer)
Dim s As String
Dim x As Integer
s = Space(MAXERRORLENGTH)
x = midiOutGetErrorText(midi_error, s, MAXERRORLENGTH)
MsgBox s
End Sub
Ⅳ 少兒編程之Scratch中初識聲音模塊
聲音素材可以選擇官方提供的聲音,也可以上傳聲音文件或錄制聲音。
Scratch提供的聲音類積木悉灶包括:播放聲音、調整音調(或左右平衡)、調整音量,大家去試試吧。
音樂分為兩種明陸歲類型:激睜打擊類和演奏類。
Ⅳ C語言編程聲音程序不出聲音
不能吧~ 我這個程型早滑序在我這里是可以發聲的...
汗~不過頻率太低的話我也發睜鍵不出來
時間太卜臘短~
#include <stdio.h>
#include <dos.h>
main()
{
int i;
sound(100);
for(i=0;i<100;i++)
delay(1000);
nosound();
}
感覺很奇怪,頭文件上寫的sound(Hz),頻率低的話我這也不能發聲~~
哦~
Ⅵ 如何使用OpenSL ES在c4droid中進行聲音編程
使用opensl es 的前提條件是在源代碼中:
#include <SLES/OpenSLES.h>, 包含 opensl es的頭文件
在gcc中:
-lOpenSLES 鏈接 opensl es的庫文件
大休步驟如下:
1.創建聲音引擎
2.創建聲音播放器
3.設置播放緩沖
opensl es 主要操作的是 介面(interface),大體來說有如下幾個介面:
SLObjectItf : 對象介面,
SLEngineItf :引擎介面
SLPlayItf:播放介面
SLBufferQueueItf :緩沖隊列介面
SLEffectSendItf:音效發送介面
SLMuteSoloItf : 聲道關閉 /單聲道介面
SLVolumeItf : 聲量介面
除了 slCreateEngine 這一條函數是用來創建聲音引擎對象介面以外,其它的所有操作都是通過介面的成員函數完成的,現在我們來研究如何初始化聲音引擎
初始化聲音引擎需要3個介面,我們要將它們聲明為全局變數:
SLObjectItf _aud;/* 聲音引擎的對象介面 */
SLEngineItf _aud_eng;/* 聲音引擎 */
SLObjectItf _aud_mix;/* 混音器對象介面 */
首先我們創建聲音引擎的對象介面 :
slCreateEngine(&_aud, 0, NULL, 0, NULL, NULL);
創建之後的介面並不能立即使用,我們首先要通過介面的子函數實現(Realize)它:
(*_aud)->Realize(_aud, SL_BOOLEAN_FALSE);/* 通過_aud的Realize子函數實現聲音引擎的對象介面 */
實現之後,我們從聲音引擎的對象中抓取聲音引擎,在這里我們通過介面的子函數抓取介面 (GetInterface),抓取對像是 _aud, 抓取類型是引擎,抓取後存放的內存位置是我們先前聲明的引擎介面_aud_eng的指針位置。指令如下:
(*_aud)->GetInterface(_aud, SL_IID_ENGINE, &_aud_eng);
這樣聲音引擎就初始化了
第三步我們要做的是從聲音引擎中創建 "輸出混音器" 對象,這樣我們才可以將聲音播放出來。
注意,同 聲音引擎的對象一樣, 由於 "輸出混音器" 是對象,我們必須創建後在實現(Realize)它。
由於"輸出混音器"創建的同時需要兩個音效參數,所以我們先准備好這兩個參數:第一個參數類型是聲音介面編號(SLInterfaceID),是一個數組,我們可以將其看成一個音效配置列表,在其中放置不同的音效編號。第二個參數是一個邏輯數組:是否強制實現聲音介面編號中對應音效,如果某個音效的邏輯為真(SL_BOOLEAN_TRUE),則在無法實現該音效時視為"輸出混音器"創建失敗,否則將忽略該音效。因為安卓的聲硬體對音效的支持不同,所以最好不要強制實現,所以我們在第二個數組中全部填寫SL_BOOLEAN_FALSE 。
現在我們開始創建"輸出混音器",環境回響(SL_IID_ENVIRONMENTALREVERB )是比較常見的音效,我們將非強制性的使用該音效。
SLInterfaceID effect[1] = {SL_IID_ENVIRONMENTALREVERB}; /*環境回響音效 */
SLboolean effect_bool[1] = {SL_BOOLEAN_FALSE}; /* 回響音效強制實現邏輯 */
(*_aud_eng)->CreateOutputMix(_aud_eng, &_aud_mix, 1, effect, effect_bool);/* 從聲音引擎中創建「輸出混音器」 */
(*_aud_mix)->Realize(_aud_mix, SL_BOOLEAN_FALSE); /* 實現剛創建的「輸出混音器」 */
樣一來,所有的初始化工作就全部完成了。我們獲得如下完整代碼:
SLObjectItf _aud;/* 聲音引擎對象 */
SLEngineItf _aud_eng;/* 聲音引擎 */
SLObjectItf _aud_mix;/* 輸出混音器對象 */
/* audio_init: 初始化opensl es */
int audio_init ()
{
SLInterfaceID effect[1] = {SL_IID_ENVIRONMENTALREVERB}; /* 音效 */
SLboolean effect_bool[1] = {SL_BOOLEAN_FALSE}; /*音效強制實現邏輯 */
slCreateEngine(&_aud, 0, NULL, 0, NULL, NULL);/* 創建聲音引擎對象 */
(*_aud)->Realize(_aud, SL_BOOLEAN_FALSE);/* 實現聲音引擎對象 */
(*_aud)->GetInterface(_aud, SL_IID_ENGINE, &_aud_eng);/* 從聲音引擎對象中抓取聲音引擎 */
(*_aud_eng)->CreateOutputMix(_aud_eng, &_aud_mix, 1, effect, effect_bool);/* 通過聲音引擎創建輸出混音器對象,並且非強制性的開啟環境混響效果 */
(*_aud_mix)->Realize(_aud_mix, SL_BOOLEAN_FALSE);/* 實現混音器對象 */
}
初始化引擎之後, 我們還要創建一個播放器對象,就可以在播放器中輸出聲音了
播放器對象和輸出混音器一樣,是對象,創建後需要進行實現:
SLObjectItf _aud_plyobj; /*播放器對象 */
(*_aud_eng)->CreateAudioPlayer(_aud_eng, &_aud_plyobj, &sndsrc, &sndsnk, 3, ids, req);
/* 這是創建聲音播放器對象aud_plyobj的函數 */
前兩個參數分別把 聲音引擎 和 播放器引擎的指針位置填上就可以了
我們真正需要填寫的是後面4個參數 :
sndsrc: 聲音數據源
sndsnk:聲音輸出池(data sink),也就是聲音輸出設備
3:功能清單數目,我們要讓播放器支持3種功能
ids: 功能清單,我們要讓播放器支持的功能
req:功能強制實現邏輯
Ⅶ C,C++關於聲音方面的編程
去找李開復吧,語音識別領域專家。
Ⅷ 在編程speak功能中怎麼變聲音
在編程 speak 功能中變聲音可以使用音頻處理庫或語音合成引擎的 API 來實現。具體實現方法因使用的庫或引擎不同而異,一般來說需要通過 API 調用相關函數或介面,設置變聲參數,然後將文本轉鎮帶換成音頻輸出。以下是一些常用的音頻處理庫和語音合成引擎:
PyDub:一個基於 Python 的音頻處理庫,支持音頻剪輯、合並、混音、變速、變聲等功能。
FFmpeg:一個跨平台的開源音視頻處理工具,支持音頻剪輯、合並、格式轉換、變速、變聲等功能。
Microsoft Cognitive Services:微軟提供的一系御芹蘆列 AI 服務,包括語音轉文本、文本轉語音、情感分析等功能,可以通過 API 調用實現語音合成和變聲。
Google Cloud Text-to-Speech:Google 提供的雲端語音合成服務,可以通過 API 調用實現文本轉語音和變聲功能。
需要注意的是,音頻處理和語音合成的質量和效果受多種因素影響,包括采樣率、位深度、聲道數、語音合成引擎的演算法等首派。因此在選擇庫或引擎時需要根據具體應用場景和需求進行綜合考慮和評估。
Ⅸ 圖形化編程添加聲音和導入聲音有什麼不同
添加聲音是在聲音編程區下方找到聲音素銷滲卜材庫,在本地聲音素材庫里添加聲音。
導入虧穗聲音是要先創建一個新角色,然後點擊角色給角色導入聲音。
Scratch是麻省理工學院的「終身幼兒園團隊」在2007年發布的一種圖形化編程工具,主要面對全球青少年開放,是圖形化編程工具當中最廣為人知的一種形式,所有人都可以喊局在軟體中創作自己的程序。截至到2021年仍在更新。
Ⅹ 音頻編程語言列表
List of audio programming languages
維基網路地址:
https://en.wikipedia.org/wiki/List_of_audio_programming_languages
Jump to navigationJump to search
This is a list of notable programming languages optimized for sound proction, algorithmic composition, and sound synthesis.
ABC notation, a language for notating music using the ASCII character set
ChucK, strongly timed, concurrent, and on-the-fly audio programming language
Real-time Cmix, a MUSIC-N synthesis language somewhat similar to Csound
Common Lisp Music (CLM), a music synthesis and signal processing package in the Music V family
Csound, a MUSIC-N synthesis language released under the LGPL with many available unit generators
Extempore, a live-coding environment which borrows a core foundation from the Impromptu environment
FAUST, Functional Audio Stream, a functional compiled language for efficient real-time audio signal processing
Hierarchical Music Specification Language (HMSL), optimized more for music than synthesis, developed in the 1980s in Forth
Impromptu, a Scheme language environment for Mac OS X capable of sound and video synthesis, algorithmic composition, and 2D and 3D graphics programming
JFugue, a Java and JVM library for programming music that outputs to MIDI and has the ability to convert to formats including ABC Notation, Lilypond, and MusicXML
jMusic
JSyn
Kyma (sound design language)
Max/MSP, a proprietary, molar visual programming language aimed at sound synthesis for music
Music Macro Language (MML), often used to proce chiptune music in Japan
MUSIC-N, includes versions I, II, III, IV, IV-B, IV-BF, V, 11, and 360
Nyquist
OpenMusic
Pure Data, a molar visual programming language for signal processing aimed at music creation
Reaktor
Sonic Pi
Structured Audio Orchestra Language (SAOL), part of the MPEG-4 Structured Audio standard
SuperCollider
SynthEdit