News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu

Soundtracker DMA v2.0 released

Started by Zik, 22:01, 21 June 21

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

zhulien

#25
Is there a DMA ram memory map anywhere online with a list of restrictions and such?  From memory the hardware sprites are memory mapped I/O, do we page them in and out, can sample memory be under that sprite memory for example?


Is this the best reference?   http://cpctech.cpc-live.com/docs/cpcplus.html


zhulien

#26
Quote from: Zik on 10:54, 05 July 21
For that purpose you can use option "S" (signal) in leftmost column, see description here: https://soundtrackerdma.cpcscene.net/doku.php?id=en:effects#special_column

The information will be available in output stream, so that you can use it at your convenience.


Awesome... If the CPC can receive a signal to an application at the time the music is played, I guess we can sync i.e. sprites or screen output to the music.  Can we 'alter' the music slightly by the controlling program or is that not possible? e.g. in a DDR type game, if no key is pressed, we don't want the note to play (or perhaps alter the volume of the note to 0), if we pressed the wrong key, perhaps we could make a random beep as the next note instead of the intended note.


As a side note too...  Since you have these instructions, any chance to you can add some MIDI support?  Either as another instruction channel or... as part of that instruction channel.  I would suggest not full midi support but just the sync / clock so we can sync the music within the tracker with the actual midi playing.  I think this would make a really good and useful tracker / MIDI hybrid with minimal effort (I hope) at your end without having to code full MIDI.


I saw that you can sync a Nintendo DS Korg application with some MIDI hardware by creating a pulse on one of the DS Korg drum channels - although that is using an audible click for the midi instruments to pickup - not the best way... and loses a drum channel.  Having a proper MIDI/THROUGH in sync to the tracker, that would allow the tracker music to play along with the rest of the instruments.   



https://www.youtube.com/watch?v=u5zMst6o2Nw



https://www.youtube.com/watch?v=0_TxXDjn5wY





Btw... if you had such midi support, multiple CPCs can be added to the MIDI bus with something like the awesome Ultimate MIDI Card all sync'd along with other instruments.



https://www.youtube.com/watch?v=Th2IpnHSq80&t=10s



The CPC not only plays AY sounds - it can also play drum samples becoming a drum sequencer.


Then... any chance for 6 additional PlayCity channels to be added?

GUNHED

Quote from: roudoudou on 07:24, 05 July 21
DMA sample works only on first 64K
In Cadjo Clans demo they use the full 2nd 64 KB for DMA sound.


Quote from: Zik on 17:11, 05 July 21Well, you would have to do an adaptation, no automatic tool exists. Honestly, I see benefits only if it is not a "one for one" transfer but a cover using more complex sounds, for example.

Well, yes. I just thought about saving CPU time, since Soundtrakker is slow.
http://futureos.de --> Get the revolutionary FutureOS (Update: 2023.11.30)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

roudoudou

Quote from: GUNHED on 01:50, 06 July 21
In Cadjo Clans demo they use the full 2nd 64 KB for DMA sound.


No, they have to copy those data in the first 64k for DMA because DMA only work in the first 64k
My pronouns are RASM and ACE

Targhan

What about using the software and what it CAN do, instead of nitpicking about what it cannot? You've got great new possibilities with Zik's Soundtracker, what about using them?
Targhan/Arkos

Arkos Tracker 2.0.1 now released! - Follow the news on Twitter!
Disark - A cross-platform Z80 disassembler/source converter
FDC Tool 1.1 - Read Amsdos files without the system

Imperial Mahjong
Orion Prime

andycadley

Quote from: zhulien on 00:33, 06 July 21
Is there a DMA ram memory map anywhere online with a list of restrictions and such?  From memory the hardware sprites are memory mapped I/O, do we page them in and out, can sample memory be under that sprite memory for example?


Is this the best reference?   http://cpctech.cpc-live.com/docs/cpcplus.html
The coprocessor in the ASIC can access any part of the main 64K and that is it. So you can put DMA lists anywhere you like in that 64K and they should work (even if the RAM is paged out or shadowed by the ASIC registers etc).

zhulien

Quote from: Targhan on 07:51, 06 July 21
What about using the software and what it CAN do, instead of nitpicking about what it cannot? You've got great new possibilities with Zik's Soundtracker, what about using them?


Not nitpicking, it is so good at what it does, it could be a little more useful for real music production.

