iss wrote:
From picture I don't fully understand what your program do
OMG! REALLY??
Ok, here we go:
It enables DRAWING on the screen the PATTERN of desired music,
and plays it even "on the fly" - any note as I draw them on the screen (those red squares).
(Can be quite irritating for the neighbors as I usually run it at night time!)
It enables me just to imagine a melody in my head, and then simply to draw that melody on the screen!
It will generate, play, and the final result will "LPRINT" in the TXT (Printer.out) file, that can then be used by Txt2Bas.EXE utility to have a standalone MUSIC file that will play on Oric Atmos (emulator), OR - as a standalone TAP file containing previously composed melody (created at the MOST EASY WAY), that can then be used futher on from within my other programs...
It runs in Basic, and it gives an final output file IN BASIC, example, this would be the output file generated by this program (just an example):
1 Music 1,2,6,15:WAIT 15
2 Music 1,2,7,15:WAIT 15
3 Music 1,2,8,15:WAIT 15
4 Music 1,2,7,15:WAIT 15
5 Music 1,2,6,15:WAIT 15
...
Oric has 3 sound channels, and this little baby can compose all of them...
Starting from first (draw your melody in it), then add at the second (will mix sounds, and problems with the speed and synchronization starts to occur here), and add the third sound channel (will create three-cords (or - how do you call that on English language) but be out of sync)
It supports sound envelopes (or - again -- how do you call that on English language?)
Meaning - any note can have "fade in" or "fade out" effect, for example... (This works, do).
The main idea of this concept is - my favorite NON-Oric Audio editing software: SoundForge.
(For those who do know how SoundForge works - I need to say nothing more)
iss wrote:
From picture I don't fully understand what your program do (for instance what mean the numbers "01,03,06,15" etc.)
Run Oric Atmos (Euphoric, emulator, whatever).
In plain Basic type this:
Music 1,2,6,15 (press enter)
And you will have your answer there
The first number (1) = sound channel (1 - 2 -3)
The second number (2) is the Octave
Third number: Note within the current octave
The forth number: Volume for that note (15=Max loud volume for example)
iss wrote:
but I think it's not big problem to have synchronized playback using timers and some assembler code...
It is a BIG problem for me (runs BASIC code ONLY)
The ONE sub-program is for composing mode.
The OTHER sub-program is for playback.
And there are also other sub-routines which do kick-in if and when needed, and they are all in Basic...
For example: when composing, the lower part of the screen will scroll from right to left as I draw the newest note on the right side of the screen (and it will refresh the music information (numbers) in the upper (black one) section of the screen at that moment).
The scrolling subroutine is executed WHILE the current note is playing.
And the playing lenght of that note is then affected by that current screen scrolling subroutine (keep in mind, I'm in Basic) at that moment.
And in playback mode completely different subroutine is used for on-screen-display of defined notes for all 3 channels.. And that affects the playback speed then, and so on..
It's "dynamite" in concept, but all of them are NOT (never are) actually in sync
And is bugging me for 7-8 years (last couple of years I didn't even launched it once)
ibisum wrote:OMG, I want this!
It's a part of my Iskra2000
(The "never completed section" part)