purebasic.info

PureBasic forum
Текущее время: Вс июл 12, 2020 7:10 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 152 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8, 9, 10, 11  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 18, 2010 11:36 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пн сен 07, 2009 10:00 pm
Сообщений: 1046
Откуда: Николаев
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
В коде fmodex.pb функции, которые будеш использовать надо изменить

Пример:

Код:
1
2
3
Procedure.l FMOD_System_CreateStream (system.l, Name_or_data.l, Mode.l, *exinfo.l, *Sound.l)
   ProcedureReturn CallFunction(fmodLib, "FMOD_System_CreateStream", system.l, Name_or_data.l, Mode.l, *exinfo.l, *Sound.l)
 EndProcedure



на
Код:
1
2
3
Prototype FMOD_System_CreateStream(system.l, Name_or_data.l, Mode.l, *exinfo, *Sound)
   Global FMOD_System_CreateStream.FMOD_System_CreateStream= GetProcAddressM(fmodLib, "FMOD_System_CreateStream")
 


_________________
www.mirashic.narod.ru
Первое знакомство с PB


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 18, 2010 11:39 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6651
Благодарил (а): 36 раз.
Поблагодарили: 234 раз.
Пункты репутации: 65
radan писал(а):
Пишет при компиляции - строка 1170: недопустимій параметр типа, вместо строки ожидается число.

Везде где такая ошибка надо перед строковой переменной поставить @
Было так:
Код:
1
2
3
4
Procedure.l FMOD_System_SetPluginPath (system.l, Path.s)
  ProcedureReturn CallFunction(fmodLib, "FMOD_System_SetPluginPath", system.l, Path.s)
EndProcedure
 



Надо так
Код:
1
2
3
4
Procedure.l FMOD_System_SetPluginPath (system.l, Path.s)
  ProcedureReturn CallFunction(fmodLib, "FMOD_System_SetPluginPath", system.l, @Path.s)
EndProcedure
 


_________________
read-only ¯\_(ツ)_/¯


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 18, 2010 12:50 pm 
Не в сети
доцент

Зарегистрирован: Ср янв 02, 2008 10:51 am
Сообщений: 29
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Запускается. Но спектр не отрисовывает. Массив Arr() из FMOD_Channel_GetSpectrum(channel, Arr(), 512, 0, 0) почему-то пустой.

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
 
Enumeration
#Window_0    
#play
#open
#stop
#pausa
#trac
#text1
#radio
#im1
#text2  
EndEnumeration
 
IncludeFile "fmodex_4.41.pb"
 
Define channel.l,   sound.l, CurrentVolume.f, Frequency.f, FileToPlay.s,  Handle, TagCount, i, Tag.FMOD_TAG
Global Val, Dim Arr.f(512), column, width, height, color, pos
 
