O Ayane My Ayane.

Started by m_dr_m, 14:46, 14 April 22

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.


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

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).

- 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.


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".


Quote from: m_dr_m on 14: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"


All friends are welcome !


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, ...)?


"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".
• 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).

• 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.


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-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.


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


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.


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!

Powered by SMFPacks Menu Editor Mod