Skip to content

Commit

Permalink
Release Spectrum3D v2.0.1
Browse files Browse the repository at this point in the history
* general changes : sound file can now be preloaded (ie analysed and displayed) before beeing played, or can still be analysed and displayed while playing (as it was already before); also sound can be recorded and loaded as an audio_file; the sdl-gl window can now be resized at any size on the fly;
* main.c : SDL window is now built at the start of Spectrum3d and destroyed when Spectrum3d quits, as well as callback for managing events in sdl window and callback to display harmonics; SDL window can now be resized on the fly at any size;
* main.c : many changes regarding the Gtk user interface : some buttons have been added, some were changed, some were removed and several have been moved to menu;
* display : display_spectro() and display_paused_spectro() have been merged in one function;
* gstreamer.c : in playFromSource(), the different parts have been merged in one part;
* typesource.c : created to manage the type of audio source, including the selection of an audio file and its preloading;
* events.c : events are managed with SDL_PollEvent only; resize and scroll events have been added; key events have been changed somehow;
* menu.c : many things from the GUI were moved here including perspective (i.e. 2D or 3D), scale commands (text, lines, pointer), and other;
* preferences.c : many unnecessary item have been removed;
* spectrum3d.h : created to host Spectrum3d-specific structures;

---
filename: 'spectrum3d-2.0.1.tar.gz'
sha256: '63d3951af387d6e1e9f5d500fa680cca8e55c344a1f587899eda48ea893f68ff'
...
  • Loading branch information
Bernard Victor Delvaux committed Jan 27, 2012
1 parent fa7e2ed commit 2d93be4
Show file tree
Hide file tree
Showing 44 changed files with 2,616 additions and 1,943 deletions.
18 changes: 12 additions & 6 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@

2011-12-22 Bernard Victor Delvaux <nadaeck@hotmail.com>
Version : Spectrum3d-1.1.1 :
* mainwindow.c : some code regarding jack have been put between #ifdef/#endif;
* configure.ac : --disable-jack and --disable-geis that were not working have been fixed thanks to Valentino Dell'Aica's help;
* src/Makefile.am : config.h has been removed from 'spectrum3d_SOURCES' since it is already created from config.h.in in configure.ac;
2012-01-27 Bernard Victor Delvaux <nadaeck@hotmail.com>
Version : Spectrum3d-2.0.0 :
* general changes : sound file can now be preloaded (ie analysed and displayed) before beeing played, or can still be analysed and displayed while playing (as it was already before); also sound can be recorded and loaded as an audio_file; the sdl-gl window can now be resized at any size on the fly;
* main.c : SDL window is now built at the start of Spectrum3d and destroyed when Spectrum3d quits, as well as callback for managing events in sdl window and callback to display harmonics; SDL window can now be resized on the fly at any size;
* main.c : many changes regarding the Gtk user interface : some buttons have been added, some were changed, some were removed and several have been moved to menu;
* display : display_spectro() and display_paused_spectro() have been merged in one function;
* gstreamer.c : in playFromSource(), the different parts have been merged in one part;
* typesource.c : created to manage the type of audio source, including the selection of an audio file and its preloading;
* events.c : events are managed with SDL_PollEvent only; resize and scroll events have been added; key events have been changed somehow;
* menu.c : many things from the GUI were moved here including perspective (i.e. 2D or 3D), scale commands (text, lines, pointer), and other;
* preferences.c : many unnecessary item have been removed;
* spectrum3d.h : created to host Spectrum3d-specific structures;

2011-10-13 Bernard Victor Delvaux <nadaeck@hotmail.com>
Version : Spectrum3d-1.1.0 :
Expand Down
6 changes: 0 additions & 6 deletions Makefile.am
Original file line number Diff line number Diff line change
@@ -1,13 +1,7 @@
SUBDIRS = src data doc

#ACLOCAL_AMFLAGS = -I m4

