Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт апр 25, 2024 08:38

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пт июл 06, 2007 18:23 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Ну что же, вот оно и заработало!

Код:
~vsp\lib\wave.f

S" e:\spf\sounds\tabe_paket2.wav  " play-wav BYE


Спасибо! :)

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Звук на spf [?]
СообщениеДобавлено: Пн ноя 10, 2008 05:38 
Не в сети

Зарегистрирован: Ср окт 01, 2008 06:49
Сообщения: 10
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Icefall писал(а):
WingLion писал(а):
Народ, кто-нибудь делал такое?

Есть некий источник данных в формата "типа-WAV", и надо их постоянно проигрывать, параллельно с исполнением программы.
Говоря короче, надо "свою музыку в игрушке на Форте".

Если нужно играть именно музыку (xm, it, mp3, ogg...), а не отдельные звуки (т.е. не только wav) , советую юзать <a href="http://un4seen.com">BASS</a>.
Кстати, да. Я тут только что попробовал, -- всё очень просто. Скачиваем с этого адреса BASSMOD.DLL и переводим BASSMOD.INC на Forth:
Код:
\  BASSMOD 2.0 (c) 1999-2002 Ian Luck.
\  Please report bugs/suggestions/etc... to bassmod@un4seen.com

\  See the BASSMOD.CHM file for more complete documentation

\ Error codes returned by BASSMOD_GetErrorCode()
       0 CONSTANT BASS_OK              \ all is OK
       1 CONSTANT BASS_ERROR_MEM       \ memory error
       2 CONSTANT BASS_ERROR_FILEOPEN  \ can't open the file
       3 CONSTANT BASS_ERROR_DRIVER    \ can't find a free/valid driver
       5 CONSTANT BASS_ERROR_HANDLE    \ invalid handle
       6 CONSTANT BASS_ERROR_FORMAT    \ unsupported format
       7 CONSTANT BASS_ERROR_POSITION  \ invalid playback position
       8 CONSTANT BASS_ERROR_INIT      \ BASS_Init has not been successfully called
      14 CONSTANT BASS_ERROR_ALREADY   \ already initialized/loaded
      19 CONSTANT BASS_ERROR_ILLTYPE   \ an illegal type was specified
      20 CONSTANT BASS_ERROR_ILLPARAM  \ an illegal parameter was specified
      23 CONSTANT BASS_ERROR_DEVICE    \ illegal device number
      24 CONSTANT BASS_ERROR_NOPLAY    \ not playing
      28 CONSTANT BASS_ERROR_NOMUSIC   \ no MOD music has been loaded
      30 CONSTANT BASS_ERROR_NOSYNC    \ synchronizers have been disabled
      37 CONSTANT BASS_ERROR_NOTAVAIL  \ requested data is not available
      38 CONSTANT BASS_ERROR_DECODE    \ the channel is a "decoding channel"
      41 CONSTANT BASS_ERROR_FILEFORM  \ unsupported file format
      -1 CONSTANT BASS_ERROR_UNKNOWN   \ some other mystery error

\ Device setup flags
       1 CONSTANT BASS_DEVICE_8BITS    \ use 8 bit resolution, else 16 bit
       2 CONSTANT BASS_DEVICE_MONO     \ use mono, else stereo
      16 CONSTANT BASS_DEVICE_NOSYNC   \ disable synchronizers

       1 CONSTANT BASS_MUSIC_RAMP      \ normal ramping
       2 CONSTANT BASS_MUSIC_RAMPS     \ sensitive ramping
       4 CONSTANT BASS_MUSIC_LOOP      \ loop music
      16 CONSTANT BASS_MUSIC_FT2MOD    \ play .MOD as FastTracker 2 does
      32 CONSTANT BASS_MUSIC_PT1MOD    \ play .MOD as ProTracker 1 does
     256 CONSTANT BASS_MUSIC_POSRESET  \ stop all notes when moving position
     512 CONSTANT BASS_MUSIC_SURROUND  \ surround sound
    1024 CONSTANT BASS_MUSIC_SURROUND2 \ surround sound (mode 2)
    2048 CONSTANT BASS_MUSIC_STOPBACK  \ stop the music on a backwards jump effect
    8192 CONSTANT BASS_MUSIC_CALCLEN   \ calculate playback length
   16384 CONSTANT BASS_MUSIC_NONINTER  \ non-interpolated mixing
  400000 CONSTANT BASS_MUSIC_NOSAMPLE  \ don't load the samples

