Blitz_bass_studio

Übersicht BlitzBasic DLLs und Userlibs

Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6  Weiter

Neue Antwort erstellen

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Aug 18, 2007 1:10
Antworten mit Zitat
Benutzer-Profile anzeigen
@DrFreak339, funktionieren denn die anderen Beispiele von Abrexxes in seinem Archiv, die sich mit mp3/ogg-Dateien streamen beschäftigen (unter BBass Studio 1 .5\bass\demo_stream.bb zu finden)?

@Abrexxes, den Dreamplayer 1 kannst du beim nächsten Update weglassen, da er echt ein Recourcenfresser ist. Wusste ich ''damals'' noch nicht anders. Falls du möchtest, kannst du anstelle dann denn Dreamplayer 2.3 http://www.hectic.de/data/dreamplayer23.rar rein setzen (Code ist dabei). In der neuen Version habe ich nur Kleinigkeiten geändert und den Code noch etwas überschaubarer gemacht. Soll ja sowas wie ein kleines Tutorial sein.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Abrexxes

BeitragSa, Aug 18, 2007 1:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo, das mach ich, aber den ersten wollte ich wenigstens als source Code drin lassen. Das nimmt ja keinen Platz und zeigt trotzdem viel.
 

DrFreak339

BeitragSa, Aug 18, 2007 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
hectic: ja, funzt wie ne 1! (selbst bei hässlichem techno ;D)

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Aug 18, 2007 20:08
Antworten mit Zitat
Benutzer-Profile anzeigen
@DrFreak339, da du anscheinend ein technisches Problem mit meinem Dreamplayer hast, würde ich dich bitten mir eine Info zu geben, falls du das Problem beheben haben solltest. Falls es dir nichts ausmacht, du also Lust und Zeit hast, wäre es auch nett, wenn du dir den beigelegten Code mal anschauen würdest, und versuchst die grafischen Elemente nacheinander zu deaktivieren, bis der Sound richtig klingt. Das interessiert sicherlich nicht nur mich, sondern würdest auch den einen oder anderen damit helfen, um Fehlerquellen besser im Vorwege eleminieren zu können. Ich kann diese leider nicht, da ich den Fehler bei mir nicht rekonstruieren kann.

Die neuste Version ist 2.3 und zu finden hier http://www.hectic.de/data/dreamplayer23.rar

Ich wundere mich, da bisher keine Fehler gemeldet wurden, auch bereits hier und da Updates vom ''alten'' Player durch andere gemacht wurden. Ausserdem habe ich äusserste Sorgfalt im Speichermanagement zu tage gebracht, um Speicherüberläufe bei den Banks zB zu vermeiden etc...
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Abrexxes

BeitragDi, Aug 21, 2007 19:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Version 1.5.5

Wichtig für alle die URL streamen wollen.
Im ersten Post gibts die Demo (win32/exe) dazu.
Der Code davon wie immer im bass ordner (demo_stream_url.bb +demo_stream_url_live.bb)

Zitat:

----- v.1.5.5
* This update is only for url streaming & new source code from hectic
- added dreamplayer2.3 source code (thanks to hectic)
- fixed Bass_CreateStreamUrl (bass.decls)
- added demo_stream_url (bass)
- added demo_stream_url_live (bass)
- added links 4 streams (stuff)


have fun !

Abrexxes

BeitragMo, Aug 27, 2007 20:40
Antworten mit Zitat
Benutzer-Profile anzeigen
1.5.8 Bitte ALLES ersetzen, wichtiges update, siehe :

Zitat:

----- v.1.5.8
* Important update !!! (bass.bb/bassmod.bb)
- files changed : bass.decls/bass.bb/bassmod.bb/all the demos (bass/bassmod)
- added some stuff to demo_stream_url and _live
- fixed lo/hiword (was inverse)(bass & bassmod) -.-
If you use already BASS_LoWord in your code, change it to BASS_HiWord
If you use already BASS_HiWord in your code, change it to BASS_LoWord
- fixed all the demos (Lo/Hi used for vumeters & *.mod positions) (bass/bassmod)
* only bass from here
- added new gfx vumeter to demo_start & others
- fixed BASS_GetDeviceCount() returns now the right number
- fixed BASS_RecordGetDeviceCount() returns now the right number
- added blitz_bass_record_functions.txt to the docs
- added new include bassrecord.bb (only include that to record)
- added tut_record_1.bb (init the hardware)
- added new functions to decls for syntax & syntaxhighlighting
- New and fixed functions for recording, see includes\bassrecord.bb
- added tut_record_2.bb (start a record handle)
- more recording stuff comming soon (stream handle and save files)
 

$tankY

BeitragSo, Okt 14, 2007 23:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Erst einmal: Respekt für die Arbeit!
Ich habe nur gerade folgendes Problem:
Wie kann ich den Stream von BASS_StreamCreateURL() in eine Datei leiten bzw. was muss ich für proc% angeben?

