simple sound
Simple Sound for Small Devices 089m_20050905
Simple Sound for Small Devices (libsssd) is a simple cross-platform audio library. more>>
Simple Sound for Small Devices is designed as a very portable, cross-platform API for sound playback on small and embedded devices. Target platforms include smartphones, PDAs, Smart displays, webpads and embedded systems.
Target OSes include Linux (OSS/Free), Win32, WinCE/PPC/Smartphone, Symbian, and AmigaDE (both hosted and native). The library is biased toward real-time audio applications (like games), but is suitable for a wide array of other uses.
Installation:
To install the libsssd library, cd to the src direcotry and type make install
To make the demo applications, cd to the test directory and type make
Enhancements:
- Updated code to work with libsndfile 1.0.5
- Modularized each function for OSs that support tool libraries (AmigaDE)
- Added initAudio() and freeAudio() functions to allocate the control structure as different compilers may not pack the struct the same.
- Added support to init the audio player with different sample rates, bit depths, and channels (stereo, mono). Added support for user setting max number of playing channels and max number of cached samples at init time.
- fixed bug in player thread overflow functions (la,lb)
Simple Xmms Control 0.1
Simple Xmms Control is a a simple SuperKaramba theme that provides XMMS control. more>>
All suggestions are welcome!
Simple Metronome 0.4
Simple Metronome (simetro) is a console program that provides basic metronome functions and supports accent patterns. more>>
If all you want is a 100 bpm metronome, do this:
../simetro 100 9 | ecasound -f:s16,2,44100,i -i:stdin
A sightly fancier example would use simetro like this:
./simetro 240 6232
1st arg: 240 ticks per minute. 2nd arg: a string of one or more digits, possibly annotated with other non-digit characters. 0 is silent. 5 is medium. 9 is loud. The pattern 9099 means loud-rest-loud-loud. The example pattern, 240 6232, represents normally accented sixteenth notes at 60 beats per minute. The length of the second argument determines the length of the pattern.
Typical accent strings (second arg):
5, 73, 733, 8242, 8222, 832-632
For your convenience, you can add non-numeric characters (annotation) to the accent string. These characters are ignored by simetro. So 832-632 and 832632 are equivalent. The groove and military examples in the examples/ directory illustrate this. noaccent-100bpm is the simplest example. tabla is a fanciest example.
The first argument is "ticks per minute" so if you are representing your rhythm with one tick per beat, than the ticks per minute will be equal to the beats per minute. But if, for example, your ticks are 16th notes, then the ticks per minute will be four times the beats per minute.
There are two methods for hearing the output waveform.
1) Pipe the output to a realtime raw audio player.
2) Send the output to a file. Convert to WAV. Play WAV file.
Using Ecasound, you can do it like this:
./simetro 240 6232 | ecasound -f:s16,2,44100,i -i:stdin
This is probably the most practical configuration. Ecasound is good code and I recommend it. Or you can use some other program that can play an audio stream from stdin. Srp also works:
./simetro 240 6232 | srp > /dev/null
It starts immediately, does not create any files, and stops with CTRL-C. srp is part of my Simple Multitrack package which can be found at http://freshmeat.net/projects/simple-multitrack/ and runs on Linux/OSS and on Mac OS X. Other programs undoubtedly provide the same capability.
On Solaris 9, I use this bash command for realtime (but low quality) output:
alias rawplay="sox -t sw -r 44100 -c 2 - -t raw -r 8012 -u -b -c 1 /dev/audio"
./simetro 300 5222 | rawplay
If you want to make a file and play it (method 2), you can do this:
./simetro 240 6232 | dd bs=1024 count=10k > rawfile
sox -t sw -r 44100 -c 2 rawfile outfile.wav
sox is an audio format converter. You can get it here:
http://sox.sourceforge.net/
Please email your comments, suggestions, and bug reports to me. My email address is on my webpage: http://w140.com/kurt Please include the word simetro in your subject to skip the spam filter.
Enhancements:
- Rhythms can now be specified in a more convenient free-form syntax.
- It is easier to read and easier to write rhythms in the new syntax.
- More examples are included.
- Ecasound is used in the examples for sending the audio stream to the sound card.
Simple Backup 1.0
Simple Backup is a shell script to create basic backups using tar, grep, sed, and bash. more>>
Simple Backup works by using a file that contains the folders to be backed up and a file that contains expressions to exclude certain folders/files.
Usage: backup.sh < backuplist > < excludelist >
Free to use at your own risk. The author cant be held responsible for any side effects
of using this software. Use at your own risk.
Simple Spreadsheet 0.8
Simple Spreadsheet is a webbased spreadsheet program written in Javascript, HTML, CSS and PHP. more>>
Simple Spreadsheet features formulas, charts, numeric formats, keyboard navigation, etc. Javascript is used for the default data format and for the macros and formulas.
LJ::Simple 0.15
LJ::Simple is a Perl module to provide a simple OOP-based API for accessing the LiveJournal system. more>>
Main features:
- Log into LiveJournal
- Post a journal entry
- Edit a journal entry
- Delete a journal entry
Example
The following example posts a simple message into the test LiveJournal using the LJ::Simple::QuickPost method.
use LJ::Simple;
LJ::Simple::QuickPost(
user => "test",
pass => "test",
entry => "Just a simple entry",
) || die "$0: Failed to post entry: $LJ::Simple::errorn";
The next example shows how to post an entry into the test LiveJournal using the complete, object-based, interface:
use LJ::Simple;
my $lj = new LJ::Simple ({
user => "test",
pass => "test",
});
(defined $lj)
|| die "$0: Failed to log into LiveJournal: $LJ::Simple::errorn";
my %Event=();
$lj->NewEntry(%Event) ||
die "$0: Failed to create new entry: $LJ::Simple::errorn";
my $entry=SetMood(%Event,"happy")
|| die "$0: Failed to set mood: $LJ::Simple::errorn";
$lj->Setprop_nocomments(%Event,1);
my ($item_id,$anum,$html_id)=$lj->PostEntry(%Event);
(defined $item_id)
|| die "$0: Failed to post journal entry: $LJ::Simple::errorn";
XML::Simple 2.14
XML::Simple is a easy API to maintain XML (esp config files). more>>
SYNOPSIS
use XML::Simple;
my $ref = XMLin([< xml file or string >] [, < options >]);
my $xml = XMLout($hashref [, < options >]);
Or the object oriented way:
require XML::Simple;
my $xs = new XML::Simple(options);
my $ref = $xs->XMLin([< xml file or string >] [, < options >]);
my $xml = $xs->XMLout($hashref [, < options >]);
(or see "SAX SUPPORT" for the SAX way).
To catch common errors:
use XML::Simple qw(:strict);
HTML::Simple 0.4
HTML::Simple is a simple, dependency free module for generating HTML (and XML). more>>
SYNOPSIS
Note: It turns out that TOMC owns the HTML::Simple namespace so Ive moved development of this module to HTML::Tiny. Please use HTML::Tiny in preference to this module.
use HTML::Simple;
my $h = HTML::Simple->new;
# Generate a simple page
print $h->html(
[
$h->head( $h->title( Sample page ) ),
$h->body(
[
$h->h1( { class => main }, Sample page ),
$h->p( Hello, World, { class => detail }, Second para )
]
)
]
);
# Outputs
< html>
< head>
< title>Sample page< /title>
< /head>
< body>
< h1 class="main">Sample page< /h1>
< p>Hello, World< /p>
< p class="detail">Second para< /p>
< /body>
< /html>
DSI Sound Station 1.0
DSI Sound Station is broadcast software for everything related to audio and station management. more>>
DSI Sound Station is for broadcast radio and TV stations of all sizes. It provides hard-disk audio recording, an on-line newsroom, a disc/media cataloguer, and sales utilities (like contracts and invoices).
Simple Aggregator 1.1
Simple Aggregator is a web-based news aggregator. more>>
Enhancements:
- the backend is now ready for categories (planned for the next release)
- the feedsloader script now uses threads for much better performance
- the feedsloader script now periodically cleans up read entries
- the feedsloader script now traps feed encoding errors
- added OPML import and export for feeds
- moved CSS style sheets to a common external file
- small fixes mainly to the user menu links
JOpt Simple 2.3.2
JOpt Simple is a Java library for parsing command line switches, such as those you might pass to an invocation of javac. more>>
What command line switch syntax does JOpt Simple support?
As closely as possible, JOpt Simple attempts to adhere to the rules of POSIX getopt() and GNU getopt_long(). You can find a brief summary of these rules in the javadoc for class OptionParser.
Enhancements:
- Minor internal changes.
Blog::Simple 0.02
Blog::Simple is a Perl extension for the creation of a simple weblog (blogger) system. more>>
SYNOPSIS
use Blog::Simple;
my $sbO = Blog::Simple->new(); $sbO->create_index(); #generally only needs to be called once
my $content="
blah blah blah in XHTM"p"
Better when done in XHTM"p""; my $title = some title; my $author = a.n. author; my $email = anaouthor@somedomain.net; my $smmry = blah blah; $sbO->add($title,$author,$email,$smmry,$content);
$sbO->render_current(blog_test.xsl,3); $sbO->render_all(blog_test.xsl);
$sbO->remove(08);
Sound 1.4
Sound lets you mathematically create sounds in Java. You define your sounds in terms of 16-bit linear code for the waveform, -- an array of samplings. The U_Law.class will then convert that to (or from) *.AU mu-law 8-bit encoding format which you can then play with AudioPlayer.player.start(bis) in an application or with Applet.getAudioClip in an Applet. This is just a sample program. You would insert your own mathematical functions. more>>
Sound - Sound lets you mathematically create sounds in Java.
You define your sounds in terms of 16-bit linear code for
the waveform, -- an array of samplings. The U_Law.class will
then convert that to (or from) *.AU mu-law 8-bit encoding
format which you can then play with
AudioPlayer.player.start(bis) in an application or with
Applet.getAudioClip in an Applet.
This is just a sample program. You would insert your own mathematical
functions or cannibalise parts of the code.
Use winzip to extract U_Law.java and Sound.java with
folder names into the commindprodsound directory.
java com.mindprod.sound.Sound
Enhancements:
Version 1.4
add pad and icon
System Requirements:<<less
Simple Blue 11-08-2006
Simple Blue is a modified Sunergos Blue theme with user list. more>>
Lightweight (SVG), elegant, works with all languages and widescreen.
3D Spatialization of Sound
3D Spatialization of Sound is a Linux/X11 port of the 3D spatializer library from the CRC. more>>
This program creates "directional" stereo sound from mono source. CRC folks told me I shouldnt have raised the sampling frequency without adjusting other stuff.
Oh well. This was a proof-of-concept type project anyway. I think to get correct 3D effect, you need to drop sampling rate back to 11025.
To Build the X11 implementation:
1. make
2. cp audio-filter /usr/local/bin
3. mpg123 -m -s some_music.mp3 | audio-filter | aplay -S -s 44100 -f s16l -
audio-filter is implemented as a filter, it reads signed 16 bit mono input at 44100 khz from stdin, and outputs signed 16 bit stereo, 44100 khz output to stdout. You can replace mpg123 with any sound source generating signed 16 bit 44100 khz mono signal. "aplay" is a sound player utility which comes with ALSA linux sound driver. You can use "play" from the sox package, or "ampctl", or any other sound player that would read 44100 khz, signed 16 bit stereo raw data from stdin. For "sox" play script, you would replace "aplay" command line with "play -c 2 -f s -r 44100 -s w -t raw -"
If everything is good, a 640x480 window will come up, with some cryptic writing on the top, a filled circle with an arrow pointing right, and a empty circle slightly to the right of the circle with arrow.
NOTE, that just like in the original Windows implementation, the axiss are reversed. The arrow on the "head" is pointing "forward". So, in the default startup configuration, the sound is located in front of the listener. Moving the sound source "up" moves it to the left of the listener, and "down", to the right. You can visualize this well if you turn your monitor 90 degrees counter
clock wise.
The filled circle with an arrow is your "head"
The empty circle is the "sound source"
You can move the "sound source" around by clicking the mouse at any position in the window, or by clicking on the "sound source" circle, and dragging it to the desired position. Soundfield will be dynamically updated as you do this.
You can move the "head" by moving the mouse to desired position, and right-clicking. The "head" icon will move to the new position and soundfield will be updated.