80000000 CONSTANT BASS_UNICODE

       0 CONSTANT BASS_SYNC_MUSICPOS
       0 CONSTANT BASS_SYNC_POS       
       1 CONSTANT BASS_SYNC_MUSICINST
       2 CONSTANT BASS_SYNC_END       
       3 CONSTANT BASS_SYNC_MUSICFX   
80000000 CONSTANT BASS_SYNC_ONETIME    \ FLAG: sync only once, else continuously

\ BASSMOD_ChannelIsActive return values
       0 CONSTANT BASS_ACTIVE_STOPPED
       1 CONSTANT BASS_ACTIVE_PLAYING
       3 CONSTANT BASS_ACTIVE_PAUSED

\ prototypes
WINAPI: BASSMOD_GetVersion             bassmod.dll \ PROTO
WINAPI: BASSMOD_ErrorGetCode           bassmod.dll \ PROTO
WINAPI: BASSMOD_GetDeviceDescription   bassmod.dll \ PROTO :DWORD
WINAPI: BASSMOD_Init                   bassmod.dll \ PROTO :DWORD,:DWORD,:DWORD
WINAPI: BASSMOD_Free                   bassmod.dll \ PROTO
WINAPI: BASSMOD_GetCPU                 bassmod.dll \ PROTO
WINAPI: BASSMOD_SetVolume              bassmod.dll \ PROTO :DWORD
WINAPI: BASSMOD_GetVolume              bassmod.dll \ PROTO
WINAPI: BASSMOD_MusicLoad              bassmod.dll \ PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
WINAPI: BASSMOD_MusicFree              bassmod.dll \ PROTO
WINAPI: BASSMOD_MusicGetName           bassmod.dll \ PROTO
WINAPI: BASSMOD_MusicGetLength         bassmod.dll \ PROTO :DWORD
WINAPI: BASSMOD_MusicPlay              bassmod.dll \ PROTO
WINAPI: BASSMOD_MusicPlayEx            bassmod.dll \ PROTO :DWORD,:DWORD,:DWORD
WINAPI: BASSMOD_MusicDecode            bassmod.dll \ PROTO :DWORD,:DWORD
WINAPI: BASSMOD_MusicSetAmplify        bassmod.dll \ PROTO :DWORD
WINAPI: BASSMOD_MusicSetPanSep         bassmod.dll \ PROTO :DWORD
WINAPI: BASSMOD_MusicSetPositionScaler bassmod.dll \ PROTO :DWORD
WINAPI: BASSMOD_MusicSetVolume         bassmod.dll \ PROTO :DWORD,:DWORD
WINAPI: BASSMOD_MusicGetVolume         bassmod.dll \ PROTO :DWORD
WINAPI: BASSMOD_MusicIsActive          bassmod.dll \ PROTO
WINAPI: BASSMOD_MusicStop              bassmod.dll \ PROTO
WINAPI: BASSMOD_MusicPause             bassmod.dll \ PROTO
WINAPI: BASSMOD_MusicSetPosition       bassmod.dll \ PROTO :DWORD
WINAPI: BASSMOD_MusicGetPosition       bassmod.dll \ PROTO
WINAPI: BASSMOD_MusicSetSync           bassmod.dll \ PROTO :DWORD,:DWORD,:DWORD,:DWORD
WINAPI: BASSMOD_MusicRemoveSync        bassmod.dll \ PROTO :DWORD
После чего пишем тестовый проигрыватель:
Код:
REQUIRE BASSMOD_Init bassmod.f

: TEST
    0 44100 -1 BASSMOD_Init 0= IF ." Cannot initialize device" THEN
    BASS_MUSIC_LOOP BASS_MUSIC_RAMPS BASS_MUSIC_SURROUND BASS_MUSIC_POSRESET OR OR OR 0 0 S" aftermid.mod" DROP FALSE BASSMOD_MusicLoad
    BEGIN BASSMOD_MusicPlay DROP KEY? UNTIL
    BASSMOD_Free
;

TEST BYE
Всё работает, музыка играется.

P.S. Правда, BASSMOD.DLL предназначен только для проигрывания трекерной музыки (форматы типа MOD, XM, S3M, etc.), если нужны именно WAV и MP3, то надо пользоваться BASS.DLL.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа [ Летнее время ]


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

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


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

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB