News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu
avatar_m_dr_m

O Ayane My Ayane.

Started by m_dr_m, 12:46, 14 April 22

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

m_dr_m

FYI, mainly to sprout discussion, gather some ideas and help.
Also, I'll try to explain some concepts and design choices along the way.

Roadmap.
I plan on a weekly improvement.

26 Juin -- v0 alpha 0
No editing whatsoever. Only importing .128 modules.
So what is it good for?
  • Well you can play the module, so early friendly alphaly testers can checker the soundtrakker -> ayane conversion.
  • You can save the module. My player has variants which:

  •   a. Can call a routine at IX every 64 nops (to be interlaced with raster, digidrums, sids etc).
  •   b. Return taken machine time in microseconds. So you can stabilise it while doing some computation.
  •   c. May crunch well (for 4k). Non-contractual pictures.

In the future it will be able to import from a lot of difference sources (arkos tracker, maxymiser, ...) and export to a lot of formats (AY stream, AYC, AYC NG, ...).
So ayane might be a conversion tool before blossoming to a tracker.

What do you think of those shortcut:
1/ CONTROL-1 to start playing from start.
2/ Later: CONTROL-2 to start playing from-to bookmarks? 
ESC will always be used to stop replay (we won't need to press ESC to go to the menu like in starkos, due to smart shortcuts, and if needed drop-down menu with e.g. CONTROL-ESPACE).

Prerequisite:
- Context sensitive help system. The idea is that we can navigate and do everything without having to consult an external manual.
- (mdr) Extract shortcut handling and field editing from Orgams for easy re-use.

3 July -- v0 alpha 1
Clips (*) visualisation.

10 July - v0 alpha 2.
Clips can be edited.
Notably, ability to add "SID" effect in clips (*). Aka SRM ( Square Radish Modulation) aka loosely controlled PWM (Pulse width modulation).
Two parameters:
* Transposition (in half-tones). So might want to try -12 for sub-harmonics or tierce/quinte for grittier sounds.
* Pitch shift (e.g. +1 to provoque dephasing).

14 July -- Fasting

17 July -- v0 alpha 3.
Song sequencer editing.
With shortcuts mimicking Orgams:
CONTROL-ENTER on clip N jump to editing of this clip.
By default, each clip loops.
All but first instance of one clip will be visually shaded.
When entering the edition of such a clip, it would actually clone it so you don't modify by mistake a shared clip (thanks @Targhan for the revision suggestion).

24 July -- Break(core)

Bonus for later polishing.

- Mass-storage compatible file selector (@ast, may we reuse the one from ImpCommander ?).
- UI polishing.

(*) Terminology and concept.

Clips: Sequence of notes (with associated instrument, volume, fx, annotation). Correspond to "track" in starkos.
One clip can be used several times in the song sequencer (aka almost literal clip-board), on distinct voices with distinct transpositions (like starkos -- BTW I like starkos).
Unlike starkos:
• The clips can have distinct lengths. So you may play Clip 1 on channel A while a shorter Clip 2 is repeated 4 times on channel B.
• Their global volume can be controlled.
• Don't have to define an instrument. So you can repeat the same clip with a different instrument (which would be set in the sequencer).
• In the future: can be stacked on same channel, with different mix strategies.

m_dr_m

#1
This is often a touchy subject, so any input (see what I did here?) would be greatly appreciated.

UI / Shortcuts

There is a tension between internally consistent shortcuts and consistency with other softwares. The latter allows to leverage muscle memory, but might hinder smarter choices (*)

I try to have some guidelines:
- 1. Don't be modal, that is, a shortcut works everywhere. E.g. the keyboard as piano would work in any context, like instrument editor or clip editor. That might be too strict (e.g. in effect/volume column we want to be able to enter A, B, C, D, E, F). Every rule has its exceptions...
- 2. Limit arbitrary choices (e.g. why f7/f4 for instruments)

So to pick an instrument, I would rather have CONTROL-I popping up a window with instrument list where you can navigate by arrows, by page, or enter the instrument number.
Also, the CONTROL-ENTER (goto definition) would often be more handy.

I love @Prodatron's digitracker "play from here" and "play from here but retain position", but I'm not convinced by the shortcut choice.

UI-wise other rules I plan to adopt:

- No hexadecimal except for volume. Rationale:
  - Easier to compute.
  - A, B, C, D, E, F are already overloaded: notes, chords (in the future), volume, maybe some effects?


(*) To mitigate that: allow oldschool shortcuts, but then warn about the better alternative. Aka "deprecation warning".

Ast

Quote from: m_dr_m on 12:46, 14 April 2224 July -- Break(core)

Bonus for later polishing.

- Mass-storage compatible file selector (@ast, may we reuse the one from ImpCommander ?).
yes it may be possible to use the one from SYSco :)
_____________________

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 !

