cwbe coordinatez:
809096
3220824
5639138

ABSOLUT
KYBERIA
permissions
you: r,
system: public
net: yes

neurons

stats|by_visit|by_K
source
tiamat
K|my_K|given_K
last
commanders
polls

total descendants::9
total children::3
3 ❤️


show[ 2 | 3] flat


||0
ddd1
tak po neviemakej dobe som sa dostal k processingu trochu - kedze bol dovod. nejako pomaham pri jednom projekte kde sa chcu hrat s interaktivnym 3d zvukom (neprogramatori)

tak som si robil volajaky vyskum kade tade a .. prisiel som k "zazraku" openAL - je to principialne nieco ako openGL len pre audio. problem je trochu akurat v tom ze to chce HW podporu karty (nuz, ano je to vymysel creativelabs, takze plnu HW podporu to ma len na ich kartach) alebo sa to da ej emulovat na sw urovni - existuje soft openAL (pre widly a lunexy)

taakze oprasil som z policky svoju staru audigy a napchal to do pocitadla a znovu ju rozbehal

do processingu existuje sice kniznica toxiclibs a ta podporu openAL (teda jej javovu implementaciu ma).

zopar hacikov to malo... mat openAL dllka v systemovom foldri nie je dobry napad. treba ich mat pri joal jarkach aby to islo z nejakeho divneho dovodu.
dalsia podla openAL SDK sa akykolvek efekt/pozicia identifikuju cez id sourcu, ktore generuje program. ked som kukal do zdrojakov joalu tak mi prislo az zle ako to robi.. pokial sa generuje samostatny source tak co... kazdemu to spravi rovnake id takze nejako rozdelit efektovanie a ulozenie v priestore n na niekolko nezavislych sourcov je celkom peklo, ale nakoniec som to vyriesil, so zakladnym prototypom OALUtil (od tvorcu toxiclibs) ktory som nasiel na forach processingu, a pozerani sa do zdrojakov joal som si bol schopny vyrobit funkcnu vec, s dvoma aux slotmi do ktorych zvuky mozem uplne nezavisle posielat, a cele sa to zvukovu hybe v 3d priestore..

takto vyzera samotny zvukovy particle system (skusal som to zatial len na sluchatkach, ale funguje to celkom dobre, som zvedavy na 5.1 sustave co to povie)



import net.java.games.sound3d.*;
import net.java.games.joal.*;
import net.java.games.joal.util.*;

OALUtil audioSys;
Source[] audioLoop;
Particle[] particles;
int numParticles = 32;
String[] fls;
Listener user;
boolean lines = false;
int w = 500;
int h = 500;

int prevposx=0;
int prevposy=0;
void setup() {
size(h,w);
background(0);
audioSys = new OALUtil();//inicializacia audiosystemu
println(audioSys.alcIsExtensionPresent());
particles = new Particle[numParticles];
audioLoop = new Source[numParticles];
fls=new String[numParticles];
for(int i=0;i {
fls[i]="c:/processing/ringfire/ringoffire/"+(i)+".wav";//pole s nazvami wavov, aby fungoval 3D zvuk je potrebne aby to boli mono vavy
particles[i] = new Particle();
particles[i].x = random(w);
particles[i].y = random(h);
particles[i].vx = random(-1, 1);
particles[i].vy = random(-1, 1);
}
try {
audioLoop=audioSys.loadSources(fls,numParticles);//natiahnem si zvukove sourcy
}
catch (Exception e)
{
e.printStackTrace();
}

int[] effects = new int[2];
audioSys.al.alGenEffects(2, effects, 0);//vyrobim dva efekty -
audioSys.al.alEffecti(effects[0], AL.AL_EFFECT_TYPE, AL.AL_EFFECT_ECHO);
audioSys.al.alEffecti(effects[1], AL.AL_EFFECT_TYPE, AL.AL_EFFECT_RING_MODULATOR);

int[] effectslots = new int[2];//vytvorim si dva send sloty - moja zvukovka aj tak viac nezvlada
audioSys.al.alGenAuxiliaryEffectSlots(2, effectslots, 0);


//priradim efekty do slotov
audioSys.al.alAuxiliaryEffectSloti(effectslots[0], AL.AL_EFFECTSLOT_EFFECT, effects[0]);
audioSys.al.alAuxiliaryEffectSloti(effectslots[1], AL.AL_EFFECTSLOT_EFFECT, effects[1]);

//nastavim sloty aby gain bol automaticky vzhladom na polohu zvuku v priestore
audioSys.al.alAuxiliaryEffectSloti(effectslots[0],AL.AL_EFFECTSLOT_AUXILIARY_SEND_AUTO, AL.AL_TRUE);
audioSys.al.alAuxiliaryEffectSloti(effectslots[1],AL.AL_EFFECTSLOT_AUXILIARY_SEND_AUTO, AL.AL_TRUE);

//ponastavujem si zvukove sourcy
for(int i=0;i {
audioLoop[i].setLooping(true);
audioLoop[i].setGain(0.2);
audioLoop[i].setReferenceDistance(width/200);//referencna velkost pre spocitanie v priestore
audioLoop[i].setVelocity((particles[i].vx),(particles[i].vy),0f);//inicialna rychlost sourcu
audioLoop[i].setPosition(particles[i].x,particles[i].y,0);//inicialna pozicia
audioSys.al.alSource3i(i+1, AL.AL_AUXILIARY_SEND_FILTER, effectslots[0], 0, AL.AL_FILTER_NULL);//poslanie sourcu do aux1
audioSys.al.alSource3i(i+1, AL.AL_AUXILIARY_SEND_FILTER, effectslots[1], 1, AL.AL_FILTER_NULL);//poslanie sourcu do aux2
//ako prvy parameter by malo byt id(poradie) sourcu, ale z nejakeho mne zatial zahadneho dovodu musi byt realne o jednu vyssie aby to ozaj fungovalo
}
user = audioSys.getListener();
fill(50,255,0);
ellipse(width/2,height/2,30,30);
user.setPosition(width/2,height/2,0);//umiestnim posluchaca do priestoru
user.setGain(1);
for(int i=0;i {
audioLoop[i].play();//postpustam zvuky
}
}

void draw()
{
for(int i=0;i {
//vykreslim graficku a zvukovu reprezentaciu "particlu"
particles[i].move();
audioLoop[i].setPosition(particles[i].x,particles[i].y,0);//pozicia zvuku - pre zmiesavanie
audioLoop[i].setVelocity(particles[i].vx,particles[i].vy,0f);//rychlost zvuku - pouziva ju zvukovka pre pocitanie doppleru ked zmiesava zvuk
particles[i].render();
}
//vykreslim si listenera
ellipseMode(CENTER);
fill(50,255,0);
ellipse(width/2,height/2,30,30);
}

public void stop() {
if (audioLoop[0] != null) {
audioLoop[0].delete();
audioLoop[0] = null;
}
if (audioSys != null) {
audioSys.cleanup();
audioSys = null;
}
}

mno a toto su potrebne kniznice (ako dalsie taby v processingu)

samotny ovladaci audioengine


import javax.sound.sampled.UnsupportedAudioFileException;

class OALUtil {

public AL al;
private ALC alc;
int[] uiFilter;
public OALUtil() {
uiFilter =new int[1];
uiFilter[0]=0;

try {
initOpenAL();
}
catch (ALException e) {
throw new RuntimeException("OpenAL could not be initialized: "
+ e.getMessage());
}
}

private void initOpenAL() throws ALException {
AudioSystem3D.init();

alc = ALFactory.getALC();
al = ALFactory.getAL();

ALCdevice device;
ALCcontext context;
String deviceID;

// Get handle to default device.
device = alc.alcOpenDevice(null);
if (device == null) {
throw new ALException("Error opening default OpenAL device");
}

deviceID = alc.alcGetString(device, ALC.ALC_DEVICE_SPECIFIER);
if (deviceID == null) {
throw new ALException(
"Error getting specifier for default OpenAL device");
}

System.out.println("Using device " + deviceID);

// Create audio context.
context = alc.alcCreateContext(device, null);
if (context == null) {
throw new ALException("Can't create OpenAL context");
}
alc.alcMakeContextCurrent(context);

if (alc.alcGetError(device) != ALC.ALC_NO_ERROR) {
throw new ALException("Unable to make context current");
}
}

public void cleanup() {
ALCcontext curContext;
ALCdevice curDevice;

curContext = alc.alcGetCurrentContext();
curDevice = alc.alcGetContextsDevice(curContext);
alc.alcMakeContextCurrent(null);
alc.alcDestroyContext(curContext);
alc.alcCloseDevice(curDevice);

al = null;
alc = null;
}

public Buffer loadBuffer(InputStream is) throws UnsupportedAudioFileException, IOException {
Buffer[] buf = AudioSystem3D.generateBuffers(1);
WAVData wd = WAVLoader.loadFromStream(is);
buf[0].configure(wd.data, wd.format, wd.freq);
return buf[0];
}

public Buffer loadBuffer(String fileName) throws IOException, UnsupportedAudioFileException {
return AudioSystem3D.loadBuffer(fileName);
}
public Source[] loadSources(String[] stream,int sources) throws UnsupportedAudioFileException, IOException {
Buffer[] buf = AudioSystem3D.generateBuffers(sources);
Source[] src;
src=new Source[sources];
src=AudioSystem3D.generateSources(sources);

for(int i=0;i {
WAVData wd = WAVLoader.loadFromFile(stream[i]);
buf[i].configure(wd.data, wd.format, wd.freq);
src[i].setBuffer(buf[i]);
}
return src;
}
public Source loadSource(InputStream stream) throws UnsupportedAudioFileException, IOException {
return AudioSystem3D.generateSource(loadBuffer(stream));
}
public Listener getListener() {
return AudioSystem3D.getListener();
}

public Source createSource(Buffer buffer) {
return AudioSystem3D.generateSource(buffer);
}
public void addFilter()
{
al.alSourcei(0, ALConstants.AL_DIRECT_FILTER, 0);
}
public Boolean alcIsExtensionPresent()
{
ALCcontext curContext;
ALCdevice curDevice;
curContext = alc.alcGetCurrentContext();
curDevice = alc.alcGetContextsDevice(curContext);
return alc.alcIsExtensionPresent(curDevice,"ALC_EXT_EFX");
}
public int createFilter(int filtertype, float gain, float gainlimit) {

int filters[] = new int[1];
al.alGenFilters(1, filters, 0);

al.alFilteri(filters[0], AL.AL_FILTER_TYPE, filtertype);
al.alFilterf(filters[0], filtertype, gain);
al.alFilterf(filters[0], filtertype, gainlimit);

return filters[0];
}
public void deleteFilter(int filter) {

al.alDeleteFilters(1, new int[] {
filter
}
, 0);
}
}


a class particlov (niekde na nete najdeny)

class Particle
{
public float x = 0;
public float y = 0;
public float vx = 0;
public float vy = 0;
public float k = .03;
public boolean lines = true;
public color col = color(255, 255, 0, 20);
private float grav = 0;
private float angle = 0;
public void Particle()
{
}

public void move()
{
float dx = mouseX - x;
float dy = mouseY - y;
float dist = sqrt(dx*dx + dy*dy);
angle += .05;
if(dist < 100)
{
float tx = mouseX - dx / dist * (cos(angle) * 50 + 50);
float ty = mouseY - dy / dist * (sin(angle) * 50 + 50);
vx += (tx - x) * k;
vy += (ty - y) * k;
}
else
{
float force = 2000 / (dist * dist);
vx += force * dx / dist;
vy += force * dy / dist;
}
vx += random(-1, 1);
vy += random(-1.5, 1.5);
vy += grav;
vx *= .95;
vy *= .95;
x += vx;
y += vy;
if(x > w)
{
x = w;
vx *= -1;
}
if(x<0)
{
x = 0;
vx *= -1;
}
if(y > h)
{
y = h;
vy *= -1;
}
if(y < 0)
{
y = 0;
vy *= -1;
}
}

public void render()
{
stroke(col);
strokeWeight(5);
if(lines)
{
line(x, y, x-vx, y-vy);
}
else
{
point(x, y);
}
}
}


When I sleep, I dream too much




00809096032208240563913805650166
VirtualVoid
 VirtualVoid      15.11.2010 - 16:37:07 , level: 1, UP   NEW
...
pics or it didnt happen :))

0080909603220824056391380565016605650546
drakh
 drakh      15.11.2010 - 21:12:10 , level: 2, UP   NEW
pics su len vizualny trace polohy zvuku :) treba mat sluchatka a pocuvat :)

When I sleep, I dream too much

008090960322082405639138056501660565054605650605
VirtualVoid
 VirtualVoid      15.11.2010 - 21:40:12 , level: 3, UP   NEW
...
ojojo, len som neprisiel na to ako to skompilovat :)) dotnetak wys :D