Abrexxes

BeitragMo, Okt 15, 2007 0:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke.

Puh, da sprichts du einen meiner und Blitzbasics Schwachpunkte an..Callbacks.

Zuerst müsstest du in der bass.decls einen neuen Befehl eintragen damit Blitz PROC als Handle (Pointer) annimmt, zb:

BASS_StreamCreateURLCall%(url$,offset%,flags%,proc*,user%) : "BASS_StreamCreateURL"

Dann müsstest du einen Type anlegen der dem Call enspricht aber noch mal einen Pointer will. Wie du dir vorstellen kannst wird das in BB ein gewaltiger Aufwand da auch noch intern mit BASS_RtlMoveMemory alles im Speicher verschoben werden muss. Kurz : In BB eine Katastrophe. Das ist der Grund wieso ich auch Callbacks verzichtet habe.

Es gäbe aber die Lösung sind eine Bank zu erzeugen, das Signal wie in den Demos (spektrum) auszulesen und dann denn fertigen Buffer als Wav zu speichern, wie man eine Wav datei erzeugt das kannst du dir im "Stuff" angucken wo ein Code ist denn man umbauen kann.

Diese Methode wäre nachvollziehbar und wesentlich besser zu realisieren (in BB) als mit Callbacks zu arbeiten. (Das heist du "klaust" das Signal als PCM und klebst den Wav Header am Schluss drauf)

cu
 

$tankY

BeitragMo, Okt 15, 2007 0:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Werds mir anschauen, danke schonmal Very Happy

Abrexxes

BeitragMo, Okt 15, 2007 0:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine andere Methode wäre das Signal als "WhatYouHear" aufzuzeichnen. Smile Die ersten beiden Rectuts sind ja schon da, aber für das dritte (speichern) habe ich im Moment keine Zeit, guck aber mal in die DOCS von Bass, das sollte auch ohne tut zu machen sein.

cu
 

$tankY

BeitragMo, Okt 15, 2007 0:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke, am besten ist die Variante mit den Banks, werd mich auch gleich mit der Struktur auseinandersetzen.
Edit:
Wenn ich das richtig verstanden habe, müsste ich folgenden Code anpassen:
Code: [AUSKLAPPEN]
;write RIFF header
WriteInt s_temp, 1179011410 ; RIFF
WriteInt s_temp, s_sourcesize-8 ;size of header
WriteInt s_temp, 1163280727 ; WAVE

;write FMT chunk
WriteInt s_temp, 544501094 ; FMT
WriteInt s_temp, s_fmtsize ;<fmt length>
WriteShort s_temp, s_format ;<format tag>
WriteShort s_temp, s_channels ;<channels>
WriteInt s_temp, s_rate ;<sample rate>
WriteInt s_temp, s_bytes ;<bytes/second>
WriteShort s_temp, s_block ;<block align>
WriteShort s_temp, s_bit ;<bits/sample>
                 
;write SMPL chunk
WriteInt s_temp, 1819307379 ;SMPL
WriteInt s_temp, 60 ;36 + 1 sample loop section (24)
WriteInt s_temp, 0 ; Manufacturer , we dont need   
WriteInt s_temp, 0   ; ProductID , we dont need
WriteInt s_temp, 0   ;Sample Period    ,not supported by blitzbasic
WriteInt s_temp, 0   ;MIDI Unity Note    ,not supported by blitzbasic
WriteInt s_temp, 0   ;MIDI Pitch Fraction    ,not supported by blitzbasic
WriteInt s_temp, 0   ;SMPTE Format    ,not supported by blitzbasic
WriteInt s_temp, 0   ;SMPTE Offset    ,not supported by blitzbasic
WriteInt s_temp, 0 ;Num Sample Loops    ,not supported by blitzbasic
WriteInt s_temp, 0   ;Sampler Data    ,not supported by blitzbasic

WriteInt s_temp, 0 ;Cue Point ,not supported by blitzbasic
WriteInt s_temp, 0 ;Type    ,not supported by blitzbasic
WriteInt s_temp, s_start ;   Start loop
WriteInt s_temp, s_end ;End loop
WriteInt s_temp, 0 ;Fraction ,not supported by blitzbasic
WriteInt s_temp, 0 ;Play Count ,not supported by blitzbasic

;write DATA chunk & data
WriteInt s_temp, 1635017060 ; DATA
WriteInt s_temp, s_datalenght ;<length>
WriteBytes (sbank_cache,s_temp,0,s_datalenght) ;sample data from bank
FreeBank sbank_cache ; we no need this longer

CloseFile s_temp


Und zwar müssten dann in sbank_cache die Daten aus BASS_ChannelGetData() stehen, oder?^^

Abrexxes

BeitragMo, Okt 15, 2007 12:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, in STUFF findest du eine genaue Docu zu wav. Zu dem Code oben ist folgendes zu sagen.

Ein originale Microsoft WAV Header hat nur folgende Datenblöcke: RIFF FMT DATA

Der SMPL Chuck dient um Loops einzufügen. Das wird zwar von BlitzBasic (danke Fmod) unterstützt ebenso wie von einigen MusikProgrammen. 99% Der Software ignoriert ihn aber, deswegen kannst du dir denn sparen.

Dieser Coder war ursprünglich gedacht um extra Loops für Blitzbasic zu realisieren. Bass ignoriert SMPL ebenfalls. Sollte aber einer das sein und mit 0 definiert(+1 LoopPoint), dann kommt es zum bekannten Fehler das Blitzbasic Loopt auch ohne LoopSound. Diese Samples kann man dann auch mit dem Code "reparieren" indem alle SMPL Werte auf 0 gesetze werden.

Mein Rat wäre also SMPL wegzulassen. (Doc zum Format : stuff/formats/wav/wavefiles.html)

cu

PS: Es müsste auch möglich sein das WAV in einer weitern Bank zu erzeugen und an Bass zu übergeben (BASS_LoadSampleMem), dann könnte man mit Plugins (enc + eventuelle formate) auch direkt ogg, mp3, flac und do abspeichern. Aber wie du ja siehst ist alleine die bass api fast so gross wie die 3d api von Blitz. Alles habe ich noch nicht getestet. Dazu ist das Teil einfach zu mächtig. Smile

Abrexxes

BeitragMo, Dez 24, 2007 18:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Neuer offizieller Toolbox Eintrag : http://www.blitzbasic.com/tool...p?tool=207

Version 1.6.0 - Midi Zeug.

Zitat:

----- v.1.6.0
* This is only for midi files
- added new demo_midi.bb
- added new demo_midi_event.bb
- some new links in "stuff"

Abrexxes

BeitragFr, Jan 04, 2008 11:51
Antworten mit Zitat
Benutzer-Profile anzeigen
http://www.blitzbasic.com/tool...p?tool=207

Da gibts nun *Tata* auch den Dreamplayer 2.5 von Hectic ++++++ Sourcecode !!++11

Danke an Hectic.

DAK

BeitragFr, Jan 18, 2008 13:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann man mit der BlitzBass eine Audiodatei als ganzes höher abspielen? Also z.B. alles um 2k Herz höher?
Gewinner der 6. und der 68. BlitzCodeCompo

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Jan 18, 2008 13:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Je nachdem, wie du dein Sound abspielst benutze:

Code: [AUSKLAPPEN]
BASS_ChannelSetAttributes( Handle, Frequenz, Volume, Paning )

oder

Code: [AUSKLAPPEN]
BASS_MusicSetAttribute( Handle, BASS_MUSIC_ATTRIB_BPM, Value )
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Abrexxes

BeitragDo, Feb 28, 2008 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Neues aus der Rubrik "Dämlich!"
Zitat:

----- v.1.6.1
* Changed file bass.decls
- Fixed BASS_ChannelSetLink Error
- Fixed BASS_ChannelSetFlags Error
(You dont need to reload if you have still 1.6.0, just edit this line in your bass.decls)
-->BASS_ChannelSetLink%(Handle, chan%) : "BOOL BASS_ChannelSetLink"
to : BASS_ChannelSetLink%(Handle, chan%) : "BASS_ChannelSetLink"
-->BASS_ChannelSetFlags%(Handle,flags%) : "BOOL BASS_ChannelSetFlags"
to : BASS_ChannelSetFlags%(Handle,flags%) : "BASS_ChannelSetFlags"
(WTH i have made there -.-, sorry for this guys and thanks to Roland to report this!)



Ich schäme mich ja so....

Abrexxes

BeitragSa, Aug 23, 2008 20:11
Antworten mit Zitat
Benutzer-Profile anzeigen
BUG in BBS 1.6.1 (modinfo.bb)

Fehler: Modinfo stürzt ab wenn ein Modul mit ungerader Pattern Order List Zahl geladen wird wenn das letzte Pattern abgespielt werden soll und eine gerade Zahl hat. (öhm...ja..is so ^^)

Beheben: Bitte öffnet modinfo.bb und sucht nach diesem Abschnitt (ab Zeile 212)
Code: [AUSKLAPPEN]

SeekFile (tempmod, 952)
   Dim MOD_OrderList%(MOD_Orders-1) ;get orders and last pattern
      MOD_Patterns = 0
      For i = 0 To (MOD_Orders-1)
         temp = ReadByte (tempmod)
         If temp > MOD_Patterns  Then MOD_Patterns = (temp+1)
      MOD_OrderList (i) = temp
      Next