Dim Arr.f(512)
 
 
;{----------------------Параметры  спектра-----------------------------------
x=5                    ;позиция от начала x
y=5                    ;позиция от начала y
column=128             ;колличество столбов
width=2                ;ширина столба
height=55              ;высота столба
h=1                    ;ширина между столбами
color=RGB(2, 128, 253) ;цвет
;}----------------------------------------------------------------------------
CreateImage(#im1,width,height)   ; спектр
 
Procedure Spectr()    ; спектр  
 For f=0 To column
 StartDrawing(ImageOutput(#im1))
   Val= Arr(f)*800
   Box(0,0,20,height,RGB(240, 240, 240))
   Box(0,height-Val,20,Val,color)
  StopDrawing()
  SetGadgetState(100+f,ImageID(#im1))
 Next f
SetGadgetText(#text2,Str(pos))
EndProcedure
 
 
 
If OpenWindow(#Window_0, 50, 50, 400, 150, "FMOD-плеер",  #PB_Window_SystemMenu)
 ;SetWindowColor(#Window_0,RGB(143, 143, 143))
 
   ButtonGadget(#open,  10, 95,60,20,"Открыть")
   ButtonGadget(#stop,  80, 95,60,20,"Стоп")
   ButtonGadget(#play,  150,95,60,20,"Играть" )
   ButtonGadget(#pausa, 220,95,60,20,"Пауза"  )
   ButtonGadget(#radio, 290,95,60,20,"Радио"  )
   
   TrackBarGadget(#trac, 5, 120, 220, 20, 0,100, #PB_TrackBar_Ticks)
   SetGadgetState(#trac, 50)
 
   TextGadget(#text1,10,70,305,20,"")
   TextGadget(#text2,320,70,70,20,"")
   
  For f=0 To column
    ImageGadget(100+f,x, y,0,0,ImageID(#im1))   ; вывод спектра
    x=x+(width+h)
  Next f
 
Init_FMOD()
FMOD_System_Create(@Handle)
FMOD_System_Init(Handle, 1, #FMOD_INIT_NORMAL, 0)
 
SetTimer_(WindowID(#Window_0),Event,35,@Spectr())
Repeat
Event = WaitWindowEvent()
Window = EventWindow()
Gadget = EventGadget()
   
FMOD_Channel_GetSpectrum(channel, Arr(), 512, 0, 0)
 
FMOD_Channel_GetPosition(channel, @pos, #FMOD_TIMEUNIT_MS)
 
 Select Event
   Case #PB_Event_Gadget
      Select EventGadget()
        Case #play
          FMOD_System_CreateStream(Handle, @FileToPlay, #FMOD_DEFAULT, 0, @sound)
          FMOD_System_PlaySound(Handle, 0, sound, 0, @channel)
         
          Vol.f = GetGadgetState(#trac)/100
          FMOD_Channel_SetVolume( channel, Vol )
;--------------------тег mp3-------------------------------------------
;     If FileToPlay.s
;        FMOD_System_CreateStream(Handle,@File$,#FMOD_DEFAULT,#Null,@Sound)
;        FMOD_Sound_GetNumTags(Sound,@TagCount,#Null)
;        Debug "Number of tags: " + Str(TagCount)
;      For i=0 To TagCount-1
;        FMOD_Sound_GetTag(Sound,0,i,@Tag)
;        ;Debug "TAG Struct:"
;        ;Debug Tag\type
;        ;Debug Tag\datatype
;        ;Debug Tag\name
;        ;Debug Tag\_data
;        ;Debug Tag\datalen
;        ;Debug Tag\udated
;        Debug PeekS(Tag\_data, Tag\datalen)
;      Next
;        FMOD_Sound_GetTag(Sound,0,0,@Tag)
;        text.s=PeekS(Tag\_data, Tag\datalen)
;      
;        FMOD_Sound_GetTag(Sound,0,1,@Tag)
;        name.s =PeekS(Tag\_data, Tag\datalen)  
;      
;      SetGadgetText(#text1, name.s +"        "+ text.s)
;    EndIf
;----------------------------------------------------------------------------  
        Case #pausa
         pausa = pausa ! 1
          If pausa =1
           FMOD_Channel_SetPaused (channel, 1)
          Else  
           FMOD_Channel_SetPaused (channel, 0)  
          EndIf        
        Case #open
            FileToPlay.s= OpenFileRequester("Choose a soundfile", GetClipboardText(), "*.*|*.*", 0)
           
        Case #stop
          ;FMOD_Channel_Stop(channel)  
          FMOD_Channel_SetPaused (channel, 1)
        Case #trac
          Vol.f = GetGadgetState(#trac)/100
          FMOD_Channel_SetVolume( channel, Vol )
        Case #radio
          Onlain.s= "http://195.5.125.6:8000/"
          FMOD_System_CreateStream(Handle, @Onlain, #FMOD_DEFAULT, 0, @sound)
          FMOD_System_PlaySound(Handle, 0, sound, 0, @channel)
         
          Vol.f = GetGadgetState(#trac)/100
          FMOD_Channel_SetVolume( channel, Vol )
 ;-----------------тег fm-----------------------------------------------------        
;     If Onlain.s  
;        FMOD_System_CreateStream(Handle,@File$,#FMOD_DEFAULT,#Null,@Sound)
;        FMOD_Sound_GetNumTags(Sound,@TagCount,#Null)
;        Debug "Number of tags: " + Str(TagCount)
;      For i=0 To TagCount-1
;        FMOD_Sound_GetTag(Sound,0,i,@Tag)
;        ;Debug "TAG Struct:"
;        ;Debug Tag\type
;        ;Debug Tag\datatype
;        ;Debug Tag\name
;        ;Debug Tag\_data
;        ;Debug Tag\datalen
;        ;Debug Tag\udated
;        Debug PeekS(Tag\_data, Tag\datalen)
;      Next
;        FMOD_Sound_GetTag(Sound,0,3,@Tag)
;        text.s=PeekS(Tag\_data, Tag\datalen)
;      
;        FMOD_Sound_GetTag(Sound,0,2,@Tag)
;        name.s =PeekS(Tag\_data, Tag\datalen)  
;      
;      SetGadgetText(#text1, name.s +"        "+ text.s)
;    EndIf
 ;-----------------------------------------------------------------------------        
           
      EndSelect
    EndSelect
  Until Event = #PB_Event_CloseWindow
EndIf
 
FMOD_Sound_Release(sound)
FMOD_System_Close(Handle)
FMOD_System_Release(Handle)
 



Вложения:
Комментарий к файлу: fmodex_4_41
fmodex_4_41.rar [295.29 KiB]
Скачиваний: 380
Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 18, 2010 1:16 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пн сен 07, 2009 10:00 pm
Сообщений: 1046
Откуда: Николаев
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Прийду домой с работы перезалью рабочий вариант...

_________________
www.mirashic.narod.ru
Первое знакомство с PB


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 18, 2010 2:57 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пн сен 07, 2009 10:00 pm
Сообщений: 1046
Откуда: Николаев
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
fmodex_плеер_4.41


Вложения:
fmodex_плеер_4.41.rar [301.88 KiB]
Скачиваний: 403

_________________
www.mirashic.narod.ru
Первое знакомство с PB
Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 18, 2010 3:38 pm 
Не в сети
доцент

Зарегистрирован: Ср янв 02, 2008 10:51 am
Сообщений: 29
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Большое спасибо!
Простите ещё за пару вопросов.
Я скомпилировал, приложение работает без библиотеки fmodex.dll.
Т.е. она интегрировалась в само приложение. Как это явно указать - библиотеку держать рядом или поместить в приложение?
Это для общего развития.
И второй вопрос - можно ли перехватывать звук от другого источника, для того, чтобы только получить спектр?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 18, 2010 3:48 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пн сен 07, 2009 10:00 pm
Сообщений: 1046
Откуда: Николаев
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
В файле fmodex.pb последние строки :
Код:
1
2
3
4
DataSection
  DLL:
 IncludeBinary "fmodex.dll"
EndDataSection



Держать рядом уже не надо...
Перехватывать не знаю как...

_________________
www.mirashic.narod.ru
Первое знакомство с PB


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 18, 2010 3:59 pm 
Не в сети
доцент

Зарегистрирован: Ср янв 02, 2008 10:51 am
Сообщений: 29
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Ещё раз спасибо. :D


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 18, 2010 4:02 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11708
Благодарил (а): 4 раз.
Поблагодарили: 512 раз.
radan писал(а):
можно ли перехватывать звук от другого источника, для того, чтобы только получить спектр
Где-то видел пример, считывающий данные с линейного входа (или микрофонного, не помню) и отображающий на экране спектр звука.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 18, 2010 4:05 pm 
Не в сети
доцент

Зарегистрирован: Ср янв 02, 2008 10:51 am
Сообщений: 29
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Пётр писал(а):
Где-то видел пример, считывающий данные с линейного входа (или микрофонного, не помню) и отображающий на экране спектр звука.

Было бы здорово, если бы вспомнили!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 18, 2010 4:15 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пн сен 07, 2009 10:00 pm
Сообщений: 1046
Откуда: Николаев
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Захват звука для 4.30
Как работает не разбирался...


Вложения:
Capturing_Audio.rar [5.68 KiB]
Скачиваний: 403

_________________
www.mirashic.narod.ru
Первое знакомство с PB
Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 18, 2010 4:27 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11708
Благодарил (а): 4 раз.
Поблагодарили: 512 раз.
mirashic писал(а):
Как работает не разбирался

Если вкратце, то в процедуре CAPTURE_Start() с помощью API функций, имена которых начинаются с waveIn, создаётся кольцевой буфер приёма, в который регулярно поступают данные с выбраного входа звуковой карты.
Прорисовка на экране выполняется в процедуре DRAW_Scope(), которая вызывается по таймеру.

PS.
Для 4.30 и выше, нужно уменьшить высоту всех выпадающих списков.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 18, 2010 10:58 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11708
Благодарил (а): 4 раз.
Поблагодарили: 512 раз.
Пётр писал(а):
Где-то видел пример, считывающий данные с линейного входа (или микрофонного, не помню) и отображающий на экране спектр звука.
Вот архив.
Первоисточник http://pbasic.spb.ru/phpBB2/viewtopic.php?t=255

Для разделения на частоты, использовно Быстрое Преобразование Фурье


Вложения:
Spectr.zip [4.56 KiB]
Скачиваний: 411

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)
Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 24, 2010 3:39 pm 
Не в сети
доцент

Зарегистрирован: Ср янв 02, 2008 10:51 am
Сообщений: 29
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Не могу скомпилить под 4.41 :(


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 04, 2010 1:59 pm 
Не в сети
доцент

Зарегистрирован: Ср янв 02, 2008 10:51 am
Сообщений: 29
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Изображение
Подскажите, хоть в каком направлении копать?


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 152 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8, 9, 10, 11  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB