Blitz_bass_studio
Übersicht

Gehe zu Seite Zurück 1, 2, 3, 4, 5, 6 Weiter
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hectic: ja, funzt wie ne 1! (selbst bei hässlichem techno ;D) | ||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Werds mir anschauen, danke schonmal ![]() |
||
![]() |
Abrexxes |
![]() Antworten mit Zitat ![]() |
---|---|---|
Eine andere Methode wäre das Signal als "WhatYouHear" aufzuzeichnen. ![]() cu |
||
$tankY |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. ![]() |
||
![]() |
Abrexxes |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
||
![]() |
AbrexxesBetreff: modinfo 1.5 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() 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
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group