m_dr_m

Thanks Ast! Numerical convergence!

Effect naming.

Same friction between legacy and ergonomics, plus one additional compromise to make between explicitness and conciseness (for screen estate).
One way to mitigate that would be to show a fuller effect name only for the edited clip, and a shorter code for the other voices.

One reason *less* to respect legacy is that we won't have the same constrains (e.g. having to store effect type in one nibble).

Does anyone know about a cheat-sheet / rosetta stone of effects between chiptune trackers (LSDJ, sid tracker), 16 bits trackers (protracker, impulse tracker, ...) or even 128 bits one (arkos tracker, ...)?

m_dr_m

"I don't need time, I need a deadline" Benito Ellington.

Note duration

tl;dr: It's free! Not obeying "delay".

Each note will be encoded with its duration, typically in "ticks".
Pro:
• Allows terzina or other tuplets (hi @toms).
• Allows syncopation / off-beat (more organic phrasing).
• Allows beginner / arhythmic like me to record freely, and to discretise / synchronise in a latter phase.
• Takes less memory (no need for empty rows).

Con:
• Cannot play a same clip with at different speed by changing "delay" (there is no more "delay").

Well, as it turns out, this is a fake con! You can actually change the speed in at least one way.
• Changing the main replay speed (e.g 60Hz rather than 50Hz).
• Moving at a higher altitude.
• Using the "speed" parameter.

That's "delay" on steroids. If duration of a note is 42, and speed is 7, the note will last 6 ticks. If you change speed to 6, it will last 7 ticks, as one may expect.

Swing

There is another application to this speed parameter. You can easily enter notes which all last 11 (see UI below). If you set the speed to 2, since the duration is odd, the notes will alternatively takes 6 and 5 ticks.
The same effect is achieved in maxymizer by alterning delay 6 and 5 at each row. How tedious! Since "" by aceman.

UI

UI-wise, there will still be the concept of rows with a given duration, for classic editing.
The notation of "delay" becomes "row duration", and it only impacts viewing and editing, not replaying.

Now, all of this is independent from instrument replay itself!

Instrument replay.

By default, one iteration per tick.
In the future:
* Can be slower, one iteration every X ticks (like in starkos).
* Can be faster (e.g 300 hz replay).
The latter is very neat: the main player (to advance in song-list / clips) remains at 50Hz, so there is not too much computation. But the instrument itself is played at 300Hz for finer or crazier sounds.

See also http://orgams.wikidot.com/ayanedocumentation, where it is less well formulated.

Nomenclatura.

• Tick: player iteration. E.g. at 50Hz, there is one tick by frame.

m_dr_m

#5
Module on-disk format

That's not terribly important, hence I'm quite indecisive.
  • IFF compatible format (con: overkill, big endian)
  • Text format like chip'n'sfx
  • Existing format, e.g. arkos tracker 4, maxymizer,  (*)
  • Don't care.

(*) Since at some point Ayane will be able to import from them, why not directly use those formats?
On the other hand Ayane will allow much more (annotation at any point, alternatives, special instruments, parameters for generative music or samples, ...).

The generic solution is to ensure the format is evolvable, yet I rather have the first version handle most of the incoming use cases.
If you have an exemple of well designed format (even if not strictly AY oriented), I would gladly look at them, and learn.

Nworc

#6
Wow, a new music composer? Sounds very promising!

It would be great if this new product could benefit from well established concepts, while overcoming some of the shortcomings of the existing applications.

One problem StarkOS has, is the keyboard control of the application. In practical use I found it e.g. cumbersome to access a property fields of the instrument or the song, e.g. as if the cursor is on the menu at the left, it doesn't let you access the properties on the right using the cursor, and vice versa. A funny thing is that my version of StarkOS has a french keyboard layout, which makes assumptions on the hardware, circumventing the OS. I needed to hack it a bit to improve that, but some keys resisted my hack attempts. So please, be international or OS friendly and use the proper keyboard layout for the machine.

Yep, being able to start playing from the current position really saves a lot of time (didn't found out how to do that in StarkOS, I guess it's not possible).

I am a bit sceptical about the idea of "Note duration". From my thinking, ergonomics play an important role: the tracker display featuring empty rows inbetween is not without reason a common standard among all trackers I know of. This is the digitalization, the 90 degree rotated version of a classical horizontal note sheet where each instrument has it's own row, and all notes across different instruments sharing the same horizontal position are played at the same time.

So, back in our digital vertical version, all notes on the same line across different channels are played at the same time. This is for the brain a big help to understand how to interpret the notes, and the construction of the song. Feel free to sacrifice that in order to invent something new - yeah, sometimes we need to invent. But it can be that it would be more difficult to understand the arrangement of notes.

One thing that I found limiting in all trackers is that it's not possible to select more than one single effect per note. I understand the technical reason behind this (it's merely a simplification of the implementation), but form should follow function and not vice versa (a design rule which is known since 1852).

StarkOS is different, and has just removed the effects from the pattern editor, so you have to edit a new instrument if you want to have a different effect. This plays out surprising well as I found out, as it overcomes the above mentioned restriction, the drawback however is that you need a few more instruments. Doesn't really seem to be that much of an issue, so the choice to remove effects at all was indeed a neat idea, while I'm still struggling with that to be honest.

One thing should also be mentioned, but I would take that as granted: the play routine should have a deterministic timing, in order to be useful in demo projects. At least deterministic timing should be an option under given restrictions.

Good luck and looking forward for the things to come!

m_dr_m

YAya! 2023 will be the year of ayane.

@Nworc thank you so much for your input, I will address it this weekend.

In the meantime here is a pre-draft of the documentation! Ayane Documention

Potential users, please tell what you think. Other people, please tell what you think!

eto

Quote from: m_dr_m on 06:43, 14 April 23Potential users, please tell what you think. Other people, please tell what you think!
Can we see it in action? try a beta? Youtube? Screenshots?

m_dr_m

Quote from: eto on 09:53, 14 April 23Can we see it in action? try a beta? Youtube? Screenshots?
Specification before action!

m_dr_m


Quote from: Nworc on 12:54, 11 June 22I am a bit sceptical about the idea of "Note duration". From my thinking, ergonomics play an important role: the tracker display featuring empty rows inbetween is not without reason a common standard among all trackers I know of.

Do not worry, the aim is to bring best of both world.
UI-wise you would still have the rows (and bars).
Internally it's encoded as note duration, which allows:
  • Triplets
  • Syncopation
  • More
The recording would in "free mode", with an option to discretize to round timing positions.

The rows are just a visual indication, not a placement constraint. One implication is that if a note doesn't start at a round position, it would be displayed a bit lower. So you have still have the correspondance between visual position and timing, which is more ergonomic than having to play with "speed/delay" parameter.

m_dr_m

One good application is "swing delay" as in this
pumpkin hop excellent tune.

Since each note knows its duration, you can achieve the same effect without having to change the 'speed' parameter at each note.
It would be an edition facility, that let you enter notes with alternating durations.

BSC

Quote from: m_dr_m on 06:43, 14 April 23YAya! 2023 will be the year of ayane.

Potential users, please tell what you think. Other people, please tell what you think!
I think it sounds really interesting and I would like to experiment with an alpha version,
because in theory, there is no difference between theory and practise, while in practice there is.
** 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.

m_dr_m

I'd love to make Ayane as intuitive and welcoming as possible, including for kids and people outside the CPC realm.
For that purpose it would be reasonable to introduce standard copy-paste shortcuts (that is CONTROL-C / CONTROL-V).

On the other hand, in Orgams I found quite intuitive and ergonomic to map all block related commands to COPY:
  • COPY S: Define start of block
  • COPY E: Define end of block
  • COPY G: Goto start of block (and then to the end)
  • ...
Ironically COPY V (paste) is missing, because there isn't a clipboard yet (waiting for G******!). That's another story.

Another way to select a block: COPY + arrows. Usually on an editor you use SHIFT + arrows, but i would like those reserved to "shift" the thing under cursor (e.g. move a phrase sooner or later in a track).

tl'dr: I'm fond of the mnemonic attribution for the key combinations, yet I fear being less standard may be frustrating.
That's not too bad an existential crisis.

HAL6128

I really like Orgams and the way it works. In my view it's the best ide on the CPC you can get for programming in machine code. It's fast and provide after some learning curve a convenient way to handle it.
So, I am curious about ayane.
...proudly supported Schnapps Demo, Pentomino and NQ-Music-Disc with GFX

m_dr_m

#### SRM-Simple (Square ring modulation)

Alternate sound on-off via control register 7. Noise flag is left as is.
So called "SID" effect on Atari ST.

Note: if you want to slightly change the period to get dynamic dephasing, use PITCH **before** using this effect.

The cumulation of several SRM-Simple is not yet supported. It will act as XOR (meaning that using two SRM with same period is useless).

For now there is no phrase editor or instrument editor, so this effect must be placed by adding a new virtual track in the sequencer.

Incoming!

Powered by SMFPacks Menu Editor Mod