und ersetzt es durch das hier:
Code: [AUSKLAPPEN]

SeekFile (tempmod, 952)
   Dim MOD_OrderList%(MOD_Orders-1) ;get orders and last pattern
      MOD_Patterns = 0
      For i = 0 To (MOD_Orders-1)
         temp = ReadByte (tempmod)
         If temp > MOD_Patterns  Then MOD_Patterns = temp
      MOD_OrderList (i) = temp
      Next
      MOD_Patterns=MOD_Patterns+1; add last pattern


cu

Abrexxes

Betreff: modinfo 1.5

BeitragDo, Aug 28, 2008 18:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Wer Interesse hat dem muss ich nichts erklären..siehe erste Zeilen ";" .

cu (kompatibel zu BBS 1.6.1 "modinfo.bb" == einfach ersetzen)

PS: Das ist die letzte offizielle Version.

Code: [AUSKLAPPEN]

;-------------------------------------------------------------------------------------------------------------
; modinfo.bb by Abrexxes 2008 Version 1.5 --- *Pex*
;
; Note :
; You can use this with bass/bassmod (for realtime stuff) or without !
; Read "Modinfo\modinfo.txt & functions.txt" for more informations.
;
; Important : At the moment only *.mod files supported !!!
; -------------------------------------------------------------------------------------------------------------
; 1.5 = added Function MOD_GetRSample$(pattern%,row%,channel%) ;gibt sample als Nummer 01-31 als $ zurück
; 1.4 = added Function MOD_GetRFx$(pattern%,row%,channel%) ;gibt SFX als $ zurück (zb "F06")
; 1.3 = added AMIGA mode (Schaltet auf 3 Oktaven wenn = 1, siehe Globals)
; 1.2 = fixed "last pattern" bug
; 1.1 = fixed "createbank" bug"
; ---- Globals ----------------------------------------------------------------------------------------------
Global MOD_Amiga = 0
Global MOD_Name$ = ""
Global MOD_Orders% = 0
Global MOD_Tracker$ = ""
Global MOD_ActiveChannels% = 0
Global MOD_Id$ = ""
Global MOD_Patterns% = 0
; ---- DIMs ------------------------------------------------------------------------------------------------
Dim MOD_SampleName$ (0)
Dim MOD_SampleAttrib% (0,0)
Dim MOD_OrderList% (0)
Dim MOD_Pat_Note$ (0,0)
Dim MOD_Pat_Sample% (0,0)
Dim MOD_Pat_Fx% (0,0)
Dim MOD_Pat_RFx$ (0,0)
Dim MOD_Pat_RSample$ (0,0)
; ---- Functions ------------------------------------------------------------------------------------------
Function MOD_GetName$()
   Return MOD_Name
End Function

Function MOD_GetOrders%()
   Return MOD_Orders
End Function

Function MOD_GetTracker$()
   Return MOD_Tracker
End Function

Function MOD_GetActiveChannels%()
   Return MOD_ActiveChannels
End Function

Function MOD_GetId$()
   Return MOD_Id
End Function

Function MOD_GetPatterns$()
   Return MOD_Patterns
End Function

Function MOD_GetActivePattern% (order%)
   If order <0 Or order >(MOD_Orders-1) Then Return 0
   Return MOD_OrderList (order)
End Function

Function MOD_GetSampleName$(sample%)
   If sample <1 Or sample >31 Then Return "Not a valid sample number (1-31)"
   Return MOD_SampleName(sample-1)
End Function

Function MOD_GetSampleLenght%(sample%)
   If sample <1 Or sample >31 Then Return 0
   Return MOD_SampleAttrib(sample-1,0)
End Function

Function MOD_GetSampleFineTune%(sample%)
   If sample <1 Or sample >31 Then Return 0
   Return MOD_SampleAttrib(sample-1,1)
End Function

Function MOD_GetSampleVolume%(sample%)
   If sample <1 Or sample >31 Then Return 0
   Return MOD_SampleAttrib(sample-1,2)
End Function

Function MOD_GetSampleLoopStart%(sample%)
   If sample <1 Or sample >31 Then Return 0
   Return MOD_SampleAttrib(sample-1,3)
End Function

Function MOD_GetSampleLoopEnd%(sample%)
   If sample <1 Or sample >31 Then Return 0
   Return MOD_SampleAttrib(sample-1,4)
End Function

Function MOD_GetSample%(pattern%,row%,channel%)
   Local x%, y%
      x = (pattern*64) + (row)
      y = channel-1
   Return MOD_Pat_Sample (x,y)
End Function

Function MOD_GetRSample$(pattern%,row%,channel%)
   Local x%, y%
      x = (pattern*64) + (row)
      y = channel-1
   Return MOD_Pat_RSample (x,y)
End Function

