ChASnock
18 Dec 2010, 19:08
Собственно, subject.
Например, если хочешь сделать синусоидальный звук, делай что-нть такое:
repeat
Sleep(0.0001);
Записать_в_выход(sin(t));
inc(t, dt);
until what;
Так вот: что есть это такое?
Etoprostoya
19 Dec 2010, 00:29
Пользуйся лучше стандартным API. DirectSound.
Guevara-chan
19 Dec 2010, 12:26
Цитата(etoprostoya @ 19 Dec 2010, 00:29)

Пользуйся лучше стандартным API. DirectSound.
Так есть же BASS и FMod ? Но вообще, конечно, можно и так:
http://forums.purebasic.com/english/viewtopic.php?t=8786Как вариант (ну, не для ОПа, конечно), стоит еще ознакомиться с
http://forums.purebasic.com/english/viewto...=12&t=41844
ChASnock
22 Dec 2010, 16:51
Цитата(etoprostoya @ 19 Dec 2010, 02:29)

Пользуйся лучше стандартным API. DirectSound.
А вот с этого места поподробнее...
Etoprostoya
22 Dec 2010, 17:41
Что подробнее? Читай мануал к DirectX, смотри примеры, пользуйся готовыми библиотеками. Сам я DirectSound никогда не пробовал, так что больше посоветовать ничего не могу, разве что посоветую воспользоваться предыдущим советом (примером) Хроно
Нафига нужен синусоидальный звук?
Etoprostoya
22 Dec 2010, 18:35
Чтоб послушать как он звучит)) Интересно же, типа.
отвратительно звучит, мерзко и скучно... прога для генерации его где-то валялась, в инете полно таких.
tolich
22 Dec 2010, 21:08
Не мерзко, но таки скучно, чистый тон не может быть мерзким по определению.
Вообще, тут уже зависит от слушателя и от частоты...
Shurup
24 Dec 2010, 13:53
a виндозный beep(частота, длительность) не подходит?
ЕМНИП, в винде старше NT напрямую с портами могут работать лишь драйвера.
Код
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
tone:integer;
begin
Canvas.FillRect(ClientRect);
Canvas.Pen.Width:=2;
Canvas.MoveTo(0,0);
for i:=0 to 300 do
begin
tone:=Floor ( sin(i/20) * 100 +100);
Canvas.Pen.Color:=RGB(255,255-tone,255);
Canvas.lineTo(i*2, tone);
Application.ProcessMessages;
Windows.Beep(tone+100,60);
end;
end;
Etoprostoya
24 Dec 2010, 15:19
Beep - это встроенный динамик, а нужен звук в колонках.
ChASnock
25 Dec 2010, 13:40
Я уже давно слышал синусоидальный звук. Чистенький такой, типа "уууу". Но привел я его исключительно в качестве примера. Мне надо вообще управлять уровнем звука
Цитата(FBX @ 27 Dec 2010, 03:20)

Ууу...
Иии...
Ыыы...
Ззз...
Ааа...
Эээ...
Рррррррр...
Цыц, FBX!
ты чо?
Ууу...
Иии...
Ыыы...
Ззз...
Ааа...
Эээ...
Рррррррр...
Цыц, FBX!
Guevara-chan
27 Dec 2010, 11:05
Цитата
Мне надо вообще управлять уровнем звука
Кто-то мешает ?
ChASnock
16 Mar 2011, 11:06
Короче как в своей программе воспроизводить звуки из, так скажем, данного массива с wave-формой, не используя сторонние библиотеки?
tolich
16 Mar 2011, 11:21
PlaySound( danniyMassivSWaveformoj, NULL, SND_MEMORY );
ChASnock
16 Mar 2011, 11:33
И в каком формате должен быть массив
Guevara-chan
17 Mar 2011, 17:10
Цитата(ChASnock @ 16 Mar 2011, 11:33)

И в каком формате должен быть массив
Полное (включая "RIFF"-сигнатуру) представление стандартного WAV-файла в оперативной памяти. Заголовок там, если не ошибаюсь:
Код
Structure WaveHeader; WAVE File header structure.
RIFF.l ; RIFF Identification - Value: 'RIFF'
Length.l ; Length of the file minus 8 bytes.
WAVE.l ; RIFF Type Identification - Value: 'WAVE'
FMT.l ; Type of the following header - Value: 'fmt '
HLen.l ; Length of the following header - Value: 16
PCM.u ; PCM Identification - Value: 1 (for PCM sound)
Channels.u ; Number of Channels - Value: 1(mono)|2(stereo)
SR.l ; Sampling Rate - Value: 22050, 44100, etc.
BS.l ; Average number of Bytes/Second - Value: 22050, 44100, etc.
SL.u ; Sample Lenght - Value: 1 (1 byte per sample)
BR.u ; Bit Recording - Value: 8 or 16
HS.l ; Start of Data Header - Value: 'data'
Samples.l ; Number of Data Samples (1 per byte).
BinData.a[0]; Actual Data Samples (binary stream).
EndStructure
ChASnock
18 Mar 2011, 12:08
А ведь PlaySound работает с задержкой вроде... И если играется один звук то при воспроизведении другого первый закончится...
Guevara-chan
18 Mar 2011, 13:51
Цитата
И если играется один звук то при воспроизведении другого первый закончится...
Не обязательно - можно использовать флаг #SND_NOSTOP:
Цитата(MSDN)
The specified sound event will yield to another sound event that is already playing in the same process. If a sound cannot be played because the resource needed to generate that sound is busy playing another sound, the function immediately returns FALSE without playing the requested sound.
If this flag is not specified, PlaySound attempts to stop any sound that is currently playing in the same process. Sounds played in other processes are not affected.
ChASnock
19 Mar 2011, 21:26
Ну тогда всем спасибо

Чего-то не обращал на эту функцию внимание, а в самоучителе было объяснение какое-то корявое..
ChASnock
26 Mar 2011, 13:31
А не подскажете вот как и в какой порт писать уровень звука чтоб проигрывать музыку?
И еще обратная сторона медали: как записывать звук с микрофона?
Guevara-chan
28 Mar 2011, 11:26
Цитата
как и в какой порт писать уровень звука чтоб проигрывать музыку?
waveOutWrite подойдет, или нужно все-таки уровнем повыше ?
Цитата
как записывать звук с микрофона?
Ну, допустим, можно через MCI (бывают проблемы с качеством, но удобно):
Код
#Second = 1000 ; Миллисекунд.
#Length = 5 ; Время записи (секунд).
#Samples = 44100; 44.1 kHz (samples/second).
Define Buffer.s{#MAXBYTE}; Буффер выходных данных MCI.
Define Elapsed ; Прошедшее время по данным MCI.
#Pattern = "Sound files (*.wav)|*.wav|All files (*.*)|*.*"; Шаблон.
Macro MCI(command) : mciSendString_(command, @buffer, #MAXBYTE, 0) : EndMacro; Pseudo-procedure
Macro IntSize : SizeOf(Integer) : EndMacro : Macro BPS : Str(#Samples * IntSize) : EndMacro; Partializers.
MCI("open new type waveaudio alias recsound") : MCI("set recsound time format ms"); Первичная подготовка записи.
MCI("set recsound alignment "+Str(IntSize)+" bitspersample 16 samplespersec "+Str(#Samples)+" channels 2 bytespersec "+BPS)
MCI("record recsound") : Debug "==[Record intitated (" + Str(#Length) + " seconds)]=="; Начинаем цикл записи:
While Elapsed < 5 * #Second : MCI("status recsound position") : Elapsed = Val(Buffer) : Delay(20) : Wend
Debug "==[Record complete]=="; Рапортуем конец записи и спрашиваем, куда сохранить:
Define Clip.s = Trim(SaveFileRequester("Choose location to save sound:", "", #Pattern, 0))
MCI("save recsound " + #DQUOTE$ + Clip + #DQUOTE$) : MCI("close recsound")
ChASnock
03 Apr 2011, 07:12
о боже что это за язык
Guevara-chan
05 Apr 2011, 11:49
Цитата
о боже
Можно просто «Виктория».
Цитата
что это за язык
PureBasic v4.51, надо полагать.
Flashback
05 Apr 2011, 13:29
ты ж видела, что он пишет явно не на барсике. хотя можно устроить тандем с ним, если, конечно, в этом чудном компиляторе можно запилить гай-приложение без формы, работающее через консоль, и запускать его через основную программу, когда надо. хотя проще просто запилить либу, но еще проще написать это на том, чем надо.
Guevara-chan
06 Apr 2011, 16:33
Цитата
ты ж видела, что он пишет явно не на барсике.
Честно говоря, я имею большие сомнения что он вообще там что-то пишет: за почти 4 прошедших с создания темы месяца можно было не только запилить генератор фрактального звука, но еще и успеть организовать продажи в пределах СНГ. Вопросы, впрочем, от этого менее интересными не становятся.
Flashback
06 Apr 2011, 18:11
Хрон, не может такого быть,
Чеснок точно что-то замышляет.
Цитата
Вопросы, впрочем, от этого менее интересными не становятся.
а вот код, написанный на пьюр бейсике, он, к сожалению, не сможет использовать.
Guevara-chan
06 Apr 2011, 18:19
Цитата
Чеснок точно что-то замышляет.
Он сколько я его помню что-то замышляет. Напомни, с февраля прошлого года были какие-то продвижения ? Нет, мне правда интересно.
Цитата
а вот код, написанный на пьюр бейсике, он, к сожалению, не сможет использовать.
У нас кто-то обязывался выдавать по первому капризу готовые к использованию библиотеки ? Пример на то и пример, что его надо разбирать.
Flashback
06 Apr 2011, 19:15
Цитата
У нас кто-то обязывался выдавать по первому капризу готовые к использованию библиотеки ?
нет, но было бы супер
Цитата
Пример на то и пример, что его надо разбирать.
он же не знает бейсик
Guevara-chan
07 Apr 2011, 08:58
Цитата
было бы супер
Так приступай, если супер. Кто мешает-то ?
Цитата
он же не знает бейсик
Пусть учится видеть алгоритм, а не язык – тогда, глядишь, может еще и достигнет чего.
ChASnock
09 Apr 2011, 08:41
Да какой-то странный у вас Бейсик, совсем на Бейсик не похож
tolich
09 Apr 2011, 09:30
Можно подумать, ты много
Бейсиков на своём веку повидал.
ChASnock
09 Apr 2011, 17:17
Нет, немного. Всего-то
один
Guevara-chan
12 Apr 2011, 12:18
ChASnock
13 Apr 2011, 12:00
Что за намёки
Guevara-chan
15 Apr 2011, 09:37
Idle talks, не обращай внимания. У тебя еще вопросы по теме есть ?
ChASnock
15 Apr 2011, 12:37
Не знаю, нет наверно
Guevara-chan
15 Apr 2011, 14:51
Ну вот и славно. Closed.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.