.PHONY: INSTALL

#install-data-hook:
# mkdir -p $(HOME)/.$(PACKAGE)
# chown $(LOGNAME) $(HOME)/.$(PACKAGE)

uninstall-hook:
rm -f $(HOME)/.$(PACKAGE)/spectrum3d.pref

9 changes: 1 addition & 8 deletions Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,7 @@ POST_UNINSTALL = :
subdir = .
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(top_srcdir)/configure AUTHORS COPYING \
ChangeLog INSTALL NEWS compile config.guess config.sub depcomp \
install-sh missing
ChangeLog INSTALL NEWS compile depcomp install-sh missing
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
Expand Down Expand Up @@ -667,14 +666,8 @@ uninstall-am:
uninstall-hook


#ACLOCAL_AMFLAGS = -I m4

.PHONY: INSTALL

#install-data-hook:
# mkdir -p $(HOME)/.$(PACKAGE)
# chown $(LOGNAME) $(HOME)/.$(PACKAGE)

uninstall-hook:
rm -f $(HOME)/.$(PACKAGE)/spectrum3d.pref

Expand Down
89 changes: 51 additions & 38 deletions README
Original file line number Diff line number Diff line change
@@ -1,29 +1,27 @@
SPECTRUM 3D: 3D AUDIO SPECTRUM ANALYSER IN REAL TIME

Spectrum 3D dispays a 3D audio spectrogram in real time; the source can be either the microphone or an audio file or optionally jack (jack-audio-connection-kit). Optionally, it supports multitouch gestures from touchscreen and touchpad. Optionally also, the audio stream can be run in realtime even if Jack is not used. It is build with the Gstreamer, SDL, OpenGl, GTK+-2.0 and uTouch-Geis free libraries and is under GPL license. It is written for Ubuntu but should work for other Linux distributions except maybe for the multitouch abilities (the uTouch library use is not yet very common).

If you want multitouch support, you should read the notes at the bottom of the page. A tutorial is provided in the 'Doc' directory.
Spectrum 3D dispays a 3D audio spectrogram in real time; the source can be either the microphone or an audio file; it is also possible to record a file and to have it analysed; so analysis can be done done on the fly (harmonics are displayed while the audio file is beeing played), or before the file is beeing played (in that case, the analysis of the whole will be performed and displayed, then the file can be played afterwards). It is compatible with jack (jack-audio-connection-kit). Optionally, it supports multitouch gestures from touchscreen and touchpad. Optionally also, the audio stream can be run in realtime even if Jack is not used. It is build with the Gstreamer, SDL, OpenGl, GTK+-2.0 and uTouch-Geis free libraries and is under GPL license. It is written for Ubuntu but should work for other Linux distributions except maybe for the multitouch abilities (the uTouch library use is not yet very widespread).

*******************
| INSTALLATION: |
*******************