Function MOD_GetNote$(pattern%,row%,channel%)
   Local x%, y%
      x = (pattern*64) + (row)
      y = channel-1
   Return MOD_Pat_Note (x,y)
End Function

Function MOD_GetFx%(pattern%,row%,channel%)
   Local x%, y%
      x = (pattern*64) + (row)
      y = channel-1
Return MOD_Pat_Fx (x,y)
End Function

Function MOD_GetRFx$(pattern%,row%,channel%)
   Local x%, y%
      x = (pattern*64) + (row)
      y = channel-1
Return MOD_Pat_RFx (x,y)
End Function

; ---- Loader & Reset----------------------------------------------------------------------------------
Function MOD_LoadData%(name$)
MOD_Reset()   
Local temp%, i%, n%, m%, offset%,temphex$,tempcut$
Local bin1$, bin2$, bin3$, bin4$, tempbin$
Local tempmod = ReadFile (name)

SeekFile (tempmod,1080) ; read tracker ID
For i = 1 To 4
      temp = ReadByte (tempmod)
         MOD_Id = MOD_Id + Chr$(temp)
Next

Select MOD_Id ; get tracker info & active channels
Case "M.K." : MOD_Tracker = "Protracker (Amiga) 4 channels" : MOD_ActiveChannels = 4
Case "M!K!" : MOD_Tracker = "Protracker (Amiga) 4 channels" : MOD_ActiveChannels = 4
Case "FLT4" : MOD_Tracker = "Startracker (Amiga) 4 channels" : MOD_ActiveChannels = 4
Case "FLT8" : MOD_Tracker = "Startracker (Amiga) 8 channels" : MOD_ActiveChannels = 8
Case "2CHN" : MOD_Tracker = "Fasttracker (PC) 2 channels" : MOD_ActiveChannels = 2
Case "4CHN" : MOD_Tracker = "Fasttracker (PC) 4 channels" : MOD_ActiveChannels = 4
Case "6CHN" : MOD_Tracker = "Fasttracker (PC) 6 channels" : MOD_ActiveChannels = 6
Case "8CHN" : MOD_Tracker = "Fasttracker (PC) 8 channels" : MOD_ActiveChannels = 8
Case "10CH" : MOD_Tracker = "Fasttracker (PC) 10 channels" : MOD_ActiveChannels = 10
Case "12CH" : MOD_Tracker = "Fasttracker (PC) 12 channels" : MOD_ActiveChannels = 12
Case "14CH" : MOD_Tracker = "Fasttracker (PC) 14 channels" : MOD_ActiveChannels = 14
Case "16CH" : MOD_Tracker = "Fasttracker (PC) 16 channels" : MOD_ActiveChannels = 16
Case "18CH" : MOD_Tracker = "Fasttracker (PC) 18 channels" : MOD_ActiveChannels = 18
Case "20CH" : MOD_Tracker = "Fasttracker (PC) 20 channels" : MOD_ActiveChannels = 20
Case "22CH" : MOD_Tracker = "Fasttracker (PC) 22 channels" : MOD_ActiveChannels = 22
Case "24CH" : MOD_Tracker = "Fasttracker (PC) 24 channels" : MOD_ActiveChannels = 24
Case "26CH" : MOD_Tracker = "Fasttracker (PC) 26 channels" : MOD_ActiveChannels = 26
Case "28CH" : MOD_Tracker = "Fasttracker (PC) 28 channels" : MOD_ActiveChannels = 28
Case "30CH" : MOD_Tracker = "Fasttracker (PC) 30 channels" : MOD_ActiveChannels = 30
Case "32CH" : MOD_Tracker = "Fasttracker (PC) 32 channels" : MOD_ActiveChannels = 32
Case "TDZ1" : MOD_Tracker = "TakeTracker (PC) 1 channel" : MOD_ActiveChannels = 1
Case "TDZ2" : MOD_Tracker = "TakeTracker (PC) 2 channels" : MOD_ActiveChannels = 2
Case "TDZ3" : MOD_Tracker = "TakeTracker (PC) 3 channels" : MOD_ActiveChannels = 3
Case "5CHN" : MOD_Tracker = "TakeTracker (PC) 5 channels" : MOD_ActiveChannels = 5
Case "7CHN" : MOD_Tracker = "TakeTracker (PC) 7 channels" : MOD_ActiveChannels = 7
Case "9CHN" : MOD_Tracker = "TakeTracker (PC) 9 channels" : MOD_ActiveChannels = 9
Case "11CH" : MOD_Tracker = "TakeTracker (PC) 11 channels" : MOD_ActiveChannels = 11
Case "13CH" : MOD_Tracker = "TakeTracker (PC) 13 channels" : MOD_ActiveChannels = 13
Case "15CH" : MOD_Tracker = "TakeTracker (PC) 15 channels" : MOD_ActiveChannels = 15
Case "16CN" : MOD_Tracker = "TakeTracker (PC) 16 channels" : MOD_ActiveChannels = 16
Case "32CN" : MOD_Tracker = "TakeTracker (PC) 32 channels" : MOD_ActiveChannels = 32
Case "CD81" : MOD_Tracker = "Oktalyzer  (Atari ST) 8 channels" : MOD_ActiveChannels = 8
Case "OCTA" : MOD_Tracker = "Oktalyzer  (Atari ST) 8 channels" : MOD_ActiveChannels = 8
Case "N.T." : MOD_Tracker = "Noisetracker (Linux) 32 channels" : MOD_ActiveChannels = 32
Case "CD81" : MOD_Tracker = "Falcon (Atari) 8 channels" : MOD_ActiveChannels = 8
Default    MOD_Tracker = "Not a valid format !" : MOD_ActiveChannels = 0 : Return 0 ; not a valid mod format

End Select

SeekFile (tempmod,0) ; read module name

For i = 1 To 20
      temp = ReadByte (tempmod)
         If temp = 0 MOD_Name = MOD_Name + Chr$(32)
         If temp >0 MOD_Name = MOD_Name + Chr$(temp)
Next

offset = 20 ; read sample name
Dim MOD_SampleName$ (30)
For n = 0 To 30
   SeekFile (tempmod,offset)
      For i = 1 To 22
         temp = ReadByte (tempmod)
            If temp = 0 MOD_SampleName(n) = MOD_SampleName(n) + Chr$(32)
            If temp >0 MOD_SampleName(n) = MOD_SampleName(n) + Chr$(temp)
      Next
   offset=offset+30
Next

Local tempbank = CreateBank(2)   ;big endian   
offset = 42 ; read samples
Dim MOD_SampleAttrib (30,4)
For n = 0 To 30
   SeekFile (tempmod,offset)
      
      temp = ReadByte (tempmod) : PokeByte   tempbank,1,temp ; read sample lenght
      temp = ReadByte (tempmod) : PokeByte   tempbank,0,temp
         MOD_SampleAttrib(n,0) = PeekShort (tempbank,0)*2
      
      temp = ReadByte (tempmod) ; read fine tune
         If temp >7 Then temp = temp -16
            MOD_SampleAttrib(n,1) = temp
 
      MOD_SampleAttrib(n,2) = ReadByte (tempmod) ; read volume
      
      temp = ReadByte (tempmod) : PokeByte   tempbank,1,temp ; read loop start
      temp = ReadByte (tempmod) : PokeByte   tempbank,0,temp
         MOD_SampleAttrib(n,3) = PeekShort (tempbank,0)*2

      temp = ReadByte (tempmod) : PokeByte   tempbank,1,temp ; read loop end
      temp = ReadByte (tempmod) : PokeByte   tempbank,0,temp
         temp = PeekShort (tempbank,0)*2
         If temp <3 Then temp =0 ; 2 byte protection
         MOD_SampleAttrib(n,4) = temp
   
   offset=offset+30
Next
FreeBank tempbank ; big endian

SeekFile (tempmod, 950)
   MOD_Orders = ReadByte (tempmod) ; lenght of song

SeekFile (tempmod, 952)
   Dim MOD_OrderList%(MOD_Orders-1) ;get orders and last pattern
      MOD_Patterns = 0
      For i = 0 To (MOD_Orders-1)
         temp = ReadByte (tempmod)
         If temp > MOD_Patterns  Then MOD_Patterns = temp
      MOD_OrderList (i) = temp
      Next
      MOD_Patterns=MOD_Patterns+1; add last pattern

SeekFile (tempmod,1084) ; read pattern datas

Dim MOD_Pat_Note$ (((MOD_Patterns*64)-1),(MOD_ActiveChannels-1)) ; create dims
Dim MOD_Pat_Sample% (((MOD_Patterns*64)-1),(MOD_ActiveChannels-1))
Dim MOD_Pat_RSample$ (((MOD_Patterns*64)-1),(MOD_ActiveChannels-1))
Dim MOD_Pat_Fx% (((MOD_Patterns*64)-1),(MOD_ActiveChannels-1))
Dim MOD_Pat_RFx$ (((MOD_Patterns*64)-1),(MOD_ActiveChannels-1))