Targhan

Yes, but have you already release anything with it? Did you reach its limit already? I'm not sure. Even the big Orion Prime MODs fill less than 30kb. I'm pretty sure you can achieve something great with the current limitations.
Targhan/Arkos

Arkos Tracker 2.0.1 now released! - Follow the news on Twitter!
Disark - A cross-platform Z80 disassembler/source converter
FDC Tool 1.1 - Read Amsdos files without the system

Imperial Mahjong
Orion Prime

Targhan

Quote from: zhulien on 12:41, 06 July 21real music production
What do you mean by "real music production"? :)
Targhan/Arkos

Arkos Tracker 2.0.1 now released! - Follow the news on Twitter!
Disark - A cross-platform Z80 disassembler/source converter
FDC Tool 1.1 - Read Amsdos files without the system

Imperial Mahjong
Orion Prime

zhulien

Quote from: Targhan on 12:46, 06 July 21
Yes, but have you already release anything with it? Did you reach its limit already? I'm not sure. Even the big Orion Prime MODs fill less than 30kb. I'm pretty sure you can achieve something great with the current limitations.


Actually i am playing with Midi stuff at the moment, so it will have a bigger place on what i am doing if it had midi syncing... i will force the CPC into my music (aka noise creation).

Zik

Quote from: GUNHED on 01:50, 06 July 21I just thought about saving CPU time, since Soundtrakker is slow.
If your main criteria is replay speed, you may convert the songs and use "Kit AY" to play them. Also, you may use "Arkos Tracker 2" that can import .128 files.

I cannot clearly remember, but I think a fast replay routine (faster than the original one) does exist for Soundtrakker compiled files. Anyone confirms?

Zik

Quote from: zhulien on 01:28, 06 July 21
[...] in a DDR type game, if no key is pressed, we don't want the note to play (or perhaps alter the volume of the note to 0), if we pressed the wrong key, perhaps we could make a random beep as the next note instead of the intended note.
What you describe here is really specific. In your application you may alter music pace by skipping calls to the replay routine (normally called once every frame) and mute sound. This should be done in your final application, not in the editor tool. And if it is a DDR game you will probably have graphics to display, etc.

Quote from: zhulien on 01:28, 06 July 21[...] any chance to you can add some MIDI support?  [...] not full midi support but just the sync / clock so we can sync the music within the tracker with the actual midi playing. 
Soundtracker DMA is a music composition software only (intended to create a music to be used in an external application), not a software for live performance like Ableton Live or Bitwig Studio, to name a few on modern computers. So, today that is not in my scope and I think it would be pretty limited if you can just set tempo remotely.
I was more thinking of MIDI for note entry (rather for fun than usefulness).

Quote from: zhulien on 01:28, 06 July 21
Then... any chance for 6 additional PlayCity channels to be added?
No... CPC+ DMA-lists only access internal AY. I think using Playcity and internal AY (9 channel mode) is not really practical for an application (a game for instance). Moreover, as far as I know PlayCity does not mix internal AY to its audio output.

TotO

Quote from: Zik on 12:34, 07 July 21I think using Playcity and internal AY (9 channel mode) is not really practical for an application (a game for instance). Moreover, as far as I know PlayCity does not mix internal AY to its audio output.
The PlayCity was made to offer 6ch for the CPC internal speaker or the external output. It is faster to program the 6ch than only the internal AY 3ch through the PPI. So, the idea was to keep this last circuit for the keyboard and controls. Because few peoples have wished to use the full 9ch for some music examples, the second revision of the PlayCity allow to listen them on the external output too.
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

Ast

Hi,


What about



Utiliser une musique exportée



?


@zik :
1. why .sdc file format isn't done with stkdma ?
2. when we are exporting a song with samples, do we have to save samples alone ?



_____________________

Ast/iMP4CT. "By the power of Grayskull, i've the power"

http://amstradplus.forumforever.com/index.php
http://impdos.wikidot.com/
http://impdraw.wikidot.com/

All friends are welcome !

Zik

Quote from: Ast on 13:22, 08 July 21
1. why .sdc file format isn't done with stkdma ?
Compressed output is not created from the editor because compression needs RAM and is very long on Z80. Moreover, there are several ways to compress an AY stream, depending on application constraints (without mentioning all the tricks you may want to do to the data before compressing them). I plan to propose two methods: one (real soon) using Kit AY running on Amstrad, one home-made and running on modern computer (but I have a bug to find before I can deliver this).

Quote from: Ast on 13:22, 08 July 21
2. when we are exporting a song with samples, do we have to save samples alone ?
No, samples are included in the output SDS file. This is documented in "export" chapter of the website, in French only for now: https://soundtrackerdma.cpcscene.net/doku.php?id=fr:export#format_de_fichier

ComSoft6128

Not being a programmer or a musician I'm going to ask what might seem a laughable question.


Could the complexity of the track below be recreated using Soundtracker DMA?



https://www.youtube.com/watch?v=G25MLVUrG3A

BSC

@zik, you are in the pouet.net charts!  8)
** My SID player/tracker AYAY Kaeppttn! on github **  Some CPC music and experiments ** Other music ** More music on scenestream (former nectarine) ** Some shaders ** Some Soundtrakker tunes ** Some tunes in Javascript

My hardware: ** Schneider CPC 464 with colour screen, 64k extension, 3" and 5,25 drives and more ** Amstrad CPC 6128 with M4 board, GreaseWeazle.

Zik

Quote from: BSC on 19:27, 08 July 21
@zik, you are in the pouet.net charts!  8)
Thanks for the heads up! This is totally unexpected (and pretty cool), I actually did not realize PulkoMandy created an entry for it on pouet.net. Thanks to him and thank you all for your kind comments. Now, go write some musics!

Zik

Quote from: ComSoft6128 on 17:19, 08 July 21
Not being a programmer or a musician I'm going to ask what might seem a laughable question.

Could the complexity of the track below be recreated using Soundtracker DMA?

https://www.youtube.com/watch?v=G25MLVUrG3A
It depends on what you are aiming for. Samples can add some realism, an acoustic touch, but this is limited because of memory constraints and sample quality. You may overcome this by swapping some samples in memory along the music (as Roudoudou did in CRTC3), but this requires strong coder/musicians collaboration. That could be done for instance for crash cymbal at the end. I have got pretty good sounding crash cymbal converted samples, but also very memory hungry! Samples for melodic instruments is even more limited.
SID can add some richness to sounds and timbre variety, but at the end the result will still sound like a chiptune (ie. ok but different from the original).
And of course, the limit of three channels still applies (I expect Toto to react to this!), so you need to reduce/mix/cheat/compromise while adapting a song like this.

ComSoft6128

Thank you for your detailed reply, appreciated.

Ast

#45

Hi @Zik,

It seems there is a problem. All musics were tested and the result is exactly the same.
What can we do next ?
_____________________

Ast/iMP4CT. "By the power of Grayskull, i've the power"

http://amstradplus.forumforever.com/index.php
http://impdos.wikidot.com/
http://impdraw.wikidot.com/

All friends are welcome !

roudoudou

My pronouns are RASM and ACE

Ast

Quote from: roudoudou on 15:05, 09 July 21
use a color screen  :P
If you run zik's ayc converter, you 'll have the same colours.  ;D


Who's bad ?
_____________________

Ast/iMP4CT. "By the power of Grayskull, i've the power"

http://amstradplus.forumforever.com/index.php
http://impdos.wikidot.com/
http://impdraw.wikidot.com/

All friends are welcome !

Zik

#48
Quote from: Ast on 13:54, 09 July 21
It seems there is a problem. All musics were tested and the result is exactly the same.
What can we do next ?
Only "full stream" SDS file type is supported, you probably saved a "delta stream" SDS file. I thought I put a more explicit error message, but it is in fact just mentioned in some comments:

70 ' Non géré :
80 '  - entry/signal
90 '  - loopto
100 '  - renumerotation des samples
110 '  - suppression des registres dont la valeur est constante
120 '  - flux SDS Delta

670 chunk$="STF ":GOSUB 1870 'Seul le stream full est supporté
--
Quick translation of comments:

Not supported:

       
  • entry/signal
  • loopto
  • sample renumbering
  • suppressing registers with constant value
  • SDS delta stream (only full stream SDS file is supported)

Ast

_____________________

Ast/iMP4CT. "By the power of Grayskull, i've the power"

http://amstradplus.forumforever.com/index.php
http://impdos.wikidot.com/
http://impdraw.wikidot.com/

All friends are welcome !

Powered by SMFPacks Menu Editor Mod