1. dependencies:
""""""""""""""""
FOR UBUNTU 10.10 and 11.04 : All dependencies are available in the Ubuntu repositories.
FOR UBUNTU from 10.10 : All dependencies are available in the Ubuntu repositories.

- gcc, pkg-config, automake;
- libgtk+-2.0-dev;
- lidsdl1.2-dev and libsdl-ttf2.0-dev;
- lidsdl1.2-dev;
- libgstreamer0.10-dev;

- gstreamer0.10-plugins-bad, gstreamer0.10-plugins-bad-multiverse, gstreamer0.10-plugins-ugly et gstreamer0.10-plugins-ugly-multiverse (for reading files such as mp3);

For JACK support :
- libjack-dev (for jack1) or libjack-jackd2-dev for jack2; note that you don't need to have the 'jackd' package installed, but only the '-dev' library;
- (optional) libjack-dev (for jack1) or libjack-jackd2-dev for jack2; note that you don't need to have the 'jackd' package installed, but only the '-dev' library;

For multitouch support (touchscreen and also for multitouch touchpad from Natty):
- libutouch-geis-dev version 2. For Ubuntu Oneiric Ocelot (11.10), use the packages from repositories. For Ubuntu Natty Narwhal (11.04), the repositories version will work, but filtering on number of touches won't work (Bug#769859 in libutouch-geis); to solve this you need a version of uTouch-geis that is at least 2.1.0; you can have it either by installing the '.deb' packages from Oneiric repositories (type in a terminal 'sudo apt-get build-dep libutouch-geis-dev', then install 'libutouch-geis1' first, then 'libutouch-geis-dev'), or by compiling the latest version from source (https://launchpad.net/utouch-geis); if you compile from sources, you can type in a terminal 'sudo apt-get build-dep libutouch-geis-dev' to have all dependecies installed. For Ubuntu Maverick (10.10), do not use the repositories version; use the solutions proposed for Natty. I don't know if multitouch support can easily be implemented in Ubuntu Lucid Lynx (10.04) or earlier.
- (optional) libutouch-geis-dev version 2. For Ubuntu Oneiric Ocelot (11.10), use the packages from repositories. For Ubuntu Natty Narwhal (11.04), the repositories version will work, but filtering on number of touches won't work (Bug#769859 in libutouch-geis); to solve this you need a version of uTouch-geis that is at least 2.1.0; you can have it either by installing the '.deb' packages from Oneiric repositories (type in a terminal 'sudo apt-get build-dep libutouch-geis-dev', then install 'libutouch-geis1' first, then 'libutouch-geis-dev'), or by compiling the latest version from source (https://launchpad.net/utouch-geis); if you compile from sources, you can type in a terminal 'sudo apt-get build-dep libutouch-geis-dev' to have all dependecies installed. For Ubuntu Maverick (10.10), do not use the repositories version; use the solutions proposed for Natty. I don't know if multitouch support can easily be implemented in Ubuntu Lucid Lynx (10.04) or earlier.

FOR OTHER DISTRIBUTIONS :
For the other distributions, the dependencies should be very similar. Only the multitouch features maybe won't work since uTouch-Geis has been build for Ubuntu. However, the uTouch Suite (including uTouch-Geis) starts beeing ported in other distributions such as Gentoo (https://sabotageandi.wordpress.com/2011/04/20/utouch-gentoo/) or Fedora. More info on this in the documentation directory.
Expand All @@ -32,7 +30,7 @@ FOR OTHER DISTRIBUTIONS :
"""""""""""""""""""""""""""""""""
1) in a terminal, go to the directory where the sources are; for example, if the source package is in the HOME directory :

cd ~/spectrum3d-the-actual-version (if the sources are in the '/home/victor' directory);
cd ~/spectrum3d-<the-actual-version> (if the sources are in the "home" directory);

2) type :

Expand Down Expand Up @@ -68,59 +66,77 @@ will install the executable 'spectrum3d' file in '/usr/bin' directory instead of
| USE |
*********

Run it from a terminal by typing :
Type in a terminal :

spectrum3d

or from the 'Menu->Applications->Sound & Video'
or run it from 'Menu->Applications->Sound & Video->Spectrum3d'

From the graphical interface, you can play/pause or stop playing. For audio files, you can seek forward or backward (5 seconds by 5 seconds); selection of multiple audio files is possible.
The 2 most important things to do first are :
- to select the type of audio source : either microphone or audio file;
- set if analyse will be done in real time or not : if 'analyse in real time' is checked, harmonics will be retrived and displayed on the fly, while the sound is beeing played; if 'analyse in real time' is unchecked, harmonics of the whole audio file will be retrived and displayed first, then the file can be played afterwards. When source is set to microphone and 'analyse in real time' is unchecked, recording can be made; it will be analysed and displayed like for an audio file; similarly it can be also played afterward.