For m = 0 To ((MOD_Patterns*64)-1)
      For n = 0 To (MOD_ActiveChannels-1) ; fill rows
   
         bin1$= Right(Bin(ReadByte(tempmod)),8) ; read block
         bin2$= Right(Bin(ReadByte(tempmod)),8)
         bin3$= Right(Bin(ReadByte(tempmod)),8)
         bin4$= Right(Bin(ReadByte(tempmod)),8)

         tempbin = Mid(bin1$,5,4)+Mid(bin2$,1,8) ; get note value
               temp = 0
               For i=1 To Len(tempbin)
               temp = temp+(2^(Len(tempbin)-i)*(Mid$(tempbin,i,1) And "1"))
               Next
         MOD_Pat_Note (m,n) = MOD_MakeNoteString$ (temp)

         tempbin = Mid(bin1$,1,4)+Mid(bin3$,1,4) ; get sample value
               temp = 0
               For i=1 To Len(tempbin)
               ;temp = temp+(2^(Len(tempbin)-i)*(Asc(Mid$(tempbin,i,1))-48))
               temp = temp+(2^(Len(tempbin)-i)*(Mid$(tempbin,i,1) And "1"))
               Next
         MOD_Pat_Sample (m,n) = temp
            If temp = 0 MOD_Pat_RSample (m,n) = "--"
               If temp > 0 Then
                     If temp >9 MOD_Pat_RSample (m,n) = temp
                     If temp = 9 MOD_Pat_RSample (m,n) = "09"   
                     If temp = 8 MOD_Pat_RSample (m,n) = "08"
                     If temp = 7 MOD_Pat_RSample (m,n) = "07"
                     If temp = 6 MOD_Pat_RSample (m,n) = "06"
                     If temp = 5 MOD_Pat_RSample (m,n) = "05"
                     If temp = 4 MOD_Pat_RSample (m,n) = "04"
                     If temp = 3 MOD_Pat_RSample (m,n) = "03"
                     If temp = 2 MOD_Pat_RSample (m,n) = "02"
                     If temp = 1 MOD_Pat_RSample (m,n) = "01"
               EndIf

         tempbin = Mid(bin3$,5,4)+Mid(bin4$,1,8) ; get fx $ value
               temp = 0
               For i=1 To Len(tempbin)
               temp = temp+(2^(Len(tempbin)-i)*(Mid$(tempbin,i,1) And "1"))
               Next
         MOD_Pat_Fx (m,n) = temp
               temphex = Hex$(temp)
               tempcut = Replace(temphex,"00000","")      
                  If tempcut = "000" tempcut = "---"
         MOD_Pat_RFx (m,n) = tempcut
      Next
Next
   
CloseFile (tempmod) ; clear up

Return 1
End Function

