Programação de pedais digitais

Autor Mensagem
nichendrix
Veterano
# jun/14
· votar


Ismah
Cara genericamente é assim. Humanamente é possível perceber que uma válvula reage bem diferente de sua simulação (e não entremos nos méritos da discussão).

Isso não é sempre um fato. Por exemplo, o Amp Farm é um plug in pra Pro Tools que é conhecido por enganar a maioria das pessoas que são renomadas por reconhecer timbres de valvulados. O MMI, por exemplo, tem um Kemper Profiling Amplifier, é um amplificador que funciona por modelagem digital de sinal, além de já vir com o som de diversos amplificadores clássicos, ele dá a opção de você ligar um amplificador a ele e ele fazer a análise e chupar toda a curva de resposta desse amplificador e criar um modelo digital que você pode gravar como um preset.

Já fiz alguns teste como ele com vários amps, em especial com os amps que o proprio MMI tem, que incluem Mesa/Boogie, Hughes&Kettner, Fender, Polytone, entre outros. E todos sairam muito fieis, eu notei algumas diferenças no som em relação a alguns amps quando ele é ligado direto em linha, mas quando o som passa por um power, não dá pra notar fica muito próximo dos amps originais. No caso dos amps do MMI, a gente testou o som dos amps dele modelado no Kemper, ligados direto no power dos amps, aí a diferença basicamente some.



Aqui vai o link pro review que ele fez aqui pro fórum.

http://forum.cifraclub.com.br/forum/10/306257/

Agora é um equipamento relativamente caro, não é absurdamente caro, mas vai o preço de um cabeçote Mesa/Boogie. Por exemplo, ele é considerado melhor que o Axe FX da Fractal Audio que é considerado um simulador que já chega bem perto de ficar igual aos originais.

Bog
Veterano
# jun/14
· votar


Ismah
é possível perceber que uma válvula reage bem diferente de sua simulação (e não entremos nos méritos da discussão).

Mas eu não fiz qualquer afirmação sobre isso. Uma simulação soar diferente do circuito simulado não significa que ela faz todas as guitarras soarem iguais entre si. Não existe relação entre as duas afirmações.

Alex guitar man
Veterano
# jun/14
· votar


Cara genericamente é assim. Humanamente é possível perceber que uma válvula reage bem diferente de sua simulação (e não entremos nos méritos da discussão).
Ismah


Realmente, nunca coloquei amps reais lado a lado pra comparar, muito menos testei grandes amps famosos, mas é sim possivel perceber, na verdade, creio que até um pedal analogico responde melhor que uma simulação, não que ela seja ruim, mas a dinamica, sabe.. é outra coisa..

Por exemplo, o guitar rig 5 que é muito bom e usado por guitarrista famosos na gravação de CD, eu não me sinto confortavel, tenho a impressão que não so eu que to tocando, a resposta...

Bom, mas não vamos desvirtuar o topico em analogico vs digital


Bog

Quanto tempo!! Lembra de mim e minhas duvidas? rsrs

nichendrix
Veterano
# jun/14
· votar


Alex guitar man
Realmente, nunca coloquei amps reais lado a lado pra comparar, muito menos testei grandes amps famosos, mas é sim possivel perceber, na verdade, creio que até um pedal analogico responde melhor que uma simulação, não que ela seja ruim, mas a dinamica, sabe.. é outra coisa..

Cara, na boa, tudo depende pra caramba, já toquei em Fuzz e distorção digital que é melhor que a maioria dos analógicos de baixo e até alguns de médio custo que já vi. Eu não acho que analógico responda melhor que digital quando você compara as coisas na mesma faixa de qualidade.

