OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů

Zde me bt odkaz na vai retro prty

Právě je 01.03.2021, 05:04

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 179 ]  Přejít na stránku Předchozí  1 ... 8, 9, 10, 11, 12
Autor Zpráva
PříspěvekNapsal: 11.01.2021, 11:54 
Offline
Stydlín

Registrován: 11.01.2021, 11:47
Příspěvky: 9
Has thanked: 0 time
Been thanked: 11 times
Ahoj. Držím palce s programováním.
Mám pár nedůležitých dotazů:
1. Jestli to dobře chápu, tak si děláš svůj vlastní formát skladby. Řešíš nějak i editování? Jak skladbu vytváříš? Máš na to bokem nějaké udělátko nebo to děláš old-school programátorsky - tedy "dc.b xx,yy,zz, ..." apod.?
2. Tvůj kód obsahuje i syntézu zvuků (nástrojů) k přehrávání? Pokud ano, pak opět bod 1. Jak to edituješ a zkoušíš?


Nahoru
 Profil  
 
PříspěvekNapsal: 12.01.2021, 00:16 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 1944
Bydliště: Brno
Has thanked: 519 times
Been thanked: 173 times
Ano, mám můj vlastní formát, editace je přímo v assembleru pomocí DC. Hudební rutina pracuje pouze se samply. Ale lze načíst i sampl o délce třeba 1 byte. Mám podprogram na vibrato, arpeggio.

Včera jsem rutinu předělával. Ještě není hotovo. Základ hudebního formátu je 4 byte pro 4 kanály, zde se zadává i vibrato. Pak volitelné jsou 4 byte pro hlasitost 4 kanálů (info o hlasitosti 6 bitů na kanál. První byte má ještě jiný účel), 4 byte pro arpeggio, 4 byte pro jemnou práci se samply v rámci časování, tohle lze ale dělat v jednom momentě pouze v 1 kanály.

V současné době zkouším zahrát v 1 Longu 1 řádek v běžném trackeru. Můžu narazit na problém, že sampl bude hrát dlouho a po zvukové stránce mi to může zanést do zvuku i nechtěný bordel. Sample zatím tlumim přímo ve formátu, nedělá se automatický výpočet, kdy sampl ztlumit. Můžu použít podprogram pro jemnou práci se samply, ale jen pro 1 kanál v jednom momentě. Před tím jsem to dělal tak, že 1 řádek v klasickém trackeru byl v mém formátu zapsán pomocí třeba 4 Longů a tam jsem si již určil, jestli sampl ztumim v prvním, druhém, nebo třeba ve 4.Longu. Co bylo přesnější. V těchhle situacích třeba použiju alespoň 2 Longy. Uvidím.

_________________
Amiga - PMD 85
Kafasoft


Nahoru
 Profil  
 
PříspěvekNapsal: 12.01.2021, 09:26 
Offline
Pan Generální

Registrován: 22.05.2013, 21:14
Příspěvky: 3025
Bydliště: Bratislava
Has thanked: 308 times
Been thanked: 574 times
Lisiak4 píše:
Hudební rutina pracuje pouze se samply. Ale lze načíst i sampl o délce třeba 1 byte.
Aky zvuk bude mat taky jednobajtovy sampel (napr. hodnota 128) ? ;)


Nahoru
 Profil  
 
PříspěvekNapsal: 12.01.2021, 11:49 
Offline
Stydlín

Registrován: 11.01.2021, 11:47
Příspěvky: 9
Has thanked: 0 time
Been thanked: 11 times
Lisiak4 píše:
Ano, mám můj vlastní formát, editace je přímo v assembleru pomocí DC.

Rozumím. Tak to je značně hard-core. Ale třeba si editor někdy uděláš. Přece jen skládat nějakou hezkou melodickou hudbu v assembleru je asi docela obtížné.


Nahoru
 Profil  
 
PříspěvekNapsal: 12.01.2021, 15:02 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 1944
Bydliště: Brno
Has thanked: 519 times
Been thanked: 173 times
Pardon, jednoduše lze zahrát sampl o velikosti 1 sinusovky.

Zatím jen predelávám skladby z Atari 800 XL/XE.

Mne jednoduše vadila cizí hudební rutina s kódem, kterému nerozumím, ale nepočítal jsem, že na tom budu dělat tak dlouho... .

_________________
Amiga - PMD 85
Kafasoft


Nahoru
 Profil  
 
PříspěvekNapsal: 16.01.2021, 01:32 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 1944
Bydliště: Brno
Has thanked: 519 times
Been thanked: 173 times
Takhle vypadá můj formát. První longy jsou noty, Úplně nahoře long s bytem AD je předsekvence pro sample. Je zde využít každý bit jen ne teď a nahrávám sampl s hodnotou dvou bitů na 00. Long s bytem CD nastavuje hlasitost. V tomhle Longu jsou nevyužité 2 bity.

Dnes jsem opravil u mně asi jednu z nejhorších chyb v ASM. Celkem slušně jsem to vše rozpitval. Snad to již bude vše ok.

Ve 2 přílohách tedy vzhled formátu a předsekvence pro práci se samply. Časem chci udělat popis, ale ještě je brzo.


Přílohy:
predsekvencePrepinaniSamplu8.zip [565 bajtů]
18 krát
format.png
format.png [ 21.97 KiB | Zobrazeno 512 krát ]

_________________
Amiga - PMD 85
Kafasoft
Nahoru
 Profil  
 
PříspěvekNapsal: 19.01.2021, 11:36 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 1944
Bydliště: Brno
Has thanked: 519 times
Been thanked: 173 times
Přemýšlel jsem o situaci, kdy budu potřebovat načíst 5 samplů naráz. 3 sample do kanálu 1-3 a 2 sample pro práci s jemným časováním do kanálu 4. A zároveň mi vadilo, že i když taková situace jen tak nenastane a můžu použít info třeba z 3. a 4. kanálu pro zahrání 2 samplů s jemným časováním v kanálu 4, tak si tím blokují vždy minimálně 1 kanál, neboli budu moci v ten moment kromě 2 samplů do 4.kanalu nahrát ještě 2 sample a tedy neosadit samply všechny 3 zbylé kanály. Přizval jsem si tedy na pomoc volné bity z předsekvence pro hlasitost a asi tuhle možnost dám i do předsekvence arpeggio. Ta funkčnost by pak měla být zřejmá snad i z popisu. Pokud tedy nepouziju predsekvenci sampl, předsekvence volume ponese info o rychlosti hraní skladby, to je prvních 5 bitů. Predsekvenci volume ještě jen doprogramuji.

Kód:
************************************
* predsekvence sampl (s casovacem) *
************************************
 pocet bitu 32 / funkce
-------------------------------------------
 5 casovac - 2.smp        (4.kanal, sampl 1-8)
 3 sampl 1-8     (casovac, aktivace nahrani 2.smp pres 4.kanal)
-------------------------------------------
 6 frekvence     (casovac, 4.kanal, sampl 1-8)
 1 ztlumeni smp? (casovac, 4.kanal, sampl 1-8)
 1+
-------------------------------------------
 2=3 sampl 1-8              (aktivace nahrani smp pres 3.kanal)
 3 2) kanal 1-4  (sampl 1-8, aktivace nahrani smp pres 2.kanal)
 3 1) kanal 1-4  (sampl 1-8, aktivace nahrani smp pres 1.kanal)
-------------------------------------------
 ----nove
 1 predsekvence
 2 jen hlasitost, jen sampl (s casovacem),
   arpeggio (10,01,11), stav 00 volny
 5 casovac - rychlost hrani skladby

*********************************************************
* predsekvence hlasitost (nepouzita predsekvence sampl) *
*********************************************************
 pocet bitu 32 / funkce
-------------------------------------------
 6 hlasitost 1-64 - 1.kanal (0-3Fh)
-------------------------------------------
 6 hlasitost 1-64 - 2.kanal (0-3Fh)
-------------------------------------------
 6 hlasitost 1-64 - 3.kanal (0-3Fh)
-------------------------------------------
 6 hlasitost 1-64 - 4.kanal (0-3Fh)
