LINUX.ORG.RU

Сообщения Drdiesel

 

Идеи

Кому не лень напишите о своих, на ваш взгляд хороших, но не реализованных по к-либо причине идеях разработки ч-либо...

Drdiesel
()

изучение CL

захотелось изучить лисп.поставил себе emacs, изучил его более менее, поставил slime. начал читать вот это http://lisper.ru/pcl/variables уже треть прочел, но от чтения и опробования примеров особого удовольствия не получаю, присутствует какое то чувство неудовлетворенности, как будто чего то не хватает. Также по ходу возникает много вопросов, хочется как «на деле» опробовать свои знания, но ничего в голову не приходит. Может, еще что то посоветуете почитать или стоит пока потерпеть?

Drdiesel
()

генту. не работает звук

alsaconf ничего не обнаруживает, в ядре все собирал модулем. не могу понять, почему не работает

Drdiesel
()

Gothik 3

Кто запускал под вайном? Какие костыли нужны? у меня никак не хочет работать...

Drdiesel
()

Дилема

В общем суть вопроса такова. Вопрос касается учебы :) Как вы считаете, лучше учить матан, сдавать на 4-5 всякую экологию, философию, твимс, или это время тратить на изучение языков, что нить кодить, админить и т.д. собсна, чем я сейчас и занимаюсь. Красный диплом или опыт?

Drdiesel
()

LISP

чем лучше например LispWorks или Allegro CL, чем например SBCL?

Drdiesel
()

советы how to make блог

Хочу написать многофункциональный блог с кучей всяких фич. Здесь хочу услышать основные аспекты, которыми нужно руководствоваться при написании. Мнения, статьи, факты) Так же, я не определился на чем лучше писать, какие средства использовать. Выслушаю всех)

Drdiesel
()

QFtp рекурсивный просмотр

нужно на ftp сервере рекурсивно пройтись по директориям. написал примерно такой алгоритм

func(QString subdir)
{
ftp->cd(subdir)
QList = listofdir();

foreach (QString i, QList)
{
  func(i);
}
toParentDir();

но возникает проблема. когда я в цикле вызываю функцию, как я понял, он не ждет ее завершения и вызывает другую и получается что в функции, которая вызывает раньше не успевает проработать toParentDir() и все рушится... Подскажите, как делать правильно?

Drdiesel
()

Qt QTreeView

Такой вопрос: имеется QTreeView* tree, как из из него при клике на директорию/файл получить полный путь к директории/файлу в виде строки?

Drdiesel
()

Чтение звукового потока, преобразование (фурье мб) и графический вывод

В общем, стоит задача преобразования звукового потока таким образом, чтобы его можно было вывести графически, хоть в консоли, хоть гуетой, в общем, чтобы можно было смотреть частоты)) Буду рад любой помощи, кто может мне немного подробнее это расталковать, и практическим примерам, канечно. Сами преобразования найти не сложно, меня интересует, как это все можно связать и как использовать

Drdiesel
()

Программирование, ALSA

всем привет! Недавно захотел написать свой гитарный тюнер, для чего решил использовать Alsa. но уже с первых шаговых я в ступоре! Моя ОС gentoo, дрова и библитеки вроде бы собрал, но почему то ничего не могу скомпилировать. ни один пример ни с интернета, ни с сайта alsa. например вот это

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sched.h>
#include <errno.h>
#include <getopt.h>
#include <alsa/asoundlib.h>
#include <sys/time.h>
#include <math.h>
static char *device = "plughw:0,0"; /* playback device */
static snd_pcm_format_t format = SND_PCM_FORMAT_S16_LE; /* sample format */
#define METHOD SND_PCM_ACCESS_RW_INTERLEAVED
static unsigned int rate = 44100; /* stream rate */
static unsigned int channels = 2; /* count of channels */
static unsigned int period_time; /* period time in us */
double freq1 = 440; /* sinusoidal wave frequency in Hz */
double freq2 = 440; /* sinusoidal wave frequency in Hz */
short c1 = 0, c2 = 0, A1 = 32700, A2 = 32700;
int size;
static int verbose = 0; /* verbose flag */
static snd_output_t *output = NULL;
double dtime(){
    struct timeval ct;
    struct timezone tz;
    gettimeofday(&ct, &tz);
    return (ct.tv_sec + ct.tv_usec/1e6);
}
static int xrun_recovery(snd_pcm_t *handle, int err){
    if (err == -EPIPE) { /* under-run */
        err = snd_pcm_prepare(handle);
        if (err < 0)
         printf("Can't recovery from underrun, prepare failed: %s\n", snd_strerror(err));
        return 0;
    } else if (err == -ESTRPIPE) {
        while ((err = snd_pcm_resume(handle)) == -EAGAIN)
         usleep(1); /* wait until the suspend flag is released */
        if (err < 0) {
         err = snd_pcm_prepare(handle);
         if (err < 0)
         printf("Can't recovery from suspend, prepare failed: %s\n", snd_strerror(err));
        }
        return 0;
    }
    return err;
}
static int write_loop(snd_pcm_t *handle_o){
    double time0, time, _2pi = 2.*M_PI;
    unsigned char tmp;
    int i, s1, s2, _ss;
    snd_pcm_sframes_t err;
    double rnd1, rnd2, rate;
    time0 = dtime();
    char *rdata = (char *) malloc(size);
    _ss = size / 4;
    rate = period_time / _ss;
    short *data = (short*) rdata;
    snd_pcm_nonblock(handle_o, 1);
    while(1){
        time = dtime() - time0;
        for(i = 0; i < _ss; i+=2){
            s1 = c1+A1*cos((time+((double)i)*rate)*_2pi*freq1);
            s2 = c2+A2*cos((time+((double)i)*rate)*_2pi*freq2);
            if(s1 < -32700)    data[i] = -32700;
            else if(s1 > 32700) data[i] = 32700;
            else data[i] = s1;
            if(s2 < -32700)    data[i+1] = -32700;
            else if(s2 > 32700) data[i+1] = 32700;
            else data[i+1] = s2;
        }
        err = snd_pcm_writei(handle_o, rdata, size);
        if (err < 0)
            err = snd_pcm_recover(handle_o, err, 0);
        if (err < 0){
            printf("snd_pcm_writei failed\n");
            break;
        }
    }
}
int main(int argc, char *argv[]){
    snd_pcm_t *handle_o;
    int err, morehelp;
    snd_pcm_hw_params_t *hwparams_o;
    snd_pcm_sw_params_t *swparams_o;
    snd_pcm_uframes_t frames;
    unsigned int chn, val;
    if(argc==2) freq1 = freq2 = atof(argv[1]);
    else if(argc == 3){
        freq1 = atof(argv[1]);
        freq2 = atof(argv[2]);
    }
    printf("Playback device is %s\n", device);
    printf("Stream parameters are %iHz, %s, %i channels\n", rate, snd_pcm_format_name(format), channels);
    printf("Sine wave rate is (%.4f/%.4f)Hz\n", freq1, freq2);
    if ((err = snd_pcm_open(&handle_o, device, SND_PCM_STREAM_PLAYBACK, 0)) < 0) {
        printf("Playback open error: %s\n", snd_strerror(err));
        return 0;
    }
    snd_pcm_hw_params_alloca(&hwparams_o);
    snd_pcm_hw_params_any(handle_o, hwparams_o);
    snd_pcm_hw_params_set_access(handle_o, hwparams_o, METHOD);
    snd_pcm_hw_params_set_format(handle_o, hwparams_o, format);
    snd_pcm_hw_params_set_channels(handle_o, hwparams_o, 2);
    val = 44100;
    snd_pcm_hw_params_set_rate_near(handle_o, hwparams_o, &val, &err);
    frames = 128;
    snd_pcm_hw_params_set_period_size_near(handle_o, hwparams_o, &frames, &err);
    printf("set period size = %d: %s\n", frames, snd_strerror(err));
    err = snd_pcm_hw_params(handle_o, hwparams_o);
    if (err < 0) {
        printf("unable to set hw parameters: %s\n", snd_strerror(err));
        exit(1);
    }
    snd_pcm_hw_params_get_period_size(hwparams_o, &frames, &err);
    size = frames * 4;
    snd_pcm_hw_params_get_period_time(hwparams_o, &period_time, &err);
    printf("Period size: %dx4, period time: %d\n", frames, period_time);
    if (verbose > 0){
        snd_pcm_dump(handle_o, output);
    }
    snd_pcm_prepare(handle_o);
    err = write_loop(handle_o);
    if (err < 0)
        printf("Transfer failed: %s\n", snd_strerror(err));
    snd_pcm_close(handle_o);
    return 0;
}

или вот здесь http://www.alsa-project.org/alsa-doc/alsa-lib/examples.html ошибки компиляции примерно такие: /home/diesel/Projects/tuner/main.cpp:30: undefined reference to `snd_pcm_prepare'

объясните, люди добрые, чего я не догоняю или помогите

Drdiesel
()

RSS подписка на новые темы