SoundFactory

+-[ Main ][ Products ][ Contact us ][ Download ][ Links ][ FuNlAnD ]-+

[ Main ]
- Programmers diary -
[ Screenshots ]
[ Demos ]
25-Jul-1999 (FR)
Remodelled the buffersystem to use semaphores. It's just the functions for buffer maintenance that make use of it tonight. Had some minor problems but they were mostly typos.

24-Jul-1999 (FR)
I read about Semaphores today and began adding Semaphore checks to most functions. For those of you not knowing what a Semaphore is it's like a key to some information. The task that demands access must wait for his turn untill the data is not accessed by others. He then has his semaphore (key) and noone but he may touch the data. There are also shared semaphores which let other to get shared access.

Anyways... the semaphoring is needed for the fact that SoundFactory is soon to be multithreaded and several tasks will be accessing the same data simultaneously and therefor this kind of semaphoring is needed.


22-Jul-1999 (FR)
I got myself to work with Sound Factory. It has probably something to do with the press releases from Amiga Int...

I fixed a bug which Björn mentioned. When the user select something and then Cuts the two gadgets with the Range From and Range To wasn't updated.

I also scrapped the AHI player... if noone is gonna help me with AHI I won't use it. It shouldn't be so hard to implement a simple soundplayer.

I made another (I haven't told you about the first one... trust me... this the second) draft concerning the interface with external modules. You can read it here if you find it interesing and maybe want to comment. Nothing is final here...


11-Apr-1999 (FR)
I finished the CDBE-routines mentioned earlier. It should now be able to do it all. Well.. almost finished. Multiuser-access could lead to a race as there are no locking of the linked lists. Also it will probably get implemented as a library. Anyways when I get to it next time I feel that the main kernel (sounds cool, ehh?) of SoundFactory needs some attention.

19-Mar-1999 (FR)
After some time of not working on SoundFactory (I have started to educate myself and that takes a lot of my time. I'm exhausted when I get home) I finaly got myself to code a bit. I started on some of the core functions in SoundFactory. A way of working with data larger than the physical RAM. Some might call it Virtual Memory... I don't. Caching disk-based editing is closer to what it is. That's one feature I don't like with the editors I've seen before. Either they can't handle data larger than free RAM or they rely on external virtual memory handlers (like SoundForge) which is totally wrong in this case. My method is rather simple and therefor hopefully quite fast.

26-Feb-1999 (FR)
I noticed that I pushed a LOT to the stack. Storm has a default-stack when running the programs of 30k. And when I got some mysterious errors I checked the function last edited. Found nothing strange and then suspected the stack. Hey I was defining large arrays and structs that was put on the stack. After making a lot of it static and dynamicaly allocated the stack usage was down but to increase the executable filesize a few Ks.

28-Feb-1999 (FR)
It has taken some time to redesign the page (again). This time from scratch and using the wonderful HSC. I wasn't satisfied with the old one but this design I'm quite pleased with.

I fixed a bug in the samplelayout function. I just moved the multiplies in front of the divisions. a/b*c is not the same as c*a/b when working with integers. By moving it around it worked just fine with 64 channels. I got so exited about it that I grabbed it (with some effort) and you can peek at how it looks like working with 64 channels on the Screenshots page.

I also added menus to the most of the windows (aren't many) so that the user may be able to access the most fundamental functions (Load, Save, Quit, etc.) at all times.

One thing that also found it's way was two neat gadgets which shows the range's start and end positions. They are integer-gadgets and allows the user to alter the range by typing the position.


18-Feb-1999 (FR)
I toyed with AHI today. Minor problems. Soon SoundFactory is loud and clear. I also peeked on BOOPSI. Stunning! I'm actually considering to do the whole GUI in BOOPSI. But that may be a little too far outside of my knowledgeframe right now. It's needed though to make imagebuttons. Anyway. First things first. I've come to a point where there are not so much left on the main module (command module?). A few editthings. A way to select fileformat and some generic menubuilding functions and it should be time to hack on an API for external modules and start poking the effects etc.

15-Feb-1999 (FR)
Grab of the rawfile info window After a couple of days fighting with GadTools about several things in the GUI for the RAW-file loader. You who are reading comp.sys.amiga.programmer have probably read about my problems. Anyway. After some time I got it right and then coded the acutal loader. It loads and converts on the fly. You can let it convert to another samplesize while loading so that you f.ex. directly can edit it in 16-bit although it was 8-bit on disk. As (some of) you can see on the picture here I've also added 'Pitch' to the bufferproperties. This to allow regeneration (with our software synthesizer) in different samplerates but keeping the pitch. 8SVX also supports pitch (In samples per cycle).

You may wonder why we've decided to make the GUI with GadTools. Two reasons: Speed and Simplicity (for the user that is). It's ment to be hard on the programmer to make it easy for the user. That's the way life goes... unless you cheat with MUI, ClassAct etc. One question. How large percentage of your windows need to be scalabe? Very few (listviews are often nice to scale).


12-Feb-1999 (FR)
After copying and modyfying the 8SVX Saver to a AIFF Saver (the formats are somewhat similar) I discovered a way to increase loading and saving speed with Audio IFF files. When there are just one channel the data is loaded in one big chunk. Nice, Bice! =).

11-Feb-1999 (FR)
I finally got the Network Interface Card I'd ordered. I had some troubles mounting it in my amiga as I've put my A1200 motherboard into a tower and the PCMCIA-card didn't have room enough to fit I had to unmount my motherboard and put it on the floor to make it all patch together. After some hysterical reactions from my mom (it's a kinda horrifying sight for a mom to see her sons motherboard all ripped out ;-) ) I got it all working very nicely, though. I also compiled the latest GLib and GTK on my Linux-box to be able to run the latest x11amp. I also discovered ShoutCast and made a script to play live mp3 radio of the net using HTTPResume and mpega (mpega.library). You should try it ;-).
I coded an IFF 8SVX saver today and it worked like a charm. It also converts other samplesizes to 8-bit on the fly (poor fly), if needed. Not much too it. I forgot to mention it earlier but I've now implemented a few fields in the bufferinfo. Name, Author, Copyright and Annotation. They are all just strings which are saved along with the files. When AudioIFF Save, RAW Load/Save is implemented I want to implement Play so I can be able to listen to the sounds we make.