É como a comparação de amp SS com valvulado, que dizem que sempre valvulado é melhor, que distorção de SS não presta, etc. Só que a maioria das pessoas que diz isso quer comparar Meteoro com Fender, Mesa/Boogie, etc. Pega um Pritchard ou um Polytone ou um Lab Series, que são amps SS tão caros quanto a maioria dos valvulados de marca famosa e alguns até tão caros quanto valvulados de boutique, e você vai ter uma comparação justa. Aí você entende porque o B.B. King trocou os Fender pelos Lab Series SS (aquela distorção linda com sustains quase infinito dele é a distorção de um amp transitorizado, nem é canal drive é a distorção do clean do amp), porque a esmagadora maioria dos guitarristas de jazz prefere Polytone a qualquer Fender para som limpo. Você vai ver amps como os Pritchard que vão ter um som distorcido que não deve nada a nenhum Fender e ainda dão um clean tão bom quanto um Polytone.

Por exemplo, o guitar rig 5 que é muito bom e usado por guitarrista famosos na gravação de CD, eu não me sinto confortavel, tenho a impressão que não so eu que to tocando, a resposta...

Aqui reside 90% da diferença de qualidade de som entre analógico e digital, SS e Valvulado, etc. No fator psicológico, isso guitarrista tem muito mais que a maioria dos outros instrumentistas.

Ismah
Veterano
# jun/14
· votar


nichendrix

Realmente os digitais estão cada vez mais complexos. Ouvir esse polytone de 85 mostra o quanto evoluímos, mas no sentido oposto ao progresso.



Culpa do grunge e seus pensamento minimalista?! Ou de fato estávamos (meio estranho me incluir numa época que nem existia) exagerados nos anos 70 e 80?
__________________________

Enfim, voltando aos circuitos digitais, e as fórmulas...

Pergunto aos especialistas: é viável desenvolver e fabricar pedais desse tipo em casa?

É verídico que pra programar basta um computador, o programa certo e conhecimento para... Mas para colocar isso no DSP, a tal "interface" USB mencionada acima é acessível aos meros mortais?

Bog
Veterano
# jun/14
· votar


Ismah
Mas para colocar isso no DSP, a tal "interface" USB mencionada acima é acessível aos meros mortais?

Sim. Você pode comprar development kits que já vêm com uma plaquinha cheia de interfaces montadas para o DSP, além de um compilador adequado. O preço desses kits varia bastante, acho que os mais baratinhos custam em torno de uns 100 dólares.

pedrolake
Veterano
# jun/14
· votar


SIM, hoje VC pode usar alem do DSP, tecnologias Como Arduino, Raspberry Pi. Da uma olhada no aliexpress ten kits a partir de 15 dolares

Alex guitar man
Veterano
# jun/14
· votar


nichendrix

Que guitarra é essa do video que voce postou pro ismah?

Que modelo de corpo é esse? é a primeira do video, testada com o marshall

Bog
Veterano
# jun/14
· votar


Alex guitar man

Só olhando o screenshot, deve ser uma PRS.

pedrolake

Nossa, barateou bastante! As plaquinhas que eu usava ficavam na faixa dos 250 dólares!

pedrolake
Veterano
# jun/14
· votar


È para lo-fi e med-fi caiu mas dsp achei para o texas por 70 dolares

http://www.aliexpress.com/item/Free-shipping-Dsp-development-board-tms 320vc5509a-development-board-easy5509-development-board-usb/1863723622 .html

pedrolake
Veterano
# jun/14 · Editado por: pedrolake
· votar


E para ver como a tecnologia é cara a placa de desenvolvimento do TigerShark me custou 2000 dolares. isso porque eu sou ex-funcionário da AD, e ela serve para toda linha shark e tiger.

MMI
Veterano
# jun/14 · Editado por: MMI
· votar


nichendrix

A questão é que o Kemper modela tudo num "pacotão", então ele copia (eles chamam de fazer um profiling) do amp, gabinete/alto falantes, microfone e por que não dizer, posicionamento do microfone e ambiente que foi gravado. Ou seja, neste ponto há uma margem para que existam "profilings" melhores e piores. Há o forum do Kemper que se pode baixar profilings da fábrica e de usuários, há também sites com profilings gratuitos e pagos. No fórum há bastante discussão a respeito de profilings melhores e piores.
(obs.: depois de feito o profiling dá para alterar o cabinet também, aí já é algo do processamento)

Por exemplo, existem umas 3 séries (digo séries porque muitas vezes fazem um clean, um crunch e um bem distorido de cada amp) feitas com Dumble. Eu fui meio afoito e baixei um que no fórum diziam que não estava muito bom. Pior que eu achei legal... kkkkk


Alex guitar man

Que guitarra é essa do video que voce postou pro ismah?

Você fala da PRS David Grissom?

pedrolake
Veterano
# jun/14
· votar


Pra quem quiser brincar, segue DSP java:

/* ElmGen - DSP Development Tool
* Copyright (C)2011 - Andrew Kilpatrick
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.andrewkilpatrick.elmGen.test.simTest;

import org.andrewkilpatrick.elmGen.ElmProgram;

public class Distortion extends ElmProgram {

/**
* Creates a mute program.
*/
public Distortion() {
super("Distortion");
int filt = REG1;
int filt2 = REG2;
int filt3 = REG3;
int filt4 = REG4;

readRegister(ADCL, 1.0);
mulx(POT0);

scaleOffset(-2.0, 0.0);
readRegister(filt, 0.9);
writeRegister(filt, 1.0);
scaleOffset(-2.0, 0.0);
readRegister(filt2, 0.3);
writeRegister(filt2, 1.0);
scaleOffset(-2.0, 0.0);
readRegister(filt3, 0.7);
writeRegister(filt3, 1.0);
readRegister(filt4, -0.3);
writeRegister(filt4, 1.0);

writeRegister(DACL, 1.0);
writeRegister(DACR, 0.0);
}

}

Ismah
Veterano
# jun/14
· votar


É minha impressão, ou a tendência é as linguagens se assemelharem entre si, apenas alteraram as finalidades?

Como eu preveni, e o Bog se mostrou favorável, alguns não consideram HTML programação (mas não deixa de ser uma linguagem de programação para páginas da web - e mesmo com o desenvolvimento de outras, ainda o HTML é o mais leve).

pedrolake

Achei bem legal a parte de comentários (e reza a lenda que alguns erros se corrige assim - via vida de programador).

Quanto a parte do código, achei esse beeeeem mais fácil, mas ainda não estou entendendo o que seriam os valores entre parenteses... Seriam eles um fator de multiplicação?

readRegister(ADCL, 1.0);
mulx(POT0);


Ali entendi que ele vai ler algum registro (input?!)

scaleOffset(-2.0, 0.0)

aparenta ser uma compressão sussa

e em seguida começa a ser aplicado filtros baseados no que os pot informam etc...
_____________

Uma curiosidade que a tempos venho tentando entender: como funciona esses pots "digitais", do tipo que vc gira "sem fim"?

pedrolake
Veterano
# jun/14 · Editado por: pedrolake
· votar


pots digitais são chips, que precisam ser inter-faceados por componentes analógicos como chaves, botãos, potenciometros e decodes,

Exemplo

it works

nichendrix
Veterano
# jun/14
· votar


Ismah
É minha impressão, ou a tendência é as linguagens se assemelharem entre si, apenas alteraram as finalidades?

