Wav, загрузка и проигрывание

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Wav, загрузка и проигрывание

Сообщение d3drm » 22.09.2005 (Чт) 10:15

Честное слово, искал по форуму, но все, что нашел не совсем касается того, что мне нужно.

Да, видел структуры для загрузки wav, но не более. А мне нужно загрузить бинарно wav файл в программу и проиграть его, причем желательно, чтобы процесс проигрывания был как можно более открытым... Надеюсь я выразился понятно...
ХЎ

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 22.09.2005 (Чт) 15:52

Флаг SND_MEMORY не то?
Lasciate ogni speranza, voi ch'entrate.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 22.09.2005 (Чт) 15:54

можно немного подробнее?
ХЎ

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 22.09.2005 (Чт) 15:56

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

· lpszSound
A string that specifies the sound to play. This parameter can be either an entry in the registry or in WIN.INI that identifies a system sound, or it can be the name of a waveform-audio file. (If the function does not find the entry, the parameter is treated as a filename.) If this parameter is NULL, any currently playing sound is stopped.

· fuSound
Flags for playing the sound. The following values are defined:
SND_ASYNC
The sound is played asynchronously and the function returns immediately after beginning the sound. To terminate an asynchronously played sound, call sndPlaySound with lpszSoundName set to NULL.
SND_LOOP
The sound plays repeatedly until sndPlaySound is called again with the lpszSoundName parameter set to NULL. You must also specify the SND_ASYNC flag to loop sounds.
SND_MEMORY
The parameter specified by lpszSoundName points to an image of a waveform sound in memory.

SND_NODEFAULT
If the sound cannot be found, the function returns silently without playing the default sound.
SND_NOSTOP
If a sound is currently playing, the function immediately returns FALSE, without playing the requested sound.
SND_SYNC
The sound is played synchronously and the function does not return until the sound ends.


Ты загоняешь нужный WAV в буфер (например, байтовый массив) и выполняешь sndPlaySound, указывая буфер (первый элемент массива) в качестве источника.
Lasciate ogni speranza, voi ch'entrate.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 22.09.2005 (Чт) 16:37

Еще есть DirectSound, imho самая простая часть DirectX.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 22.09.2005 (Чт) 21:18

идея в том, чтобы сделать небольшой проигрыватель, используя как можно более низкий уровень программирования, если так можно сказать...
ХЎ

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.09.2005 (Чт) 21:42

d3drm писал(а):идея в том, чтобы сделать небольшой проигрыватель, используя как можно более низкий уровень программирования, если так можно сказать...

На асме? :-?
Изображение

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 22.09.2005 (Чт) 22:13

не, не язык программирования, а стиль... ну как бы объяснить... чтобы как можно меньше использовать сторонних библиотек...
ХЎ

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Сообщение JohnK » 22.09.2005 (Чт) 22:15

Верно! Асм тебе в помошь! Кто ж пишет на VB желая работать на низком уровне? :D
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Сообщение JohnK » 22.09.2005 (Чт) 22:27

Ну тогда описывай функции из нужных тебе библиотек... типа

Код: Выделить всё
Public Declare Function GetCurrentProcessId Lib "kernel32" () As Long
...
pid = GetCurrentProcessId()


Да ладно, че мусолить! Бери:

Код: Выделить всё
Option Explicit

Public Const SND_ASYNC = &H1      ' Play asynchronously
Public Const SND_NODEFAULT = &H2  ' Don't use default sound
Public Const SND_MEMORY = &H4    ' lpszSoundName points to a memory file
Public Const SND_FILENAME& = &H20000

Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long
Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" _
        (lpszSoundName As Any, ByVal uFlags As Long) As Long

Public Sub BeginPlaySound(ByVal sFileName As String)
    PlaySound sFileName, 0, SND_ASYNC Or SND_FILENAME Or SND_NODEFAULT
End Sub

Public Sub EndPlaySound()
    PlaySound ByVal vbNullString, 0, 0
End Sub
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 22.09.2005 (Чт) 23:13

чой-то либо я непонятно говору, либо вы не втыкаете... мне нужно чтобы весь файл был у меня на руках, чтобы я мог его изменять и смотреть содержимое, а уж проигрывать - это второстепенная задача.
ХЎ

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Сообщение JohnK » 22.09.2005 (Чт) 23:32

Ну тогда юзай AllocateMemory, считывай в него бинарно звук. файл. И юзай с флагом SND_MEMORY, передовая хендл памяти...
Или опять не так? :lol:
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 22.09.2005 (Чт) 23:50

вот буду посмотреть...
ХЎ

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 23.09.2005 (Пт) 0:10

Хорошо у тебя с русский :lol:
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 23.09.2005 (Пт) 10:17

*) Это не русский, это албанский :)

d3drm, объясни еще раз, что надо. Загружаешь, скажем, wav-файл в массив. Вот он, на руках у тебя. Меняй, смотри содержимое.

Кажется, я понимаю. Сбегай на www.wotsit.org и посмотри описание wave-формата. Тогда сможешь построить частотную характеристику.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 23.09.2005 (Пт) 10:59

Amed писал(а):Тогда сможешь построить частотную характеристику.

Если файл сжат алгоритмом, отличным от PCM (без сжатия), то не сможет. По крайней мере непосредственно из файла.
Lasciate ogni speranza, voi ch'entrate.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 23.09.2005 (Пт) 11:13

Тогда ему вообще незачем рыпаться :)

А как не-непосредственно из файла? Проигрывать и снимать частоту с выхода?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 23.09.2005 (Пт) 12:03

Amed писал(а):Проигрывать и снимать частоту с выхода?

Типа того, только это называется "сэмплировать".
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот, SemrushBot и гости: 23

    TopList