10-Feb-1999 (FR)
By chaning one single line in the sources and renaming a few files the temporary name SoundScape is from now on changed to SoundFactory. We have searched for a better name for quite some time now and it will take some time to get used to the new name. Anyways... I modified the Audio IFF loader a bit and implemented a generic IFF loader which then calls upon the corresponding function when the type has been determined (Audio IFF, 8SVX etc). I haven't implemented it yet but the IFF can hold several "files" (actually FORMs) in one file. In the future a file will be able to contain f.ex. 5 different sounds and will be loaded as they were separate files (but with the same filename). Also IFF 8SVX has some support for several octaves. They will also be loaded as separate files. After implementing RIFF WAVE (*.wav in Microsoft OSes) I wonder if there are more formats worth supporting. A few external import-modules will be made for Trackermodules (Sound-/Noise-/ProTracker, OctaMED (MMD*) and probably MPEG Audio via mpega.library by Stephane Tavenard. Hmm... will probably be usefull with some possibility to save too =).

09-Feb-1999 (FR)
After a few days of "vacation" from SoundFactory I started coding a memcopy function which all other functions needing to copy data from one buffer to another will use. It copes with multiple channels too. It also copes with different samplesizes (8, 16 & 32 bits) and number of channels. This function is now used in Cut, Copy and Paste and worked from the first try and on. I also updated the viewer to Björn's requests. When there are less samples than pixels across the window two options are now available. 1. Draw lines between the points and therefor make it look very smooth, 2. Draw horisontal lines making the sound look "stairstepped". Both options have their advantages and disadvantages.

06-Feb-1999 (FR)
Multiple channels in action 19:45
I have now adapted the sampleviewer and range to work with multiple channels. However the cut, copy and paste functions got too messed up when trying to adapt them so they don't copy the data correct. As my brain now is overloaded I need a pause and will continue later.

16:50
Weeeeeeeee! I nailed the bug mentioned before. I accidently skipped every second byte in memory when loading. Boy, I'm glad! =)

05-Feb-1999 (FR)
Spent half the day (the later half) trying to track down the bug which comes up when files with several channels are loaded. No luck. Will have to dig some more tomorrow. I'm really tired! My folks are awakening me too early (==noon).

04-Feb-1999 (FR)
With the clipboard now almost functional (doesn't convert from different samplesizes (8, 16, 24 & 32 bits) yet) I started poking around with the fileloader. It now recognises Audio IFF. However this gave some peculiar results in the sampleviewer. It worked just fine with both 8-bit and 16-bit data... but when I slammed in a stereo-file it only showed half the file on screen =(. I once found it great to interleave the channels. Now I'm sceptic. In files it's however nice. I'll make it store the channels separatly in memory.

03-Feb-1999 (FR)
Added copy and paste (is just about to test it...) aswell as a clipboard (the Cut just deleted the data before). Forgot to mention it yesterday that Björn gave me a hint that he wanted to be able to save the entire "desktop" (in the lack of a better word... worktop?) into one file. During the day (I work at nights =) ) I dug into the IFF specs. and found that IFF CAT is just what he wanted and allows to have several chunks of data into a single file. He thought he wanted to be able to save in OctaMed format... HA! Think again! =). A possibility to export to MMD1 will probably be made though.

02-Feb-1999 (FR)
The 18-Jan-1999 I actually started coding this baby and uptil now the following has been done: Main shit (open screens, fonts etc), simple fileloading (just loads RAW 8-bit samples), some sort of buffer allocation (keep lists of buffers in memory), pieces of the sample-editor (view, range and cut currently implemented). Björn also told me today that he already started writing the manual. I'm also translating the strings in SoundFactory to swedish (which is my native language) as I insert them. This will save me a lot of work later on as this program WILL be big when ready (I hope anyways ;-) ).


Maintained by Fredrik Rambris. . Hits: