Arsip: PlaySound untuk beberapa file *.wav sekaligus?
more 17 years ago
gormet
Salam,
saya pengen buat aplikasi PlaySound, dengan cara
membaca file text yang di ketik di Component Edit (ed_terbilang).
berikut ini file .wav nya:
satu
dua
tiga
empat
lima
enam
tujuh
delapan
sembilan
sepuluh
sebelas
belas
puluh
seratus
ratus
seribu
ribu
sejuta
juta
saya menggunakan code berikut:
procedure TForm1.btn_BacaClick(Sender: TObject);
begin
PlaySound (PChar (ed_terbilang.Text),
0, snd_Async);
end;
code di atas hanya berhasil mengeluarkan suara(file .wav)
jika hanya satu nama file .wav yang berada di edit(ed_terbilang).
seperti: satu, dua, sepuluh, seribu, dst...
namun jika nama file .wav yang berada di edit(ed_terbilang)
terdiri dari dua atau lebih, seperti: dua belas, seratus tiga puluh, dst...
maka program tidak mengeluarkan suara sama sekali.
bagaimana cara nya agar nama file *.wav pada di edit(ed_terbilang)
yang terdiri dari dua atau lebih, dapat di "playSound" sehingga
suaranya terdengar?
makasih sebelumnya :)
wassalam..
more 17 years ago
snip3r
Kebetulan saya sedang membuat aplikasi serupa. Berikut ini codingnya:
procedure TfrmDisplay.PlayAngka(angka: string);
var i : byte;
begin
for i := 1 to length(angka) do begin //baca panjang string
SebutAngka(angka[i]); //mainkankan angka satu persatu
end;
end;
procedure TfrmDisplay.SebutAngka(angka: Char);
begin
if angka = '0' then
NamaFile := ExtractFilePath(Application.ExeName) + 'Kosong.WAV'
else if angka = '1' then
NamaFile := ExtractFilePath(Application.ExeName) + 'Satu.WAV'
else if angka = '2' then
NamaFile := ExtractFilePath(Application.ExeName) + 'Dua.WAV'
else if angka = '3' then
NamaFile := ExtractFilePath(Application.ExeName) + 'Tiga.WAV'
else if angka = '4' then
NamaFile := ExtractFilePath(Application.ExeName) + 'Empat.WAV'
else if angka = '5' then
NamaFile := ExtractFilePath(Application.ExeName) + 'Lima.WAV'
else if angka = '6' then
NamaFile := ExtractFilePath(Application.ExeName) + 'Enam.WAV'
else if angka = '7' then
NamaFile := ExtractFilePath(Application.ExeName) + 'Tujuh.WAV'
else if angka = '8' then
NamaFile := ExtractFilePath(Application.ExeName) + 'Delapan.WAV'
else if angka = '9' then
NamaFile := ExtractFilePath(Application.ExeName) + 'Sembilan.WAV';
PlaySound(pchar(NamaFile), 0, SND_FILENAME);
end;
Procedure TFrmDisplay.Button1Click(Sender: Object);
begin
PlayAngka(Edit1.text); //mainkan setiap angka pada Edit1
end;
_____________________________________
Semoga bermanfaat.
We Live To Share
http://armansyah.web.id
more 17 years ago
Bahrul_power
Pakai fungsi procedure ini aja :
[list:29c9ba08d6]
procedure Katakan(x:String);
Socket: TCustomWinSocket);
var i,s:Integer;
filewav : pchar;
fdum : string[12];
cari : boolean;
st:string;
begin
tdum := edit1.text;
filewav := nil;
while (x<>'') do
begin
fdum := copy(tdum,0,pos(' ',x)-1); { ambil kata }
delete(tdum,1,pos(' ',x)); { hapus kata yg sudah diambil }
st:=fdum+'.wav';
sndPlaySound(pchar(st),SND_SYNC);
if fdum='' then abort;
end;
strdispose(filewav);
end;
[/list:u:29c9ba08d6]
cara panggilnya :
[list:29c9ba08d6]
procedure TForm1.Button1Click(Sender: TObject);
begin
katakan(edit1.text);
end;
[/list:u:29c9ba08d6]
more 17 years ago
gormet
Terimakasih atas jawabannya... :)
Snip3r mengetik: Kebetulan saya sedang membuat aplikasi serupaasyik ada temen tuk "sharing" masalah yang sama.
Snip3r menulis:menambahkan dikit: mungkin mas Snip3r lupa mendeklarasikan variable NamaFile, atau juga mas Snip3r mendeklarasikannya secara global sehingga tidak tampil pada code di atas.procedure TfrmDisplay.SebutAngka(angka: Char); begin if angka = '0' then NamaFile := ExtractFilePath(Application.ExeName) + 'Kosong.WAV' else if angka = '1' then NamaFile := ExtractFilePath(Application.ExeName) + 'Satu.WAV' else if angka = '2' then NamaFile := ExtractFilePath(Application.ExeName) + 'Dua.WAV' else if angka = '3' then NamaFile := ExtractFilePath(Application.ExeName) + 'Tiga.WAV' else if angka = '4' then NamaFile := ExtractFilePath(Application.ExeName) + 'Empat.WAV' else if angka = '5' then NamaFile := ExtractFilePath(Application.ExeName) + 'Lima.WAV' else if angka = '6' then NamaFile := ExtractFilePath(Application.ExeName) + 'Enam.WAV' else if angka = '7' then NamaFile := ExtractFilePath(Application.ExeName) + 'Tujuh.WAV' else if angka = '8' then NamaFile := ExtractFilePath(Application.ExeName) + 'Delapan.WAV' else if angka = '9' then NamaFile := ExtractFilePath(Application.ExeName) + 'Sembilan.WAV'; PlaySound(pchar(NamaFile), 0, SND_FILENAME); end;
procedure TfrmDisplay.SebutAngka(angka: Char);
var
NamaFile: string;
begin
if angka = '0' then
NamaFile := ExtractFilePath(Application.ExeName) + 'Kosong.WAV'
else if angka = '1' then
NamaFile := ExtractFilePath(Application.ExeName) + 'Satu.WAV'
else if angka = '2' then
NamaFile := ExtractFilePath(Application.ExeName) + 'Dua.WAV'
else if angka = '3' then
NamaFile := ExtractFilePath(Application.ExeName) + 'Tiga.WAV'
else if angka = '4' then
NamaFile := ExtractFilePath(Application.ExeName) + 'Empat.WAV'
else if angka = '5' then
NamaFile := ExtractFilePath(Application.ExeName) + 'Lima.WAV'
else if angka = '6' then
NamaFile := ExtractFilePath(Application.ExeName) + 'Enam.WAV'
else if angka = '7' then
NamaFile := ExtractFilePath(Application.ExeName) + 'Tujuh.WAV'
else if angka = '8' then
NamaFile := ExtractFilePath(Application.ExeName) + 'Delapan.WAV'
else if angka = '9' then
NamaFile := ExtractFilePath(Application.ExeName) + 'Sembilan.WAV';
PlaySound(pchar(NamaFile), 0, SND_FILENAME);
end;
Procedure dari mas Snip3r bisa menjadi pilihan untuk program antrian.
namun program antrian yang pengen saya buat "penyebutan angka nya" berbeda
dengan program antrian mas Snip3r.
penyebutan angka dengan menggunakan prosedure mas Snip3r:
dari edit1.text dibaca/output speaker
102 satu kosong dua
10 satu kosong
penyebutan angka yang pengen saya buat:
dari edit1.text dibaca/output speaker
102 seratus dua
10 sepuluh
berikut ini langkah2 penyebutan angka yang sedang saya buat:
1. edit_angka.text terisi angka dari database
2. edit_terbilang.text diisi angka yang sudah diubah menjadi terbilang (function dari kang ImanD)
3. playSound dari edit_terbilang.text
Bahrul_power mengetik: procedure Katakan(x:String); Socket: TCustomWinSocket); var i,s:Integer; filewav : pchar; fdum : string[12]; cari : boolean; st:string; begin tdum := edit1.text; filewav := nil; while (x<>'') do begin fdum := copy(tdum,0,pos(' ',x)-1); { ambil kata } delete(tdum,1,pos(' ',x)); { hapus kata yg sudah diambil } st:=fdum+'.wav'; sndPlaySound(pchar(st),SND_SYNC); if fdum='' then abort; end; strdispose(filewav); end;mas Bahrul_power, saya udah coba pake prosedure nya, namun muncul error:
[Error] U_Num2Sound.pas(85): Unknown directive: 'Socket' [Warning] U_Num2Sound.pas(93): String constant truncated to fit STRING[12] [Error] U_Num2Sound.pas(26): Unsatisfied forward or external declaration: 'TForm1.Katakan' [Fatal Error] P_Num2Sound.dpr(5): Could not compile used unit 'U_Num2Sound.pas'saya tidak mengerti maksudnya kode:
Socket: TCustomWinSocket);
Lalu saya coba disable
procedure Katakan(x: String);
//Socket: TCustomWinSocket;
var
i,s:Integer;
filewav : pchar;
fdum : string[12];
cari : boolean;
st:string;
begin
fdum := 'ed_terbilang.text';
filewav := nil;
while (x<>'') do
begin
fdum := copy(fdum,0,pos(' ',x)-1); { ambil kata }
delete(fdum,1,pos(' ',x)); { hapus kata yg sudah diambil }
st:=fdum+'.wav';
sndPlaySound(pchar(st),SND_SYNC);
if fdum='' then abort;
end;
strdispose(filewav);
end;
program jalan tapi tidak berfungsi, malahan muncul peringatan:
[Warning] U_Num2Sound.pas(94): String constant truncated to fit STRING[12] [Hint] U_Num2Sound.pas(88 ): Variable 'i' is declared but never used in 'Katakan' [Hint] U_Num2Sound.pas(88 ): Variable 's' is declared but never used in 'Katakan' [Hint] U_Num2Sound.pas(91): Variable 'cari' is declared but never used in 'Katakan'
more 17 years ago
snip3r
@gormet:
- Program yg sy buat tinggal dimodifikasi agar bisa menyebutkan bilangan tertentu seperti 11 (sebelas), 12 (dua belas), dst. Kemarin sy dapat patternnya, ada yang pake fungsi pemilihan/kondisi, tapi sy lupa sy dapet dari mana.
- Variablenya sy deklarasikan global, Soalnya langsung sy copy/paste dari program yg sy buat, kan bisa dibuat sendiri (ha...ha, kumat malesnya).
- Aplikasi yg sy buat masih seadanya, biasa lagi kejar waktu (deadline), keburu diminta ama client, ya udah main kebut aja, lagian budgetnya sama aja dan gak ada neko-neko. Hehe...
____________________________
We Live To Share
http://armansyah.web.id
more 17 years ago
gormet
Snip3r mengetik: - Program yg sy buat tinggal dimodifikasi agar bisa menyebutkan bilangan tertentu seperti 11 (sebelas), 12 (dua belas), dst. Kemarin sy dapat patternnya, ada yang pake fungsi pemilihan/kondisi, tapi sy lupa sy dapet dari mana.mas snip3r, kan prosedur SebutAngka membaca text yg berupa angka(0,1,2,3,4,5,6,7,8,9). misal: 1134 dibaca--> satu satu tiga empat jadi menurut saya sulit klo masih berupa angka, tetapi outputnya pengen sebelas, DuaPuluhSatu, dll makanya saya menggunakan fungsi dari kang imanD, yang mengubah angka ke terbilang. sehingga mudah utk memanggil angka sepuluh, Seratus, dll. tetapi saya kesulitan ketika ingin memanggil angka(misal) Dua Puluh Empat, karena terdiri dari lebih dua kata. sebenarnya saya punya ide tapi ga tau code delphi nya, misal di ed_terbilang.text diketik: !=================! ! Dua Puluh Empat ! !=================! jadi yang pertama dibaca (di PlaySound) Dua.wav, lalu kata "Dua" dihapus dari ed_terbilang.text. sehingga ed_terbilang.text menjadi: !=================! ! Puluh Empat ! !=================! yang kedua dibaca (di PlaySound) Puluh.wav, lalu kata "Puluh" dihapus dari ed_terbilang.text. sehingga ed_terbilang.text menjadi: !=================! ! Empat ! !=================! yang ketiga/terakhir dibaca (di PlaySound) Puluh.wav beres deh... just in my mind.... code nya blum tau hiks.. hiks.. ada yang bisa bantu...
more 17 years ago
LuriDarmawan
@rekanz rekanz,
mmm...
ada baiknya melirik sedikit ke aplikasi TukangOmong. Text2Speech ala Indonesia.
ref: http://kioss.com/kioss/aTukangOmong.txt
Dengan demikian tidak perlu lagi berkutik kutik di cara penyampaian suara.
merekam per kata, dsb.
cukup menjalankan prosedur Terbilang apa adanya, kemudian sendmessage untuk mengucapkan teks yang dimaksudkan.
sebagai wacana saja.
silahkan dicoba.
fyi,
TukangOmong ini project iseng masa lalu, sekitar tahun 2003-an.
jadi maaf saja kalo banyak yang sudah kadaluarsa.
SemangaT!
more 17 years ago
gormet
Makasih masukannya bos Luri... :)
tapi blum saya coba, karena masih mencoba yang pake function Num2Word.
dengan menggunakan code berikut:
procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
begin
edit2.text:=copy(edit1.Text,1,4);
s:=edit1.Text;
delete(s,1,4);
edit1.Text:=s;
end;
program di running, lalu
input dimasukan pada edit1.text ===> 123456789
setelah button1 di klik, maka:
edit1.text ===> 56789
edit2.text ===> 1234
button1 di klik lagi menjadi:
edit1.text ===> 9
edit2.text ===> 5678
button1 di klik lagi menjadi:
edit1.text ===>
edit2.text ===> 9
yang sedang saya cari adalah bagaimana jika input
dimasukan pada edit1.text ===> seratus ribu empat puluh
lalu ketika button1 di klik, maka:
edit1.text ===> ribu empat puluh
edit2.text ===> seratus
button1 di klik menjadi:
edit1.text ===> empat puluh
edit2.text ===> ribu
button1 di klik menjadi:
edit1.text ===>
edit2.text ===> puluh
mohon pencerahannya ...
more 17 years ago
pebbie
pake TStrings aja.. delimiternya pake spasi, tiap di klik salin item[0] ke edit 2 dan delete indeks ke 0
more 17 years ago
imunk
iya betul kata mas pebbie, pake tstrings kayaknya lebih mudah mas qormet,
procedure button1click;
var liststr : tstrings;
I : integer;
begin
liststr:=tstrings.create;
liststr.delimiter:=' ';
liststr.delimitedtext:=edit1.text;
for I:=0 to liststr.Count - 1 do
BacaData(liststr[I]); //---> mohon koreksi jika salah
liststr.free;
end;
//procedure ini ngedit yg punya mas qormet, maaf kalo gak jalan
procedure BacaData(teks:string);
begin
PlaySound (PChar (teks),
0, snd_Async);
end;
gitu deh mas qormet semoga membantu, mohon maaf jika salah. belum dicoba (gak punya file wav nya... :mrgreen: )more ...
- Pages:
- 1
- 2
reply |
Report Obsolete
AI Forward
🚀 We're thrilled to partner with Alibaba Cloud for "AI Forward - Alibaba Cloud Global Developer Summit 2025" in Jakarta! Join us and explore the future of AI. Register now:
https://int.alibabacloud.com/m/1000400772/
#AlibabaCloud #DeveloperSummit #Jakarta #AIFORWARD
Last Articles
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 5 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 5 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 5 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 5 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 5 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 5 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 5 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 13 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 13 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 13 years ago
Random Topic
- nanya delphi lite, turbo delphi, & turbo explorer
by delphiku in Hal umum tentang Pascal Indonesia more 18 years ago - Kenapa ya ??????????
by umarbakri in Hal umum tentang Pascal Indonesia more 19 years ago - Bewara SQL Lagi...
by reminder2k1 in MsSQL more 17 years ago - Undo dan Redo di Delphi
by dadanarifin in Tip n Trik Pemrograman more 15 years ago - service pack delphi 6 dan 7
by wati in Multimedia & Graphic Enhancement more 13 years ago - Animasi Loading saat koneksi
by r_rafer in Network, Files, I/O & System more 17 years ago - read assembler di delphi dengan CPORTLIB
by w4rek in Enginering more 18 years ago - output yang dipotong neh...Pest pertama neh.....
by p2bf in Hal umum tentang Pascal Indonesia more 18 years ago - Print di Quick Report dari file txt
by irene in Reporting more 17 years ago - Function Untuk Liat versi Mssql Atau MySql
by saysansay in MsSQL more 19 years ago