You can play a test sound which is a sine wave from 1 to 20000 Hz.
Selection of multiple audio files is not possible anymore. The 'reload' button allows to reload (i.e. analyse and display its harmonics) whithout reselecting the file.

You can display a new window that commands different filters :
- a 10 bands equalizer; the filtered frequencies and its range can be adjusted (any values); the amplification goes from -72dB to +36dB;
- a band-reject or band-pass filter;
If 'Use JACK' is checked, everything explained above can be done with Jack (Jack-Audio-Connection-Kit).

Audio source can be microphone, audio file or jack (if you have enabled JACK support). You can change the speed of refreshing of the display. You can show a window that allows to control an equalizer and a band-pass (BP) or band-reject (BR) filter. For the BP/BR filter, you can set the lower and upper frequencies. For the eqalizer, you can adjust the gain (from -72dB to +36dB); for each band, you can change the frequency (from 20 to 20000 Hz) it works on and its the bandwidth (from 0 to 20000 Hz).
A new window that commands different filters can be displayed :
- a 10 bands equalizer; the filtered frequencies and their range can be adjusted; the amplification goes from -72dB to +36dB;
- a band-reject or band-pass filter;

The lowest displayed frequency is 0 Hz by default, and it can be increased. The default range is 2000 Hz. It can be decreased to 40 Hz or raised to 20000Hz. To change this, you can either change it by using the 'Range of Display' scale, or increase it by changing the factor that is on its right : this factor multiplies the frequency range. The smallest possible step between 2 analyzed and displayed frequencies is 2 Hz.

You can choose between 3 types of view : - a 3D view that shows frequency, intensity and time; It is possible to rotate or translate the display along the X, Y and Z axis, either by keyboard commands, or by mouse (+/- keyboard) commands, or by touch gestures (if enabled). All the analyzed values are kept in memory, wich implies that even if zoom or perspective changes, any value can be retrieved at any time, even when playing is paused.
From the menu :
* you can choose between 3 types of view : - a 3D view that shows frequency, intensity and time; It is possible to rotate or translate the display along the X, Y and Z axis, either by keyboard commands, or by mouse (+/- keyboard) commands, or by touch gestures (if enabled). All the analyzed values are kept in memory, wich implies that even if zoom or perspective changes, any value can be retrieved at any time, even when playing is paused.
- a 2D 'flat' view : that shows time versus frequency; the intensity however is represented by the amount of red colour;
- a 3D 'flat' view that is somehow a compromise between the two previous views.

The perespective can be reset, set to a 'front' view (frequency versus intensity), or set to values preset by the user. The text can be displayed or not, as well as the line scale. A 'pointer' can be displayed, showing a location on the scale and its exact numerical value as well as the intensity of the frequency (fot the 3D view).
* the perespective can be reset, set to a 'front' view (frequency versus intensity), or set to values preset by the user. The text can be displayed or not, as well as the line scale. A 'pointer' can be displayed, showing a location on the scale and its exact numerical value as well as the intensity of the frequency (fot the 3D view).

* you can chose to display text and lines or not and also a pointer that will point to a specific frequency; it will display it frequency value, and for the 3D perspective its intensity value;

* you can play a test sound which is a sine wave from 1 to 20000 Hz;

You'll find below a summary of the keyboard, mouse and gestures commands. You can also find a summary of this in the menu, at the 'Help'->'Shortcuts' and 'Gestures Shortcuts' items. From the 'Edit'->'Preferences' menu, you can specify : the width of the displaying window (700 to 1200 pixels), the path of the font beeing used, the coordinates of the preset position of the graph, the color of display ('rainbow' option make the color to change so that the differents 'layers' can be distinguished), wether you want Spectrum3d to run in realtime mode (and if so, choose beween SCHED_RR or SCHED_FIFO policy, and set priority). All those preferences are kept in a 'preferences' file that is created at first use of Spectrum3d and placed in the home directory : ~/.spectrum3d/spectrum3d.pref. Everytime Spectrum3d starts, it check some values of this 'preferences' file for consistency; if out of range value is found, a new 'preferences' file with default values is created.
* you can set, in 'preferences' :
- the distance between frames : the biggest this value is, the 'deeper' the image will go;
- the number of displayed frames, the biggest this value is, the 'deeper' the image will go and the mor cpu will be used;
- the interval of time (in milliseconds) between each refreshing of the display; the smallest this value will be, the nicer the display will look, but the more demanding it will be on the cpu; every change in this will require Spectrum3d to be restarted to be effective;
- the color of the display (when analyse in real-time is selected);
- wether you want that the actual display is saved as preset;
- the interval of time (in milliseconds) between each new analysis of the spectral data; as for display, the smallest this value will be, the more demanding it will be on the cpu; this value should match the interval of time between 2 displays for better display but this is not mandatory;
- wether you want Spectrum3d to run in realtime mode (when JACK is not used); if so, you can choose beween SCHED_RR or SCHED_FIFO policies, and set the priority; please see important note at hte end of this file.

All those preferences are kept in a 'preferences' file that is created at first use of Spectrum3d and placed in the home directory : ~/.spectrum3d/spectrum3d.pref. Everytime Spectrum3d starts, it check some values of this 'preferences' file for consistency; if out of range value is found, a new 'preferences' file with default values is created.


You'll find below a summary of the keyboard, mouse and gestures commands. You can also find a summary of this in the menu, at the 'Help'->'Shortcuts' and 'Gestures Shortcuts' items.

KEYBOARD AND MOUSE SHORTCUTS :
""""""""""""""""""""""""""""""
Some commands are possible by keyboard or keyborad and mouse combination. Every mouse commands are done with the left click.
Some commands are possible by keyboard or keyborad and mouse combination.

Command Keyboard Mouse (+/-keyboard)
================================================================================================================================
Play/pause Space bar
Stop Escape
Rotate around X axis Up/dowm Mouse up/down
Rotate around Y axis Right/left Mouse right/left
Rotate around Z axis 'c' + Up/down 'c' + mouse up/down
Translate along X axis 'x' + left/right 'x' + mouse right/left
Translate along Y axis 'y' + up/down 'y' + mouse up/down
Translate along Z axis 'z' + up/down 'z' + mouse up/down
Increase/decrease Gain 'g' + up/down 'g' + mouse up/down
Change starting
of the zoom 's' + up/down
Move pointer up/down SHIFT + right/left
Rotate around X axis Up/dowm Left Click + Mouse up/down
Rotate around Y axis Right/left Left Click + Mouse right/left
Rotate around Z axis SHIFT + Up/down Left Click + scroll up/down
Translate along X axis CTRL + left/right Right Click + mouse right/left
Translate along Y axis CTRL + up/down Right Click + mouse up/down
Translate along Z axis CTRL + SHIFT + up/down Right Click + mouse up/down
Increase/decrease Gain 'g' + up/down
Move pointer up/down 'q' + right/left
Move pointer up/down
fast SHIFT + CTRL + right/left
Read small 50 msec
samples of a paused
audio file 'v' + left
fast 'a' + right/left
Show/hide text 't'
Show/hide lines 'l'
Show/hide pointer 'p'
Reset view 'r'
Front view 'o'

GESTURES COMMANDS :
"""""""""""""""""""
Some commands are possible by keyboard or keyborad and mouse combination. Every mouse commands are done with the left click.

Command Gesture
=======================================================================
Expand All @@ -132,9 +148,6 @@ Translate along X axis 2 fingers Right/left
Translate along Y axis 2 fingers Drag Up/dowm
Translate along Z axis 2 fingers Pinch

PREFERENCES :
"""""""""""""


*********************
| IMPORTANT NOTES |
Expand Down
Loading

0 comments on commit 2d93be4

Please sign in to comment.