[ M3RiM @ 28.03.2020. 18:08 ] @
Pozdrav

Način na koji se prije pozivao zvuk jeste
=PlaySound("C:\WINDOWS\media\chord.wav")

Googlao sam i pročitao da taj metod ne radi u 64-Bit-nom sistemu. U to sam se i lično uvjerio.

Da li neko može pomoći oko ovoga.

Meni konkretno treba da, kada u Formi kliknem na Box/Polje (koji predstavlja audio fajl iz tabele), da se taj audio fajl pokrene/zasvira.

Pokusao sam na ovaj način:

Private Sub Zvuk_Click()
Sub PlayActiveCellSound()
End Sub

Pokusavao sam PlayActiveSound(), PlayActiveFieldSound()
ali uvijek "Compile Error: Expected End Sub"

Iskreno, nisam programer u VBA, i treba mi konkretna pomoc

Hvala i pozdrav
Merim
[ bokinet @ 28.03.2020. 19:40 ] @
Code:


Public Declare PtrSafe Function sndPlaySound32 Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

Const SND_SYNC = &H0 ' (Default) Play the sound synchronously. Code execution pauses until sound is complete.
Const SND_ASYNC = &H1 ' Play the sound asynchronously. Code execution does not wait for sound to complete.
Const SND_NODEFAULT = &H2 ' If the specified sound is not found, do not play the default sound (no sound is played).
Const SND_MEMORY = &H4 ' lpszSoundName is a memory file of the sound. Not used in VBA/VB6.
Const SND_LOOP = &H8 ' Continue playing sound in a loop until the next call to sndPlaySound.
Const SND_NOSTOP = &H10 ' Do not stop playing the current sound before playing

Public Sub DoTest()

    sndPlaySound32 "C:\Windows\Media\Windows Ringout.wav", SND_SYNC

End Sub

[ M3RiM @ 29.03.2020. 19:32 ] @
Pozdrav

Taj Code sam nalazio na googlu i on NE FUKNCIONIŠE. Barem ne kod mene na 64Bit sistemu.
Uostalom NE ŽELIM da jednim klikom pokrećem uvijek isti ton nego na osnovu izabranog podatka iz tabele povuce izabrani ton.

Tacnije, pravim aplikaciju UČENJE ENGLESKOG JEZIKA za djecu.
Baza mi je tabela koja sadrži "Našu riječ", "Englesku riječ", "Sliku" i "Zvuk (Izgovor riječi na engleskom)"

U Query-ju pomoću naredbe RND (random) bira riječ i to lijepo prikaže u Formi.
Naravno u istoj Formi je polje "Zvuk" koje treba da na "On klick()" odsvira prikačeni audio fajl iz tabele za (random) izabranu riječ.

Hvala na svakoj pomoći

Pozdrav
[ bokinet @ 30.03.2020. 00:05 ] @
Ocigledno ili da niste nesto lepo pojasnili ili da sa vase strane nije uradjeno sve ono sto ste sami naveli da je potrebno.

Na primer, da napravite f-ju koja ima ulazni parametar koji predstavlja lokaciju wav file-a koji se pusta i recimo opciono koji se tkz. flag koristi prilikom emitovanja.

Takvu f-ju posle pozivate iz ostatka vaseg koda bilo da je neko dugme sa forme i sl.

Takodje za emitovanje/pustanje wav file odnosno multimedijalnog sadrzaja preko winmm.dll potrebni su i odgovarajuci codec filteri koji omogucavaju reprodukciju zapisa.
Obicno dolaze uz operativni sistem (za wav i sl.) ali recimo ne nuzno za mp3. Znaci niste u mogucnosti da pustate mp3 fileove.

Iz prilozenog se vidi da hocete da vam neko uradi sve a ne da se sami potrudite da napisete kod (kako bi savladali elementarne stvari kao na primer rad sa f-jima i sl.)

U prilogu imate primer u MS Access 2016 64-bit verziji.
- primer reprodukcije jednog file
- primer ucitavanje liste file-ova iz nekog folder i naknadno reprodukovanje odabranog file iz liste na zahtev (recimo klik na dugme ili duplim klikom na odabrani zapis u listi gde su file-ovi izlistani);

Sve ostalo sto ste naveli slucajni odabir i sl. je dodatno ali ne i nuzno za sustinu problema i vase tvrdnje da nece da radi pod 64-bit verziji (screen shot u prilogu).





[ M3RiM @ 31.03.2020. 17:51 ] @
Pozdrav bokinet

Kao prvo bih ti se puno zahvalio na priloženoj bazi. zaista radi. ;)

Kako sam gore u prvom obraćanju rekao, NISAM VBA PROGRAMER, te smatram da me tako i trebate shvatiti.
Zbog toga sam se ovdje i obratio za pomoć

Pokušao sam na osnovu ova 3 načina puštanje zvuka u bazi koju si mi poslao da se prilagodim u ali nakon nekoliko sati pokušavanja sam ipak ostao bez uspjeha.

