|
Вопрос # 3 126/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
Помогите пожалуйста.Где ошибка?
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
volume := $FFFF * (TrackBar1.Max - TrackBar1.Position);
volume := volume + (volume shl 16);
WaveOutSetVolume(WAVE_MAPPER,volume);
end;
end.
Работает просто как выключатель ,т е как положено в нижнем положении звука нет.Сдвигаю на одно положение - звук появляется но остальные 8 полжений остается на одинаковом уровне
 |
Вопрос задал: igoriy (статус: Посетитель)
Вопрос отправлен: 26 августа 2009, 18:38
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 15; последнее сообщение — 27 августа 2009, 17:26; участников в обсуждении: 5.
|
min@y™ (статус: Доктор наук), 26 августа 2009, 19:07 [#1]:
А ты справку по этой функции читал?
Там много интересного. Старшее слово - это уровень правого канала, младшее - левого. А теперь посмотри, что за бред у тебя получается в результате операций
volume := $FFFF * (TrackBar1.Max - TrackBar1.Position);
volume := volume + (volume shl 16);
Громкость каждого канала варьируется от $0000 до $FFFF. Признавайся, где скопипастил код?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 26 августа 2009, 19:11 [#2]:
Попробуй вместо
volume := $FFFF * (TrackBar1.Max - TrackBar1.Position);
написать
volume := Round($FFFF * (TrackBar1.Position / TrackBar1.Max));
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
igoriy (статус: Посетитель), 26 августа 2009, 19:22 [#3]:
Громкость каждого канала варьируется от $0000 до $FFFF. Признавайся, где скопипастил код? Так не где а из учебника того же Культина С которым вчера то же обращался Я ж пытаюсь учиться а если он изначально такому учит то я уж не знаю что и делать
|
|
igoriy (статус: Посетитель), 26 августа 2009, 19:31 [#4]:
Поменял строку volume := $FFFF * (TrackBar1.Max - TrackBar1.Position); на volume := Round($FFFF * (TrackBar1.Position / TrackBar1.Max)); И при запуске из Delphi получил вот что:
Debugger detected - please close it down and restart!
Windows NT users: Please note that having the Winlce/Softlce service Installed means that you are running a debugger!
|
|
Вадим К (статус: Академик), 26 августа 2009, 19:42 [#5]:
Это глюк винды. хотя может быть какого то из кодеков звука/видео. Сам натыкался на это.
Mediaplayer или Bass.dll? у меня с медиаплеером воспроизводилось.
Галочка "подтверждения прочтения" - вселенское зло.
|
26 августа 2009, 19:47: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Мультимедийные приложения модератором Ерёмин А.А. Причина: работаем со звуком.
|
igoriy (статус: Посетитель), 26 августа 2009, 19:54 [#6]:
Перезагрузился и все нормально стало.Именно в Mediaplayer выскакивало.так вот строку поменял- все заработало только наоборот сверху-вниз увеличивается громкость
|
|
igoriy (статус: Посетитель), 26 августа 2009, 19:56 [#7]:
А еще объясните пожалуйста понятие - старшее слово и младшее, а то что-то я этой книге все меньше доверяю
|
|
Вадим К (статус: Академик), 26 августа 2009, 21:10 [#8]:
в переменной Integer (для 32битных систем) 4 байта или 2 слова (одно слово - два байта).
левое слово называется старшим, правое - младшим. ничего сверхъестественного. другими словами, первые 16 бит записи будут старшим словом, следующие 16 бит - младшим.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Amidamaru (статус: 4-ый класс), 26 августа 2009, 21:22 [#9]:
Вместо
volume := volume + (volume shl 16);
помоему проще и удобнее использовать MakeLong:
volume := MakeLong(volume,volume);
или вообще без этой строчки:
WaveOutSetVolume(WAVE_MAPPER,MakeLong(volume,volume));
|
|
igoriy (статус: Посетитель), 27 августа 2009, 11:48 [#10]:
Большое всем спасибо!!!
|
|
min@y™ (статус: Доктор наук), 27 августа 2009, 16:29 [#11]:
"Спасибо" — это много. Достаточно пива.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
igoriy (статус: Посетитель), 27 августа 2009, 16:55 [#12]:
Ты слишком постоянен.Я уже предлагал, а ты сказал не стоит
|
|
min@y™ (статус: Доктор наук), 27 августа 2009, 17:16 [#13]:
Цитата:
Я уже предлагал, а ты сказал не стоит
Когдай-то я отказалсо???
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
igoriy (статус: Посетитель), 27 августа 2009, 17:22 [#14]:
Я уж точно не помню , но месяц - полтора назад я с очередным вопросиком обращался, помоему по поводу перетаскивания формы.А ты сказал что только что из магазина и с пивом
|
|
Ерёмин А.А. (статус: *Администратор), 27 августа 2009, 17:26 [#15]:
Господа, идите в личку. Дальнейшие сообщения не по теме будут караться замечаниями.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|