Hi. It's xsoundtrack, a sound tracker for linux.
A sound tracker is a program to create modules, those are sound files
that come from the demo-scene, first from amiga, then pc.
I make this program because i like to make modules but i don't like
to boot DoS, where some sound trackers already exist (fast tracker 2, for
example, known as ft2). I absolutly wanted linux to have one. There are
some of it, like maube or funkgold. But with maube, i could not create
anything, it crashed too much, and the interface is not what i like
(not easy to work with keyboard only, and no "live playing" like under
ft2 (i absolutly need to play "live", that the funniest thing)), so maube
is out. Funkgold is better, but badly it has its own file format (very bad
thing because i want other people to listen my wonderful modules, so i need
a standard, like xm or mod) and the interface is in curses, which i don't
like a lot.
So, i decided to make my own, and if other peoples want to improve it, they
are welcome too !
Here is, day after day, what i did.
It's full of line noise, i forecome you.
Sed.
Ok, it's :
maison:~$ date
Sat Jul 25 21:32:48 GMT 1998
I'm starting this project, a sound tracker for Linux.
It will feature (i hope) a module-editor with playing possibilities,
keyboard-playing of current sample (multiple notes at the same time),
that's the two main options i want.
If i have time, there will be a sample-editor with recording availabilities.
If i really have time, i will add some more formats (s3m, mod, ...), but i'll
begin with xm (i have the format-description, that's the reason).
Ok, i start it. First, i will find the way to play sound, how to control
the card (oss only, if i really really have time, i will feature stuffs like
gus support).
Then, play a bit with threads, i've never done anything with it.
Third, read xm files, play them.
Fourth, the interface (the worst i think), in Xlib because it's simple
(in principles, but not so much in coding, and long) and
i don't know the rest (xview, tcl/tk, gtk, motif, ...) too much.
Fifth, well, the options, like a sample editor, will see...
Ok, it's :
maison:~/c/xsoundtrack$ date
Sun Jul 26 02:29:33 GMT 1998
I've just finished to try to play sound in the soundcard. Works fine,
in stereo and all. Now, the next step is to have a xm loader and a
player. I will do it. But before that, some thready stuff, like play
sound commanded by a thread to another one, and stopping by the same way,
see global vars and so. For tommorow night. Let's go to bed and sleep.
Summer time... coool. Holidays... coool !
Now :
maison:~/c/xsoundtrack$ date
Tue Jul 28 00:02:07 GMT 1998
Nothing done yesterday, had a headache, don't know why, food maybe...
Well, i spent my day (from about 12:00 or 13:00, but at a holiday-speed),
to try to play with threads. My conclusion is that it is not usable, well,
that i can't use it, don't know how to make it work. When a thread writes
to the sound-card, others can't stop it, because of the write (well, not
exactly, but something like that), or when i make a sleep in one thread,
when it wakes up, the write to the sound-card from another
thread is stopped. That's natural, because there is only one process, so
of course when it receives a signal, if it was doing a I/O, then this I/O
is interrupted, that's the principle of signals. So, my conclusion is that
i'm gonna use a well-known (well-know from me, in fact) mechanism :
some forked processes with a shared-memory segment. I first didn't want it
because of its technical-writing complexity, and i though threads were easy,
but when i see the problems i've got with threads, i prefer the fork-solution.
I can handle it, and understand it fully. No funny things will happen, i'll
control all. That's it.
But it's already midnight, am a little tired (have a SF-book to finish,
holiday, you know, have time to read some SF, at last, after a year of
technical readings), so... for tomorrow. Am a little late, had to finish all
that yesterday, but tomorrow it will be all right, then i'll can start the
player it-self, you know, read a xm, make the mixer, so on...
Now :
maison:~/c/xsoundtrack$ date
Wed Jul 29 02:06:23 GMT 1998
Well, i began at about 23:00. Wanted to work in the afternoon, but had to go
out. Well, changed my mind. Don't think i will use shared-memory stuff. Maybe
fork, but not sure, have to think of it. So, i did not try to play with fork
for today. I have an idea for the moving of the song in the screen while
playing : simply write to the soundcard a few bytes (something like 8192 in
44100 Hz 16b, which is about 0.2s, small enough to believe of real-time,
i think), and adjusting the position in the song only before the write.
And stopping the playing will come 0.2s after in the worst case, and playing
a note too. So, as you can see, fork is no more necessary. But, i will have to
deal with keyboard-strokes and screen-refreshing, so maybe fork will be
there trotzdem (deutsch rulz). Will see... Have started too to look at the XM
file format. Understood all (with mikmod-source help) except instrument format
(well, the meaning of it, i can read this stuff, but don't know how use it).
Will have to run ft2 to understand some stuff with it. Think will be the
hardest thing of the player. Well, mikmod will help much i think. So, tomorrow
i will start the player. First, load a xm, and begin a mixer. I hope to be able
to play simples XM in the evening, mine for examples, will see...
Ok :
maison:~/c/xsoundtrack$ date
Wed Jul 29 16:54:30 GMT 1998
I'm starting an XM-loader (easy task, because it is a fixed format, so i won't
have to malloc too much). Then, a player.
Now :
maison:~/c/xsoundtrack$ date
Thu Jul 30 04:08:06 GMT 1998
Well, well, well. The xm loader was harder than what i though. First, had
to malloc a few, otherwise 10Mb of memory is a little big, no ? Then, lots of
bugs in the xm-file. FT2 coders did a good interface job, but for the saving
stuff and / or documentation, that's not it. Well, no player available, xm
loader not finished, will see that tomorrow (i found strange to see mikmod
crash, i begin to know why...). Well, actually, i did not spend 11h for that
stuff, you know, holiday time, watching tv, listening radio, reading, sleeping,
take some time... So, i don't exactly know. Tomorrow, try to finish the
loader, then, maybe, start a first player. (Seems that my idea of a small
amount of data writen to the soundcard is the solution, that's how funkgold
works, in what i've seen. Good.) Had to finish the loader monday, it's
wednesday (thursday, by the way), and still not there. Hmmm, am a little late.
Hope to finish before october. We will see...
Now :
maison:~/c/xsoundtrack$ date
Thu Jul 30 21:07:24 GMT 1998
About 30 min that i'm here. Loader seems to work now, problem with instrument
loading when no instrument is there but still an instrument. Understood ?
Well, will have to start a player. Think it won't be so easy. Will have to
understand this instrument stuff...
Let's go.
Ok :
maison:~/c/xsoundtrack$ date
Sat Aug 1 18:34:19 GMT 1998
So, yesterday, nothing, because, well, because. Holidays.
I've got all i need, i know how long must durate a line in function
of the bpm and the speed, i know how to play samples (frequencies), so
ok, i can start the mixer.
So, let's go...
- Ok
- maison:~/c/xsoundtrack$ date Mon Aug 3 20:57:43 GMT 1998 Well, i finished at about 2 or 3 am last time, don't remember. But spent a lot of time in "nothing"-doing, which is a very good thing, so not all the time was used in coding. Yesterday nothing, because during the sun-time, too much light to work, and at night, headache again, like last week (must be the food). So, here i continue. I now have a tiny-tiny player, only able to play the sound byte per byte, at the same rate, any note it is. But it works. What i'll do today is have different frequencies and volume-stuff. Then i'll play with panning, and this instrument-stuff (envelops). Then, will have to play with vibrato in instrument, and after i'll can start with effects (the worst of the mixer i think). Voila. Have some ideas of a new xm-format, the xxm-format, to allow multiple instrument definitions for a sample, because sometimes you want the same sample to have different behaviors (volume envelop, or vibrato, or other stuff too, like saturation, echo, don't know what else). So, extend the notion of instrument, and separate it from sample-data. Well, for now, only ideas... Let's start it. Well : maison:~/c/xsoundtrack$ date Tue Aug 4 01:58:03 GMT 1998 Ok, i've done it with the frequencies (linear table, will see later for amiga-stuff). Now, i've got to do it with volume, then play with envelops, then the effetcs, then i'll be over with the player. Let's say the first player is done, and so, next step will be called second player. By the way, something is strange, i've to sub 128 to the finetune for it to work correctly. (27 august, 23:22 i read that and i can say i know why, that's because in the xm-file, notes are saved +1 so a C 0 is saved as a Db0, so it explains the sub i had to do) Really strange. And had a little bug, that made i played one tick more per line. Took some time to find it. Well, that's all for now.
- Ok
- maison:~/c/xsoundtrack$ date Wed Aug 5 22:32:30 GMT 1998 I'm here since about 21:00, dealing with this and that. So, i've understood why some samples were incredibly louder than others. They simply were 16b and others were 8b, so of course it's different... I have a bug in the player 1.0 but i will let it in place for now (some patterns can be 0-length, will have to deal with that later). Today, i'll play with volume-setting and envelops (volume and panning). Easy stuff i hope. It will give me a player 2.0. Let's start it. Well, one horrible thing is that it's 2 times more slow than mikmod. Argh ! Will optim later, maybe...
- Ok
- maison:~/c/xsoundtrack$ date Thu Aug 6 02:28:42 GMT 1998 Well, volume-envelop seems to work. Badly, i did not handle the fadeout and the vibrato of an instrument, later... Panning seems to work too, but this is not the good method, will finish it tomorrow, or later. Yesterday i did not do anything because i went out during the day, so i did not want to work. And it's holidays too.
Ok :
maison:~/c/xsoundtrack$ date
Thu Aug 6 23:24:00 GMT 1998
About 30min am here. Well, had bugs in xm loader (cut key is 96 and i did a
test with 95). Today, finish panning, try to understand fadeout-speed and
then maybe vibrato, maybe. Should start handling effects too, but...
Well, well, well :
maison:~/c/xsoundtrack$ date
Thu Aug 13 09:23:09 GMT 1998
I did not work those last days because some friends had troubles with a
computer (impossible !) and i gave a little help. And the wheather was a little
hot too, so when the day was over, i didn't really want to do it again with
this project. Today, i'll start the interface (cool stuff, because i do what
i want, the doc is in my head, it will render exactly how it has to). So,
show a xm, play it with space-button, stop it the same way. Escape key to
enter edit mode, and move with arrows between everything in the not-edit mode.
Easy easy easy and cool cool cool. I really love code interface.
Ok :
maison:~/c/xsoundtrack$ date
Fri Aug 14 09:03:51 GMT 1998
Yesterday, finish at about 12:30, nothing else than play with fonts. Did not
work in the evening because had to give the reparded-computer to my friends,
and it finished with a drink in a bar, so i came back home late, did not want
to do anything, holy-time. Today, i will have a xm-viewer, no problem.
Now :
maison:~/c/xsoundtrack$ date
Sat Aug 15 01:32:50 GMT 1998
I made a big break (12:00 -> 20:00 about). Well, have troubles with colors,
think i will alloc private ones. Should have a private map too if things
are going more wrong. I don't need so much colors, surely 16 should be enough.
Will see. Well, the menu is finished. It is slow. Maybe i should use
subwindows, especially in the xm-window where i have a big rectangle to draw.
A subwindow would be much faster. Will see... Well, tomorrow maybe the xmwindow
will be there. Have to make a loading-interface too. Damned. And some
warning-stuff, like in others x-based programs. Too bad i don't know tk or
xview or stuff like that, but no time to learn it. Holiday-time is not for
learning, but for fun. Should use pixmaps too, to make things faster. Draw
strings is slow, no ? Well, will see.
Ok :
maison:~/c/xsoundtrack$ date
Sat Aug 15 17:14:23 GMT 1998
I'm here since about 13:00. I am doing the xm-window interface. That's funny.
I will surely finish the displaying of things today, then i'll have to play
with keyboard-inputs. Won't take too much time, i think.
Now :
maison:~/c/xsoundtrack$ date
Sat Aug 15 21:18:11 GMT 1998
Had a little break from about 17:00 till now. I work slowly, i should not
hard-code everything, i make really bad things. Well, anyway, let's continue.
Now :
maison:~/c/xsoundtrack$ date
Sun Aug 16 01:19:13 GMT 1998
Ok, i finished the first step, now i have the layout. Have to draw real
things (real name of instrument, stuffs like that), then i'll have to handle
keyboard-moving. Easy task. A harder thing would be to handle mouse. Well,
later. I think of an instrument editor and a sample editor. I think i must do
it, otherwise the xm-structure has absolutly no utility. Will be a much harder
job, because i think mouse is necessary for that.
Well, we'll see. First, finish the simple editor. Will surely have to speed
things up, because it's slow. We'll see that when the player will interact
with the editor. Ok, let's go for a sleep.
Ok :
maison:~/c/xsoundtrack$ date
Mon Aug 17 10:06:53 GMT 1998
Yesterday nothing, was sunday, grand-parents were there and it's the god-day,
no ? we are supposed not to work in respect with god-sleep-day, or what ?
Religions suck. Today, will handle keyboard events. Have forgotten too the
pattern length ! (can you believe it ?). Ok, let's go.
Well :
maison:~/c/xsoundtrack$ date
Mon Aug 17 22:52:34 GMT 1998
Had a break since 17:00 till now. And before, was hard to work, because of
nacked girls down there, you know. I live in a tower, and there is a house
down, and cause am up, i can see what's goin' on in their garden. Hot day, you
know. Three pretty girls, two topless, one was bottomless for a little time as
what i've seen. So, in those conditions, work is hard. You know what it is,
you MUST watch this spectacle, when you're a pal as i. And it's not a fuckin'
joke ! So, well, now i will do the changing of the current subwindow. Does
anyone know here if the way i want the interface is possible with a toolkit ?
X-view seems to be mouse-only, tk has some possibilities with tab-key, lesstif
i don't know too much, so what ? By the way, i keep doing roots things, hardcoded
and so. Really cool.
Hey ! i just realized am on the interface for only 4 days ! Really cool
coding, believe me. Nothing to compare with distributed systems. 5 machines
makes not 5 more difficulties, but something like 5^2 or worse 2^5. Let's
continue.
Well :
maison:~/c/xsoundtrack$ date
Tue Aug 18 00:02:38 GMT 1998
Ok, i move perfectly. Now, will have to handle each subwindow. Will do it in
another file, because interface.c has grown from about 500 lines to about 1000,
so it takes time to compile (well, maybe if i would disable O3 it would be
faster, but you know...). Next step will be that, then show patterns correctly
(well show it correctly before making edit-stuff, otherwise it will be strange,
no ?). So, now time to watch tv, cool thing about picture and men making
shadow-things and graphical stuffs like that. Tomorrow will be coding time.
- Ok
- maison:~/c/xsoundtrack$ date Wed Aug 19 18:08:14 GMT 1998 Yesterday nothing. Holiday. Am here since about 14:00. Gonna finish the interface today or the next working-day. Have a problem with focus in / out. I receive too much of it. Well, so it is. Under X i don't like the global settings. When you say you want AutoRepeatMode Off, it's global to X, not only the window you work on. Bad, no ? Same thing for the beep, for example when i made a little Xmas melodie for the pc-speaker, then after that the beep had frequence and duration of the last note. Think it's bad. For comparaison, in text-mode, when you put caps lock in one console, it is not put in others. Well, just my opinion. X is a big thing.
- Well
- maison:~/c/xsoundtrack$ date Wed Aug 19 22:08:35 GMT 1998 Had a break from about 18:00 (right after the mess above) till about now. Let's contiune. Well : maison:~/c/xsoundtrack$ date Thu Aug 20 01:57:34 GMT 1998 That's enough for today. I did not work all the time, but almost. I show everything correctly, except the patterns. Will do that tomorrow. I'll make the handling of keyboard in the subwindows too. Will be ok tomorrow i think. Then, i'll have to do an instrument and a sample editor, then a file loader/saver, then some windows for errors and warnings. Will see. Then, finish the player with handling of effects. Then, make a release ! Maybe in a month, maybe not. Think i will speed up things, as i see i'm on the interface for less than a week, i can't believe i go so fast (or maybe it's slow, will have to ask friends about their coding-speed). Let's go for a sleep now. But before, run ft2 to see if i write correct note-values (is a C a C in my display ?)
Ok :
maison:~/c/xsoundtrack$ date
Thu Aug 20 22:15:02 GMT 1998
Began at about 13:30, don't exactly remember, though i wrote a mess, strange.
Had a break from about 18:00 till 20:30. I'm tired now, even if it is early.
Well, i have the default bpm / default speed window ready, the song-name
window ready, the frequence table window ready. I show patterns correctly.
Tomorrow (or the next time i go to code) i'll make the instruments names /
samples names window and the arrow window that correspond to it, then the
pattern order window, then the number of channels / restart position window,
then the pattern window (hardest). After, i'll be over with that xm window,
will have to chose between :
- make a sample or instrument editor
- make a file loader / saver
- continue with effects, so the player becomes a real one. Will see that.
Ok :
maison:~/c/xsoundtrack$ date
Fri Aug 21 21:21:52 GMT 1998
Since 20:30 or 40 (more near 45, help to a ps aux). Doing instrument subwin.
Then sample subwin. Then their arrows then pattern order subwin then nb
chan/restart pos subwin then... well, should be enough for today, huh ?
Well :
maison:~/c/xsoundtrack$ date
Sat Aug 22 00:27:38 GMT 1998
Ok, have finished instrument/sample subwindow. Now start their arrows.
You will see how fast it is, you'll can compare with the one i've just
finished (i did not code all the 4 hours, but almost).
Well :
maison:~/c/xsoundtrack$ date
Sat Aug 22 00:46:19 GMT 1998
As you can see, was fast. 20 minutes. Well, now i should do nb chan/restart
subwin and pattern order subwin but, you know, it is a little late, well am
tired, so stop for now. We're already the 21 august (well 22 now) and i
see the rest i've got to do, and i think it will take me more than 8 days,
so in september, i won't be able to release, damned. Hope it will get ready
for october.
Ok :
maison:~/c/xsoundtrack$ date
Sun Aug 23 14:26:56 GMT 1998
Yesterday nothing, fuckin' family was here, so i went out not to see them, and
when i came back, had a wonderful Amelie Nothomb's book to read, "Attentat",
so did nothing. Really good book, have lot of pleasure when reading her. She
writes in french, but lots of her words are not known by me, for example
"belitre" with a '^' in top of the 'i', with which she played a lot, because
it's close to "bellatre" with a '^' in top of the 'a'. A real pleasure, really.
More the time goes on, more she makes real novels. The firsts were something
absolutly special, but good because you see she does not write for money,
you feel it. It's pure pleasure, and she gives that to you, the reader. One
was with only one dialog from begining to end. Now, there is a little action,
but not too much, and she loves to play with words, that's the best of her
writing. Well, today i will try to do the pattern order subwindow and the
nb chan/restart pos subwin. If i find da time, will begin pattern subwin.
It begins to fuck my head, this program, but i started it, i'll finish it.
Now :
maison:~/c/xsoundtrack$ date
Sun Aug 23 17:01:51 GMT 1998
Well, well, well. Ok, i've almost finish the pattern-order. Will have
to do the "song length" part (easy) and the "current pattern length"
(not so easy, because i will have to realloc, and move data inside the new
allocated area which will surely be a source of bugs). Then, the
nb chan (source of bugs too, almost like before but a little less) and
the restart pos (easy), then the day should be over, no ? Well, if i
still have time (and courage) i'll begin the pattern-stuff, the hardest
i think. Already have a slow slow slow drawing function, maybe i will let it
as it is. I have a strange bug. More i move things, so the prog calls X-fun,
more it goes slow. Think it's the XAllocColor, i don't make XFreeColor, so
it may be there. Will have to move to my real color-model, where i alloc
only once. Ok, let's go for a bath, then eat, then it should be about 21:00,
and i'll probably come back here (but not surely, depends of my motivation).
Ok :
maison:~/c/xsoundtrack$ date
Mon Aug 24 18:06:42 GMT 1998
Well, i did not restart yesterday, you know what holidays means. Today, finish
what i should do yesterday. I see that i forgot in the pattern order subwindow
the possibility to ins/del patterns. Will see that later.
Now :
maison:~/c/xsoundtrack$ date
Mon Aug 24 21:27:59 GMT 1998
Well, i've done it all. The only thing that has to be done is the pattern
editor subwindow. In ft2, when you put a note, you put the current instrument
with it (well, maybe there is an option to discard that). But it is not
necessary. If you put only a note, it will play it with the last instrument
given. Well, i will make the space-bar, to play the module, that will be all
for today. Then, gonna lose my head in tv-watch.
Now :
maison:~/c/xsoundtrack$ date
Mon Aug 24 21:54:22 GMT 1998
Well, i've done the "live" playing, but it is so slow than a cow could see
1.000 snails run in front of her before the first pattern being over played
at speed 1 / bpm 255. Well, maybe it's the colors problem... Will try to fix
that.
Now :
maison:~/c/xsoundtrack$ date
Mon Aug 24 22:20:20 GMT 1998
Well, well, well, by the way, little bug. I did not put back to 0 the 2
ints, so it recalled the drawing-functions each tick ! Well, now it's better,
but with this slowlying-bug, surely the XAllocColor problem, i will have to
take it away. Really hope it's that, otherwise i don't know what it could be
and so this bug would be much harder to take away. Will handle that now.
Now :
maison:~/c/xsoundtrack$ date
Tue Aug 25 01:34:09 GMT 1998
Well, ok, works fine. Had a bug with realloc (gave bytes size as i though i
gave integers size which is 4 times bigger, as anyone knows). Was a strangy
bug, take care of this. By the way, when you have strange bugs under a unix
box, it must be the memory, so look at your mallocs/frees/reallocs and look
carefully if you handle pointers correctly. Use some libraries if you don't
find where it is, like electric fence or something, it helps a lot.
Well, now, i will have to do the main part of this, but before will see if
my color allocation mechanism works fine or not in different bpp. After what
i'll do a sample editor, that's very important, then a instrument editor,
then i'll go back with the player, handle effects.
Ok :
maison:~/c/xsoundtrack$ date
Tue Aug 25 22:07:40 GMT 1998
Well, start late because of a good sf-book, "l'homme qui retrecit" ("the
shrinking man") from Richard Matheson, a book from 1957, really good. There
is fiction, and there are some science-style explainations of how it is
possible for a man to become more and more small as the time is going on.
Good. Not like all those cyberpunk shits that turn here and there. More the
time falls more i don't like cyberpunk, always the same story of a little
loser in a fuckin' multinational dominated world. Describing the near future
they say, damned it sucks. SF rules, real good old SF rules. Let's start the
pattern editor.
Now :
maison:~/c/xsoundtrack$ date
Wed Aug 26 00:32:47 GMT 1998
Well, found a serious bug. By the way, it was already there before, but now,
it stops everything. When i play one module, if i load another one, i will
make a init_data which will change the mixer-configuration, which is bad.
Solution is to init data only when we start the playing, and i should too
begin to close all the channels, because i have another bug, when
i play another module, the one before continues to play, in the channels
that are not used by the other (until a new note arrives) (clear ?). So,
have to change things a little. Will do it another day, am tired. For now,
i've done the tab key. Works fine, but a bug if i reduce number of channels
when i edit from not the 0 one (it continues to show things from a channel
that does not exists anymore). Well, well, well, big troubles are starting
now. Not very cool. Wanted to make clean things, well, too much lines of code
for that, bad bad bad. Look :
maison:~/c/xsoundtrack$ wc -l interface/*c interface/*h player/*c player/*h
1101 interface/interface.c
91 interface/main.c
213 interface/screen.c
1384 interface/sub_interface.c
65 interface/interface.h
30 interface/screen.h
21 interface/sub_interface.h
82 player/card.c
399 player/mixer.c
591 player/xm.c
16 player/card.h
13 player/debug.h
35 player/mixer.h
172 player/xm.h
4213 total
This explains that. Impossible to be bug-free with more than 4000 code-lines.
And i have not done the 1/2 of it... damned...
Ok :
maison:~/c/xsoundtrack$ date
Wed Aug 26 09:50:48 GMT 1998
Gonna fix the bugs.
Now :
maison:~/c/xsoundtrack$ date
Wed Aug 26 12:03:42 GMT 1998
Ok, seems to be fixed. Next step is to do the pattern-editor. Go eat first.
Now :
maison:~/c/xsoundtrack$ date
Wed Aug 26 15:06:17 GMT 1998
Ok, back. Let's do the pattern editor.
Now :
(forgotten to introduce time, but something after 20:00)
Well, well, well, editor is coming. But ! a fuckin' bug with XLookupString
make core everything dump. Fuck ! What can i do against that, huh ? Is it
my program that is bad or the function ? The bug is : push something like 8
keystrokes at the same time (105 keys keyboard), and wait the core. Damned,
gonna try to do something, but...
20:18 : well, it was electric fence... i remove it, it works fine.
Let's continue with the editor, insert/delete keys, control ins/del, so on.
23:23 : will have to move the mixer data into each xm, because of the
instrument setting. I can play one note with one instrument, then if i don't
give a new instrument with each note, it will continue with the last one.
It meens i keep it in the channel-structure. But those are globals to every
xms. So, one could put a new instrument, then i play the one before, and it
is not what it used to be anymore. Well, will see that. Let's continue
the pattern editor (i've got insert/delete of a piece of a note, of a whole
note, of a line, and shrink/expand). Now, i begin the puting of notes,
instruments, volumes, effects. (Note will be last-done, i think.) (Near 2 weeks
that i am on this part of the job, begins to be long, a sample editor and a
instrument editor will take how much time ?)
Well :
maison:~/c/xsoundtrack$ date
Thu Aug 27 01:49:05 GMT 1998
Well, well, well, am here since about 10:00 this morning, time to go for a
sleep, no ? Everything is ok with the editor, except the note and the effects
should be better handled (to avoid the possibility of giving impossible
values), but it's easy stuff. Finish that tomorrow. For the note, not very
sure. Will probably make a include for being able to modify that (not everyone
has got an azerty) and i think that the control/shift stuff should be better
handled too, because it has to see with key-mapping which under X can largerly
differ from one machine to another. Well, i certainly won't do it by now, only
if an user of the program asks for it, and for now noone can use it, so...
Will have to modify in the mixer : - put all the data in the xm structure,
and - handle setting of the instrument, so you don't have to each time give
the instrument, only the first (in the same pattern, of course). Well, now :
maison:~/c/xsoundtrack$ wc -l interface/*c interface/*h player/*c player/*h
1107 interface/interface.c
57 interface/main.c
213 interface/screen.c
1966 interface/sub_interface.c
65 interface/interface.h
30 interface/screen.h
21 interface/sub_interface.h
82 player/card.c
423 player/mixer.c
616 player/xm.c
16 player/card.h
13 player/debug.h
38 player/mixer.h
172 player/xm.h
4819 total
600 more lines, and it's far from being over.
Ok :
maison:~/c/xsoundtrack$ date
Thu Aug 27 14:05:07 GMT 1998
Gonna finish the pattern editor today (hope so). Will finish the editing,
then do the cut-buffer. Gonna be a little hard, because the colors of the
drawn text will change, that's the worst of it. Will add the possibility to
close some channels too. Will do that in relation with the new mixer-data
storing (one per module instead of one for every module).
Now :
maison:~/c/xsoundtrack$ date
Thu Aug 27 23:03:02 GMT 1998
Had a break from about 17:00 till about 21:00. Ok, the editor is done. I
put notes, it's allright. Next step is cut-buffer, and i want to be able
to "live"-play. It's gonna be totally bug-generator. I'll have to remake
the mixer-code. Well, i really want "live"-play, so... Have fixed the
handling of bpm, so now i change it and bpm changes too (only speed was
working till now). That's my two next things to do. Note : the program is
really really slow, i should totally re-see the displaying of the patterns,
i'm sure that's what is so slow. The mixer is slow too. Well... Then, one
day, maybe, i'll make a sample-editor and a instrument editor, and i need
a file-selector and do the save-stuff in the xm-window, and the close-stuff.
I'll surely change things, take away the buttons and replace that with a
menu, will see. Ok, for now, i'm bored of it all, so i will stop, surely watch
stupid tv-programs. (And the mixer is not finished yet, damned... when will
i be able to release ? october ? december ? next january ? next summer ?)
Ok :
maison:~/c/xsoundtrack$ date
Fri Aug 28 20:45:15 GMT 1998
Starting late, because i simply didn't want to do anything in the day. I'm
bored of this program, too slow, very bad code, a real shit. Well, will try
to finish it anyway. Today, the cut-buffer and "live"-playing, if i have
time and will.
Now :
maison:~/c/xsoundtrack$ date
Sat Aug 29 00:32:08 GMT 1998
Well, 4 hours just to handle shift+left/right/up/down, no coder in this world
would be slower (or a coder with no hand, no foot, no eye, no ear, just a
body and a head like in "Johnny got his gun". I would stand in front of him,
talking with him in morse, and the only thing he would say is "kill me ! kill
me !" but as a fuckin' military-guy, responsable of hundreds and hundreds of
dead, i would say "no, you will live", as a fuckin' military-guy i would be,
and then i would take a guitar or a bass or maybe a drum or perhaps my voice
and create a song that i would call "one", and i would call my band
"Metallica", why not ?). Well, i was making some psychological studies, you
know, watch stupid tv-program (a game called "Intervilles", where two french
towns compete in stupid games like run here and there, take this and that,
the winner is the one that take the most of it, repeated several times, in
several situations, with a little cow sometimes. It was the final game. I was
studying how a normal people reacts when submitted to stuff like that. My
conclusions will remain secret, as you surely can understand. Well, The town
of Dax losed and the other town (Montmorillon as i recall) won with 11 points,
cool, he ?) Well, for tonight, i will finish with handling of control+insert
and shift+insert, then go to bed. I wanted to make a "live"-player, well,
tomorrow, or the next day i'll code.
01:33 : well, that's done. I should do shift+page up/down, and shift+begin/end,
but that's a lot of code. And it's late. So, next coding-day.
Ok :
maison:~/c/xsoundtrack$ date
Sat Aug 29 23:40:53 GMT 1998
Started at about 22:00, wanted 21:00, but tv-capted. Soon school will be here
again and i won't have time to lose my head in this tv-watching. I see my
neurons under torture, it's terrific. Well, cut-buffer is handled, shift+
page up/page down and shift+home/end is done, now i will do "live"-playing.
Will have to look and change the mixer-code. Make clean things. Ok, let's go.
But before, code is now :
maison:~/c/xsoundtrack$ !wc
wc -l interface/*c interface/*h player/*c player/*h
1115 interface/interface.c
54 interface/keyboard_definition.c
57 interface/main.c
213 interface/screen.c
2539 interface/sub_interface.c
65 interface/interface.h
19 interface/keyboard_definition.h
30 interface/screen.h
21 interface/sub_interface.h
82 player/card.c
427 player/mixer.c
616 player/xm.c
16 player/card.h
32 player/channels_def.h
13 player/debug.h
22 player/mixer.h
192 player/xm.h
5513 total
700 more lines, and not finished (far from it by the way). Shame on me for
the 2539 lines of interface/sub_interface.c. So big files should not exist.
Worse, its size is currently :
-rw-r--r-- 1 cedric users 81321 Aug 29 23:38 sub_interface.c
Damned, i promise not to make so horrible things again.
00:20 : well, am tired, did not sleep so much last night (6 or 7 hours, not
enough), will go to bed now. Will code "live"-player next time. Should not
watch so much tv, it takes my forces.
Ok :
maison:~/c/xsoundtrack$ date
Sun Aug 30 14:19:36 GMT 1998
Gonna make the "live"-player, and if i find the time, start a file-selector.
Now :
maison:~/c/xsoundtrack$ date
Sun Aug 30 16:42:19 GMT 1998
Ok, "live"-player is done, but big troubles are here, because of the way linux
handle sound. I have two solution :
- have an close to exact player, but with clicks and pops,
- habve a player that does not react at the time you play the note,
but without clicks and pops. Will have to choose of number of
fragments that can respect both aspect (or make a faster mixer and a
faster interface).
That's a problem, what to do, well... Now, i will draw a file-selector
interface.
Well, 17:19, and no figure of a file-selector. Spent my time in "live"-playing.
That's really cool. For the number of fragments, it should be an option, so
we could have the both. If you want "live"-play, choose a little value, if
you want no clicks/pops when you listen a module, choose a big one. Now, let's
go for a bath. Be back here at 20:00 or later.
Now :
maison:~/c/xsoundtrack$ date
Sun Aug 30 20:52:53 GMT 1998
Gonna start a file-selector. Just drawn image, given numbers to subwin, let's
draw it.
Now :
maison:~/c/xsoundtrack$ date
Mon Aug 31 01:25:45 GMT 1998
Ok, file selector is goodly started. I just have to make some file-oriented
functions, some readdir, easy stuff, and another tiny editor. Easy stuff and
cool.
Let's look at the code-length :
maison:~/c/xsoundtrack$ wc -l interface/*c interface/*h player/*c player/*h
373 interface/file_selector.c 1260 interface/interface.c 54 interface/keyboard_definition.c 62 interface/main.c 213 interface/screen.c 2537 interface/sub_interface.c 19 interface/file_selector.h 85 interface/interface.h 19 interface/keyboard_definition.h 30 interface/screen.h 21 interface/sub_interface.h 82 player/card.c 326 player/live_player.c 444 player/mixer.c 616 player/xm.c 16 player/card.h 32 player/channels_def.h 13 player/debug.h 25 player/live_player.h 22 player/mixer.h 206 player/xm.h 6455 total 900 lines more, and still not finished, damned. I will make a backup, i should have done it since the begining, i trust too much linux.
Ok :
maison:~/c/xsoundtrack$ date
Mon Aug 31 18:29:30 GMT 1998
Here since about 13:30 (13:47 on a ps aux). File selector is close to be done.
The only thing that remains is possibility to change the current name by hand.
Gonna be fast, even if lot of realloc (please, don't go read the code, it's
painfull).
Now :
maison:~/c/xsoundtrack$ date
Mon Aug 31 20:23:38 GMT 1998
Had a break from after the last mess till about 20:00. File selector is now
finished. Two days for that, find it good. It's far from perfect (no scroll
bar for example), but it should be enough. Over for today, gonna watch tv
(hope not too stupid). Next step is a sample editor (much harder, won't give
a time of making because i'm quite sure to be wrong. For example, if i say
2 weeks, you can be sure that in 3 weeks i'm not over with it). I want a
sample-loader, that's the first thing i'll do, and if possible a recorder
(microphone and maybe line in). Loader won't be too hard, recorder needs
options (set speed), so it's not so simple. And there will be a viewer, with
editing-possibilities, like chose the loop start/end point, make selections,
change volume, invert, stuff like that, gonna be much harder than the two last
days.
Ok :
maison:~/c/xsoundtrack$ date
Tue Sep 1 22:34:51 GMT 1998
September is here, still not finished. Well, in fact i've done what i wanted at
first, a pattern editor and a "live"-player. What miss is the effect-handling,
and i would have done the very first step. But, by the way, i now realize that
without a sample editor and an instrument editor, this program would be totally
useless, so i can say it's far from over. The instrument editor should not be
too hard, because there's not a lot of editing-functions, and i already know
i'll can handle everything with my keyboard-only model (by the way, i think the
first release will be keyboard-only, without mouse-support, that's very bad, i
know, but mouse-handling is a pain). But sample editor will surely be harder,
because i'll have to make a viewer with cut/copy/paste functions, zoom in/out,
and stuff like that, which will be hard in keyboard-only. Well, i want it
keyboard-only, so i'll do it keyboard-only, but will interface be easylly
understood by other users ? (by the way, unix-users can deal with vi, so it
should not be too hard for them). Tonight, i just gonna make a wav-loader. I
went out for school-inscription stuffs this day, and am a little tired, so an
easy task is what i need. Let's go.
Now :
maison:~/c/xsoundtrack$ date
Wed Sep 2 02:09:44 GMT 1998
Not done anything. I knew i wouldn't do anything, should have gone read my
sf-books, huh ? Well, i've seen sox (i had it with SoundStudio, but never
tar -xvzf the .tar.gz file) and the code is pretty. There is a low-pass and
a high-pass filter, and it's very simple code. And i've seen a wonderful
interpolation-method which i surely will use for my player when i'll make
this part of the job. After looking at sox, played a little with xsoundtrack.
There are not obvious things when "live"-playing and writing what you play,
sometimes you forget to push enter, so you go into another window. But if i
allow "live"-playing when in editing-mode, i will have to make auto-mode off,
and for the moving it won't be good (you'll have to push and push and push
where you simply push and keep pushed). Maybe it should be an option.
The SoundStudio coder has done a good explaination-job of his work too (i
began the session in reading this). I now think my program won't be very easy
to use, which is bad. If you never played with a soundtracker, xsoundtrack
won't be an easy way to start. I think i will have to make a tutorial,
otherwise it will be painful for a beginner. But is it a solution good enough ?
Well, people have to learn a bit, informatic is not all in feeling. Yes,
learning should come step by step, so an interface with that you feel good can
help a lot. But, on the other hand, an interface must help you going as fast
as possible doing something (that's why i prefer run X than text-mode, you
have as much windows as you want, more information on one screen, you know
what is where easylly) and if it's not easy from the begining, what the heck ?
Emacs is a wonderful editor, but hard to learn. Well, in fact, my interface,
even if not easy to learn, don't look so easy to use to me... Well, will have
to use it a little bit more to see if that's really how i feel it. By the way,
i do this program for me first, because i want a soundtracker, so i am the
only one (for now) to decide what's good what's bad. And i will have to be more
familiar with the interface-model (which is not very used, keyboard-only under
X is not so common), so maybe it's just a problem of time. Well, for now,
the wav loader is not here, next time it will, let's go for a sleep now.
Ok :
maison:~/c/xsoundtrack$ date
Thu Sep 3 13:58:53 GMT 1998
Yesterday nothing, holydays are holydays. For today, i won't do a wav loader,
because it must be done when necessary, to integrate correctly in the program
(i would have to malloc for instrument, which i want do only when it is
required in the logic of the program, which was not the case). Won't start the
sample editor, because samples are part of an instrument, so i think it's
more logic (and easier) to start with the instrument editor than the sample
one. Let's go.
Now :
maison:~/c/xsoundtrack$ date
Thu Sep 3 22:21:18 GMT 1998
The layout of the instrument editor is drawn (i made breaks here and there,
because of the sun, something like 17:00 -> 19:30 but not sure). Have to draw
values of fields, to make the moving-stuff and editing in each subwindow.
Gonna take me a few days, but for today, i'm over, don't want to work on it
anymore, have a Sturgeon's book to read (Venus + X), so, let's stop.
The code is now :
maison:~/c/xsoundtrack$ wc -l interface/*c interface/*h player/*c player/*h
819 interface/file_selector.c
231 interface/instrument.c
1269 interface/interface.c
54 interface/keyboard_definition.c
62 interface/main.c
224 interface/screen.c
2544 interface/sub_interface.c
19 interface/file_selector.h
20 interface/instrument.h
94 interface/interface.h
19 interface/keyboard_definition.h
31 interface/screen.h
21 interface/sub_interface.h
82 player/card.c
326 player/live_player.c
10 player/load_wav.c
444 player/mixer.c
617 player/xm.c
16 player/card.h
32 player/channels_def.h
13 player/debug.h
25 player/live_player.h
13 player/load_wav.h
22 player/mixer.h
210 player/xm.h
7217 total
700 more lines, not over...
Ok :
maison:~/c/xsoundtrack$ date
Fri Sep 4 14:13:11 GMT 1998
Stugeon's book was a big one. A discussion about power, men and women, appetite
for domination of a lot of humans, troubles that come from it and how could we
do to change things. The "solution" he imagines is not what we can call a
solution. Force people to be a certain way, what else is it than domination ?
even if results seem to prove we were right to change them so ? Force people
to be or to do something, even for their own good, is not acceptable. Power
makes move lots of humans, domination seems to rule the world. Damned,
desperated feelings fill you almost fully when you think of it. What to do
against it ? How to orgainze with other humans who share the same thinking, the
same will of change ? How can we convince others that we are right ? but are we
right... Today, gonna show things right in the instrument-editor and start the
editing-capabilities.
18:07 : ok, the drawing is done. Now, i will make the moving between the
subwindows, then handle each subwindow. Think it will be over tonight.
20:05 : had a break from the last message till now. Let's finish with the
instrument-editor. First, make the moving between the subwindows, then make
the volume envelope drawing, then panning envelope drawing, then the keyboard
then the buttons, then the close, then it'll be over, i'll can go for a sleep.
Now :
maison:~/c/xsoundtrack$ date
Sat Sep 5 00:26:38 GMT 1998
The two drawing areas are done (when one was over, the other was a simple copy
and paste with some replacement : volume -> panning and cur_pos_0 -> cur_pos_3
and 64 -> 63 and there i was). Now, will handle the buttons. First, make the
drawing of the current position for all subwindows, then handle value-putting,
then it'll be time for a sleep.
01:27 : ok, current-position in subwindows is done, with moving. Now, the last
step (then go to bed) is to change values. Easy stuff.
Now :
maison:~/c/xsoundtrack$ date
Sat Sep 5 02:43:48 GMT 1998
Well, instrument editor is over ("close" not done, but trivial and too tired).
Two days of coding for that, coool.
Code is now :
maison:~/c/xsoundtrack$ !wc
wc -l interface/*c interface/*h player/*c player/*h
819 interface/file_selector.c
731 interface/instrument.c
1269 interface/interface.c
54 interface/keyboard_definition.c
62 interface/main.c
225 interface/screen.c
1489 interface/sub_instrument.c
2544 interface/sub_interface.c
19 interface/file_selector.h
20 interface/instrument.h
96 interface/interface.h
19 interface/keyboard_definition.h
31 interface/screen.h
28 interface/sub_instrument.h
21 interface/sub_interface.h
82 player/card.c
326 player/live_player.c
10 player/load_wav.c
444 player/mixer.c
617 player/xm.c
16 player/card.h
32 player/channels_def.h
13 player/debug.h
25 player/live_player.h
13 player/load_wav.h
22 player/mixer.h
230 player/xm.h
9257 total
2000 lines more. The two last days were productive, huh ? Let's take it over.
Need some sleep.
Ok :
maison:~/c/xsoundtrack$ date
Sun Sep 6 20:55:15 GMT 1998
Yesterday nothing, because after my friday very working day, i needed some
break (and had some sf-book to continue). Today, i gonna finish the instrument
editor (the close button) and then start the sample editor. Well, when i see
how fast i was on the instrument editor, maybe i'll be over with the interface
at the end of the next week, who knows !? I realize some badness in my
instrument inteface. The fadeout and stuff like that should have a bar to see
where we are about, like in ft2. Only the value is not very visual and not very
practical. Well, maybe i'll do it one day, but for now, this part is over, will
put it in TODO. For the sample editor, i'll have a "fixed"-part and a
"changing" one because there will be : sample settings, record stuff and
effects stuff which would be too much in one window (don't forget we have the
viewer and the scroll bar which already takes something like 260-270 pixels in
height, so we could be with something big, like 600 or 700 pixels, much too
big. I don't want more than 600x400). Ok, let's go.
22:20 : i've drawn things with xfig, reday from about 20 min, but at same time
and till now, played with SoundStudio, so... and i don't really want to code
now. Instrument button "close" is done. Will be all for today. (No, will see
how is stored relative tone in sample, then over.)
Ok :
maison:~/c/xsoundtrack$ date
Tue Sep 8 21:13:19 GMT 1998
Yesterday nothing. I began to play with spider, a card-game absolutly terrific
(has ever someone won in it ?), then sun was in my screen, i didn't see
anything and at night, i fucked my head in tv-watch. Today, start sample
editor.
Now :
maison:~/c/xsoundtrack$ date
Wed Sep 9 01:05:19 GMT 1998
Ok, things are begining to get shown. The up is drawn, the down if drawn at
2/3. Rest to draw the effects, but i surely will do it much later, because i
don't really need it by now. Next time, will start the moving of stuffs, and
if time let it to me, i'll do the sample-viewer with moving, selecting, cut,
copy, paste with keyboard-only (by the way there's still no mouse, maybe the
first release won't handle mouse, hehe, others than me won't like it much, but
i absolutly don't care !). Ok, let's go for a sleep.
Ok :
maison:~/c/xsoundtrack$ date
Wed Sep 9 13:52:58 GMT 1998
Here from about 10 min. Gonna continue with sample editor.
19:37 : had a break from about 18:10. Keep going.
21:07 : things are drawn, except effects (gonna do it much later, maybe i'll
release with no effetc at all). Now, will have to move.
Now :
maison:~/c/xsoundtrack$ date
Wed Sep 9 23:52:25 GMT 1998
Moving is ready (still not with effects). Next thing is to handle each
subwindow. The hardest will of course be the sample viewing zone, and a
horrible thing will (would ?) be the mouse. Am not sure to handle it for now.
I want a loader and a recorder, that's all. Some effects, like volume up and
down, max volume, minimize sample, reverse, stuff like that would be great too.
Well, well, well, effects for later. It was a little longer than expected
because of a new coding-style (arrays of functions rather than big switches)
and a bad numbering model which forced me to count in my head to translate
numbers, so took a little time. Well, for now, i stop. I have "Mona Lisa
overdrive" from Gibson William to continue (yes, it's cyberpunk, but it's
Gibson, and it's the third of his trilogy that began with "Neuromancien" (in
french, don't know english title) then "Conte Zero" (still in french). I read
others from him, some of steampunk, but i don't like that, and the others
cyberpunk stuff sucks, because of a food-writing. When you do something for
money, it sounds or smells or looks or feels like shit, that's a law, simply.
Let's go for a reading.
But before, a little wc says :
maison:~/c/xsoundtrack$ !wc
wc -l interface/*c interface/*h player/*c player/*h
823 interface/file_selector.c
732 interface/instrument.c
1283 interface/interface.c
54 interface/keyboard_definition.c
62 interface/main.c
675 interface/sample.c
539 interface/sample_moving.c
242 interface/screen.c
1495 interface/sub_instrument.c
2551 interface/sub_interface.c
19 interface/sub_sample.c
19 interface/file_selector.h
20 interface/instrument.h
98 interface/interface.h
19 interface/keyboard_definition.h
20 interface/sample.h
20 interface/sample_moving.h
31 interface/screen.h
28 interface/sub_instrument.h
21 interface/sub_interface.h
21 interface/sub_sample.h
82 player/card.c
326 player/live_player.c
10 player/load_wav.c
444 player/mixer.c
620 player/xm.c
16 player/card.h
32 player/channels_def.h
13 player/debug.h
25 player/live_player.h
13 player/load_wav.h
22 player/mixer.h
269 player/xm.h
10644 total
1400 more lines, we passed the 10000 level, we gonna have a high score, for
sure.
Ok :
maison:~/c/xsoundtrack$ date
Thu Sep 10 14:31:09 GMT 1998
Let's continue with the sample interface. Gonna handle all the subwindows.
Will do all but sample viewing zone and scroll-bar and buttons of it. Think
i'll finish this early. Gonna be easy and fast job. Let's go.
17:47 : well, well, well. I gonna make a break. Do nothing since about 17:00.
Ok :
maison:~/c/xsoundtrack$ date
Sun Sep 13 14:36:20 GMT 1998
Last two days nothing. I received military fuckin' order to go to the "service
national". I did send my "report" too late, so i'm supposed to go to this
destruction institution the 30 september. Of course, i won't go. But army has
strength, so it's hard to think of something else, and to code, you need good
feelings, good vibrations. Then, friday, i learned that the brother of a good
friend killed himself. Once again, hard to concentrate on a program in those
conditions. This new year begins shitty. Well, gonna code anyway, what else
can i do ? Will happen what will happen... Today, gonna first finish the sample
viewing zone. I realized i must do it first, because it's the hardest, so when
i'll make the rest, i'll find it easy and i'll go faster, and that's the main
part of it all, so make the necessary is a good thing.
Now :
maison:~/c/xsoundtrack$ date
Sun Sep 13 17:30:24 GMT 1998
Well, had troubles with 8b/16b samples, didn't know if the values were bytes
or data-oriented (ie a 2 data makes 4 bytes for a 16b samples and only 2 for
a 8b one). Things seem to work now, but nothing is sure. Sample-drawing seems
to put 1 value more than the last one. Well, well, well. I can now move in the
sample with left/right arrows and tab/ctrl+tab keys and zoom in/out with +/-.
I have "l" and "e" to put the begining and end of loop at current pos. Now,
will have to handle the shift+move keys to make a selection. A good thing,
because of the "l" and "e" keys, would be to be able to "live"-play the sample,
without having to go out of the sample-window, because put the loop begin/end
may be a long task, but with the zoom in/out, things should be easy anyway.
Well, will see when using. After the selection is done, i'll make "del" (copy
in cut buffer then cut) then "insert" (insert the cut buffer at the current
pos, but if the current pos is a selection, cut this selection first, the copy
area will then be the current selection), "ctrl+insert" (copy the current
selection in the cut buffer). Not too hard task but has to be done. But for
now, gonna go for a bath.
Now :
maison:~/c/xsoundtrack$ date
Sun Sep 13 21:49:50 GMT 1998
Am back, let's go.
Now :
maison:~/c/xsoundtrack$ date
Mon Sep 14 01:53:02 GMT 1998
Well, there was tv, radio, so not very concentrated, so slow and surely bugs.
(The 8b and 16b makes all more complicated.) Well, i have done ctrl+del stuff,
del and insert, ctrl+insert the next time, tired. I tested things with 8b
samples, should see we 16b to see.
Code is now :
maison:~/c/xsoundtrack$ !wc
wc -l interface/*c interface/*h player/*c player/*h
823 interface/file_selector.c
732 interface/instrument.c
1283 interface/interface.c
54 interface/keyboard_definition.c
62 interface/main.c
692 interface/sample.c
541 interface/sample_moving.c
242 interface/screen.c
1495 interface/sub_instrument.c
2551 interface/sub_interface.c
1234 interface/sub_sample.c
19 interface/file_selector.h
20 interface/instrument.h
106 interface/interface.h
19 interface/keyboard_definition.h
20 interface/sample.h
20 interface/sample_moving.h
31 interface/screen.h
28 interface/sub_instrument.h
21 interface/sub_interface.h
38 interface/sub_sample.h
82 player/card.c
326 player/live_player.c
10 player/load_wav.c
444 player/mixer.c
620 player/xm.c
16 player/card.h
32 player/channels_def.h
13 player/debug.h
25 player/live_player.h
13 player/load_wav.h
22 player/mixer.h
277 player/xm.h
11911 total
If i don't do any sample effects and no options and no mouse and don't touch
the player, i'm close to the end ! but it all has to be done, so... the end is
not so close. Damned, near to 2 months that i'm on it, well... surely the first
release will be called 0.9 if no mouse, 0.5 if no option-menu and no mouse,
0.1 if the player is not touched, no option-menu and no mouse. Hope the first
release will be 0.5 at least. (The sample effects don't count in the
numbering, it's very optionish.) Let us sleep now. Tomorrow, have to deal with
this army-stuff, gonna be shitty day i think.
Ok :
maison:~/c/xsoundtrack$ date
Tue Sep 15 19:52:37 GMT 1998
Yesterday nothing, because i'm in advance in my lateness. Well, i called the
army (hard thing to do, hard to keep your control when talking to fuckin's
military suckers) and i was told that my case would be reexaminated because
i did not know the delay of 60 days and they did not inform me, so it's their
fault, not mine. Will be ok, i think. Well, for today, keep it with sample
editor, finish the viewer (del and insert stuff) then the buttons. I spent more
than the week expected first, but not too bad anyway.
22:40 : had a break from about 20:40 to 22:00 or 22:15.
Now :
maison:~/c/xsoundtrack$ date
Wed Sep 16 00:21:25 GMT 1998
Well, seems to work, but i am absolutly not sure of me. It is very possible
that bugs are in there (i speak of the sample editor of course). This 8b/16b
stuff is a real pain. Lots of "if", so lots of bug source. Hard to test all,
to pass all the "if" cases, so maybe one is not correct. And maybe i don't see
the bugs, even if i played with it. So... Well, i changed the zoom mode, was
bad, when big samples were zoomed a lot, the zoom was too small to the end
(formula was : zoom=max_zoom/zoom_level, where zoom_max was sample_length/512
(with care of 8/16b), so when zoom_level was something like 20, when it went to
21, the difference was very small. Now, i use a zoom-width, and i had this
zoom-width/16 to it, so it's like a differential equation, so when you zoom,
you always get 32 new bytes that appear or something like that (zoom looks
linear), well not very clear, huh ?). So now, i have to make the buttons, all
the buttons, and so, what goes with that, ie a sample loader/saver, and a
recorder. Then, i'll go back with the player, to handle some effects, and try
to finish instrument handling (fadeout and auto vibrato), then i'll surely make
a 0.2 release. Then, school will be back, so... Hey, i've forgotten the loop
start / loop end showing of the sample. Will have to do it too. Easy task
anyway. Code is now 12034 lines long, something like 100 more lines than the
other time. Hey ! not a lot. But very bug-generator. Hope there is not too much
of it... with player, it will be worse, because i'll have to boot DoS, to see
how ft2 behaves. Its handling of e6 sucks a lot, in my opinion; my player will
handle it more "naturally".
Ok :
maison:~/c/xsoundtrack$ date
Wed Sep 16 23:14:58 GMT 1998
Start late, waited for a pirat-tv program. Didn't capt it. Do they still emit ?
or maybe i'm no more in their emission-area... Will ask a friend... Well today,
begin to deal with the buttons. Won't go to far away, am tired. Should have
work during the day, but had a proto-cyber-shitty book to finish. A pal who
think that write "computer" and "megabytes" make him to be a cyberpunk, when
he just rewrites what was already done before, but in french, with "argot"-like
words that make you don't understand a shit of that shit (and that's the best
of it all, by the way). The book was "dose letale a Lutece-Land", wroten by a
guy too afraid to give his real name (like me with my false name "Sed"), so he
lets him call "Riton V". Has a mail @ : riton_v@six.net, and
www.six.net/~riton_v should be his web. Did not look at it, because i must take
care with my access, because, well, because. Will wait my new account to go on
with that all. Ok, enough with noise. Let's go code a few (am bored of it all
by now, but have to go on, really want to finish, then i'll can sleep all i
want, can make some sounds, hehe, will be terrific. AHHHAAAAAAAAAAAAAAHHHH !
hehe, ultra-brutal-sound, hehehehehehehEHEHEHEHEHEHEEE!EE!EEEE!EEEEEEEE!
Death-metal rulz).
Now :
maison:~/c/xsoundtrack$ date
Thu Sep 17 01:18:42 GMT 1998
About 30 min i did nothing (date of xsoundtrack is 00:43). Just played a bit,
hey, the prog is there for me to play, no ? so i play. Cool. Think i'll have
lotsa fun when all will be done. Well, have done subwin 00 01 and 02 (see
interface/sample.fig to understand). Am tired. Tomorrow, will work during the
day i think. A hard thing will be the loader/saver of sample (wav for now,
maybe a raw loader too for unknown (by me) formats) and then the recorder.
Code is 12302 lines long. 300 lines in 1.5 hours, good. Let's bed to go, hehe.
Ok :
maison:~/c/xsoundtrack$ date
Thu Sep 17 12:23:42 GMT 1998
Ok, start soon, will have to leave this evening, so. Ley's continue with those
buttons. The file you read calls NOISE, no more README, because that's full of
noise (who cares what books i read ? Who cares i currently read "I am legend"
from Matheson for instance ?).
Now :
maison:~/c/xsoundtrack$ date
Thu Sep 17 17:33:06 GMT 1998
Ok, the sample interface is close to its end. Gotta make "load", "save" and
the recording functions. Then, i'll add some utils short-cuts (when in sample
or instrument window, to go to the next without pass in the pattern window,
ctrl+enter to close a channel, stuff like that) then go back with the player.
Handle easy effects (those with volume and panning and one or two others easy).
Will have to do amiga table and interpolation too. Well. Then, or before, will
do the option window. Well, well, well, lot to do. But that will be all for
now. Code is 12797. Look ? Ok.
maison:~/c/xsoundtrack$ !wc
wc -l interface/*c interface/*h player/*c player/*h
823 interface/file_selector.c
732 interface/instrument.c
1288 interface/interface.c
54 interface/keyboard_definition.c
62 interface/main.c
705 interface/sample.c
541 interface/sample_moving.c
242 interface/screen.c
1495 interface/sub_instrument.c
2551 interface/sub_interface.c
2091 interface/sub_sample.c
19 interface/file_selector.h
20 interface/instrument.h
110 interface/interface.h
19 interface/keyboard_definition.h
20 interface/sample.h
20 interface/sample_moving.h
31 interface/screen.h
28 interface/sub_instrument.h
21 interface/sub_interface.h
38 interface/sub_sample.h
82 player/card.c
326 player/live_player.c
10 player/load_wav.c
444 player/mixer.c
620 player/xm.c
16 player/card.h
32 player/channels_def.h
13 player/debug.h
25 player/live_player.h
13 player/load_wav.h
22 player/mixer.h
284 player/xm.h
12797 total
Here we are. (A funny thing is that this current file (NOISE) is about 10% long
in number of lines than the code it-self. Funny... no ?) Let's stop with it for
now.
Ok :
maison:~/c/xsoundtrack$ date
Fri Sep 18 23:31:38 GMT 1998
Gonna make a wav loader and a wav saver. Very small loader and saver, the
frequency won't be used at all in the loader and in the saver, it will be
given by the user. Maybe should make a raw-loader (ie i load the file as a
byte-stream, without knowing the format), so the "load"-button will give 2
sub-choices, one is "wav" and the other is "raw". Yes, think i will do that.
Not too hard. I finished "I am legend" from Matheson, story of a guy living in
a world full of vampirs, he is maybe the last real human being, and we see his
last days. He tries to understand where vampirs come from, in a scientific way
of investigation. We have some answers, not too credible but good for a 50's
book. This book is a must-read, for its classicism. That is SF, really. Even
if the author takes a typical fantastic-thema, the vampirs, which is not a
scientific-thema, what should study the SF (in its own way of course), but it
is good anyway. The author knows the SF-mechanism at the perfection, for sure.
Well, noise enough, let's go back to the real world, the byte world, hehe.
maison:~/c/xsoundtrack$ date
Sat Sep 19 00:36:59 GMT 1998
Well, did not do too much, only dealed with the interface, to display the
choice between load wav and load raw. Then it calls the right function, but
those functions are not done, because it's too late now, i don't want to code
anymore, am tired, my eyes are becoming "secs" (no more wet), so let's go for
a big and good sleep.
Ok :
maison:~/c/xsoundtrack$ date
Sat Sep 19 20:56:57 GMT 1998
Ok, had to go out today, so begin a little late. Gonna make a wav loader and a
wav saver and a raw loader, then if time is here, a recorder (but surely time
won't be there, will it ?). Should make a wav dumper too, could be very useful
to create new samples from xm. So i could have 3 base-forms (sinus, square,
"triangle" (french word)) that i could put in xms this and that way, with
some effects, that would create new samples, that i then could use in other
xms. So, i would create my samples, that would be roots a lot (like the using
of xlib at a time where everyone uses this or that toolkit), so coolness fills
me, hehe.
00:12 : had a break from about 22:45 till now. This wav loader fucks my head.
I don't know the format, so i rip code here and there (mainly from SoundStudio
(sox in fact), a little from mikmod), am not sure if they deal good or not,
well it sucks to do so. So, let's finish this shit today, the saver won't be
done today. Already have a raw loader.
Now :
maison:~/c/xsoundtrack$ date
Sun Sep 20 01:19:46 GMT 1998
Ok, about 20 mins that the wav-loader is done. It's a rip of mikmod and sox,
both are free-software, so, no problem. (But even if it was not free software
i would have ripped it, i absolulty don't respect copyrights, i respect
quality, that's all (but if it was not free software, i wouldn't have the
source, so it would simply be impossible to rip (read compiled C is a real
pain, i am in holydays, don't want to pain (and even if i was not in holydays,
it would be much too hard))).) What i don't like is copyright, i don't
understand why a program should be copyrighted. It's so easy to copy, it costs
nothing, so why copyright ? Nothing to protect, nothing to loose, and if others
use your program, what do you want more ? And for the GPL, i don't like it too.
Yes, you protect your code, no-one can use it in a money-oriented way, it has
created a huge amount of very good software, but it's too rully. I want no more
rules in software making, simply that : you code, you tell others what you've
done (by newsgroups, mail, web, what you want, it's very very easy) then the
users decide or not to use it, see if it coredumps too much or not, if it fits
their needs or not, and then decide to promote it or not, tell their friends
about this program, and who cares whom the program is owned by ? Yes, you can
give your name with the source, and how to contact you, but simply because you
made it, so you know better than others how it works, and you can help in
debuging maybe more than others (which is not absolutly sure, because you can
be good in coding this or that and be a shit in making clean code, see all the
cases and handle errors correctly). But i think that the best thing is to free
it all, so we can have really good software. If you don't like what you code,
you'll make shit, if you don't code something you need (to use i mean) you'll
make a shit. Big companies didn't invent anything, they simply can handle more
cases because they've time. They have time to make a fine interface, to
optimize, to test, to do all with more time. But they absolutly don't invent
anything. So, they sucks. I much prefer a program done by one guy, with a not
very good interface, but stable and easy to use because the guy needed it than
a big program taking lot's of space on disk, and crashing a lot, because coders
had to code, they did not decide to make this better than something else, but
the guy who pay them wanted them to work on it. Sometimes, they don't even know
what will their work be used in. Can you believe that ? Code somehting you
don't know what it's done for ? Personnaly, i can't. Well, enough noise. Next
time (tomorrow i think), will do a wav saver. Then start the recorder. Code is
now 13041 lines long.
Ok :
maison:~/c/xsoundtrack$ date
Mon Sep 21 16:42:52 GMT 1998
Yesterday nothing, head fucked is head fucked. More the time pass, more i'm
bored of it all. Well, let's continue anyway. Today, a wav saver (nothing will
be easier) then i will make a xm saver (a save all and a minimum save and a
wav dumper (if i find time)), then i should go back with the player, but surely
not today. I've just finished "F.A.U.S.T." from Serge Lehman, a french
politic-fiction writer. He describes what could the world become. No more
states, big companies taking politic-power, democracy takes no more sense (but
has it still one today ? has it ever had one ?). He describes the last days of
the nations, with a law passed at the world-parlement which will allow big
companies to do what they want on the territories they own. They'll can change
the laws, destroy democracy if they think it goes against their interests (like
we will soon have with AMI, "accord multilateral sur l'investissement", where
companies will can go in front of a court if they think states go against their
interests. Could be a fucking world down here. Will it ? Some humans don't want
it and try to go against, but will it be enough ?) Well, for us, we have free
software, which is a good hope. Freedom to code, freedom to distribut and
modify code of others, and of course, freedom to use. Freedom to hack. But in
USA, there was going to be a law against free hacking. You won't be able to
hack a program if the author don't want to, so if you find a bug, if you
report it, you'll can be condamned because the author wouldn't have give you
the permission. Isn't it shit ? Yes it is. Will it pass ? If not, anyway, they
will make other laws. Their world sucks, sure, but they take a profit of it
all. Will they let it disapear with no reaction ? Surely not. Fucking fucked
world. (Hey ! more time passes, more noise comes down in this file. How will
it finish ? one day, i'll make an entry with nothing about xsoundtrack, only
noise !!)
19:55 : break from 18:50 for food and wash. Have a bug with the sample saver.
Hmmm... will find it, sure.
Now :
maison:~/c/xsoundtrack$ date
Mon Sep 21 20:31:19 GMT 1998
Ok, wav saver is ok (the bug was i passed &samp->sample_data to write(2), where
samp->sample_data was a pointer, so i passed the address of the buffer instead
of the value, which is what i wanted, so i had to pass samp->sample_data
without the &). Well, no xm saver for now, because i'd have to make some
interface code. I should show the current position in the sample when i move,
it miss. And i was going to forget the recorder ! I have to show the loop
begin and loop end in the sample too. Well, well, well. Let's go for a tv
losing of time now. Gonna continue it next time. It tooks me so much time (3
hours) because of the interface-code. That's the worst of it all. I really
should have use a toolkit, damned. I would have lost maybe 1 or 2 weeks in
learning it, but it would be finished now, and adding new stuff would be very
easy which is not the case. (And the mouse would be handled.) But, in the
other hand, don't know if i could have had the "live"-player and the moving
of the pattern when playing. And maybe the keyboard handling wouldn't have been
so cool (i like my handling; hey ! it's mine, i know what i want, huh ? so of
course i like it !). Well, enough noise. (Code is now 13280 lines long.)
Ok :
maison:~/c/xsoundtrack$ date
Tue Sep 22 17:16:46 GMT 1998
Well, well, well. Machine is on since about 14:15 but did nothing till about
16:30, where i started to play a few with xsoundtrack. Some stuff to code, not
finished yet, some "bugs" here and there that must be fixed (not bug, but
strange behavior or some missing things). Well, gonna make the "save"-stuff
of the module.
Now :
maison:~/c/xsoundtrack$ date
Wed Sep 23 01:52:13 GMT 1998
Well, was not working very fast. Had a break from 18:30 till don't remember
what. Well, xm saver (save all) is done. Have to make the only-what-needed
saver and the wav dumper. I've got bugs here and there. It does not core dump,
but behavior is not what expected. Ok, am tired a lot. Gonna sleep now. Should
write to the army (did i say i received the paper of the army telling me i'm
ok for one year ? then will have to think of what i'll do. Desertion or
objection of conscience (do you understand that ? not very english...). Well,
probably the last one, more easy, and i'll can continue to study after, which
is harder if i desert ("insoumission" is the right word). Army sucks, they
won't have me, i fuck them. Ok, code is now :
maison:~/c/xsoundtrack$ !wc
wc -l interface/*c interface/*h player/*c player/*h
823 interface/file_selector.c
732 interface/instrument.c
1298 interface/interface.c
54 interface/keyboard_definition.c
62 interface/main.c
728 interface/sample.c
541 interface/sample_moving.c
242 interface/screen.c
1495 interface/sub_instrument.c
2609 interface/sub_interface.c
2277 interface/sub_sample.c
19 interface/file_selector.h
20 interface/instrument.h
113 interface/interface.h
19 interface/keyboard_definition.h
20 interface/sample.h
20 interface/sample_moving.h
31 interface/screen.h
28 interface/sub_instrument.h
21 interface/sub_interface.h
38 interface/sub_sample.h
82 player/card.c
326 player/live_player.c
444 player/mixer.c
267 player/wav.c
1037 player/xm.c
16 player/card.h
32 player/channels_def.h
13 player/debug.h
25 player/live_player.h
22 player/mixer.h
20 player/wav.h
291 player/xm.h
13765 total
Let's go for a good good sleep now.
Ok :
maison:~/c/xsoundtrack$ date
Thu Sep 24 14:04:37 GMT 1998
Yesterday nothing, had to go out, came back late, so... Well, won't make a
minimum saver, because i'm really getting bored of it all and it is code, and
i don't want to think. But, gonna change it for a "save" and "save as", with
remembering of the name of the file, like in any other programs. Better, huh ?
And will make the free_xm function. Then, the sample recorder (at last). Then,
it will be too late, for sure (and even if not i'll stop there). Then, the
fucking part will come back, the player, with effects handling. A real pain,
just ot think of it crashes my brain.
21:34: break from 18:40 till now, played with spider, still not won, hard game.
Let's make a recorder.
Now :
maison:~/c/xsoundtrack$ date
Fri Sep 25 03:36:20 GMT 1998
Ok, the recorder is ready for about 1 hour or more. I played a little with it.
It records to the cut-buffer, then you copy it where you want. Maybe i should
copy it directly into the current position of the sample, huh ? Have still
the bug that when you put a note, it does not make a call to new_line. All
windows are now identified (so you know who the heck is this sample belonging
to). Ok, enough for tonight, a bit tired. Code is now 14170 lines long.
Ok :
maison:~/c/xsoundtrack$ date
Fri Sep 25 22:11:09 GMT 1998
Starting late, tired, had to sleep. Played a bit with spider. Still not won.
Yesterday, had bugs with the sound-recording. Is it a linux bug ? Will have to
read sources if i want to understand. Both Xsoundtrack and SoundStudio had
troubles. I spoke in my micro, and its input volume was set to 100, but nothing
came in. I had to reboot, then it worked again. Strange a lot. Today, will had
the sample loop bars, the offset-showing of the current position in sample,
then maybe the control keys in pattern editor, the enter key to close/open the
channel, and the keys to change the sample or editor directly in the window.
Lot of easy job, but have to be careful. Bugs are without pityness (pitie' in
french, don't know in english, if you don't like this word, well i absolutly
don't care).
Now :
maison:~/c/xsoundtrack$ date
Sat Sep 26 01:17:50 GMT 1998
Sample loop bars done, showing of current pos in the sample done, close of
xm done (still was not done). The keys are not done yet, next time. Not sure
of my memory management, if i ps aux, after i load and close a xm, i have more
mem used after than before, but it may be free that does not always sbrk.
Should read source, might be fun to see, too. Bug of name of xm could be solved
easylly, by adding the current dir and move there when we save. DON'T FORGET
TO FREE THE NAME OF THE XM WHEN WE CLOSE !!!!!!!!!!! Forgotten that. Well,
gonna do it now... Done, only 2 lines to add. Code is now :
maison:~/c/xsoundtrack$ wc -l interface/*c interface/*h player/*c player/*h
823 interface/file_selector.c
752 interface/instrument.c
1318 interface/interface.c
54 interface/keyboard_definition.c
62 interface/main.c
791 interface/sample.c
541 interface/sample_moving.c
242 interface/screen.c
1495 interface/sub_instrument.c
2716 interface/sub_interface.c
2360 interface/sub_sample.c
19 interface/file_selector.h
20 interface/instrument.h
114 interface/interface.h
19 interface/keyboard_definition.h
20 interface/sample.h
20 interface/sample_moving.h
31 interface/screen.h
28 interface/sub_instrument.h
21 interface/sub_interface.h
38 interface/sub_sample.h
230 player/card.c
326 player/live_player.c
458 player/mixer.c
267 player/wav.c
1193 player/xm.c
20 player/card.h
32 player/channels_def.h
13 player/debug.h
25 player/live_player.h
22 player/mixer.h
20 player/wav.h
297 player/xm.h
14387 total
Ok, let's go for a sleep now.
Ok :
maison:~/c/xsoundtrack$ date
Sat Sep 26 16:24:49 GMT 1998
Played a few with the program. Well, today gonna make the enter-key to close/
open a channel, and ctrl+[+-></\] to inc/dec things. Easy stuff. Then, maybe
change in sample editor to have recording from cd too. Hey ! it's been for
two months that i'm on it. Never worked so long (even if not very hard job,
some days i don't work, so on) on a program. Well, let's go.
16:44 : the ctrl keys are done, a simple call to another subwin. Easy. Now,
enter key.
17:24 : i was working on adding the closing of a channel. I had a fucking bug,
core-dumping it all. I did not understand why. Well, the only thing i changed
was to add a field in the channel structure, but ! my makefile is wrong, so
it did not rebuild all the .o using this structure, so of course, there was
an incoherence. Take really care of it. It's a fucking bad bug, hard to find
(even if there is no real bug, just a makefile bug, you delete all your .o,
making them again, and it works fine, damned shit).
17:44 : ok, works fine (last compile 17/28, played a few with it). Now little
bug fix : when i put a note or something, then call new_line, so if i play it
now, it is taken in count.
18:12 : ok, new_line is called, we sometimes close all the channels, when only
one should be, but not a too bad thing, just a choice. Now, should make a hard
thing, change the displaying of a pattern to have a variable number of lines
and columns. Hard stuff because lot of code to change. Well, maybe too hard
for today, hehe. Will only deal with line/micro stuff, adding cd.
20:41 : had a break since last message. Well, will do the changing of
instrument/sample rather than cd option.
21:55 : ok, that's done, works very fine. Well, "sunflow_.xm" from the demo
"sunflower" of Pulse (good demo, really, am waiting to see what they've done
at the Asembly'98 (if they've gone there)) can have a loop-end=sample-size,
so it make the loop end point to be out of the sample (after the last datum).
Will boot DoS to see if it is possible from ft2 or what. Don't think i will
change things, seems strange to me. Code is now 14777 lines long.
22:08 : well, well, well, seems that ft2 allows to put a loop after the last
datum. Fucking fucked fuck ! What to do ? Well, i'll let it as it is, i don't
like to be able to put a loop on a non-existing datum. Ok, well enough for
today. Next time, will make in the record menu, cd adding. Should now go back
with player. I really don't want to, because i'm sure of nothing. Monday, i'll
try to pick-up midas, because it's the player from the ft2-guys, i think (but
am not sure). Well, will see...
Ok :
maison:~/c/xsoundtrack$ date
Tue Oct 20 22:49:31 GMT 1998
Well, well, well, soon one month with nothing on this project... Well, have
big troubles with school and justice, so i am fearfull, no time to think or
code, just think of this shitty shit. Last year, had troubles with admins of
one machine, they blocked my account, it fucked my head, became crazy,
destroyed their system (in fact, took someone else password, logged in,
became root, and changed rights of ksh, so
everyone was root when logging in, french law absolutly forbides that). They
blocked because i had Crack and Satan on my account, to study them, as a
security-wannabe. I asked them explainations by e-mail, no reply, two weeks
later found a web page with buffer overflow for their system, tried it, it
worked, two days later changed rights of ksh (had two days to find a funny
thing to do)... It was one year ago, though this story was over, was
shocked when i received their letters. Now, cops (ie justice) ask for me,
surely about this case, don't know how they could know the rest... Well, am
working because yesterday started a module, and played it with xmp, crashing
it, so fix the bugs. It had to see with 0-length patterns and the limit of
256. xmp only wants 255, because it converts the word in byte in its loader,
so a length of 256 becomes 0 (how did i find it ? Well, my saver is far from
perfect, so it saves things that should not be, will have to re-work on it).
Then, ft2 crashed too with modules from my program. Bad, huh ? Was a bug with
a field that neither my program nor mikmod nor xmp use, the header length, but
usmp does (it's a free player under DoS) and ft2 seems to too (but no source,
so can't be sure, but now that it is fixed, it does not crash anymore, so it
must be that, no ?). Ok, that's all for now. Effects still not there, and i
today realised that it (impulse tracker) format is better, so i should have
done my interface with this format in mind, not xm. Well, maybe next year,
i'll be "objecteur de conscience", will have time to code. This story with
school really fucks my head, i did not work much for my DEA (diplome d'etudes
approfondies, 5th year at the university), so it started bad bad bad. Maybe
i won't can finish it, if they don't want to. I made fuckin' bad things, now
they make me pay. Shitty system. Huh, long noise today, no ? Let's stop it.
Ok :
27 october 1998, 22:54.
I am looking at soundtracker, another xm tracker done with gtk. Can't run it
because of a compiling problem (it wants <sys/pool.h>, which my kernel does
not have). It just pointed to me a bug : when the module plays, if i delete
the sample, it sigsegv. Bad, huh ? Should close the channel when i modify in
anyway a sample, would stop all the problems of the same type. Fucking bad
bug, huh ? Once again, the law is respected : you will never find all the bugs
of a program. What should exist is a bank of bugs, with all the coders' bugs
ever found, so that new coders can benefit of oldies' experience, huh ? Appart
from that, soundtracker looks cool. It works with the threads, so it could have
been possible to do mine with threads... And gtk has done lot's of the
interface job. Surely wouldn't have spent two months on it if i choosed this
approch of the problem. And should have done the it format, but did not know
it. Makes me a little "énervé", but you know, am not a real coder, just take
fun with those machines, even if today fun is not here with all those justice
problems... Well, enough noise.
Ok :
22 novembre 1998, 17:24.
I booted 2.1.129. Now, i can't have larsen anymore. Bad. Tried to modify the kernel,
nothing to do. With the new driver, i see my program had a bug. It opened
/dev/dsp read-write, which creates a bad quality. With read-only, it's ok.
Ok :
Thu Nov 26 18:25:00 GMT 1998
Removed some bugs. The zoom in key handling was wrong, because i tested
ks+(status<<16), but to have the '+' some keyboards need 'shift' (and mine
too now, i don't understand why but the numeric pad does not work anymore !).
I had to clear the pixmaps too, bad reading of the man, which says the initial
contents of the pixmap are undefined, while i though it was filled with 0s.
And a bug in the mixer, i did not test if the sample of the voice exists, but
we can destroy the sample data while it's playing, so we must check (in fact we
have to check only once, at the entry of the mix routine, but it was easier to
write like i did. Anyway this code is too slow, will have to rewrite it all.
I did run soundtracker ! at last. The interface does not have all the features
i want, but it looks better than mine, and it's surely easier to code. The
next program i do under X will use a toolkit (i think of a tiny IRC client
under TCL). I go see the cops tuesday. This story fucks my head.
University sucks.
- Ok
- maison:~/c/xsoundtrack$ date Wed Dec 23 20:12:43 GMT 1998 We gonna work a few, holidays, have some time. First thing, i got strange things when playing, some notes get lost, bad, will handle events differently. 20:55 : ok, i found it. I simply choosed the same live-channel for all the notes of the chord, so of course, only one note was played. Bad, bad, bad. Now, gonna code two esay effects : change the speed/bpm of the module. 21:54 : ok, i gonna do it, yes ! Just have to stop playing and go coding. Damned, i am not serious, am i ?
- Now
- maison:~/c/xsoundtrack$ date Thu Dec 24 01:10:12 GMT 1998 Ok, i've done the volume column effects, well panning and volume ones. I've done F effect too (easy stuff). Now, i'll go sleep. A little bug : when i play a module, then i go to another one, and play an instrument, then go back to the first (that has been closed when i went to play the other one) and play an instrument, then it restart playing. Annoying but not serious. But ! when i wrote the above, i wanted to redo the thing to see what would have happened, and fuck ! i can't play anymore, all is blocked ! Fuck ! fuck ! fuck ! Gonna debug it one other day, late now. Code is now 14981 lines long. Sleep sleep sleep.
- Ok
- maison:~/c/xsoundtrack$ date Thu Dec 24 15:48:31 GMT 1998 First, take away this bug, then changing how i handle cut key when an instrument has a volume envelope but no sustain (i stoped it all, but xt2 let it be till its end, so i'll do the same). Then code the B effect (jump to pattern), which is done just after the last tick of a line (couldn't they do it at the first tick ? shitty shit). I should handle ctrl+c with a signal handler, because with the bug, i am in RepeatOff when it crashes, sucked sucking suck. 16:00 : well, was running through the code, the remembered it might be a Makefile bug (i changed the xm structure, maybe some files depending on that were not rebuilded, imagine the result...). And... yes ! it was that. Shit, second time i've got this shitty shit. I should write my Makefile better. Ok, let's do real things now. 16:10 : ok, i deal good with volume envelope and cut key. Now B effect. Well, gonna make volume/panning stuff before, easier. 17:09 : ok, all the volume/panning effects (alone, with no other effect, ex 6 is not done) are done. Surely bugs here, but... Will have to make the jump stuff. A little more tricky. 17:34 : nothing done, just listening some modules to see how they rend. Some very bad, others not so bad. Well, had a little bug with F effect. In fact, i did not break in my switch, so every E effects went to the F, bad bug, huh ? I forgot the break, because E effect has in fact subeffects, and each break, but they are not all done, so of course, when it reaches the end of the inner switch, it directly goes to the F effect. Bad, bad, bad. Not the first time i got troubles with the forgetting of a break in a switch. One major bug that might appear : because ft2 saves default values for some effects (so you don't have to give the value the next time you use it, it's gonna take the last one used), when editing, if you don't give a value, Xsoundtrack will use the last used, which may not be the correct one (you are editing pattern 1, play the begining, the dtop playing, go to pattern 2, play it not from begining, an effect arrives, that get pattern 1 value which is wrong). So you may create incorrect things. 18:0O : ok, effect B is handled. But too much !!! It jumps even when we are not in playing mode, so it's hard to create something, huh ? Gonna fix it anyway, new_line must be called only while in playing mode, will browse source to see how to correct that. 20:16 : well, stoped at about 18:45 or something. I corrected the previous problem, but i am not satisfied. When not in playing mode it handles effects, and i don't know if i have to re-init global stuff (old values for some effects). Well, gonna stop for today, anyway. Code is 15141 lines long. Removed is_playing, forgot to say.
- Ok
- maison:~/c/xsoundtrack$ date
Sat Dec 26 16:12:56 GMT 1998
Well, i've played a little with ft2 to see how handle vibrato. Gonna watch
inside mikmod or openCP (in soundtracker) for better infos. I've replayed
walker.xm by Ripper (a friend met at the ltp2, crazy guy !), and i begin to
understand what it is intended for. So, i gonna implement B and D effects
the way he wants. And "recursive" E6 too. ("Recursive" means that you can
loop in a loop, but in another channel, the player will have then to loop
at the right place). ALL the players i've tried (ft2, mikmod, soundtracker,
xmp) don't play it correct. Don't think i've tried it and usmp, but i'll do
next DoS boot. For B and D, nothing special to say except that if both of
them are given in a row, then you have to jump to pattern specified by B, at
the row specified by D, so walker.xm will be played as Ripper seems to want it
(this module is 3202 bytes long !!!). Let's go.
16:52 : ok, B and D handled correctly (in the Ripper meaning of it). Now, E6.
17:52 : ok, i had a little bug while doing e6. Two vars : i and good_channel.
I browse all the channels with i, and set good_channel in the boucle. So
after, i have to use good_channel, right ? But i made a mistake and used i
instead of good_channel. Very current error. Just to note.
18:40 : Ok ! i have e6 working correctly (well, i hope). Ugly code, full of
if else, and if else inside those if else and so on, very hard to test. One
other thing is that if i have a e6 on the same line than another jump, what
to do ? go loop if loop here and jump if loop over ? One other thing is that
effects are parsed even when in moving mode, so we have strange things
happening. I surely will change it to fit ft2-like playmode. When you play
(press <space>) then it goes to the start of the current pattern, and reset
everything (global volume, loop stuff, all memorised settings, all is reseted).
Ok ? And add something like <ctrl+space> to have the current behavior (no
reset, play from current line). Think i'll do that. But eat eat eat now !
Note : E60 and E6X MUST appear on the same column for one loop.
22:29 : ok, back from eating for maybe 1:30 hour. Tried some xms. Had one
bug in the loader (yes, still buggy code). I had a pattern of length 64 but
without data stored in the xm, so i didn't allocate mem for it. Now, the
malloc is done, even if no data is stored in the file. Ok, i have enough for
today (have a headache again, shitty shit, is it food or what ?). Gonna listen
some music (Korn then maybe Marilyn Manson).
maison:~/c/xsoundtrack$ wc -l interface/*c interface/*h player/*c player/*h
824 interface/file_selector.c 809 interface/instrument.c 1327 interface/interface.c 54 interface/keyboard_definition.c 72 interface/main.c 902 interface/sample.c 541 interface/sample_moving.c 242 interface/screen.c 1495 interface/sub_instrument.c 2926 interface/sub_interface.c 2363 interface/sub_sample.c 19 interface/file_selector.h 20 interface/instrument.h 112 interface/interface.h 19 interface/keyboard_definition.h 20 interface/sample.h 20 interface/sample_moving.h 31 interface/screen.h 28 interface/sub_instrument.h 21 interface/sub_interface.h 38 interface/sub_sample.h 230 player/card.c 334 player/live_player.c 894 player/mixer.c 267 player/wav.c 1213 player/xm.c 20 player/card.h 56 player/channels_def.h 13 player/debug.h 25 player/live_player.h 22 player/mixer.h 20 player/wav.h 310 player/xm.h 15287 total Since the last time i did it, the mixer code has *2. And it gonna grow again and again, until i handle all the effects and i do interpolation mixing and different mixing resolution. Well, next time, 9 effect then the begin to understand something in vibrato (auto and effect 4, 6, and so on). Then i'll do portamento, then it will be almost finished for the effects, the rest is minor stuff. I still don't know what W effect is... Well, enough NOISE for today.
- Ok
- maison:~/c/xsoundtrack$ date
Mon Dec 28 13:00:17 GMT 1998
* NEW RELEASE 0.0.3
Yep, gotta go to school to put it on my page. - Ok
- maison:~/c/xsoundtrack$ date Thu Dec 31 15:28:38 GMT 1998 Well, four days i don't do a shit ! Fucking loss of time. Was a bit ill, don't exactly know why; had to go to justice too. I won't have troubles with it anymore !!! Coool. Still problems inside the university, but little shit. Good news, he ? Yep ! Ok, gonna do the 9 effect, but before the instrument-only stuff so that walker.xm is played ok (well, still vibrato and portamento to do), then we'll see. 16:22 : ok, looked a few inside Mikmod. Not learned a lot about this instrument only stuff, then lost myself in looking effects handling, so go back there to see what's the point of it all. 16:30 : oops, seems i made a little mistake with D effect. The datum is not in Hexadecimal but in decimal. Well, should change stuff in the interface, won't today, will put it in the TODO, but will convert now. 16:48 : done, looked again for this instrument stuff. Well, seems i do things bad, but hey, for now, i'm bored with it, want the 9 and vibrato. Let's go for 9. 17:06 : ok, done, seems to work. Now, well, a break. 17:42 : ok, for the other effects, have to change my handling of increment/ frequency of a sample to be able to vibrate. Let's change it now. 18:06 : well, about the decimal value, walker.xm take it as hexadecimal, so what do i do ? Well, hexadecimal. Ripper is the master, his wishes are orders. 18:24 : ok, forgot to say increment now calculated at different place than period, so i can deal with vibrato, portamento. 18:34 : let's start with portamento (1 effect) (with no glissendo for now). 19:15 : seems to work. Well, Ripper does strange things. Setting F01 and then using 2xx and 1xx with no note. What to do ? Handle effect or not ? Spec. says to not handle effect at tick 0, and there is noly one tick, so no handling. Sorry, Ripper, you go wrong this time (if i understand your will). Ok, food. 21:37 : ok, played a little with ft2. Effect 0 is strange. Vibrato reputs the real note if you don't continue it on the next line, but not tremolo ! Shit. Will now do portamento to note, which requires a first note to be here, then it does as portamento but stop to the desired note. Ok, let's go. 22:41 : seems to work, nothing is sure. Is it like other effects ? apply only if tick!=0 ? Well, i do so. Should do with e31 now, but a little trickier, so first 4 and 6. 23:43 : had a little bug with 9. Did "if (!tick)" instead of "if (tick)". Damned. Played a little. I gonna make a metal-module one time, for sure. Just need lots of metal-related samples. Well, let's go for 4 (gonna look a lot inside mikmod). Fri Jan 1 01:26:45 GMT 1999 : well, well, well, have a bug. When there is no effect type, then it is in fact 0. My i took 0xff, which meant no effect. But ! in the Ripper module, there are some 020 in the effect column, that i don't view, because in the saved file, there is no effect type, so i assume a 0xff where i should assume a 0. Gonna fix it now. 4 is done, ripped from mikmod. Had a little trouble, though the increment was to add over the previous add, when it has to be added to the period, which value remains the same all the time. 6 effect is done too, but i use the same old values as for volume slide, so maybe some modules won't be ok if it is not done the same in ft2. Anyway, mikmod does it like that (well i think), so... 01:37 : ok, 0 effect fixed in xm.c. Well, now, before the bed takes me for the best hours of the day, i gonna do the 0 effect like in mikmod. ft2 does strange things, but fuck it, it's late, wanna sleep, but finish that first. Simple ripping anyway. 02:22 : ok, 0 effect done, in the mikmod manner. Don't think it's ok with ft2, but i don't care. Late, will go sleep now. Code is now 15514 lines long.
Ok :
maison:~/c/xsoundtrack$ date
Fri Jan 1 16:57:17 GMT 1999
Gonna do some easy effects not done yesterday. X1 and X2 to start.
17:08 : ok, seems to work. Once again, not sure of the saved values, are they
specific to the effect ? or do i use the same as for fine porta or even porta ?
Now, effect 5, tone porta + volume slide.
17:41 : ok, seems to work. Had a little bug, did a break when tick==0 in the
volume handling, so no fall through in porta, which was needed. Another bug
made 3xx to work even if no note to go to was given, so do a porta_period=0
on each new note, don't know if it's correct, but for now will be ok, huh ?
Now, what about e3x ? easy stuff.
17:45 : coded, but to test i'll have to improve 3, not now, later. Now, what
about 7 (tremolo) ? Mikmod is my friend, huh ? Let's rip it. Well, it makes
me think that mikmod is under GPL, so when i rip i should keep on with GPL,
don't know... free software is free software, i don't sell it. Well, anyway,
who the heck uses my program ? Me. And i am not disturbed not to respect GPL
(for free software, for commercial shit, it would be something else). So, well,
let's keep on going total free software. No licence. Just free. Ok, forget it
all and do 7.
18:18 : ok, seems to work, but nothing is sure, should go try ft2 to see what's
going on with it. Well, a little difference from mikmod and soundtracker. In
ft2, the old volume is not put back after a 7 effect, so if we stop the tremolo
with a 0 volume but the old volume was 0x40, i'll keep 0 where mikmod and
soundtracker will put 0x40 back. ft2 does like me, so i keep with it. Surely
bugs in there, will need a real module to test (from Ripper ?). Ok, now effect
Argh ! just seen i forgot a break in the 6 effect in the switch. Damned, will
i one day code without making such shitty bugs ? Now, E4 (vibrato control).
Argh ! one other break forgotten for e6. Damned of damned.
18:26 : ok, e4 and e7 (tremolo control) done. A little test now...
18:33 : well, vibrato sounds not nice at all. Fuck it !
18:36 : ok, i handle it even if tick==0, as in mikmod. By the way, it's exactly
as in mikmod. But is it correct, this is another question...
18:44 : did same thing for tremolo, except i don't restore old volume at the
end, as ft2 does, unlike mikmod and soundtracker do. Now, break. Eat eat eat !
21:59 : ok, back from food, and from something we call "glandouille", here in
France. If you are wanting a specialist of the "glandouille", i have several
year of practice. I surely am one of the few specialists of this very specific
topic. Don't hesitate ! contact me now : sed_sed@my_dejanews.com. Of course,
because of the specificness of this speciality, my prices are not very low,
but you won't regreat it ! Ok, now 22:26, he, he, more "glandouille", i
practice a lot to keep the form. Well, let's finish the volume column effects.
Set vibrato speed and vibrato. Gonna do like mikmod. Still don't know if it's
good or not. And if you put two vibratos, one in the volumn and one in the
effect column, it surely won't be correct, but who the heck does that
(Ripper ?) ?
22:39 : ok, it's done, it compiles even if it looks ugly. Won't test it. It
works, i'm sure of it (in the mikmod manner, which is... what it is). Ok, to
totally finish the volume column, have to do tone porta. Gonna copy the other
porta. Once again, if you put a porta in the effect column at the same time,
it surely won't be correct, but who the heck except Ripper does that ?
22:46 : ok, coded. Won't test it either. Bored bored bored. Ok, volume column
over (except tone porta not finished, e31 to be done). 23:02 now. Well,
retrig ? Ok, retrig (e9).
23:21 : ok, done. Tested on walker.xm. Ripper used e90 after a e93 so it is
supposed to have saved the 3, where the doc says no memorisation, but Ripper is
the master and his wills are orders. Now, Rxx.
23:43 : ok, Rxx seems to work (walker.xm). Now, L effect. Sets both panning
and volume envelope position.
23:59 : ok, done something, not sure at all. Anyway, who uses that ? I have
no module to test it, so until i have one, it will be like for a lot of the
other effects, NOT SURE AT ALL !!!
00:03 : ok, done key off. Don't know what it is, so do as if it was a cut key
put at the given tick. Because effects are handled before envelopes, it should
be alright (if it means what i think it does). Ok, tremor ? Well, like in
mikmod, huh ?
00:23 : coded, compiled, but not tested. 00:29, well played a little with it
but as i don't know what it means... Well, 3 to finish and ED, EE. Well, one
other day, huh ? Bored of it all for now.
maison:~/c/xsoundtrack$ !wc
wc -l interface/*c interface/*h player/*c player/*h
824 interface/file_selector.c
809 interface/instrument.c
1327 interface/interface.c
54 interface/keyboard_definition.c
72 interface/main.c
902 interface/sample.c
541 interface/sample_moving.c
242 interface/screen.c
1495 interface/sub_instrument.c
2926 interface/sub_interface.c
2363 interface/sub_sample.c
19 interface/file_selector.h
20 interface/instrument.h
112 interface/interface.h
19 interface/keyboard_definition.h
20 interface/sample.h
20 interface/sample_moving.h
31 interface/screen.h
28 interface/sub_instrument.h
21 interface/sub_interface.h
38 interface/sub_sample.h
230 player/card.c
336 player/live_player.c
1412 player/mixer.c
267 player/wav.c
1218 player/xm.c
20 player/card.h
96 player/channels_def.h
13 player/debug.h
25 player/live_player.h
22 player/mixer.h
20 player/wav.h
310 player/xm.h
15852 total
- Ok
- maison:~/c/xsoundtrack$ date
Sun Jan 3 16:25:39 GMT 1999
Gonna do ED, EE, and then try to finish 3xx to have e31 right. ED first.
16:41 : ED done, seems ok.
16:57 : EE done, seems to work too.
Well, little remarks. This code fucks my head in that the documentation is not
clear about how to handle effects, so all this is done with "feelings", which
is not a good way to code, which turns me not very satisfied of what i do.
I don't like it at all. yes, the code is easy, it's not distributed
algorithmic (by the way, i started this program after a fucking experiment with
distributed algorithmic, very very hard to debug, so i wanted an easy task).
That really annoys me. Had to say. Now, try to do the 3xx with e31 stuff.
17:36 : well, in fact ee gave some troubles, because new_line did not change
line if in do_we_delay mode, and in the interface code, to reninitialize
stuffs, i do a lot of "line--; new_line();", expecting to return to the current
line, which was not the case if a ee was here, so had to add "do_we_delay=0"
everywhere. If my code was factorized, i would have to change it only once...
Well, it's now time for a bath, then food, so 3xx with e31 will wait a few.
20:44 : et hop ! Three hours for a little bath and some food, not too bad. The
King of the Glandouille is my name. Yop ! Ok, let's do this little stuff. 3xx
with e31. 21:20 : ok, played a little with soundtracker, to see. Well, i
crashed it, will have to report it to the author. If a 3xx appears with no
note before, crash if amiga frequencies table. Well, let's deal 3xx, at last !
23:31 : ok, portamento to note with e31 is done. I played a little with it
and it seems that portamento to note (with no e31) is bad with Xsoundtrack,
because both mikmod and soundtracker don't do the same (i go 3xx up then 3xx
down and then i replay the last note reached, and they have one different from
mine, lower, as if they did more ticks than i, damned, have to fix it). Well,
in fact it was not a bug, but i saved the module (that is a variation of
walker.xm from Ripper the great !) with amiga frequencies and my player only
deals with linear, so... if i save it linear, it's ok, the three player do the
same. Ouf ! Well, now i should do auto vibrato and fade out of an instrument.
Effect e5 misses too, but mikmod doesn't deal with it, so i don't know how to
handle it. And of course, misses an interpolated mixer and the choosing of
mix frequency, mono/stereo, 8b/16b, but this is little stuff (except auto
vibrato and fade out). Well, i will make a new release, and put mixer.c under
the GPL because of the ripping from mikmod. The rest remains total free software.
I did not improve the file selector (links are bad handled and choosing
the current dir by directly entering it must be done), but another time. I
concentrated myself on the player, i'm close to be over with it. Coool. Then,
i'll improve the interface. Code is now 16040 lines long. So, here is the
release.
* NEW RELEASE 0.0.4
Tomorrow, go to school to let the world download this wonderful program ! Oops, forgot to fix a little bug with a volume effect. Well, well, well, by the way, mikmod 3.0.3, from which i ripped, is NOT under the GPL, it's total free software or something equivalent (open source they say in licence.txt), so no GPL. Good. 16046 lines long code. - Ok
- Fri Feb 5 22:27:33 GMT 1999 Had a little bug. When no instrument is given with a note, don't have to set its volume to the instrument value. Sanx to v5.xm for clearly showing that. Wooo, one month with no change ! There is a lot to do anyway... Well, school, you know. And other projects that have a dead-line, so this has less priority. But i don't let it be !
- Ok
- Tue Feb 16 00:25:50 GMT 1999 Well, nothing new. Don't code a lot, spend too much time on IRCNet and MTPChat (the most underground chat in this world, address must keep secret, well telnet stu2.fil.univ-lille1.fr 4000, it works today, but maybe not the day you read this, i hate secrets). But, people are starting to play a little with Xsoundtrack, so i must think of making better distribution. So i changed the Makefile, to have a "distrib" entry. Just have to modify one define in there, then "make distrib" and here i am, a clean distribution. The Makefiles are not the same than my version of it, so it will be a little hard for someone else to work on it, but for now, no one started it, so not a big trouble (if one wants to code for Xsoundtrack, well, i can give him (her ?) what he (she ?) needs). Changed the TODO file too. Well, enough noise for today.
- Ok
- maison:~/c/xsoundtrack$ date Sat Feb 27 20:41:30 GMT 1999 Gonna work a bit on the interface, remove some bugs, so on. 20:57:57 : ok, added the version of the program in the menu window, symlinks are now followed in the file selector. Have to chdir when user is giving a name directly and having full file name of a saved file to avoid duplicating saved files if changing dir between two saves. 21:15 : chdir is done when escape the subwin0 and pressing Return. 22:06 : well, looked for a function giving full name of a file name. Not found. Will have to code it no, but where in the code ? and how ? Shit. Ok, to the end of interface/file_selector/init_file_selector. Now, find an easy way to do this. 22:40 : ok, done. I did a project last year in o'caml, where i had to do the same thing, simply ripped this o'caml code (translated in c), and here we go. Not sure if i free all what i have to, but it seems to work. Now, i will open /dev/dsp and /dev/mixer only when i play. Really important stuff. 23:43 : ok, it seems to work. I now open sound only when needed. Had a little bug when /dev/dsp was busy, i played notes, the prog. said to me no, then /dev/dsp was available, so i played some other notes, and the prog remembered the last not played (that it should have forgotten about). Well, a memset in close_live_player put it back ok. Well, well, well, have a fucking headache for now. Am ill once again, sleeped in a car at a demo-party (volcanic V), so what should happen happened... Well, enough noise for today.
ok:thursday 4 march, 23:00 about. A bug made that when i went out of a module, while playing another one, it called close_live_player, which closed the soundcard, and so the playing module became crazy. Well, had to close only if xm->mix!=0. Am i not a fucking bad coder ?
ok:Mon Mar 8 20:19:07 GMT 1999
gonna correct some warnings that pgcc gives when compiling Xsoundtracker (but
gcc doesn't complain). Pop / Optimum gave this to me (optimum.citeweb.net is
cool). So, there is "suggest explicit braces to avoid ambiguous `else'" at
some places. Let's go correct that.
Mon Mar 8 20:33:50 GMT 1999 : ok, removed. Introduced some useless braces.
I know how it works, you know, you lamer pgcc ! I know when i don't put brace
what's going on. I am not a AT&T C coder !
Hey ! it crashes pgcc (-O1, 2, 3, ...). I gonna try egcs (but first, build it).
ok:Tue Mar 9 19:20:46 GMT 1999 : well, well, well, a little bug made that when i run the prog, open a new module, and go record before doing anything else, i had a crash, because of a "i->current_xm->mix=0", while no current_xm existed, because we did not play anything... Damned. Fixed.
ok:Wed Mar 10 01:46:12 GMT 1999
Used it a little. Tried some effects and so on. Found a bug. When there was an
instrument with a 3xx effect, put the volume of the instrument. I did a -1
at the same time, and i didn't understand why mikmod & midas played the note
at the instrument volume. Well, i had to remove the instrument for it to work.
I did it alright, setting volume to instrument value only if instrument
present, except i did that after dealing with 3xx effect (so this code was
not run if 3xx). Hope it's correct now. I will have to rewrite the mixer, with
some asm, because it takes all the time, i profiled it. handle_one_datum, more
than 90% of the time with 1_ voices ! Crazy. Enough noise for now.
ok:Sun Mar 21 16:57:38 GMT 1999
Had a little bug in player/xm.c, did define TN, instead of including version.h.
Well, well, well. In correctiong the bug, i put another bug, so the saved
modules were wrong (because TN had to be 20 chars long, which was not the case).
Well, it fucked one module, so i had to change player/xm.c, and i rebuilded
all with debug to see where it crashed. But ! it did a getchar(), which i did
not remember, so i though the module was lost. Damned of damned. But the
module is finally not lost (TN was 19 chars long, so load the tracker name with
19 bytes instead of 20, and ok). Wooo, had a hot time, though i would have to
re-create the module. Maybe i should use the X selection stuff to be able to
cut/copy/paste patterns between != xsoundtrack running at same time ?
- Ok
- maison:~/c/xsoundtrack/interface$ date
Tue Mar 30 19:28:08 Local time zone must be set--see zic manual page 1999
Well, libc6, you know, by hand, so some troubles with date, hehe.
Today, i gonna finish instrument handling (a simple rip from mikmod, i
think). So, i gonna do auto vibrato and auto fade out.
ok, 20:56 : fadeout is done, absolutly not sure of the thing, should try
it with ft2, but don't want to boot DoS, so i'll let it as it is. Let's
deal with auto vibrato.
ok, 23:03 : vibrato seems to work, well i've got the vibrato values
than mikmod (oh yeah ?) but the output is not the same, fuck. Surely
a problem with the increment stuff. Nope, just found it. Simply don't
change the period of the channel, just sub vibval to it when getting
the increment. Well, now the output looks more like mikmod but not really,
the vibrato is not pretty, maybe the get_increment function to redo.
Gonna watch that now. Then, only ping-pong loop will miss.
ok, 00:40 (in fact, 01:40, we changed the time this week-end, damned,
fucking system, forgot to change my computer's clock) : ok, now i have
amiga frequence table and i calculate period and frequencies just as
mikmod does. I now have a bug with 0xx effect, damned, gonna fix it
(sanx again to Ripper for walker.xm, which pointed that out to me).
ok, 01:54 (ie 10 min after the previous one, let's jump to the real time) :
well, well, well, the bug is that i calculated a fixed value for the 0xx
effect, surely a typographical error, damned of damned, if i begin to do
this sort of buggy stuff, we are not arrived... Fixed now, works fine.
walker.xm seems to be played fine, with amiga frequence table, as it is.
Ripper is my god. Well, it's late, huh ? so i gonna sleep for now. I
should work for school, damned fuck. Had a report to give yesterday and i
only read 3 papers (should read something like 10 or more of them and write
30 pages about what they explain, ie coherence protocole in distributed
shared memory, why did i choose that, huh ?). Well, well, well, coding will
is back, good thing. I finally had a year of exclusion from the university,
but with "sursis" (french word), that means i am not really exclued, but if
i do another "betise", that's good for me. Well, school begins to really
suck, but what else to do ? i spend the last years in computer stuff, i
am condamned to continue. Fuck, i hate that. Computer is fun, sure, but
make money with that is absolutly absurd, when you know how unreliable it
is (software, communication protocoles, even hardware may behaves strange,
go read some cache coherence protocoles to laugh). We have theorems that
prove that, but you keep going this way. Absolute absurdity. Damned shit.
Enough noise, no ?
Code is now :
maison:~/c/xsoundtrack$ wc -l interface/*c interface/*h player/*c player/*h
904 interface/file_selector.c 809 interface/instrument.c 1340 interface/interface.c 54 interface/keyboard_definition.c 68 interface/main.c 903 interface/sample.c 541 interface/sample_moving.c 242 interface/screen.c 1495 interface/sub_instrument.c 2938 interface/sub_interface.c 2370 interface/sub_sample.c 19 interface/file_selector.h 20 interface/instrument.h 112 interface/interface.h 19 interface/keyboard_definition.h 20 interface/sample.h 20 interface/sample_moving.h 31 interface/screen.h 28 interface/sub_instrument.h 21 interface/sub_interface.h 38 interface/sub_sample.h 240 player/card.c 347 player/live_player.c 1825 player/mixer.c 267 player/wav.c 1233 player/xm.c 20 player/card.h 109 player/channels_def.h 13 player/debug.h 25 player/live_player.h 22 player/mixer.h 1 player/version.h 20 player/wav.h 313 player/xm.h 16427 total Well, next time, ping pong loop, then use select instead of the blocking way i do it for now (which sucks a lot), and now that i know how to have the X file descriptor... Then, i'll have to kick it up with some assembler (handle_one_datum is much too shitty done, all the mixer is shit in fact), so i'll can do some interpolation (i don't want to do it in C, it would be a horrible code). Then, back on the interface. Now, sleep.
- Ok
- maison:~/c/xsoundtrack$ date
Wed Mar 31 20:17:31 Local time zone must be set--see zic manual page 1999
Fuck, it's 21:17, forgot to change the time. Well, gonna make the ping pong
loop, then the select stuff. I have not to forget to change the live player,
should factorize the two mixers, huh ? Well, let's go.
21:42 (real time) : ok, ping pong loop is done, not sure if exactly correct,
especially with small samples, but... Now, gonna put all this stuff for the
live player.
22:17 (real time) : seems to work, both with live player and player. Not sure
if i have to fade out when i reach the end of the volume envelope, will have
to see how ft2 does that. Well, auto vibrato is not perfect. Hum... Let's go
with select stuff.
23:29 (real time) : well, never done select stuff. Before changing it all,
gonna watch if read/write from the sound card coupled with X file descriptor
works or not. Good, eh ? Well, had a bug with loop, i tested sh->sample_type==1
instead of sh->sample_type&1, because when 16b sample, it as bit 3 set, so
never ==1. Thanks to Hulud for using a lot of 16b samples in hotstuf.xm
letting me see that. Well, another bug in there. Damned. Sound volume does
not deal correctly, damned shit. Well, well, well, the line
" channels[i].volume=channels[i].sample->sample_volume;" was no more there !
Damned of damned. Always have backups, it is very useful. (Is it this fucking
libc6 that fucks all my system up or what the heck ?) Ok, seems to work fine
now. Well, long time without a release, huh ? So...
Code is now 16508 lines long. And...
* NEW RELEASE 0.0.5
Without select, but it will be in the next. And interpolation, and an assembler mixer. Gonna put this to school tomorrow. - Ok
- maison:~/c/xsoundtrack$ date Thu Apr 1 17:50:39 Local time zone must be set--see zic manual page 1999 About half an hour that i play with select, works fine. Now, integrate it in Xsoundtrack. ok: 20:36 : well, begins to work. Had some shitty bugs, for example i did a continue inside a for that was inside a while and the idea was to continue the while not the for, and of course it continued the for. Damned bug, very current (special dedicace to AT&T. Hackers Breakdown... Fuck da cops !). I did select when not handling all Event, and because Xlib reads as much as possible to the socket, of course, some Events where not handled directly, bad, huh ? Then, i had to XFlush at the draw_patterns, and i surely will have to do it at some other places too. So, in fact, it looks worse than what it was without select. But i prefer this way. Non blocking mode, better reaction of inputs, even if in 44100Hz 16b stereo you don't really see the difference, but if i do a 8000Hz 8b mono, it will be something different. Well, let this as it is. Take a "douche" (french word) then begin the assembly mixing stuff. ok: 22:59 : woo. It was long, huh ? Well, let's start this assembly stuff. Long time i did not code in asm. ok: 00:00 : well, just tried to do something clean with the Makefile. Think i gonna do 2 Makefiles and the one in the top dir asking the user to choose. All this because i want to let user choose between c or asm implementation, because of nasm usage, which might not be present... (intel syntax is what i learned, i master it, at&t is too obfuscate to me) ok : 02:07 : i've played a little with my structures, so now i can access them in assembler. The real thing will can begin soon. I used "__attribute__ ((packed))" to pack my structures. It works with egcs and gcc, so it should be alright. Lot of time for so little result, huh ? Sure, but i have to be sure of what i do, and now i am, i'll can code, as cleanly as i can, hopely. Well, time for a sleep, nope ? Yep. Enough noise.
- Ok
- maison:~/c/xsoundtrack$ date Sat Apr 3 21:09:07 Local time zone must be set--see zic manual page 1999 Well, well, well. Ultra very strange behavior of the frequencies tables. Only soundtracker seems to be ok. Midas is out of order, mikmod too, and so is Xsoundtrack. Damned, no good at all. Well, never mind, let's kick some asm, gonna fix it later. 22:16 : well, well, well, nope. I want it be fixed now. Gonna try ft2 to see how it does. Let's reboot. Shit. 22:48 : ok, well, seems that linear table is ok (seems only, will have to make deeper tests to be sure) but amiga is not. In ft2, it's the same frequencie, in Xsoundtrack, it a little higher. Bad, bad, bad. Gonna fix it, it must be like ft2. 23:05 : ok, it works fine with what's explained in xm.txt, except you have to multiply by 162, not 16 in the amiga period calculation. The problem with the previous method is that Mikmod calculates with int. With float, and a method almost equal, i've got good result. So, here I am. (Mikmod was right with 2