00809096032208240563913805650166056505460565060505650765
drakh
 drakh      15.11.2010 - 23:04:05 , level: 4, UP   NEW
sak co kompilovat?
http://processing.org stiahnes processing
http://kcat.strangesoft.net/openal.html totok ak nemas audizi/xifi ci inu hw openal zvukovku
http://hg.postspectacular.com/toxiclibs/wiki/Home kniznice do procesingu
a openal kniznice
http://climpxwss01.creativelabs.com/openal/Downloads/Forms/AllItems.aspx

tie openal kniznice musis mat v tom istom foldri ako java openal jary z toxiclibs = audioutils.
a vlastne toxiclibs ani nepotrebujes, postaci ti priamo java openal
https://joal.dev.java.net/

When I sleep, I dream too much

00809096032208240563913805639181
acidmilk
 acidmilk      08.11.2010 - 22:35:17 , level: 1, UP   NEW
sprav nieco kvadrofonicke
uz davnejsie som chcel s tym experimentovat, ale nemam tolko reprakov =)

0080909603220824056391380563918105639191
drakh
 drakh      08.11.2010 - 22:42:43 , level: 2, UP   NEW
ja to skusam len na beznych sluchatkach zatial, ale vystup pojde bud na 5.1 sustavu, alebo tym nakrmime co ma beyerdynamic "5.1" sluchadlovy system (to je tiez riadna picovina, stereo sluchatka, napojene na dsp kartu ktoru bud analogovo alebo digitalne krmis 5.1 zvukom, a ona to zmiesava do sterea na zaklade room modelu, a otocenia hlavy - ma to na sebe sonary ktorymi to snima a potom pannuje, ale picovina riadna - sluchatka su fajn tam to vsak zacina a konci)

When I sleep, I dream too much

008090960322082405639138056391810563919105847268
Weaponized Cringe
 Weaponized Cringe      23.02.2011 - 17:05:00 , level: 3, UP   NEW
picovina lebo to nefunguje dobre / zly ten room model?...alebo?
(mne prijde ze dobre sluchatka by mali byt na toto idealne - 2 sluchatka bezprostredne na dvoch usiach / cisty zvuk neovplyvneny akustikou izby kde clovek je...

00809096032208240563913805639181056391910584726805847356
drakh
 drakh      23.02.2011 - 18:01:12 , level: 4, UP   NEW
no, ked je zapnuty headtracker tak je to uplne mimo.. vobec nesedi zvuk priestorovo, uplne divne to mixuje do toho sterea. pokial vypnem headtracker tak vysledok je porovnatelny akymkolvek softverovym mixovanim 5.1 do sterea. akurat to oproti beznej zvukovke menej sumi

00809096032208240563913805639174
tachykardia
 tachykardia      08.11.2010 - 22:29:41 , level: 1, UP   NEW
rozhodne to bude Ľubozvučné :)