Em geral as linguagens de programação mais modernas, do C e Pascal pra cá tem muita semelhança entre si sim. Especialmente as linguagens orientadas a objetos e a eventos (C++, Java, Python, C#, Visual Basic .Net, etc.) são ainda mais parecidas entre si.

Todas essas linguagem são linguagens que servem para propostos similares, a verdade é que a distinção de uso entre elas é muitas vezes muito pequena ou virtualmente não existente, sendo praticamente uma preferência do programador ou então uma questão de eficiência computacional, pois existem diferenças entre linguagens interpretadas como Python e Java e linguagens compiladas como C e Visual Basic e linguagens hibridas como o C# ou o Mathematica (que são ao mesmo tempo interpretadas e compiladas ao mesmo tempo).

Outra coisa que a maioria dessas linguagens modernas fazem é a possibilidade de usar mais de um paradima de programação, originalmente Visual Basic era uma linguagem de programação dirigida por eventos (event driven), mas depois passou a oferecer a opção de ser orientada a objetos e hoje você consegue programar nos dois paradigmas ao mesmo tempo. No caso de Java, Python e C++, originalmente eram orientadas a objetos, mas podem se programar usando programação dirigida a eventos e programação funcional nelas.

Hoje você só tem diferença de interpretação entre linguagens se você for mudar de uma linguagem orientada a objetos para uma usando primariamente o paradigma funcional como a Mathematica, LISP, Heskell, F#, J, K, Q, Scala, etc (já que praticamente toas as OOPs também trabalham com eventos), em programação funcional as coisas tendem a ser bem diferentes de programação orientada a objetos, embora praticamente toda linguagem funcional moderna tenha suporte a programação orientada a objetos e quase toda linguagem orientada a objetos também tenha suporte para programação funcional, não é muito comum misturar paradigmas no mesmo código, em geral você só faz isso em partes muito específicas do código para otimizar performance.

Alguns exemplos dessa diferença é possível de se notar nestes dois programas:

http://en.wikipedia.org/wiki/Mathematica#mediaviewer/File:Mathematica_ dinis_surface.png

http://upload.wikimedia.org/wikipedia/commons/3/3e/Mathematica_logisti c_bifurcation.png

Como eu preveni, e o Bog se mostrou favorável, alguns não consideram HTML programação (mas não deixa de ser uma linguagem de programação para páginas da web - e mesmo com o desenvolvimento de outras, ainda o HTML é o mais leve).

HTMP não é uma linguagem de programação em si, como também não são XML e o TeX, elas são linguagens de markups, em essência elas tem uma sintaxe e uma estrutura que se assemelham às linguagens de programação, mas a distinção está no fato de que elas na verdade criam documentos, portanto semanticamente e sintaticamente elas são bem diferentes de linguagens de programação (que criam programas de computador), isso se deve ao fato de que elas tem origem na linguagem usada em tipografia para marcar um manuscrito para futura formatação.

Isso não impede que sejam extremamente úteis para linguagens de programação e que essas tirem proveito e incorporem elementos de linguagens de markup em contextos semanticamente e sintaticamente mais estruturados, por exemplo, eu em geral crio sistemas usando uma plataforma que é baseada em Java e C#, mas todos os formulários criados são em HTML então todo programa é criado usando bibliotecas que me permitam troca de informação com o formulário e que em essência permitem ao Java e ao C# entender HTML, tanto que eu posso criar o formulário em HTML sem nunca entrar num editor de HTML, só usando o programa comandos dessas bibliotecas que geram o HTML.

Outra linguagem de markup que praticamente toda linguagem de programação hoje manipula é o XML, que é muito usado para troca de dados entre programas e entre formulários dentro de um mesmo programa.

Então, embora guardem semelhanças entre si linguagens de markup não são linguagens programação porque não geram programas e sim documentos. Tanto que o JavaScript e o PHP praticamente se tornaram linguagens de programação padrão na web por causa da integração deles com HTML, entre outras coisas. Nesse caso você interage com o HTML que passa os dados para o programa em PHP ou JavaScript, esse programa faz o processamento dos dados e retorna ao HTML o resultado.

Quanto a parte do código, achei esse beeeeem mais fácil, mas ainda não estou entendendo o que seriam os valores entre parenteses... Seriam eles um fator de multiplicação?

Não necessariamente, nesse caso os valores entre parênteses são or argumentos da classe (ou função). Cada pedaço de código em que aparecem esses parênteses com informações dentro é na verdade outro programa ou classe (que é um dos objetos em programação orientada a objetos). Esse outro programa faz parte de uma biblioteca especializada em DSP, e já estão prontos, então o programa da distorção só chama as classes inclusas nessa biblioteca e as usa para o que ele se propõe a fazer, no caso, uma distorção digital.

No caso de importar classes e métodos de uma biblioteca, você tem que passar a eles os argumentos que ele precisa para realizar suas rotinas, esses argumentos são passados entre parênteses e separados por vírgula na ordem especificada na classe que define o a classe ou método.

No caso, por exemplo, a classe scaleOffset faz parte da biblioteca ElmProgram, então ao usá-lo, você tem que passar os argumentos na ordem correta, que são os valores entre parênteses, por isso a chamada da classe fica:

scaleOffset(-2.0, 0.0);

No caso para uso da biblioteca, foi necessário fazer a importação dela, feita pelos comandos:

package org.andrewkilpatrick.elmGen.test.simTest;

import org.andrewkilpatrick.elmGen.ElmProgram;

Ele aqui diz ao interpretador do java para acessar o pacote (biblioteca) elmGen e a classe test e a subclasse ou método simTest e importar a classe ElmProgram da biblioteca elmGen, ao final do programa, esta classe Distortion será adicionada a à Biblioteca elmGen, como uma sub-classe da classe ElmProgram.

A partir daí quem quiser usar a classe distortion em qualquer programa poderá fazê-lo usando o comando:

import org.andrewkilpatrick.elmGen.ElmProgram.Distortion;

nichendrix
Veterano
# jun/14 · Editado por: nichendrix
· votar


Ismah
Realmente os digitais estão cada vez mais complexos. Ouvir esse polytone de 85 mostra o quanto evoluímos, mas no sentido oposto ao progresso.

Não entendi sua afirmação, mas tudo bem.

No caso dos Polytone, assim como os Lab Series, são amplificadores ao mesmo tempo que relativamente simples, bem complexos e sofisticados se comparados a maioria dos SS, os Polytone são considerados a referência máxima em som limpo, muito mais que os Fender para quem só toca com esse tipo de som. E os Lab Series pra mim basta dizer que são os amps de escolha do B.B. King há 41 anos.

Um exemplo de som que eu curto muito de polytone é o som desses dois:



Uma característica engraçada é que até hoje nunca encontrei uma boa simulação de Polytone, em geral estão entre os amps que a maioria das simulações passam é longe, junto com os Vox.

nichendrix
Veterano
# jun/14 · Editado por: nichendrix
· votar


pedrolake

Engraçado como o Python é mais econômico em código, aqui vai um de um chorus:

#!/usr/bin/env python
# encoding: utf-8
"""
Hand-written 8 delay lines chorus.

"""
from pyo import *

s = Server(sr=44100, nchnls=2, buffersize=512, duplex=0).boot()

sf = SfPlayer('baseballmajeur_m.aif', speed=1, loop=True, mul=.3)
sf2 = sf.mix(2).out()

# delay line frequencies
freqs = [.254, .465, .657, .879, 1.23, 1.342, 1.654, 1.879]
# delay line center delays
cdelay = [.0087, .0102, .0111, .01254, .0134, .01501, .01707, .0178]
# delay line delay amplitudes
adelay = [.001, .0012, .0013, .0014, .0015, .0016, .002, .0023]
# modulation depth
depth = Sig(1)

lfos = Sine(freqs, mul=adelay*depth, add=cdelay)
delays = Delay(sf, lfos, feedback=.5, mul=.5).out()

s.gui(locals())

=========================================
E o de uma fuzz:

#!/usr/bin/env python
# encoding: utf-8
"""
Fuzz distortion. High gain followed by, asymmetrical clipping,
hard clip on top, soft compression on bottom.

"""
from pyo import *

s = Server(duplex=0).boot()

SOURCE = "../snds/flute.aif"
BP_CENTER_FREQ = 250
BP_Q = 2
BOOST = 5
LP_CUTOFF_FREQ = 3500
BALANCE = 0.8

src = SfPlayer(SOURCE, loop=True).mix(2)

# Transfert function for signal lower than 0
low_table = ExpTable([(0,-.25),(4096,0),(8192,0)], exp=10)
# Transfert function for signal higher than 0
high_table = CosTable([(0,0),(4096,0),(4598,1),(8192,1)])

# Bandpass filter and boost gain applied on input signal
bp = Biquad(src, freq=BP_CENTER_FREQ, q=BP_Q, type=2)
boost = Sig(bp, mul=BOOST)

# Split signal into positive and negative part
sign = Compare(boost, comp=0, mode=">=")
sw = Switch(boost, outs=2, voice=sign)

# Apply transfert function
lowsig = Lookup(low_table, sw[0])
highsig = Lookup(high_table, sw[1])

# Lowpass filter on distorted signal
lp = Tone(lowsig+highsig, freq=LP_CUTOFF_FREQ, mul=.3)

# Balance between dry and wet signals
out = Interp(src, lp, interp=BALANCE).out()

s.gui(locals())
:
=================================

Pra mim a grande vantagem do Python em relação ao Java pra é a legibilidade, programa em Java em geral é um inferno pra ler porque cada programador faz do jeito que quer, o código de estilo do Python em geral é seguido por todos os programadores e a semelhança com a linguagem natural faz ficar muito mais fácil de ler o código, além de em geral também ser bem mais econômica em linhas.

Os dois exemplos usa um pacote chamado pyo, que é um conjunto de primitivas basicas para criação de efeitos, internamente ela roda em C, esse chorus, usando outra classe dentro do pyo dá pra ser reduzido a 4 linhas se for um chorus comum.

pedrolake
Veterano
# jun/14
· votar


Java não tem essa de cada faz o que quer, se o código não estiver formatado no padrão sun, ele roda mas com muito, muito erros.

nichendrix
Veterano
# jun/14 · Editado por: nichendrix
· votar


pedrolake
Java não tem essa de cada faz o que quer, se o código não estiver formatado no padrão sun, ele roda mas com muito, muito erros.

Cara, Java se não tiver erro de sintaxe, o código roda normal independente de como o cara escrever, por exemplo, se você escrever um código em Java usando só 1 espaço como indentação, o interpretador reconhece e roda o código normalmente, se você não indentar o código que está entre { }, o interpretador reconhece e roda o código normalmente, já peguei código em Java que o cara definia tudo que deveria estar entre { } e devidamente indentado em uma única linha, sem usar quebra de linha ou indentação e o interpretador continuou reconhecendo e executando sem nenhum erro. Isso é fato pro Java e pro JavaScript.

Mais de uma vez não só encontrei código assim, como ele rodava normalmente:

public class Distortion extends ElmProgram {public Distortion() {super("Distortion"); int filt = REG1; int filt2 = REG2; int filt3 = REG3; int filt4 = REG4; readRegister(ADCL, 1.0); mulx(POT0); scaleOffset(-2.0, 0.0); readRegister(filt, 0.9); writeRegister(filt, 1.0); scaleOffset(-2.0, 0.0); readRegister(filt2, 0.3); writeRegister(filt2, 1.0); scaleOffset(-2.0, 0.0); readRegister(filt3, 0.7); writeRegister(filt3, 1.0); readRegister(filt4, -0.3); writeRegister(filt4, 1.0); writeRegister(DACL, 1.0); writeRegister(DACR, 0.0);}}

Isso é menos comum hoje em dia, porque as duas principais IDEs usadas pela comunidade Java, o NetBeans e o Eclipse, estabeleceram um padrão que essas IDEs impõe ao desenvolvedor e em geral apontam como erro essas coisas relacionadas a código de estilo. Muitas outras IDEs copiaram esse padrão, inclusive editores de texto como Notepad++ tem plug-ins pra adicionar o padrão usado no Eclipse e no NetBeans nos códigos e scripts Java feitos nele. Só que isso ao menos até onde eu saiba não é algo imposto pela linguagem, foi imposto pelo mercado e não é seguido por todo mundo, embora seja o padrão entre programadores profissionais. A menos que tenha mudado da versão 5 pra cá, já que de lá pra cá só uso o Eclipse e por isso não tem como fugir das melhores práticas, mas até a transição da versão 1.4 pra 5 o interpretador do Java rodava esses códigos esdrúxulos sem problemas, desde que não tivesse erro de sintaxe,.

No caso do Python, a linguagem é menos rígida com a sintaxe e com a semântica, mas boa parte do que hoje é o código de estilo do Python aos poucos passou a fazer parte da sintaxe do Python, por exemplo: o número de espaços pra indentação.

Como o Python não usa chaves e nem colchetes pra definir blocos de código, então Python reconhece blocos de código por indentação, na versão 2.X ainda dava pra indentar com o número de espaços que você quisesse, mesmo que não cumprisse os 4 espaços do código de estilo. Só que no Python 3.X só soda o código se a indentação for feita com 4 espaços e por aí vai.

Enfim, minha experiência com Java foi muito traumática, especialmente no começo, porque até o Eclipse/NetBeans aparecerem com um padrão e botar todo mundo pra cumprir, era uma panaceia danada. Onde com alguma frequência, embora menor, ainda vejo muito código Java de legibilidade prejudicada é em desenvolvimento web, especialmente se é algo que cai na categoria "DIY".

pedrolake
Veterano
# jun/14
· votar


MAs os JDK da Oracle não contam, so dão erro de segurança;

nichendrix
Veterano
# jun/14 · Editado por: nichendrix
· votar


pedrolake

Cara, eu só por desencargo de consciência botei pra rodar essa classe do distortion do jeito que postei aí em cima usando duas IDEs dessas free não profissionais e quando mandei dar o build e rodar, rodou normal. Quando botei no Eclipse, começou a apontar erro no código inteiro.

Então o Java continua aceitando essas porcarias de boa, quem não aceita é são as IDEs boas.

pedrolake
Veterano
# jun/14
· votar


Você pegou a boblioteca do ElmProgram/ Elgem.jar e a RXTX.jar para simular o dsp.

pedrolake
Veterano
# jun/14
· votar


Aqui a classe para rodar


import java.io.IOException;

import org.andrewkilpatrick.elmGen.EEPromHandler;
import org.andrewkilpatrick.elmGen.simulator.SpinSimulator;




public class SimTest {
String programmerPort = "COM5";

/**
* Creates code for testing.
*/
public SimTest(String args[]) {
boolean flash = false; // run the flash tool
boolean simulate = true; // run the simulator

// generate the code
/**
Distortion distortion = new Distortion();


System.out.println("Code generation complete!");

// build/write the EEPROM
if(flash) {
try {
EEPromHandler eeprom = new EEPromHandler("COM5");
eeprom.fillBank(dist, 0);
eeprom.fillBank(null, 1);
eeprom.fillBank(null, 2);
eeprom.fillBank(null, 3);
eeprom.fillBank(null, 4);
eeprom.fillBank(null, 5);
eeprom.fillBank(null, 6);
eeprom.fillBank(null, 7);
// eeprom.writeAllBanks();
eeprom.writeBank(2);
} catch (IOException e) {
e.printStackTrace();
}
}

// run the simulator
if(simulate) {
String testWav = "/DSP_Studio/test1.wav"; // input test file name
// String outputFile = "caminho"; // write out to a file
String outputFile = null; // play out through the sound card
SpinSimulator sim = new SpinSimulator(new MyClass, testWav, outputFile, 0.5, 0.6, 0.25);
sim.showInteractiveControls(); //
sim.showLevelLogger();
sim.setLoopMode(true);
sim.run();
}

System.exit(0);
}

public static void main(String args[]) {
new SimTest(args);
}
}

Ismah
Veterano
# jun/14
· votar


Marcando pra ler com mais calma...

nichendrix
Veterano
# jun/14
· votar


pedrolake
Você pegou a boblioteca do ElmProgram/ Elgem.jar e a RXTX.jar para simular o dsp.

Sim, como disse o código todo bosta rodou em 2 ides que não tem nenhuma pré-formatação quanto ao código de estilo usado no programa. Só começou a dar erro quando foi para uma que adota previamente um código de estilo.

Na verdade no Eclipse também deu erro porque eu não apontei o diretório onde botei as bibliotecas, já que não coloquei no diretório padrão do Eclipse. Só que ele já aponta erro no código o fato de não ter quebra de linha após " ; " e " { " e nem ter indentação nenhuma, além do erro esperado que era ele não reconhecer as bibliotecas usadas e pedir para apontar o caminho para elas.

pedrolake
Veterano
# jun/14
· votar


Nich no eclipse vc tem que referencia-las no classpath e importa-las para o tempo de execução. Alterar o JDK para o JDK 8 ou 7, porque o eclipse tenta usar o versionamento do jdk da ibm que vem com ele.

è estranho porque estou rodando o mesmo codigo nele, no netbeans e no websphere ambos com o JDK8 e as mesmas bibliotecas, só alterei o meu package.

nichendrix
Veterano
# jun/14 · Editado por: nichendrix
· votar


pedrolake

Eu sei cara, na verdade deixo o Eclipse configurado com um diretório de bibliotecas padrão, depois toda vez que você importa a biblioteca ele as coloca diretamente na pasta em que está o projeto com os arquivos do programa/classe.

Por isso falei que ele não importou automaticamente, porque não botei lá, baixei as bibliotecas só pra ver se o Java ainda aceitava a formatação porca toda errada do meu post anterior (a classe inteira definida em uma única linha), isso rodou no Dr. Java e no BlueJ (duas IDEs fraquinhas que em geral o pessoal usa pra dar aula), essa formatação dá erro tanto no Eclipse quanto no NetBeans, mesmo que eu importe corretamente a biblioteca. Neles só rola se você formatar a classe corretamente (line breaks, indentações, etc.)

Era isso que eu estava falando antes, que no Python, mesmo que tu queira fazer isso, não tem como. Não é comum você pegar código ilegível vindo de programador profissional, até porque as IDEs como o Eclipse, NetBeans, Visual Studio, etc não deixam você programar assim, mas já vi muito mais código ilegível em Java e em C do que em qualquer outras linguagens com que já trabalhei, em geral ou é código de programador não profissional ou código feito por cara que aprendeu há tanto tempo que não existia um padrão do que era um bom código.

Isso é incomum em programadores profissionais, mas muito comum na comunidade de gente que programa sem ser profissionalmente.

Um exemplo de linguagem em que as vezes isso acontece é o Mathematica, embora tenha um código de estilo, e a comunidade reforce bastante um padrão de programação, existem muitos programadores, especialmente os amadores, que criam códigos que depois tu não consegue decifrar nem tomando ácido.

PS: Qual versão do WebSphere vc usa?

pedrolake
Veterano
# jun/14
· votar


Eu tenho a 8.1 e a 7 que é bem instavel e temperamental.

nichendrix
Veterano
# jun/14
· votar


pedrolake
No 7, você usa o servidor de aplicações normal ou o Lombardi Edition?

Enviar sua resposta para este assunto
        Tablatura   
Responder tópico na versão original
 

Tópicos relacionados a Programação de pedais digitais