-------------------------------------------
 1 predsekvence
 2 hlasitost, sampl, arpeggio (10,01,11), stav 00 volny
 5 casovac - rychlost hrani skladby

*******************************************************
* predsekvence hlasitost (pouzita predsekvence sampl) *
*******************************************************
 Pro zahrani 2 samplu v jeden moment ve formatu

 000000XX - XX = ton ze stupnice ve kterem se hraji 2 sample
                 nahrani prvniho ze dvou samplu

 pocet bitu 32 / funkce
-------------------------------------------
 6 hlasitost 1-64 - 1.kanal (0-3Fh)
-------------------------------------------
 6 hlasitost 1-64 - 2.kanal (0-3Fh)
-------------------------------------------
 6 hlasitost 1-64 - 3.kanal (0-3Fh)
-------------------------------------------
 6 hlasitost 1-64 - 4.kanal (0-3Fh)
-------------------------------------------
 1 predsekvence
 2 hlasitost, sampl, arpeggio (10,01,11), stav 00 volny
 3 sampl 1-8 (4.kanal)
 1 nahrat sampl 1-8? (4.kanal, pro prvni ze 2 samplu)
 1 pouzit nastaveni hlasitosti? (1-4.kanal)

 (nulova hlasitost se dosahuje primo ve formatu pomoci 00)

_________________
Amiga - PMD 85
Kafasoft


Nahoru
 Profil  
 
PříspěvekNapsal: 22.01.2021, 10:33 
Offline
Stydlín

Registrován: 11.01.2021, 11:47
Příspěvky: 9
Has thanked: 0 time
Been thanked: 11 times
Zápis informací přímo v hexa číslech je hodně nepřehledné. Obvykle se ani autor po nějaké době ve formátu nevyzná. Proto se obvykle číslům přiřazují symbolická jména a větší celky se pak konstruují z nich. Dají se využít i makra. Třeba něco takového?
Kód:
  CMD_PLAY = $1
  CMD_STOP = $2
  CMD_WAIT = $3
  ....
  ....
  E_NONE = $0
  E_ARPEGIO = $1
  E_VIBRATO = $3
  ....
  ....

  macro COMMAND ; command, time, volume, effect
    dc.l (((\1)&$f)<<24)|(((\2)&$ff)<<16)|(((\3)&$ff)<<8)|((\4)&$f)
  endm

   ....
   ....

Commands:
  COMMAND CMD_STOP,10,0,E_NONE
  COMMAND CMD_PLAY,32,63,E_ARPEGIO
  COMMAND CMD_WAIT,200,0,E_NONE
  ....
  ....

Je to pak z dlouhodobého hlediska asi čitelnější. Nemluvě o možnosti snáze vše zpětně upravovat.


Nahoru
 Profil  
 
PříspěvekNapsal: 22.01.2021, 13:11 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 1944
Bydliště: Brno
Has thanked: 519 times
Been thanked: 173 times
Díky moc za příklad, možná později ;)

_________________
Amiga - PMD 85
Kafasoft


Nahoru
 Profil  
 
PříspěvekNapsal: 23.01.2021, 10:30 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 1944
Bydliště: Brno
Has thanked: 519 times
Been thanked: 173 times
Dokončena možnost nahrávat 5 samplů v jeden moment. Tak snad základ hudebního formátu dokončen. Mám i hotových prvních 5 patternů (3 různé) z 2.nepublikované skladby. Ještě si bude muset sednout to, na kolik Longů se bude hrát v mé hudební rutině 1 řádek klasického formátu v běžném trackeru. Ale to je již jen věc časování a ne mého formátu, ten může hrát 1 a více Longů po sobě, jen se natahuje objem dat. S tímhle uvidím hlavně kvůli tomu ztlumovani samplů. Ale rozhodně i na 1 Long bez zásahů je skladba poslouchatelná.

@defor: a kolik taktů si vezmou ti makra? Spíše mi jde o míru zatížení než o přesný počet. Asi jsem úchyl, ale mně se zatím více líbí to zarovnání na bajty :)