Function MOD_MakeNoteString$ (value%)
   Local temp$
   If MOD_Amiga = 0 Then
      Select value
         Case 6868 : temp = "C-1"
         Case 6464 : temp = "C#1"
         Case 6096 : temp = "D-1"
         Case 5760 : temp = "D#1"
         Case 5424 : temp = "E-1"
         Case 5120 : temp = "F-1"
         Case 4832 : temp = "F#1"
         Case 4560 : temp = "G-1"
         Case 4304 : temp = "G#1"
         Case 4064 : temp = "A-1"
         Case 3840 : temp = "A#1"
         Case 3624 : temp = "B-1"

         Case 3424 : temp = "C-2"
         Case 3232 : temp = "C#2"
         Case 3048 : temp = "D-2"
         Case 2880 : temp = "D#2"
         Case 2715 : temp = "E-2"
         Case 2560 : temp = "F-2"
         Case 2416 : temp = "F#2"
         Case 2280 : temp = "G-2"
         Case 2152 : temp = "G#2"
         Case 2032 : temp = "A-2"
         Case 1920 : temp = "A#2"
         Case 1812 : temp = "B-2"

         Case 1712 : temp = "C-3"
         Case 1616 : temp = "C#3"
         Case 1525 : temp = "D-3"
         Case 1440 : temp = "D#3"
         Case 1357 : temp = "E-3"
         Case 1281 : temp = "F-3"
         Case 1209 : temp = "F#3"
         Case 1141 : temp = "G-3"
         Case 1077 : temp = "G#3"
         Case 1017 : temp = "A-3"
         Case 961 : temp = "A#3"
         Case 907 : temp = "B-3"

         Case 856 : temp = "C-4"
         Case 808 : temp = "C#4"
         Case 762 : temp = "D-4"
         Case 720 : temp = "D#4"
         Case 678 : temp = "E-4"
         Case 640 : temp = "F-4"
         Case 604 : temp = "F#4"
         Case 570 : temp = "G-4"
         Case 538 : temp = "G#4"
         Case 508 : temp = "A-4"
         Case 480 : temp = "A#4"
         Case 453 : temp = "B-4"

         Case 428 : temp = "C-5"
         Case 404 : temp = "C#5"
         Case 381 : temp = "D-5"
         Case 360 : temp = "D#5"
         Case 339 : temp = "E-5"
         Case 320 : temp = "F-5"
         Case 302 : temp = "F#5"
         Case 285 : temp = "G-5"
         Case 269 : temp = "G#5"
         Case 254 : temp = "A-5"
         Case 240 : temp = "A#5"
         Case 226 : temp = "B-5"

         Case 214 : temp = "C-6"
         Case 202 : temp = "C#6"
         Case 190 : temp = "D-6"
         Case 180 : temp = "D#6"
         Case 170 : temp = "E-6"
         Case 160 : temp = "F-6"
         Case 151 : temp = "F#6"
         Case 143 : temp = "G-6"
         Case 135 : temp = "G#6"
         Case 127 : temp = "A-6"
         Case 120 : temp = "A#6"
         Case 113 : temp = "B-6"

         Case 107 : temp = "C-7"
         Case 101 : temp = "C#7"
         Case 95 : temp = "D-7"
         Case 90 : temp = "D#7"
         Case 85 : temp = "E-7"
         Case 80 : temp = "F-7"
         Case 76 : temp = "F#7"
         Case 71 : temp = "G-7"
         Case 67 : temp = "G#7"
         Case 64 : temp = "A-7"
         Case 60 : temp = "A#7"
         Case 57 : temp = "B-7"

         Case 54 : temp = "C-8"
         Case 51 : temp = "C#8"
         Case 48 : temp = "D-8"
         Case 45 : temp = "D#8"
         Case 43 : temp = "E-8"
         Case 40 : temp = "F-8"
         Case 38 : temp = "F#8"
         Case 36 : temp = "G-8"
         Case 34 : temp = "G#8"
         Case 32 : temp = "A-8"
         Case 30 : temp = "A#8"
         Case 29 : temp = "B-8"

         Case 27 : temp = "C-9"
         Case 26 : temp = "C#9"
         Case 24 : temp = "D-9"
         Case 23 : temp = "D#9"
         Case 22 : temp = "E-9"
         Case 20 : temp = "F-9"
         Case 19 : temp = "F#9"
         Case 18 : temp = "G-9"
         Case 17 : temp = "G#9"
         Case 16 : temp = "A-9"
         Case 15 : temp = "A#9"
         Case 14 : temp = "B-9"

         Default temp = "---"
      End Select
      EndIf
   If MOD_Amiga = 1 Then
      Select value
         Case 856 : temp = "C-1"
         Case 808 : temp = "C#1"
         Case 762 : temp = "D-1"
         Case 720 : temp = "D#1"
         Case 678 : temp = "E-1"
         Case 640 : temp = "F-1"
         Case 604 : temp = "F#1"
         Case 570 : temp = "G-1"
         Case 538 : temp = "G#1"
         Case 508 : temp = "A-1"
         Case 480 : temp = "A#1"
         Case 453 : temp = "B-1"

         Case 428 : temp = "C-2"
         Case 404 : temp = "C#2"
         Case 381 : temp = "D-2"
         Case 360 : temp = "D#2"
         Case 339 : temp = "E-2"
         Case 320 : temp = "F-2"
         Case 302 : temp = "F#2"
         Case 285 : temp = "G-2"
         Case 269 : temp = "G#2"
         Case 254 : temp = "A-2"
         Case 240 : temp = "A#2"
         Case 226 : temp = "B-2"

         Case 214 : temp = "C-3"
         Case 202 : temp = "C#3"
         Case 190 : temp = "D-3"
         Case 180 : temp = "D#3"
         Case 170 : temp = "E-3"
         Case 160 : temp = "F-3"
         Case 151 : temp = "F#3"
         Case 143 : temp = "G-3"
         Case 135 : temp = "G#3"
         Case 127 : temp = "A-3"
         Case 120 : temp = "A#3"
         Case 113 : temp = "B-3"
         Default temp = "---"
      End Select
      EndIf         
Return temp
End Function

Function MOD_Reset()
MOD_Name$ = ""
MOD_Orders% = 0
MOD_Tracker$ = ""
MOD_ActiveChannels% = 0
MOD_Id$ = ""
MOD_Patterns% = 0
Dim MOD_SampleName$ (0)
Dim MOD_SampleAttrib% (0,0)
Dim MOD_OrderList% (0)
Dim MOD_Pat_Note$ (0,0)
Dim MOD_Pat_Sample% (0,0)
Dim MOD_Pat_Fx% (0,0)
Dim MOD_Pat_RFx$ (0,0)
Dim MOD_Pat_RSample$ (0,0)
End Function

ozzi789

BeitragMi, Okt 01, 2008 20:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab da ne Frage zur Visualisierung mit der "neuen" dll, iwie bekomm ich das ned hin, hab den code aus der bass studio.zip und das funkt dort nur mit mod, wen ichs in
music= BASS_SampleLoad(0,"c:\bluber.mp3",0,0,0,BASS_SAMPLE_OVER_VOL)
(sample load is ja für mp3) gehtz au ned, respektive es wird nur die (komischerweise) flasche CPU auslastung gezeigt und kein sound nix balken Confused


kann mir da jemand helfen ?

thx
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic DLLs und Userlibs

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group