21
Laitealue / Vs: Emolevy hajalla?
« Uusin viesti kirjoittanut Jtkone 21.11.25 - klo:22.33 »@nm, Kiitos jälleen kerran asiantuntijan lausunnosta.
Tarkoitan tuota POST kommenttia.
Tarkoitan tuota POST kommenttia.
Ubuntu 24.04.3 LTS | Lataa ja asenna | Tutustu yhteisöön | Blogi | Yritysten tarjoamat palvelut
Valmistajien tukemat Ubuntu-tietokoneet: kannettavatietokone.fi uudet ja käytetyt sekä Lenovo-verkkokauppa
Tarkoitan kielen peruskomentoja ja rakennetta: aritmeettisia ja loogisia operaatioita,...
Mitä tarkoitat C-kielen syntaksilla? Sitä kielen ydintä vai ml. standardikirjastoja vastaavia?
Mä ostin juuri Lenovon X260-läppärin 8G muistilla ja SSD-levyllä, 60€ tori_fistä. Ei kuulemma Win11 enää asentunut. Eli muutaman (nykyhintaisen) kahvipaketin hinnalla saa varsin käypäisen Linux-koneen.
Mielestäni ei olekkaan kysymys onko se kahvipaketin hintainen. Hienoa, että kaveri kuitenkin yrittää selvittää olisiko sillä kuitenkin jotakin käyttöarvoa.
@nm: miten muisit vaikuttaa biosiin? Eikös POST vasta nuo käy läpi l. pitäisi jo hiukan pitemmälle päästä?
Kirjoita C-kielinen ohjelma äänen kaappaamiseen muistipuskuriin Linuxissa. Toteuta komentorivivalitsin, jolla asetetaan kaapattavan äänen pituus sekunteina. Käytä lähdekoodissa englanninkielisiä tekstejä ja kommentteja.
#include <stdio.h>
#include <stdlib.h>
#include <alsa/asoundlib.h>
#define SAMPLE_RATE 44100
#define CHANNELS 1
#define FORMAT SND_PCM_FORMAT_S16_LE
int main(int argc, char *argv[]) {
snd_pcm_t *handle;
snd_pcm_hw_params_t *params;
int err;
// Default capture time = 1 second
int seconds = 1;
// Parse command-line argument
if (argc > 1) {
seconds = atoi(argv[1]);
if (seconds <= 0) {
fprintf(stderr, "Invalid duration: %s\n", argv[1]);
return 1;
}
}
printf("Capturing %d second(s) of audio...\n", seconds);
// Open default capture device
if ((err = snd_pcm_open(&handle, "default", SND_PCM_STREAM_CAPTURE, 0)) < 0) {
fprintf(stderr, "Unable to open PCM device: %s\n", snd_strerror(err));
return 1;
}
snd_pcm_hw_params_alloca(¶ms);
snd_pcm_hw_params_any(handle, params);
snd_pcm_hw_params_set_access(handle, params, SND_PCM_ACCESS_RW_INTERLEAVED);
snd_pcm_hw_params_set_format(handle, params, FORMAT);
snd_pcm_hw_params_set_channels(handle, params, CHANNELS);
snd_pcm_hw_params_set_rate(handle, params, SAMPLE_RATE, 0);
if ((err = snd_pcm_hw_params(handle, params)) < 0) {
fprintf(stderr, "Unable to set HW params: %s\n", snd_strerror(err));
snd_pcm_close(handle);
return 1;
}
// Calculate total samples & buffer size
size_t bytes_per_sample = 2; // S16_LE = 2 bytes
size_t total_samples = (size_t)SAMPLE_RATE * CHANNELS * seconds;
size_t buffer_size = total_samples * bytes_per_sample;
unsigned char *buffer = malloc(buffer_size);
if (!buffer) {
fprintf(stderr, "Memory allocation failed\n");
snd_pcm_close(handle);
return 1;
}
size_t frames_to_read = SAMPLE_RATE * seconds;
// Capture audio
ssize_t frames_read = snd_pcm_readi(handle, buffer, frames_to_read);
if (frames_read < 0) {
fprintf(stderr, "Read error: %s\n", snd_strerror(frames_read));
snd_pcm_close(handle);
free(buffer);
return 1;
}
printf("Captured %zd frames (%zu bytes) into memory.\n",
frames_read, buffer_size);
snd_pcm_close(handle);
free(buffer);
return 0;
}
sudo apt install libasound2-devgcc capture.c -lasound -o capture./capture 5