No vratimo se temi.

U prilogu je moja baza pa možete pratiti o čemu dalje govorim:

Moja zamisao je bila slijedeća:
- Tabela "Rijeci-baza" sadrži prikačene zvučne fajlove - kao Attachment (izmedju ostalog i druge podatke)
- Forma "Prikaz-ponudjene rijeci" u Tabular-Layout prikazuje 4 riječi koje su odabrane u Queryju "Trenutni test query"
- U navedenoj formi želim da klikom na polje "[zvuk]" odsvira prikaceni fajl iz tabele za taj redak.

NAPOMENA: Uočio sam da Access očitava samo WAV fajlove... Zanima me da li on može da radi i sa M4A ili MP3 fajlovima.
Puno su lakši i nece toliko opterećivati bazu nakon što unesem ca. 1.000 -2.000 zvukova, (ovi zvukovi u M4A formatu su 20-30kB teški, dok su isti u WAV formatu težine 200-300 kB)

Ukoliko se moraju koristiti WAV fajlovi onda smatram da ne dolazi u obzir vezati zvučne fajlove za bazu, nego povezivati riječi iz kolone "Engleski" sa nazivima fajlova te ih pozvati na taj način... to bi bilo zapravo nešto slično ovome kako je bokinet odradio u svojoj bazi. ali naravno uzmite u obzir moju bazu.

Nadam se da sam uspio objasniti moj problem i da ćete mi pomoći u rješavanju.

Hvala i pozdrav.
[ bokinet @ 31.03.2020. 22:07 ] @
Postovani,

Nema na cemu.

Kada budem imao vise slobodnog vremena videcu da vam dodatno uputim moguca resenja i pogledam ovo sto ste dostavili u vasem prilogu u poslednjem odgovoru.

Sto se tice dela oko multimedijalnog sadrzaja i formata koje je moguce reprodukovati preko API f-je koja se koristi vec sam vam na to dao odgovor.
Znaci moguce je samo WAV i neki drugi stari formati.

U slucaju da zelite da reprodukujete mp3 ili ostale novije formate potrebno je koristiti neke druge API f-je ili neke dodatne eksterne biblioteke (libove) koje to rade za vas ili pak sami da napravite kod koji to radi.

Takodje ako na racunaru postoji Windows Media Player onda je i verovatno moguce isti dodati kao kontrolu u MS Access i istim upravljati - tu je onda pozeljno da multimedijalni sadrzaj bude u obliku file gde vi onda iz koda prosledjujete fizicku lokacju tog file Windows Media Player kontroli. Moguce je vrsiti reprodukciju u tom slucaju svih podrzanih multimedijalnih formata.

Sto se tice dela oko samih zvucnih zapisa.
Mislim da je racionalnije i bolje da sve te zvucne zapise belezite na disk u formi file-a a ne kao BLOB data (binary data) u MS Access bazi.
U bazi samo mozete cuvati naziv i lokaciju file za svaki zapis gde lokacija moze da bude fizicka ili skracena (na primer fizicka lokacija 'c:\moj programa\media\reci na a\apple.wav' ili 'reci na a\apple.wav' a da ostatak putanje do fizicke lokacije 'c:\moj programa\media\' dopunjavate iz koda gde ta vrednost takodje moze da bude promenljiva/parametar takodje u nekoj tabeli koja se zove 'parametri programa' zapis koji ima ime 'media folder root'

U prilogu imate na osnovu mog vec datog primera pridodati deo za Windows Media Player kao primer kako se moze iskoristiti.

Pored MS Access baze imate i multimedijalni uzorak i screenshotove kako se dodaje Windows Media Player controla u priloazenom zip fileu.

Vi dodatno mozete izvrsiti testiranje ostalih mogucnosti i podesavanja WMP u skladu sa vasim potrebama u aplikaciji.

Potrebno je da imate na racunaru vec instaliran Windows Media Player kako bi mogli da koristite tu kontrolu u MS Access.

Isti mozete preuzeti sa MS site.




[ M3RiM @ 02.04.2020. 16:37 ] @
Pozdrav,

Da, to je lijepa varijanta. Korisiti ActiveX Control -> Windows Media Player.
U tom slučaju možemo pozivati bilo koji audio format.
Windows media player dodje automatski instaliran u Windowsu, tako da ne mislim da bi on trebao predstavljati problem.

Eh sad, ono što bi meni trebalo jeste pozivanje fajla iz foldera "C:\...\zvukovi" koji ima isti naziv kao učitana riječ iz polja [Engleski] u formi [Prikaz - ponudjene rijeci] kao npr:
Code:
    WMP.URL = Application.CurrentProject.Path & "\Zvukovi\[Engleski]"
ili
    WMP.URL = Application.CurrentProject.Path & "\Zvukovi\Forms![Prikaz - ponudjene rijeci]![Engleski]"
ili
    WMP.URL = Application.CurrentProject.Path & "\Zvukovi\Forms![Prikaz - ponudjene rijeci]![Engleski].m4a"

međutimo, NARAVNO ovo ne funkcioniše!
Pa čak ni u slučaju kada u se u polju [Engleski] nalazi riječ sa ekstenzijom fajla npr.: house.m4a

Zanima me kako to izvesti. i tu bi bilo rješenje mom problemu.

Hvala i pozdrav
[ bokinet @ 03.04.2020. 07:48 ] @
Postovani,

U prilogu imate primer tabele za kreiranje index-a zvukova za reprodukciju kao i primer u kodu kako da iz iste tabele prozovete neki zapis.

Ovo je primer i moze na druge nacine da se uradi shodno potrebi.

Pored pomenutog primera tabele posto ste rekli da je u pitanju neki recnik ili sta vec imate i primer tabele za to gde se pored parnjaka reci (SR - EN) dodatno upisuje i zvuk za EN a koji predstavlja naziv u prvoj tabeli.

Sada je potrebno uraditi vezbe radi sa vase strane kako da na osnovu reci i sl. dobijete zapis u prvoj tabeli i na osnovu vec datog primera isti pustite.



[ M3RiM @ 05.04.2020. 22:48 ] @
Pozdrav bookinet.

Zahvaljujući tvom zadnjem prilogu riješen je moj problem. Zadatak za vježbu i nije bio tako težak ;). U Code-u sam, umjesto "generacija" stavio "[Engleski]". A [Engleski] je Text field iz forme koja mi prikazuje izabranu riječ.

Što se tiče unosa novih riječi u bazu napravio sam jednu olakšicu.
Tabela "BazaRijeci" sadrzi ""našu riječ" i "englesku riječ".
Tabela "AttachmentUrl" sadrži "Url" i "extenziju".
Zatim sam u jednom Queryju spoijo podatke iz te dvije tabele u jedno polje kao:
EngleskiUrl: [Url] & "" & [Test]![Engleski] & "" & [Ekstenzija]
tako da mi on sam za svaku riječ napiše konačan Url npr.: "Audio\house.m4a"

Međutim, ostale su mi još dvije neriješene stvari:

1. Code mi jedino hoce da cita "Url" iz tabele "media". Nijedan drugi naziv tabele ne prihvata
U Code-u na dva mjesta stoji "media" i kada na ta dva mjesta unesem naziv aktuelne tabele, Code ne radi. Sve ostalo mogu mijenjati ali cim to promijenim, neće da radi.
Zbog ovog sam bio prinudjen napraviti tabelu "media" u koju preko Append i Delete Queryja šaljem odabrane podatke i brišem stare podatke.
Primjetio sam da mi je to u manjoj mjeri usporilo rad baze.

2. Druga stvar je:
S obzirom da sada radim sa fajlovima koji su izvan baze.
Na koji način mogu da dobijem izlistane riječi iz baze za koje ne postoji audio fajl sa istim nazivom na lokaciji "Audio\".
Zapravo, potreban mi je uslov [EnlgeskiUrl] = NOT TRUE
Ovo mi je važno kako bi mogao provjeriti da li sam obezbjedio sve audio fajlove za riječi iz baze

Pozdrav
[ bokinet @ 06.04.2020. 00:01 ] @
Primecujem da nisti analizirali i razumeli primere koje sam vam dao do kraja.

Predlazem da prvo iste razumete pa tek onda da krenete u rad.

Sve sto ste pitali samostalnom analizom bi dobili odgovore na pitanja koje ste postavili u poslednjem vasem post-u.

Posaljite radni uzorak sta ste do sada uradili kako bih vam kad stignem uputio eventualno neke sugestije - ujedno kako bi se i videlo i sagledalo celokupno stanje stvari.
[ M3RiM @ 08.04.2020. 12:31 ] @
Postovani

Vaše priloge sam detaljno razmatrao od samog pocetka, međutim oni nisu 100% odgovarali konceptu kojim sam ja pristupio i ideji koju sam imao u svojoj glavi. Tako da sam ja koristio ono što je meni odgovaralo.

U prilogu je moja baza zajedno sa nekih ca.100 zvukova (riječi)

Pogledajte pa vidite da li mi mozete pomoći oko prethodno postavljena 2 pitanja, jer i dalje sam stava da ih sam ne znam riješiti.
Možda sam krenuo na teži i komplikovaniji način, možda i amaterski, ali to je kako ja znam i nadam se da mi na tome nećete zamjeriti.
[ bokinet @ 08.04.2020. 19:16 ] @
Niste lepo implementirali navedeni primer ali isto i niste razumeli sve.
U prilogu imate opet date primere f-je koje rade sa vasom tabelom gde se ne koristi tabela iz primer.
Takodje imate primer kako mozete izvrsiti proveru da li fileovi postoje ili ne.
Sve je data u okviru dela koda za test formu.