A ještě si dovolím mou reakci na současný stav rutiny i když vibrato a arpeggio jsou není v poslední době odzkoušené...
:jump:

_________________
Amiga - PMD 85
Kafasoft


Nahoru
 Profil  
 
PříspěvekNapsal: 26.01.2021, 10:58 
Offline
Stydlín

Registrován: 11.01.2021, 11:47
Příspěvky: 9
Has thanked: 0 time
Been thanked: 11 times
Lisiak4 píše:
@defor: a kolik taktů si vezmou ti makra? Spíše mi jde o míru zatížení než o přesný počet. Asi jsem úchyl, ale mně se zatím více líbí to zarovnání na bajty :)

Nerozumím. Makra si "berou" tolik taktů podle toho, do jakých instrukcí je assembler rozvine. Ale v tom mém příkladu makro obsahuje pouze deklaraci "dc.l", která jen vytváří v paměti long-word o dané hodnotě - žádnou instrukci. Schopnost psát makra je standardní vlastností všech modernějších assemblerů. Usnadňují programování opakujících se bloků kódu a zvyšují jeho přehlednost a použitelnost. Nic víc, nic míň.


Nahoru
 Profil  
 
PříspěvekNapsal: 27.01.2021, 13:15 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 1944
Bydliště: Brno
Has thanked: 519 times
Been thanked: 173 times
@defor: ok :)

@ALL: přemýšlel jsem jestli tam jsem schopen narvat ty zásahy do samplů v rámci jejich ztlumovaní a jsem. Myslím v mezičase, kdy se čeká na zpracování další smyčky v mé rutině a tak, aby jsem nerozšiřoval rozsah již použitých 3 Longů (3 krát 4 byte=noty, hlasitost, arpeggio) a mělo by to jít. Testování proběhne 3 krát. V 1/4, 1/2 a 3/4 jedné smyčky rutiny. Nezůstane volný žádný bit :). Tohle platí pro kanály 1 až 3. Čtvrtý kanál může zasahovat ještě jemněji. Pro představu teď je to tak 14 krát.

Tuhle verzi rutiny co teď mám si nechám jako odlehčenou. Ale větší jistota je pro mne to o čem jsem teď psal. Tak snad se to povede :)

_________________
Amiga - PMD 85
Kafasoft


Nahoru
 Profil  
 
PříspěvekNapsal: 28.02.2021, 04:07 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 1944
Bydliště: Brno
Has thanked: 519 times
Been thanked: 173 times
Koukám že na OC jsou nějaké nové příspěvky. Zatím nemám úplně hotovo, musím ještě přeprogramovat predsekvenci pro sample a udělat pár dalších drobností a kontrol v programu. Zaměřil jsem se na ztlumovaní samplů v 1/4, 1/2, 3/4 taktu v kanálu 1 až 3. Ve čtvrtek jsem dokončil hlavní logiku. Jedná se o 3.verzi. postupně jsem to zjednodušoval a tedy i v rámci náročnosti na CPU urychloval. Ještě jsem vůbec netestoval. Ale něco zahrát to již mohlo. Bylo ticho. Včera večer jsem tam hodil správnou práci s DMA, a to si pak ještě zkontroluji, ale nepomohlo no a jak jsem se vzbudil ve 2:30, tak jsem si říkal, dám do registrů natvrdo všude plnou hlasitost, ale taky nepomohlo, pak jsem si všiml, jak DMAčku dávám, nebo nedávám pokyn aby hrálo, protože místo 80 hexa jsem dával do registru pouze 8. Tak minimálně mi to zatím alespoň hraje. Tak zas někdy :lol:

_________________
Amiga - PMD 85
Kafasoft


Nahoru
 Profil  
 
PříspěvekNapsal: 28.02.2021, 04:09 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 1944
Bydliště: Brno
Has thanked: 519 times
Been thanked: 173 times
A je 3:08, mně to ukazuje o hodinu vyšší čas :lol:

_________________
Amiga - PMD 85
Kafasoft


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 179 ]  Přejít na stránku Předchozí  1 ... 8, 9, 10, 11, 12

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
cron
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz