OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů
Právě je 25 zář 2017, 19:40

Všechny časy jsou v UTC + 1 hodina




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 97 ]  Přejít na stránku Předchozí  1 ... 3, 4, 5, 6, 7
Autor Zpráva
PříspěvekNapsal: 04 led 2017, 21:23 
Online
Pan Štábní
Uživatelský avatar

Registrován: 13 kvě 2013, 08:15
Příspěvky: 1444
Bydliště: Brno
Has thanked: 343 times
Been thanked: 97 times
Včera jsem odstranil další brutální chybu v mé rutině. Hrál jsem pouze polovičním rozsahem frekvencí, tedy tak s 12 z 25. A i to špatně. V rychlosti jak jsem obracel logiku, aby nejnižší číslo byl nejnižší tón a ne nejvyšší tón jsem do rutiny naházel špatná čísla pro běh jedné z logik programu. Další legrací bylo, že jsem odpočítával hodnotu rozsahu 1 byte (registr plný dalších parametrů, volný snad jen 1 byte možná ještě a ten si chci nechat v rezervě) od hodnoty ve 2. registru v rozsahu 2 byte. Tedy mi ve druhém registru neproběhl odpočet správně. Potřeboval jsem v obou registrech pracovat s rozsahem 2 byte, co jsem nemohl učinit. Využil jsem situace, že mi ve 2. registru postačovala ve 2. byte jednička. A i to jsem začínal na rozsahu, kde u nejvyššího čísla byla dvojka. To je ale pouze startovací nejvyšší číslo, tedy jsem daný byte nastavil tak aby se po odečtu hodnoty zobrazila právě chtěná hodnota (1. byte 2. registru) a do 2. byte 2. registru jsem jedničku napevno přiřadil. Pak mi již stačilo jen sledovat hodnotu kým se mi sníži na požadované číslo a jedničku z 2. bytu jsem napevno odstranil a pokračoval dál již v odečtu rozsahu 1 byte. Standardní problémy každého, kdo se věnuje programování, ale přesně pro tohle se mi programování líbí. Krásné čisté přesné. Chybu skoro vždy můžeš udělat jen ty, ne procesor. Buď ho dokopeš dělat to co cheš a nebo si prohrál, žádný jiný stav mezi tím neexistuje.

10

Příště si ještě něco odsleduji - malá chyba o které vím a již snad konečně pohnu s rutinou a začnu pracovat na hraní logiky dlouhých samplů. Snad se zadaří.

_________________
Amiga - PMD 85
Kafasoft


Nahoru
 Profil  
 
PříspěvekNapsal: 08 led 2017, 05:15 
Online
Pan Štábní
Uživatelský avatar

Registrován: 13 kvě 2013, 08:15
Příspěvky: 1444
Bydliště: Brno
Has thanked: 343 times
Been thanked: 97 times
stupnice:
Kód:
A1   01
A1#  02
H1   03
C2   04
C2#  05
D2   06
D2#  07
E2   08
F2   09
F2#  0a
G2   0b
G2#  0c
A2   0d
A2#  0e
H2   0f
C3   10
C3#  11
D3   12
D3#  13
E3   14
F3   15
F3#  16
G3   17
G3#  18
A3   19

_________________
Amiga - PMD 85
Kafasoft


Nahoru
 Profil  
 
PříspěvekNapsal: 12 led 2017, 09:33 
Online
Pan Štábní
Uživatelský avatar

Registrován: 13 kvě 2013, 08:15
Příspěvky: 1444
Bydliště: Brno
Has thanked: 343 times
Been thanked: 97 times
Lisiak4 píše:
Příště si ještě něco odsleduji - malá chyba o které vím a již snad konečně pohnu s rutinou a začnu pracovat na hraní logiky dlouhých samplů. Snad se zadaří.

15 minut po půlnoci jsem dostal chuť si zaprogramovat a po 90 minutách našel zdroj chyby a provedl nápravu.

Před tím jsem si zkusil něco naházet do rutiny. Udělat něco pomalého, klidného a pak jsem to pořádně zrychlil :lol:. Pak jsem si řekl, že nemůžu začít tak rychle a musím před to dát něco klidnějšího, tak jsem učinil no a když jsem byl ve sprše :lol:, tak mne napadlo že bych tam mohl dát něco pomalejšího s klavírem a do toho by se mohlo hrát něco z toho mála rychlého co doposud mám v jiném nástroji. Tvoří takhle i ostatní hudbu, je to normální postup, nebo jsem opět jen v nějakém svém rozsahu a tedy věc dělám úplně jinak, než by se správně mělo? :lol:

_________________
Amiga - PMD 85
Kafasoft


Nahoru
 Profil  
 
PříspěvekNapsal: 10 úno 2017, 23:56 
Online
Pan Štábní
Uživatelský avatar

Registrován: 13 kvě 2013, 08:15
Příspěvky: 1444
Bydliště: Brno
Has thanked: 343 times
Been thanked: 97 times
Ještě pořád dnes kolem 2 v noci jsem poprvé zahrál sampl přes několik taktů. V mé terminologii tedy dlouhý sampl netlumen dalším taktem. Zatím jen v 1. kanálu, nicméně tváří se to použitelně, tak je to asi OK - doufám. Zatím dle mne celkem mrhám prostorem, kdy v rámci 4 bytového registru používám informaci na úrovni 1 bajtu (přesněji řečeno mám třeba v 1 byte číslo pouze v rozsahu 0-4 a nic víc), když samotný bajt má 8 bitů, přes to všechno mám dobrý pocit z toho, že alespoň na úrovni bajtů se snažím program psát dle mého nejlepšího vědomí a svědomí v rámci faktu, že se potřebuji posouvat i dopředu, tedy nejdu za každou cenu na hranu nejsamlepšejšího kódu co dokáži v rámci sebe napsat. Přes to vše jsem si dal za úkol použit k info kolik se má ztlumit samplů v rámci 1 taktu poslední volný byte v D3. Musel jsem tedy zabezpečit, aby se mi daná informace v rámci hrací smyčky neztratila počas celkém dlouhýho průběhu v samotném programu a celkově již tak zacházím i s dalšíma informacemi v samotném registru D3, kde pomocí rotací bytů aritmetického posunu? (insrukce ASR, ASL) zabezpečuji, aby v kódu o velikosti několik desítek řádků tak nějak vše fungovalo a nebyl nikde problém. Trochu jsem si tedy osvojil instrukce jak v rámci rotace bytů (ROR,ROL), tak v rámci aritmetického posunu byte (ASR,ASL), né že bych je již nějakou dobu nepoužíval... .

Hrající sampl samozřejmě můžu ztlumit ve kterémkoliv taktu. Tohle zatím budu moci používat, kým nebudu mít část programu, která se stará o ztlumení samplu na jeho úplném konci zcela výladěnou, pokud se mi ji zcela vyladit vůbec podaří. Jednoduše sampl ztlumím v posledním možném taktu, ve kterém za jeho zvukem ještě nebudu mít ve zvuku i nechtěný bordel, čím docílým delší tón v rámci samplu než tomu bylo doteď, kdy jsem mohl zahrát sampl pouze v rozsahu 1 taktu.

Programování zdar! :)

_________________
Amiga - PMD 85
Kafasoft


Nahoru
 Profil  
 
PříspěvekNapsal: 19 úno 2017, 13:31 
Online
Pan Štábní
Uživatelský avatar

Registrován: 13 kvě 2013, 08:15
Příspěvky: 1444
Bydliště: Brno
Has thanked: 343 times
Been thanked: 97 times
Doprogramována logika zbylých 3 kanálů pro hraní dlouhých samplů a odstranění dalších 2 chyb zanesených samotným měněním logiky v části, kde se hraje sampl. Ještě mi rutina nezahrála v každém taktu sampl a tak jsem i do části, kdy je již jasné, že se bude hrát nový tón přidal taky ztlumení samplu, nepomohlo a tak jsem si říkal, že je mezi ztlumením původního a zahráním nového samplu malý časový prostor. Že má registr na to určen problém v tak krátké době sampl ztlumit a pak zahrát další tón. Se mi tahle teorie nezdá, nicméně mé domněnky potvrzuje fakt, že když jsem dal mezi dané úkony zpomalení, začal nový sampl hned v dalším taktu již hrát. Sem tam ale i tak nějaký sampl nebyl zahrán, tak jsem se teď když dané věci dělám ještě celkem nahrubo přestal hrát s drobnými a mám tam zatím zpomalení nějakou tisícinu vteřiny, fakt se mi to nechce počítat, já jen +- pro představu. Zdá se, že při současné rychlosti hraní "hudby" již hraje každý sampl stabilně. Zatím jsem dal zpomalení pouze do 1. kanálu.

Jinak dnes jsem došel k závěru, že údaj, kolik potřebuji ztlumit samplú z těch co hrají má rutina vlastně ani k chodu již nepotřebuje. Celkem mne to stálo čas, abych daný údaj v registru d3 udržel, nicméně, když někdy budu potřebovat 1 byte přehnat přes část programu, kde se pracuje s frekvencí samplu, vím přesně kam ho vrazit :).

Celkem mi dala zabrat i samotná logika pro zahrání dlouhého samplu přes více taktů. Logiku jsem měl z hlavy naprogramovanou a netestovanou, nicméně se mi v ní opakoval 1 řádek. Tedy stejný řádek byl na 2 místech co mne z nějakého důvodu slušně iritovalo a já věděl, že to jde i bez něj tak jsem naprogramoval asi o třetinu delší logiku jak byla ta původní (hlavně že se v ní neopakoval žádný řádek) a když jsem to měl hotové, tedy přesněji skoro hotové, zjistil jsem, že se mi nedaří sloučit 2 věci dohromady. Tak jsem to všechno zakomentoval a během 10 minut jsem měl před sebou něco, co jsem věděl, že je to, co jsem hledal. V tu chvíli jsem měl pocit, že jsem ještě takovou logiku nikdy nepoužil. Nicméně v počtech toho, co jsem kdysi zkusil se mám již problém orientovat. Měl jsem před sebou o třetinu jednoduší logiku než tu první a bez toho, aby se nějaká část v ní opakovala. Tak jsem byl konečně spokojen :).

Dnes ráno, když jsem poprvé zahrál 4 kanály a v jednom kanály mi hrál sampl přes 3 takty jsem měl obrovskou radost :)

:jump:

:heilpmd:

_________________
Amiga - PMD 85
Kafasoft


Nahoru
 Profil  
 
PříspěvekNapsal: 17 bře 2017, 18:09 
Online
Pan Štábní
Uživatelský avatar

Registrován: 13 kvě 2013, 08:15
Příspěvky: 1444
Bydliště: Brno
Has thanked: 343 times
Been thanked: 97 times
ExiE měl na AM dotaz, jak to funguje. Uvedeno na AM již nějakou dobu dávám i sem:

Citace:
Šel jsem na to nejjednodušší cestou. Vše se píše přímo v editoru asm. Tedy mám vlastní primitivní formát ze samotného textu. Použiju foto z vlákna "Ukaž screenshot!" První čtyři řádky s černým textem:
B1- 1.kanál
BA - sampl na adrese pod proměnnou BA (dáme do 1.kanálu)

Pokud se bude jednat o poslední sampl co chci nahrát do příslušných registrov, tak místo "1" se napíše "0".
Zde nahraju 4 sample a "E0" nám říká, že se jedná o poslední nahrání samplu "BD" do příslušného registru.

Pak se určuje hlasitost kanálu 1 až 4 (B1-E0) vše 40 hexa co je maximum

0e00 - je rychlost hraní

B107D0 - délka 1.samplu B1 má 07D0 wordů v hexa (délka posledního samplu je za E0).

1111 - budou hrát všechny kanále (1000 = bude hrát pouze 1.kanál, tedy každý takt se mi bude měnit po 1 tóne)

20202020 - "20" = nehraj nic / když něco hraje, tak sampl ztlum na 0. Tímhle se zatím vyhýbám, aby se mi něco nehrálo v první programové smyčce kde se ukládají sample do registrů a jiné viz popis výše. Rutina má 2 hlavní smyčky:
1. pro načtení samplů a dalšího
2. pro hraní s již použitým nastavením

Rychlost vykonání těch 2 smyček je samozřejmě různá a řešení dané věci je pro mne vedlejší problém a tím že tam mám "20202020" zajistím, že tóny v 1.taktu budou stejné délky, jako ti ostatní, protože pak se již pude v kratší programové smyčce. Pak již nasleduje 4 kanálové hraní.

"20" jsem již popsal, zatím ní i manuálně ztlumuji sampl, aby jsem na jeho konci neměl zvukový bordel, tedy i něco jiného, než samotný sampl.
"30" hraní samplu přes více taktů, pokud je sampl delší, než délka samotného taktu, tedy samotné rychlosti hraní "hudby". S "30" se to v daném taktu nemůže přestřelit, jinak bude v taktu zvukový bordel. V takovém taktu se musí použít bud "20", nebo zahrát nový tón.
1-19 hexa - 25 tónu. 1 = nejnižší, 19 = nejvyšší tón

tedy:
20080820,20302020
S kanálem 2 a 3 zahraj s nástroji v nich výšku tónu 08. Těch 25 frekvencí, tedy spíše period (co používá Amiga a je to pouze obrácená hodnota frekvence) mám nastaveno dle dokumentace co jsem si našel.
V dalším taktu "20302020" druhý kanál hraje původní tón z 1.taktu a 3.kanál je ztlumen.

Tahle melodie zde je již mnou zahozená... .

Tohle jsem již nějakou dobu nepoužil, ale když se zadá "00" znamená to, že se bude konat nějaká změna / nahrání nového samplu a další.
"0000" = ukončení programu / hraní "hudby".

Tak představení bychom měli za sebou, ještě pak na Resetu pustím nějakou tu jednoduchou hudební pitomost co mám na krku.

Kdo sleduje OC, ví jak rutina postupně vznikala

Přeju všem hezký den :)


Přílohy:
music.jpg
music.jpg [ 59.65 KiB | Zobrazeno 569 krát ]

_________________
Amiga - PMD 85
Kafasoft
Nahoru
 Profil  
 
PříspěvekNapsal: 06 kvě 2017, 21:27 
Online
Pan Štábní
Uživatelský avatar

Registrován: 13 kvě 2013, 08:15
Příspěvky: 1444
Bydliště: Brno
Has thanked: 343 times
Been thanked: 97 times
Mé lameření s "hudbou" v rámci mé rutiny, kde prvotním úkolem bylo si odpovědět, jestli takhle vůbec lze "hudbu" zahrát. V rámci sebe vnímám jako odpověď že lze, jen se když tak bude muset vyměnit hudebník :lol:

Obě "hudby" mají z 90 procent stejný základ, jen jsem vyměnil sample. Na Amize s turbokartou mi zatím hraje hudba zrychleně. Již mám v hlavě pár nápadů jak to vyřešit, tak snad časem.

Odkazy na 2 verze mé "hudby":
https://youtu.be/1i5P0IjNq58
https://youtu.be/9Frub_v6ECY

Programování a Amize zdar!

_________________
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ů: 97 ]  Přejít na stránku Předchozí  1 ... 3, 4, 5, 6, 7

Všechny časy jsou v UTC + 1 hodina


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:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz